2013年8月29日木曜日

サンプル:トランプゲーム7並べ


 


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


Zipファイル :XB7.zip
c7.basがiOS用です。7.basは、X-BASIC/68またはぺけ-BASIC用です。
どのように移植したかを示すための参照用として入れてあります。

2013年8月23日金曜日

サンプル:トランプゲーム99


 

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


Zipファイル :XB99.zip

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

2013年8月11日日曜日

X-BASICのプログラム末尾にEOF(&h1a)を付けるプログラム

X-BASICのプログラム末尾にEOF(&h1a)を付けるプログラムです。

X-BASIC/68はEOFコードでファイルの終端を認識するため、それが必須です
(ないと読み込み異常を起こします)。

現在のWindows上の各種テキストエディタやXcodeはEOFを付加しないので、
それを付けるのがこのプログラムです。

一応ここでもソースコードを公開しますが、 X-BASIC/68用なので、X-BASIC/68またはぺけ-BASIC上で動かさないと無意味です(保存時はSHIFT-JISで)。

それと、高速化を何も考慮してないので、かなり遅いです。 必要なら、BC.Xでコンパイルしてくださいまし。


/* X-BASICのプログラム末尾にEOF(&h1a)を付けるプログラム
/* X-BASIC/68はEOFコードでファイルの終端を認識するため、それが必須である。
/* (ないと異常動作を起こす。)
/* ぺけ-BASICはサイズでも認識するのでなくても問題ない。X-BASIC for iOSも同様。
/* 現在のWindows上のエディタやXcodeはEOFを付加しないので、それを付けるのがこのプログラム。
/* これはX-BASIC/68またはぺけ-BASIC上で動かさないと無意味。
/*
print "X-BASIC/68でサンプルプログラムを正常読み込みさせるため、"
print "BASICプログラムファイルの終端に&h1aのコードを付加します。"
int fp,ofp
int c,cc
str fname,ofname
input "ファイル名(拡張子.bas不要)";fname
ofname=fname+"_1a.bas"
 fname= fname+".bas"
print "出力ファイル名:";ofname
print "開始するには何かキーを押してください"
while inkey$(0)="":endwhile
print "しばらくお待ちください"
/*
fp=fopen(fname,"r")
if fp<0 then {
 print "ファイルが見つかりません:";fname
 end
}
ofp=fopen(ofname,"c")
if ofp<0 then {
 fclose(fp)
 print "ファイルが作成できません:";ofname
 end
}
cc=-1
while 1
 c=fgetc(fp)
 if c<0 then break
 fputc(c,ofp)
 cc=c:/*1つ前の出力文字
endwhile
if cc<>&h1a then fputc(&h1a,ofp)
fclose(ofp)
fclose(fp)
print "終了しました"
end

X68用なので、LZHで圧縮しています。
LZHファイル : add1a.lzh

ちなみに、ぺけ-BASICはサイズでも認識するのでなくても問題ありません。
X-BASIC for iOSも同様です。

2013年8月9日金曜日

サンプルの完成度が低いとお嘆きの貴兄に

X-BASIC for iOS用の各種サンプルをあげていますが、
各サンプルの完成度がそれほど高くありません。
移植物の場合、元のできが悪いのではなく、移植の出来がよくない、という意味です。


特にほとんどのものがiPad画面専用なのは、手抜き以外の何者でもありません。
というか、X68やMZ由来のゲームはiPadぐらいの画面サイズがないと移植できません。

iPhone/iPod touchに対応するには、よほどそれに特化して作らないとだめで、その手間は今はかけられません。

操作性にも難はあるでしょうし、グラフィックがちゃちというのもあるでしょう。

カードゲームで札が画面に対して小さいとか縦長だとかいうのは、X68版のものをそのまま移植しているからです。サイズを変えると座標が変わってしまい、その合わせ込みは非常に大変なのです。

しかしすべては「サンプル」ということでお許しいただきたいです。
サンプルの主目的は、各種機能をたたいてデバッグすることにもありますので。

ソースもすべて公開しているので、不満があれば、各人で修正していただくのが正しい道です。
いいのができれば送っていただければ幸いかと<m(__)m>

なお、基本的に、サンプルはよほどのバグが見つからない限りバージョンアップしません。

2013年8月8日木曜日

サンプル:Z80アセンブラー「SuperBASE」


Z80アセンブラー「SuperBASE」を移植しました。

 「I/O別冊 WICS・BASEプログラム集」のMZ-2000用をX1に移植したのが元で、
さらにそれをX68000のCに移植し、今回X-BASIC for iOSに移植しました。
このくらいのサイズのプログラムでも動くという証明用です。

BASICで記述しているのでそれなりに遅いですが、ちゃんとアセンブルできます。
遅いと言っても、実はX68000のC版よりか速かったりします。

SuperBASEはキャリーラボという会社が作った独自ニーモニックのZ80アセンブラーです。


それがどう言うものかは説明書を読んでください。

・・・こんな感じ・・・
;
; DSK-CZ V4.2
;
DRIVE EQU $FF87
ERRJP EQU $FF8A
DSKLD EQU $021A
PRET  EQU $01FB
RDDSK EQU $FF00
IBUFF EQU $0FE3
;
 OFFSET $A000
 START $0EF2 ;HTAB
;
REW
 CALL CDIR
 GOTO $0DEC
;
APSS1
 A=(DIR)
 A+ IF A<8 GOTO APS1
 A=(RDIR)
 A+ IF A>=32 GOTO APS2
 (RDIR)=A
APS2 A=0
APS1
 (DIR)=A
 RET
;
DLOAD
 [BC [HL [DE
 CALL TRNS
 DE=(REC)
 A=B IF A=0 GOTO DLAST
 CALL RDDSK IF CY GOTO DL3
 A=B A=A+H H=A
 DO !() DE+ UNTIL DEC(B)=0
 GOTO DLAST
;
FILE
 A=(7) IF A=40 GOTO $6200
 CALL $143C
 GOTO $61D3
;
; 0FE3-10E2 IBUFF
 START $10E8 ;Screen Edit
;
RDS
 DINT
 [BC [HL [DE
 [HL [AF
DN A=00 (DRIVE)=A
 HL=DSKER-RDS+RDDSK (ERRJP)=HL
 A=$1D PORT(0)=A
 ]AF ]HL
 CALL DSKLD
 CY=0
RD1
 A=$1E PORT(0)=A
 EINT
 GOTO PRET
DSKER
 CY=1
 GOTO RD1
RDE

・・・


X68版を作ったとき、関係者の人にお見せしたら喜んでらしたし、もう今更なので許していただきたいかと。

なお、V2.3以前のX-BASIC for iOSではバグのため正常に走りません。
必ず、V2.4以降にバージョンアップしてください。


Zipファイル :XBsbase.zip


転載禁止です。

2013年8月1日木曜日

サンプル:レーダースネーキー


MZ-80Kの傑作ゲーム、「レーダースネーキー」を移植しました。
しかも、ベタ移植です(本当は少しだけアレンジしてあるんだけど)。

昔はこんなゲームを楽しんでいたんだということを、
ある人はなつかしく、ある人とは新鮮な気持ちで知ってください。

「I/O別冊 WICS・BASEプログラム集」よりの移植です。
もとネタがあるので、転載禁止です。

iPad縦画面のみ対応+日英対応です。



Zipファイル :XBrs.zip