| 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 へ戻る