; 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