View difference between Paste ID: U9T5KMfB and gXDjUeXi
SHOW: | | - or go back to the newest paste.
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-
81 (1) - advance M4 by value, transfer contents of augmented address to M8 ($0009=#$00)
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-
8D (1) - push next value (1 byte) to metastack as a 2-byte value (value, #$00)
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-
A0 (2) - advance M4 by next 2 values, transfer contents of augmented address to M8 ($0009=#$00)
18+
09 (0) - transfer metastack values #$05/#$06 from bottom to M8 (#$FA #$FF)
19-
A5 (2) - store contents of specified address to M8 ($0009=#$00)
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-
C6 (0) - checks if M8 < MC
25+
26-
C7 (0) - checks if M8 ≤ MC
26+
10 (0) - transfer metastack values #$17/#$18 from bottom to MC (#$E8 #$FF)
27-
C8 (0) - checks if M8 > MC
27+
11 (0) - transfer metastack values #$15/#$16 from bottom to MC (#$EA #$FF)
28-
C9 (0) - checks if M8 ≥ MC
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