misc/include/dosconst.equ
.nlist
.ifndef __dosconst_equ__
__dosconst_equ__ equ 1
;----------------------------------------------------------------
;
; DOS定数
;
;----------------------------------------------------------------
;----------------------------------------------------------------
; 標準ハンドラ番号
;----------------------------------------------------------------
STDIN equ 0 ;標準入力
STDOUT equ 1 ;標準出力
STDERR equ 2 ;標準エラー入出力
STDAUX equ 3 ;標準シリアル入出力
STDPRN equ 4 ;標準プリンタ出力
;----------------------------------------------------------------
; DOSコールエラー
;----------------------------------------------------------------
INVALID_FUNCTION equ -1 ;無効なファンクションコード
FILE_NOT_FOUND equ -2 ;ファイルが見つからない
DIRECTORY_NOT_FOUND equ -3 ;ディレクトリが見つからない
TOO_MANY_HANDLES equ -4 ;オープンしているファイルが多すぎる
NOT_A_FILE equ -5 ;ディレクトリやボリュームラベルをアクセスしようとした
HANDLE_IS_NOT_OPENED equ -6 ;指定したハンドラがオープンされていない
BROKEN_MEMORY_CHAIN equ -7 ;メモリ管理領域が壊れている。実際に-7が返されることはない
NOT_ENOUGH_MEMORY equ -8 ;メモリが足りない
INVALID_MEMORY_CHAIN equ -9 ;無効なメモリ管理テーブルを指定した
INVALID_ENVIRONMENT equ -10 ;不正な環境を指定した。実際に-10が返されることはない
ABNORMAL_X_FILE equ -11 ;実行ファイルのフォーマットが異常
INVALID_ACCESS_MODE equ -12 ;オープンのアクセスモードが異常
ILLEGAL_FILE_NAME equ -13 ;ファイル名の指定が間違っている
INVALID_PARAMETER equ -14 ;パラメータが無効
ILLEGAL_DRIVE_NUMBER equ -15 ;ドライブの指定が間違っている
CURRENT_DIRECTORY equ -16 ;カレントディレクトリを削除しようとした
CANNOT_IOCTRL equ -17 ;_IOCTRLできないデバイス
NO_MORE_FILES equ -18 ;該当するファイルがもうない。_FILES,_NFILES
READ_ONLY equ -19 ;ファイルに書き込めない。主に属性R,Sのファイルに対する書き込みや削除
DIRECTORY_EXISTS equ -20 ;同一名のディレクトリを作ろうとした
RM_NONEMPTY_DIRECTORY equ -21 ;空でないディレクトリを削除しようとした
MV_NONEMPTY_DIRECTORY equ -22 ;空でないディレクトリを移動しようとした
DISK_FULL equ -23 ;ディスクフル
DIRECTORY_FULL equ -24 ;ディレクトリフル
SEEK_OVER_EOF equ -25 ;EOFを越えてシークしようとした
ALREADY_SUPERVISOR equ -26 ;既にスーパーバイザ状態になっている
THREAD_EXISTS equ -27 ;同じスレッド名が存在する
COMMUNICATION_FAILED equ -28 ;スレッド間通信バッファに書き込めない。ビジーまたはオーバーフロー
TOO_MANY_THREADS equ -29 ;これ以上バックグラウンドでスレッドを起動できない
NOT_ENOUGH_LOCK_AREA equ -32 ;ロック領域が足りない
FILE_IS_LOCKED equ -33 ;ロックされていてアクセスできない
OPENED_HANDLE_EXISTS equ -34 ;指定のドライブはハンドラがオープンされている
FILE_EXISTS equ -80 ;ファイルが存在している。_NEWFILE,_MAKETMP
; $8200000? メモリが完全に確保できない。下位4bitは不定
; $81?????? メモリが確保できない。下位24bitは確保できる最大のサイズ
;----------------------------------------------------------------
; デバイスエラー
;----------------------------------------------------------------
IGNORE equ $4000 ;無視(I)
RETRY equ $2000 ;再実行(R)
ABORT equ $1000 ;中止(A)
INVALID_UNIT_NUMBER equ $0001 ;無効なユニット番号を指定しました
INSERT_MEDIA equ $0002 ;ディスクが入っていません、入れてください
UNKNOWN_COMMAND equ $0003 ;デバイスドライバに無効なコマンドを指定しました
CRC_ERROR equ $0004 ;CRCエラー
MANEGEMENT_AREA_BROKEN equ $0005 ;ディスクの管理領域が破壊されています、使用不能です
SEEK_ERROR equ $0006 ;シークエラー
INVALID_MEDIA equ $0007 ;無効なメディアを使用しました
SECTOR_NOT_FOUND equ $0008 ;セクタが見つかりません
PRINTER_NOT_CONNECTED equ $0009 ;プリンタがつながっていません
WRITE_ERROR equ $000A ;書き込みエラー
READ_ERROR equ $000B ;読み込みエラー
MISCELLANEOUS_ERROR equ $000C ;エラーが発生しました
UNPROTECT_MEDIA equ $000D ;プロテクトをはずして、同じディスクを入れてください
CANNOT_WRITE equ $000E ;書き込み不可能です
FILE_SHARING_VIOLATION equ $000F ;ファイル共有違反です。現在使用できません。
;----------------------------------------------------------------
; デバイスヘッダ
;----------------------------------------------------------------
.offset 0
DH_NEXT: .ds.l 1 ;$0000 ネクストデバイスドライバハンドル。-1=終わり
DH_TYPE: .ds.w 1 ;$0004 デバイスタイプ
; bit15 0=ブロックデバイス,特殊デバイス
; 1=キャラクタデバイス
; bit14 0=IOCTRL不可
; 1=IOCTRL可
; bit13 0=通常のデバイスドライバ
; bit12 予約
; 1=特殊デバイスドライバ
; bit12 0=通常のデバイスドライバ
; 1=特殊ネットワークデバイスドライバ
; bit11-7 予約
; bit6 0=特殊コントロール不可
; 1=特殊コントロール可
; bit5 0=COOKEDモード
; 1=RAWモード
; bit4 0=通常のデバイスドライバ
; 1=特殊デバイスドライバ
; bit3 1=CLOCK
; bit2 1=NUL
; bit1 1=標準出力
; bit0 1=標準入力
DH_STRATEGY: .ds.l 1 ;$0006 ストラテジルーチンのハンドル
DH_INTERRUPT: .ds.l 1 ;$000A インタラプトルーチンのハンドル
DH_NAME: .ds.b 8 ;$000E デバイス名
DH_SIZE: ;$0016 (22バイト)
.text
;----------------------------------------------------------------
; メモリ管理テーブル
;----------------------------------------------------------------
.offset 0
MM_PREV: .ds.l 1 ;$0000 直前のメモリ管理テーブルのアドレス。0=先頭
MM_PARENT: .ds.l 1 ;$0004 このブロックを確保したプロセスのメモリ管理テーブルのアドレス
; 最上位1バイトは
; $00=通常のメモリブロック
; $FD=_S_PROCESSによるサブのメモリ管理の親のメモリブロック
; $FF=常駐したプロセスのメモリブロック
MM_TAIL: .ds.l 1 ;$0008 使用している末尾アドレス+1
MM_NEXT: .ds.l 1 ;$000C 直後のメモリ管理テーブルのアドレス。0=末尾
MM_SIZE: ;$0010 (16バイト)
;以下はプロセス管理テーブル
MM_ENVIRONMENT: .ds.l 1 ;$0010 環境の領域のアドレス
MM_EXITVC: .ds.l 1 ;$0014 _EXITVCのベクタ。親の_EXECの直後
MM_CTRLVC: .ds.l 1 ;$0018 _CTRLVCのベクタ
MM_ERRJVC: .ds.l 1 ;$001C _ERRJVCのベクタ
MM_COMMAND_LINE: .ds.l 1 ;$0020 コマンドラインのアドレス
MM_HANDLER_MAP: .ds.b 12 ;$0024 ハンドラの使用状況
MM_BSS: .ds.l 1 ;$0030 bssの先頭
MM_HEAP: .ds.l 1 ;$0034 ヒープの先頭
MM_STACK: .ds.l 1 ;$0038 スタックエリアの先頭
MM_USP: .ds.l 1 ;$003C 親のUSP
MM_SSP: .ds.l 1 ;$0040 親のSSP
MM_SR: .ds.w 1 ;$0044 親のSR
MM_ABORT_SR: .ds.w 1 ;$0046 アボート時のSR
MM_ABORT_SSP: .ds.l 1 ;$0048 アボート時のSSP
MM_TRAP10: .ds.l 1 ;$004C TRAP#10のベクタ
MM_TRAP11: .ds.l 1 ;$0050 TRAP#11のベクタ
MM_TRAP12: .ds.l 1 ;$0054 TRAP#12のベクタ
MM_TRAP13: .ds.l 1 ;$0058 TRAP#13のベクタ
MM_TRAP14: .ds.l 1 ;$005C TRAP#14のベクタ
MM_OS_FLAG: .ds.l 1 ;$0060 OSフラグ。-1=CONFIG.SYSのSHELLで起動,0=その他
MM_MODULE_NUMBER: .ds.b 1 ;$0064 モジュール番号
.ds.b 3 ;$0065 未定義
MM_CHILD_MEMORY: .ds.l 1 ;$0068 子プロセスのメモリ管理テーブル
.ds.l 5 ;$006C 予約
MM_PATH: .ds.b 68 ;$0080 実行ファイルのパス
MM_NAME: .ds.b 24 ;$00C4 実行ファイルのファイル名
.ds.l 9 ;$00DC 予約
MM_PROGRAM: ;$0100 プログラムの先頭
.text
;----------------------------------------------------------------
; プロセス管理テーブル
;----------------------------------------------------------------
.offset 0
PM_ENVIRONMENT: .ds.l 1 ;$0000 環境の領域のアドレス
PM_EXITVC: .ds.l 1 ;$0004 _EXITVCのベクタ。親の_EXECの直後
PM_CTRLVC: .ds.l 1 ;$0008 _CTRLVCのベクタ
PM_ERRJVC: .ds.l 1 ;$000C _ERRJVCのベクタ
PM_COMMAND_LINE: .ds.l 1 ;$0010 コマンドラインのアドレス
PM_HANDLER_MAP: .ds.b 12 ;$0014 ハンドラの使用状況
PM_BSS: .ds.l 1 ;$0020 bssの先頭
PM_HEAP: .ds.l 1 ;$0024 ヒープの先頭
PM_STACK: .ds.l 1 ;$0028 スタックエリアの先頭
PM_USP: .ds.l 1 ;$002C 親のUSP
PM_SSP: .ds.l 1 ;$0030 親のSSP
PM_SR: .ds.w 1 ;$0034 親のSR
PM_ABORT_SR: .ds.w 1 ;$0036 アボート時のSR
PM_ABORT_SSP: .ds.l 1 ;$0038 アボート時のSSP
PM_TRAP_10: .ds.l 1 ;$003C TRAP#10のベクタ
PM_TRAP_11: .ds.l 1 ;$0040 TRAP#11のベクタ
PM_TRAP_12: .ds.l 1 ;$0044 TRAP#12のベクタ
PM_TRAP_13: .ds.l 1 ;$0048 TRAP#13のベクタ
PM_TRAP_14: .ds.l 1 ;$004C TRAP#14のベクタ
PM_OS_FLAG: .ds.l 1 ;$0050 OSフラグ。-1=CONFIG.SYSのSHELLで起動,0=その他
PM_MODULE_NUMBER: .ds.b 1 ;$0054 モジュール番号
.ds.b 3 ;$0055 未定義
PM_CHILD_MEMORY: .ds.l 1 ;$0058 子プロセスのメモリ管理テーブル
.ds.l 5 ;$005C 予約
PM_PATH: .ds.b 68 ;$0070 実行ファイルのパス
PM_NAME: .ds.b 24 ;$00B4 実行ファイルのファイル名
.ds.l 9 ;$00CC 予約
PM_PROGRAM: ;$00F0 プログラムの先頭
.text
;----------------------------------------------------------------
; _NAMESTS形式のファイル名
;----------------------------------------------------------------
.offset 0
NS_FLAG: .ds.b 1 ;$0000 フラグ
NS_DRIVE: .ds.b 1 ;$0001 内部ドライブ番号。0=A:
NS_PATH: .ds.b 65 ;$0002 パス。前後と区切りは$09または'\'
NS_NAME_1: .ds.b 8 ;$0043 ファイル名1。残りは' '
NS_EXT: .ds.b 3 ;$004B 拡張子。残りは' '
NS_NAME_2: .ds.b 10 ;$004E ファイル名2。残りは0
NS_SIZE: ;$0056 (88バイト)
.text
;----------------------------------------------------------------
; _NAMECKのバッファ
;----------------------------------------------------------------
.offset 0
NC_DRIVE: .ds.b 2 ;$0000 ドライブ名。'A:'
NC_PATH: .ds.b 65 ;$0002 パス。'/path/',0
NC_NAME: .ds.b 19 ;$0043 ファイル名。'name',0
NC_EXT: .ds.b 5 ;$0056 拡張子。'.ext',0
NC_SIZE_1: .ds.b 1 ;$005B (91バイト)
NC_SIZE: ;$005C (92バイト)
.text
;----------------------------------------------------------------
; _FILES/_NFILESのバッファ
;----------------------------------------------------------------
.offset 0
FI_OS_ATTRIBUTE: .ds.b 1 ;$0000 検索する属性
FI_OS_DRIVE: .ds.b 1 ;$0001 検索する内部ドライブ番号。0=A:
FI_OS_SECTOR: .ds.l 1 ;$0002 エントリがあるセクタ番号
FI_OS_CONTINUOUS: .ds.w 1 ;$0006 連続しているセクタ数-1
FI_OS_OFFSET: .ds.w 1 ;$0008 セクタ先頭からのオフセット。-1=該当するファイルがもうない
FI_OS_NAME: .ds.b 8 ;$000A 検索するファイル名
FI_OS_EXT: .ds.b 3 ;$0012 検索する拡張子
FI_ATTRIBUTE: .ds.b 1 ;$0015 属性
FI_TIME: .ds.w 1 ;$0016 時刻
FI_DATE: .ds.w 1 ;$0018 日付
FI_LENGTH: .ds.l 1 ;$001A ファイルサイズ
FI_NAME: .ds.b 23 ;$001E ファイル名
FI_SIZE_1: .ds.b 1 ;$0035 (53バイト)
FI_SIZE: ;$0036 (54バイト)
.offset FI_SIZE_1
FI_LONG_NAMESTS:
FI_LONG_DRIVE: .ds.b 2 ;$0035 内部ドライブ名。'A:'
FI_LONG_PATH: .ds.b 65 ;$0037 パス。区切りは'\'
FI_LONG_NAME_1: .ds.b 8 ;$0078 ファイル名1。残りは' 'または'?'
FI_LONG_EXT: .ds.b 3 ;$0080 拡張子。残りは' 'または'?'
FI_LONG_NAME_2: .ds.b 10 ;$0083 ファイル名2。残りは0
FI_LONG_SIZE: ;$008D
.text
;----------------------------------------------------------------
; スレッド管理テーブル
;----------------------------------------------------------------
.offset 0
TH_NEXT: .ds.l 1 ;$0000 次のスレッド管理テーブルのアドレス
TH_SLEEP_FLAG: .ds.b 1 ;$0004 スリープフラグ。-2=強制スリープ状態,-1=スリープ状態,0=実行中
TH_COUNT: .ds.b 1 ;$0005 カウンタ
TH_MAX_COUNT: .ds.b 1 ;$0006 最大カウント。優先レベル
TH_DOSCALL_NUMBER: .ds.b 1 ;$0007 レベル0で入ったDOSコールの番号
TH_PROCESS_MEMORY: .ds.l 1 ;$0008 実行中のプロセスのメモリ管理テーブル
TH_USP: .ds.l 1 ;$000C USP
TH_D0: .ds.l 1 ;$0010 D0
TH_D1: .ds.l 1 ;$0014 D1
TH_D2: .ds.l 1 ;$0018 D2
TH_D3: .ds.l 1 ;$001C D3
TH_D4: .ds.l 1 ;$0020 D4
TH_D5: .ds.l 1 ;$0024 D5
TH_D6: .ds.l 1 ;$0028 D6
TH_D7: .ds.l 1 ;$002C D7
TH_A0: .ds.l 1 ;$0030 A0
TH_A1: .ds.l 1 ;$0034 A1
TH_A2: .ds.l 1 ;$0038 A2
TH_A3: .ds.l 1 ;$003C A3
TH_A4: .ds.l 1 ;$0040 A4
TH_A5: .ds.l 1 ;$0044 A5
TH_A6: .ds.l 1 ;$0048 A6
TH_SR: .ds.w 1 ;$004C SR
TH_PC: .ds.l 1 ;$004E PC
TH_SSP: .ds.l 1 ;$0052 SSP
TH_DOSCALL_LEVEL: .ds.w 1 ;$0056 DOSコールのレベル
TH_DOSCALL_SP: .ds.l 1 ;$0058 DOSコールにレベル0で入ったときのSP
TH_SEND_BUFFER: .ds.l 1 ;$005C スレッド間通信バッファのアドレス
TH_THREAD_NAME: .ds.b 16 ;$0060 スレッド名
TH_WAIT_TIME: .ds.l 1 ;$0070 ウェイトタイム
; 以下は_GET_PRでコピーされない
TH_MEMORY_START: .ds.l 1 ;$0074 _MALLOCできるメモリ空間の先頭アドレス
TH_MEMORY_END: .ds.l 1 ;$0078 _MALLOCできるメモリ空間の末尾アドレス+1
TH_SIZE: ;$007C (124バイト)
.text
;----------------------------------------------------------------
; DOSコールにレベル0で入ったときのSSPからのオフセット
;----------------------------------------------------------------
.offset 0
DOS_STACK_D1: .ds.l 1 ;$0000 D1
DOS_STACK_D2: .ds.l 1 ;$0004 D2
DOS_STACK_D3: .ds.l 1 ;$0008 D3
DOS_STACK_D4: .ds.l 1 ;$000C D4
DOS_STACK_D5: .ds.l 1 ;$0010 D5
DOS_STACK_D6: .ds.l 1 ;$0014 D6
DOS_STACK_D7: .ds.l 1 ;$0018 D7
DOS_STACK_A0: .ds.l 1 ;$001C A0
DOS_STACK_A1: .ds.l 1 ;$0020 A1
DOS_STACK_A2: .ds.l 1 ;$0024 A2
DOS_STACK_A3: .ds.l 1 ;$0028 A3
DOS_STACK_A4: .ds.l 1 ;$002C A4
DOS_STACK_A5: .ds.l 1 ;$0030 A5
DOS_STACK_A6: .ds.l 1 ;$0034 A6
DOS_STACK_SR: .ds.w 1 ;$0038 SR
DOS_STACK_PC: .ds.l 1 ;$003A PC
DOS_STACK_FORMAT: .ds.w 1 ;$003E フォーマットとベクタオフセット
DOS_STACK_SSP: ;$0040 (DOSコールにレベル0で入る前のSSPの位置)
.text
.endif ;__dosconst_equ__
.list