FM-7のFDCエミュカードのバグのバグ取りに非常に苦しんで
もう一年以上放置ですが、やっぱり漢字ROMぐらいはほしいなと
いうことで、3月ごろに漢字ROM機能だけ作りました。
最初は漢字ROM機能だけ載せたんですが、
ジャンクのPCIカードからはがしてきたMAX3128Aの
1/3くらいの容量しか使ってなくてもったいないので
SPIマスタ通信機能を載せました。
それでもまだまだ容量が余っているのでI/O 84/1に
掲載されている、I/O領域に小さなROMをマップして、
プログラムのローダを置く機能も載せました。
そこまでできたなら、そのローダを使用して
DISK BASICをSPIフラッシュから起動してやることも
可能だろうと思い、この連休にチャレンジしたところ、
あっさりできました。
BIOSを拡張する形なのでDE番地をコールしないものや
直接FDCを叩くものは全く動きませんが雑誌に載ってたような
ツール類やゲームはたいした問題もなく動くんじゃないかと
思います。
これはほぼCPLDとROMとフラッシュメモリをつなぐだけで
再現性も高そうなので同じものを作って楽しんでいただけたら
と思います。
(いないと思うけど、勝手に同じもの作って売るのはかんべんしてね)
$fdc0にローダーをマップしているのでそこから起動。
どこからでもいいからシステムディスクのC=0,H=0,R=15から
C=0,H=1,R=16までの5キロを$6e00から展開して$6e00から
実行すればディスクがつながっていなくても起動できるん
ですね。あとでOh!FMの過去記事を読み直してみれば
それを利用したRAMディスクの記事も見つかりましたが
最初はそんなことできるんだろうかという感じでしたが
あっさり起動しました。
次はBIOSを拡張します。
BASICの起動処理でディスクBASICなら$6e00まで、
ROM BASICなら$8000まで初期化するように指定するので
じゃあメモリの初期化を$6c00までにしておいて
そこにBIOSを拡張するプログラムを置いておこうかと
考えたのですが、なぜかメモリが$6e00付近まで初期化
されていないとBASIC起動時に暴走するので
BASICの起動処理の空き領域$6f00にBIOS拡張プログラムの
ローダを仕込むことにしました。
ここをコールするとBIOS拡張プログラムをSPIフラッシュから
読み込んでBIOSを拡張します。
拡張BIOSはBASICテキスト領域の前に配置しました。
最初は$7000から配置したのですが、起動後BASICに
戻ってこない前提で$7000-$7fffを破壊するプログラムは
ここにBIOSがあると動かないのでそうしました。
プログラム中の最後にROMのnewの処理に飛ばしてやれば
かっこいいんですが、私が参考にした本と私のFM-7では
newの位置が違っているようで暴走し、ROMのテーブルを
プログラムで調べて飛ばすのも面倒だったので
これでいいことにしました。
BIOSが拡張されたのでディスクが見えるようになりました。
BIOSが拡張されるまでディスクが接続されていないので
STARTUPは動きません。
いつものホバーアタックです。
DOH-Cのディスク版も動いてくれました。
設計データ等は次の記事で。