MYCPU80でCP/Mを!
超巨大基板の8080互換HCMOS・CPUでCP/Mを走らせてしまおうという、なんとも狂気なプロジェクトです!
[第107回]
●MBDOSを修正しました
前回テストプログラムMFTST7を実行しましたところ、ファンクション0C(version No.の取り出し)のコールで、本来ならば0022と表示されるはずのところが、全然version No.とは関係ないようなおかしな値が表示されました。
ファンクション0Cでおかしなことがおきているようです。
ファンクションコールはCP/Mの本体ともいうべきBDOSプログラムの機能です。
MYCPU80用のZB3DOS(CP/M互換DOS)では(ND80Z3.5、V用も同じですが)、CCP、BDOS、BIOSの3本のプログラムに分けて作成したのちに、バイナリレベルで1本のファイルにまとめています。
MYCPU80用のBDOSプログラムはMBDOSというファイル名で作成しています。
下はMBDOSプログラムのアセンブルリストからファンクション0Cに関係する部分のみを抜き出して表示したものです。
;********* BDOS ENTRY ************
;
D406 C3A1D4 JMP BDOS
;
D4A1 210000 BDOS:LXI H,$0000
D4A4 39 DAD SP
D4A5 229CD4 SHLD DSPWK
D4A8 31E0E8 LXI SP,DSP
D4AB C5 PUSH B
D4AC 21BDD4 LXI H,BDOSRT
D4AF E5 PUSH H
D4B0 69 MOV L,C
D4B1 2600 MVI H,00
D4B3 29 DAD H
D4B4 01C3D4 LXI B,FNCTBL
D4B7 09 DAD B
D4B8 7E MOV A,M
D4B9 23 INX H
D4BA 66 MOV H,M
D4BB 6F MOV L,A
D4BC E9 PCHL
D4BD C1 BDOSRT:POP B
;? LD SP,(DSPWK)
D4BE 2A9CD4 LHLD DSPWK
D4C1 F9 SPHL
D4C2 C9 RET
;
D4C3 15D5 FNCTBL:DW SYSRES;00
D4C5 18D5 DW CONIN;01
D4C7 35D5 DW CONOUT;02
D4C9 E8D5 DW RDRIN;03
D4CB EBD5 DW PUNOUT;04
D4CD EFD5 DW LSTOUT;05
D4CF F3D5 DW CONINOT;06
D4D1 07D6 DW IOBYTERD;07
D4D3 0BD6 DW IOBYTESET;08
D4D5 10D6 DW DEOUT;09
D4D7 1ED6 DW CONBFIN;0A
D4D9 93D7 DW CONCHK;0B
D4DB ACD7 DW VERRD;0C
;
;VERSION NO. READ FCALL 0C
;
D7AC 3E22 VERRD:MVI A,22
D7AE 6F MOV L,A
D7AF 2600 MVI H,00
D7B1 C9 RET
;
|
D4BD C1 BDOSRT:POP B
D4BE 22C9D4 SHLD BDOSHLWK
;? LD SP,(DSPWK)
D4C1 2A9CD4 LHLD DSPWK
D4C4 F9 SPHL
D4C5 2AC9D4 LHLD BDOSHLWK
D4C8 C9 RET
D4C9 00 BDOSHLWK:DB 00
D4CA 00 DB 00
; |
