2015年9月23日水曜日

X-BASICが削除されているかも、です→大丈夫みたい

Appleから「おまえのアプリをAppStoreから削除した」(意訳)とのメイルがありました。

Xcodeの偽造バージョンから作られているとの指摘。
全く身に覚えのないことで、困惑しています。

ただ、アプリ登録サイトで確認しても削除されたアプリはなく、わけのわからん状況です。

Xcodeを再インストールして作り直すつもりですが、次バージョンも審査に出していますので、今しばらくお待ちください。

同様の指摘をされた経験をお持ちの方がいらっしゃれば、対処法をお教えください。

・・・追記

どうもこれ、私個人宛ではなく、開発者への一斉メイルだったような感じ。そういうアプリは発見次第削除するという警告だった様子。

紛らわしい。

ということで、おそらく私作成分はX-BASICを含め、大丈夫そうです。

・・・・追記
この件らしい。またあの国が原因かい。まったく。

2015年9月16日水曜日

名前が変わります

V3.20が審査ではじかれました。理由は「アプリ名にiOSという名称が入っている」ということでした。

「今まで通しておいて何で今更?」 とは思いますが、仕方ないので名称を変更することにしました。

次からは「X-BASIC'」(ダッシュ)とします。


アプリ名は変わりますが、一般名称は「X-BASIC for iOS」でもOKということで。

とにかく変更箇所が多いので、再度審査に出せるようになるまでには時間がかかるかもしれません。テキストはともかく画像が多いので。

2015年9月7日月曜日

サンプルをダウンロードされた方へのお詫び

progloaderでサンプルをダウンロードすると、実行出来ない.basファイルが入ってしまうことがあります。
これは、オリジナルX-BASIC/68版のソースです。

エラーが出るなぁと思われたら、filer.basですっぱり削除してください。

最新のアーカイブからは削除しています。


2015年9月4日金曜日

V2.96からV3.50までの相違点まとめ

V2.96を基準として、その後のバージョンでの変更点を一覧にしてみました。

変更があった部分の列記だけですので、詳細は最新版の取説で確認して下さい。
なお、現在アップされている取説はV3.50のものです。

前に「+」が付いているものは追加、「−」は削除、他は変更があったものです。 また、バグ修正しただけのものについては省略しています。
v3.00V3.10V3.40V3.50
X-BASIC for iOSX-BASIC for iOSX-BASIC'X-BASIC'
+maxStringLength() +fenum +debugMode() +音楽関数群
+gLocate() fopen() +debugDump() -mikachanフォント
+forcedSJIS() +fopenError() +logoAlert()
+ellipse() +errorCodeFopen() +setTouchKeys()
-randomise() freads() +resetTouchKeys()
+sjisStrWidth() rand() +resetAllTouchKeys()
+utf8StrWidth() rnd() +programName$()
+toascii() +getScreenSize()
width() setFunctionKeyBackgroundImage()
cursorMove() displayFunctionKey()
imgLoad() displayFunctionKeyAll()
tileImgLoad() width()
gTransform() tAtrb()
sp_def() selectMenu2()
+X68互換関数群 getBitmapSize()
+便利関数群 +デバッグ機能
+カード関数群 devicePlatform()
 +checkCompatible()
 +isLandscape()
 gTransform()
 +stick()
 +zipArchive()
 +progSaver.bas
 beep2()
 一応iOS9対応


2015年9月1日火曜日

V3.4の詳細;いつの間にか発売開始されました

V3.4が発売開始になりました。
(審査に実に2ヶ月、この間連絡なし。さらに告知なしにいつの間にやらの発売開始。いい加減にしてくれ、と言いたい気分でした。)

以下の点が更新されます。

・アプリ名をX-BASIC'に変更
アップルの審査で、「アプリ名にiOSを含んだらだめ」といわれたので。
何で今更?という感じですが、仕方ないので変名します。

・デバッグ支援機能を追加
・プログラム選択を改良
・テキスト画面文字数計算式を変更
 申し訳ありませんが、また表示位置と行数が変わる可能性があります。

・関数を追加
 debugMode(),debugDump(),debugPrint()
 logoAlert()
 setTouchKeys(),resetTouchKeys(),resetAllTouchKeys()
 programName$()
 getScreenSize()
  checkCompatible()
 isLandscape()
 stick()
 zipArchive()

