LoginSignup
0
0

More than 1 year has passed since last update.

CH376のテストコード

Last updated at Posted at 2021-07-18

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に読み込ませました。

DLE.png

USBメモリをFATにする場合2G以下であればFAT16になりますが、それ以上の場合にはFAT32になります。メディア全体をFATにすることもできますが、MBR仕様の4つのパーティションにすることもできます。最近だとGPTという仕様もあるようです。

またUSBメモリとの相性もあるような感じがしますが、あまり真剣に調べていません。

SD-DOSをベースにCH376でもディスクベーシックのコマンドが使えるように作り始めました。

最初CH-DOSといっていたのですが、パトレーバーぽくCHOSにしてみました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0