
  PROCEDURE [INLINE] mmp$aste_pointer
    (    xasid: ost$asid;
     VAR aste_p: ^mmt$active_segment_table_entry);

?? PUSH (LISTEXT := ON) ??

    VAR
      asid: ost$asid,
      asid_16: mmt$ast_index,
      asid_256: mmt$ast_index,
      asid_4096: mmt$ast_index,
      asti: integer;

    asid := xasid;
    asid := asid DIV mmv$a_mult + (asid MOD mmv$a_mult) * mmv$a_divisor;

    asid_16 := asid DIV 16;
    asid_16 := asid_16 MOD 16;

    asid_256 := asid DIV 256;
    asid_256 := asid_256 MOD 16;

    asid_4096 := asid DIV 4096;
    asid_4096 := asid_4096 MOD 16;

    asti := (mmv$asid_asti_bits [asid MOD 16] * 4096) +
          (mmv$asid_asti_bits [asid_16] * 256) +
          (mmv$asid_asti_bits [asid_256] * 16) +
          mmv$asid_asti_bits [asid_4096];
    aste_p := ^mmv$ast_p^ [asti];
    IF NOT aste_p^.in_use THEN
      aste_p := NIL;
    IFEND;

  PROCEND mmp$aste_pointer;

*copyc mmt$active_segment_table
*copyc mmt$ast_index
*copyc ost$hardware_subranges
*copyc mmv$a_divisor
*copyc mmv$a_mult
*copyc mmv$asid_asti_bits
*copyc mmv$ast_p
?? POP ??
