復活!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> |