annotate code/ghc.lm @ 85:f420fabd0e44 default tip

One last README change
author Michael Pavone <pavone@retrodev.com>
date Mon, 28 Jul 2014 04:42:24 -0700
parents f1453e8970ca
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #{
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 import: [
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3 length
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 reverse
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5 split:at
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 map
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 fold:with
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 filter
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9 flatten
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10 ] from: (module: "ll.lm")
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 import: [
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 makeTree:size
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14 makeTree
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 filledTree
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16 _filledTree
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 get:fromTree:size
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 get:fromTree
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19 treeMap:size
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 treeMap
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21 tree:size:update:with
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22 tree:update:with
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 tree:set:to
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 ] from: (module: "tree.lm")
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26 add8 <- :a b {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27 a <- a + b
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 if: a >= 256 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
29 a <- a - 256
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
30 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31 a
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
32 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
33
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
34 sub8 <- :a b {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
35 a <- a - b
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
36 if: a < 0 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
37 a <- a + 256
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
38 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
39 a
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
40 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
41
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
42 mul8 <- :a b {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
43 a <- a * b
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
44 while: { a > 256 } do: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
45 a <- a - 256
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
46 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
47 a
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
48 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
49
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
50 and8 <- :a b {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
51 bit <- 128
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
52 out <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
53 while: { bit > 0 } do: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
54 if: a >= bit {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
55 a <- a - bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
56 if: b >= bit {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
57 b <- b - bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
58 out <- out + bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
59 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
60 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
61 if: b >= bit {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
62 b <- b - bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
63 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
64 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
65 bit <- bit / 2
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
66 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
67 out
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
68 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
69
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
70 or8 <- :a b {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
71 bit <- 128
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
72 out <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
73 while: { bit > 0 } do: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
74 if: a >= bit {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
75 a <- a - bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
76 out <- out + bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
77 if: b >= bit {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
78 b <- b - bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
79 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
80 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
81 if: b >= bit {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
82 b <- b - bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
83 out <- out + bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
84 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
85 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
86 bit <- bit / 2
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
87 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
88 out
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
89 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
90
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
91 xor8 <- :a b {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
92 bit <- 128
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
93 out <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
94 while: { bit > 0 } do: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
95 if: a >= bit {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
96 a <- a - bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
97 if: b >= bit {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
98 b <- b - bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
99 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
100 out <- out + bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
101 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
102 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
103 if: b >= bit {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
104 b <- b - bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
105 out <- out + bit
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
106 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
107 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
108 bit <- bit / 2
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
109 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
110 out
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
111 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
112
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
113 makeCPU <- :code intHandler {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
114 a <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
115 b <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
116 c <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
117 d <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
118 e <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
119 f <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
120 g <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
121 h <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
122
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
123 dataMem <- filledTree: 0 256
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
124
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
125 getRegVal <- :regnum pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
126 if: regnum >= 4 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
127 if: regnum >= 6 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
128 if: regnum = 6 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
129 regnum <- g
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
130 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
131 if: regnum = 7 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
132 regnum <- h
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
133 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
134 regnum <- pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
135 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
136 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
137 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
138 if: regnum = 4 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
139 regnum <- e
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
140 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
141 regnum <- f
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
142 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
143 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
144 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
145 if: regnum >= 2 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
146 if: regnum = 2 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
147 regnum <- c
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
148 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
149 regnum <- d
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
150 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
151 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
152 if: regnum {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
153 regnum <- b
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
154 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
155 regnum <- a
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
156 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
157 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
158 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
159 regnum
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
160 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
161
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
162 getArg <- :arg pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
163 type <- arg value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
164 param <- arg tail
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
165 if: type >= 2 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
166 if: type = 3 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
167 param <- get: param fromTree: dataMem
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
168 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
169 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
170 param <- getRegVal: param pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
171 if: type {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
172 param <- get: param fromTree: dataMem
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
173 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
174 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
175 param
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
176 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
177
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
178 setReg <- :regnum pc val {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
179 if: regnum >= 4 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
180 if: regnum >= 6 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
181 if: regnum = 6 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
182 g <- val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
183 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
184 if: regnum = 7 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
185 h <- val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
186 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
187 pc <- val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
188 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
189 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
190 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
191 if: regnum = 4 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
192 e <- val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
193 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
194 f <- val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
195 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
196 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
197 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
198 if: regnum >= 2 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
199 if: regnum = 2 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
200 c <- val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
201 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
202 d <- val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
203 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
204 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
205 if: regnum {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
206 b <- val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
207 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
208 a <- val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
209 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
210 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
211 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
212 pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
213 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
214
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
215 saveDest <- :arg pc val {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
216 type <- arg value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
217 param <- arg tail
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
218 if: type >= 2 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
219 if: type = 3 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
220 dataMem <- tree: dataMem set: param to: val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
221 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
222 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
223 if: type {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
224 param <- getRegVal: param pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
225 dataMem <- tree: dataMem set: param to: val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
226 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
227 pc <- setReg: param pc val
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
228 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
229 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
230 pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
231 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
232
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
233 mov <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
234 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
235 src <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
236 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
237 #[1 (saveDest: dst pc (getArg: src pc))]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
238 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
239 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
240
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
241 inc <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
242 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
243 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
244 #[1 (saveDest: dst pc (add8: (getArg: dst pc) 1))]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
245 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
246 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
247
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
248 dec <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
249 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
250 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
251 #[1 (saveDest: dst pc (sub8: (getArg: dst pc) 1))]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
252 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
253 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
254
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
255 add <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
256 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
257 src <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
258 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
259 #[1 (saveDest: dst pc (add8: (getArg: dst pc) (getArg: src pc)))]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
260 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
261 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
262
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
263 sub <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
264 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
265 src <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
266 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
267 #[1 (saveDest: dst pc (sub8: (getArg: dst pc) (getArg: src pc)))]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
268 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
269 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
270
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
271 mul <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
272 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
273 src <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
274 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
275 #[1 (saveDest: dst pc (mul8: (getArg: dst pc) (getArg: src pc)))]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
276 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
277 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
278
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
279 div <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
280 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
281 src <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
282 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
283 srcv <- getArg: src pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
284 if: srcv = 0 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
285 pc <- #[0 pc]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
286 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
287 pc <- #[1 (saveDest: dst pc (getArg: dst pc) / srcv)]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
288 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
289 pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
290 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
291 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
292
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
293 and <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
294 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
295 src <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
296 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
297 #[1 (saveDest: dst pc (and8: (getArg: dst pc) (getArg: src pc)))]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
298 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
299 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
300
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
301 or <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
302 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
303 src <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
304 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
305 #[1 (saveDest: dst pc (or8: (getArg: dst pc) (getArg: src pc)))]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
306 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
307 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
308
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
309 xor <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
310 dst <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
311 src <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
312 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
313 #[1 (saveDest: dst pc (xor8: (getArg: dst pc) (getArg: src pc)))]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
314 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
315 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
316
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
317 jlt <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
318 target <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
319 x <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
320 y <- ((args tail) tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
321 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
322 if: x >= y {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
323 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
324 pc <- target
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
325 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
326 pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
327 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
328 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
329
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
330 jeq <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
331 target <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
332 x <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
333 y <- ((args tail) tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
334 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
335 if: x = y {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
336 pc <- target
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
337 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
338 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
339 pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
340 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
341 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
342
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
343 jgt <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
344 target <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
345 x <- (args tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
346 y <- ((args tail) tail) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
347 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
348 if: x > y {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
349 pc <- target
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
350 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
351 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
352 pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
353 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
354 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
355
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
356 int <- :args {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
357 num <- args value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
358 :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
359 iargs <- a
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
360 if: num = 8 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
361 iargs <- #[a b c d e f g h]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
362 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
363 if: num = 7 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
364 iargs <- #[a b]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
365 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
366 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
367 intHandler: num iargs setReg pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
368 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
369 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
370
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
371
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
372 hlt <- :pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
373 #[0 pc]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
374 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
375
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
376 codeMem <- (fold: code #[(filledTree: hlt 256) 0] with: :acc inst {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
377 cmem <- acc value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
378 pc <- acc tail
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
379
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
380 inum <- inst value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
381 args <- inst tail
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
382
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
383 if: inum >= 7 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
384 if: inum >= 11 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
385 if: inum >= 13 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
386 if: inum = 14 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
387 inst <- hlt
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
388 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
389 inst <- int: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
390 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
391 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
392 if: inum = 12 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
393 inst <- jgt: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
394 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
395 inst <- jeq: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
396 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
397 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
398 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
399 if: inum >= 9 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
400 if: inum = 10 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
401 inst <- jlt: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
402 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
403 inst <- xor: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
404 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
405 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
406 if: inum = 8 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
407 inst <- or: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
408 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
409 inst <- and: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
410 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
411 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
412 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
413 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
414 if: inum >= 3 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
415 if: inum >= 5 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
416 if: inum = 5 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
417 inst <- mul: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
418 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
419 inst <- div: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
420 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
421 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
422 if: inum = 3 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
423 inst <- add: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
424 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
425 inst <- sub: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
426 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
427 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
428 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
429 if: inum = 2 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
430 inst <- dec: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
431 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
432 if: inum {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
433 inst <- inc: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
434 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
435 inst <- mov: args
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
436 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
437 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
438 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
439 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
440 #[(tree: cmem set: pc to: inst) pc + 1]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
441 }) value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
442
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
443 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
444 cycle <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
445 pc <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
446 ret <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
447 run <- 1
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
448
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
449 while: { run } do: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
450 ret <- get: pc fromTree: codeMem
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
451 ret <- ret: pc
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
452 run <- ret value
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
453
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
454 if: (ret tail) = pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
455 pc <- pc + 1
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
456 } else: {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
457 pc <- ret tail
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
458 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
459 cycle <- cycle + 1
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
460 if: cycle >= 1024 {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
461 run <- 0
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
462 } else: {}
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
463 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
464 cycle
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
465 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
466 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
467
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
468 main <- {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
469 cpu <- makeCPU: [
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
470 #[0 [#[0 0] #[2 31]]] //0 a <- 31
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
471 #[0 [#[0 1] #[2 45]]] //1 b <- 45
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
472 #[0 [#[0 2] #[2 57]]] //2 c <- 57
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
473 #[0 [#[0 3] #[2 127]]] //3 d <- 127
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
474 #[0 [#[0 4] #[2 128]]] //4 e <- 128
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
475 #[0 [#[0 5] #[2 254]]] //5 f <- 254
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
476 #[0 [#[0 6] #[2 255]]] //6 g <- 255
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
477 #[0 [#[0 7] #[2 3]]] //7 h <- 3
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
478 #[0 [#[3 0] #[2 45]]] //8 [0] <- 45
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
479 #[1 [#[0 0]]] //9 a <- a + 1 : 32
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
480 #[2 [#[0 1]]] //10 b <- b - 1 : 44
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
481 #[3 [#[0 2] #[0 3]]] //11 c <- c + d : 184
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
482 #[4 [#[0 4] #[0 5]]] //12 e <- e - f : 130
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
483 #[5 [#[0 6] #[0 7]]] //13 g <- g * h : 253
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
484 #[6 [#[3 0] #[0 0]]] //14 [0] <- [0] * a : 160
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
485 #[13 [8]] //15
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
486 #[14 []] //16
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
487 ] :num iargs setReg pc {
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
488 print: #[num pc iargs]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
489 #[1 pc]
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
490 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
491 print: (add8: 2 3)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
492 print: (add8: 255 1)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
493 print: (add8: 129 128)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
494 print: (sub8: 4 2)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
495 print: (sub8: 2 4)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
496 print: (sub8: 0 255)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
497 print: (mul8: 255 255)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
498 print: (mul8: 255 2)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
499 print: (mul8: 3 5)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
500 print: (and8: 127 254)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
501 print: (and8: 3 5)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
502 print: (or8: 127 254)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
503 print: (or8: 3 5)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
504 print: (xor8: 127 254)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
505 print: (xor8: 3 5)
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
506 print: (cpu: )
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
507 }
f1453e8970ca Added simulator for ghc microcontroller
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
508 }