2017.3.28
前へ
次へ
ホームページトップへ戻る

マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[総合第36回]


●Zディレクトリ(2)

前回からの続きです。
前回はZディレクトリ(サブディレクトリ)の先頭セクタを読んで、その内容を表示しました。
下に再掲します。

>cm 8003
8003 00-
8004 02-03
8005 E7-07
8006 2A-
>jp 8000
>dm 8200,83ff
8200  2E 20 20 20 20 20 20 20-20 20 20 10 00 00 00 00  .          .....
8210  00 00 00 00 00 00 00 00-00 00 02 00 00 00 00 00  ................
8220  2E 2E 20 20 20 20 20 20-20 20 20 10 00 00 00 00  ..         .....
8230  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8240  53 54 41 52 54 52 45 4B-42 41 53 20 00 5B 49 B9  STARTREKBAS .[Iケ
8250  70 4A 70 4A 00 00 AB 89-1C 3B 44 01 15 4F 00 00  pJpJ..ォ..;D..O..
8260  41 4D 00 62 00 61 00 73-00 69 00 0F 00 DC 63 00  AM.b.a.s.i...ワc.
8270  2E 00 63 00 6F 00 6D 00-00 00 00 00 FF FF FF FF  ..c.o.m.........
8280  4D 42 41 53 49 43 20 20-43 4F 4D 20 00 8D 49 B9  MBASIC  COM ..Iケ
8290  70 4A 70 4A 00 00 2D 94-45 40 45 01 00 5F 00 00  pJpJ..-.E@E.._..
82A0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
82B0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
82C0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
82D0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
82E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
82F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8300  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8310  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8320  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8330  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8340  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8350  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8360  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8370  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8380  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8390  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83A0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83B0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83C0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83D0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
83F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................

前回も書きましたように、サブディレクトリのセクタはメインディレクトリ(ルートディレクトリ)と同じ形式になっています。
ただしメインディレクトリ(ルートディレクトリ)と異なっているところがあります。
サブディレクトリには必ず「.」「..」の2つのファイル名を記載します。
「.」はそのサブディレクトリ自身を示します。
そのクラスタhハ置には自分自身のクラスタaiこの例では0002)を書きます。
その次の「..」はひとつ上の階層のディレクトリ(親ディレクトリ)を示します。
親ディレクトリがルートディレクトリの場合には、そのクラスタbヘ0000とします。

それからもうひとつ、説明をしておかなければならないことがあります。
お気付きの方もいらっしゃるかと思います。
上のデータには変な名前のファイルがあります。
AM.b.a.s.i...というファイル名です。

FAT16ファイルシステムでは昔のMSDOSやCP/Mのファイル名のルールに合わないものも扱えます。
CP/Mや昔のMSDOSのファイル名は半角英数と一部の記号からなる8文字以内で、同じく拡張子は3文字以内と決められていました。
また英文字はA〜Zの大文字のみ使用できました(小文字を入力しても大文字に変換して登録されます)。
FAT16ファイルシステムも昔のルールを踏襲していますからファイル名のエリアは名前と拡張子を合わせて11バイトになっています。
そのままでは8文字を越える名前や小文字などが扱えませんので、そこをクリアするようにFAT16では拡張したルールが使われています。
そのルールについてはここでは詳しくは書きません(私も詳しくは知りません)。
実はAM.b.a.s.i...というファイル名はその下にあるMBASIC.COMを修飾しているのです。
MBASIC.COMが半角小文字を含むMbasic.comであることを示しています。
このエリアがそういう特殊なエリアであることは先頭から12バイト目に0Fが置かれていることでわかります。
0FはLong File Nameの修飾エリアであることを示します。

「Zディレクトリ」がFAT16フォーマットとZB3DOS(CP/M互換)フォーマットの橋渡しをするためのディレクトリであることについては、前にも説明をしました。
それではどのようにして、ZB3DOS(CP/M互換DOS)の側からFAT16であるZディレクトリをアクセスしているのか、というあたりについても説明できるとよいのですが、とてもその時間がありません。
またまた尻切れトンボですけれど、FAT16のディレクトリ構造についてはこのあたりで一旦説明を終ることにいたします。

●「STARTREK」ロード時の変なメッセージについて

このことについては[第32回]で書きました。
MBASICを起動して「STARTREK」をロードしたところ、Direct statement in file というメッセージが表示されました。
MBASICのBASICプログラムは行番号をつけて記述します。
行番号をつけないで命令を入力すると「Direct command」と解釈されて直ちに実行されます。
ファイルロードでは全ての行に行番号がついているはずなのですが、上のメッセージはファイルロードで行番号がついていない行がみつかった、ということを意味しているようです。
しかしLISTコマンドでプログラムを表示させてみますとちゃんと最後まで表示されますし、RUNコマンドを入力するとまともに実行されます。
さては…。
ファイルの最後にゴミがついているのでは?
と疑いました。
そもそもこのところ何回かセクタリードプログラムについて書いてきた目的は、実はそこのところにありました。

下はZB3DOS(CP/M互換DOS)の仮想Aドライブのディレクトリです。

>cm 8003
8003 00-
8004 13-12
8005 07-87
8006 2A-
>jp 8000
>dm 8200,83ff
8200  00 4D 42 41 53 49 43 20-20 43 4F 4D 00 00 00 80  .MBASIC  COM....
8210  02 00 03 00 04 00 05 00-06 00 07 00 08 00 09 00  ................
8220  00 4D 42 41 53 49 43 20-20 43 4F 4D 01 00 00 3F  .MBASIC  COM...?
8230  0A 00 0B 00 0C 00 0D 00-00 00 00 00 00 00 00 00  ................
8240  00 53 54 41 52 54 52 45-4B 42 41 53 00 00 00 80  .STARTREKBAS....
8250  0E 00 0F 00 10 00 11 00-12 00 13 00 14 00 15 00  ................
8260  00 53 54 41 52 54 52 45-4B 42 41 53 01 00 00 1F  .STARTREKBAS....
8270  16 00 17 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8280  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8290  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
82A0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
82B0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
82C0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
82D0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
82E0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
82F0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8300  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8310  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8320  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8330  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8340  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8350  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8360  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8370  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8380  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8390  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83A0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83B0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83C0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83D0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83E0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83F0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................

SDカードでの仮想AドライブはクラスタbS0〜7Fに割り当てています。
その先頭の8セクタがCP/Mのディレクトリエリアです。
ややこしいのですがここでいう8セクタはFAT16システムでのセクタ(512バイト)でCP/Mの1セクタは128バイトですから、CP/Mのセクタでいうと32セクタあることになります。
このSDカードの場合、計算するとクラスタ#40の最初のセクタはbP287になります。
それで1287を置数してセクタリードプログラムを実行しました。
128バイト(CP/Mの1セクタ)だけが使用されていて、MBASIC.COMとSTARTREK.BASにそれぞれ2ファイル名分のエリアが割り当てられています。
FAT16システムによく似ていますが、ここはCP/Mのルールになっています。
FAT16では64セクタをひとまとめにして、クラスタという単位でファイルを扱います。
それと同じように(実はCP/Mのほうが先発なのでMSDOSのほうがCP/Mに似ているというべきでしょう)、CP/Mでは16セクタ(1セクタは128バイト)をひとまとめにしたブロックという単位で扱います。
ディレクトリにはドライブの先頭の2ブロック(bO、bP)を割り当てますから、データ領域は3ブロック目(ブロックbQ)からになります。
おや、そんなところもMSDOS(FAT16)はCP/Mと似ていますねえ。
当時はCP/Mが全盛でMicrosoftはそれを参考にしてMSDOSを作ったといわれていますが、なるほどと合点してしまいますね。
MBASIC.COMの2行目のところを見ると02 00、03 00、となっていてブロックbO002からデータエリアが始まっていることがわかります。

さてそれで問題のSTARTREK.BASですが、その終わりのセクタを読んでみることにします。
STARTREK.BASの終わりは0017ブロックになっています。
0000ブロックがセクタbO000〜000Fになりますから、0017ブロックはbO170〜017Fセクタになります。
これはCP/MのセクタですからFAT16のセクタに換算すると4で割って005C〜005Fになります。
先頭が1287ですから、目的のセクタはbP2E3〜12E6のいずれかということになります。

