,,1Z-009Aモニタサブルーチン, "エントリー ポイント (16進番地)",サブルーチン名,サブルーチンの機能,レジスタ保存 $0006,CALL LETNL,行を替えて、次の行の先頭にカーソルをセット。,AF以外は保存 $000C,CALL PRNTS,テレビ画面のカーソル位置にスペースを1個だけ表示。,AF以外は保存 $0012,CALL PRNT,"ACCにあるデータをASCIIコードと見て、テレビ画面のカーソル位置に表示。 ASCIIコードと、キャラクタ番号は異なることに注意。 ただし、0Dコードのときは、キャリッジリターンが実行され、 11-16コードのときは、それぞれカーソルコントロールが実行される。",AF以外は保存 $0015,CALL MSG,"テレビ画面のカーソル位置からメッセージを表示。 メッセージの先頭アドレスは、DEレジスタに指定しておく。 メッセージは、ASCIIコードで構成し、エンドマークは、0Dコードであること。 ただし、キャリッジリターンは実行されない。カーソルコードは実行される。",全レジスタ保存 $003E,CALL BELL,高音のラ(約880Hz)を瞬間だけ鳴らす。,AF以外は保存 $0030,CALL MELDY,"音楽データを演奏。 音楽データの先頭アドレスは、あらかじめDEレジスタに指定しておく。 音楽データは、BASICのMUSIC命令で示したストリングと同様、 音程、音の長さの順にASCIIコードで表現し、 エンドマークは、0DまたはC8(キャラクタは■)であること。 ただし、リターン時にCフラグが0なら演奏完了、 Cフラグが1なら途中でBREAKキーが押されたことを示す。",AF以外は保存 $0041,CALL XTEMP,"演奏テンポを設定。 テンポのデータ(01から07)をACCにセットしてコールする。 ACC=01 : 最も遅い、ACC=04 : 中速度、ACC=07 : 最も早い 注意点。ACCに入れるコードは、1から7までのバイナリコードであり、 '1’から’7’に相当するASCIIコード(31から37)ではない。",全レジスタ保存 $0044,CALL MSTA,"指定された分周比の音を連続して鳴らす。 分周比 n n’ (2byteのデータ)は、 11A1番地に n’、11A2番地にnをストアしてコールする。 分周比と発生周波数の関係は、895KHz/nn’","BC,DEだけ保存" $0047,CALL MSTP,音の発生を止める。,AF以外は保存 $0033,CALL TIMST,"内蔵された時計をセット。時計はこのコールで起動される。 コールの条件は、 ACC=0(AM)、ACC=1(PM)、 DE=時間を秒に直したもの(バイナリで2byte)",AF以外は保存 $003B,CALL TIMRD,"内蔵された時計の値を読み取る。リターン時の状態は、 ACC=0(AM)、ACC=1(PM)、 DE=時間を秒に直したもの(バイナリで2byte)","AF, DE以外は保存" $001E,CALL BRKEY,"SHIFT+BREAKが押されたかチェックする。 Zフラグセット : 押されている。 Zフラグリセット : 押されていない",AF以外は保存 $0003,CALL GETL,"キーボードから1行分を入力。 * 入力データをストアするスタートアドレスをDEレジスタに指定。 * エンドマークはキャリッジリターンによる。 * エンドマークとして0Dコードがセットされる。 * 入力文字数は、0Dコードを含めて最大80文字。 * キー入力はエコーバックが行われ、カーソルコントロールも受け付ける。 * SHIFT+BREAKが押されたら、DEレジスタの示すアドレスの先頭に、 BREAKコード、次にキャリッジリターンがセットされて戻る。 * ひらがな、英小文字のキー入力の場合、 例えば LineA……という文字は、 4C 05 49 4E 45 05 41……と入力される。 05は英小文字またはひらがなを表わすコードで、 1番目に現れた05の後の英文字/カタカナは、英小文字/ひらがなとなり、 2番目の05でその後も文字を英大文字/カタカナに戻す。 そのため、ひらがな/英小文字が含まれている場合、 入力文字数は80文字より少なくなる。 また、この場合V-RAMのカラー情報データ(D800番地以降)の 7ビット目をONにし、英小文字/ひらがながテレビ画面に表示される。 ",全レジスタ保存 $001B,CALL GETKY,"キーボードから1文字だけASCIIコードをACCに取り込む。 * キー入力がなければ、ACCに00がセットされて戻る。 * キー入力によるチャタリングは防止していない。 * エコーバックも行わない。 * DELやCRなどの特殊キーが押されると、 ASCIIコードとは別の特殊コードがACCに取り込まれる。 特殊キー入力によってACCに取り込まれるコードは以下の通り。 (特殊キー、ACCに取り込まれるコード、ディスプレイコードの順で記載) DEL : 60 : C7 INST : 61 : C8 英数 : 62 : C9 カナ : 63 : CA BREAK : 64 : CB CR : 66 : CD カーソルキー ↓ : 11 : C1 カーソルキー ↑ : 12 : C2 カーソルキー → : 13 : C3 カーソルキー ← : 14 : C4 HOME : 15 : C5 CLR : 16 : C6",AF以外は保存 $03DA,CALL ASC,"ACCの下位4ビットを16進数と見なし、 ASCIIに変換したものをACCにセットして戻る。",AF以外は保存 $03F9,CALL HEX,"ACCの8ビットをASCIIと見なし、16進数に変換したものを、 ACCの下位4ビットにセットして戻る。 リターン時CF=0ならACCは16進数、 リターン時CF=1ならACCは保証されない。",AF以外は保存 $0410,CALL HLHEX,"連続した4個のASCII列を16進数と見なし、HLレジスタにセットして戻る。 コール及びリターン条件は以下。 DE=ASCII列の先頭アドレス (例:’3’ ‘1’ ‘A’ ‘5’) CALL HLHEX CF=0 HL=16進数 (例 HL=31A5h) CF=1 HL内容は保証されない","AF, HL以外は保存" $041F,CALL 2HEX,"連続した2個のASCII列を16進数と見なし、ACCにセットして戻る。 コール及びリターン条件は以下。 DE=ASCII列の先頭アドレス (例: ‘3’ ‘A’) CALL 2HEX CF=0 ACC=16進数 (例: ACC=3Ah) CF=1 ACCの内容は保証されない","AF, DE以外は保存" $09B3,CALL ??KEY,"カーソルを点滅させながらキー入力を待つ。 キー入力があるとディスプレイコードに変換してACCにセット後、戻る。",AF以外は保存 $0BB9,CALL ?ADCN,"ASCII値をディスプレイコードに変換。 ACC=ASCII値 CALL ?ADCN ACC=ディスプレイコード",AF以外は保存 $0BCE,CALL ?DACN,"ディスプレイコードをASCII値に変換。 ACC=ディスプレイコード CALL ?DACN ACC=ASCII値",AF以外は保存 $0DA6,CALL ?BLNK,"テレビ画面の垂直ブランキングをチェック。 垂直ブランキング期間になるまで待ち、ブランキングになったら戻る。",全レジスタ保存 $0DDC,CALL ?DPCT,"テレビ画面上のディスプレイをコントロールする。 コール時のACCとコントロール内容の関係は以下の通り。 (ACCの値、コントロール内容の順で記載) C0h : スクローリング C1h : ↓キーと同機能 C2h : ↑キーと同機能 C3h : →キーと同機能 C4h : ←キーと同機能 C5h : HOMEキーと同機能 C6h : CLRキーと同機能 C7h : DELキーと同機能 C8h : INSTキーと同機能 C9h : 英数キーと同機能 CAh : カナキーと同機能 CDh : CRキーと同機能",全レジスタ保存 $0FB1,CALL ?PONT,"現在のテレビ画面におけるカーソル位置をHLにセット。 CALL ?PONT HL=テレビ画面上のカーソル位置(バイナリ)","AF, HL以外は保存"