========================================================================================
【タイトル】 A-51 Basic ver 0.3.4
【ファイル】 a51bas034.zip
【作成月日】 2018/02/01
【動作環境】 Windows CE/Mobile, android 端末、 パソコン(Java)
【配布形態】 フリーウェア
【転  載】 自由
【著 作 者】 清水 良夫
========================================================================================


概要
ダウンロードしていただき、有難うございます。
本ソフトはWindows CE/Mobileandroid端末、パソコン用のBASICです。
これといって特徴も無く、機能も性能も良くはありませんが、使っていただけると幸いです。

本ソフトには以下のファイルが含まれています
1. readme.html
      ...このファイル
4. windows_ce(
フォルダ)...Windows CE/Mobile用のファイル
4-1. basic.ini
        ...画面のレイアウトやフォントサイズを設定するファイル
4-2. basic(
フォルダ)     ...サンプルプログラムが格納されているフォルダ
4-3. SH3(
フォルダ)...SH3 CPU用のファイルが格納されている
4-3-1. a51bas031.exe
...BASICインタプリタ
4-3-2. A51Basic.rh
...コンパイル用ライブラリファイル
4-3-3. bc
...コンパイル用バッチファイル
4-4. MIPS(
フォルダ)...MIPS CPU用のファイルが格納されている
4-4-1. a51bas031.exe
...BASICインタプリタ
4-4-2. A51Basic.rh
...コンパイル用ライブラリファイル
4-4-3. bc
...コンパイル用バッチファイル
4-5. ARM(
フォルダ)...ARM CPU用のファイルが格納されている
4-5-1. a51bas031.exe
...BASICインタプリタ
5. android(
フォルダ)...android用のファイルが格納されている
5-1. basic.ini
        ...画面のレイアウトやフォントサイズを設定するファイル
5-2. basic.apk
...android版のインストール用ファイル
5-2. objedit(フォルダ)...android版オブジェクトエディタ用のファイルを格納
6. java(フォルダ)...Java用のファイルが格納されている
6-1 basic.jar
...Java版の実行可能ファイル
6-2 objedit.jar
...オブジェクトエディタの実行可能ファイル

インストール、実行
(1)
本ソフトをWindows CE端末で動作させるためには
ダウンロードしたファイルを解凍してできたファイルの中で
SH3
MIPSフォルダ以下のファイルをそれぞれの機種の
CF
カード直下のフォルダにコピーしてください。

(2) Windows Mobile(ARM)
版では
 1. "a51bas031.exe""\Windows"フォルダにコピーする。
 2. コピーしたファイルのショートカットをフォルダ"\Windows\スタートメニュー\プログラム"に貼り付ける。
3.
端末を再起動する(これでアプリのメニューからBASICが起動できるようになる)
4. BASIC
を起動する。
5.
コマンド < regist "bas","a51bas031.exe" [Enter]  > と打ち込む。

以後、BASICプログラムファイル(.bas)をタッチするとプログラムが起動するようになります。
ショートカットをフォルダ"\Windows\スタートメニュー\プログラム"に貼り付けることで、アプリ登録もできます。

(3) android
版では
エクスプローラ等でフォルダを表示させてファイル”A51Basic.apk”を押すとインストールが始まります。
実行はアプリのメニューから行います。

(4) Java
版では
Java
をインストールした状態でコマンドラインから以下のコマンドをタイプするとBasicが起動します。

java -jar A51Basic.jar


アンインストール
解凍したファイルを削除してください。



■使用できるBASICコマンド、関数
(1)
ラベル
ラベルはgoto文やgosub文の飛び先を指定するために用いられます。
ラベルは先頭に"@"をつけた任意の英数字で表現されます
<
>
@loop1:
@exit2:

1行に2つ以上のラベルを記述すると最初のラベルしか認識されないので注意すること

コマンド(キーワードは英数小文字でしか受け付けません)
new
end
list
load
save
run
edit


エディタを起動してプログラムを編集する
Windows CE/Mobile
版ではテキストファイル(.txt)がエディタに関連付けされていることが必要です。
(
使い慣れたエディタをご用意下さい)