実はそれを絞り込むことができます。
2つ目のSTARTREK.BASの16バイト目を見ると1Fになっています。
これはこのエクステント(このファイル名のエリアのこと)で示されているデータ量は1Fセクタ(=31セクタ)であることを示しています。
そこには0016、0017の2ブロックがあって1ブロックは16セクタですから、0017ブロックの終わりから2番目のセクタまでデータがあることを意味しています。
ということは目的のセクタはbP2E6ということです。

セクタbP2E6を読んでみました。

>cm 8003
8003 00-
8004 00-12
8005 00-e6
8006 2A-
>jp 8000
>dm 8200,83ff
8200  20 47 32 24 3D 22 52 45-47 55 4C 55 53 22 3A 47   G2$="REGULUS":G
8210  4F 54 4F 20 39 32 31 30-0D 0A 39 31 39 30 20 47  OTO 9210..9190 G
8220  32 24 3D 22 41 52 43 54-55 52 55 53 22 3A 47 4F  2$="ARCTURUS":GO
8230  54 4F 20 39 32 31 30 0D-0A 39 32 30 30 20 47 32  TO 9210..9200 G2
8240  24 3D 22 53 50 49 43 41-22 0D 0A 39 32 31 30 20  $="SPICA"..9210 
8250  49 46 20 47 35 3C 3E 31-20 54 48 45 4E 20 4F 4E  IF G5<>1 THEN ON
8260  20 5A 35 20 47 4F 54 4F-20 39 32 33 30 2C 39 32   Z5 GOTO 9230,92
8270  34 30 2C 39 32 35 30 2C-39 32 36 30 2C 39 32 33  40,9250,9260,923
8280  30 2C 39 32 34 30 2C 39-32 35 30 2C 39 32 36 30  0,9240,9250,9260
8290  0D 0A 39 32 32 30 20 52-45 54 55 52 4E 0D 0A 39  ..9220 RETURN..9
82A0  32 33 30 20 47 32 24 3D-47 32 24 2B 22 20 49 22  230 G2$=G2$+" I"
82B0  3A 52 45 54 55 52 4E 0D-0A 39 32 34 30 20 47 32  :RETURN..9240 G2
82C0  24 3D 47 32 24 2B 22 20-49 49 22 3A 52 45 54 55  $=G2$+" II":RETU
82D0  52 4E 0D 0A 39 32 35 30-20 47 32 24 3D 47 32 24  RN..9250 G2$=G2$
82E0  2B 22 20 49 49 49 22 3A-52 45 54 55 52 4E 0D 0A  +" III":RETURN..
82F0  39 32 36 30 20 47 32 24-3D 47 32 24 2B 22 20 49  9260 G2$=G2$+" I
8300  56 22 3A 52 45 54 55 52-4E 0D 0A 39 39 39 39 20  V":RETURN..9999 
8310  45 4E 44 0D 0A 00 00 00-00 00 00 00 00 00 00 00  END.............
8320  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8330  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8340  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8350  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8360  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8370  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8380  4E 0D 0A 38 38 30 32 20-47 32 24 3D 22 44 41 4D  N..8802 G2$="DAM
8390  41 47 45 20 43 4F 4E 54-52 4F 4C 22 3A 52 45 54  AGE CONTROL":RET
83A0  55 52 4E 0D 0A 38 38 30-34 20 47 32 24 3D 22 53  URN..8804 G2$="S
83B0  48 49 45 4C 44 20 43 4F-4E 54 52 4F 4C 22 3A 52  HIELD CONTROL":R
83C0  45 54 55 52 4E 0D 0A 38-38 30 36 20 47 32 24 3D  ETURN..8806 G2$=
83D0  22 4C 49 42 52 41 52 59-2D 43 4F 4D 50 55 54 45  "LIBRARY-COMPUTE
83E0  52 22 3A 52 45 54 55 52-4E 0D 0A 38 38 33 30 20  R":RETURN..8830 
83F0  5A 31 3D 49 4E 54 28 5A-31 2B 2E 35 29 3A 5A 32  Z1=INT(Z1+.5):Z2

