,{c H},{BGCOLOR:dddddd|BOLD|CENTER} ,{c C},{CENTER} ,{c R},{LEFT} ,{c W},{LEFT|BGCOLOR:white|BOLD} // %第1版第15刷 P.49-64 // !!!2章 MSX BASIC ver2.0 の変更点  MSX BASIC ver2.0 は、MSX BASIC ver1.0 に比べ大幅に機能が追加、変更されています。それらは、VDP(Video Display Processor)のバージョンアップに伴うものと、RAMディスク、時計、メモリスイッチなどの諸機能がハードウェア的に追加されたことによるものですが、特にVDPの変更は画面関係のステートメントのほとんどになんらかの影響を与えています。  本章ではそれらのステートメントをピックアップし、追加、変更のあった箇所を示します。なお、文中の“MSX1”とは MSX BASIC ver1.0 を、“MSX2”とは MSX BASIC ver2.0 を指します。 !!2.1 スクリーンモードに関する追加、変更 '''● SCREEN [<画面モード>[,<スプライトサイズ>[,<キークリックスイッチ>[,<カセットボーレート>[,<プリンタオプション>[,<インターレースモード>]]]]]]'''  変更があったのは<画面モード>と<インターレースモード>です。  <画面モード>は、0〜8まで指定することができるようになりました。このうち0〜3まではMSX1と同じで、残りの4〜8が新設されたモードです。ひとつの画面モードを指す場合、BASICでは“SCREENモード”という呼び方をしますが、これはVDPの内部で使用している“画面モード”とは若干の違いがあります。これらの対応と、その意味を表2.1に示します。なお、画面モード2と4の違いはスプライトの表示機能だけです。  <インターレースモード>を指定することで、VDPのインターレース機能の設定ができます(表2.2)。2画面交互表示モードの場合は、“SET PAGE”で指定するディスプレイページが奇数ページでなければなりません。また、その時はディスプレイページとそれよりひとつ番号の小さいページが交互に表示されることになります。 ,{t},{CENTER} ,BASICのモード{H|ROWS 2},VDPのモード{H|ROWS 2},意味{H|COLS 3} ,,,ドットまたは文字数{H},同時表示色{H},スクリーン形式{H} ,SCREEN0:WIDTH40,TEXT1 MODE,40×24文字,512色中 2色,テキスト ,SCREEN0:WIDTH80,TEXT2 MODE,80×24文字,512色中 2色,テキスト ,SCREEN1,GRAPHICS1 MODE,32×24文字,512色中 16色,テキスト ,SCREEN2,GRAPHICS2 MODE,256×192ドット,512色中 16色,高解像度グラフィック ,SCREEN3,MULTI COLOR MODE,64×48ドット,512色中16色,低解像度グラフィック ,SCREEN4,GRAPHICS3 MODE,256×192ドット,512色中16色,高解像度グラフィック ,SCREEN5,GRAPHICS4 MODE,256×212ドット,512色中16色,ビットマップグラフィック ,SCREEN6,GRAPHICS5 MODE,512×212ドット,512色中4色,ビットマップグラフィック ,SCREEN7,GRAPHICS6 MODE,512×212ドット,512色中16色,ビットマップグラフィック ,SCREEN8,GRAPHICS7 MODE,256×212ドット,256色,ビットマップグラフィック {{div_begin style='text-align:center;'}} '''表2.1 BASIC画面(SCREEN)モードと、VDPの画面モードの対応''' {{div_end}} ,{t},{CENTER} ,インターレースモード{H},表示機能{H} ,0{C},ノン・インターレス通常表示(省略値) ,1{C},インターレース表示 ,2{C},ノン・インターレース、Even/Odd2画面交互表示 ,3{C},インターレース、Even/Odd2画面交互表示 {{div_begin style='text-align:center;'}} '''表2.2 インターレースモードによる表示機能の違い''' {{div_end}} '''● SET PAGE <ディスプレイページ>,<アクディブページ>'''  これは新たに追加されたステートメントで、画面に表示するページと、データを読み書きするページの設定を行うためのものです。これは画面モードが5〜8の場合に有効で、指定できる値はVRAMの容量と画面モードによって異なります(表2.3)。  VRAM上でのページの割り振られ方は、APPENDIXのVRAMマップを参照してください。 ,{t},{CENTER} ,画面モード{H},VRAM64K{H},VRAM128K{H} ,{c},{C},{C},{C} ,SCREEN5,0〜1,0〜3 ,SCREEN6,0〜1,0〜3 ,SCREEN7,使用不可,0〜1 ,SCREEN8,使用不可,0〜1 {{div_begin style='text-align:center;'}} '''表2.3 画面モードとVRAM容量によるページ指定値の範囲''' {{div_end}} '''● WIDTH <桁数>'''  画面モードが0の場合、<桁数>は80まで指定することが可能になりました。 !!2.2 カラーの指定に関する追加、変更 '''● COLOR [<前景色>[,<背景色>[,<周辺色>]]]'''  MSX2では、カラーパレット機能が使えるようになったために、画面モードによって色を指定する数値の範囲や意味が異なってきます(表2.4)。なお、<背景色>はテキスト画面以外ではCLS文実行時に変わります。  画面モード6における<周辺色>は特殊な意味を持ちます。図2.2は画面モード6の時の<周辺色>のビットごとの意味ですがこのモードではフラグ(ビット4)の操作により、X座標の奇数番の縦ラインと偶数番の縦ラインの色を別々に指定することができます。  フラグが0(周辺色値が0〜15)の時は別々の色を指定することはできず、奇数番縦ラインの色で周辺色が設定されます。フラグが1(周辺色値が16〜31)の時は偶数番縦ラインと奇数番縦ラインの色で周辺色が設定され、その2つの色が異なっていた場合は画面は縦じま模様になります。 {{div_begin style='text-align:center;'}} {{svg 図2.2.svg}} '''図2.2 画面モード6のときの周辺色のビットごとの意味''' {{div_end}} '''● COLOR=(<パレット番号>,<赤の輝度>,<緑の輝度>,<青の輝度>)'''  指定したパレットに色を設定します。<パレット番号>の指定は、表2.4を参照してください。ただし、画面モードの8の場合はパレット機能がないので何も起こりません(エラーにもならない)。なお、パレット番号の0番は、通常は透明色(周辺が透けて見える)に固定されていますが、VDPのレジスタを変更することにより、他のパレットと同様に扱えるようになります。 ''' VDP(9)=VDP(9) OR &H20''' ………… 同様に扱う時 ''' VDP(9)=VDP(9) AND &HDF''' ……… 透明色に固定したい場合 ,{t},{CENTER} ,画面モード{H},色指定{H},番号の範囲{H} ,{c},{C},{C},{C} ,SCREEN0,パレット番号,0〜15 ,SCREEN1,パレット番号,0〜15 ,SCREEN2,パレット番号,0〜15 ,SCREEN3,パレット番号,0〜15 ,SCREEN4,パレット番号,0〜15 ,SCREEN5,パレット番号,0〜15 ,SCREEN6,パレット番号,0〜3 ,SCREEN7,パレット番号,0〜15 ,SCREEN8,色番号,0〜255 {{div_begin style='text-align:center;'}} '''表2.4 画面モードごとの色指定''' {{div_end}}  各色の輝度は0〜7までの8段階指定することができ、その組み合わせにより8(赤)×8(緑)×8(青)=512色を表現することが可能です。 '''● COLOR=RESTORE'''  カラーパレット保存テーブル(APPENDIX VRAMマップ参照)の内容のとおりに、カラーパレット・レジスタを再設定します。たとえば通常とは異なったカラーパレットの設定で描いた画像データをBSAVEした場合、それをBLOADしただけではカラーパレットは変わらないので、はじめの画像は再現できません。そのような場合は、カラーパレット保存テーブルを含めて画像をBSAVEしておきます。そのデータをBLOADした後に、COLOR=RESTORE命令でパレットを再設定することにより、はじめの画像と同じ色を得ることができます。 '''● COLOR[=NEW]'''  カラーパレットを、電源投入時と同じ状況に初期化します(表2.5)。プログラムの最初と最後に入れておくとよいでしょう。 ,{t},{CENTER} ,パレット番号{H},色{H},赤の輝度{H},青の輝度{H},緑の輝度{H} ,{c},{C},,{C},{C},{C} ,0,透明,0,0,0 ,1,黒,0,0,0 ,2,緑,1,1,6 ,3,明るい緑,3,3,7 ,4,暗い青,1,7,1 ,5,明るい青,2,7,3 ,6,暗い赤,5,1,1 ,7,シアン,2,7,6 ,8,赤,7,1,1 ,9,明るい赤,7,3,3 ,10,暗い黄,6,1,6 ,11,明るい黄,6,3,6 ,12,暗い緑,1,1,4 ,13,マゼンダ,6,5,2 ,14,灰,5,5,5 ,15,白,7,7,7 {{div_begin style='text-align:center;'}} '''表2.5 カラーパレットの初期化色とパレット設定値''' {{div_end}} !!2.3 文字の表示に関する追加、変更 '''● LOCATE [[,[,<カーソルスイッチ>]]]'''  テキスト画面上で文字を表示する位置を指定する命令です。  画面モード0に80桁表示機能が追加されましたため、この機能の使用時には、X座標は最大79まで指定可能となりました。 !!2.4 グラフィックスの表示に関する追加、変更 '''● LINE [ {(X1,Y1)|STEP(X1,Y1)} ]-{ (X2,Y2)|STEP(X2,Y2) }[,<色>[,{B|BF}[,<ロジカルオペレーション>]]]''' '''● PSET {(X,Y)|STEP(X,Y)}[,<色>[,<ロジカルオペレーション>]]''' '''● PRESET {(X,Y)|STEP(X,Y)}[,<色>[,<ロジカルオペレーション>]]'''  これらは、画面モードに応じて指定できる座標の範囲が異なります(表2.6)。 ,{t},{CENTER} ,{c},{H},{H},{H} ,画面モード,X座標,Y座標 ,{c},{C},{C},{C} ,SCREEN2,0〜255,0〜191 ,SCREEN3,0〜255,0〜191 ,SCREEN4,0〜255,0〜191 ,SCREEN5,0〜255,0〜211 ,SCREEN6,0〜511,0〜211 ,SCREEN7,0〜511,0〜211 ,SCREEN8,0〜255,0〜211 {{div_begin style='text-align:center;'}} '''表2.6 画面モードによる座標の指定範囲''' {{div_end}}  新たにロジカルオペレーションの機能が追加されました。<ロジカルオペレーション>を指定すると、指定した<色>ともとの色の間で論理演算が行われ、実際にはその結果の色で描かれます。ロジカルオペレーションの種類は表2.7のとおりです。なお<色>の指定は、画面モード8を除いてパレット番号で行います。 ,{t},{CENTER} ,{c},{H},{H} ,ロジカルオペレーション,機能 ,{c},{L},{L} ,PSET(省略値),TPSET,“指定色”で描く ,PRESET,TPRESET,“NOT(指定色)”で描く ,XOR,TXOR,“(背景色)XOR(指定色)”で描く ,OR,TOR,“(背景色)OR(指定色)”で描く ,AND,TAND,“(背景色)AND(指定色)”で描く 注)<色>を(指定色)とする。  描かれる所のもとの色を(背景色)とする。  頭に"T"がついたロジカルオペレーションを指定すると<色>が透明色(COLOR 0)の場合、何も行われない。 {{div_begin style='text-align:center;'}} '''表2.7 ロジカルオペレーション''' {{div_end}} '''● CIRCLE {(X,Y)|STEP(X,Y)},<半径>[,<色>[,<開始角度>[,<終了角度>[,<比率>]]]]'''  画面モードに応じて、指定できる座標の範囲が異なってきます(2.6参照)。<色>の指定は、画面モード8を除いてパレット番号で行います。 '''● PAINT {(X,Y)|STEP(X,Y)}[,<色>[,<境界色>]]'''  画面モードに応じて、指定できる座標の範囲が異なってきます(表2.6参照)。<色>の指定は、画面モード8を除いてパレット番号で行います。画面モード2と4では<境界色>の指定は無効となります。 '''● PUT KANJI [(X,Y)],<漢字コード>[,<色>[,<ロジカルオペレーション>[,<モード>]]]'''  漢字を表示します。<漢字コード>は、JIS漢字コードで指定してください。<漢字コード>に指定できる値の有効範囲は&H2121〜&H4F53で、厳密には上位バイトが&H21〜&H27,&H30〜&H4Fで、下位バイトが&H21〜&H7Eの値となります。<ロジカルオペレーション>については表2.7を参照してください。<モード>は、表2.8のような意味を持ちます。なお、この命令は画面モード5〜8で有効です。 ,{t},{CENTER} ,{c},{H},{H} ,モード,機能 ,{c},{C},{L} ,0,16×16ドットで普通に表示する(省略値) ,1,偶数番地の線だけを、縦8ドットで表示する ,2,奇数番値の線だけを、縦8ドットで表示する {{div_begin style='text-align:center;'}} '''表2.8 PUT KANJIの<モード>''' {{div_end}} !!2.5 VDPのアクセスに関する追加、変更 '''● BASE (<式>)'''  VRAMに割り振られている、各テーブルの先頭アドレスを返します。<式>と各画面モードのテーブルは、表2.9のように対応しています。  テーブル先頭アドレスの読み出しはすべての<式>に対して可能ですが、書き込みは<式>が0〜19(画面モード0〜3まで)の時しかできません。  画面モードの2のテーブルアドレスを変更すると、同時に画面モード4のテーブルも変わるので注意してください。  画面モード5〜8の場合の返されるアドレスは、アクティブページの先頭アドレスからのオフセット値です。 ,{t},{CENTER} ,{c},{H},{H},{H} ,式,画面モード,テーブル ,{c},{C},{C},{L} ,0,0,パターンネーム・テーブル ,1,0,――― ,2,0,パターンジェネレータ・テーブル ,3,0,――― ,4,0,――― ,5,1,パターンネーム・テーブル ,6,1,カラーテーブル ,7,1,パターンジェネレータ・テーブル ,8,1,スプライトアトリビュート・テーブル ,9,1,スプライトジェネレータ・テーブル ,10,2,パターンネーム・テーブル ,11,2,カラーテーブル ,12,2,パターンジェネレータ・テーブル ,:,:,: ,43,8,スプライトアトリビュート・テーブル ,44,8,スプライトジェネレータ・テーブル {{div_begin style='text-align:center;'}} '''表2.9 BASEの設定値とVRAMテーブルの対応''' {{div_end}} '''● VDP ()'''  VDPレジスタの値の読み出しと書き込みを行います。の部分は、実際のVDPのレジスタの番号とは若干のズレがあります。と実際のVDPのレジスタの対応を表2.10に示します。 ,{t},{CENTER} ,{c},{H},{H},{H} ,n,VDPレジスタ番号,アクセスモード ,{c},{C},{L},{L} ,0〜7,0〜7(MSX1と同じ),リード/ライト ,8,ステータスレジスタ0,リードのみ ,9〜24,8〜23,リード/ライト ,33〜47,32〜46,ライトのみ ,-1〜-9,ステータスレジスタ1〜9,リードのみ {{div_begin style='text-align:center;'}} '''表2.10 VDPレジスタとの対応''' {{div_end}} '''● VPEEK (<アドレス>)''' '''● VPOKE <アドレス>,<データ>'''  画面モードが5〜8の時は、アクティブページの先頭アドレスからのオフセット値を<アドレス>に設定します。<アドレス>に入る値の有効範囲は0〜65535で、<データ>に入る値の有効範囲は0〜255です。 !!2.6 画像データの保存に関する追加、変更 '''● BSAVE <ファイル名>,<開始アドレス>,<終了アドレス>,S''' '''● BLOAD <ファイル名>,S'''  DISK BASICのステートメントで、VRAMの内容をディスクファイルにセーブ/ロードする時に使用します。どの画面モードでも有効ですが、画面モード5〜8の時はアクティブページが対象になります。なお、カセットテープに対しては使用できません。<アドレス>に入る値の有効範囲は-32768〜-2,0〜65534(&HFFFE)です。 '''● COPY (X1,Y1)-(X2,Y2)[,<ソースページ>] TO (X3,Y3)[,<デスティネーションページ>[,<ロジカルオペレーション>]]''' '''● COPY (X1,Y1)-(X2,Y2)[,<ソースページ>] TO {<配列変数名>|<ファイル名>}''' '''● COPY {<配列変数名>|<ファイル名>}[,<向き>] TO (X3,Y3)[,<デスティネーションページ>[,<ロジカルオペレーション>]]''' '''● COPY <ファイル名> TO <配列変数名>''' '''● COPY <配列変数名> TO <ファイル名>'''  COPY命令は画像データ転送用のステートメントで、画面モード5〜8の時有効です。対象となるはVRAM、配列変数、ディスクファイルのいずれかで、それらの間を自由にデータ転送することができます。  (X1,Y1)-(X2,Y2)は、この2つの座標を対角線とする四角い領域を転送することを示します。<ソースページ>は転送元の、<デスティネーションページ>は転送先のページを表し、省略するとアクティブページが指定されます。<向き>は、画像データを画面に書き込む際の向きを表し、0〜3の範囲で指定します(図2.3)。 {{div_begin style='text-align:center;'}} {{svg 図2.3.svg,,size:580x250}} '''図2.3 画像データを書き込む向き''' {{div_end}}  <配列変数>は、整数型、単精度実数型、倍精度実数型のいずれかの配列変数で、あらかじめ画像データを取り込める大きさの領域を確保しておかなければなりません。大きさは、式1で算出することができます。<ピクセルサイズ>は、画面の1ドットを表すために使うビット数で、画面モード5と7の場合は4、画面モード6の場合は2、画面モード8の場合は8が入ります。また、画像データは図2.4のフォーマットで記憶されます。 '''式1''' '''INT ((<ピクセルサイズ>*(ABS(X2-X1)+1)*(ABS(Y2-Y1)+1)+7)/8)+4 バイト''' {{div_begin style='text-align:center;'}} {{svg 図2.4.svg,,size:420x200}} '''図2.4 画像データのフォーマット''' {{div_end}}  <ロジカルオペレーション>は、転送する先にあるデータと転送するデータの論理演算を指定します。指定するパラメータは表2.7を参照してください。なお頭に“T”をつけた場合は、転送元の透明色の部分は転送されません。 !!2.7 スプライトに関する追加、変更  MSX2の画面モード4〜8で使用するスプライトは、スプライトモード2と呼ばれ、MSX1のものと比べかなりの機能アップがされています。たとえばMSX1では1枚のスプライトで扱うことができるのは1色だけでしたが、MSX2のこのモードでは横の各ラインに個別の色が指定でき、それにより多色のキャラクタを1枚のスプライトで実現できるようになりました。さらに、ドットごとに色を付けたい場合などは、2枚以上のスプライトを組み合わせて1枚のスプライトのように使用することもできるので、それらを併用するとよいでしょう。また、MSX1では5個以上のスプライトが横ライン上に並んだ場合5個目以降のスプライトは表示されませんでしたが、MSX2では8個まで表示可能になり、より自由度の高いものとなっています。  スプライトに指定できる色は画面モード8を除いて表2.4(COLOR文)と同じですが、画面モード8のスプライトはパレットが使えないため指定は色番号となり、使用できる色は表2.11に示す16色のみとなります。 ,{t},{CENTER} ,{c},{W},{W},{W},{W},{W},{W},{W},{W} ,O:黒,1:暗い青,2:暗い赤,3:暗い紫,4:暗い緑,5:暗い水色,6:暗い黄色,7:灰色 ,8:肌色,9:青,10:赤,11:紫,12:緑,13:水色,14:黄,15:白 {{div_begin style='text-align:center;'}} '''表2.11 画面モード8におけるスプライト指定色''' {{div_end}} '''● PUT SPRITE <スプライト面番号>[,[STEP](X,Y)[,<色>[,<スプライトパターン番号>]]]'''  画面モード1〜3では指定したスプライト面の表示を消す場合はY座標を209、指定したスプライト面以降のすべてを消す場合はY座標を208としましたが、画面モード4〜8においてはY座標が212ドットに増えたため、指定値がそれぞれ217、216に変わりました。 '''● COLOR SPEITE$ (<スプライト面番号>)=<文字式>'''  スプライトの横ラインごとの色を指定します(図2.5)。  <文字式>に指定できるのは1〜16文字で、その文字のアスキーコードの0〜3ビットで色を指定し、4〜7ビットでスプライトの各機能を指定します(表2.12)。なお、これらの指定は画面モード4〜8の場合にのみ有効です。  COLOR SPRITE$=CHR$(1ライン目の色)+CHR$(2ライン目の色)…+CHR$(8ライン目の色) {{div_begin style='text-align:center;'}} {{svg 図2.5.svg,,size:420x180}} '''図2.5 スプライトと<文字式>の関係''' {{div_end}} ,{t},{CENTER} ,{c},{W},{W},{W},{W},{W},{W},{W},{W} ,b7,1ならば、スプライトを32ビット左にずらす ,b6,1ならば、連続したスプライト面のスプライトを同時に動かす。このときスプライトの優先順位と衝突は無視され、スプライトが重なった場合それらの色番号をORした色で表示される※ ,b5,1ならば、スプライトの衝突を無視する。 ,b4,未使用 ,b0-b3,パレット番号 ※たとえばスプライト面1のビット6を‘0’、スプライト面2のビット6を‘1’としておくと、スプライト面1を動かすだけでスプライト面2が同じ位置に重なって表示される。 {{div_begin style='text-align:center;'}} '''表2.12 文字式のビットごとの意味''' {{div_end}} '''● COLOR SPRITE (<スプライト面番号>)=<数式>'''  指定された面のスプライト全体を<数式>の色にします。さきほどのCOLOR SPRITE$は色指定を<文字式>で行いますが、これは<数式>で行うところが違います。色指定の形式は表2.12と同じですが、b7の指定はできません。なお、これらは画面モード4〜8の時に有効です。 !!2.8 オプション機能に関する追加 '''● SET VIDEO <モード>[,[,[,<同期>[,<音声>[,<ビデオ入力>[,]]]]]]'''  このステートメントは、オプションであるスーパーインポーザやディジタイザに対するステートメントであり、それらの機能を装備している機種に対してのみ使用できます。  <モード>はスーパーインポーズのモード設定をするもので、表2.13に示す値が指定できます。  が1の時、テレビの輝度が半分になります。  が1の時、VDPのカラーバスが入力状態になり、0の時は、出力状態になります。  <同期>が1の時「外部同期」が、0の時「内部同期」が選択されます。  <音声>は、外部信号を混合して出力するかどうかの指定で、表2.14の値が入ります。  <ビデオ入力>は、外部映像信号の入力を切り換え、0ならRGBマルチコネクタが、1なら外部映像信号入力コネクタが選択されます。  は、RGBマルチコネクタのAVコントロール端子の出力を指定するためのもので、0ならOFFに、1ならONになります。 ,{t},{CENTER} ,{c},{H},{H},{H},{H},{H} ,モード,S1,S0,TP,表示画面 ,{c},{C},{C},{C},{C},{L} ,0,0,0,0,コンピュータ ,1,0,1,1,コンピュータ ,2,0,1,0,スーパーインポーズ ,3,1,0,0,テレビ 注)モード0の場合は、外部同期をかけることはできません。その他のモードでは、VDPのコンポジット出力は使えません。 S1,S0,TPはVDPのレジスタ内のフラグの名称です。 {{div_begin style='text-align:center;'}} '''表2.13 SET VIDEOの<モード>の入力値''' {{div_end}} ,{t},{CENTER} ,{c},{H},{H} ,音声,機能 ,{c},{C},{L} ,0,外部音声信号を混合しない ,1,右チャンネルの外部音声信号を混合する ,2,左チャンネルの外部音声信号を混合する ,3,両チャンネルの外部音声信号を混合する {{div_begin style='text-align:center;'}} '''表2,14 SET VIDEOの<音声>の入力値''' {{div_end}} '''● COPY SCREEN [<モード>]'''  ディジタイズなどを行い、カラーバスのデータをVRAMに書き込む時に使用します。これは画面モード5〜8のみ有効です。  <モード>が0の時は、1フィールドの信号をディジタイズしてディスプレイページに書き込み、<モード>が1の時は、連続する2フィールド(つまり1フレーム)の信号を(ディスプレイページ-1)番のページとディスプレイページに書き込みます。ですからモードが1の場合は、ディスプレイページが奇数番のページになっている必要があります。なお、省略したした場合は、モードが0となります。 !!2.9 時計機能に関する追加 '''● GET DATE <文字変数名>[,A]'''  時計から日付を読み、文字変数に代入するための命令です。読み込まれる日付の型式は次のようになっています。  YY/MM/DD  (YY=西暦の下2ケタ、MM=月、DD=日) 例)85/03/23(1985年3月23日)  なお、オプションのAを指定するとアラームの日付が読み込まれます。 '''● SET DATE <文字式>[,A]'''  時計に日付を設定します。パラメータとオプションの型式は“GET DATE”と同じです。 例) SET DATE "85/03/23" '''● GET TIME <文字変数名>[,A]'''  時計から時刻を読み、文字変数に代入するためのステートメントです。読み込まれる時刻の形式は次のようになっています。  HH:MM:SS  (HH=時、MM=分、SS=秒) 例)22:15:00(22時15分0秒)  なおオプションのAを指定するとアラームの時刻が読み込まれます。 '''● SET TIME <文字式>[,A]'''  時計に時刻を設定します。パラメータとオプションの形式は“GET TIME”と同じです。 例) SET TIME "22:15:00" ※アラームについて  アラーム機能はオプションなので、指定した時刻に何が起こるかは機種によって異なります(普通はなにも起きない)。  “SET DATE”と“SET TIME”の両方のアラーム設定を行う場合は、かならず“SET TIME”から行います(“SET TIME”を実行すると、“SET DATE”で設定したアラームの日付が、消えてしまう)。  なお、アラームが設定できるのは、分単位です(秒を設定しても無視される)。 !!2.10 メモリスイッチ機能に関する追加  “SET”命令により、CLOCK-IC内のバッテリバックアップRAMに、以下に挙げるいろいろな設定を記憶させておくことができます。それによってシステム起動時(電源投入時やリセット時)にそれらにしたがった設定が自動的に行われます。なお、“SET TITLE”と“SET PROMPT”、“SET PASSWORD”は同一RAMを使用するため、最後に実行された命令による設定のみが有効になります。 '''● SET ADJUST (,)'''  画面の表示位置を設定します。座標オフセットの設定値は-7〜8です。 '''● SET BEEP <音色>,<音量>'''  BEEP音を設定します。<音色><音量>の設定値は、ともに1〜4です。  <音色>と実際の音の対応を、表2.15に示します。 ,{t},{CENTER} ,{c},{H},{H} ,音色,音 ,{c},{C},{L} ,1,ぴー(MSX1と同じ) ,2,ぽぉ ,3,ぴぃんぽぉん ,4,ぽぴぷっ {{div_begin style='text-align:center;'}} '''表2.15 SET BEEPの<音色>の入力値''' {{div_end}} '''● SET TITLE <タイトル>[,<色>]'''  システム起動時の初期画面に表示されるタイトルと、その時の画面の色を指定します。<タイトル>には、6文字以内の文字列を設定し、<色>には表2.16に示す数値が入ります。<タイトル>がちょうど6文字の場合に限り、タイトル画面を表示したところでキー入力待ちとなります。 ,{t},{CENTER} ,{c},{H|SIZE:80},{H|SIZE:80},{H|SIZE:80},{H|SIZE:80},{H|SIZE:80} ,<色>,1,2,3,4 ,{c},{C},{C},{C},{C},{C} ,画面色,青,緑,赤,オレンジ {{div_begin style='text-align:center;'}} '''表2.16 SET TITLEで指定できる色''' {{div_end}} '''● SET PROMPT <プロンプト>'''  プロンプトを設定します。<プロンプト>には6文字以内の文字列を設定します。 '''● SET PASSWORD <パスワード>'''  システムのパスワードを設定します。<パスワード>は255文字以内の文字式で、このステートメントを実行した後システムが起動されるとパスワードの入力要求待ちになります。正しいパスワードが入力された場合は通常どおり起動し、それ以外は再び入力待ちとなります。なお、グラフィックキーとストップキーの両方を押しながらシステム起動すると、パスワードの要求は行われません(ただし、キーカートリッジでパスワードの設定をした場合はかならずパスワード入力しなければ起動しない)。なお、SET TITLEで空文字を指定することにより、パスワードは解除されます。 '''● SET SCREEN'''  現在設定されている“SCREEN”文のパラメータを記録します。システム起動時には、それにしたがって自動的に設定がされます。記録される項目は以下のとおりです。 '''テキストモードのスクリーン 番号,キークリックスイッチ,''' '''テキストモードの表示幅, プリンタオプション,''' '''前景色,背景色,周辺色, カセットボーレート''' '''ファンクションキースイッチ, ディスプレイモード''' !!2.11 RAMディスク機能に関する追加  MSX1では、0000H〜7FFFHまでのRAMはDOSでしか使われませんでしたが、MSX2ではこの部分を最高32KバイトのRAMディスクとして使用できるようになりました。RAMディスクに対するファイル名の形式は以下のようになっており、<ファイル名前部>には1〜8文字、<拡張子>には1〜3文字の長さの文字列が入ります(ただし、“:”(コロン)、“.”(ピリオド)およびキャラクタコードの00H〜1FHのコントロールキャラクタと2バイトのグラフィック記号は使用できない)。  '''MEM:<ファイル名前部>[.<拡張子>]'''  RAMディスクで実行可能な操作と、それに関係するステートメントは以下のとおりです。  1. BASICプログラムのロード/セーブ(かならずアスキーセーブされる)   '''SAVE, LOAD, RUN, MERGE'''  2. シーケンシャルファイルのリード/ライト   '''OPEN, CLOSE'''   '''PRINT #, PRINT USING #'''   '''INPUT #, LINE INPUT #, INPUT$'''   '''EOF, LOC, LOF'''  なお、RAMディスクでは以下の命令をサポートしていません。 ''' 1. ランダムファイルのリード/ライト''' ''' 2. BLOAD,BSAVE''' ''' 3. COPY''' '''● CALL MEMINI [(<サイズ>)]'''  RAMディスクとして使用するメモリを指定し、RAMディスクの初期化、全ファイルの消去を行います。RAMディスクを使用する場合は、かならずこのステートメントを実行しておかなければなりません。  <サイズ>には、“RAMディスクで使用するメモリ容量-1”が入り、これには1023〜32767の値の指定ができます。(ただしワークエリアとして768バイト分のRAMを使用)。<サイズ>を省略すると、最高である32768バイトがRAMディスクに割り振られます。また“CALL MEMINI(0)”を実行することにより、RAMディスク機能が解除されます。 '''● CALL MFILES'''  RAMディスク内のファイル名を表示します。 '''● CALL MKILL ("<ファイル名>")'''  指定されたファイルを削除します。 '''● CALL MNAME ("<旧ファイル名>" AS "<新ファイル名>")'''  ファイル名を変更します。 !!2.12 その他の追加機能 '''● PAD (<数式>)'''  タッチパッド(タッチパネル)、ライトペン、マウス、トラックボールの状態を返す関数です。  <数式>が0〜7の場合は、MSX1と同様タッチパッドの状態を返し、8〜11の場合は、ライトペンの状態を返します。なお、“PAD(8)”を実行した時に座標とスイッチの値を読み込むようになっているので、PAD(8)の値が-1であることを確認し、他のデータを読むようにしてください(表2.17)。 ,{t},{CENTER} ,{c},{H|SIZE:80},{H} ,式,意味 ,{c},{C},{L} ,8,ライトペンのデータが有効であれば-1、無効ならば0を返す ,9,ライトペンのX座標を返す ,10,ライトペンのY座標を返す ,11,ライトペンのスイッチが押されていれば-1、いなければ0を返す {{div_begin style='text-align:center;'}} '''表2.17 ライトペンの状態を返す<式>''' {{div_end}}  <数式>が12〜15の場合はポート1に、16〜19の場合はポート2に接続されたマウスまたはトラックボールの状態を返します(表2.18)。マウスとトラックボールの区別は、自動的に行われます。 ,{t},{CENTER} ,{c},{H|SIZE:80},{H} ,式,意味 ,{c},{C},{L} ,12,16 -1を返す、入力要求に使用する ,13,17 X座標を返す ,14,18 Y座標を返す ,15,19 0を返す(未使用) {{div_begin style='text-align:center;'}} '''表2.18 マウスまたトラックボールの状態を返す<式>''' {{div_end}}  座標データは、PAD(12)またはPAD(16)が評価された時に読み込まれます。座標データを得る際には、あらかじめこれらを評価してから行ってください。トリガボタンの状態の入力は、ジョイスティックと同様にSTRIG関数を使用します。