レトロマイコン86ボードの構想(その17)vfilerへのパッチ [8086]
自作のV20(C8088互換)とPIC24構成のPic24V20でCP/M-86のアプリを試しています。
ネット上のCP/M-86のアプリはIBM用のものが多く、画面表示のエスケープシーケンス程度であれば対応は簡単なのですが、独自のキャラクタコードやINT 16H内部処理を使っているものが多くうまく動かないケースが多々あります。
今回、「CP/M-86 FILE DOWNLOADS」からダウンロードできる86FILUTL.ZIPの中にあるVFILERを動かしてみました。
VFILERはMS-DOS時代に良く使われていたFDやFMのようなファイラソフトです。
下記の2カ所を変更することで素のCP/M-86で動作できました。
アセンブラのソースも付いていましたが、何故かアセンブル&gencmdではうまく動かなかったのでWindows上のバイナリエディタでパッチを当てましたw
1点目の変更は選択中のファイルを示すマーカ文字で、標準のキャラクタコードに変更しました(下記リストでは'#'になっていますが、20Hより小さいIBM独自キャラでした)。
2つ目の変更は最大ディスク数で下記のように3固定(A-Cドライブを許容)になっていたので今回動かしているCP/M-86に合わせてPドライブまで許容するように10hに変更しました。
ソース変更で動かせるならもっと汎用的な方法に変更したいところですが・・
上記の変更により、CP/M-86のファイラが動くようになりました。
先に書いたMS-DOS用のFDやFMよりは機能は低いですが、これらのご先祖様的な存在であり、自作のCP/M-86ボード上で現在、こうして動いているというのは感慨深いですね。
★2019/11/09 追記
初期化処理部でIBM用に割り込みベクタを設定している部分があったのでスキップするようにddt86でパッチを入れました。
★2019/11/09 追記
ソースを見ていたらアセンブル結果のhexファイルをコマンドに変換するGENCMDコマンドのパラメータが書いてありました^^;
ソース変更してコマンド生成できるようになったので変更後のソースと実行ファイルをアップしておきます。(予測需要数はゼロですがw)
変更内容は下記項目です。
; DATE 2019/11/08 modyfied by skyriver
; 1.add IBMPC switch which is setted when use IBM.
; 2.auto check max disk in startup.
; 3.When quit, change to alocate cursor at screen end from clear screen.
VFILER_20191108.zip
[TOP] [ 前へ ] 連載記事 [ 次へ ]
ネット上のCP/M-86のアプリはIBM用のものが多く、画面表示のエスケープシーケンス程度であれば対応は簡単なのですが、独自のキャラクタコードやINT 16H内部処理を使っているものが多くうまく動かないケースが多々あります。
今回、「CP/M-86 FILE DOWNLOADS」からダウンロードできる86FILUTL.ZIPの中にあるVFILERを動かしてみました。
VFILERはMS-DOS時代に良く使われていたFDやFMのようなファイラソフトです。
下記の2カ所を変更することで素のCP/M-86で動作できました。
アセンブラのソースも付いていましたが、何故かアセンブル&gencmdではうまく動かなかったのでWindows上のバイナリエディタでパッチを当てましたw
1点目の変更は選択中のファイルを示すマーカ文字で、標準のキャラクタコードに変更しました(下記リストでは'#'になっていますが、20Hより小さいIBM独自キャラでした)。
; position cursor at CURAT SETCUR: 236C 8B1E1127 MOV BX,Word Ptr CURAT IF ENH@VID ADD BX,4 ;advance 4 spaces CALL GOTOXY ENDIF IF NOT ENH@VID 2370 E8BADD 012D CALL GOTOXY 2373 E880FA 1DF6 CALL ILPRT ; DB '--# ',0 2376 2D2D3E2000 DB '--> ',0 ; 2019/11/08 by skyriver ENDIF 237B 8B1E6727 MOV BX,Word Ptr RINGPOS ;pt to current file name 237F 43 INC BX ;pt to first char 2380 E8E9FB 1F6C CALL AC@PRFN 2383 C3 RET |
2つ目の変更は最大ディスク数で下記のように3固定(A-Cドライブを許容)になっていたので今回動かしているCP/M-86に合わせてPドライブまで許容するように10hに変更しました。
ソース変更で動かせるならもっと汎用的な方法に変更したいところですが・・
; ; DISK/USER LIMITS ; 0117 MDISK RS 0 0117 03 DB 3 ; MAXIMUM NUMBER OF DISKS 0118 MDRIVE RS 0 0118 0D DB 13 ; MEM DRIVE, = 0FFH IF NONE 0119 MUSER RS 0 0119 0F DB 15 ; MAXIMUM USER NUMBER |
上記の変更により、CP/M-86のファイラが動くようになりました。
先に書いたMS-DOS用のFDやFMよりは機能は低いですが、これらのご先祖様的な存在であり、自作のCP/M-86ボード上で現在、こうして動いているというのは感慨深いですね。
CP/M-86のファイラ(vfiler)画面 |
|
★2019/11/09 追記
初期化処理部でIBM用に割り込みベクタを設定している部分があったのでスキップするようにddt86でパッチを入れました。
A>sid SID86 1.01 1/4/83 #rvfiler.cmd START END 78ED:0000 78ED:27FF #l180 78ED:0180 JMP 01D2 78ED:0183 ADD CDE1[BP+SI],CL 78ED:0187 LOOPNE 0119 78ED:0189 NOP 78ED:018A NOP 78ED:018B RET 78ED:018C ADD AX,[BX+SI] 78ED:018E ADD BP,[BP+SI] 78ED:0190 ADD [BX+SI],AL 78ED:0192 ADD [BX+SI],AL 78ED:0194 ADD [BX+SI],AL 78ED:0196 ADD [BX+SI],DL #l1d2 78ED:01D2 MOV CL,09 78ED:01D4 MOV DX,26E8 78ED:01D7 INT E0 78ED:01D9 MOV CL,09 78ED:01DB MOV DX,26EE 78ED:01DE INT E0 78ED:01E0 MOV CL,09 78ED:01E2 MOV DX,26F4 78ED:01E5 INT E0 78ED:01E7 MOV CL,09 78ED:01E9 MOV DX,26FA 78ED:01EC INT E0 #l 78ED:01EE MOV CL,09 78ED:01F0 MOV DX,2700 78ED:01F3 INT E0 78ED:01F5 MOV CL,09 78ED:01F7 MOV DX,2706 78ED:01FA INT E0 78ED:01FC MOV AX,DS 78ED:01FE MOV SS,AX 78ED:0200 MOV SP,24D8 78ED:0203 MOV [279A],AX 78ED:0206 CS: TEST BYTE [0103],FF 78ED:020C JZ 0213 #a180 78ED:0180 jmp 1fc 78ED:0183 . #wvf.cmd #^C A> |
★2019/11/09 追記
ソースを見ていたらアセンブル結果のhexファイルをコマンドに変換するGENCMDコマンドのパラメータが書いてありました^^;
ソース変更してコマンド生成できるようになったので変更後のソースと実行ファイルをアップしておきます。(予測需要数はゼロですがw)
変更内容は下記項目です。
; DATE 2019/11/08 modyfied by skyriver
; 1.add IBMPC switch which is setted when use IBM.
; 2.auto check max disk in startup.
; 3.When quit, change to alocate cursor at screen end from clear screen.
[TOP] [ 前へ ] 連載記事 [ 次へ ]
コメント 0