PasocomMini
 SmileBASIC
 Reference Manual
暫定版: Version 2017.07.28
株式会社ハル研究所製品「PasocomMini」に搭載されるSmileBASICリファレンスマニュアルのページ。
※ 最終的な命令等の仕様については今後の調整で予告なく変更になる可能性があります
「PasocomMini」に関するお問い合わせは直接弊社では承っておりません。
※「SmileBASIC」は株式会社スマイルブームの登録商標です
【目次】
 
▼基本的な情報
▼エラー・定数・システム変数
▼命令概要
▼DIRECTモードでのみ利用できる命令
▼変数や配列の定義、配列操作に関する命令
▼比較、分岐、くりかえしなどの制御命令
▼ユーザー定義関数や拡張機器の制御などの命令
▼データ読み込み、垂直同期、コメントなどの命令
▼コンソール画面への文字表示や文字列の入力に関する命令
▼ファイルへの読み書き、一覧取得などの命令
▼画面の表示モードなどに関する命令
▼グラフィック画面への描画命令
▼スプライトの制御命令
▼サウンド関係の命令
▼数学関係の命令
▼文字列操作関係の命令
▼ソースコード操作関係の命令
▼エミュレータ関係の命令
▼GPIO制御関係の命令(I2C/SPI含む)
 
 
©2017 SmileBoom Co.Ltd.
▼基本的な情報
↑目次に戻る
■言語仕様
◎文字コード
UNICODE。外部I/OではUTF-8、内部ではUTF-16で扱う。
◎リテラル
変数名やステートメント名はリテラルという単位で識別する。
リテラルは英字で始まる任意長の英数字列。(正規表現では[_A-Z][_A-Z0-9]+)
大文字小文字は区別しない。
リテラルの先頭に'@'や'#'が付いた物はラベルリテラル、定数リテラルと呼ばれ、以下の通り特別な扱いとなる。
◎ラベルリテラル
'@'で始まるリテラルは、プログラム中の位置を表すラベルとして使用される。
ラベルリテラルが通常の式中に現れた場合は、そのラベルリテラル自体が入った文字列として扱われる。
◎定数リテラル
'#'で始まるリテラルは定数リテラルと呼ばれ、式中に現れた場合、対応する定数値に置換される。
◎予約語
リテラルとして使用できない予約語は次の通り。
IF THEN ELSE ENDIF GOTO GOSUB RETURN ON 
FOR NEXT WHILE WEND REPEAT UNTIL BREAK CONTINUE
DEF END VAR DIM AND OR XOR NOT DATA READ RESTORE PRINT INPUT LINPUT
TRUE FALSE SWAP OUT COMMON USE EXEC CALL
◎データ型
◇数値
整数:32bit 符号あり:表記は10進数、16進数(&Hの後ろに16進数)、2進数(&Bの後ろに2進数)
実数:倍精度実数
◇文字列
最大長は2^31(メモリ空き容量に依存)
◇値の型変換
数値タイプの各型間で値を交換する場合はすべて暗黙で値が変換される。
数値タイプの各型と文字列型間では値の暗黙変換はできない。
◎変数
変数の型は変数名リテラルにつくサフィックス記号により決定する。
なし:デフォルト型
$:文字列型
%:32bit符号あり整数
#:倍精度実数
デフォルト型は、通常時は倍精度実数、OPTION DEFINT 指定時には整数となる。
一度定義された変数の型は変更できない。
◇配列
括弧は [] のみ対応。 () は配列では使用しない、添字は0から始まる
最大要素数は2^31(メモリ空き容量に依存)
最大次元は4次元。
◎演算子(優先度順)
()
- (単項) NOT (1の補数) ! (論理反転)
* / DIV(整数除算)MOD
+ -(2項)
<< >> (※シフト)
== != < <= > >=
AND OR XOR (ビット演算)
&& || (※論理演算子。ショートカットあり)
■ファイル仕様
◎ファイル名について
[ リソースタイプ :][ フォルダ名/ ][ ファイル名 ]
上記のような構造でファイルを管理。直接任意のフォルダを参照可能。
◎ファイル名
文字数制限は特になし、利用できる文字は大文字英数字0~9、A~Z、および '_' と '-' および '.'
◎リソースタイプ
テキスト形式(TXT)とバイナリ形式(DAT)の2つのリソースタイプで構成されている。
・TXT(テキストデータ、UTF-8形式、改行コードはLF)
・DAT(バイナリデータ、ファイルヘッダに続けて数値データが並ぶ)
◇ロード先に応じて用意されている特別なリソース名
・PRG(テキストデータ、PRG0、PRG1、PRG2、PRG3の指定で対象スロットを指定可能)
・GRP(バイナリデータ、GRP0、GRP1、GRP2、GRP3の指定で対象グラフィックページを指定可能)
・RAW(バイナリデータ、1要素1バイトで情報を管理)
・GRPF(バイナリデータ、フォント専用のページへのロード、グラフィック用の画像とは異なるサイズで文字データを管理)
◎フォルダ名
SmileBASICでは任意の階層のフォルダを作ることができる。
■画面仕様
◎画面要素について
次の要素で構成される
・画面
・グラフィックページ
・テキスト
・グラフィック
・スプライト
・エミュレーション画面
◎画面
XSCREEN命令で解像度を指定する。
128x128~1280x720まで、8ピクセル単位で解像度指定が可能。
◎座標系
すべての画面要素は、左上を原点として右下方向を正とする座標系を取る。
また奥行き(Z)は画面要素の表示優先度として使われ、原点がゼロ、画面奥方向が正となる。
Zはすべての画面要素で共通の単位となり、一番奥が 1024、一番手前が -256 となる。
◎グラフィックページ
スプライト素材の格納場所や、あるいはグラフィック描画命令の描画対象となる画像領域。
グラフィックページとしてGRP0~GRP3の4ページが存在し、それぞれ1280x1024の大きさを持つ。
すべてのグラフィックページは1ピクセル32bit、ARGB8888で表現される。カラーパレットはサポートしない。
◇画面要素とグラフィックページのデフォルトの割り当て
・フォント(GRPF) ※変更不可(画像サイズは512x512ドットの領域となる)
・グラフィック表示(GRP0) ※GPAGE命令で変更可能
・グラフィック描画(GRP1) ※GPAGE命令で変更可能
・スプライト(GRP3) ※SPPAGE命令で変更可能
◎テキスト(コンソール用の文字表示)
フォントは1文字8x8ピクセル。
文字ごとに文字色、背景色としてRGB888の24ビットカラーと反転等の属性を指定可能。
◇文字単位に指定できるアトリビュート
・文字色(24ビットカラー) ※COLOR命令で指定
・背景色(24ビットカラー) ※COLOR命令で指定
・Z(-256~1024) ※LOCATE命令で指定(マイナス側が手前)
回転(0,90,180,270度) ※ATTR命令で指定
上下反転 ※ATTR命令で指定
左右反転 ※ATTR命令で指定
◎グラフィック
グラフィックは描画対象と表示対象として任意のグラフィックページを選択できる。
グラフィックは1枚のみ表示可能。(2枚以上表示したい場合には、スプライトを使用する事で疑似的に代用可能)
◎スプライト
スプライトは、グラフィックページの任意の矩形領域を任意の矩形として描画する機能。
最大512個のスプライトを表示可能(注:最大個数は未確定)。
すべてのスプライトで、回転、拡大、縮小が可能。
◎エミュレーション画面
ハードウェア上に実装されている仮想PCの表示を行う独立した画面。
エミュレーション画面は画面要素の中で常に最も手前に表示される。
任意位置・サイズで表示させる事が可能。
■言語要素の実行時参照
SmileBASICの言語要素のうち、ラベル、変数、ステートメント、関数は実行時に文字列から検索・使用ができる。
使い方次第ではカプセル化風なプログラム記述も可能となる。
◎ラベルの実行時参照
GOTO / GOSUB の飛び先、またRESTOREのパラメータとして、文字列を指定できる。
文字列を指定した場合実行時に飛び先を検索し、そこにジャンプする。
飛び先が見つからなかった場合は Undefined label エラーが発生する。
文字列の先頭に"数字:"というプレフィクスがついている場合、指定プログラムスロットのラベルを検索する。
◇例
F$="FUNC"
GOSUB F$+"_INIT"
GOTO F$+"_MAIN"
@FUNC_INIT
RETURN
@FUNC_MAIN
END
◎変数の実行時参照
VAR ("変数名") と記述する事で、実行時に変数を検索し使用する事ができる。
例えば VAR ("FOO") = 3 は FOO = 3 と同じ意味となる。
変数が見つからなかった場合はUndefined variableエラーが発生する。
文字列の先頭に"数字:"というプレフィクスがついている場合、指定プログラムスロットの変数を検索する。
◎ステートメント・関数の実行時参照
CALL キーワードを使用する事で、実行時にステートメントや関数を検索し呼び出す事ができる。
・ CALL ("FOO",A,B,C) → FOO A,B,C と等価
・ A = CALL ("FOO",A,B,C) → A = FOO (A,B,C) と等価
・ CALL ("FOO",A) ,B,C → FOO (A), B,C と等価
ステートメント・関数が見つからなかった場合は Undefined functionエラーが発生する。
組み込み、ユーザー定義に関わらず参照できるが、PRINT と INPUT は言語要素として組み込まれているため参照できない。
文字列の先頭に"数字:"というプレフィクスがついている場合、指定プログラムスロットのステートメントを検索する。
■利用可能な日本語の文字
◎例
'--- あ(45)
あぁアァ亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏
'--- い(62)
いぃイィ以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯
允印咽員因姻引飲淫胤蔭院陰隠韻吋
'--- う(32)
うぅウゥヴ右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲
'--- え(58)
えぇエェ荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎
焔煙燕猿縁艶苑薗遠鉛鴛塩
'--- お(39)
おぉオォ於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音
'--- か(239)
かがカガ下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄
峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖
慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿
梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦
完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓
館舘丸含岸巌玩癌眼岩翫贋雁頑顔願
'--- き(186)
きぎキギ企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀
偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲
泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯
恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿
襟謹近金吟銀
'--- く(50)
くぐクグ九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君
薫訓群軍郡
'--- け(112)
けげケゲ卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏
芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見
謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限
'--- こ(176)
こごコゴ乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚
碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭
校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合
壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂
'--- さ(116)
さざサザ些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁
載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷察拶撮擦札
殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残
'--- し(401)
しじシジ仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試
誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉
湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守
手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集
醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵
醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠
彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤
鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾拭植殖燭織職色触食蝕辱尻
伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭
'--- す(44)
すずスズ笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸
'--- せ(119)
せぜセゼ世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚
斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染
潜煎煽旋穿箭線繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎
'--- そ(103)
そぞソゾ噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早
曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足
速俗属賊族続卒袖其揃存孫尊損村遜
'--- た(113)
ただタダ他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大
第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆
坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談
'--- ち(90)
ちぢチヂ値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪
苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳
'--- つ(35)
つっづツッヅ津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴
'--- て(70)
てでテデ亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭釘鼎泥摘擢敵滴的笛適鏑
溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電
'--- と(124)
とどトド兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟
盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道
銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍
'--- な(21)
なナ奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝
'--- に(21)
にニ二尼弐迩匂賑肉虹廿日乳入如尿韮任妊忍認
'--- ぬ(3)
ぬヌ濡
'--- ね(14)
ねネ禰祢寧葱猫熱年念捻撚燃粘
'--- の(16)
のノ乃廼之埜嚢悩濃納能脳膿農覗蚤
'--- は(124)
はばぱハバパ巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤
矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩
噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮
'--- ひ(93)
ひびぴヒビピ匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美鼻柊稗
匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕
貧賓頻敏瓶
'--- ふ(74)
ふぶぷフブプ不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏
副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞
'--- へ(41)
へべぺヘベペ丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭
'--- ほ(103)
ほぼぽホボポ保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋法泡烹砲縫
胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴
牧睦穆釦勃没殆堀幌奔本翻凡盆
'--- ま(35)
まマ摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓
'--- み(18)
みミ味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠
'--- む(12)
むム務夢無牟矛霧鵡椋婿娘
'--- め(19)
めメ冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺
'--- も(29)
もモ摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁
'--- や(22)
やゃヤャ也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓
'--- ゆ(36)
ゆゅユュ愉愈油癒諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕
'--- よ(44)
よょヨョ予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀
'--- ら(21)
らラ羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧
'--- り(68)
りリ利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟
療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟
'--- る(7)
るル瑠塁涙累類
'--- れ(35)
れレ令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯蓮連錬
'--- ろ(31)
ろロ呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論
'--- わ(25)
わをんワヲン倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕
▼エラー・定数・システム変数
↑目次に戻る
■エラー表
◎エラー用システム変数
エラーが発生すると、システム変数に情報が残ります。
ERRNUM (エラー番号)
ERRLINE (発生した行番号)
◎主なエラーの内容
1) Internal Error(内部エラー:通常は発生しない)
2) Illegal Instruction(内部エラー:通常は発生しない)
3) Syntax error(文法が間違っている)
4) Illegal function(call 命令や関数の引数の数が違う)
5) Stack overflow(スタックがあふれた)
6) Stack underflow(スタックが不足した)
7) Divide by zero(0による除算をした)
8) Type mismatch(変数の型が一致しない)
9) Overflow(演算結果が許容範囲を超えた)
10) Out of range(範囲外の数値を指定した)
11) Out of memory(メモリー不足)
12) Out of code memory(コード領域のメモリー不足)
13) Out of DATA(READできるDATAが不足)
14) Undefined label(指定されたラベルが存在しない)
15) Undefined variable(指定された変数が存在しない)
16) Undefined function(指定された命令・関数が存在しない)
17) Duplicate label(ラベルが二重定義されている)
18) Duplicate variable(変数が二重定義されている)
19) Duplicate function(命令・関数が二重定義されている)
20) FOR without NEXT(NEXTが無いFORがある)
21) NEXT without FOR(FORが無いNEXTがある)
22) REPEAT without UNTIL(UNTILが無いREPEATがある)
23) UNTIL without REPEAT(REPEATが無いUNTILがある)
24) WHILE without WEND(WENDが無いWHILEがある)
25) WEND without WHILE(WHILEが無いWENDがある)
26) THEN without ENDIF(ENDIFが無いTHENがある)
27) ELSE without ENDIF(ENDIFが無いELSEがある)
28) ENDIF without IF(IFが無いENDIFがある)
29) DEF without END(ENDが無いDEFがある)
30) RETURN without GOSUB(GOSUBがないRETURNがある)
31) Subscript out of range(配列添字が範囲外)
32) Nested DEF(DEF内でDEFを定義した)
33) Can't continue(CONTでプログラムを再開できない)
34) Illegal symbol string(ラベル文字列の記述方法が間違っている)
35) Illegal file format(SMILEBASICでは扱えないファイル形式)
36) Use PRGEDIT before any PRG function(PRGEDITせずにPRG系の命令を使った)
37) Animation is too long(アニメーション定義が長すぎる)
38) Illegal animation data(不正なアニメーションデータ)
39) String too long(文字列が長すぎる)
40) Can't use from direct mode(ダイレクトモードでは使えない命令)
41) Can't use in program(プログラム内では使えない命令)
42) Can't use in tool program(ツールプログラム内からは使えない命令)
43) Load failed(ファイル読み込みに失敗)
45) Uninitialized variable used(未初期化変数を参照しようとした)
46) Protected file(保護ファイルを操作しようとした)
47) END without CALL(ユーザー定義命令を呼び出していないのにユーザー定義末尾のENDに遭遇した)
■定数
・システムに用意された32bit数値の定義
・色の指定やボタンを扱う時に数値代わりに利用
'--- 汎用
#ON    '1
#OFF   '0
#YES   '1
#NO    '0
#TRUE  '1
#FALSE '0
'--- RGB(グラフィック用)
#AQUA    '&HFF00F8F8
#BLACK   '&HFF000000
#BLUE    '&HFF0000FF
#CYAN    '&HFF0000F8
#FUCHSIA '&HFFF800F8
#GRAY    '&HFF808080
#GREEN   '&HFF008000
#LIME    '&HFF00F800
#MAGENTA '&HFFF800F8
#MAROON  '&HFF800000
#NAVY    '&HFF000080
#OLIVE   '&HFF808000
#PURPLE  '&HFF800080
#RED     '&HFFF80000
#SILVER  '&HFFC0C0C0
#TEAL    '&HFF008080
#WHITE   '&HFFF8F8F8
#YELLOW  '&HFFF8F800
'--- ATTR
#TROT0   '&H00、回転なし
#TROT90  '&H01、回転90度
#TROT180 '&H02、回転180度
#TROT270 '&H03、回転270度
#TREVH   '&H04、左右反転
#TREVV   '&H08、上下反転
'---SPSET/SPCHR ATTR
#SPSHOW   '&H01、表示
#SPROT0   '&H00、回転なし
#SPROT90  '&H02、回転90度
#SPROT180 '&H04、回転180度
#SPROT270 '&H06、回転270度
#SPREVH   '&H08、左右反転
#SPREVV   '&H10、上下反転
#SPADD    '&H20、加算合成
'--- SPCHK
#CHKXY '&H01、XY座標
#CHKZ  '&H02、Z座標
#CHKUV '&H04、画像位置
#CHKI  '&H08、DEF定義
#CHKR  '&H10、回転
#CHKS  '&H20、スケール
#CHKC  '&H40、色
#CHKV  '&H80、内部変数
'--- EMU
EMUMACHINENAME$() 'エミュレータ対象のマシン名
'--- EMUZ80
#Z80_AF 'AFレジスタ
#Z80_BC 'BCレジスタ
#Z80_DE 'DEレジスタ
#Z80_HL 'HLレジスタ
#Z80_PC 'プログラムカウンタ
#Z80_SP 'スタックポインタ
#Z80_IX 'IXレジスタ
#Z80_IY 'IYレジスタ
#Z80_AFS '裏AFレジスタ
#Z80_BCS '裏BCレジスタ
#Z80_DES '裏DEレジスタ
#Z80_HLS '裏HLレジスタ
#Z80_A 'Aレジスタ
#Z80_F 'フラグ
#Z80_B 'Bレジスタ
#Z80_C 'Cレジスタ
#Z80_D 'Dレジスタ
#Z80_E 'Eレジスタ
#Z80_H 'Hレジスタ
#Z80_L 'Lレジスタ
#Z80_AS '裏Aレジスタ
#Z80_FS '裏フラグ
#Z80_BS '裏Bレジスタ
#Z80_CS '裏Cレジスタ
#Z80_DS '裏Dレジスタ
#Z80_ES '裏Eレジスタ
#Z80_HS '裏Hレジスタ
#Z80_LS '裏Lレジスタ
#Z80_IXH 'IX上位レジスタ
#Z80_IXL 'IX下位レジスタ
#Z80_IYH 'IY上位レジスタ
#Z80_IXL 'IY下位レジスタ
#Z80_I 'Iレジスタ
#Z80_R 'Rレジスタ
'--- EMUJOYPAD
#EMUJOY_UP
#EMUJOY_DOWN
#EMUJOY_LEFT
#EMUJOY_RIGHT
#EMUJOY_1
#EMUJOY_2
#EMUJOY_3
#EMUJOY_4
#EMUJOY_5
#EMUJOY_6
#EMUJOY_7
#EMUJOY_8
#EMUJOY_9
#EMUJOY_10
#EMUJOY_11
#EMUJOY_12
■システム変数
SmileBASICが管理しているシステムで予約された変数。
※基本読み取り専用ですが一部代入できる変数もあります
◎CSRX
現在のカーソル位置(横方向)
◇例
PRINT CSRX
◎CSRY
現在のカーソル位置(縦方向)
◇例
PRINT CSRY
◎CSRZ
現在の奥行方向のカーソル座標(奥:1024<液晶面:0<手前:-256)
◇例
PRINT CSRZ
◎FREEMEM
残りユーザー用のメモリー容量(バイト単位)
◇例
PRINT FREEMEM
◎VERSION
システムのバージョン番号(Ver XX.YY.ZZZZの場合、16進で&HXXYYZZZZとなる)
◇例
PRINT HEX$(VERSION)
◎TABSTEP ※書き込み可能
PRINT命令の「,」による基準幅
◇例
PRINT TABSTEP
TABSTEP=4
◎SYSBEEP ※書き込み可能
システム効果音の有無(TRUE=あり、FALSE=なし)
◇例
PRINT SYSBEEP
SYSBEEP=FALSE
◎ERRNUM
エラーが発生した時のエラー番号
◇例
PRINT ERRNUM
◎ERRLINE
エラーが発生した時の行番号
◇例
PRINT ERRLINE
◎ERRPRG
エラーが発生した時のプログラムSLOT
◇例
PRINT ERRPRG
◎PRGSLOT
プログラム操作命令(PRGEDIT等)のカレントプログラムSLOT
プログラム実行中のみ値が変化
◇例
PRINT PRGSLOT
◎RESULT
LOAD、SAVE、DELETEを実行した際に表示される確認ダイアログの処理結果
・TRUE=成功、FALSE=失敗、-1=中断
◇例
PRINT RESULT
◎MAINCNT
SmileBASIC起動時からのフレームカウント数
◇例
PRINT MAINCNT
◎MILLISEC
SmileBASIC起動時からのミリセカンド値
◇例
PRINT MILLISEC
◎TRUE
論理値の「真」(TRUEの値は常に1)
例えばA=0の時、B=(A==0)の結果BにはTRUE(=1)が入る
◇例
PRINT TRUE
◎FALSE
論理値の「偽」(FALSEの値は常に0)
例えばA=0の時、B=(A!=0)の結果BにはFALSE(=0)が入る
◇例
PRINT FALSE
◎TIME$
現在の時刻文字列( 書式:"HH:MM:SS"、7時41分5秒の時、"07:41:05" )
◇例
PRINT TIME$
◎DATE$
現在の日付文字列( 書式:"YYYY/MM/DD"、 2014年9月15日の時、"2014/09/15" )
◇例
PRINT DATE$
◎CALLIDX
SPFUNCで呼び出された番号(0~511)
◇例
PRINT CALLIDX
▼命令概要
↑目次に戻る
■DIRECTモード専用
DIRECTボタンを押した状態でのみ利用できる命令
※EDITモードでプログラムに書くことはできません
◎例
CLEAR
NEW
LIST
RUN
CONT
■変数と配列
変数や配列の定義、配列操作に関する命令
◎例
DIM TMP%[10]
VAR A
INC NO
DEC NO
SWAP A,B
COPY TMP%,WRK%
SORT TMP%
RSORT TMP%
PUSH TMP%,123
V=POP(TMP%)
UNSHIFT TMP%,123
SHIFT(TMP%)
FILL TMP%,0
■制御と分岐
比較、分岐、くりかえしなどの制御命令
◎例
GOTO @LABEL
GOSUB @LABEL
END
STOP
@LABEL
RETURN
IF NO==0 THEN NO=1 ELSE NO=2
IF NO==0 THEN NO=1 ELSEIF NO==2 THEN N=3
ON IX GOTO @LABEL
ON IX GOSUB @LABEL
IF IX==0 GOTO @LABEL
FOR IX=0 TO 9 STEP 1:NEXT
WHILE SW==0:WEND
REPEAT:UNTIL SW==0
BREAK
CONTINUE
■高度な制御
ユーザー定義関数や拡張機器の制御などの命令
◎例
DEF SUB X,Y:END
DEF FUNC(X,Y):RETURN 0:END
DEF GETXY NO OUT X,Y:END
COMMON DEF SUB X,Y:END
CALL "LOCATE",X,Y
V=CALL("ASC","A")
■データ操作・その他
データ読み込み、垂直同期、コメントなどの命令
◎例
READ A,B$
DATA 123,"ABC"
RESTORE @DTOP
OPTION STRICT
WAIT 60
VSYNC 1
'--- comment
KEY 1,"TEST"
TMREAD OUT H,M,S
DTREAD OUT Y,M,D
F=CHKLABEL("@SUB",1)
F=CHKCALL("PRINT")
F=CHKVAR("SW")
DIALOG "MESSAGE"
CLIPBOARD "SAMPLE"
S$=CLIPBOARD()
■コンソール入出力
テキスト画面への文字表示や文字列の入力に関する命令
◎例
CLS
PRINT "A=";A;",B$=";B$
COLOR 15,0
LOCATE 0,0,0
ATTR 0
SCROLL VX,VY
C=CHKCHR(X,Y)
INPUT "NO:";NO
LINPUT "STR=";S$
K$=INKEY$()
FONTDEF
WIDTH 16
A=WIDTH()
■ファイル
一覧取得、ファイルへの読み書きなどの命令
◎例
FILES
LOAD"SYS/PRG1:EX1TEXT"
SAVE"TEST"
RENAME "TEST","NEWTEST"
DELETE "NEWTEST"
EXEC"PRG1:STDLIB"
USE 1
MKDIR "SUB"
RMDIR "SUB"
RENAME "TEST.PRG","SAMPLE.PRG"
FCOPY "SUB/TEST13.PRG","../BACKUP/"
DELETE "TEST.PRG"
■スクリーン制御
画面の表示モードなどに関する命令
◎例
XSCREEN H,V,ASP
VISIBLE CON,GRP,SP
BACKCOLOR RGB(0,0,0)
C=BACKCOLOR()
FADE RGB(255,64,64,64),60
C=FADE()
R=FADECHK()
ACLS
■グラフィック描画
ピクセル単位で線や円や矩形などを描画するための機能
◎例
GPAGE VPG,WPG
GPAGE OUT VP,WP
GOFS OX,OY
GOFS OUT X,Y
GCOLOR RGB(255,255,255)
C=RGB(255,128,64)
RGBREAD C OUT R,G,B
GCLIP MODE,TX,TY,EX,EY 'MODE(0=V,1=W)
GPRIO Z
GCLS
C=GSPOIT(X,Y)
GPSET X,Y,C
GLINE TX,TY,EX,EY,C
GCIRCLE CX,CY,R,C
GBOX TX,TY,EX,EY,C
GFILL TX,TY,EX,EY,C
GPAINT X,Y,C
GCOPY PG,TX,TY,EX,EY,MD 'MD(0=OVERWRITE)
GSAVE PG,W%,FLG 'FLG(0=32bitCOLOR)
GSAVE PG,TX,TY,EX,EY,W%,FLG
GLOAD W%,FLG,MD
GLOAD X,Y,W,H,W%,FLG,MD
GLOAD W%,PAL%,MD
GTRI X1,Y1,X2,Y2,X3,Y3
GPUTCHR X,Y,ABC
GPUTCHR16 X,Y,ABC
■スプライト
自由に動かせる矩形単位の画像表示に関する機能
◎例
SPPAGE 3
P=SPPAGE()
SPCLIP TX,TY,EX,EY
SPDEF DEFNO,U,V,W,H,HX,HY,A
SPDEF "@DEFDT"
SPDEF DEFNO OUT U,V,W,H,HX,HY,A
SPDEF "@DEFDT",OFS,UOFS,VOFS 
SPSET IX,DEFNO
SPSET IX,U,V,W,H,A
SPCLR IX
SPSHOW IX
SPHIDE IX
SPHOME IX,HX,HY
SPOFS IX,X,Y,Z
SPOFS IX OUT X,Y,Z
SPROT IX,A
SPROT IX OUT A
SPSCALE IX,SX,SY
SPSCALE IX OUT SX,SY
SPCOLOR IX,RGB(128,255,255,255)
SPCOLOR IX OUT C
SPCHR IX,DEFNO
SPCHR IX,U,V,W,H,A
SPCHR IX OUT U,V,W,H,A
SPCHR IX OUT DEFNO
SPLINK IX,PARENTIX
P=SPLINK(IX)
SPUNLINK IX
SPANIM IX,"XY+",-60,200,120,0
SPANIM IX,"XY+",W%,0
SPANIM IX,"XY+","@SPDAT"
SPSTOP IX
SPSTART IX
A=SPCHK(IX)
SPVAR IX,VNO,123
SPVAR IX OUT V
SPCOL IX,SCALE,MASK
SPCOL IX,OX,OY,W,H,SCALE,MASK
SPCOLVEC IX,VX,VY
SW=SPHITSP(IX,IX2)
SW=SPHITRC(X,Y,W,H,MASK,VX,VY)
SPHITINFO OUT T,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2
S=SPUSED(IX)
SPFUNC IX,@PROG
■サウンド
音に関する命令
◎例
BEEP NO,PITCH,VOL,PAN
■数学
三角関数や対数などの数学系の命令
◎例
VI=FNUM DIV FNUM2
VI=FNUM MOD FNUM2
VI=FNUM AND NUM
VI=FNUM OR NUM
VI=FNUM XOR NUM
VI=FNUM << NUM
VI=FNUM >> NUM
VI=FLOOR(FNUM)
VI=ROUND(FNUM)
VI=CEIL(FNUM)
V=ABS(NUM)
V=SGN(NUM)
V=MIN( NUMARR )
V=MAX( NUMARR )
V=RND(100)
VF=RNDF(100)
RANDOMIZE SEED
V=SQR(NUM)
V=EXP(NUM)
V=LOG(NUM)
V=POW(NUM,2)
V=PI()
V=RAD(NUM)
V=DEG(NUM)
V=SIN(NUM)
V=COS(NUM)
V=TAN(NUM)
V=ASIN(NUM)
V=ACOS(NUM)
V=ATAN(NUM)
V=ATAN(Y,X)
V=SINH(NUM)
V=COSH(NUM)
V=TANH(NUM)
V=CLASSIFY(NUM)
■文字列操作
文字列の表示書式指定や抽出などの命令
◎例
V=ASC("A")
S$=CHR$(&H41)
V=VAL("123")
S$=STR$(123)
S$=HEX$(123,4)
S$=BIN$(123,8)
S$=FORMAT$("%03D",NUM)
S$=FORMAT$("%8.2F",NUM)
V=LEN("ABCDE")
S$=MID$("ABCDE",2,1)
S$=LEFT$("ABCDE",2)
S$=RIGHT$("ABCDE",2)
V=INSTR("ABCDE",CD)
S$=SUBST$("ABCDE",2,"XY")
■ソースコード操作
指定したSLOTにプログラム文字列を書き込む機能
◎例
PRGEDIT SLOT
S$=PRGGET$()
PRGSET "BEEP 2"
PRGINS "'--- comment"
PRGDEL
V=PRGSIZE(SLOT)
S$=PRGNAME$(SLOT)
■エミュレータ関係の命令
エミュレータ側のCPUへのアクセスやエミュレータの制御用命令
◎例
EMUCPUINFO OUT N$,RC
V=EMUCPUNO()
EMUCPUNO 0
V=EMUSTATUS()
EMURUN &HA000
EMUSTOP
EMUJUMP &HC000
EMUTRACE
EMUSTEP
V=EMUMEM( &HD000 )
EMUMEM &HD000,&HA3
EMUDISASM &HAC00 OUT ASM$, LEN
V=EMUREGCNT()
N$=EMUREGNAME$(0)
V=EMUREGSIZE(0)
V=EMUREGSIZE("A")
V=EMUREGSIDE()
EMUREG REG
V=EMUREG(0)
V=EMUREG("A")
EMUREG 0,56
EMUREG "A",&HCC
EMUBKST OUT TYPE, NUMBER
EMUBP 0,&HFF00
EMUBC 0
EMUBL
EMURP 0,&H56AF,&HAA
EMURP 0 OUT &H1BD0,NUM
EMURC 0
EMURL
EMUWP 0,&H56AF,&HAA,&H40
EMUWP 0 OUT &HE300,NUM,VAL
EMUWC 0
EMUWL
EMUCLOCK 4000
V=EMUCLOCK()
EMURESET
EMUVOLUME 32768
V=EMUVOLUME()
EMUWINDOW 5
EMUCOLOR &HFFFFFF,&H000000,&H1F1F1F,75
EMUCOLOR OUT TX,BK,BD,AL
EMUSOFTKB TRUE
EMUCG ASC("A"),0,&HFE
V=EMUCG( ASC("A"),0 )
EMUCGRESET
EMUJOY BTNID, KEYPA, KEYPB
EMUJOY BTNID OUT SW, KEYPA, KEYPB
EMUJOYCLR
■GPIO制御関係の命令(I2C/SPI含む)
GPIO(及びI2C/SPI)制御に関する命令
◎例
GPIOMODE 18,6
GPIOPUD 18,1
V=GPIOIN(18)
V=GPIOIN()
GPIOOUT 18,1
GPIOOUT &HC3
GPIOHWPWM 1,16
I2CSTART
I2CSTOP
R=I2CRESULT()
V=I2CRECV(&H32)
V=I2CRECV8(&H32,0)
V=I2CRECV16(&H32,0)
I2CSEND &H32,0
I2CSEND8 &H32,0,25
I2CSEND16 &H32,0,&H2525
SPISTART 400000,3
SPISTOP
SPIRECV WORK%,256
SPISEND WORK%,256
SPISENDRECV WORK%,256
▼DIRECTモードでのみ利用できる命令
↑目次に戻る
■CLEAR
◇BASIC内部のメモリーを初期化
DIRECTモード専用
◎例
CLEAR
■NEW [プログラムSLOT]
◇プログラムを消去
DIRECTモード専用
◎引数
◇プログラムSLOT
0~3:指定SLOTのみ消去(省略時:全SLOT消去)
◎例
NEW
NEW 3
■LIST [ 行番号/ERR ]
◇EDITモードへの切り替えと編集開始
・DIRECTモード専用
・引数のないLISTは、EDITボタンを押すことと同じ働き
◎引数
◇行番号
・省略するとデフォルト行から表示
・2:120のような書き方でプログラムSLOTを指定
◇ERR
直前にエラーの発生した行を指定
◎例
LIST ERR
LIST 1:
■RUN [プログラムSLOT]
◇プログラムの実行
DIRECTモード専用
◎引数
◇プログラムSLOT
実行する指定プログラムSLOT(0~3、省略時=0)
◎例
RUN
RUN 1
■CONT
◇停止中のプログラムを再開
・DIRECTモード専用
・STARTボタン、STOP、エラー等の中断位置から実行再開
・プログラム編集を行うと再開できない
・入力待ちの途中で中断したときは再開できない
・エラー種類によっても再開できない
◎例
CONT
■BACKTRACE
◇直前の呼び出し元の履歴表示
・DIRECTモード専用
・STOP命令等で止めた際に直前までの呼び出し履歴を表示
・スロット番号と行番号のリストを表示
◎例
BACKTRACE
▼変数や配列の定義、配列操作に関する命令
↑目次に戻る
■=
◇変数に数値や式の値を代入
・従来のBASICのLET命令を省略した書き方
・本製品ではLET命令自体が省略されており代入には'='のみ使用
◎例
A=10
A$="HELLO"
■DIM 配列変数名[ 要素数 ] ,…
◇使用する配列を宣言
・本製品では配列の宣言は省略できない
・添字は0から始まる
・要素数は必ず[]でくくり()は使用できない
・DIMとVARはどちらを使ってもよい
◎引数
◇配列変数名[ 要素数 ]
・英数字とアンダースコア(_)が使用可能
・先頭に数字は使用不可
・配列変数には文字列変数も使用可能
◇要素数
・確保する配列の個数を[]でくくって指定
・要素数はカンマ(,)で区切って4次元まで指定可能
◎例
DIM ATR[4]
DIM DX[5], DY[5], DZ[5]
DIM POS[10,5]
■DIM 変数名 ,…
◇使用する変数を宣言
・OPTION STRICT指定時、すべての変数の宣言が必要
・DIMを変数の定義用として利用する使い方
◎引数
◇変数名
・英数字とアンダースコア(_)が使用可能
・先頭に数字は使用不可
・文字列変数も宣言可能
◎例
DIM A, ATRB, B$
■VAR 変数名 ,…
◇使用する変数を宣言
OPTION STRICT指定時、すべての変数の宣言が必要
◎引数
◇変数名
・英数字とアンダースコア(_)が使用可能
・先頭に数字は使用不可
・文字列変数も宣言可能
◎例
VAR A, ATRB, B$
■VAR 配列変数名[ 要素数 ] ,…
◇使用する配列を宣言
・本製品では配列の宣言は省略できない
・添字は0から始まる
・要素数は必ず[]でくくり()は使用できない
・DIMとVARはどちらを使ってもよい
◎引数
◇配列変数名[ 要素数 ]
・英数字とアンダースコア(_)が使用可能
・先頭に数字は使用不可
・配列変数には文字列変数も使用可能
◇要素数
・確保する配列の個数を[]でくくって指定
・要素数はカンマ(,)で区切って4次元まで指定可能
◎例
VAR ATR[4]
VAR DX[5], DY[5], DZ[5]
VAR POS[10, 5]
■SWAP 変数1, 変数2
◇2つの変数の値を交換
文字列と数値の交換は不可
◎引数
◇変数1
交換元の変数
◇変数2
交換先の変数
◎例
SWAP A,B
■INC 変数 [, 式 ]
◇変数の値を+1
引数がある場合式の値を加算
◎引数
◇変数
加算する変数名
◇式
加算する値(省略時:1)
◎文字列参照型についての補足
・文字列変数と配列は参照型です
・INC,DEC,SHIFT,UNSHIFT,PUSH,POPは参照型命令
(例)
A$=ABC  '初期値ABCのメモリーを確保
B$=A$    '変数は別だが参照先メモリーは同じ
?A$,B$    'ABCとABCと表示
INC B$,Z '参照先に対してZを加算
?A$,B$   'ABCZとABCZと表示
B$=B$+X  '変数への足し算はコピーが発生
?A$,B$   'ABCZとABCZXと表示
C$=B$   '変数は異なるが参照先は同じメモリー
?A$,B$,C$  'ABCZとABCZXとABCZXと表示
INC C$,W '参照先に対してWを加算
?A$,B$,C$  'ABCZとABCZXWとABCZXWと表示
◎例
INC X
INC X,3
■DEC 変数 [, 式 ]
◇変数の値を-1
引数がある場合式の値を減算
◎引数
◇変数
減算する変数名
◇式
減算する値(省略時:1)
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DEC X
DEC X,3
■COPY コピー先配列 [,コピー先オフセット],コピー元配列 [[,コピー元オフセット], コピー要素数]
◇配列を他の配列にコピー
・1次元配列に限りコピー先要素数不足の際自動追加
・コピー元、コピー先とも次元は無視される
◎引数
◇コピー先配列
コピー先の配列(コピー元配列の内容で上書きされる)
◇コピー先オフセット
上書きされる先頭要素(省略時はコピー先の先頭から)
◇コピー元配列
コピー元の配列
◇コピー元オフセット
上書きする先頭要素(省略時はコピー元の先頭から)
◇コピー要素数
上書きする要素数(省略時はコピー元の末尾まで)
◎例
DIM SRC[10],DST[10]
COPY DST,SRC
■COPY コピー先配列 [,コピー先オフセット], @ラベル文字列 [,コピーデータ数]
◇DATA列を配列に読み込む
・DATA命令に列挙されたデータを配列に読み込む
・1次元配列に限りコピー先要素数不足の際自動追加
◎引数
◇コピー先配列
コピー先の配列(DATA列の内容で上書きされる)
◇コピー先オフセット
上書きされる先頭要素(省略時は配列の先頭から)
◇@ラベル文字列
読み込むDATA命令に付けられている@ラベル名を文字列で指定
◇コピーデータ数
・読み込むデータ数(省略時はコピー先配列の要素数分)
・※コピー先配列数よりDATA数が少ない場合エラー
◎例
DIM DST[5]
COPY DST,"@SRC"
@SRC
DATA 5,1,1,2,4
■SORT [開始位置, 要素数,] 配列1 [,配列2 ,…]
配列を昇順で並び替える
◎引数
◇開始位置
配列1内のソートを開始する位置(0~)
◇要素数
配列1内のソートする要素数(1~)
◇配列1
ソートする数値の入った配列
◇配列2
・配列1のソート結果に従いソートする配列
・列挙できる配列は配列1~配列8まで
◎例
DIM WORK[10]
SORT 0, 10, WORK
■RSORT [開始位置, 要素数,] 配列1 [,配列2 ,…]
配列を降順で並び替える
◎引数
◇開始位置
配列1内のソート開始位置(0~)
◇要素数
配列1内のソートする要素数(1~)
◇配列1
ソートする数値の入った配列
◇配列2
・配列1のソート結果に従いソートする配列
・列挙できる配列は配列1~配列8まで
◎例
DIM WORK[10]
RSORT 0, 10, WORK
■PUSH 配列, 式
配列の末尾に要素を追加(要素数が1つ増える)
◎引数
◇配列
要素を追加される配列
◇式
追加する要素の値
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DIM WORK[10]
PUSH WORK, 123
■変数=POP( 配列 )
配列の末尾から要素を取り出す(要素数が1つ減る)
◎引数
◇配列
要素を取り出される配列
◎戻り
取り出した要素の値
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DIM WORK[10]
PUSH WORK, 123
A=POP(WORK)
■UNSHIFT 配列, 式
配列の先頭に要素を追加(要素数が1つ分増える)
◎引数
◇配列
要素を追加される配列
◇式
追加する要素の値
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DIM WORK[10]
UNSHIFT WORK, 123
■変数=SHIFT( 配列 )
配列の先頭から要素を取り出す(要素数が1つ分減る)
◎引数
◇配列
要素を取り出される配列
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DIM WORK[10]
UNSHIFT WORK, 123
A=SHIFT(WORK)
■FILL 配列, 値 [,オフセット [,要素数]]
◇配列内容をすべて指定値に設定
・オフセットと要素数で部分的な変更も可能
・配列の型は、整数、実数、文字列いずれでも構わない
◎引数
◇配列
値を上書きする配列
◇値
数値や文字列
◇オフセット
値を書き込み始める位置
◇要素数
書き込む数
◎例
DIM WORK[10]
FILL WORK,0
▼比較、分岐、くりかえしなどの制御命令
↑目次に戻る
■@ラベル名
◇プログラムやデータの位置を示す名前
・GOTOなどで行番号を直接指定することはできない
・分岐先やデータ位置はすべてラベルで指定
◎引数
◇@ラベル名
@で始まる英数字とアンダースコア(_)
◎例
@MAINLOOP
■GOTO @ラベル
強制分岐
◎引数
◇@ラベル
・ジャンプ先の@ラベル名
・ラベル名をでくくったラベル文字列(文字列変数も可)
・1:@ラベル名 の形式でプログラムSLOT指定も可能
・あらかじめUSE命令で対象SLOTを使用可能にしておくこと
◎例
GOTO @MAIN
JP$="@MAIN":GOTO JP$
■GOSUB @ラベル
サブルーチンの呼び出し
◎引数
◇@ラベル
・呼び出すサブルーチンの@ラベル名
・ラベル名をでくくったラベル文字列(文字列変数も可)
・1:@ラベル名 の形式でプログラムSLOT指定も可能
・あらかじめUSE命令で対象SLOTを使用可能にしておくこと
◎例
GOSUB "@SUB"
■RETURN
サブルーチンから呼び出し元へ復帰
◎例
RETURN
■RETURN
◇サブルーチンから値を返しつつ呼び出し元へ復帰
関数型として定義されたDEF命令内で値を戻す場合に利用
◎例
DEF CALC(A,B)
 RETURN A*B
