Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. .define LIST_NEXT 0
  2. .define LIST_PREV 1
  3. .define LIST_SIZE 2
  4.  
  5. ; +0 list
  6. ; returns
  7. ; none
  8. list_init:
  9. PUSH A
  10. SET A, [SP+2]
  11. SET [A+LIST_NEXT], A
  12. SET [A+LIST_PREV], A
  13. POP A
  14. RET
  15.  
  16. ; +1 List offset
  17. ; +0 Object
  18. ; Returns
  19. ; +0 Next object
  20. list_step:
  21. PUSH A
  22. SET A, [SP+2]
  23. ADD A, [SP+3]
  24. SET A, [A]
  25. SUB A, [SP+3]
  26. SET [SP+2], A
  27. POP A
  28. RET
  29.  
  30. ; +3 List offset
  31. ; +2 Object
  32. ; +1 List offset
  33. ; +0 Inserted Object
  34. list_insert_behind:
  35. PUSH Z
  36. SET Z, SP
  37. ADD Z, 2
  38. PUSH A
  39. PUSH B
  40.  
  41. SET A, [Z+2]
  42. ADD A, [Z+3]
  43. SET A, [A]
  44. PUSH 0
  45. PUSH A
  46. PUSH [Z+1]
  47. PUSH [Z+0]
  48. JSR list_insert
  49. ADD SP, 4
  50.  
  51. POP B
  52. POP A
  53. POP Z
  54. RET
  55.  
  56. ; +3 List offset
  57. ; +2 Object
  58. ; +1 List offset
  59. ; +0 Inserted Object
  60. .define ARG_OFFS 7
  61. .define ARG_OBJ 6
  62. .define ARG_OFFS_INS 5
  63. .define ARG_INS 4
  64. list_insert:
  65. PUSH A
  66. PUSH B
  67. PUSH C
  68. SET A, [SP+ARG_OBJ]
  69. ADD A, [SP+ARG_OFFS]
  70.  
  71. SET B, [SP+ARG_INS]
  72. ADD B, [SP+ARG_OFFS_INS]
  73.  
  74. SET C, [A]
  75. SET [A], B
  76.  
  77. SET [B], C
  78.  
  79. SET [C+1], B
  80. SET [B+1], A
  81. POP C
  82. POP B
  83. POP A
  84. RET
  85.  
  86. ; +1 List Offset
  87. ; +0 Object
  88. .define ARG_OFFS 5
  89. .define ARG_OBJ 4
  90. list_remove:
  91. PUSH A
  92. PUSH B
  93. PUSH C
  94. SET B, [SP+ARG_OBJ]
  95. ADD B, [SP+ARG_OFFS]
  96.  
  97. SET A, [B+1]
  98. SET C, [B]
  99.  
  100. SET [A], C
  101.  
  102. SET [C+1], A
  103. POP C
  104. POP B
  105. POP A
  106. RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement