日本橋電気街徘徊日誌

いいとしのおっさんがジャンク屋で買ったものをいじったり電子工作したりします。

FM-7のプリンタポート接続SPIシリアルフラッシュメモリ用ブートROMのソース

2019-01-03 23:46:41 | 電子工作

 

一つ前の記事のFM-7のプリンタポート接続SPIシリアルフラッシュメモリ用
ブートROMのソースです。アセンブラはedas20を使用しました。
テスト用のコードがいろいろついてますが、$2E00~$2FFFが
ブートROM部分です。ブートROMのプログラム領域480バイトを

ほぼ使い切っているため、機能追加はわりと厳しそうです。

 

 

;Copyright (C) 2018 pakapoo http://blog.goo.ne.jp/purupoo. All rights reserved.
; パラレルポート セツゾク ノ シリアル
; フラッシュメモリ カラ BOOT スル BOOT ROM
; EBIOS6.A ヲ カイゾウ
;
; $FD00 BIT6 OUT STRB SCLK
; $FD01 BIT2 OUT D2   SS1
; $FD01 BIT1 OUT D1   SS0
; $FD01 BIT0 OUT D0   MO
; $FD02 BIT3 IN  PE   MI
;
;
 ORG $3000
;
; TEST MAIN
;
 LDX #RCB
 JSR READ
 RTS
;
 ORG $3010
 LDX #RCB
 JSR WRITE
 RTS
;
 ORG $3020
 LDX #RCB
 JSR [$FBFA]
 ANDA #$3F
;
 RTS
;
;
 ORG $3030
 LDX #$3080
 LBSR UNSEL
 LDA #$9F
 LBSR SPI
 LDA SPIIN
 STA ,X+
 LDA #$00
 LBSR SPI
 LDA SPIIN
 STA ,X+
 LDA #$00
 LBSR SPI
 LDA SPIIN
 STA ,X+
 RTS
;
;
 ORG $3060
 LDX #$3100
 LBSR UNSEL
 LDA #$77
 LBSR SPI
 CLRA
 LBSR SPI
 LBSR SPI
 LBSR SPI
L30601:EQU *
 LBSR SPI
 LDB SPIIN
 STB ,X+
 CMPX #$3180
 BNE L30601
 RTS
;
;
 ORG $3090
 LDA #100
L30901:PSHS A
 JSR $3000
 PULS A
 DECA
 BNE L30901
 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 $2E00
;
SPICD:EQU $FD08
SPIDT:EQU $FD09
PRT0:EQU $FD00
PRT1:EQU $FD01
PRT2:EQU $FD02
;
STRD:EQU $D7
FTOB:EQU $53
B1RD:EQU $D1
B1WT:EQU $84
BTOF:EQU $83
APRW:EQU $58
;
;
SCOFST:EQU 128
;
;
;
SS:EQU $FC29
SPIIN:EQU $FC2A
PNUM:EQU $FC2B
PNUML:EQU $FC2C
PAGE_H:EQU $FC2D
PAGE_L:EQU $FC2E
;
; BOOT
;
 BRA BOOTL1
 CLRA
 NOP
 RTS
 LBRA WRITE
 LBRA READ
BOOTL1:EQU *
 CLR PRT0
 DECA
 STA PRT1
 LDA #$FD
 TFR A,DP
 LDS #$FC7F
 LBSR UNSEL
 LDB <$FD04
 BITB #$02
 BNE BOOTL2
 LDX $FBFC
 BRA BOOTL3
BOOTL2:EQU *
;
;
 LDA #$31
 LBSR PUTC
 LEAX BTRCB,PCR
 LBSR READ
 LDA #$32
 LBSR PUTC
;
 LDX #$0100
 CLRA
 TFR A,DP
 JMP $0100
;      BRA  BOOTL3
;
;
BOOTL4:EQU *
 LDX $FBFE
;
;
BOOTL3:EQU *
 CLRA
;
COMINI:EQU *
 TFR A,DP
;      JMP  ,X
;
;
 LDU #$FD06
 BSR COMIN1
 LDU #$FD24
 LDA #$04
COMIN2:BSR COMIN1
 LEAU 2,U
 DECA
 BNE COMIN2
 JMP ,X
;
COMIN1:EQU *
 CLR 1,U
 CLR 1,U
 CLR 1,U
 LDB #$40
 STB 1,U
 RTS
;
;
;
;
BTRCB:FCB $0A,0,$01,$00,0,1,0,0
;
;
; DRIVE TABLE
DRVTBL:FCB 4,4,2,2
;
;
UNSEL:EQU *
 BSR CLKLO
 PSHS A
 LDA #$FF
 STA PRT1
 PULS A
 RTS