END
PRINT CALC(2,3)
■OUT
◇複数出力が必要な場合に利用する命令
・複数の値を返すDEF命令の宣言で利用
・複数の値を返す組み込み命令でも利用される
◎例
DEF SUB A OUT D,M
 D=A DIV 10
 M=A MOD 10
END
SUB 34 OUT DV,ML
PRINT DV,ML
■ON 制御変数 GOTO @ラベル0, @ラベル1…
◇制御変数の値に合わせてラベル行に分岐
・従来型BASICとは異なり分岐番号は0からとなる
◎引数
◇@ラベル0
制御変数が0のときのジャンプ先
◇@ラベル1
制御変数が1のときのジャンプ先
 :
・必要な数だけ飛び先を用意する
・ON~GOTOのラベルには、ラベル文字列は使えない
◎例
ON IDX GOTO @JMP_A,@JMP_B
PRINT OVER:END
@JMP_A
PRINT "IDX=0":END
@JMP_B
PRINT "IDX=1":END
■ON 制御変数 GOTO @ラベル0, @ラベル1…
◇制御変数の値に合わせてラベル行に分岐
・従来型BASICとは異なり分岐番号は0からとなる
◎引数
◇@ラベル0
制御変数が0のときのジャンプ先
◇@ラベル1
制御変数が1のときのジャンプ先
 :
