マイコン独立大作戦
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
前へ
次へ
ホームページトップへ戻る