|
1 | | -#include once <alloc.asm> |
2 | 1 | #include once <free.asm> |
3 | 2 |
|
4 | 3 | #ifndef HIDE_LOAD_MSG |
@@ -26,12 +25,14 @@ LOAD_CODE: |
26 | 25 | LOCAL LOAD_END |
27 | 26 | LOCAL VR_CONTROL, VR_CONT_1, VR_CONT_2 |
28 | 27 | LOCAL MEM0 |
| 28 | + LOCAL TMP_SP |
29 | 29 |
|
30 | 30 | MEM0 EQU 5C92h ; Temporary memory buffer |
31 | 31 | HEAD1 EQU MEM0 + 8 ; Uses CALC Mem for temporary storage |
32 | 32 | ; Must skip first 8 bytes used by |
33 | 33 | ; PRINT routine |
34 | 34 | TMP_HEADER EQU HEAD1 + 17 ; Temporary HEADER2 pointer storage |
| 35 | +TMP_SP EQU TMP_HEADER + 2 ; Temporary SP storage |
35 | 36 |
|
36 | 37 | #ifdef __ENABLE_BREAK__ |
37 | 38 | LD_BYTES EQU 0556h ; ROM Routine LD-BYTES |
@@ -59,6 +60,8 @@ __LOAD_CODE: ; INLINE version |
59 | 60 | ld (ix + 13), e |
60 | 61 | ld (ix + 14), d ; Store address in bytes |
61 | 62 |
|
| 63 | + push hl ; String ptr to be freed later |
| 64 | + |
62 | 65 | ld a, h |
63 | 66 | or l |
64 | 67 | ld b, h |
@@ -99,15 +102,15 @@ LOAD_CONT: |
99 | 102 | ldir ; Copy String block NAME in header |
100 | 103 |
|
101 | 104 | LOAD_CONT2: |
102 | | - ld bc, 17; 2nd Header |
103 | | - call __MEM_ALLOC |
| 105 | + pop hl ; String ptr |
| 106 | + call MEM_FREE |
104 | 107 |
|
105 | | - ld a, h |
106 | | - or l |
107 | | - jr nz, LOAD_CONT3; there's memory |
108 | | - |
109 | | - ld a, ERROR_OutOfMemory |
110 | | - jp __ERROR |
| 108 | + ld hl, 0 |
| 109 | + add hl, sp |
| 110 | + ld (TMP_SP), hl |
| 111 | + ld bc, -18 |
| 112 | + add hl, sp |
| 113 | + ld sp, hl |
111 | 114 |
|
112 | 115 | LOAD_CONT3: |
113 | 116 | ld (TMP_HEADER), hl |
@@ -239,9 +242,10 @@ LOAD_ERROR: |
239 | 242 | ld (ERR_NR), a |
240 | 243 |
|
241 | 244 | LOAD_END: |
| 245 | + ld hl, (TMP_SP) |
| 246 | + ld sp, hl ; Recovers stack |
242 | 247 | pop ix ; Recovers stack frame pointer |
243 | | - ld hl, (TMP_HEADER) ; Recovers tmp_header pointer |
244 | | - jp MEM_FREE ; Returns via FREE_MEM, freeing tmp header |
| 248 | + ret |
245 | 249 |
|
246 | 250 | #ifndef __ENABLE_BREAK__ |
247 | 251 | LOCAL LD_BYTES_RET |
|
0 commit comments