おお。
正解です。
最後の1セクタ(CP/Mの、128バイト)を残してファイルが終っています。
その最後の1セクタは前に読み込んだデータが残っていて、これがゴミになったようです。
これはシステム上仕方がないことで、最後の128バイトはどのみち読み込まれませんから…?

う?
ちょっと待てよ?
おかしいじゃありませんか。
データのある最後のセクタの余白は00で埋められています。
どこにもDirect statementなんて無いじゃありませんか。
一体MBASICはどこを読んだのでしょう?

ま、ま、しかし。
その疑問は後から出てきたことで、最初にここを見たときには「これだ!」と合点してしまって、それなら残りのセクタも00で埋めてしまえばよいはず、と思ってそのように00で埋めて別に用意したセクタライトプログラムで再書き込みしました。
そしてあらためてMBASICでSTARTREKをロードしてみましたら。
おかしなメッセージは表示されなくなりました。
めでたしめでたし、のはずだったのでありますが、やがて、おかしいじゃないの?ということに気が付いて、それから迷走が始まったのでありました。

なぜかといいますと、上にも書きましたように、ファイルの終わりのセクタはちゃんと情報としてエクステントに書かれているわけですから、それを越えて読むわけはないからと考えたからです。
さてはファイルロードプログラムにバグがあるのか?
ということで、もう疑心暗鬼です。
最初はBDOSのシーケンシャルリードを疑ってさんざあれこれ試してみたのですが結局わからず、最後にひょっとしたら、と思ってよくよく確認してみましたら、なんとMBASIC様はシーケンシャルリードなどお使いになられておりませんでした。
そんなものはいらぬ。
わしはセクタリード1本でやるわい、とおっしゃっていらっしゃいました。

そのあたりからようやく謎が解けてまいりまして、結局わかりましたことは、おそらくMBASICはセクタを偶数個単位で(あるいはブロック単位か?)で一気に読み込んでいるようです。
それでファイルの終わりを越えてゴミまで読んでしまうようです。
うむむ。
そういうことなら、ということでSDカードインターフェースのプログラムに工夫を加えて、新しいセクタにファイルを書き込むときに、セクタの残りの余白部分にはCP/Mフォーマットでの未使用を示す、E5を書き込むようにしました。

>dm 8200,83ff
8200  20 47 32 24 3D 22 52 45-47 55 4C 55 53 22 3A 47   G2$="REGULUS":G
8210  4F 54 4F 20 39 32 31 30-0D 0A 39 31 39 30 20 47  OTO 9210..9190 G
8220  32 24 3D 22 41 52 43 54-55 52 55 53 22 3A 47 4F  2$="ARCTURUS":GO
8230  54 4F 20 39 32 31 30 0D-0A 39 32 30 30 20 47 32  TO 9210..9200 G2
8240  24 3D 22 53 50 49 43 41-22 0D 0A 39 32 31 30 20  $="SPICA"..9210 
8250  49 46 20 47 35 3C 3E 31-20 54 48 45 4E 20 4F 4E  IF G5<>1 THEN ON
8260  20 5A 35 20 47 4F 54 4F-20 39 32 33 30 2C 39 32   Z5 GOTO 9230,92
8270  34 30 2C 39 32 35 30 2C-39 32 36 30 2C 39 32 33  40,9250,9260,923
8280  30 2C 39 32 34 30 2C 39-32 35 30 2C 39 32 36 30  0,9240,9250,9260
8290  0D 0A 39 32 32 30 20 52-45 54 55 52 4E 0D 0A 39  ..9220 RETURN..9
82A0  32 33 30 20 47 32 24 3D-47 32 24 2B 22 20 49 22  230 G2$=G2$+" I"
82B0  3A 52 45 54 55 52 4E 0D-0A 39 32 34 30 20 47 32  :RETURN..9240 G2
82C0  24 3D 47 32 24 2B 22 20-49 49 22 3A 52 45 54 55  $=G2$+" II":RETU
82D0  52 4E 0D 0A 39 32 35 30-20 47 32 24 3D 47 32 24  RN..9250 G2$=G2$
82E0  2B 22 20 49 49 49 22 3A-52 45 54 55 52 4E 0D 0A  +" III":RETURN..
82F0  39 32 36 30 20 47 32 24-3D 47 32 24 2B 22 20 49  9260 G2$=G2$+" I
8300  56 22 3A 52 45 54 55 52-4E 0D 0A 39 39 39 39 20  V":RETURN..9999 
8310  45 4E 44 0D 0A 00 00 00-00 00 00 00 00 00 00 00  END.............
8320  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8330  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8340  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8350  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8360  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8370  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8380  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8390  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83A0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83B0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83C0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83D0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83E0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83F0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................

