aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/cpu/opcodes/Loads8Bit.kt
blob: 99eb933661a62ce1d0fcee5872d5e2f594c2b177 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package cpu.opcodes

import cpu.Operation
import BitManipulation as bm

// 8-Bit Loads
var loads8Bit = mapOf(

  0x06 to Operation("LD B,n", 1, 8, {r, _, a -> r.B = a[0]}),
  0x0E to Operation("LD C,n", 1, 8, {r, _, a -> r.C = a[0]}),
  0x16 to Operation("LD D,n", 1, 8, {r, _, a -> r.D = a[0]}),
  0x1E to Operation("LD E,n", 1, 8, {r, _, a -> r.E = a[0]}),
  0x26 to Operation("LD H,n", 1, 8, {r, _, a -> r.H = a[0]}),
  0x2E to Operation("LD L,n", 1, 8, {r, _, a -> r.L = a[0]}),

  0x78 to Operation("LD A,B", 0, 4, {r, _, _ -> r.A = r.B}),
  0x79 to Operation("LD A,C", 0, 4, {r, _, _ -> r.A = r.C}),
  0x7A to Operation("LD A,D", 0, 4, {r, _, _ -> r.A = r.D}),
  0x7B to Operation("LD A,E", 0, 4, {r, _, _ -> r.A = r.E}),
  0x7C to Operation("LD A,H", 0, 4, {r, _, _ -> r.A = r.H}),
  0x7D to Operation("LD A,L", 0, 4, {r, _, _ -> r.A = r.L}),
  0x0A to Operation("LD A,(BC)", 0, 8, {r, m, _ -> r.A = m.readByte(r.BC)}),
  0x1A to Operation("LD A,(DE)", 0, 8, {r, m, _ -> r.A = m.readByte(r.DE)}),
  0x7E to Operation("LD A,(HL)", 0, 8, {r, m, _ -> r.A = m.readByte(r.HL)}),
  0x3E to Operation("LD A, n", 1, 8, {r, _, a -> r.A = a[0]}),
  0xFA to Operation("LD A,(nn)", 2, 16, {r, m, a -> r.A = m.readByte(bm.argsToWord(a))}),

  0x40 to Operation("LD B,B", 0, 4, {r, _, _ -> r.B = r.B}),
  0x41 to Operation("LD B,C", 0, 4, {r, _, _ -> r.B = r.C}),
  0x42 to Operation("LD B,D", 0, 4, {r, _, _ -> r.B = r.D}),
  0x43 to Operation("LD B,E", 0, 4, {r, _, _ -> r.B = r.E}),
  0x44 to Operation("LD B,H", 0, 4, {r, _, _ -> r.B = r.H}),
  0x45 to Operation("LD B,L", 0, 4, {r, _, _ -> r.B = r.L}),
  0x46 to Operation("LD B,(HL)", 0, 8, {r, m, _ -> r.B = m.readByte(r.HL)}),

  0x48 to Operation("LD C,B", 0, 4, {r, _, _ -> r.C = r.B}),
  0x49 to Operation("LD C,C", 0, 4, {r, _, _ -> r.C = r.C}),
  0x4A to Operation("LD C,D", 0, 4, {r, _, _ -> r.C = r.D}),
  0x4B to Operation("LD C,E", 0, 4, {r, _, _ -> r.C = r.E}),
  0x4C to Operation("LD C,H", 0, 4, {r, _, _ -> r.C = r.H}),
  0x4D to Operation("LD C,L", 0, 4, {r, _, _ -> r.C = r.L}),
  0x4E to Operation("LD C,(HL)", 0, 8, {r, m, _ -> r.C = m.readByte(r.HL)}),

  0x50 to Operation("LD D,B", 0, 4, {r, _, _ -> r.D = r.B}),
  0x51 to Operation("LD D,C", 0, 4, {r, _, _ -> r.D = r.C}),
  0x52 to Operation("LD D,D", 0, 4, {r, _, _ -> r.D = r.D}),
  0x53 to Operation("LD D,E", 0, 4, {r, _, _ -> r.D = r.E}),
  0x54 to Operation("LD D,H", 0, 4, {r, _, _ -> r.D = r.H}),
  0x55 to Operation("LD D,L", 0, 4, {r, _, _ -> r.D = r.L}),
  0x56 to Operation("LD D,(HL)", 0, 8, {r, m, _ -> r.D = m.readByte(r.HL)}),

  0x58 to Operation("LD E,B", 0, 4, {r, _, _ -> r.E = r.B}),
  0x59 to Operation("LD E,C", 0, 4, {r, _, _ -> r.E = r.C}),
  0x5A to Operation("LD E,D", 0, 4, {r, _, _ -> r.E = r.D}),
  0x5B to Operation("LD E,E", 0, 4, {r, _, _ -> r.E = r.E}),
  0x5C to Operation("LD E,H", 0, 4, {r, _, _ -> r.E = r.H}),
  0x5D to Operation("LD E,L", 0, 4, {r, _, _ -> r.E = r.L}),
  0x5E to Operation("LD E,(HL)", 0, 8, {r, m, _ -> r.E = m.readByte(r.HL)}),

  0x60 to Operation("LD H,B", 0, 4, {r, _, _ -> r.H = r.B}),
  0x61 to Operation("LD H,C", 0, 4, {r, _, _ -> r.H = r.C}),
  0x62 to Operation("LD H,D", 0, 4, {r, _, _ -> r.H = r.D}),
  0x63 to Operation("LD H,E", 0, 4, {r, _, _ -> r.H = r.E}),
  0x64 to Operation("LD H,H", 0, 4, {r, _, _ -> r.H = r.H}),
  0x65 to Operation("LD H,L", 0, 4, {r, _, _ -> r.H = r.L}),
  0x66 to Operation("LD H,(HL)", 0, 8, {r, m, _ -> r.H = m.readByte(r.HL)}),

  0x68 to Operation("LD L,B", 0, 4, {r, _, _ -> r.L = r.B}),
  0x69 to Operation("LD L,C", 0, 4, {r, _, _ -> r.L = r.C}),
  0x6A to Operation("LD L,D", 0