2015年5月14日木曜日

フロッピーに保存したマシン語ファイルの情報

マシン語をバックアップする場合、開始アドレスとデータサイズが必要。
フロッピーにマシン語ファイルを保存した場合、アドレスとサイズを調べるのは難しい。

5インチ2Dのアドレスとサイズを表示するプログラムをパソピア7で組んでみた。
10 'XPAC2 Machine Language File Information (C) 2015 zak
20 INPUT"Device Number? (1 or 2) ",DEVICE
30 FIELD#0,255 AS FAT$
40 FOR SECTOR=1 TO 12
50   FOR I=0 TO 15
60     T1$=DSKI$(DEVICE,0,18,SECTOR)
70     M=ASC(MID$(FAT$,I*16+1,1))
80     IF (M<>0) AND (M<>255) AND(M<>58) THEN GOSUB 130
90   NEXT I
100 NEXT SECTOR
110 END
120 'Find File
130 PRINT MID$(FAT$,I*16+1,9);" ";
140 ATTR=ASC(MID$(FAT$,I*16+10,1))
150 IF (ATTR=&H80) OR (ATTR=&H81) OR (ATTR=&H90) THEN PRINT"[BASIC]";
160 IF (ATTR=&H01) OR (ATTR=&H11) THEN PRINT"[MachineLanguage]";:GOSUB 200
170 PRINT""
180 RETURN
190 'Find Machine Language
200 CLUSTER=ASC(MID$(FAT$,I*16+11,1))
210 TRACK=CLUSTER\4
220 TSECTOR=((CLUSTER MOD 4)\2)*8+1
230 THEAD=CLUSTER MOD 2
240 FIELD#0,4 AS SIZE$
250 T2$=DSKI$(DEVICE,THEAD,TRACK,TSECTOR)
260 START=ASC(MID$(SIZE$,2,1))*256+ASC(MID$(SIZE$,1,1))
270 LAST=ASC(MID$(SIZE$,4,1))*256+ASC(MID$(SIZE$,3,1))
280 PRINT" START:&H";HEX$(START);
290 PRINT" SIZE:&H";HEX$(LAST-START);
300 RETURN

起動時の「How may disk drives」に、ドライブ数を指定。
「width 80」にしておいたほうが見やすい。

実行すると、確認するフロッピーの入っているドライブ番号を聞かれるので入力。

マシン語の場合は、開始アドレスと記録サイズが16進数で表示される。

フロッピーに保存できる最大ファイル数(192)を全てチェックするまで時間がかかるので、気長にお待ち下さい。。

これがわかれば、FDのファイルをXPAC2にデータ保存しやすくなります。


0 件のコメント:

コメントを投稿