Advertisement
Dugongue

Untitled

Jun 21st, 2018
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $0000/$0001 - M0 - address pointer
  2. $0002/$0003 - M2 - metastack (values are pushed/pulled here like in the stack) ($05??-$051F)?
  3. $0004/$0005 - M4 - address offset
  4. signifies the top of the metastack???
  5. $0006/$0007 - M6 - command queue
  6. $0008/$0009 - M8 - 1st math register
  7. $000C/$000D - MC - 2nd math register
  8.  
  9. 00 (0) - transfer metastack values #$17/#$18 from bottom to M8 (#$E8 #$FF)
  10. 01 (0) - transfer metastack values #$15/#$16 from bottom to M8 (#$EA #$FF)
  11. 02 (0) - transfer metastack values #$13/#$14 from bottom to M8 (#$EC #$FF)
  12. 03 (0) - transfer metastack values #$11/#$12 from bottom to M8 (#$EE #$FF)
  13. 04 (0) - transfer metastack values #$0F/#$10 from bottom to M8 (#$F0 #$FF)
  14. 05 (0) - transfer metastack values #$0D/#$0E from bottom to M8 (#$F2 #$FF)
  15. 06 (0) - transfer metastack values #$0B/#$0C from bottom to M8 (#$F4 #$FF)
  16. 07 (0) - transfer metastack values #$09/#$0A from bottom to M8 (#$F6 #$FF)
  17. 08 (0) - transfer metastack values #$07/#$08 from bottom to M8 (#$F8 #$FF)
  18. 09 (0) - transfer metastack values #$05/#$06 from bottom to M8 (#$FA #$FF)
  19. 0A (0) - transfer metastack values #$03/#$04 from bottom to M8 (#$FC #$FF)
  20. 0B (0) - transfer metastack values #$01/#$02 from bottom to M8 (#$FE #$FF)
  21. 0C (0) - transfer values 0B/0C (11/12) past metastack to M8
  22. 0D (0) - transfer values 0D/0E (13/14) past metastack to M8
  23. 0E (0) - transfer values 0F/10 (15/16) past metastack to M8
  24. 0F (0) - transfer values 11/12 (17/18) past metastack to M8
  25.  
  26. 10 (0) - transfer metastack values #$17/#$18 from bottom to MC (#$E8 #$FF)
  27. 11 (0) - transfer metastack values #$15/#$16 from bottom to MC (#$EA #$FF)
  28. 12 (0) - transfer metastack values #$13/#$14 from bottom to MC (#$EC #$FF)
  29. 13 (0) - transfer metastack values #$11/#$12 from bottom to MC (#$EE #$FF)
  30. 14 (0) - transfer metastack values #$0F/#$10 from bottom to MC (#$F0 #$FF)
  31. 15 (0) - transfer metastack values #$0D/#$0E from bottom to MC (#$F2 #$FF)
  32. 16 (0) - transfer metastack values #$0B/#$0C from bottom to MC (#$F4 #$FF)
  33. 17 (0) - transfer metastack values #$09/#$0A from bottom to MC (#$F6 #$FF)
  34. 18 (0) - transfer metastack values #$07/#$08 from bottom to MC (#$F8 #$FF)
  35. 19 (0) - transfer metastack values #$05/#$06 from bottom to MC (#$FA #$FF)
  36. 1A (0) - transfer metastack values #$03/#$04 from bottom to MC (#$FC #$FF)
  37. 1B (0) - transfer metastack values #$01/#$02 from bottom to MC (#$FE #$FF)
  38. 1C (0) - transfer values 0B/0C (11/12) past metastack to MC
  39. 1D (0) - transfer values 0D/0E (13/14) past metastack to MC
  40. 1E (0) - transfer values 0F/10 (15/16) past metastack to MC
  41. 1F (0) - transfer values 11/12 (17/18) past metastack to MC
  42.  
  43. 2A (0) - store M8 to metastack values 03/04
  44. 2B (0) - store M8 to metastack values 01/02
  45.  
  46. 3B (0) - push metastack values 01/02 to metastack
  47.  
  48. 3C (0) - push preloaded values 0B/0C to metastack
  49.  
  50. 3D (0) - push preloaded values 0D/0E to metastack
  51.  
  52. 4X (0) - stores the value of X to $0008 ($0009=#$00)
  53. 5X (0) - stores the value of X to $000C ($000D=#$00)
  54. 6X (0) - push X to the metastack as a 2-byte value (value, #$00)
  55. 7X (0) - adds the value of X to $0008
  56. 81 (1) - advance M4 by value, transfer contents of augmented address ($00),0 to M8 and ($00),1 to M9
  57. 85 (1) - store 2-byte value of M8 to specified (2) metastack locations
  58. 89 (1) - store the next value to M8 ($0009=#$00)
  59. 8A (2) - stores the next 2 values to M8
  60. 8B (1) - stores the next value to MC ($000D=#$00)
  61. 8C (2) - stores the next 2 values to MC
  62. 8D (1) - push next value (1 byte) to metastack as a 2-byte value
  63. 8E (2) - push the next 2 values to the metastack
  64. 8F (1) - add the next value to M8
  65. 90 (2) - add the next 2 values to M8
  66. A0 (2) - advance M4 by next 2 values, transfer contents of augmented address (1-byte) to $0008 ($0009=#$00)
  67. A2 (2) - advance M4 by next 2 values, transfer contents of $0008 (1-byte) to augmented address.
  68. A3 (2) - push specific metastack byte as 2-byte value to metastack
  69. A4 (2) - store 2-byte contents of specified address (plus 0, plus 1) to M8
  70. A5 (2) - store 1-byte contents of specified address to $0008 ($0009=#$00)
  71. A6 (2) - store 2-byte contents of specified address (plus 0, plus 1) to MC
  72. A7 (2) - store 1-byte contents of specified address to $000C ($000D=#$00)
  73. A8 (2) - store 2-byte contents of M8 to specified address (plus 0, plus 1)
  74. A9 (2) - store 1-byte contents of $0008 to specified address
  75. AA (2) - push 2-byte contents of specified address (plus 0, plus 1) to metastack
  76. AC (2) - push current queue position to metastack & jump to specified address
  77. AE (1) - empty a # of values from the metastack equal to the specified value
  78. B0 (0) - replace M8 with the 2-byte address at the address it contains (plus 0, plus 1)
  79. B1 (0) - pull 2 metastack values, then store 2-byte value of M8 to that address
  80. B3 (0) - pushes M8 to metastack
  81. B4 (0) - pulls 2 values from metastack to MC
  82. B5 (0) - multiply the contents of M8 by the contents of MC (2-byte)
  83. B8 (0) - divide M8 by MC
  84. BB (0) - Add MC to M8
  85. BC (0) - subtract MC from M8
  86. BD (0) - perform a number of left shifts to M8 equal to MC
  87. BE (0) - perform a number of right shifts to M8 equal to MC
  88.  
  89. C0 (0) - checks if M8 = MC
  90. C1 (0) - checks if M8 != MC
  91. C2 (0) - checks if M8 < MC (signed)
  92. C3 (0) - checks if M8 ≤ MC (signed)
  93. C4 (0) - checks if M8 > MC (signed)
  94. C5 (0) - checks if M8 ≥ MC (signed)
  95. C6 (0) - checks if M8 < MC (unsigned)
  96. C7 (0) - checks if M8 ≤ MC (unsigned)
  97. C8 (0) - checks if M8 > MC (unsigned)
  98. C9 (0) - checks if M8 ≥ MC (unsigned)
  99. CA (0) - checks if M8 = MC = 0
  100. CB (0) - take the negative of M8 (signed)
  101. CD (0) - swaps the contents of M8 and MC
  102. CF (0) - transfer values #$00-#$07 from ahead of the metastack to $0000-$0007
  103. inc M0, then JMP ($0000)
  104. D0 (0) - increments M8
  105. D1 (0) - decrements M8
  106. D2 (0) - doubles M8 (left shift)
  107. D3 (0) - replace M8 with the value specified at the address it contains ($0009=#$00)
  108. D4 (0) - Pull 2 metastack values, store $0008 to address specified
  109. D5 (x) - Adds the first 2 values to M8. Values 3 & 4 indicate the # of redirect addresses that
  110. follow. The first address is the "else" address if M8 ≥ values 3 & 4. The addresses
  111. after that correspond to the value of M8 beginning with #$00.
  112. D6 (2) - skips to the address specified in the next 2 values
  113. D7 (2) - skips to the address specified in the next 2 values if comparison was true
  114. D8 (2) - skips to the address specified in the next 2 values if comparison was false
  115. D9 (x) - First two values are the number of loops to run.
  116. Checks if the next two values are equal to M8. If they don't, advance M6 by 4.
  117. If the values match, rewrite M6 to address following the matching value.
  118. If the loop counter runs out, rewrite M6 to whatever address follows.
  119. DA (0) - ANDs the contents of M8 with those of MC
  120. DB (0) - ORAs the contents of M8 with those of MC
  121. DC (0) - EORs the contents of M8 with those of MC
  122.  
  123. DE (2) - stores address of specified meta value to M8
  124.  
  125. E9 (3) - runs subfunction specified in next 2 values & pulls a # of metastack bytes equal to 3rd value
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement