CP/M資料メモ

メモリマップ

62k CP/Mの場合: B = (CP/Mサイズ[KB]-20)*1024 = 42*1024 = A800H
アドレス 内容
00H〜02H BIOSウォームスタートエントリへのジャンプコード
03H IOバイト
04H ログインディスクNo.
05H〜07H BDOSコールのジャンプコード
08H〜37H 未使用エリア(RST1-6)
38H〜3AH RST7:DDTのリスタート
3BH〜5BH 未使用
5CH FCB:ユーザ番号
5DH〜64H FCB:ファイル名(プライマリ)
65H〜67H FCB:ファイル名(拡張子)
68H FCB:エクステントNo.
69H〜6AH FCB:システム内使用
6BH FCB:エクステントの総数
6CH〜7BH FCB:ディスクアロケーションマップ
7CH FCB:シーケンシャルアクセス時のレコードポインタ(cr)
7DH〜7FH FCB:ランダムアクセス時のレコードポインタ(r0.r1.r2)
80H〜FFH FCB:DMAバッファエリア
100H〜DBFFH 100H-[33FFH+B] TPA:アプリケーションプログラムエリア
DC00H〜E3FFH [3400H+B]-[3BFFH+B] CCP
E400H〜F1FFH [3C00H+B]-[49FFH+B] BDOS
F200H〜F202H [4A00H+B]- BIOS:BOOT コールドブート
F203H〜F205H BIOS:WBOOT ウォームブート
F206H〜F208H BIOS:CONST コンソールステータス
F209H〜F20BH BIOS:CONIN コンソール入力
F20CH〜F20EH BIOS:CONOUT コンソール出力
F20FH〜F211H BIOS:LIST リスト出力
F212H〜F214H BIOS:PUNCH パンチ出力
F215H〜F217H BIOS:READER リーダ入力
F218H〜F21AH BIOS:HOME ヘッドのホームシーク
F21BH〜F21DH BIOS:SELDISK ドライブ選択
F21EH〜F220H BIOS:SETTRK トラックNo.セット
F221H〜F223H BIOS:SETSEC セクタNo.セット
F224H〜F226H BIOS:SETDMA DMAアドレスセット
F227H〜F229H BIOS:READ 指定セクタのリード
F22AH〜F22CH BIOS:WRITE 指定セクタのライト
F22DH〜F22FH BIOS:LISTST リストステータスチェック
F230H〜F232H BIOS:SECTRAN セクタトランスレータ
〜FFFFH BIOS:コード、スクラッチエリア

下の計算フォームのBIASは上の表のBではなくメモリサイズを変更するときに必要となる数値です→ CP/Mメモリサイズ変更手順メモ
CP/M バイアス値の自動計算

CP/M[KB] BIAS CCP BDOS BIOS

IOバイトによるロジカルデバイスに対するフィジカルデバイスの割り当て

ロジカルデバイス LST: PUN: RDR: CON:
IOバイト/BIT位置 76 54 32 10
00:00:00:00: TTY: TTY: TTY: TTY:
01:01:01:01: CRT: PTP: PTP: CRT:
10:10:10:10: LPT: UP1: UR1: BAT:
11:11:11:11: UL1: UP2: UR2: UC1:

システムコール一覧

CレジスタにファンクションNo.を、DEレジスタにパラメータをセットしてCALL 05H。
10進 HEX ファンクション パラメータ 結果
0 00 システムリセット - ウォームブート
1 01 CON:入力 - A←入力文字
2 02 CON:出力 E←文字 CON:へ出力
3 03 RDR:入力 - A←入力文字
4 04 PUN:出力 E←文字 PUN:へ出力
5 05 LST:出力 E←文字 LST:へ出力
6 06 ダイレクトコンソール入出力 入力:E←FFH/出力:E←文字 A←入力文字/コンソールへ出力
7 07 IOバイト取得 - A←IOバイト
8 08 IOバイト設定 E←IOバイト IOバイトが設定される
9 09 文字列出力 DE←文字列のアドレス $文字が出現するまでコンソールへ出力
10 0A コンソールバッファ読込 DE←バッファアドレス コンソールからバッファへ入力
11 0B CON:入力チェック - 入力あり:A←FFH/なし:A←0
12 0C バージョンNo.取得 - CP/M:H←0 MP/M:H←1、L←バージョンNo.
13 0D ディスクリセット - 全ディスクリセット
14 0E ドライブセレクト E←ドライブNo. カレントドライブに設定される
15 0F ファイルオープン DE←FCBアドレス 正常:A←ディレクトリコード/ファイル無:A←FFH
16 10 ファイルクローズ DE←FCBアドレス 正常:A←ディレクトリコード/ファイル無:A←FFH
17 11 先頭ファイル検索 DE←FCBアドレス 正常:A←ディレクトリコード/ファイル無:A←FFH
18 12 次ファイル検索 - 正常:A←ディレクトリコード/ファイル無:A←FFH
19 13 ファイル削除 DE←FCBアドレス 正常:A←ディレクトリコード/ファイル無:A←FFH
20 14 シーケンシャルリード DE←FCBアドレス 正常:A←0/終了orフル:A←0以外
21 15 シーケンシャルライト DE←FCBアドレス 正常:A←0/終了orフル:A←0以外
22 16 ファイル作成 DE←FCBアドレス 正常:A←ディレクトリコード/ファイル無:A←FFH
23 17 ファイル名変更 DE←FCBアドレス 正常:A←ディレクトリコード/ファイル無:A←FFH
24 18 ログインベクトル取得 - HL←ログインベクトル
25 19 ログインドライブNo.取得 - A←ドライブNo.
26 1A DMAアドレスセット DE←DMAアドレス DMAアドレスがセットされる
27 1B アロケーションアドレス取得 - HL←アロケーションアドレス
28 1C ライトプロテクト設定 - ログインドライブがR/Oに設定される
29 1D R/Oベクトル取得 - HL←ベクトル
30 1E ファイル属性設定 DE←FCBアドレス A←ディレクトリコード/ファイル無:A←FFH
31 1F DPBアドレス取得 - HL←DPBのベースアドレス
32 20 ユーザコード設定/取得 設定:E←ユーザコード/取得:E←FFH ユーザ設定/A←ユーザコード
33 21 ランダムリード DE←FCBアドレス 正常:A←0/異常:A←エラーコード
34 22 ランダムライト DE←FCBアドレス 正常:A←0/異常:A←エラーコード
35 23 ファイルサイズ取得 DE←FCBアドレス FCB(r0-r2)←ファイルサイズ
36 24 ランダムレコードセット DE←FCBアドレス FCB(r0-r2)←ランダムレコードNo.
37 25 ドライブリセット DE←ドライブベクトル ベクトルのドライブがリセット
38 26 - - -
39 27 - - -
40 28 0フィルランダムライト DE←FCBアドレス 正常:A←0/異常:A←エラーコード

AVRとZ80でCP/M へ戻る


お名前: コメント:

トップ メニュー

This web page is described in Japanese, but you can read in English by translation site.

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