@@ -80,11 +80,13 @@ _os_RunPrgm:
80
80
call ti.Mov9b
81
81
ld hl,___prgm_to_run - reloc.offset
82
82
call find_prgm - reloc.offset
83
- ld (___prgm_to_run_size - reloc.offset),de
84
83
jr nc,.found
85
84
sbc hl,hl
86
85
ret
87
86
.found:
87
+ ld a,(ti.OP1)
88
+ ld (___prgm_to_run - reloc.offset),a
89
+ ld (___prgm_to_run_size - reloc.offset),de
88
90
ld a,(hl)
89
91
cp a,ti.tExtTok
90
92
jr nz,run_basic_prgm
@@ -208,6 +210,7 @@ launch_asm_prgm:
208
210
209
211
launch_basic_prgm:
210
212
call delete_running_prgm
213
+ call setup_temp_parser_hook
211
214
call setup_prgm_state
212
215
call push_stub
213
216
ld hl,___prgm_to_run
@@ -216,26 +219,20 @@ launch_basic_prgm:
216
219
call ti.Mov9ToOP1
217
220
jp ti.ParseInp
218
221
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
222
225
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
231
227
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:
236
229
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
239
236
ld a,$ce ; set
240
237
bit ti.allowProgTokens,(iy + ti.newDispF)
241
238
jr nz,.setAllowProgTokens
@@ -251,6 +248,25 @@ setup_prgm_state:
251
248
ld (stub.flags.cmdFlags),a
252
249
jp ti.DisableAPD
253
250
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
+
254
270
delete_running_prgm:
255
271
ld iy,ti.flags
256
272
ld hl,ti.userMem
@@ -285,11 +301,14 @@ push_stub:
285
301
add hl,bc
286
302
ld (.stub_error_handler),hl
287
303
pop hl
304
+ jr .skip_parser_hook
305
+ .skip_parser_hook_jr := $-1
288
306
push hl
289
307
ld bc,stub.hook_parser - stub.normal
290
308
add hl,bc
291
309
call ti.SetParserHook
292
310
pop hl
311
+ .skip_parser_hook:
293
312
ex de,hl
294
313
ld hl,stub
295
314
ld bc,stub.len
0 commit comments