システムサブルーチン

ページ名:システムサブルーチン

PC-6001(モード1~4)のみで使えるものは (N60), PC-6001mkII/PC-6601(モード5)のみで使えるものは (N60m) と記述してあります. どちらも書いていないものは両方で使えます.

PC-6001mkIISR/PC-6601SR(モード6)については, BIOSが大幅に変更されているため, ここでは触れません.

0010H スペースをとばして1文字読む

アドレス 0010H
概要 スペースをとばして1文字読む
破壊 AF----HL
入力 HL←先頭の文字の1つ前のアドレス
出力

A←20H(スペース)でない最初のコード

HL←Aレジスタの内容のアドレス

CY←1 (30H≦A≦39Hの時)

Z←1 (A=00H,3AH(コロン)の時)

解説

HLレジスタで指定する次のアドレスの内容を,Aレジスタに入れます.ただし20H(スペース)の場合は読みとばして,20H以外のコードが見つかるまでHLレジスタをインクリメントし,そのコードをAレジスタに入れます.

Aレジスタの値が,数字を表すASCIIコード(30H~39H)の場合はCY=1とし,00Hから3AH(コロン)の場合にはZ=1として戻ります.

次のサンプルプログラムは,任意の文字をキーインして(スクリーンエディットできます),そのうちスペースでない文字だけを表示するものです.STOPキーを押すと,リターンします.

サンプル
              ;
              ; TEST PROGRAM OF RST 10H
              ;
                ORG 0D800H
              ;
D800          INPUT:
D800 2113D8     LD HL,MSG
D803 CDCF30     CALL 30CFH          ; メッセージ出力
              ;
D806 CDF928     CALL 28F9H          ; LINE INPUT
D809 D8         RET C               ; IF STOP KEY
              ;
D80A          LOOP:
D80A D7         RST 10H
D80B B7         OR A
D80C 28F2       JR Z,INPUT
D80E CD7510     CALL 1075H          ; CRT 1バイト出力
D811 18F7       JR LOOP
              ;
D813          MSG:
D813 0D0A       DEFB 0DH,0AH
D815 494E5055   DEFB 'INPUT ? ',00H
D819 54203F30
D81D 00
              ;
D81E            END

0020H HLとDEの比較

アドレス 0020H
概要 HLとDEの比較
破壊 AF------
入力

DE←符号なし16ビット整数

HL←符号なし16ビット整数

出力

HL>DEの時 Z←0, CY←0

HL=DEの時 Z←1, CY←0

HL<DEの時 Z←0, CY←1

解説

HLレジスタの内容と, DEレジスタの内容(それぞれ符号なしの16ビット整数) を比較し, 結果をゼロフラグ(Z)とキャリーフラグ(CY)に入れて戻ります.

1058H キーバッファのクリア

アドレス 1058H
概要 キーバッファのクリア
破壊  
入力

 

出力

 

解説

キーバッファをクリアします. ここでいうキーバッファとは, キー入力用のバッファ(FBB9H~FBF8H)のことで, スクリーンエディット用のバッファ(FEDAH~FF21H)のことではありません.

従って, 先行入力したデータをすべて消すことができるので, ゲームなどに利用できます.

1061H STICK・STRIGデータ入力

アドレス 1061H
概要 STICK・STRIGデータ入力
破壊 AF------
入力

 

出力

A←FECAHの内容

解説

このサブルーチンでは, μPD8049にコマンド6を出力して, STICK・STRIG関係のキー入力を調べ, その結果をFECAHとAレジスタに格納します. この時のデータは以下のようになっていて, 押されたキーのビットが1になります.

ビット 7 6 5 4 3 2 1 0
キー SPACE   STOP SHIFT

 

1A61H CMT LOADイニシャライズ

アドレス 1A61H
概要 CMT LOADイニシャライズ
破壊 --------
入力

 

出力

 

解説

8049に, CMTをLOAD用にOPENするコマンドを出力し, モーターをONにします.

1A70H CMTからの1バイト入力

アドレス 1A70H
概要 CMTからの1バイト入力
破壊 AF------
入力

 

出力

A←入力したデータ

Z←0 (異常終了)

Z←1 (正常終了)

解説

CMTより1バイト入力し, Aレジスタにそのデータを格納します. 正常終了した場合はZフラグを1に, 異常終了した場合(STOPキーを押した時, リードエラーが発生した時) はZフラグを0にして戻ります.

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する

NG表示方式

NGID一覧