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


転載禁止です。

0 件のコメント:

コメントを投稿