・一部関数を強化
 setFunctionKeyBackgroundImage()
 displayFunctionKey(),displayFunctionKeyAll()
 width(),tAtrb()
 selectMenu2()
 getBitmapSize()
  devicePlatform()
 gTransform()
 beep2()

・テキスト文字表示の高速化
 画面表示位置計算方法を新しくしたので、従来必要だった処理が不要になり、高速化されました。

・バグを修正
 詳細は別のネタに上げた通り
 サンプルの新しいテキスト画面幅に合わせた調整&バグも修正してます。

・サンプルをできるだけ全機種対応にした
 実際に操作できるかどうかは別にして、一応画面は表示できるように多くのサンプルを改良しました。また実行できない機種では、その由メッセージを出すようにしました。


メインはデバッグ支援機能でしょうか。少しはデバッグしやすくなるのではと思います。
番号的にはマイナーバージョンアップですが、結構大きな変更です。まあ、これが本来のV3.0のあるべき姿だったと言うことで。

なお、こんな時期の公開ですが、iPad proには対応してません。

2015年8月24日月曜日

V3.10のバグ

V3.10(まで)の不具合です。すべてV3.40で解決されました。もうないだろうと思っていてもまだまだ出てくるもので(T_T)/

・forに対応するnextが存在しないままプログラムが終わっていると、落ちる
例えば、
for i=0 to 2
//  next
はnextがないので、本来はエラーが発生するはずですが、落ちます。エラー処理で発生行を特定しようとするのですが、この場合、エラー発生行が存在しないのでこうなります。for側にてエラーを発生させれば良さそうですが、現在の処理では無理なので。
V3.10まででの回避策は、対応するnextをちゃんと記述することです。

・whileに対応するendwhileが存在しないままプログラムが終わっていると、落ちる
・repeatに対応するuntilが存在しないままプログラムが終わっていると、落ちる
・switchに対応するendswitchが存在しないままプログラムが終わっていると、落ちる
・funcに対応する endfuncが存在しないままプログラムが終わっていると、落ちる
・enum/fenum対応する endenumが存在しないままプログラムが終わっていると、落ちる
   forと同様の理由で発生します。

・10次元配列を宣言するとシステムエラーが発生する
 9次元までしか使えませんでした。また、エラーメッセージが正しくありませんでした。

・新規作成からファイルを保存しようとすると、ファイル名入力欄に「.!」と表示されている
  それを消してからファイル名を入力してください。

・デバッグ処理が残っている
 内部的にデバッグ用処理が有効のまま残ってました。
 実行には関係ありません。

・cardInit()でカードパターンファイル名がSHIFT-JISに対応してない
  V3.10まででは、UTF-8で指定していれば問題ありません。

・行番号付きプログラムが正しく読めない
 正確には、読み込めますが行番号が削除されません。
 V3.10で改行コードがCRのみのファイルに対応した時のエンバグです。
 サンプルではrandomWalk.basが実行できません。
 なお、行番号のあるなしは1行目で判断します。1行目に行番号がない場合、2行目以降に行番号があっても削除されません。それは仕様です。

・設定の旧表示互換がONにならない
 V3.10でのエンバグですが、潜在的にプログラムに問題がありました。
 英語版ではもう1つ、X68互換関数のON/OFFが変更できませんでした。

・プログラムソースの1文字目がサロゲートペア文字の場合、フォント選択画面で文字が表示されない
 正しく動くプログラムでは事実上ありえないけど。

・symbolt()でサロゲートペア文字を含めた時、正しく表示されない

・一部外部関数で、実行時エラーが発生しているはずなのに無視されてしまう
 X68互換関数は、内部的にはX-BASICで書いた処理を手動でObjective-Cにコンパイルしたような記述になっていますが、その中で呼び出している外部関数内でエラーが発生した時、無視されます。外部関数はエラーチェックを言語コア側に任せているため、コアを通さず呼び出した場合にはエラーがチェックされなかったわけです。

・テキスト文字が小さくなりすぎることがある
ディセンダーや文字表示のゴミ対策のため、文字が小さくなることが多くなりました。
計算式を見直し、できるだけV3.00以前と同じくらいになるようにしました。
ただし、行数が減る場合があります。