※ android
Java版ではエディタは内蔵されていますので、別にエディタを用意する必要はありません。
またandroid版でこのコマンドを打ち込んだときに、すぐにプログラム編集画面に切り替わらない場合がありますが
そのような時には”戻るボタン”を押すと編集画面に切り替えることができます。

編集が終わって、編集画面から実行画面に戻るには”Stop”ボタンを押します。


make (Windows CE版限定)
Basic
プログラムをコンパイルして俺言語コンパイラ"R"用のソースプログラムを作成する。
<
>
make "\Storage Card\test1.r" (
指定された名前でソースファイルが作成される)
make (make
だけタイプするとファイル"compile.txt"が作成される)

bye
BASIC
を終了してOSに復帰する

print
print #
ファイルやネットワークにデータを出力する


input
input #
ファイルから変数にデータを入力する
(
ネットワークでの利用は不可、input$またはrecv関数を使うこと)

goto
<
>
goto @loop1

for
next
gosub
<
>
gosub @sub1

return
if
<
>
if a>0 then print a
if a<0 then @label1
if a=1 then print a else @label2

dim
open
ファイルやネットワークを開く
名前の先頭に"net:"を付けるとクライアントとしてネットワークに接続することができます
また先頭に"server:"を付けるとサーバーとしてネットワークに接続することができます
"
ホスト名:"の後に数値をつけるとポートを指定することができます。
(
ポート番号を省略すると80番のポートが割り当てられます)
<
>
open "file1" for input as #1 '
ファイル"file1"を入力モードで開く
open "net:www.google.co.jp" as #2 '
ホスト"www.google.co.jp"80番のポートに接続する
open "net:192.168.12.34:5000" as #3 '
ホスト"192.168.12.34"5000番のポートに接続する
open "server:1000" as #4 '
サーバーとして1000番のポートを開いてクライアントの接続を待つ

close
ファイルやネットワークを閉じる
<
>
close #1
close

clear
cls
locate

pset( x , y ), c
座標(x, y)に点を打つ
c
は色コードで0が白で1が黒

line(x1, y1)-(x2, y2), c
座標(x1,y1)(x2,y2)間に線を引く、cは色コード

box(x1,y1)-(x2,y2), c
座標(x1,y1)(x2,y2)を対角とした長方形を描く

boxf(x1, y1)-(x2, y2),c
座標(x1,y1)(x2,y2)を対角とした塗りつぶした長方形を描く

circle(x1, y1)-(x2,y2),c
box(x1,y1)-(x2,y2), c
で描かれる長方形に内接する楕円を描く

circlef(x1, y1)-(x2,y2),c
box(x1,y1)-(x2,y2), c
で描かれる長方形に内接する塗りつぶした楕円を描く

start "ファイル名","パラメータ"
(
パラメータは省略可能)
ファイル名で指定されるファイルをWindowsアプリケーションで起動する
すなわちテキストファイルの場合にはテキストエディタが立ちあがり
WAVE
ファイルの場合には音を鳴らす
start
コマンドは起動したプロセスの終了待ちをおこなわない

image(x, y),"画像ファイル名"
座標(x, y)に画像※を表示する

※1 Windows CE/Mobile
版の場合
画像ファイルは2pb形式
ただし画像の幅がドット単位で8の倍数になっていないと正常に表示されない
また画像は上下逆さまに表示されるので、画像を加工するときには注意が必要

※2 android, Java
版では上記のような制限はありません。
またJPEG,PNGなどの様々な画像フォーマットに対応しています。


exec "ファイル名","パラメータ"
(
パラメータは省略可能)
ファイル名で指定されるファイルをWindowsアプリケーションで起動する
exec
コマンドはプログラムの実行を一時停止して、起動したプロセスの終了待ちをおこなう

wait x
x(
ミリ秒)プログラムを一時停止させる

regist "拡張子","実行ファイル名" (Windows CE/Mobile版限定)
ファイルの拡張子を実行ファイルに関連付ける
実行ファイル名が空の場合は関連付けを解除する。

<
>
regist "bas","a51basic.exe"
regist "txt",""
regist "txt","pword.exe"

(3)
関数(関数名は英数小文字でしか受け付けません)
abs
sqr
exp
log
sin
cos
tan
atn
chr$
asc
mid$
left$
right$
input$
ファイルやネットワークから指定文字数の文字列を受けとる
<
>
a$=input$(1,2)
ネットワーク入力の場合、入力がない場合は入力待ちせずにヌル文字列""を返します。
またエラーが発生した場合もヌル文字列を返します。
どのような要因でヌル文字列が返ったかを調べるときは後述のeof関数を使います。

