『 4 桁の 16 進数で表わす』とあります . 10 進数ではありま せん . グ試験のとき , よくあわてて間違えます . アセンプラを使っている人は , 16 進数は 10 進数と区別す るのに , rx "x x ' 』 , 「 >< x H 』 , 『 $ x x 』というように するのですが , CA P- X の場合 , CON S T のオペランドは , ただの 16 進数 4 桁で表わすことになっています . そういう 意味で , A C 0 N S T 2 0 は 4 桁でないのでいけません . 仕様書を注意深く読んで , 規則を忠実に守りましよう . 結局 , 汎用レジスタ 0 番の内容は , 16 進数で X 0 0 2 0 10 進数では 32 となります . 次の , 図 1 指標レジスタ指示のある実効アドレスの求め方 GR2 指標レジスタの 指標レジスタ 3 , AC2)' LD LD 実行アドレス = ( A + 0 ) 番地 実行アドレス = ( A + 3 ) 番地 指標レジスタ指示のある場合 指標レジスタ指示のない場合 番地を決定するのには , ラベルで指定するのと数値 ( 絶 対番地 ) で表わすのがあるのですが , 数値の場合は第 0 記 憶プロック ( 0 ~ 255 ) までで , それ以上のときはべース・ レジスタとの関連があり , 少々難しいので出題はされてい ないようです . 結局 , この命令によって , 汎用レジスタ 2 番に数値 3 が入ります . LAI と間違って 61 が入るのではあ りません / ′ とあるのは , 今説明したように , 汎用レジスタ 1 番に B 番 地の内容を持ってくることです . B 番地の内容はいくらか というと , ラベル B のところから , 16 進数で X - 7 F F F " というこのカゞわかります . この命令を実行すると , 汎用レジスタ 1 番の内容は 16 進 数で X 7 F F F " , 10 進数で 32767 という値になります . は , 61 番地の内容を汎用レジスタ 2 番に持ってくることで す . 61 番地はどこにあるのでしようか ? これは , プログ ラム格納開始番地が 50 番地でしたから , そこから 1 っすっ 数えていくと , CONST O ロロ 3 1 3 , , 2 を見て , 『また指標レジスタ指示 ( 2 ) があるなあー』と 思うでしよう . このとき , 「いやだなあー』と感しないでく ださい . CAP- X を勉強するためには , この孑旨標レジスタ 指示の意味がわからなければ充分理解したとはいえないか らです . ですから , 何回も何回も例題を使って説明するので , 頑 張ってください . 図 1 のように , 指標レジスタ指示がなければ A 番地の内 容を汎用レジスタ 3 番に持ってくることですが , 指標レジ スタ指示 ( 2 ) があるので , A 番地にレジスタ 2 番の内 容を加えた番地が実効アドレスになります . この場合 , レ ジスタ 2 番の内容は 3 ですから ( A + 3 ) 番地 , 絶対アド レスでは ( 59 十 3 = 62 ) 番地の内容を汎用レジスタ 3 番に 入れることになります . 結局 , この命令によって汎用レジスタは X 8 0 0 0 " ー 32768 になります . 「あ になります . 10 進数で表わすと , れ ? マイナスになっている』と気付くと思います . そう です . 仕様書にあるように , COMP- X は数値を 16 ピット で表わし , 負の数は 2 の補数を使って表現されるからなの です . 2 , 61 という場所が 61 番地になります . LAI ANA 2 主 ムの グ処 プ返 2 繰部 図の要 LA I 1 , 1 , 1 LAI 3 , 249 , 1 JNZ 3 , ANA プログラム 2 マイコンの PET から写したもの スクリーンエデイタや OS ( ジョブコン ) カ ( 利用でき , コレジ デントタイプの本格的な CAP - x の勉強の助けとなる . 仕様書より 1 語のヒ・ツト構成は次のとおりである . 32 ↑ ↑ 第 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 ツ ツ ト ト 数値は , 16 ピットの 2 進数によって表現する . 負数は 2 の 補数方式である . ですから , 第 0 ピットが 0 のときはプラスの数を表わし , 1 のときはマイナスの数を表わすことになります . 残りのプログラムは今までと同しですから , スラスラと 0 し 21 1
表 2 3 月号の問題と解答例 解 . 笨 例 3 月号の問題 練習問題 1 i) 応募問題 1 の解答例 CAP—X CROSS ASSY BY OKITAC 4 ロ 0 日 START 128 LAI 1 , 255 LAI 1 , 2 , 1 WRITE 11 1 ロ LAI 2 , 2451 1 JNZ 2 ・ , P HJ ロ , S END ASSEMBLE END ロ D85 1 5 7 GRO の内容か、 10. GRI の内容か・一 10 のとき , 次の CAP-X を実行し , 停止したときの G R 0 , G R 1 の内容は ,. それぞれ いくらになりますか ? 10 進数で答えなさい . S T A R T 0 , 1 , 0 1 , 2 5 5 , 0 , 0 E N D 1 ( 類題昭和 47 年 2 種 ) 次に示す B A S I C のプログラムと同し処理をする C AP- X ただし , フログラム格納開 のプログラムを作ってください . 始アドレスは 512 番地とします . FOR I = 70 TO 61 STEP— 3 1 0 PRINT I 3 0 NEXT I END 4 0 練習問題 2 応募問題 1 次に示す B A S I C のプログラムと同じ処理をする C A P- X のプログラムを作ってください . プログラム格納開始アドレスは 128 番地とします . ただし , FOR I = 1 TO 1 1 STEP 2 1 0 2 0 PRINT 3 0 、 E XT END 4 0 (i) 練習問題 1 の解答例 L A 1 0 , 1 , 0 はレジスタ 0 番は孑旨標レジスタとし て使えないので 答 G R 0 の内容は 1 1 , 2 5 5 , 1 は問題からレジスタ 1 番の内容 が一 10 なので , ( -10 ) 十 255 = 245 がレジスタ 1 番に入る . 答 G R 1 の内容は 2 4 5 していきます . それではプログラム 1 を見てください . START は , 「プログラム格納開始アドレスが 50 番地からです』と いう意味でした . CAP- X は , 1 命令が 1 語 ( ワード ) を取 りますから , このプログラムではラベル S が 50 番地 , ラベ ル A は 59 番地 , ラベル B は 60 番地をそれぞれ示すことにな ります . マイコンのアセンプリ言語は , 2 ノヾイト , 3 バイト命令 があるので , そういう意味からすると CAP- X はすっきり しています . 何回も繰り返して書きますが , この START と EN D 命令は , 記憶場所を 1 語とらないので注意してく ださい . iii) 練習問題 2 の解答例 BY OKITAC 43 ロロ日 CAP—X CROSS ASSY START 128 1 1 7 ロ LAI W R I T E 1 , 10 LAI 1 , 25 , 1 LAI 2 , 198 , 1 JNZ O'S HJ END ASSEMBLE END ロロ 85 70 67 64 O?A は , 汎用レジスタ 0 番にラベル A で示す記憶場所の内容を 持ってくることです . それでは , ラベル A 番地はどこにあ るのでしようか ? ラベル欄を見ると , 0020 CONST という命令があります . 先ほど述べたように , 実際にはラ ベル A 番地は 59 番地を意味します . このラベル A が何番地 にあたるかという処理はアセンプラが自動的に処理して くれるので , プログラムを書く人は , ただ A 番地というこ とだけ覚えておけばよいでしよう . この場合の実効アドレスは A 番地 ( 59 番地 ) となります . この LD 命令によって , 汎用レジスタ 0 番の内容は X " 0 0 2 0 " になります . なぜ 16 進数かといいますと , CONST は , 仕様書にあるように 仕様書より CONST h h には 4 桁の 16 進数 ( 0 ~ 9 , A ~ F ) を書く . h に書かれ た 16 進数が 1 語の定数として格納される . 210
プログラム 3 プログラムの繰り返し処理中の 図 3 メモリ・ダンプ レジスタの値 最初 0 ( J A L ) * 注 ( J A L + 1 ) ( J A L + 2 ) ( J A L + 3 ) ( J A L 十 4 ) ( J A L 十 5 ) ( J A L + 6 ) ワっ 0 4 戸 0 ー 2 ・ 16 進数形式で プリント出力 注 ) (JAL) は JAL 番地の 内容を意味する 読めるでしよう . さっそく実行してみましよう . 4 つの数 値がプリント出力されていますね . 〃頭で描いた値と同じ になりましたか ? こで大切な数値を 2 つ紹介します . COM P- X で表現 ~ X “ 7 F F F ”で できる最小最大値は , X - 8 0 0 0 " す . 10 進数では一 32768 ~ 32767 となります . よく最小の値 を X F F F F " ではないかと考える人がいますが , これ は一 1 のことです . さてここでもう 1 つ面白いプログラムを作ってみましょ う . それは , メモリ・ダンプのプログラムです . 今まで勉 強した命令だけで充分なのです . プログラム 2 を見てください . このプログラムを見てま す目に付くのは , やはり繰り返し処理ではないでしようか これは前月号で説明 ? そうです . 図 2 を見てください . したのと同し繰り返しノヾターンです . こでは 7 回繰り返 し処理が行なわれているのに気付くでしよう . それでは , どんな処理を 7 回しているのでしよう ? L D 0 , J A L, 1 またまた指標レジスタ指示がありました . もう大分慣れ この意味は図 1 を見ればわかるように てきましたか ? ( J A L + レジスタ 1 番の内容 ) 番地が実効アドレスになる ので , その実行アドレスの内容が汎用レジスタ 0 番に持っ て来られます . それでは , 指標レジスタ 1 番の内容はいく らかというと , プログラム 4 プログラム 3 と同等処理を BAS ℃言語で書くと 10 DIM SFC ( 10 ) 20 FOR I = 1 TO 10 30 SFC ( 10 ) = I 40 NEXT I 50 EN D によって , 汎用レジスタ 1 番の内容は次々と 1 すっ加算 ( イ ンクリメント ) されるので , 繰り返し処理ごとに J A L 番地から J A L 十 1 番地 , J A L + 2 番地・・・・・の内容が 16 進数でプリントされていきます . 絶対番地では , 32 番地から 38 番地までのメモリ内容が出 力されます . この結果を見て , 『ん , これは機械語だ . ク』と すぐにわかった人は , だいぶ CAP- X を知っている人です . 機械語については , 後で説明します . 「こんなものかー』と いう興味を持っておいてください . 繰り返しのところを図 3 に示したので , この図とにらめっこして , もう一度プロ グラムを読んでみてください . (Sto re) 仕様書より 2 進 16 進 ック 読み方 表示 表示 表示 指定された G R の内容を , 実 S T Store 効アドレスで指定する語に入 れる . GR の内容は変わらない . 前の L D 命令は実効アドレスの内容を指定した汎用レジ スタに入れる命令でした . 今度は , その反対にあたる S T 命令について説明します . S T 命令は , 仕様書にあるよう に指定した汎用レジスタの内容を実効アドレスにしまう命 令です . 当然のことですが , この S T 命令が実行されても その汎用レジスタの内容は変わりません . ついでですから , W RITE 命令を行なってもその汎用レ ジスタの内容は変化しません . 出力命令をすると , レジス タの内容が破壊されるのもあるのですが , ではシミュ レーションしているために変イヒしません . では , プログラ ム 3 を見てください . このプログラムは , ラベル S F C で始まる番地から 10 語 L A I とあるので最初は 0 です . ですから , 1 回目は ( J A L + 0 ) 番地 . 絶対番地では 32 番地の内容が汎用レジスタ 0 番に入れられます . ところ が , D 1101 1 L A I 繰部 の要 3 主 ムの グ処 図プ返 LAI IBM 1 , 1 , 1 3 , 246 , 1 3 , IBM 2 ー 2
図 5 プログラム 3 の繰り返し処理中のレジスタの値 R 1 R 1 R 3 0 → S F C * 注 247 0 → S F C 十 1 248 0 → S F C 十 2 249 0 → S F C 十 3 250 0 → S F C 十 4 251 0 → S F C 十 5 252 0 → S F C 十 6 253 0 → S F C 十 7 254 0 → S F C 十 8 255 0 → S F C 十 9 10 0 注・ R 0 は常に 0 です . →は 0 を実効番地にしまうことを意味する . ( ワード ) 分の内容を 0 クリアするプログラムです。ある 己憶場所を 0 クリアすることは一般によく使われます . これを BASIC で書くとプログラム 4 のようになります . それでは , CAP- X のプログラムに戻どって説明していき ます . このプログラムを見ても , 繰り返し処理が目に入る と思います . 図 4 にその主要な部分を抜き出してあるので , それを見てください . まず , 汎用レジスタ 1 番は最初は 0 にしておき , 次々と ・・というふうに変化させていきます。その 0 ~ 9 まで変化する値をうまく利用して , 汎用レジスタ 3 番はま す 247 から始まり , 248 , 249 , ・・というようになります . これを図にしたのが , 図 5 です . この図をみると大変よ くわかりますネ〃ただ汎用レジスタ 3 番の最後が 256 で なく 0 になっています . これを使って , ループの最後を調 べるのですから , 第 2 回目の間題で暴走したあなたは , のあたりを注意してください . そう , あなたですョ / ′ もうこれだけ繰り返し処理について説明すれば , 充分に 理解できたものと思います . このパターンは情報処理試験 によく出て来ます . それでは , 次にループの中の処理を見てみましよう . こ の場合は , I B M 。ゞ S T 0 , = S F C , 1 という 1 ステップだけです . ここにも指標レジスタ指示が ありますが , もうだいよ理解していただけたと思います . そうです . レジスタ 0 番の内容は , プログラムの最初で 0 クリアされています . さらに指標レジスタ 1 番 ( 汎用レジスタ 1 番と同し ) は , 図 5 で示したような値をとっていくので , 最初は ( S F C + 0 ) 番地に 0 をしまい , 次は ( S F C + 1 ) 番地・・・・・最 後は ( S F C 十 9 ) 番地に 0 が入れられて , 繰り返し処理 が終了します . こで 1 つ新しい命令があります . R 0 最初 1 っっ 0 -4 一 0 t"— 8 0 ワっ 0 4 L.n ー 8 仕様書より RESV n には 10 進数を書く . n 語の領域を確保することを指示す る . プログラム格納時には , その領域の内容は変史されない . とありますが , これは記憶場所を確保するための命令です . ですから , この場合 , S F C 番地から始まる 10 語 ( ワード ) 分の記憶場所が確保されます . この RFSV 命令にラベルか ある場合は , 確保されるエリアの先頭番地が割り当てられ この例では , S F C は , 27 番地になります . またオペラ ンドの値は , 10 進数で規定されていることにも注意してく ださい . さっそく実行させてみましよう / ′ このプログム には , プリント出力命令がないので何も出力されていませ ん . 1 , 2 , 3 ・ 今回は昭和 46 年度の 2 種に出題された問題を宿題として 載せました . また , その答をプリント出力する問題を応募 問題として取り上げています . 逆アセンプラなどがこれで 自由に組めるようになったと思います . 本当にアセンプラ はすばらしいですね / ′では , またお会いしましよう / ′ CAP-X 応募問題 2 今月の練習問題 3 の答を出力するように , プログラムを追加 してください . 空白のところにプリント出力命令を追加して , 32 番地から 41 番地までの内容を 10 進数でプリント出力させるプ ログラムを作ってください . START 32 RFSV 10 LA I ST 1 , WS1s 1 LA I 1 , 1 , 1 LAI 0 , 246 , ~ 1 0 , LI JNZ この部分のプログラムを作ってください . WSI 練習問題 3 次に示すプログラムを実行させた後 , 32 番地から 41 番地まで の内容はいくらになりますか ? 10 進数で答えてください . S TA RT 32 WSI RESV 10 ST JNZ CON S T CON ST END 8400 D520 HJ CONST- CONST EN D 1 , IO 1 , WS 1 , 0 , 246 , 1 8400 D520 1 1 応募問題を送るときの注意 @) コーディングは正確にていねいな文字で書いてください ②処理代金 Y100 は , 定額小為替にしてください . ③返信用封筒に 50 円切手を貼って , 郵便番号・住所・氏名を明記してください . ④コーディング用紙がない場合は , 普通の紙に住所・氏名・年令・ 4 月号応募 問題と明記のうえラベル・メイレイ・オペランド欄を区分けしてお送りください . ⑤〆切は 4 月 20 日の消印まで有効です . 速達で送る必要はありません . ⑥送り先 〒 673 明石市大明石町 1 ー 2 ー 35 ルモン明石公園 903 号 明石ミニコン研究会事務局神代俊明 ( 類題 昭和 46 年度 2 種 ) 213
BCM C K カーソルを移動するときの前処理ルーチン ( 0 2 0 C) カーソル移動に関するルーチン CLEFT CRIGHT CUP CDOWN CBACK CDEL COMCK ( 0 3 3 E) DOTON ( 0 4 D6) DOTERS ( 0 4 DC) DOTCEK ( 0 4 E3) DRAWL ( 0 6 6 6 ) E RA S E L ( 0 6 7 5 ) GM ( 0 6 A D) GCLR ( 0 1 F F ) ( 0 2 1 7 ) ( 0 2 1 F) ( 0 2 2 7 ) ( 0 2 3 2 ) ( 0 2 3 D) ( 0 2 4 E) カーソル方 : へ カー - ソノい右・ノ、 カーソ′レー E へ カーソノレード , 、 カーソル後退 まっ消 HL レジスタで示したアドレスから 7 F F F 番地までの VIDEO RAM のテ・一タかフーランク ( 20 H ) であるかどうか調べる . コマンド入 カ時に用いる . 846 F 番地を X 座標 , 8470 番地を Y 座標と して , その X Y 座標で示されたドットを 0 N にする . X Y 座標で示されたドットを消す . X Y 座標で示されたドット状態を調べ , 0 N だったら 8471 番地に F F を書き込み , OFF だったら 0 を書き込む . 846F , 8470 番地を始点 , 8475 , 8476 番地 を終点として , その間の線を引き , 終点を 新しい始点にセットする . 始点と終点の間の線を消す以外は DRAWL と 同し . V D G 68047 をフルグラフィック・モード にする . グラフィック・エリアをクリアする . 以上のサプルーチンを BASI C の中からコールして使うこ ともできるし ( 写真 8 ) , コマンドを追加したい場合にも使 えます . 写真 8 今のままであと 6 つのコマンドの追加が可能で , それ以 上は 04 A 3 番地以後をリロケートするか , コマンド・テー プルを他の場所に移さなければ無理です . データの型式は , 最初の 2 バイトがコマンドの C. G. C. で 後の 2 バイトがジャンプ先アドレスです . たとえば , MM というコマンドが 8200 番地から書かれて いる場合 , 0488 番地から , 0 D , 0 D , 82 , 00 と書き込めば , MM コマンドの追加ができます . 。あとがき 0 参考文献 tM SM V. 2 . 1 』として I/O に発表してみませんか . だれか MSM を改良して , ついでに PASCAL も移植して うのでおいそれとはできません . が , ハンド・リロケートをすると大変な作業になってしま 今にして思えはあちこちに変更したいところだらけです というものでした の 5 As だけで , 使用できる R A M のエリアも 1 K バイト弱 が , 私が使用したのは別冊『コンピュータ・ファン N 住 2 』 『充分な開発システムがあれば』とっくづく思うのです なので , とても気分が良いものです . ら供給されたマスク R 0 M などと違い , 変更や追加が自由 自分なりにモニタを作ってみるということは , メーカーか ん . かなり自己満足的な部分があると思いますが , やはり で , はたしてできばえが良いのか悪いのか見当がつきませ 除けば , ほとんど他人のプログラムを参考にしなかったの このプログラムは , DRAWL, ERASEL サプルーチンを のはしくれとして , 社会に出ていることと思います . この原稿が I/O に載るころには , プロのエンジニア ータ・メーカーに決まり , 学生時代もはんのわすかになりま どうやらやっと私も成人式をすませ , 就職も某コンピュ 00TON サプルーチンで描いた引 N カープと DRAWL サプルーチンで描いた COS カープ . 追加したい物合 コマンドを 1 ) 2 ) 3 ) 1 TK-80 ューザーズ・マニュアル , 日本電気 TK- 80BS モニタブログラム・サプルーチン説明書 , 日本電気 、、 MIOOACE の高分解能グラフィックス : 鯨井源一 インターフェース , ' 79 年 11 月号 P-ROM の コビーサービスについて 現在お持ちの TK ー 80BS システムに , MICRO SYSTEM MONITOR V2 . 0 を搭載したい方 のために , P- ROM のコピーサーピスを行ない ます . ご希望の方は , 返信用封筒同封の上 , 編集部『 p ー ROM コピーサーピス係』宛にお申 し込みください . 申し込みがまとまり次第ご 連絡します . 費用は , P-ROM 2 個が送料込 みで Y 9 , 500 位になる予定です . 0458 番地からがコマンド・テープルで , 1 つのコマンド に対して 4 バイト使っています . ー 49 なので高校に入ったら , レ ( ) バサールで BS を買うことに決定 ! そのときは , 安く売ってね . ( 実力テスト平均 45.4 点 JG3 のなぞの男 ) いいのだろうか , そのェイリアンですがとてもおもしろい . 移植は簡軈なので M Z を持っている人 , やリましよう . 話は変わってボクはナイコン こんなことしていて 小生中学 3 年 , 期末テスト 2 日前なのにレ 0 を買い BS 用の平安京工イリアンを 5 時間かかって兄キの M Z ー 80 C に移植 . レ 0 プラサ
メイン・プログラムの 図 4 フローチャート 図 5 割り込みルーチン フローチャート イニシャライズ , スタート 割り込み スタック・ポイント 各テープル LETTER を設定 UART より 入力データ 読み込み UART をリセット して次のデータに 備える 入力文字数 32 か 入力は LF か 次の文字を セット 1 文字をプリンタ に出力 割り込み可に 入力モードを FIG にセット プリンタの一文字 印字終了フラグ 入力 入力は FIG か 入力は LETTER か WAIT 入力モードを LETTER にセット フラグが立ったか 32 文字印字 5 単位を 7 単位 ASCII に変換 プリンタ用入力パッファ と CRT の表示中の 行の残りにプランクを入れる FEOO 〃番地からプログラミングして あります . 割り込み処理ルーチンは , 受信した ポード・コードを ASCII コードに変換 してデータ・ / ヾッファェリア、、 0 0 、、 2 0 〃番地 ( 32 文字分の RAM 工 リア ) へ順番にストアしていきます . コード変換は , ポード・コードのコ ントロール・コード , LTR または FIG コードを受けるとフラグ FIG または LTR をメモリに記憶させておき , そ れ以降に受信したコードは FIG または LTR のコードに基つ・いて ASCII コー ドに変換します . 入力データはデータ・ / ヾッファ工リ アにストアすると同時に CRT 表示用 CRT, プリンタと組み合わせたシステム全景 入力は CR か を示 入 o 割り込み可にセット CRT RTI 入力データをプリンタ 用データ・バッフアに 入れ , 入力数計算 割り込み可にセット RTI のピデオ RAM へストアされます . プログラムは、、 FFFE" 番地にスタ ート番地を入れます . ROM のスター ト番地は FCOO 〃になります . メイン・プログラムはプリンタ打ち 出し制御を行なっています . プリンタ 打ち出しは入力文字数が 32 文字になっ ているかを判別し , 32 文字がセットさ れているとプリンタの READY 信号を 入力し , READY なら受信データ・ ッファ工リアの最初の 1 文字をプリン タへ出力します . 次に , また READY 信号を入力し , プリンタが READY になると次の文字 を出力します . 以上の動作を繰り返し て 32 文字データを出力します . 116
図 3 ビデオ RAM 部回路図 MC6802 の各ビンに 接続する R/W C ST SE ( 5N74 515 の A2 B2 日一 ST Y 4 Y 3 Y 2 Y ー SE ( 5N7 515 の A4 日 4A3 日 3A2 日 2A 一日一 ST Y 4 Y 3 Y 2 Y ー ( 5N74 [ 5157 A4 日 4A3 日 3A 旧 2A 一日一 SN74LS 138 の ・ Y 1 へ E 400 D C 日 A SN ア 4 ー 593 A IN SN ア 4 593 5N74 593 5N74 [ 593 1/10 レ 26 に信号が加わり , データバス上のデ MPU のリセット割り込みべクタを ードでデータをストアすると文字が表 ータがラッチされ , 放電プリンタにつ •FFFE" 番地に入れる必要があるの 示されます . ながっている外部にデータを出力しま で , アドレスはや F C 0 0 〃 F F ただし , 今回はピデオ RAM からデ F F 〃番地にしました . ータを読み出す必要がないので , 書き 割り込みは UART が受信完了と同時 込み専用にしてあります . 回路構成は に DR 端子のレベルが 0 なとなり , 特に変わった点はありません . MPU の割り込み端子 IRQ のレベルを 文字表示は 32 文字 X16 行で 512 文字 や 0 〃にして割り込みを発生させます . ですが , 使用した RAM ( 2102 ) が 1 x RAM は MC6802 に 128 バイト内蔵さ CRT 表示はピデオ RAM 方式を使っ 1 , 024 ピット構成のため , 半分は使っ ています . CRT 画面上の各区画が RAM れており , アドレスは 0 番地から始ま ていません . っています . のそれぞれの番地に割り当てられます . また書き込み専用に作ってあるため , ROM はプログラムが 1 K / ヾイトに したがって CRT 画面上の表示したい データノヾス・ラインの切り換えは行 場所 , すなわちメモリ番地に ASC Ⅱコ 入ったので 2708 を 1 つ使っています . なわす , MPU からピデオ RAM 方向へ ー / 0 プフザ記事に関する希望短波などでは , rUPlJ とか ' ダウ・ジ , ーズ , とか 0 ' 外電 , と呼ばれるテタイプ用 0 電波が 0 、も飛んで、、るそ うです . そこで , 外電の受信の仕方やマイコンへの応用の特集をお願いします . マイコンで個人用のデータ・べースを作っても CPU が自分で新 聞を読むわけは第りませんわ . テレタイプ用の電波を直接受信すれば , ☆早い☆安い☆カンタンと 3 拍子そろってにこにこちゃんです . フ ロッピーに読み込んで、 *JAPAN" の文字列を含むニュースだけを出力とか , いろいろ考えられますね . ただし , 休みなく送られてくることと , 1 14 CR 表示部
図 4 ワーク・エリア アドレス X 座標 8 4 6 F Y 座標 8 4 7 0 8 4 7 1 グラフィック用 8 4 7 3 ワーク・エリア 8 4 7 4 X 座標 8 4 7 5 終点 ・ Y 座標 8 4 7 6 ック用 グラフィ 8 4 7 7 ワーク・エリア 8 4 7 8 8 4 7 9 カーソル・データ KEY FLG ( テンキー ) 8 4 7 A 8 4 7 B カーソル点滅カウンク 8 4 7 C 8 4 7 E カーソル・アドレス 8 4 7 F MSM の物能 M S M は , カーソル移動 ( 図 3 ) , カーソル点滅 , フルキ ー十テンキー同時使用などの機能があります ( 写真 4 ) . コ マンドの入力可能な場所は画面の一番下の行のみであるこ とに注意してください . これはプログラム簡略化のために そうしたのですが , 不便だとは感していません . PO W E R スイッチを入れると , 画面に『 * * ー M ー C RO SY STEM M ONI TOR Ⅳ 2.0 」 * * * 』と出て入力待 ちになります ( 写真 5 ) . そこで次に示す 12 種類のコマンドを入力してやればよい わけです . 分 キ ン キ テ の 8 ふ餮・′ 8 ~ 4 一 0 ド 7 3 ・ キ レ 写 ソ ーツ 0 9 5 1 カ ← ( 8 4 0 BASIC STATION MONITOR にジャンプ MONT 。各コマン ・ . ・イ 4 よ冖 未 定義 ューザーが定義する ことができる . 1 CL コマンド 画面をクリアするコマンド . 7 E (CLEAR CRT) 0 0 ~ 7 F F F に 20H ・を書き込む . 2 GO コマンド ()O TO) 指定された番地にジャンプするコ マンドです . 3 CA コマンド (CALL) 指定された番地のサプルーチンを コールするコマンドです . 4 CM コマンド (CHANGE MEMORY) 指定された番地のメモリの内容 を変更するコマンド ( 写真 6 ) . ~ とーキー以 外は , すべてマスクされ , 入力ミ スを少なくした . ューサーは ~ までのキーを 入力するだけで , アドレスの更新 も自動的に行なう . たとえば , CM, 8000 皿とした場合には画面には と表示され , カーソルは入力待ち になる (x x は 8000 番地の内容が 表示されている ) . そこで , FF と入力すれば 8000 番 地に FF が書き込ま画面はスク ロールされて , アドレスは 8001 番 地になる ( 皿はいらない ). 入 力を間違った場合は皿キーを 用いればよい . アドレスの後退 . 前進は , カー ソル移動用のキーを用い , 山がア 写真 5 モニタのスタート時の画面表示 ー 47
ドレス後退 , 印がアドレス前進で あるが , スクロールはされない . もアドレス前進であるが , この場合はスクロールされる . ーキーは , CM コマンド から抜け出すときに用いる . 5 GM コマンド V D G 68047 をフルグラフィック・ (GRAPHIC MODE) モード ( 256 x 192 , 2 カラー ) にす るためのコマンド . 5 C 00 に F 8 を書き込んでいる . 6 GC コマンド グラフィック・エリアをクリアす (GRAPHIC CLEAR) るコマンド . 4 0 0 0 ~ 5 B F F に 0 を書き込んでいる . 7 DO コマンド D 0 , X X, Y Y (DOT ON) X X , Y Y で指定された場所に点 を書くコマンド . XX は 00 ~ FF ( 0 ~ 255 ) , YY は 00 ~ BF ( 0 ~ 192 ) の範囲 . 8 DE コマンド D E , X X, Y Y (POT ERASE) X X , Y Y で孑旨定された場所の 点を消すコマンド . 9 DC コマンド D C , X X, Y Y (DOT CHECK) XX, YY で指定された場所の点が ON であるか , OFF であるかを調 べるコマンド . たとえば , 指定さ れた場所の点が ON である場合 , D C, X X, Y Y 0 N と表示される . 10 PS コマンド P S , X X, Y Y X X , Y Y で指定された場所を始 (?OINT SET) 点に設定する . 11 DL コマンド D L , X X, Y Y 始点から , X X , Y Y で指定され (PRAW LINE) た点まで直線を描き , X X , Y Y を新たな始点とする . E L , X X, Y Y 12 EL コマンド 始点から , X X , (ERASE LINE) Y Y で指定さ た点までを消去し , X X, Y Y を 新たな始点とする . 写真 6 C M コマンドを実行中 このモニタ・プログラムは , ほとんどがサプルーチンに なっているのでユーザーは必要に応じてそれを使うことが できます . こではその主なサプルーチンを簡単に紹介します . B S キーポードとテンキーの入力をチェッ KEYSCN クし , 入力があった場合は A レジスタにそ ( 0 0 6 A) のコードを , なかった場合には 0 をセット してリターン . CURS カーソル点滅ルーチン ( 0 0 F 9 ) 点滅のスピードを変えたい場合は 0105 番 地の MVI M, 05 を変えればよい . 高速カーソル点滅ルーチン FCURS 画面をクリアするルーチン CLR ( 0 1 2 の 画面をスクロールするルーチン SCRL ( 0 1 2 D) SCLP2 画面の一番下の行をクリアするルーチン ( 0 1 3 D) LDIR プロック転送ルーチン ( 0 1 4 7 ) H L レジスタで示された番地から D E レジ スタで示された番地に , B レジスタで示さ れたバイト数だけデータを転送する . MESOUT メッセージ・アウトブット・ルーチン スクロールをした後 , H L レジスタで示 されたアドレスから 7 FEO 番地以後 ( 画面 の一番下の行 ) に , B レジスタで示された 文字数だけデータを転送する . このルーチ ンは , キャラジェネ・コード ( 以後 C. G. C. ) のデータを扱かう . MESBS T K ー 80 B S モニタ内にあるメッセージ・ア ( 0 1 AA) ウトブット・ルーチン 使い方は M E S 0 U T と同し . このルーチン は , JIS コードのデータを扱かう . CODETL J IS コードを C. G. C. に変換するルーチン ( 0 0 E 9 ) 入出力とも A レジスタ . HTOCGC 16 進データを C. G. C. に変換するルーチン ( 0 1 7 8 ) 入出力とも A レジスタ . ATODE A レジスタに入っている 16 進データを C. G. C. に変換して D E レジスタに出力する . ADRDSP H L レジスタの内容を 7 F E 0 番地より ( 0 1 9 5 ) ディスプレイする . CGCTOH C.G. C. データを 16 進データに変換する . 入 ( 0 1 C 9 ) 出力とも A レジスタ . T2 1 H L レジスタでま旨定された番地の C. G. C. ( 0 1 EE) データ 2 バイトを 16 進データ 1 バイトに変 換して B レジスタに出力する . H L レジスタで指定された番地の C. G. C. T4 2 ( 0 2 5 E) データ 4 バイトを 16 進データ 2 バイトに変 換して D E レジスタに出力する . VRAMCK H L レジスタのデータカ SVIDEO RAM 内に あれば Z フラグをセットしてリターン . ( 0 1 0 7 ) ( 0 1 6 3 ) ( 0 1 8 2 ) 写真 7 各コマンドの入力例 ( 0 1 5 2 ) ー 48
図 6 メモリ・マップ EP-ROM 工リア UART リセット・ポート MPU 組み立てポードをケースに組み込んだもの F F F E F C 0 0 F 8 0 0 F 4 0 0 F 0 0 0 E C 0 0 E 8 0 0 E 4 0 0 UART 入力 , プ ) ンタ READY 入力ポート プ丿ンタ出力ポート CRT 表示工リア O 8 0 0 入力文字数インデックス コントロールコードフラグ スタック・ポインタ 入力データ・パッフア・エリア 波数変調 ) で送られてくるので , 受信 するには復調して 1 〃 0 〃の TTL レベル信号に変換します . 復調回路はメーカー製で発売されて おり , 自作される方はハム関係の雑誌 RTTY を始めようと思い , いろいろ 機械を探しましたが , なかなか安価で に記事が度々発表されているので参考 入手できす自作することにしました . にしてください . 最初は CRT 表示だけの 1 号機を作 送信部も , 出力は TTL レベルなの 回路は MPU 部とピデオ RAM 部の 2 りましたが , ハードコピーが取れす で電波で送るために変調をかけます . 枚に分けて組み立てました . 配線はユ RTTY の面白みが半減したため , 2 号 今回は , トランシーバの関係上 AFSK ニバーサル・ポードにピニール線を使 機は CRT 表示とプリンタの 2 本立て 方式で変調をかけて使用しています . って行ないました . 一般的な注意事項 になりました . これはプリンタの紙が 変調および復調回路はトランシーバに を守れば特に問題はないようです . 結構高く , 受信だけのときは CRT 表 組み込んでいます . キー部は , 電卓に使われている物を 示だけで済ませようと考えたためです . 使い方は , 電源を入れると自動スタ 必要な数だけ組み合わせています . 回路は MPU を使ったため全体がわ ートして受信待ちの状態になるので , 放電プリンタは , 本体ケースをぎり りあい小型にまとまりました . ただキ 受信機を操作して RTTY の電波を受信 ぎりの寸法で組んだため , 中に入らす ーポードは秋葉原で安物の電卓キーを すれば文字が出力されます . 送信部も 別置きにしています . 買って作ったために多少使いにくい点 電源を入れるとスタンバイ状態になり があります . 本機は最小限の機能しか ます . キーを押せばコードが出力され 持っていませんが , MPU を使ってい ます . なお , 自分の送信出力を見たい るので , 自動送信などいろいろなアイ ときは , 入力端子を切り換えて出力端 デアがプログラムの変更により簡単に 子と接続すればモニタできます . できると思います . RTTY プログラム・リスト プリンタイニシャ ラズ 加番地に CRT 表 示番地セット 間番地をスタック ポインタにセット 79 番地にコントロ 男豫 Ct 日こユ新 第 4 第、はを。ー、 メモリ・エリア区分を図 6 に示しま す . プログラムはハンド・アセンプル で行ないました . リスト 1 にプログラ ムを示します . 0 まとめ 組み立て 使い方 ノ、ムの RTTY の電波形式は FI ( 周 孝を疉学軸料す 朝第き第な第 を第第 E 記 1 二 蘢墾 ELÜ第ア : 彅 新 一を ~ しを E : CRT 画面を全 クリア 1 1 7