・必要な数だけ飛び先を用意する
・ON~GOTOのラベルには、ラベル文字列は使えない
◎例
ON IDX GOTO @JMP_A,@JMP_B
PRINT OVER:END
@JMP_A
PRINT "IDX=0":END
@JMP_B
PRINT "IDX=1":END
■ON 制御変数 GOSUB @ラベル0, @ラベル1…
◇制御変数の値に合わせてサブルーチン呼び出し
・従来型BASICとは異なり分岐番号は0からとなる
◎引数
◇@ラベル0
制御変数が0のときのサブルーチン
◇@ラベル1
制御変数が1のときのサブルーチン
 :
・必要な数だけ飛び先を用意する
・ON~GOSUBのラベルには、ラベル文字列は使えない
◎例
ON IDX GOSUB @SUB_A,@SUB_B
PRINT EXIT:END
@SUB_A
PRINT "IDX=0":RETURN
@SUB_B
PRINT "IDX=1":RETURN
■ON 制御変数 GOSUB @ラベル0, @ラベル1…
◇制御変数の値に合わせてサブルーチン呼び出し
・従来型BASICとは異なり分岐番号は0からとなる
◎引数
◇@ラベル0
制御変数が0のときのサブルーチン
◇@ラベル1
制御変数が1のときのサブルーチン
 :
・必要な数だけ飛び先を用意する
・ON~GOSUBのラベルには、ラベル文字列は使えない
◎例
ON IDX GOSUB @SUB_A,@SUB_B
PRINT EXIT:END
@SUB_A
PRINT "IDX=0":RETURN
@SUB_B
PRINT "IDX=1":RETURN
■IF 条件式 THEN 成立時処理 [ELSE 不成立時処理] [ENDIF]
条件成立時に処理1を、不成立時に処理2を実行
・THENやELSE直後のGOTOは、GOTOを省略可能
・処理が複数行にわたるときはENDIFを使用
◎条件式
◇比較演算子
== 等しい
!= 等しくない
> より大きい
< より小さい
>= 以上
<= 以下
◇論理演算子(複数条件の比較用)
(条件1 AND 条件2) 同時に満たす
(条件1 && 条件2) 同時に満たす
(条件1 OR 条件2) いずれかを満たす
(条件1 || 条件2) いずれかを満たす
◎例
IF A==1 THEN PRINT OK
IF A>1 THEN @JMP1 ELSE PRINT DATE$
IF A==1 THEN
 PRINT "オメデトウ":BEEP 2
ELSE
 PRINT "ザンネン"
ENDIF
@JMP1
END
■IF 条件式 THEN 成立時処理 [ELSE 不成立時処理] [ENDIF]
◇IFによる条件が成立した時の制御先
条件判定については、IFの説明をご覧ください
◎例
IF A==1 THEN PRINT OK
IF A>1 THEN @JMP1 'GOTOの省略
IF A==1 THEN
 PRINT "オメデトウ":BEEP 2
ELSE
 PRINT "ザンネン"
ENDIF
@JMP1
END
■IF 条件式 THEN 成立時処理 ELSE 不成立時処理 [ENDIF]
◇IFによる条件が成立しない時の制御先
条件判定については、IFの説明をご覧ください
◎例
IF A==1 THEN PRINT OK
IF A>1 THEN @JMP1 ELSE PRINT DATE$
IF A==1 THEN
 PRINT "オメデトウ":BEEP 2
ELSE
 PRINT "ザンネン"
ENDIF
@JMP1
END
■IF 条件式 THEN 成立時処理 ELSEIF 条件式 THEN 成立時処理 ENDIF
◇IFによる条件不成立時の追加条件判定
・不成立時に続けて条件判断を行う場合に利用
・条件判定については、IFの説明をご覧ください
◎例
IF A==1 THEN
 PRINT "オメデトウ":BEEP 0
ELSEIF A==2 THEN 
 PRINT "ザンネン"
ELSE IF A==3 THEN 
 PRINT "まあまあ"
ENDIF '--- ELSE IF の場合は必要
ENDIF
■IF 条件式 THEN 成立時処理 ELSE 不成立時処理 [ENDIF]
◇IFによる制御切替後処理が複数行になる場合の終了
条件判定については、IFの説明をご覧ください
◎例
IF A==0 THEN
 PRINT "A=0"
ENDIF
■IF 条件式 GOTO @ラベル [ELSE 不成立時処理]
◇条件が成立時@ラベルに分岐
条件判定については、IFの説明をご覧ください
◎ラベルに文字列を使う場合の注意事項
・ラベルにはラベル文字列も使用可能
・ELSE直後でのGOTO省略時に文字列は使えない
× IF A==0 GOTO @LABEL1 ELSE @LABEL2
○ IF A==0 GOTO @LABEL1 ELSE @LABEL2
○ IF A==0 GOTO @LABEL1 ELSE GOTO @LABEL2
◎例
IF A==1 GOTO @MAIN
IF X<0 GOTO @JMP1 ELSE PRINT A$
IF Y==5 GOTO @JMP1 ELSE @JMP2
@JMP1
PRINT "@JMP1"
@JMP2
PRINT "@JMP2"
END
■IF 条件式 GOTO @ラベル [ELSE 不成立時処理]
◇条件が成立時@ラベルに分岐
・条件判定については、IFの説明をご覧ください
◎ラベルに文字列を使う場合の注意事項
・ラベルにはラベル文字列も使用可能
・ELSE直後でのGOTO省略時に文字列は使えない
× IF A==0 GOTO @LABEL1 ELSE @LABEL2
○ IF A==0 GOTO @LABEL1 ELSE @LABEL2
○ IF A==0 GOTO @LABEL1 ELSE GOTO @LABEL2
◎例
IF A==1 GOTO @MAIN
IF X<0 GOTO @JMP1 ELSE PRINT A$
IF Y==5 GOTO @JMP1 ELSE @JMP2
@JMP1
PRINT "@JMP1"
@JMP2
PRINT "@JMP2"
END
■FOR ループ変数=初期値 TO 終了値 [STEP 増分]
◇処理を指定回数繰り返す
・処理の最後にはNEXT命令を置く
・条件が満たされない場合、1回も実行されないことがある
◎引数
◇ループ変数
ループ回数をカウントする変数(1ループごとに増分が加算)
◇初期値
ループ開始時のループ変数の値または式
◇TO 終了値
ループ終了時のループ変数の値または式
◇STEP 増分
・ループ終わりにループ変数に加算する増分(省略時=1)
・増分が小数の時、演算誤差で意図した回数にならない可能性あり
◎例
FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT
■TO 終了値
◇ループ数の終わりの値指定
・FOR~NEXTについてはFOR命令の説明をご覧ください
◎例
FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT
■STEP 増分
◇FORループ数の増分の値指定
・FOR~NEXTについてはFOR命令の説明をご覧ください
◎例
FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT
■NEXT [ 制御変数 ]
◇FORループの終わりを示す命令
・FOR~NEXTについてはFOR命令の説明をご覧ください
・FORループ内のIFでNEXTを使うのは非推奨
・強制的に次のループへ進める時はCONTINUEを使用
・ループの強制終了はBREAKを使用
◎引数
◇制御変数
・制御変数は記述しても無視され単なるNEXTと同じ働き
・NEXT J,I のような記述は不可
◎例
FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT
■WHILE 条件式
◇条件が成立している間、WENDまでをくりかえす
・不成立時、またはBREAK命令でループを抜ける
◎条件式
IFと同等の条件式を書くことができます
◇比較演算子
==(等しい)
!=(等しくない)
>(より大きい)
<(より小さい)
>=(以上)
<=(以下)
◇論理演算子(複数条件の比較用)
(条件1 AND 条件2) 同時に満たす
(条件1 && 条件2) 同時に満たす
(条件1 OR 条件2) いずれかを満たす
(条件1 || 条件2) いずれかを満たす
◎例
A=0:B=4
WHILE A<B
 A=A+1
WEND
■WEND
WHILEループの終わりを示す命令
◎例
A=0:B=4
WHILE A<B
 A=A+1
WEND
■REPEAT
◇REPEATループの開始命令
・ループの終わりにUNTIL命令と条件式を置く
・WHILE命令とは異なり先に処理を実行してから条件判断
・成立時、またはBREAK命令でループを抜ける
◎例
A=0:B=4
REPEAT
 A=A+1
UNTIL A>B
■UNTIL 条件式
◇条件が満たされるまでREPEATからをくりかえす
・ループの始まりにREPEAT命令を置く
・WHILE命令とは異なり先に処理を実行してから条件判断
・成立時、またはBREAK命令でループを抜ける
◎条件式
IFと同等の条件式を書くことができます
◇比較演算子
==(等しい)
!=(等しくない)
>(より大きい)
<(より小さい)
>=(以上)
<=(以下)
◇論理演算子(複数条件の比較用)
(条件1 AND 条件2) 同時に満たす
(条件1 && 条件2) 同時に満たす
(条件1 OR 条件2) いずれかを満たす
(条件1 || 条件2) いずれかを満たす
◎例
A=0:B=4
REPEAT
 A=A+1
UNTIL A<B
■CONTINUE
◇ループを強制的に次に進める
・FOR~NEXT、WHILE~WEND、REPEAT~UNTIL内で使用
◎例
FOR I=0 TO 9
 IF I==1 THEN CONTINUE
 IF I==7 THEN BREAK
 PRINT I;",";
NEXT
■BREAK
◇ループから強制的に抜ける
・FOR~NEXT、WHILE~WEND、REPEAT~UNTIL内で使用
◎例
FOR I=0 TO 9
 IF I==1 THEN CONTINUE
 IF I==7 THEN BREAK
 PRINT I;",";
NEXT
■END
プログラムを終了
◎例
END
■END
ユーザー関数、ユーザー命令のDEF定義を終了
◎例
DEF FUNC
 PRINT FUNC
END
■STOP
◇実行中のプログラムを中断
・中断したプログラムSLOT:行番号が表示される
・CONT命令で続行可能(ただし状況によっては続行できない)
◎例
STOP
▼ユーザー定義関数や拡張機器の制御などの命令
↑目次に戻る
■DEF ユーザー定義命令について
1) USER ※引数なし、戻り値なし
2) USER X,Y ※引数あり、戻り値なし
3) A=USER(X) ※引数あり、戻り値1つ
4) USER(X) OUT A,B ※引数あり、戻り値複数
DEFを使うと上記のような命令を独自定義が可能
◎DEF共通の補足
・DEF~ENDまでが定義範囲となる
・DEF~END範囲で定義された変数やラベルはローカル扱い
・DEF~END範囲を越えるGOTOはできない
・DEF~END範囲内でGOSUBやON GOSUBは使用できない
 GOSUB 0:@SUBのようにSLOT指定があれば利用可能
・COMMON 命令を付けることでSLOTを超えて利用可能
◎DEF引数の仕様
・DEFで受け取る引数に関して厳密な型チェックは行わない
・必要な数だけカンマ(,)で区切り受け取る変数名を記述可能
・文字列変数には変数名の終わりに$を付けることも可能
◎DEF戻り値の仕様
・DEFの戻り値に関しての厳密な型チェックは行わない
・出力用変数に最初に書いた値で型が確定
・数値変数に整数値を代入すると整数型として扱う
・実数型として扱う場合は、A=100.0のように記述
・DEFからの戻り値を受け取った側の型と異なる場合エラー
■DEF 定義名
返り値と引数の無いユーザー命令の定義
◎引数
なし
◎戻り
なし
◎例
'--- 文字表示
DEF FUNC
PRINT "SAMPLE"
END
'--- 呼び出し
FUNC
■DEF 定義名 引数 [,引数…] 
引数があり返り値が無いユーザー命令の定義
◎引数
関数に渡したい引数があれば必要な分の変数名を記述
◎戻り
なし
◎例
'--- 指定位置に文字表示
DEF FUNC2 X,Y
LOCATE X,Y
PRINT "SAMPLE"
END
'--- 呼び出し
FUNC2 10,4
■DEF 関数名([引数 [,引数…]])
戻り値が1つだけあるユーザー関数の定義
◎引数
関数に渡したい引数があれば必要な分の変数名を記述
◎戻り
結果として返したい値を、RETURN命令の後に書く
※RETURN ANS のような記述
◎例
'---足し算
DEF ADD(X,Y)
RETURN X+Y
END
'--- 再帰を使った階乗計算
DEF FACTORIAL(N)
IF N==1 THEN RETURN N
RETURN N*FACTORIAL(N-1)
END
'--- 文字列反転
DEF REVERSE$(T$)
VAR A$="" 'ローカル文字列
VAR L=LEN(T$) 'ローカル
WHILE L>0
 A$=A$+MID$(T$,L-1,1)
 DEC L
WEND
RETURN A$
END
'--- 呼び出し
PRINT ADD(10,5)
PRINT FACTORIAL(4)
PRINT REVERSE$(BASIC)
■DEF 命令名 [引数 [,引数…]] OUT V1 [,V2…]]
複数の返り値を持つユーザー命令の定義
◎引数
関数に渡したい引数があれば必要な分の変数名を記述
◎戻り
結果として返したい数分の変数名をOUTの後に記述
◎例
'--- 足し算と掛け算
DEF CALCPM A,B OUT OP,OM
OP=A+B
OM=A*B
END
'--- 呼び出し
CALCPM 5,10 OUT P,M
PRINT P,M
■COMMONについて
1) COMMON DEF USER
2) COMMON DEF USER(X)
3) COMMON DEF USER(X) OUT A,B
COMMONはSLOTを超えて独自命令を使う場合に利用
異なるSLOT間でプログラムを使う場合はUSEが必要
◎例
COMMON DEF FOO(X, Y, Z)
■CALL 命令名 [,引数…] [OUT 変数1 [,変数2…]]
指定名称を持つユーザー定義命令を呼び出す
◎引数
◇命令名
・呼び出すユーザー定義命令名の文字列
・文字列なので""でくくるか文字列変数を使用
◇引数~
指定した命令に必要な引数
◎戻り
結果として返したい数分の変数名をOUTの後に記述
◎例
CALL "USERCD",X,Y OUT A,B
'
DEF USERCD X,Y OUT A,B
A=X+Y:B=X*Y
END
■変数=CALL(関数名 [,引数…])
指定名称を持つユーザー定義関数を呼び出す
◎引数
◇関数名
・呼び出すユーザー定義関数名の文字列
・文字列なので""でくくるか文字列変数を使用
◇引数
 指定した関数に必要な引数を列挙
