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
転載禁止です。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