日本橋電気街徘徊日誌

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

OSC2019大阪に富士通マイクロを研究する会としてコミュニティ参加しました。

2019-01-27 23:23:47 | 電子工作

OSC2019大阪に富士通マイクロを研究する会としてコミュニティ参加しました。

周知が不十分なこともあり、これを目当てにきていただいた方はほぼいませんでしたが、

年配の方を中心に興味をしめしていただけたようでよかったと思います。

あと、なんとなくそんな気はしていたのですが、当時FM-7にFDDを追加するよりは

型落ちで安くなったディスク付き後継機種を購入することで移行してしまうことが

多かったことが聞き取りできました。(私も中古のFM-7で一年ほどカセットで

遊び倒したあたは型落ちの77AV2を購入しました)

ソフトはブルーフォックスと、開発系のイベントということでDOH-CとDRACO-Cをもっていきました。

 

FM-7を2台動かして、プリンタポート用SPIフラッシュメモリアダプタ・漢字ROM・FDCエミュレータの

動作展示を行いましたが、基本的にはソフトウェアのイベントのためなのかなんなのかさっぱりわからない

というような方も多かったような印象でした。

 

今後の予定としてはRS232カードやSCSIカードの作成、FM-7へのメモリマッピングレジスタを追加して

OS-9 L2を動かすとかありますが、基本的に長いスパンでの開発になってるので次のイベントで何が実現できるのか。

やはりイベントに出る以上は何かしら前回とは違うものを出したいものです。

 


FM-7のDISK BASICをSPIフラッシュメモリに持ち込むためのツール

2019-01-05 02:17:50 | 電子工作


DISK BASICは結局のところトラック1の4キロバイトが本体で
トラック0の一部がIPLとかローダになってます。
トラック2の先頭がFATでトラック2の残りとトラック3は
ディレクトリエントリとなっています。
以下はDISK BASICをカセットに保存するツールとなりますが
430行目の0Aを09に変更するとDISK BASICを書き込むツールとなります。
ところで1/26(土)にOSC2019大阪に参加を予定しています。
大阪でFM-7の稼動環境を用意できる方は当日声をかけていただけたら
いいことがあるかもしれません。


100 ' TR READ
110 GOSUB 340
120 GOSUB 170
130 SAVEM "CAS0:DB",&H2000,&H5FFF
140 END
150 '
160 '
170 AD=&H20
180 FOR CY=0 TO 1
190   FOR SI=0 TO 1
200     FOR SC=1 TO 16
210       POKE &H1F0A,AD
220       POKE &H1F0C,CY
230       POKE &H1F0D,SC
240       POKE &H1F0E,SI
250       POKE &H1F0F,1
260       PRINT TR;SI;SC
270       EXEC &H1F00
280       AD=AD+1
290     NEXT
300   NEXT
310 NEXT
320 RETURN
330 '
340 ADR=&H1F00
350 WHILE A$ <> "END"
360   READ A$
370   A=VAL("&H"+A$)
380   PRINT HEX$(A)
390   POKE ADR,A
400   ADR=ADR+1
410 WEND
420 RETURN
430 DATA 8E,1F,08,AD,FF,FB,FA,39,0A,00,20,00,END





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






SPIフラッシュメモリ用のBOOT ROMがそれなりに動くようになってきたので公開します。

2019-01-03 23:45:13 | 電子工作

夏にFM-7のプリンタポートにSPIフラッシュメモリを接続して、
そこから起動するブートROMを書いて、FM-7の環境を改善するような
記事を書きましたが、ハードウェア記事を書いてほぼ半年たちました。
夏にほぼ動いてたんですが、実際にROMを焼いて動かしてみると
電源オンでは動作せずに、いったんROM BASICを起動して、
ブートROMをディップスイッチで自作部分にきりかえてから
exec-512だと起動するといういやらしい状態で改善しないので
9月ぐらいには放り出した状態でした。
正月休みにまとまった時間をとれたので再度バグ取りに
チャレンジしたところ、根本的なところはよくわかりませんが
それらしく動作しだしたので公開します。
以下の512バイトをブートROMの空き部分の$600~$7FFに書き込んで
バンク3から電源オンでプリンタポートに接続したSPIフラッシュメモリ
(AT45DB161D専用です)から起動します。

