!メモリマップ 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 セクタトランスレータ ,F233H〜FFFFH,BIOS:ディスクパラメータテーブル、各サブルーチン、スクラッチエリア 下の計算フォームのBIASは上の表のBではなくメモリサイズを変更するときに必要となる数値です→ CP/Mメモリサイズ変更手順メモ {{include_html CPM_BIAS_CALC_HTML}} !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 へ戻る ---- {{comment}}