◎例
A=CALL("USERFC",X,Y)
'
DEF USERFC(X,Y)
RETURN X*Y
END
■CALL SPRITE
◇SPRITEコールバックの呼び出し
SPFUNCで設定されたSPRITE毎の処理を一斉呼び出し
◎例
CALL SPRITE
▼データ読み込み、垂直同期、コメントなどの命令
↑目次に戻る
■READ 取得変数1 [, 取得変数2…]
◇DATA命令で列挙した情報を変数に読み込む
DATA命令で列挙した型と同じ型で読むこと
◎引数
◇取得変数
・読み込む情報を格納する変数(複数指定可能)
・RESTORE命令で指定した行以降のDATAから取得
・RESTORE省略時、最初のDATAから取得
◎例
READ X,Y,Z,G$
DATA 200,120,0,"JAN"
DATA 210,120,0,"FEB"
■DATA データ [, データ…]
◇READで読み込むデータの定義
・数値も文字列も混在可能
・数値定数のみの式は定数として扱われるためDATA文に記述可能
・#で始まる定数も記述可能
・&&、||、変数や関数の混ざった式は記述できない
・文字列式は記述できない
◎データの記述方法
・数値や文字列を ',' で区切って並べる
・文字列は必ず""でくくる(は省略不可)
◎例
READ X,Y,Z,ST$ '行末にコメントが書けます
DATA 123,345,56,"SAMPLE"
■RESTORE @ラベル
READ命令が読み込む先頭DATAを指定
◎引数
◇@ラベル
・読み込むDATA命令の先頭に付けられた@ラベル名
・@ラベル名が代入された文字列変数も指定可能
・RESTORE 1:@ラベル名 で他のSLOTから参照も可能
・あらかじめUSE 1等で対象SLOTを使用可能にしておく
◎例
RESTORE @DATATOP
@DATATOP
DATA 123,345,56,"SAMPLE"
■OPTION 機能名
プログラムの動作モードを設定
◎引数
◇機能名    
STRICT: 変数宣言が必須となる(宣言なし参照はエラー)
DEFINT: 変数のデフォルト型を整数型にする
◎例
OPTION STRICT
■WAIT [フレーム数]
指定回数分の垂直同期が来るまでプログラム停止
◎引数
◇フレーム数
現在からの経過フレーム数を指定(0:無視、省略時は1)
◎例
WAIT 60
■VSYNC [フレーム数]
◇指定回数分の垂直同期が来るまでプログラム停止
WAITとは異なり前回VSYNCからのVSYNC回数
◎引数
◇フレーム数
前回のVSYNCからの経過フレーム数を指定(0:無視 省略時=1)
◎例
VSYNC 1
■' [文字列]
◇コメント記述用の記号
・コメント内容はプログラム実行に影響しない
◎例
' ---MAIN ROUTINE---
■REM [文字列]
◇コメント記述用の命令
・コメント内容はプログラム実行に影響しない
◎例
REM ---MAIN ROUTINE---
■KEY 番号,"文字列"
ファンクションキーに任意の文字列を割り当てる
◎引数
◇番号
ファンクションキーの番号(1~5)
◇文字列
・割り当てる文字列
・表示しきれない場合は最後を'…'として表示
◎例
KEY 1,CLS+CHR$(13)
■TMREAD ["時間文字列"] OUT H,M,S
時間文字列を数値に変換
◎引数
◇時間文字列
HH:MM:SS形式の時間文字列(省略時、現在の時間)
◎戻り
◇数値格納先変数
H: 時間を受け取る変数(0~23)
M: 分を受け取る変数
S: 秒を受け取る変数
◎例
TMREAD "12:59:31" OUT H,M,S
■DTREAD ["日付文字列"] OUT Y,M,D [,W]
日付文字列を数値に変換
◎引数
◇日付文字列
YYYY/MM/DD形式の日付文字列(省略時現在の日時)
◎戻り
◇数値格納先変数
Y: 年を受け取る変数
M: 月を受け取る変数
D: 日を受け取る変数
W: 曜日(日曜日を0とする数値)を受け取る変数
◎例
DTREAD "2014/10/12" OUT Y,M,D
■変数 = CHKLABEL("@ラベル文字列" [,フラグ])
指定文字列で参照できるラベルの存在確認
◎引数
◇@ラベル文字列
・CHKLABEL "1:@ラベル名" で他のSLOT確認も可能
・あらかじめUSE 1 等で対象SLOTを使用可能にしておく
◇フラグ
0:DEF内だけを検索(省略時=0)
1:DEF内に無ければグローバルラベルを検索
◎戻り
FALSE=存在しない、TRUE=存在
◎例
A=CHKLABEL("@MAIN")
■変数 = CHKCALL("文字列")
指定文字列で参照できる命令・関数の存在確認
◎引数
◇文字列
調べたい命令・関数の文字列
◎戻り
FALSE=存在しない、TRUE=存在
◎例
A=CHKCALL("KEYCHECK")
■変数 = CHKVAR("文字列")
指定文字列で参照できる変数の存在確認
◎引数
◇文字列
調べたい変数の文字列
◎戻り
FALSE=存在しない、TRUE=存在
◎例
A=CHKVAR("COUNTX")
■DIALOG "テキスト文字列"
◇ダイアログを表示しボタンが押されるまで待つ
・システム変数 RESULT に結果を返す
・RESULT:1(決定)、-1(キャンセル)、0(タイムアウト)
◎引数
◇テキスト文字列
ダイアログに表示する文字列
◎補足(DIALOG命令共通)
・ダイアログは必ず下画面に表示
・テキスト文字列、キャプション文字列の合計は250文字まで
・テキスト文字列にCHR$(10)かCHR$(13)があると改行
・タイムアウト時間をマイナス値にするとフレーム単位となる
◎例
DIALOG "おはようございます!"
■DIALOG "テキスト文字列",[選択タイプ],["キャプション文字列"],[タイムアウト時間]
ダイアログを表示しボタンが押されるまで待つ
◎引数
◇テキスト文字列
ダイアログに表示する文字列
◇選択タイプ
0: 了解(デフォルト)
5: 次へ
◇キャプション文字列
ダイアログ上部のキャプション欄に表示する文字列
◇タイムアウト時間
ダイアログを自動的に閉じるまでの秒数(省略時=0:閉じない)
◎例
DIALOG "はじめましょう",5,"シナリオ",-120
■変数 = DIALOG("テキスト文字列",[選択タイプ],["キャプション文字列"],[タイムアウト時間])
ダイアログを表示し指定したボタンが押されるまで待つ
◎引数
◇テキスト文字列
ダイアログに表示する文字列
◇選択タイプ
0: 了解(デフォルト)
1: いいえ/はい
2: 戻る/次へ
3: 中止/決定
4: 中止/実行
5: 次へ
◇キャプション文字列
ダイアログ上部のキャプション欄に表示する文字列
◇タイムアウト時間
ダイアログを自動的に閉じるまでの秒数(省略時=0:閉じない)
◎戻り
-1: 否定(左ボタン)
0: タイムアウト
1: 肯定(右ボタン)
※システム変数 RESULT にも値が残ります
◎例
R=DIALOG("もう一度しますか?",1,"確認",0)
■文字列=DIALOG( "初期文字列", "キャプション文字列" [,最大文字数])
ファイル名入力専用のダイアログを表示
◎引数
◇初期文字列
最初に入力されている文字列
◇キャプション文字列
キャプションに表示する文字列
◇最大文字数
最大14文字まで
◎戻り
取得した文字列が返ります
※RESULT=-1の時は中止(文字列無効)
◎例
T$=DIALOG( "NEWNAME0", "SAVE", 14 )
■CLIPBOARD "文字列"
クリップボードの内容を設定する
◎引数
◇文字列
クリップボードに格納する文字列
◎例
CLIPBOARD "おはようございます"
■CLIPBOARD() 
クリップボードの内容を取得する
◎戻り
クリップボード内の文字列
◎例
PRINT CLIPBOARD()
▼コンソール画面への文字表示や文字列の入力に関する命令
↑目次に戻る
■CLS
コンソール画面を消去(DISPLAY命令で指定された画面)
◎例
DISPLAY 0
CLS
■COLOR 描画色 [,背景色]
文字の色と文字裏の背景色をRGB値で指定します
◎引数
◇描画色
・通常はRGB関数で指定 例)COLOR RGB(64,128,128), RGB(0,0,0)
・直接数値を指定するときは、RGB各8ビットの色コード
◇背景色
・背景色だけを変更するときは、描画色の省略可能
◎例
COLOR RGB(255,255,255),RGB(0,0,32)
COLOR #WHITE
COLOR ,RGB(0,0,0)
■LOCATE [座標X],[座標Y] [,座標Z]
コンソール画面への文字表示位置を指定
◎引数
◇座標X,Y
・文字単位の座標(表示できる文字数は解像度に依存)
・X,Yを省略すると、それぞれ以前のX,Y座標を維持
◇座標Z
・奥行方向の座標(奥:1024<液晶面:0<手前:-256)
・省略すると、以前のZ座標を維持
◎例
LOCATE 20,15
LOCATE 0,0,-200
■PRINT [式 [;または, 式…]]
◇コンソール画面への文字表示
・式を省略すると改行のみ行う
・PRINTは?で代用可能
◎引数
◇式
・表示する変数、文字列変数、数値、文字列
・四則演算等や関数による計算式も記述可(計算結果が表示される)
◇;(セミコロン)
表示後に改行せず、次の表示を密着させる
◇,(カンマ)
・表示後に改行せず、次の表示を一定間隔開ける
・表示位置はシステム変数のTABSTEP単位に従う
◎例
PRINT RESULT(X,Y)=;DX*4+1,DY+1
■ATTR 表示属性
◇コンソール画面に表示する文字の回転・反転属性を設定
テキスト属性用の定数利用可能(#TROT0~270、#TREVH,V)
◎引数
◇表示属性
|b00| ↑90度単位の回転(b00とb01の2ビットで指定)
|b01| ↓#TROT0、#TROT90、#TROT180、#TROT270
|b02| 横反転(0=OFF、1=ON)、#TREVH
|b03| 縦反転(0=OFF、1=ON)、#TREVV
◎例
ATTR 3:PRINT ABC
■SCROLL 文字数X, 文字数Y
◇コンソール画面全体の表示位置調整
・視点が移動するイメージ(文字が移動する方向は逆)
・画面外に押し出された文字は消える
◎引数
◇文字数X
横方向の視点移動量(マイナス値で左、プラス値で右)
◇文字数Y
縦方向の視点移動量(マイナス値で上、プラス値で下)
◎例
SCROLL 5,7
■変数 = CHKCHR( 座標X,座標Y )
コンソール画面の文字コードを調べる
◎引数
◇座標X,Y
文字単位の座標(X:0~49,Y:0~29)
◎戻り
UTF-16文字コード
◎例
CODE=CHKCHR(0,0)
■INPUT ["ガイド文字列";] 変数[,変数2…]
◇キーボードから数値または文字列を入力
・ENTERキーが入力されるまで入力待ち
・入力数が不足時「?Redo from start」を表示し再入力
◎引数
◇ガイド文字列
・入力用のガイドメッセージ(省略可能)
・ガイド文字列後の;を,(カンマ)にすると?が表示されない
・;を使うときのみガイド文字列には文字列変数も使用可能
◇変数
・入力を受け取る変数(数値または文字列変数)
・変数を複数指定する場合,(カンマ)で区切る
◎例
INPUT "名前と年齢は";NM$,AG
■LINPUT ["ガイド文字列";] 文字列変数
◇キーボードから文字列の取得
・INPUT命令では入力できない「,」等も受け付ける
・ENTERキーが入力されるまで入力待ち
◎引数
◇ガイド文字列
入力用のガイドメッセージ(省略可能)
◇文字列変数
1行分の入力を受け取る文字列変数
◎例
LINPUT "ADDRESS:";ADR$
■文字列変数=INKEY$()
キーボードから1文字取得(入力待ちなし)
◎引数
なし
◎戻り
・キーボードからの1文字(UTF-16)
・入力がない場合  が戻る
◎例
C$=INKEY$()
■FONTDEF 文字コード, "フォント定義文字列"
指定文字コードのフォントを定義
◎引数
◇文字コード
フォントを定義する文字コード(UTF-16)
◇フォント定義文字列
・1ドットはRGBA=5551形式の16ビット色コード
・RGB各色5ビット(0~31) +α1ビット(0:透明、1:不透明)
・色要素を16進数4ケタの文字列で扱う
・例)白:FFFF 黒:0001 赤:F801
・1文字は8×8=64ドットフォント定義文字列は計256文字
◎関連
GCOPY、GSAVEのページ番号-1でフォント画像操作可能
◎例
F$="FFFF":Z$="0000"
D$=F$*7+Z$
D$=D$+F$*2+Z$*3+F$*2+Z$
D$=D$+F$+Z$+F$*3+Z$+F$+Z$
D$=D$+F$+Z$*5+F$+Z$
D$=D$+F$+Z$+F$*3+Z$+F$+Z$
D$=D$+F$+Z$+F$*3+Z$+F$+Z$
D$=D$+F$*7+Z$
D$=D$+Z$*8
FONTDEF ASC("A"),D$
■FONTDEF 文字コード, 数値配列
指定文字コードのフォントを定義
◎引数
◇文字コード
フォントを定義する文字コード(UTF-16)
◇フォント定義配列
・1ドット1要素の数値配列を用意(1文字8×8ドット=64要素)
・1ドットはRGBA=5551形式の16ビット色コード
・RGB各色5ビット(0~31) +α1ビット(0:透明、1:不透明)
・例)白:&HFFFF 黒:&H0001 赤:&HF801
◎関連
GCOPY、GSAVEのページ番号-1でフォント画像操作可能
◎例
DIM F%[64]
DATA 11111110
DATA 11000110
DATA 10111010
DATA 10000010
DATA 10111010
DATA 10111010
DATA 11111110
DATA 00000000
TOP=ASC(A):CNT=1
FOR I=0 TO CNT-1
 FOR D=0 TO 7
  READ F$
  FOR B=0 TO 7
   C=0:IF MID$(F$,B,1)==1 THEN C=&HFFFF
   F%[D*8+B]=C
  NEXT
 NEXT
 FONTDEF TOP+I,F%
NEXT
■FONTDEF
フォントの定義を初期状態に戻す
◎例
FONTDEF
■WIDTH フォントサイズ, フォント種別
コンソールの文字サイズ変更
◎引数
◇フォントサイズ
 8: 8x8ドット(標準状態)
16: 16x16ドット(通常の縦横2倍表示)
◇フォント種別
 8: フォントサイズ8x8ドットの等倍