・beep2()のfloadonlyが無効
 毎回ファイルを読みに行ってた

・removeTouchArea()してもタッチエリアが開放されたように見えない(もしくはタイミングがずれて開放されるようにみえる)

・bitmapImgLoad()/bitmapTileImgLoad()に引数指定時の動作がおかしい
 引数とり込み処理がおかしかった。
 全部省略した時のみ正常動作したはず。

・print 整数数字時の前のスペースの入り方が/68と異なる
/68 iOS
"A";100;"B" A 100 B
"A";-100;"B" A-100 B A -100 B
実はぺけ-BASICと同じ。
floatはあってた(ぺけ-BASICは異なる)

・print "〜"; // とすると表示後改行が入ってしまう
 print "〜"; /* や
 print "〜";://なら改行は入らない

・最終桁で全角文字を表示するとき、先に改行されない
 今までは表示してから改行してた(故に、右端1文字は欠けることがあった)

・スプライト関数が無効の時、互換関数内のスプライト関係関数を呼び出すと異常になる
呼び出し先のスプライト関数が無効になっているのだから、それを使う関数も無効にしなければいけませんでした。

・enumの値を式を使って記述するとき、一部演算子を2つ以上連続で使っているとエラーになる
 たとえば、
enum
 C= 1+2+4// OK
 D= 1 or 2 and 4// エラーが発生する
 E= (1 or 2) and 4 // OK
endenum
となります。or/andだけではなく、比較演算子やshlなど複数あります。
 修正を試みましたが、中間コードコンパイルの核に関わる部分で、単純な修正では無理だとわかり ました。そのため、これは仕様とします。
 ()をつけると大丈夫ですので、そういう記述をおねがいします。

・ファンクションキーの表示座標が実は間違っていた
 今回clearance引数の追加に伴い処理を見なおした時に発覚しました。
 ファンクションキーを多段表示した時に間が空きすぎるのはそのためでした。

・bitmapOpen(fdirect=ON)で落ちることがある
 クリアサイズを求める変数が不定になっててエリアをオーバーしてクリアしてしまうことがありました。グラフィックを実行すると落ちることがあるのはほとんどこれが原因ではないかと。

・全くの初回起動時、V3.0以降で追加された設定が初期化されてない
 だから使えなくなっていました。

・サンプルのloadFromURL_zipExpand.basがエラーを発生する
これはサンプルのバグではなく、それが読み込もうとしているサーバー側のファイルの問題でした。すでに修正されています。

・zipExpand()で、Windows環境下で作られたZip内の日本語ファイル名ファイルが展開できない
Zip内のファイル名の文字コードは作られた環境に依存するようです。Windows上で作ったものはSHIFT-JISでした。ZipライブラリがUTF8にしか対応してなかったので自動判別して展開できるようにしました。

・jpegHeader()が正しい情報を返せないことがある
 想定外の格納され方をされていたためです。
 X68時代に作ったヘッダー解析処理では、現在の画像に対応しきれてませんでした。

・pngHeader()が正しい情報を返せないことがある
 PNGファイルはiOS内部に入れられるときヘッダーが改変される(多分リソース内のみ)ようで、情報の位置がずれてました。それに対応しました。

・motionGetRotation()/compassGetData()/symbol(,ht)/fontSize(,wy)/getWidth(,fontWx,fontWy)でfloat変数に値を返すときに落ちることがある

・モーション関数を使った後にメモリが確保されたままになっている
モーション関数を使ったプログラムを何度も実行するとメモリエラーが発生する可能性があります。

・motionEnd()を呼び出さないでendするとモーション機能が動いたままになってしまう

・emailSend()でzip圧縮した時のファイル作成日時がおかしい
これは使っていたライブラリ(ZipArchive)のバグでした。

・str$(正の数字)で前にスペースが入る
例えばstr$(1)=" 1"(len=2)になります。X-BASIC/68では前のスペースは外れるので"1"(len=1)です。これは浮動小数点数値でも同じです。なお、負数の場合は前に"-"が入ります。

2015年8月7日金曜日

V3.10が公開されました。

別ネタに書いたとおり、V3.00で落ちてしまうバグが発見されました。
これを解決し、機能を少し追加したV3.10は現在審査待ち中です。
今しばらくお待ち下さい。

->なんと即日公開されました。やればできるじゃん>Apple。