ブートの仕組み解明
2024.09.24
CP/M移植後、その起動にはBASICを必要とした。
ちょうど良い具合にBIOSやCCPなどの配置アドレスがBASICのフリーエリアにあたり、
そこへBLOADで必要なモジュールを読み込み、開始番地へ飛べばCP/Mが起動できた。
(注意:開始番地へ飛ぶ前に、フロッピーをCP/M用に差し替えないとうまく動かないし、BASICのフロッピーの内容を壊してしまう)
だが、本来ならばフロッピーから直接CP/Mを起動したかった。
この仕組みはある程度理解できたが、実際に起動するようにはできなかった。
まずIPLのROM、これはマニュアルにソースがあったから、どんな仕組みでフロッピーを読み込むかが把握できた。
自分でいじれるように、そのソースを自分で手打ちしてテキスト化し、自由にコメントが書き込めるようにした。
次に、Hu-BASICの読み込みのプログラムを逆アセンブルして、その仕組を解明しようとした。これはそのセクターを一旦RAMに読み込み、それをHEX化してWindowsのPCへ送り、その先で逆アセンブルのソフトにかけた。
さらに内容を1行ずつ理解しながら、1行1行にコメントをつけて、このビットは何で、あれをどうすればこうなるとか詳しく記述しながら理解を深めていった。
こうして仕組みを把握したところで実際にCP/Mを読み込ませる仕組みを作ろうとしたが、MZの起動用のセクターとCP/Mの起動用のセクターの・・・・・・うーんと、もう忘れたな。
結局、IPLのROMをいじってCP/M専用のロード機能を付けたらどうか、あるいはRAMボードに入れるか、RAMボードにCP/M専用のブートローダを入れて動かしたらどうか、と妄想したところで止まっていた。
ちょうど良い具合にBIOSやCCPなどの配置アドレスがBASICのフリーエリアにあたり、
そこへBLOADで必要なモジュールを読み込み、開始番地へ飛べばCP/Mが起動できた。
(注意:開始番地へ飛ぶ前に、フロッピーをCP/M用に差し替えないとうまく動かないし、BASICのフロッピーの内容を壊してしまう)
だが、本来ならばフロッピーから直接CP/Mを起動したかった。
この仕組みはある程度理解できたが、実際に起動するようにはできなかった。
まずIPLのROM、これはマニュアルにソースがあったから、どんな仕組みでフロッピーを読み込むかが把握できた。
自分でいじれるように、そのソースを自分で手打ちしてテキスト化し、自由にコメントが書き込めるようにした。
次に、Hu-BASICの読み込みのプログラムを逆アセンブルして、その仕組を解明しようとした。これはそのセクターを一旦RAMに読み込み、それをHEX化してWindowsのPCへ送り、その先で逆アセンブルのソフトにかけた。
さらに内容を1行ずつ理解しながら、1行1行にコメントをつけて、このビットは何で、あれをどうすればこうなるとか詳しく記述しながら理解を深めていった。
こうして仕組みを把握したところで実際にCP/Mを読み込ませる仕組みを作ろうとしたが、MZの起動用のセクターとCP/Mの起動用のセクターの・・・・・・うーんと、もう忘れたな。
結局、IPLのROMをいじってCP/M専用のロード機能を付けたらどうか、あるいはRAMボードに入れるか、RAMボードにCP/M専用のブートローダを入れて動かしたらどうか、と妄想したところで止まっていた。
知らずに貴重なソフトを捨てた
2024.09.24
親戚からMZ-2000が届いた後、わけがわからないまま、とりあえずフロッピーを片っ端からFDDにつっこんでは起動するかどうか、あるいはBASIC起動後、フロッピーを差し替えながらFILES(DIR)で中身を確認していた。
すると、いくつか読み込めない物があった。
(この時点では無知で、たとえばシャープBASICとHu-Basicのファイルシステムの違いなんか全く知らず、相互に違うフロッピーを読み込もうとしてエラーとなり読み込めない。勘違いして、壊れたフロッピーディスクだと思い込んだ)
確かに、フロッピーに傷が入っており、見た目で駄目なものもあった。ここまで削れたら駄目だよなと。そもそもタバコのヤニでコーティングされていたようなもの。
大量のフロッピーの中には、貴重なソフトもいくつかあったらしい。これは後から判明した。あとで送り主の本人と直接会う機会があり、雑談をしていたら、そのソフトは有ったはずだよと。
読み込めないものと勘違いして、捨ててしまった! 当時は庭でゴミを燃やすのは規制されてなかったから、ゴミと一緒に燃やしてしまった。
MZ-2000用のCP/Mもあったよ!と言われて、ええっ、まさか、そんな・・・大ショック。
これが2004年のMZ-2000へのCP/M移植へ結びつくとは。
なんでCP/Mが必要だったか?アセンブラやリンカが欲しかった。
当時アセンブラの開発環境(ソフト)は無く、ハンドアセンブルしかなかった。コード表を見ながら、ニーモニックからマシン語に変換していた。いま思えば地獄のようだった。
しかしこのおかげで、Z80のマシン語を覚えてしまい、いまでもダンプからニーモニックに変換できる。
BASIC上でアセンブラ、逆アセンブラを作ろうと試みたこともあった。結局、途中で挫折して(根性が続かない)中途半端に終わってしまっていた。
ハンドアセンブルでは、ある程度大きいプログラムを作ろうとすると非常に効率が悪い。相対アドレスをFF, FE, FD, FC, FB, FA・・・と逆に数えたり、命令を追加したり削ったりするたびにやりたくない。
MZの話から脱線するけど、アセンブラのソフトを手に入れたのは専門学校の学生になってから。
それだって最初はMSXの書籍に載っていたやつを打ち込んで使っていたもんな。確かモニタアセンブラって言わなかったっけ。BASIC上で動くやつじゃなかったか。
ソースをBASICのREM文の形で記述していって、アセンブラ自身が破壊されるので再びロードする手間がなかったっけ。
あんまり大変だったので、思い切ってMSX-DOS2 TOOLSを買って、MSX-Cも買って、MSX上での開発環境をようやく整えた。
さらにMSXからMZへ(または逆方向)の転送を行うハードウェアを手作りし、相互にプログラムやデータの転送ができるようにした。MSX上でアセンブルしたものをMZ上で動かす事も可能となった。
高校生の頃にもCP/M移植を考えたけど、ハンドアセンブルでは到底やりきれないものだった。いや、できるよそのくらいって言いたくなる人はいるかもしれないけど、やはり効率が違う。BIOS自体を作らなければならなかったのだから。
2004年のCP/M移植ではWindows PC上のアセンブラ(確かフリーソフトのZASM)を使って、TeraTermだったか、シリアル通信を使ってMZにプログラムを送り込んでいた。
もちろんMZ側のシリアルI/Fは当初手作りだった。
受信はBASICでも良く、MZ側は処理が遅くて取りこぼしそうだったが、遅くても確実に転送できるようにゆったり構えていた。
BASIC上からマシン語で記述した受信ルーチンを呼んでいたかどうかは忘れたけど、とにかくRAM上にBIOSなどCP/Mの動作に必要なプログラムが揃えば、BASICからBSAVEでフロッピーに保存できた。
あとは、これらをBLOADして、その開始アドレスへ飛べばCP/Mが動き始める仕掛けにした。
最初はシリアル通信で接続したPCからの1文字入力、1文字表示で動かしていたが、少しずつBIOSを整備しMZ側での画面表示を作り、次にキーボード入力を作ろうとしたがよくわからなくてそれっきりになっている。
すると、いくつか読み込めない物があった。
(この時点では無知で、たとえばシャープBASICとHu-Basicのファイルシステムの違いなんか全く知らず、相互に違うフロッピーを読み込もうとしてエラーとなり読み込めない。勘違いして、壊れたフロッピーディスクだと思い込んだ)
確かに、フロッピーに傷が入っており、見た目で駄目なものもあった。ここまで削れたら駄目だよなと。そもそもタバコのヤニでコーティングされていたようなもの。
大量のフロッピーの中には、貴重なソフトもいくつかあったらしい。これは後から判明した。あとで送り主の本人と直接会う機会があり、雑談をしていたら、そのソフトは有ったはずだよと。
読み込めないものと勘違いして、捨ててしまった! 当時は庭でゴミを燃やすのは規制されてなかったから、ゴミと一緒に燃やしてしまった。
MZ-2000用のCP/Mもあったよ!と言われて、ええっ、まさか、そんな・・・大ショック。
これが2004年のMZ-2000へのCP/M移植へ結びつくとは。
なんでCP/Mが必要だったか?アセンブラやリンカが欲しかった。
当時アセンブラの開発環境(ソフト)は無く、ハンドアセンブルしかなかった。コード表を見ながら、ニーモニックからマシン語に変換していた。いま思えば地獄のようだった。
しかしこのおかげで、Z80のマシン語を覚えてしまい、いまでもダンプからニーモニックに変換できる。
BASIC上でアセンブラ、逆アセンブラを作ろうと試みたこともあった。結局、途中で挫折して(根性が続かない)中途半端に終わってしまっていた。
ハンドアセンブルでは、ある程度大きいプログラムを作ろうとすると非常に効率が悪い。相対アドレスをFF, FE, FD, FC, FB, FA・・・と逆に数えたり、命令を追加したり削ったりするたびにやりたくない。
MZの話から脱線するけど、アセンブラのソフトを手に入れたのは専門学校の学生になってから。
それだって最初はMSXの書籍に載っていたやつを打ち込んで使っていたもんな。確かモニタアセンブラって言わなかったっけ。BASIC上で動くやつじゃなかったか。
ソースをBASICのREM文の形で記述していって、アセンブラ自身が破壊されるので再びロードする手間がなかったっけ。
あんまり大変だったので、思い切ってMSX-DOS2 TOOLSを買って、MSX-Cも買って、MSX上での開発環境をようやく整えた。
さらにMSXからMZへ(または逆方向)の転送を行うハードウェアを手作りし、相互にプログラムやデータの転送ができるようにした。MSX上でアセンブルしたものをMZ上で動かす事も可能となった。
高校生の頃にもCP/M移植を考えたけど、ハンドアセンブルでは到底やりきれないものだった。いや、できるよそのくらいって言いたくなる人はいるかもしれないけど、やはり効率が違う。BIOS自体を作らなければならなかったのだから。
2004年のCP/M移植ではWindows PC上のアセンブラ(確かフリーソフトのZASM)を使って、TeraTermだったか、シリアル通信を使ってMZにプログラムを送り込んでいた。
もちろんMZ側のシリアルI/Fは当初手作りだった。
受信はBASICでも良く、MZ側は処理が遅くて取りこぼしそうだったが、遅くても確実に転送できるようにゆったり構えていた。
BASIC上からマシン語で記述した受信ルーチンを呼んでいたかどうかは忘れたけど、とにかくRAM上にBIOSなどCP/Mの動作に必要なプログラムが揃えば、BASICからBSAVEでフロッピーに保存できた。
あとは、これらをBLOADして、その開始アドレスへ飛べばCP/Mが動き始める仕掛けにした。
最初はシリアル通信で接続したPCからの1文字入力、1文字表示で動かしていたが、少しずつBIOSを整備しMZ側での画面表示を作り、次にキーボード入力を作ろうとしたがよくわからなくてそれっきりになっている。
肝油
2024.09.24
小学生の頃、年1回ほど学校で「肝油」の頒布があった。希望者は学校でお金を払って買う。
肝油というのは、ビタミンDを含むソフトキャンディみたいなやつ。
のど飴のような平たい缶に入っていた。
たしか「カワイ 肝油ドロップ」という商品名だった。
一日あたりの服用量は決まっていた。それは当時の幼い頭でもわかっていたけど、やはり食べ盛りのガキンチョである。
どちらかというと薬のようなものだが、お菓子に見えて仕方がなかった。
一応、一日何個までと心に決めて、あとは引き出しにしまっていたが、やっぱり手がのびてしまう。むしゃむしゃ食ってしまい、あっという間に無くなった。
もっと幼い頃には小児用バファリン(オレンジ味)を全部食ってしまった事もあった。枕元にあったから、ついつい。
やはり、おいしい物は身近に置くと危険である。
ついでに書くと、学校で歯磨きをすることになって歯ブラシと歯磨き剤を持参する事になったが、その歯磨き剤をなめるという悪癖が流行?した。
みんな、甘さに飢えていたんだろうな。そして子供用の歯磨き剤はおいしい。いちご味とかメロン味とか。その点も危ない。
授業中でも机の下でチューブを開けて、指にとってペロペロ。誰かが毒だと言い出しても、なかなか断ち切れなかった。
そしてコーラ消しゴム!! コーラの香りが美味しそう!!
ある時、これをかじりたくてどうしようもないときがあった。覚えてないが、かじってしまったかもしれない。コーラの禁断症状だったのか。危険だ。
当時はコーラが飲みたくても自由に買えなかった。そもそも、親からそんな物を飲んではいけない等と厳しく言われていて、そうやって制限されてめったに飲めないからなおさらである。
骨が溶けるだの何だの言われていたのもその頃。
肝油というのは、ビタミンDを含むソフトキャンディみたいなやつ。
のど飴のような平たい缶に入っていた。
たしか「カワイ 肝油ドロップ」という商品名だった。
一日あたりの服用量は決まっていた。それは当時の幼い頭でもわかっていたけど、やはり食べ盛りのガキンチョである。
どちらかというと薬のようなものだが、お菓子に見えて仕方がなかった。
一応、一日何個までと心に決めて、あとは引き出しにしまっていたが、やっぱり手がのびてしまう。むしゃむしゃ食ってしまい、あっという間に無くなった。
もっと幼い頃には小児用バファリン(オレンジ味)を全部食ってしまった事もあった。枕元にあったから、ついつい。
やはり、おいしい物は身近に置くと危険である。
ついでに書くと、学校で歯磨きをすることになって歯ブラシと歯磨き剤を持参する事になったが、その歯磨き剤をなめるという悪癖が流行?した。
みんな、甘さに飢えていたんだろうな。そして子供用の歯磨き剤はおいしい。いちご味とかメロン味とか。その点も危ない。
授業中でも机の下でチューブを開けて、指にとってペロペロ。誰かが毒だと言い出しても、なかなか断ち切れなかった。
そしてコーラ消しゴム!! コーラの香りが美味しそう!!
ある時、これをかじりたくてどうしようもないときがあった。覚えてないが、かじってしまったかもしれない。コーラの禁断症状だったのか。危険だ。
当時はコーラが飲みたくても自由に買えなかった。そもそも、親からそんな物を飲んではいけない等と厳しく言われていて、そうやって制限されてめったに飲めないからなおさらである。
骨が溶けるだの何だの言われていたのもその頃。
プリンタ壊れる
2024.09.24
MZ-2000をもらってから、それほどたたないうちにプリンタMZ-1P07が壊れた。
確か画面のハードコピーをやっていて、途中でヘッドから煙が出て止まった。塗りつぶしの印字が負担をかけたのか?
もともと会社でよく使われていた物だから相当くたびれていたのだろう。
ヘッドにつながるフレキケーブルが焼ききれていた。これは簡単には直せない。一応、色々と悪あがきもしたけど結局だめ。
翌夏に大阪へ行く機会があり、日本橋のOAシステムプラザでMZ-1P07の中古を購入した。
この時が初大阪・日本橋だけど、その後一度も行く機会がない。10年以上前、通天閣の仕事で近くを通ったぐらい。
当時初めて行った時は、親戚のおじさんについていくだけで精一杯で、パーツ屋さんを見ても気持ちが一杯一杯で何か買おうとかそういうふうに頭も回らない。ただ夢中だった。
PC-8801か何か、店頭のPCの画面の片隅にアニメの女の子が表示されていてチョコッと動いていたのを覚えている。
帰りの飛行機で、プリンタを手荷物検査に通して機内持ち込みにした。足元に置いたほうが良さそうだったのでそうした。
飛行機も初心者で、記憶も無いような幼い頃に五島まで乗った事はあるようだが、自分一人で乗ったのは来る時が初めて。
壊れたほうのプリンタも一応直そうと試みたが当時の自分には無理で、仕方なく部品取りをして、2764が2個あったので取り外して保管しておいた。
まさか、これが後に製作するワンボードマイコンで活躍するとは、当時は思いもしなかったのであった。
確か画面のハードコピーをやっていて、途中でヘッドから煙が出て止まった。塗りつぶしの印字が負担をかけたのか?
もともと会社でよく使われていた物だから相当くたびれていたのだろう。
ヘッドにつながるフレキケーブルが焼ききれていた。これは簡単には直せない。一応、色々と悪あがきもしたけど結局だめ。
翌夏に大阪へ行く機会があり、日本橋のOAシステムプラザでMZ-1P07の中古を購入した。
この時が初大阪・日本橋だけど、その後一度も行く機会がない。10年以上前、通天閣の仕事で近くを通ったぐらい。
当時初めて行った時は、親戚のおじさんについていくだけで精一杯で、パーツ屋さんを見ても気持ちが一杯一杯で何か買おうとかそういうふうに頭も回らない。ただ夢中だった。
PC-8801か何か、店頭のPCの画面の片隅にアニメの女の子が表示されていてチョコッと動いていたのを覚えている。
帰りの飛行機で、プリンタを手荷物検査に通して機内持ち込みにした。足元に置いたほうが良さそうだったのでそうした。
飛行機も初心者で、記憶も無いような幼い頃に五島まで乗った事はあるようだが、自分一人で乗ったのは来る時が初めて。
壊れたほうのプリンタも一応直そうと試みたが当時の自分には無理で、仕方なく部品取りをして、2764が2個あったので取り外して保管しておいた。
まさか、これが後に製作するワンボードマイコンで活躍するとは、当時は思いもしなかったのであった。
MZ-2000の話(はじまり)
2024.09.24
高校2年の時だったか、大阪の親戚からもらった。
親戚の会社で使っていた物で、その会社のMZ-2000の後継はエプソンの98互換機。
確か年末に本体+外付FDD(MZ-1F07)+プリンタ(MZ-1P07)+フロッピー多数+説明書がうちに届いた。漢字ROMボードも内蔵。
ヘビースモーカーが使っていた為、全体にヤニ臭く、汚れていて、MZの上面には焦げ跡があった。
動作は正常で、フロッピーを備えたPCは自分としては初めて所有した。シャープの機種はポケコンしか使った事がなかった。
その頃の印象では、MZ-2000(2200)はあまり人気がない感じ? どっちかというと2500か。
MZ-700ユーザの方がアツいと思う。
自分はそれまでMSXとSC-3000Hを使っていた。それと、リコーのワープロも使っていた。
このMZ-2000、高校卒業して進学先の下宿まで持っていって、そして卒業後に実家へ持ち帰ってきて現在に至るまでずっと持っている。まだ動くのはすごい。すごいかすごくないかの基準はあいまいだが。
下宿に置いていた時の最大のピンチは、水をかぶってしまったこと。平成3年の台風19号だ。
新しいけどボロい建物で、台風が極端に強かったせいもあるけど、窓のスキマから雨水が吹き込んで室内の窓に近いところは水びたし。
強烈な風で何でもかんでも飛んできていた。ガラスが割れるんじゃないかと心配だった。
看板どころか、外の様子を見ていたら近くの建物の屋根そのものが丸ごと吹っ飛ぶのをこの目で見た。台風が過ぎて落ち着いてから外出してみると、信号機の電柱が倒れたり、初めてみるようなひどい状況だった。
学校から帰ったらびちゃびちゃになっていてビックリ。台風が接近するからと急ぎで帰ったんだな、確か。
とにかくコンセントからプラグを抜いて、本体を傾けてみるとザバーと水が出てきた。こりゃまずい。とにかく排水して、可能な限り拭いて、フタをあけたまま置いて乾かしていた。
MZ-2000はクルマのボンネットみたいに開くから(色々いじるのに)便利なのだ。しょちゅういじるからネジは(運搬時以外)外したままにしていた。
数日そのままにして、それから中を点検してみたら大丈夫そうだったのでおそるおそる電源を入れたら正常に動作。ほっとした。
親戚の会社で使っていた物で、その会社のMZ-2000の後継はエプソンの98互換機。
確か年末に本体+外付FDD(MZ-1F07)+プリンタ(MZ-1P07)+フロッピー多数+説明書がうちに届いた。漢字ROMボードも内蔵。
ヘビースモーカーが使っていた為、全体にヤニ臭く、汚れていて、MZの上面には焦げ跡があった。
動作は正常で、フロッピーを備えたPCは自分としては初めて所有した。シャープの機種はポケコンしか使った事がなかった。
その頃の印象では、MZ-2000(2200)はあまり人気がない感じ? どっちかというと2500か。
MZ-700ユーザの方がアツいと思う。
自分はそれまでMSXとSC-3000Hを使っていた。それと、リコーのワープロも使っていた。
このMZ-2000、高校卒業して進学先の下宿まで持っていって、そして卒業後に実家へ持ち帰ってきて現在に至るまでずっと持っている。まだ動くのはすごい。すごいかすごくないかの基準はあいまいだが。
下宿に置いていた時の最大のピンチは、水をかぶってしまったこと。平成3年の台風19号だ。
新しいけどボロい建物で、台風が極端に強かったせいもあるけど、窓のスキマから雨水が吹き込んで室内の窓に近いところは水びたし。
強烈な風で何でもかんでも飛んできていた。ガラスが割れるんじゃないかと心配だった。
看板どころか、外の様子を見ていたら近くの建物の屋根そのものが丸ごと吹っ飛ぶのをこの目で見た。台風が過ぎて落ち着いてから外出してみると、信号機の電柱が倒れたり、初めてみるようなひどい状況だった。
学校から帰ったらびちゃびちゃになっていてビックリ。台風が接近するからと急ぎで帰ったんだな、確か。
とにかくコンセントからプラグを抜いて、本体を傾けてみるとザバーと水が出てきた。こりゃまずい。とにかく排水して、可能な限り拭いて、フタをあけたまま置いて乾かしていた。
MZ-2000はクルマのボンネットみたいに開くから(色々いじるのに)便利なのだ。しょちゅういじるからネジは(運搬時以外)外したままにしていた。
数日そのままにして、それから中を点検してみたら大丈夫そうだったのでおそるおそる電源を入れたら正常に動作。ほっとした。