マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[総合第123回]
●LOCATE、POS、CSRLIN、TAB
今回は画面制御のBASIC命令、関数を一挙に追加です。
新マイコン独立化セットをご注文いただいたお客様から、「こういう命令はありませんか(なければ作ってもらえるとうれしいのですけれど)」というお問い合わせをいただきました。
今まではずっとUSB接続型でやってきたものですから、画面制御についてはあまり意識していませんでした。
問い合わせをいただいて初めて気が付きました。
そういえばなんたって独立セットですから、やる気になれば自由に画面表示の制御もできるのでした。
ということで急遽BASICに表記の命令、関数を追加しました。
大体は昔のパソコンのBASICに近い使い方になっていると思います。
以下、簡単に説明します。
LOCATE X,Y
カーソルの位置を指定します。
画面左上隅がX=0,Y=0で右下隅がX=79、Y=24です。
Xは0〜79、Yは0〜24の整数のほか整数型の変数、計算式も書くことができます。
POS
カーソルがある水平方向の桁位置が入ります。
整数型の関数です。
値は0〜79の間の整数値です。
左端が0、右端が79です。
CSRLIN
カーソルがある行位置が入ります。
整数型の関数です。
値は0〜24の間の整数値です。
一番上の行が0、最下行が24です。
TAB(N)
PRINT文の中だけで使える特殊関数です。
そのPRINT文で画面に文字を出力するときに行の左端を0桁としてカーソルをN桁に移動します。
Nは0〜255の範囲の整数で、その範囲の値をもつ整数型の変数や式も使えます。
PRINT文の実行途中にTAB(N)があって、そのときまでにすでに表示された文字によってカーソルの位置がNよりも右になっていたときには、TAB(N)によってカーソルが戻ることはありません。
Nの値がそのときのカーソル位置よりも左にある(値が小さい)ときは、カーソルが1行下のN桁に移動します。
またNが79よりも大きいときは下の行が80〜159、さらに下の行が160〜239、そのさらに下の行が240〜255と数えた位置にカーソルが移動します。
実行例です。
仕事に使っていたWindows7のLCDモニタディスプレイが突然昇天してしまいました(中古のDELLでしたから寿命だったかも)。
今まで撮影に使っていたDELLのディスプレイが20インチで使い易そうだったのでそれを代わりにWindows7にあてがいました。
で。
撮影用のモニタディスプレイがなくなってしまったので、インターネットで安い中古を捜して購入したのですけれど。
普通に使っている分にはそれほど気にならないのですが、こうやって写真に撮ってみますと、画面の上のほうがなんだかちょっと暗いです。
まあ、超安値の中古だから文句は言えません。
こういう用途には横長のディスプレイではかえって使いにくいだけですから昔ながらの角型がよいのですけれど、中古でも店頭ではさっぱり見かけなくなってしまいました。
なかなかに困った世の中です。
余談でした。
LOCATE文で13行10桁にカーソルを移動しました。
そのあとPRINT文でabcを出力しました。
ちょっと画像では確認がしにくいのですけれど”a”が13行10桁に表示されています。
そのあとTAB(20)が実行されたのでカーソルが20桁に移動して、そこにxyzが表示されました。
さらにそのあとにPOSの値(桁位置)とCSRLINの値(行)が表示されました。
TAB(20)のあとでxyzが表示されて、そのあとに” X=”が表示されたあとのカーソル位置がPOSに入りますから、値は26になります。
POSの値をxyzが表示された直後の値になるように少しプログラムを変えてみました。
上で表示したあとでプログラムを編集し直したのでちょっとわかりづらいかもしれません。
下のほうでLIST表示したのが変更後のプログラムです。
その下のr.(RUN)で実行するとLOCATEの指定は変えていませんから、同じ位置に表示されました。
今回はx=を表示する前にX%にPOSの値を入れましたから、x=23と表示されました。
もうひとつTAB()の実行例です。
最初のプログラムではLOCATEで指定したカーソルの桁位置(10)よりもTABの値(5)のほうが小さいので一行下の5桁にカーソルが移動しました。
その下のプログラムではTABに79を越える値(200)を指定しました。
その結果2行下の40桁のところにカーソルが移動しました。
CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第123回]
2017.11.9upload
前へ
次へ
ホームページトップへ戻る