;1e8b: e8 aa MOV a,#$aa ;Subroutine 1E8B: Get data from cpu. This is just an inefficient form of FFC0. <_< ;1e8d: c5 f4 00 MOV $00f4,a ;1e90: e8 bb MOV a,#$bb ;1e92: c5 f5 00 MOV $00f5,a ;1e95: e5 f4 00 MOV a,$00f4 ;1e98: 68 cc CMP a,#$cc ;1e9a: d0 f9 BNE $1e95 ;1e9c: 2f 20 BRA $1ebe ;1e9e: ec f4 00 MOV y,$00f4 ;1ea1: d0 fb BNE $1e9e ;1ea3: 5e f4 00 CMP y,$00f4 ;1ea6: d0 0f BNE $1eb7 ;1ea8: e5 f5 00 MOV a,$00f5 ;1eab: cc f4 00 MOV $00f4,y ;1eae: d7 14 MOV ($14)+y,a ;1eb0: fc INC y ;1eb1: d0 f0 BNE $1ea3 ;1eb3: ab 15 INC $15 ;1eb5: 2f ec BRA $1ea3 ;1eb7: 10 ea BPL $1ea3 ;1eb9: 5e f4 00 CMP y,$00f4 ;1ebc: 10 e5 BPL $1ea3 ;1ebe: e5 f6 00 MOV a,$00f6 ;1ec1: ec f7 00 MOV y,$00f7 ;1ec4: da 14 MOVW $14,ya ;1ec6: ec f4 00 MOV y,$00f4 ;1ec9: e5 f5 00 MOV a,$00f5 ;1ecc: cc f4 00 MOV $00f4,y ;1ecf: d0 cd BNE $1e9e ;1ed1: cd 31 MOV x,#$31 ;1ed3: c9 f1 00 MOV $00f1,x ;Clear ports and (re)start timer0 ;1ed6: 6f RET ;New SPC TASM Code is stored in SPC\assembler\OML.txt ;xkas code start org $CF8A93 incbin SPCOML.bin ;This inputs the new SPC code org $808F7E JSR FreeSpace NOP org $80D4F0 FreeSpace: PHP PHB REP #$30 TDC PHA ;$2140 PHA ;$2142 SEP #$20 DEC STA $002140 LDY $00 LDA $02 PHA PLB Start: LDA #$AA StartWait: CMP $002140 BNE StartWait REP #$20 LDA $0000,Y ;Size of block INY INY TAX LDA $0000,Y ;Normally address INY INY STA $002142 SEP #$20 CPX #$0001 LDA #$00 STA $03,S ROL A STA $002141 ADC #$7F LDA #$CC STA $002140 LDA #$FF STA $8D BVS SendData TDC STA $8D CMP $002140 ;Ending BNE $FA STA $002141 REP #$20 STA $002142 PLA PLA PLB PLP RTS Send1: STA $02,S INC $8D BRA Set2140 Send2: STA $02,S LDA $04,S STA $01,S Set2140: INX INC $8D BRA BeforeReply PreSend: ADC #$02 STA $03,S SendData: LDA $0000,Y STA $04,S JSR $8103 DEX BEQ Send1 LDA $0000,Y STA $01,S JSR $8103 DEX BEQ Send2 LDA $0000,Y STA $02,S JSR $8103 BeforeReply: LDA $03,S CMP $002140 BNE $FA ADC $8D ;Carry will be set. FF = normal(3 bytes), 00 = 2 bytes, 01 = 1 byte STA $03,S REP #$20 LDA $01,S STA $002142 LDA $03,S STA $002140 SEP #$21 DEX BNE PreSend LDA $03,S ;I want old $2140 + number of bytes sent. This is old $2140 - number of bytes sent + 3. $8D = 2 - bytes sent SBC $8D SEC SBC $8D INC ;A + 1 - 2*$8D = $2140 - bytes + 3 + 1 - 2*(2 - bytes) CMP $002140 ;$2140 + bytes BNE $FA ADC #$10 STA $002140 JMP Start ;xkas code end