segment p 0000 br 0x0000$0800 always// reset vector br 0x0000$3000 always br 0x0000$3000 always br 0x0000$3000 always // int0 data 0000 data 0000 data 0000 data 0000 data 0000 data 0000 br 0x0000$3000 always // int1 data 0000 data 0000 data 0000 data 0000 data 0000 data 0000 br 0x0000$3000 always // int2 segment p 0800 // pre-write shutdown sequence load 0x0080u8 page clr b0 always mov b0l [page:0x00c8u8] // T_REPLY2 br 0x0000$1800 always // jump to epilogue first to dump the initial register value segment p 1000 // signal handler & prologue load 0x0000u8 page mov [page:0x0002u8] b0l brr 0x0003 eq clr b0 always mov b0l [page:0x0000u8] mov b0l [page:0x0002u8] mov [page:0x0001u8] b0l brr 0x0003 eq mov b0l [page:0x0000u8] clr b0 always mov b0l [page:0x0001u8] mov [page:0x0000u8] b0l br 0x0000$1000 eq mov 0x$2000 sp mov 0x$0003 mod0 // disable SAR and PS so a/b/p can be correctly loaded mov 0x$0000 mod3 // clear mod3 from E000 to 0000. Game does this at the beginning so let it be the default env pop r7 pop r6 pop r5 pop r4 pop r3 pop r2 pop r1 pop r0 pop a0l mov a0l mixp pop repc pop a0h mov a0h stepj0 pop a0h mov a0h stepi0 pop lc pop p1 pop y1 pop x1 pop p0 pop y0 pop x0 pop sv popa b1 pop b1e popa b0 pop b0e popa a1 pop a1e popa a0 pop a0e pop arp3 pop arp2 pop arp1 pop arp0 pop ar1 pop ar0 pop mod2 pop mod1 pop mod0 pop stt2 pop stt1 pop stt0 pop cfgj pop cfgi mov 0x$1000 sp br 0x0000$2000 always segment p 1800 // epilogue mov 0x$3000 sp push cfgi push cfgj push stt0 push stt1 push stt2 push mod0 push mod1 push mod2 push ar0 push ar1 push arp0 push arp1 push arp2 push arp3 mov 0x$0003 mod0 // disable SAR and PS so a/b/p can be correctly loaded push a0e pusha a0 push a1e pusha a1 push b0e pusha b0 push b1e pusha b1 push sv push x0 push y0 push p0 push x1 push y1 push p1 push lc mov stepi0 a0h push a0h mov stepj0 a0h push a0h push repc mov mixp a0l push a0l push r0 push r1 push r2 push r3 push r4 push r5 push r6 push r7 load 0x0000u8 page mov [page:0x0003u8] b0l brr 0x0003 eq clr b0 always mov b0l [page:0x0000u8] mov b0l [page:0x0003u8] br 0x0000$1000 always segment p 2000 // test area br 0x0000$1800 always segment p 3000 // interrupt reti always segment d 0000 // signal area data 0000 data 0000 data 0000 data 0000