2014年3月3日月曜日

WIndows版と言うよりDOS版って要ります?

X-BASIC for iOSのWindows+Cygwin版、要するにコマンドライン版を作るとしたら、どれくらい要望あるでしょうか?

コアはv2.9相当ですが、関数はiOS依存分は移植出来ないのでファイルと数値関数だけです。

いや、当面iOS版をいじる時間が取れそうにないので、小手先でこれを作ろうかとふと思った物で。

実はX-BASIC for iOSの開発当初はCygwin上でコアの開発をしていました。

iOSに移植して順調に動くようになってからはそちらは更新しなかったのですが、
ソース上はいまだ両方が作れるように、いや、現在は作りやすいようになっているのです。

まあ要望がなければやりませんが、ちょいとお聞きしようかと。

なお、ソースの公開はしません。あしからず。

→V3.20でソースの管理の都合上、DOS用機能を削除したのでもう作れません。あしからず、ご了承を。

2014年1月24日金曜日

ぺけ-BASICの外部関数のバグについて&ぺけ-BASIC v0.02.002

X-BASIC for iOSの元になったぺけ-BASICは、外部関数にもバグがいるようです(教えていただきました)。

X-BASIC for iOSは、本体こそぺけ-BASICのソースを解析した結果を元に作っていますが、外部関数はX-BASIC/68の仕様を元に完全に一から書き上げたので、気がつきませんでした。

関数名 dskf()
バグ 大容量メディアに対して使った場合、リターン値が正しくないことがある。
詳細 この関数はDOSコールの_DSKFREの返す値を
使用可能なクラスタ数.w * クラスタ当りのセクタ数.w * セクタ当りのバイト数.w
と乗算してリターン値を作っていますが、ここで使っている68000の命令がすべてmulu.w =.w*.w->.l演算であるため、3つ目の乗算で.lで得られた値の.w部分のみ使ってしまい、 このバグが発生します。
要するに、使用可能なクラスタ数.w * クラスタ当りのセクタ数.w が16ビットで収まらない ような大容量デバイスに対して使用すると、バグります。
iOS版での状況 iOS版には存在しない関数です。

関数名 fread()/fwrite()
バグ リターン値が、X-BASIC/68は読み書き出来た「要素数」であるのに対し、 ぺけ-BASICではバイト数が返ってきています。
詳細 これはDOS _READ/_WRITEのリターン値をそのまま返しているためで、 リターン値を要素サイズで割る処理が抜けています。
iOS版での状況 iOS版は/68と同じく要素数を返します。 ちなみに、Cの関数であるfread()/fwrite()も要素数を返します。

これら3つの外部関数とfloat変数の初期化バグ、および一部エラーが発生した時に OSがトラップを発生させるバグを修正したぺけ-BASICを一応作りましたので、ご入用の方は、「こちら」からどうぞ。

2014/01/26追記:
このバージョンで、68000機上で「未宣言変数があると落ちる」と言う報告をいただいています。
(68030では発生しないらしい。)
この問題は、オリジナル版をうちの環境でアセンブルした物でも発生するので、開発環境の差異による問題かもしれません。現在調査中です。しばらくお待ちください。
(直せない可能性も有り。)

2014/01/27追記:
どうやらこの問題はオリジナルからあるようです(と言うか、オリジナルでも発生しました)。
ワークエリアが足りない時も落ちます。
なので、私の追加した部分以外にも調査の手を広げる必要があるので、さらに時間がかかりそうです。(今余り時間が取れないので。というか、食が足りてなくてやる気が出ない方が強いかも。
差し入れ絶賛募集中。酒類も可^_^;)

2014/01/27追記2:
とか書きながら、ビール飲みつつ解析してたらバグを突き止められて修正。
ご褒美、絶賛受付中(^_^;)

2014/01/31追記:
まだトラップが発生するという報告があります。
68030では発生せず68000だけということですが、当方では68000でも発生せず原因不明です。

2014/02/05追記:
問題はBASIC本体側ではなく、FM音源ドライバを組み込んでいないのにMUSIC.FNCを組み込んでいたためわかりました。と言うことで、ここの公開版は問題なしです。
でも、起動時や正常終了時にはエラーが発生せず、エラー時のみ引っかかるのかは、さらなる解析が必要そう。

2013年12月6日金曜日

V2.9ようやく公開!

実に3ヶ月の長きにわたって審査で拒絶され続けたX-BASIC for iOSがようやく公開されました。

審査で問題になったのはファイルのインポート機能。
Appleは.basがインポート出来ている=外部実行ファイルがインポート出来ていると言うのですが、プログラムではzip内の.basはすべて無視して展開されないようにしていたし、最終的には.basを含むzipはエラーを出してインポートできないようにしていました。

