[1]シングルボードコンピュータの仕様
(1)メモリーマップRAMを64KB実装し、その上にMonitorとして4KBのROM,I/Oエリアとして128bytesを重ねています。
FLEXシステムは6809用ではC700からDFFFに、6800用ではA700からBFFFに位置しています。
メモリマップ |
(2)I/O
I/OとしてはACIA(6850)のみですので、シリアルインターフェースが2組ということになります。それぞれのアドレスは$F0BC,BDと$F0CC,CDですが、アドレスA1をデコードしていないので、$F0BE,BFと$F0CE,CFにゴーストが現れています。
6850-1はコンソールI/Oに、6850-2はWindows上の仮想ディスクとの通信に使うことを想定しています。
通信速度は、システムクロックが1MHz(原発振は4MHz)では19200baud、2MHz(同8MHz)では38400baudです。システムクロックの4倍の原発振を13分周して6850へ供給しています。
(3)拡張ROM-1,-2
拡張ROMはI/Oがあるために連続していませんが、6809ではASSIST09の拡張コマンドFillとTransferコマンド(インターフェース誌1982年4月号より)、そしてFLEX起動コマンドを入れています。6802ではVTL等のアプリケーション用のコンソールI/OプログラムとFLEX起動コマンドを入れています。
[2]FLEXシステムの詳細
(1)FLEXシステムの構成FLEXシステムはFLEX.CORとDISK DRIVERとCONSOLE I/Oからなり、ユーザが作成する必要があるのはDISK DRIVERとCONSOLE I/Oの2つです。
(6800用ではCONSOLE I/OがDISK DRIVERの中に含まれる形になっています。)
(2)DISK DRIVER
DISK DRIVERは基本的にFDC(フロッピーディスクコントローラ)FD1791を使用したFDDシステムを使用する前提になっていますが、この仕様に合わせて仮想ドライブをアクセスするルーチンが必要です。
(3)CONSOLE I/O
CONSOLE I/Oは基本的にACIAによるシリアルインターフェースを使用する前提になっていますので、そのままACIAによるI/Oルーチンを作成すれば良いことになります。
(4)DISKの特徴
FLEXシステムにはFAT(ファイルアロケーションテーブル)のようなDISK全体を管理する部分はなく、全てのセクターが繋がったチェーン構造をしています。
各セクターの最初の4バイトが、次のレコードのトラック番号(1byte)、セクター番号(1byte)、レコード番号(2byte)を表しており、セクターを読むと、次に読むべきセクターが分かるようになっています。レコードの最終セクターはトラック番号とセクター番号が00になっています。
レコードの最初のトラック番号、セクター番号はディレクトリに書かれているので、ディレクトリからファイル名を検索し、見つけたらそのトラック番号とセクター番号のセクターから読み始めれば良いわけです。
このような構造から、複数のセクターをまとめて読むことができず、FLEXのDISKアクセスは遅いという評判につながったわけですが、仮想ドライブという面からみると、DISKの容量やトラック数、セクター数の制限がなく、かえって柔軟なシステムと言えるように思います。(ただ一つの制限はセクター容量が256bytesでなければならないということです。)
(5)DISKの構成
トラック00
セクター01, 02 Boot Loader
セクター03 SIR(System Information Record)
ディスク名、最大トラック、セクターや残りセクター数など記録
セクター05 Directory(最終セクターまで)
トラック01 Data(最終トラックまで)
SIR(セクター03) |
Directory(セクター05~) |
(6)データファイルの保存形式
テキストファイルは基本的にそのままの形でディスクに保存されますが、複数のスペースが続く場合、$09+スペース数という形で圧縮されて保存されます。読み出し時には、それが展開されます。
バイナリファイルの場合はちょっと面倒です。べたのバイナリファイルは存在せず、パケット形式に変換されて保存されます。FLEXシステムデータ自身も同様です。
パケット形式 データ:$02+スタートアドレス(2bytes)+データ数(1byte )+データ列
の繰り返し(データ数の標準値は$C4)
実行アドレス:$16+実行アドレス(2bytes)
従って、Windowsで作成したバイナリファイルをFLEXのDSKファイルに保存するためには、あらかじめパケット形式に変換するか、あるいはHexファイルにしてFLEXに送り、FLEX上でHex->Binary変換をしなければなりません。
0 件のコメント:
コメントを投稿