エミュレータのディスクイメージを操作するための調査中。
137Byte×32Sector×77トラックをなんとなくテキスト化してみたら、
Track0~5とTrack6~76でフォーマットが違う。
なんだろう?と思いつつグーグル先生に頼っていたら、こういうのを発見した。
https://deramp.com/downloads/mfe_archive/010-S100%20Computers%20and%20Boards/00-MITS/40-Software/DSK%20Disk%20Images/Altair%20cpm%20Disk%20Images/Burcon%20(MITS)%20CPM.pdf
となると、Track6からデータなんだろうか?
見た目では、Track2にディレクトリ情報があるように見えるのでそれも違うだろう。
答えはCP/MのDPBに書いてあるらしい。
あれこれ調べたら、DPBはCP/MのBDOSで定義しているらしく、実装によって
さまざまな定義になっているとか。
CP/Mは「8インチ片面単密度IBMフォーマット」で統一されている、と勝手に
思っていたのだけど、どうやら違うらしい。(でなければ137バイトなんて出てこない)
cpmtoolsというのを見つけだけど、なるほどこれは大変だ・・・。
MS-DOS(PC-DOS)でフロッピーのフォーマットを固定化できたのはIBMの功績、なのだろう。
で、ESP32のAltair8800エミュでのDPBをどうやって調べる?ということに話が戻る・・。
CP/Mを知ったころにはナゾなシステムコール「DPBのアドレスを返す」のはここで使う
のか、と。。。
とはいえ、このシステムコールってなんの用途で存在しているのだろう??
BDOS上のテーブルだから書き換えられないだろうし、どういう用途があるのだろう?
とはいえ、今は目的のものがそこにあるので、呼ばない手はない。
だが、i8080アセンブラでCP/M上のプログラムを作るのか・・・。
Z-80/i8080のことでお世話になっている中日電工さんで、CP/Mの解説を以前されていた
ことを思い出し、過去情報を読んでいると、そのものずばりな記事がありました。
https://userweb.alles.or.jp/chunichidenko/cpm_mycom96.html
すばらしい。実行アドレスが8100なだけで完全に目的の動作です。
JPアドレスで0x81か0x80になっているところだけ0x01か0x00にすればいいだけなのです。
ESP32のAltiar8800を起動して、C:ドライブに移動して、DDTを起動。
s100[Enter]して、ひたすら16進コードをうちこみました。
(DDTの入力モード終了は16進コードのかわりに . とだけ。DDTの終了はg0[Enter]みたい)
save 1 FTST16.COM
とやると、0x0100から1ブロックだけC:に保存してくれるはずです(確信ないけど)。
注意深く16進コードを打ち込んだ効果か、一発でDPBが表示されました!
(このあと、せっかく保存したFTST16.COMをPCGET.COMのテストで壊してしまい
再度入力したのですが、注意力散漫になったせいか正常動作しませんでした。。)
.Net3.5が要るらしい。 orz 一回目のインストールの際に「.Net3.5が必要」ってダイアログが山ほど出てきた。 .Net3.5が必要な場合のエラーダイアログはどうして「ダウンロードしてインストールせよ」なんだろう? 参考にした http://otndnld.oracle.co.jp/easy/oracle11gr1/windows/pdf/SelfStudy_01_win.pdf だと、LISTNERの追加設定(?)が必要そうに書いてあるけど、やってみたら「すでに作成済み」ってなる。 それを信じて進めてみたらどうにもうまくいかない。。。 OracleDBをGUIで操作しよう、っていうのが間違いのようか気がする (逆にSQLserverをCLIでやるのは狂気の沙汰だと思う)。 一旦、アンインストールすることにして、スタートメニューにある「Universal Installer」 を実行してアンインストールしようとしたら「batファイルを実行せよ」というダイアログが。 ググりかたが悪かったのか、 「アンインストールはUniversal Installerからしかないぜ。その他の方法はどーなっても知らないぜHAHAHA」(意訳) と書いてるOracleさんしか見つからない。 どっちを信じたらとも思ったが、目の前のほうが正しいだろうという考えに従いそのバッチ を実行しました。(Universal Installerさんは何度やっても消そうともしてくれないし) バッチ実行後、しばらく放置したら終わったらしい。 Oracleさんがインストールされていたっぽいディレクトリもだいたい消えていた。 消えたよね?ってことで一度再起動してから、Oracle11gのインストールを再び実行。 エラーは出ずに無事終了。 (.Net3.5がインストール済みだったからかな??) sqlplus / as sysdba は問題ない。でも、別PC(Linux機)からの接続はNG。 lsnrctl status コマンドの実行結果から、やはりlocalhost以外からの接続はLISTENしてない模様。 listener.oraをちょっと修正して、LISTNERサービスを再起動。 lsnrctl status を再度実行すると、IPアドレスの分も表示されたので、外部からも接続できるだろう...
コメント
コメントを投稿