それでも「.basがインポート出来る」 の一点張りで、「うちの実験では再現できないから使っているファイルを送ってくれ」と言ったら、実験方法も教えてくれないし、ファイルも送ってくれずに「外部の実行ファイルがインポートできる」という最初に戻って堂々巡り。手法を教えると抜け道を作ると思っているのかもしれないけど、まじめに対応しようとしている者にとっては、これはいちゃもんにしか見えない対応。

直接電話をしてきてくれもしたんだけど、技術者直ではないので要領を得ない。
一応日本語で書けてきてくれるのだけど、どうにも肝心な部分の通訳がうまくいってないので訳がわからない。というか、理解したつもりで対応しても拒絶される始末。

「わけがわからないよ」と言うんでしたっけ?、こういうときは。

結局、インポート機能を全削除しての審査通過です。
zipのインポート機能は、事実上審査を通らないと思った方が良さそうです。

インポート機能を削除するため、今までここで公開していたほぼすべてのサンプルを内蔵させました。著作権的には「あれ」ですが、致し方ないと言うことで、お許しいただきたいと。もし公開を望まない原作者の方がいらっしゃれば、ご連絡ください。

それと、ファイルインポート機能は削除しましたが、何とかならんかとお考えの方は、新しい取説をよく読むと幸せになれるかもしれません。そのうちここでも何らかの報告ができればいいなぁと。

酷暑中、審査をクリアするためにいろいろやったのも、もう遠い思い出。
3ヶ月は長いよ 。あまりにいろいろありすぎて(後略)。もう冬じゃないか・・・。
その間にiOS7対応まで出来てしまったことは幸いかも。

これでようやく他のアプリもiOS7対応を開始できます。
もっとも、最近は全然時間が取れないので、いつになるかわからないのですが。

2013年11月18日月曜日

V2.5発売中止の件

現在、X-BASIC for iOSはAppStoreから削除されています。
これは、根本的には「アップルの審査が遅すぎる」せいです。

V2.6〜2.8の審査が、理不尽な要求により実に2ヶ月もかかっており、
その間指摘された事項が旧バージョンにも存在するとのことで、
旧バージョンまで削除されてしまいました。

審査のテストが非常に曖昧で、その方法も解決も示さないまま「だめ」というだけで、
しかも1回の審査に最低2週間もかかるという遅さの上にこの対応なので、
非常に困っています。
削除されたということは当然収入が絶たれるわけで、これは経済的被害にもなってます。

報告・発見されているバグも修正できない(修正版を公開できない)のもこのせいです。
修正版を出せないのは非常に心苦しいのですが、全てはアップルに責任があるので、あしからず、ご了承ください。

現在V2.8がIn Review状態にありますが、これとてどうなるかわかりません。
アップルは拒絶するなら、それに至ったテスト手順を明確に公開すべきです。
非公開のままどこそこに問題があるから「ダメ」というのは嫌がらせにしか思えません。

他のアプリケーションのiOS7対応もしたいのですが、これが通らない限りやる気にならなくて。

iOSからAndroidへのプログラムコンバーターでもあればいいのに・・・。

2013/11/19追記:
また拒絶されました。存在しない機能が「ある」と指摘されるので、もはや全くお手上げです。
アップルは無理矢理いちゃもん付けて公開をあきらめさせるつもりかもしれません。
アップルの横柄な態度にはもううんざりです。

2013/11/20追記:
仕方ないので、ファイルのインポート機能を全部削除した版を作ろうかと思っています。
今あるサンプルをすべて入れて。サンプルは著作権的に「あれ」な部分がありますが、アップルがファイルインポートを認めないので「仕方ない」ということでお許し頂きたい。
作者の方、もしくはお知り合いの方はご連絡いただければありがたいかと。

2013/11/21追記:
インポート機能を削除した版v2.9を審査に出します。

2013/11/24追記:
アップルから電話があったのですが、「インポート機能を全削除したバージョンを作る」ということで了解してもらった。再審査が早く進むよう配慮してくれると。
ほんとうに早くしてくれると有難いのですが。
なおプログラムを組む方は、V2.9の取説はサポートHPにあるものを見たほうが「幸せ」になれます。時間や「配慮」により内蔵できませんでしたが、サポートツールを公開「できれ」ば、「みんなでより幸せ」になれるかと。

「山を超える時、そこを登り切る、トンネルを掘るなどの真正面から行く方法だけでなく、全く別の方向から眺めて別のルートを探すなど大胆な発想の変換もしてみるべき」と思った次第。

「インポート機能は、他のアプリとの連動が本質的に必要でないなら、使わないほうが吉」。審査が厳しくなるだけ。


2013/11/27追記:
V2.9が審査開始。確かに審査開始が「非常に」早い。このまますんなり通ってくれれば良いのに。

2013/12/06追記:
ようやく公開!!実に3ヶ月。長かったねぇ。

2013年9月17日火曜日

V2.6、もといV2.7の予告と今後の予定(終了)