000000 20 09 4f 12 39 16 01 74 16 01 4d 7f fd 00 4a b7
000010 fd 01 86 fd 1f 8b 10 ce fc 7f 17 00 55 d6 04 c5
000020 02 26 05 be fb fc 20 1d 86 31 17 01 7f 30 8d 00
000030 35 17 01 24 86 32 17 01 73 8e 01 00 4f 1f 8b 7e
000040 01 00 be fb fe 4f 1f 8b ce fd 06 8d 0e ce fd 24
000050 86 04 8d 07 33 42 4a 26 f9 6e 84 6f 41 6f 41 6f
000060 41 c6 40 e7 41 39 0a 00 01 00 00 01 00 00 04 04
000070 02 02 8d 17 34 02 86 ff b7 fd 01 35 02 39 34 02
000080 86 40 b7 fd 00 35 02 8d 01 39 39 34 02 4f 20 f2
000090 34 04 f6 fc 29 49 24 02 ca 01 f7 fd 01 8d df 34
0000a0 06 f6 fc 2a b6 fd 02 46 46 46 46 59 f7 fc 2a 35
0000b0 06 8d d8 35 04 39 8d d8 8d d6 8d d4 8d d2 8d d0
0000c0 8d ce 8d cc 8d ca 39 39 8d a8 34 06 a6 07 31 8d
0000d0 ff 9c 31 a6 a6 a4 b7 fc 29 35 06 39 8d ea 86 d7
0000e0 8d d4 4f 8d d1 4f 8d ce b6 fc 2a 17 ff 84 39 8d
0000f0 d7 17 ff c2 e6 05 5a 10 8e fc 2b 6f 20 e7 21 e6
000100 06 86 10 3d e3 a4 ed a4 e6 04 86 20 3d e3 a4 c3
000110 00 80 34 06 a6 07 81 00 27 0b 81 02 27 07 35 06
000120 c3 05 00 20 02 35 06 58 49 58 49 84 3f 34 04 b7
000130 fc 2d 17 ff 81 35 02 b7 fc 2e 17 ff 79 4f 17 ff
000140 75 17 ff 2e 39 17 ff 80 17 ff 6b 4f 17 ff 67 4f
000150 17 ff 63 4f 17 ff 5f 39 86 53 8d 93 17 ff 7d 81
000160 ac 26 f9 86 d1 8d de 5f 10 ae 02 4f 17 ff 47 b6
000170 fc 2a a7 a0 5a 26 f4 17 fe f8 4f 39 86 84 8d c5
000180 5f 10 ae 02 a6 a0 17 ff 2d 5a 26 f8 17 fe e3 86
000190 83 17 ff 5b 17 ff 45 81 ac 26 f9 86 58 17 ff 4f
0001a0 17 ff 39 81 ac 26 f9 17 fe c8 4f 39 34 02 30 e4
0001b0 cc 00 01 8d 03 35 02 39 1f 12 32 7a 30 e4 34 06
0001c0 86 14 a7 84 6f 01 10 af 02 35 06 ed 04 bd f1 7d
0001d0 32 66 39 86 31 8d d5 39 39 06 ed 06 bd f1 7d 32
0001e0 68 35 30 39 8e fe 00 1f 10 34 04 8d d1 35 02 8d
0001f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff fe 00


その後どのようにして環境を構築していくかというと
稼働環境からDISK BASICをテープにセーブして、
SPIフラッシュメモリを接続したFM-7にロードして
書き込んでいくという手順になりますが、手順の詳細や
サポート用のツールについては次回以降の記事に
書きます。