復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第233回]
●ファンクションコール24H(ランダムレコードアクセスポインタの更新)
ファンクションコール24Hについては[第111回]で説明をしています。
ちょっとどう使うのかよくわからないファンクションです。
そのテストについては、[第111回]〜[第113回]で行なっています。
仮RAMディスクを使ったCP/M互換DOS上でのテストについては[第149回]で説明をしていますが、[第111回]〜[第113回]と同じことをやっているだけのようです。
とはいえかなり時間がたってしまって、もうすっかり忘れてしまいましたから、あらためて[第111回]〜[第113回]を読み直してみました。
しかし、まあ、やっぱりなんだかなあ、という感じのファンクションコールです。
とにかくはテストしないことには終わりませんから、あまり深くは考えないことにして、[第149回]と同様、[第111回]〜[第113回]と同じことをしてみます。
[第111回]ではFTST23.COMを使ってシーケンシャルファイルTEST.SAFを作成しています。
[第112回]ではFTST24.COMを使って、TEST.SAFの内容を読み出しています。
[第113回]ではFTST24.COMにファンクションコール24Hを追加したFTST25.COMを作って、実行しています。
今回も余り時間がありませんから、まずはシーケンシャルファイルTEST.SAFを作成するところまでをやってみることにします。
FTST23をフルRAM用に一部を書き換えてファイル名をVFTST23にしました。
●ソースプログラムVFTST23
; BDOS VFTST23 sequential file make ;ftom ftst5cpy.txt ;2012/3/4 3/7 ;2012/4/30 ;10/17 ; ORG $0100 FCALL=$0005 FCB=$005C RECNO=$007C DMA=$0080 ; LD C,16;make file LD DE,FCB CALL FCALL INC A;if FFH? JP Z,DFULERR ; XOR A LD (RECNO),A LD BC,$0000 ; LOOP:LD E,40 LD HL,DMA LOOP1:LD (HL),C INC HL LD (HL),B INC HL DEC E JP NZ,LOOP1 PUSH BC PUSH DE LD C,15;write LD DE,FCB CALL FCALL INC A;if FFH? POP DE POP BC JP Z,DFULERR INC BC LD A,B CP 02 JP NZ,LOOP ; CLOSE:LD C,10;close LD DE,FCB CALL FCALL INC A;if FFH? JP Z,CLOSERR LD DE,OK JP MSGOUT ; DFULERR:LD DE,DFULL JP MSGOUT CLOSERR:LD DE,CANTCLS MSGOUT:LD C,09 CALL FCALL RET ; DFULL:"disk" " ful" "l!" DB 0D DB 0A DB 24;$ CANTCLS:"can'" "t cl" "ose!" DB 0D DB 0A DB 24;$ OK:"done" DB 0D DB 0A DB 24;$ ; |