復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第428回]
●M80用プログラムを添付していただきました
[第426回]で、文字を着色指定するエスケープシーケンスを使ったテストプログラムをZB3BASICとZ80アセンブラで作って、そのリストをお見せしました。
そうしましたら長野県のN様からメールをいただきました。
Z80アセンブラのプログラムをM80(MACRO−80)用に書き直しました、ということでソースプログラムを添付していただきました。
MACRO−80は[第189回]〜[第195回]でご紹介いたしました。
Microsoftのマクロアセンブラです。
私はしかしそれよりは機能はちょいと低いですけれど、ずっと昔に自作したZ80アセンブラを使っておりまして、M−80アセンブラは使ったことがありません。
あ。
その中日電工のオリジナルZ80アセンブラZASM.COMはND80ZV(ND80Z3.5)付属CDROMに入っております。
せっかくこうしてCP/M互換DOSの検証をしているところですので、CP/Mの上で動くM−80アセンブラを使うとよいのですけれど、なにしろ使ったことがないものですから、ものすごいボリュームの英文マニュアルと首っ引きでサンプルプログラムを書いている余裕などとてもありません。
そこへいきますと、なんたってZASMは自作のZ80アセンブラですから、これはもう目をつぶっていたって書けてしまいます。
勢い、CP/M互換DOS用のサンプルとしてはいかがなものか、と思いつつも、ついMACRO−80ではなくて、自作のZASMを使ってしまいます。
そうしたところに思わぬ援軍です。
これは有難いことです。
さっそくN様にお許しをいただいて、せっかく作っていただいたM−80用のアセンブラソースプログラムを皆様にもご紹介いたします。
M−80用のプログラムを書く場合の参考にしてくださいませ。
あれ。今メールを確認しましたら、まだN様からはっきりしたご返事をいただいておりませんでした。
あ。しかし。皆様方の参考にしていただくためのサンプルですから、N様もきっとご快諾されることと思います。
;ESC[2J clear screen test ;ESC[xm color disp test ;2013/6/23 6/26 .Z80 ASEG ORG 100h FCALL EQU 0005h ; LD DE,LIST1 LD C,09h CALL FCALL LD E,01Bh LD C,02h CALL FCALL LD DE,LIST2 LD C,09h CALL FCALL LD DE,LIST3 LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BGBLU LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BGBLK LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BGW LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,RED LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,GREEN LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BGM LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,YELOW LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BGG LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BLUE LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BGC LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,MAG LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BGY LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,CYAN LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,WHITE LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,STN LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BGR LD C,09h CALL FCALL ; LD E,1Bh LD C,02h CALL FCALL LD DE,BGSTN LD C,09h CALL FCALL RET LIST1: DB '*** ESC clear screen test ***$' LIST2: DB '[2J$' LIST3: DB '*** ESC[2J clear screen test end' DB 0Dh,0Ah,24h ; BLACK: DB '[30mCOLOR',3Dh,'BLACK $' RED: DB '[31mCOLOR',3Dh,'RED $' GREEN: DB '[32mCOLOR',3Dh,'GREEN $' YELOW: DB '[33mCOLOR',3Dh,'YELLOW $' BLUE: DB '[34mCOLOR',3Dh,'BLUE $' MAG: DB '[35mCOLOR',3Dh,'MAGENTA $' CYAN: DB '[36mCOLOR',3Dh,'CYAN $' WHITE: DB '[37mCOLOR',3Dh,'WHITE $' STN: DB '[39mCOLOR',3Dh,'STANDARD $' BGBLK: DB '[40mCOLOR',3Dh,'BLACK $' BGR: DB '[41mBGCOLOR',3Dh,'RED $' BGG: DB '[42mBGCOLOR',3Dh,'GREEN $' BGY: DB '[43mBGCOLOR',3Dh,'YELLOW $' BGBLU: DB '[44mBGCOLOR',3Dh,'BLUE $' BGM: DB '[45mBGCOLOR',3Dh,'MAGENTA $' BGC: DB '[46mBGCOLOR',3Dh,'WHITE $' BGW: DB '[47mBGCOLOR',3Dh,'WHITE $' BGSTN: DB '[49mBGCOLOR',3Dh,'STANDARD $' ; END |
.Z80 ASEG ORG 100h ; *** ESC test *** ; ESC ONLY TEST PROGRAM ; CR EQU 0Dh LF EQU 0Ah ESC EQU 1Bh FCALL EQU 0005h ; JP START ; START: LD DE,DSP00 LD C,09h CALL FCALL ; LD B,7 ; SLOP1: PUSH BC CALL DSUB1 POP BC ; DJNZ SLOP1; ; ; CALL DSUB2 ; LD C,09h ;DSP01 LD DE,DSP01 CALL FCALL ; RET ;CP/M END ; DSUB2: LD B,24 LD HL,DSP0A LOPS2: PUSH BC PUSH HL ; LD C,02h LD E,(HL) CALL FCALL ; ; PUSH HL PUSH BC CALL CRLFS POP BC POP HL ; ; POP HL POP BC ・ INC HL DJNZ LOPS2 ; RET ; ; ; DSUB1: LD B,10 LD HL,DSPNO LOPSM: PUSH BC PUSH HL LD C,02h LD E,(HL) CALL FCALL POP HL INC HL POP BC ; DJNZ LOPSM ; RET ; CRLFS: LD C,02h LD E,CR CALL FCALL ; LD C,02h LD E,LF CALL FCALL ; RET ; ; ; DSP00: DB ESC,'[2J$' DSPNO: DB '0123456789' DSP01: DB ESC,3Dh,'(6(1)y',3Dh,'8,x',3Dh,'22' DSP02: DB ESC,'[3A(2)up3' DSP03: DB ESC,'[12C(3)rigft12' DSP04: DB ESC,'[7B(4)down7' DSP05: DB ESC,'[47D(5)left47' DSP06: DB ESC,'[1B(6)down1**1234567890' DSP07: DB 'abcdefghijklmnopqrstuvwxyz' DSP08: DB ESC,'[10D(7)' DSP09: DB ESC,'[K(8)$' DSP0A: DB ' ABCDEFGHIJKLMNOPQRSTUVWXYZ' END |