復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第100回]
●ファンクションコール25H(ディスクドライブのリセット)
ディスクドライブのリセットはファンクションコール0DHでも行なえます。
ファンクションコール0DHは[第92回]で説明しました。
ファンクションコール0DHは全てのディスクドライブのライトプロテクトを解除しますが、それ以外のことはなにも変化させません。
ファンクションコール25Hはドライブb指定して(複数ドライブ指定可能)、そのドライブのライトプロテクトを解除するとともに、ログインベクトルのビットも0にします。
ファンクションコール25HのテストプログラムFTST18.TXTのソースリストです。
; BDOS TEST18 function25 (disk reset )
;2012/4/16
;
ORG $8100
FCALL=$8005
FCB=$805C
;
LD HL,FCB
LD A,(HL)
LD HL,$0001
DEC A
JP Z,DISKRS
ADD HL,HL
DEC A
JP Z,DISKRS
LD E,3F;'?'
LD C,02
CALL FCALL
RET
DISKRS:LD C,25
EX DE,HL
CALL FCALL
RET
|
2012/4/16 7:19 ftst18.txt
END=811E
; BDOS TEST18 function25 (disk reset )
;2012/4/16
;
ORG $8100
FCALL=$8005
FCB=$805C
;
8100 215C80 LD HL,FCB
8103 7E LD A,(HL)
8104 210100 LD HL,$0001
8107 3D DEC A
8108 CA1881 JP Z,DISKRS
810B 29 ADD HL,HL
810C 3D DEC A
810D CA1881 JP Z,DISKRS
8110 1E3F LD E,3F;'?'
8112 0E02 LD C,02
8114 CD0580 CALL FCALL
8117 C9 RET
8118 0E25 DISKRS:LD C,25
811A EB EX DE,HL
811B CD0580 CALL FCALL
811E C9 RET
DISKRS =8118 FCALL =8005 FCB =805C
|
; BDOS TEST19 login vector & r/o vector function18,1D
;2012/4/10 test12
;4/16 test19
;
ORG $8100
FCALL=$8005
FCB=$805C
;
LD C,18
CALL FCALL
LD A,4C;'L' login vector
CALL ADP
CALL SPDP
CALL HEX4DP
CALL CRLF
LD C,1D
CALL FCALL
LD A,52;'R' R/O vector
CALL ADP
CALL SPDP
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
;
;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
;hex to binary, ascii 1charactor to low 4bit
HTOB1:CP 30;>="0"?
RET C;no
CP 3A;<="9"?
JP C,HTOB1_2;yes,"0" to "9"
CP 41;>="A" ?
RET C;no
CP 47;<="F"?
JP C,HTOB1_1
CP 61;>="a"?
RET C;no
CP 67;<="f"?
CCF
RET C;no
HTOB1_1:ADD A,09;41 to 46 -> 4A to 4F,or 61 to 67 -> 6A to 6F
HTOB1_2:AND 0F
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
;
|
2012/4/16 9:26 ftst19.txt
END=819F
; BDOS TEST19 login vector & r/o vector function18,1D
;2012/4/10 test12
;4/16 test19
;
ORG $8100
FCALL=$8005
FCB=$805C
;
8100 0E18 LD C,18
8102 CD0580 CALL FCALL
8105 3E4C LD A,4C;'L' login vector
8107 CD3081 CALL ADP
810A CD2E81 CALL SPDP
810D CD7681 CALL HEX4DP
8110 CD2481 CALL CRLF
8113 0E1D LD C,1D
8115 CD0580 CALL FCALL
8118 3E52 LD A,52;'R' R/O vector
811A CD3081 CALL ADP
811D CD2E81 CALL SPDP
8120 CD7681 CALL HEX4DP
8123 C9 RET
;
;CL & LF
8124 3E0D CRLF:LD A,0D
8126 CD3081 CALL ADP
8129 3E0A LD A,0A
812B C33081 JP ADP
;space disp
812E 3E20 SPDP:LD A,20
;A disp
8130 C5 ADP:PUSH BC
8131 E5 PUSH HL
8132 5F LD E,A
8133 0E02 LD C,02
8135 CD0580 CALL FCALL
8138 E1 POP HL
8139 C1 POP BC
813A C9 RET
;
;binary to hex, 2bytes data to ascii 4charactors,HL to HL,DE
813B 7C B2HEX4:LD A,H
813C CD4181 CALL B2HEX2
813F EB EX DE,HL
8140 7B LD A,E
;binary to hex, 1byte data to ascii 2charactors,A to DE
8141 F5 B2HEX2:PUSH AF
8142 0F RRCA
8143 0F RRCA
8144 0F RRCA
8145 0F RRCA
8146 CD5081 CALL B2HEX1
8149 57 LD D,A
814A F1 POP AF
814B CD5081 CALL B2HEX1
814E 5F LD E,A
814F C9 RET
;binary to hex, low 4bit to ascii 1charactor
8150 E60F B2HEX1:AND 0F
8152 C630 ADD A,30
8154 FE3A CP 3A
8156 D8 RET C;0-9
8157 C607 ADD A,07;A-F
8159 C9 RET
;hex to binary, ascii 1charactor to low 4bit
815A FE30 HTOB1:CP 30;>="0"?
815C D8 RET C;no
815D FE3A CP 3A;<="9"?
815F DA7381 JP C,HTOB1_2;yes,"0" to "9"
8162 FE41 CP 41;>="A" ?
8164 D8 RET C;no
8165 FE47 CP 47;<="F"?
8167 DA7181 JP C,HTOB1_1
816A FE61 CP 61;>="a"?
816C D8 RET C;no
816D FE67 CP 67;<="f"?
816F 3F CCF
8170 D8 RET C;no
8171 C609 HTOB1_1:ADD A,09;41 to 46 -> 4A to 4F,or 61 to 67 -> 6A to 6F
8173 E60F HTOB1_2:AND 0F
8175 C9 RET
;HL(bynary 2bytes) to asckii 4bytes & disp
8176 C5 HEX4DP:PUSH BC
8177 E5 PUSH HL
8178 CD3B81 CALL B2HEX4;binary 2 bytes to ascii HEX 4bytes
817B D5 PUSH DE
817C EB EX DE,HL
817D CD9281 CALL DEDP
8180 D1 POP DE
8181 CD9281 CALL DEDP
8184 E1 POP HL
8185 C1 POP BC
8186 C9 RET
;A(binary) to asckii 2bytes HEX & disp
8187 C5 B2HEXDP:PUSH BC
8188 E5 PUSH HL
8189 CD4181 CALL B2HEX2
818C CD9281 CALL DEDP
818F E1 POP HL
8190 C1 POP BC
8191 C9 RET
;
;DE(asckii 2bytes) disp
8192 D5 DEDP:PUSH DE
8193 5A LD E,D
8194 0E02 LD C,02
8196 CD0580 CALL FCALL
8199 D1 POP DE
819A 0E02 LD C,02
819C CD0580 CALL FCALL
819F C9 RET
;
ADP =8130 B2HEX1 =8150 B2HEX2 =8141
B2HEX4 =813B B2HEXDP =8187 CRLF =8124
DEDP =8192 FCALL =8005 FCB =805C
HEX4DP =8176 HTOB1 =815A HTOB1_1 =8171
HTOB1_2 =8173 SPDP =812E
|
logfile nd80zlog\04160719.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** >/sv rmdskab1.bin,8800,b7ff 3000(12288)bytes saved >jp d233 a>dir A: FNC0E-1 COM : FTST10 COM : FTST10-2 COM : FTST10-4 COM A: FTST10-5 COM : FTST11 COM : FTST14 COM : FTST15 COM A: FTST16 COM : FTST10-6 COM a>b:ftst17 ftst13.com RorW?w SorD?d ok a>dir A: FNC0E-1 COM : FTST10 COM : FTST10-2 COM : FTST10-4 COM A: FTST10-5 COM : FTST11 COM : FTST13 COM : FTST14 COM A: FTST15 COM : FTST16 COM : FTST10-6 COM a>era ftst12.com a>era ftst13.com a>era ftst14.com a>era ftst15.com a>era ftst16.com a>era ftst10-6.com a>dir A: FNC0E-1 COM : FTST10 COM : FTST10-2 COM : FTST10-4 COM A: FTST10-5 COM : FTST11 COM a>^D end of CP/M > |
>/ld ftst18.bin,8100 loading FTST18.BIN ...001f(31)bytes loaded,from 8100 to 811E >jp d233 a>save 1 ftst18.com a>^D end of CP/M >/ld ftst19.bin,8100 loading FTST19.BIN ...00a0(160)bytes loaded,from 8100 to 819F >jp d233 a>save 1 ftst19.com a>dir A: FNC0E-1 COM : FTST10 COM : FTST10-2 COM : FTST10-4 COM A: FTST10-5 COM : FTST11 COM : FTST18 COM : FTST19 COM a> |
a>ftst19 L 0001 R 0000 a>ftst11 a>ftst19 L 0001 R 0001 a> |
a>b: b>a:ftst11 b>a:ftst19 L 0003 R 0003 b>a:ftst18 a: b>a:ftst19 L 0003 R 0002 |
b>a: a>ftst11 a>ftst19 L 0003 R 0003 a>ftst18 b: a>ftst19 L 0001 R 0001 a> |
a>ftst18 a: a>ftst19 L 0000 R 0000 a> |
a>b: b>a:ftst19 L 0003 R 0000 b> |