CH376というUSBメモリをSPIなどで読めるようにするモジュールを以前購入して部品箱に死蔵していました。
USBメモリのフォーマットはFATでFAT16やFAT32が読めます。
このチップはSPIのほかにシリアルや8Bit パラレルIOでもデータの処理ができます。
CH376はCH372の後継で、CH372はUSBデバイスになれるチップだったようです。CH376はホストとデバイスになれます。CH375という製品もあり、こちらはCH376同様にホストにもデバイスにもなれますが、FATの処理が無いようです。
これをPC-8001にパラレルIOで接続する事を思いつきました。
手元のモジュールはパラレルで使うときのジャンパーの設定はこうしました。
TTLのストックが無く秋葉にも行けないので、GALでアドレスデコードします。
title CH376S IO UNIT
pattern CHIO
revision A
author yamori813
date 07/13/21
chip chio gal6001
; The following pin list order mustly be followed strictly:
; 1. device pins 1 to 24
; 2. slmc 7 to slmc 0
; 3. buried feedback (OLMC 14) to buried feedback (OLMC 23)
; pins 1 2 3 4 5 6 7 8 9 10 11 12
i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 gnd
; pins 13 14 15 16 17 18 19 20 21 22 23 24
oclk o14 o15 o16 o17 o18 o19 o20 o21 o22 o23 vcc
; slmc7 slmc6 slmc5 slmc4 slmc3 slmc2 slmc1 slmc0
nc nc nc nc nc nc nc nc
; buried feedback to AND array from OLMCs.
; bur14 bur15 bur16 bur17 bur18 bur19 bur20 bur21 bur22 bur23
nc nc nc nc nc nc nc nc nc nc
; specify the User Electronic Signature (UES)
@ues chio
; 8 ues bits are used per character.
equations
; ILMC : asynchronous inputs.
; IOLMC : asynchronous feedback to AND array.
; SLMC : not used.
; OLMC 14-18 : asynchronous outputs (output always enabled).
; OLMC 19-23 : D-type registered outputs (output always enabled).
; buried feedback of OLMCs not used.
; asynch reset : not used (default is registers cannot be reset).
; RESET
;o14 = /i1
; RD = RD | IORQ
o14 = i2 | i3
; WR = IORQ | WR
o15 = i3 | i4
; CE ADDRESS A1-A7 FC(252),FD(253) 11111100 11111101
/o16 = /i5 & i6 & i7 & i8 & i9 & i10 & i11
; end of example 5
ispLEVERが使えなくなったのでVerilogではなくて古式ゆかしいEQNファイルです。
そもそもアドレスデコードごときにVerilogは大げさすぎます。
i14の接続を間違えていてチップが見えなかったのですが、確認して誤配線に気づきEQNファイルを修正しました。
以下をDumpListEditorでwavにしてPC-8001でCLOADします。
10 C=&HFD
20 D=&HFC
30 OUT C, 1
40 PRINT INP(D)
SD-DOSをポートできないか調べてみるつもりです。
アセンブラめんどくさいなと思って調べていたら、なんとすでにアセンブラのコードを書いている人がいましたが、初期化の部分しかないようです。
MSXにつなげてる人もいました。
Atariで使えるようにした人もいました。
おそらくCH376には8051系のCPUが入っているような気がします。PC-8001の純正のFDDにもZ80が入ったので8Bit CPU間でのデータ処理という事では同じ手法とも思えます。
PC-8001のBASICでUSBメモリのファイルを読み書きできるようになりました。