;
;
CLKHI:EQU *
 PSHS A
 LDA #$40
CLKHI1:STA PRT0
 PULS A
 BSR WAIT
 RTS
;
WAIT:EQU *
;       PSHS A
;       LDA  #1
;WAIT1: DECA
;       BNE  WAIT1
;       PULS A
 RTS
;
CLKLO:EQU *
 PSHS A
 CLRA
 BRA CLKHI1
;
;
SPIBIT:EQU *
 PSHS B
 LDB SS
 ROLA
 BCC SPIB1
 ORB #$01
SPIB1:EQU *
 STB PRT1
 BSR CLKHI
 PSHS A,B
 LDB SPIIN
 LDA PRT2
 RORA
 RORA
 RORA
 RORA
 ROLB
 STB SPIIN
 PULS A,B
 BSR CLKLO
 PULS B
 RTS
;
SPI:EQU *
 BSR SPIBIT
 BSR SPIBIT
 BSR SPIBIT
 BSR SPIBIT
 BSR SPIBIT
 BSR SPIBIT
 BSR SPIBIT
 BSR SPIBIT
 RTS
;
;
;
;
SPIWT:EQU *
 RTS
;
SSSEL:EQU *
 BSR UNSEL
 PSHS A,B
 LDA 7,X
 LEAY DRVTBL,PCR
 LEAY A,Y
 LDA ,Y
 STA SS
 PULS A,B
 RTS
;
;
RDYCHK:EQU *
 BSR SSSEL
 LDA #STRD
 BSR SPI
 CLRA
 BSR SPI
 CLRA
 BSR SPI
 LDA SPIIN
 LBSR UNSEL
 RTS
;
;
; 4 BYTE COMMAND
;
CMD4:EQU *
 BSR SSSEL
;
 LBSR SPI
;      
;
TST1:EQU *
 LDB 5,X
 DECB
 LDY #PNUM
 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
;
 PSHS A,B
 LDA 7,X
 CMPA #0
 BEQ CMDL1
 CMPA #2
 BEQ CMDL1
 PULS A,B
 ADDD #1280
 BRA CMDL2
CMDL1:EQU *
 PULS A,B
;
;
CMDL2:EQU *
 LSLB
 ROLA
;
 LSLB
 ROLA
;
 ANDA #$3F
;
 PSHS B
 STA PAGE_H
 LBSR SPI
 PULS A
 STA PAGE_L
 LBSR SPI
;
 CLRA
 LBSR SPI
;
;
 LBSR UNSEL
 RTS
;
;
;PNUM: FCB  0
;PNUML:FCB  0
;
;
CMD:EQU *
 LBSR SSSEL
;
 LBSR SPI
 CLRA
 LBSR SPI
 CLRA
 LBSR SPI
 CLRA
 LBSR SPI
;
 RTS
;
;
;
READ:EQU *
 LDA #FTOB
 BSR CMD4
READL2:LBSR RDYCHK
 CMPA #$AC
 BNE READL2
 LDA #B1RD
 BSR CMD
 CLRB
 LDY 2,X
READL1:EQU *
 CLRA
 LBSR SPI
 LDA SPIIN
 STA ,Y+
 DECB
 BNE READL1
 LBSR UNSEL
 CLRA
 RTS
;
;
WRITE:EQU *
 LDA #B1WT
 BSR CMD
 CLRB
 LDY 2,X
WTLP1:EQU *
 LDA ,Y+
 LBSR SPI
;
 DECB
 BNE WTLP1
;
 LBSR UNSEL
;
 LDA #BTOF
 LBSR CMD4
WTLP2:EQU *
 LBSR RDYCHK
 CMPA #$AC
 BNE WTLP2
;
 LDA #APRW
 LBSR CMD4
WTLP3:EQU *
 LBSR RDYCHK
 CMPA #$AC
 BNE WTLP3
;
 LBSR UNSEL
 CLRA
 RTS
ENDADR:EQU *
;
;
PUTC:EQU *
 PSHS A
 LEAX ,S
 LDD #1
 BSR PUTS
 PULS A
 RTS
;
;
PUTS:EQU *
 TFR X,Y
 LEAS -6,S
 LEAX ,S
 PSHS A,B
 LDA #20
 STA ,X
 CLR 1,X
 STY 2,X
 PULS A,B
 STD 4,X
 JSR $F17D
 LEAS 6,S
 RTS
;
 LDA #$31
 BSR PUTC
 RTS
;
;
;
;      INTERRUPT VECTOR
;
 ORG $2FF0
 FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
 FCB $FF,$FF,$FF,$FF,$FF,$FF,$FE,$00






最新の画像もっと見る

コメントを投稿