?? NEWTITLE := '~~~~~   common deck DSP$COPY_MEMORY', EJECT ??
{********************************************************

{  Central memory access routines, deck DSP$COPY_MEMORY.

{********************************************************

  CONST
    max_memory_transfer = 30000,

{  Define constants for different pva types.

    interface_block = 0,
    start_of_ve = 1,
    start_of_ssr = 2,
    start_of_mf_wired = 3,
    dft_buffer = 4,
    start_of_dft_buffer_0 = dft_buffer;

  TYPE
    cm_transfer_method = (nos60_to_ve64, ve64_to_nos60, nos32_to_ve64,
      ve64_to_nos32, nos60_to_ve60, ve60_to_nos60, zero60_to_ve64),
    starting_pva = 0 ..0ffff(16),
    memory_copy_header = RECORD

{  The length is in units of the destination.  That is, the copy operation
{  terminates when "length" units have been transferred to the destination.

      length: 0 .. max_memory_transfer,
      copy_method: cm_transfer_method,
      pva_type: starting_pva,
      byte_rma: 0 .. 0ffffffff(16),
    RECEND;

  PROCEDURE [XREF] copy_memory ALIAS 'minilnk'
    (VAR hdr: memory_copy_header;
         buffer_pointer: ^cell);

  PROCEDURE [XREF] set_ei_pva ALIAS 'seteiad'
    (    pva: starting_pva;
         word_offset: integer);

  PROCEDURE [XREF] get_ei_pva ALIAS 'geteiad'
    (    pva: starting_pva;
     VAR word_offset: integer);

*copyc dsi$dft_types_and_constants
?? OLDTITLE ??
