home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / wst!oma3.lha / OMA / Include / exec / lists.i < prev    next >
Encoding:
Text File  |  1994-12-23  |  1.9 KB  |  125 lines

  1.     IFND    EXEC_LISTS_I
  2. EXEC_LISTS_I    EQU    1
  3. *    $Filename: exec/lists.i $
  4. *    $Release: 2.04 Includes, V37.4 $
  5. *    $Revision: 36.10 $
  6. *    $Date: 91/02/19 $
  7. *    Definitions and macros for use with Exec lists.  Most of the
  8. *    macros require ownership or locking of the list before use.
  9. *    (C) Copyright 1985-1991 Commodore-Amiga, Inc.
  10. *        All Rights Reserved
  11.     IFND    EXEC_NODES_I
  12.     INCLUDE    "exec/nodes.i"
  13.     ENDC
  14.     RSRESET
  15. LH    rs.b    0
  16. LH_HEAD    rs    2
  17. LH_TAIL    rs    2
  18. LH_TAILPRED    rs    2
  19. LH_TYPE    rs.b    1
  20. LH_pad    rs.b    1
  21. LH_SIZE    rs.b    0
  22.     RSRESET
  23. MLH    rs.b    0
  24. MLH_HEAD    rs    2
  25. MLH_TAIL    rs    2
  26. MLH_TAILPRED    rs    2
  27. MLH_SIZE    rs.b    0
  28. NEWLIST    MACRO
  29.     MOVE.L    \1,LH_TAILPRED(\1)
  30.     ADDQ.L    #4,\1
  31.     CLR.L    (\1)
  32.     MOVE.L    \1,-(\1)
  33.     ENDM
  34. TSTLIST    MACRO
  35.     IFGT    NARG-1
  36.     FAIL
  37.     ENDC
  38.     IFC    '\1',''
  39.     CMP.L    LH_TAIL+LN_PRED(A0),A0
  40.     ENDC
  41.     IFNC    '\1',''
  42.     CMP.L    LH_TAIL+LN_PRED(\1),\1
  43.     ENDC
  44.     ENDM
  45. TSTLST2    MACRO
  46.     MOVE.L    \1,\2
  47.     TST.L    (\2)
  48.     ENDM
  49. SUCC    MACRO
  50.     MOVE.L    (\1),\2
  51.     ENDM
  52. PRED    MACRO
  53.     MOVE.L    LN_PRED(\1),\2
  54.     ENDM
  55. IFEMPTY    MACRO
  56.     CMP.L    LH_TAIL+LN_PRED(\1),\1
  57.     BEQ    \2
  58.     ENDM
  59. IFNOTEMPTY    MACRO
  60.     CMP.L    LH_TAIL+LN_PRED(\1),\1
  61.     BNE    \2
  62.     ENDM
  63. TSTNODE    MACRO
  64.     MOVE.L    (\1),\2
  65.     TST.L    (\2)
  66.     ENDM
  67. NEXTNODE    MACRO
  68.     MOVE.L    \1,\2
  69.     MOVE.L    (\2),\1
  70.     IFC    '\0',''
  71.     BEQ    \3
  72.     ENDC
  73.     IFNC    '\0',''
  74.     BEQ.S    \3
  75.     ENDC
  76.     ENDM
  77. ADDHEAD    MACRO
  78.     MOVE.L    (A0),D0
  79.     MOVE.L    A1,(A0)
  80.     MOVEM.L    D0/A0,(A1)
  81.     MOVE.L    D0,A0
  82.     MOVE.L    A1,LN_PRED(A0)
  83.     ENDM
  84. ADDTAIL    MACRO
  85.     ADDQ.L    #LH_TAIL,A0
  86.     MOVE.L    LN_PRED(A0),D0
  87.     MOVE.L    A1,LN_PRED(A0)
  88.     MOVE.L    A0,(A1)
  89.     MOVE.L    D0,LN_PRED(A1)
  90.     MOVE.L    D0,A0
  91.     MOVE.L    A1,(A0)
  92.     ENDM
  93. REMOVE    MACRO
  94.     MOVE.L    (A1),A0
  95.     MOVE.L    LN_PRED(A1),A1
  96.     MOVE.L    A0,(A1)
  97.     MOVE.L    A1,LN_PRED(A0)
  98.     ENDM
  99. REMHEAD    MACRO
  100.     MOVE.L    (A0),A1
  101.     MOVE.L    (A1),D0
  102.     BEQ.S    REMHEAD\@
  103.     MOVE.L    D0,(A0)
  104.     EXG.L    D0,A1
  105.     MOVE.L    A0,LN_PRED(A1)
  106. REMHEAD\@    
  107.     ENDM
  108. REMHEADQ    MACRO
  109.     MOVE.L    (\1),\2
  110.     MOVE.L    (\2),\3
  111.     MOVE.L    \3,(\1)
  112.     MOVE.L    \1,LN_PRED(\3)
  113.     ENDM
  114. REMTAIL    MACRO
  115.     MOVE.L    LH_TAIL+LN_PRED(A0),A1
  116.     MOVE.L    LN_PRED(A1),D0
  117.     BEQ.S    REMTAIL\@
  118.     MOVE.L    D0,LH_TAIL+LN_PRED(A0)
  119.     EXG.L    D0,A1
  120.     MOVE.L    A0,(A1)
  121.     ADDQ.L    #4,(A1)
  122. REMTAIL\@    
  123.     ENDM
  124.     ENDC
  125.