Skip to content

Commit 2e07062

Browse files
don't set parser hook for asm and set op1 type in runprgm
1 parent fcd61c8 commit 2e07062

File tree

1 file changed

+37
-18
lines changed

1 file changed

+37
-18
lines changed

src/ce/runprgm.src

+37-18
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,13 @@ _os_RunPrgm:
8080
call ti.Mov9b
8181
ld hl,___prgm_to_run - reloc.offset
8282
call find_prgm - reloc.offset
83-
ld (___prgm_to_run_size - reloc.offset),de
8483
jr nc,.found
8584
sbc hl,hl
8685
ret
8786
.found:
87+
ld a,(ti.OP1)
88+
ld (___prgm_to_run - reloc.offset),a
89+
ld (___prgm_to_run_size - reloc.offset),de
8890
ld a,(hl)
8991
cp a,ti.tExtTok
9092
jr nz,run_basic_prgm
@@ -208,6 +210,7 @@ launch_asm_prgm:
208210

209211
launch_basic_prgm:
210212
call delete_running_prgm
213+
call setup_temp_parser_hook
211214
call setup_prgm_state
212215
call push_stub
213216
ld hl,___prgm_to_run
@@ -216,26 +219,20 @@ launch_basic_prgm:
216219
call ti.Mov9ToOP1
217220
jp ti.ParseInp
218221

219-
setup_prgm_state:
220-
xor a,a
221-
ld (ti.kbdGetKy),a
222+
setup_save_parser_hook:
223+
or a,a
224+
sbc hl,hl
222225
bit ti.parserHookActive,(iy + ti.hookflags4)
223-
jr nz,.chain_hook
224-
.no_chain:
225-
ld hl,stub.chain
226-
ld (hl),$af ; xor a,a
227-
inc hl
228-
ld (hl),$c9 ; ret
229-
jr .check_flags
230-
.chain_hook:
226+
jr z,.not_set
231227
ld hl,(ti.parserHookPtr)
232-
ld a,(hl)
233-
cp a,$83
234-
jr nz,.no_chain ; ensure the hook is valid
235-
ld (stub.chain + 1),hl
228+
.not_set:
236229
ld (stub.prev_hook),hl
237-
;jr .check_flags
238-
.check_flags:
230+
ret
231+
232+
setup_prgm_state:
233+
call setup_save_parser_hook
234+
xor a,a
235+
ld (ti.kbdGetKy),a
239236
ld a,$ce ; set
240237
bit ti.allowProgTokens,(iy + ti.newDispF)
241238
jr nz,.setAllowProgTokens
@@ -251,6 +248,25 @@ setup_prgm_state:
251248
ld (stub.flags.cmdFlags),a
252249
jp ti.DisableAPD
253250

251+
setup_temp_parser_hook:
252+
bit ti.parserHookActive,(iy + ti.hookflags4)
253+
jr nz,.chain_hook
254+
.no_chain:
255+
ld hl,stub.chain
256+
ld (hl),$af ; xor a,a
257+
inc hl
258+
ld (hl),$c9 ; ret
259+
ret
260+
.chain_hook:
261+
ld hl,(ti.parserHookPtr)
262+
ld a,(hl)
263+
cp a,$83
264+
jr nz,.no_chain ; ensure the hook is valid
265+
ld (stub.chain + 1),hl
266+
xor a,a
267+
ld (push_stub.skip_parser_hook_jr),a
268+
ret
269+
254270
delete_running_prgm:
255271
ld iy,ti.flags
256272
ld hl,ti.userMem
@@ -285,11 +301,14 @@ push_stub:
285301
add hl,bc
286302
ld (.stub_error_handler),hl
287303
pop hl
304+
jr .skip_parser_hook
305+
.skip_parser_hook_jr := $-1
288306
push hl
289307
ld bc,stub.hook_parser - stub.normal
290308
add hl,bc
291309
call ti.SetParserHook
292310
pop hl
311+
.skip_parser_hook:
293312
ex de,hl
294313
ld hl,stub
295314
ld bc,stub.len

0 commit comments

Comments
 (0)