]> gitweb.factorcode.org Git - factor.git/blob - extra/cpu/8080/8080.factor
45a5129a722908e834dcd4a065f9559be7b4fc72
[factor.git] / extra / cpu / 8080 / 8080.factor
1 ! Copyright (C) 2006 Chris Double.
2 ! See http://factorcode.org/license.txt for BSD license.
3 !
4 USING: cpu.8080.emulator tools.time ;
5 IN: cpu.8080
6
7 INSTRUCTION: NOP          ; opcode 00 cycles 04 
8 INSTRUCTION: LD   BC,nn   ; opcode 01 cycles 10 
9 INSTRUCTION: LD   (BC),A  ; opcode 02 cycles 07 
10 INSTRUCTION: INC  BC      ; opcode 03 cycles 06 
11 INSTRUCTION: INC  B       ; opcode 04 cycles 05 
12 INSTRUCTION: DEC  B       ; opcode 05 cycles 05 
13 INSTRUCTION: LD   B,n     ; opcode 06 cycles 07 
14 INSTRUCTION: RLCA         ; opcode 07 cycles 04 
15 ! INSTRUCTION: NOP          ; opcode 08 cycles 04 
16 INSTRUCTION: ADD  HL,BC   ; opcode 09 cycles 11 
17 INSTRUCTION: LD   A,(BC)  ; opcode 0A cycles 07 
18 INSTRUCTION: DEC  BC      ; opcode 0B cycles 06 
19 INSTRUCTION: INC  C       ; opcode 0C cycles 05 
20 INSTRUCTION: DEC  C       ; opcode 0D cycles 05 
21 INSTRUCTION: LD   C,n     ; opcode 0E cycles 07 
22 INSTRUCTION: RRCA         ; opcode 0F cycles 04 
23 INSTRUCTION: LD   DE,nn   ; opcode 11 cycles 10 
24 INSTRUCTION: LD   (DE),A  ; opcode 12 cycles 07 
25 INSTRUCTION: INC  DE      ; opcode 13 cycles 06 
26 INSTRUCTION: INC  D       ; opcode 14 cycles 05 
27 INSTRUCTION: DEC  D       ; opcode 15 cycles 05 
28 INSTRUCTION: LD   D,n     ; opcode 16 cycles 07 
29 INSTRUCTION: RLA          ; opcode 17 cycles 04 
30 INSTRUCTION: ADD  HL,DE   ; opcode 19 cycles 11 
31 INSTRUCTION: LD   A,(DE)  ; opcode 1A cycles 07 
32 INSTRUCTION: DEC  DE      ; opcode 1B cycles 06 
33 INSTRUCTION: INC  E       ; opcode 1C cycles 05 
34 INSTRUCTION: DEC  E       ; opcode 1D cycles 05 
35 INSTRUCTION: LD   E,n     ; opcode 1E cycles 07 
36 INSTRUCTION: RRA          ; opcode 1F cycles 04 
37 INSTRUCTION: LD   HL,nn   ; opcode 21 cycles 10 
38 INSTRUCTION: LD   (nn),HL ; opcode 22 cycles 16 
39 INSTRUCTION: INC  HL      ; opcode 23 cycles 06 
40 INSTRUCTION: INC  H       ; opcode 24 cycles 05 
41 INSTRUCTION: DEC  H       ; opcode 25 cycles 05 
42 INSTRUCTION: LD   H,n     ; opcode 26 cycles 07 
43 INSTRUCTION: DAA          ; opcode 27 cycles 04 
44 INSTRUCTION: ADD  HL,HL   ; opcode 29 cycles 11 
45 INSTRUCTION: LD   HL,(nn) ; opcode 2A cycles 16 
46 INSTRUCTION: DEC  HL      ; opcode 2B cycles 06 
47 INSTRUCTION: INC  L       ; opcode 2C cycles 05 
48 INSTRUCTION: DEC  L       ; opcode 2D cycles 05 
49 INSTRUCTION: LD   L,n     ; opcode 2E cycles 07 
50 INSTRUCTION: CPL          ; opcode 2F cycles 04 
51 INSTRUCTION: LD   SP,nn   ; opcode 31 cycles 10 
52 INSTRUCTION: LD   (nn),A  ; opcode 32 cycles 13 
53 INSTRUCTION: INC  SP      ; opcode 33 cycles 06 
54 INSTRUCTION: INC  (HL)    ; opcode 34 cycles 10 
55 INSTRUCTION: DEC  (HL)    ; opcode 35 cycles 10 
56 INSTRUCTION: LD   (HL),n  ; opcode 36 cycles 10 
57 INSTRUCTION: SCF          ; opcode 37 cycles 04 
58 INSTRUCTION: ADD  HL,SP   ; opcode 39 cycles 11 
59 INSTRUCTION: LD   A,(nn)  ; opcode 3A cycles 13 
60 INSTRUCTION: DEC  SP      ; opcode 3B cycles 06 
61 INSTRUCTION: INC  A       ; opcode 3C cycles 05 
62 INSTRUCTION: DEC  A       ; opcode 3D cycles 05 
63 INSTRUCTION: LD   A,n     ; opcode 3E cycles 07 
64 INSTRUCTION: CCF          ; opcode 3F cycles 04 
65 INSTRUCTION: LD   B,B     ; opcode 40 cycles 05 
66 INSTRUCTION: LD   B,C     ; opcode 41 cycles 05 
67 INSTRUCTION: LD   B,D     ; opcode 42 cycles 05 
68 INSTRUCTION: LD   B,E     ; opcode 43 cycles 05 
69 INSTRUCTION: LD   B,H     ; opcode 44 cycles 05 
70 INSTRUCTION: LD   B,L     ; opcode 45 cycles 05 
71 INSTRUCTION: LD   B,(HL)  ; opcode 46 cycles 07 
72 INSTRUCTION: LD   B,A     ; opcode 47 cycles 05 
73 INSTRUCTION: LD   C,B     ; opcode 48 cycles 05 
74 INSTRUCTION: LD   C,C     ; opcode 49 cycles 05 
75 INSTRUCTION: LD   C,D     ; opcode 4A cycles 05 
76 INSTRUCTION: LD   C,E     ; opcode 4B cycles 05 
77 INSTRUCTION: LD   C,H     ; opcode 4C cycles 05 
78 INSTRUCTION: LD   C,L     ; opcode 4D cycles 05 
79 INSTRUCTION: LD   C,(HL)  ; opcode 4E cycles 07 
80 INSTRUCTION: LD   C,A     ; opcode 4F cycles 05 
81 INSTRUCTION: LD   D,B     ; opcode 50 cycles 05 
82 INSTRUCTION: LD   D,C     ; opcode 51 cycles 05 
83 INSTRUCTION: LD   D,D     ; opcode 52 cycles 05 
84 INSTRUCTION: LD   D,E     ; opcode 53 cycles 05 
85 INSTRUCTION: LD   D,H     ; opcode 54 cycles 05 
86 INSTRUCTION: LD   D,L     ; opcode 55 cycles 05 
87 INSTRUCTION: LD   D,(HL)  ; opcode 56 cycles 07 
88 INSTRUCTION: LD   D,A     ; opcode 57 cycles 05 
89 INSTRUCTION: LD   E,B     ; opcode 58 cycles 05 
90 INSTRUCTION: LD   E,C     ; opcode 59 cycles 05 
91 INSTRUCTION: LD   E,D     ; opcode 5A cycles 05 
92 INSTRUCTION: LD   E,E     ; opcode 5B cycles 05 
93 INSTRUCTION: LD   E,H     ; opcode 5C cycles 05 
94 INSTRUCTION: LD   E,L     ; opcode 5D cycles 05 
95 INSTRUCTION: LD   E,(HL)  ; opcode 5E cycles 07 
96 INSTRUCTION: LD   E,A     ; opcode 5F cycles 05 
97 INSTRUCTION: LD   H,B     ; opcode 60 cycles 05 
98 INSTRUCTION: LD   H,C     ; opcode 61 cycles 05 
99 INSTRUCTION: LD   H,D     ; opcode 62 cycles 05 
100 INSTRUCTION: LD   H,E     ; opcode 63 cycles 05 
101 INSTRUCTION: LD   H,H     ; opcode 64 cycles 05 
102 INSTRUCTION: LD   H,L     ; opcode 65 cycles 05 
103 INSTRUCTION: LD   H,(HL)  ; opcode 66 cycles 07 
104 INSTRUCTION: LD   H,A     ; opcode 67 cycles 05 
105 INSTRUCTION: LD   L,B     ; opcode 68 cycles 05 
106 INSTRUCTION: LD   L,C     ; opcode 69 cycles 05 
107 INSTRUCTION: LD   L,D     ; opcode 6A cycles 05 
108 INSTRUCTION: LD   L,E     ; opcode 6B cycles 05 
109 INSTRUCTION: LD   L,H     ; opcode 6C cycles 05 
110 INSTRUCTION: LD   L,L     ; opcode 6D cycles 05 
111 INSTRUCTION: LD   L,(HL)  ; opcode 6E cycles 07 
112 INSTRUCTION: LD   L,A     ; opcode 6F cycles 05 
113 INSTRUCTION: LD   (HL),B  ; opcode 70 cycles 07 
114 INSTRUCTION: LD   (HL),C  ; opcode 71 cycles 07 
115 INSTRUCTION: LD   (HL),D  ; opcode 72 cycles 07 
116 INSTRUCTION: LD   (HL),E  ; opcode 73 cycles 07 
117 INSTRUCTION: LD   (HL),H  ; opcode 74 cycles 07 
118 INSTRUCTION: LD   (HL),L  ; opcode 75 cycles 07 
119 INSTRUCTION: HALT         ; opcode 76 cycles 07 
120 INSTRUCTION: LD   (HL),A  ; opcode 77 cycles 07 
121 INSTRUCTION: LD   A,B     ; opcode 78 cycles 05 
122 INSTRUCTION: LD   A,C     ; opcode 79 cycles 05 
123 INSTRUCTION: LD   A,D     ; opcode 7A cycles 05 
124 INSTRUCTION: LD   A,E     ; opcode 7B cycles 05 
125 INSTRUCTION: LD   A,H     ; opcode 7C cycles 05 
126 INSTRUCTION: LD   A,L     ; opcode 7D cycles 05 
127 INSTRUCTION: LD   A,(HL)  ; opcode 7E cycles 07 
128 INSTRUCTION: LD   A,A     ; opcode 7F cycles 05 
129 INSTRUCTION: ADD  A,B     ; opcode 80 cycles 04 
130 INSTRUCTION: ADD  A,C     ; opcode 81 cycles 04 
131 INSTRUCTION: ADD  A,D     ; opcode 82 cycles 04 
132 INSTRUCTION: ADD  A,E     ; opcode 83 cycles 04 
133 INSTRUCTION: ADD  A,H     ; opcode 84 cycles 04 
134 INSTRUCTION: ADD  A,L     ; opcode 85 cycles 04 
135 INSTRUCTION: ADD  A,(HL)  ; opcode 86 cycles 07 
136 INSTRUCTION: ADD  A,A     ; opcode 87 cycles 04 
137 INSTRUCTION: ADC  A,B     ; opcode 88 cycles 04 
138 INSTRUCTION: ADC  A,C     ; opcode 89 cycles 04 
139 INSTRUCTION: ADC  A,D     ; opcode 8A cycles 04 
140 INSTRUCTION: ADC  A,E     ; opcode 8B cycles 04 
141 INSTRUCTION: ADC  A,H     ; opcode 8C cycles 04 
142 INSTRUCTION: ADC  A,L     ; opcode 8D cycles 04 
143 INSTRUCTION: ADC  A,(HL)  ; opcode 8E cycles 07 
144 INSTRUCTION: ADC  A,A     ; opcode 8F cycles 04 
145 INSTRUCTION: SUB  B       ; opcode 90 cycles 04 
146 INSTRUCTION: SUB  C       ; opcode 91 cycles 04 
147 INSTRUCTION: SUB  D       ; opcode 92 cycles 04 
148 INSTRUCTION: SUB  E       ; opcode 93 cycles 04 
149 INSTRUCTION: SUB  H       ; opcode 94 cycles 04 
150 INSTRUCTION: SUB  L       ; opcode 95 cycles 04 
151 INSTRUCTION: SUB  (HL)    ; opcode 96 cycles 07 
152 INSTRUCTION: SUB  A       ; opcode 97 cycles 04 
153 INSTRUCTION: SBC  A,B     ; opcode 98 cycles 04 
154 INSTRUCTION: SBC  A,C     ; opcode 99 cycles 04 
155 INSTRUCTION: SBC  A,D     ; opcode 9A cycles 04 
156 INSTRUCTION: SBC  A,E     ; opcode 9B cycles 04 
157 INSTRUCTION: SBC  A,H     ; opcode 9C cycles 04 
158 INSTRUCTION: SBC  A,L     ; opcode 9D cycles 04 
159 INSTRUCTION: SBC  A,(HL)  ; opcode 9E cycles 07 
160 INSTRUCTION: SBC  A,A     ; opcode 9F cycles 04 
161 INSTRUCTION: AND  B       ; opcode A0 cycles 04 
162 INSTRUCTION: AND  C       ; opcode A1 cycles 04 
163 INSTRUCTION: AND  D       ; opcode A2 cycles 04 
164 INSTRUCTION: AND  E       ; opcode A3 cycles 04 
165 INSTRUCTION: AND  H       ; opcode A4 cycles 04 
166 INSTRUCTION: AND  L       ; opcode A5 cycles 04 
167 INSTRUCTION: AND  (HL)    ; opcode A6 cycles 07 
168 INSTRUCTION: AND  A       ; opcode A7 cycles 04 
169 INSTRUCTION: XOR  B       ; opcode A8 cycles 04 
170 INSTRUCTION: XOR  C       ; opcode A9 cycles 04 
171 INSTRUCTION: XOR  D       ; opcode AA cycles 04 
172 INSTRUCTION: XOR  E       ; opcode AB cycles 04 
173 INSTRUCTION: XOR  H       ; opcode AC cycles 04 
174 INSTRUCTION: XOR  L       ; opcode AD cycles 04 
175 INSTRUCTION: XOR  (HL)    ; opcode AE cycles 07 
176 INSTRUCTION: XOR  A       ; opcode AF cycles 04 
177 INSTRUCTION: OR   B       ; opcode B0 cycles 04 
178 INSTRUCTION: OR   C       ; opcode B1 cycles 04 
179 INSTRUCTION: OR   D       ; opcode B2 cycles 04 
180 INSTRUCTION: OR   E       ; opcode B3 cycles 04 
181 INSTRUCTION: OR   H       ; opcode B4 cycles 04 
182 INSTRUCTION: OR   L       ; opcode B5 cycles 04 
183 INSTRUCTION: OR   (HL)    ; opcode B6 cycles 07 
184 INSTRUCTION: OR   A       ; opcode B7 cycles 04 
185 INSTRUCTION: CP   B       ; opcode B8 cycles 04 
186 INSTRUCTION: CP   C       ; opcode B9 cycles 04 
187 INSTRUCTION: CP   D       ; opcode BA cycles 04 
188 INSTRUCTION: CP   E       ; opcode BB cycles 04 
189 INSTRUCTION: CP   H       ; opcode BC cycles 04 
190 INSTRUCTION: CP   L       ; opcode BD cycles 04 
191 INSTRUCTION: CP   (HL)    ; opcode BE cycles 07 
192 INSTRUCTION: CP   A       ; opcode BF cycles 04 
193 INSTRUCTION: RET  NZ      ; opcode C0 cycles 05 
194 INSTRUCTION: POP  BC      ; opcode C1 cycles 10 
195 INSTRUCTION: JP   NZ,nn   ; opcode C2 cycles 10 
196 INSTRUCTION: JP   nn      ; opcode C3 cycles 10 
197 INSTRUCTION: CALL NZ,nn   ; opcode C4 cycles 11 
198 INSTRUCTION: PUSH BC      ; opcode C5 cycles 11 
199 INSTRUCTION: ADD  A,n     ; opcode C6 cycles 07 
200 INSTRUCTION: RST  0       ; opcode C7 cycles 11 
201 INSTRUCTION: RET  Z       ; opcode C8 cycles 05 
202 INSTRUCTION: RET  nn      ; opcode C9 cycles 10 
203 INSTRUCTION: JP   Z,nn    ; opcode CA cycles 10 
204 INSTRUCTION: CALL Z,nn    ; opcode CC cycles 11 
205 INSTRUCTION: CALL nn      ; opcode CD cycles 17 
206 INSTRUCTION: ADC  A,n     ; opcode CE cycles 07 
207 INSTRUCTION: RST  8       ; opcode CF cycles 11 
208 INSTRUCTION: RET  NC      ; opcode D0 cycles 05 
209 INSTRUCTION: POP  DE      ; opcode D1 cycles 10 
210 INSTRUCTION: JP   NC,nn   ; opcode D2 cycles 10 
211 INSTRUCTION: OUT  (n),A   ; opcode D3 cycles 10 
212 INSTRUCTION: CALL NC,nn   ; opcode D4 cycles 11 
213 INSTRUCTION: PUSH DE      ; opcode D5 cycles 11 
214 INSTRUCTION: SUB  n       ; opcode D6 cycles 07 
215 INSTRUCTION: RST  10H     ; opcode D7 cycles 11 
216 INSTRUCTION: RET  C       ; opcode D8 cycles 05 
217 INSTRUCTION: JP   C,nn    ; opcode DA cycles 10 
218 INSTRUCTION: IN   A,(n)   ; opcode DB cycles 10 
219 INSTRUCTION: CALL C,nn    ; opcode DC cycles 11 
220 INSTRUCTION: SBC  A,n     ; opcode DE cycles 07 
221 INSTRUCTION: RST  18H     ; opcode DF cycles 11 
222 INSTRUCTION: RET  PO      ; opcode E0 cycles 05 
223 INSTRUCTION: POP  HL      ; opcode E1 cycles 10 
224 INSTRUCTION: JP   PO,nn   ; opcode E2 cycles 10 
225 INSTRUCTION: EX   (SP),HL ; opcode E3 cycles 04 
226 INSTRUCTION: CALL PO,nn   ; opcode E4 cycles 11 
227 INSTRUCTION: PUSH HL      ; opcode E5 cycles 11 
228 INSTRUCTION: AND  n       ; opcode E6 cycles 07 
229 INSTRUCTION: RST  20H     ; opcode E7 cycles 11 
230 INSTRUCTION: RET  PE      ; opcode E8 cycles 05 
231 INSTRUCTION: JP   (HL)    ; opcode E9 cycles 04 
232 INSTRUCTION: JP   PE,nn   ; opcode EA cycles 10 
233 INSTRUCTION: EX   DE,HL   ; opcode EB cycles 04 
234 INSTRUCTION: CALL PE,nn   ; opcode EC cycles 11 
235 INSTRUCTION: XOR  n       ; opcode EE cycles 07 
236 INSTRUCTION: RST  28H     ; opcode EF cycles 11 
237 INSTRUCTION: RET  P       ; opcode F0 cycles 05 
238 INSTRUCTION: POP  AF      ; opcode F1 cycles 10 
239 INSTRUCTION: JP   P,nn    ; opcode F2 cycles 10 
240 INSTRUCTION: DI           ; opcode F3 cycles 04 
241 INSTRUCTION: CALL P,nn    ; opcode F4 cycles 11 
242 INSTRUCTION: PUSH AF      ; opcode F5 cycles 11 
243 INSTRUCTION: OR   n       ; opcode F6 cycles 07 
244 INSTRUCTION: RST  30H     ; opcode F7 cycles 11 
245 INSTRUCTION: RET  M       ; opcode F8 cycles 05 
246 INSTRUCTION: LD   SP,HL   ; opcode F9 cycles 06 
247 INSTRUCTION: JP   M,nn    ; opcode FA cycles 10 
248 INSTRUCTION: EI           ; opcode FB cycles 04 
249 INSTRUCTION: CALL M,nn    ; opcode FC cycles 11 
250 INSTRUCTION: CP   n       ; opcode FE cycles 07 
251 INSTRUCTION: RST  38H     ; opcode FF cycles 11