0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CH376SのパラレルIO

Last updated at Posted at 2021-07-16

CH376SのパラレルIOでのアクセス方法は下記のように行います。

8Bitポートは2つあり、データとコマンドになります。

コマンドを書き込んでデータの読み書きをします。

	CMD	EQU	0FDH
	DATA	EQU	0FCH

WRITECMD:
	OUT	(CMD), A
	RET

WRITEDATA:
	OUT	(DATA), A
	RET

READDATA:
	IN	A, (DATA)
	RET

READCMD:
	IN	A, (CMD)
	RET

たとえばGET_IC_VER(01H)の場合、コマンド書き込むとデータポートでバージョンが読めます。

	GET_IC_VER	EQU	01H

	LD	A, GET_IC_VER
	CALL	WRITECMD
	CALL	READCMD

SET_USB_MODE(15H)の場合はデータポートにモードを書き込みます。

データーシートを見るとDISK_CONNECT(30H)以降はProduce
interruptionとなっています。これらは割り込みで処理が終わった事が確認できます。

割り込みを使っていない場合は、コマンドポートを読むと割り込みの状態が7ビット目で確認できるので、これが0になって割り込みが上がった事を確認してRD_USB_DATA0(27H)でデータを読みます。

WAITINT:
	CALL	READCMD
	AND	A,80H
	JP	NZ, WAITINT
	RET

RD_USB_DATA0は最初バイトがデータ数を表しているので、その数だけ読みます。

RD_USB_DATA0でのデータ読み込みは1バイトでサイズが指定されるので、255が最大になります。

BYTE_READで255以上のデータを読み込む場合は最初にBYTE_READとRD_USB_DATA0で255バイト読み込み、次にBYTE_RD_GOとRD_USB_DATA0で次のデータを読み込みます。256のデータを読み込む場合は最初に255バイト読めて次に1バイトが読めます。

255バイト以下のリクエストでも、BYTE_RD_GOしないとおかしな動作になります。

"/"をFILE_OPENしてBYTE_READするとディレクトリのエントリーが読めます。"/"と"FILE.TXT"か"/FILE.TXT"をFILE_OPENしてBYTE_READするとファイルの中身が読めます。
"/"をFILE_OPENしてディレクトリの"DEMO"をFILE_OPENして"FOO.CMT"をFILE_OPENするとファイルの中身が読めます。この後FILE_CLOSEするとパスがすべて閉じるので、"/"を開くようにするのが良いかもしれません。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?