CH376Sのテストコードを書いて動作確認してみました。
CMD EQU 0FDH
DATA EQU 0FCH
GET_IC_VER EQU 01H
RESET_ALL EQU 05H
CHECK_EXIST EQU 06H
SET_USB_MODE EQU 15H
GET_STATUS EQU 22H
RD_USB_DATA0 EQU 27H
SET_FILE_NAME EQU 2FH
DISK_CONNECT EQU 30H
DISK_MOUNT EQU 31H
FILE_OPEN EQU 32H
FILE_ERASE EQU 35H
FILE_CLOSE EQU 36H
DIR_INFO_READ EQU 37H
BYTE_READ EQU 3AH
DISK_CAPACITY EQU 3EH
DISK_QUERY EQU 3FH
PUT MACRO C
LD A, C
RST 18H
ENDM
START:
LD A, GET_IC_VER
CALL WRITECMD
CALL READDATA
CALL DISP
PUT ' '
LD A, CHECK_EXIST
CALL WRITECMD
LD A, 01H
CALL WRITEDATA
CALL READDATA
CALL DISP
PUT ' '
LD A,SET_USB_MODE
CALL WRITECMD
; LD A, 6
LD A, 5
CALL WRITEDATA
CALL READDATA
CALL DISP
PUT ' '
LD A, DISK_CONNECT
CALL INTRCMD
LD A, DISK_MOUNT
CALL INTRCMD
LD HL, FILENAME
LD A, SET_FILE_NAME
CALL WRITECMD
FSLOOP:
LD A, (HL)
AND A, A
JP Z, FINFS
CALL WRITEDATA
INC HL
JP FSLOOP
FINFS:
CALL WRITEDATA
LD A, FILE_OPEN
CALL INTRCMD
LD A, BYTE_READ
CALL WRITECMD
LD A, 10
CALL WRITEDATA
LD A, 0
CALL WRITEDATA
CALL WAITINT
LD A, GET_STATUS
CALL WRITECMD
CALL READDATA
CALL DISP
PUT ' '
CALL READUSB
LD A, FILE_CLOSE
CALL WRITECMD
LD A, 0
CALL WRITEDATA
CALL WAITINT
LD A, GET_STATUS
CALL WRITECMD
CALL READDATA
CALL DISP
PUT ' '
CALL READUSB
JP 05C66H
FILENAME:
DB "/ABC.TXT",0
WAITINT:
CALL READCMD
AND A,80H
JP NZ, WAITINT
RET
READUSB:
LD A, RD_USB_DATA0
CALL WRITECMD
CALL READDATA
LD C, A
CALL DISP
PUT '['
LD A, C
OR A, A
JP Z, L02
LO1:
CALL READDATA
CALL DISP
PUT ' '
DEC C
JP NZ, LO1
L02:
PUT ']'
RET
DISP:
PUSH BC
LD C, A
SRL A
SRL A
SRL A
SRL A
CALL DESP16
LD A, C
AND A, 0FH
CALL DESP16
POP BC
RET
DESP16:
CP 0AH
JP M, L1
ADD A, 'A' - 10
RST 18H
RET
L1:
ADD A, '0'
RST 18H
RET
WRITECMD:
OUT (CMD), A
RET
WRITEDATA:
OUT (DATA), A
RET
READDATA:
IN A, (DATA)
RET
READCMD:
IN A, (CMD)
RET
MDELAY:
PUSH BC
DLOOP:
LD B,99H
DL1: NOP
DJNZ DL1
DEC C
JR NZ,DLOOP
POP BC
RET
INTRCMD:
CALL WRITECMD
CALL WAITINT
LD A, GET_STATUS
CALL WRITECMD
CALL READDATA
CALL DISP
PUT ' '
CALL READUSB
RET
秀丸で書いて、zmacとld80でintelhexにして、DumpListEditorでwavにして、Windows Media PlayerでPC-8001に読み込ませました。
USBメモリをFATにする場合2G以下であればFAT16になりますが、それ以上の場合にはFAT32になります。メディア全体をFATにすることもできますが、MBR仕様の4つのパーティションにすることもできます。最近だとGPTという仕様もあるようです。
またUSBメモリとの相性もあるような感じがしますが、あまり真剣に調べていません。
SD-DOSをベースにCH376でもディスクベーシックのコマンドが使えるように作り始めました。
最初CH-DOSといっていたのですが、パトレーバーぽくCHOSにしてみました。