具体的な使用法はサンプルプログラム"telnet-client.bas"を参照してください

inkey$
リアルタイムでのキー入力を得る
<
>

a$=inkey$
print inkey$

eof
ファイルの場合はファイルの終わりを返す関数
0
ファイルの終わりではない
1
ファイルの終わり
<
>
if eof(1) then @exit '
ファイルの終わりなら終了
input #1,a$

ネットワークの場合は入力以下の数値で入力の状態を返す。
-1
エラーが発生した
0
正常(0x00を受信した)
1
切断された
2
入力待ち
<
>
@loop:
a$=input$(1,1)
if a$<>"" then print a$;:goto @loop
state = eof(1)
if state=1 then @exit '
切断された場合
if state=-1 then @error '
エラーが発生下葉愛
if state=2 then @loop '
入力待ちの場合

具体的な使用法はサンプルプログラム"telnet-client.bas"を参照してください

str$
val
len
time$
date$
instr
rnd
<
>
a=rnd(n)
0
からnまでの範囲の乱数を発生させる

netstat
0
のときはネットワークは使用可能
0
以外のときはネットワークは使用不可
<
>
a=netstat
print netstat


今回新設された命令、関数(android Java版限定)

send ファイル番号, 送信コード
 指定されたファイルディスクリプタ経由で1バイト送信する
<
>
open “net:12.34.56.78:90” as #1
send 1, 32 '
空白(スペース)を送信

recv ファイル番号
 指定されたファイルディスクリプタ経由で1バイト受信する
(
戻り値は受信したバイトコード)
<
>
open “net:12.34.56.78:90” as #2
a=recv(2)

※android, Java
版のBasicでバイトコードを直接入出力する場合、input$関数やprint#命令を使うと
文字エンコードの関係で正しく送受信できないことがあります。
使用例はandroid/basicフォルダにあるサンプルプログラム”telnet-client.bas”を参照してください。


(4)
変数
変数の型は数値(実数)型と文字列型だけです。
変数名の末尾に"$"をつけるとその変数は文字列型であると解釈されます。

なお文字列型変数に格納できる文字列は511文字までです。

また配列変数の次元は10次元まで宣言できます。例えば
dim aa(10,20)

とするとaa(0,0)からaa(10,20)までの11x 21個の配列要素が設定されます。



■設定ファイル"basic.ini"について

(1) Windows CE/Mobile
版の場合
本ソフトの画面のレイアウトやフォントサイズはカシオペアA-51用に最適化されていますが
設定ファイル"basic.ini"Windowsフォルダに移動するとレイアウトやフォントサイズを変更できるので
他の機種でも快適に使用することができるようになります。
設定ファイルはテキストエディタで編集することができます。設定項目は以下の通りです。

XWidth      ・・・画面の幅
XHeight
      ・・・画面の高さ
FontSize
      ・・・フォントサイズ
PosYOrigin
     ・・・描画座標の原点位置(Y方向)
ZenkakuStep
    ・・・全角文字の間隔
HankakuStep
    ・・・半角文字の間隔
StepY
        ・・・行の間隔
ConrolY
      ・・・テキストボックスやボタンのY方向の位置
ControlHeight
   ・・・テキストボックスやボタンの高さ
EditX
        ・・・テキストボックスのX方向の位置
EditWidth
     ・・・テキストボックスの幅
EnterX
       ・・・EnterボタンのX方向の位置
EnterWidth
     ・・・Enterボタンの幅
StopX
        ・・・Stopボタン
StopWidth
     ・・・Stopボタンの幅
TempFile
      ・・・一時ファイルの名前


(2) android
版の場合
設定ファイル”basic.ini”sdcardフォルダにコピーすると設定変更することができるようになります。
詳しい設定方法は”basic.ini”自体に記述されていますのでそちらをご参照下さい。
※(
設定ファイルの書式はWindows CE/Mobile版とは互換性がありませんので注意してください)


