$save ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; itable.inc ; I/O System File-Driver Configuration Include file. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Define environment. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; code segment er public extrn nucerror:far code ends bios_code segment er public extrn rqaiosinittask: near extrn nullfdinit: near extrn noattdev: near extrn nullupdate: near extrn noattach: near extrn illegalfunct: near extrn cpyrt: near bios_code ends bios_data segment rw public bios_data ends true equ 0FFH false equ 000H configured equ 001H notconfigured equ 003H ; notsupported equates to 2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Define macro for declaring a constant data variable. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(const(symbol,decl,value)) (%' bios_code segment %symbol %decl %value public %symbol bios_code ends ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Define macros for creating file-driver global data. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(attach_device_task_prio(value)) (%const(attachdevicetaskprio,db,%value)) %*define(conn_job_delete_task_prio(value)) (%const(connjobdeletetaskprio,db,%value)) %*define(timer_task_data(priority,ticks_per_sec)) (%const(timertaskprio,db,%priority) %const(num_ticks_per_sec,dw,%ticks_per_sec)) %*define(num_file_drivers(value)) (%const(numfiledriver,dw,%value)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Define feature-configuration macros. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %*define(DSfeature(sym)) (%' bios_data segment extrn %sym: byte bios_data ends ) %*define(CSfeature(sym)) (%' bios_code segment extrn %sym: near bios_code ends ) %*define(dummy_timer) (%DSfeature(dummy_timer)) %*define(no_create_false) (%CSfeature(realcreatenamedfile)) %*define(no_truncate) (%DSfeature(no_truncate)) %*define(no_allocate) (%DSfeature(no_allocate)) %SET(sys_mgr_flag,0FFH) %*define(no_system_manager_user_id) (%SET(sys_mgr_flag,00H)) ; ; %'sparse_files configures in named-file-driver sparse-file simulation. ; (causes inmwrf: write$file to come from ioopt1.lib) ; ;*define(sparse_files) (CSfeature(writefile)) ; ; %'move_directories configures in named-file-drivers rename ability to ; move directories (causes irenam: real$nam$rename to come from ioopt1.lib) ; ;*define(move_directories) (CSfeature(realnamrename)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Define file-driver information structure, and segment to put it in. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; file_driver_info struc db ? ; file-driver uses user objects ?? dw ? ; connection size (words) dw ? ; attach-device-stack size (words) dw ? ; device-descriptor size (bytes) file_driver_info ends ; ; Define file-driver information macro. One of these declared for each ; file-driver (in file-driver order). ; %*define(def_system_manager) (%const(system_manager_id,db,%sys_mgr_flag)) %*define(file_driver_info(user,conn_entries,att_dev_stack_size,dev_desc)) (%' bios_code segment file_driver_info<%user,%conn_entries,%att_dev_stack_size,%dev_desc> bios_code ends ) ; ; Define file-driver request table (synchronous), ; ; Defaults give unsupported support-option. ICU will override supported ; operations with configured/not-configured values. ; req_file_driver struc db 2 ; rq$a$create$file db 2 ; rq$a$attach$file db 2 ; rq$a$delete$connection db 2 ; rq$a$create$directory db 2 ; rq$a$delete$file db 2 ; rq$a$rename$file db 2 ; rq$a$change$access db 2 ; rq$a$open db 2 ; rq$a$close db 2 ; rq$a$read db 2 ; rq$a$write db 2 ; rq$a$seek db 2 ; rq$a$truncate db 2 ; rq$a$special db 2 ; rq$a$get$connection$status db 2 ; rq$a$get$file$status db 2 ; rq$a$get$path$component db 2 ; rq$a$get$directory$entry db 2 ; rq$a$get$extension$data db 2 ; rq$a$set$extension$data db 2 ; rq$a$update req_file_driver ends ; ; Define file-driver service table structure (asynchronous) ; ; Defaults give unsupported support-option. ; ios_file_driver struc dd nullfdinit ; File-driver init dd 0 ; I/O (connection) Task dd nullupdate ; Update File dd noattach ; Attach File dd noattach ; Create File dd noattach ; Change Access (non-null path) dd noattach ; Delete (non-null path) dd illegalfunct ; Read dd illegalfunct ; Write dd illegalfunct ; Seek dd illegalfunct ; Special dd noattdev ; Attach Device dd 0 ; Detach Device dd illegalfunct ; Open dd illegalfunct ; Close dd illegalfunct ; Get Connection Status dd illegalfunct ; Get File Status dd illegalfunct ; Get Extension Data dd illegalfunct ; Set Extension Data dd illegalfunct ; Change Access (null path) dd illegalfunct ; Delete (null path) dd illegalfunct ; Rename dd illegalfunct ; Get Path Component dd illegalfunct ; Get Directory Entry dd illegalfunct ; Truncate dd illegalfunct ; Detach File ios_file_driver ends $restore $genonly