@jhlagado/azm 0.1.1 → 0.2.1

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 (423) hide show
  1. package/README.md +103 -70
  2. package/dist/{src → legacy-root-azm/src}/formats/index.d.ts +1 -1
  3. package/dist/{src → legacy-root-azm/src}/formats/index.js +1 -1
  4. package/dist/{src → legacy-root-azm/src}/formats/types.d.ts +67 -7
  5. package/dist/{src → legacy-root-azm/src}/formats/writeHex.d.ts +0 -1
  6. package/dist/{src → legacy-root-azm/src}/formats/writeHex.js +0 -1
  7. package/dist/{src → legacy-root-azm/src}/pipeline.d.ts +3 -5
  8. package/dist/legacy-root-azm/src/z80/effects.d.ts +3 -0
  9. package/dist/legacy-root-azm/src/z80/effects.js +516 -0
  10. package/dist/legacy-root-azm/src/z80/encode.d.ts +10 -0
  11. package/dist/legacy-root-azm/src/z80/encode.js +412 -0
  12. package/dist/src/api-compile.d.ts +49 -8
  13. package/dist/src/api-compile.js +313 -3
  14. package/dist/src/api-tooling.d.ts +7 -25
  15. package/dist/src/api-tooling.js +3 -21
  16. package/dist/src/assembly/address-planning.d.ts +19 -0
  17. package/dist/src/assembly/address-planning.js +268 -0
  18. package/dist/src/assembly/assemble-program.d.ts +13 -0
  19. package/dist/src/assembly/assemble-program.js +34 -0
  20. package/dist/src/assembly/fixup-emission.d.ts +10 -0
  21. package/dist/src/assembly/fixup-emission.js +247 -0
  22. package/dist/src/assembly/placement.d.ts +26 -0
  23. package/dist/src/assembly/placement.js +79 -0
  24. package/dist/src/assembly/program-emission.d.ts +13 -0
  25. package/dist/src/assembly/program-emission.js +268 -0
  26. package/dist/src/cli/parse-args.d.ts +29 -0
  27. package/dist/src/cli/parse-args.js +372 -0
  28. package/dist/src/cli/run.d.ts +2 -0
  29. package/dist/src/cli/run.js +35 -0
  30. package/dist/src/cli/write-artifacts.d.ts +21 -0
  31. package/dist/src/cli/write-artifacts.js +175 -0
  32. package/dist/src/cli.d.ts +1 -30
  33. package/dist/src/cli.js +20 -524
  34. package/dist/src/core/compile-artifacts.d.ts +26 -0
  35. package/dist/src/core/compile-artifacts.js +17 -0
  36. package/dist/src/core/compile.d.ts +26 -0
  37. package/dist/src/core/compile.js +164 -0
  38. package/dist/src/diagnostics/format.d.ts +4 -0
  39. package/dist/src/diagnostics/format.js +9 -0
  40. package/dist/src/expansion/op-expansion.d.ts +96 -0
  41. package/dist/src/expansion/op-expansion.js +913 -0
  42. package/dist/src/index.d.ts +14 -3
  43. package/dist/src/index.js +7 -2
  44. package/dist/src/model/diagnostic.d.ts +50 -0
  45. package/dist/src/model/diagnostic.js +29 -0
  46. package/dist/src/model/expression.d.ts +51 -0
  47. package/dist/src/model/expression.js +1 -0
  48. package/dist/src/model/fixup.d.ts +18 -0
  49. package/dist/src/model/fixup.js +1 -0
  50. package/dist/src/model/source-item.d.ts +87 -0
  51. package/dist/src/model/source-item.js +1 -0
  52. package/dist/src/model/symbol.d.ts +1 -0
  53. package/dist/src/model/symbol.js +1 -0
  54. package/dist/src/node/source-host.d.ts +19 -0
  55. package/dist/src/node/source-host.js +146 -0
  56. package/dist/src/outputs/hex.d.ts +1 -0
  57. package/dist/src/outputs/hex.js +75 -0
  58. package/dist/src/outputs/index.d.ts +3 -0
  59. package/dist/src/outputs/index.js +13 -0
  60. package/dist/src/outputs/range.d.ts +3 -0
  61. package/dist/src/outputs/range.js +31 -0
  62. package/dist/src/outputs/types.d.ts +182 -0
  63. package/dist/src/outputs/types.js +1 -0
  64. package/dist/src/outputs/write-asm80.d.ts +7 -0
  65. package/dist/src/outputs/write-asm80.js +666 -0
  66. package/dist/src/outputs/write-bin.d.ts +2 -0
  67. package/dist/src/outputs/write-bin.js +27 -0
  68. package/dist/src/outputs/write-d8.d.ts +2 -0
  69. package/dist/src/outputs/write-d8.js +257 -0
  70. package/dist/src/outputs/write-hex.d.ts +2 -0
  71. package/dist/src/outputs/write-hex.js +53 -0
  72. package/dist/src/outputs/write-listing.d.ts +2 -0
  73. package/dist/src/outputs/write-listing.js +79 -0
  74. package/dist/src/register-care/accept-output.d.ts +2 -0
  75. package/dist/src/register-care/accept-output.js +35 -0
  76. package/dist/src/register-care/analyze.d.ts +26 -0
  77. package/dist/src/register-care/analyze.js +115 -0
  78. package/dist/src/register-care/annotate.d.ts +11 -0
  79. package/dist/src/register-care/annotate.js +76 -0
  80. package/dist/src/register-care/annotations.d.ts +8 -0
  81. package/dist/src/register-care/annotations.js +41 -0
  82. package/dist/src/register-care/boundaryHints.d.ts +2 -0
  83. package/dist/src/register-care/boundaryHints.js +11 -0
  84. package/dist/src/register-care/carriers.d.ts +2 -0
  85. package/dist/src/register-care/carriers.js +78 -0
  86. package/dist/src/register-care/controlFlow.d.ts +5 -0
  87. package/dist/src/register-care/controlFlow.js +38 -0
  88. package/dist/src/register-care/fix.d.ts +11 -0
  89. package/dist/src/register-care/fix.js +130 -0
  90. package/dist/src/register-care/instruction-shape.d.ts +11 -0
  91. package/dist/src/register-care/instruction-shape.js +129 -0
  92. package/dist/src/register-care/liveness.d.ts +3 -0
  93. package/dist/src/register-care/liveness.js +197 -0
  94. package/dist/src/register-care/profiles.d.ts +9 -0
  95. package/dist/src/register-care/profiles.js +47 -0
  96. package/dist/src/register-care/programModel.d.ts +3 -0
  97. package/dist/src/register-care/programModel.js +188 -0
  98. package/dist/src/register-care/report.d.ts +5 -0
  99. package/dist/src/register-care/report.js +139 -0
  100. package/dist/src/register-care/routine-summaries.d.ts +6 -0
  101. package/dist/src/register-care/routine-summaries.js +89 -0
  102. package/dist/src/register-care/smartComments.d.ts +5 -0
  103. package/dist/src/register-care/smartComments.js +243 -0
  104. package/dist/src/register-care/sourceText.d.ts +8 -0
  105. package/dist/src/register-care/sourceText.js +15 -0
  106. package/dist/src/register-care/summaries.d.ts +12 -0
  107. package/dist/src/register-care/summaries.js +121 -0
  108. package/dist/src/register-care/summary.d.ts +3 -0
  109. package/dist/src/register-care/summary.js +474 -0
  110. package/dist/src/{registerCare → register-care}/tooling.d.ts +7 -6
  111. package/dist/src/{registerCare → register-care}/tooling.js +17 -6
  112. package/dist/src/register-care/types.d.ts +170 -0
  113. package/dist/src/register-care/types.js +1 -0
  114. package/dist/src/semantics/expression-evaluation.d.ts +29 -0
  115. package/dist/src/semantics/expression-evaluation.js +409 -0
  116. package/dist/src/source/logical-lines.d.ts +7 -0
  117. package/dist/src/source/logical-lines.js +11 -0
  118. package/dist/src/source/source-file.d.ts +5 -0
  119. package/dist/src/source/source-file.js +3 -0
  120. package/dist/src/source/source-span.d.ts +5 -0
  121. package/dist/src/source/source-span.js +1 -0
  122. package/dist/src/source/strip-line-comment.d.ts +6 -0
  123. package/dist/src/source/strip-line-comment.js +53 -0
  124. package/dist/src/syntax/directive-aliases.d.ts +10 -0
  125. package/dist/src/syntax/directive-aliases.js +199 -0
  126. package/dist/src/syntax/parse-diagnostics.d.ts +12 -0
  127. package/dist/src/syntax/parse-diagnostics.js +18 -0
  128. package/dist/src/syntax/parse-expression.d.ts +3 -0
  129. package/dist/src/syntax/parse-expression.js +551 -0
  130. package/dist/src/syntax/parse-line.d.ts +12 -0
  131. package/dist/src/syntax/parse-line.js +382 -0
  132. package/dist/src/tooling/api.d.ts +42 -0
  133. package/dist/src/tooling/api.js +42 -0
  134. package/dist/src/tooling/case-style.d.ts +8 -0
  135. package/dist/src/tooling/case-style.js +163 -0
  136. package/dist/src/z80/effects.d.ts +3 -3
  137. package/dist/src/z80/effects.js +349 -302
  138. package/dist/src/z80/encode.d.ts +2 -10
  139. package/dist/src/z80/encode.js +951 -374
  140. package/dist/src/z80/instruction.d.ts +226 -0
  141. package/dist/src/z80/instruction.js +1 -0
  142. package/dist/src/z80/parse-instruction.d.ts +7 -0
  143. package/dist/src/z80/parse-instruction.js +1068 -0
  144. package/docs/reference/tooling-api.md +68 -9
  145. package/package.json +22 -3
  146. /package/dist/{src → legacy-root-azm/src}/analysis.d.ts +0 -0
  147. /package/dist/{src → legacy-root-azm/src}/analysis.js +0 -0
  148. /package/dist/{src → legacy-root-azm/src}/compile.d.ts +0 -0
  149. /package/dist/{src → legacy-root-azm/src}/compile.js +0 -0
  150. /package/dist/{src → legacy-root-azm/src}/compileShared.d.ts +0 -0
  151. /package/dist/{src → legacy-root-azm/src}/compileShared.js +0 -0
  152. /package/dist/{src → legacy-root-azm/src}/diagnosticTypes.d.ts +0 -0
  153. /package/dist/{src → legacy-root-azm/src}/diagnosticTypes.js +0 -0
  154. /package/dist/{src → legacy-root-azm/src}/formats/range.d.ts +0 -0
  155. /package/dist/{src → legacy-root-azm/src}/formats/range.js +0 -0
  156. /package/dist/{src → legacy-root-azm/src}/formats/types.js +0 -0
  157. /package/dist/{src → legacy-root-azm/src}/formats/writeAsm80.d.ts +0 -0
  158. /package/dist/{src → legacy-root-azm/src}/formats/writeAsm80.js +0 -0
  159. /package/dist/{src → legacy-root-azm/src}/formats/writeBin.d.ts +0 -0
  160. /package/dist/{src → legacy-root-azm/src}/formats/writeBin.js +0 -0
  161. /package/dist/{src → legacy-root-azm/src}/formats/writeD8m.d.ts +0 -0
  162. /package/dist/{src → legacy-root-azm/src}/formats/writeD8m.js +0 -0
  163. /package/dist/{src → legacy-root-azm/src}/formats/writeListing.d.ts +0 -0
  164. /package/dist/{src → legacy-root-azm/src}/formats/writeListing.js +0 -0
  165. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/asmLine.d.ts +0 -0
  166. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/asmLine.js +0 -0
  167. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/parseAsmRawValues.d.ts +0 -0
  168. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/parseAsmRawValues.js +0 -0
  169. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/quoteScan.d.ts +0 -0
  170. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/quoteScan.js +0 -0
  171. /package/dist/{src → legacy-root-azm/src}/frontend/ast.d.ts +0 -0
  172. /package/dist/{src → legacy-root-azm/src}/frontend/ast.js +0 -0
  173. /package/dist/{src → legacy-root-azm/src}/frontend/directiveAliases.d.ts +0 -0
  174. /package/dist/{src → legacy-root-azm/src}/frontend/directiveAliases.js +0 -0
  175. /package/dist/{src → legacy-root-azm/src}/frontend/grammarData.d.ts +0 -0
  176. /package/dist/{src → legacy-root-azm/src}/frontend/grammarData.js +0 -0
  177. /package/dist/{src → legacy-root-azm/src}/frontend/immExprUtils.d.ts +0 -0
  178. /package/dist/{src → legacy-root-azm/src}/frontend/immExprUtils.js +0 -0
  179. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmFlatDirectiveLine.d.ts +0 -0
  180. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmFlatDirectiveLine.js +0 -0
  181. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmInstruction.d.ts +0 -0
  182. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmInstruction.js +0 -0
  183. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmStatements.d.ts +0 -0
  184. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmStatements.js +0 -0
  185. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmStream.d.ts +0 -0
  186. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmStream.js +0 -0
  187. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmTopLevel.d.ts +0 -0
  188. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmTopLevel.js +0 -0
  189. /package/dist/{src → legacy-root-azm/src}/frontend/parseDiagnostics.d.ts +0 -0
  190. /package/dist/{src → legacy-root-azm/src}/frontend/parseDiagnostics.js +0 -0
  191. /package/dist/{src → legacy-root-azm/src}/frontend/parseEnum.d.ts +0 -0
  192. /package/dist/{src → legacy-root-azm/src}/frontend/parseEnum.js +0 -0
  193. /package/dist/{src → legacy-root-azm/src}/frontend/parseImm.d.ts +0 -0
  194. /package/dist/{src → legacy-root-azm/src}/frontend/parseImm.js +0 -0
  195. /package/dist/{src → legacy-root-azm/src}/frontend/parseLogicalLines.d.ts +0 -0
  196. /package/dist/{src → legacy-root-azm/src}/frontend/parseLogicalLines.js +0 -0
  197. /package/dist/{src → legacy-root-azm/src}/frontend/parseOp.d.ts +0 -0
  198. /package/dist/{src → legacy-root-azm/src}/frontend/parseOp.js +0 -0
  199. /package/dist/{src → legacy-root-azm/src}/frontend/parseOpHeader.d.ts +0 -0
  200. /package/dist/{src → legacy-root-azm/src}/frontend/parseOpHeader.js +0 -0
  201. /package/dist/{src → legacy-root-azm/src}/frontend/parseOperands.d.ts +0 -0
  202. /package/dist/{src → legacy-root-azm/src}/frontend/parseOperands.js +0 -0
  203. /package/dist/{src → legacy-root-azm/src}/frontend/parseParams.d.ts +0 -0
  204. /package/dist/{src → legacy-root-azm/src}/frontend/parseParams.js +0 -0
  205. /package/dist/{src → legacy-root-azm/src}/frontend/parseParserRecovery.d.ts +0 -0
  206. /package/dist/{src → legacy-root-azm/src}/frontend/parseParserRecovery.js +0 -0
  207. /package/dist/{src → legacy-root-azm/src}/frontend/parseParserShared.d.ts +0 -0
  208. /package/dist/{src → legacy-root-azm/src}/frontend/parseParserShared.js +0 -0
  209. /package/dist/{src → legacy-root-azm/src}/frontend/parseRawDataDirectiveStart.d.ts +0 -0
  210. /package/dist/{src → legacy-root-azm/src}/frontend/parseRawDataDirectiveStart.js +0 -0
  211. /package/dist/{src → legacy-root-azm/src}/frontend/parseRawDataDirectives.d.ts +0 -0
  212. /package/dist/{src → legacy-root-azm/src}/frontend/parseRawDataDirectives.js +0 -0
  213. /package/dist/{src → legacy-root-azm/src}/frontend/parseRecordFieldDecl.d.ts +0 -0
  214. /package/dist/{src → legacy-root-azm/src}/frontend/parseRecordFieldDecl.js +0 -0
  215. /package/dist/{src → legacy-root-azm/src}/frontend/parseSourceItemDispatch.d.ts +0 -0
  216. /package/dist/{src → legacy-root-azm/src}/frontend/parseSourceItemDispatch.js +0 -0
  217. /package/dist/{src → legacy-root-azm/src}/frontend/parseSourceItemTable.d.ts +0 -0
  218. /package/dist/{src → legacy-root-azm/src}/frontend/parseSourceItemTable.js +0 -0
  219. /package/dist/{src → legacy-root-azm/src}/frontend/parseTopLevelCommon.d.ts +0 -0
  220. /package/dist/{src → legacy-root-azm/src}/frontend/parseTopLevelCommon.js +0 -0
  221. /package/dist/{src → legacy-root-azm/src}/frontend/parseTypes.d.ts +0 -0
  222. /package/dist/{src → legacy-root-azm/src}/frontend/parseTypes.js +0 -0
  223. /package/dist/{src → legacy-root-azm/src}/frontend/parser.d.ts +0 -0
  224. /package/dist/{src → legacy-root-azm/src}/frontend/parser.js +0 -0
  225. /package/dist/{src → legacy-root-azm/src}/frontend/source.d.ts +0 -0
  226. /package/dist/{src → legacy-root-azm/src}/frontend/source.js +0 -0
  227. /package/dist/{src → legacy-root-azm/src}/frontend/sourceExtensions.d.ts +0 -0
  228. /package/dist/{src → legacy-root-azm/src}/frontend/sourceExtensions.js +0 -0
  229. /package/dist/{src → legacy-root-azm/src}/lintCaseStyle.d.ts +0 -0
  230. /package/dist/{src → legacy-root-azm/src}/lintCaseStyle.js +0 -0
  231. /package/dist/{src → legacy-root-azm/src}/lowering/asmDirectiveLowering.d.ts +0 -0
  232. /package/dist/{src → legacy-root-azm/src}/lowering/asmDirectiveLowering.js +0 -0
  233. /package/dist/{src → legacy-root-azm/src}/lowering/asmDirectiveTraversal.d.ts +0 -0
  234. /package/dist/{src → legacy-root-azm/src}/lowering/asmDirectiveTraversal.js +0 -0
  235. /package/dist/{src → legacy-root-azm/src}/lowering/asmEquResolution.d.ts +0 -0
  236. /package/dist/{src → legacy-root-azm/src}/lowering/asmEquResolution.js +0 -0
  237. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionLdHelpers.d.ts +0 -0
  238. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionLdHelpers.js +0 -0
  239. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionLowering.d.ts +0 -0
  240. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionLowering.js +0 -0
  241. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionStream.d.ts +0 -0
  242. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionStream.js +0 -0
  243. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringBranchCall.d.ts +0 -0
  244. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringBranchCall.js +0 -0
  245. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringHost.d.ts +0 -0
  246. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringHost.js +0 -0
  247. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringLd.d.ts +0 -0
  248. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringLd.js +0 -0
  249. /package/dist/{src → legacy-root-azm/src}/lowering/asmRangeLowering.d.ts +0 -0
  250. /package/dist/{src → legacy-root-azm/src}/lowering/asmRangeLowering.js +0 -0
  251. /package/dist/{src → legacy-root-azm/src}/lowering/asmRawDataLowering.d.ts +0 -0
  252. /package/dist/{src → legacy-root-azm/src}/lowering/asmRawDataLowering.js +0 -0
  253. /package/dist/{src → legacy-root-azm/src}/lowering/asmSourceEmitter.d.ts +0 -0
  254. /package/dist/{src → legacy-root-azm/src}/lowering/asmSourceEmitter.js +0 -0
  255. /package/dist/{src → legacy-root-azm/src}/lowering/asmSourceInstructionLowering.d.ts +0 -0
  256. /package/dist/{src → legacy-root-azm/src}/lowering/asmSourceInstructionLowering.js +0 -0
  257. /package/dist/{src → legacy-root-azm/src}/lowering/asmUtils.d.ts +0 -0
  258. /package/dist/{src → legacy-root-azm/src}/lowering/asmUtils.js +0 -0
  259. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerFlowSetup.d.ts +0 -0
  260. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerFlowSetup.js +0 -0
  261. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringContext.d.ts +0 -0
  262. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringContext.js +0 -0
  263. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringContextSplit.d.ts +0 -0
  264. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringContextSplit.js +0 -0
  265. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringPhases.d.ts +0 -0
  266. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringPhases.js +0 -0
  267. /package/dist/{src → legacy-root-azm/src}/lowering/bytePlacement.d.ts +0 -0
  268. /package/dist/{src → legacy-root-azm/src}/lowering/bytePlacement.js +0 -0
  269. /package/dist/{src → legacy-root-azm/src}/lowering/capabilities.d.ts +0 -0
  270. /package/dist/{src → legacy-root-azm/src}/lowering/capabilities.js +0 -0
  271. /package/dist/{src → legacy-root-azm/src}/lowering/eaResolution.d.ts +0 -0
  272. /package/dist/{src → legacy-root-azm/src}/lowering/eaResolution.js +0 -0
  273. /package/dist/{src → legacy-root-azm/src}/lowering/emissionCore.d.ts +0 -0
  274. /package/dist/{src → legacy-root-azm/src}/lowering/emissionCore.js +0 -0
  275. /package/dist/{src → legacy-root-azm/src}/lowering/emit.d.ts +0 -0
  276. /package/dist/{src → legacy-root-azm/src}/lowering/emit.js +0 -0
  277. /package/dist/{src → legacy-root-azm/src}/lowering/emitContextBuilder.d.ts +0 -0
  278. /package/dist/{src → legacy-root-azm/src}/lowering/emitContextBuilder.js +0 -0
  279. /package/dist/{src → legacy-root-azm/src}/lowering/emitFinalization.d.ts +0 -0
  280. /package/dist/{src → legacy-root-azm/src}/lowering/emitFinalization.js +0 -0
  281. /package/dist/{src → legacy-root-azm/src}/lowering/emitFinalizationSetup.d.ts +0 -0
  282. /package/dist/{src → legacy-root-azm/src}/lowering/emitFinalizationSetup.js +0 -0
  283. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -0
  284. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1BuildProgramLoweringContext.js +0 -0
  285. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Helpers.d.ts +0 -0
  286. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Helpers.js +0 -0
  287. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Types.d.ts +0 -0
  288. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Types.js +0 -0
  289. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1WirePipeline.d.ts +0 -0
  290. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1WirePipeline.js +0 -0
  291. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Workspace.d.ts +0 -0
  292. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Workspace.js +0 -0
  293. /package/dist/{src → legacy-root-azm/src}/lowering/emitPipeline.d.ts +0 -0
  294. /package/dist/{src → legacy-root-azm/src}/lowering/emitPipeline.js +0 -0
  295. /package/dist/{src → legacy-root-azm/src}/lowering/emitProgramContext.d.ts +0 -0
  296. /package/dist/{src → legacy-root-azm/src}/lowering/emitProgramContext.js +0 -0
  297. /package/dist/{src → legacy-root-azm/src}/lowering/emitState.d.ts +0 -0
  298. /package/dist/{src → legacy-root-azm/src}/lowering/emitState.js +0 -0
  299. /package/dist/{src → legacy-root-azm/src}/lowering/fixupBaseResolution.d.ts +0 -0
  300. /package/dist/{src → legacy-root-azm/src}/lowering/fixupBaseResolution.js +0 -0
  301. /package/dist/{src → legacy-root-azm/src}/lowering/fixupEmission.d.ts +0 -0
  302. /package/dist/{src → legacy-root-azm/src}/lowering/fixupEmission.js +0 -0
  303. /package/dist/{src → legacy-root-azm/src}/lowering/immMath.d.ts +0 -0
  304. /package/dist/{src → legacy-root-azm/src}/lowering/immMath.js +0 -0
  305. /package/dist/{src → legacy-root-azm/src}/lowering/inputAssets.d.ts +0 -0
  306. /package/dist/{src → legacy-root-azm/src}/lowering/inputAssets.js +0 -0
  307. /package/dist/{src → legacy-root-azm/src}/lowering/ldEncoding.d.ts +0 -0
  308. /package/dist/{src → legacy-root-azm/src}/lowering/ldEncoding.js +0 -0
  309. /package/dist/{src → legacy-root-azm/src}/lowering/ldEncodingRegMemHelpers.d.ts +0 -0
  310. /package/dist/{src → legacy-root-azm/src}/lowering/ldEncodingRegMemHelpers.js +0 -0
  311. /package/dist/{src → legacy-root-azm/src}/lowering/ldFormSelection.d.ts +0 -0
  312. /package/dist/{src → legacy-root-azm/src}/lowering/ldFormSelection.js +0 -0
  313. /package/dist/{src → legacy-root-azm/src}/lowering/ldLowering.d.ts +0 -0
  314. /package/dist/{src → legacy-root-azm/src}/lowering/ldLowering.js +0 -0
  315. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmByteEmission.d.ts +0 -0
  316. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmByteEmission.js +0 -0
  317. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmPlacement.d.ts +0 -0
  318. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmPlacement.js +0 -0
  319. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmStreamRecording.d.ts +0 -0
  320. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmStreamRecording.js +0 -0
  321. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmTypes.d.ts +0 -0
  322. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmTypes.js +0 -0
  323. /package/dist/{src → legacy-root-azm/src}/lowering/loweredFormat.d.ts +0 -0
  324. /package/dist/{src → legacy-root-azm/src}/lowering/loweredFormat.js +0 -0
  325. /package/dist/{src → legacy-root-azm/src}/lowering/loweredItemSize.d.ts +0 -0
  326. /package/dist/{src → legacy-root-azm/src}/lowering/loweredItemSize.js +0 -0
  327. /package/dist/{src → legacy-root-azm/src}/lowering/loweringDiagnostics.d.ts +0 -0
  328. /package/dist/{src → legacy-root-azm/src}/lowering/loweringDiagnostics.js +0 -0
  329. /package/dist/{src → legacy-root-azm/src}/lowering/loweringTypes.d.ts +0 -0
  330. /package/dist/{src → legacy-root-azm/src}/lowering/loweringTypes.js +0 -0
  331. /package/dist/{src → legacy-root-azm/src}/lowering/opCandidateRegistry.d.ts +0 -0
  332. /package/dist/{src → legacy-root-azm/src}/lowering/opCandidateRegistry.js +0 -0
  333. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionExecution.d.ts +0 -0
  334. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionExecution.js +0 -0
  335. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionOrchestration.d.ts +0 -0
  336. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionOrchestration.js +0 -0
  337. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionStream.d.ts +0 -0
  338. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionStream.js +0 -0
  339. /package/dist/{src → legacy-root-azm/src}/lowering/opMatching.d.ts +0 -0
  340. /package/dist/{src → legacy-root-azm/src}/lowering/opMatching.js +0 -0
  341. /package/dist/{src → legacy-root-azm/src}/lowering/opSubstitution.d.ts +0 -0
  342. /package/dist/{src → legacy-root-azm/src}/lowering/opSubstitution.js +0 -0
  343. /package/dist/{src → legacy-root-azm/src}/lowering/prescanTypes.d.ts +0 -0
  344. /package/dist/{src → legacy-root-azm/src}/lowering/prescanTypes.js +0 -0
  345. /package/dist/{src → legacy-root-azm/src}/lowering/programLowering.d.ts +0 -0
  346. /package/dist/{src → legacy-root-azm/src}/lowering/programLowering.js +0 -0
  347. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringDeclarations.d.ts +0 -0
  348. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringDeclarations.js +0 -0
  349. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringFinalize.d.ts +0 -0
  350. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringFinalize.js +0 -0
  351. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringTraversal.d.ts +0 -0
  352. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringTraversal.js +0 -0
  353. /package/dist/{src → legacy-root-azm/src}/lowering/programPrescan.d.ts +0 -0
  354. /package/dist/{src → legacy-root-azm/src}/lowering/programPrescan.js +0 -0
  355. /package/dist/{src → legacy-root-azm/src}/lowering/traceFormat.d.ts +0 -0
  356. /package/dist/{src → legacy-root-azm/src}/lowering/traceFormat.js +0 -0
  357. /package/dist/{src → legacy-root-azm/src}/packageInfo.d.ts +0 -0
  358. /package/dist/{src → legacy-root-azm/src}/packageInfo.js +0 -0
  359. /package/dist/{src → legacy-root-azm/src}/pathCompare.d.ts +0 -0
  360. /package/dist/{src → legacy-root-azm/src}/pathCompare.js +0 -0
  361. /package/dist/{src → legacy-root-azm/src}/pipeline.js +0 -0
  362. /package/dist/{src → legacy-root-azm/src}/registerCare/analyze.d.ts +0 -0
  363. /package/dist/{src → legacy-root-azm/src}/registerCare/analyze.js +0 -0
  364. /package/dist/{src → legacy-root-azm/src}/registerCare/annotate.d.ts +0 -0
  365. /package/dist/{src → legacy-root-azm/src}/registerCare/annotate.js +0 -0
  366. /package/dist/{src → legacy-root-azm/src}/registerCare/boundaryHints.d.ts +0 -0
  367. /package/dist/{src → legacy-root-azm/src}/registerCare/boundaryHints.js +0 -0
  368. /package/dist/{src → legacy-root-azm/src}/registerCare/carriers.d.ts +0 -0
  369. /package/dist/{src → legacy-root-azm/src}/registerCare/carriers.js +0 -0
  370. /package/dist/{src → legacy-root-azm/src}/registerCare/controlFlow.d.ts +0 -0
  371. /package/dist/{src → legacy-root-azm/src}/registerCare/controlFlow.js +0 -0
  372. /package/dist/{src → legacy-root-azm/src}/registerCare/fix.d.ts +0 -0
  373. /package/dist/{src → legacy-root-azm/src}/registerCare/fix.js +0 -0
  374. /package/dist/{src → legacy-root-azm/src}/registerCare/liveness.d.ts +0 -0
  375. /package/dist/{src → legacy-root-azm/src}/registerCare/liveness.js +0 -0
  376. /package/dist/{src → legacy-root-azm/src}/registerCare/profiles.d.ts +0 -0
  377. /package/dist/{src → legacy-root-azm/src}/registerCare/profiles.js +0 -0
  378. /package/dist/{src → legacy-root-azm/src}/registerCare/programModel.d.ts +0 -0
  379. /package/dist/{src → legacy-root-azm/src}/registerCare/programModel.js +0 -0
  380. /package/dist/{src → legacy-root-azm/src}/registerCare/report.d.ts +0 -0
  381. /package/dist/{src → legacy-root-azm/src}/registerCare/report.js +0 -0
  382. /package/dist/{src → legacy-root-azm/src}/registerCare/smartComments.d.ts +0 -0
  383. /package/dist/{src → legacy-root-azm/src}/registerCare/smartComments.js +0 -0
  384. /package/dist/{src → legacy-root-azm/src}/registerCare/sourceText.d.ts +0 -0
  385. /package/dist/{src → legacy-root-azm/src}/registerCare/sourceText.js +0 -0
  386. /package/dist/{src → legacy-root-azm/src}/registerCare/summary.d.ts +0 -0
  387. /package/dist/{src → legacy-root-azm/src}/registerCare/summary.js +0 -0
  388. /package/dist/{src → legacy-root-azm/src}/registerCare/types.d.ts +0 -0
  389. /package/dist/{src → legacy-root-azm/src}/registerCare/types.js +0 -0
  390. /package/dist/{src → legacy-root-azm/src}/semantics/declVisitor.d.ts +0 -0
  391. /package/dist/{src → legacy-root-azm/src}/semantics/declVisitor.js +0 -0
  392. /package/dist/{src → legacy-root-azm/src}/semantics/env.d.ts +0 -0
  393. /package/dist/{src → legacy-root-azm/src}/semantics/env.js +0 -0
  394. /package/dist/{src → legacy-root-azm/src}/semantics/layout.d.ts +0 -0
  395. /package/dist/{src → legacy-root-azm/src}/semantics/layout.js +0 -0
  396. /package/dist/{src → legacy-root-azm/src}/semantics/layoutCastFold.d.ts +0 -0
  397. /package/dist/{src → legacy-root-azm/src}/semantics/layoutCastFold.js +0 -0
  398. /package/dist/{src → legacy-root-azm/src}/semantics/semanticsDiagnostics.d.ts +0 -0
  399. /package/dist/{src → legacy-root-azm/src}/semantics/semanticsDiagnostics.js +0 -0
  400. /package/dist/{src → legacy-root-azm/src}/semantics/typeQueries.d.ts +0 -0
  401. /package/dist/{src → legacy-root-azm/src}/semantics/typeQueries.js +0 -0
  402. /package/dist/{src → legacy-root-azm/src}/sourceIncludeExpansion.d.ts +0 -0
  403. /package/dist/{src → legacy-root-azm/src}/sourceIncludeExpansion.js +0 -0
  404. /package/dist/{src → legacy-root-azm/src}/sourceIncludePaths.d.ts +0 -0
  405. /package/dist/{src → legacy-root-azm/src}/sourceIncludePaths.js +0 -0
  406. /package/dist/{src → legacy-root-azm/src}/sourceLoader.d.ts +0 -0
  407. /package/dist/{src → legacy-root-azm/src}/sourceLoader.js +0 -0
  408. /package/dist/{src → legacy-root-azm/src}/z80/encodeAlu.d.ts +0 -0
  409. /package/dist/{src → legacy-root-azm/src}/z80/encodeAlu.js +0 -0
  410. /package/dist/{src → legacy-root-azm/src}/z80/encodeBitOps.d.ts +0 -0
  411. /package/dist/{src → legacy-root-azm/src}/z80/encodeBitOps.js +0 -0
  412. /package/dist/{src → legacy-root-azm/src}/z80/encodeContext.d.ts +0 -0
  413. /package/dist/{src → legacy-root-azm/src}/z80/encodeContext.js +0 -0
  414. /package/dist/{src → legacy-root-azm/src}/z80/encodeControl.d.ts +0 -0
  415. /package/dist/{src → legacy-root-azm/src}/z80/encodeControl.js +0 -0
  416. /package/dist/{src → legacy-root-azm/src}/z80/encodeCoreOps.d.ts +0 -0
  417. /package/dist/{src → legacy-root-azm/src}/z80/encodeCoreOps.js +0 -0
  418. /package/dist/{src → legacy-root-azm/src}/z80/encodeIo.d.ts +0 -0
  419. /package/dist/{src → legacy-root-azm/src}/z80/encodeIo.js +0 -0
  420. /package/dist/{src → legacy-root-azm/src}/z80/encodeLd.d.ts +0 -0
  421. /package/dist/{src → legacy-root-azm/src}/z80/encodeLd.js +0 -0
  422. /package/dist/{src → legacy-root-azm/src}/z80/encoderRegistry.d.ts +0 -0
  423. /package/dist/{src → legacy-root-azm/src}/z80/encoderRegistry.js +0 -0
