The CCP Auto-Load Feature ― 2018年10月04日 15:40
TRN-8は、ROM上にCCP/BDOS、CBIOS、ROMBIOSを持っているので、 ディスケット上にシステムを書き込んでいなくとも、リブートできる。(ドライブAに、 フォーマット済みのディスケットを入れておかねばならないが)
だが、ディスクからシステムを読み込む方が、融通が聞くことがある。
さて、Digital Research Source Code にCP/Mのパッチを集めたパッケージ"PATCHES"がある。 これをダウンロードして眺めていると、"The CCP Auto-Load Feature(CPM22APN.01)"というのがあった。 内容は、CCPがロードされるごとに特定のプログラムを動かすという物だ。これはCCPの一部にパッチをあてることで実現している。
これを実現するのは、現状のTRN-8ではROMを書き換えが必要である。が、TRN-8は、ジャンパーを1本飛ばすことで、CCP/BDOSをシステムディスクから読み込むようにできる。今回の実験には、この方が都合がよい。
ところが、システムディスクはどうやって作るかは、TRN-8の製作記事中では言及されていない。 手元にある村瀬康治氏の「実習CP/M」を参照し、システムディスクを作成した。
手順としては
1. MOVCPMで、63K CP/Mのイメージを作成する。
2. DDTで、CP/MのイメージとCBIOSを結合する。
3. 次いで、パッチをあてる。
4. SYSGENで、システムイメージをシステムディスクに書き込む。
となる。ワークディスクを用意して早速やってみる。
a>dir A: MOVCPM COM : DDT COM : CBIOS HEX : SYSGEN COM A: STAT COM a>movcpm 63 * CONSTRUCTING 63k CP/M vers 2.2 READY FOR "SYSGEN" OR "SAVE 34 CPM63.COM" <==== メモリー上にシステムが展開された。 63K CP/M VER 2.2 (BIOS VER 3.1) (C) 1988.12.1. K.YOSHIDA a>save 34 cpm63.com <==== 展開されたシステムをファイルに落とす。 a>dir A: MOVCPM COM : DDT COM : CBIOS HEX : SYSGEN COM A: CPM63 COM : STAT COM a>ddt cpm63.com <==== システムイメージをロードする。 DDT VERS 2.2 このうち必要なの0980Hから1F80Hである。 NEXT PC 2300 0100 -icbios.hex -r2980 <==== CBIOS.HEXをオフセット2980Hをつけて読み込む。 NEXT PC 実際には、1F80Hから配置される。 2300 F600 63K CP/M VER 2.2 (BIOS VER 3.1) (C) 1988.12.1. K.YOSHIDA a>sysgen <==== メモリー上のシステムイメージをディスクに書き込む。 SYSGEN VER 2.0 FOR TRN-8 (C) 1988.12.1. K.YOSHIDA SOURCE DRIVE NAME (OR RETURN TO SKIP) DESTINATION DRIVE NAME (OR RETURN TO REBOOT)a <== ドライブAのディスクに書き込む。 DESTINATION ON A, THEN TYPE RETURN FUNCTION COMPLETE DESTINATION DRIVE NAME (OR RETURN TO REBOOT) 63K CP/M VER 2.2 (BIOS VER 3.1) (C) 1988.12.1. K.YOSHIDA a>
ここで、いったん電源を落としディスクからシステムを読み込むようにジャンパーを設定する。 再起動すると、
63K CP/M VER 2.2 (BIOS VER 3.1) (C) 1988.12.1. K.YOSHIDA A>dir A: MOVCPM COM : DDT COM : CBIOS HEX : SYSGEN COM A: CPM63 COM : STAT COM A>ddt cpm63.comお気づきであろうか。コマンドプロンプトが、小文字から大文字に変わった。 システムディスクをAドライブにセットしておかないと、システムはハングアップする。 うまくいっているようだ。
さて、"CCP Auto-Load Feature"の実験である。この機能は、コマンドをCCPに引き渡すバッファーに あらかじめコマンドを書き込んでおくことで実現している。システムがロードされる都度、コマンドが 実行される。サンプルは"dir"コマンドを実行するという物。先に作成したシステムディスクを 使用して、設定をする。
A>dir A: MOVCPM COM : DDT COM : CBIOS HEX : SYSGEN COM A: CPM63 COM : STAT COM A>ddt cpm63.com DDT VERS 2.2 NEXT PC 2300 0100 -icbios.com <==== おっと、間違えた。 -icbios.hex <==== 正しく入力し直し。 -r2980 NEXT PC 2300 F600
セットするのは、
0987Hにはコマンド文字の長さ
0988Hからはコマンド文字列を書き込み、最後に00Hを書き込む
である。
-d980 9af 0980 C3 5C E3 C3 58 E3 7F 00 20 20 20 20 20 20 20 20 .\..X... 0990 20 20 20 20 20 20 20 20 43 4F 50 59 52 49 47 48 COPYRIGH 09A0 54 20 28 43 29 20 31 39 37 39 2C 20 44 49 47 49 T (C) 1979, DIGI -s987 0987 00 3 <==== コマンド文字列の長さは、3バイト。 0988 20 44 <==== "D" 0989 20 49 <==== "I" 098A 20 52 <==== "R" 098B 20 0 <==== 00Hでターミネートする。 098C 20 . -g0 63K CP/M VER 2.2 (BIOS VER 3.1) (C) 1988.12.1. K.YOSHIDA A>sysgen SYSGEN VER 2.0 FOR TRN-8 (C) 1988.12.1. K.YOSHIDA SOURCE DRIVE NAME (OR RETURN TO SKIP) DESTINATION DRIVE NAME (OR RETURN TO REBOOT)a DESTINATION ON A, THEN TYPE RETURN FUNCTION COMPLETE DESTINATION DRIVE NAME (OR RETURN TO REBOOT) 63K CP/M VER 2.2 (BIOS VER 3.1) (C) 1988.12.1. K.YOSHIDA A: MOVCPM COM : DDT COM : CBIOS HEX : SYSGEN COM <==== DIRコマンドが A: CPM63 COM : STAT COM 実行された。 A>^C 63K CP/M VER 2.2 (BIOS VER 3.1) (C) 1988.12.1. K.YOSHIDA A: MOVCPM COM : DDT COM : CBIOS HEX : SYSGEN COM A: CPM63 COM : STAT COM A>b: <==== ドライブを変えて B>^C <==== リブートすると。 63K CP/M VER 2.2 (BIOS VER 3.1) (C) 1988.12.1. K.YOSHIDA B: ARGLIST COM : COMP COM : FUTY COM : XSUB COM <==== ドライブBの B: ASM COM : DDT COM : LOAD COM : PIP COM ディレクトリーが B: XFORMAT MAC : XMODEM COM : PEP COM : DELETE COM 表示される。 B: UNCR COM : SUB2COM COM : USQ COM : DELBR COM B: LHRD COM : ARK COM : LHVW COM : UNZIP COM B: CRUNCH20 COM : TYPELZ20 COM : UNCR20 COM : UNARC COM B: UNARCA COM : XFORMAT COM : SUBMIT COM : ED COM B: M80 COM : L80 COM : MAKESYM COM : 8080 MAC B: Z80ASM DOC : FORMAT COM : README LNK : TRN-8 MAC B: ARKZS COM : COMPARE LIB : ZSIDP COM : 64180 MAC B: FUTY Z80 : SLR180 COM : 180FIG COM : Z80ASM COM B: SLRNK1 COM : SLRIB COM : FUTY REL : ZSID COM B: FUTY LST : CONFIG COM : MDUMP COM : FDUMP COM B: TYPEX COM : XDIR COM : SID COM : HIST UTL B: TRACE UTL : STAT COM : TEST COM : ECHO COM B: LC COM : AUTOEXEC SUB : AUTOEXEC BAK
リブートするごとに、"DIR"コマンドが実行される事が確認できた。
コメント
トラックバック
このエントリのトラックバックURL: http://kida.asablo.jp/blog/2018/10/04/8968623/tb
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。