CP/Mメモリサイズ変更手順メモ
64K CP/Mシステムへ拡張する
CP/Mサイトから入手できるシステムのメモリサイズは62Kになっていますが、今のところBIOSは小さいので最大サイズの64Kにすることは可能です。いろいろな方法があると思いますが、せっかくAVRとZ80でCP/Mの改良やmbed(ST Nucleo F401RE)版CP/MエミュレータというCP/Mマシンがあるのですから、今回は全ての作業をCP/M上で行うことにします。
システム(CCP/BDOS)のソースが公開されている今、システムのリロケートは再アセンブルすればよいわけですが、MOVCPM.COMというコマンドを使用して当時のやり方でやってみます。
用意するもの
以下のファイルをそろえます。
- IPL.ASM, BIOS.ASM → DISKDEFマクロの使い方メモ
- MAC.COM, DISKDEF.LIB, DDT.COM, LOAD.COM, MOVCPM.COM, SYSGEN.ASM → CP/MサイトのDigital Research Source Codeからcpm2-plm.zipをダウンロードしてください。
- 作業用エディタ(WordStar,TURBO PASCALなど)
上記のファイルをCP/Mのディスクイメージに登録します。→ CpmtoolsGUI
作業を誤るとディスクの内容は壊れるのでバックアップは必ず取っておいてください。(BIOSのディスク設定が元と異なっているとファイルが読めなくなります)
作業手順
作業の概要は、
- MOVCPM.COMで64Kシステム(CCP/BDOS)をTPA上に作成します。
- IPL(BOOT)とBIOSを付加してシステムトラックイメージを完成させ、ファイルとして保存します。
- カスタマイズしたSYSGEN.COMを作成し、システムトラックにイメージを書き込みます。
DDT.COM上では、I、R、Sコマンドを使います。→ CP/Mコマンド概要メモ
以下、詳細を示します。
IPL.ASM, BIOS.ASM のメモリサイズを変更する
IPLもBIOSも影響を受けるので修正します。変更箇所はどちらも、
MSIZE EQU 64
とするだけです。(BIOSのディスク設定は変更してはいけません。変更したい場合は先に変更したディスクを作ってからこの作業を始めます。メモリサイズの変更とディスクパラメータの変更は同時には行えないということです)
MAC.COM でアセンブルします。
A>MAC IPL CP/M MACRO ASSEM 2.0 205E 001H USE FACTOR END OF ASSEMBLY A>MAC BIOS CP/M MACRO ASSEM 2.0 FE54 014H USE FACTOR END OF ASSEMBLY A>
MOVCPM.COMを変更する
MOVCPM.COMはシリアルプロテクトが掛けられているのでそのままでは使えません。シリアルチェックしないように改修します。変更箇所は、
(アドレスはDDTで読み込んだときの場所) 02CB C2 5A 02 → 00 00 00
DDT.COMのSコマンドで変更し、SAVE.COMで保存します。(SAVE 38 MOVCPM2.COM)
A>DDT MOVCPM.COM DDT VERS 2.2 NEXT PC 2700 0100 -S2CB 02CB C2 00 02CC 5A 00 02CD 02 00 02CE 23 . -^C A>SAVE 38 MOVCPM2.COM A>
64Kシステムイメージを作成する
MOVCPM2.COMを実行(MOVCPM2 64 *)し、TPA上に作成された64K化したCCPとBDOSを一旦SAVE.COMで保存(SAVE 34 CPM64.COM)します。
A>MOVCPM2 64 * CONSTRUCTING 64k CP/M vers 2.2 READY FOR "SYSGEN" OR "SAVE 34 CPM64.COM" A>SAVE 34 CPM64.COM A>
IPLとBIOSを付加する
DDT.COMでCPM64.COMを読み込み、さらにIコマンド、Rコマンドにより、IPL.HEXとBIOS.HEXを
- IPL.HEX のバイアス値: 900H - 2000H = E900H ※1
- BIOS.HEX のバイアス値:1F80H - FA00H = 2580H ※2
で読み込み、SAVE.COM で保存します。(SAVE 34 SYS64.COM)
A>DDT CPM64.COM DDT VERS 2.2 NEXT PC 2300 0100 -IIPL.HEX -RE900 NEXT PC 2300 0000 -IBIOS.HEX -R2580 NEXT PC 2300 0000 -^C A>SAVE 34 SYS64.COM A>
※1.メモリサイズに関係なく一定(減算しているのは IPL のスタートアドレス)
※2.メモリサイズ(20〜64)に対する、バイアス値:BIAS と変更後の各部のアドレス
カスタマイズしたSYSGEN.COMを作成する
SYSGEN.ASMを編集し、BIOSのディスク設定に合わせます。
数値の変更箇所。
NSECTS EQU 64 ;NO. OF SECTORS PER TRACK NTRKS EQU 1 ;NO. OF OPERATING SYSTEM TRACKS NDISKS EQU 1 ;NUMBER OF DISK DRIVES TRELT SET 0 ;FIRST/NEXT TRAN ELEMENT
コメント化する箇所。(NSECTSが64だとREPTが0になりアセンブルできないため)
; NOW LEAVE SPACE FOR EXTENSIONS TO TRANSLATE TABLE ; IF NSECTS LT 64 ; REPT 64-NSECTS ; DB 0 ; ENDM
MAC.COMでアセンブル、LOAD.COMで実行ファイル(SYSGEN.COM)にします。
A>MAC SYSGEN CP/M MACRO ASSEM 2.0 04CD 005H USE FACTOR END OF ASSEMBLY A>LOAD SYSGEN FIRST ADDRESS 0100 LAST ADDRESS 04A5 BYTES READ 03A4 RECORDS WRITTEN 08 A>
システムトラックに64Kシステムを書き込む
SYSGEN SYS64.COM を実行。
A>SYSGEN SYS64.COM SYSGEN VER 2.0 DESTINATION DRIVE NAME (OR RETURN TO REBOOT)A DESTINATION ON A, THEN TYPE RETURN FUNCTION COMPLETE DESTINATION DRIVE NAME (OR RETURN TO REBOOT)
コールドブート(ハードリセット)し、64Kシステムになったことを確認します。
IPL is loading system... 64k CP/M Version 2.2 COPYRIGHT (C) 1979, DIGITAL RESEARCH A>
関連リンク
CP/M非公式サイト
http://www.cpm.z80.de/index.html
当サイト内
AVRとZ80でCP/M
AVRとZ80でCP/Mの改良
mbed(ST Nucleo F401RE)版CP/Mエミュレータ
CP/Mコマンド概要メモ
CP/M資料メモ
CP/Mディスクイメージ作成手順メモ
DSK形式のディスクイメージからファイルを取り出す方法メモ
DISKDEFマクロの使い方メモ
CpmtoolsGUI
- 62k cp/m ---> 30k cp/m(on CycloneIII)で大変役に立ちました、有難うございます。 - K.N. (2019年01月26日 12時48分12秒)
トップ メニュー
This web page is described in Japanese, but you can read in English by translation site.