SSブログ
English Version

レトロマイコン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を動かしてみました。

 VFILERMS-DOS時代に良く使われていたFDFMのようなファイラソフトです。

 下記の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用のFDFMよりは機能は低いですが、これらのご先祖様的な存在であり、自作の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.

VFILER_20191108.zip



[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。