@@ -143,6 +143,7 @@ macro relocate? name, address*
143143end macro
144144
145145relocate helpers , buf + 900
146+ if 0
146147call_relative:
147148 pop ix
148149 pea ix + 3
@@ -151,6 +152,7 @@ call_relative:
151152 add ix , de
152153 pop de
153154 jp (ix)
155+ end if
154156jump_relative:
155157 pop ix
156158 push de
@@ -423,7 +425,42 @@ need_to_load_lib:
423425
424426resolve_entry_points:
425427 ld hl , (ramlocation)
426- rcall enqueue_all_deps ; get all the dependency pointers that reside in the ram lib
428+
429+ ; get all the dependency pointers that reside in the ram lib
430+ enqueue_all_deps: ; we don't need to store anything if we are here
431+ bit keep_in_arc , (iy + LIB_FLAGS)
432+ jr nz , .finish ; really, this is just a precautionary check -- should work fine without
433+ . loop :
434+ res optional , (iy + LIB_FLAGS)
435+ ld a , (hl)
436+ cp a , REQ_LIB_MARKER ; is there a dependency?
437+ jr nz , .check
438+ ex de , hl
439+ ld hl , (end_dep_queue)
440+ ld (hl) , de ; save pointer to start of this dependency -- one at a time
441+ inc hl
442+ inc hl
443+ inc hl ; move to next pointer
444+ ld (end_dep_queue) , hl ; save next pointer
445+ ex de , hl
446+ .skip:
447+ move_string_to_end
448+ inc hl ; move to start of dependency jump table
449+ ld a , JP_OPCODE
450+ .next:
451+ cp a , (hl) ; jp byte ($C3)
452+ jr nz , . loop
453+ inc hl
454+ inc hl
455+ inc hl
456+ inc hl ; jp address
457+ jr .next
458+ .check:
459+ cp a , ti.AppVarObj
460+ jr z , .skip ; keep going
461+ .finish:
462+
463+ resolve_entry_points_enqueued:
427464 ld hl , (jump_tbl_ptr) ; hl->start of function jump table
428465 ld bc , 3
429466 ld a , JP_OPCODE
@@ -523,39 +560,6 @@ load_next_dep:
523560 ld a , 1
524561 jp (hl) ; passed all the checks; let's start execution! :)
525562
526- enqueue_all_deps: ; we don't need to store anything if we are here
527- bit keep_in_arc , (iy + LIB_FLAGS)
528- ret nz ; really, this is just a precautionary check -- should work fine without
529- . loop :
530- res optional , (iy + LIB_FLAGS)
531- ld a , (hl)
532- cp a , REQ_LIB_MARKER ; is there a dependency?
533- jr nz , .check
534- ex de , hl
535- ld hl , (end_dep_queue)
536- ld (hl) , de ; save pointer to start of this dependency -- one at a time
537- inc hl
538- inc hl
539- inc hl ; move to next pointer
540- ld (end_dep_queue) , hl ; save next pointer
541- ex de , hl
542- .skip:
543- move_string_to_end
544- inc hl ; move to start of dependency jump table
545- ld a , JP_OPCODE
546- .next:
547- cp a , (hl) ; jp byte ($C3)
548- jr nz , . loop
549- inc hl
550- inc hl
551- inc hl
552- inc hl ; jp address
553- jr .next
554- .check:
555- cp a , ti.AppVarObj
556- jr z , .skip ; keep going
557- ret
558-
559563error_invalid:
560564 rload str_error_invalid
561565 jr throw_error
0 commit comments