-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbasicn2.txt
315 lines (250 loc) · 13.8 KB
/
basicn2.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
☆★☆ 『MSXべーしっ君たーぼ』について その2(命令編) ☆★☆
このマニュアルでは、「MSXべーしっ君たーぼ」の命令について説明していま
す。基本的な使い方については「『MSXべーしっ君たーぼ』について その1(基
本編)」をご参照下さい。使用にあたっての注意点や、高度な使い方については、
「『MSXべーしっ君たーぼ』について その3(応用編)」をご参照下さい。
また、付属のサンプルプログラムの使い方については、「サンプルプログラム
について」をご参照下さい。
MSXは、アスキーの商標です。
MSX-DOSは、Microsoft Corporationの登録商標です。
【5】 文法の異なる命令
「MSXべーしっ君たーぼ」はMSX-BASICとほとんど同じですが、より高速にプログラ
ムを動かすため、少し制限のある命令があります。以下に、MSX-BASICと「MSXべーし
っ君たーぼ」の文法を比較しながら説明します。
1) CIRCLE
円を書く命令です。「MSXべーしっ君たーぼ」では円弧の開始角度と終了角度
の指定、および縦横の比率の指定ができません。
[ MSX-BASIC ]
CIRCLE (X座標,Y座標),半径,色コード,開始角度,終了角度,比率
[ MSXべーしっ君たーぼ ]
CIRCLE (X座標,Y座標),半径,色コード
2) COPY
データをいろいろな場所にコピーする命令です。「MSXべーしっ君たーぼ」で
は画面上のコピーしかすることができません。
[ MSX-BASIC ]
COPY命令の使い方は多岐に渡っていますので、お手持ちのMSXの説明書をご
覧下さい。
[ MSXべーしっ君たーぼ ]
COPY (X座標1,Y座標1)-(X座標2,Y座標2),複写元ページ TO (X座標3,Y座標3),
転送先ページ,論理演算子
3) DEFDBL
倍精度変数を宣言する命令です。「MSXべーしっ君たーぼ」では倍精度変数が
使えないため、倍精度を宣言しても単精度(DEFSNG)として扱われます。
[ MSX-BASIC ]
DEFDBL 変数,変数,…
または
DEFDBL 変数-変数
[ MSXべーしっ君たーぼ ]
書式はMSX-BASICと同じだが、単精度として宣言される。
4) DIM
配列変数を宣言する命令です。「MSXべーしっ君たーぼ」では、この命令を実
行できる場所が制限されていますので注意して下さい。
[ MSX-BASIC ]
配列変数を使う前なら、どこにでも書くことができる。
[ MSXべーしっ君たーぼ ]
DIMの前に宣言命令以外の命令を実行してはいけない。
DIMの前に使ってよい命令は次の通り。
DEFINT DEFSNG DEFDBL DATA DIM REM('を含む)
5) INPUT
データを入力するときに使う命令です。MSX-BASICでは一度に何個ものデータ
を入力することができますが、「MSXべーしっ君たーぼ」では1つずつしか入力す
ることができません。
[ MSX-BASIC ]
INPUT <"文字列";>変数,変数… (<>内は省略可能を意味する)
[ MSXべーしっ君たーぼ ]
INPUT <"文字列";>変数
6) KEY
KEYという言葉のつく命令は数多くありますが、中には「MSXべーしっ君たーぼ」
では使えない命令があります。
[ MSX-BASIC ]
KEY キー番号,"文字列"
KEY LIST
KEY ON/OFF
KEY(キー番号) ON/OFF/STOP
ON KEY GOSUB
[ MSXべーしっ君たーぼ ]
KEY(キー番号) ON/OFF/STOP
ON KEY GOSUB
7) LOCATE
文字の座標位置を決める命令です。「MSXべーしっ君たーぼ」では、必ずXとY
の両方を指定して下さい。また、カーソルスイッチの指定はできません。
[ MSX-BASIC ]
LOCATE <X座標>,<Y座標>,<カーソルスイッチ>
[ MSXべーしっ君たーぼ ]
LOCATE X座標,Y座標
8) NEXT
FOR命令とペアで使う命令です。「MSXべーしっ君たーぼ」ではパラメータ変数
を省略することができません。
[ MSX-BASIC ]
NEXT <変数>
[ MSXべーしっ君たーぼ ]
NEXT 変数
9) PRINT
画面表示の命令です。カンマ(,)を使ってデータを表示する場合、MSX-BASIC
と「MSXべーしっ君たーぼ」では空白の空き方が違います。
[ MSX-BASIC ]
PRINT 10,20の表示例
10 20
[ MSXべーしっ君たーぼ ]
PRINT 10,20の表示例
10 20 (タブ(CHR$(9))で空白を表示する)
10) RUN
プログラムを実行する命令です。「MSXべーしっ君たーぼ」では変数の初期化
が行われません。
[ MSX-BASIC ]
すべての変数が初期化される。
[ MSXべーしっ君たーぼ ]
変数の内容は不定。プログラムの最初に、変数を初期化するルーチンを入れ
る必要がある。
11) SCREEN
画面モードの切り替え、およびその他の機能の設定をする命令です。「MSXべ
ーしっ君たーぼ」では、画面モードとスプライトサイズ以外の設定はできません。
[ MSX-BASIC ]
SCREEN <画面モード>,<スプライトサイズ>,<キークリック>,<ボーレート>,
<プリンタオプション>,<インターレース>
[ MSXべーしっ君たーぼ ]
SCREEN <画面モード>,<スプライトサイズ>
12) SET
SETという言葉のついた命令は数多くありますが、「MSXべーしっ君たーぼ」で
使うことのできるのは2つだけです。
[ MSX-BASIC ]
SET ADJUST SET BEEP SET DATE SET PAGE SET PASSWORD
SET SCREEN SET TIME SET TITLE SET VIDEO SET SCROLL
[ MSXべーしっ君たーぼ ]
SET PAGE SET SCROLL
13) STOP
プログラムを一時中断する命令です。「MSXべーしっ君たーぼ」ではEND命令と
同じ様に解釈されます。
[ MSX-BASIC ]
中断後CONT命令で続行可能
[ MSXべーしっ君たーぼ ]
END命令と同じ意味を持つので、続行不可能
14) USR
機械語のルーチンを実行する命令です。「MSXべーしっ君たーぼ」では整数以
外の引数は使えません。
[ MSX-BASIC ]
USRn(A) (nは0~9までの整数、Aは各形式の変数または数値)
[ MSXべーしっ君たーぼ ]
USRn(A) (nは0~9までの整数、Aは整数型の変数または数値)
15) VARPTR
変数の値が入っているメモリアドレス、またはファイルコントロールブロック
の開始アドレスを求める命令です。「MSXべーしっ君たーぼ」では、変数のメモ
リアドレスを求めることのみが可能です。
[ MSX-BASIC ]
VARPTR(変数名)
VARPTR(#ファイル番号)
[ MSXべーしっ君たーぼ ]
VARPTR(変数名)
【6】 「べーしっ君たーぼ」で使えない命令
「MSXべーしっ君たーぼ」が機械語に変換できない命令は次の通りです。
[ MSX-BASIC ]
AUTO BASE BLOAD BSAVE
CALL CDBL CINT CLEAR
CLOAD CLOAD? CLOSE CONT
CSAVE CSNG DEFFN DELETE
DRAW EOF ERASE ERL
ERR ERROR FRE GET
INPUT# KEY LIST LINE INPUT# LIST
LLIST LOAD LPRINT USING MAXFILES
MERGE MOTOR NEW ON EROR GOTO
ON STOP GOSUB OPEN PLAY PRINT#
PRINT# USING PRINT USING PUT KANJI RENUM
RESUME SAVE SPC TAB
TRON TROFF WIDTH
[ MSX-Disk BASIC ]
CVD CVI CVS DSKF
FIELD FILES FPOS KILL
LFILES LOC LOF LSET
MKD$ MKI$ MKS$ NAME
RSET
[ 論理演算子 ]
EQV IMP
【7】 「べーしっ君たーぼ」のみの命令
一番最初に紹介した「CALL RUN/TURBO ON/TURBO OFF」も「MSXべーしっ君たーぼ」
のみで実行可能な命令ですが、ここではそれ以外の命令について説明します。
《 備考 》
ここで説明する命令は、すべてコメント(「REM」や「'」)内に書く命令のこ
とです。
1) #1
INLINEという言葉の略で、「MSXべーしっ君たーぼ」の中に機械語のプログラ
ムを書くことができます。
「#I」の後に、BASICのDATA命令のように機械語コードを書くことにより、機
械語をプログラムに登録することができます。また、機械語コード以外にも整数
型の変数名を書くことができます。この時、変数名が書かれた場所には、その変
数のアドレス(2バイト)が入ります。
《 例 》 整数型変数A%に100を代入する。
10 CALL TURBO ON
20 A%=0
30 '#I &H21,100,0
40 '#I &H22,A%
50 PRINT A%
60 END
この例で使用している機械語のソースプログラムは、以下の通りです。
30行 LD HL, 100
40行 LD (A%), HL
《 注意 》
#1で変数を使用するときは、一度「MSXべーしっ君たーぼ」のプログラム
中で変数を使用してから使うようにして下さい。
また、機械語コード中の変数アドレスの他に、行番号を書くこともできます。
この場合は、行番号の書かれたところにその行番号のアドレス(2バイト)が入
ります。数字の頭に@マークをつけると、その数字が行番号を表します。
《 例 》
10 CALL TURBO ON
20 A%=0
30 '#I &H21,100,0
40 '#I &H22,A%
50 '#I &HCD,@100
60 END
100 PRINT A%
110 RETURN
50行のソースプログラムは、次の通りです。
CALL @100
なお、@で行番号を書いた場合、MSX-BASICのRENUM命令ではではリナンバーさ
れませんので、注意して下さい。
2) #C
CLIPという言葉の略で、グラフィック画面のY座標の上限値を変えます。
MSXではグラフィック画面のY座標が0~211までですが、この命令を使うと0~255
までのY座標で線を引くことができます。(ただし、表示される領域は変わりませ
ん。)
・#C+
Y座標に対して、MSX-BASICと同じ扱いをします。この場合、212以上
の数値はすべて211として扱われます。
・#C-
212以上の数値に対しても、そのまま座標の指定ができます。
《 例 》 #C-と#C+の違い
10 CALL TURBO ON
20 SCREEN 8
30 '#C-
40 LINE (0,0)-(255,255),255
50 IF INKEY$="" THEN 50
60 '#C-
70 LINE (0,0)-(255,255),255
80 IF INKEY$="" THEN 80
90 END
《 備考 》
スクリーンモード0~3およびPAINT命令、CIRCLE命令に関しては、#C
の指定は無効(#C+と同じ)になります。
Y座標に212以上の値を指定した場合、スプライト領域を壊すことにな
り、場合によっては画面にゴミが出ることがあります。このプログラム
は、#Cの機能を確かめるためのサンプルプログラムですので、ご了承下
さい。
3) #N
NEXTの略です。FOR~NEXTのNEXTを機械語に変換するとき、パラメータ変数の
オーバーフローをチェックする機能を入れるかどうか設定します。
《 例 》
10 FOR I%=0 TO &H7FFF
20 NEXT I%
30 END
このプログラムをMSX-BASICで実行させるとエラーが起こります。これは、MSX
-BASICがループ終了時に、「&H7FFF+1」が整数型の範囲をオーバーフローしてい
ることをチェックするためです。
「MSXべーしっ君たーぼ」では「#N+」を使うことにより、これと同じようにオ
ーバーフローのチェックをするようになります。ただし、エラーを表示して止ま
るのではなく、強制的にループから脱出するだけです。
「#N-」を使うと、オーバーフローのチェックは行ないませんが、その分高速
に動かすことができるようになります。なお、「#N-」指定時にパラメータがオ
ーバーフローすると、無限ループに陥ります。
何も設定していないときは、「#N-」の状態が選択されますので、パラメータ
のオーバーフローが予想される場合にのみ「#N+」を使用して下さい。
(C) Copyright 1994 ASCII Corporation. All rights reserved.