戻る
SHARP BASIC (PC-1500系)
PC-1500/1501 : シャープ (SHARP)

PC-1501

PC-1500/1501シリーズはSHARP製ポケットコンピュータである。
搭載されているBASICに特に名称はない。

SHARPのポケコンにはプログラムを入力できる「PRO」モードと実行できる「RUN」モードがある。
「PRO」モードでしか実行できないコマンドや、「RUN」モードでしか実行できないコマンドもある。
また、プログラム内でしか実行できないコマンドもある。

MODE
R[RUN ] : プログラムを実行できるモード
P[PRO ] : プログラムを入力できるモード
B[both] : どちらでも使用可能

P[prg ] : プログラム内で使用可能
M[man ] : プログラム外で使用可能
A[all ] : どちらでも使用可能

関数に関しては単独で[RUN]モード時に計算用としても使用可能
IF〜T.IF〜T.
BASIC簡易リファレンス
コマンド
表記MODE省略形凡例使用例説明
RUNR:MR.RUN [{行番号 | "ラベル" | 文字変数}]RUNプログラムを実行する
CONTR:MC.CONTCONT「STOP」で一時停止したプログラムの実行を再開する
LISTP:ML.LIST [{行番号 | "ラベル" | 文字変数}]LISTプログラムリストを表示する
NEWP:MNEWNEWプログラムを消去する(RESERVEモードではリザーブ内容を消去)
ARUNP:PARU.ARUNARUN電源ON時に自動実行の設定をする
DEGREEB:ADE.DEGREEDEGREE角度単位系を度分秒に設定する
RADIANB:ARAD.RADIANRADIAN角度単位系をラジアンに設定する
GRADB:AGR.GRADGRAD角度単位系をグラジアンに設定する
LOCKB:ALOC.LOCKLOCK[MODE]キーをロックする
UNLOCKB:AUN.UNLOCKUNLOCK[MODE]キーのロックを解除する
TR ONB:ATR.TR ONTR ONトレースモードにする
TR OFFB:ATROF.TR OFFTR OFFトレースモードを解除する
STATUSB:MSTA.STATUS 数式STATUS 0各種状態を表示(0〜255)
0:使用可能なメモリサイズを表示する
1:使用されているメモリサイズを表示する
2:フリーエリアの先頭アドレスを表示する
3:フリーエリアの最終アドレスを表示する
4〜255:直前に実行した行番号を表示する
MEMB:MM.MEMMEM「STATUS 0」と同等
[戻る]
ステートメント:制御関連
表記MODE省略形凡例使用例説明
ENDP:PE.ENDENDプログラムを終了する
STOPP:PS.STOPSTOPプログラムを停止(「CONT」で再開)
LETP:ALE.[LET] {数値変数=数式 | 文字列変数=文字列式}LET A=0変数に値を代入(LET自体省略可能)
REMP:PREM [注釈]REM TEST注釈を書く
ラベルP:P"{定義キー}""A"ラベルを定義する(行頭のみで[DEF]+[定義キー]でも呼び出せる)
定義可能なキーは[A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M]及び[=][SPACE]
GOTOB:AG.GOTO {行番号 | "ラベル" | 文字変数}GOTO 10指定した{行番号 | ラベル}に移動する(ラベルは文字変数も利用可能)
GOSUBP:PGOS.GOSUB {行番号 | "ラベル" | 文字変数}GOSUB 10指定した{行番号 | ラベル}のサブルーチンを呼び出す(ラベルは文字変数も利用可能)
RETURNP:PRE.RETURNRETURNサブルーチンから復帰する
ON ... GOTOP:P{ONG. | O.〜G,}ON 数式 GOTO {行番号 | "ラベル" | 文字変数}[,{行番号2 | "ラベル2" | 文字変数2}[,...]]ON A GOTO 10,20数値に従って指定した{行番号 | ラベル}に移動する
ON ... GOSUBP:P{ONGOS. | O.〜GOS,}ON 数式 GOSUB {行番号 | "ラベル" | 文字変数}[,{行番号2 | "ラベル2" | 文字変数2}[,...]]ON A GOSUB 10,20数値に従って指定した{行番号 | ラベル}のサブルーチンを呼び出す
IF〜THENP:PIF 条件式 THEN {行番号 | "ラベル" | 文字変数}IF A=0 THEN 10条件式が真の場合、{行番号 | ラベル}に移動する
IF〜THENP:PIF 条件式 THEN 文IF A=0 THEN 10条件式が真の場合、処理を実行する
FOR〜TO〜STEP〜NEXTP:PF.〜STE.〜N.FOR 変数=始値 TO 終値 [STEP 増分]〜NEXT 変数FOR I=0 TO 9〜NEXT IFORからNEXTまでの処理を繰り返す
WAITB:AW.WAIT [式]WAIT 10
WAIT
「PRINT」実行時に一時停止する時間(0〜65535:1/64sec)を設定する
指定なしの場合は[ENTER]キーが押下されるまで待つ
ON ERROR GOTOP:P{ONER. | O.〜ER,}ON ERROR GOTO {行番号 | "ラベル" | 文字変数}[,{行番号2 | "ラベル2" | 文字変数2}[,...]]ON A GOTO 10,20エラーに従って指定した{行番号 | ラベル}に移動する
BEEPB:AB. {O. | OF.}BEEP {式1,式2,式3 | {ON | OFF}BEEP
BEEP {ON | OFF}
BEEP音を発声させる
BEEP音発声を{オン | オフ}する
式1:回数
式2:周波数(0:7KHz〜255:230Hz)[省略時4KHz]
式3:音長(0〜65279)[省略時160]
[戻る]
ステートメント:表示関連
表記MODE省略形凡例使用例説明
CLSB:ACLSCLS画面を消去する
PRINT[ USING]B:AP.[ U.]PRINT [{[USING 書式;データ] | [式]}[{, | ;}[式2[,...]]]]PRINT "HELLO,WORLD"画面上に表示する
PAUSE[ USING]P:PPA.[ U.]PAUSE [{[USING 書式;データ] | [式]}[{, | ;}[式2[,...]]]]PAUSE "HELLO,WORLD"画面上に表示し、約0.85sec後に実行を再開
USINGB:AU.USING [書式;データ]USING "#####";A式の書式を設定する
CURSORB:ACU.CURSOR [式]CURSOR 1表示開始位置(0〜25)を設定する(指定なしの場合は設定解除)
GCURSORB:AGC.GCURSOR 式GCURSOR 100グラフィック表示開始位置(0〜155)を設定する
GPRINTB:AGP.GPRINT [式][;[式2[,...]]]GPRINT "FF EE DD"
GPRINT A;B;C
指定されたドットパターンを表示する
[戻る]
ステートメント:データ関連
表記MODE省略形凡例使用例説明
CLEARB:ACL.CLEARCLEAR変数を消去する
DIMB:AD.DIM 変数名(最大値[,最大値2])[,...]
DIM 文字列変数名(最大値[,最大値2])[*データ長][,...]
DIM A(100,10),B$(100)
DIM A$(100)*4
配列変数の定義をする(配列は2次元まで)
文字列配列変数の定義をする(データ長を指定可能)
INPUTP:PI.INPUT [文字列{, | ;}]変数[,...]INPUT "TEST=";$データを変数に入力する
READP:PREA,READ 変数[,変数2[,...]]READデータを変数に読み込む
DATAP:PDA.DATA 定数[,定数2[,...]]DATAデータを定義する
RESTOREP:PRES.RESTORE [行番号]RESTOREデータ読み出し位置を指定する
RANDOMB:ARA,RANDOMRANDOM乱数発生Seedを変更する
AREADP:PA,AREAD 変数AREAD A定義付けキーによるプログラム実行時、表示内容を変数に読み込む
[戻る]
プリンタ関連(要プロッタプリンタ[CE-150])
表記MODE省略形凡例使用例説明
LLISTP:MLL.LLIST [{行番号 | "ラベル" | 文字変数}][,{行番号2 | "ラベル2" | 文字変数2}]LLISTプログラムリストを印字する(引数を指定する場合はどちらか一方は必須)
TEXTB:ATEX.TEXTTEXTプリンタをTEXT(文字・数字)モードに設定する
GRAPHB:AGRAP.GRAPHGRAPHプリンタをGRAPH(図形)モードに設定する
LPRINT[ USING]B:ALP.[ U.]LPRINT [{[USING 書式;データ] | [式]}[{, | ;}[式2[,...]]]]LPRINT "HELLO,WORLD"画面上に表示する
LCURSORB:ALC.LCURSOR 数式LCURSOR Aペンの水平位置を指定する(TEXTモード時有効)
TABB:ATAB 数式TAB Aペンの水平位置を指定する(TEXTモード時有効、「LPRINT」内でも使用可)
LFB:ALF 数式LF A数式分、用紙を紙送りを行う(TEXTモード時有効)
COLORB:ACOL.COLOR 数式COLOR 0ペン色(0〜3)を設定する
CSIZEB:ACSI.CSIZE 数式CSIZE 1文字サイズ(1〜9)を設定する
ROTATEB:ARO.ROTATE 数式ROTATE 0文字の向き(0〜3)を設定する(GRAPHモード時有効)
向きは0が通常で以下右回り90度毎
LINEB:ALIN.LINE(X1,Y1)-(X2,Y2)[,パターン[,色[,B]]]
LINE(X1,Y1)-(X2,Y2)[-...[-(X12,Y12)]]
LINE
LINE(0,0)-(10,10)-...-(120,12
RLINEB:ARL.RLINE(X1,Y1)-(X2,Y2)[,パターン[,色[,B]]]
RLINE(X1,Y1)-(X2,Y2)[-...[-(X12,Y12)]]
RLINE
RLINE(0,0)-(10,10)-...-(120,120)
現在のペン座標を原点として直線を描画する(GRAPHモード時有効)
GLCURSORB:AGL.GLCURSOR X,YGLCURSOR 10,10ペン座標を指定する(GRAPHモード時有効)
SORGNB:ASO.SORGNSORGN現在のペン座標を基点とする(GRAPHモード時有効)
TESTB:ATE.TESTTESTペン色をチェックする(各色で正方形を描画する)
[戻る]
カセットテープ関連(要プロッタプリンタ[CE-150])
表記MODE省略形凡例使用例説明
CSAVEP:MCS.CSAVE[-1] ["ファイル名"]CSAVE "TEST"カセットテープにプログラムをセーブする(ファイル名は8文字以内)
CLOADP:MCLO.CLOAD[-1] ["ファイル名"]CLOAD "TEST"カセットテープからプログラムをロードする
CLOAD?P:MCLO.?CLOAD?[-1] ["ファイル名"]CLOAD "TEST"カセットテープのプログラムとメモリ内のプログラムを比較する
MERGEP:MMER.MERGE[-1] ["ファイル名"]CLOAD "TEST"カセットテープのプログラムとメモリ内のプログラムをマージする
CHAINP:PCHA.CHAIN[-1] ["ファイル名"][,数式]CHAIN "TEST"カセットテープのプログラムをロードして実行する(開始行番号指定可)
PRINT#B:AP.#PRINT#[-1] 変数[,変数2[,...]]
PRINT#[-1] "ファイル名";変数[,変数2[,...]]
PRINT# "TEST";A,Bカセットテープにデータを保存する
INPUT#B:AI.#INPUT#[-1] 変数[,変数2[,...]]
INPUT#[-1] "ファイル名";変数[,変数2[,...]]
INPUT# "TEST";A,Bカセットテープからデータを読み込んで変数に入れる
RMTB:ARM. {O. | OF.}RMT {ON | OFF}REM1端子のリモート機能を{セット | リセット}する
[戻る]
外部I/F関連(要拡張I/F[CE-158])
表記MODE省略形凡例使用例説明
OPNB:AOP.OPN ["デバイス名"]OPN "COM:"外部拡張I/Fの設定を行う
[戻る]
数学関数
表記MODE省略形凡例使用例説明
SINB:ASI.SIN 数式SIN A正弦(サイン)の値を返す
COSB:ACOS 数式COS A余弦(コサイン)の値を返す
TANB:ATA.TAN 数式TAN A正接(タンジェント)の値を返す
ASNB:AAS.ASN 数式ASN A逆正弦(アークサイン)の値を返す
ACSB:AAC.ACS 数式ACS A逆余弦(アークコサイン)の値を返す
ATNB:AAT.ATN 数式ATN A逆正接(アークタンジェント)の値を返す
LNB:ALN 数式LN A自然対数の値を返す
LOGB:ALO.LOG 数式LOG A常用対数の値を返す
EXPB:AEX.EXP 数式EXP A自然対数の低(e)に対する指数関数の値を返す
SQRB:ASQ.SQR 数式SQR A平方根の値を返す
πB:A{π | PI}π円周率を返す
[戻る]
数値関数
表記MODE省略形凡例使用例説明
ABSB:AAB.ABS 数式ABS A絶対値を返す
SGNB:ASG.SGN 数式SGN A数式の符号を返す
INTB:AINT 数式INT A数式を越えない最大の整数を返す
RNDB:ARN.RND 数式RND A数式を指定桁で四捨五入した値を返す
DEGB:ADEG(度[,分[,秒]])DEG(140,12,34)度分秒を10進数に変換した値を返す
DMSB:ADM.DMS 数式DMS A数式を度分秒に変換した値を返す
[戻る]
文字関数
表記MODE省略形凡例使用例説明
ASCB:AASC 文字列式ASC A$文字列先頭のキャラクタコードを返す
VALB:AV.VAL 文字列式VAL A$文字列を数値に変換して返す
LENB:ALEN 文字列式LEN A$文字列の長さを返す
CHR$B:ACH.CHR$ 数式STR$ Aキャラクタコードを文字に変換して返す
STR$B:ASTR.STR$ 数式STR$ A数値を文字列に変換して返す
LEFT$B:ALEF.LEFT$(文字列式,文字数)LEFT$(A$,2)文字列式の最初から文字数分の文字列を返す
RIGHT$B:ARI.RIGHT$(文字列式,文字数)RIGHT$(A$,2)文字列式の終端から文字数分の文字列を返す
MID$B:AMI.MID$(文字列式,始点,文字数)MID$(A$,2,2)文字列式の始点位置から文字数分の文字列を返す
[戻る]
その他関数
表記MODE省略形凡例使用例説明
POINTB:APOI.POINT 数式POINT A指定座標(0〜155)のドット有無を返す
TIMEB:ATI.TIME[=MMDDHH.mmss]TIME=123123.5959
TIME
内蔵タイマの時間を設定する
内蔵タイマの値を返す
INKEY$B:AINK.INKEY$INKEY$実行時に押下されているキーの値を返す
[戻る]

※ 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]

[戻る]

※ 定数型・変数型
数値変数は±1.0E-99〜±9.999999999E+99までが指定できる範囲である

A$ : 文字型(A$="TEST")
@(A)  : 固定変数(数値型)
@(A$) : 固定変数(文字型)
&{16進数} : 16進数値

[戻る]

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

[戻る]

※ エラーメッセージ一覧
エラー表記は「ERROR 番号」となる

エラーメッセージ一覧
番号意味
1構文エラー
2「NEXT」に対する「FOR」がない
「RETURN」に対する「GOSUB」がない
4「READ」に対する「DATA」がない
5配列が2重宣言されている
6未宣言の配列が使用されている
7変数に対する入力値が正しくない
8配列の次元が3以上
9配列の添字が宣言を超えている
10変数がメモリ上で確保できない
11指定の行番号が存在しない
12「USING」の書式が正しくない
13プログラムエリア、またはリザーブエリアの容量不足
14「FOR〜NEXT」のネストが深すぎる
スタックオーバーフロー
15「GOSUB〜RETURN」のネストが深すぎる
文字列演算結果が80文字を超えた
16指数部が99を超えた
16進数の数値が&FFFFを超えた
17変数型に対する被演算値が正しくない
18関数に対する引数が正しくない
19引数の範囲が規定値を超えている
20固定変数の括弧が存在しない
21変数を指定するべきなのに数式が指定されている
22プログラム転送に必要なエリアが不足している
23時刻設定の書式が正しくない
26モード(RUN/PRO)で使用できない命令を実行した
27外部機器がないと使用できない命令を実行した
28引用符("")内に命令を挿入した
「INPUT」「AREAD」で命令を代入した
30行番号が65539を超えている
(65280〜65539の場合はERROR 1)
32「INPUT」命令実行時に「GCURSOR」で152〜155が指定されており、入力が表示できない
36「USING」で指定した書式に対してデータが正しくない
37演算結果のオーバーフロー
380で除算した
39数学関数の引数が範囲外である
↓カセットテープレコーダ関連
40引数が正しくない
42ロードしようとしているプログラムサイズが空きメモリサイズを超えている
43「CLOAD?」で照合不一致が発生した
44チェックサムエラーが発生した
↑カセットテープレコーダ関連
↓プロッタプリンタ関連
70ペン座標が-2048〜2047の範囲を超えようとしている
71「LF」で10.24cm以上フィードしようとしている
72「TAB」の引数が正しくない
73モード(TEXT/GRAPH)で使用できない命令を実行した
74「LINE」「RLINE」で座標指定が多すぎる
76「LPRINT」の出力が範囲を超えている
78ペンの交換中のため印字できない
ERROR 80(低電圧警告)で発生したロック状態が解除されていない
79カラー信号が確認できない
80低電圧状態のためプリンタの使用をロックした
↑プロッタプリンタ関連
131文字列、文字変数に符号(+,-)が付いている
177〜181プログラム入力によってデータ領域が破壊された
0,224〜241「INPUT」「READ」「AREAD」の入力データ終了が命令になっている
入力データの終端が「;」か[ENTER]でない
「DATA」の区切りが「,」でない

[TOPに戻る]