ところがMBASIC様はこれも気に入らないようで、そのように直したSTARTREKをロードしましたら、ロード後のRUN、LISTなどのコマンド入力で最初の1回はどういうわけかSyntax errorが表示されます。
2回コマンドを入力すれば2回目からは受け付けられますから実用上は問題は無い、のですけれど。

結局一番よいのはファイルの終わりにファイルエンドマーク(1A)を追記することでした。

>dm 8200,83ff
8200  20 47 32 24 3D 22 52 45-47 55 4C 55 53 22 3A 47   G2$="REGULUS":G
8210  4F 54 4F 20 39 32 31 30-0D 0A 39 31 39 30 20 47  OTO 9210..9190 G
8220  32 24 3D 22 41 52 43 54-55 52 55 53 22 3A 47 4F  2$="ARCTURUS":GO
8230  54 4F 20 39 32 31 30 0D-0A 39 32 30 30 20 47 32  TO 9210..9200 G2
8240  24 3D 22 53 50 49 43 41-22 0D 0A 39 32 31 30 20  $="SPICA"..9210 
8250  49 46 20 47 35 3C 3E 31-20 54 48 45 4E 20 4F 4E  IF G5<>1 THEN ON
8260  20 5A 35 20 47 4F 54 4F-20 39 32 33 30 2C 39 32   Z5 GOTO 9230,92
8270  34 30 2C 39 32 35 30 2C-39 32 36 30 2C 39 32 33  40,9250,9260,923
8280  30 2C 39 32 34 30 2C 39-32 35 30 2C 39 32 36 30  0,9240,9250,9260
8290  0D 0A 39 32 32 30 20 52-45 54 55 52 4E 0D 0A 39  ..9220 RETURN..9
82A0  32 33 30 20 47 32 24 3D-47 32 24 2B 22 20 49 22  230 G2$=G2$+" I"
82B0  3A 52 45 54 55 52 4E 0D-0A 39 32 34 30 20 47 32  :RETURN..9240 G2
82C0  24 3D 47 32 24 2B 22 20-49 49 22 3A 52 45 54 55  $=G2$+" II":RETU
82D0  52 4E 0D 0A 39 32 35 30-20 47 32 24 3D 47 32 24  RN..9250 G2$=G2$
82E0  2B 22 20 49 49 49 22 3A-52 45 54 55 52 4E 0D 0A  +" III":RETURN..
82F0  39 32 36 30 20 47 32 24-3D 47 32 24 2B 22 20 49  9260 G2$=G2$+" I
8300  56 22 3A 52 45 54 55 52-4E 0D 0A 39 39 39 39 20  V":RETURN..9999 
8310  45 4E 44 0D 0A 1A 00 00-00 00 00 00 00 00 00 00  END.............
8320  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8330  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8340  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8350  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8360  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8370  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
8380  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
8390  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83A0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83B0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83C0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83D0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83E0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................
83F0  E5 E5 E5 E5 E5 E5 E5 E5-E5 E5 E5 E5 E5 E5 E5 E5  ................


念のためインターネットからダウンロードしたもともとのSTARTREKファイルを調べてみましたら、ファイルの終わりの余白は1Aで埋められていました。
どうやらWindowsでファイルコピーをすると1Aを全部00で置き換えてしまうようです。
全くもって余計なことを…(ここで舌打ちを)。

このために浪費してしまった2日間がなんとも残念でありました。

CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第36回]
2017.3.28upload

前へ
次へ
ホームページトップへ戻る