;;; gcc for m6809 : Mar 27 2025 02:43:37 ;;; 4.6.4 (gcc6809lw pl9) ;;; ABI version 1 ;;; -mint16 .module cow_glider.c .area .text _PMode1DrawSpot: pshs u leas -6,s stb 2,s lbmi L1 ldb 10,s cmpb #95 ;cmpqi: lbhi L1 ldb 2,s lsrb lsrb clra ;zero_extendqihi: R:b -> R:d std 4,s leax d,x ldb 10,s clra ;zero_extendqihi: R:b -> R:d std ,s aslb rola aslb rola aslb rola aslb rola aslb rola leau d,x ldb ,u stb ,s ldb 2,s comb andb #3 aslb clra ;zero_extendqihi: R:b -> R:d std 2,s ldd #3 ldx 2,s jsr _ashlhi3 comb andb ,s stb ,s ldb 11,s clra ;zero_extendqihi: R:b -> R:d std 4,s jsr _ashlhi3 ;movlsbqihi: D->B orb ,s stb ,u L1: leas 6,s puls u,pc _PMode1DrawSpotXor.constprop.3: pshs y,u leas -6,s stb 4,s lsrb lsrb clra ;zero_extendqihi: R:b -> R:d tfr d,x leau 13312,x ldb 12,s clra ;zero_extendqihi: R:b -> R:d aslb rola aslb rola aslb rola aslb rola aslb rola std ,s leau d,u ldb ,u stb 5,s ldb 13,s clra ;zero_extendqihi: R:b -> R:d std 2,s ldb 4,s andb #3 stb ,s clra ;zero_extendqihi: R:b -> R:d tfr d,x ldy #3 tfr y,d pshs x ;subhi: R:d -= R:x subd ,s++ aslb rola tfr d,x ldd 2,s jsr _ashlhi3 stb 3,s ldb 5,s eorb 3,s stb ,u leas 6,s puls y,u,pc _drawMod96Xor: leas -3,s stb ,s ldb 5,s stb 1,s ldb 6,s stb 2,s ldb ,s bpl L5 addb #96 stb ,s L5: ldb 1,s bpl L6 ldb ,s addb #96 stb ,s L6: ldb ,s cmpb #95 ;cmpqi: ble L7 addb #-96 stb ,s L7: ldb 1,s cmpb #95 ;cmpqi: ble L8 ldb ,s addb #-96 stb ,s L8: ldb 2,s stb 6,s ldb 1,s stb 5,s ldb ,s leas 3,s jmp _PMode1DrawSpotXor.constprop.3 _XorOldShips: pshs u leas -7,s clr 3,s jmp L10 L12: ldb 3,s clra ;zero_extendqihi: R:b -> R:d std ,s aslb rola aslb rola aslb rola ldu #_OldShipState leax d,u ldb ,x stb 4,s ldb 2,x stb 5,s ldb #3 stb 2,s ldb 3,s cmpb _gScore+1 ;cmpqi: bne L11 ldb #2 stb 2,s L11: ldb 2,s pshs b ldb 6,s pshs b ldb 6,s jsr _drawMod96Xor ldb 6,s decb stb 8,s ldb 4,s pshs b ldb 8,s pshs b ldb 10,s jsr _drawMod96Xor ldb 8,s incb stb 10,s ldb 6,s pshs b ldb 10,s pshs b ldb 12,s jsr _drawMod96Xor ldb 8,s pshs b ldb 12,s decb pshs b ldb 12,s jsr _drawMod96Xor leas 8,s ldb 2,s pshs b ldb 6,s incb pshs b ldb 6,s jsr _drawMod96Xor inc 5,s leas 2,s L10: ldb 3,s cmpb _gScore ;cmpqi: lblo L12 leas 7,s puls u,pc _RandomUpTo.constprop.4: pshs y,u leas -9,s ldb #6 stb 2,s ldb #-1 bra L21 L19: ldb 8,s L21: stb 4,s lsrb stb 8,s andb #88 stb 6,s cmpb #88 ;cmpqi: bne L18 dec 2,s ldb 2,s bne L19 bra L15 L18: ldb 4,s stb 8,s L15: ldd _random_context std 2,s ldd _random_context+2 std 4,s L17: ldd 2,s addd #1 anda #0 andb #255 std 2,s tfr d,y leax _random_context+4,y ldb ,x clra ;zero_extendqihi: R:b -> R:d std 6,s addd 4,s anda #0 andb #255 std 4,s tfr d,u leay _random_context+4,u ldb ,y clra ;zero_extendqihi: R:b -> R:d std ,s ldb ,x stb ,y ldd ,s stb ,x ;movlsbqihi: R:d -> ,x tfr d,x ldd 6,s leax d,x tfr x,d anda #0 andb #255 tfr d,x ldb 8,s andb _random_context+4,x stb 6,s cmpb #87 ;cmpqi: bhi L17 ldd 2,s std _random_context stu _random_context+2 ldb 6,s leas 9,s puls y,u,pc _PMode1DrawDigit3x5.constprop.6: pshs y,u leas -7,s stb 5,s ldb 15,s clra ;zero_extendqihi: R:b -> R:d tfr d,x ldb _DigitTimes15,x clra ;zero_extendqihi: R:b -> R:d addd #_Digit3x5CharGen std 2,s ldx #0 stx ,s bra L23 L25: ldb ,y+ cmpb #32 ;cmpqi: beq L24 tfr u,d ;movlsbqihi: R:u -> R:b stb 4,s ldb 5,s addb 4,s stb 4,s ldb 14,s pshs b ldd 1,s stb 7,s ;movlsbqihi: R:d -> 7,s ldb 14,s addb 7,s pshs b ldb 6,s ldx #13312 jsr _PMode1DrawSpot leas 2,s L24: leau 1,u cmpu #3 ;cmphi: bne L25 ldd 2,s addd #3 std 2,s ldd ,s addd #1 std ,s cmpd #5 ;cmphi: beq L22 L23: ldy 2,s ldu #0 bra L25 L22: leas 7,s puls y,u,pc _PMode1DrawDecimal3x5Unsigned.constprop.7: pshs u leas -8,s stb 4,s stx 1,s clr ,s tfr x,d bra L29 L30: inc ,s addd #-10000 L29: cmpd #9999 ;cmphi: bhi L30 std 1,s clr 5,s ldd 1,s bra L31 L32: inc 5,s addd #-1000 L31: cmpd #999 ;cmphi: bhi L32 std 1,s clr 6,s ldd 1,s bra L33 L34: inc 6,s addd #-100 L33: cmpd #99 ;cmphi: bhi L34 std 1,s clr 7,s ldd 1,s bra L35 L36: inc 7,s addd #-10 L35: cmpd #9 ;cmphi: bhi L36 std 1,s ldb ,s beq L48 pshs b ldb 13,s pshs b ldb 6,s pshs b ldb #104 jsr _PMode1DrawDigit3x5.constprop.6 leas 3,s ldb #1 stb 3,s ldb #104 bra L49 L48: clr 3,s ldb #-1 L49: stb ,s ldb 5,s bne L38 ldb 3,s beq L39 L38: ldb 5,s pshs b ldb 13,s pshs b ldb 6,s pshs b ldb #108 jsr _PMode1DrawDigit3x5.constprop.6 ldb 3,s clra ;zero_extendqihi: R:b -> R:d tfr d,u leas 3,s cmpd #108 ;cmphi: ble L40 ldu #108 L40: tfr u,d ;movlsbqihi: R:u -> R:b stb ,s ldb #1 stb 3,s L39: ldb 6,s bne L41 ldb 3,s beq L42 L41: ldb 6,s pshs b ldb 13,s pshs b ldb 6,s pshs b ldb #112 jsr _PMode1DrawDigit3x5.constprop.6 ldb 3,s clra ;zero_extendqihi: R:b -> R:d tfr d,u leas 3,s cmpd #112 ;cmphi: ble L43 ldu #112 L43: tfr u,d ;movlsbqihi: R:u -> R:b stb ,s ldb #1 stb 3,s L42: ldb 7,s bne L44 ldb 3,s beq L45 L44: ldb 7,s pshs b ldb 13,s pshs b ldb 6,s pshs b ldb #116 jsr _PMode1DrawDigit3x5.constprop.6 ldb 3,s clra ;zero_extendqihi: R:b -> R:d tfr d,u leas 3,s cmpd #116 ;cmphi: ble L46 ldu #116 L46: tfr u,d ;movlsbqihi: R:u -> R:b stb ,s L45: ldb 2,s ;movlsbqihi: msb:1,s -> R:b pshs b ldb 13,s pshs b ldb 6,s pshs b ldb #120 jsr _PMode1DrawDigit3x5.constprop.6 ldb 3,s clra ;zero_extendqihi: R:b -> R:d tfr d,x leas 3,s cmpd #120 ;cmphi: ble L47 ldx #120 L47: tfr x,d ;movlsbqihi: R:x -> R:b leas 8,s puls u,pc _PMode1DrawDecimal3x5.constprop.5: leas -4,s stb ,s ldb 6,s stb 1,s cmpx #0 ;cmphi: lbge L51 exg d,x nega negb sbca #0 exg d,x pshs b ldb 1,s jsr _PMode1DrawDecimal3x5Unsigned.constprop.7 stb 3,s inc 1,s ldb 3,s addb #-2 stb 4,s ldb 2,s pshs b ldb 2,s pshs b ldb 6,s ldx #13312 jsr _PMode1DrawSpot ldb 5,s addb #-3 stb 6,s ldb 4,s pshs b ldb 4,s pshs b ldb 8,s ldx #13312 jsr _PMode1DrawSpot ldb 7,s addb #-4 stb 7,s ldb 6,s pshs b ldb 6,s pshs b ldb 9,s ldx #13312 jsr _PMode1DrawSpot leas 11,s rts L51: ldb 1,s stb 6,s ldb ,s leas 4,s jmp _PMode1DrawDecimal3x5Unsigned.constprop.7 _DrawScores: pshs u leas -5,s ldb #2 stb 4,s clr 3,s jmp L54 L59: ldu #0 L56: tfr u,d ;movlsbqihi: R:u -> R:b stb 2,s ldb 4,s addb 2,s stb 2,s ldb #100 stb ,s L55: clr ,-s ldb 3,s pshs b ldb 2,s ldx #13312 jsr _PMode1DrawSpot inc 2,s leas 2,s ldb ,s cmpb #124 ;cmpqi: bne L55 leau 1,u cmpu #5 ;cmphi: bne L56 ldb #3 stb 2,s ldb 3,s cmpb _gScore+1 ;cmpqi: bne L57 ldb #2 stb 2,s L57: ldb 3,s clra ;zero_extendqihi: R:b -> R:d std ,s aslb rola tfr d,u leax _gScore+20,u ldx ,x ldb 2,s pshs b ldb 5,s jsr _PMode1DrawDecimal3x5.constprop.5 inc 4,s ldb 5,s addb #7 stb 5,s leas 1,s L54: ldb 3,s cmpb _gScore ;cmpqi: lblo L59 leas 5,s puls u,pc _loop: pshs y,u leas -8,s jsr _gReceiveCast64 leau ,x cmpx #0 ;cmphi: beq L63 ldb 2,x cmpb #1 ;cmpqi: beq L65 cmpb #2 ;cmpqi: bne L64 bra L105 L65: ldb ,x cmpb _gScore+1 ;cmpqi: beq L64 clra ;zero_extendqihi: R:b -> R:d aslb rola aslb rola aslb rola ldy #_ShipState leax d,y ldd #8 std ,--s leay 3,u pshs y jsr _memcpy leas 4,s bra L64 L105: ldb 3,x clra ;zero_extendqihi: R:b -> R:d std 3,s aslb rola tfr d,x clr _Cows,x L64: leax ,u jsr _gFree64 L63: ldb _gMono+1 cmpb _decis ;cmpqi: lbeq L62 ldb _gMono+1 stb _decis lbne L68 clr _Packet+1 ldb #1 stb _Packet+2 ldd #8 std ,--s ldx _my stx ,--s ldx #_Packet+3 jsr _memcpy ldb #9 ldx #_Packet jsr _gSendCast ldd _start_seconds addd #200 subd _gMono+2 ;subhi: R:d -= _gMono+2 tfr d,u leas 4,s ldb #88 stb 2,s cmpu #-536 ;cmphi: bls L94 L95: ldb _gKern+7 bne L95 ldb #88 stb 2,s L94: ldb #100 stb 3,s L71: clr ,-s ldb 3,s pshs b ldb 5,s ldx #13312 jsr _PMode1DrawSpot inc 5,s leas 2,s ldb 3,s cmpb #124 ;cmpqi: bne L71 inc 2,s ldb 2,s cmpb #93 ;cmpqi: bne L94 ldb #1 stb ,-s leax ,u ldb #88 jsr _PMode1DrawDecimal3x5.constprop.5 leas 1,s jmp L72 L68: ldu #0 ldb _gKern+6 lbeq L72 ldx #8 stx 3,s ldb #1 stb 2,s L75: ;----- asm ----- ; 67 "../../nekotos/lib/keyscan_arrows_0to7.h" 1 orcc #$10 ;--- end asm --- ldb 2,s comb stb -254 ldb -256 ;----- asm ----- ; 70 "../../nekotos/lib/keyscan_arrows_0to7.h" 1 andcc #^$10 ;--- end asm --- clra ;zero_extendqihi: R:b -> R:d tfr d,x anda #0 andb #8 tfr d,y cmpy #0 ;cmphi: bne L73 tfr u,d tfr a,b clra ;zero_extendqihi: R:b -> R:d orb 2,s tfr b,a clrb tfr d,y tfr u,d anda #0 andb #255 pshs y ora ,s+ orb ,s+ tfr d,u L73: tfr x,d anda #0 andb #16 tfr d,x cmpx #0 ;cmphi: bne L74 tfr u,d ;movlsbqihi: R:u -> R:b orb 2,s clra ;zero_extendqihi: R:b -> R:d tfr d,x tfr u,d anda #255 andb #0 pshs x ora ,s+ orb ,s+ tfr d,u L74: asl 2,s ldd 3,s addd #-1 std 3,s bne L75 cmpu #0 ;cmphi: beq L72 tfr u,d anda #32 andb #0 cmpd #0 ;cmphi: beq L76 ldx _my ldd 4,x addd #-16 std 4,x L76: tfr u,d anda #64 andb #0 cmpd #0 ;cmphi: beq L77 ldx _my ldd 4,x addd #16 std 4,x L77: tfr u,d anda #8 andb #0 cmpd #0 ;cmphi: beq L78 ldx _my ldd 6,x addd #-16 std 6,x L78: tfr u,d anda #16 andb #0 tfr d,u cmpu #0 ;cmphi: beq L72 ldx _my ldd 6,x addd #16 std 6,x L72: ldb _gScore stb 2,s ldy #0 bra L79 L88: tfr y,d aslb rola aslb rola aslb rola tfr d,u leax _ShipState,u ldd ,x addd 4,x std ,x ldd 2,x addd 6,x std 2,x bra L80 L81: leau 24576,u stu ,x L80: ldu ,x bmi L81 bra L101 L83: leau 24576,u stu 2,x L101: ldu 2,x bmi L83 bra L102 L85: leau -24576,u stu ,x L102: ldu ,x cmpu #24575 ;cmphi: bgt L85 bra L103 L87: leau -24576,u stu 2,x L103: ldu 2,x cmpu #24575 ;cmphi: bgt L87 leay 1,y L79: tfr y,d ;movlsbqihi: R:y -> R:b stb 3,s ldb 2,s cmpb 3,s ;cmpqi: lbhi L88 jsr _XorOldShips ldd #64 std ,--s ldx #_ShipState stx ,--s ldx #_OldShipState jsr _memcpy jsr _XorOldShips ldx _my ldb 2,x stb 10,s ldb ,x stb 11,s ldu #_Cows leas 4,s clr 5,s L92: ldb ,u lbeq L89 subb 7,s stb 3,s bpl L90 neg 3,s L90: ldb 1,u subb 6,s stb 2,s bpl L91 neg 2,s L91: ldb 3,s sex ;extendqihi2: R:b -> R:d tfr d,y ldb 2,s sex ;extendqihi2: R:b -> R:d tfr d,x exg d,y leax d,x exg d,y cmpx #1 ;cmphi: bgt L89 clr _Packet+1 ldb #2 stb _Packet+2 ldb 5,s stb _Packet+3 ldb #2 ldx #_Packet jsr _gSendCast ldb _gScore+1 clra ;zero_extendqihi: R:b -> R:d std 3,s aslb rola ldy #_gScore+3 leax d,y ldy ,x leay 1,y sty ,x ldb #1 stb _gScore+2 stb ,-s ldb 1,u stb ,-s ldb ,u jsr _PMode1DrawSpotXor.constprop.3 leas 2,s L89: inc 5,s leau 2,u ldb 5,s cmpb #32 ;cmpqi: lbne L92 ldb _gScore+19 beq L62 clr _gScore+19 jsr _DrawScores L62: leas 8,s puls y,u,pc LC0: .ascii "TODO fix me later\0" .area .text.startup .globl _main _main: pshs y,u leas -6,s ;----- asm ----- ; 5 "../kernel/game_postlude.h" 1 .globl __n1pre_entry ;--- end asm --- ldx #__n1pre_entry stx 0 ;----- asm ----- ; 8 "../kernel/game_postlude.h" 1 .globl __n1pre_final ;--- end asm --- ldy #__n1pre_final sty 0 ;----- asm ----- ; 11 "../kernel/game_postlude.h" 1 .globl __n1pre_final_startup ;--- end asm --- ldu #__n1pre_final_startup stu 0 ldb _gScore+1 clra ;zero_extendqihi: R:b -> R:d std 2,s aslb rola aslb rola aslb rola addd #_ShipState std _my ldx #13312 L107: ldd #0 std ,x++ cmpx #16384 ;cmphi: bne L107 ldx #13312 jsr _gPMode1Screen clr 2,s L108: ldb #1 stb ,-s clr ,-s ldb 4,s ldx #13312 jsr _PMode1DrawSpot inc 4,s leas 2,s ldb 2,s cmpb #96 ;cmpqi: bne L108 clr 2,s L109: ldb #1 stb ,-s stb ,-s ldb 4,s ldx #13312 jsr _PMode1DrawSpot inc 4,s leas 2,s ldb 2,s cmpb #96 ;cmpqi: bne L109 clr 2,s L110: ldb #1 stb ,-s ldb #94 stb ,-s ldb 4,s ldx #13312 jsr _PMode1DrawSpot inc 4,s leas 2,s ldb 2,s cmpb #96 ;cmpqi: bne L110 clr 2,s L111: ldb #1 stb ,-s ldb #95 stb ,-s ldb 4,s ldx #13312 jsr _PMode1DrawSpot inc 4,s leas 2,s ldb 2,s cmpb #96 ;cmpqi: bne L111 clr 2,s L112: ldb #1 stb ,-s ldb 3,s pshs b clrb ldx #13312 jsr _PMode1DrawSpot inc 4,s leas 2,s ldb 2,s cmpb #96 ;cmpqi: bne L112 clr 2,s L113: ldb #1 stb ,-s ldb 3,s pshs b ldb #1 ldx #13312 jsr _PMode1DrawSpot inc 4,s leas 2,s ldb 2,s cmpb #96 ;cmpqi: bne L113 clr 2,s L114: ldb #1 stb ,-s ldb 3,s pshs b ldb #94 ldx #13312 jsr _PMode1DrawSpot inc 4,s leas 2,s ldb 2,s cmpb #96 ;cmpqi: bne L114 clr 2,s L115: ldb #1 stb ,-s ldb 3,s pshs b ldb #95 ldx #13312 jsr _PMode1DrawSpot inc 4,s leas 2,s ldb 2,s cmpb #96 ;cmpqi: bne L115 ldd #0 std _random_context std _random_context+2 ldx #0 L116: tfr x,d stb _random_context+4,x ;movlsbqihi: R:d -> _random_context+4,x leax 1,x cmpx #256 ;cmphi: bne L116 ldd #0 std 2,s ldy #0 ldu #0 L118: ldb _random_context+4,u clra ;zero_extendqihi: R:b -> R:d tfr d,x ldd 2,s leax d,x stx 2,s ldb LC0,y clra ;zero_extendqihi: R:b -> R:d addd 2,s anda #0 andb #255 std 2,s tfr d,x leax _random_context+4,x stx ,s ldb ,x stb 4,s ldb _random_context+4,u stb ,x ldb 4,s stb _random_context+4,u leay 1,y cmpy #16 ;cmphi: bls L117 ldy #0 L117: leau 1,u cmpu #256 ;cmphi: bne L118 ldu #_Cows L119: jsr _RandomUpTo.constprop.4 addb #4 stb ,u jsr _RandomUpTo.constprop.4 addb #4 stb 2,s stb 1,u ldb #1 stb ,-s ldb 3,s pshs b ldb ,u jsr _PMode1DrawSpotXor.constprop.3 leau 2,u leas 2,s cmpu #_Cows+64 ;cmphi: bne L119 ldb _gScore stb 2,s ldx #5 ldd #0 std ,s bra L120 L121: ldd ,s aslb rola aslb rola aslb rola tfr d,y leau _ShipState,y ldy #5120 sty ,u tfr x,d tfr b,a clrb std 2,u ldd ,s addd #1 std ,s leax 10,x L120: ldd ,s stb 4,s ;movlsbqihi: R:d -> 4,s ldb 2,s cmpb 4,s ;cmpqi: bhi L121 ldd #64 std ,--s ldx #_ShipState stx ,--s ldx #_OldShipState jsr _memcpy jsr _XorOldShips jsr _DrawScores ldy _gMono+2 sty _start_seconds ldu #__n1pre_final_startup stu ,--s ldx #__n1pre_final stx ,--s ldx #_loop jsr _xAfterSetup ldx #0 leas 14,s puls y,u,pc .area .text.entry __n1pre_entry: .byte 126 .word _main .area .final __n1pre_final: .word -20754 .area .final.setup __n1pre_final_startup: .word -20753 .area .data.more _ShipState: zmb 64 ;skip space .area .bss _Cows: .blkb 64 _decis: .blkb 1 _Packet: .blkb 64 _my: .blkb 2 _start_seconds: .blkb 2 .area .data.more _OldShipState: zmb 64 ;skip space .area .text _DigitTimes15: .byte 0 .byte 15 .byte 30 .byte 45 .byte 60 .byte 75 .byte 90 .byte 105 .byte 120 .byte -121 .area .data _Digit3x5CharGen: .ascii " 0 0 00 00 0 0 1 1 1 1 1 22 2 2 2 22233 " .ascii " 333 333 4 44 4444 4 45555 55 555 666 " .ascii "6666 6666777 7 7 7 78888 88888 88889999 9999" .ascii " 9 9\0" .area .data.more _random_context: zmb 260 ;skip space .area .absolute .globl _gAlloc64 _gAlloc64 EQU $0D9D .globl _gBonoboStartRepeatingNMI _gBonoboStartRepeatingNMI EQU $0B1B .globl _gConfig _gConfig EQU $0607 .globl _gFatal _gFatal EQU $0A47 .globl _gFatalFIRQ _gFatalFIRQ EQU $0A98 .globl _gFatalSWI1 _gFatalSWI1 EQU $0ADC .globl _gFatalSWI2 _gFatalSWI2 EQU $0AC6 .globl _gFatalSWI3 _gFatalSWI3 EQU $0AAF .globl _gFree64 _gFree64 EQU $06EA .globl _gIrqRestore _gIrqRestore EQU $06DF .globl _gIrqSaveAndDisable _gIrqSaveAndDisable EQU $06D2 .globl _gKern _gKern EQU $0650 .globl _gModeScreen _gModeScreen EQU $0A10 .globl _gMono _gMono EQU $0020 .globl _gNetworkLog _gNetworkLog EQU $0C9F .globl _gPMode1Screen _gPMode1Screen EQU $09E3 .globl _gReceiveCast64 _gReceiveCast64 EQU $0757 .globl _gScore _gScore EQU $060B .globl _gSendCast _gSendCast EQU $0CD5 .globl _gTextScreen _gTextScreen EQU $09C9 .globl _gWall _gWall EQU $0637 .globl _memcpy _memcpy EQU $08D0 .globl _memcpy_words _memcpy_words EQU $0774 .globl _memset _memset EQU $08AA .globl _memset_words _memset_words EQU $0862 .globl _strlen _strlen EQU $08F2 .globl _xAfterSetup _xAfterSetup EQU $070A .globl _xSendControlPacket _xSendControlPacket EQU $0CB8