AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
PC-9801画面構成とお約束BASIC(8)
NEC PC-9801/9821シリーズで表示出来る文字数は、以下のようになっています。ハイレゾモードとは、PC-98XA・XL・XL2・RL・PC-H98・PC-9821A+98ハイレゾボードで実現出来る高解像度モードの事です。通常のNEC PC-9801・PC-9821はノーマルモードです。
 ノーマルモードハイレゾモード
テキスト表示 横40×縦20
横40×縦25
横80×縦20
横80×縦25
横80×縦25
グラフィック表示横640×縦400横1120×縦750
グラフィック
画面モード
640×200・カラー
640×200・白黒
640×400・白黒
640×400・カラー
1120×750・カラー
1120×750・白黒

テキスト表示は「WIDTH」文で指定出来ます。「横40×縦20」にしたい場合には「WIDTH 40,20」という感じです。ノーマルモードとハイレゾモードの両用プログラムを作るには、「WIDTH 80,25」しかありません。通常見るのもこのモードである場合が多いです。
 
グラフィック画面モードは「SCREEN」文で指定出来ます。SCREEN文ではページ数指定も出来ますが、N88BASIC(86)での通常プログラムはページ数は1枚しか使わないと思われます。ノーマルモードの場合は、640×400・カラーのモードで使う場合がほとんどと思われます。この場合は「SCREEN 3,0,0,1」と指定します。ハイレゾモードの場合は、1120×750・カラーなので「SCREEN 0,0,0,1」を使います。
 
次に、テキスト画面モード設定を行う「CONSOLE」文。これは、スクロール開始行、スクロール行数、ファンクションキー表示ON/OFF、カラー/白黒スイッチ、キャラクタモード、を指定します。通常は「CONSOLE 0,25,0,1,0」と指定します。これは、スクロール開始行=0、スクロール行数=25、ファンクションキー=OFF、カラー、キャラクタモード=日本語表示、を意味します。
なお、CONSOLE文は、例えばアドベンチャーゲームのように、画面下4行だけを文字表示したい、というような事が出来ます。スクロール行数を4行にする、という事は出来ますが、列数を指定する事は出来ません。
 
次に、画面の色の設定を行う「COLOR」文です。これは、ファンクションコード(カラーモードの場合は文字色)、バックグラウンドカラー、ボーダーカラー、フォアグラウンドカラー、パレットモード、を指定しますが、最初に設定するもので重要なのはパレットモードです。パレットモードは、「0:8色中8色モード」「1:4096色中8色モード」「2:4096色中16色モード」です。PC-9801/E/F/Mは16色が使えません。PC-9801U2/VF2/VM0/VM2/VM4の場合は別売オプションボードが必要です。また、ディップスイッチSW1-8を「ON」(拡張グラフィックモード)にしておく必要があります。
「1:4096色中8色モード」で良い場合は「COLOR ,,,,1」と指定します。「2:4096色中16色モード」にする場合は「COLOR ,,,,2」と指定します。但し16色が使えない状態だとエラーが発生します。ハイレゾモードの場合は常に「4096色中16色モード」になります。
 
MS-DOSからN88BASIC(86)の画面になると、いろいろな画面表示がされています。必要の無い画面の文字を消すには、「CLS」文を使います。
CLS
(CLS 1)
テキスト画面をクリア
CLS 2グラフィック画面をクリア
CLS 3 テキスト画面、グラフィック画面
の両方をクリア

さて、ノーマルモードとハイレゾモードのどちらで動いているかをプログラムで判定する方法ですが、私がよく使うのは、プログラムの冒頭部分で「VIEW」関数を使うパターンです。
A=VIEW(0)ビューポートの左上X座標がAに入る
B=VIEW(1)ビューポートの左上Y座標がBに入る
C=VIEW(2)ビューポートの右下X座標がCに入る
D=VIEW(3)ビューポートの右下Y座標がDに入る
ビューポートの初期値は、

ノーマルモードハイレゾモード
A00
B00
C6391119
D199 又は 399749
となりますので、
IF VIEW(2)=639 THEN <ノーマルモードの処理> ELSE <ハイレゾモードの処理>
のようにすればOK。
 
 
まとめると、プログラムの最初に行う「お約束」は以下のようになります。
10 ' SAVE "ファイル名.BAS"
20 ' プログラムのタイトル等
30 '
40 IF VIEW(2)=639 THEN SCREEN 3,0,0,1:PX=1:PY=1 ELSE SCREEN 0,0,0,1:PX=1.75:PY=1.875
50 WIDTH 80,25:CONSOLE 0,25,0,1,0:COLOR ,,,,2:CLS 3
・・・・・
(4096色中16色モードの場合)
 
変数PX,PYには、ノーマル・ハイレゾの判定を他の部分で行う際に、「IF VIEW(2)=639 THEN」と何度も書くのが面倒なので「IF PX=1 THEN」と書きたい、という事が1つ。後々、「LINE」文などで画面にグラフィックを描きたい場合、ノーマルモードで「LINE (100,100)-(300,300)」と書く所を、「LINE (100*PX,100*PY)-(300*PX,300*PY)」と書けば、ノーマルモードとハイレゾモードを同じように扱えます。これについては後述します。
バッチファイル
BASIC
 1 2 3 4 5
 6 7 8 9 A
 B C D E F
 G H I J
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.