「X-BASIC for iOS」v2.6を現在審査に出していますが、
どうやらアップルはiOS7対応アプリの審査を優先しているようで、
対応してないアプリの審査は大幅に遅れているようです。
今しばらくお待ちください。

→2013/09/25追記
散々待たされた挙句に拒絶されたので現在調整中ですが、PCが不具合からの復旧中で作業ができません。です。でも拒絶理由がわからない・・・。

→2013/09/27追記
この際ですので、V2.7まで上げてiOS7対応を考えています。
アイコンはすでに作り終えましたが、表示系の違いがあまりに多くて対応に手間取っています。

アップルは毎回仕様変えすぎ(T_T)

→2013/10/02追記
アップルからの電話にしたがって、拒絶された部分の機能を削除して再審査に出しました。
同時に、iOS7上で取りあえず動くようにしました。

→2013/10/03追記
V2.7を審査に出しました


→2013/10/15追記
とにかく審査が進みません。アップルさん、人員増やしてください。


→2013/10/17追記
さんざん待たされたあげく、また拒絶されました。

最初のバージョンから存在している部分で、何で今更という感じです。
根本的な部分であり、回避策が思いつきません。
iOSの審査厳しすぎます(ほとんどいちゃもんにも聞こえる)。

そこが引っかかっているため、当然バグ取り版も出せません。

このままいけば、公開を終了しなければならない可能性もあります。
(古いバージョンを公開し続けることすら許されない。)

→2013/10/22追記
また電話があって拒絶。
とりあえずコード上抜けがあったのは確かなので強化。
でもこれでまただめなら・・・どうしよう?

→2013/10/31追記
また拒絶。「ソース送るから、どこが悪いのか詳しく教えてくれ」と言ってみた。
もう本当にどこがダメなのかわからん。
すべての拡張子を調べろというのか?


・・・V2.6/2.7での変更点・・・

・1配列の総要素数が65535を超えられなかったのを修正
・error on/offの動作が逆だったのを修正
・error on2を追加
・再帰呼び出し段数に制約をかけて落ちないようにした(エラー追加)
・アニメーションが実行された状態でプログラムを中断した時、次のプログラムを実行してもアニメーションが残ってしまうのを修正
・x68256Color2iOSColor()追加
・versionXBfunc2$()が使えなくなっていたのを修正
・全角半角変換関数を追加
・取説内で検索できなくなっていたのを修正(iPad)
・iOS7対応(とりあえず動作するようにした)
・個別ファイルでのインポート機能を削除(アップルからの指示による)
・iPadでRUNボタンが見えなくなることがあるのを修正
・サンプル追加
・細かいバグの修正

・・・

現在V2.8をiOS7完全対応版として準備中ですが、V2.7が審査を通らないかぎり、v2.8は出せません。そのiOS7対応版ですが、ソース表示&編集に使っているUITextViewというモジュールに多数のバグがいるので正常動作しません。そのため、現在保留中です。


また、iOS7対応は32ビットのみで、64ビットネイティブ動作は、労多くして益「なし」なので行いません。X-BASIC for iOSはぺけ-BASICの構造を模している部分があり、intが64ビットになると、変更が多すぎるからです。

 次はV3.xでデバッグ機能を強化しようと思っていますが、再就職も決まって、おそらくこれからしばらくは開発時間がほとんどとれないでしょう。
住む場所、仕事などすべてに関して不定の状況に陥っており、先行きが全く見えません。正直、世捨て人になる可能性も出てきました(極めてマジ)。
世を捨てたほうが開発には集中できるんですけど(T_T)/~

就職が決まったと言ってもかなり安い給料(前職の半分以下)なので、(秘密)しないとやって行けなさそうなので余計です(雇ってくれただけましなので、文句を言うつもりは全くない)。
最低数ヶ月、下手すると1年位かかるかもしれません。
その間は、サンプルは何とか1月1つは出してしのげればと思うのですが。
あしからずご了承ください。


上記の通り基本的部分で審査が通りませんので、V3.xの開発は全く白紙になりました。
Androidに移行しようかとも思いましたが、全く開発経験が無い上に、結構iOSに依存しているので、それはそれで、不可能に近いです。

市場として広いからと言って、アップルは思い上がっているのではないでしょうか?
iOS7のようなユーザーや開発者を無視したアップデートするし。

2013年9月16日月曜日

サンプル:ゲーム「digman」

 X1用のゲーム「DIGMAN」を移植しました。
 どことなくpitmanに似てますが、気のせいです(^_^;)。
「Oh!X 1990/5」よりの移植です。
もとネタがあるので、転載禁止です。


 Zipファイルはこちら:XBdigman.zip

2013年9月6日金曜日

サンプル:トランプゲーム 一人占い「TEN」






iPad縦画面専用です(横画面は未検証)。



Zipファイル :XBten.zip

cTen.basがiOS用です。ten.basは、X-BASIC/68またはぺけ-BASIC用です。
どのように移植したかを示すための参照用として入れてあります。