戻る
CBM BASIC
VIC-1001 : Commodore

CBM BASIC

CBM BASICはCommodore社が開発したものである。
同社のCommodore64などのシリーズに搭載されている。

VIC-1001に搭載されているものはカナ文字が扱えるようにした日本国内向け仕様である。
日本国外ではVIC-20として発売されており、それに搭載されたものは当然カナ文字はない。

CBM BASIC簡易リファレンス
コマンド
表記凡例使用例説明
LISTLIST [行番号]
LIST [行番号][-[行番号2]]
LIST
LIST 100-200
メモリ上のプログラムを表示する
指定した範囲の行番号を表示する
NEWNEWNEWプログラムを全て消去し、変数を初期化する
CONTCONTCONTSTOPキーやSTOP,ENDで終了したプログラムの実行を再開する
RUNRUN [行番号]RUN 100指定した行番号からプログラムを実行する(行番号を省略した場合は先頭から実行する)
SAVESAVE ["ファイル名"[,デバイス番号[,コマンド]]]SAVE "TEST"記録メディアにプログラムを保存する
コマンド(デバイス番号省略時は1[CAS])
0 : セーブ終了後に「EOT」を書き込まない
0以外 : セーブ終了後に「EOT」を書き込む
LOADLOAD ["ファイル名"[,デバイス番号]]LOAD "TEST",1記録メディアからプログラムを読み込む
VERIFYLOAD ["ファイル名"[,デバイス番号]]VERIFY "TEST",1記録メディアのプログラムをヴェリファイする
[戻る]
ステートメント:プログラム制御
表記凡例使用例説明
ENDENDENDプログラムを終了する
STOPSTOPSTOPプログラムを一時停止する
REMREM [注釈]REM TEST注釈を入れる(実行には無関係)
FOR...TO...STEP〜NEXTFOR 変数=開始値 TO 終了値 [STEP 増分]〜NEXT [変数][,変数2][,...]FOR I=0 TO 10 STEP 2〜NEXT IFORからNEXTまでの処理を繰り返す
GOSUBGOSUB 行番号GOSUB 1000サブルーチンを呼び出す
RETURNRETURN [行番号]RETURNサブルーチンから復帰する
GOTOGOTO 行番号GOTO 1000指定した行番号から実行する
IF...THEN | GOTO...IF 論理式 {THEN 文 | GOTO 行番号}IF A=0 {THEN END | GOTO 10}論理式の条件判断をする
ON...GOTOON 式 GOTO 行番号[,行番号2][,...]ON A GOTO 100,200式の値に応じて指定された行番号へ分岐する
ON...GOSUBON 式 GOSUB 行番号[,行番号2][,...]ON A GOSUB 100,200式の値に応じて指定された行番号のサブルーチンを呼び出す
[戻る]
ステートメント:変数関連
表記凡例使用例説明
CLRCLRCLR変数を初期化する
INPUTINPUT [文字列{; | , }]変数[,変数2][,...]INPUT "X=";Xキーボードから入力した値を変数に代入する
LETLET 変数=式LET A=1変数に値を代入する(LETは省略できる)
DATADATA 定数[,定数2][,...]DATA "TEST",765READで読み込むデータを定義する
READREAD 変数[,変数2][,...]READ A$,BDATAで定義したデータを変数に代入する
RESTORERESTORE [行番号]RESTORE 1000READで読み込むDATAの先頭行を設定する
DEF FNDEF FN関数名(パラメータ[,パラメータ2[,...]])=定義式DEF FNTEST(X,A,B)=X^2+AX+Bユーザ定義関数を定義する
DIMDIM 変数名(最大値[,最大値2][,...])[,...]DIM A(100,10),B$(100)配列変数の定義をする
[戻る]
ステートメント:マシン語関連
表記凡例使用例説明
SYSSYS 変数[,引数[,...]]SYS T,128マシン語サブルーチンを呼び出す
POKEPOKE アドレス,数式POKE 32768,128指定したアドレスに値を書き込む
[戻る]
ステートメント:ファイル関連
表記凡例使用例説明
OPENOPEN ファイル番号[,デバイス番号[,セカンダリアドレス[,"ファイル名"]]]OPEN 1,1,1,"TEST"指定したファイルをファイル番号でOPENする
・デバイス番号
0 : キーボード(入力のみ)
1 : カセットテープ
3 : ディスプレイ(出力のみ)
4 : プリンタ(出力のみ)
・セカンダリアドレス(デバイス番号=1)
0 : カセットテープからファイルを入力
1 : カセットテープにファイルを出力
2 : カセットテープにファイルを出力(最後に「EOT」を書き込む)
CLOSECLOSE ファイル番号CLOSE 1指定したファイル番号のファイルをCLOSEする
CMDCMD ファイル番号[,文字列式]CMD 1,"TEST"指定したファイル番号の機器をリスナー状態にする
GETGET [[#]ファイル番号,]文字変数GET #1,A$ファイルからデータをファイルバッファに読み込む
INPUT #INPUT #ファイル番号,変数[,変数2[,...]]INPUT #1,A,Bシーケンシャルファイル中のデータを読み込んで変数に代入する
PRINT #PRINT #ファイル番号,式1[;式2[;...]]PRINT #1,A;Bファイルにデータを書き込む
[戻る]
ステートメント:画面関連
表記凡例使用例説明
PRINT{PRINT | ?} [式[{, | ;}[式2[,...]]]]PRINT "HELLO,WORLD"画面上に表示する
USINGを付けた場合は書式に対応して表示する
[戻る]
ステートメント:その他
表記凡例使用例説明
WAITWAIT アドレス,数式[,数式2]WAIT 32768,64,64ポート入力kからのデータ受信を待ち「(データ [XOR 数式2]) AND 数式」が真のとき、次の行からプログラムを再開する
[戻る]
文字列関数
表記凡例使用例説明
ASCASC(文字列式)ASC("TEST")文字列先頭のキャラクタコードを返す
VALVAL(文字列式)VAL("123")文字列を数値に変換する
CHR$CHR$(数式)CHR$(41)指定したキャラクタコードの文字を返す
STR$STR$(数式)STR$(A)数値を文字列に変換する
LEFT$LEFT$(文字列式,式)LEFT$(A$,2)文字列の左側から式で指定した桁数の文字列を返す
MID$MID$(文字列式,式1[,式2])[=文字列]MID$(A$,2,1)文字列の式1で指定した位置から式2で指定した桁数の文字列を返す(=文字列を指定した場合はその文字列と置換する)
RIGHT$RIGHT$(文字列式,式)RIGHT$(A$,2)文字列の右側から式で指定した桁数の文字列を返す
LENLEN(文字列式)LEN(A$)文字列の文字数を返す
SPCSPC(数式)SPC(A)指定した長さの空白を返す(出力文字式内でのみ使用)
TABTAB(数式)TAB(A)指定した位置まで空白を返す(出力文字式内でのみ使用)
[戻る]
数値関数
表記凡例使用例説明
INTINT(数式)INT(A)数式の整数値を返す(数式の値を超えない整数値)
SGNSGN(数式)SGN(A)数式の符号を返す
RNDRND(数式)RND(A)0以上1未満の乱数を返す
正数: 次の乱数を発生する(省略した場合も同様)
負数: 乱数を初期化する
0   : 同じ乱数を生成する
[戻る]
数学関数
表記凡例使用例説明
ABSABS(数式)ABS(-1000)絶対値を返す
SINSIN(数式)SIN(3.14)正弦(サイン)の値を返す
COSCOS(数式)COS(3.14)余弦(コサイン)の値を返す
TANTAN(数式)TAN(3.14)正接(タンジェント)の値を返す
ATNATN(数式)ATN(3.14)逆正接(アークタンジェント)の値を返す
EXPEXP(数式)EXP(1)自然対数の低(e)に対する指数関数の値を返す
LOGLOG(数式)LOG(1)自然対数の値を返す
SQRSQR(数式)SQR(2)平方根の値を返す
[戻る]
その他関数
表記凡例使用例説明
FREFRE(機能コード)FRE(0)使用可能なメモリサイズを返す(機能コードはダミー)
TITIT=TI内蔵タイマの値を返す(1/60sec)
TI$TI$TI$="123456"内蔵タイマを操作する
PEEKPEEK(アドレス)PEEK(&HD000)指定したアドレスの値を返す
USRUSR(数式)I=USR(A)メモリアドレス1,2番地の値が示すアドレスにジャンプする(引数はアキュムレータに渡される)
STSTS=ST各種状態を返す
[戻る]

※ PRINT
; : 式を続けて表示する(A;B) 例 1;2
1 2
, : 式をTABで区切って表示する(A,B) 例 1,2
1         2

「CLS」に相当する命令がないため、PRINT " "を使う
入力時に「"」のあとに特殊キーを入力すると入力可能

機能キー
画面クリア[CLR]
ホーム[HOME]
カーソル右[CRSR→]
カーソル右[CRSR←]
カーソル右[CRSR↓]
カーソル右[CRSR↑]
インサート[INST]
文字反転[CTRL]R
反転解除[CTRL]0
ブラック[CTRL]1
ホワイト[CTRL]2
レッド[CTRL]3
シアン[CTRL]4
マゼンタ[CTRL]5
グリーン[CTRL]6
ブルー[CTRL]7
イエロー[CTRL]8

[戻る]

※ ST(STATUS)
各種状態をbit値で返す

bit状態カセット
ヴェリファイ・ロード
01シリアルリスナータイムアウト 
12シリアルトーカタイムアウト 
24テープリードショートブロックショートブロック
38テープリードロングブロック回復ロングブロック回復
416テープリード回復不能エラー回復不能エラー
532テープリードチェックサムエラーチェックサムエラー
664テープリードエンドオブファイル 
7-128シリアル対応機器なし
テープリードエンドオブテープ
 

[戻る]

※ 変数型・定数型
整数型(A%) : -32768〜+32767
浮動小数点型(A) : ±2.93873588E-39〜±1.70141183E+38

A$ : 文字列型(A$="TEST")
&O : 8進数形式(&O777、&127)
&H : 16進数形式(&HFFFF)

[戻る]

※ 演算子
+   : 加算・結合(A+B、A$+B$)
-   : 減算(A-B)
*   : 乗算(A*B)
/   : 除算(A/B)
  : べき算(A^B)
=   : 等号・代入(A=3、A=B+C)
> < : 不等号・比較(A>3、A<=2)
NOT : 否定(NOT 2)
AND : 論理積(2 AND 1)
OR  : 論理和(2 OR 1)

[戻る]

※ エラーメッセージ一覧

エラーメッセージ一覧
表示意味
REDO FROM STARTINPUT文に対する入力が異常なので再入力を求む
BAD SUBSCRIPT配列の添字が指定した範囲外
CAN'T CONTINUECONTによるプログラムの再開ができない
DIVISION BY ZERO除算の分母が0
FORMULA TOO COMPLEX文字式が複雑すぎる
ILLEGAL DIRECTダイレクトモードで使えないステートメントを使った
ILLEGAL QUANTITY関数やステートメントの引数が間違っている
NEXT WITHOUT FORNEXTに対応したFORがない
OUT OF DATAREADに対応したDATAがない
OUT OF MEMORYメモリが不足している
OVERFLOW値が許容範囲を超えた
REDIM'D ARRAY配列が二重宣言された
RETURN WITHOUT GOSUBRETURNに対応したGOSUBがない
STRING TOO LONG文字定数または文字変数が256文字を超えた
SYNTAXコマンド、またはステートメントの書き方が間違っている
TYPE MISMATCH変数または定数の型が合わない
UNDEF'D FUNCTION未定義関数を参照した
UNDEF'D STATEMENT未定義の行番号を指定した
LOADカセットテープ読込時エラー
VERIFYカセットテープヴェリファイ時エラー
BAD DATAデバイスからの入力が異常
DEVICE NOT PRESENTデバイスが用意されていない
FILE NOT FOUNDファイルが見つからない
FILE NOT OPENファイルがOPENされていない
FILE OPENファイルは既にOPENされている
FILE DATA ERRORINPUT#文に対する入力が異常
NOT INPUT FILE書込用にOPENしたファイルから読み込もうとした
NOT OUTPUT FILE読込用にOPENしたファイルから書き込もうとした

[TOPに戻る]