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というコマンドを使用して当時のやり方でやってみます。

用意するもの

以下のファイルをそろえます。

上記のファイルをCP/Mのディスクイメージに登録します。→ CpmtoolsGUI
作業を誤るとディスクの内容は壊れるのでバックアップは必ず取っておいてください。(BIOSのディスク設定が元と異なっているとファイルが読めなくなります)

作業手順


作業の概要は、

  1. MOVCPM.COMで64Kシステム(CCP/BDOS)をTPA上に作成します。
  2. IPL(BOOT)とBIOSを付加してシステムトラックイメージを完成させ、ファイルとして保存します。
  3. カスタマイズした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 と変更後の各部のアドレス
CP/M バイアス値の自動計算

CP/M[KB] BIAS CCP BDOS BIOS

カスタマイズした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.

  • このサイトはリンクフリーです。
  • コメント欄は改行せず一行で入れてください。
  • スパム判定ではじかれた場合は、その後に「書込みました」旨のみのコメント等何らかの書き込み成功していただけると早く対応できます。
  • 非日本語対応ブラウザからは書き込みできません。