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