36 lines
1.3 KiB
ArmAsm
36 lines
1.3 KiB
ArmAsm
; GS/OS inline-call stubs for iigsStart.
|
|
;
|
|
; Same shape as iigsQuitGS in src/iigs/joeyDraw.s and for the same reason:
|
|
; pure constants, no relocations, so the cross-bank DBR trap that bit the
|
|
; first attempt at that routine cannot apply here either. Each parameter
|
|
; block lives at a FIXED address in the $E1:9DC8-$9DFD scratch window and
|
|
; the C caller fills it in before calling.
|
|
|
|
; iigsStartSetPrefix -- SetPrefixGS ($2009), parm block at $E1:9DE4.
|
|
;
|
|
; GS/OS does NOT point prefix 0 at the program named in a QuitGS launch: it
|
|
; was measured still pointing at the BOOT volume, so the launched example's
|
|
; own relative fopen()s missed. That is not cosmetic -- JoeyLib loads the
|
|
; NTP replayer as bare "ntpplayer", and when that read fails jlpAudioInit
|
|
; bails before ntpArm(), leaving the sound vector at its ROM default and
|
|
; the application completely silent.
|
|
.section .text.iigsStartSetPrefix,"ax"
|
|
.globl iigsStartSetPrefix
|
|
iigsStartSetPrefix:
|
|
jsl 0xE100A8
|
|
.word 0x2009
|
|
.long 0x00E19DE4
|
|
rtl
|
|
|
|
; iigsStartQuit -- QuitGS ($2029), parm block at $E1:9DCC.
|
|
;
|
|
; Unlike jlpShutdown's pCount=0 "quit to my parent", this is called with
|
|
; pCount=2 and a pathname, which tells GS/OS to LAUNCH that program in our
|
|
; place. On success it never returns.
|
|
.section .text.iigsStartQuit,"ax"
|
|
.globl iigsStartQuit
|
|
iigsStartQuit:
|
|
jsl 0xE100A8
|
|
.word 0x2029
|
|
.long 0x00E19DCC
|
|
rtl
|