{}
{ Command codes 00 .. 1f are allowed only in requests in ppu queue.
{}

  CONST
    ioc$cc_acknowledge = 0,
    ioc$cc_stop_unit = 1,
    ioc$cc_select_unit = 2,
    ioc$cc_select_controller = 3,
    ioc$cc_idle = 4,
    ioc$cc_resume = 5,
    ioc$cc_execute_overlay = 6,
    ioc$cc_start_ready_scan = 7,
    ioc$cc_stop_ready_scan = 8,
    ioc$cc_select_pp_address = 9(16),
    ioc$cc_copy_pp_memory = 0a(16),
    ioc$cc_load_controlware = 0c(16),
    ioc$cc_load_control_module = 0d(16),
    ioc$cc_enable_unit = 10(16),
    ioc$cc_disable_unit = 11(16),
    ioc$cc_master_clear_channel = 16(16),
    ioc$cc_master_clear_controller = 17(16),
{}
{ Command codes 20 .. 3f identify device_dependent (physical) commands.
{}
    ioc$cc_function = 20(16),
    ioc$cc_output_8_bit_parameters = 21(16),
    ioc$cc_output_6_bit_parameters = 22(16),
    ioc$cc_output_8_bit_data = 23(16),
    ioc$cc_output_6_bit_data = 24(16),
    ioc$cc_input_8_bit_data = 25(16),
    ioc$cc_input_6_bit_data = 26(16),
{}
{ Command codes 40 .. ff identify logical commands.
{}
    ioc$cc_read_bytes = 40(16),
    ioc$cc_read_record = 41(16),
    ioc$cc_read_6_bit_record = 42(16),
    ioc$cc_write_bytes = 50(16),
    ioc$cc_write_record = 51(16),
    ioc$cc_network_output = 51(16),
    ioc$cc_write_6_bit_record = 52(16),
    ioc$cc_read_status = 60(16),
    ioc$cc_store_transfer_count = 61(16),
    ioc$cc_compare_swap = 70(16),
    ioc$cc_pool_read = 71(16),
    ioc$cc_write_initialize = 72(16),
    ioc$cc_read_flaws = 73(16),
    ioc$cc_initialize_sectors = 74(16),
    ioc$cc_synchronize_pp = 75(16),
    ioc$cc_normal_flow_control = 77(16),
    ioc$cc_debug_mode = 78(16),
    ioc$cc_reset_device = 79(16),
    ioc$cc_define_ethernet_address = 7A(16),
    ioc$cc_write_verify = 80(16),
    ioc$cc_rewind = 90(16),
    ioc$cc_unload = 91(16),
    ioc$cc_forward_space_record = 92(16),
    ioc$cc_backspace_record = 93(16),
    ioc$cc_forward_space_filemark = 94(16),
    ioc$cc_backspace_filemark = 95(16),
    ioc$cc_write_filemark = 96(16),
    ioc$cc_security_erase = 97(16),
    ioc$cc_select_density = 98(16),
    ioc$cc_locate_block = 99(16);

  TYPE
    iot$command = packed record
      command_code: iot$command_code,
      flags: iot$flags,
      length: iot$command_length,
      address: ost$real_memory_address,
    recend,

    iot$command_code = 0 .. 0ff(16),

    iot$flags = packed record
      store_response: boolean,
      indirect_address: boolean,
      fill: 0 .. 3f(16),
    recend,

    iot$command_length = 0 .. 0ffff(16);

*copyc ost$hardware_subranges