16: フォントサイズ8x8ドットの2倍角、16x16ドットの等倍
32: フォントサイズ16x16ドットの2倍角
◎例
WIDTH 16,16
■WIDTH OUT SIZE,TYPE
コンソールの文字サイズ取得
◎引数
なし
◎戻り
◇SIZE
現在設定されているフォントのサイズ(8/16)
◇TYPE
現在設定されているフォントの種別(8/16/32)
◎例
WIDTH OUT FS,FT
▼ファイルへの読み書き、一覧取得などの命令
↑目次に戻る
■FILES ["ファイル種別"]
ファイル一覧をコンソール上に表示
◎引数
◇ファイル種別
特定のファイル種別のみ表示させたい場合に以下を指定
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
◎例
FILES
■FILES ["ファイル種別",] 文字列配列
ファイル一覧を配列に取得
◎引数
◇ファイル種別
特定のファイル種別のみ表示させたい場合に以下を指定
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
◇文字列配列
ファイル一覧のファイル名が格納される文字列配列
・1次元配列の場合取得したファイル数に応じて自動拡張
◎例
DIM NAMETBL$[100]
FILES NAMETBL$
■LOAD ["リソース名:"]"ファイル名" [,ダイアログ表示フラグ]
◇ファイルの読み込み
・確認用のダイアログが表示される
・実行中のプログラムSLOTにプログラムはロードできない
◎引数
◇リソース名:
省略時: カレントプログラムSLOT
"PRG0:"~"PRG3:" プログラムSLOT (PRG=PRG0)
"GRP0:"~"GRP3:" グラフィックページ
"GRPF:" フォント用の画像ページ
◇ファイル名
読み込むファイル名
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎例
LOAD "PROGNAME"
LOAD "GRP0:GRPDATA"
■LOAD ["GRPリソース名:"]"ファイル名" [,OX,OY][,ダイアログ表示フラグ]
◇画像ファイルの読み込み
・確認用のダイアログが表示される
・オフセット指定時はみ出した部分は無視されます
◎引数
◇GRPリソース名:
"GRP0:"~"GRP3:" グラフィックページ
"GRPF:" フォント用の画像ページ
◇ファイル名
読み込むファイル名
◇OX,OY
画像上のオフセット(各0~511)
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎例
LOAD "GRP0:GRPDATA",0,64
■LOAD "TXT:ファイル名" [,ダイアログ表示フラグ] OUT TX$
テキストファイルを文字列変数に読み込む
◎引数
◇ファイル名
読み込むテキストファイル名(先頭に"TXT:"を付ける)
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎戻り
◇TX$
読み込んだテキストファイルが格納される文字列変数
◎例
LOAD "TXT:MEMOFILE" OUT TX$
■文字列変数 = LOAD("TXT:ファイル名" [,ダイアログ表示フラグ])
テキストファイルを文字列変数に読み込む
◎引数
◇ファイル名
読み込むテキストファイル名(先頭に"TXT:"を付ける)
◇文字列変数
読み込んだテキストファイルが格納される文字列変数
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎例
TX$=LOAD("TXT:MEMOFILE")
■LOAD "DAT:ファイル名", 数値配列 [,ダイアログ表示フラグ]
バイナリファイルを数値配列に読み込む
◎引数
◇ファイル名
読み込むバイナリファイル名(先頭に"DAT:"を付ける)
◇数値配列
読み込んだバイナリファイルが格納される数値変数
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎例
DIM MARRAY[100]
LOAD "DAT:MDATA", MARRAY
■SAVE ["リソース名:"]"ファイル名"
◇ファイルの保存
・実行時、確認のダイアログが表示される
・SAVE用の確認ダイアログは非表示にできません
◎引数
◇リソース名:
省略時: カレントプログラムSLOT
"PRG0:"~"PRG3:" プログラムSLOT (PRG=PRG0)
"GRP0:"~"GRP3:" グラフィックページ
"GRPF:" フォント用の画像ページ
◇ファイル名
保存するファイルに付ける名前
◎例
SAVE "PRG0:TEST"
■SAVE "TXT:ファイル名", 文字列変数
文字列変数をテキストファイルに保存
◎引数
◇ファイル名
保存するファイルに付ける名前(先頭に"TXT:"を付ける)
◇文字列変数
保存するテキストデータの格納された文字列変数(UTF-8)
◎例
SAVE "TXT:MEMOFILE",TX$
■SAVE "DAT:ファイル名", 数値配列
数値配列をバイナリファイルに保存
◎引数
◇ファイル名
保存するファイルに付ける名前(先頭に"DAT:"を付ける)
◇数値配列
保存するデータの格納された数値配列
◎例
SAVE "DAT:TEST",MARRAY
■RENAME ["ファイル種別:"]"ファイル名", ["ファイル種別:"]"新しい名前"
◇ファイル名の変更
実行時、確認ダイアログを表示
◎引数
◇ファイル種別:
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
◇ファイル名
名前を変更するファイルのファイル名
◇新しい名前
新しいファイル名
◎例
RENAME "SAMPLE","NEWNAME"
■DELETE ["ファイル種別:"]"ファイル名"
◇ファイルの消去
実行時、確認ダイアログを表示
◎引数
◇ファイル種別:
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
◎例
DELETE "SAMPLE"
■EXEC ["リソース名:"]"ファイル名"
◇プログラムのLOADと実行
・EXECで実行したプログラムから元のプログラムに戻れない
・他のSLOTでEXECしたプログラムのENDで戻ることができる
・DIRECTモードでは実行できない
◎引数
◇リソース名:
"PRG0:"~"PRG3:" 読み込み先プログラムSLOT
◇ファイル名
読み込むプログラムのファイル名
◎例
EXEC "SAMPLE"
EXEC "PRG0:SBGED"
■EXEC プログラムSLOT
◇他のSLOTのプログラムを実行
・EXECで実行したプログラムから元のプログラムに戻れない
・他のSLOTでEXECしたプログラムのENDで戻ることができる
・DIRECTモードでは実行できない
◎引数
◇プログラムSLOT
0~3: 実行するプログラムSLOT番号
◎例
EXEC 2
■USE プログラムSLOT
指定プログラムSLOTのプログラムを実行可能にする
◎引数
◇プログラムSLOT
0~3: プログラムSLOT
◎例
USE 2
■変数 = CHKFILE(["ファイル種別:"]"ファイル名")
指定したファイルが存在するかどうかチェック
◎引数
◇ファイル種別
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
◇ファイル名
調べるファイル名
◎戻り
TRUE=存在、FALSE=存在しない
◎例
A=CHKFILE("SBATTACK")
■FCOPY "元ファイル名", "新しい名前"
◇ファイルのコピー
実行時、確認ダイアログを表示
◎引数
◇元ファイル名
元になるファイルの名前(リソースタイプ:フォルダ名/ファイル名)
◇新しい名前
新しいファイル名(リソースタイプ:フォルダ名/ファイル名)
◎例
FCOPY "SUB/TEST13.PRG","../BACKUP/"
■MKDIR "フォルダ名"
◇フォルダの作成
実行時、確認ダイアログを表示
◎引数
◇フォルダ名
フォルダの名前(フォルダ名/サブフォルダ名/)
◎例
MKDIR "SUB"
■RMDIR "フォルダ名"
◇フォルダの削除
実行時、確認ダイアログを表示
※フォルダ内に含まれるすべてのファイルも消去されます
◎引数
◇フォルダ名
削除対象のフォルダ名(フォルダ名/サブフォルダ名/)
◎例
RMDIR "SUB"
▼画面の表示モードなどに関する命令
↑目次に戻る
■XSCREEN 水平解像度, 垂直解像度, アスペクト比
指定された解像度とアスペクト比で画面解像度を切り替える。
出力される映像のサイズよりも画面サイズが小さい場合余白にはBACKCOLORが表示されます。
◎引数
◇水平解像度
128~1280(8の倍数単位)
◇垂直解像度
128~720(8の倍数単位)
◇アスペクト比
画面の水平解像度÷垂直解像度の値
◎例
XSCREEN 640,480,4/3
■VISIBLE コンソール,グラフィック,SPRITE
画面表示要素のON/OFF切り替え
◎引数
◇コンソール
0:非表示(#OFF)、1:表示(#ON)
◇グラフィック
0:非表示(#OFF)、1:表示(#ON)
◇SPRITE
0:非表示(#OFF)、1:表示(#ON)
◎例
VISIBLE 1,1,1,1
■BACKCOLOR 背景色コード
背景色を指定
◎引数
◇背景色コード
・通常はRGB関数で指定 例)BACKCOLOR RGB(64,128,128)
・直接数値を指定するときは、RGB各8ビットの色コード
◎例
BACKCOLOR RGB(64,128,128)
■変数=BACKCOLOR()
現在の背景色を取得
◎戻り
現在設定されている背景色の色コード
◎例
C=BACKCOLOR()
■ACLS [ GR, SP, FN ]
◇描画設定をBASIC起動時の状態に戻す
・表示関係の設定を初期状態に戻します
◎引数
◇GR
GCLSとSPRITE画像初期化(TRUE=しない)
◇SP
SPDEF初期化(TRUE=しない)
◇FN
フォント初期化(TRUE=しない)
◎例
ACLS
END
■FADE フェード色 [,時間]
◇画面フェーダの色を設定
・フェーダは常に最前面に描画
・画面全体をフェード色(透明色込み)で塗りつぶす
◇フェード色
画面を覆う色(RGB(0,0,0,0)を設定すると無効となる)
◇フェード時間
指定時間(1/60秒単位)で指定フェード色まで変化
◎例
FADE RGB(32,64,64,64),60
■数値=FADE()
現在の画面フェーダの色を取得
◇戻り
ARGB各8ビットの色コード
◎例
C=FADE()
■変数=FADECHK()
フェードアニメーションの状態取得
◎戻り
TRUE=アニメーション中、FALSE=停止
◎例
R=FADECHK()
▼グラフィック画面への描画命令
↑目次に戻る
■GPAGE 表示ページ, 操作ページ
グラフィック表示ページと操作ページの指定
◎引数
◇表示ページ
0~3: GRP0~GRP3
◇操作ページ
0~3: GRP0~GRP3
※初期状態はGRP3にSPRITEを割り当て
◎例
GPAGE 0,0
■GPAGE OUT VP,WP
現在設定されているグラフィックページ情報取得
◎引数
なし
◎戻り
◇VP
表示用のページ番号(0~3)
◇WP
操作用のページ番号(0~3)
◎例
GPAGE OUT WP,GP
■GCOLOR 色コード
グラフィック描画色の指定
◎引数
◇色コード
・通常はRGB関数で指定 例)GCOLOR RGB(64,255,48)
・直接数値を指定するときはARGB各8ビットの色コード
・A(255:不透明、それ以外:透明)+RGB各8ビット(0~255)
◎例
GCOLOR RGB(255,0,0)
■GCOLOR OUT C32
グラフィック描画色の指定
◎引数
なし
◎戻り
◇C32
ARGB各8ビットの色コード
◎例
GCOLOR OUT C32
■変数 = RGB( [透明度,] 赤要素,緑要素,青要素 )
◇8ビットRGB値をもとに色コードを得る
・黒 RGB(0,0,0)
・白 RGB(255,255,255)
・薄いグレー RGB(224,224,224)
・グレー RGB(128,128,128)
・濃いグレー RGB(64,64,64)
・赤 RGB(255,0,0)
・ピンク RGB(255,96,208)
・紫 RGB(160,32,255)
・水色 RGB(80,208,255)
・青 RGB(0,32,255)
・黄緑 RGB(96,255,128)
・緑 RGB(0,192,0)
・黄色 RGB(255,224,32)
・オレンジ RGB(255,160,16)
・茶色 RGB(160,128,96)
・薄紅色 RGB(255,208,160)
◎引数
◇透明度
・透明度情報(255:不透明、それ以外:透明)
・SPCOLORでは0~255で透明度を指定可能
◇赤・緑・青要素
各要素 8ビット諧調(各0~255)
◎戻り
変数=色コード(ARGB各8ビット) ※GCOLORを参照
◎例
GPSET 0,0, RGB(255,255,0) 'YELLOW
■RGBREAD 色コード OUT [A,] R,G,B
色コードからRGBの各成分を得る
◎引数
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎戻り
◇A
透明度情報を受け取る変数(不透明:255~0:透明)
◇R,G,B
8ビット色情報を受け取る変数(各0~255)
◎例
RGBREAD C OUT R,G,B
■GCLIP クリップモード [,始点X,始点Y,終点X, 終点Y]
◇グラフィック画面のクリッピング領域を指定
・表示モードで範囲省略時、画面全体をクリッピング
・書き込みモードで範囲省略時、グラフィックページ全体
◎引数
◇クリップモード
0:表示クリッピング、1:書き込みクリッピング
◇始点X,Y
クリップ領域の始点座標
◇終点X,Y
クリップ領域の終点座標
◎例
GCLIP 0,100,100,200,200
■GPRIO Z座標
◇グラフィック画面の表示順位変更
◎引数
◇Z座標
奥行方向の座標(奥:1024<液晶面:0<手前:-256)
◎例
GPRIO -100
■GCLS [ 色コード ]
◇グラフィック画面の消去
・透明色で画面全体を塗りつぶす命令
・色コードを指定した塗りつぶしも可能
◎引数
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GCLS RGB(32,32,32)
■変数 = GSPOIT( 座標X,座標Y )
◇グラフィック画面の指定座標の色を取得
内部で色変換を経由するため描画時と同じ数値が
返らない可能性があります
◎引数
◇座標X,Y
色を取得する座標(X:0~1279、Y:0~1023)
◎戻り
ARGB各8ビットの色コード ※GCOLORを参照
◎例
C=GSPOIT(100,100)
■GPSET 座標X,座標Y [,色コード ]
グラフィック画面に点を打つ
◎引数
◇座標X,Y
点を打つ座標
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GPSET 100,50
■GLINE 始点X,始点Y, 終点X,終点Y [,色コード ]
グラフィック画面に直線を引く
◎引数
◇始点X,Y
始点座標(X:0~1279、Y:0~1023)
◇終点X,Y
終点座標(X:0~1279、Y:0~1023)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GLINE 0,0,399,239,RGB(0,255,255)
■GCIRCLE 中心点X,中心点Y, 半径 [,色コード ]
グラフィック画面に円を描く
◎引数
◇中心点X,Y
中心点座標(X:0~1279、Y:0~1023)
◇半径
円の半径(ドット) 1~
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GCIRCLE 200,120,30
■GCIRCLE 中心点X,中心点Y, 半径, 開始角, 終了角 [,フラグ [,色コード]]
グラフィック画面に円弧を描く
◎引数
◇中心点X,Y
中心点座標(X:0~1279、Y:0~1023)
◇半径
円の半径(ドット) 1~
◇開始角,終了角
円弧の角度0~360
◇フラグ
描画方法(0=円弧,1=扇形)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GCIRCLE 200,120,30, 0,45, 1
■GBOX 始点X,始点Y, 終点X,終点Y [,色コード]
グラフィック画面に四角形を描く
◎引数
◇始点X,Y
始点座標(X:0~1279、Y:0~1023)
◇終点X,Y
終点座標(X:0~1279、Y:0~1023)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GBOX 0,0,399,239
■GFILL 始点X,始点Y, 終点X,終点Y [,色コード]
グラフィック画面に四角形を描いて塗りつぶす
◎引数
◇始点X,Y
始点座標(X:0~1279、Y:0~1023)
◇終点X,Y
終点座標(X:0~1279、Y:0~1023)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GFILL 0,0,399,239
■GPAINT 開始点X, 開始点Y [ ,塗りつぶし色 [, 境界色 ] ]
◇グラフィック画面を塗りつぶす
境界色省略時、開始点座標にある色の範囲を塗る
◎引数
◇開始点X,Y
塗りつぶしを開始する座標(X:0~1279、Y:0~1023)
◇塗りつぶし色
ARGB各8ビットの色コード ※GCOLORを参照
◇境界色
指定方法は塗りつぶし色と同じ
◎例
GPAINT 200,120,RGB(255,0,0),RGB(0,0,0)
■GCOPY [転送元ページ,] 始点X,始点Y, 終点X,終点Y, 転送先X,転送先Y, コピーモード
他のグラフィックページから画像をコピー
◎引数
◇転送元ページ
0~3(GRP0~GRP3)、-1(GRPF) 省略時:現在の描画ページ
◇始点X,Y 終点X,Y
コピー元範囲の始点座標と終点座標(X:0~1279、Y:0~1023)
◇転送先X,Y
コピー先範囲の始点座標(X:0~1279、Y:0~1023)
◇コピーモード
TRUE=透明色をコピー、FALSE=透明色をコピーしない
◎例
GCOPY 0, 0,0,100,100, 200,100 ,1
■GSAVE [転送元ページ,] [X,Y,幅,高さ,] 転送先配列
画像を配列へコピー(画面全体)
◎引数
◇転送元ページ
0~3(GRP0~GRP3)、-1(GRPF) 省略時:現在の描画ページ
◇X,Y,幅,高さ
コピー元範囲の始点X,Y座標,幅,高さ(ドット)
省略時:現在の描画領域
◇転送先配列
画像を格納する配列変数
※配列の要素が不足する場合、1次元配列に限り自動追加される
◎例
DIM WORK[0]
GSAVE 0,0,0,512,512,WORK
■GLOAD [X,Y,幅,高さ,] 画像配列, コピーモード
画像データを配列からグラフィック画面にコピー
◎引数
◇X,Y,幅,高さ
コピー先範囲の始点X,Y座標,幅,高さ(ドット)
◇画像配列
GSAVEによって画像データが格納された数値配列
◇コピーモード
TRUE=透明色をコピー、FALSE=透明色をコピーしない
◎例
GLOAD 0,0,512,512, WORK, 0
■GLOAD [X,Y,幅,高さ,] 画像配列,パレット配列,コピーモード
◇画像データを配列からグラフィック画面にコピー
パレットを使ったインデックスカラー扱い
◎引数
◇X,Y,幅,高さ
コピー先範囲の始点X,Y座標,幅,高さ(ドット)
◇画像配列
GSAVEによって画像データが格納された数値配列
◇パレット配列
パレットデータが格納された数値配列
◇コピーモード
TRUE=透明色をコピー、FALSE=透明色をコピーしない
◎例
GLOAD 0,0,512,512, WORK, PALETTE, 0
■GTRI X1,Y1, X2,Y2, X3,Y3 [,色コード]
グラフィック画面に三角形を描いて塗りつぶす
◎引数
◇X1,Y1
頂点1(X:0~1279、Y:0~1023)
◇X2,Y2
頂点2(X:0~1279、Y:0~1023)
◇X3,Y3
頂点3(X:0~1279、Y:0~1023)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GTRI 200,10,300,200,100,200
■GPUTCHR X,Y, "文字列" [,スケールX,スケールY][,色コード]
グラフィック画面に文字を描く
◎引数
◇X,Y
表示位置(X:0~1279、Y:0~1023)
◇文字列
表示する文字列
◇スケールX,Y
表示倍率(等倍=1.0)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GPUTCHR 10,10,"あいう"
■GPUTCHR X,Y, 文字コード [,スケールX,スケールY][,色コード]
グラフィック画面に文字を描く
◎引数
◇X,Y
表示位置(X:0~1279、Y:0~1023)
◇文字コード
表示する文字コード
◇スケールX,Y
表示倍率(等倍=1.0)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GPUTCHR 10,10,ASC("A")
■GOFS X,Y
グラフィック画面の座標変更(移動)
◎引数
◇X,Y
グラフィック画面の表示オフセット
◎例
GOFS 50,80
■GOFS OUT X,Y
グラフィック画面のオフセット値取得
◎戻り
◇X,Y
現在設定されているグラフィック画面の表示オフセット
◎例
GOFS OUT GX,GY
▼スプライトの制御命令
↑目次に戻る
■SPPAGE グラフィックページ
SPRITEに割り当てるグラフィックページの設定
◎引数
◇グラフィックページ
0~3(GRP0~GRP3) 初期状態のSPRITE用ページは3(GRP3)
◎例
SPPAGE 3
■変数=SPPAGE()
SPRITEに割り当てられたグラフィックページの取得
◎戻り
グラフィックページ番号(0~3)
◎例
P=SPPAGE()
■SPCLIP [始点X,始点Y,終点X, 終点Y]
◇SPRITEのクリッピング領域を指定
・範囲省略時画面全体
・始点と終点に指定できる座標の範囲はXSCREEENの解像度に依存します
◎引数
◇始点X,Y
クリップ領域の始点座標
◇終点X,Y
クリップ領域の終点座標
◎例
SPCLIP 100,100,200,200
■SPDEF
SPRITEキャラクタ定義用テンプレートを初期状態に戻す
◎引数
なし
◎SPDEF共通の補足
・SPRITEの定義用テンプレートは上下画面共通要素
・SPSETの定義を簡略化するために用意されています
◎例
SPDEF
■SPDEF 定義番号, U,V [,W,H [,原点X,原点Y]] [,アトリビュート]
SPRITEのキャラクタ定義用テンプレートを作成
◎引数
◇定義番号
テンプレートの定義番号: 0~4095
◇U,V
定義する元画像の座標(U:0~1279、V:0~1023)
◇W,H
定義する元画像サイズ 省略時16,16
※U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
◇原点X,Y
SPRITEの座標基準点 省略時0,0
◇アトリビュート
|b00| 表示(0=OFF、1=ON) #SPSHOW
|b01| ↑90度単位の回転(b01とb02の2ビットで指定)
|b02| ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03| 横反転(0=OFF、1=ON)、#SPREVH
|b04| 縦反転(0=OFF、1=ON)、#SPREVV
|b05| 加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎例
SPDEF 0,192,352,32,32,16,16,1
■SPDEF 数値配列 [,定義番号オフセット [,Uオフセット ,Vオフセット]]
SPRITEのキャラクタ定義用テンプレートを配列から一括作成
◎引数
◇数値配列
SPRITEのテンプレートデータが格納された数値配列
・1個分の要素はU,V,W,H,原点X,原点Y,アトリビュートの7つ
・要素数は7の倍数である必要がある
・0から順に要素数/7までのSPRITEテンプレートが定義される
◇定義番号オフセット
定義開始番号を指定:0~4095
◇U,Vオフセット
画像の定義位置調整用として加算されます(各0~511)
◎例
SPDEF SRCDATA
SPDEF SRCDATA 256, 0,256
■SPDEF "@ラベル文字列" [,定義番号オフセット [,Uオフセット ,Vオフセット]]
SPRITEのキャラクタ定義用テンプレートをDATA列から一括作成
◎引数
◇@ラベル文字列
SPRITEのテンプレートデータが列挙されたDATA命令のラベル
・@ラベル名は""でくくるか、文字列変数で指定する
・先頭データは定義するSPRITE数とし、
 続いて各SPRITEのデータを列挙(1個につき7データ)
・1個分のデータはU,V,W,H,原点X,原点Y,アトリビュートの7つ
◇定義番号オフセット
定義開始番号を指定:0~4095
◇U,Vオフセット
画像の定義位置調整用として加算されます(各0~511)
◎例
SPDEF "@SRCDATA"
SPDEF "@SRCDATA", 256, 0,256
■SPDEF 定義番号 OUT U,V [,W,H [,HX,HY]] [,A]
SPRITEのキャラクタ定義テンプレートの情報を得る
◎引数
◇定義番号
テンプレートの定義番号: 0~4095
◎戻り
◇U,V
画像の座標を受け取る変数
◇W,H
画像サイズを受け取る変数
◇HX,HY
SPRITEの座標基準点を受け取る変数
◇A
アトリビュートを受け取る変数
◎例
SPDEF 2 OUT U,V,ATR
■SPDEF 定義番号,元になる定義番号,[U],[V],[W],[H],[原点X],[原点Y],[アトリビュート]
◇SPRITEキャラクタ定義用テンプレートをコピー
・コピー不要な要素は省略可能(区切りの','カンマは必要)
・引数部分はコピーした上で調整する場合に利用
◎引数
◇定義番号
テンプレートの定義番号:0~4095
◇ソース定義番号
コピー元になる定義番号:0~4095
◇U,V
定義する元画像の座標(U:0~1279、V:0~1023)
◇W,H
定義する元画像サイズ 省略時16,16
※U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
◇原点X,Y
SPRITEの座標基準点 省略時0,0
◇アトリビュート
|b00| 表示(0=OFF、1=ON) #SPSHOW
|b01| ↑90度単位の回転(b01とb02の2ビットで指定)
|b02| ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03| 横反転(0=OFF、1=ON)、#SPREVH
|b04| 縦反転(0=OFF、1=ON)、#SPREVV
|b05| 加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎例
SPDEF 0,255,192,352,32,32,16,16,1
SPDEF 1,255,,,32,32,,,
■SPSET 管理番号,定義番号
SPRITE作成(定義テンプレートを利用)
◎SPSET共通要素
・SPSETによりSPRITEは利用可能となる
・SPSET実行により回転等の情報は全て初期化
・SPVARの値はすべて0になる
・SPHIT系衝突判定を使う時はSPSET後にSPCOLを呼びます
◎引数
◇管理番号
作成するSPRITEの番号: 0~511
◇定義番号
SPDEFで定義したテンプレートの定義番号: 0~4095
◎例
SPSET 1,500
■SPSET 管理番号 ,U,V [,W,H] ,アトリビュート
◇SPRITE作成(直接画像情報等を指定)
SPDEFの値を使わずに独自に設定する場合に利用
◎引数
◇管理番号
作成するSPRITEの番号: 0~511
◇U,V
定義する元画像の座標(U:0~1279、V:0~1023)
◇W,H
定義する元画像サイズ 省略時16,16
※U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
◇アトリビュート
|b00| 表示(0=OFF、1=ON) #SPSHOW
|b01| ↑90度単位の回転(b01とb02の2ビットで指定)
|b02| ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03| 横反転(0=OFF、1=ON)、#SPREVH
|b04| 縦反転(0=OFF、1=ON)、#SPREVV
|b05| 加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎例
SPSET 54,0,0,32,32,1
■SPSET 定義番号 OUT IX
◇SPRITEに空きを探して作成(定義テンプレート利用)
SPRITE全体から空きを探す
◎引数
◇定義番号
SPDEFで定義したテンプレートの定義番号: 0~4095
◎戻り
◇IX  
生成された番号を受け取る変数: 0~511(-1=空きなし)
◎例
SPSET 500 OUT IX
■SPSET U,V,W,H,アトリビュート OUT IX
◇SPRITEに空きを探して作成(直接画像情報等を指定)
SPRITE全体から空きを探す
◎引数
◇U,V
定義する元画像の座標(U:0~1279、V:0~1023)
◇W,H
定義する元画像サイズ 省略時16,16
※U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
◇アトリビュート
|b00| 表示(0=OFF、1=ON) #SPSHOW
|b01| ↑90度単位の回転(b01とb02の2ビットで指定)
|b02| ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03| 横反転(0=OFF、1=ON)、#SPREVH
|b04| 縦反転(0=OFF、1=ON)、#SPREVV
|b05| 加算合成(0=OFF、1=ON)、#SPADD
◎戻り
◇IX  
生成された番号を受け取る変数: 0~511(-1=空きなし)
◎例
SPSET 0,0,32,32,1 OUT IX
■SPSET 上限,下限, 定義番号 OUT IX
◇範囲内でSPRITEに空きを探して作成(定義テンプレート利用)
指定範囲内で空きを探す
◎引数
◇上限,下限  
空きを探す範囲(0~511)
◇定義番号
SPDEFで定義したテンプレートの定義番号: 0~4095
◎戻り
◇IX  
生成された番号を受け取る変数: 0~511(-1=空きなし)
◎例
SPSET 100,120, 500 OUT IX
■SPSET 上限,下限, U,V,W,H,アトリビュート OUT IX
◇範囲内でSPRITEに空きを探して作成(直接画像情報等を指定)
指定範囲内で空きを探す
◎引数
◇上限,下限  
空きを探す範囲(0~511)
◇U,V
定義する元画像の座標(U:0~1279、V:0~1023)
◇W,H
定義する元画像サイズ 省略時16,16
※U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
◇アトリビュート
|b00| 表示(0=OFF、1=ON) #SPSHOW
|b01| ↑90度単位の回転(b01とb02の2ビットで指定)
|b02| ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03| 横反転(0=OFF、1=ON)、#SPREVH
|b04| 縦反転(0=OFF、1=ON)、#SPREVV
|b05| 加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎戻り
◇IX  
生成された番号を受け取る変数: 0~511(-1=空きなし)
◎例
SPSET 100,120, 0,0,32,32,1 OUT IX
■SPCLR 管理番号
◇指定SPRITEの使用をやめてメモリーを解放
利用後に開放しないとSPSET用の空きがなくなる
◎引数
◇管理番号
使用をやめるSPRITEの管理番号: 0~511
◎例
SPCLR 56
■SPSHOW 管理番号
◇SPRITEの表示を開始
SPSET前に使うとエラー
◎引数
◇管理番号
表示するSPRITEの管理番号: 0~511
◎例
SPSHOW 43
■SPHIDE 管理番号
◇SPRITEの表示を隠す
・表示を隠すだけでありSPRITEは存在
・SPSET前に使うとエラー
◎引数
◇管理番号
表示を隠すSPRITEの管理番号: 0~511
◎例
SPHIDE 43
■SPHOME 管理番号,位置X,位置Y
◇SPRITEの座標基準点(ホーム位置)指定
・SPOFS命令の位置基準点
・回転やスケーリングの中心点
・衝突判定の中心座標
・SPSET前に使うとエラー
◎引数
◇管理番号
基準点を設定するSPRITEの管理番号: 0~511
◇位置X,Y
SPRITEの左上を原点(0,0)とした相対座標
◎例
SPHOME 34,16,16
■SPHOME 管理番号 OUT HX,HY
◇SPRITEの座標基準点(ホーム位置)取得
SPSET前に使うとエラー
◎引数
◇管理番号
SPRITEの管理番号: 0~511
◎戻り
◇HX,HY
基準点の座標を受け取る変数
◎例
SPHOME 10 OUT HX,HY
■SPOFS 管理番号,[X],[Y][,Z]
◇SPRITE座標の変更(移動)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇X,Y
SPRITEを表示する画面座標
◇Z
奥行方向の座標(奥:1024<液晶面:0<手前:-256)
◎例
SPOFS 23,50,80
SPOFS 23,,,1000
SPOFS 23,150,180,0
■SPOFS 管理番号 OUT X,Y[,Z]
◇SPRITEの座標を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇X,Y
座標を受け取る変数
◇Z
奥行情報を受け取る変数
◎例
SPOFS 12 OUT X,Y,Z
■SPROT 管理番号,角度
◇SPRITEの回転角度指定
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇角度
回転角度: 0~360(時計回り)
◎例
SPROT 23,45
■SPROT 管理番号 OUT DR
◇SPRITEの回転角度を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇DR
角度を受け取る変数
◎例
SPROT 23 OUT DR
■変数=SPROT(管理番号)
◇SPRITEの回転角度を得る(関数タイプ)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
現在の角度(0~360)
◎例
A=SPROT(23)
■SPSCALE 管理番号, 倍率X, 倍率Y
◇SPRITEのスケール(表示倍率)の変更
・スケールを考慮した当り判定は先にSPCOLを実行
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇倍率X,Y
0.5(50%)~1.0(100%)~2.0(200%)~
◎例
SPSCALE 56, 0.75, 0.75
■SPSCALE 管理番号 OUT SX,SY
◇SPRITEの表示倍率を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇SX,SY
倍率を受け取る変数
◎例
SPSCALE 45 OUT SX,SY
■SPCOLOR 管理番号, 色コード
◇SPRITEの表示色を設定
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇色コード
ARGB=8888形式の32ビット色コード
・Aの値を小さくすると透明度が上がる
・実際の表示色は色コードに元のドット色を乗算した値
◎例
SPCOLOR 1,RGB(16, 255,0,0) 'A=16,R=255,G=0,B=0
■SPCOLOR 管理番号 OUT C32
◇SPRITEの表示色を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇C32
現在の色コードが返る変数(32ビットARGB)
◎例
SPCOLOR 1 OUT C
■SPCHR 管理番号, 定義番号
◇SPRITEのキャラクタ定義を変更(テンプレート指定)
SPSET前に使うとエラー
◎引数
◇管理番号
定義を変更するSPRITEの管理番号: 0~511
◇定義番号
SPDEF命令で登録したテンプレートの番号: 0~4095
◎例
SPCHR 0,500
■SPCHR 管理番号,[U],[V],[W],[H],[アトリビュート]
◇SPRITEのキャラクタ定義を変更(直接定義)
・管理番号以外の引数は省略可能
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇U,V
定義する元画像の座標(U:0~1279、V:0~1023)
◇W,H
定義する元画像サイズ 省略時16,16
※U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
◇アトリビュート
|b00| 表示(0=OFF、1=ON) #SPSHOW
|b01| ↑90度単位の回転(b01とb02の2ビットで指定)
|b02| ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03| 横反転(0=OFF、1=ON)、#SPREVH
|b04| 縦反転(0=OFF、1=ON)、#SPREVV
|b05| 加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎例
SPCHR 5,64,64,16,16,1
SPCHR 6,,,32,32,1 'UV skip
■SPCHR 管理番号 OUT U,V [,W,H [,A] ]
◇SPRITEのキャラクタ定義情報を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇U,V
元画像の座標を格納する変数
◇W,H
元画像のサイズを格納する変数
◇A
アトリビュートを格納する変数
◎例
SPCHR 5 OUT U,V,W,H,ATR
■SPCHR 管理番号 OUT DEFNO
◇SPRITEのキャラクタ定義番号を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇DEFNO
定義番号を受け取る変数
◎例
SPCHR 5 OUT DEFNO
■SPLINK 管理番号, リンク先管理番号
◇SPRITEを別のSPRITEにリンク
・リンクは座標のみ(回転角度や倍率情報は対象外)
・リンク先(親)指定は自分よりも小さい管理番号のみ
・子の表示座標は、親を基準とした相対座標となる
・この座標系は画面左上が原点とはならない
・リンクの階層に制限はない
・SPSET前に使うとエラー
◎引数
◇管理番号
リンク元(子)のSPRITEの管理番号: 0~511
◇リンク先管理番号
リンク先(親)のSPRITEの管理番号: 0~511
※リンク元より小さい管理番号以外エラー
◎例
SPLINK 15,4
■変数=SPLINK( 管理番号 )
指定された管理番号SPRITEのリンク先番号を得る
・SPSET前に使うとエラー
◎引数
◇管理番号
リンク元(子)のSPRITEの管理番号: 0~511
◎戻り
リンク先の管理番号:0~511(-1の時リンク無し)
◎例
V=SPLINK()
■SPUNLINK 管理番号
◇SPRITEのリンクを解除
SPSET前に使うとエラー
◎引数
◇管理番号
リンクを解除するSPRITEの管理番号: 0~511
◎例
SPUNLINK 15
■SPANIM 管理番号,アニメ対象,データ配列 [,ループ]
◇SPRITEによるアニメ表示(配列で指定)
SPSET前に使うとエラー
◎SPRITEアニメ共通仕様
・アニメは値を設定して指定時間分待つという動作
・アニメ開始はSPANIMを実行した次フレームから
・対象要素ごとに最大32個のデータを受け付ける
・時間にマイナス値を指定すると直前の値から線形補間を行う
◎引数
◇管理番号
アニメーションを設定するSPRITEの管理番号: 0~511
◇アニメ対象
変化させる要素を管理する数値または文字列
・0または"XY": XY座標
・1または "Z": Z座標
・2または"UV": UV座標(定義元画像座標)
・3または "I": 定義番号
・4または "R": 回転角度
・5または "S": 倍率XY
・6または "C": 表示色
・7または "V": 変数(SPRITE内部変数7の値)
対象数値に8を加えると実行時からの相対指定
文字列の末尾に"+"を付けた場合も相対指定(例 "XY+")
◇データ配列
アニメデータが格納された1次元数値配列
◇ループ
ループ回数: (1~) 0で無限ループ
◎データ配列
アニメデータは数値配列に次の順で用意(最大32個まで)
時間1, 項目1,[項目2,] 時間2,項目1,[項目2,]…
◎例
DIM PANIM[ 6 ]
PANIM[0] = -60 'frame(-60=smooth)
PANIM[1] = 200 'offset X,Y
PANIM[2] = 100
PANIM[3] = -30 'frame
PANIM[4] = 50 'offset
PANIM[5] = 20
SPSET 0,0
SPANIM 0,"XY",PANIM
■SPANIM 管理番号,アニメ対象,"@ラベル文字列" [,ループ]
◇SPRITEによるアニメ表示(DATA命令で指定)
SPSET前に使うとエラー
◎引数
◇管理番号
アニメーションを設定するSPRITEの管理番号: 0~511
◇アニメ対象
変化させる要素を管理する数値または文字列
・0または"XY": XY座標
・1または "Z": Z座標
・2または"UV": UV座標(定義元画像座標)
・3または "I": 定義番号
・4または "R": 回転角度
・5または "S": 倍率XY
・6または "C": 表示色
・7または "V": 変数(SPRITE内部変数7の値)
対象数値に8を加えると実行時からの相対指定
文字列の末尾に"+"を付けた場合も相対指定(例 "XY+")
◇@ラベル文字列
・アニメデータが格納されたDATA命令の先頭ラベル
・@ラベル名を""でくくって文字列として指定(または文字変数)
◇ループ
ループ回数: (1~) 0で無限ループ
◎データ
アニメデータはDATA命令に次の順で用意
DATA キーフレーム数(最大32)
DATA 時間1,項目1[,項目2]
DATA 時間2,項目1[,項目2]
 :
◎例
@MOVDATA
DATA 2 'counter
DATA -60,200,100 'frame,offset
DATA -30,50,20 'frame,offset
SPSET 0,0
SPANIM 0,XY,@MOVDATA
■SPANIM 管理番号,アニメ対象,時間1,項目1[,項目2] [,時間2,項目1[,項目2]]… [,ループ]
◇SPRITEによるアニメ表示(直接引数として指定)
SPSET前に使うとエラー
◎引数
◇管理番号
アニメーションを設定するSPRITEの管理番号: 0~511
◇アニメ対象
変化させる要素を管理する数値または文字列
・0または"XY": XY座標
・1または "Z": Z座標
・2または"UV": UV座標(定義元画像座標)
・3または "I": 定義番号
・4または "R": 回転角度
・5または "S": 倍率XY
・6または "C": 表示色
・7または "V": 変数(SPRITE内部変数7の値)
対象数値に8を加えると実行時からの相対指定
文字列の末尾に"+"を付けた場合も相対指定(例 "XY+")
◇時間,項目
・アニメデータそのもの(必要な数分並べる、最大32個)
◇ループ
ループ回数: (1~) 0で無限ループ
◎例
SPSET 0,0
SPANIM 0,XY, -60,200,100, -30,50,20
■SPSTOP [管理番号]
◇SPRITEのアニメーションを停止
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
※管理番号を省略すると全SPRITEのアニメーションを停止
◎例
SPSTOP
■SPSTART [管理番号]
SPRITEのアニメーションを開始する
※SPSETの前に使うとエラーとなります
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
※管理番号を省略すると全SPRITEのアニメーションを開始
◎例
SPSTART
■変数=SPCHK( 管理番号 )
◇SPRITEのアニメーション状態を取得
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
|b00| XY座標(1)、#CHKXY
|b01| Z座標(2)、#CHKZ
|b02| UV座標(4)、#CHKUV
|b03| 定義番号(8)、#CHKI
|b04| 回転(16)、#CHKR
|b05| 倍率XY(32)、#CHKS
|b06| 表示色(64)、#CHKC
|b07| 変数(128)、#CHKV
ビットごとに対象割り当て(すべて0の時アニメ停止中)
◎例
ST=SPCHK(5)
'|b00|#CHKXY
'|b01|#CHKZ
'|b02|#CHKUV
'|b03|#CHKI
'|b04|#CHKR
'|b05|#CHKS
'|b06|#CHKC
'|b07|#CHKV
■SPVAR 管理番号,内部変数番号,数値
◇SPRITE用内部変数への書き込み
・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇内部変数番号
内部変数の番号: 0~7
◇数値
内部変数に登録する数値(0~
◎例
SPVAR 0,7,1
■変数=SPVAR( 管理番号,内部変数番号 )
◇SPRITE用内部変数の読み込み(関数型)
・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇内部変数番号
内部変数の番号: 0~7
◎戻り
SPVARで書き込んだ値
◎例
V=SPVAR(54,0)
■SPVAR 管理番号,内部変数番号 OUT V
◇SPRITE用内部変数の読み込み
・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇内部変数番号
内部変数の番号: 0~7
◎戻り
◇V
内部変数の値が戻る数値変数
◎例
SPVAR 54,0 OUT V
■SPCOL 管理番号 [,スケール対応]
◇SPRITE衝突判定情報の設定
・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇スケール対応
FALSE=無視(省略時=FALSE)
TRUE=SPSCALEに判定領域を同期
※SPCOL命令後に設定したSPSCALEから有効
◎例
SPCOL 3,TRUE
■SPCOL 管理番号,[スケール対応],マスク
◇SPRITE衝突判定情報の設定(マスク指定付)
・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇スケール対応
FALSE=無視(省略時=FALSE)
TRUE=SPSCALEに判定領域を同期
※SPCOL命令後に設定したSPSCALEから有効
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◎例
SPCOL 3,TRUE,31
SPCOL 3,,31
■SPCOL 管理番号,始点X,始点Y,幅,高さ,[スケール対応],マスク
◇SPRITE衝突判定情報の設定(範囲指定付)
・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇始点X,Y
・判定領域の始点座標: X,Y(-32768~32767)
・SPHOMEを原点(0,0)とした相対座標
◇幅,高さ
判定領域の幅と高さ: W,H(0~65535)
◇スケール対応
FALSE=無視(省略時=FALSE)
TRUE=SPSCALEに判定領域を同期
※SPCOL命令後に設定したSPSCALEから有効
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◎例
SPCOL 3,0,0,32,32,TRUE,255
SPCOL 3,0,0,32,32,,255
■SPCOL 管理番号 OUT スケール対応 [,マスク]
◇SPRITE衝突判定情報取得(スケール対応とマスク)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
◇スケール対応
スケール値を受け取る変数
◇マスク
マスク値を受け取る変数
◎例
SPCOL 3 OUT SC,MSK
■SPCOL 管理番号 OUT 始点X,始点Y,幅,高さ
◇SPRITE衝突判定情報取得(範囲)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
◇始点X,Y
判定領域の始点座標を受け取る変数
◇幅,高さ
判定領域の幅と高さを受け取る変数
◎例
SPCOL 3 OUT X,Y,W,H
■SPCOL 管理番号 OUT 始点X,始点Y,幅,高さ,スケール対応
◇SPRITE衝突判定情報の取得(範囲とスケール対応)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
◇始点X,Y
判定領域の始点座標を受け取る変数
◇幅,高さ
判定領域の幅と高さを受け取る変数
◇スケール対応
スケール値を受け取る変数
◎例
SPCOL 3 OUT X,Y,W,H,SC
■SPCOL 管理番号 OUT 始点X,始点Y,幅,高さ,スケール対応,マスク
◇SPRITE衝突判定情報の取得(すべて)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
◇始点X,Y
判定領域の始点座標を受け取る変数
◇幅,高さ
判定領域の幅と高さを受け取る変数
◇スケール対応
スケール値を受け取る変数
◇マスク
マスク値を受け取る変数
◎例
SPCOL 3 OUT X,Y,W,H,SC,MSK
■SPCOLVEC 管理番号 [,移動量X,移動量Y]
◇SPRITE衝突判定用移動速度の設定
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇移動量X,移動量Y
・省略時は次の要領で自動計算される
・SPANIMのXYを線形補完で実行中:前フレームからの移動距離
・それ以外の場合:0,0
◎例
SPCOLVEC 93
■変数 = SPHITSP( 管理番号 [,先頭ID,末尾ID] )
◇SPRITEの衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇管理番号
判定するSPRITEの管理番号: 0~511
◇先頭ID,末尾ID
判定するSPRITEの範囲(0~511)
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITSP(0)
■変数 = SPHITSP( 管理番号 ,相手管理番号 )
◇指定SPRITEとのSPRITE衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇管理番号
判定するSPRITEの管理番号: 0~511
◇相手管理番号
相手側のSPRITEの管理番号: 0~511
◎戻り
FALSE=衝突なし、TRUE=衝突
◎例
H=SPHITSP( 0,34 )
■変数 = SPHITSP()
◇直前に設定した情報からSPRITEの衝突判定
・引数を省略しないSPSETSPを呼び出しておくこと
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
なし
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITSP()
■SPHITRC( 始点X,始点Y,幅,高さ[,[マスク],移動量X,移動量Y] )
◇動く四角形とすべてのSPRITEの衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇始点X,Y
判定元の四角形の左上座標
◇幅,高さ
判定元の四角形の幅と高さ
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◇移動量X,Y
判定元の四角形の移動量
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITRC( 0,0,16,16 )
■SPHITRC( 管理番号,始点X,始点Y,幅,高さ[,[マスク],移動量X,移動量Y] )
◇指定したSPRITEと四角形の衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇管理番号
衝突相手のSPRITEの管理番号: 0~511
◇始点X,始点Y
判定元の四角形の左上座標
◇幅,高さ
判定元の四角形の幅と高さ
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◇移動量X,Y
判定元の四角形の移動量
◎戻り
FALSE=衝突なし、TRUE=衝突
◎例
H=SPHITRC( 1,0,0,16,16 )
■SPHITRC( 先頭ID,末尾ID, 始点x,始点y,幅,高さ[,[マスク],移動量X, 移動量Y] )
◇指定範囲のSPRITEと四角形の衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇先頭ID,末尾ID
判定するSPRITEの範囲(0~511)
◇始点X,Y
判定元の四角形の左上座標
◇幅,高さ
判定元の四角形の幅と高さ
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◇移動量X,Y
判定元の四角形の移動量
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITRC( 0,0,16,16 )
■変数 = SPHITRC()
◇直前に設定した情報からSPRITEの衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
なし
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITRC()
■SPHITINFO OUT TM
◇衝突判定結果の情報取得(衝突時間)
SPSET前に使うとエラー
◎引数
なし
◎戻り
◇TM
・衝突時間が戻る変数: 0~1の実数値
・判定時の位置+速度×衝突時間が衝突座標と一致
◎例
SPHITINFO OUT TM
■SPHITINFO OUT TM,X1,Y1,X2,Y2
◇衝突判定結果の情報取得(衝突時間と座標)
SPSET前に使うとエラー
◎引数
なし
◎戻り
◇TM
・衝突時間が戻る変数: 0~1の実数値
・判定時の位置+速度×衝突時間が衝突座標と一致
◇X1,Y1
衝突時の物体1の座標が戻る変数
◇X2,Y2
衝突時の物体2の座標が戻る変数
◎例
SPHITINFO OUT TM,X1,Y1,X2,Y2
■SPHITINFO OUT TM,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2
◇衝突判定結果の情報取得(衝突時間と座標と速度)
SPSET前に使うとエラー
◎引数
なし
◎戻り
◇衝突時間
・衝突時間が戻る変数: 0~1の実数値
・判定時の位置+速度×衝突時間が衝突座標と一致
◇X1,Y1
衝突時の物体1の座標が戻る変数
◇VX1,VY1
衝突時の物体1の速度が戻る変数
◇X2,Y2
衝突時の物体2の座標が戻る変数
◇VX2,VY2
衝突時の物体2の速度が戻る変数
◎例
SPHITINFO OUT TM,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2
■SPFUNC 管理番号, "@ラベル"
◇SPRITEごとに処理を割り当て
・コールバック処理が必要な上級者向けの命令
・CALL SPRITE により全SPRITEの処理を実行
・@ラベルの代わりにDEFで定義したユーザー処理も指定可能
・処理先ではCALLIDXシステム変数で管理番号取得可能
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇@ラベル
呼び出される処理先のラベル(またはユーザー定義処理、ユーザー定義処理の場合は””不要)
◎例
SPFUNC 0,"@PROG"
■変数=SPUSED(管理番号)
指定されたSPRITEが使われているか調査
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
TRUE=使用中、FALSE=空き
◎例
S=SPUSED(4)
▼サウンド関係の命令
↑目次に戻る
■BEEP [効果音番号][,周波数][,音量][,パンポット]
単純な警告音・効果音の発生
◎引数
◇効果音番号
・鳴らす音の種類: プリセット音0~4
◇周波数
・周波数の変更値: -32768~32767(100で半音)
◇音量
・再生する音量: 0~127
◇パンポット
・ステレオのパンポット指定: 0(左)~64(中央)~127(右)
◎例
BEEP 3
▼数学関係の命令
↑目次に戻る
■変数 = FLOOR( 数値 )
◇整数部を取り出す(小数部切り捨て)
・その数を超えない最大の整数を得る
・FLOOR(12.5)は12、FLOOR(-12.5)は-13となる
◎引数
◇数値
元になる数値
◎戻り
小数部を切り捨てられた整数値
◎関連
ROUND:四捨五入、CEIL:切り上げ
◎例
A=FLOOR(12.345)
■変数 = ROUND( 数値 )
整数部を取り出す(小数部四捨五入)
◎引数
◇数値
元になる数値   
◎戻り
小数部を四捨五入された整数値
◎関連
FLOOR:切り捨て、CEIL:切り上げ
◎例
A=ROUND(12.345)
■変数 = CEIL( 数値 )
◇整数部を取り出す(小数部切り上げ)
・その数を下回らない最小の整数を得る
・CEIL(12.5)は13、CEIL(-12.5)は-12となる
◎引数
◇数値
元になる数値
◎戻り
小数部を切り上げられた整数値
◎関連
ROUND:四捨五入、FLOOR:切り捨て
◎例
A=CEIL(12.345)
■変数 = ABS( 数値 )
絶対値を得る
◎引数
◇数値
絶対値を得る数値
◎戻り
絶対値
◎例
A=ABS(-12.345)
■変数 = SGN( 数値 )
符号取得
◎引数
◇数値
符号を得る数値
◎戻り
0または、±1
◎例
A=SGN(12.345)
■変数 = MIN( 数値配列 ) (→ 1/2)
指定された数値配列内の一番小さい値を得る
◎引数
◇数値配列
複数の数値の格納された数値配列名
◎戻り
渡された引数の中で一番小さい数
◎例
DIM TMP[2]
TMP[0]=50:TMP[1]=3
A=MIN(TMP)
■変数 = MIN( 数値, 数値 [,数値…] ) (← 2/2)
指定された複数の数値から一番小さい値を得る
◎引数
◇数値を直接列挙
 カンマで区切って複数の数値を列挙
◎戻り
 渡された引数の中で一番小さい数
◎例
A=MIN(1,2,3,4)
■変数 = MAX( 数値配列 ) (→ 1/2)
指定された数値配列内の一番大きい値を得る
◎引数
◇数値配列
複数の数値の格納された数値配列名
◎戻り
渡された引数の中で一番大きい数
◎例
DIM TMP[2]
TMP[0]=50:TMP[1]=3
A=MAX(TMP)
■変数 = MAX( 数値, 数値 [,数値…] ) (← 2/2)
指定された複数の数値から一番大きい値を得る
◎引数
◇数値を直接列挙
カンマで区切って複数の数値を列挙
◎戻り
渡された引数の中で一番大きい数
◎例
A=MAX(1,2,3,4)
■変数 = RND( [ シードID, ] 最大値 )
整数の乱数を得る(0~最大値-1まで)
◎引数
◇シードID
乱数の系列: 0~7
◇最大値
取得する乱数の上限
◎戻り
0~最大値-1までのランダムな整数
◎例
A=RND(100)
■変数 = RNDF( [ シードID ] )
実数型の乱数を得る(0以上 1.0未満の実数乱数)
◎引数
◇シードID
乱数の系列: 0~7
◎戻り
0以上1未満のランダムな実数
◎例
A=RNDF()
■RANDOMIZE シードID [, シード値 ]
乱数系列の初期化
◎引数
◇シードID  
乱数系列の種類: 0~7
◇シード値
0または省略時、利用できるエントロピー情報を用いて初期化
◎例
RANDOMIZE 0
■変数 = SQR( 数値 )
正の平方根を求める
◎引数
◇数値
平方根を求める数値
◎戻り
求めた正の平方根
◎例
A=SQR(4)
■変数 = EXP( [ 数値 ] )
e(自然対数の底)のべき乗を求める
◎引数
◇数値
指数(※省略時eを返す)
◎戻り
求めた結果
◎例
A=EXP(2)
■変数 = LOG( 数値 [,底 ] )
対数を求める
◎引数
◇数値
真数
◇底
底(※省略時、自然対数を求める)
◎戻り
求めた結果
◎例
A=LOG(2,2)
■変数 = POW( 数値, 乗数 )
べき乗を求める
◎引数
◇数値
べき乗を求める数値
◇乗数
べき乗の乗数
◎戻り
求めた結果
◎例
A=POW(1,4)
■変数 = PI()
円周率を得る
◎戻り
円周率の値(3.14159265)
◎例
A=PI()
■変数 = RAD( 数値 )
度からラジアンを求める
◎引数
◇数値
度: 0~360
◎戻り
度から求めたラジアン
◎例
R=RAD(45)
■変数 = DEG( 数値 )
ラジアンから度を求める
◎引数
◇数値
ラジアン
◎戻り
ラジアンから求めた度
◎例
A=DEG(0.5*PI())
■変数 = SIN( 角度 )
サイン値を返す
◎引数
◇角度
ラジアン
◎戻り
求めた値
◎例
A=SIN( RAD(45) )
■変数 = COS( 角度 )
コサイン値を返す
◎引数
◇角度
ラジアン
◎戻り
求めた値
◎例
A=COS( RAD(45) )
■変数 = TAN( 角度 )
タンジェント値を返す
◎引数
◇角度
ラジアン
◎戻り
求めた値
◎例
A=TAN( RAD(45) )
■変数 = ASIN( 数値 )
アークサイン値を返す
◎引数
◇数値
-1.0~1.0
◎戻り
求めたアークサイン(ラジアン)
◎例
A=ASIN(0)
■変数 = ACOS( 数値 )
アークコサイン値を返す
◎引数
◇数値
-1.0~1.0
◎戻り
求めたアークコサイン(ラジアン)
◎例
A=ACOS(1)
■変数 = ATAN( 数値 )(→ 1/2)
アークタンジェント値を返す(数値から)
◎引数
◇数値
角度を求める数値
◎戻り
求めたアークタンジェント(ラジアン)
◎例
A=ATAN(1)
■変数 = ATAN( 座標Y,座標X )(← 2/2)
アークタンジェント値を返す(XY座標から)
◎引数
◇座標Y,X
・原点からのX,Y座標値
・入力値はY座標が先
◎戻り
求めたアークタンジェント(ラジアン)
◎例
A=ATAN(1,1)
■変数 = SINH( 数値 )
ハイパボリックサイン値を返す
◎引数
◇数値
ハイパボリックサインを求める実数
◎戻り
求めたハイパボリックサイン
◎例
A=SINH(1)
■変数 = COSH( 数値 )
ハイパボリックコサイン値を返す
◎引数
◇数値
ハイパボリックコサインを求める実数
◎戻り
求めたハイパボリックコサイン
◎例
A=COSH(1)
■変数 = TANH( 数値 )
ハイパボリックタンジェント値を返す
◎引数
◇数値
ハイパボリックタンジェントを求める実数
◎戻り
求めたハイパボリックタンジェント
◎例
A=TANH(0.5)
■変数 = CLASSIFY( 数値 )
通常数値、無限大、非数(NaN)の判定
◎引数
◇数値
チェックしたい実数
◎戻り
0=通常数値、1=無限大、2=NaN
◎例
A=CLASSIFY(0.5)
■変数=数値1 MOD 数値2
数値1を数値2で割った余りの取得
◎引数
◇数値1
割られる数(または式)
◇数値2
割る数(または式、0で割るとエラー)
◎例
A=200 MOD 5
■変数=数値1 DIV 数値2
数値1を数値2で割った整数値の取得
◎引数
◇数値1
割られる数(または式)
◇数値2
割る数(または式、0で割るとエラー)
◎例
A=200 DIV 5
■変数=数値1 AND 数値2
数値1と数値2の論理積(ビットの掛算)
◎引数
◇数値1
ビット列1
◇数値2
ビット列2
◎例
A=200 AND &HE7
■変数=数値1 OR 数値2
数値1と数値2の論理和(ビットの足し算)
◎引数
◇数値1
ビット列1
◇数値2
ビット列2
◎例
A=128 OR &HA3
■変数=数値1 XOR 数値2
数値1と数値2の排他的論理和(同じ時0、異なる時反転)
◎引数
◇数値1
ビット列1
◇数値2
ビット列2
◎例
A=100 XOR &H4C
■変数=NOT 数値
数値のビット反転(1の補数を求める)
◎引数
◇数値
ビット列
◎例
A=NOT 1
■変数=数値 << 回数
数値を回数分左へビットシフト
◎引数
◇数値
ビット列1
◇回数
ビットシフト数
◎例
A=100 << 2
■変数=数値 >> 回数
数値を回数分右へビットシフト
◎引数
◇数値
ビット列1
◇回数
ビットシフト数
◎例
A=100 >> 2
▼文字列操作関係の命令
↑目次に戻る
■変数 = ASC( "文字" )
指定された文字(または文字列変数)の文字コード取得
◎引数
◇文字
調べたい文字が入った文字列(または文字列変数)
◎戻り
指定された文字の文字コード(UTF-16)
◎例
A=ASC("A")
■文字列変数 = CHR$( 文字コード )
指定された文字コードから文字を返す
◎引数
◇文字コード
文字ごとに対応する番号(UTF-16)
◎戻り
文字コードに対応する文字
◎例
S$=CHR$(65)
■変数 = VAL( "文字列" )
文字列から数値を得る
◎引数
◇文字列
数字を表す文字列("123"など)、または文字列変数
◎戻り
文字列から解釈された数値
◎例
A=VAL("123")
■文字列変数 = STR$( 数値 [,桁数] )
数値から文字列を得る
◎引数
◇数値
文字列に変換したい数値
◇桁数
・指定桁数で右揃えしたい場合に指定
・数値の桁数が指定桁数より大きい場合指定を無視
◎戻り
数値から生成された文字列(123→123)
◎例
S$=STR$( 123 )
■文字列変数 = HEX$( 数値 [,桁数] )
数値から16進文字列を得る
◎引数
◇数値
16進文字列を得たい数値(小数部は切り捨て)
◇桁数
・出力する16進文字の桁数
・指定すると先頭に0を埋めた文字列を返す
◎戻り
数値から生成された16進文字列(255→FF)
◎例
S$=HEX$(65535,4)
■文字列変数 = BIN$( 数値 [,桁数] )
数値から2進文字列を得る
◎引数
◇数値
2進文字列を得たい数値(小数部は切り捨て)
◇桁数
・出力する2進文字の桁数
・指定すると先頭に0を埋めた文字列を返す
◎戻り
数値から生成された2進文字列(255→11111111)
◎例
S$=BIN$(65535,16)
■変数$ = FORMAT$( "書式文字列", 値 ,… )
表示書式を使って値を整形し文字列化する
◎引数
◇書式文字列(複数列挙可能)
%S: 文字列変数の内容を出力
%D: 整数を10進出力
%X: 整数を16進出力
%F: 実数を出力
%B: 整数を2進出力
◇書式文字列の補助指定
%のあとに次の補助指定を行うことにより出力を整形
・桁数指定:桁数の数値を指定(%8D、%4X)
・小数の桁数指定:整数部.小数部の桁数(%8.2F)
・空白埋め:空白文字+桁数を指定(% 4D→    0)
・ゼロ埋め:0+桁数を指定(%08D→00000000)
・左寄せ:-記号+桁数を指定(%-8D)
・+符号表示:+記号+桁数を指定(%+8D)
◇値
・整形する元の値
・書式内で指定された要素分カンマ(,)で区切って列挙
◎戻り
生成された文字列
◎例
S$=FORMAT$("%06D",A)
■変数 = LEN( "文字列" または 配列変数 )
文字列内の文字数を得る/配列の要素数を得る
◎引数
◇文字列の場合
文字数を調べたい文字列または文字列変数名
◇配列変数の場合
要素数を調べたい配列変数名
◎戻り
・文字列のとき: 文字数(すべての文字を1文字として数える)
・配列変数のとき: 要素数
◎例
A=LEN("ABC123")
■文字列変数 = MID$( "文字列", 開始位置, 文字数 )
文字列の指定位置から指定数分の文字列を取り出す
◎引数
◇文字列
元になる文字列
◇開始位置
文字列を取り出す開始位置(文字単位)
◇文字数
取り出す文字数
◎戻り
取り出した文字列
◎例
S$=MID$("ABC",0,2)
■文字列変数 = LEFT$( "文字列", 文字数 )
文字列の左端から指定数分の文字列を取り出す
◎引数
◇文字列
元になる文字列
◇文字数
取り出す文字数
◎戻り
取り出した文字列
◎例
S$=LEFT$("ABC",2)
■変数$ = RIGHT$( "文字列", 文字数 )
文字列の右端から指定数分の文字列を取り出す
◎引数
◇文字列
元になる文字列
◇文字数
取り出す文字数
◎戻り
取り出した文字列
◎例
S$=RIGHT$("ABC",2)
■変数 = INSTR( [開始位置,] "元文字列", "検索する文字列" )
文字列内から対象文字列を検索
◎引数
◇開始位置
・元文字列内で検索を開始する位置(0~文字単位)
・省略すると先頭から検索
◇元文字列
元になる文字列
◇検索する文字列
元文字列の中から検索したい文字列
◎戻り
・見つかった場合: 文字列内の位置(文字単位)
・見つからなかった場合: -1
◎例
A=INSTR( 0, "ABC","B" )
■文字列変数 = SUBST$( "文字列", 開始位置, [文字数,] "置換文字列" )
文字列の置換
◎引数
◇文字列
元になる文字列
◇開始位置
元になる文字列の置換開始位置(0~文字数-1)
◇文字数
・置換する文字数
・省略時は置換位置以降の全文字を置換文字列に置き換え
◇置換文字列
開始位置から文字数分をこの文字列で置き換え
◎戻り
置換された文字列
◎例
A$=SUBST$( "ABC",0,2,"XY" )
▼ソースコード操作関係の命令
↑目次に戻る
■PRGEDIT プログラムSLOT [,行番号]
操作するプログラムSLOTと、カレント行を指定
◎引数
◇プログラムSLOT
・操作するプログラムSLOT: 0~3
・現在実行中のSLOTを指定するとエラー
◇行番号
・操作対象とする行(カレント行)
・省略した場合、先頭行がカレント行となる
・行番号に-1を指定した場合、最終行がカレント行となる
◎例
PRGEDIT 0
■文字列変数=PRGGET$()
カレント行1行分の文字列を取得
◎戻り
カレント行のソース文字列(範囲外の場合、空文字列)
◎例
A$=PRGGET$()
■PRGSET 文字列
◇カレント行の内容を指定文字列に置き換える
PRGGET$が空文字列を返す場合は行追加
◎引数
◇文字列
カレント行を置き換える文字列
◎例
PRGSET "'Comment"
■PRGINS 文字列 [,フラグ]
◇カレント行への1行挿入
改行コードCHR$(10)を含む文字列は複数行の挿入
◎引数
◇文字列
挿入するソース文字列
◇フラグ
1=カレント行の後方に挿入
0=カレント行の前方へ挿入(省略時=0、前方へ)
◎例
PRGINS "PRINT "+CHR$(34)+"HELLO"+CHR$(34)
■PRGDEL [削除行数]
カレント行の削除
◎引数
◇削除行数
・削除したい行の数(省略時1行)
・マイナス値を入れた場合全体を削除
◎例
PRGDEL
■変数=PRGSIZE( [プログラムSLOT [,取得する値のタイプ]] )
ソースコードの行数取得
◎引数
◇プログラムSLOT
行数を取得するプログラムSLOT: 0~3
◇取得する値のタイプ
0:行数(デフォルト)
1:文字数
2:空き文字数
◎戻り
タイプに応じた値
◎例
A=PRGSIZE(0)
■文字列変数=PRGNAME$([プログラムSLOT])
◇プログラムのファイル名
LOAD/SAVE命令で扱ったファイル
◎引数
◇プログラムSLOT
ファイル名を取得するプログラムSLOT: 0~3
◎戻り
・プログラムのファイル名
・プログラム実行中は実行しているSLOT
・実行していない時は「直前に実行していたSLOT」
・「直前に実行していたSLOT」は通常0
・STOP命令やSTARTボタンでプログラム中断時、
 およびエラー発生時はその時のSLOTとなり、
 以後RUNするまでその状態が維持される
◎例
PRINT PRGNAME$(0)
▼エミュレータ関係の命令
↑目次に戻る
■EMUCPUINFO OUT NAME$ [, REGCNT]
◇CPU情報の取得
◎戻り
◇NAME$
CPUの名前文字列
◇REGCNT
レジスタ数
◎例
EMUCPUINFO OUT N$,RC
■変数=EMUSTATUS()
◇エミュレータ稼働状態の取得
◎戻り
0:停止中
1:実行中
2:プロテクト動作中
◎例
V=EMUSTATUS()
■EMURUN [ADDR]
◇CPUの実行を開始する(既に実行中の場合、ADDRがあれば設定だけ行う)
◎引数
◇ADDR
&H0000~&HFFFF:CPU上のアドレス
◎例
EMURUN &HA000
■EMUSTOP
◇CPUの実行を停止する(すでに停止中の場合は何もしない)
◎例
EMUSTOP
■EMUJUMP ADDR
◇エミュレータのプログラムカウンタを設定する
◎引数
◇ADDR
&H0000~&HFFFF:CPU上のアドレス
◎例
EMUJUMP &HC000
■EMUTRACE
◇1命令実行を進める(エミュレータ実行中の呼び出しはIllegal function callエラー)
◎例
EMUTRACE
■EMUSTEP
◇CALL命令も1命令として実行(エミュレータ実行中の呼び出しはIllegal function callエラー)
◎例
EMUSTEP
■変数=EMUMEM( ADDR )
◇指定アドレスのメモリを読み出す(ADDRが範囲外の場合はOut of rangeエラー)
◎引数
◇ADDR
&H0000~&HFFFF:CPU上のアドレス
◎戻り
0~255:取得したメモリー内容
◎例
V=EMUMEM( &HD000 )
■EMUMEM ADDR, VAL [ ,FLAG ]
◇指定アドレスのメモリに値を書く(ADDRが範囲外の場合はOut of rangeエラー)
◎引数
◇ADDR
&H0000~&HFFFF:CPU上のアドレス
◇VAL
0~255:取得したメモリー内容
◇FLAG
TRUE:ROM領域の書き込みを禁止
◎例
EMUMEM &HD000,&HA3
■EMUDISASM ADDR OUT ASM$, LEN
◇指定アドレスから始まる命令の逆アセンブル文字列と命令長を取得する(ADDRが範囲外の場合はOut of rangeエラー)
◎引数
◇ADDR
&H0000~&HFFFF:CPU上のアドレス
◎戻り
◇ASM$
逆アセンブルした命令文字列
◇LEN
命令の長さ
◎例
EMUDISASM &HAC00 OUT ASM$, LEN
■変数=EMUREGCNT()
◇レジスタ数を取得
◎戻り
0~:取得したレジスタの数
◎例
V=EMUREGCNT()
■文字列変数=EMUREGNAME$( ID )
◇レジスタ名を取得
◎引数
◇ID
レジスタ番号( EMUREGCNT()で取得した数-1まで指定可能、IDが範囲外の場合Out of rangeエラー)
◎戻り
◇NAME$
CPUの名前文字列(見つからない場合、文字列"ERROR"を返す)
◎例
N$=EMUREGNAME$(0)
■変数=EMUREGSIZE( ID )
◇IDで指定されたレジスタのサイズ(ビット幅)を取得
◎引数
◇ID
レジスタ番号( EMUREGCNT()で取得した数-1まで指定可能、IDが範囲外の場合Out of rangeエラー)
◎戻り
レジスタのビット幅
◎例
V=EMUREGSIZE(0)
■変数=EMUREGSIZE( NAME$ )
◇名前で指定されたレジスタのサイズ(ビット幅)を取得
◎引数
◇NAME$
レジスタ名文字列(レジスタ名でない場合Illegal function callエラー)
◎戻り
レジスタのビット幅
◎例
V=EMUREGSIZE("A")
■変数=EMUREGSIDE()
◇レジスタの表裏状態を取得
◎戻り
0:表、1:裏(Z80専用)
◎例
V=EMUREGSIDE()
■EMUREG VAL[]
◇全レジスタの値を配列に取得
◎引数
◇VAL[]
受け取る配列名
◎例
DIM REG[10]
EMUREG REG
■変数=EMUREG( ID )
◇IDで指定されたレジスタの値を取得
◎引数
◇ID
レジスタ番号( EMUREGCNT()で取得した数-1まで指定可能、IDが範囲外の場合Out of rangeエラー)
◎戻り
レジスタの内容
◎例
V=EMUREG(0)
■変数=EMUREG( NAME$ )
◇名前で指定されたレジスタの値を取得
◎引数
◇NAME$
レジスタ名文字列(レジスタ名でない場合Illegal function callエラー)
◎戻り
レジスタの内容
◎例
V=EMUREG("A")
■EMUREG ID, VAL
◇IDで指定されたレジスタの値を設定
◎引数
◇ID
レジスタ番号( EMUREGCNT()で取得した数-1まで指定可能、IDが範囲外の場合Out of rangeエラー)
◎戻り
レジスタの内容
◎例
EMUREG 0,56
■EMUREG NAME$, VAL
◇名前で指定されたレジスタの値を設定
◎引数
◇NAME$
レジスタ名文字列(レジスタ名でない場合Illegal function callエラー)
◎戻り
レジスタの内容
◎例
EMUREG "A",&HCC
■EMUBKST OUT TYPE, NUMBER
◇ブレーク情報を返す
◎引数
◇NAME$
レジスタ名文字列(レジスタ名でない場合Illegal function callエラー)
◎戻り
◇TYPE
種類
◇NUMBER
番号
◎例
EMUBKST OUT TYPE, NUMBER
■EMUBP [ID,] ADDR
◇ブレークポイントを設定
◎引数
◇ID
ブレークポインタの管理ID
◇ADDR
&H0000~&HFFFF:ブレークするアドレス
◎例
EMUBP 0,&HFF00
■EMUBC ID
◇ブレークポイントをクリア
◎引数
◇ID
ブレークポインタの管理ID
◎例
EMUBC 0
■EMUBL [ VAL[] ]
◇ブレークポイントリストを表示するか、配列に取得
◎引数
◇VAL[]
受け取る配列名(省略すると画面にブレークポインタのリストを表示)
◎例
EMUBL
■EMURP [ID,] ADDR [,CNT]
◇リードポイントを設定
◎引数
◇ID
リードポインタの管理ID
◇ADDR
&H0000~&HFFFF:読み込むアドレス
◇CNT
0~255:読み込まれた回数(省略または-1の時、毎回)
◎例
EMURP 0,&H56AF,&HAA
■EMURP [ID] OUT ADDR [,CNT]
◇リードポイントを取得
◎引数
◇ID
リードポインタの管理ID
◎戻り
◇ADDR
&H0000~&HFFFF:読み込むアドレス
◇CNT
0~255:読み込まれた回数(省略または-1の時、毎回)
◎例
EMURP 0 OUT &H1BD0,NUM
■EMURC ID
◇リードポイントをクリア
◎引数
◇ID
リードポインタの管理ID
◎例
EMURC 0
■EMURL [ VAL[] ]
◇リードポイントリストを表示するか、配列に取得
◎引数
◇VAL[]
受け取る配列名(省略すると画面にリードポインタのリストを表示)
◎例
EMURL
■EMUWP [ID,] ADDR [, [CNT] [,VAL] ]
◇ライトポイントを設定
◎引数
◇ID
ライトポインタの管理ID
◇ADDR
&H0000~&HFFFF:書き込むアドレス
◇CNT
0~255:書き込まれた回数(省略または-1の時、毎回)
◇VAL
書き込まれる値
◎例
EMUWP 0,&H56AF,&HAA,&H40
■EMUWP [ID] OUT ADDR [, [CNT] [,VAL] ]
◇ライトポイントを取得
◎引数
◇ID
ライトポインタの管理ID
◎戻り
◇ADDR
&H0000~&HFFFF:書き込むアドレス
◇CNT
0~255:書き込まれた回数(省略または-1の時、毎回)
◇VAL
書き込まれる値
◎例
EMUWP 0 OUT &HE300,NUM,VAL
■EMUWC ID
◇ライトポイントをクリア
◎引数
◇ID
ライトポインタの管理ID
◎例
EMUWC 0
■EMUWL [ VAL[] ]
◇ライトポイントリストを表示するか、配列に取得
◎引数
◇VAL[]
受け取る配列名(省略すると画面にライトポインタのリストを表示)
◎例
EMUWL
■EMUCLOCK KHZ
◇エミュのクロックを設定
◎引数
◇KHZ
500~8000:動作クロック(100単位で指定可能、初期値2000)
◎例
EMUCLOCK 4000
■変数=EMUCLOCK()
◇エミュのクロックを取得
◎戻り
現在設定されているクロック
◎例
V=EMUCLOCK()
■EMURESET
◇エミュレーションCPUをリセット
◎例
EMURESET
■EMUVOLUME 音量
◇エミュレーションしているマシンの音量を設定
◎引数
◇音量
0~65535
◎例
EMUVOLUME 32768
■変数=EMUVOLUME()
◇エミュレーションしているマシンの音量を取得
◎戻り
0~65535
◎例
V=EMUVOLUME()
■EMUWINDOW X座標,Y座標,幅,高さ
◇エミュレーション画面の表示位置を指定
◎引数
◇X座標,Y座標
SmileBASIC上の画面座標
◇幅,高さ
ウィンドウの表示サイズ
◎例
V=EMUWINDOW 16,16,320,200
■EMUWINDOW 簡易位置番号
◇エミュレーション画面の表示位置を簡易指定
◎引数
◇簡易位置番号
0:非表示
1:画面左上
2:画面右上
3:画面左下
4:画面右下
5:全画面
◎例
EMUWINDOW 5
■EMUCOLOR 文字,背景,ボーダー,透明度
◇エミュレータ画面の色や透明度を設定
◎引数
◇文字
文字の色(24ビットRGBカラー)
◇背景
背景の色(24ビットRGBカラー)
◇ボーダー
ボーダーの色(24ビットRGBカラー)
◇透明度
0〜100:透明度
◎例
EMUCOLOR &HFFFFFF,&H000000,&H1F1F1F,75
■EMUCOLOR OUT TX, BK, BD, AL
◇エミュレータ画面の色や透明度を取得
◎戻り
◇TX
文字の色(24ビットRGBカラー)
◇BK
背景の色(24ビットRGBカラー)
◇BD
ボーダーの色(24ビットRGBカラー)
◇AL
透明度(0~100)
◎例
EMUCOLOR OUT TX,BK,BD,AL
■EMUSOFTKB VAL
◇エミュ用ソフトキーボードを表示・消去
◎引数
◇VAL
TRUE=表示
◇背景
◎例
EMUSOFTKB TRUE
■EMUCG キャラ番号,行番号,データ
◇指定キャラ番号・ラインのビットマップを変更
◎引数
◇キャラ番号
&H00~&HFF:キャラクター番号
◇行番号
0~7:行の位置
◇データ
&H00~&HFF:ビットデータ
◎例
EMUCG ASC("A"),0,&HFE
EMUCG ASC("A"),1,&H82
EMUCG ASC("A"),2,&H82
EMUCG ASC("A"),3,&HFE
EMUCG ASC("A"),4,&H82
EMUCG ASC("A"),5,&H82
EMUCG ASC("A"),6,&H82
EMUCG ASC("A"),7,&H00
■変数=EMUCG( キャラ番号,行番号 )
◇指定キャラ番号・ラインのビットマップを取得
◎引数
◇キャラ番号
&H00~&HFF:キャラクター番号
◇行番号
0~7:行の位置
◎戻り
&H00~&HFF:指定行のビットデータ
◎例
V=EMUCG( ASC("A"),0 )
■EMUCGRESET
◇エミュレータのキャラクターセットを起動時状態に戻す
◎例
EMUCGRESET
■EMUJOY BTNID, KEYPA, KEYPB
◇ジョイパッドのボタンアサインを設定
◎引数
◇BTNID
#JOYPAD_ではじまる定数でジョイパッド側のボタンを指定
◇KEYPA
対応するキーボード入力情報
◇KEYPB
対応するキーボード入力情報
◎例
EMUJOY BTNID, KEYPA, KEYPB
■EMUJOY BTNID OUT SW, KEYPA, KEYPB
◇ジョイパッドのボタンアサインを設定
◎引数
◇BTNID
#JOYPAD_ではじまる定数でジョイパッド側のボタンを取得
◎戻り
◇SW
TRUE=ボタンのアサイン有り
◇KEYPA
対応するキーボード入力情報
◇KEYPB
対応するキーボード入力情報
◎例
EMUJOY BTNID OUT SW, KEYPA, KEYPB
■EMUJOYCLR [ BTNID ]
◇ジョイパッドのボタンアサインをクリア
◎引数
◇BTNID
#JOYPAD_ではじまる定数でジョイパッド側のボタンを指定
・ボタンIDを省略した場合、全ボタンのアサインをクリア
◎例
EMUJOYCLR
▼GPIO制御関係の命令(I2C/SPI含む)
↑目次に戻る
■GPIOMODE ピン番号,モード値
◇指定したピン番号のピンのIOモードを設定
◎引数
◇ピン番号
I/O・ソフトウェアPWM・ソフトウェアTONE(上段):14,15,18,23,24,25,8,7,12,16,20,21
I/O・ソフトウェアPWM・ソフトウェアTONE(下段):2,3,4,17,27,22,10,9,11,5,6,13,19,26
8ビットI/O(D0-D7順):17,18,27,22,23,24,25,4
PWM・TONE (同一の出力):18,12,13,19
CLOCK:4
I2C:SDA:2 SCL:3
SPI:MOSI:10, MISO:9, SCLK:11, CE:8
◇モード値
0:デジタル入力
1:デジタル出力
2:PWM出力
3:CLOCK出力
4:ソフトウェアPWM出力
5:ソフトウェアTONE出力
6:TONE出力
16:ALT0
17:ALT1
18:ALT2
19:ALT3
20:ALT4
21:ALT5
◎例
'--- INPUT
GPIOMODE 4,0
GPIOPUD 4,1
?GPIOIN(4)
■GPIOPUD ピン番号,モード値
◇指定したピン番号のピンのプルアップ/ダウンを設定
◎引数
◇ピン番号
I/O・ソフトウェアPWM・ソフトウェアTONE(上段):14,15,18,23,24,25,8,7,12,16,20,21
I/O・ソフトウェアPWM・ソフトウェアTONE(下段):2,3,4,17,27,22,10,9,11,5,6,13,19,26
8ビットI/O(D0-D7順):17,18,27,22,23,24,25,4
PWM・TONE (同一の出力):18,12,13,19
CLOCK:4
I2C:SDA:2 SCL:3
SPI:MOSI:10, MISO:9, SCLK:11, CE:8
◇モード値
0:無効
1:プルダウン
2:プルアップ
◎例
※GPIOMODEの例をご覧ください
■変数=GPIOIN( ピン番号 )
◇指定したピン番号のデジタル入力の状態(0/1)を取得
◎引数
◇ピン番号
I/O・ソフトウェアPWM・ソフトウェアTONE(上段):14,15,18,23,24,25,8,7,12,16,20,21
I/O・ソフトウェアPWM・ソフトウェアTONE(下段):2,3,4,17,27,22,10,9,11,5,6,13,19,26
8ビットI/O(D0-D7順):17,18,27,22,23,24,25,4
PWM・TONE (同一の出力):18,12,13,19
CLOCK:4
I2C:SDA:2 SCL:3
SPI:MOSI:10, MISO:9, SCLK:11, CE:8
◎戻り
指定したピン番号の入力状態
・指定したピンのIOモードがデジタル入力に設定されていない場合は無効値(-1)を返す
◎例
※GPIOMODEの例をご覧ください
■変数=GPIOIN()
◇8ビットI/O入力の状態(0~255)を取得
・8ビットI/Oの8つ全てのピンのIOモードをデジタル入力に設定しておくこと
◎戻り
指定したピン番号の入力状態
・8ビットI/Oに用いられるピンの8つのうち、どれもIOモードがデジタル入力に設定されていない場合は無効値(-1)を返す
◎例
V=GPIOIN()
■GPIOOUT ピン番号,出力値
◇指定したピン番号へデジタル値出力
◎引数
◇ピン番号
・指定したピン番号のピンに設定したIOモードによって機能が異なる
デジタル出力モード:指定したピン番号のデジタル出力の状態(0/1)を設定
PWM出力モード:PWMの出力値(0~GPIOHWPWMで設定した分解能)を設定
ソフトウェアPWM出力モード:PWMの出力値(0~100)を設定
TONE出力・ソフトウェアTONE出力モード:出力する音程(Hz)を設定
CLOCK出力モード:クロック出力の周波数(Hz)を設定
◇出力値
0または1
◎例
GPIOOUT 18,1
■GPIOOUT 出力値
◇8ビットI/Oへの出力
・8ビットI/Oの8つ全てのピンのIOモードをデジタル入力に設定しておくこと
◎引数
◇出力値
0~255
◎例
GPIOOUT &HC3
■GPIOHWPWM [出力モード値],[クロック分周値],[分解能]
◇PWM出力に関連するパラメータを設定
・ソフトウェアPWM出力には影響しません
・パラメータを省略した場合は、現在の設定のまま変更されません
◎引数
◇出力モード値
0:mark:space(サーボモータの制御に向く)
1:balanced(LEDの明度制御に向く)
◇クロック分周値
2:9.6MHz
4:4.8MHz
8:2.4MHz
16:1.2MHz
32:600kHz
64:300kHz
128:150kHz
256:75kHz
512:37.5kHz
1024:18.75kHz
2048:9.375kHz
1(4096):4.6875kHz
◇分解能
0~
◎例
'--- PWM
GPIOMODE 18,0
GPIOMODE 18,2
GPIOOUT 18,50
GPIOHWPWM 0,1,100
■I2CSTART [ クロック周波数 ]
◇I2Cを有効化(使用するPINのGPIOMODEを切り替え)
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇クロック周波数
0~(省略時、現在の設定を維持)
◎例
'--- I2C EEPROM
I2CSTART
DIM BUF1[3]
BUF[2]=25
I2CSEND &H50,BUF1'WRITE DATA
I2CSEND &H50,BUF1,2'SET ADDR
?I2CRECV(&H50)
I2CSTOP
■I2CSTOP
◇I2Cを無効化(使用したPINのGPIOMODEをデジタル入力へ切り替え)
・I2Cを無効にできない場合、Internal Errorとなる
◎例
※I2CSTARTの例をご覧ください
■変数=I2CRESULT()
◇I2CでREAD又はWRITE命令を使用した際の処理結果
・I2Cを有効にできない場合、Internal Errorとなる
◎戻り
TRUE:成功、FALSE:失敗
◎例
R=I2CRESULT()
■変数=I2CRECV( デバイスアドレス )
◇指定したデバイスから8ビットのデータを読み出す
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◎戻り
デバイスからの8ビット値
◎例
※I2CSTARTの例をご覧ください
■変数=I2CRECV8( デバイスアドレス,レジスタ番号 )
◇指定したデバイスの指定したレジスタから8ビットのデータを読み出す
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇レジスタ番号
0~255
◎戻り
デバイスからの8ビット値
◎例
V=I2CRECV8(&H32,0)
■変数=I2CRECV16( デバイスアドレス,レジスタ番号 )
◇指定したデバイスの指定したレジスタから16ビットのデータを読み出す
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇レジスタ番号
0~255
◎戻り
デバイスからの16ビット値
◎例
V=I2CRECV16(&H32,0)
■I2CSEND デバイスアドレス, データ
◇指定したデバイスへ8ビットのデータを書き込む
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇データ
0~255
◎例
※I2CSTARTの例をご覧ください
■I2CSEND8 デバイスアドレス, レジスタ番号, データ
◇指定したデバイスの指定したレジスタへ8ビットのデータを書き込む
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇レジスタ番号
0~255
◇データ
0~255
◎例
I2CSEND8 &H32,0,25
■I2CSEND16 デバイスアドレス, レジスタ番号, データ
◇指定したデバイスの指定したレジスタへ16ビットのデータを書き込む
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇レジスタ番号
0~255
◇データ
0~65535
◎例
I2CSEND16 &H32,0,&H2525
■SPISTART クロック周波数,タイミング方式
◇指定されたクロック周波数とタイミング方式でSPIを有効化(使用するPINのGPIOMODEを切り替え)
・SPIを有効にできない場合、Internal Errorとなる
◎引数
◇クロック周波数(Hz)
0~
◇タイミング方式
0:CPOL=0、CPHA=0
1:CPOL=0、CPHA=1
2:CPOL=1、CPHA=0
3:CPOL=1、CPHA=1
◎例
'--- SPI D/A
SPISTART 5000000,3
DIM BUF2[2]
BUF3[0]=&B01010000
BUF3[1]=&HFF
SPISEND BUF3
SPISTOP
■SPISTOP
◇SPIを無効にする(使用したPINのGPIOMODEをデジタル入力へ切り替え)
・SPIを無効にできない場合、Internal Errorとなる
◎例
※SPISTARTの例をご覧ください
■SPIRECV 配列変数 [,サイズ]
◇SPIから8ビットの配列データを読み出す
・SPIを有効にできない場合、Internal Errorとなる
・負数や配列定義要素数を超えたサイズを指定すると Out of range エラー
◎引数
◇配列変数
SPIからの値を取り込む配列変数(1つの要素には8ビット分の値が格納される)
◇サイズ
配列の要素数
◎例
DIM WORK%[256]
SPIRECV WORK%,256
■SPISEND 配列変数 [,サイズ]
◇SPIへ8ビットの配列データを書き込む
・SPIを有効にできない場合、Internal Errorとなる
・負数や配列定義要素数を超えたサイズを指定すると Out of range エラー
◎引数
◇配列変数
SPIへ値を書き込むデータが格納された配列変数(1つの要素は8ビット分の値)
◇サイズ
配列の要素数
◎例
※SPISTARTの例をご覧ください
■SPISENDRECV 配列変数 [,サイズ]
◇SPIへ8ビットの配列データを書き込み、SPIから読み込む
・SPIを有効にできない場合、Internal Errorとなる
・負数や配列定義要素数を超えたサイズを指定すると Out of range エラー
◎引数
◇配列変数
SPIからの値を取り込む配列変数
◇サイズ
配列の要素数
◎例
DIM WORK%[256]
FOR I=0 TO 255:WORK%[I]=RND(256):NEXT
SPISENDRECV WORK%,256
↑目次に戻る
(C)2017 SmileBoom Co.Ltd.