MODULE iom$translate_byte_address;
?? RIGHT := 110 ??

?? NEWTITLE := 'Global Declarations Referenced By This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc osd$default_pragmats
*copyc amt$file_byte_address
*copyc dmt$ms_logical_device_address
*copyc gft$locked_file_desc_entry_p
*copyc gft$system_file_identifier
*copyc iot$io_function
*copyc iot$rb_translate_byte_address
*copyc jmt$ijl_ordinal
*copyc ost$cpu_state_table
*copyc ost$hardware_subranges
*copyc syt$monitor_status
?? POP ??
*copyc dmp$write
*copyc gfp$mtr_get_locked_fde_p
?? OLDTITLE ??
?? NEWTITLE := 'IOP$TRANSLATE_BYTE_ADDRESS', EJECT ??

  PROCEDURE [XDCL] iop$translate_byte_address
    (VAR request_block: iot$rb_translate_byte_address;
         cst_p: ^ost$cpu_state_table);

    VAR
      device_address: dmt$ms_logical_device_address,
      fde_p: gft$locked_file_desc_entry_p,
      file_byte_address: amt$file_byte_address,
      io_function: iot$io_function,
      length: ost$byte_count,
      m_request_block: iot$rb_translate_byte_address,
      status: syt$monitor_status;

    request_block.status.normal := TRUE;

    m_request_block := request_block;

    gfp$mtr_get_locked_fde_p (m_request_block.system_file_id, cst_p^.ijle_p, fde_p);
    file_byte_address := m_request_block.file_byte_address;
    length := m_request_block.length;

    io_function := ioc$write_page;
    dmp$write (fde_p, file_byte_address, length, io_function, device_address, status);

    request_block.device_address := device_address;
    request_block.status := status;

  PROCEND iop$translate_byte_address;
?? OLDTITLE ??
MODEND iom$translate_byte_address;
