PC−8001


CRTC:μPD3301D、μPD8257C−5へ RTC :μPD1990Cへ SIO :μPD8251Cへ PC−8011 拡張ユニットへ PC−8012 拡張スロットへ PC−80S31 ミニ ディスク ユニットへ PCG−8100へ シリアル マウスへ PC−8001のスペック
CPU μPD780C−1(Z80A) 3.9936MHz 1WAIT
PSG 無し、ゲートによるBEEP音1つ
ROM 24KB(本体内は計32KBまで拡張可)
RAM 16KB(本体内は計32KBまで拡張可)
CRTC μPD3301とDMA μPD8257の極悪コンビが割り込み(正確にはCPUバス制御)でCPU速度を落とし 尚且つ1WAITかかりZ80A 4MHzは遅いイメージを植付けさせた罪作りなPC(実際はDMAが無いと遅い) 後にPC−8801でバンク切り換えが遅いというイメージも追加される。
実質的な速度  PC−8001はメモリアクセスで1WAITかかりZ80Aの約4MHzの速度の約20%の速度が落ちます。  CRTC+DMAでのバス割り込みでさらに約34%の速度が落ちます。  よって実質な速度は約46%になり、約1.84MHzのクロックと同等となります。  これがPC−8001系の欠点でありますが長所でもある所です。  通常PCを使うのに常に画面を表示する場合が多いのでDMAを使わない(CPU処理速度を落さない)で  ソフトでブロック転送するよりCPUを停止してDMAを使用する(CPU処理速度を落す)方が結果的には速かったりします。  CPUを停止するのはZ80がメモリのアクセスが非同期なので68系の様にメモリアクセスをしないときに  DMAを使用するような事が出来ないのでCPUを停止してバス制御をDMAに移す為です。  ただしCPUを停止するという事は割り込み関係にその影響が受けてしまう事になるということになります。  ただPC−8001では割り込みを使用するのにはオプションであるのと  N−BASICではほとんど使用することが無いので気にする事はないでしょう。
互換性  N−BASICを搭載しているPCには互換性がありますが特定の操作によっては動作しない場合があります   タイマー関係の違い    PC−8001のみ単純なタイマとなっていますのでワークエリアをクリアするだけで    タイマーの内容がリセットされます    それ以外の機種ではバッテリーバックアップが行われておりワークエリアをクリアするだけでは    タイマーの内容がリセットされるとは限りません   ROMの切り替え    PC−8001のみ/ROMDSn(n=0−3)で8KBごと切り替えができます。           ただしPC−8012、13では/ROMKILLで全てのROMを使用禁止    PC−8801、PC−8001mkIIは/ROMKILLで全てのROMを使用禁止   SIO    PC−8001のみターミナルモード用SIO、CMTは本体内蔵、RS−232Cは外付けの8351を使用    PC−8801、PC−8001mkIIは全て本体内蔵のSIOを使用   /EXTON    PC−8001はPC−8011、12,13等の拡張ユニットが繫がると1、繫がっていないと0    PC−8801、PC−8001mkIIはFDドライブが繫がると1、繫がっていないと0
起動方法 PC−8001には3つの起動方法があります。  1、リセット(電源を入れる)だけのコールドスタート  2、STOPを押しながらリセットするホットスタート  3、ESCを押しながらリセット  コールドスタートは通常のリセット  ホットスタートはプログラムを壊さないで再起動ができます(マシン語の誤動作でデータ破壊では壊れている場合があります)  ESCを押しながらリセットはディスクブートをしない起動となります。
シリアルソケット  PC−8001の本体内にはシリアル転送用の16ピンソケットがあります。  ターミナルモードで使用するためオプションのPC−8062(RS−232Cケーブル)が必要になりますが  自作でレベルコンバートする方法もあります。  またBASICのRS−232C命令はPC−8011等のオプション用の命令です。   1:GND  16:GND   2:/T×D 15:−12V   3:/R×D 14:GND   4:RTS  13:+12V   5:CTS  12:GND   6:DSR  11:+5V   7:CD   10:GND   8:DTR   9:GND  ボーレートの変更   PC−8001の本体内にジャンパー線の接続で設定を行います。   ターミナルモードで2−3で接続していると、何も動作はしませんが、ページプリントは出来ます。    1−2:×16モード 4800、×64モード 1200    1−3:×16モード 2400、×64モード  600    1−4:×16モード 1200、×64モード  300    1−5:×16モード  600、×64モード  150    1−6:×16モード  300、×64モード   75
CPU拡張バス   1:+5V     2:+12V   3:DB0     4:−12V   5:DB1     6:/ROMDS0   7:DB2     8:/ROMDS1   9:DB3    10:/ROMDS2  11:DB4    12:/ROMDS3  13:DB5    14:/INT  15:DB6    16:/NMI  17:DB7    18:/EXTON  19:AB0    20:AB8  21:AB1    22:AB9  23:AB2    24:AB10  25:AB3    26:AB11  27:AB4    28:AB12  29:AB5    30:AB13  31:AB6    32:AB14  33:AB7    34:AB15  35:/RD    36:/RESET  37:/WR    38:/WAIT  39:/MREQ  40:/WE  41:/IORQ  42:/MUX  43:/RFSH  44:/RAS0  45:/M1    46:/RAS1  47:SCLOCK 48:GND  49:φ      50:GND   /ROMDS0=N−BASIC ROM 00000H−01FFFHの使用禁止   /ROMDS1=N−BASIC ROM 02000H−03FFFHの使用禁止   /ROMDS2=N−BASIC ROM 04000H−05FFFHの使用禁止   /ROMDS3=本体内の拡張ROM   06000H−07FFFHの使用禁止
メモリチェック PC−8001のモニタにはTM(テストメモリコマンド)があり。 本体内RAM(16KBまたは32KB)のチェックを行います。 TMコマンドを実行して、エラーが無ければ電源をONにしたときと同じになりますが エラーが出た場合は音がBEEP音が鳴りっぱなしなり停止(HALT)します。 エラーが出た場合はSTOPを押しながらリセットして 次のアドレスを見ればエラーヶ所が分かります。  0FF39H−0FF3AH:エラーの出たアドレス(下位、上位の順)  0FF3BH:その時に書き込んだデータ  0FF3CH:その時に読み込んだデータ 当然ですが上記のアドレスRAMが不良な場合はこの内容は信用できまん。
拡張ROM 本体内には8KBのROMが拡張出来るようになっています。 また特定のアドレスに特定のデータを書き込む事によって オートスタートやモニタコマンドの拡張等が出来るように設計されています。  オートスタートする場合   06000Hから041H、042H(アスキーコードでAB)を書き込むと   PCが初期設定(01757H)の途中でPROMチェックをしていて、06002Hに飛びます。   メモリチェックや割り込みの設定は行っていないので注意が必要です。   またPC−8001mkIIではN80ROMと拡張ROMを区別する為に   拡張ROMでは06002Hに000Hを書き込めば   オートスタートROMとして06002Hから実行されるようになります。  モニタコマンド   07FFFHに055H(アスキーコードでU)を書き込むと   BASICでMONコマンドを実行すれば   通常のモニタへは飛ばず、07FFCHに飛びます。
プリンタ・インターフェィス セントロニクス社仕様に基準しています。   1:/STB    2:GND   3:PD0     4:GND   5:PD1     6:GND   7:PD2     8:GND   9:PD3    10:GND  11:PD4    12:GND  13:PD5    14:GND  15:PD6    16:GND  17:PD7    18:GND  19:/ACK   20:GND  21:/READY 22:GND  23:N C    24:N C  25:N C    26:HIGH  27:N C    28:N C  29:HIGH   30:HIGH  31:GND    32:N C  33:N C    34:N C   /STB:ライトストローブ信号。 プリンタにデータを出力する時のライト信号として使用。   PD0〜PD7:プリンタ用のデータバス。   /ACK:プリンタからのアクノリッジ信号。        ポートではフリップ。フロップで受けています。        プリンタから/ACKを受けたらリセット        /STBが出力されたらセット   /READY:0のときにプリンタにデータ出力が出来ます。   *N−BASICでは/STBと/READYを見ていますが、/ACKは無視しています。  主なプリンタアクセス方法   /READY(ポート040HのBit0入力)が0になるまで待つ   /READY(ポート040HのBit0入力)が0になったら、ポート010Hにデータを書き込む   /STB(ポート040HのBit0出力)を0にする   /STB(ポート040HのBit0出力)を1にする
割り込み/INTについて
/INTはオプションのPC−8011・8012・8013によって変ります。(どのオプションでもモード2で使用) コントロラーチップは8214(PC−8011は2つ、PC−8012・8013は1つ)を使用されています。 割り込み順位は/INT0が最低です。  PC−8011は16レベル   08000H−08001H:PC−8011=IEEE−448   08002H−08003H:PC−8011=IEEE−448   08004H−08005H:PC−8011=リアルタイムクロック   08006H−08007H:PC−8011=未使用   08008H−08009H:PC−8011=RS−232C Ch1 (8251のR×RDYが1になるとかかる)   0800AH−0800BH:PC−8011=RS−232C Ch2 (8251のR×RDYが1になるとかかる)   0800CH−0800DH:PC−8011=/INT9 汎用パラレル   0800EH−0800FH:PC−8011=/INT8 汎用パラレル   08010H−08011H:PC−8011=/INT7   08012H−08013H:PC−8011=/INT6   08014H−08015H:PC−8011=/INT5   08016H−08017H:PC−8011=/INT4   08018H−08019H:PC−8011=/INT3   0801AH−0801BH:PC−8011=/INT2   0801CH−0801DH:PC−8011=/INT1   0801EH−0801FH:PC−8011=/INT0  PC−8012・8013は8レベル   08000H−08001H:PC−8012=/INT7もしくはリアルタイム割り込み   08002H−08003H:PC−8012=/INT6   08004H−08005H:PC−8012=/INT5   08006H−08007H:PC−8012=/INT4   08008H−08009H:PC−8012=/INT3 BASICではRS−232C Ch1になっている(拡張)   0800AH−0800BH:PC−8012=/INT2 BASICではRS−232C Ch2になっている(拡張)   0800CH−0800DH:PC−8012=/INT1   0800EH−0800FH:PC−8012=/INT0   08010H−08011H:PC−8012=/INT7’もしくはリアルタイム割り込み   08012H−08013H:PC−8012=/INT6’   08014H−08015H:PC−8012=/INT5’   08016H−08017H:PC−8012=/INT4’   08018H−08019H:PC−8012=/INT3’BASICではRS−232C Ch1になっている(拡張)   0801AH−0801BH:PC−8012=/INT2’BASICではRS−232C Ch2になっている(拡張)   0801CH−0801DH:PC−8012=/INT1’   0801EH−0801FH:PC−8012=/INT0’  *32KBシステムの場合です、16KBの場合0C000Hからテーブルが割り当てられます。   PC−8011の/INT8−/INT9は汎用パラレルI/Oポートにでているだけです。   PC−8012、PC−8013で8214のI/Oアドレスの設定はジャンパCN1で設定を行います。     1−2:ポート0E4Hを使用(上位8レベル)     2−3:ポート0E5Hを使用(下位8レベル)   PC−8012、PC−8013で/INT7をリアルタイム割り込みか/INT7の使用はジャンパCN3で設定を行います。     1−2:INT7を選択     2−3:リアルタイム割り込みを選択   PC−8012、PC−8013で/8214の出力されるエンコードベクトルはジャンパCN5で設定を行います。     1−2:割り込みレベル(上位8レベル)     2−3:割り込みレベル(下位8レベル) PC−8001mkII/PC−8801はPC−8012基準で独自の割り込みに当てられています。 その為汎用スロットも若干端子に違いがあります。  PC−8001mkIIは内蔵で8レベル   08000H−08001H:/INT7 RS−232C BASICではRS−232C Ch1になっている   08002H−08003H:/INT6 VRTC   08004H−08005H:/INT5 リアルタイムクロック   08006H−08007H:/INT4 /INT3   08008H−08009H:/INT3 /INT4   0800AH−0800BH:/INT2 /INT5 汎用I/Oポート   0800CH−0800DH:/INT1 /FDCINT1   0800EH−0800FH:/INT0 /FDCINT2    *N−BASIC、N80―BASIC両方です。(ベクタアドレスはモードによって若干変ります)     /INT2、/INT3のベクタはBASIC ROM内に飛び8251のシ処理を行われています。     8214からみた/INT0−7です。INT/4−2のバスが違う名前として繋がっています。         N−BASIC:/INT7:0F1E6H                 /INT6:0F1E9H                 /INT5:000C9H                 /INT4:000C9H                 /INT3:0237FH                 /INT2:023A9H                 /INT1:000C9H                 /INT0:000C9H                  以降は000C9H       N80−BASIC:/INT7:0237FH                 /INT6:0165AH                 /INT5:0165AH                 /INT4:0165AH                 /INT3:0237FH                 /INT2:023A9H                 /INT1:0165AH                 /INT0:0165AH                  以降は0165AH  PC−8801は内蔵で8レベル   08000H−08001H:/INT7 RS−232C   08002H−08003H:/INT6 VRTC   08004H−08005H:/INT5 リアルタイムクロック   08006H−08007H:/INT4 /INT3   08008H−08009H:/INT3 /INT4    0800AH−0800BH:/INT2 /INT5 汎用I/Oポート(CMT端子の3ピン)   0800CH−0800DH:/INT1 /FDINT1   0800EH−0800FH:/INT0 /FDINT2    *N−BASICモードの場合です。     8214からみた/INT0−7です。INT/4−2のバスが違う名前として繋がっています。
リアルタイム割り込みについて
PC−8001はPC−8011、PC−8012・13を接続することで使用可能となります(PC−8012・13はジャンパで設定) またPC−8801、PC−8001mkIIは本体内で実装されています。 約1.67mS(600Hz)毎で割り込みが掛かりますが本体はCRTC+DMAのバス制御が掛かるので 割り込みでもDMAを禁止(画面表示Off)にしないとDMA要求が掛かかります。  PC−8011、PC−8012・8013の場合   0E6H       Bit0 リアルタイム割り込み     1=許可、0=禁止  PC−8801の場合   0E6H       Bit2:8251 RxRDY割り込み 1=許可、0=禁止       Bit1:VRTC割り込み       1=許可、0=禁止       Bit0:リアルタイム割り込み     1=許可、0=禁止
DMAについて PC−8001はチャンネル2をCRTC用のみで使用していましたが PC−8801、PC−8001mkIIは拡張してチャンネル0〜2まで使用しています。  チャンネル0は5インチDMAタイプディスク  チャンネル1は8インチDMAタイプディスク  チャンネル2はCRTC  DMAタイプディスク用ポート   0F3H:DMAタイプディスクユニット インターフェイスセレクトポート   0F4H:DMAタイプ8インチ 制御   0F5H:DMAタイプ8インチ マージンコントロール   0F6H:DMAタイプ8インチ FDCステータス   0F7H:DMAタイプ8インチ FDCデータレジスタ   0F8H:DMAタイプ5インチ 制御   0F9H:DMAタイプ5インチ マージンコントロール   0FAH:DMAタイプ5インチ FDCステータス   0FBH:DMAタイプ5インチ FDCデータレジスタ   DMAタイプディスクのFDCはuPD765Aを使用
PC−8001mkII専用I/Oポートについて
PC−8001mkIIは新たに拡張されたポートがあります 00AH:Bit0:TABキー 1=押されていない、0=押されている 010H:プリンタまたはμPD1990用データ、汎用I/Oポート 出力  プリンタの場合   Bit7:PD7   Bit6:PD6   Bit5:PD5   Bit4:PD4   Bit3:PD3   Bit2:PD2   Bit1:PD1   Bit0:PD0  μPD1990の場合   Bit7:UOP3   Bit6:未使用   Bit5:未使用   Bit4:未使用   Bit3:μPD1990データ出力(DATA IN)   Bit2:コマンド出力 C2   Bit1:コマンド出力 C1   Bit0:コマンド出力 C0  030H(入力)   Bit7:UIP1   Bit6:UIP2   Bit5:MODE SELECT SW3 1=Off、0=On   Bit4:MODE SELECT SW4 1=Off、0=On   Bit3:MODE SELECT SW5 1=Off、0=On   Bit2:MODE SELECT SW6 1=Off、0=On   Bit1:MODE SELECT SW7 1=Off、0=On   Bit0:MODE SELECT SW8 1=Off、0=On(N80/Nモードの切り換えの使用)   UIPnは背面にある汎用I/Oの入力ポート部分です。   MODE SELECT SWnは背面にあるDIPスイッチで上にやるとOnになります。   その中のMODE SELECT SW8はBASICの切り換えで    1:N80−BASIC、0:N−BASICとなります。   またこのSWはただの入力ポートなのでソフトでこのSWを見てポートの制御をします。   MODE SELECT SW2は拡張ボード用の為のメモリウェイト(未確認)   MODE SELECT SW1は未使用  031H(出力)      Bit7:バックグラウンドカラー       Bit6:バックグラウンドカラー       Bit5:バックグラウンドカラー       Bit4:グラフィック解像度   1=320×200、0=640×200      Bit3:グラフィックの表示   1=表示する   、0=表示しない      Bit2:カラーモード      1=モノクロモード、0=アトリビュートカラーモード      Bit1:メモリモード      1=RAMモード 、0=ROMモード      Bit0:拡張ROMセレクト   1=N80−ROM、0=拡張ROM   PC−8001mkII専用のポートでグラフィックとメモリの制御を行います。   メモリモードは00000H−07FFFHを本体内のROMかRAMの選択を行います。   拡張ROMセレクトは06000H−07FFFHのROM領域の選択になります。   リセット時、最初はN80−ROMが選択されています。(正確にはN−BASICとN80は同じROM16KB*2内に収納)  040H(出力)     Bit7:UOP2     Bit6:UOP1     Bit5:BEEP    1=オン、0=オフ     Bit4:未使用     Bit3:CRT     /CLDS CLK     Bit2:RTC CLK(μPD1990 データ・シフト)     Bit1:RTC STB(μPD1990 コントロール)     Bit0:PRT     /STROBE  05CH(出力)   08000H−0BFFFHのRAM領域をG−RAMに切り換えます   N/N80 BASICの割り込みベクタアドレスが08000Hから始まっていますので、   G−RAMを切り換えた後に割り込み要求が始まると暴走してしまいます。   したがってBASICシステムが動いていてアクセスする場合、   割り込みを禁止にするかベクタアドレスをG−RAM領域以外に移動する必要があります。  05FH(出力)   08000H−0BFFFHのRAM領域を本体メモリに切り換えます  0C8H(出力)不明 RS−232Cポートの使用禁止ゲート(出力データは何でもよい)  0CAH(出力)不明 RS−232Cポートの使用禁止ゲート(出力データは何でもよい)  0E8H(出力)漢字ROMアドレスの下位      (入力)漢字フォント下位の読み出し  0E9H(出力)漢字ROMアドレスの上位      (入力)漢字フォント上位の読み出し        0EAH(出力)漢字ROMの読み出し開始  0EBH(出力)漢字ROMの読み出し終了 本体内のジャンパ PC−8001mkIIには数ヶ所のジャンパがあります。 内容は不明(ひょとするとマニュアルに記してあるかもしれませんが) 恐らく後期ロットのPC−8801(製造番号下3桁がW〜Z)やPC−8801mkIIと同様に モニタの外部同期と内部同期の切り換えと割り込み関係かもしれません 割り込みの選択の可能性も考えられます。 本体の起動 PC−8001mkIIは起動(RESET)すると ディスクIPLルーチンの中で06000H−07FFFHを N80−BASICか拡張ROMの切り替えを行います この時に拡張ROMを選択していたらそのまま通常通りにディスクIPLルーチンを実行します N80−BASICのROMを選択していたらディスクルーチンを抜けだし 次の拡張ROMチェックに移ります 拡張ROMにはN80−BASICが現れているのでN80−BASICの起動へ移ります。 そこでN80−BASIC内のディスクIPLルーチン等を実行します また0BFFFHの内容でどのモードから起動したのかが判断出来るようになっています。  0BFFFH:000H=N−BASICから起動         02BH=N80−BASICから起動

