base:turbo250_disassembled
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:turbo250_disassembled [2015-04-17 04:34] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Turbo 250 Mr.Z Disassembled ====== | ||
+ | Written by FTC | ||
+ | |||
+ | This was disassembled the other day using IDA Pro (an old but useable freeware dos version available at 6502.org) and then converted it into ACME format. The process involved " | ||
+ | |||
+ | The source is hardly labelled at all, but I guess it could still be nice to have a look at for some people. I might update it sometime, but don't count on it. | ||
+ | |||
+ | I just couldn' | ||
+ | |||
+ | < | ||
+ | ; | ||
+ | |||
+ | * = $0801 | ||
+ | |||
+ | basic_startup: | ||
+ | !byte | ||
+ | !byte 8 ; | ||
+ | !byte $A ; | ||
+ | !byte 0 ; | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | eorval1: | ||
+ | eorval2: | ||
+ | eorval3: | ||
+ | eorval4: | ||
+ | !byte 0 ; | ||
+ | !byte 0 ; | ||
+ | !byte 0 ; | ||
+ | ; | ||
+ | ; | ||
+ | ; stx $fb | ||
+ | ldx #0 | ||
+ | |||
+ | printmsg: | ||
+ | lda string, | ||
+ | beq lamerprotection ; | ||
+ | jsr $e716 | ||
+ | ; eor $fb | ||
+ | ; sta $fb | ||
+ | inx | ||
+ | bne printmsg | ||
+ | |||
+ | lamerprotection: | ||
+ | ; data xref: 0812r | ||
+ | eor # | ||
+ | tay | ||
+ | iny | ||
+ | ldx #$ff | ||
+ | txs | ||
+ | ldx #$55 | ||
+ | |||
+ | copy1: ; code xref: 083dj | ||
+ | lda code1, | ||
+ | ; | ||
+ | ; | ||
+ | sta $2a7, | ||
+ | iny | ||
+ | cpy #$58 | ||
+ | bne copy1 | ||
+ | ldy #0 | ||
+ | |||
+ | copy2: ; code xref: 084fj | ||
+ | lda code2, | ||
+ | ; | ||
+ | ; | ||
+ | sta $334, | ||
+ | iny | ||
+ | cpy #$c7 | ||
+ | bne copy2 | ||
+ | ldy #0 | ||
+ | |||
+ | copy3: ; code xref: 0861j | ||
+ | lda code3, | ||
+ | ; | ||
+ | ; | ||
+ | sta $10b, | ||
+ | iny | ||
+ | cpy #$97 | ||
+ | bne copy3 | ||
+ | ldy #0 | ||
+ | |||
+ | copy4: ; code xref: 0873j | ||
+ | lda code4, | ||
+ | ; | ||
+ | ; | ||
+ | sta $ff3b, | ||
+ | iny | ||
+ | cpy #$c5 | ||
+ | bne copy4 | ||
+ | lda #$a7 | ||
+ | ldx #2 | ||
+ | sta $308 ; | ||
+ | stx $309 | ||
+ | jmp $a474 ; | ||
+ | ; | ||
+ | string: | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte $D ; | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte $D ; | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte $D ; | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte $D ; | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte $D ; | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte $D ; | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte $D ; | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte | ||
+ | !byte 0 ; | ||
+ | |||
+ | ;################################################################################## | ||
+ | ;################################################################################## | ||
+ | ;################################################################################## | ||
+ | code1: | ||
+ | !pseudopc $2a7 { | ||
+ | ; | ||
+ | JSR $73 | ||
+ | BEQ loc_0_2B0 | ||
+ | CMP #$5F | ||
+ | BEQ loc_0_2B3 | ||
+ | |||
+ | loc_0_2B0: | ||
+ | JMP $A7E7 | ||
+ | ; | ||
+ | |||
+ | loc_0_2B3: | ||
+ | JSR $73 | ||
+ | CMP #$4C | ||
+ | BEQ loc_0_2C1 | ||
+ | CMP #$53 | ||
+ | BEQ loc_0_2C4 | ||
+ | JMP $AF08 | ||
+ | ; | ||
+ | |||
+ | loc_0_2C1: | ||
+ | JMP loc_0_111 | ||
+ | ; | ||
+ | |||
+ | loc_0_2C4: | ||
+ | JMP loc_0_120 | ||
+ | ; | ||
+ | |||
+ | loc_0_2C7: | ||
+ | LDX #0 | ||
+ | STX $A | ||
+ | STX $93 | ||
+ | STX $90 | ||
+ | |||
+ | loc_0_2CF: | ||
+ | JSR loc_0_334 | ||
+ | LDA $AB | ||
+ | CMP #1 | ||
+ | BEQ loc_0_2DC | ||
+ | CMP #2 | ||
+ | BNE loc_0_2CF | ||
+ | |||
+ | loc_0_2DC: | ||
+ | DEC $B3 | ||
+ | JSR $F750 | ||
+ | INC $B3 | ||
+ | JSR $A82C | ||
+ | JSR $F5D2 | ||
+ | JSR loc_0_355 | ||
+ | LDA $BD | ||
+ | EOR $D7 | ||
+ | BEQ loc_0_2F6 | ||
+ | LDA #$FF | ||
+ | STA $90 | ||
+ | |||
+ | loc_0_2F6: | ||
+ | JSR $F5A9 | ||
+ | JSR $E195 | ||
+ | JMP $A7AE | ||
+ | ; | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | ;################################################################################## | ||
+ | ;################################################################################## | ||
+ | ;################################################################################## | ||
+ | code2: | ||
+ | !pseudopc $334 { | ||
+ | ; | ||
+ | |||
+ | loc_0_334: | ||
+ | JSR sub_0_388 | ||
+ | CMP #0 | ||
+ | BEQ loc_0_334 | ||
+ | STA $AB | ||
+ | |||
+ | loc_0_33D: | ||
+ | JSR sub_0_3B6 | ||
+ | STA $AC,Y | ||
+ | INY | ||
+ | CPY #5 | ||
+ | BNE loc_0_33D | ||
+ | |||
+ | loc_0_348: | ||
+ | JSR sub_0_3B6 | ||
+ | STA $23C, | ||
+ | INY | ||
+ | CPY #$15 | ||
+ | BNE loc_0_348 | ||
+ | BEQ sub_0_37C | ||
+ | |||
+ | loc_0_355: | ||
+ | JSR sub_0_388 | ||
+ | |||
+ | loc_0_358: | ||
+ | JSR sub_0_3B6 | ||
+ | LDA #4 | ||
+ | STA 1 | ||
+ | LDA $BD | ||
+ | STA ($AC), | ||
+ | LDA #7 | ||
+ | STA 1 | ||
+ | LDA $BD | ||
+ | EOR $D7 | ||
+ | STA $D7 | ||
+ | JSR $FCDB | ||
+ | JSR $FCD1 | ||
+ | BCC loc_0_358 | ||
+ | JSR sub_0_3B6 | ||
+ | JSR sub_0_3E0 | ||
+ | INY | ||
+ | |||
+ | ;############################################################################ | ||
+ | |||
+ | ; S u b r o u t i n e | ||
+ | |||
+ | sub_0_37C: | ||
+ | STY $C0 | ||
+ | CLI | ||
+ | CLC | ||
+ | LDA #0 | ||
+ | STA $2A0 | ||
+ | JMP $FC93 | ||
+ | ; End of function sub_0_37C | ||
+ | |||
+ | |||
+ | ;############################################################################ | ||
+ | |||
+ | ; S u b r o u t i n e | ||
+ | |||
+ | sub_0_388: | ||
+ | JSR loc_0_10B | ||
+ | JSR sub_0_3E0 | ||
+ | STY $D7 | ||
+ | LDA #7 | ||
+ | STA $DD06 | ||
+ | LDX #1 | ||
+ | |||
+ | loc_0_397: | ||
+ | ; sub_0_388+25j | ||
+ | JSR sub_0_3C9 | ||
+ | ROL $BD | ||
+ | LDA $BD | ||
+ | CMP #2 | ||
+ | BNE loc_0_397 | ||
+ | LDY #9 | ||
+ | |||
+ | loc_0_3A4: | ||
+ | JSR sub_0_3B6 | ||
+ | CMP #2 | ||
+ | BEQ loc_0_3A4 | ||
+ | |||
+ | loc_0_3AB: | ||
+ | CPY $BD | ||
+ | BNE loc_0_397 | ||
+ | JSR sub_0_3B6 | ||
+ | DEY | ||
+ | BNE loc_0_3AB | ||
+ | RTS | ||
+ | ; End of function sub_0_388 | ||
+ | |||
+ | |||
+ | ;############################################################################ | ||
+ | |||
+ | ; S u b r o u t i n e | ||
+ | |||
+ | sub_0_3B6: | ||
+ | ; ... | ||
+ | LDA #8 | ||
+ | STA $A3 | ||
+ | |||
+ | loc_0_3BA: | ||
+ | JSR sub_0_3C9 | ||
+ | ROL $BD | ||
+ | NOP | ||
+ | NOP | ||
+ | NOP | ||
+ | DEC $A3 | ||
+ | BNE loc_0_3BA | ||
+ | LDA $BD | ||
+ | RTS | ||
+ | ; End of function sub_0_3B6 | ||
+ | |||
+ | |||
+ | ;############################################################################ | ||
+ | |||
+ | ; S u b r o u t i n e | ||
+ | |||
+ | sub_0_3C9: | ||
+ | LDA #$10 | ||
+ | |||
+ | loc_0_3CB: | ||
+ | BIT $DC0D | ||
+ | BEQ loc_0_3CB | ||
+ | LDA $DD0D | ||
+ | STX $DD07 | ||
+ | PHA | ||
+ | LDA #$19 | ||
+ | STA $DD0F | ||
+ | PLA | ||
+ | LSR | ||
+ | LSR | ||
+ | RTS | ||
+ | ; End of function sub_0_3C9 | ||
+ | |||
+ | |||
+ | ;############################################################################ | ||
+ | |||
+ | ; S u b r o u t i n e | ||
+ | |||
+ | sub_0_3E0: | ||
+ | LDY #0 | ||
+ | STY $C0 | ||
+ | LDA $D011 | ||
+ | AND #$EF | ||
+ | STA $D011 | ||
+ | |||
+ | loc_0_3EC: | ||
+ | DEX | ||
+ | BNE loc_0_3EC | ||
+ | DEY | ||
+ | BNE loc_0_3EC | ||
+ | SEI | ||
+ | RTS | ||
+ | ; End of function sub_0_3E0 | ||
+ | |||
+ | ; | ||
+ | |||
+ | irq: | ||
+ | LDA #$37 ; ' | ||
+ | STA 1 | ||
+ | JMP $FE69 | ||
+ | ; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | ;################################################################################## | ||
+ | ;################################################################################## | ||
+ | ;################################################################################## | ||
+ | code3: | ||
+ | !pseudopc $10b { | ||
+ | ; | ||
+ | |||
+ | loc_0_10B: | ||
+ | JSR $F817 | ||
+ | JMP $A82C | ||
+ | ; | ||
+ | |||
+ | loc_0_111: | ||
+ | JSR $73 | ||
+ | BEQ loc_0_11A | ||
+ | CMP #$3A | ||
+ | BNE loc_0_11D | ||
+ | |||
+ | loc_0_11A: | ||
+ | JMP loc_0_2C7 | ||
+ | ; | ||
+ | |||
+ | loc_0_11D: | ||
+ | JMP $AF08 | ||
+ | ; | ||
+ | |||
+ | loc_0_120: | ||
+ | LDX $37 | ||
+ | LDY $38 | ||
+ | STX $FB | ||
+ | STY $FC | ||
+ | LDX $2D | ||
+ | LDY $2E | ||
+ | STX $FD | ||
+ | STY $FE | ||
+ | LDX #$F8 | ||
+ | LDY #7 | ||
+ | STX $37 | ||
+ | STY $38 | ||
+ | LDX #$E8 | ||
+ | LDY #7 | ||
+ | STX $2D | ||
+ | STY $2E | ||
+ | JSR $A660 | ||
+ | LDX #$82 | ||
+ | LDY #1 | ||
+ | STX $302 | ||
+ | STY $303 | ||
+ | JSR $73 | ||
+ | JSR $E1D4 | ||
+ | LDX #5 | ||
+ | STX $AB | ||
+ | DEX | ||
+ | |||
+ | loc_0_158: | ||
+ | LDA $2A,X | ||
+ | STA $AB,X | ||
+ | DEX | ||
+ | BNE loc_0_158 | ||
+ | JSR $F838 | ||
+ | JSR $A82C | ||
+ | JSR $F68F | ||
+ | JSR sub_0_3E0 | ||
+ | SEI | ||
+ | LDA #$7F | ||
+ | STA $DD0D | ||
+ | LDA #4 | ||
+ | STA 1 | ||
+ | JSR loc_0_FF3B | ||
+ | LDA #7 | ||
+ | STA 1 | ||
+ | JSR sub_0_37C | ||
+ | JMP $A474 | ||
+ | ; | ||
+ | LDA #$83 | ||
+ | STA $302 | ||
+ | LDA #$A4 | ||
+ | STA $303 | ||
+ | LDA $FB | ||
+ | STA $37 | ||
+ | LDA $FC | ||
+ | STA $38 | ||
+ | LDA $FD | ||
+ | STA $2D | ||
+ | LDA $FE | ||
+ | STA $2E | ||
+ | JSR $A660 | ||
+ | JMP ($302) | ||
+ | ; | ||
+ | } | ||
+ | |||
+ | ;################################################################################## | ||
+ | ;################################################################################## | ||
+ | ;################################################################################## | ||
+ | code4: | ||
+ | !pseudopc $ff3b { | ||
+ | ; | ||
+ | |||
+ | loc_0_FF3B: | ||
+ | LDA $FD | ||
+ | STA $AE | ||
+ | LDA $FE | ||
+ | STA $AF | ||
+ | JSR sub_0_FFAB | ||
+ | LDA $B9 | ||
+ | LDA #2 | ||
+ | NOP | ||
+ | DEX | ||
+ | JSR sub_0_FFCB | ||
+ | LDX #8 | ||
+ | |||
+ | loc_0_FF51: | ||
+ | LDA $AC,Y | ||
+ | JSR sub_0_FFCB | ||
+ | LDX #6 | ||
+ | INY | ||
+ | CPY #5 | ||
+ | NOP | ||
+ | BNE loc_0_FF51 | ||
+ | LDY #0 | ||
+ | LDX #4 | ||
+ | |||
+ | loc_0_FF63: | ||
+ | LDA ($BB), | ||
+ | CPY $B7 | ||
+ | BCC loc_0_FF6C | ||
+ | LDA #$20 | ||
+ | DEX | ||
+ | |||
+ | loc_0_FF6C: | ||
+ | JSR sub_0_FFCB | ||
+ | LDX #5 | ||
+ | INY | ||
+ | CPY #$BB | ||
+ | BNE loc_0_FF63 | ||
+ | LDA #2 | ||
+ | STA $AB | ||
+ | JSR sub_0_FFAB | ||
+ | TYA | ||
+ | JSR sub_0_FFCB | ||
+ | STY $D7 | ||
+ | LDX #7 | ||
+ | NOP | ||
+ | |||
+ | loc_0_FF86: | ||
+ | LDA ($AC), | ||
+ | JSR sub_0_FFCB | ||
+ | LDX #3 | ||
+ | INC $AC | ||
+ | BNE loc_0_FF95 | ||
+ | INC $AD | ||
+ | DEX | ||
+ | DEX | ||
+ | |||
+ | loc_0_FF95: | ||
+ | LDA $AC | ||
+ | CMP $AE | ||
+ | LDA $AD | ||
+ | SBC $AF | ||
+ | BCC loc_0_FF86 | ||
+ | |||
+ | loc_0_FF9F: | ||
+ | LDA $D7 | ||
+ | JSR sub_0_FFCB | ||
+ | LDX #7 | ||
+ | DEY | ||
+ | BNE loc_0_FF9F | ||
+ | INY | ||
+ | RTS | ||
+ | |||
+ | ;############################################################################ | ||
+ | |||
+ | ; S u b r o u t i n e | ||
+ | |||
+ | sub_0_FFAB: | ||
+ | LDY #0 | ||
+ | |||
+ | loc_0_FFAD: | ||
+ | ; sub_0_FFAB+12j | ||
+ | LDA #2 | ||
+ | JSR sub_0_FFCB | ||
+ | LDX #7 | ||
+ | DEY | ||
+ | CPY #9 | ||
+ | BNE loc_0_FFAD | ||
+ | LDX #5 | ||
+ | DEC $AB | ||
+ | BNE loc_0_FFAD | ||
+ | |||
+ | loc_0_FFBF: | ||
+ | TYA | ||
+ | JSR sub_0_FFCB | ||
+ | LDX #7 | ||
+ | DEY | ||
+ | BNE loc_0_FFBF | ||
+ | DEX | ||
+ | DEX | ||
+ | RTS | ||
+ | ; End of function sub_0_FFAB | ||
+ | |||
+ | |||
+ | ;############################################################################ | ||
+ | |||
+ | ; S u b r o u t i n e | ||
+ | |||
+ | sub_0_FFCB: | ||
+ | ; ... | ||
+ | STA $BD | ||
+ | EOR $D7 | ||
+ | STA $D7 | ||
+ | LDA #8 | ||
+ | STA $A3 | ||
+ | |||
+ | loc_0_FFD5: | ||
+ | ASL $BD | ||
+ | LDA 1 | ||
+ | AND #$F7 | ||
+ | JSR sub_0_FFED | ||
+ | LDX #$11 | ||
+ | NOP | ||
+ | ORA #8 | ||
+ | JSR sub_0_FFED | ||
+ | LDX #$E | ||
+ | DEC $A3 | ||
+ | BNE loc_0_FFD5 | ||
+ | RTS | ||
+ | ; End of function sub_0_FFCB | ||
+ | |||
+ | |||
+ | ;############################################################################ | ||
+ | |||
+ | ; S u b r o u t i n e | ||
+ | |||
+ | sub_0_FFED: | ||
+ | ; sub_0_FFCB+18p sub_0_FFED+1j | ||
+ | DEX | ||
+ | BNE sub_0_FFED | ||
+ | BCC loc_0_FFF7 | ||
+ | LDX #$B | ||
+ | |||
+ | loc_0_FFF4: | ||
+ | DEX | ||
+ | BNE loc_0_FFF4 | ||
+ | |||
+ | loc_0_FFF7: | ||
+ | STA 1 | ||
+ | RTS | ||
+ | ; End of function sub_0_FFED | ||
+ | |||
+ | ; | ||
+ | ;Interrupt handler pointers which ends up at $fffa - $ffff | ||
+ | !WORD irq | ||
+ | !WORD irq | ||
+ | !WORD irq | ||
+ | } | ||
+ | </ |
base/turbo250_disassembled.txt · Last modified: 2015-04-17 04:34 by 127.0.0.1