home *** CD-ROM | disk | FTP | other *** search
/ Dave Lowe: Devpac Amiga 1 / Lowe_DevpacAmiga1.adf / include / exec / lists.i < prev    next >
Encoding:
Text File  |  1987-11-09  |  1.7 KB  |  129 lines

  1.     IFND    EXEC_LISTS_I
  2. EXEC_LISTS_I    SET 1
  3.  
  4.     IFND    EXEC_NODES_I
  5.     INCLUDE    "exec/nodes.i"        for LN_PRED
  6.     ENDC    !EXEC_NODES_I
  7.  
  8.     rsset    0
  9. LH_HEAD    rs.l    1
  10. LH_TAIL    rs.l    1
  11. LH_TAILPRED    rs.l    1
  12. LH_TYPE    rs.b    1
  13. LH_pad    rs.b    1
  14. LH_SIZE    rs.w    0
  15.  
  16.     rsreset
  17. MLH_HEAD    rs.l    1
  18. MLH_TAIL    rs.l    1
  19. MLH_TAILPRED    rs.l    1
  20. MLH_SIZE    rs.w    0
  21.  
  22.  
  23. NEWLIST    MACRO
  24.     MOVE.L  \1,(\1)
  25.     ADDQ.L  #LH_TAIL,(\1)
  26.     CLR.L   LH_TAIL(\1)
  27.     MOVE.L  \1,(LH_TAIL+LN_PRED)(\1)
  28.     ENDM
  29.  
  30. TSTLIST    MACRO
  31.     IFC      '\1',''
  32.     CMP.L   LH_TAIL+LN_PRED(A0),A0
  33.     ENDC
  34.     IFNC    '\1',''
  35.     CMP.L   LH_TAIL+LN_PRED(\1),\1
  36.     ENDC
  37.     ENDM
  38.  
  39. SUCC    MACRO
  40.     MOVE.L  (\1),\2
  41.     ENDM
  42.  
  43. PRED    MACRO
  44.     MOVE.L  LN_PRED(\1),\2
  45.     ENDM
  46.  
  47. IFEMPTY    MACRO
  48.     CMP.L   LH_TAIL+LN_PRED(\1),\1
  49.     BEQ     \2
  50.     ENDM
  51.  
  52. IFNOTEMPTY    MACRO
  53.     CMP.L   LH_TAIL+LN_PRED(\1),\1
  54.     BNE     \2
  55.     ENDM
  56.  
  57. TSTNODE    MACRO
  58.     MOVE.L  (\1),\2
  59.     TST.L   (\2)
  60.     ENDM
  61.  
  62. NEXTNODE    MACRO
  63.     MOVE.L  \1,\2
  64.     MOVE.L  (\2),\1
  65.     IFC    '\0','W'        diff to Amiga Asm
  66.     BEQ     \3
  67.     ENDC
  68.     IFNC    '\0','W'
  69.     BEQ.S    \3
  70.     ENDC
  71.     ENDM
  72.  
  73. ADDHEAD    MACRO
  74.     MOVE.L  (A0),D0
  75.     MOVE.L  A1,(A0)
  76.     MOVEM.L D0/A0,(A1)
  77.     MOVE.L  D0,A0
  78.     MOVE.L  A1,LN_PRED(A0)
  79.     ENDM
  80.  
  81. ADDTAIL    MACRO
  82.     LEA      LH_TAIL(A0),A0
  83.     MOVE.L  LN_PRED(A0),D0
  84.     MOVE.L  A1,LN_PRED(A0)
  85.     MOVE.L  A0,(A1)
  86.     MOVE.L  D0,LN_PRED(A1)
  87.     MOVE.L  D0,A0
  88.     MOVE.L  A1,(A0)
  89.     ENDM
  90.  
  91. REMOVE    MACRO
  92.     MOVE.L  (A1),A0
  93.     MOVE.L  LN_PRED(A1),A1
  94.     MOVE.L  A0,(A1)
  95.     MOVE.L  A1,LN_PRED(A0)
  96.     ENDM
  97.  
  98. REMHEAD    MACRO
  99.     MOVE.L  (A0),A1
  100.     MOVE.L  (A1),D0
  101.     BEQ.S   REMHEAD\@
  102.     MOVE.L  D0,(A0)
  103.     EXG.L   D0,A1
  104.     MOVE.L  A0,LN_PRED(A1)
  105. REMHEAD\@
  106.     ENDM
  107.  
  108.  
  109. REMHEADQ    MACRO
  110.     MOVE.L  (\1),\2
  111.     MOVE.L  (\2),\3
  112.     MOVE.L  \3,(\1)
  113.     MOVE.L  \1,LN_PRED(\3)
  114.     ENDM
  115.  
  116. REMTAIL    MACRO
  117.     MOVE.L  LH_TAIL+LN_PRED(A0),A1
  118.     MOVE.L  LN_PRED(A1),D0
  119.     BEQ.S   REMTAIL\@
  120.     MOVE.L  D0,LH_TAIL+LN_PRED(A0)
  121.     EXG.L   D0,A1
  122.     MOVE.L  A0,(A1)
  123.     ADDQ.L  #4,(A1)
  124. REMTAIL\@
  125.     ENDM
  126.  
  127.     ENDC    !EXEC_LISTS_I
  128.  
  129.