@andrivet/z80-assembler 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/.editorconfig +13 -0
  2. package/.eslintignore +3 -0
  3. package/.eslintrc.json +35 -0
  4. package/.github/workflows/node.js.yml +47 -0
  5. package/.prettierignore +3 -0
  6. package/.prettierrc +3 -0
  7. package/.vscode/extensions.json +7 -0
  8. package/README.md +53 -27
  9. package/apps/.gitkeep +0 -0
  10. package/apps/z80-assembler-app/.eslintrc.json +18 -0
  11. package/apps/z80-assembler-app/index.html +16 -0
  12. package/apps/z80-assembler-app/postcss.config.js +24 -0
  13. package/apps/z80-assembler-app/project.json +70 -0
  14. package/apps/z80-assembler-app/public/favicon.ico +0 -0
  15. package/apps/z80-assembler-app/public/logo.png +0 -0
  16. package/apps/z80-assembler-app/public/logo192.png +0 -0
  17. package/apps/z80-assembler-app/public/logo512.png +0 -0
  18. package/apps/z80-assembler-app/public/manifest.json +25 -0
  19. package/apps/z80-assembler-app/public/robots.txt +3 -0
  20. package/apps/z80-assembler-app/src/app/app.module.css +0 -0
  21. package/apps/z80-assembler-app/src/app/app.tsx +122 -0
  22. package/apps/z80-assembler-app/src/app/binary.tsx +39 -0
  23. package/apps/z80-assembler-app/src/app/editor.tsx +228 -0
  24. package/apps/z80-assembler-app/src/app/errors.tsx +31 -0
  25. package/apps/z80-assembler-app/src/app/footer.tsx +20 -0
  26. package/apps/z80-assembler-app/src/app/header.tsx +57 -0
  27. package/apps/z80-assembler-app/src/app/misc.ts +13 -0
  28. package/apps/z80-assembler-app/src/app/opcodes.tsx +335 -0
  29. package/apps/z80-assembler-app/src/assets/.gitkeep +0 -0
  30. package/apps/z80-assembler-app/src/assets/images/logo192.png +0 -0
  31. package/apps/z80-assembler-app/src/main.tsx +22 -0
  32. package/apps/z80-assembler-app/src/styles.css +8 -0
  33. package/apps/z80-assembler-app/tailwind.config.js +28 -0
  34. package/apps/z80-assembler-app/tsconfig.app.json +22 -0
  35. package/apps/z80-assembler-app/tsconfig.json +21 -0
  36. package/apps/z80-assembler-app/tsconfig.spec.json +23 -0
  37. package/apps/z80-assembler-app/vite.config.ts +64 -0
  38. package/assets/images/compile.png +0 -0
  39. package/assets/images/logo.png +0 -0
  40. package/assets/images/menu.png +0 -0
  41. package/assets/images/opcodes-load8.png +0 -0
  42. package/assets/images/opcodes.png +0 -0
  43. package/assets/images/open-dir.png +0 -0
  44. package/assets/images/z80-assembler-app.png +0 -0
  45. package/docs/assembly.md +551 -0
  46. package/docs/images/ZX81-0x00.png +0 -0
  47. package/docs/images/ZX81-0x0B.png +0 -0
  48. package/docs/images/ZX81-0x0C.png +0 -0
  49. package/docs/images/ZX81-0x0D.png +0 -0
  50. package/docs/images/ZX81-0x0E.png +0 -0
  51. package/docs/images/ZX81-0x0F.png +0 -0
  52. package/docs/images/ZX81-0x10.png +0 -0
  53. package/docs/images/ZX81-0x11.png +0 -0
  54. package/docs/images/ZX81-0x12.png +0 -0
  55. package/docs/images/ZX81-0x13.png +0 -0
  56. package/docs/images/ZX81-0x14.png +0 -0
  57. package/docs/images/ZX81-0x15.png +0 -0
  58. package/docs/images/ZX81-0x16.png +0 -0
  59. package/docs/images/ZX81-0x17.png +0 -0
  60. package/docs/images/ZX81-0x18.png +0 -0
  61. package/docs/images/ZX81-0x19.png +0 -0
  62. package/docs/images/ZX81-0x1A.png +0 -0
  63. package/docs/images/ZX81-0x1B.png +0 -0
  64. package/docs/images/ZX81-0x1C.png +0 -0
  65. package/docs/images/ZX81-0x1D.png +0 -0
  66. package/docs/images/ZX81-0x1E.png +0 -0
  67. package/docs/images/ZX81-0x1F.png +0 -0
  68. package/docs/images/ZX81-0x20.png +0 -0
  69. package/docs/images/ZX81-0x21.png +0 -0
  70. package/docs/images/ZX81-0x22.png +0 -0
  71. package/docs/images/ZX81-0x23.png +0 -0
  72. package/docs/images/ZX81-0x24.png +0 -0
  73. package/docs/images/ZX81-0x25.png +0 -0
  74. package/docs/images/ZX81-0x26.png +0 -0
  75. package/docs/images/ZX81-0x27.png +0 -0
  76. package/docs/images/ZX81-0x28.png +0 -0
  77. package/docs/images/ZX81-0x29.png +0 -0
  78. package/docs/images/ZX81-0x2A.png +0 -0
  79. package/docs/images/ZX81-0x2B.png +0 -0
  80. package/docs/images/ZX81-0x2C.png +0 -0
  81. package/docs/images/ZX81-0x2D.png +0 -0
  82. package/docs/images/ZX81-0x2E.png +0 -0
  83. package/docs/images/ZX81-0x2F.png +0 -0
  84. package/docs/images/ZX81-0x30.png +0 -0
  85. package/docs/images/ZX81-0x31.png +0 -0
  86. package/docs/images/ZX81-0x32.png +0 -0
  87. package/docs/images/ZX81-0x33.png +0 -0
  88. package/docs/images/ZX81-0x34.png +0 -0
  89. package/docs/images/ZX81-0x35.png +0 -0
  90. package/docs/images/ZX81-0x36.png +0 -0
  91. package/docs/images/ZX81-0x37.png +0 -0
  92. package/docs/images/ZX81-0x38.png +0 -0
  93. package/docs/images/ZX81-0x39.png +0 -0
  94. package/docs/images/ZX81-0x3A.png +0 -0
  95. package/docs/images/ZX81-0x3B.png +0 -0
  96. package/docs/images/ZX81-0x3C.png +0 -0
  97. package/docs/images/ZX81-0x3D.png +0 -0
  98. package/docs/images/ZX81-0x3E.png +0 -0
  99. package/docs/images/ZX81-0x3F.png +0 -0
  100. package/docs/images/ZX81-0x80.png +0 -0
  101. package/docs/images/ZX81-0x8B.png +0 -0
  102. package/docs/images/ZX81-0x8C.png +0 -0
  103. package/docs/images/ZX81-0x8D.png +0 -0
  104. package/docs/images/ZX81-0x8E.png +0 -0
  105. package/docs/images/ZX81-0x8F.png +0 -0
  106. package/docs/images/ZX81-0x90.png +0 -0
  107. package/docs/images/ZX81-0x91.png +0 -0
  108. package/docs/images/ZX81-0x92.png +0 -0
  109. package/docs/images/ZX81-0x93.png +0 -0
  110. package/docs/images/ZX81-0x94.png +0 -0
  111. package/docs/images/ZX81-0x95.png +0 -0
  112. package/docs/images/ZX81-0x96.png +0 -0
  113. package/docs/images/ZX81-0x97.png +0 -0
  114. package/docs/images/ZX81-0x98.png +0 -0
  115. package/docs/images/ZX81-0x99.png +0 -0
  116. package/docs/images/ZX81-0x9A.png +0 -0
  117. package/docs/images/ZX81-0x9B.png +0 -0
  118. package/docs/images/ZX81-0x9C.png +0 -0
  119. package/docs/images/ZX81-0x9D.png +0 -0
  120. package/docs/images/ZX81-0x9E.png +0 -0
  121. package/docs/images/ZX81-0x9F.png +0 -0
  122. package/docs/images/ZX81-0xA0.png +0 -0
  123. package/docs/images/ZX81-0xA1.png +0 -0
  124. package/docs/images/ZX81-0xA2.png +0 -0
  125. package/docs/images/ZX81-0xA3.png +0 -0
  126. package/docs/images/ZX81-0xA4.png +0 -0
  127. package/docs/images/ZX81-0xA5.png +0 -0
  128. package/docs/images/ZX81-0xA6.png +0 -0
  129. package/docs/images/ZX81-0xA7.png +0 -0
  130. package/docs/images/ZX81-0xA8.png +0 -0
  131. package/docs/images/ZX81-0xA9.png +0 -0
  132. package/docs/images/ZX81-0xAA.png +0 -0
  133. package/docs/images/ZX81-0xAB.png +0 -0
  134. package/docs/images/ZX81-0xAC.png +0 -0
  135. package/docs/images/ZX81-0xAD.png +0 -0
  136. package/docs/images/ZX81-0xAE.png +0 -0
  137. package/docs/images/ZX81-0xAF.png +0 -0
  138. package/docs/images/ZX81-0xB0.png +0 -0
  139. package/docs/images/ZX81-0xB1.png +0 -0
  140. package/docs/images/ZX81-0xB2.png +0 -0
  141. package/docs/images/ZX81-0xB3.png +0 -0
  142. package/docs/images/ZX81-0xB4.png +0 -0
  143. package/docs/images/ZX81-0xB5.png +0 -0
  144. package/docs/images/ZX81-0xB6.png +0 -0
  145. package/docs/images/ZX81-0xB7.png +0 -0
  146. package/docs/images/ZX81-0xB8.png +0 -0
  147. package/docs/images/ZX81-0xB9.png +0 -0
  148. package/docs/images/ZX81-0xBA.png +0 -0
  149. package/docs/images/ZX81-0xBB.png +0 -0
  150. package/docs/images/ZX81-0xBC.png +0 -0
  151. package/docs/images/ZX81-0xBD.png +0 -0
  152. package/docs/images/ZX81-0xBE.png +0 -0
  153. package/docs/images/ZX81-0xBF.png +0 -0
  154. package/libs/.gitkeep +0 -0
  155. package/libs/z80-assembler/.eslintrc.json +18 -0
  156. package/libs/z80-assembler/package.json +20 -0
  157. package/libs/z80-assembler/project.json +35 -0
  158. package/libs/z80-assembler/public/README.md +54 -0
  159. package/{index.d.ts → libs/z80-assembler/src/index.ts} +1 -1
  160. package/libs/z80-assembler/src/lib/assets/code/basic-end.zx81 +4 -0
  161. package/libs/z80-assembler/src/lib/assets/code/basic-line1.zx81 +4 -0
  162. package/libs/z80-assembler/src/lib/assets/code/basic-line2.zx81 +9 -0
  163. package/libs/z80-assembler/src/lib/assets/code/characters.zx81 +190 -0
  164. package/libs/z80-assembler/src/lib/assets/code/display.zx81 +50 -0
  165. package/libs/z80-assembler/src/lib/assets/code/system-variables.zx81 +46 -0
  166. package/{lib/compiler/Assets.d.ts → libs/z80-assembler/src/lib/compiler/Assets.ts} +6 -1
  167. package/libs/z80-assembler/src/lib/compiler/Ast.ts +545 -0
  168. package/libs/z80-assembler/src/lib/compiler/Compiler.test.ts +2141 -0
  169. package/libs/z80-assembler/src/lib/compiler/Compiler.ts +185 -0
  170. package/libs/z80-assembler/src/lib/compiler/Formatter.ts +43 -0
  171. package/libs/z80-assembler/src/lib/compiler/Generator.ts +255 -0
  172. package/libs/z80-assembler/src/lib/compiler/Labels.ts +165 -0
  173. package/libs/z80-assembler/src/lib/grammar/LowLevel.ts +163 -0
  174. package/libs/z80-assembler/src/lib/grammar/Parse.ts +128 -0
  175. package/libs/z80-assembler/src/lib/grammar/z80.peg +1252 -0
  176. package/libs/z80-assembler/src/lib/grammar/z80.ts +10649 -0
  177. package/libs/z80-assembler/src/lib/types/Error.ts +105 -0
  178. package/{lib/types/Types.d.ts → libs/z80-assembler/src/lib/types/Types.ts} +26 -11
  179. package/libs/z80-assembler/tsconfig.json +23 -0
  180. package/libs/z80-assembler/tsconfig.lib.json +10 -0
  181. package/libs/z80-assembler/tsconfig.spec.json +19 -0
  182. package/libs/z80-assembler/vite.config.ts +58 -0
  183. package/nx.json +57 -0
  184. package/package.json +52 -14
  185. package/tsconfig.base.json +22 -0
  186. package/index.js +0 -312
  187. package/index.mjs +0 -6441
  188. package/lib/compiler/Ast.d.ts +0 -210
  189. package/lib/compiler/Compiler.d.ts +0 -53
  190. package/lib/compiler/Formatter.d.ts +0 -23
  191. package/lib/compiler/Generator.d.ts +0 -40
  192. package/lib/compiler/Labels.d.ts +0 -47
  193. package/lib/grammar/LowLevel.d.ts +0 -68
  194. package/lib/grammar/Parse.d.ts +0 -48
  195. package/lib/grammar/z80.d.ts +0 -2938
  196. package/lib/types/Error.d.ts +0 -62
  197. /package/{CHANGELOG.md → libs/z80-assembler/public/CHANGELOG.md} +0 -0
@@ -0,0 +1,335 @@
1
+ /**
2
+ * Z80 Assembler in Typescript
3
+ *
4
+ * File: opcodes.tsx
5
+ * Description: Help about the Z80 opcodes
6
+ * Author: Sebastien Andrivet
7
+ * License: GPLv3
8
+ * Copyrights: Copyright (C) 2023 Sebastien Andrivet
9
+ */
10
+ import {Collapse} from "react-daisyui";
11
+
12
+
13
+ export function AppOpcodes() {
14
+ return(
15
+ <div className="flex flex-auto h-full relative mt-0">
16
+ <div className="absolute top-0 bottom-0 left-0 right-0 overflow-auto">
17
+ <Collapse checkbox={true} icon="arrow">
18
+ <Collapse.Title className="font-bold">8-bit Load</Collapse.Title>
19
+ <Collapse.Content>
20
+ <table className="table table-zebra w-full">
21
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
22
+ <tbody>
23
+ <tr><td>LD r1, r2</td><td>r1, r2: A, B, C, D, E, H, L</td></tr>
24
+ <tr><td>LD r, n</td><td>r: A, B, C, D, E, H, L<br />n: 8-bit value</td></tr>
25
+ <tr><td>LD r, (HL)</td><td>r: A, B, C, D, E, H, L</td></tr>
26
+ <tr><td>LD r, (IX+d)</td><td>r: A, B, C, D, E, H, L<br />d: 8-bit signed value</td></tr>
27
+ <tr><td>LD r, (IY+d)</td><td>r: A, B, C, D, E, H, L<br />d: 8-bit signed value</td></tr>
28
+ <tr><td>LD (HL), r</td><td>r: A, B, C, D, E, H, L</td></tr>
29
+ <tr><td>LD (IX+d), r</td><td>r: A, B, C, D, E, H, L<br />d: 8-bit signed value</td></tr>
30
+ <tr><td>LD (IY+d), r</td><td>r: A, B, C, D, E, H, L<br />d: 8-bit signed value</td></tr>
31
+ <tr><td>LD (HL), n</td><td>n: 8-bit value</td></tr>
32
+ <tr><td>LD (IX+d), n</td><td>n: 8-bit value<br />d: 8-bit signed value</td></tr>
33
+ <tr><td>LD (IY+d), n</td><td>n: 8-bit value<br />d: 8-bit signed value</td></tr>
34
+ <tr><td>LD A, (rr)</td><td>rr: BC, DE</td></tr>
35
+ <tr><td>LD A, (nn)</td><td></td></tr>
36
+ <tr><td>LD (rr), A</td><td>rr: BC, DE</td></tr>
37
+ <tr><td>LD (nn), A</td><td>nn: 16-bit value</td></tr>
38
+ <tr><td>LD A, r</td><td>r: I, R</td></tr>
39
+ <tr><td>LD r, A</td><td>r: I, R</td></tr>
40
+ </tbody>
41
+ </table>
42
+ </Collapse.Content>
43
+ </Collapse>
44
+
45
+ <Collapse checkbox={true} icon="arrow">
46
+ <Collapse.Title className="font-bold">16-bit Load</Collapse.Title>
47
+ <Collapse.Content>
48
+ <table className="table table-zebra w-full">
49
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
50
+ <tbody>
51
+ <tr><td>LD rr, nn</td><td>rr: BC, DE, HL, SP, IX, IY<br />nn: 16-bit value</td></tr>
52
+ <tr><td>LD rr, (nn)</td><td>rr: BC, DE, HL, SP, IX, IY<br />nn: 16-bit value</td></tr>
53
+ <tr><td>LD HL, (nn)</td><td>nn: 16-bit value</td></tr>
54
+ <tr><td>LD rr, (nn)</td><td>rr: BC, DE, HL, SP, IX, IY<br />nn: 16-bit value</td></tr>
55
+ <tr><td>LD (nn), HL</td><td>nn: 16-bit value</td></tr>
56
+ <tr><td>LD (nn), rr</td><td>rr: BC, DE, HL, SP, IX, IY<br />nn: 16-bit value</td></tr>
57
+ <tr><td>LD SP, rr</td><td>rr: HL, IX, IY</td></tr>
58
+ <tr><td>PUSH rr</td><td>rr: BC, DE, HL, AF, IX, IY</td></tr>
59
+ <tr><td>POP rr</td><td>rr: BC, DE, HL, AF, IX, IY</td></tr>
60
+ </tbody>
61
+ </table>
62
+ </Collapse.Content>
63
+ </Collapse>
64
+
65
+ <Collapse checkbox={true} icon="arrow">
66
+ <Collapse.Title className="font-bold">Exchange</Collapse.Title>
67
+ <Collapse.Content>
68
+ <table className="table table-zebra w-full">
69
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
70
+ <tbody>
71
+ <tr><td>EX DE, HL</td><td></td></tr>
72
+ <tr><td>EX AF, AF'</td><td></td></tr>
73
+ <tr><td>EXX</td><td></td></tr>
74
+ <tr><td>EX (SP), rr</td><td>rr: HL, IX, IY</td></tr>
75
+ </tbody>
76
+ </table>
77
+ </Collapse.Content>
78
+ </Collapse>
79
+
80
+ <Collapse checkbox={true} icon="arrow">
81
+ <Collapse.Title className="font-bold">Block Transfer and Search</Collapse.Title>
82
+ <Collapse.Content>
83
+ <table className="table table-zebra w-full">
84
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
85
+ <tbody>
86
+ <tr><td>LDI</td><td></td></tr>
87
+ <tr><td>LDIR</td><td></td></tr>
88
+ <tr><td>LDD</td><td></td></tr>
89
+ <tr><td>LDDR</td><td></td></tr>
90
+ <tr><td>CPI</td><td></td></tr>
91
+ <tr><td>CPIR</td><td></td></tr>
92
+ <tr><td>CPD</td><td></td></tr>
93
+ <tr><td>CPDR</td><td></td></tr>
94
+ </tbody>
95
+ </table>
96
+ </Collapse.Content>
97
+ </Collapse>
98
+
99
+ <Collapse checkbox={true} icon="arrow">
100
+ <Collapse.Title className="font-bold">8-bit Arithmetic</Collapse.Title>
101
+ <Collapse.Content>
102
+ <table className="table table-zebra w-full">
103
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
104
+ <tbody>
105
+ <tr><td>ADD A, r</td><td>r: A, B, C, D, E, H, L</td></tr>
106
+ <tr><td>ADD A, n</td><td>n: 8-bit value</td></tr>
107
+ <tr><td>ADD A, (HL)</td><td></td></tr>
108
+ <tr><td>ADD A, (IX+d)</td><td>d: 8-bit signed value</td></tr>
109
+ <tr><td>ADD A, (IY+d)</td><td>d: 8-bit signed value</td></tr>
110
+ <tr><td>ADC A, r</td><td>r: A, B, C, D, E, H, L</td></tr>
111
+ <tr><td>ADC A, n</td><td>n: 8-bit value</td></tr>
112
+ <tr><td>ADC A, (HL)</td><td></td></tr>
113
+ <tr><td>ADC A, (IX+d)</td><td>d: 8-bit signed value</td></tr>
114
+ <tr><td>ADC A, (IY+d)</td><td>d: 8-bit signed value</td></tr>
115
+ <tr><td>SUB A, r</td><td>r: A, B, C, D, E, H, L</td></tr>
116
+ <tr><td>SUB A, n</td><td>n: 8-bit value</td></tr>
117
+ <tr><td>SUB A, (HL)</td><td></td></tr>
118
+ <tr><td>SUB A, (IX+d)</td><td>d: 8-bit signed value</td></tr>
119
+ <tr><td>SUB A, (IY+d)</td><td>d: 8-bit signed value</td></tr>
120
+ <tr><td>SBC A, r</td><td>r: A, B, C, D, E, H, L</td></tr>
121
+ <tr><td>SBC A, n</td><td>n: 8-bit value</td></tr>
122
+ <tr><td>SBC A, (HL)</td><td></td></tr>
123
+ <tr><td>SBC A, (IX+d)</td><td>d: 8-bit signed value</td></tr>
124
+ <tr><td>SBC A, (IY+d)</td><td>d: 8-bit signed value</td></tr>
125
+ <tr><td>AND A, r</td><td>r: A, B, C, D, E, H, L</td></tr>
126
+ <tr><td>AND A, n</td><td>n: 8-bit value</td></tr>
127
+ <tr><td>AND A, (HL)</td><td></td></tr>
128
+ <tr><td>AND A, (IX+d)</td><td>d: 8-bit signed value</td></tr>
129
+ <tr><td>AND A, (IY+d)</td><td>d: 8-bit signed value</td></tr>
130
+ <tr><td>OR A, r</td><td>r: A, B, C, D, E, H, L</td></tr>
131
+ <tr><td>OR A, n</td><td>n: 8-bit value</td></tr>
132
+ <tr><td>OR A, (HL)</td><td></td></tr>
133
+ <tr><td>OR A, (IX+d)</td><td>d: 8-bit signed value</td></tr>
134
+ <tr><td>OR A, (IY+d)</td><td>d: 8-bit signed value</td></tr>
135
+ <tr><td>XOR A, r</td><td>r: A, B, C, D, E, H, L</td></tr>
136
+ <tr><td>XOR A, n</td><td>n: 8-bit value</td></tr>
137
+ <tr><td>XOR A, (HL)</td><td></td></tr>
138
+ <tr><td>XOR A, (IX+d)</td><td>d: 8-bit signed value</td></tr>
139
+ <tr><td>XOR A, (IY+d)</td><td>d: 8-bit signed value</td></tr>
140
+ <tr><td>CP A, r</td><td>r: A, B, C, D, E, H, L</td></tr>
141
+ <tr><td>CP A, n</td><td>n: 8-bit value</td></tr>
142
+ <tr><td>CP A, (HL)</td><td></td></tr>
143
+ <tr><td>CP A, (IX+d)</td><td>d: 8-bit signed value</td></tr>
144
+ <tr><td>CP A, (IY+d)</td><td>d: 8-bit signed value</td></tr>
145
+ <tr><td>INC r</td><td>r: A, B, C, D, E, H, L</td></tr>
146
+ <tr><td>INC (HL)</td><td></td></tr>
147
+ <tr><td>INC (IX+d)</td><td>d: 8-bit signed value</td></tr>
148
+ <tr><td>INC (IY+d)</td><td>d: 8-bit signed value</td></tr>
149
+ <tr><td>DEC r</td><td>r: A, B, C, D, E, H, L</td></tr>
150
+ <tr><td>DEC (HL)</td><td></td></tr>
151
+ <tr><td>DEC (IX+d)</td><td>d: 8-bit signed value</td></tr>
152
+ <tr><td>DEC (IY+d)</td><td>d: 8-bit signed value</td></tr>
153
+ <tr><td>DAA</td><td></td></tr>
154
+ <tr><td>CPL</td><td></td></tr>
155
+ <tr><td>NEG</td><td></td></tr>
156
+ <tr><td>CCF</td><td></td></tr>
157
+ <tr><td>SCF</td><td></td></tr>
158
+ </tbody>
159
+ </table>
160
+ </Collapse.Content>
161
+ </Collapse>
162
+
163
+ <Collapse checkbox={true} icon="arrow">
164
+ <Collapse.Title className="font-bold">16-bit Arithmetic</Collapse.Title>
165
+ <Collapse.Content>
166
+ <table className="table table-zebra w-full">
167
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
168
+ <tbody>
169
+ <tr><td>ADD HL, rr</td><td>rr: BC, DE, HL, SP</td></tr>
170
+ <tr><td>ADC HL, rr</td><td>rr: BC, DE, HL, SP</td></tr>
171
+ <tr><td>SBC HL, rr</td><td>rr: BC, DE, HL, SP</td></tr>
172
+ <tr><td>ADD IX, rr</td><td>rr: BC, DE, IX, SP</td></tr>
173
+ <tr><td>ADD IY, rr</td><td>rr: BC, DE, IY, SP</td></tr>
174
+ <tr><td>INC rr</td><td>rr: BC, DE; HL, SP, IX, IY</td></tr>
175
+ <tr><td>DEC rr</td><td>rr: BC, DE; HL, SP, IX, IY</td></tr>
176
+ </tbody>
177
+ </table>
178
+ </Collapse.Content>
179
+ </Collapse>
180
+
181
+ <Collapse checkbox={true} icon="arrow">
182
+ <Collapse.Title className="font-bold">Rotate and Shift</Collapse.Title>
183
+ <Collapse.Content>
184
+ <table className="table table-zebra w-full">
185
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
186
+ <tbody>
187
+ <tr><td>RLCA</td><td></td></tr>
188
+ <tr><td>RLA</td><td></td></tr>
189
+ <tr><td>RRCA</td><td></td></tr>
190
+ <tr><td>RRA</td><td></td></tr>
191
+ <tr><td>RLC r</td><td>r: A, B, C, D, E, H, L</td></tr>
192
+ <tr><td>RLC (HL)</td><td></td></tr>
193
+ <tr><td>RLC (IX+d)</td><td>d: 8-bit signed value</td></tr>
194
+ <tr><td>RLC (IY+d)</td><td>d: 8-bit signed value</td></tr>
195
+ <tr><td>RL r</td><td>r: A, B, C, D, E, H, L</td></tr>
196
+ <tr><td>RL (HL)</td><td></td></tr>
197
+ <tr><td>RL (IX+d)</td><td>d: 8-bit signed value</td></tr>
198
+ <tr><td>RL (IY+d)</td><td>d: 8-bit signed value</td></tr>
199
+ <tr><td>RRC r</td><td>r: A, B, C, D, E, H, L</td></tr>
200
+ <tr><td>RRC (HL)</td><td></td></tr>
201
+ <tr><td>RRC (IX+d)</td><td>d: 8-bit signed value</td></tr>
202
+ <tr><td>RRC (IY+d)</td><td>d: 8-bit signed value</td></tr>
203
+ <tr><td>RR r</td><td>r: A, B, C, D, E, H, L</td></tr>
204
+ <tr><td>RR (HL)</td><td></td></tr>
205
+ <tr><td>RR (IX+d)</td><td>d: 8-bit signed value</td></tr>
206
+ <tr><td>RR (IY+d)</td><td>d: 8-bit signed value</td></tr>
207
+ <tr><td>SLA r</td><td>r: A, B, C, D, E, H, L</td></tr>
208
+ <tr><td>SLA (HL)</td><td></td></tr>
209
+ <tr><td>SLA (IX+d)</td><td>d: 8-bit signed value</td></tr>
210
+ <tr><td>SLA (IY+d)</td><td>d: 8-bit signed value</td></tr>
211
+ <tr><td>SRA r</td><td>r: A, B, C, D, E, H, L</td></tr>
212
+ <tr><td>SRA (HL)</td><td></td></tr>
213
+ <tr><td>SRA (IX+d)</td><td>d: 8-bit signed value</td></tr>
214
+ <tr><td>SRA (IY+d)</td><td>d: 8-bit signed value</td></tr>
215
+ <tr><td>SRL r</td><td>r: A, B, C, D, E, H, L</td></tr>
216
+ <tr><td>SRL (HL)</td><td></td></tr>
217
+ <tr><td>SRL (IX+d)</td><td>d: 8-bit signed value</td></tr>
218
+ <tr><td>SRL (IY+d)</td><td>d: 8-bit signed value</td></tr>
219
+ <tr><td>RLD</td><td></td></tr>
220
+ <tr><td>RRD</td><td></td></tr>
221
+ </tbody>
222
+ </table>
223
+ </Collapse.Content>
224
+ </Collapse>
225
+
226
+ <Collapse checkbox={true} icon="arrow">
227
+ <Collapse.Title className="font-bold">Bit Manipulation</Collapse.Title>
228
+ <Collapse.Content>
229
+ <table className="table table-zebra w-full">
230
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
231
+ <tbody>
232
+ <tr><td>BIT b, r</td><td>r: A, B, C, D, E, F, H, L<br/>b: 0 to 7</td></tr>
233
+ <tr><td>BIT b, (HL)</td><td>b: 0 to 7</td></tr>
234
+ <tr><td>BIT b, (IX+d)</td><td>b: 0 to 7<br/>d: 8-bit signed value</td></tr>
235
+ <tr><td>BIT b, (IY+d)</td><td>b: 0 to 7<br/>d: 8-bit signed value</td></tr>
236
+ <tr><td>SET b, r</td><td></td></tr>
237
+ <tr><td>SET b, r</td><td>r: A, B, C, D, E, F, H, L<br/>b: 0 to 7</td></tr>
238
+ <tr><td>SET b, (HL)</td><td>b: 0 to 7</td></tr>
239
+ <tr><td>SET b, (IX+d)</td><td></td></tr>
240
+ <tr><td>SET b, (IY+d)</td><td></td></tr>
241
+ <tr><td>RES b, r</td><td>r: A, B, C, D, E, F, H, L<br/>b: 0 to 7</td></tr>
242
+ <tr><td>RES b, (HL)</td><td>b: 0 to 7</td></tr>
243
+ <tr><td>RES b, (IX+d)</td><td>b: 0 to 7<br/>d: 8-bit signed value</td></tr>
244
+ <tr><td>RES b, (IY+d)</td><td>b: 0 to 7<br/>d: 8-bit signed value</td></tr>
245
+ </tbody>
246
+ </table>
247
+ </Collapse.Content>
248
+ </Collapse>
249
+
250
+ <Collapse checkbox={true} icon="arrow">
251
+ <Collapse.Title className="font-bold">Jump, Call and Return</Collapse.Title>
252
+ <Collapse.Content>
253
+ <table className="table table-zebra w-full">
254
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
255
+ <tbody>
256
+ <tr><td>JP nn</td><td>nn: 16-bit value</td></tr>
257
+ <tr><td>JP cc, nn</td><td>cc: NZ, Z, NC, C, PO, PE, P, M<br/>nn: 16-bit value</td></tr>
258
+ <tr><td>JR e</td><td>e: -126 to 129</td></tr>
259
+ <tr><td>JR cc, e</td><td>cc: Z, NZ, C, NC<br/>e: -126 to 129</td></tr>
260
+ <tr><td>JP (rr)</td><td>rr: HL, IX, IY</td></tr>
261
+ <tr><td>DJNZ e</td><td>e: -126 to 129</td></tr>
262
+ <tr><td>CALL nn</td><td>nn: 16-bit value</td></tr>
263
+ <tr><td>CALL cc, nn</td><td>cc: NZ, Z, NC, C, PO, PE, P, M<br/>nn: 16-bit value</td></tr>
264
+ <tr><td>RET</td><td></td></tr>
265
+ <tr><td>RET cc</td><td>cc: NZ, Z, NC, C, PO, PE, P, M</td></tr>
266
+ <tr><td>RETI</td><td></td></tr>
267
+ <tr><td>RETN</td><td></td></tr>
268
+ <tr><td>RST n</td><td>n: $00, $08, $10, $18, $20, $28, $30, $38</td></tr>
269
+ </tbody>
270
+ </table>
271
+ </Collapse.Content>
272
+ </Collapse>
273
+
274
+ <Collapse checkbox={true} icon="arrow">
275
+ <Collapse.Title className="font-bold">Input and Output</Collapse.Title>
276
+ <Collapse.Content>
277
+ <table className="table table-zebra w-full">
278
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
279
+ <tbody>
280
+ <tr><td>IN A, (n)</td><td>n: 8-bit value</td></tr>
281
+ <tr><td>IN r, (C)</td><td>r: A, B, C, D, E, H, L</td></tr>
282
+ <tr><td>INI</td><td></td></tr>
283
+ <tr><td>INIR</td><td></td></tr>
284
+ <tr><td>IND</td><td></td></tr>
285
+ <tr><td>INDR</td><td></td></tr>
286
+ <tr><td>OUT (n), A</td><td>n: 8-bit value</td></tr>
287
+ <tr><td>OUT (C), r</td><td>r: A, B, C, D, E, H, L</td></tr>
288
+ <tr><td>OUTI</td><td></td></tr>
289
+ <tr><td>OTIR</td><td></td></tr>
290
+ <tr><td>OUTD</td><td></td></tr>
291
+ <tr><td>OTDR</td><td></td></tr>
292
+ </tbody>
293
+ </table>
294
+ </Collapse.Content>
295
+ </Collapse>
296
+
297
+ <Collapse checkbox={true} icon="arrow">
298
+ <Collapse.Title className="font-bold">CPU Control</Collapse.Title>
299
+ <Collapse.Content>
300
+ <table className="table table-zebra w-full">
301
+ <thead><tr className="bg-neutral-900"><th>Opcode</th><th>Arguments</th></tr></thead>
302
+ <tbody>
303
+ <tr><td>NOP</td><td></td></tr>
304
+ <tr><td>HALT</td><td></td></tr>
305
+ <tr><td>DI</td><td></td></tr>
306
+ <tr><td>EI</td><td></td></tr>
307
+ <tr><td>IM n</td><td>n: 0, 1, 2</td></tr>
308
+ </tbody>
309
+ </table>
310
+ </Collapse.Content>
311
+ </Collapse>
312
+
313
+ <Collapse checkbox={true} icon="arrow">
314
+ <Collapse.Title className="font-bold">Pseudo Instructions</Collapse.Title>
315
+ <Collapse.Content>
316
+ <table className="table table-zebra w-full">
317
+ <thead><tr className="bg-neutral-900"><th>Instr.</th><th>Aliases</th></tr></thead>
318
+ <tbody>
319
+ <tr><td>equ</td><td>.equ</td></tr>
320
+ <tr><td>org</td><td>.org</td></tr>
321
+ <tr><td>include</td><td>.include</td></tr>
322
+ <tr><td>output</td><td>.output</td></tr>
323
+ <tr><td>device</td><td>.device</td></tr>
324
+ <tr><td>byte</td><td>db, dm, defb, defm</td></tr>
325
+ <tr><td>word</td><td>dw, defw</td></tr>
326
+ <tr><td>block</td><td>defs, ds</td></tr>
327
+ </tbody>
328
+ </table>
329
+ </Collapse.Content>
330
+ </Collapse>
331
+
332
+ </div>
333
+ </div>
334
+ );
335
+ }
File without changes
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Z80 Assembler in Typescript
3
+ *
4
+ * File: main.tsx
5
+ * Description: Main view of the application
6
+ * Author: Sebastien Andrivet
7
+ * License: GPLv3
8
+ * Copyrights: Copyright (C) 2023 Sebastien Andrivet
9
+ */
10
+ import { StrictMode } from 'react';
11
+ import * as ReactDOM from 'react-dom/client';
12
+
13
+ import App from './app/app';
14
+
15
+ const root = ReactDOM.createRoot(
16
+ document.getElementById('root') as HTMLElement
17
+ );
18
+ root.render(
19
+ <StrictMode>
20
+ <App />
21
+ </StrictMode>
22
+ );
@@ -0,0 +1,8 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ .cm-lintRange-error {
6
+ background-color: rgb(239 68 68);
7
+ color: white;
8
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Z80 Assembler in Typescript
3
+ *
4
+ * File: tailwind.config.js
5
+ * Description: Configuration for Tailwind CSS and DaisyUI
6
+ * Author: Sebastien Andrivet
7
+ * License: GPLv3
8
+ * Copyrights: Copyright (C) 2023 Sebastien Andrivet
9
+ */
10
+ const { createGlobPatternsForDependencies } = require('@nx/react/tailwind');
11
+ const { join } = require('path');
12
+
13
+ /** @type {import('tailwindcss').Config} */
14
+ module.exports = {
15
+ content: [
16
+ join(
17
+ __dirname,
18
+ '{src,pages,components,app}/**/*!(*.stories|*.spec).{ts,tsx,html}'
19
+ ),
20
+ ...createGlobPatternsForDependencies(__dirname),
21
+ 'node_modules/daisyui/dist/**/*.js',
22
+ 'node_modules/react-daisyui/dist/**/*.js'
23
+ ],
24
+ theme: {
25
+ extend: {},
26
+ },
27
+ plugins: [require('daisyui')],
28
+ };
@@ -0,0 +1,22 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../dist/out-tsc",
5
+ "types": ["node", "vite/client"]
6
+ },
7
+ "files": [
8
+ "../../node_modules/@nx/react/typings/cssmodule.d.ts",
9
+ "../../node_modules/@nx/react/typings/image.d.ts"
10
+ ],
11
+ "exclude": [
12
+ "src/**/*.spec.ts",
13
+ "src/**/*.test.ts",
14
+ "src/**/*.spec.tsx",
15
+ "src/**/*.test.tsx",
16
+ "src/**/*.spec.js",
17
+ "src/**/*.test.js",
18
+ "src/**/*.spec.jsx",
19
+ "src/**/*.test.jsx"
20
+ ],
21
+ "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"]
22
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "compilerOptions": {
3
+ "jsx": "react-jsx",
4
+ "allowJs": false,
5
+ "esModuleInterop": false,
6
+ "allowSyntheticDefaultImports": true,
7
+ "strict": true,
8
+ "types": ["vite/client", "vitest"]
9
+ },
10
+ "files": [],
11
+ "include": [],
12
+ "references": [
13
+ {
14
+ "path": "./tsconfig.app.json"
15
+ },
16
+ {
17
+ "path": "./tsconfig.spec.json"
18
+ }
19
+ ],
20
+ "extends": "../../tsconfig.base.json"
21
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../dist/out-tsc",
5
+ "types": ["vitest/globals", "vitest/importMeta", "vite/client", "node"]
6
+ },
7
+ "include": [
8
+ "vite.config.ts",
9
+ "src/**/*.test.ts",
10
+ "src/**/*.spec.ts",
11
+ "src/**/*.test.tsx",
12
+ "src/**/*.spec.tsx",
13
+ "src/**/*.test.js",
14
+ "src/**/*.spec.js",
15
+ "src/**/*.test.jsx",
16
+ "src/**/*.spec.jsx",
17
+ "src/**/*.d.ts"
18
+ ],
19
+ "files": [
20
+ "../../node_modules/@nx/react/typings/cssmodule.d.ts",
21
+ "../../node_modules/@nx/react/typings/image.d.ts"
22
+ ]
23
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Z80 Assembler in Typescript
3
+ *
4
+ * File: vite.config.ts
5
+ * Description: Configuration for Vite
6
+ * Author: Sebastien Andrivet
7
+ * License: GPLv3
8
+ * Copyrights: Copyright (C) 2023 Sebastien Andrivet
9
+ */
10
+
11
+ /// <reference types="vitest" />
12
+ import { defineConfig, searchForWorkspaceRoot } from 'vite';
13
+ import react from '@vitejs/plugin-react';
14
+ import viteTsConfigPaths from 'vite-tsconfig-paths';
15
+
16
+ export default defineConfig({
17
+ cacheDir: '../../node_modules/.vite/z80-assembler-app',
18
+ assetsInclude: ['**/*.zx81'],
19
+
20
+ build: {
21
+ chunkSizeWarningLimit: 1024
22
+ },
23
+
24
+ server: {
25
+ port: 4200,
26
+ host: 'localhost',
27
+ fs: {
28
+ allow: [
29
+ // search up for workspace root
30
+ searchForWorkspaceRoot(process.cwd()),
31
+ ],
32
+ },
33
+ },
34
+
35
+ preview: {
36
+ port: 4300,
37
+ host: 'localhost',
38
+ },
39
+
40
+ plugins: [
41
+ react(),
42
+ viteTsConfigPaths({
43
+ root: '../../',
44
+ }),
45
+ ],
46
+
47
+ // Uncomment this if you are using workers.
48
+ // worker: {
49
+ // plugins: [
50
+ // viteTsConfigPaths({
51
+ // root: '../../',
52
+ // }),
53
+ // ],
54
+ // },
55
+
56
+ test: {
57
+ globals: true,
58
+ cache: {
59
+ dir: '../../node_modules/.vitest',
60
+ },
61
+ environment: 'jsdom',
62
+ include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
63
+ },
64
+ });
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file