package/README.md CHANGED
@@ -1,47 +1,54 @@
1
1
  # AZM
2
2
 
3
- AZM is a Z80 assembler in the ASM80 tradition: plain assembly input, predictable
4
- object output, and modern safety tooling for projects that still want to see the
5
- machine.
3
+ AZM is the Z80 assembler used by the Debug80 toolchain. It assembles plain
4
+ `.asm` and `.z80` source into machine-code artifacts for hardware, emulators,
5
+ and Debug80: Intel HEX, flat binary, listings, Debug80 maps, and optional
6
+ ASM80-compatible lowered source.
6
7
 
7
- The project goal is a good assembler, not a high-level language. AZM keeps
8
- labels, directives, instructions, branches, data bytes, register effects, and
9
- generated metadata visible in source and artifacts.
8
+ The user manual is the AZM book in the Debug80 documentation site:
10
9
 
11
- ## Product boundary
10
+ [AZM Assembler Manual](https://jhlagado.github.io/debug80-docs/azm-book/book4/)
12
11
 
13
- AZM keeps:
12
+ ## What AZM Is
14
13
 
15
- - ASM80-style `.asm` / `.z80` source as the input baseline
16
- - `.asmi` external interface files for register-care contracts
14
+ AZM is an assembler, not a high-level language or macro preprocessor. Source is
15
+ intended to stay close to the machine: labels, directives, instructions, data,
16
+ register contracts, and generated artifacts remain visible.
17
+
18
+ AZM keeps the parts of the original assembler that matter for real Z80 work:
19
+
20
+ - Z80 instructions with case-insensitive mnemonics and registers
21
+ - case-sensitive labels and symbols
22
+ - global labels, with `@NAME:` labels marking routine entries for register-care
23
+ analysis
24
+ - canonical dotted directives such as `.org`, `.equ`, `.db`, `.dw`, and `.ds`
25
+ - compatibility spelling for common undotted directive heads such as `ORG`,
26
+ `EQU`, `DB`, `DW`, and `DS`
17
27
  - textual `.include`
18
- - directive aliases for importing common assembler spellings
19
- - register-care analysis, compact AZMDoc comments, and `.asmi` external
20
- contracts
21
- - AST-level `op` extensions
22
- - enums as constant namespaces
28
+ - register-care contracts, AZMDoc comments, and `.asmi` external interfaces
29
+ - `op` definitions for structured inline instruction idioms
30
+ - enums and qualified enum constants
23
31
  - `.type` / `.union` layout metadata
24
32
  - compile-time layout constants such as `sizeof(...)`, `offset(...)`, scalar
25
33
  layout sizes, and constant-only layout casts
26
- - assembler data directives including `.db`, `.dw`, `.ds`, `.cstr`, `.pstr`,
27
- and `.istr`
34
+ - data directives including `.db`, `.dw`, `.ds`, `.cstr`, `.pstr`, and `.istr`
28
35
 
29
- AZM `.asm` and `.z80` source rejects old ZAX high-level features such as
30
- modules/imports, `func`, formal arguments, locals, typed assignment/storage
31
- lowering, structured control, generated frames, typed storage blocks, and named
32
- section blocks. Those inherited paths are removal work, not product
33
- compatibility.
36
+ AZM does not implement text macros, local labels, modules/imports, `func`,
37
+ formal arguments, generated stack frames, structured control flow, typed
38
+ assignment lowering, hidden typed load/store lowering, or named section blocks.
39
+ Those features belong to older high-level ZAX-era code paths, not current AZM
40
+ source.
34
41
 
35
42
  ## Install
36
43
 
37
- Requires Node.js 20+.
44
+ AZM requires Node.js 20 or newer.
38
45
 
39
46
  ```sh
40
47
  npm install -g @jhlagado/azm
41
- azm path/to/program.z80
48
+ azm path/to/program.asm
42
49
  ```
43
50
 
44
- From a checkout, use the local CLI after building:
51
+ From a checkout, build first and then use the local CLI:
45
52
 
46
53
  ```sh
47
54
  npm ci
@@ -49,55 +56,70 @@ npm run build
49
56
  npm run azm -- examples/hello.asm
50
57
  ```
51
58
 
52
- Output files for each compiled source:
59
+ ## Command Line
53
60
 
54
- | Extension | Contents |
55
- | ---------- | ------------------------- |
56
- | `.hex` | Intel HEX |
57
- | `.bin` | Flat binary |
58
- | `.lst` | Byte dump plus symbols |
59
- | `.z80` | Plain Z80 source emission |
60
- | `.d8.json` | Debug80 map |
61
+ Basic use writes the default artifact set next to the source file:
61
62
 
62
- Small input example:
63
+ ```sh
64
+ azm program.asm
65
+ ```
63
66
 
64
- ```asm
65
- ORG 0100H
66
- START:
67
- LD A,42
68
- RET
67
+ Write a specific primary output:
68
+
69
+ ```sh
70
+ azm --type bin --output build/program.bin program.asm
71
+ azm --type hex --output build/program.hex program.asm
69
72
  ```
70
73
 
71
- Compile a binary and listing:
74
+ Add include search paths:
72
75
 
73
76
  ```sh
74
- azm --type bin --output build/start.bin start.asm
77
+ azm -I include -I vendor program.asm
78
+ ```
79
+
80
+ Run register-care analysis:
81
+
82
+ ```sh
83
+ azm --rc audit --reg-report program.asm
84
+ azm --rc error --interface monitor.asmi program.asm
85
+ ```
86
+
87
+ See [docs/reference/cli.md](docs/reference/cli.md) for the complete option
88
+ reference.
89
+
90
+ ## Output Artifacts
91
+
92
+ By default, AZM writes the requested primary output plus useful side artifacts
93
+ using the same base path.
94
+
95
+ | Extension | Contents |
96
+ | -------------- | --------------------------------------------- |
97
+ | `.hex` | Intel HEX |
98
+ | `.bin` | flat binary |
99
+ | `.lst` | listing with bytes and symbols |
100
+ | `.d8.json` | Debug80 map |
101
+ | `.z80` | ASM80-compatible lowered source when enabled |
102
+ | `.regcare.txt` | register-care report when enabled |
103
+ | `.asmi` | inferred register-care interface when enabled |
104
+
105
+ The `.z80` output is a generated compatibility artifact for ASM80-style
106
+ workflows and comparison tooling. BIN, HEX, listings, Debug80 maps, and
107
+ register-care reports are the normal production outputs.
108
+
109
+ ## Small Example
110
+
111
+ ```asm
112
+ .org 0100H
113
+
114
+ @START:
115
+ ld a,42
116
+ ret
75
117
  ```
76
118
 
77
- ```text
78
- azm [options] <entry.asm|entry.z80>
79
-
80
- Options:
81
- -o, --output <file> Primary output path (must match --type extension)
82
- -t, --type <type> Primary output type: hex|bin (default: hex)
83
- -n, --nolist Suppress .lst
84
- --nobin Suppress .bin
85
- --nohex Suppress .hex
86
- --nod8m Suppress .d8.json
87
- --asm80 Emit assembler-valid lowered source (.z80)
88
- --case-style <m> Case-style lint mode: off|upper|lower|consistent
89
- --rc <m> Register-care mode: off|audit|warn|error|strict
90
- --reg-report Emit .regcare.txt report
91
- --reg-interface Emit inferred register-care interface (.asmi)
92
- --fix Apply conservative register-care source fixes
93
- --contracts Update source AZM contract blocks in place
94
- --accept-out <r:c> Promote inferred output candidate while annotating
95
- --interface <file> Load register-care interface contracts
96
- --reg-profile <p> Register-care profile: mon3
97
- --aliases <file> Load project directive alias JSON (repeatable)
98
- -I, --include <dir> Add include search path (repeatable)
99
- -V, --version Print version
100
- -h, --help Show help
119
+ Compile it:
120
+
121
+ ```sh
122
+ azm --type bin --output build/start.bin start.asm
101
123
  ```
102
124
 
103
125
  ## Programmatic API
@@ -115,28 +137,39 @@ import { compile, defaultFormatWriters } from '@jhlagado/azm/compile';
115
137
 
116
138
  const result = await compile(
117
139
  '/abs/path/to/main.asm',
118
- { outputType: 'hex' },
140
+ {
141
+ outputType: 'hex',
142
+ sourceRoot: '/abs/path/to/project',
143
+ d8mInputs: {
144
+ hex: '/abs/path/to/project/build/main.hex',
145
+ listing: '/abs/path/to/project/build/main.lst',
146
+ },
147
+ },
119
148
  { formats: defaultFormatWriters },
120
149
  );
121
150
 
122
151
  console.log(result.diagnostics);
123
152
  ```
124
153
 
125
- See [docs/reference/cli.md](docs/reference/cli.md) for the full CLI reference
126
- and [docs/reference/tooling-api.md](docs/reference/tooling-api.md) for the
127
- current API notes.
154
+ See [docs/reference/tooling-api.md](docs/reference/tooling-api.md) for current
155
+ API notes.
128
156
 
129
- ## Verification
157
+ ## Development
130
158
 
131
159
  Useful local verification lanes:
132
160
 
133
161
  ```sh
134
162
  npm run build
163
+ npm run typecheck
164
+ npm run lint
135
165
  npm run test:azm:alpha
136
166
  npm run test:azm:corpus
137
167
  npm test
138
168
  ```
139
169
 
170
+ The live source map is maintained in
171
+ [docs/reference/source-overview.md](docs/reference/source-overview.md).
172
+
140
173
  ## License
141
174
 
142
175
  GPL-3.0-only. See [LICENSE](LICENSE).
@@ -1,6 +1,6 @@
1
1
  import type { FormatWriters } from './types.js';
2
2
  /**
3
- * Default in-memory artifact writers for PR1.
3
+ * Default in-memory artifact writers.
4
4
  *
5
5
  * These writers implement the `FormatWriters` contract and return artifacts without writing to disk.
6
6
  */
@@ -4,7 +4,7 @@ import { writeHex } from './writeHex.js';
4
4
  import { writeListing } from './writeListing.js';
5
5
  import { writeAsm80 } from './writeAsm80.js';
6
6
  /**
7
- * Default in-memory artifact writers for PR1.
7
+ * Default in-memory artifact writers.
8
8
  *
9
9
  * These writers implement the `FormatWriters` contract and return artifacts without writing to disk.
10
10
  */
@@ -68,14 +68,10 @@ export interface WriteHexOptions {
68
68
  */
69
69
  lineEnding?: '\n' | '\r\n';
70
70
  }
71
- /**
72
- * Options for BIN writing (reserved for future options).
73
- */
71
+ /** Options for BIN writing. */
74
72
  export interface WriteBinOptions {
75
73
  }
76
- /**
77
- * Options for D8M writing (reserved for future options).
78
- */
74
+ /** Options for D8M writing. */
79
75
  export interface WriteD8mOptions {
80
76
  /**
81
77
  * Base directory used to normalize file paths in D8M symbol entries.
@@ -170,6 +166,64 @@ export interface D8mArtifact {
170
166
  path?: string;
171
167
  json: D8mJson;
172
168
  }
169
+ export type D8mSegmentKind = 'code' | 'data' | 'directive' | 'label' | 'macro' | 'unknown';
170
+ export type D8mSegmentConfidence = 'high' | 'medium' | 'low';
171
+ export interface D8mSegment {
172
+ start: number;
173
+ end: number;
174
+ lstLine: number;
175
+ /** 1-based original source line when known. */
176
+ line?: number;
177
+ kind: D8mSegmentKind;
178
+ confidence: D8mSegmentConfidence;
179
+ }
180
+ export type D8mSymbol = {
181
+ name: string;
182
+ kind: 'constant';
183
+ value: number;
184
+ file?: string;
185
+ line?: number;
186
+ scope?: 'global' | 'local';
187
+ } | {
188
+ name: string;
189
+ kind: 'label' | 'data' | 'unknown';
190
+ address: number;
191
+ file?: string;
192
+ line?: number;
193
+ scope?: 'global' | 'local';
194
+ size?: number;
195
+ };
196
+ export type D8mFileSymbol = {
197
+ name: string;
198
+ kind: 'constant';
199
+ value: number;
200
+ line?: number;
201
+ scope?: 'global' | 'local';
202
+ } | {
203
+ name: string;
204
+ kind: 'label' | 'data' | 'unknown';
205
+ address: number;
206
+ line?: number;
207
+ scope?: 'global' | 'local';
208
+ size?: number;
209
+ };
210
+ export interface D8mFileEntry {
211
+ segments?: D8mSegment[];
212
+ symbols?: D8mFileSymbol[];
213
+ }
214
+ export interface D8mGenerator {
215
+ name: 'azm';
216
+ tool: 'azm';
217
+ version?: string;
218
+ inputs?: {
219
+ entry?: string;
220
+ listing?: string;
221
+ hex?: string;
222
+ bin?: string;
223
+ };
224
+ entrySymbol?: string;
225
+ entryAddress?: number;
226
+ }
173
227
  /**
174
228
  * In-memory register-care audit report artifact.
175
229
  */
@@ -209,7 +263,13 @@ export type D8mJson = {
209
263
  format: 'd8-debug-map';
210
264
  version: 1;
211
265
  arch: 'z80';
212
- [key: string]: unknown;
266
+ addressWidth: 16;
267
+ endianness: 'little';
268
+ files: Record<string, D8mFileEntry>;
269
+ segments: AddressRange[];
270
+ fileList?: string[];
271
+ symbols: D8mSymbol[];
272
+ generator: D8mGenerator;
213
273
  };
214
274
  /**
215
275
  * Format writers used by the pipeline to turn emitted bytes/symbols into artifacts.
@@ -2,7 +2,6 @@ import type { EmittedByteMap, HexArtifact, SymbolEntry, WriteHexOptions } from '
2
2
  /**
3
3
  * Create an Intel HEX artifact from an emitted address->byte map.
4
4
  *
5
- * PR1 implementation note:
6
5
  * - Emits only type-00 data records and a type-01 EOF record.
7
6
  * - Does not emit extended address records (assumes 16-bit address space).
8
7
  */
@@ -9,7 +9,6 @@ function checksum(bytes) {
9
9
  /**
10
10
  * Create an Intel HEX artifact from an emitted address->byte map.
11
11
  *
12
- * PR1 implementation note:
13
12
  * - Emits only type-00 data records and a type-01 EOF record.
14
13
  * - Does not emit extended address records (assumes 16-bit address space).
15
14
  */
@@ -4,8 +4,6 @@ import type { RegisterCareMode } from './registerCare/types.js';
4
4
  export type CaseStyleMode = 'off' | 'upper' | 'lower' | 'consistent';
5
5
  /**
6
6
  * Options that influence compilation behavior and which artifacts are produced.
7
- *
8
- * PR1 implementation note: most options are accepted but only a subset is currently honored.
9
7
  */
10
8
  export interface CompilerOptions {
11
9
  /**
@@ -15,9 +13,9 @@ export interface CompilerOptions {
15
13
  * importing source file.
16
14
  */
17
15
  includeDirs?: string[];
18
- /** Primary output path used to derive sibling artifacts (future). */
16
+ /** Primary output path supplied by wrappers that derive sibling artifacts. */
19
17
  outputPath?: string;
20
- /** Primary output type (future). */
18
+ /** Primary output type selected by wrappers such as the CLI. */
21
19
  outputType?: 'hex' | 'bin';
22
20
  /**
23
21
  * Root used for source paths in debug maps.
@@ -42,7 +40,7 @@ export interface CompilerOptions {
42
40
  emitD8m?: boolean;
43
41
  /** Emit listing (`.lst`). */
44
42
  emitListing?: boolean;
45
- /** Emit ASM80-compatible lowered source (`.asm`). */
43
+ /** Emit ASM80-compatible lowered source (`.z80`). */
46
44
  emitAsm80?: boolean;
47
45
  /** Optional case-style lint mode for asm keywords/register tokens. */
48
46
  caseStyle?: CaseStyleMode;
@@ -0,0 +1,3 @@
1
+ import type { AsmInstructionNode } from '../frontend/ast.js';
2
+ import type { InstructionEffect } from '../registerCare/types.js';
3
+ export declare function getZ80InstructionEffect(inst: AsmInstructionNode): InstructionEffect;