FGU−8000について
使用ポート 0EFH:VRAM切り換えコントロール
PC−8001の使用ポート 000H−009H:キーボード(入力)  1=押されていない、0=押されている 00AH−00FH:未使用 010H:プリンタまたはμPD1990用 出力データ  プリンタの場合   Bit7:PD7   Bit6:PD6   Bit5:PD5   Bit4:PD4   Bit3:PD3   Bit2:PD2   Bit1:PD1   Bit0:PD0  μPD1990の場合   Bit7:未使用   Bit6:未使用   Bit5:未使用   Bit4:未使用   Bit3:μPD1990データ出力(DATA IN)   Bit2:コマンド出力 C2   Bit1:コマンド出力 C1   Bit0:コマンド出力 C0 011H−01FH:ポート010Hのイメージ 020H:μPD8251データ 021H:μPD8251コントロール       モード設定(出力)         非同期モード          Bit7:S2  ストップビット        11=2ビット、10=1+1/2ビット          Bit6:S1                 01=1ビット、00=無効          Bit5:EP  偶数パリティ発生/チェック 1=偶数   、0=奇数          Bit4:PEN パリティ・イネーブル    1=イネーブル、0=ディスイネーブル          Bit3:L2  キャラクタ長         11=8ビット、10=7ビット          Bit2:L1                 01=6ビット、00=5ビット          Bit1:B2 ボーレート           11=×64、10=×16          Bit0:B1                 01=×1 、00=同期モード         同期モード(出力)          Bit7:SCS 単一キャラクタ同期     1=単一SYNCキャラクタ、0ダブルSYNCキャラクタ          Bit6:ESD 外部同期検出        1=SYNDET入力   、0=SYNDET出力          Bit5:EP  偶数パリティ発生/チェック 1=偶数         、0=奇数          Bit4:PEN パリティ・イネーブル    1=イネーブル      、0=ディスイネーブル          Bit3:L2  キャラクタ長         11=8ビット、10=7ビット          Bit2:L1                 01=6ビット、00=5ビット          Bit1:0          Bit0:0       コマンド(出力)         Bit7:EH   HUNT          1=SYNCキャラクタの検出を始める           、0=何もしない         Bit6:IR   内部リセット        1=8251をモード・インストラクションフォーマットへ戻す、0=何もしない         Bit5:RTS  センド要求         1=センド要求をOnにする                、0=何もしない         Bit4:ER   エラーリセット       1=エラーフラグ(PE、OE、FE)をリセット      、0=何もしない         Bit3:SBRK センドブレイク・キャラクタ 1=ブレイクキャラクタの送信               、0=通常動作         Bit2:RXE  受信イネーブル       1=イネーブル                      、0=ディスイネーブル         Bit1:ETR  データ・ターミナルレディ  1=データ・ターミナルレディをOnにする         、0=何もしない         Bit0:TXEN 受信イネーブル       1=イネーブル                      、0=ディスイネーブル        スタータス(入力)         Bit7:DSR    データ・レディ       1=On     、0=Off         Bit6:SYNDET SYNCキャラクタ検出   1=キャラクタ検出、0=検出無し         Bit5:FE     フレミングエラー      1=エラー発生  、0=エラー無し         Bit4:OE     オーバーランエラー     1=エラー発生  、0=エラー無し         Bit3:PE     パリティエラー       1=エラー発生  、0=エラー無し         Bit2:T×E    送信バッファエンプティ   1=エンプティ  、0=フル         Bit1:R×RDY  受信レディ         1=レディ    、0=ビジィ         Bit0:T×RDY  送信レディ         1=レディ    、0=ビジィ 022H−02FH:ポート0020H、021Hのイメージ 030H(出力)     Bit7:未使用     Bit6:未使用     Bit5:CMT BS2     Bit4:CMT BS1     Bit3:CMT MOTOR 1=MOTORオン    、0=MOTORオフ     Bit2:CMT CHIN  1=マーク(2400Hz)、0=スペース(1200Hz)     Bit1:CRT 1=白黒               、0=カラー     Bit0:CRT 1=80行              、0=40行 031H−03FH:ポート030Hのイメージ 040H(出力)     Bit7:未使用     Bit6:未使用     Bit5:BEEP    1=オン、0=オフ     Bit4:未使用     Bit3:CRT     /CLDS CLK     Bit2:RTC CLK(μPD1990 データ・シフト)     Bit1:RTC STB(μPD1990 コントロール)     Bit0:PRT     /STROBE 040H(入力)     Bit7:未使用     Bit6:未使用     Bit5:CRT VRTC(/DMA BUSY) 1=垂直帰線期間  、0=表示または水平帰線期間     Bit4:RTC DO(μPD1990 DATA OUT)     Bit3:EXP /EXTON          1=接続されていない、0=接続されている     Bit2:CMT CDIN CMTからのキャリア信号が検出されたら1     Bit1:PRT /STROBEを/PR /ACKをCLK D=0にしたFF(LS74)のQ     Bit0:PRT /READY   *EXP /EXTONはPC−8001ではPC−8011/8012/8013/8033の接続の有無、               PC−8001mkII、PC−8801ではDISKユニットの接続の有無になります。 040H−04FH:ポート030Hのイメージ 050H:μPD3301 パラメータ(入出力) 051H:μPD3301 コマンド (入出力) 060H:μPD8257 Ch0 DMAアドレス・セット 061H:μPD8257 Ch0 ターミナルカウンタ・セット 062H:μPD8257 Ch1 DMAアドレス・セット 063H:μPD8257 Ch1 ターミナルカウンタ・セット 064H:μPD8257 Ch2 DMAアドレス・セット 065H:μPD8257 Ch2 ターミナルカウンタ・セット 066H:μPD8257 Ch3 DMAアドレス・セット 067H:μPD8257 Ch3 ターミナルカウンタ・セット 068H:μPD8257 モード・セットまたはステータス・リード 070H−07FH:未使用 080H−08FH:PC−8011用 /EXT0(ユーザー用) 090H−09FH:PC−8011用 /EXT1(ユーザー用) 0A0H−0AFH:PC−8011用 /EXT2(ユーザー用) 0B0H:PC−8011用 汎用パラレルI/Oポート 8ビット入力 0B1H:PC−8011用 汎用パラレルI/Oポート 8ビット出力 0B2H:PC−8011用 汎用パラレルI/Oポート 4ビット入力 0B3H:PC−8011用 汎用パラレルI/Oポート 4ビット出力 0B4H−0BFH:未使用 0C0H:RS−232C Ch1 8251データ入出力 0C1H:RS−232C Ch1 8251コントロール入出力 0C2H:RS−232C Ch2 8251データ入出力 0C3H:RS−232C Ch2 8251コントロール入出力 0C4H−0CFH:RS−232Cの使用禁止(データは何でもよく出力するだけで良い) 0D0H:PC−8011用 IEEE−488バス データ出力 0D1H:PC−8011用 IEEE−488バス データ入力 0D2H:PC−8011用 IEEE−488バス 制御信号出力 0D3H:PC−8011用 IEEE−488バス 8255 コントロール 0D8H:PC−8011用 IEEE−488バス 制御信号入力 0DAH:PC−8011用 IEEE−488バス マイアドレスモード入力 0DCH:PC−8011用 IEEE−488バス NRFD制御ストローブ 0DEH:PC−8011用 IEEE−488バス モード制御出力 0E0H:拡張メモリモード0セレクト 0E1H:拡張メモリモード1セレクト 0E2H:拡張メモリモード2セレクト 0E3H:拡張メモリモード3セレクト 0E4H:μPD8214カレントステータス出力 0E5H:μPD8214カレントステータス出力 0E6H:リアルタイム割り込み 0E7H:PC−8012 メモリ モード 0E8H−0EFH:未使用 0F3H:DMA転送方式 インターフェィスセレクト (8インチ、5インチ) PC−8001は使用不可 0F4H:DMA転送方式 8インチ インターフェイスチェック        PC−8001は使用不可 0F5H:DMA転送方式 8インチ マージンコントロール          PC−8001は使用不可 0F6H:DMA転送方式 8インチ FDCステータス・レジスタ       PC−8001は使用不可 0F7H:DMA転送方式 8インチ データ・レジスタ            PC−8001は使用不可 0F8H:DMA転送方式 5インチ インターフェイスチェック        PC−8001は使用不可 0F9H:DMA転送方式 5インチ マージンコントロール          PC−8001は使用不可 0FAH:DMA転送方式 5インチ FDCステータス・レジスタ       PC−8001は使用不可 0FBH:DMA転送方式 5インチ データ・レジスタ            PC−8001は使用不可 0FCH:PC−8031系インテリジェントタイプ ディスク 8255 PA 0FDH:PC−8031系インテリジェントタイプ ディスク 8255 PB 0FEH:PC−8031系インテリジェントタイプ ディスク 8255 PC 0FFH:PC−8031系インテリジェントタイプ ディスク 8255 CW
00000H コールドスタート 00008H ホットスタート  0006AHへジャンプします 00010H ストリング解析  入力:HL=ストリングポインタ(次のデータが読み込まれる)  出力:ストリングデータによる  指定したストリングデータの次のデータを読み  そのデータによって出力データが変わります  データはアスキーコードの数字だとCf=1、それ以外はCf=0になります      コントロールコードによって変わります  データ:000H      A=000H           Zf=1でRET      001H−008H A=001H−008H Cf=0、Zf=0でRET      009H−00AH 次のデータを読む      00BH−00EH 整数型                HL=042D1H、A=00BH−00EH、Cf=0でRET      00FH      次のデータを整数型の変数、次のストリングポインタを0EF48Hへ                HL=042D1H、A=00FH、Cf=0でRET      010H      ストリングポインタを0EF48Hにして次のデータを読む(ループ)      01CH      整数型                HL=042D1H、A=01CH Cf=0でRET      01DH      単精度型                HL=042D1H、A=01DH Cf=0でRET      01EH      A=0EF4AHの内容 Cf=0、Zf=0EF4AHの内容による      01FH      倍精度型                HL=042D1H、A=01FH、Cf=0でRET      020H      次のストリングデータを読む(ループ)      021H−02FH A=021H−02FH Cf=0、Zf=0でRET      030H−039H A=021H−02FH Cf=1、Zf=0でRET      03AH−0FFH A=03AH−0FFH Cf=0、Zf=0でRET 00018H 1文字出力  入力:0EB49H 000H     =CRT            001H−07FH=PRT            080H−0FFH=CMT     A=出力データ  フック0F183Hをコール  0EB49Hの指定したデバイスにデータを出力を行います 00099H ディスク入出力  入力: A=セクタ数      B=トラック番号      C=セクタ番号     DE=データの先頭番地     0EDC5H:000Hエラーカウンタ     0EDC6H:ドライブNo.nn(0−3)     Cf=1 ライト        0 ベリファイまたはリード     Zf=1 ベリファイ        0 リード  出力:Cf=1 エラー        0 エラー無し  使用:0EDB9H セクタ数  0F1B3Hをコール(フック)  Cf=1ならディスクコマンド001H(ライトディスク)     0ならディスクコマンド002H(リードディスク) 000CBH 拡張ユニットのチェック  出力:Zf=1 拡張ユニット無し        0 拡張ユニット有り  使用:A  /EXTONの状態を調べます  PC−8001ではPC−8011/8012/8013/8033の接続の有無、  PC−8001mkII、PC−8801ではDISKユニットの接続の有無になります。 000D2H ディスク イニシャライズ  出力:Zf=1 ディスク接続有り        0 ディスク接続無し      A=接続されているドライブ数     0EDC9H 使用するディスクのCW (通常は0FFH)  使用:0EDC5H エラー用リトライ カウンタ  プリンタの/STROBEを0から1にして拡張ユニットのチェック  拡張ユニットが接続していれば接続されているドライブ数のチェック  ディスクシステムをイニシャライズを行います。  ルーチン内でプリンタをアクセスするので、前もってポート010HにNull(000H)をセット 000FFH 接続ドライブ数を調べる  出力:A=接続されているドライブ数  ディスクコマンド 000H イニシャライズ・コマンドを実行してから  ディスクコマンド 007H ドライブ・ステータス・コマンドを実行してパラメータを読み  接続ドライブ数を調べます 00121H ディスクコマンドを送る(リード・ライト用)  入力: A=001H ライトディスク コマンド        002H リードディスク コマンド      B=トラック      C=セクタ      0EDB9H セクタ数      0EDC6H ドライブ(0から)  ディスクにデータの読み書きは行いませんディスクユニットにコマンドだけを送ります。 0017CH ディスクコマンドを送る  入力: A=コマンド  使用:0EDC9H 使用するディスクのCW (通常は0FFH)     0EDCBH タイムアップ カウンタ  ディスクユニットにコマンドデータを送ります 00183H ディスクパラメータを1バイト送る  入力: A=コマンド  使用:0EDC9H 使用するディスクのCW (通常は0FFH)     0EDCBH タイムアップ カウンタ  ディスクユニットにデータを送ります 001E9H ディスクパラメータを1バイト受け取る  出力: A=データ  使用:0EDC9H 使用するディスクのCW (通常は0FFH)  ディスクユニットからデータを受け取ります 00229H ディスク ポートCWに書き込む  入力: A=ライトデータ  使用: A     0EDC9H 使用するディスクのCW (通常は0FFH) 00234H ディスク ポートPCを読み込む  出力: A=リードデータ  使用: A     0EDC9H 使用するディスクのCW (通常は0FFH) 0023EH ディスク ポートPBに書き込む  入力: A=ライトデータ  使用: A     0EDC9H 使用するディスクのCW (通常は0FFH) 0024BH ディスク ポートPAを読み込む  出力: A=リードデータ  使用: A     0EDC9H 使用するディスクのCW (通常は0FFH) 00257H CRT1文字表示  入力: H=カーソルX座標(左端が01)      L=カーソルY座標(上端が01)      A=アスキーコード  使用:0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生     0EA59H カーソルのOn/Offを0EA5FHに従わせるフラグ     0EA57H 000H      現在のカーソル位置より次の行をクリアしない            001H−0FFH 現在のカーソル位置より次の行をクリアする     0EA58H ターミナルモード     0EA5AH ヌルキャラクタコード(COLOR文の第2パラメータ) 通常は000H     0EA5BH アトリビュートコード     0EA5DH スクロールの長さ 000Hで1行、001Hで2行…     0EA5EH スクロールの開始行−1 001Hで最上行になる     0EA5FH カーソルスイッチ 000H=表示しない、000H以外=表示する     0EA60H ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する       0EA62H 行数(白黒モード)019H=25行、14=20行     0EA63H カーソルY座標(上端が01)     0EA64H カーソルX座標(左端が01)     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字     0EA67H ポート040Hの出力した内容     0EB4AH 画面の実際の横の文字数     0ED99H カーソルX座標     0ED9AH−0EDB2H nn行が次の行とつながっているか 000H=繋がっている                                   000H以外=繋がっていない     0F300H−0FEB7H VRAM     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  画面に1文字表示を行い、カーソルは次に進みます  有効なコントロールコードは下記になりそれ以外はキャラクタコードとして表示されます   コントロールコード    007H ^G BeeL    00AH ^J    00BH ^K HoMe    00CH ^L CLear Screen    00DH ^M Carge Return    01CH カーソル 右    01DH カーソル 左    01EH カーソル 上    01FH カーソル 下 002CBH アトリビュートをキャラクタにする  入力:A=アトリビュート コード  出力:A=アトリビュート コード  使用:AF、C     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒  アトリビュート コードのBit4=0して  白黒ならBit7=0にします 002D7H CRT1文字表示 メイン  入力: H=カーソルX座標(左端が01)      L=カーソルY座標(上端が01)      A=アスキーコード  出力: B=アスキーコード  使用:AF、BC、HL     0EA5BH アトリビュートコード     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字  カーソル座標の位置にアスキーコードとアトリビュートコードの書き込みを行います  コントロールコードは文字データとして扱われます 002DEH アトリビュートセット、1文字表示  入力: A=アトリビュート コード      B=アスキーコード      H=カーソルX座標(左端が01)      L=カーソルY座標(上端が01)  使用:AF、BC     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字  カーソル座標の位置にアスキーコードとアトリビュートコードの書き込みを行います  コントロールコードは文字データとして扱われます 00350H ^G BEEPを1回鳴らす  使用: A     0EA67H ポート040Hの出力した内容  スピーカから一定時間鳴らします 00370H カーソルを右に一つ進める  入力: H=カーソルX座標(左端が01)      L=カーソルY座標(上端が01)  出力:Zf=1 カソールが右端を越えた        0 カーソルをセットした  使用:AF   カーソルが右端を越えたらZf=1でRETします   カーソルが右端を越えていなければX座標を+1にしてカーソルセット(003A9H)へジャンプします   カーソルセット(003A9H)では最後にカーソル位置をセットして必ずZf=0になって返ります 003A6H ワークエリアからカーソルセット  出力: L=カーソルX座標(左端が01)      H=カーソルY座標(上端が01)     0EA63H カーソルY座標(上端が01)     0EA64H カーソルX座標(左端が01)     0ED99H カーソルX座標(左端が00)  使用:AF、HL     0EA63H カーソルY座標(上端が01)     0EA64H カーソルX座標(左端が01)     0EA5FH カーソルスイッチ 000H=表示しない、000H以外=表示する  ワークエリア(0EA63H−0EA64H)を参照してカーソルをします  カーソルスイッチで表示する 場合 カーソル表示を行うようにCRTCに設定、ワークに座標をセット           表示しない場合 カーソル表示は行わずにワークに座標だけをセット 003A9H カーソルセット  入力: L=カーソルX座標(左端が01)      H=カーソルY座標(上端が01)  出力: L=カーソルX座標(左端が01)      H=カーソルY座標(上端が01)     0EA63H カーソルY座標(上端が01)     0EA64H カーソルX座標(左端が01)     0ED99H カーソルX座標(左端が00)  使用:AF、HL     0EA5FH カーソルスイッチ 000H=表示しない、000H以外=表示する  入力した座標の位置を参照してカーソルをセットします  カーソルスイッチで表示する 場合 カーソル表示を行うようにCRTCに設定、ワークに座標をセット           表示しない場合 ワークに座標をセット 003D9H 割り込みフラグのチェック  使用:AF     0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生  VRTC=1(垂直帰線期間)     になるまで待つ  0EA56H=000Hにする  VRTC=0(表示または水平帰線期間)になるまで待つ  0EA56H=000H     (割り込みが発生していない)はRET         001H−0FFH(割り込みが発生)     は最初から戻る  これは割り込みよりVRTCとDMAのバス制御の方が優先される為  VRTCのチェックが必要になっています 003F3H カーソル座標からアドレスに変換  入力: H=X座標(左端が01)      L=Y座標(上端が01)  出力:HL=VRAMアドレス  使用:AF、DE、HL  カーソル座標からVRAMアドレスに変換します 00401H オフセットアドレス変換  入力: H=X座標(左端が01)      L=Y座標(上端が01)  出力: H=X座標から計算したオフセット アドレス      L=Y座標(上端が00)  使用:AF、HL     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字   VRAMアドレス変換やカーソル表示する為に   H=各画面のX座標座標のアドレス、L=Y座標の値を−1に変換します 00451H ライン消去  入力:DE=消去するラインの先頭アドレス  使用:BC、DE、HL     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  指定したラインを0FEB8H−0FF2FHの内容に転送を行います 0045AH 画面クリア  使用:AF、BC、DE、HL     0EA5BH アトリビュートコード     0EA5CH ファンクションキー表示方法 000H=ベースアトリビュート、050H=リバース     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0ED9AH−0EDB2H nn行が次の行とつながっているか 000H=繋がっている                                    000H以外=繋がっていない     0F300H−0FEB7H VRAM     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  0FEB8H−0FF2FHに適切な1ラインクリアデータ(キャラクタ+ATB)をセット  0ED9AH−0EDB2Hにテキストライン接続データをセット  1ラインクリアデータを25行まで転送  ファンクションキーの表示指定はf.1からf.5に指定  カーソルを0,0にします 004DDH テキストスクロールの為の最下位の行の取得  出力: A=スクロールしない最下位の行  使用:AF、B     0EA5DH スクロールの長さ 000Hで1行、001Hで2行…     0EA5EH スクロールの開始行−1 001Hで最上行になる     0EA60H ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する     0EA62H 行数(白黒モード)019H=25行、14=20行  まず0EA60Hと0EA62Hの内容を足しBレジスタに入れます  ファンクションキー表示スイッチが表示する場合 行数+0FFH、つまり”行数−1”となります  次に0EA5DHと0EA5EHの内容を足しAレジスタに入れます   A≧BならA=B   A<BならA=A  このAレジスタが出力パラメータとなります 004F8H アトリビュートセット(1キャラクタのみ)  入力: H=X座標(左端が01)      L=Y座標(上端が01)      A=アトリビュートコード  使用: F、BC、HL、DE     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字 00622H アトリビュート データの取得  入力: H=X座標(左端が01)      L=Y座標(上端が01)  出力: A=X座標から計算したオフセット アドレス      B=アトリビュート第2データ(コード)      C=アトリビュート第1データ(桁)      D=X座標から計算したオフセット アドレス      E=残りのアトリビュート数(最大20個)     HL=次のアトリビュートのアドレス     Cf=1 アトリビュート データの取得を出来た        0 アトリビュート データの取得が出来なかった  使用:AF、BC、HL、DE     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字  指定したY座標の行のアトリビュート先頭アドレスから  指定したX座標よりアトリビュートの第1バイトが大きければ  その前のアトリビュートの第1と第2のデータを取得しCf=1にします  取得した次のデータアドレスをHLに出力を行います  また20個のアトリビュートを超えれば最後の第1と第2のデータを取得しCf=0にします 0065BH:アトリビュート 先頭アドレスの取得  入力: A=Y座標(上端が00)  出力:DE=アトリビュート 先頭アドレス  使用:HL  指定したY座標から、そのVRAMの先頭アドレスを計算して80バイト足して  アトリビュートエリアの先頭をDEに出力します 00664H VRAMの先頭アドレス計算  入力: A=Y座標(上端が00)  出力:DE=そのラインの先頭アドレス  使用:HL  指定したY座標から、そのVRAMの先頭アドレスを計算してDEに出力します 006A9H アトリビュート第1データ(桁)を進める  入力: A=アトリビュート第1データ(桁)  出力: A=進めたアトリビュート第1データ(桁)  使用: 0EA65H 白黒モードのときの1行の文字数 050H=80文字                             048H=72文字                             028H=40文字                             024H=36文字  アトリビュート第1データの内容を進めます(主にアトリビュート計算に使用)  VRAMの構造上、文字数によって進める値が変わります   72または80桁 +1   36または40桁 +2 006B8H PSET  入力:HL=パラメータデータアドレス  パラメータデータは文字列でカンマで区切りEND MARK 000Hを最後につけます。   DATA_PSET: DB '(10,10,7)',000H 00705H PRESET  入力:HL=パラメータデータアドレス  パラメータデータは文字列でカンマで区切りEND MARK 000Hを最後につけます。   DATA_PRESET: DB '(10,10,7)',000H 007C9H ファンクションキーの表示  入力:A=000H f・1 から f・5 を表示     A=005H f・6 から f・10を表示  使用:0EA58H ターミナルモード     0EA5BH アトリビュートコード     0EA60H ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字     0EA68H ファンクションキーフラグ 000H=フラグOff、000H以外でフラグOn     0EDC0H−0EDC1H:ファンクションキーポインタ     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  各画面のモードに合わせてファンクションキーの表示を行います 00843H WIDTHの設定  入力:HL=パラメータデータ アドレス     パラメータデータは文字列でカンマで区切りEND MARK 000Hを最後につけます。      DATA_WIDTH: DB '80,25',000H 00884H CONSOLEの設定  入力:HL=パラメータデータ アドレス     パラメータデータは文字列でカンマで区切りEND MARK 000Hを最後につけます。      DATA_CONSOLE: DB '0,25,0,1',000H 008F7H CONSOLE&WIDTHの設定  入力:BC=ファンクションキー表示スイッチ、カラー/白黒フラグ     0EA5CH:ファンクションキー表示方法 000H=ベースアトリビュート、050H=リバース     0EA5DH:スクロールの長さ     0EA5EH:スクロール開始行+1     0EA5FH:カーソルスイッチ 000H=表示しない、000H以外=表示する     0EA60H:ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する     0EA61H:カラー/白黒 000H=白黒、0FFH=カラー     0EA62H:カーソルY+1     0EA63H:カーソルX+1     0EA64H:1行文字数 00951H COLOR  入力:HL=パラメータデータ アドレス     パラメータデータは文字列でカンマで区切りEND MARK 000Hを最後につけます。      DATA_COLOR: DB '7,32,1',000H 009A3H WIDTH(横のみ)  入力: A=文字数(40または80)  使用:AF     0EA5BH アトリビュートコード     0EA5CH ファンクションキー表示方法 000H=ベースアトリビュート、050H=リバース     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字     0ED9AH−0EDB2H nn行が次の行とつながっているか 000H=繋がっている                                    000H以外=繋がっていない     0F300H−0FEB7H VRAM     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  設定する文字数と違う場合画面をクリア(045AHをコール)  文字数によってポート030HのBit0の設定を行います 009CFH ポート030H Bit0=0にする  入力: A=ポート030Hの出力データ  出力:0EA66H ポート030Hの出力した内容  使用:A  ポート030HのBit0=0(CRT 40行)にします 009D1H ポート030H出力  入力: A=ポート030Hの出力データ  出力:0EA66H ポート030Hの出力した内容  使用:A  ポート030Hにデータを出力、出力したデータを0EA66Hに書き込みます 009D7H WIDTH(縦のみ)  入力: A=行数(20または25)  使用:AF、BC、DE、HL     0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生     0EA58H ターミナルモード     0EA5DH スクロールの長さ 000Hで1行、001Hで2行…     0EA5EH スクロールの開始行 001Hで最上行になる     0EA60H ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0EA62H 行数(白黒モード)019H=25行、14=20行     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字     0EA67H ポート040Hの出力した内容     0EA68H ファンクションキーフラグ 000H=フラグOff、000H以外でフラグOn     0ED9AH−0EDB2H nn行が次の行とつながっているか 000H=繋がっている                                    000H以外=繋がっていない     0EDC0H−0EDC1H:ファンクションキーポインタ     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  25行から20行に変更する場合、5行テキストスクロール  20行から25行に変更する場合、VRAM(21行−25行)5行分をクリア、ファンクションキーの表示(007C9Hをコール)  CRTC、DMAの設定を行います 00B2EH ファンクションキーOff  入力:EA62H(行数019H=25行、14=20行)の内容  出力:A=0EA62H(行数019H=25行、14=20行)の内容  使用:BC、DE、HL     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  ファンクションキーの表示される部分の一番下の行をクリアします。 00B86H 指定した行の接続のオン・オフ  入力:A=000H      次の行と繋げる       001H−0FFH 次の行と繋げない     L=指定する行  出力:DE=0ED9AH−0EDB2H 指定した行のワーク  使用:A、DE     0ED9AH−0EDB2H nn行が次の行とつながっているか 000H=繋がっている                                    000H以外=繋がっていない  BASICのテキストラインを接続するか、しないか指定します 00BD2H カーソル消去  出力:0EA59H=000H カーソルのOn/Offを0EA5FHに従わせるフラグ  使用:AF     0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生     0EA63H カーソルYの位置(上端が01)     0EA64H カーソルXの位置(左端が01)     0ED99H カーソルX座標(左端が00)  CRTC OCW5=080Hにしてカーソル表示をオフにします 00BE2H カーソル表示  出力:0EA59H=0FFH カーソルのOn/Offを0EA5FHに従わせるフラグ  使用:AF     0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生     0EA63H カーソルYの位置(上端が01)     0EA64H カーソルXの位置(左端が01)     0ED99H カーソルX座標(左端が00)  CRTC OCW5=081Hにしてカーソル位置を設定します 00C22H CMT ロードの設定  使用:A  8251をCMT ロードの設定を行います  8251をリセット、04EH、014Hをポート021Hに書き込みます 00C2EH CMT クローズ、モータオフ  出力:0EA66H ポート030Hの出力した内容  使用:AF  WAIT0030000H  モータオフ、CHIN=1 (ポート030H Bit3=0、Bit2=1)にします 00C38H ポート030Hへ出力  入力: A=ポート030Hの出力データ  出力:0EA66H ポート030Hの出力データ  使用:A  ポート030Hへデータを出力、ワークに書き込みを行います 00C3EH CMT モータオン  出力:0EA66H ポート030Hの出力した内容  使用:AF  モータオン(ポート030H Bit3=1)にします 00C42H CMT モータオフ  出力:0EA66H ポート030Hの出力した内容  使用:AF  モータオン(ポート030H Bit3=0)にします 00C46H CMT ライトオープン  使用:AF    0EA66H ポート030Hの出力した内容      0F1B9をコール(フック)  ポート030HのBit7−4=0000 BS2、BS1=00 (600bps)          Bit3−2=11   モータオン、CHIN=1 マーク(2400Hz)  8251をリセット、0CEH、011H  WAIT0060000H  ポート030HのBit2=0 CHIN=0 スペース(1200Hz)  WAIT0010000H 00C6DH nn0000 WAITメイン  入力: E=カウンタnn  使用: F  EレジスタとHLレジスタを24ビットカウンタとしてDECして0になるまで待ちます  ただしこのルーチンでは最後にHLとDEをPOPするので  コールする前にDEとHLをPUSHしてからE=カウンタnnの設定を行います   PUSH DE   PUSH HL   LD   E,001H   CALL 00C6DH     | 00C7CH WAIT 0060000H  使用: F  E=006Hにして00C6DHをコールします 00C82H WAIT 0030000H  使用: F  E=003Hにして00C6DHをコールします 00C88H CMT 1バイト リード  出力:A=リード データ     Zf=1 リードデータが000H     の場合        0 リードデータが001H−0FFHの場合  使用:0EF3CH CMTの入力エラー(000H=エラー)  RxRDY=1になるまで待つ(最初に0F1A4のフックをコール)  その間、STOPキーが押されていればCMTクローズ、Tape read ERROR  ポート020Hからデータを読み込む(CMT 1バイトロード)  OE、PEのチェック(エラーチェック)   エラーが無ければRET、A=ロードデータになる   エラーがあれば0EF3CHのチェック  0EF3CH=000H     ならTape read ERROR         001H−0FFHなら0C22Hをコール、A=001HにしてRET 00CB3H CMT BAISCロード ’*’の点滅  使用:AF     0EB4AH 画面の実際の横の文字数  指定したBASICプログラムをロードまたベリファイした場合に’*’を点滅します  画面右上端から左へ−8した場所に’ ’なら’*’                  ’*’なら’ ’ 00CDAH CMT 1バイト ライト  入力:A=ライト データ  出力:A=ライト データ     Zf=1 ライトデータが000H     の場合        0 ライトデータが001H−0FFHの場合  使用:F  0F20DHをコール(フック)  TxRDY=1になるまで待つ  その間、STOPキーが押されていればCMTクローズ、Tape read ERROR  ポート020Hにデータを書き込む(CMT 1バイトライト) 00CF1H STOP、ESCキーのチェック  出力:Zf=1 STOP、ESCキーが押されていない        0      ESCキーが押されている     Cf=1 STOPキーが押されている        0 STOPキーが押されてない      A=003H ^C STOPキーが押されている        013H ^S ESC キーが押されている  使用:0EA75H キーポート09  STOP、ESCキーが押されたかチェックを行います 00D14H μPD8251 リセット  使用:A  本体内の8251をリセット(ポート021Hに00EH、040Hを書き込む)して  8251のモード設定を出来るようにします 00D4BH BEEP  入力: A=001H−0FFH BEEP 1      A=000H      BEEP 0  使用:AF、 E     0EA67H ポート040Hの出力した内容  Aレジスタが000Hか000Hで無いかで  ポート040HのBit5の出力を決めています 00D60H プリンタ 1バイト出力  入力: A=コード  使用:0EA67H ポート040Hの出力した内容     0EA75H キーポート09     0EB49H 出力デバイス 000H=CRT                   001H−07FH=PRT(05CHで出力中止)                   080H−0FFH=CMT  0F1BCHをコール(フック)  0EB49H=05CH(’¥’)なら終了  PRT /READY=0になるまで待つ(STOPキーチェックあり)  ポート010Hにコードを出力  PRT /STROBE 0から1にして終了     STOPキーが押された場合    0EA75HのBit0=0(STOP=0)にする    0EB49Hが000H(CRT)なら終了           001H−0FFHなら05CHにして終了 00F75H キー入力があるまで待つ  入力:0EA63H カーソルYの位置(上端が01)     0EA64H カーソルXの位置(左端が01)  出力:0EA59H 0FFH カーソルのOn/Offを0EA5FHに従わせるフラグ      A=キャラクタコード     Cf=1 キーが押された 00F7BH キー入力  入力:0EA63H カーソルYの位置(上端が01)     0EA64H カーソルXの位置(左端が01)  出力:0EA59H 0FFH カーソルのOn/Offを0EA5FHに従わせるフラグ      A=キャラクタコード     Cf=1 キーが押された        0 キーが押されていない 00FACH リアルタイム キー入力  出力:A=アスキーコード  使用:AF、BC、DE、HL     0EA58H ターミナルモード     0EA5BH アトリビュートコード     0EA60H ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する     0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字     0EA68H ファンクションキーフラグ 000H=フラグOff、000H以外でフラグOn     0EA69H キーボードから入力されたコード     0EA6AH 前回押した特殊キーのデータ             000H=入力なし             001H=SHIFTキー             002H=CTRLキー             003H=カナキー             004H=カナ + SHIFTキー             005H=GRPHキー     0EA6BH リピートカウンタ(リピート0=006H)     0EA6CH−0EA75H キーポート00−09     0EDC0H−0EDC1H ファンクションキーポインタ     0EDC2H キー入力で何か押されていれば000H     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  ファンクションキー入力があるかチェック、あればA=ファンクションキー入力データでRET  ESC,スペース、STOPキーのチェック、ファンクションキーの表示  キーポート09から読んでBit0から押されているかチェック(キーデータ作成)  キーデータが変更されたらキーリピートの設定  キーデータからアスキーコードに変換を行います  ポート0 Bit0 − ポート1 Bit1:テンキーの数字  ポート1 Bit2 − ポート1 Bit7:テンキーの演算、RET  ポート2 Bit0 − ポート5 Bit2:フルキーの@、英字  ポート5 Bit3 − ポート5 Bit7:フルキーの[から−  ポート6 Bit0 − ポート7 Bit1:フルキーの数字  ポート7 Bit2 − ポート7 Bit7:フルキーの*から_  ポート8 Bit0 − ポート9 Bit0:HOMEからSTOP  ポート9 Bit1 − ポート9 Bit5:ファンクションキー  のブロックに分かれて、  通常、シフト、CTRL、カナ、カナ+シフト、GRPHそれぞれのルーチンにジャンプして  アスキーコードとしてAレジスタに出力されます 0109AH キーポート データのセット  入力: A=キーポート データA      B=キーポート データB     HL=キーポート ワーク(主に0EA6CH−00EA75H)  出力: A=キーポート データ  使用:AF、B 、HL  キーポート データAを反転 AND キーポートワークをキーポートワークへ  キーポート データB XOR キーポートワークの内容をAレジスタへ出力 01602H タイマーリード  出力:0EA76H=秒(BCD)     0EA77H=分(BCD)     0EA78H=時(BCD)     0EA79H=日(BCD)     0EA7AH=月(BCD)     0EA7BH=年(BCD)     Cf=1 エラー        0 エラー無し  使用:AF、BC、DE、HL     0EA67H ポート040Hの出力した内容  RTCコマンド03:タイムリード  40Bitのシフトレジスタのデータを読み込み、各ワークに書き込む  曜日のデータをカットして月のデータのみとして0EA7AHに書き込む  もし0月ならSTOPキーのチェックをして最初へループする  この時STOPキーが押されていれば  Cf=1、RET  1〜12月ならCf=0、RET 01651H タイマーワーククリア(PC−8001のみ)  出力:0EA76H=000H     0EA77H=000H     0EA78H=000H     0EA79H=001H     0EA7AH=001H     0EA7BH=079H  使用:AF、BC、D 、HL     0EA67H ポート040Hの出力した内容  RTCコマンド04:TP=64Hz  タイマーのワークを初期状態79/01/01、00:00:00  タイマーセット(01663H)へジャンプします  *PC−8801/PC−8001mkIIでは使用出来ません   また初期値は83/01/01になります。(PC−8001mkII) 01663H タイマーセット  入力:0EA76H=秒(BCD)     0EA77H=分(BCD)     0EA78H=時(BCD)     0EA79H=日(BCD)     0EA7AH=月(BCD)     0EA7BH=年(BCD)  使用:AF、BC、D 、HL     0EA67H ポート040Hの出力した内容  RTCコマンド01:レジスタシフト、0EA76H−0EA7BHのデータをRTCに書き込む  RTCコマンド02:タイムセット/カウンタホールド  RTCコマンド03:タイムリード、RET 01675H RTCコマンドセット  入力:A=RTCコマンド  使用:AF、 C、     0EA67H ポート040Hの出力した内容  RTCコマンドセットを行います 01690H RTC 5バイト分データを書き込む  入力:HL=データアドレス(通常は0E7A6H)  使用:AF、BC、 D、HL    0EA67H ポート040Hの出力した内容    0EA7AH=月(BCD)  RTCにデータ5バイト(40Bit)のシフトデータの書き込みを行います  入力のHLは0EA7AHにしておかないと月のデータがおかしくなります 016A7H RTC データセット  入力:HL=データアドレス  使用:AF、BC、    0EA67H ポート040Hの出力した内容  RTCに8ビット分のデータの書き込みを行います 02068H RS−232C ワークの指定  出力:HL=0EB2EH RS−232C チャンネル1        0EB2FH RS−232C チャンネル2  使用:A、HL   0EED0Hで選択されているチャンネルでワークの指定を行います 0209BH RS−232C データ出力   前もってスタックに保存した出力データを取り出し、出力を行います 022D6H RS−232Cチャンネル セレクト  入力:A=001H RS−232C チャンネル1       002H RS−232C チャンネル2     A=それ以外Illegal function call  出力:C=選択したチャンネルのポート  使用:A、C  機種別に違うRS−232Cのチャンネルのポートを選択します  *PC−8001  ではチャンネル1がポート0C1H、チャンネル2がポート0C3H   PC−8001以外ではチャンネル1がポート021H、チャンネル2がポート0C3H 022E1H RSー232Cチャンネル ポートの設定  入力:A=001H RS−232C チャンネル1       002H RS−232C チャンネル2     A=それ以外Illegal function call  出力:0EA01H 出力ポート  使用:A  0EA00Hで行うポート出力をRS−232Cのチャンネル ポートにします 02D13H 16Bit10進表示  入力:HL=変換する数値  使用:0EF45H FACCの型 002H=整数型     0EF7BH 000H     0EF9AH−0EF9BH HLの値     0F0B7H FAccからストリング     0F0A8H 浮動少数点アキュームレータ     0F0A9H 浮動少数点アキュームレータ     RST 010Hで使用するワーク  HLの16進数データを10進数に表示します  カーソル行を消さないようにするには0EA57Hを000Hにする 04CCCH 英字の小文字から大文字に変換  入力: A=アスキーコード  出力: A=アスキーコード  使用:AF  アスキーコードのアルファベット小文字を大文字に変換します      05C66H マシン語モニタ  マシン語モニタに行きます 05E39H アスキーコード内 HEXチェック  入力: A=アスキーコード  出力: A=アスキーコード     Cf=1 16進数以外        0 16進数  Aレジスタの内容がアスキーコード16進数  0〜9(030H−039H)かA〜F(041H−049H)を調べます 05E83H 16進数を2桁のアスキーコードに変換  入力: A=数値  出力: D=上位のアスキーコード(16進数)      E=下位のアスキーコード(16進数)  使用:AF、DE  Aレジスタの内容をアスキーコードに変換しDEレジスタに出力します 05EA0H 2桁の16進数(文字列)を数値に変換  入力: D=上位のアスキーコード(16進数)      E=下位のアスキーコード(16進数)  出力: A=変換したデータ  使用:AF、DE  DEレジスタの2バイトアスキーコードを16進数の数値に変換してAレジスタに出力します 05ED3H CP HL,DE  入力: HL=データ      DE=データ  出力: Zf=1 HL = DE      Cf=1 HL < DE         0 HL > DE  Cf=0、HL=HL−DEを行いHLとDEの比較を行います(HLの内容は壊れません) 05FCAH CR/LF出力  入力: H=カーソルX座標(左端が01)      L=カーソルY座標(上端が01)  使用:A  使用:0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生     0EA59H カーソルのOn/Offを0EA5FHに従わせるフラグ     0EA57H 000H      現在のカーソル位置より次の行をクリアしない            001H−0FFH 現在のカーソル位置より次の行をクリアする     0EA58H ターミナルモード     0EA5AH ヌルキャラクタコード(COLOR文の第2パラメータ) 通常は000H     0EA5BH アトリビュートコード     0EA5DH スクロールの長さ 000Hで1行、001Hで2行…     0EA5EH スクロールの開始行−1 001Hで最上行になる     0EA5FH カーソルスイッチ 000H=表示しない、000H以外=表示する     0EA60H ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する       0EA62H 行数(白黒モード)019H=25行、14=20行     0EA63H カーソルY座標(上端が01)     0EA64H カーソルX座標(左端が01)     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字     0EA67H ポート040Hの出力した内容     0EB4AH 画面の実際の横の文字数     0ED99H カーソルX座標     0ED9AH−0EDB2H nn行が次の行とつながっているか 000H=繋がっている                                   000H以外=繋がっていない     0F300H−0FEB7H VRAM     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  CRの出力を行います   A=00DHにしてCRT1文字表示(00257Hをコール)   A=00AHにしてCRT1文字表示(00257Hをコール) 05FD4H スペースを表示する  入力: H=カーソルX座標(左端が01)      L=カーソルY座標(上端が01)  使用:A  使用:0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生     0EA59H カーソルのOn/Offを0EA5FHに従わせるフラグ     0EA57H 000H      現在のカーソル位置より次の行をクリアしない            001H−0FFH 現在のカーソル位置より次の行をクリアする     0EA58H ターミナルモード     0EA5AH ヌルキャラクタコード(COLOR文の第2パラメータ) 通常は000H     0EA5BH アトリビュートコード     0EA5DH スクロールの長さ 000Hで1行、001Hで2行…     0EA5EH スクロールの開始行−1 001Hで最上行になる     0EA5FH カーソルスイッチ 000H=表示しない、000H以外=表示する     0EA60H ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する       0EA62H 行数(白黒モード)019H=25行、14=20行     0EA63H カーソルY座標(上端が01)     0EA64H カーソルX座標(左端が01)     0EA65H 白黒モードのときの1行の文字数 050H=80文字                            048H=72文字                            028H=40文字                            024H=36文字     0EA67H ポート040Hの出力した内容     0EB4AH 画面の実際の横の文字数     0ED99H カーソルX座標     0ED9AH−0EDB2H nn行が次の行とつながっているか 000H=繋がっている                                   000H以外=繋がっていない     0F300H−0FEB7H VRAM     0FEB8H−0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分  画面にスペースの出力を行います   A=020HにしてCRT1文字表示(00257Hをコール) 05FF2H 垂直帰線期間になるまで待つ  出力:A=0EA67Hの内容 (ポート040Hの出力した内容)  使用:AF、     0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生  割り込みフラグのチェック(003D9Hをコール)行い  VRTC=1(垂直帰線期間)になるまで待ちます  VRTC=1(垂直帰線期間のなったらAレジスタに0EA67Hの内容を出力します ワークエリア 0EA00H−0EA02H:ポート出力 nnの値はプログラムによって変化する          EA00:D3 nn OUT (nn),A          EA02:C9    RET 0EA03H−0EA10H:除算で使用 0EA11H       :RND用カウンタ 0EA12H       :RND用ROMデータポインタ(1〜3) 0EA13H       :RND用ROMデータポインタ(0〜7) 0EA14H−0EA33H:RND用RAMデータ 4バイトで1組 0EA34H−0EA37H:前回発生したRNDの値 0EA38H−0EA3AH:ポート入力 nnの値はプログラムによって変化する          EA38:DB nn IN  A,(nn)          EA3A:C9    RET 0EA3BH−0EA4EH:USRのエントリーアドレス(USR0〜9)               2バイトで1組、未定義のUSRには044A5H(Illeagal function Call)が設定 0EA4FH       : 0EA50H−0EA51H:フリーエリア最終アドレス0E9FFH(CLEAR文で変化はしない) 0EA52H−0EA53H:コマンド・ステートメントの中間言語テーブル開始アドレス 033BDH 0EA54H       :RS−232Cバッファオーバーフローフラグ 000H以外でオーバーフロー 0EA55H       :割り込発生み直前の割り込みレベル 割り込みが発生されていない場合は0FFH 0EA56H       :割り込みがあったことを示すフラグ 000H以外で割り込みが発生 0EA57H       :000H以外を設定して1文字出力ルーチンをコールすると               現在のカーソル値より次の行をクリアする 0EA58H       :ターミナルモード                Bit7:1=ターミナルモード、0=ターミナルモードではない                Bit6:CRコード 1=LFする、0=LFしない                Bit5:パリティ 1=EVEN、0=ODD                Bit4:パリティ 1=つける、0=つけない                Bit3:1=半二重、0=全二重                Bit2:1=ASCII、0=JIS                Bit1:コントロールコード 1=表示する、0=表示しない                Bit0:プリンタへのエコーバック 1=する、0=しない 0EA59H       :カーソルのOn/Offを0EA5FHに従わせるフラグ 0EA5AH       :ヌルキャラクタコード(COLOR文の第2パラメータ) 通常は000H 0EA5BH       :アトリビュートコード               白黒モード                Bit7:1=グラフィック、0=キャラクタ                Bit6:−                Bit5:アンダーライン                Bit4:アッパーライン                Bit3:−                Bit2:リバース                Bit1:ブリンク                Bit0:シークレット               カラーモード(Bit3が1の場合)                Bit7:R                Bit6:G                Bit5:B                Bit4:1=グラフィック、0=キャラクタ                Bit3:1                Bit2:−                Bit1:−                Bit0:−               カラーモード(Bit3が0の場合)                Bit7:−                Bit6:−                Bit5:アンダーライン                Bit4:アッパーライン                Bit3:0                Bit2:リバース                Bit1:ブリンク                Bit0:シークレット 0EA5CH       :ファンクションキー表示方法(画面をクリアして切り替わる) 000H=ベースアトリビュート、050H=リバース 0EA5DH       :スクロールの長さ 000Hで1行、001Hで2行… 0EA5EH       :スクロールの開始行 001Hで最上行になる 0EA5FH       :カーソルスイッチ 000H=表示しない、000H以外=表示する 0EA60H       :ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する 0EA61H       :カラー/白黒モード 0FFH=カラー、000H=白黒 0EA62H       :行数(白黒モード)019H=25行、14=20行 0EA63H       :カーソルYの位置(上端が01) 0EA64H       :カーソルXの位置(左端が01) 0EA65H       :白黒モードのときの1行の文字数 050H=80文字                               048H=72文字                               028H=40文字                               024H=36文字 0EA66H       :ポート030Hの出力した内容                Bit7:未使用                Bit6:未使用                Bit5:CMT BS2                Bit4:CMT BS1                Bit3:CMT MOTOR 1=MOTORオン、0=MOTORオフ                Bit2:CMT CHIN  1=マーク(2400Hz)、0=スペース(1200Hz)                Bit1:CRT 1=白黒、0=カラー                Bit0:CRT 1=80行、0=40行 0EA67H       :ポート040Hの出力した内容                Bit7:未使用                Bit6:未使用                Bit5:BEEP    1=オン、0=オフ                Bit4:未使用                Bit3:CRT     /CLDS CLK                Bit2:RTC CLK(μPD1990 データ・シフト)                Bit1:RTC STB(μPD1990 コントロール)                Bit0:PRT     /STROBE 0EA68H       :ファンクションキーフラグ 000H=フラグOff、000H以外でフラグOn 0EA69H       :キーボードから入力されたコード 0EA6AH       :前回押した特殊キーのデータ                000H=入力なし                001H=SHIFTキー                002H=CTRLキー                003H=カナキー                004H=カナ + SHIFTキー                005H=GRPHキー 0EA6BH       :リピートカウンタ(リピート0=006H) 0EA6CH       :キーポート00 0EA6DH       :キーポート01 0EA6EH       :キーポート02 0EA6FH       :キーポート03 0EA70H       :キーポート04 0EA71H       :キーポート05 0EA72H       :キーポート06 0EA73H       :キーポート07 0EA74H       :キーポート08 0EA75H       :キーポート09 0EA76H       :秒(BCD) タイマリードした値 0EA77H       :分(BCD) タイマリードした値 0EA78H       :時(BCD) タイマリードした値 0EA79H       :日(BCD) リセットした時の値は001H 0EA7AH       :月(BCD) リセットした時の値は001H 0EA7BH       :年(BCD) リセットした時の値は079H 0EA7CH−0EA8BH:f・1の内容(最後は000H) HT 0EA8CH−0EA9BH:f・2の内容(最後は000H) auto 0EA9CH−0EAABH:f・3の内容(最後は000H) go to 0EAACH−0EABBH:f・4の内容(最後は000H) list 0EABCH−0EACBH:f・5の内容(最後は000H) run CR 0EACCH−0EADBH:f・6の内容(最後は000H) time$ 0EADCH−0EAEBH:f・7の内容(最後は000H) key 0EAECH−0EAFBH:f・8の内容(最後は000H) print 0EAFCH−0EB0BH:f・9の内容(最後は000H) list. CR 0EB0CH−0EB1BH:f・10の内容(最後は000H) cont CR 0EB1CH−0EB29H:PEST,PRESET,GET,PUT,LINE等で使用 0EB2AH−0EB45H:RS−232C用 0EB46H       :エラーコード 000H=エラー無し 0EB47H       : 0EB48H       :プリンタヘッド ポジション(LPOSの値) 0EB49H       :出力デバイス 000H=CRT,001H−07FH=PRT,080H−0FFH=CMT 0EB4AH       :画面の実際の横の文字数 0EB4BH       :40行=00EH、80行=038H 0EB4CH       : 0EB4DH       :画面の表示 0EB4EH       :PRINTルーチン用 0EB4FH       : 0EB50H−0EB51H:スタックポインタ(フリーエリアの最終から文字領域分を引く) 0EB52H−0EB53H:現在実行中のBASIC行番号 0EB54H−0EB55H:BASICプログラムの開始番地 0EB56H       : 0EB57H−0EC91H:中間言語バッファ 0EC92H−0EC95H: 0EC96H−0ED93H:キー入力バッファ 0ED94H−0ED98H: 0ED99H       :カーソルX座標(左端が00) 0ED9AH       :00行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0ED9BH       :01行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0ED9CH       :02行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0ED9DH       :03行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0ED9EH       :04行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0ED9FH       :05行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA0H       :06行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA1H       :07行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA2H       :08行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA3H       :09行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA4H       :10行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA5H       :11行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA6H       :12行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA7H       :13行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA8H       :14行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDA9H       :15行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDAAH       :16行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDABH       :17行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDACH       :18行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDADH       :19行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDAEH       :20行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDAFH       :21行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDB0H       :22行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDB1H       :23行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDB2H       :24行が次の行とつながっているか(000H=繋がっている、000H以外=繋がっていない) 0EDB3H       :CMTのとき 000H 0EDB4H       :画面から文字を読むときのY方向の始めの位置(1行入力の初期のカーソル位置) 0EDB5H       :画面から文字を読むときのX方向の始めの位置(1行入力の初期のカーソル位置) 0EDB6H       :X位置のどこまで読むか 0EDB7H−0EDB8H:TERM用 0EDB9H       :DISK用 セクタ数 0EDBAH       :PEST、PRESET、GET、PUT、LINE用 アトリビュート 0EDBBH       :PEST、PRESET、GET、PUT、LINE用 X(グラフィック) 0EDBCH       :PEST、PRESET、GET、PUT、LINE用 Y(グラフィック) 0EDBDH       :PEST、PRESET、GET、PUT、LINE用 カラーコード 0EDBEH−0EDBFH:PEST、PRESET、GET、PUT、LINE用 画面上のアドレス 0EDC0H−0EDC1H:ファンクションキーポインタ(ファンクションキー入力文字列の開始アドレス) 0EDC2H       :キー入力で何か押されていれば000H 0EDC3H       :キャラクタY座標 0EDC4H       :キャラクタX座標 0EDC5H       :DISK エラーカウンタ 0EDC6H       :DISK ドライブ(0から数える) 0EDC7H       :DISK 接続されているドライブ数 0EDC8H       : 0EDC9H       :DISK PPI CW 0EDCAH       :LINEで引くキャラクタ 0EDCBH       :DISK タイムアップ カウンタ 0EDCCH−0EDCDH: 0EDCEH−0EE4DH:RS−232C Ch1 バッファ 0EE4EH−0EECDH:RS−232C Ch2 バッファ 0EECEH−???   :RS−232C出力文字用 0EED0H       :RS−232C Chnn (000Hまたは001H) 0EED1H−0EF2BH: 0EF2CH−0EF35H:PUT、GET用 0EF36H−0EF3BH:CMT CSAVE、CLOAD用 ファイルネーム 0EF3CH       :CMTの入力エラー(000H=エラー) 0EF3DH       : 0EF3EH−0EF43H:CMT CLOAD中のファイルネーム 0EF44H       :変数認識ルーチンでDIMからきたフラグ(000H以外) 0EF45H       :FACCの型(002H=整数型、003H=文字型、004H=単精度型、008H=倍精度型) 0EF46H       :中間言語とリストの変換ルーチンで使用 0EF47H       :リストから中間言語の変換で文字を行番号とするフラグ 0EF48H−0EF49H:1ワード取得 ポインタ避難 0EF4AH       :1ワード取得 ACC避難 0EF4BH       :1ワード取得 精度(002H=整数型、004H=単精度型、008H=倍精度型) 0EF4CH−0EF53H:1ワード取得 フローティングポイントレジスタ 0EF54H−0EF55H:フリーエリア最終アドレス(CLEAR文の弟2パラメータ) 0EF56H−0EF57H:文字列用スタックポインタ 0EF58H−0EF75H:文字列用スタック(3バイトで1組) 0EF76H−0EF78H:カレントストリングディスクプリタ 0EF79H−0EF7AH:ストリングフリースペース 0EF7BH−0EF7CH: 0EF7DH−0EF7EH:ガベージコンクション用 変数ポインタ 0EF7FH−0EF80H:FOR文中でHL(テキストポインタ) 0EF81H−0EF82H:READ文ポインタがある行番号 0EF83H       :変数認識用 0EF84H       :READ 0EF85H−0EF86H: 0EF87H       :行番号からアドレスのフラグ 0EF88H       :AUTOフラグ 000H=実行しない、001H−0FFH=実行する 0EF89H−0EF8AH:AUTO次に発生する行番号 0EF8BH−0EF8CH:AUTO行番号の間隔 0EF8DH−0EF8EH:プログラムを実行する前のHLの値 0EF8FH−0EF90H:プログラムを実行する前のSPの値 0EF91H−0EF92H:エラーの起こった行番号 0EF93H−0EF94H:エラーの起こった行番号コピー(プログラムが実行中のとき) 0EF95H−0EF96H:ERROR文のアドレス 0EF97H−0EF98H:ON ERROR GOTO〜のアドレス 0EF99H       :ON ERROR GOTO〜のフラグ 0EF9AH−0EF9BH:HLの値 0EFA0H−0EFA1H:変数領域の開始アドレス 0EFA2H−0EFA3H:配列変数領域の開始アドレス 0EFA4H−0EFA5H:フリーエリア先頭アドレス 0EFA6H−0EFA7H:READ文ポインタ(現在DATA文でREADするアドレス) 0EFA8H−0EFC1H:変数の指定 DEF文で変わる(A〜Z) 0EFC2H−0F090H:FN用 0F091H       : 0F092H−0F095H:変数の検索で使用 0F096H−0F097H:ガベージコンクション用 0F098H−0F099H:FN用 0F09AH−0F0A1H:SWAP用フローティングポインタ 0F0A2H       :TRON用フラグ 001HでTRON 0F0A3H       :浮動少数点アキュームレータ 0F0A4H−0F0ABH 倍精度 0F0A4H       :浮動少数点アキュームレータ 0F0A8H−0F0ABH 単精度 0F0A5H       :浮動少数点アキュームレータ 0F0A8H−0F0A9H 整数 0F0A6H       :浮動少数点アキュームレータ 0F0A7H       :浮動少数点アキュームレータ 0F0A8H       :浮動少数点アキュームレータ 0F0A9H       :浮動少数点アキュームレータ 0F0AAH       :浮動少数点アキュームレータ 0F0ABH       :浮動少数点アキュームレータ 0F0ACH       :符号 0F0ADH−0F0B5H:倍精度演算用数値(0F0B5H符号) 0F0B6H−0F0BCH:HEX$,OCT$用 0F0B7H−0F0CDH:FAccからストリング 0F0CEH−0F0D0H: 0F0D1H−0F0D8H:倍精度除算用 0F0D9H−0F0DDH: 0F0DEH−0F0E0H:単精度乗算用 0F0E1H−0F215H:N−BASIC用ジャンプテーブル        0F0E1H:CVIフック        0F0E4H:CVSフック        0F0E7H:CVDフック        0F0EAH:EOFフック        0F0EDH:LOCフック        0F0F0H:LOFフック        0F0F3H:MKI$フック        0F0F6H:MKS$フック        0F0F9H:MKD$フック        0F0FCH:CMDフック        0F0FFH:OPENフック        0F102H:FIELDフック        0F105H:ISETフック        0F108H:IRSETフック        0F10BH:TALKフック        0F10EH:LISTENフック        0F111H:MATフック        0F114H:POLLフック        0F117H:WBYTEフック        0F11AH:RBYTEフック        0F11DH:???フック        0F120H:BCD$フック        0F123H:DECフック        0F126H:LFILESフック        0F129H:GET#(01888H)フック        0F12CH:DSKO$フック        0F12FH:FORMATフック        0F132H:PUT#(01893H)フック        0F135H:CLOSEフック        0F138H:LOADフック        0F13BH:MERGEフック        0F13EH:NAMEフック        0F141H:KILLフック        0F144H:LSETフック        0F147H:RSETフック        0F14AH:SAVEフック        0F14DH:FILESフック        0F150H:REMOVEフック        0F153H:MOUNTフック        0F156H:SETフック        0F159H:DSKFフック        0F15CH:DSKI$フック        0F15FH:ATTR$フック        0F162H:02327Hフック        0F165H:02345Hフック        0F168H:FPOSフック        0F16BH:エラーメッセージフック        0F16EH:BASICコマンド待ちの前のフック        0F171H:未使用        0F174H:BASICコマンド待ちでRETを押された後のフック        0F177H:03D6AHフック        0F17AH:03D70Hフック        0F17DH:03E23H,04331Hフック        0F180H:04873Hフック        0F183H:RST 018H(040A6H)フック        0F186H:0413FHフック        0F189H:04540Hフック        0F18CH:04745Hフック        0F18FH:04791Hフック        0F192H:047EAHフック        0F195H:047EFH、04838Hフック        0F198H:048E2Hフック        0F19BH:0497AHフック        0F19EH:キー入力(00F9FH)フック        0F1A1H:04885Hフック        0F1A4H:CMT1バイトロード(00C88H)フック        0F1A7H:ディスクエラー(00175H)フック        0F1AAH:???Hフック        0F1ADH:03C0DHフック        0F180H:STOP+RESET(00081H)フック        0F1B3H:ディスク入出力(0009CH)フック        0F1B6H:CMTリ−ド(00BF3H)フック        0F1B9H:CMTライト(00C46H)フック        0F1BCH:プリンタ1バイト出力(00D60H)フック        0F1BFH:TERM(000B8H)フック        0F1C2H:04BF9Hフック        0F1C5H:04E47Hフック        0F1C8H:エラー処理(03BF9H)フック        0F1CBH:03EA8Hフック        0F1CEH:05818Hフック        0F1D1H:0547CHフック        0F1D4H:05306Hフック        0F1D7H:016C5Hフック        0F1DAH:RST 020Hフック        0F1DDH:RST 028Hフック        0F1E0H:RST 030Hフック        0F1E3H:RST 038Hフック        0F1E6H:/INT7フック        0F1E9H:/INT6フック        0F1ECH:???フック        0F1EFH:???フック        0F1F2H:04742Hフック        0F1F5H:048DAHフック        0F1F8H:04847Hフック        0F1FBH:04939Hフック        0F1FEH:04BFCHフック        0F201H:04642Hフック        0F204H:041FAHフック        0F207H:016C2Hフック        0F20AH:00E37Hフック        0F20DH:CMT1バイトライト(00CDAH)フック        0F210H:???フック        0F213H:未使用 0F216H−0F2FFH:空き 0F300H−0FEB7H:VRAM 0FEB8H−0FF2FH:クリアする時にVRAMに書き込むデータ1行(80+40バイト)分 0FF30H−0FF3CH:マシン語モニタ用 0FF3DH−0FFFFH:イニシャライズ用(使用後は空き)
PC−8001mkII用 06BA1H グラフィックモード設定   0E6C7H:CMD SCREENの第1パラメータ   0E6C8H:CMD SCREENの第2パラメータ   0E6C9H:CMD SCREENの第3パラメータ 06C5FH  ビューポート設定   0E6DBH−0E6DCH:左上X座標   0E6DDH−0E6DEH:左上Y座標   BC=右下X座標   DE=右下Y座標 06F27H  PSET  In:   HL=X座標   DE=Y座標   0ED9H:グラフィック機能モード       000H:PSET       001H:PRESET       002H:AND       003H:OR       004H:XOR   0E6DAH:カラーコード 07009H  LINE  In:   0E6DBH−0E6DCH:始点X座標   0E6DDH−0E6DEH:始点Y座標   0E6DFH−0E6E0H:終点X座標   0E6E1H−0E6E2H:終点Y座標 0728FH  BOX  In:   0E6DAH:カラーコード   0E6DBH−0E6DCH:始点X座標   0E6DDH−0E6DEH:始点Y座標   0E6DFH−0E6E0H:終点X座標   0E6E1H−0E6E2H:終点Y座標 072E3H  BOX FILL  In:   0E6DAH:カラーコード   0E6DBH−0E6DCH:始点X座標   0E6DDH−0E6DEH:始点Y座標   0E6DFH−0E6E0H:終点X座標   0E6E1H−0E6E2H:終点Y座標 07378H  GRAMクリア 074EAH  PAINT  In:   0E6DBH−0E6DCH:始点X座標   0E6DDH−0E6DEH:始点Y座標   0E6DAH       :カラーコード   0E72EH−0E72FH:PAINTの境界色 07821H  円を描く  In:   0E6FAH−0E6FBH:円の中心X座標   0E6FCH−0E6FDH:円の中心Y座標   0E6FEH−0E6FFH:円の半径   0E700H−0E703H:円弧開始角(単精度)   0E704H−0E707H:円弧終了角(単精度)   0E708H−0E70BH:円の扁平率(単精度) 07825H  円を描く  In:   0E6FAH−0E6FBH:円の中心X座標   0E6FCH−0E6FDH:円の中心Y座標   0E6FEH−0E6FFH:円の半径   0E6DAH       :カラーコード   0E708H−0E70BH:円の扁平率(単精度) 07A9AH  ハードコピー  In:   A=001H テキスト   A=002H グラフィック   A=003H テキスト+グラフィック   A=004H グラフィック 縦1/2   A=005H テキスト+グラフィック 縦1/2  Out:   Cf=1 STOPキーで中断 07C94H  漢字の表示  In:   0E6DBH       :X座標   0E6DCH       :Y座標   0E6D9H       :機能   0E6E3H       :パレットコード   0E6E5H−0E6E6H:JISコード   0E6E7H       :所属 ワークエリア  0E6C7H:CMD SCREENの第1パラメータ  0E6C8H:CMD SCREENの第2パラメータ  0E6C9H:CMD SCREENの第3パラメータ  0E6CAH:フォアグランドカラー  0E6CBH:バックグランドカラー  0E6D4H−0E6D5H:最終参照点X座標  0E6D6H−0E6D7H:最終参照点Y座標  0E6D8H:グラフィックスクリーンモード          000H:アトリビュートカラー          001H:4色カラー0          002H:4色カラー1          0FFH:モノクロ  0E6D9H:グラフィック機能モード          000H:PSET          001H:PRESET          002H:AND          003H:OR          004H:XOR  0E6DAH:カラーコード  0E6DBH−0E6DCH:始点X座標  0E6DDH−0E6DEH:始点Y座標  0E6DFH−0E6E0H:終点X座標  0E6E1H−0E6E2H:終点Y座標  0E6E5H−0E6E6H:JIS漢字コード  0E6E7H:漢字の大きさ          000H:全角          003H:半角          004H:1/4  0E6FAH−0E6FBH:円の中心X座標  0E6FCH−0E6FDH:円の中心Y座標  0E6FEH−0E6FFH:円の半径  0E700H−0E703H:円弧開始角(単精度)  0E704H−0E707H:円弧終了角(単精度)  0E708H−0E70BH:円の扁平率(単精度)  0E72EH−0E72FH:PAINTの境界色
Home へ戻る