N60-拡張BASIC

| | コメント(3) | トラックバック(0)

「SDカードをオリジナルのフロッピーディスクの代わりに使えたら便利いんじゃない?」と言われたので、拡張BASICをちょっと読んでみました。

基本のBASICは、それこそ8080でも動くんじゃないかというくらい基本命令ばかり使っています(実際にはldirやビット関連命令を使うので8080では走りませんが)が、拡張BASICはIXレジスタを使うほか、Z80の拡張命令を多少は積極的に使う傾向が見られます。

まぁその割には、いきなり最初で

ld	ix, (nn)

を使わずに、

ld	hl, (nn)
push	hl
pop	ix

としていたりしますが。 読みやすいソースなので気にすることではありませんね。


ディスク入出力に使うのは0xd0~0xd3のI/Oポートで、ここをうまく騙してやれば不可能ではなさそうです。

ハード的には、現在のCPLDの使い方だと入出力が最低でも1本不足します。 AVRの入出力には十分余裕があります。 複数のI/Oポートを使うためには、割り込みスピードを間に合わせるための工夫が必要ですが。

ソフト的には、ファイルをディスクイメージとして使うことになるでしょうね。 現在のFATの上に実装すれば良さそうです。


トラックバック(0)

このブログ記事を参照しているブログ一覧: N60-拡張BASIC

このブログ記事に対するトラックバックURL: http://www.markn.org/cgi-bin/mt/mt-tb.cgi/145

コメント(3)

そういえば、8031(2W)の逆アセンブルリストとかどっかに転がってましたが…
参考にするなら何かいろいろしましょうか?:d
例のものは遅ればせながら送りました、ちょっとしたサプライズがあるかもしれません。
(いろんな意味で)

PC-8x01系(6x01もだけど)のFDD-IFは8255を対に使っているので(割り込みは使ってないはず)豪華というか何というか当時は不思議な感じでしたね。設計として今ならまぁ割り切りとしては便利でいいかもしれませんけれど。

そういえば昔SMC-70のFDC制御を書いたことがあるんですが、あれもトリッキーでしたね。
割り込みなしで回転待ちをしなければならずステップ(&クロック)数的に普通に書いたら間に合わないという。
確か割り込み禁止にしてIN(C)とか使うことでなんとかしてた(BIOSも;)という記憶が。

確かに拡張BASICのROMを見る限り、割り込みは使っていないようです。
ちょっと気になったのですが、mkII以降はFDDインタフェース内蔵なので、I/Oアクセスが拡張スロットに出ないかもしれませんね。
増してや6601系はドライブそのものを内蔵してますし。
調査する必要がありそうです。

内蔵モデルはIOアクセスあってもスロットには正常にアクセスできないでしょうね、IORQがアサートされても内蔵のデバイスと競合するだけのような。
8255はモードによって(IRQにちゃんとつなげば)8080互換の割り込みは使えた気がしますが、RST命令を出すのかどうかは忘れました。モード2だから意味ないですね、コントローラー入ってないし。
(8001の設計が)割り込み使えるようにしておいてくれていれば、もう少し機敏に動いていたような気がしなくもないですね。もっともFDD自体が遅すぎて意味は薄かったかもしれませんけど。

8801シリーズの中後期がFDD内蔵モデルで8255をペアにしてASICにしてしまっていたと記憶しています、6601とかもそうなっていた可能性があるように思います。


思い出してみるとportA-Cをパラで繋いでるので、それを逆手にとって転送時全部のポートをデータ入力(出力)専用にして転送速度を稼いでたオリジナルDOSみたいなソフトがあったような気がします。サブCPUにアロケートテーブルを解させてメインメモリの常駐部分を最小限にしたものとか。私もオリジナルのそういうDOSを作った記憶がありますが(世に出さなかったですけど)サブCPUを使うのはFM方面で遊んでいた気がします。

コメントする