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するとパスがすべて閉じるので、"/"を開くようにするのが良いかもしれません。