N−BASIC
コマンド(カッコ内は中間言語) AUTO〔〔行番号〕〔,増分〕〕 自動的に行番号を発生します 行番号は0〜65529 増分は 1〜65529まで [STOP]または^Cで中止します このコマンド動作中、他の行番号のプログラムは修正不可 CLEAR〔文字領域の大きさ〕〔,メモリの上限〕 文字領域の大きさをバイト数で指定、 全ての数値変数を0、文字変数を””(ヌルストリング)に 初期化します またDEFFN、DEFUSR、DEFINTの指定も無効になります メモリの上限はBASICで使用する上限番地の指定で 機械語の領域確保に使用します CLOAD”ファイル名” プログラムを消去してカセットから BASICプログラムをロードします ファイル名は6文字まで、省略不可 指定したファイルが見つかると画面右上に*が点滅 FOUND:ファイル名 と表示されロードされます 指定したファイルと違うのがみつかると Skip:ファイル名 と表示されます CLOAD?”ファイル名” 現在メモリにあるBASICプログラムと ファイル名で指定されたファイルの比較を行います 内容が合えば“Ok”、違うと“Bad”と表示されます ファイル名は6文字まで、省略不可 CONT BASICプログラムを[STOP]またはSTOP、ENDコマンドで 停止したプログラムの実行を再開します 通常は停止した次のプログラムから再開ですが INPUT、LINE INPUTの実行が停止した場合 その行から再開します プログラムの修正、追加するとコマンド実行は不可 変数の変更は可 CSAVE”ファイル名” カセットへBASICプログラムをセーブします ファイル名は6文字まで、省略不可 DELETE開始行番号〔−終了行番号〕 開始行番号から終了行番号までのプログラムを削除します 終了行番号が無い場合は、開始行番号のみを削除します KEY LIST ファンクションキーの内容を画面に表示します 左縦一列が[f.1]〜[f.6]の内容 右縦一列が[f.6]〜[f.10]の内容 LIST〔開始行番号〕〔−〔終了行番号〕〕 メモリにあるプログラムを画面に表示します 開始、終了行番号を省略して実行すると 最初からプログラムを表示します 開行番号のみの場合、その行を表示します 開行番号−の場合、その行から最後までを表示します LLIST〔開始行番号〕〔−〔終了行番号〕〕 メモリにあるプログラムをプリントアウトします 行番号の指定はLISTと同様 MON 機械語モニタに制御を移します NEW プログラムを消去し、全ての変数をクリアします RENUM〔〔新行番号〕〔,〔旧行番号〕〔,間隔〕〕〕 プログラム行番号の整理を行います 新行番号は新しくする行番号 (省略は10) 旧行番号は整理し始める行番号 (省略はプログラムの最初の行番号) 間隔は新しくする各行番号の増分(省略は10) GOTO、GOSUB、ON…GOTO、ON…GOSUB、ERL等で 前の行番号が無い場合 “Undefined Line nnnn in mmmm”と表示され nnnnは無かった番号、 mmmmはその文の新しい行番号で整理されます また 65529以上の行番号はエラーになります RUN〔行番号〕 プログラムの実行を開始します 行番号を省力すると最初の行番号から開始します TERMコード,パリティ、ボーレート,フィールドSW BASICからターミナルモードに移行します ^BでBASICに戻る コード a:7ビットモード j:7ビットモード パリティ 0:なし 1:奇数パリティ 2:偶数パリティ ボーレート 0:×64 1:×16 フィールドSW 0:オートL/Fしない 1:オートL/Fする ステートメント BEEP〔スイッチ〕 内蔵スピーカのブザーのオン/オフの指定 1〜255でブザーのオン(鳴りっぱなし) 0 でブザーのオフ 省略すると約 0.5秒間鳴る 256以上指定するとエラーになる スイッチは変数や式の使用可 COLOR〔ファンクション〕〔,ヌルキャラクタコード〕 〔,グラフィックスイッチ〕 テキスト画面に色または機能の設定を行います ファンクション 白黒モードの場合(CONSOLE,,,0) 0…ノーマル 1…シークレット 2…ブリンク(点滅) 3…シークレット(1と同じ) 4…リバース(反転) 5…リバースシークレット 6…リバースブリンク(反転+点滅) 7…リバースシークレット(5と同じ) カラーモードの場合(CONSOLE,,,1) 0…黒 1…青 2…赤 3…マゼンダ 4…緑 5…シアン 6…黄色 7…白 ヌルキャラクタコード 画面クリアした場合に表示するキャラクタコード 通常は0 グラフィックスイッチ 0…キャラクタモード 1…グラフィックモード CONSOLE〔スクロール開始行〕〔,スクロール長さ〕 〔,ファンクションキー表示スイッチ〕 〔,カラー/白黒スイッチ〕 スクロール開始行はどの行からスクロールを開始するか指定(最上行は0) スクロール長さ は指定した開始行からn行までの範囲の指定(最大25) ファンクションキー表示スイッチは1でオン、0でオフ カラー/白黒スイッチはテキスト画面もモード設定 1でカラーモード、0で白黒モード 各パラメータは省略可(全てのパラメータを省略するとエラー) その場合現在の値と同じになる DATA定数〔,定数…〕 READで読む数値や文字定数を格納します 最大255文字 定数は整数、固定少数点、浮動小数点、16進数、8進数、 文字定数のいずれか DATA文は,(コンマ)で区切りますが 文字定数の場合,と:で区切る事も可 空白や,や:を文字定数で使用する場合 ”(ダブルクォテーション)で囲む <例> DATA ”ABCD”, ABCD の場合両方ともABCDとなる DEF FN名前〔(パラメータリスト)〕=関数の定義式 ユーザ作成の関数を定義 パラメータリスト内の変数名は関数の定義式内のみ有効なので プログラムに同じ変数名があっても構いません DEFDBL文字の範囲〔,文字の範囲…〕 INT 〃 SNG 〃 STR 〃 文字の範囲で指定された文字で始まる すべての変数名の型を宣言します 文字の範囲の指定はアルファベット1文字 複数の場合,(コンマ)か−(ハイフン)でつなぎます 型宣言文字による指定がある場合、DEF型宣言より優先される 型宣言が行われていない状態は全て単精度変数 DBL 倍精度型 INT 整数型 SNG 単精度型 STR 文字型 <例> DEFDBL A,C ,で宣言すると個別で宣言される(AとCが宣言) DEFDBL A−C −で宣言するとその範囲で宣言される(AからCまで宣言) DEF USR〔番号〕=開始番地 機械語のユーザ関数の実行番地を定義 番号は0〜9まで、USR番号が関数名に定義され 関数名によって機械語プログラムが実行されます 開始番地はCLEARのメモリ上限より後ろでなければならない 番号の省略は0とみなされる DIM変数名(添字の最大値〔,添字の最大値…〕) 配列変数の要素の大きさを指定 実行時、並列の要素の値は0(文字型はヌルストリング)になります DIMを宣言せずに配列変数を使用した場合 その添字の最大値は10になる END 全てのファイルをクローズ、 プログラムの実行を終了します プログラムの中にENDは必要はありませんが その場合ファイルのクローズは行われません ERASE配列名〔,配列名…〕 配列変数を消去します 再びDIMで宣言出来るようになります 実行時、並列の要素の値は0(文字型はヌルストリング)になります ERL ERR エラー発生したときに発生した行番号と エラーコードを調べます ERL エラー発生した行番号(ダイレクトモードでは 65535) ERR エラーコード プログラム中ではON ERROR GOTO〜で エラー処理ルーチンで使用します ERRORエラー番号 指定したエラーを発生、エラー番号のユーザ定義を行う エラー番号は1〜 255 すでにBASIC内にあるエラーコードの場合 そのエラーを出力されます 通常はON ERROR GOTO〜で使用 FOR変数=初期値TO終値〔STEP増分〕〜 NEXT〔〔変数〕〔,変数〕…〕 FOR〜NEXT間の命令を指定回数分繰り返す 変数は整数、単精度のみ(文字列、配列は使用不可) 初期値、終値、増分は数式可 STEP増分を省略すると増分は+1に設定 また増分は負の値が使用可(その場合は初期値より終値が大きくなる) 下記の条件では1回だけ実行される ・増分が正で終値より初期値が大きい ・増分が負で初期値より終値が大きい ・初期値と終値が同じ、増分0の場合 FOR〜NEXTの中に別のFOR〜NEXTを入れる(入れ子構造)事が出来る GET@(X1,Y1)−(X2,Y2),配列 GET@(X1,Y1)−(X2,Y2),配列,G GET@A(X1,Y1)−(X2,Y2),配列 任意の範囲(X1,Y1)と(X2,Y2)を対角線とする 四角形のキャラクタまたは セミグラフィックパターンデータを取得して配列へ送る GET@〜,配列は キャラクタ 添字の値=(キャラクタ単位の面積/n)−1 n:整数型配列で2、実数型配列で4、倍精度配列で8 GET@〜,配列,Gは グラフィック 添字の値=(ドット単位の面積/8+2)/n n:整数型配列で2、実数型配列で4、倍精度配列で8 GET@A〜はアトリビュート込みで キャラクタ 添字の値=(キャラクタ単位の面積/n)×2−1 n:整数型配列で2、実数型配列で4、倍精度配列で8 GOSUB行番号〜 RETURN 指定した行番号をサブルーチンとしてコール RETURNで戻ります GOSUB〜RETURN中に 別のGOSUB〜RETURNの使用(多重化)が出来ます 多重化はスタック領域の許す限り可 GOTO行番号 GO TO行番号 指定した行番号を無条件にジャンプ IF倫理式THEN文または行番号〔ELSE文または行番号〕 IF倫理式GOTO行番号 倫理式が真(0以外なら)THENまたはGOTO以降を実行 偽(0)ならELSE以降を実行ELESが無い場合次の行へジャンプ またTHEN、ELSEに続けて別のIFが使用出来 IF中のTHEN、ELSEの個数が異なる場合 ELSEは近くにある他のELSEと対応していないTHENに対応 INPUT〔”プロンプト文”;〕変数〔,変数〕 画面にプロンプト文+“? ”表示され、 キーボードからのデータ入力待ちになります プロンプト文が省略した場合は“? ”が表示されます データは[RETURN]で入力終了で変数に代入されます 複数のデータ入力は“,”(コンマ)で区切ってから 1度に入力[RETURN]か、 1つずつ入力[RETURN]になります(2回目からは“??”が表示) 変数型は一致しない場合“Redo form start” と表示され再入力となり データ数が変数の個数より多い場合“Extra ignored” と表示し、次へ実行されます データを入力せず[RETURN]のみだと変数の値は変化せずそのままになる 文字列でコンマや前後のスペースを入力する場合は ””で文字列を囲みます INPUT#ファイル番号,変数〔,変数…〕 カセット、ディスクからシーケンシャルファイルからデータの読み込み ディスクの場合、OPENで指定したファイル番号と同じにします ファイル番号は-1がカセット、1〜15がディスク KEYキー番号,文字列 ファンクションキーの内容を定義 各ファンクションキーは15文字までで 文字列、コントロールコード(+CHR$(n)) KEY LIST ファンクションキーf・1〜f.10の内容を全て表示 LET変数名=式 変数に値の代入 LET自体は省略可 LINE行数, ファンクションコード LINE(x1,y1)−(x2,y2),文字列〔, ファンクションコード〕〔,BまたはBF〕 LINE(x1,y1)−(x2,y2),PSETまたはPRESET〔, ファンクションコード〕〔,BまたはBF〕 LINE行数, ファンクションコードはカラーモードで行単位に機能設定を行います 行数は0から−1までの値 ファンクションは 0または4 ノーマル 1または5 ブリンク 2または6 リバース 3または7 リバースブリンク なお白黒モードで実行するとSyntax errorになります LINE(x1,y1)-(x2,y2),文字列〔, ファンクションコード〕〔,BまたはBF〕は 画面に文字列(キャラクタ)の線や箱を書きます xnは水平、ynは垂直位置で0,0が左上になります ションクションコードはCOLOR文と同じ Bは(x1,y1)、(x2,y2)の2点を角とし四角の枠を書く BFは枠の内側も塗りつぶす 指定なしは(x1,y1)、(x2,y2)を結ぶ直線を書く LINE(x1,y1)-(x2,y2),PSETまたはPRESET〔, ファンクションコード〕〔,BまたはBF〕は グラフィックを書きます (x1,y1)、(x2,y2)はグラフィック座標なります LINE INPUT〔”プロンプト文”;〕文字変数 [RETURN]キーの入力までにキー入力された文字列が 文字変数に代入( 255文字以内) [RETURN]キーのみだと文字変数はヌルストリングとなる プロンプト文は入力前に表示される文章 ”? ”等は表示されません 実行中^C([STOP])で中断すると ”Ok”と表示され、CONTを実行すると そのLINE INPUTの初めから再開される LOCATE水平位置,垂直位置〔,カーソルスイッチ〕 テキスト画面のカーソル位置の指定 0,0が左上になります カーソルスィッチは1で表示、0で表示しなくなる MOTOR〔スイッチ〕 CMTのモータのオン/オフの指定 1〜255でモータのオン 0 でモータのオフ 省略するとオンならオフ、オフならオンに切り替わる ON ERROR GOTO行番号 エラートラップを可能にして エラー処理ルーチンの開始行の定義 開始行がない場合、この命令を実行をすると "Undefined Line"エラーが発生 ON ERROR GOTO 0でエラートラップを無効にする エラー処理後、プログラム実行の再開はRESUME を使用 ON式GOSUB行番号〔,行番号…〕 ON式GOTO行番号〔,行番号…〕 指定されたいくつかの行へ分岐 式の値で行番号へ分岐します 値が0または分岐する個数より大きい場合、次の行へ 値が1から分岐する個数までの場合、分岐する行番号へ 負の値の場合、"Illegal function call" エラーになる ON…GOSUB の場合サブルーチンなのでRETURNで戻るようにする OUT I/Oアドレス,数式 出力ポートに1バイトデータを送る I/Oアドレス、数式は0〜255までの整数 POKE番地,整数表記 メモリに1バイトのデータの書き込み 番地は0〜65535(0H〜FFFFH) 整数表記(書き込みデータ)は0〜255 (0H〜FFH) PRESET(水平位置,垂直位置〔, ファンクションコード〕) グラフィック座標のドットの消去 ファンクショコードはダミーなので通常使用しません PRINT〔式…〕 LPRINT〔式…〕 指定した式の値や文字列を出力 式を省略した場合は改行 各行は14文字毎に分割して定めれており、 ,(コンマ)を使用すると次の領域の始めから ;やスペース(省略可)を使用すると出力したすぐ後ろから 続いて次の式の値や文字列が表示されます 式の最後に;や,を使用すると改行しません 数値の表示は後ろにスーペスが挿入され 数の前に符号の桁を確保される 単精度は指数形式でなくても6桁以下の桁数で 精度に影響がないものは実数形式で表示 倍精度は16桁以下の桁数で 精度に影響がないものは実数形式で表示 表示する数値、文字列の長さが表示すると 次の行にわたってしまう場合は改行して続きを表示します PRINTは画面にLPRINTはプリンタに出力される 省略形は? PRINT#ファイル番号,〔式…〕 OPENで指定したファイル番号の シーケンシャルファイルにデータ出力 ファイル番号が−1 はカセット 1〜15はディスク カセットの場合はOPENは必要無し 式は数値式または文字式 PRINT#文実行中でもバッファがフルになれば書き込み、 EOFでなければ次のレコードをバッファへ読み込む データはPRINT 文と同じものを出力されるので ;で区切らずに,で区切るとスペースもデータとして扱われる 文字列を正しく書き込むには独立した区切り記号をいれる A$="ABCD":B$="01234"でPRINT#1,A$;B$ だと データは"ABCD01234"となってしまいます この場合INPUT#で1つのデータとして読み込んでしまいます PRINT#1,A$;",";B$でデータは"ABCD,01234" となり 2つの文字変数で読み込みが可 また文字列に;や,スペースを入れる場合はCHR$(34)を使用します PRINT#1,CHR$(34);A$;CHR$(34);B$;CHR$(34) PRINT%ポート番号,〔式…〕 指定したRS−232Cポートの入出力バッファにデータ出力 データはPRINT#と同じ PRINT USING書式制御文字列;式〔;式…〕〔;〕 〔,式…〕〔,〕 LPRINT USING書式制御文字列;式〔;式…〕〔;〕 〔,式…〕〔,〕 書式制御文字列の後に続く式の出力される領域や書式の決定 PRINTは画面にLPRINTはプリンタに出力される <文字の書式制御> !………………与えれた文字変数や文字定数の最初の1文字 &' '×n&…与えれた文字変数や文字定数の先頭から(n+2)文字列の出力 文字列が(n+2)より長い場合、余分は文字は無視される 短い場合は 左詰め出力、残った部分は' ’を出力 <数値の書式制御> #…………数値を出力桁数の指定 指定した桁数より小さい場合は右詰め出力 .…………小数点の位置指定 小数点以下の部分で冗長となる桁には0が出力 +…………書式制御文字列の最初または最後に付けた場合 数値の符号が前または後ろに出力される 前につけたり2個以上の−を並べた場合、 制御文字以外の文字として扱われる −…………書式制御文字列の最後に付けた場合 数値が負の時に数値の後ろに−が出力される 2個以上の+を並べた場合、余分は制御文字以外の文字として扱われる **………書式制御文字列の先頭に付けた場合 数値領域の左側に空白部分ができたとき*で埋めて出力 **は2桁分の領域を確保される ¥¥………書式制御文字列の先頭に付けた場合 出力される数値の直前に¥を出力 ¥は2桁分の領域を確保されるが 1桁は¥の出力として使用 指数形式の書式指定を行った場合 正しく出力されない場合がある 海外のN−BASICでは¥の部分に$を使用 **¥……書式制御文字列の先頭に付けた場合 **と¥¥の両方の機能となる **¥は3桁分の領域を確保されるが 1桁は“¥”の出力として使用 海外のN−BASICでは¥の部分に$を使用 ,…………桁数指定の#の並び中にある場合、 数値の整数部が3桁毎に“,”で区切られて出力 ただし“,”より右側にある場合は 数値の最後に“,”が出力され、3桁毎の区切りは行われない ^^^^…桁数指定の#の後にある場合、 数値は指数形式で出力 <制御文字以外の文字> 上記の制御文字(英数字、カナ、記号等)の場合、 数値の前後にそのキャラクタ出力 <数値の領域外> 指定した数値領域より桁数が大きい場合、 数値の前に%が出力される 数値の丸めが領域より大きくなる原因となる場合も 丸めた数値の前に%が出力 PSET(水平位置,垂直位置〔, ファンクションコード〕) グラフィック座標のドットをセット ファンクションコードはCOLOR文と同じで カラーモード時は色の指定、 白黒モード時はリバース等の機能の指定 事前にCOLOR文で グラフィックスィッチをグラフィックにする PUT@(x1,y1)−(x2,y2),配列名〔,機能〕 PUT@A(x1,y1)−(x2,y2),配列名 PUT@はGET@で配列へ送った、または配列にデータを作成した キャラクタやグラフィックパターンを 画面の任意の位置へ表示します キャタクタ位置の場合 水平位置x1、x2は0〜桁数−1 垂直位置y1、y2は0〜行数−1 グラフィック位置の場合 水平位置x1、x2は(0〜桁数)×2−1 垂直位置y1、y2は(0〜行数)×4−1 機能はキャタクタデータの場合、 COLOR文と同じ色やブリンク等の指定 グラフィックパターンの場合 PSET、PRESET、OR、AND、NOT、XORの指定 OR、AND、XORは画面上と配列データの倫理演算を行う NOTは配列データの反転して表示 PUT@AはGET@Aで作成したものを表示 水平位置x1、x2は0〜桁数−1 垂直位置y1、y2は0〜行数−1 色等はGET@Aで取り込まれています PUT@はGET@で作成、PUT@AはGET@Aの作成したデータを使用 READ 変数〔,変数…〕 DATA文より値を読み込み、変数に送ります データはREADとDATAのデータを1対1に対応 読み込まれた値と変数の型は一致しない場合 “Syntax error”となる データが足りないのにREAD文を実行した場合 “Out of DATA” となる データが余った場合、RESTORE文で指定されないと 続きからのデータとなる REM〔注釈文〕 プログラム中の注釈 プログラム中にコメントを書くために使用 実行には影響されません REM以降はその行の最後まで注釈になるので S−BASICの様にREM〜:で :の後はプログラムとして実行されません その事を利用してメンテナンスルーチン等 通常使用しない時にREMを使用して 注釈文扱いする事も可 省略形は’(アポストロフィー)になりますが ’は:REM+0E4Hと3バイト消費されます (REMは1バイト消費) ’は前に:があるので10 A=0’テスト のようにマルチステートメントの区切りの:の必要がありません RESTORE 〔行番号〕 READで読み込む為のDATA行番号の指定 行番号を省略するとプログラム中の最初のDATAが指定される RESUME 〔0またはNEXTまたは行番号〕 ON ERROR GOTOによって エラー処理ルーチンにジャンプした後、 プログラムの再開に使用 0…………エラーの原因となた文から プログラムの実行の再開 エラーの原因を取り除かないと 再びエラー処理ルーチンへ戻る NEXT…エラーの原因となった文のすぐ次の文から実行再開 行番号……行番号で指定した行から実行の再開 STOP プログラムの実行を停止 実行されると Break in xxxxx(xxxxx は行番号) と表示される CONTでプログラムの再開可 またファイルはクローズされません SWAP 変数1,変数2 2つの変数の値を交換します どの型の変数でも使用可ですが 2つの変数の型は同じでないと “Type mismatch” エラーとなる 変数2が単純変数(配列変数以外)の時 値が定義されていなければなりません TRON TROFF プログラムの実行状態の追跡、解除 プログラムが実行されると その行番号が“[行番号]”として表示されます 次の行番号はそのとなりに表示されるので 画面表示等ではくずれてしまいます TRONで追跡、TOFFで解除 NEWでも解除されますがプログラムは消去されます WAIT I/Oアドレス,式1〔,式2〕 I/Oアドレスの入力ポートを監視して、 その間プログラムの実行を一時中断します 指定したポートの入力データと式2とのXORの結果と 式1とのANDが取られ、 その結果が真(0以外)になるまでポート入力を続けます 偽(0)の場合、またポート入力して真になるまで監視続けます A=((入力ポートデータ) XOR 式2)) AND 式1 またSTOPキーで中断できないので STOPキーを押しながらリセットしなければ いけなくなるので 式の指定には注意が必要です WIDTH〔桁数〕〔,行数〕 テキスト画面に表示する文字の桁数と行数の指定 桁数の指定は80,72,40,36 行数の指定は20,25 カラーモードの時は桁数−1となる 桁数、行数はどちらも省略出来ますが 2つ同時の場合WIDTH,とする 行数20の場合キャラクタとキャラクタの間に隙間が出来ます グラフィックも同様に隙間が出来る ファンクション ABS(数式) 数式の絶対値を与える 演算結果は数式に倍精度実数がある場合は倍精度、 その他は単精度となる ASC(文字列) 文字列の最初の1文字をアスキーコードに変換する ヌルストリングの場合、“Illegalfunction call”エラーになる ATN(数式) 数式の単位をラジアン(π/180×角度)としたときの 逆正接を与える CDBL(数式) 数式の値を倍精度実数値に変換 型変換が行うだけで有効桁数の変化なし 結果の値の制度は変換前と同じ型 整数型なら整数部のみ、単精度実数型なら有効数字は6桁 CHR$(数式) 数式の値をアスキーコードとし、 対応する文字、コントロールコードに変換 CINT(数式) 数式の値の少数部を切り捨てて整数に変換 結果の値が-32768〜 32767の範囲外になると “Overflow”エラーになる COS(数式) 数式の単位をラジアン(π/180×角度)としたときの コサインを与えます CSNG(数式) 数式の値を有効数字の単精度実数値(6桁)に変化します 結果の値が -1.70141E+38〜-1.70141E+38の範囲外になると “Overflow”エラーになる CSRLIN 現在のカーソル垂直位置を与える 20行モードで0〜19 25行モードで0〜24 DATE$ 内蔵クロックによる日付を与える "YY/MM/DD"で PRINT文で年月日の表示可 PC-8001はバックアップ機能がなく、 年もサポートされていないのでうるう年の補正がありません 月の部分だけ変数の使用可 PC-8001以外はバックアップ機能で、 月日は電源を切っても維持されます(年は初期化される) ERL ERR EXP FIX FRE HEX$ INKEY$ INP INPUT$ INSTR INT LEFT$ LEN LOG LPOS MID$ OCT$ PEEK POINT POS RIGHT$ RND SGN SIN SPACE$ SPC SQR STR$ STRING$ TAB TAN TIME$ USR VAL VARPTR + − * / ^ ¥ ‘ > = < AND OR XOR NOT FILES FORMAT LOAD MERGE LFILES NAME SAVE CLOSE DSKO$ FIELD FORMAT GET INPUT# KILL LSET LINE INPUT# MOUNT OPEN PRINT# PUT REMOVE RSET SET CVD CVI CVS DSKI$ EOF LOC LOF FPOS MKD$ MKI$ MKS$ ON SRQ GOSUB POLL ISET IREST REN PRINT@ INPUT@ LINE INPUT@ WBYTE RBYTE STATUS 定数 1.整数 −32768〜+32767 2.単精度少数点 6桁×10±10の38乗の実数(指数表現 E) 3.倍精度少数点 16桁×10±10の38乗の実数(指数表現 D) 4.16進数 &H0〜&HFFFF 5. 8進数 &O0〜&O177777または &0 〜 &177777 エラーメッセージ(数字はERRコード) 1 NEXT with FOR FOR〜NEXTが正しく対応出来ない 2 Syntax error 文法間違い 3 RETURN without GOSUB GOSUB〜RETURNが正しく対応出来ない 4 Out of Data READ文で読まれるデータが無い 5 Illegal function call ステートメントの機能の呼び方間違い 6 Overflow 入力数値や演算結果の許容範囲のオーバー 7 Out of memory メモリ容量が足りない 8 Undefined line number 必要とされる行番号がない 9 Subscript out of range 配列変数の添字が規定範囲外 10 Redimensioned array 配列の再定義 11 Division by zero 0による割り算の実行 12 Illegal direct ダイレクト・ステートメントとして使用不可のコマンド入力 13 Type mismatch 代入文等で式の左右の型が不一致 14 Out of string space CLEAR等で指定したストリング変数用メモリの不足 15 String too long ストリングが255文字オーバー 16 String formura too complex 文字式が複雑過ぎる(カッコのネスティングオーバー) 17 Can’t continue CONTコマンド実行不可(プログラム編集等でポインタ破壊されている) 18 Undefined usr function ユーザー関数の未定義 19 No RESUME エラー処理後、プログラムの実行不可 20 RESUME without error エラーとRESUMEの不一致 21 Unprintable error メッセージの定義されていないエラー 22 Missing operand ステートメント内のパラメータ不足 23 Line buffer overflow プログラム行番号の入力の有効範囲オーバー 24 Position not on Screen 指定したカーソル位置が画面の範囲外 25 Bad File Data ファイル上のデータ形式の不一致 26 Disk BASIC Feature ディスクBASICが起動していない時にディスクBASICコマンドの実行 27 Communications Buffer overflow 周辺機器の入出力バッファがオーバーフロー 28 Port not initialized インターフエィスの未設定 29 Type read ERROR CMTからの入力が正しく行なわれない ディスクBASIC用 50 Field overflow FIELD文で128バイト以上割り当てた 51 Internal error BAISC内部のエラー 52 Bad file number オープンされていないファイル・ナンバーのアクセス 53 File not found 存在しないファイルのアクセス 54 Bad file mode シーケンシャル・ファイルをランダムアクセスした、またはその逆 55 File already open すでにオープンしたファイルをOPEN、KILLを実行 56 57 Disk I/O error ディスクにリード・ライトエラーが生じ、修正できなくなった 58 File already exists すでにあるファイルネームと同じファイルネームを定義しようとした 59 60 61 Disk Full ディスク上の容量不足 62 Input past end ファイルの全てのデータを読み尽くした後、INPUT分の実行 63 Bad record number PUT、GET文でレコード・ナンバーが0〜32767の範囲外 64 Bad file name 不適当なファイルネームの使用 65 66 Direct statment in file アスキーフォーマットのLOAD中にダイレクト・ステートメントがあった 67 Too many files 255種類以上のファイル作成
00000H コールドスタート 00008H ホットスタート 0006AHへジャンプします 00010H ストリング解析 入力:HL=ストリングポインタ(次のデータが読み込まれる) 出力:ストリングデータによる 指定したストリングデータの次のデータを読み そのデータによって出力データが変わります BASICプログラム解析用 データ: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/12/13/33の接続の有無 PC−8001mmkII、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文字表示 入力: 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 BeLl 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=白黒 アトリビュート コード d4=0にして 白黒ならd7=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=パラメータデータ アドレス パラメータデータは文字列でカンマで区切ります(エンドマーク000H) DATA_WIDTH: DB '80,25',000H 00884H CONSOLEの設定 入力:HL=パラメータデータ アドレス パラメータデータは文字列でカンマで区切ります(エンドマーク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行文字数 0093AH WIDTHの設定 入力: B=桁 C=行 使用:AF 0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生 0EA58H ターミナルモード 0EA5BH アトリビュートコード 0EA5DH スクロールの長さ 000Hで1行、001Hで2行… 0EA5CH ファンクションキー表示方法 000H=ベースアトリビュート、050H=リバース 0EA5EH スクロールの開始行 001Hで最上行になる 0EA60H ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する 0EA61H カラー/白黒モード 0FFH=カラー、000H=白黒 0EA62H 行数(白黒モード)019H=25行、14=02行 0EA65H 白黒モードのときの1行の文字数 050H=80文字 048H=72文字 028H=40文字 024H=36文字 0EA67H ポート040Hの出力した内容 0EA68H ファンクションキーフラグ 000H=フラグOff、000H以外でフラグOn 0ED9AH〜0EDB2H nn行が次の行とつながっているか 000H=繋がっている 000H以外=繋がっていない 0EDC0H〜0EDC1H:ファンクションキーポインタ 0F300H〜0FEB7H VRAM 0FEB8H〜0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分 画面設定WIDTHを行います ゲームで画面を反転して元に戻す場合には 前と同じ桁でないとVRAMがクリアされます <実行例> LD A,021H ;画面反転 OUT (051H),A | | ;Wait等の処理 | LD BC,05019H ;WIDTH 80,25(元が80桁の場合) CALL 0093AH RET 00951H COLOR 入力:HL=パラメータデータ アドレス パラメータデータは文字列でカンマで区切ります(エンドマーク000H) DATA_COLOR: DB '7,32,1',000H 0094BH スクロール範囲の設定 入力:スタック 0EA5EHデータ、0EA5DHデータ 使用:HL 出力:0EA5DH スクロールの長さ 000Hで1行、001Hで2行… 0EA5EH スクロールの開始行 001Hで最上行になる スクロールに関するワークエリアを設定します 前もってスタックに入力データを設定します ルーチンはスタック操作してワーク設定を行い 最後にPOP HL、RETされているので 実行するのに注意が必要です <実行例> LD HL,00118H ;長さ24行、開始行 1行 PUSH HL LD HL,0094BH PUSH HL RET 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のd0の設定を行います 009CFH ポート030H d0=0にする 入力: A=ポート030Hの出力データ 出力:0EA66H ポート030Hの出力した内容 使用:A ポート030Hのd0=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 ファンクションキー オフ 入力:EA62H(行数019H=25行、14=20行)の内容 出力:A=0EA62H(行数019H=25行、14=20行)の内容 使用:BC、DE、HL 0FEB8H〜0FF2FH クリアする時にVRAMに書き込むデータ1行(80+40バイト)分 ファンクションキーの表示される部分の一番下の行をクリアします。 00B79H 指定した行の上の接続フラグのチェック 入力: L=指定する行 出力:Zf=1 接続 0 独立 DE=0ED9AH〜0EDB2H 指定した行の接続フラグ A=接続フラグの値 使用:A、DE 指定した行と一つ上の行が繋がっているかチェックを行います BASICのスクリーンエディタ用 00B86H 指定した行の接続フラグのオン・オフ 入力:A=000H 接続 001H〜0FFH 独立 L=指定する行 出力:DE=0ED9AH〜0EDB2H 指定した行の接続フラグ 使用:A、DE 0ED9AH〜0EDB2H 接続フラグ 000H=接続、001H〜0FFH=独立 BASICのテキストラインを接続または独立の指定 00BD2H カーソル オフ 出力:0EA59H=000H カーソルのオン/オフを0EA5FHに従わせるフラグ 使用:AF 0EA56H 割り込みがあったことを示すフラグ 000H以外で割り込みが発生 0EA63H カーソルYの位置(上端が01) 0EA64H カーソルXの位置(左端が01) 0ED99H カーソルX座標(左端が00) CRTC OCW5=080Hにしてカーソル表示をオフにします 00BE2H カーソル オン 出力:0EA59H=0FFH カーソルのオン/オフを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 d3=0、d2=1)にします 00C38H ポート030Hへ出力 入力: A=ポート030Hの出力データ 出力:0EA66H ポート030Hの出力データ 使用:A ポート030Hへデータを出力、ワークに書き込みを行います 00C3EH CMT モータオン 出力:0EA66H ポート030Hの出力した内容 使用:AF モータオン(ポート030H d3=1)にします 00C42H CMT モータオフ 出力:0EA66H ポート030Hの出力した内容 使用:AF モータオン(ポート030H d3=0)にします 00C46H CMT ライトオープン 使用:AF 0EA66H ポート030Hの出力した内容 0F1B9をコール(フック) ポート030Hのd7〜4=0000 BS2、BS1=00 (600bps) d3〜2=11 モータオン、CHIN=1 マーク(2400Hz) 8251をリセット、0CEH、011H WAIT0060000H ポート030Hのd2=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 キーが押されている場合) 使用:AF 0EA75H キーポート09 STOP、ESCキーが押されたかチェックを行います 押されていればAレジスタにコントロールコードが入ります 00D14H μPD8251 リセット 使用:A 本体内の8251をリセット(ポート021Hに00EH、040Hを書き込む)して 8251のモード設定を出来るようにします 00D43H ^G Bell出力 入力:0EB49H 000H =CRT 001H〜07FH=PRT 080H〜0FFH=CMT Aレジスタに007HにしてRST 018Hを実行 0EB49Hの指定したデバイスにデータを出力を行います 00D4BH BEEP 入力: A=001H〜0FFH BEEP 1 A=000H BEEP 0 使用:AF、 E 0EA67H ポート040Hの出力した内容 Aレジスタが000Hか000Hで無いかで ポート040Hのd5の出力を決めています 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のd0=0(STOP=0)にする 0EB49Hが000H(CRT)なら終了 001H〜0FFHなら05CHにして終了 00F75H キー入力があるまで待つ 入力:0EA63H カーソルYの位置(上端が01) 0EA64H カーソルXの位置(左端が01) 出力:0EA59H 0FFH カーソルのオン/オフを0EA5FHに従わせるフラグ A=キャラクタコード Cf=0 キーが押された 00F7BH キー入力 入力:0EA63H カーソルYの位置(上端が01) 0EA64H カーソルXの位置(左端が01) 出力:0EA59H 0FFH カーソルのオン/オフを0EA5FHに従わせるフラグ A=キャラクタコード Cf=1 キーが押されていない 0 キーが押された 00FACH リアルタイム キー入力 出力: A=アスキーコード Cf=1 キーが押されていない 0 キーが押された 使用: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から読んでd0から押されているかチェック(キーデータ作成) キーデータが変更されたらキーリピートの設定 キーデータからアスキーコードに変換を行います ポート0 d0 〜 ポート1 d1:テンキーの数字 ポート1 d2 〜 ポート1 d7:テンキーの演算、RET ポート2 d0 〜 ポート5 d2:フルキーの@、英字 ポート5 d3 〜 ポート5 d7:フルキーの[から− ポート6 d0 〜 ポート7 d1:フルキーの数字 ポート7 d2 〜 ポート7 d7:フルキーの*から_ ポート8 d0 〜 ポート9 d0:HOMEからSTOP ポート9 d1 〜 ポート9 d5:ファンクションキー のブロックに分かれて、 通常、シフト、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:タイムリード 40ビットのシフトレジスタのデータを読み込み、各ワークに書き込む 曜日のデータをカットして月のデータのみとして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バイト(40ビット)のシフトデータの書き込みを行います 入力のHLは0EA7AHにしておかないと月のデータがおかしくなります 016A7H RTC データセット 入力:HL=データアドレス 使用:AF、BC、 0EA67H ポート040Hの出力した内容 RTCに8ビット分のデータの書き込みを行います 02068H RS−232C ワークの指定 出力:HL=0EB2EH RS−232C Ch1 0EB2FH RS−232C Ch2 使用:A、HL 0EED0Hで選択されているチャンネルでワークの指定を行います 0209BH RS−232C データ出力 前もってスタックに保存した出力データを取り出し、出力を行います 022D6H RS−232Cチャンネル セレクト 入力:A=001H RS−232C Ch1 002H RS−232C Ch2 A=それ以外Illegal function call 出力:C=選択したチャンネルのポート 使用:A、C RS−232Cのチャンネルのポートを選択します *PC−8001 ではCh1がポート0C1H、Ch2がポート0C3H PC−8001以外ではCh1がポート021H、Ch2がポート0C3H 022E1H RSー232Cチャンネル ポートの設定 入力:A=001H RS−232C Ch1 002H RS−232C Ch2 A=それ以外Illegal function call 出力:0EA01H 出力ポート 使用:A 0EA00Hで行うポート出力をRS−232Cのチャンネル ポートにします 02D13H 16ビット 10進表示 入力:HL=変換する数値 使用:0EF45H FAccの型 002H=整数型 0EF7BH 000H 0EF9AH〜0EF9BH HLの値 0F0B7H FAccから文字列変換用 0F0A8H FAcc 0F0A9H FAcc RST 010Hで使用するワーク HLの16進数データを10進数に表示します カーソル行を消さないようにするには0EA57Hを000Hにする 02D22H FAccから文字列(数値)の変換 入力:0EF45H=FAccの型 002H=整数型 003H=文字型 004H=単精度型 008H=倍精度型 0F0A8H=FAccデータ 出力:HL=0F0B7H 0F0B7H〜0F0CDH:変換した文字列(000H=エンドマーク) 使用:AF、HL、DE、BC 0EF48H〜0EF49H:1ワード取得 ポインタ避難 0EF4AH :1ワード取得 ACC避難 0EF4BH :1ワード取得 精度(002H=整数型、004H=単精度型、008H=倍精度型) 0EF4CH〜0EF53H:1ワード取得 フローティングポイントレジスタ 0EF7BH FAccのデータを文字列に変換します <例> LD HL,nnmm ; LD (0F0A8H),HL ;FAcc LD A,002H ;整数型 LD (0EF45H),A CALL 02D22H ;HLの内容は0F0B7H、 | ;0F0B7Hから変換した文字列が入る | ; +なら数値の前に020H、−なら02DHが入る ・ 0の場合+0となる HL=00000H −> F0B7:20 30 00 ?? ?? ?? ?? HL=00001H −> F0B7:20 20 20 20 20 31 00 HL=00002H −> F0B7:20 20 20 20 20 32 00 HL=07FFFH −> F0B7:20 33 32 37 36 37 00 HL=08000H −> F0B7:2D 33 32 37 36 38 00 HL=0FFFFH −> F0B7:20 20 20 20 2D 31 00 04CCCH 英字の小文字から大文字に変換 入力: A=アスキーコード 出力: A=アスキーコード 使用:AF アスキーコードのアルファベット小文字を大文字に変換します 052EDH メッセージ表示 入力:HL=メッセージ データアドレス(000H=エンドマーク) 使用:AF、BC、DE、HL 0EA5BH:アトリビュートコード 0EA63H:カーソルYの位置 上端が01(01〜25) 0EA64H:カーソルXの位置 左端が01(01〜80) ワークエリアのカーソル座標を見てメッセージを表示します またアトリビュートも書き換えます 05C66H マシン語モニタ マシン語モニタに行きます 05E39H アスキーコード内 HEXチェック 入力: A=アスキーコード 出力: A=アスキーコード Cf=1 16進数以外 0 16進数 Aレジスタの内容がアスキーコード16進数 0〜9(030H〜039H)かA〜F(041H〜049H)を調べます 05E4BH HEXデータ追加にアスキーコードを追加 入力: A=アスキーコード HL=HEXデータ 出力:HL=HEXデータ 使用:A、HL アスキーコードを1桁のHEXデータに変換して HEXデータを桁上がりにして追加します(モニタ用) HL=00123H、A=034H(’4’)の場合 HL=01234Hになります 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以外で割り込みが発生 0EA57H 000H 現在のカーソル位置より次の行をクリアしない 001H〜0FFH 現在のカーソル位置より次の行をクリアする 0EA58H ターミナルモード 0EA59H カーソルのOn/Offを0EA5FHに従わせるフラグ 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以外で割り込みが発生 0EA57H 000H 現在のカーソル位置より次の行をクリアしない 001H〜0FFH 現在のカーソル位置より次の行をクリアする 0EA58H ターミナルモード 0EA59H カーソルのOn/Offを0EA5FHに従わせるフラグ 0EA5AH ヌルキャラクタコード(COLOR文の第2パラメータ) 通常は000H 0EA5BH アトリビュートコード 0EA5DH スクロールの長さ 000Hで1行、001Hで2行… 0EA5EH スクロールの開始行−1 001Hで最上行になる 0EA5FH カーソルスイッチ 000H=表示しない、000H以外=表示する 0EA60H ファンクションキー表示スイッチ 000H=表示しない、0FFH=表示する 0EA62H 行数(白黒モード)019H=25行、014H=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〜0EA3CH:USR0エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA3DH〜0EA3EH:USR1エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA3FH〜0EA40H:USR2エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA41H〜0EA42H:USR3エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA43H〜0EA44H:USR4エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA45H〜0EA46H:USR5エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA47H〜0EA48H:USR6エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA49H〜0EA4AH:USR7エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA4BH〜0EA4CH:USR8エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA4DH〜0EA4EH:USR9エントリーアドレス 初期値044A5H(Illeagal function Call) 0EA4FH :未使用 0EA50H〜0EA51H:フリーエリア最終アドレス0E9FFH(CLEAR文で変化はしない) 0EA52H〜0EA53H:コマンド・ステートメントの中間言語テーブル開始アドレス 033BDH 0EA54H :RS−232Cバッファオーバーフローフラグ 000H以外でオーバーフロー 0EA55H :割り込発生み直前の割り込みレベル 割り込みが発生されていない場合は0FFH 0EA56H :割り込みがあったことを示すフラグ 000H以外で割り込みが発生 0EA57H :000H以外を設定して1文字出力ルーチンをコールすると 現在のカーソル値より次の行をクリアする 0EA58H :ターミナルモード d7:ターミナルモード 1=オン 、0=オフ d6:CRコード LF 1=オン 、0=オフ d5:パリティ 偶数/奇数 1=偶数 、0=奇数 d4:パリティ 1=オン 、0=オフ d3:半二重/全二重 1=半二重 、0=全二重 d2:ビット長 1=8Bit、0=7Bit d1:コントロールコード表示 1=オン 、0=オフ d0:プリンタへのエコーバック 1=オン 、0=オフ 0EA59H :カーソルのオン/オフを0EA5FHに従わせるフラグ 000H=消去、0FFH=表示 0EA5AH :ヌルキャラクタコード(COLOR文の第2パラメータ) 初期値は000H 0EA5BH :アトリビュートコード 初期値は000H 白黒モード d7:1=グラフィック、0=キャラクタ d6:− d5:アンダーライン d4:アッパーライン d3:− d2:リバース d1:ブリンク d0:シークレット カラーモード(d3が1の場合) d7:G d6:R d5:B d4:1=グラフィック、0=キャラクタ d3:1 d2:− d1:− d0:− カラーモード(d3が0の場合) d7:− d6:− d5:アンダーライン d4:アッパーライン d3:0 d2:リバース d1:ブリンク d0:シークレット 0EA5CH :ファンクションキー表示方法(画面をクリアして切り替わる) 000H=ベースアトリビュート、050H=リバース 0EA5DH :スクロールの長さ 00〜24(000Hで1行、001Hで2行…) 0EA5EH :スクロールの開始行01〜25(001Hで最上行になる) 0EA5FH :カーソルスイッチ 000H=オフ、000H以外=オン 0EA60H :ファンクションキー表示スイッチ 000H=オン、0FFH=オフ 0EA61H :カラー/白黒モード 000H=白黒、0FFH=カラー :ターミナルモード用 0EA62H :行数(白黒モード)019H=25行、14=20行 0EA63H :カーソルYの位置 上端が01(01〜25) 0EA64H :カーソルXの位置 左端が01(01〜80) 0EA65H :白黒モードのときの1行の文字数 050H=80文字 048H=72文字 028H=40文字 024H=36文字 0EA66H :ポート030Hの出力内容 d7:未使用 d6:未使用 d5:CMT BS2 d4:CMT BS1 d3:CMT MOTOR 1=MOTORオン、0=MOTORオフ d2:CMT CHIN 1=マーク(2400Hz)、0=スペース(1200Hz) d1:CRT 1=白黒、0=カラー d0:CRT 1=80行、0=40行 0EA67H :ポート040Hの出力内容 d7:未使用 d6:未使用 d5:BEEP 1=オン、0=オフ d4:未使用 d3:CRT /CLDS CLK d2:RTC CLK(μPD1990 データ・シフト) d1:RTC STB(μPD1990 コントロール) d0:PRT /STROBE 0EA68H :ファンクションキーフラグ 000H=オフ、001H〜0FFH=オン 0EA69H :キーボードから入力されたコード 0EA6AH :前回押した特殊キーのデータ 000H=入力なし 001H=SHIFTキー 002H=CTRLキー 003H=カナキー 004H=カナ + SHIFTキー 005H=GRPHキー 0EA6BH :リピートカウンタ(リピート0=006Hか040H) 0EA6CH :キーポート000Hデータ 0EA6DH :キーポート001Hデータ 0EA6EH :キーポート002Hデータ 0EA6FH :キーポート003Hデータ 0EA70H :キーポート004Hデータ 0EA71H :キーポート005Hデータ 0EA72H :キーポート006Hデータ 0EA73H :キーポート007Hデータ 0EA74H :キーポート008Hデータ 0EA75H :キーポート009Hデータ 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〜0EB1FH:PEST、PRESET、GET、PUT用ワーク 0EB20H〜0EB21H:LINE用ワーク 0EB22H〜0EB23H:LINE用ワーク 0EB24H〜0EB26H:PSET、PRESET用ワーク 0EB27H〜0EB29H:LINE用ワーク 0EB2AH :RS−232C Ch1コマンド(INIT%の第3パラメータ) 0EB2BH :RS−232C Ch2コマンド(INIT%の第3パラメータ) 0EB2CH :RS−232C (未使用?) 0EB2DH :RS−232C Ch入力ポート Ch1=0C1H,Ch2=0C3H 0EB2EH :RS−232C Ch1 d7:1=キャラクタ長7、0=キャラクタ長8 d6:キャラクタ長7時のBit7の値 d5: d4: d3: d2: d1: d0: 0EB2FH :RS−232C Ch2 d7:1=キャラクタ長7、0=キャラクタ長8 d6:キャラクタ長7時のBit7の値 d5: d4: d3: d2: d1: d0: 0EB30H :RS−232C (未使用?) 0EB31H〜0EB32H:RS−232C 残りバッファデータ数 00000H〜0007FH 0EB33H〜0EB34H:RS−232C Ch1バッファ・アドレス 0EB35H〜0EB36H:RS−232C Ch1有効入力データ開始アドレス 0EB37H〜0EB38H:RS−232C Ch1有効入力データ最終アドレス 0EB39H〜0EB3AH:RS−232C Ch1 0EB3BH〜0EB3CH:RS−232C Ch2バッファ・アドレス 0EB3DH〜0EB3EH:RS−232C Ch2有効入力データ開始アドレス 0EB3FH〜0EB40H:RS−232C Ch2有効入力データ最終アドレス 0EB41H〜0EB42H:RS−232C Ch2 0EB43H :RS−232C Ch1出力カウンタ 0EB44H :RS−232C Ch2出力カウンタ 0EB45H :RS−232C 未使用 0EB46H :エラーコード 000H=エラー無し、001H〜010H=エラー有り 0EB47H :未使用 0EB48H :プリンタヘッド ポジション(LPOSの値) 0EB49H :出力デバイス 000H =CRT 001H〜07FH=PRT 080H〜0FFH=CMT 0EB4AH :画面の実際の横の文字数 0EB4BH :CRT改行値 PRINT文用 40行=00EH 80行=038H 0EB4CH :未使用 0EB4DH :画面の表示(ESCキー) 000H =表示する 001H〜0FFH=表示しない 0EB4EH :PRINTルーチン用 0EB4FH :INPUT$用 0EB50H〜0EB51H:スタックポインタ 値初期値0E8D3H(フリーエリアの最終から文字領域分を引く) 0EB52H〜0EB53H:実行中のBASIC行番号(0FFFFHはダイレクトモード) 0EB54H〜0EB55H:BASICプログラムの開始番地 32Kシステム初期値08021H 16Kシステム初期値0C021H 0EB56H :プログラム入力時、中間言語変換用 0EB57H〜0EC91H:中間言語バッファ 0EC92H〜0EC95H:不明コールドスタート時にEC93:3A 00 2C 0EC96H〜0ED93H:キー入力バッファ 0ED94H〜0ED98H: 0ED99H :カーソルX座標(左端が00) 0ED9AH :00〜01行接続フラグ 000H=接続、001H〜0FFH=独立 0ED9BH :01〜02行接続フラグ 000H=接続、001H〜0FFH=独立 0ED9CH :02〜03行接続フラグ 000H=接続、001H〜0FFH=独立 0ED9DH :03〜04行接続フラグ 000H=接続、001H〜0FFH=独立 0ED9EH :04〜05行接続フラグ 000H=接続、001H〜0FFH=独立 0ED9FH :05〜06行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA0H :06〜07行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA1H :07〜08行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA2H :08〜09行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA3H :09〜10行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA4H :10〜11行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA5H :11〜12行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA6H :12〜13行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA7H :13〜14行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA8H :14〜15行接続フラグ 000H=接続、001H〜0FFH=独立 0EDA9H :15〜16行接続フラグ 000H=接続、001H〜0FFH=独立 0EDAAH :16〜17行接続フラグ 000H=接続、001H〜0FFH=独立 0EDABH :17〜18行接続フラグ 000H=接続、001H〜0FFH=独立 0EDACH :18〜19行接続フラグ 000H=接続、001H〜0FFH=独立 0EDADH :19〜20行接続フラグ 000H=接続、001H〜0FFH=独立 0EDAEH :20〜21行接続フラグ 000H=接続、001H〜0FFH=独立 0EDAFH :22〜22行接続フラグ 000H=接続、001H〜0FFH=独立 0EDB0H :22〜23行接続フラグ 000H=接続、001H〜0FFH=独立 0EDB1H :23〜24行接続フラグ 000H=接続、001H〜0FFH=独立 0EDB2H :24〜25行接続フラグ 000H=接続、001H〜0FFH=独立 0EDB3H :INPUT、READ用 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〜3 0EDC7H :DISK 接続されているドライブ数 0EDC8H :未使用 0EDC9H :DISK PPI CW 通常は0FFH 0EDCAH :LINEで引くキャラクタ 0EDCBH :DISK タイムアップ カウンタ 0EDCCH〜0EDCDH:未使用 0EDCEH〜0EE4DH:RS−232C Ch1入力バッファ 128バイト 0EE4EH〜0EECDH:RS−232C Ch2入力バッファ 128バイト 0EECEH :RS−232C RST 018H 出力文字用 0EECFH :RS−232C 出力データ退避用 0EED0H :RS−232C チャンネル 000H=Ch1、001H=Ch2 0EED1H :未使用 0EED2H :IEEE−488 IEEE(2)の値 0EED3H :IEEE−488 IEEE(3)の値 0EED4H :IEEE−488 未使用 0EED5H :IEEE−488 STATUSの値 0EED6H〜0EEDAH:IEEE−488 0EEDBH :IEEE−488 SQR 000H=Disable,000H以外Enable 0EEDCH :IEEE−448 0EEDDH :IEEE−448 0EEDEH〜0EEDFH:IEEE−488 ON SQR GOSUB用 0EEE0H〜0EEE5H:IEEE−448 0EEE6H :IEEE−488 IEEE(6)の値 0EEE7H :IEEE−488 IEEE(4)の値 0EEE8H :IEEE−488 IEEE(5)の値 0EEE9H〜0EEEDH:IEEE−448 0EEEEH :IEEE−488 CMD DELIM用 デリミタコード 0EEEFH :IEEE−448 0EEF0H :IEEE−448 CMD TIMEOUT用 タイム 0EEF1H〜0EEF5H:IEEE−448 0EEF6H〜0EF2BH:未使用 0EF2CH :PUT、GET用 000H=PUT 0FFH=GET 0EF2DH〜0EF35H:PUT、GET用 0EF36H〜0EF3BH:CMT ファイルネーム 0EF3CH :CMT 入力エラー 000H=エラーなし。0FFH=エラーあり 0EF3DH :CMT ワーク 000H=CLOAD、0FFH=CLOAD? 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パラメータ) 初期値0E9FFH 0EF56H〜0EF57H:文字列用スタックポインタ 0EF58H〜0EF75H:文字列用スタック(3バイトで1組) 0EF76H〜0EF78H:カレントストリングディスクプリタ 0EF79H〜0EF7AH:ストリングフリースペース 0EF7BH〜0EF7CH:NEXT、DIM、FN用 0EF7DH〜0EF7EH:ガベージコンクション用 変数ポインタ 0EF7FH〜0EF80H:FOR文中でHL(テキストポインタ退避) 0EF81H〜0EF82H:READ文ポインタがある行番号 0EF83H :変数認識用 0EF84H :READ 0EF85H〜0EF86H:FOR、ERASE、DIM、FN用 0EF87H :GOTO 行番号からアドレスのフラグ 0EF88H :AUTO実行中フラグ 000H =実行していない 001H〜0FFH=実行中 0EF89H〜0EF8AH:AUTO次に発生する行番号 0EF8BH〜0EF8CH:AUTO行番号の増分 0EF8DH〜0EF8EH:プログラムを実行する前のHLの値 0EF8FH〜0EF90H:プログラムを実行する前のSPの値 0EF91H〜0EF92H:エラーの起こった行番号 0EF93H〜0EF94H:エラーの起こった行番号コピー(プログラムが実行中のとき) 0EF95H〜0EF96H:RESUME、ERROR文用 0EF97H〜0EF98H:ON ERROR GOTO〜のアドレス 0EF99H :ON ERROR GOTO〜のフラグ 0EF9AH〜0EF9BH:DIM、FN、NEXT用 HLの値 0EF9CH〜0EF9DH:STOPキーが押された、STOP文で停止したときの行番号 0EF9EH〜0EF9FH:CONT用 行番号、プログラム書き換え時00000Hになる 0EFA0H〜0EFA1H:変数領域の開始アドレス 32Kシステム初期値08023H 0EFA2H〜0EFA3H:配列変数領域の開始アドレス 32Kシステム初期値08023H 0EFA4H〜0EFA5H:配列変数領域の終了アドレス 32Kシステム初期値08023H 0EFA6H〜0EFA7H:READ文ポインタ(現在DATA文でREADするアドレス) 0EFA8H〜0EFC1H:変数の指定 DEF文で変わる(A〜Z) 0EFC2H〜0EFC3H:FN用 0EFC4H〜0EFC5H:FN用 0EFC6H〜0F029H:FNの引数、名前、アドレス 0F02AH〜0F091H:FNの引数、名前、アドレス 0F092H〜0F095H:DIM、変数の検索用 0F096H〜0F097H:FN、ガベージコレクション用 0F098H〜0F099H:FN用 0F09AH〜0F0A1H:SWAP用フローティングポインタ 0F0A2H :TRON、TROFF用フラグ 000H =TROFF 001H〜0FFH=TRON 0F0A3H :FAcc 0F0A4H〜0F0ABH 倍精度 0F0A4H :FAcc 0F0A8H〜0F0ABH 単精度 0F0A5H :FAcc 0F0A8H〜0F0A9H 整数 0F0A6H :FAcc 0F0A7H :FAcc 0F0A8H :FAcc 0F0A9H :FAcc 0F0AAH :FAcc 0F0ABH :FAcc 0F0ACH :符号 0F0ADH〜0F0B5H:倍精度演算用数値(0F0B5H符号) 0F0B6H〜0F0BCH:HEX$、OCT$用 0F0B7H〜0F0CDH:FAccから文字列変換用 0F0CEH〜0F0D0H: 0F0D1H〜0F0D8H:倍精度除算用 0F0D9H〜0F0DDH: 0F0DEH〜0F0E0H:単精度乗算用 0F0E1H〜0F215H:N−BASIC用ジャンプテーブル 0F0E1H〜0F0E3H:CVIフック 0F0E4H〜0F0E6H:CVSフック 0F0E7H〜0F0E9H:CVDフック 0F0EAH〜0F0ECH:EOFフック 0F0EDH〜0F0EFH:LOCフック 0F0F0H〜0F0F2H:LOFフック 0F0F3H〜0F0F5H:MKI$フック 0F0F6H〜0F0F8H:MKS$フック 0F0F9H〜0F0FBH:MKD$フック 0F0FCH〜0F0FEH:CMDフック 0F0FFH〜0F101H:OPENフック 0F102H〜0F104H:FIELDフック 0F105H〜0F107H:ISETフック 0F108H〜0F10AH:IRSETフック 0F10BH〜0F10DH:TALKフック 0F10EH〜0F110H:LISTENフック 0F111H〜0F113H:MATフック 0F114H〜0F116H:POLLフック 0F117H〜0F119H:WBYTEフック 0F11AH〜0F11CH:RBYTEフック 0F11DH〜0F11FH:???フック 0F120H〜0F122H:BCD$フック 0F123H〜0F125H:DECフック 0F126H〜0F128H:LFILESフック 0F129H〜0F12BH:GET#(01888H)フック 0F12CH〜0F12EH:DSKO$フック 0F12FH〜0F131H:FORMATフック 0F132H〜0F134H:PUT#(01893H)フック 0F135H〜0F137H:CLOSEフック 0F138H〜0F13AH:LOADフック 0F13BH〜0F13DH:MERGEフック 0F13EH〜0F140H:NAMEフック 0F141H〜0F143H:KILLフック 0F144H〜0F146H:LSETフック 0F147H〜0F149H:RSETフック 0F14AH〜0F14CH:SAVEフック 0F14DH〜0F14FH:FILESフック 0F150H〜0F152H:REMOVEフック 0F153H〜0F155H:MOUNTフック 0F156H〜0F158H:SETフック 0F159H〜0F15BH:DSKFフック 0F15CH〜0F15EH:DSKI$フック 0F15FH〜0F161H:ATTR$フック 0F162H〜0F164H:02327Hフック 0F165H〜0F167H:02345Hフック 0F168H〜0F16AH:FPOSフック 0F16BH〜0F16DH:エラーメッセージフック 0F16EH〜0F170H:BASICコマンド待ちの前のフック 0F171H〜0F173H:未使用 0F174H〜0F176H:BASICコマンド待ちでRETを押された後のフック 0F177H〜0F179H:03D6AHフック 0F17AH〜0F17CH:03D70Hフック 0F17DH〜0F17FH:プログラム入力、ENDフック 0F180H〜0F182H:04873Hフック 0F183H〜0F185H:RST 018H(040A6H)フック 0F186H〜0F188H:0413FHフック 0F189H〜0F18BH:RUNフック 0F18CH〜0F18EH:PRINTフック1 0F18FH〜0F191H:04791Hフック 0F192H〜0F194H:047EAHフック 0F195H〜0F197H:047EFH、04838Hフック 0F198H〜0F19AH:048E2Hフック 0F19BH〜0F19DH:0497AHフック 0F19EH〜0F1A0H:キー入力(00F9FH)フック 0F1A1H〜0F1A3H:LINE INPUT#フック 0F1A4H〜0F1A7H:CMT1バイトロード(00C88H)フック 0F1A7H〜0F1A9H:ディスクエラー(00175H)フック 0F1AAH〜0F1ACH:VARPTRフック 0F1ADH〜0F1AFH:03C0DHフック 0F1B0H〜0F1B2H:STOP+RESET(00081H)フック 0F1B3H〜0F1B5H:ディスク入出力(0009CH)フック 0F1B6H〜0F1B8H:CMTリード(00BF3H)フック 0F1B9H〜0F1BBH:CMTライト(00C46H)フック 0F1BCH〜0F1BDH:プリンタ1バイト出力(00D60H)フック 0F1BFH〜0F1C0H:TERM(000B8H)フック 0F1C2H〜0F1C4H:04BF9Hフック 0F1C5H〜0F1C7H:04E47Hフック 0F1C8H〜0F1CAH:エラー処理(03BF9H)フック 0F1CBH〜0F1CDH:03EA8Hフック 0F1CEH〜0F1D0H:05818Hフック 0F1D1H〜0F1D3H:文字列用スタックアクセス(05479H)フック 0F1D4H〜0F1D6H:05306Hフック 0F1D7H〜0F1D9H:016C5Hフック 0F1DAH〜0F1DCH:RST 020Hフック 0F1DDH〜0F1DFH:RST 028Hフック 0F1E0H〜0F1E2H:RST 030Hフック 0F1E3H〜0F1E5H:RST 038Hフック 0F1E6H〜0F1E8H:/INT7フック 0F1E9H〜0F1EBH:/INT6フック 0F1ECH〜0F1EEH:???フック 0F1EFH〜0F1F1H:???フック 0F1F2H〜0F1F4H:PRINTフック0 0F1F5H〜0F1F7H:048DAHフック 0F1F8H〜0F1FAH:LINE、LINE INPUTフック 0F1FBH〜0F1FDH:04939Hフック 0F1FEH〜0F200H:04BFCHフック 0F201H〜0F203H:04642Hフック 0F204H〜0F206H:041FAHフック 0F207H〜0F209H:016C2Hフック 0F20AH〜0F20CH:TERM キー入力(00E37H)フック 0F20DH〜0F20FH:CMT1バイトライト(00CDAH)フック 0F210H〜0F212H:INPUT”?Extra ignored”フック 0F213H〜0F215H:未使用 0F216H〜0F2FFH:未使用 0F300H〜0FEB7H:VRAM (80+40)*25行=3000バイト 0FEB8H〜0FF2FH:クリアする時にVRAMに書き込むデータ1行(80+40バイト)分 0FF30H〜0FF31H:マシン語モニタ Sコマンド再セットアドレス(下位・上位) 0FF32H :マシン語モニタ 未使用 0FF33H :マシン語モニタ ロードコマンド 000H=Lコマンド 00DH=LVコマンド 0FF34H〜0FF35H:マシン語モニタ ^Bコマンド BASICプログラム内アドレス(下位。上位) 0FF36H〜0FF37H:マシン語モニタ 起動時スタックポインタ保存用 0FF38H :マシン語モニタ 000H=Sコマンド 0FFH=Dコマンド 0FF39H〜0FF3AH:マシン語モニタTMコマンド エラーメモリアドレス(下位・上位) 0FF3BH :マシン語モニタTMコマンド エラー書き込んだデータ 0FF3CH :マシン語モニタTMコマンド エラー読み込んだデータ 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 ハードコピー(PC−8023C /8821/8822) In: A=001H テキスト A=002H グラフィック A=003H テキスト+グラフィック A=004H グラフィック 縦1/2(640×200) A=005H テキスト+グラフィック 縦1/2(640×200) Out: Cf=1 STOPキーで中断 07C94H 漢字の表示 In: 0E6DBH :X座標 0E6DCH :Y座標 0E6D9H :機能 000H PSET 001H PRSET 002H AND 003H OR 004H XOR 0E6E3H :パレットコード 0E6E5H〜0E6E6H:JISコード 0E6E7H :所属 000H 全角 002H 半角 003H 1/4角 ワークエリア 0E603H〜0E605H:フック 0E606H〜0E617H:DMA転送方ディスクワーク 0E629H :カレントディスクドライブ 000H=DMA転送方式 002H=PC−8031 (1D) 003H=PC−80S31 (2D) 0E62AH :DMA転送方式ディスク 000H =8インチ 001H =5インチ 002H〜0FFH=なし 0E643H :DMA転送方式ディスク セクタ長 0E6C6H :ポート031Hの内容 0E6C7H :CMD SCREEN 第1パラメータ 0E6C8H :CMD SCREEN 第2パラメータ CMD PUT 000H グラフィック 001H 漢字 0E6C9H :CMD SCREEN 第3パラメータ 0E6CAH :フォアグランドカラー 0E6CBH :バックグランドカラー 0E6CCH :ビューポート先頭X 0E6CDH :ビューポート先頭Y 0E6CEH :ビューポート最終X 0E6CFH :ビューポート最終Y 0E6D0H〜0E6D1H:解像度X 640(00280H)または320(00140H) 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 :カラーコード 0〜3 0E6DBH〜0E6DCH:始点X座標 0E6DDH〜0E6DEH:始点Y座標 0E6DFH〜0E6E0H:終点X座標 0E6E1H〜0E6E2H:終点Y座標 0E6E3H :漢字フォアグランドカラー 0E6E4H :漢字バックグランドカラー 0E6E5H〜0E6E6H:JIS漢字コード 0E6E7H :漢字の大きさ 000H:全角 003H:半角 004H:1/4 0E6E8H〜0E6E9H:GRAM書き込みアドレス 0E6EAH〜0E6EBH:GRAM書き込みデータ 0E6ECH :ライン、BOX開始点ビューポイントオーバーフラグ b3:上方向 1=オン、0=オフ b2:下方向 1=オン、0=オフ b1:左方向 1=オン、0=オフ b0:右方向 1=オン、0=オフ 0E6EDH :ライン、BOX最終点ビューポイントオーバーフラグ b3:上方向 1=オン、0=オフ b2:下方向 1=オン、0=オフ b1:左方向 1=オン、0=オフ b0:右方向 1=オン、0=オフ 0E6EEH〜0E6EFH:GRAM開始点アドレス 0E6F0H〜0E6F1H:GRAM最終点アドレス 0E6F2H〜0E6F3H:CMD LINE、CMD PAINT用 0E6F4H〜0E6F5H:CMD LINE、CMD PAINT用 0E6F6H〜0E6F7H:CMD LINE、CMD PAINT用 0E6F8H〜0E6F9H:CMD LINE、CMD PAINT用 0E6FAH〜0E6FBH:円の中心X座標 0E6FCH〜0E6FDH:円の中心Y座標 0E6FEH〜0E6FFH:円の半径 0E700H〜0E703H:円弧開始角(単精度) 0E704H〜0E707H:円弧終了角(単精度) 0E708H〜0E70BH:円の扁平率(単精度) 0E725H :円の種類 000H=円、001H=円弧 0E72EH〜0E72FH:PAINTの境界色 0E800H〜0E8FFH:拡張ROM用
Home へ戻る