;;; gcc for m6809 : Mar 27 2025 02:43:37 ;;; 4.6.4 (gcc6809lw pl9) ;;; ABI version 1 ;;; -mint16 .module _kernel.c .area .text _Reset64: ldd #0 std _root64 rts _DivMod10: ldd #0 bra L3 L4: leax -10000,x addd #1000 L3: cmpx #9999 ;cmphi: bhi L4 bra L11 L6: leax -1000,x addd #100 L11: cmpx #999 ;cmphi: bhi L6 bra L12 L8: leax -100,x addd #10 L12: cmpx #99 ;cmphi: bhi L8 bra L13 L10: leax -10,x addd #1 L13: cmpx #9 ;cmphi: bhi L10 std [2,s] tfr x,d ;movlsbqihi: R:x -> R:b rts _Irq_Handler_Wrapper: ;----- asm ----- ; 54 "../kernel/irq.c" 1 .globl _Irq_Handler_entry _Irq_Handler_entry: JSR _Irq_Handler RTI ;--- end asm --- ldx #_Irq_Handler stx 0 rts _WrapNMI: ;----- asm ----- ; 68 "../kernel/kern.c" 1 _HandleNMI: ;--- end asm --- ldx _gKern beq L16 jsr ,x L16: ;----- asm ----- ; 74 "../kernel/kern.c" 1 rti ;--- end asm --- rts _gIrqSaveAndDisable: leas -1,s ;----- asm ----- ; 133 "../kernel/kern.c" 1 tfr cc,b stb ,s orcc #$10 ;--- end asm --- ldb ,s leas 1,s rts _gIrqRestore: leas -1,s stb ,s ;----- asm ----- ; 146 "../kernel/kern.c" 1 ldb ,s tfr b,cc ;--- end asm --- leas 1,s rts _gFree64: pshs u leau ,x cmpx #0 ;cmphi: beq L19 jsr _gIrqSaveAndDisable ldx _root64 stx 2,u ldx #7905 stx ,u stu _root64 puls u jmp _gIrqRestore L19: puls u,pc _xAfterSetup: pshs y,u leas -2,s stx ,s ldy 10,s ldu 8,s leax 2,u bra L22 L23: ldb #63 stb ,x+ L22: pshs x ;cmphi: R:x with R:y cmpy ,s++ ;cmphi: bhi L23 ;----- asm ----- ; 162 "../kernel/kern.c" 1 ldx ,s lds #$01FE pshs X LOOP_FOREVER: ldx ,S jsr ,X bra LOOP_FOREVER ;--- end asm --- leas 2,s puls y,u,pc _Delay: pshs u ldu #0 bra L25 L26: ;----- asm ----- ; 98 "../kernel/main.c" 1 mul mul mul mul mul ;--- end asm --- leau 1,u L25: pshs x ;cmphi: R:x with R:u cmpu ,s++ ;cmphi: bne L26 puls u,pc _entry_wrapper: ;----- asm ----- ; 120 "../kernel/main.c" 1 .globl entry entry: orcc #$50 lds #$01FE jmp _main ;--- end asm --- rts _gReceiveCast64: pshs u jsr _gIrqSaveAndDisable ldu _recvcast_root beq L29 ldx 62,u stx _recvcast_root L29: jsr _gIrqRestore ldd #0 std 62,u leax ,u puls u,pc _memcpy_words: pshs y,u ldy 6,s ldd #0 bra L31 L32: ldu ,y++ stu ,x++ addd #1 L31: cmpd 8,s ;cmphi: bne L32 puls y,u,pc _PutRawByte: leas -3,s stb ,s ldd #64 std ,--s ldx #1057 stx ,--s ldx #1056 jsr _memcpy_words ldb 4,s stb 1182 ldb #-17 stb 1183 leas 7,s rts _PutChar: cmpb #31 ;cmpqi: bls L39 cmpb #63 ;cmpqi: bhi L36 bra L35 L39: ldb #32 L35: addb #64 bra L38 L36: cmpb #95 ;cmpqi: bls L38 L37: tstb ;cmpqi:(ZERO) blt L38 addb #-32 L38: jmp _PutRawByte _PutDec: pshs y,u leas -2,s leau ,s leay ,x cmpx #9 ;cmphi: bls L41 ldd #0 pshs u ;addhi: R:d += R:u addd ,s++ pshs d jsr _DivMod10 ldx ,u jsr _PutDec leas 2,s L41: ldd #0 pshs u ;addhi: R:d += R:u addd ,s++ pshs d leax ,y jsr _DivMod10 addb #48 jsr _PutChar leas 4,s puls y,u,pc _PutHex: pshs u leas -4,s leau ,x cmpx #15 ;cmphi: bls L43 tfr x,d lsra rorb lsra rorb lsra rorb lsra rorb std 2,s tfr d,x jsr _PutHex L43: tfr u,d anda #0 andb #15 tfr d,x ldb _HexAlphabet,x leas 4,s puls u jmp _PutChar _PutStr: pshs u leau ,x bra L45 L46: jsr _PutChar L45: ldb ,u+ bne L46 ldb #32 puls u jmp _PutChar _ColdPrint: jsr _PutStr ldb #10 jsr _PutChar ldb #-17 stb -254 ldb -256 comb andb #8 ldx #10000 tstb ;cmpqi:(ZERO) bne L49 ldx #50 L49: jmp _Delay _memset_words: pshs y,u ldy 6,s ldu 8,s ldd #0 bra L51 L52: sty ,x++ addd #1 L51: pshs u ;cmphi: R:u with R:d cmpd ,s++ ;cmphi: bne L52 puls y,u,pc _Alloc64_Init: pshs u ldx #256 stx ,--s ldx #16191 stx ,--s ldx #512 jsr _memset_words ldd #0 std _root64 leas 4,s ldu #512 L54: leax ,u jsr _gFree64 leau 64,u cmpu #1024 ;cmphi: bne L54 puls u,pc .globl _memset _memset: pshs y,u leas -3,s ldy 11,s ldb 10,s stb 2,s leau ,x ldd #0 bra L59 L58: ldb 2,s stb ,u+ ldd ,s addd #1 L59: std ,s cmpy ,s ;cmphi:(R) bne L58 leas 3,s puls y,u,pc .globl _memcpy _memcpy: pshs y,u leas -2,s ldy 8,s leau ,x ldd #0 bra L63 L62: ldb ,y+ stb ,u+ ldd ,s addd #1 L63: std ,s cmpd 10,s ;cmphi: bne L62 leas 2,s puls y,u,pc .globl _strlen _strlen: pshs y,u leay ,x L65: leau ,y leay 1,y ldb ,u bne L65 tfr u,d pshs x ;subhi: R:d -= R:x subd ,s++ tfr d,x puls y,u,pc _NowSwitchDisplayMode: pshs y,u leas -9,s stb 2,s ldb 15,s stb 5,s ldb _Vdg+6 beq L68 ldb #76 stb 1024 ldb #79 stb 1025 ldb #67 stb 1026 ldb #75 stb 1027 clr 5,s clr 2,s ldx #1024 L68: ldb 2,s andb #248 stb 2,s stx ,s jsr _gIrqSaveAndDisable stb 8,s ldb 2,s stb _Vdg+5 stb -222 ldy #-58 ldd #512 std 2,s ldx ,s L69: ldd 2,s pshs x anda ,s+ andb ,s+ std 6,s nega negb sbca #0 tfr d,u ldd 6,s pshs u ora ,s+ orb ,s+ tfr a,b clra ;zero_extendqihi: R:b -> R:d rolb rolb andb #1 leau d,y clr ,u asl 3,s rol 2,s leay 2,y cmpy #-44 ;cmphi: bne L69 ldb 5,s andb #1 stb 2,s clra ;zero_extendqihi: R:b -> R:d tfr d,u leax -64,u clr ,x ldb 5,s lsra rorb anda #0 andb #1 tfr d,u leax -62,u clr ,x ldb 5,s lsra rorb lsra rorb anda #0 andb #1 tfr d,u leax -60,u clr ,x ldb 8,s leas 9,s puls y,u jmp _gIrqRestore _NowSwitchToGameScreen: ldb _Vdg+2 stb ,-s ldb _Vdg+1 ldx _Vdg+3 jsr _NowSwitchDisplayMode leas 1,s rts _gTextScreen: tstb ;cmpqi:(ZERO) beq L75 ldb #8 bra L73 L75: clrb L73: stb _Vdg+1 clr _Vdg+2 stx _Vdg+3 ldb _gKern+6 beq L72 jsr _NowSwitchToGameScreen L72: rts _gPMode1Screen: leas -2,s stb 1,s ldb #-64 stb ,s ldb 1,s beq L77 ldb #-56 stb ,s L77: ldb ,s stb _Vdg+1 ldb #4 stb _Vdg+2 stx _Vdg+3 ldb ,s stb _mode_lock ldb _gKern+6 beq L76 jsr _NowSwitchToGameScreen L76: leas 2,s rts _gModeScreen: stb _Vdg+1 ldb 2,s stb _Vdg+2 stx _Vdg+3 ldb _gKern+6 beq L80 jsr _NowSwitchToGameScreen L80: rts _NowSwitchToChatScreen: ldb _gKern+8 beq L84 ldb #8 bra L83 L84: clrb L83: clr ,-s ldx #1024 jsr _NowSwitchDisplayMode leas 1,s rts LC1: .ascii "\nFATAL \0" LC2: .ascii ": \0" LC3: .ascii "\n$\0" _gFatal: pshs u leas -2,s leau 2,s stx ,--u ;----- asm ----- ; 22 "../kernel/kern.c" 1 orcc #$10 ;--- end asm --- ldx #_gFatal stx 0 stu 0 leau 4,s leax 6,s stx 2 jsr _NowSwitchToChatScreen ldx #LC1 jsr _PutStr ldx 6,s jsr _PutDec ldx #LC2 jsr _PutStr ldx ,s jsr _PutStr ldx #LC3 jsr _PutStr bra L86 L87: ldx 1024 leax 1,x stx 1024 L86: ldb _gKern+7 bne L87 leas 2,s puls u,pc LC4: .ascii "FIRQ\0" _gFatalFIRQ: ;----- asm ----- ; 62 "../kernel/kern.c" 1 sts _gKern+11 ;--- end asm --- ldx _gKern+11 pshs x ldx #LC4 jsr _gFatal leas 2,s rts LC5: .ascii "SWI3\0" _gFatalSWI3: ;----- asm ----- ; 58 "../kernel/kern.c" 1 sts _gKern+11 ;--- end asm --- ldx _gKern+11 pshs x ldx #LC5 jsr _gFatal leas 2,s rts LC6: .ascii "SWI2\0" _gFatalSWI2: ;----- asm ----- ; 54 "../kernel/kern.c" 1 sts _gKern+11 ;--- end asm --- ldx _gKern+11 pshs x ldx #LC6 jsr _gFatal leas 2,s rts LC7: .ascii "SWI\0" _gFatalSWI1: ;----- asm ----- ; 50 "../kernel/kern.c" 1 sts _gKern+11 ;--- end asm --- ldx _gKern+11 pshs x ldx #LC7 jsr _gFatal leas 2,s rts LC8: .ascii "BONOBO\0" _bSendControl: stb -152 ldx #-9981 L94: ldb -152 cmpb #98 ;cmpqi: beq L92 leax -1,x cmpx #0 ;cmphi: bne L94 clra ;zero_extendqihi: R:b -> R:d pshs d ldx #LC8 jsr _gFatal leas 2,s L92: rts LC9: .ascii "+NMI \0" _gBonoboStartRepeatingNMI: pshs u leas -4,s leau 4,s stx ,--u jsr _gIrqSaveAndDisable stb ,s ldb #102 jsr _bSendControl ldb ,u ldx #-150 stb ,x ldb 1,u stb ,x ldb #-8 jsr _bSendControl ldx #LC9 jsr _PutStr ldb ,s jsr _gIrqRestore leas 4,s puls u,pc _StartTask: leas -2,s stx ,s ldd #0 std _gKern ldx #0 jsr _gBonoboStartRepeatingNMI ;----- asm ----- ; 92 "../kernel/kern.c" 1 orcc #$10 ;--- end asm --- ldx ,s bne L98 ldx #_ChatTask stx ,s L98: ldd #64 std ,--s ldd #0 std ,--s ldx #128 jsr _memset_words leas 4,s ldx ,s cmpx #_ChatTask ;cmphi: bne L99 clr _gKern+8 clr _gKern+6 bra L100 L99: ldb #1 stb _gKern+8 stb _gKern+6 ldx #1024 jsr _gTextScreen L100: ldd #8 std ,--s ldx #16191 stx ,--s ldx #0 jsr _memset_words jsr _Alloc64_Init ;----- asm ----- ; 119 "../kernel/kern.c" 1 ldx 4,s lds #$01FE andcc #^$50 jmp ,X ;--- end asm --- leas 6,s rts _embark: ldd #__Final_Startup subd #__Final ;subhi: R:d -= #__Final lsra rorb pshs d ldx #16191 stx ,--s ldx #__Final jsr _memset_words leas 4,s ldx #_ChatTask jmp _StartTask LC10: .ascii "../kernel/bonobo.c\0" _BonoboSend: pshs y,u leas -1,s leay ,x ldu 7,s jsr _gIrqSaveAndDisable stb ,s cmpu #0 ;cmphi: bne L103 ldd #86 std ,--s ldx #LC10 jsr _gFatal ldd #59 bra L107 L103: cmpu #100 ;cmphi: bls L104 ldd #87 std ,--s ldx #LC10 jsr _gFatal ldd #60 L107: std ,--s ldx #LC10 jsr _gFatal leas 4,s L104: tfr u,d ;movlsbqihi: R:u -> R:b addb #100 jsr _bSendControl leax ,y ldy #0 bra L105 L106: ldb ,x+ stb -150 leay 1,y L105: pshs u ;cmphi: R:u with R:y cmpy ,s++ ;cmphi: bne L106 ldb #-5 jsr _bSendControl ldb ,s leas 1,s puls y,u jmp _gIrqRestore LC11: .ascii "SPSZ\0" _SendPacket: pshs y,u leas -8,s stb 2,s leau ,x ldb 16,s cmpb #64 ;cmpqi: bls L109 clra ;zero_extendqihi: R:b -> R:d pshs d ldx #LC11 jsr _gFatal leas 2,s L109: ldb 2,s stb 3,s ldb 16,s clra ;zero_extendqihi: R:b -> R:d tfr d,y std 4,s stu 6,s jsr _gIrqSaveAndDisable stb 2,s ldd #5 std ,--s leax d,s jsr _BonoboSend pshs y ldx 18,s jsr _BonoboSend ldb 6,s jsr _gIrqRestore leas 12,s puls y,u,pc _gNetworkLog: pshs u leau ,x jsr _strlen tfr x,d pshs b pshs u ldx #0 ldb #-56 jsr _SendPacket leas 3,s puls u,pc _xSendControlPacket: ldb 5,s stb 4,s ldb #70 jmp _SendPacket LC12: .ascii "../kernel/network.c\0" _gSendCast: pshs u leas -3,s leau ,x stb ,s cmpb #60 ;cmpqi: bls L113 ldd #40 std ,--s ldx #LC12 jsr _gFatal leas 2,s L113: ldb ,s addb #2 pshs b pshs u ldx #0 ldb #71 jsr _SendPacket leas 6,s puls u,pc _BonoboRecvChunkTry: pshs y,u leas -3,s leay ,x ldu 9,s jsr _gIrqSaveAndDisable stb ,s ldd #71 cmpu #0 ;cmphi: beq L123 cmpu #100 ;cmphi: bls L116 ldd #72 L123: std ,--s ldx #LC10 jsr _gFatal leas 2,s L116: ldb #-6 jsr _bSendControl ldb -150 stb 1,s ldb -150 stb 2,s cmpu 1,s ;cmphi: bls L117 ldb ,s jsr _gIrqRestore ldb #1 bra L118 L117: ldd #52 cmpu #0 ;cmphi: beq L124 cmpu #100 ;cmphi: bls L120 ldd #53 L124: std ,--s ldx #LC10 jsr _gFatal leas 2,s L120: tfr u,d ;movlsbqihi: R:u -> R:b jsr _bSendControl leax ,y ldy #0 bra L121 L122: ldb -150 stb ,x+ leay 1,y L121: pshs u ;cmphi: R:u with R:y cmpy ,s++ ;cmphi: bne L122 ldb ,s jsr _gIrqRestore clrb L118: leas 3,s puls y,u,pc LC13: .ascii "../kernel/alloc64.c\0" _gAlloc64: pshs u leas -3,s jsr _gIrqSaveAndDisable stb ,s ldu _root64 beq L126 ldx ,u cmpx #7905 ;cmphi: beq L127 ldd #17 std ,--s ldx #LC13 jsr _gFatal leas 2,s L127: ldx 2,u stx _root64 ldd #0 std ,u L126: ldb ,s jsr _gIrqRestore leax ,u leas 3,s puls u,pc _SplashRestore: pshs y,u leas -2,s ldy 8,s cmpx #0 ;cmphi: blt L128 cmpy #0 ;cmphi: blt L128 cmpx #31 ;cmphi: bgt L128 cmpy #15 ;cmphi: bgt L128 tfr y,d aslb rola aslb rola aslb rola aslb rola aslb rola leau d,x leau 1024,u tfr y,d addd #16 aslb rola aslb rola aslb rola aslb rola aslb rola leax d,x ldb ,x stb ,u L128: leas 2,s puls y,u,pc _SplashSet: ldd 2,s cmpx #0 ;cmphi: blt L130 cmpd #0 ;cmphi: blt L130 cmpx #31 ;cmphi: bgt L130 cmpd #15 ;cmphi: bgt L130 aslb rola aslb rola aslb rola aslb rola aslb rola leax d,x leax 1024,x ldb #-1 stb ,x L130: rts .area .data LC0: .byte 69 .word 8 .word 0 .area .text _KeyboardHandler: pshs y,u leas -14,s ldb _gKern+6 lbne L132 ldb _Keyboard+16 clra ;zero_extendqihi: R:b -> R:d std 4,s addd #-1 tfr a,b clra ;zero_extendqihi: R:b -> R:d rolb rolb andb #1 stb 7,s clra ;zero_extendqihi: R:b -> R:d std 2,s aslb rola aslb rola aslb rola tfr d,y leax _Keyboard,y ldd 4,s aslb rola aslb rola aslb rola ldu #_Keyboard leay d,u sty 4,s ldu #8 clr 8,s ldb #1 stb 2,s sty ,s L135: ldb 2,s comb stb -254 ldb -256 comb andb #127 ldy 4,s leay 1,y sty 4,s leay -1,y stb ,y+ cmpb ,x+ ;cmpqi: beq L134 ldb #1 stb 8,s L134: asl 2,s leau -1,u cmpu #0 ;cmphi: bne L135 ldy ,s inc 1042 inc 16370 ldb 16370 ldb 8,s beq L136 ldd #5 std ,--s ldx #LC0 stx ,--s leax 13,s jsr _memcpy ldd #5 std ,--s leax 15,s jsr _BonoboSend ldd #8 std ,--s leax ,y jsr _BonoboSend leas 8,s L136: ldb 7,s stb _Keyboard+16 L132: leas 14,s puls y,u,pc _Breakkey_Handler: ldb #-5 stb -254 ldb -256 clra ;zero_extendqihi: R:b -> R:d anda #0 andb #64 cmpd #0 ;cmphi: bne L140 ldb _Breakkey bne L141 ldb #1 stb _Breakkey ldb _gKern+6 bne L143 L142: ldb _gKern+8 beq L143 ldb #1 stb _gKern+6 jsr _NowSwitchToGameScreen bra L141 L143: clr _gKern+6 jsr _NowSwitchToChatScreen L141: inc 1054 inc 16382 ldb 16382 bra L139 L140: clr _Breakkey L139: rts _Irq_Handler: leas -2,s ldb -254 ldb _gMono cmpb #4 ;cmpqi: bhi L146 inc _gMono ldb _gMono jmp L147 L146: clr _gMono ldb _gMono+1 cmpb #8 ;cmpqi: bhi L148 inc _gMono+1 ldb _gMono+1 jmp L147 L148: clr _gMono+1 inc 1048 inc 16376 ldb 16376 ldx _gMono+2 leax 1,x stx _gMono+2 ldb _gKern+8 beq L149 ldb _gScore+2 beq L149 clr _gScore+2 ldb _gScore clra ;zero_extendqihi: R:b -> R:d std ,s aslb rola pshs d ldx #_gScore+3 stx ,--s ldx #83 jsr _xSendControlPacket leas 4,s L149: ldb _gWall cmpb #58 ;cmpqi: bhi L150 inc _gWall ldb _gWall bra L147 L150: clr _gWall ldb _gWall+1 cmpb #58 ;cmpqi: bhi L151 inc _gWall+1 ldb _gWall+1 bra L147 L151: clr _gWall+1 ldb _gWall+2 cmpb #22 ;cmpqi: bhi L152 inc _gWall+2 ldb _gWall+2 bra L147 L152: clr _gWall+2 ldb _gWall+14 stb _gWall+3 ldb _gWall+15 stb _gWall+4 ldb _gWall+16 stb _gWall+5 ldx _gWall+17 stx _gWall+6 ldb _gWall+19 stb _gWall+8 ldx _gWall+21 stx _gWall+10 ldb _gWall+23 stb _gWall+12 L147: ldb _gKern+6 beq L153 ldb _gMono clra ;zero_extendqihi: R:b -> R:d aslb rola tfr d,x ldx _Irq_FocusGameSchedule,x bra L156 L153: ldb _gKern+8 beq L155 ldb _gMono clra ;zero_extendqihi: R:b -> R:d aslb rola tfr d,x ldx _Irq_PassiveGameSchedule,x bra L156 L155: ldb _gMono clra ;zero_extendqihi: R:b -> R:d aslb rola tfr d,x ldx _Irq_FocusShellSchedule,x L156: jsr ,x leas 2,s rts LC14: .ascii "RECV\0" LC15: .ascii "E-M\0" LC16: .ascii "E-P\0" LC17: .ascii "RECV CAST NOMEM\0" LC18: .ascii "E-C\0" LC19: .ascii "XRC\0" _CheckReceived: pshs y,u leas -10,s jsr _gIrqSaveAndDisable stb 3,s ldb _need_recv_payload bne L158 ldd #5 std ,--s ldx #_RecvQuint jsr _BonoboRecvChunkTry leas 2,s cmpb #1 ;cmpqi: lbeq L159 tstb ;cmpqi:(ZERO) beq L160 clra ;zero_extendqihi: R:b -> R:d pshs d ldx #LC14 jsr _gFatal leas 2,s L160: ldb #1 stb _need_recv_payload L158: ldb _Vdg+5 orb #2 stb -222 ldb _RecvQuint ldy _RecvQuint+1 ldu _RecvQuint+3 cmpb #-52 ;cmpqi: lbeq L161 cmpb #65 ;cmpqi: bne L162 cmpy #6 ;cmphi: beq L163 ldd #73 std ,--s ldx #LC12 jsr _gFatal leas 2,s L163: pshs y leax 6,s jsr _BonoboRecvChunkTry leas 2,s cmpb #1 ;cmpqi: lbeq L164 tstb ;cmpqi:(ZERO) beq L165 clra ;zero_extendqihi: R:b -> R:d pshs d ldx #LC15 jsr _gFatal leas 2,s L165: ldx 4,s ldu 6,s ldy 8,s pshs y pshs u jsr _memcpy leas 4,s jmp L161 L162: cmpb #66 ;cmpqi: bne L166 pshs y leax ,u jsr _BonoboRecvChunkTry leas 2,s cmpb #1 ;cmpqi: lbeq L164 tstb ;cmpqi:(ZERO) lbeq L161 clra ;zero_extendqihi: R:b -> R:d pshs d ldx #LC16 jmp L185 L166: cmpb #67 ;cmpqi: bne L167 cmpy #0 ;cmphi: beq L168 ldd #94 std ,--s ldx #LC12 jsr _gFatal leas 2,s L168: jsr ,u jmp L161 L167: cmpb #68 ;cmpqi: bne L169 cmpy #0 ;cmphi: beq L170 ldd #99 std ,--s ldx #LC12 jsr _gFatal leas 2,s L170: stu _task_to_start ldb #1 stb _need_to_start_task jmp L161 L169: cmpb #71 ;cmpqi: lbne L171 jsr _gIrqSaveAndDisable stb 2,s ldb _gKern+8 ldx #512 stx ,s tstb ;cmpqi:(ZERO) beq L172 jsr _gAlloc64 stx ,s bne L172 ldd #0 std ,--s ldx #LC17 jsr _gFatal leas 2,s L172: ldd #118 cmpy #1 ;cmphi: bls L184 cmpy #62 ;cmphi: bls L174 ldd #119 L184: std ,--s ldx #LC12 jsr _gFatal leas 2,s L174: pshs y ldx 2,s jsr _BonoboRecvChunkTry leas 2,s cmpb #1 ;cmpqi: bne L175 ldx ,s jsr _gFree64 ldb 2,s jsr _gIrqRestore bra L164 L175: tstb ;cmpqi:(ZERO) beq L176 clra ;zero_extendqihi: R:b -> R:d tfr d,u pshs d ldx #LC18 jsr _gFatal leas 2,s L176: ldb _gKern+8 beq L177 ldd #0 ldx ,s std 62,x ldy _recvcast_root bne L182 bra L186 L181: leay ,x L182: ldx 62,y bne L181 ldx ,s stx 62,y bra L177 L186: ldx ,s stx _recvcast_root L177: ldb 2,s jsr _gIrqRestore bra L161 L171: clra ;zero_extendqihi: R:b -> R:d pshs d ldx #LC19 L185: jsr _gFatal leas 2,s L161: clr _need_recv_payload L164: ldb _Vdg+5 stb -222 ldb _need_to_start_task beq L159 clr _need_to_start_task ldx _task_to_start jsr _StartTask L159: ldb 3,s jsr _gIrqRestore leas 10,s puls y,u,pc _Network_Handler: jmp _CheckReceived _ChatTask: jsr _NowSwitchToChatScreen bra L189 L190: jsr _CheckReceived inc 1038 inc 16366 ldb 16366 L189: ldb _gKern+7 bne L190 rts LC20: .ascii "G11\0" LC21: .ascii "G12\0" LC22: .ascii "G2\0" LC23: .ascii "G0\0" LC24: .ascii "MAIN\0" .area .text.startup .globl _main _main: pshs y,u leas -24,s ldx #_entry_wrapper stx 0 ldu #_PinDownGlobalNames stu 0 ldd #64 std ,--s ldd #0 std ,--s ldx #0 jsr _memset_words ldb #123 stb _Vdg leas 4,s ldx #_pia_reset_sequence bra L192 L193: ldb 2,x stb ,u leax 3,x L192: ldu ,x bne L193 ldb #-120 stb -112 clr -111 ldx #-64 L195: ldu #1 cmpx #-56 ;cmphi: beq L194 ldu #0 L194: exg d,x leau d,u exg d,x clr ,u leax 2,x cmpx #-44 ;cmphi: bne L195 ldx #256 stx ,--s ldu #1024 stu ,--s ldx #512 jsr _memcpy_words ldx #256 stx ,--s ldu #11822 stu ,--s ldx #1024 jsr _memset_words leas 8,s ldu #16 stu ,s L203: ldd #32 subd ,s ;subhi: R:d -= ,s std 2,s ldd ,s addd #-16 asra rorb tfr d,y ldu #8 tfr u,d pshs y ;subhi: R:d -= R:y subd ,s++ std 4,s leau 8,y ldy 2,s bra L196 L197: ldd 4,s pshs d leax ,y jsr _SplashSet pshs u leax ,y jsr _SplashSet leay 1,y leas 4,s L196: ldx ,s leax -1,x stx 6,s pshs y ;cmphi: R:y with R:x cmpx ,s++ ;cmphi: bge L197 ldy 4,s bra L198 L199: pshs y ldx 4,s jsr _SplashSet pshs y ldx 4,s jsr _SplashSet leay 1,y leas 4,s L198: pshs u ;cmphi: R:u with R:y cmpy ,s++ ;cmphi: ble L199 ldx #200 jsr _Delay ldy 2,s bra L200 L201: ldd 4,s pshs d leax ,y jsr _SplashRestore pshs u leax ,y jsr _SplashRestore leay 1,y leas 4,s L200: cmpy 6,s ;cmphi:(R) ble L201 ldy 4,s L209: pshs y ldx 4,s jsr _SplashRestore pshs y ldx 4,s jsr _SplashRestore leay 1,y leas 4,s pshs u ;cmphi: R:u with R:y cmpy ,s++ ;cmphi: ble L209 ldu ,s leau 1,u stu ,s cmpu #32 ;cmphi: lbne L203 ldx #1024 L204: ldu #-29556 stu ,x++ cmpx #1184 ;cmphi: bne L204 ldd #64 std ,--s ldx #-4113 stx ,--s ldx #1056 jsr _memset_words leas 4,s ldx #1504 L205: ldu #-23645 stu ,x++ cmpx #1536 ;cmphi: bne L205 ldb #-1 stb 1505 ldx #_SS_INIT.1824 jsr _ColdPrint ldx #_SS_NekotOS.1825 jsr _ColdPrint ldx #0 L206: ldy _handlers,x ldu _coco2_relays,x ldb #126 stb ,u+ sty ,u ldu _coco3_relays,x stb ,u+ sty ,u leax 2,x cmpx #12 ;cmphi: bne L206 ldx #_SS_VECT.1830 jsr _ColdPrint clr -44 ldx #_SS_D4.1832 jsr _ColdPrint clr -42 ldx #_SS_D6.1833 jsr _ColdPrint clr -40 ldx #_SS_D8.1834 jsr _ColdPrint clr -37 ldx #_SS_DB.1835 jsr _ColdPrint clr -36 ldx #_SS_DC.1836 jsr _ColdPrint clr -33 ldx #_SS_DF.1837 jsr _ColdPrint ldx #_gime_reset_sequence bra L207 L208: ldb 2,x stb ,u leax 3,x L207: ldu ,x bne L208 ldx #_SS_GIME.1842 jsr _ColdPrint ldb #-120 stb -112 clr -111 ldx #_SS_COMPAT.1843 jsr _ColdPrint ldx #_SS_ZERO.1844 jsr _ColdPrint ldd #8 std ,--s ldx #280 stx ,--s ldx #24 jsr _memcpy ldx #_SS_HASH.1845 jsr _ColdPrint clr _gKern+8 clr _gKern+6 ldb #1 stb _gKern+7 ldx #_SS_KERN.1846 jsr _ColdPrint jsr _NowSwitchToChatScreen ldx #_SS_VDG.1847 jsr _ColdPrint ldx #_SS_NekotOS.1848 jsr _ColdPrint jsr _Alloc64_Init ldb #67 stb 1037 ldb #75 stb 1041 ldb #81 stb 1045 ldb #66 stb 1053 ldb #-4 jsr _bSendControl ldb #66 jsr _PutChar ldb #110 stb 12,s ldb #101 stb 13,s ldb #107 stb 14,s ldb #111 stb 15,s ldb #116 stb 16,s ldb #111 stb 17,s ldb #115 stb 18,s clr 19,s ldb #4 stb 20,s clr 21,s clr 22,s ldb #8 stb 23,s ldd #_gScore tfr a,b clra ;zero_extendqihi: R:b -> R:d stb 24,s ;movlsbqihi: R:d -> 24,s ldd #_gScore stb 25,s ;movlsbqihi: R:d -> 25,s ldd #_gWall tfr a,b clra ;zero_extendqihi: R:b -> R:d stb 26,s ;movlsbqihi: R:d -> 26,s ldd #_gWall stb 27,s ;movlsbqihi: R:d -> 27,s ldx #LC20 jsr _ColdPrint ldb #16 stb ,-s leax 13,s pshs x ldx #1 ldb #64 jsr _SendPacket ldx #LC21 jsr _ColdPrint ldb #16 stb ,-s leax 16,s pshs x ldx #1 ldb #64 jsr _SendPacket leas 10,s ldx #LC22 jsr _ColdPrint ldb #8 stb ,-s ldx #280 stx ,--s ldx #2 ldb #64 jsr _SendPacket ldx #LC23 jsr _ColdPrint ldb #53 stb -253 ldx #_SS_VSYNC.1849 jsr _ColdPrint ldx #_SS_TU_.1850 jsr _ColdPrint ldx #_gScore+19 jsr _PutHex ldx #_SS_Ready.1851 jsr _ColdPrint jsr _embark ldd #0 std ,--s ldx #LC24 jsr _gFatal ldx #0 leas 29,s puls y,u,pc .area .data.startup _PinDownGlobalNames: .word _embark .word _Breakkey_Handler .word _Irq_Handler .word _Irq_Handler_entry .word _Irq_Handler_Wrapper .word _Network_Handler .word _gAlloc64 .word _gFree64 .word _Reset64 .word _gSendCast .word _gReceiveCast64 .word _gTextScreen .word _gPMode1Screen .word _gModeScreen .word _xAfterSetup .word _xSendControlPacket .word _gNetworkLog .word _gFatal .word _PutStr .word _PutChar .word _memset .word _memcpy .word _memset_words .word _memcpy_words .word _strlen .word _entry_wrapper .word __More0 .word __More1 .word __Final .word __Final_Startup .word _gScore .word _gMono .word _gWall .word _gConfig .word _WrapNMI .word _gBonoboStartRepeatingNMI .area .final __Final: .word -26224 .area .final.startup __Final_Startup: .word -26223 .area .data.more _gScore: zmb 44 ;skip space .area .bss _gMono: .blkb 4 .area .data.more _gWall: zmb 25 ;skip space _gKern: zmb 13 ;skip space _Vdg: zmb 7 ;skip space .area .bss _mode_lock: .blkb 1 _recvcast_root: .blkb 2 _root64: .blkb 2 _need_recv_payload: .blkb 1 _RecvQuint: .blkb 5 _need_to_start_task: .blkb 1 _task_to_start: .blkb 2 .area .text _Irq_PassiveGameSchedule: .word _Network_Handler .word _Breakkey_Handler .word _Network_Handler .word _KeyboardHandler .word _Network_Handler .word _KeyboardHandler _Irq_FocusShellSchedule: .word _KeyboardHandler .word _Breakkey_Handler .word _KeyboardHandler .word _Breakkey_Handler .word _KeyboardHandler .word _Breakkey_Handler .area .data.more _Keyboard: zmb 17 ;skip space .area .text _Irq_FocusGameSchedule: .word _Network_Handler .word _Breakkey_Handler .word _Network_Handler .word _Breakkey_Handler .word _Network_Handler .word _Breakkey_Handler .area .bss _Breakkey: .blkb 1 .area .data.startup _pia_reset_sequence: .word -223 .byte 0 .word -221 .byte 0 .word -224 .byte -2 .word -222 .byte -6 .word -223 .byte 52 .word -221 .byte 60 .word -222 .byte 0 .word -224 .byte 2 .word -255 .byte 0 .word -253 .byte 0 .word -256 .byte 0 .word -254 .byte -1 .word -255 .byte 52 .word -253 .byte 52 .word 0 zmb 1 ;skip space _SS_INIT.1824: .ascii "INIT\0" _SS_NekotOS.1825: .ascii "NekotOS\0" _handlers: .word _gFatalSWI3 .word _gFatalSWI2 .word _gFatalFIRQ .word _Irq_Handler_entry .word _gFatalSWI1 .word _HandleNMI _coco2_relays: .word 256 .word 259 .word 271 .word 268 .word 262 .word 265 _coco3_relays: .word -274 .word -271 .word -268 .word -265 .word -262 .word -259 _SS_VECT.1830: .ascii "VECT\0" _SS_D4.1832: .ascii "D4\0" _SS_D6.1833: .ascii "D6\0" _SS_D8.1834: .ascii "D8\0" _SS_DB.1835: .ascii "DB\0" _SS_DC.1836: .ascii "DC\0" _SS_DF.1837: .ascii "DF\0" _gime_reset_sequence: .word -112 .byte -52 .word -111 .byte 0 .word -110 .byte 0 .word -109 .byte 0 .word -108 .byte -1 .word -107 .byte -1 .word -106 .byte 0 .word -105 .byte 0 .word -104 .byte 0 .word -103 .byte 0 .word -102 .byte 0 .word -101 .byte 0 .word -100 .byte 15 .word -99 .byte -32 .word -98 .byte 0 .word -97 .byte 0 .word -96 .byte 56 .word -95 .byte 57 .word -94 .byte 58 .word -93 .byte 59 .word -92 .byte 60 .word -91 .byte 61 .word -90 .byte 62 .word -89 .byte 63 .word -88 .byte 56 .word -87 .byte 48 .word -86 .byte 49 .word -85 .byte 50 .word -84 .byte 51 .word -83 .byte 61 .word -82 .byte 53 .word -81 .byte 63 .word -80 .byte 18 .word -79 .byte 36 .word -78 .byte 11 .word -77 .byte 7 .word -76 .byte 63 .word -75 .byte 31 .word -74 .byte 9 .word -73 .byte 38 .word -72 .byte 0 .word -71 .byte 18 .word -70 .byte 0 .word -69 .byte 63 .word -68 .byte 0 .word -67 .byte 18 .word -66 .byte 0 .word -65 .byte 38 .word 0 zmb 1 ;skip space _SS_GIME.1842: .ascii "GIME\0" _SS_COMPAT.1843: .ascii "COMPAT\0" _SS_ZERO.1844: .ascii "ZERO\0" _SS_HASH.1845: .ascii "HASH\0" _SS_KERN.1846: .ascii "KERN\0" _SS_VDG.1847: .ascii "VDG\0" _SS_NekotOS.1848: .ascii "NekotOS\0" _SS_VSYNC.1849: .ascii "VSYNC\0" _SS_TU_.1850: .ascii "TU_\0" _SS_Ready.1851: .ascii "Ready\0" .area .text _HexAlphabet: .ascii "0123456789ABCDEF\0" .area .data.more __More0: zmb 2 ;skip space __More1: .word -26216 .area .text LC25: .ascii "bonobo\0" .area .data _gConfig: .word 16384 .word LC25