2012.3.15
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第61回]

●ファンクションコール一覧表について

前回のファンクションコール一覧表を昨日UPした段階では、ファンクションコールのうちのいくつかは「ピンク」で着色していました。
CP/Mが一般に使われていた当時とは周辺装置が全く異なっていますから、今更テープパンチャーでもあるまい、ということでそのようなものを対象としたファンクションコールなどについては扱わないことにするつもりでした。

しかし本日になって、ちょいと考え直しました。
それは確かにそうだけれども、たとえばI/Oデバイスとして232Cは今でも使えるわけですから、とにかくまずはやれるだけのことはやってみてから、最終的に判断することにしてもよいのでは、と考えたからです。

そこで本日になってから、昨日UPした表に手を加えて、「ピンク」に着色したもののうち、ほとんどを無地に戻しました。
テストをするファンクションコールが増えてしまいますが、これからオリジナルのCP/Mを作成する作業をしていくことになりますから、その前準備として、できるだけCP/Mの振舞いについて知っておくことは決して無駄ではないと思います。

ということで、ファンクションコール一覧表の中から、手っ取り早く試すことのできそうなものを選んで、つぶしていくことにいたします。

●IOバイトとバージョンaiファンクションコール07H、0CH)

手始めにファンクションコール07H(IOバイトの取り出し)とファンクションコール0CH(バージョンbフ取り出し)のテストプログラムを作りました。
ソースプログラムリストです。

; BDOS TEST7 get IOBYTE & version No.
;2012/3/15
;
        ORG $8100
        FCALL=$8005
;       
;IOBYTE
        LD C,07;get iobyte
        CALL FCALL
        PUSH AF
        LD DE,IOBYTE
        LD C,09;string out
        CALL FCALL
        POP AF
        CALL B2HEXDP
        CALL CRLF
;version no.
        LD C,0C;version no. get
        CALL FCALL
        PUSH HL
        LD DE,VERNO
        LD C,09;string out
        CALL FCALL
        POP HL
        CALL HEX4DP
        RET
;
;CL & LF
CRLF:LD A,0D
        CALL ADP
        LD A,0A
        JP ADP
;space disp
SPDP:LD A,20
;A disp
ADP:PUSH BC
        PUSH HL
        LD E,A
        LD C,02
        CALL FCALL
        POP HL
        POP BC
        RET
;HL(bynary 2bytes) to asckii 4bytes & disp
HEX4DP:PUSH BC
        PUSH HL
        CALL B2HEX4;binary 2 bytes to ascii HEX 4bytes
        PUSH DE
        EX DE,HL
        CALL DEDP
        POP DE
        CALL DEDP
        POP HL
        POP BC
        RET
;A(binary) to asckii 2bytes HEX & disp
B2HEXDP:PUSH BC
        PUSH HL
        CALL B2HEX2
        CALL DEDP
        POP HL
        POP BC
        RET
;
;DE(asckii 2bytes) disp
DEDP:PUSH DE
        LD E,D
        LD C,02
        CALL FCALL
        POP DE
        LD C,02
        CALL FCALL
        RET
;
;binary to hex, 2bytes data to ascii 4charactors,HL to HL,DE
B2HEX4:LD A,H
        CALL B2HEX2
        EX DE,HL
        LD A,E
;binary to hex, 1byte data to ascii 2charactors,A to DE
B2HEX2:PUSH AF
        RRCA
        RRCA
        RRCA
        RRCA
        CALL B2HEX1
        LD D,A
        POP AF
        CALL B2HEX1
        LD E,A
        RET
;binary to hex, low 4bit to ascii 1charactor
B2HEX1:AND 0F
        ADD A,30
        CP 3A
        RET C;0-9
        ADD A,07;A-F
        RET
;
IOBYTE:"ioby"
        "te"
        DB 3D;=
        DB 24;$
VERNO:"vers"
        "ion "
        "HL"
        DB 3D
        DB 24;$
;

説明の途中ですが本日は時間がなくなってしまいました。
続きは次回にいたします。

ワンボードマイコンでCP/Mを![第61回]
2012.3.15upload

前へ
次へ
ホームページトップへ戻る