拡張BIOSと漢字ROMの隙間に置くローダーです。
ここまでの情報で基板は作成できると思いますが、コメント等で
リクエストいただければ一式をメール等でお送りできます。
ebios6.a
;
;Copyright (C) 2018 pakapoo http://blog.goo.ne.jp/purupoo. All rights reserved.
;
ORG $3000
;
; TEST MAIN
;
LDX #RCB
JSR READ
RTS
;
ORG $3010
LDX #RCB
JSR WRITE
RTS
;
ORG $3020
LDX #RCB
JSR [$FBFA]
RTS
;
ORG $30C0
RCB:FCB 10
RCBST:FCB 0
RCBADR:FDB $3100
RCBTRK:FCB 0
RCBSCT:FCB 1
RCBSID:FCB 0
RCBUNT:FCB 0
TSTST:FDB 0
ORG $3C00
;
SPICD:EQU $FD08
SPIDT:EQU $FD09
STRD:EQU $D7
FTOB:EQU $53
B1RD:EQU $D1
B1WT:EQU $84
BTOF:EQU $83
APRW:EQU $58
;
;
SCOFST:EQU 128
ORGBIO:EQU $F17D
;
; BIOS EXTEND
;
PSHS CC
ORCC #$50
LEAX ENDADR,PCR
STX EASAVE,PCR
;
LEAX BIOS,PCR
LDY $33
STY $DF
;
BIOL1:LDA ,X+
STA ,Y+
CMPX EASAVE,PCR
BNE BIOL1
;
CLR ,Y+
STY $33
;
PULS CC
;
; CLRA
; JSR $8F32
RTS
;
EASAVE:FDB 0
;
BIOS:EQU *
PSHS CC,A,B,X,Y
LDA ,X
CMPA #8
BNE BIOSL1
BSR REST
BRA BIOSEX
BIOSL1:CMPA #9
BNE BIOSL2
LBSR WRITE
BRA BIOSEX
BIOSL2:CMPA #10
BNE BIOSL3
LBSR READ
BRA BIOSEX
BIOSL3:EQU *
PULS CC,A,B,X,Y
JMP ORGBIO
;
;
;
;
;
BIOSEX:EQU *
PULS CC,A,B,X,Y
CLR 1,X
RTS
;
;
REST:EQU *
; CLR 1,X
RTS
;
;
; DRIVE TABLE
DRVTBL:FCB 1,1,2,2
;
;
SPIWT:EQU *
TST SPICD
BMI SPIWT
RTS
;
SSSEL:EQU *
PSHS A,B
LDA 7,X
LEAY DRVTBL,PCR
LEAY A,Y
LDA ,Y
STA SPICD
PULS A,B
RTS
;
;
RDYCHK:EQU *
BSR SSSEL
;
LDA #STRD
STA SPIDT
BSR SPIWT
CLR SPIDT
BSR SPIWT
LDA SPIDT
;
CLR SPICD
RTS
;
;
; 4 BYTE COMMAND
;
CMD4:EQU *
BSR SSSEL
;
STA SPIDT
BSR SPIWT
;
TST1:EQU *
LDB 5,X
DECB
LEAY PNUM,PCR
CLR 0,Y
STB 1,Y
;
LDB 6,X
LDA #16
MUL
ADDD ,Y
STD ,Y
;
LDB 4,X
LDA #32
MUL
ADDD ,Y
;
ADDD #SCOFST
TST 7,X
BEQ CMDL1
ADDD #1280
CMDL1:EQU *
;
;
ANDA #$3F
LSLB
ROLA
;
LSLB
ROLA
;
STA SPIDT
BSR SPIWT
STB SPIDT
BSR SPIWT
CLR SPIDT
BSR SPIWT
;
CLR SPICD
RTS
;
;
PNUM:FCB 0
PNUML:FCB 0
;
;
CMD:EQU *
BSR SSSEL
;
STA SPIDT
BSR SPIWT
CLR SPIDT
BSR SPIWT
CLR SPIDT
LBSR SPIWT
CLR SPIDT
LBSR SPIWT
RTS
;
;
;
READ:EQU *
LDA #FTOB
BSR CMD4
READL2:LBSR RDYCHK
CMPA #$AC
BNE READL2
LDA #B1RD
BSR CMD
CLRB
LDY 2,X
READL1:EQU *
CLR SPIDT
LBSR SPIWT
LDA SPIDT
STA ,Y+
DECB
BNE READL1
CLR SPICD
RTS
;
;
WRITE:EQU *
LDA #B1WT
BSR CMD
CLRB
LDY 2,X
WTLP1:EQU *
LDA ,Y+
STA SPIDT
LBSR SPIWT
DECB
BNE WTLP1
;
CLR SPICD
;
LDA #BTOF
LBSR CMD4
WTLP2:EQU *
LBSR RDYCHK
CMPA #$AC
BNE WTLP2
;
LDA #APRW
LBSR CMD4
WTLP3:EQU *
LBSR RDYCHK
CMPA #$AC
BNE WTLP3
;
CLR SPICD
RTS
ENDADR:EQU *
spirom.a
ORG $3000
LDA #1
STA $FD08
LDA #$03
BSR SPI
CLRA
BSR SPI
BSR SPI
BSR SPI
LDX #$2000
LP1:BSR SPI
LDA $FD09
STA ,X+
CMPX #$4000
BNE LP1
CLR $FD08
JSR $2000
;RTS
;NOP
;NOP
SPI:STA $FD09
SPIWT:LDB $FD08
BMI SPIWT
RTS
;
;
B $FD08
BMI SPIWT
RTS