復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第213回]
●ファンクションコール17H(ファイル名の変更)
ファンクションコール17Hは[第93回]でテストしました。
そこで作成したテストプログラムはFTST14です。
ファンクションコール17HはビルトインコマンドのREN(リネーム)とほぼ同じ働きをします。
ただ、[第93回]に書きましたようにコピー先のファイル名と同じファイルがすでに存在していてもエラーにならずに同じファイル名にしてしまいます。
ファンクションコール17Hを使う場合には、その点に注意する必要があります。
[第144回]ではRAMディスク版での動作テストをしています。
今回はFTST14を64KBフルRAM用に一部を書き換えてファイル名をVFTST14にしました。
下はそのソースプログラムリストです。
●ソースプログラムVFTST14.TXT
; BDOS TEST14 function17 (rename )
;2012/4/10 9/11
;
ORG $0100
FCALL=$0005
FCB=$005C
;
LD C,17
LD DE,FCB
CALL FCALL
PUSH AF
CALL B2HEXDP
POP AF
INC A
RET NZ
;err
LD DE,ERRMSG
LD C,09
CALL FCALL
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
;
ERRMSG:"err"
DB 24;$
;
|
logfile nd80zlog\09112150.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** can't open D.vfd >jp d233 A>copy z:vftst14.bin A>save 1 rentst.bin A>vftst14 rentst.bin renam.com 00 A>vftst14 abc.xyz xxx.yyy FFerr A>save 1 renam2.com A>vftst14 renam.com renam2.com 00 A>dir A: F80 COM : HELL1 FOR : HELL1 REL : HELLO FOR A: HELLO REL : HELL2 FOR : HELL2 REL : HELL3 FOR A: HELL3 REL : M80 COM : MVFTST1 MAC : MVFTST1 REL A: MVFTST1B MAC : MVFTST1B PRN : MVFTST1B REL : MVFTST1C MAC A: MVFTST1C PRN : MVFTST1C REL : L80 COM : MVFTST1C COM A: VFTST1 COM : FORLIB REL : HELLO COM : MVFTST1D MAC A: MVFTST1D PRN : MVFTST1D REL : MVFTST1D COM : MVFTST1E MAC A: MVFTST1E PRN : MVFTST1E REL : MVFTST1E COM : MVFTST1F MAC A: MVFTST1F PRN : MVFTST1F REL : MVFTST1F COM : MVFTST1G MAC A: MVFTST1G PRN : MVFTST1G REL : MVFTST1G COM : VFTST9 COM A: VFTST2 COM : VFTST4 COM : VFTST5 COM : VFTST4-1 TXT A: VFTST16 COM : TESTDATA TXT : VFTST14 COM : VFTST6 COM A: VFTST7 COM : VFTST8 COM : VFTST10 COM : FNC0BT-2 COM A: FNC06T-2 COM : FNC03T-2 COM : VFTST102 COM : VFTST105 COM A: VFTST11 COM : VFTST12 COM : VFTST13 COM : VFTST18 COM A: VFTST19 COM : VFTST15 COM : RENAM2 COM : RENAM2 COM A>era renam2.com A>dir A: F80 COM : HELL1 FOR : HELL1 REL : HELLO FOR A: HELLO REL : HELL2 FOR : HELL2 REL : HELL3 FOR A: HELL3 REL : M80 COM : MVFTST1 MAC : MVFTST1 REL A: MVFTST1B MAC : MVFTST1B PRN : MVFTST1B REL : MVFTST1C MAC A: MVFTST1C PRN : MVFTST1C REL : L80 COM : MVFTST1C COM A: VFTST1 COM : FORLIB REL : HELLO COM : MVFTST1D MAC A: MVFTST1D PRN : MVFTST1D REL : MVFTST1D COM : MVFTST1E MAC A: MVFTST1E PRN : MVFTST1E REL : MVFTST1E COM : MVFTST1F MAC A: MVFTST1F PRN : MVFTST1F REL : MVFTST1F COM : MVFTST1G MAC A: MVFTST1G PRN : MVFTST1G REL : MVFTST1G COM : VFTST9 COM A: VFTST2 COM : VFTST4 COM : VFTST5 COM : VFTST4-1 TXT A: VFTST16 COM : TESTDATA TXT : VFTST14 COM : VFTST6 COM A: VFTST7 COM : VFTST8 COM : VFTST10 COM : FNC0BT-2 COM A: FNC06T-2 COM : FNC03T-2 COM : VFTST102 COM : VFTST105 COM A: VFTST11 COM : VFTST12 COM : VFTST13 COM : VFTST18 COM A: VFTST19 COM : VFTST15 COM A>end of ZBDOS >0000 00C3 - リモート接続を終了しました logfile closed at Tue Sep 11 22:09:55 2012 |