2025年3月12日水曜日

XPAC2のSDカード処理コマンドプロンプト

BASICで使い勝手良かったが、コマンド常駐型も作ってみたので公開。
今回はPasopia7と700専用。

以下BASICを実行すると、T-BASIC7のCOMコマンドをフックします。
100 'XPAC2 Command Prompt for Pasopia7/700 (C) 2025 zak
110 CLEAR ,&HEFFF

120 FOR I=&HF000 TO &HF0F1
130   READ A$
140   POKE I,VAL("&H"+A$)
150 NEXT I

160 H=&HF495
170 L=&HF494
180 IF PEEK(H)=&H53 AND PEEK(L)=&H84 THEN A=&HF0E3:CALL A:PRINT"COM Command Hooked." ELSE A=&HF0D7:CALL A:PRINT"COM Command Unhooked."
190 END

200 DATA F5,B7,28,05,F1,C3,84,53,F5,E5,D5,C5,3E,07,D3,1B
210 DATA 0E,05,CD,05,00,0E,2F,06,3E,CD,05,00,AF,67,57,5F
220 DATA D3,19,0E,01,CD,05,00,38,F9,FE,03,28,28,FE,08,28
230 DATA 2B,FE,0D,28,49,FE,20,38,E9,FE,F7,30,E5,47,7B,FE
240 DATA FE,30,DF,B7,20,01,60,0E,2F,CD,05,00,7B,D3,18,78
250 DATA D3,1A,1C,18,CD,C1,D1,E1,F1,C9,18,B9,7B,B7,28,C2
260 DATA 0E,06,CD,05,00,0E,2F,06,1D,CD,05,00,06,20,CD,05
270 DATA 00,06,1D,CD,05,00,0E,05,CD,05,00,1D,18,A4,0E,2F
280 DATA 06,0D,CD,05,00,06,0A,CD,05,00,7B,B7,28,87,7C,FE
290 DATA 45,28,C2,FE,65,28,BE,7B,D3,18,AF,D3,1A,57,5F,D3
300 DATA 18,3E,0F,D3,1B,0E,01,CD,05,00,FE,03,28,A7,DB,1A
310 DATA FE,F7,30,F1,0E,2F,7A,D3,19,7B,D3,18,DB,1A,B7,28
320 DATA 0A,47,CD,05,00,13,7A,D6,08,20,EB,06,0D,CD,05,00
330 DATA 06,0A,CD,05,00,18,83,F5,E5,D5,C5,21,84,53,22,94
340 DATA F4,18,0A,F5,E5,D5,C5,21,00,F0,22,94,F4,C1,D1,E1
350 DATA F1,C9
その後は「COM」コマンドでプロンプト「>」が表示され、SDコマンドの入力ができます。
1文字削除は「DEL」、終了は「e(xit)」コマンド or 「STOP」キー or 「CTRL+C」キー

RS-232C制御コマンド「COM(チャンネル番号)ON/OFF/STOP」もそのまま使えます。

常駐させずにプロンプトを利用する場合は、F008hから直接起動。
事前にCLEAR,&HEFFFを忘れずに。

バイナリからCOMフックする場合は、F0E3hをコール。
以降はCOMコマンドでプロンプト起動。

COMフックを解除する場合は、F0D7hをコール。
以降はCOMコマンドを入力してもエラーになります。


SCREEN 0で起動すると、スクロールも滑らかで気持ちよく操作できます。