プログラムのコンパイル(“indows CE版限定)
make
コマンドを使うとコンパイル用ソースファイルを作成できますが。
更にそのファイルを実行可能な形式に変換するためには俺言語コンパイラ"R"と言うソフトが必要となります。

実行可能ファイルを作成するためには makeコマンドで作成したソースプログラムファイルを
ストレージカード直下のフォルダに移動してからCEShellを起動して以下のようにタイプします。

-bc ソースファイル名    ・・・ソースファイル名の拡張子(".r")はタイプしない

そうすると実行可能ファイル"ソースファイル名.exe"が作成されます。

※あらかじめライブラリファイル"A51Basic.rh"とバッチファイル"bc"をストレージカードにコピーしておくこと



コンパイラの制限
コンパイラには以下のような制限があります

(1)数値型は強制的に整数型に変換される
それに伴いsin,cos,exp等の実数型の関数は使用できなくなります。

(2)グラフィック関連の命令が使えない

(3)ネットワーク機能が使えない


■オブジェクトエディタを使ったプログラミング

同梱のオブジェクトエディタ”objedit.jar”を使用すると大きなプログラムでも快適に作成することができます。
下図のように画面の適当な位置にコードを貼り付けて信号線でつないでいく方法でストレスを軽減することができます。








コードを貼り付けて、コンパイルボタンを押すとBasicプログラムが自動的の生成されて
実行ボタンを押すと生成されたBasicプログラムが実行されます。





また、オブジェクトエディタ内ではローカル変数やローカルラベルを使うことが出来ます。
具体的には変数名やラベル名の後に'”%”をつけるとローカル変数やラベルであるとみなされます。

ローカル変数を使うと変数名の重複を気にしなくてすむのでプログラミングが楽になります。

()

'
数値変数
a%=2
print b%

'文字列変数
aa%$=”abc”
print bb%$


'ラベル
@label1%:
goto @label2%

※ これらのローカル変数やラベルはコンパイル時にグローバル変数やラベルに変換されます。


■android版オブジェクトエディタについて
今回のバージョンではandroid版オブジェクトエディタを追加しました

android版1


android版2



プログラム編集

android版2


コンパイル

android版2

実行

android版2



android版オブジェクトエディタのインストール方法
(1)フォルダ"objedit"をそのままandroid端末のSDカードにコピーします
(2)android端末のファイルエクスプローラ等でコピーしたフォルダ"objedit"を開きます
(3)開いたフォルダの中にあるファイル"objedit.apk"をタッチするとインストールが始まります



■注意事項
1 .
本ソフトはフリーソフトです。
2.
著作権は清水 良夫にあります。
3.
本ソフトを使用したプログラムやデータの配布は自由に行ってかまいません、連絡も不要です
4.
本ソフトを使用して発生するいかなる損害も著作者には免責とさせていただきます
5.
以上の項目に同意できる方のみ使用を許可いたします



著作者連絡先
rscqr931@yahoo.co.jp


更新履歴
2011/11/07 ver 0.1
公開
2011/11/25 ver 0.2
2014/03/28 ver 0.2.1 exec, edit
コマンドの不具合を修正
2014/05/03 ver 0.2.2 android
端末用ファイルを追加
2014/05/11 ver 0.2.3 android
端末版の不具合を数箇所修正
2014/07/05 ver 0.2.4 (1) android
端末版の数値入力の不具合を修正
            (2) IS01等の古いandroid端末でも使用できるようにした。
            (3) Java版を追加

2014/10/20 ver 0.2.5 (1) Java版の表示関係の不具合を修正
            (2) Windows Mobile端末版を追加
            (3) "regist"命令を追加(Windows CE, Mobile版限定)

2015/12/03 ver 0.3 (1)
行番号を廃止してラベルを導入した。
            (2) KCTRL, Consoleが無くても動作できるようにした。
            (3) ネットワーク機能を追加した。
            (4) コンパイル機能を追加した。

2016/01/11 ver 0.3.1 (1) input$関数、eof関数の仕様を一部変更
            (2) サンプルプログラム"convert-ver03.bas"の不具合を修正
            (3) サンプルプログラムにtelnetクライアントを追加

2016/08/29 ver 0.3.2 android, Java版を追加

2017/06/01 ver 0.3.3 ObjectEditorに対応
2018/02/01 ver 0.3.4 android版ObjectEditorを追加