戻る
SHARP BASIC (PC-G850V系)
PC-G850V/VS : シャープ (SHARP)

PC-G850VS

PC-G850VSはSHARPが発売したポケットコンピュータで、かつ最終機種である。
一般販売は行っておらず、教材用として高専や工業高校、大学などで入手できた。
扱える言語はBASIC以外にC言語、CASL、PIC用のアセンブリ言語と多岐に渡る。

1つ前のPC-G850Vと差異は殆どない。
(マニュアルのPIC関連に違いがある程度)

BASIC簡易リファレンス
コマンド
表記省略形凡例使用例説明
RUNR.RUN [{行番号 | ラベル]}RUN
RUN 100
プログラムを実行する
指定した{行番号 | ラベル}からプログラムを実行する
CONTC.CONTCONT[BREAK]キーやSTOPで中断したプログラムの実行を再開する
AUTOAUTO [行番号][,増分]AUTO 100,5先頭に自動的に行番号を発生させる(増分を省略した場合は10)
RENUMREN.RENUM [新行番号][,[旧行番号],[増分]]RENUM 1000,10,100新行番号を先頭に行番号をつけ直す
LCOPYLC.LCOPY コピー元開始行番号,コピー元最終行番号,コピー先開始行番号LCOPY 100,200,300指定した範囲のリスト内容を複写する
LISTL.LIST [行番号 | ラベル]LIST
LIST 10
プログラムリストを表示する
指定した行番号から表示する
LLISTLL.LLIST [行番号 | ラベル]
LLIST [開始行][-[終了行]]
LLIST
LLIST 10-100
プログラムリストを印字する
指定した行番号の範囲を印字する
DELETEDEL.DELETE [行番号][-[行番号2]]DELETE 100-200指定した範囲の行番号を削除する(どちらか片方は省略可能)
NEWNEWNEWプログラムを全て消去し、変数を初期化する
PASSPA.PASS "パスワード"PASS "PASSWORD"プログラムにパスワード(8文字以内)を設定する
同じパスワードで実行すると削除される
プログラムの編集・削除・保存等から保護される
以下のコマンド、関数が影響を受ける
・LIST,LLIST,SAVE,BSAVE,NEW,DELETE,AUTO,RENUM,LCOPY,MON,POKE,PEEK
SAVESA.SAVE "ファイル名"SAVE "TEST.BAS"プログラムファイルエリアにプログラムを保存する
※ファイル名は8文字以内+3文字以内の拡張子(拡張子省略時は「.BAS」)
LOADLO.LOAD "ファイル名"LOAD "TEST.BAS"プログラムファイルエリアからプログラムを読み込む
BSAVEBS.BSAVEBLOAD?別のポケコンにBASICプログラムを保存する
BSAVE MBS. MBSAVE M 開始アドレス,終了アドレスBSAVE M &HD000,&HFFFF別のポケコンにマシン語プログラムを保存する
BLOADBLO.BLOADBLOAD別のポケコンからBASICプログラムを読み込む
BLOAD MBLO. MBLOAD M [開始アドレス]BLOAD M &HD000別のポケコンからマシン語プログラムを読み込む
BLOAD?BLO.?BLOAD?BLOAD?別のポケコンのBASICプログラムと照合する
FILESFI.FILESFILESプログラムファイルエリアのファイル名とファイルサイズの一覧を表示する
LFILESLF.LFILESLFILESプログラムファイルエリアのファイル名とファイルサイズの一覧を印字する
KILLK.KILL "ファイル名"KILL "FILE"プログラムファイルエリアの指定したファイルを削除する
MONMO.MONMONモニタコマンドモードにする
TRONTR.TRONTRONトレースモードにする
TROFFTROF.TROFFTROFFトレースモードを解除する
PIOSETPI.PIOSET 数式PIOSET &HF8パラレルI/Oを設定する
bit0:BUSY
bit1:DOUT
bit2:XIN
bit3:XOUT
bit4:DIN
bit5:ACK
bit6:EX1
bit7:EX2
[戻る]
一般ステートメント
表記省略形凡例使用例説明
ENDE.ENDENDプログラムを終了する
STOPS.STOPSTOPプログラムを一時停止する
REM'REMREM TEST注釈を入れる(実行には無関係)
ラベル{*LABEL | "ラベル"}*LABEL行の先頭に定義すると行番号の代わりに使用できる
※制限
「*」で定義するラベルは英文字から始まる英数字が使用可能
「""」で定義するラベルは文字に制限なし
FOR...TO...STEP〜NEXTF. TO STE.〜N.FOR 変数=開始値 TO 終了値 [STEP 増分]〜NEXT [変数][,変数2][,...]FOR I=0 TO 10 STEP 2〜NEXT IFORからNEXTまでの処理を繰り返す
IF...THEN | GOTO...ELSEIF TH. | G. EL.IF 論理式 {THEN 文 | GOTO {行番号 | ラベル}} [ELSE 文]IF A=0 GOTO 10
IF A=0 THEN END ELSE GOSUB 100
論理式の条件判断をする
IF...THEN〜ELSE〜ENDIFIF TH. | G.〜EL.〜ENDI.IF 論理式 THEN
ブロック1
[{ELSE | AND | OR | NOT | XOR}
ブロック2]
ENDIF
IF A=0 THEN
PRINT "END"
END
ELSE
PRINT "TEST"
GOSUB 100
ENDIF
論理式の条件判断をする(複数行使用可能)
REPEAT〜UNTILREP.〜U.REPEAT〜ブロック〜UNTIL 論理式REPEAT〜UNTIL A=0論理式が真である間、ブロックを繰り返して実行する
WHILE〜WENDWH.〜WE.WHILE 論理式〜ブロック〜WENDWHILE A=0〜WEND論理式が真である間、ブロックを繰り返して実行する(REPEAT〜UNTILとの違いは式の評価タイミング)
SWITCH〜CASE〜DEFAULT〜ENDSWITCHSW.〜CAS.〜DEFA.〜ENDS.SWITCH 変数〜CASE 式〜ブロック1[〜CASE...]〜DEFAULT〜ブロックN〜ENDSWITCHSWITCH A
CASE 1
PRINT "1"
CASE 2
PRINT "2"
DEFAULT
PRINT "0"
ENDSWITCH
変数の値に応じた処理を行う(CのSWITCH〜CASEに似た仕様)
GOTOG.GOTO {行番号 | ラベル}GOTO 1000
GOTO "TEST"
指定した{行番号 | ラベル}に飛ぶ
GOSUBGOS.GOSUB {行番号 | ラベル}GOSUB 1000
GOSUB "TEST"
サブルーチンを呼び出す
RETURNRE.RETURN
RETURN
RETURNサブルーチンから復帰する
ON...GOTOO. G.ON 式 GOTO {行番号 | ラベル}[,{行番号2 | ラベル2}][,...]ON A GOTO 100,200式の値に応じて指定された{行番号 | ラベル}へ分岐する
ON...GOSUBO. GOS.ON 式 GOSUB {行番号 | ラベル}[,{行番号2 | ラベル2}][,...]ON A GOSUB 100,200式の値に応じて指定された{行番号 | ラベル}のサブルーチンを呼び出す
[戻る]
一般ステートメント:入出力関連
表記省略形凡例使用例説明
PRINT[ USING]P.[ U.]PRINT [{[USING 書式;データ] | [式]}[{, | ;}[式2[,...]]]]PRINT "HELLO,WORLD"画面上に表示する
LPRINT[ USING]LP.[ U.]LPRINT [{[USING 書式;データ] | [式]}[{, | ;}[式2[,...]]]]LPRINT "HELLO,WORLD"式の内容を印字する
USINGU.USING [書式]USING "#####",A書式を設定する(書式省略時は設定を解除)
WAITW.WAIT [数式]WAIT 10PRINT文実行時に指定時間(単位:1/64sec)待つ(数式を指定しない場合は[改行]キーが押下されるまで)
READREA.READ 変数[,変数2][,...]READ A$,BDATAで定義したデータを変数に代入する
DATADA.DATA 定数[,定数2][,...]DATA "TEST",765READで読み込むデータを定義する
RESTORERES.RESTORE [{行番号 | ラベル}]RESTORE 1000READで読み込むDATAの先頭行を設定する
INPUTI.INPUT ["文字列式"{; | ,}]変数[,変数2][,...]INPUT "X=";Xキーボードから入力した値を変数に代入する
[戻る]
一般ステートメント:ファイル関連
表記省略形凡例使用例説明
OPENOP.OPEN "デバイス名"
OPEN "E;ファイル名" FOR モード AS #ファイル番号(1〜3)
OPEN "COM:"
OPEN "E:TEST.DAT" FOR INPUT AS #1
デバイスをOPENする
RAMデータファイルのシーケンシャルファイルをOPENする
・モード
INPUT :シーケンシャル入力
OUTPUT:シーケンシャル出力
APPEND:シーケンシャル追加出力
CLOSECLOS.CLOSE [#ファイル番号[,#ファイル番号2][,...]]CLOSE
CLOSE #1
全ファイルをCLOSEする
[指定したファイル番号の]ファイルをCLOSEする
PRINT #P. #PRINT #ファイル番号[式][;式2[,...]]PRINT#1,A,Bファイルにデータを書き込む
INPUT #I. #INPUT #ファイル番号,変数[,変数2[,...]]INPUT#1,A,Bファイル中のデータを読み込んで変数に代入する
LNINPUT #LNI. #LNINPUT #ファイル番号,文字変数[,...]LNINPUT #1,A$,B$ファイルから1行分のデータを読み込んで文字変数に代入する
[戻る]
一般ステートメント:変数・定数関連
表記省略形凡例使用例説明
LETLE.LET 変数=式LET A=1変数に値を代入する(LETは省略可)
CLEARCL.CLEARCLEAR変数を初期化する
DIMD.DIM 変数名(最大値[,最大値2])[,...]
DIM 文字列変数名(最大値[,最大値2])[*データ長][,...]
DIM A(100,10),B$(100)
DIM A$(100)*4
配列変数の定義をする(配列は2次元まで)
文字列配列変数の定義をする(データ長を指定可能)
ERASEER.ERASE 変数名[,変数名2[,...]]ERASE A,B$配列変数を消去する
RANDOMIZERA.RANDOMIZERANDOMIZE乱数系列を設定する
DIGITDI.DIGIT 桁数DIGIT 2小数点以下の有効桁数(0〜9)を設定する
DEGREEDE.DEGREEDEGREE角度単位をDEGREE(度)に設定する
RADIANRAD.RADIANRADIAN角度単位をRADIAN(ラジアン度)に設定する
GRADGR.GRADGRAD角度単位をGRAD(グラジアン度)に設定する
[戻る]
一般ステートメント:マシン語関連
表記省略形凡例使用例説明
CALLCA.CALL アドレスCALL &HD000機械語プログラムを実行する
POKEPOK.POKE アドレス,数式[,...]POKE &HD000,&HC9指定したアドレスに値を書き込む
[戻る]
一般ステートメント:I/O関連
表記省略形凡例使用例説明
OUTOUT アドレス,数式OUT &H10,10システムポートに値を出力する
OUTOUT 数式OUT 10ミニポートに値を出力する
PIOPUTPIOP.PIOPUT 数式PIOPUT 10PIOポートに値を出力する
[戻る]
画面制御ステートメント
表記省略形凡例使用例説明
CLSCLSCLS画面を消去する
LOCATELOC.LOCATE X[,Y]LOCATE 10,10指定した位置にカーソルを移動する
[戻る]
グラフィックステートメント
表記省略形凡例使用例説明
GCURSORGC.GCURSOR(X,Y)GCURSOR(10,10)グラフィック描写開始位置を指定した座標に設定する
GPRINTGP.GPRINT [式][;[式2[;[...]]]]GPRINT A$グラフィックパターンを表示する
1文字目が最初の下位4bit、2文字目が上位4bitとして左上から縦に描画する
(文字列の場合は0〜F、数値の場合は&H00〜&HFFで指定)
LINELIN.LINE[(X1,Y1)]-(X2,Y2)[,[{S | R | X}][,[パターン][,[{B | F}]]]]LINE(0,0)-(10,10){直線 | 方形}を描画する
・S:描画,R:消去,X:反転
・描画パターン:16bitで指定
・B:方形,F:方形(塗りつぶし)
CIRCLECI.CIRCLE(X,Y),半径[,開始角[,[終了角][,[扁平率][,[{S | R | X}][,[描画パターン]]]]]]CIRCLE(0,0),100円を描画する
・半径:1〜32767
・角度:0〜360(DEGモード指定)
・S:描画,R:消去,X:反転
・描画パターン:0〜6
PAINTPAI.PAINT(X,Y),パターンPAINT(10,10),5指定したパターン(1〜6)で囲まれた領域を塗る
PSETPS.PSET(X,Y)PSET(100,100)指定した座標にドットを表示する
PRESETPRE.PRESET(X,Y)PRESET(10,10)指定した座標のドットを消去する
[戻る]
文字列関数
表記省略形凡例使用例説明
ASCAS.ASC 文字列式ASC "TEST"文字列先頭のキャラクタコードを返す
LENLEN 文字列式LEN A$文字列の文字数を返す
VALV.VAL 文字列式VAL "123"文字列を数値に変換する
CHR$CH.CHR$ 数式CHR$ 41指定したキャラクタコードの文字を返す
STR$STR.STR$ 数式STR$ A数値を文字列に変換する
HEX$H.HEX$ 数式HEX$ 25510進数を16進数文字列に変換する
LEFT$LEF.LEFT$(文字列式,式)LEFT$(A$,2)文字列の左側から式で指定した桁数の文字列を返す
MID$MI.MID$(文字列式,式1[,式2])[=文字列]MID$(A$,2,1)文字列の式1で指定した位置から式2で指定した桁数の文字列を返す(=文字列を指定した場合はその文字列と置換する)
RIGHT$RI.RIGHT$(文字列式,式)RIGHT$(A$,2)文字列の右側から式で指定した桁数の文字列を返す
DMS$DM.DMS$ 数式DMS$ 100数値を度分秒形式の文字列に変換する
[戻る]
入出力用関数
表記省略形凡例使用例説明
INKEY$INK.INKEY$INKEY$押されたキーの値を返す
POINTPOI.POINT(X,Y)POINT(10,10)指定した座標のドットの有無を返す
[戻る]
数値関数
表記省略形凡例使用例説明
INTINT 数式INT A数式の整数値を返す(数式の値を超えない整数値)
FIXFIX 数式FIX A数式の整数値を返す(小数点以下を切り捨てる)
MDFMDF 数式MDF A数式を有効桁数で丸めた値を返す(DIGIT、USINGでの指定に依存)
SGNSGN 数式SGN A数式の符号を返す
RNDRN.RND 数式RND A乱数を返す
・数式の値が2以上の場合
整数なら1〜指定値の乱数
小数を含むなら1〜(指定値+1)の乱数
・数式の値が負数の場合
乱数列を同一とする
・数式の値が0〜2未満の場合
1未満の乱数
FRACFRAC 数式FRAC(A)数式の小数部を返す
[戻る]
数学関数
表記省略形凡例使用例説明
ABSABS 数式ABS -1000絶対値を返す
DEGDEG 文字列式DEG A$度分秒形式の文字列を数値に変換する
VDEGVD.VDEG 文字列式VDEG A$度分秒形式の文字列を10進数値(度)に変換する
SINSIN 数式SIN A正弦(サイン)の値を返す
COSCOS 数式COS A余弦(コサイン)の値を返す
TANTAN 数式TAN A正接(タンジェント)の値を返す
ASNASN 数式ASN A逆正弦(アークサイン)の値を返す
ACSACS 数式ACS A逆余弦(アークコサイン)の値を返す
ATNATN 数式ATN A逆正接(アークタンジェント)の値を返す
HSNHSN 数式HSN Aハイパボリックサインの値を返す
HCSHCS 数式HCS Aハイパボリックコサインの値を返す
HTNHTN 数式HTN Aハイパボリックタンジェントの値を返す
AHSAHS 数式AHS Aアークハイパボリックサインの値を返す
AHCAHC 数式AHC Aアークハイパボリックコサインの値を返す
AHTAHT 数式AHT Aアークハイパボリックタンジェントの値を返す
SQUSQU 数式SQU A2乗した値を返す
CUBCUB 数式CUB A3乗した値を返す
SQRSQR 数式SQR A平方根の値を返す
CURCUR 数式CUR A立方根の値を返す
RCPRCP 数式RCP A逆数を返す
PIPIPI円周率を返す
FACTFACT 数式FACT A階乗の値を返す
EXPEXP 数式EXP A自然対数の低(e)に対する指数の値を返す
TENTEN 数式TEN A常用対数の低(10)に対する指数の値を返す
LNLN 数式LN A自然対数の値を返す
LOGLOG 数式LOG A常用対数の値を返す
NPRNPR(N,R)NPR(A,2)順列(N≧R)の値を返す
NCRNCR(N,R)NCR(A,2)組合せ(N≧R)の値を返す
POLPOL(N,R)POL(A,2)直交座標を極座標時に変換した値を返す
RECREC(N,R)REC(A,2)極座標時を直交座標に変換した値を返す
[戻る]
ファイル用関数
表記省略形凡例使用例説明
EOFEO.EOF ファイル番号EOF 1ファイルの終端を検出する
LOFLOF ファイル番号LOF 1指定したファイル番号のサイズを返す
[戻る]
マシン語用関数
表記省略形凡例使用例説明
PEEKPE.PEEK アドレスPEEK &HD000指定したアドレスのデータ値を返す
[戻る]
I/O用関数
表記省略形凡例使用例説明
INPINP ポートアドレスINP &H28システムポートの値を返す
INPINPINPミニポートの値を返す
PIOGETPIOG.PIOGETPIOGETPIOポートの値を返す
[戻る]
その他関数
表記省略形凡例使用例説明
FREFR.FREFRE使用可能なメモリサイズを返す
[戻る]

※ モニタコマンド
・USER[アドレス] 0100から指定アドレスまでをマシン語領域とする
00FFを指定した場合はマシン語領域を初期化
アドレスを省略すると現在確保済みのアドレス領域を表示
*USER0100

・S[アドレス]
アドレスのメモリ内容を表示し、値の入力待ちをする
アドレスを省略すると現在のアドレス位置からとなる
値を入力しない場合は次のアドレスへ移る
[BREAK]でコマンド終了
*S0100

・D[開始アドレス[,終了アドレス]]
指定したアドレスのメモリ内容を表示する
アドレスを省略すると現在のアドレス位置からとなる
プリントモード時は終了アドレス指定で範囲内の内容を印字する
(そうでない場合は無視される)
[BREAK]でコマンド終了
*D0100

・E[アドレス]
アドレスのメモリ内容を24バイト分表示し、値の入力待ちをする
「S」との違いはカーソルで画面内のデータを編集できる
アドレスを省略すると現在のアドレス位置からとなる
[TAB]でASCII文字の編集モードとなる(トグル)
[BREAK]でコマンド終了
*E0100

・Gアドレス
指定アドレスからマシン語プログラムを実行する
(プログラムに不具合があり、制御不能な場合はリセットするしかない)
*G0100

・BP[アドレス[-カウント]]
ブレイクポイントを設定する
カウントに0を指定した場合は、そのブレイクポイントを削除する
0のみを指定した場合はブレイクポイントを全て削除する
*BP0100-4

・P
プリントモードの切替(トグル)
*P

・W 開始アドレス,終了アドレス
シリアルI/Oに指定範囲のメモリ内容をデータとして送る
*W0100,01FF

・R[アドレス]
シリアルI/Oからデータを受け取り、指定したアドレスからメモリに展開する
アドレス省略時は「W」で指定した開始アドレスから展開する
*R

[戻る]

※ デバイス

デバイス名 指定されるデバイス
COM:シリアルI/O(半二重)
COM1:シリアルI/O(全二重)
PIO:パラレルI/O
LPRT:ミニI/O
E:ファイル名RAMデータファイル

[戻る]

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

・USINGの書式
&(空白)& : &と空白の文字列分文字列を表示する(少ない場合は左詰め)
例 "[&    &]";"TEST"
[TEST  ]
# : 数値を桁数指定して出力する(少ない場合は右詰め)
例 "[#####]";100
[  100]
. : 小数点位置を指定する(冗長部分は0が出力される)
例 "[##.#####];3.1415!
[ 3.14150]
, : 桁数指定の「#」内につけた場合(「.」より左側)、3桁毎に「,」を出力する
例 "[#,#####]";1000
[  1,000]

[戻る]

※ 定数型・変数型
A  : 数値変数(有効桁数10桁[仮数部10桁、指数部2桁])
±1×10E-99〜±9.999999999×10E+99

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

[戻る]

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

※省略形
NOT:NO.
AND:AN.
XOR:XO.

[戻る]

※ エラーメッセージ一覧

エラーメッセージ一覧
番号意味
10文法が間違っている
12間違ったモード(PRO/RUN)で命令を使用した
OPENのモード指定が間違っている
13「CONT」でプログラムの再開ができない
14プログラムが存在しない状態でPASSを使用した
15「BSAVE M」でアドレスの指定がおかしい(開始>終了)
20計算結果がオーバーフローした
210で除算した
22演算時の値が演算範囲を超えている
30配列が2重宣言された
31未定義配列が使用された
32配列の添字が宣言の範囲を超えている
33指定値が範囲外
40指定した行番号・ラベルが存在しない
41行番号が規定値の範囲を超えた
43「RENUM」「LCOPY」の引数が不正
44命令の引数である行番号の指定が間違っている(開始>終了)
50入れ子の数が規定値を超えた
51「RETURN」に対する「GOSUB」がない
52「NEXT」に対する「FOR」がない
53「READ」に対する「DATA」がない
54ファンクションバッファ(16段)、もしくはデータバッファ(8段)を超えた
55文字バッファ(255)、もしくは1行の長さが255を超えた
60プログラム及び変数のサイズが領域を超えた
61「ENDIF」の指定なしでブロック形式の「IF」「ELSE」を使用した
62「UNTIL」に対する「REPEAT」がない
63「WHILE」に対する「WEND」がない
64「WEND」に対する「WHILE」がない
66「DEFAULT」のブロック内で「CASE」「DEFAULT」が使用された
68「ENDSWITCH」の指定なしで「SWITCH」「CASE」「DEFAULT」が使用された
69「SWITCH」の指定なしで「CASE」「DEFAULT」「ENDSWITCH」が使用された
70「USING」の書式で表示ができない(値が範囲外など)
71「USING」の書式が間違っている
72デバイスエラー
77ファイル容量不足
80シリアルI/Oに対する読み込みエラー
81I/Oタイムアウトエラー
82「BLOAD?」での照合エラー
83「INPUT #」の変数型が一致しない
84プリンタエラー
85ファイルがOPENされていない
86ファイルは既にOPENされている
87ファイルの終端まで達しているのに更に読み込もうとした
90変数型と一致していない値を使用した
91誤った型で変数を使用した
92パスワードが一致しない
93パスワード設定中に使用できない命令を使用した
94指定したファイルが存在しない
95ファイルの指定が間違っている
96BASICモードでTEXTファイルを読み込もうとした
97ファイルの数が255を超えた

[TOPに戻る]