|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 5873 (0x16f1) Types: TextFile Notes: R1k Text-file segment
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦c64a8f83d⟧ └─⟦this⟧
with io_exceptions; use io_exceptions; with file_support; use file_support; with os_files; with system; with cross_msgs; with target_types; use target_types; package os_file_msgs is ----------------------- -- Cross_io commands -- ----------------------- get_integer_cmd: constant cross_msgs.commands := 16#41#; get_full_name_cmd: constant cross_msgs.commands := 16#42#; get_open_cmd: constant cross_msgs.commands := 16#43#; get_block_cmd: constant cross_msgs.commands := 16#44#; get_boolean_cmd: constant cross_msgs.commands := 16#45#; get_ok_to_write_cmd: constant cross_msgs.commands := 16#46#; delete_cmd: constant cross_msgs.commands := 16#61#; close_cmd: constant cross_msgs.commands := 16#62#; open_cmd: constant cross_msgs.commands := 16#63#; write_cmd: constant cross_msgs.commands := 16#64#; read_cmd: constant cross_msgs.commands := 16#65#; position_file_cmd: constant cross_msgs.commands := 16#66#; skip_in_file_cmd: constant cross_msgs.commands := 16#67#; is_interactive_cmd: constant cross_msgs.commands := 16#68#; file_size_cmd: constant cross_msgs.commands := 16#69#; ok_to_write_cmd: constant cross_msgs.commands := 16#6a#; at_end_of_file_cmd: constant cross_msgs.commands := 16#6b#; truncate_cmd: constant cross_msgs.commands := 16#6c#; ------------------------------- -- Cross_io message formats. -- ------------------------------- type at_end_of_file_params is record fd: target_fd; index: target_int; end record; type file_size_params is record fd: target_fd; elem_size: target_int; end record; type position_file_params is record fd: target_fd; to: target_int; size: target_int; end record; type skip_in_file_params is record fd: target_fd; to: target_int; end record; type xfer_params is record fd: target_fd; cnt: target_int; end record; type open_params is record record_size: target_int; name_len: target_int; style: target_style; mode: target_mode; create: target_bool; end record; type open_returns is record fd: target_fd; name_len: target_int; file_id: target_file_id; end record; type ok_to_write_params is record fd: target_fd; buf_empty: target_bool; out_char_eq_lf: target_bool; end record; type get_full_name_params is record style: target_style; end record; type ok_to_write_returns is record ok: target_bool; decrement_ptrs: target_bool; end record; type init_os_files_returns is record stdin_fd: target_fd; stdout_fd: target_fd; stderr_fd: target_fd; file_id_type_size: target_int; always_flush_files: target_bool; end record; ---------------------------------------------------------------- -- Rep clauses for the messages. These depend on the target, -- -- since the sizes of the fields are target-specific. The -- representations must be the same on both host and target. ---------------------------------------------------------------- for at_end_of_file_params use record fd at 0 range 0..31; index at 4 range 0..31; end record; for file_size_params use record fd at 0 range 0..31; elem_size at 4 range 0..31; end record; for position_file_params use record fd at 0 range 0..31; to at 4 range 0..31; size at 8 range 0..31; end record; for skip_in_file_params use record fd at 0 range 0..31; to at 4 range 0..31; end record; for xfer_params use record fd at 0 range 0..31; cnt at 4 range 0..31; end record; for open_params use record record_size at 0 range 0..31; name_len at 4 range 0..31; style at 8 range 0..7; mode at 9 range 0..7; create at 10 range 0..7; end record; for open_returns use record fd at 0 range 0..31; name_len at 4 range 0..31; file_id at 8 range 0..63; end record; for ok_to_write_params use record fd at 0 range 0..31; buf_empty at 4 range 0..7; out_char_eq_lf at 5 range 0..7; end record; for get_full_name_params use record style at 0 range 0..7; end record; for ok_to_write_returns use record ok at 0 range 0..7; decrement_ptrs at 1 range 0..7; end record; for init_os_files_returns use record stdin_fd at 0 range 0..31; stdout_fd at 4 range 0..31; stderr_fd at 8 range 0..31; file_id_type_size at 12 range 0..31; always_flush_files at 16 range 0..7; end record; ---------------------------------------------------------------- -- Record-size constants, given in storage units -- ---------------------------------------------------------------- AT_END_OF_FILE_PARAMS_SIZE: constant := 8; FILE_SIZE_PARAMS_SIZE: constant := 8; POSITION_FILE_PARAMS_SIZE: constant := 12; SKIP_IN_FILE_PARAMS_SIZE: constant := 8; XFER_PARAMS_SIZE: constant := 8; OPEN_PARAMS_SIZE: constant := 11; OPEN_RETURNS_SIZE: constant := 16; OK_TO_WRITE_PARAMS_SIZE: constant := 6; GET_FULL_NAME_PARAMS_SIZE: constant := 1; OK_TO_WRITE_RETURNS_SIZE: constant := 2; INIT_OS_FILES_RETURNS_SIZE: constant := 17; for at_end_of_file_params'size use AT_END_OF_FILE_PARAMS_SIZE*system.STORAGE_UNIT; for file_size_params'size use FILE_SIZE_PARAMS_SIZE*system.STORAGE_UNIT; for position_file_params'size use POSITION_FILE_PARAMS_SIZE*system.STORAGE_UNIT; for skip_in_file_params'size use SKIP_IN_FILE_PARAMS_SIZE*system.STORAGE_UNIT; for xfer_params'size use XFER_PARAMS_SIZE*system.STORAGE_UNIT; for open_params'size use OPEN_PARAMS_SIZE*system.STORAGE_UNIT; for open_returns'size use OPEN_RETURNS_SIZE*system.STORAGE_UNIT; for ok_to_write_params'size use OK_TO_WRITE_PARAMS_SIZE*system.STORAGE_UNIT; for get_full_name_params'size use GET_FULL_NAME_PARAMS_SIZE*system.STORAGE_UNIT; for ok_to_write_returns'size use OK_TO_WRITE_RETURNS_SIZE*system.STORAGE_UNIT; for init_os_files_returns'size use INIT_OS_FILES_RETURNS_SIZE*system.STORAGE_UNIT; end os_file_msgs