antoine-source/mdt/FW2.S

1378 lines
25 KiB
ArmAsm

*
* MicroDrive Turbo
* (c) 1996-2006, Joachim Lange
* (s) 2019, Brutal Deluxe Software
*
mx %11
org $c800
dsk FW2.NEW
lst off
*----------------------------
SLOT161 = $C1 ; This is for slot 1
MSLOT EQU $07F8
SPKR EQU $C030
DMAREG EQU $C037
INIT EQU $FB2F
HOME EQU $FC58
SETKBD EQU $FE89
SETVID EQU $FE93
*----------------------------
LDY #$20
LDY #$00
LDY #$03
LDY #$00
CLD
JSR SETKBD
JSR SETVID
JSR INIT
JSR HOME
LDA #SLOT161
STA MSLOT
LC81A LDA LCFFF
STZ $C092
JMP LCA01
LC823 CLV
BVC LC828
LC826 SEP #$40
LC828 LDA #SLOT161
STA MSLOT
LDA LCFFF
STZ $C092
LDA LC980
EOR #$82
CMP LC981
BEQ LC842
PHP
JSR LCA01
PLP
LC842 BVS LC847
JMP LCA01
LC847 LDA #$01
STA $C092
CLC
XCE
REP #$30
LDA $42
STA LC9E0
LDA $44
STA LC9E0+2
LDA $46
STA LC9E4
LDA $48
STA LC9E5+1
LDA $4A
STA LC9E5+3
LDA $4C
STA LC9EA
LDA $4E
STA LC9EA+2
LDA $50
STA LC9EE
SEP #$30
LDY #$01
LC87C LDA ($01,S),Y
LC87E STA LC925
BIT LC925
BVC LC889
JMP LCB6F
LC889 INY
REP #$20
LDA ($01,S),Y
STA $4C
TSX
LDA $0101,X
CLC
ADC #$0003
STA $0101,X
SEP #$20
LDY #$01
LDA ($4C),Y
STA LC927
CMP LC81A
BCC LC8AD
BEQ LC8AD
BCS LC8DC
LC8AD INY
REP #$20
LDA ($4C),Y
STA $44
SEP #$20
INY
LDA LC925
CMP #$04
BEQ LC8E5
CMP #$03
BEQ LC8E5
BCS LC8E2
CMP #$01
BCC LC8D2
INY
REP #$20
LDA ($4C),Y
STA $46
SEP #$20
INY
LC8D2 INY
LDA ($4C),Y
STA $48
BCC LC8DF
JMP LCAB0
LC8DC JMP LCA0B
LC8DF JMP LCA29
LC8E2 JMP LCA13
LC8E5 CLC
STZ LC92B
LC8E9 JMP LCA26
DB $01
DB $03
DB $07
DB $0F
DB $FF
DB $FF
DB $C9
DB $C4
DB $D5
DB $10
DB $00
DB $CD
DB $D4
LC8F9 DB $CA
LC8FA DB $CC
LC8FB DB $80
DB $00
DB $00
DB $3F
LC8FF DB LC823
*----------------------------
DB $CA
DB $CC
DB $64
DB $02
DB $64
DB $02
DB $00
DB $00
DB $00
DB $00
DB $05
DB $00
DB $05
DB $00
DB $00
DB $00
DB $00
DB $00
DB $01
DB $00
DB $01
DB $00
DB $05
DB $00
DB $03
DB $00
DB $08
DB $00
DB $01
DB $00
DB $03
DB $00
LC920 DB $04
DB $00
DB $00
DB $00
DB $01
LC925 DB $00
DB $40
LC927 DB $00
DB $01
LC929 DB $00
LC92A DB $01
LC92B DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
LC931 DB $00
LC932 DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
LC980 DB $00
LC981 DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
*----------------------------
LC9E0 JSL $000000
LC9E4 RTS
LC9E5 JSL $000000
RTS
LC9EA JSL $000000
LC9EE RTS
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
*----------------------------
LCA00 DB $01
LCA01 DB $00
DB $01
LCA03 LDA #$21
BNE LCA15
LCA07 LDA #$27
BNE LCA15
LCA0B LDA #$28
BNE LCA15
LCA0F LDA #$2F
BNE LCA15
LCA13 LDA #$01
LCA15 SEC
STA LC92B
JMP LCCD3
LCA1C STX LC929
STZ LC92A
STZ LC92B
CLC
LCA26 JMP LCCD3
LCA29 LDA LC980
CMP #$CA
BNE LCA0B
LDA $48
BEQ LCA3B
CMP #$03
BNE LCA03
BRL LCA7A
LCA3B LDX #$02
JSR LCFA0
LDY LC81A
BEQ LCA0F
CPY #$11
BCS LCA0F
LDA LC927
BEQ LCA99
CMP LC81A
BCC LCA58
BEQ LCA58
JMP LCA0B
LCA58 JSR LCA60
LDX #$04
JMP LCA1C
LCA60 LDA LC927
ASL
ASL
TAX
LDY #$00
LDA LCDF8
STA ($44),Y
INY
LCA6E LDA LC87C,X
STA ($44),Y
INX
INY
CPY #$04
BNE LCA6E
RTS
LCA7A LDA LC927
CMP LC81A
BCC LCA87
BEQ LCA87
JMP LCA0B
LCA87 JSR LCA60
LCA8A LDA LCDF9,Y
STA ($44),Y
INY
CPY #$19
BNE LCA8A
LDX #$19
JMP LCA1C
LCA99 LDY #$07
LCA9B LDA LCDC2,Y
STA ($44),Y
DEY
BNE LCA9B
LDA LC81A
STA ($44),Y
LDX #$08
JMP LCA1C
LCAAD JMP LCA0F
LCAB0 LDA #$03
STA LC920
LCAB5 JSR LC8E9+1 ; LOGO (see FW4)
LDA $C09F
AND #$40
BEQ LCAAD
LDA LC925
CMP #$02
BEQ LCACC
JMP LCB1D
JMP LCA0B
LCACC LDA #$01
STA $C09A
LDA #$30
STA $C09F
LDA $C096
STZ DMAREG
REP #$30
LDA $44
STA $C094
SEP #$30
LCAE5 LDA $C09F
BMI LCAE5
AND #$FD
CMP #$58
BEQ LCAF6
AND #$21
BEQ LCAE5
BNE LCB0B
LCAF6 STA $C093
JSR LCD19
LCAFC LDA $C09F
BMI LCAFC
AND #$FD
CMP #$50
BEQ LCB0E
AND #$21
BEQ LCAFC
LCB0B BRL LCB5E
LCB0E STZ LC92B
CLC
REP #$30
LDA #$0200
STA LC929
JMP LCCD5
*----------------------------
MX %11
LCB1D LDA #$01
STA $C09A
LDA #$20
STA $C09F
LDA $C097
STZ DMAREG
REP #$30
LDA $44
STA $C094
SEP #$30
JSR LCD19
LCB39 LDA $C09F
BMI LCB39
AND #$F9
CMP #$58
BEQ LCB49
LSR
BCS LCB5E
BRA LCB39
LCB49 STA $C093
LDA $C09F
STZ LC92B
CLC
REP #$30
LDA #$0200
STA LC929
JMP LCCD5
LCB5E JSR LCE27
JSR LCD0D
DEC LC920
BEQ LCB6C
JMP LCAB5
LCB6C JMP LCA07
LCB6F REP #$20
MX %01
LDY #$02
LDA ($01,S),Y
STA $4C
LDY #$04
LDA ($01,S),Y
STA $4E
TSX
LDA $0101,X
CLC
ADC #$0005
STA $0101,X
LDY #$02
LDA [$4C],Y
STA $4F
LDY #$04
LDA [$4C],Y
STA $51
LDY #$06
LDA [$4C],Y
STA $46
LDY #$08
LDA [$4C],Y
STA $48
SEP #$30
LDY #$01
LDA [$4C],Y
STA LC927
LDA #$03
STA LC920
LCBAE LDA LC925
CMP #$41
BNE LCBB8
JMP LCC51
LCBB8 CMP #$42
BEQ LCBDA
CMP #$40
BNE LCBC3
JMP LCD63
LCBC3 CMP #$43
BEQ LCBCE
CMP #$44
BEQ LCBCE
JMP LCD4D
LCBCE CLC
STZ LC92B
REP #$30
STZ LC929
JMP LCCD3
MX %11
LCBDA JSR LC8E9+1 ; LOGO (see FW4)
LDA $C09F
AND #$40
BEQ LCC4E
LDA #$01
STA $C09A
LDA #$30
STA $C09F
LCBEE LDA $C09F
BMI LCBEE
AND #$FD
CMP #$58
BEQ LCC00
AND #$21
BEQ LCBEE
BRL LCCBF
LCC00 REP #$30
LDA $4F
STA $44
CMP #$FE01
BCC LCC17
SEP #$30
LDA $51
LCC0F STA LC932
JSR LC8E5
BRA LCC3B
LCC17 STA $C094
SEP #$30
LDA $51
CMP #$90
BCS LCC27
CMP LC826
BCS LCC0F
LCC27 CMP #$E0
BEQ LCC0F
CMP #$E1
BEQ LCC0F
STA DMAREG
LDA $C096
STA $C093
JSR LCD19
LCC3B LDA $C09F
BMI LCC3B
AND #$FD
CMP #$50
BEQ LCC4C
AND #$21
BEQ LCC3B
BNE LCCBF
LCC4C BRA LCCB1
LCC4E JMP LCD45
LCC51 JSR LC8E9+1 ; LOGO (see FW4)
LDA $C09F
AND #$40
BEQ LCC4E
LDA #$01
STA $C09A
LDA #$20
STA $C09F
LDY $51
STY DMAREG
JSR LCD19
LCC6D LDA $C09F
BMI LCC6D
AND #$F9
CMP #$58
BEQ LCC7D
LSR
BCS LCCBF
BRA LCC6D
LCC7D REP #$30
LDA $4F
STA $44
CMP #$FE01
BCC LCC92
SEP #$30
LCC8A STY LC932
JSR LC8DF+1 ; LOGO (see FW4)
BRA LCCAE
LCC92 STA $C094
SEP #$30
CPY #$90
BCS LCCA0
CPY LC826
BCS LCC8A
LCCA0 CPY #$E0
BEQ LCC8A
CPY #$E1
BEQ LCC8A
LDA $C097
STA $C093
LCCAE LDA $C09F
LCCB1 STZ LC92B
REP #$30
LDA #$0200
STA LC929
CLC
BRA LCCD5
LCCBF JSR LCE27
JSR LCD0D
DEC LC920
BEQ LCCCD
JMP LCBAE
MX %11
LCCCD LDA #$27
STA LC92B
SEC
LCCD3 REP #$30
LCCD5 LDA LC9E0
STA $42
LDA LC9E0+2
STA $44
LDA LC9E4
STA $46
LDA LC9E5+1
STA $48
LDA LC9E5+3
STA $4A
LDA LC9EA
STA $4C
LDA LC9EA+2
STA $4E
LDA LC9EE
STA $50
SEP #$30
LDA LC92B
LDX LC929
LDY LC92A
PHP
SEC
XCE
PLP
LCD0C RTS
LCD0D LDA $C09F
AND #$08
BEQ LCD0C
LDA $C090
BRA LCD0D
LCD19 LDA #$03
STA LC8FB
STZ LC8FA
STZ LC8F9
LCD24 LDA $C098
BPL LCD2D
LDA $C09F
RTS
LCD2D INC LC8F9
BNE LCD24
INC LC8FA
BNE LCD24
DEC LC8FB
BNE LCD24
RTS
LDA #$27 ; LOGO - LCD3D
BNE LCD4F
LCD41 LDA #$28
BNE LCD4F
LCD45 LDA #$2F
BNE LCD4F
LCD49 LDA #$21
BNE LCD4F
LCD4D LDA #$01
LCD4F SEC
STA LC92B
JMP LCCD3
LCD56 STX LC929
STZ LC92A
STZ LC92B
CLC
JMP LCCD3
LCD63 LDA LC980
CMP #$CA
BEQ LCD6D
JMP LCD41
LCD6D LDA $46
CMP #$04
BCS LCD49
ASL
TAX
JMP (LCD78,X)
LCD78 DA LCD80
DA LCD49
DA LCD49
DA LCD9C
LCD80 LDX #$02
JSR LCFA0
LDA LC927
BEQ LCDAF
CMP LC81A
BCC LCD93
BEQ LCD93
BCS LCD41
LCD93 LDY #$04
JSR LCDCA
LDX #$05
BNE LCD56
LCD9C LDA LC927
CMP LC81A
BCC LCDA8
BEQ LCDA8
BCS LCD41
LCDA8 JSR LCDCA
LDX #$1A
BNE LCD56
LCDAF LDY #$07
LCDB1 LDA LCDC2,Y
STA [$4F],Y
DEY
BNE LCDB1
LDA LC81A
STA [$4F],Y
LDX #$08
BRA LCD56
LCDC2 DB $00
DB $40
DB $02
DB $00
DB $00
DB $10
DB $00
DB $00
LCDCA LDY #$00
LDA LCDF8
STA [$4F],Y
INY
LDA LC927
ASL
ASL
TAX
REP #$20
LDA LC87C,X
STA [$4F],Y
LDY #$03
LDA LC87E,X
AND #$00FF
STA [$4F],Y
SEP #$20
LDY #$05
LCDED LDA LCDF8,Y
STA [$4F],Y
INY
CPY #$1A
BNE LCDED
RTS
LCDF8 SED
LCDF9 DB $00
DB $00
DB $00
DB $00
STR 'MicroDrive/Turbo'
DB $02
*----------------------------
LDY #$00
BPL LCE13
LCE13 LDX #$FF
BNE LCE33
LDX #$80
BNE LCE33
LDX #$70
BNE LCE33
LDX #$60
BNE LCE33
LDX #$30
BNE LCE33
LCE27 LDX #$20
BNE LCE33
LDX #$1C
BNE LCE33
LDX #$18
BNE LCE33
LCE33 STX LC931
LDY #$20
LCE38 LDA SPKR
LDX LC931
LCE3E DEX
BNE LCE3E
DEY
BNE LCE38
LDX #$20
LCE46 DEY
BNE LCE46
DEX
BNE LCE46
RTS
*----------------------------
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
DB $FF
*----------------------------
LCFA0 LDA LCA00
STA LC8FF
STX $C092
JMP LCA01
LDA LC8FF
STA $C092
RTS
*----------------------------
DB $00
DB $01
DB $02
DB $03
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
DB $00
LCFFF DB $00