I/Oポート1FF*Hは起動デバイスの設定スイッチを読み出すポートですが、回路図によると最上位ビットはFDDからの生データになっています。一体、どうしろと・・・
おそらく、X1turbo model10(CZ-850C)とは互換性が無い。
IPLの起動デバイス選択時に、次のコマンドが使えます。
# | … | RAMの0000Hへジャンプします。 |
---|---|---|
M | … | モニタの起動、これ自体はマニュアルに載っていますが、起動デバイスの設定スイッチを8"1Sにすると、メモリクリアをせずモニタが起動します。 |
0:~3:のデバイスでは0~3のディスクタイプ以外に、4と5の設定が可能です。次表の対応になっています。
タイプ | 容量 | フォーマット | 転送方式 |
---|---|---|---|
0 | 320KB | 2D X1互換 | CPU |
1 | 640KB | 2DD X1turbo | DMA |
2 | 1MB | 2HD X1turbo | DMA |
3 | 1MB | 2HD IBM互換 | DMA |
4 | 160KB? | 両面単密度? | DMA |
5 | 320KB | 2D X1互換 | DMA |
ディスクタイプに"5"を設定すると、2DでもDMAによる転送になり、GRAMとの直接転送も容易になります。
アドレス | ラベル名 | 説明 |
---|---|---|
FAB9H | DMAIOF | FDCRED/FDCWRTでDMA転送の対象。00Hが通常時、08HのときGRAMが対象になる |
このフラグを使うと、DMAで転送をするデバイスとGRAMの間で直接転送が可能となり、シャープ製のアプリケーションでよく使われています。
下記サンプルプログラムでは、ドライブ0から48Kバイト分、GRAMへ読み出します。
LD A,7 ;5.25"FDを設定する LD (FDCNO),A ;デバイスタイプ(7:5.25"FD 8:8"FD 9:HD) LD A,0 ;ドライブ番号 LD (UNITNO),A ; LD A,8 ;転送対象をGRAMにする LD (DMAIOF),A ; LD A,192 ;192レコード(48Kバイト) LD DE,0 ;読み出し開始レコード番号 LD HL,4000H ;読み出しアドレス LD BC,FDCRED ;X1turbo BIOS デバイスからの読み出し RST 18H ;BIOS呼出し LD A,0 ; LD (DMAIOF),A ;処理を終えたら必ず通常に戻す
その昔、IPLを解析しているときに発見したポートです。将来、何かあるのかと思っていましたが、結局何もありませんでした。そして忘却の彼方へ・・・
I/Oアドレスの0700Hと言えばYM2151を用いたFM音源で有名ですが、この076CHという中途半端なアドレス。
また別の解析の為に調べていると、気付きました。
076CHを10進数にすると"1900"です・・・どうやら、ROM設計者がやらかしてしまったようです。