|
|
1.1 root 1: ;
2: ; nono
3: ; Copyright (C) 2022 nono project
4: ; Licensed under nono-license.txt
5: ;
6:
7: ; ビットパターンはこの定義順に展開するので、前の行を後の行で上書きする。
8: ; そのためより限定的なほうを後ろ(下)に記述すること。
9: ; それ以外は概ねソートすること。
10: ;
11: ; ビットパターン
12: ; 0, 1 … 0 または 1 固定のビット
13: ; n … 0 および 1 の両方に展開される
14: ; rrr,sss … レジスタ (B,C,D,E,H,L,A) に展開 (%110=(HL) は除く)
15: ; ixr,ixs なら B,C,D,E, IXH, IXL, A に展開
16: ; ww … レジスタ BC,DE,HL,SP に展開
17: ; zz … レジスタ BC,DE,HL,AF に展開
18: ; fff … 条件に展開
19: ; bbb … ビット番号 0-7 に展開
20: ;
21: ; CPU
22: ; 0 … Z80 (not supported, reference only)
23: ; 1 … HD64*180
24: ; R … R800 (not supported, reference only)
25:
26: ; ここだけ紛らわしいので注意。
27: ; 00100010 LD (nn),HL
28: ; DD:00100010 LD (nn),IX/IY
29: ; ED:01ww0011 LD (nn),ww (ww = BC,DE,HL,SP)
30: ; と
31: ; 00101010 LD HL,(nn)
32: ; DD:00101010 LD IX/IY,(nn)
33: ; ED:01ww1011 LD ww,(nn) (ww = BC,DE,HL,SP)
34:
35: ; パターン CPU 関数名 表示名
36: 00ww0001 01R ld_ww_nn LD ww,nn
37: 00ww0010 01R ld_wwin_a LD (ww),A
38: 00ww0011 01R inc_ww INC ww
39: 00rrr100 01R inc_r INC r
40: 00110100 01R inc_hlin INC (HL)
41: 00rrr101 01R dec_r DEC r
42: 00110101 01R dec_hlin DEC (HL)
43: 00rrr110 01R ld_r_n LD r,n
44: 00110110 01R ld_hlin_n LD (HL),n
45: 00ww1001 01R add_hl_ww ADD HL,ww
46: 00ww1010 01R ld_a_wwin LD A,(ww)
47: 00ww1011 01R dec_ww DEC ww
48:
49: 00000000 01R nop
50: 00000111 01R rlca
51: 00001000 01R ex_af_af EX AF,AF'
52: 00001111 01R rrca
53:
54: 00010000 01R djnz DJNZ n
55: 00010111 01R rla
56: 00011000 01R jr JR n
57: 00011111 01R rra
58:
59: 00100000 01R jr_nz JR NZ,n
60: 00100010 01R ld_nnin_hl LD (nn),HL
61: 00100111 01R daa
62: 00101000 01R jr_z JR Z,n
63: 00101010 01R ld_hl_nnin LD HL,(nn)
64: 00101111 01R cpl
65:
66: 00110000 01R jr_nc JR NC,n
67: 00110010 01R ld_nnin_a LD (nn),A
68: 00110111 01R scf
69: 00111000 01R jr_c JR C,n
70: 00111010 01R ld_a_nnin LD A,(nn)
71: 00111111 01R ccf
72:
73: 01rrrsss 01R ld_r_s LD r,s
74: 01110sss 01R ld_hlin_s LD (HL),s
75: 01rrr110 01R ld_r_hlin LD r,(HL)
76: 01110110 01R halt
77:
78: 10000rrr 01R add_a_r ADD A,r
79: 10000110 01R add_a_hlin ADD A,(HL)
80: 10001rrr 01R adc_a_r ADC A,r
81: 10001110 01R adc_a_hlin ADC A,(HL)
82: 10010rrr 01R sub_r SUB r
83: 10010110 01R sub_hlin SUB (HL)
84: 10011rrr 01R sbc_a_r SBC A,r
85: 10011110 01R sbc_a_hlin SBC A,(HL)
86: 10100rrr 01R and_r AND r
87: 10100110 01R and_hlin AND (HL)
88: 10101rrr 01R xor_r XOR r
89: 10101110 01R xor_hlin XOR (HL)
90: 10110rrr 01R or_r OR r
91: 10110110 01R or_hlin OR (HL)
92: 10111rrr 01R cp_r CP r
93: 10111110 01R cp_hlin CP (HL)
94:
95: 11fff000 01R ret_f RET f
96: 11zz0001 01R pop_zz POP zz
97: 11110001 01R pop_af POP AF
98: 11fff010 01R jp_f_nn JP f,nn
99: 11fff100 01R call_f_nn CALL f,nn
100: 11zz0101 01R push_zz PUSH zz
101: 11110101 01R push_af PUSH AF
102: 11vvv111 01R rst RST v
103:
104: 11000011 01R jp_nn JP nn
105: 11000110 01R add_a_n ADD A,n
106: 11001001 01R ret
107: 11001011 01R cb op_CB
108: 11001101 01R call CALL nn
109: 11001110 01R adc_a_n ADC A,n
110:
111: 11010011 01R out_n_a OUT (n),A
112: 11010110 01R sub_n SUB n
113: 11011001 01R exx
114: 11011011 01R in_a_n IN A,(n)
115: 11011101 01R dd op_DD
116: 11011110 01R sbc_a_n SBC A,n
117:
118: 11100011 01R ex_sp_hl EX (SP),HL
119: 11100110 01R and_n AND n
120: 11101001 01R jp_hl JP (HL)
121: 11101011 01R ex_de_hl EX DE,HL
122: 11101101 01R ed op_ED
123: 11101110 01R xor_n XOR n
124:
125: 11110011 01R di
126: 11110110 01R or_n OR n
127: 11111001 01R ld_sp_hl LD SP,HL
128: 11111011 01R ei
129: 11111101 01R fd op_FD
130: 11111110 01R cp_n CP n
131:
132:
133: CB:00000rrr 01R rlc_r RLC r
134: CB:00000110 01R rlc_hlin RLC (HL)
135: CB:00001rrr 01R rrc_r RRC r
136: CB:00001110 01R rrc_hlin RRC (HL)
137: CB:00010rrr 01R rl_r RL r
138: CB:00010110 01R rl_hlin RL (HL)
139: CB:00011rrr 01R rr_r RR r
140: CB:00011110 01R rr_hlin RR (HL)
141: CB:00100rrr 01R sla_r SLA r
142: CB:00100110 01R sla_hlin SLA (HL)
143: CB:00101rrr 01R sra_r SRA r
144: CB:00101110 01R sra_hlin SRA (HL)
145: CB:00111rrr 01R srl_r SRL r
146: CB:00111110 01R srl_hlin SRL (HL)
147: CB:01bbbrrr 01R bit_r BIT b,r
148: CB:01bbb110 01R bit_hlin BIT b,(HL)
149: CB:10bbbrrr 01R res_r RES b,r
150: CB:10bbb110 01R res_hlin RES b,(HL)
151: CB:11bbbrrr 01R set_r SET b,r
152: CB:11bbb110 01R set_hlin SET b,(HL)
153:
154:
155: ED:00rrr000 -1- in0_r_n IN0 r,(n)
156: ED:00110000 -1- in0_f_n IN0 F,(n)
157: ED:00rrr001 -1- out0_n_r OUT0 (n),r
158: ED:00rrr100 -1- tst_r TST r
159: ED:00110100 -1- tst_hlin TST (HL)
160:
161: ED:01rrr000 01R in_r_c IN r,(C)
162: ED:01110000 01R in_f_c IN F,(C)
163: ED:01rrr001 01R out_c_r OUT (C),r
164: ED:01ww0010 01R sbc_hl_ww SBC HL,ww
165: ED:01ww0011 01R ld_nnin_ww LD (nn),ww
166: ED:01ww1010 01R adc_hl_ww ADC HL,ww
167: ED:01ww1011 01R ld_ww_nnin LD ww,(nn)
168: ED:01ww1100 -1- mlt MLT ww
169:
170: ED:01000100 01R neg
171: ED:01000101 01R retn
172: ED:01000110 01R im_0 IM 0
173: ED:01000111 01R ld_i_a LD I,A
174: ED:01001101 01R reti
175: ED:01001111 01R ld_r_a LD R,A
176:
177: ED:01010110 01R im_1 IM 1
178: ED:01010111 01R ld_a_i LD A,I
179: ED:01011110 01R im_2 IM 2
180: ED:01011111 01R ld_a_r LD A,R
181:
182: ED:01100100 -1- tst_n TST n
183: ED:01100111 01R rrd
184: ED:01101111 01R rld
185:
186: ED:01110100 -1- tstio_n TSTIO n
187: ED:01110110 -1- slp
188:
189: ED:10000011 -1- otim
190: ED:10001011 -1- otdm
191: ED:10010011 -1- otimr
192: ED:10011011 -1- otdmr
193:
194: ED:10100000 01R ldi
195: ED:10100001 01R cpi
196: ED:10100010 01R ini
197: ED:10100011 01R outi
198: ED:10101000 01R ldd
199: ED:10101001 01R cpd
200: ED:10101010 01R ind
201: ED:10101011 01R outd
202:
203: ED:10110000 01R ldir
204: ED:10110001 01R cpir
205: ED:10110010 01R inir
206: ED:10110011 01R otir
207: ED:10111000 01R lddr
208: ED:10111001 01R cpdr
209: ED:10111010 01R indr
210: ED:10111011 01R otdr
211:
212: ED:11rrr001 --R mulub_a_r MULUB A,r
213: ED:11000011 --R mulub_hl_bc MULUB HL,BC
214: ED:11110011 --R mulub_hl_sp MULUB HL,SP
215:
216: ED:11111111 -1- syscall SYSCALL ; MSXDOS エミュレーション
217:
218:
219: DD:00ww1001 01R add_hl_ww ADD IX,ww
220: DD:00100001 01R ld_ww_nn LD IX,nn
221: DD:00100010 01R ld_nnin_hl LD (nn),IX
222: DD:00100011 01R inc_ww INC IX
223: DD:00101010 01R ld_hl_nnin LD IX,(nn)
224: DD:00101011 01R dec_ww DEC IX
225: DD:00rrr100 0-R inc_ixr INC ixr
226: DD:00110100 01R inc_hlin INC (IX+d)
227: DD:00rrr101 0-R dec_ixr DEC ixr
228: DD:00110101 01R dec_hlin DEC (IX+d)
229: DD:00110110 01R ld_hlin_n LD (IX+d),n
230: DD:01rrr110 01R ld_r_hlin LD r,(IX+d)
231: DD:01110sss 01R ld_hlin_s LD (IX+d),s
232: DD:01rrrsss 0-R ld_r_ixs LD r,ixs
233: DD:10000rrr 0-R add_a_ixr ADD A,ixr
234: DD:10000110 01R add_a_hlin ADD A,(IX+d)
235: DD:10001rrr 0-R adc_a_ixr ADC A,ixr
236: DD:10001110 01R adc_a_hlin ADC A,(IX+d)
237: DD:10010rrr 0-R sub_ixr SUB ixr
238: DD:10010110 01R sub_hlin SUB (IX+d)
239: DD:10011rrr 0-R sbc_a_ixr SBC A,ixr
240: DD:10011110 01R sbc_a_hlin SBC A,(IX+d)
241: DD:10100rrr 0-R and_ixr AND ixr
242: DD:10100110 01R and_hlin AND (IX+d)
243: DD:10101rrr 0-R xor_ixr XOR ixr
244: DD:10101110 01R xor_hlin XOR (IX+d)
245: DD:10110rrr 0-R or_ixr OR ixr
246: DD:10110110 01R or_hlin OR (IX+d)
247: DD:10111rrr 0-R cp_ixr CP ixr
248: DD:10111110 01R cp_hlin CP (IX+d)
249: DD:11001011 01R dd_cb op_DD_CB
250: DD:11100001 01R pop_zz POP IX
251: DD:11100011 01R ex_sp_hl EX (SP),IX
252: DD:11100101 01R push_zz PUSH IX
253: DD:11101001 01R jp_hl JP (IX)
254: DD:11111001 01R ld_sp_hl LD SP,IX
255: DD_CB:00000110 01R rlc_hlin RLC (IX+d)
256: DD_CB:00001110 01R rrc_hlin RRC (IX+d)
257: DD_CB:00010110 01R rl_hlin RL (IX+d)
258: DD_CB:00011110 01R rr_hlin RR (IX+d)
259: DD_CB:00100110 01R sla_hlin SLA (IX+d)
260: DD_CB:00101110 01R sra_hlin SRA (IX+d)
261: DD_CB:00111110 01R srl_hlin SRL (IX+d)
262: DD_CB:01bbb110 01R bit_hlin BIT b,(IX+d)
263: DD_CB:10bbb110 01R res_hlin RES b,(IX+d)
264: DD_CB:11bbb110 01R set_hlin SET b,(IX+d)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.