@jhlagado/azm 0.1.0 → 0.2.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 (412) hide show
  1. package/README.md +9 -1
  2. package/dist/{src → legacy-root-azm/src}/compile.js +12 -1
  3. package/dist/{src → legacy-root-azm/src}/formats/index.d.ts +1 -1
  4. package/dist/{src → legacy-root-azm/src}/formats/index.js +1 -1
  5. package/dist/{src → legacy-root-azm/src}/formats/types.d.ts +82 -7
  6. package/dist/{src → legacy-root-azm/src}/formats/writeD8m.js +17 -11
  7. package/dist/{src → legacy-root-azm/src}/formats/writeHex.d.ts +0 -1
  8. package/dist/{src → legacy-root-azm/src}/formats/writeHex.js +0 -1
  9. package/dist/legacy-root-azm/src/packageInfo.d.ts +1 -0
  10. package/dist/legacy-root-azm/src/packageInfo.js +15 -0
  11. package/dist/{src → legacy-root-azm/src}/pipeline.d.ts +18 -5
  12. package/dist/legacy-root-azm/src/z80/effects.d.ts +3 -0
  13. package/dist/legacy-root-azm/src/z80/effects.js +516 -0
  14. package/dist/legacy-root-azm/src/z80/encode.d.ts +10 -0
  15. package/dist/legacy-root-azm/src/z80/encode.js +412 -0
  16. package/dist/src/api-compile.d.ts +49 -8
  17. package/dist/src/api-compile.js +313 -3
  18. package/dist/src/api-tooling.d.ts +7 -25
  19. package/dist/src/api-tooling.js +3 -21
  20. package/dist/src/assembly/address-planning.d.ts +19 -0
  21. package/dist/src/assembly/address-planning.js +266 -0
  22. package/dist/src/assembly/assemble-program.d.ts +13 -0
  23. package/dist/src/assembly/assemble-program.js +34 -0
  24. package/dist/src/assembly/fixup-emission.d.ts +10 -0
  25. package/dist/src/assembly/fixup-emission.js +247 -0
  26. package/dist/src/assembly/placement.d.ts +26 -0
  27. package/dist/src/assembly/placement.js +79 -0
  28. package/dist/src/assembly/program-emission.d.ts +13 -0
  29. package/dist/src/assembly/program-emission.js +267 -0
  30. package/dist/src/cli/parse-args.d.ts +29 -0
  31. package/dist/src/cli/parse-args.js +372 -0
  32. package/dist/src/cli/run.d.ts +2 -0
  33. package/dist/src/cli/run.js +35 -0
  34. package/dist/src/cli/write-artifacts.d.ts +21 -0
  35. package/dist/src/cli/write-artifacts.js +175 -0
  36. package/dist/src/cli.d.ts +1 -29
  37. package/dist/src/cli.js +20 -508
  38. package/dist/src/core/compile-artifacts.d.ts +26 -0
  39. package/dist/src/core/compile-artifacts.js +17 -0
  40. package/dist/src/core/compile.d.ts +26 -0
  41. package/dist/src/core/compile.js +164 -0
  42. package/dist/src/diagnostics/format.d.ts +4 -0
  43. package/dist/src/diagnostics/format.js +9 -0
  44. package/dist/src/expansion/op-expansion.d.ts +96 -0
  45. package/dist/src/expansion/op-expansion.js +912 -0
  46. package/dist/src/index.d.ts +14 -3
  47. package/dist/src/index.js +7 -2
  48. package/dist/src/model/diagnostic.d.ts +50 -0
  49. package/dist/src/model/diagnostic.js +29 -0
  50. package/dist/src/model/expression.d.ts +51 -0
  51. package/dist/src/model/expression.js +1 -0
  52. package/dist/src/model/fixup.d.ts +18 -0
  53. package/dist/src/model/fixup.js +1 -0
  54. package/dist/src/model/source-item.d.ts +81 -0
  55. package/dist/src/model/source-item.js +1 -0
  56. package/dist/src/model/symbol.d.ts +1 -0
  57. package/dist/src/model/symbol.js +1 -0
  58. package/dist/src/node/source-host.d.ts +19 -0
  59. package/dist/src/node/source-host.js +146 -0
  60. package/dist/src/outputs/hex.d.ts +1 -0
  61. package/dist/src/outputs/hex.js +75 -0
  62. package/dist/src/outputs/index.d.ts +3 -0
  63. package/dist/src/outputs/index.js +13 -0
  64. package/dist/src/outputs/range.d.ts +3 -0
  65. package/dist/src/outputs/range.js +31 -0
  66. package/dist/src/outputs/types.d.ts +182 -0
  67. package/dist/src/outputs/types.js +1 -0
  68. package/dist/src/outputs/write-asm80.d.ts +7 -0
  69. package/dist/src/outputs/write-asm80.js +549 -0
  70. package/dist/src/outputs/write-bin.d.ts +2 -0
  71. package/dist/src/outputs/write-bin.js +27 -0
  72. package/dist/src/outputs/write-d8.d.ts +2 -0
  73. package/dist/src/outputs/write-d8.js +257 -0
  74. package/dist/src/outputs/write-hex.d.ts +2 -0
  75. package/dist/src/outputs/write-hex.js +53 -0
  76. package/dist/src/outputs/write-listing.d.ts +2 -0
  77. package/dist/src/outputs/write-listing.js +79 -0
  78. package/dist/src/register-care/accept-output.d.ts +2 -0
  79. package/dist/src/register-care/accept-output.js +35 -0
  80. package/dist/src/register-care/analyze.d.ts +26 -0
  81. package/dist/src/register-care/analyze.js +87 -0
  82. package/dist/src/register-care/annotations.d.ts +8 -0
  83. package/dist/src/register-care/annotations.js +154 -0
  84. package/dist/src/register-care/boundaryHints.d.ts +2 -0
  85. package/dist/src/register-care/boundaryHints.js +11 -0
  86. package/dist/src/register-care/carriers.d.ts +2 -0
  87. package/dist/src/register-care/carriers.js +78 -0
  88. package/dist/src/register-care/controlFlow.d.ts +5 -0
  89. package/dist/src/register-care/controlFlow.js +38 -0
  90. package/dist/src/register-care/fix.d.ts +9 -0
  91. package/dist/src/register-care/fix.js +78 -0
  92. package/dist/src/register-care/liveness.d.ts +3 -0
  93. package/dist/src/register-care/liveness.js +189 -0
  94. package/dist/src/register-care/profiles.d.ts +9 -0
  95. package/dist/src/register-care/profiles.js +43 -0
  96. package/dist/src/register-care/programModel.d.ts +3 -0
  97. package/dist/src/register-care/programModel.js +122 -0
  98. package/dist/src/register-care/report.d.ts +4 -0
  99. package/dist/src/register-care/report.js +82 -0
  100. package/dist/src/register-care/smartComments.d.ts +5 -0
  101. package/dist/src/register-care/smartComments.js +243 -0
  102. package/dist/src/register-care/summaries.d.ts +12 -0
  103. package/dist/src/register-care/summaries.js +154 -0
  104. package/dist/src/{registerCare → register-care}/tooling.d.ts +7 -6
  105. package/dist/src/{registerCare → register-care}/tooling.js +17 -6
  106. package/dist/src/register-care/types.d.ts +165 -0
  107. package/dist/src/register-care/types.js +1 -0
  108. package/dist/src/semantics/expression-evaluation.d.ts +29 -0
  109. package/dist/src/semantics/expression-evaluation.js +409 -0
  110. package/dist/src/source/logical-lines.d.ts +7 -0
  111. package/dist/src/source/logical-lines.js +11 -0
  112. package/dist/src/source/source-file.d.ts +5 -0
  113. package/dist/src/source/source-file.js +3 -0
  114. package/dist/src/source/source-span.d.ts +5 -0
  115. package/dist/src/source/source-span.js +1 -0
  116. package/dist/src/source/strip-line-comment.d.ts +4 -0
  117. package/dist/src/source/strip-line-comment.js +27 -0
  118. package/dist/src/syntax/directive-aliases.d.ts +10 -0
  119. package/dist/src/syntax/directive-aliases.js +199 -0
  120. package/dist/src/syntax/parse-expression.d.ts +3 -0
  121. package/dist/src/syntax/parse-expression.js +551 -0
  122. package/dist/src/syntax/parse-line.d.ts +12 -0
  123. package/dist/src/syntax/parse-line.js +329 -0
  124. package/dist/src/tooling/api.d.ts +42 -0
  125. package/dist/src/tooling/api.js +42 -0
  126. package/dist/src/tooling/case-style.d.ts +8 -0
  127. package/dist/src/tooling/case-style.js +163 -0
  128. package/dist/src/z80/effects.d.ts +3 -3
  129. package/dist/src/z80/effects.js +349 -302
  130. package/dist/src/z80/encode.d.ts +2 -10
  131. package/dist/src/z80/encode.js +951 -374
  132. package/dist/src/z80/instruction.d.ts +226 -0
  133. package/dist/src/z80/instruction.js +1 -0
  134. package/dist/src/z80/parse-instruction.d.ts +7 -0
  135. package/dist/src/z80/parse-instruction.js +1068 -0
  136. package/docs/reference/cli.md +15 -0
  137. package/docs/reference/tooling-api.md +67 -3
  138. package/package.json +20 -3
  139. /package/dist/{src → legacy-root-azm/src}/analysis.d.ts +0 -0
  140. /package/dist/{src → legacy-root-azm/src}/analysis.js +0 -0
  141. /package/dist/{src → legacy-root-azm/src}/compile.d.ts +0 -0
  142. /package/dist/{src → legacy-root-azm/src}/compileShared.d.ts +0 -0
  143. /package/dist/{src → legacy-root-azm/src}/compileShared.js +0 -0
  144. /package/dist/{src → legacy-root-azm/src}/diagnosticTypes.d.ts +0 -0
  145. /package/dist/{src → legacy-root-azm/src}/diagnosticTypes.js +0 -0
  146. /package/dist/{src → legacy-root-azm/src}/formats/range.d.ts +0 -0
  147. /package/dist/{src → legacy-root-azm/src}/formats/range.js +0 -0
  148. /package/dist/{src → legacy-root-azm/src}/formats/types.js +0 -0
  149. /package/dist/{src → legacy-root-azm/src}/formats/writeAsm80.d.ts +0 -0
  150. /package/dist/{src → legacy-root-azm/src}/formats/writeAsm80.js +0 -0
  151. /package/dist/{src → legacy-root-azm/src}/formats/writeBin.d.ts +0 -0
  152. /package/dist/{src → legacy-root-azm/src}/formats/writeBin.js +0 -0
  153. /package/dist/{src → legacy-root-azm/src}/formats/writeD8m.d.ts +0 -0
  154. /package/dist/{src → legacy-root-azm/src}/formats/writeListing.d.ts +0 -0
  155. /package/dist/{src → legacy-root-azm/src}/formats/writeListing.js +0 -0
  156. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/asmLine.d.ts +0 -0
  157. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/asmLine.js +0 -0
  158. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/parseAsmRawValues.d.ts +0 -0
  159. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/parseAsmRawValues.js +0 -0
  160. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/quoteScan.d.ts +0 -0
  161. /package/dist/{src → legacy-root-azm/src}/frontend/asm80/quoteScan.js +0 -0
  162. /package/dist/{src → legacy-root-azm/src}/frontend/ast.d.ts +0 -0
  163. /package/dist/{src → legacy-root-azm/src}/frontend/ast.js +0 -0
  164. /package/dist/{src → legacy-root-azm/src}/frontend/directiveAliases.d.ts +0 -0
  165. /package/dist/{src → legacy-root-azm/src}/frontend/directiveAliases.js +0 -0
  166. /package/dist/{src → legacy-root-azm/src}/frontend/grammarData.d.ts +0 -0
  167. /package/dist/{src → legacy-root-azm/src}/frontend/grammarData.js +0 -0
  168. /package/dist/{src → legacy-root-azm/src}/frontend/immExprUtils.d.ts +0 -0
  169. /package/dist/{src → legacy-root-azm/src}/frontend/immExprUtils.js +0 -0
  170. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmFlatDirectiveLine.d.ts +0 -0
  171. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmFlatDirectiveLine.js +0 -0
  172. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmInstruction.d.ts +0 -0
  173. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmInstruction.js +0 -0
  174. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmStatements.d.ts +0 -0
  175. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmStatements.js +0 -0
  176. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmStream.d.ts +0 -0
  177. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmStream.js +0 -0
  178. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmTopLevel.d.ts +0 -0
  179. /package/dist/{src → legacy-root-azm/src}/frontend/parseAsmTopLevel.js +0 -0
  180. /package/dist/{src → legacy-root-azm/src}/frontend/parseDiagnostics.d.ts +0 -0
  181. /package/dist/{src → legacy-root-azm/src}/frontend/parseDiagnostics.js +0 -0
  182. /package/dist/{src → legacy-root-azm/src}/frontend/parseEnum.d.ts +0 -0
  183. /package/dist/{src → legacy-root-azm/src}/frontend/parseEnum.js +0 -0
  184. /package/dist/{src → legacy-root-azm/src}/frontend/parseImm.d.ts +0 -0
  185. /package/dist/{src → legacy-root-azm/src}/frontend/parseImm.js +0 -0
  186. /package/dist/{src → legacy-root-azm/src}/frontend/parseLogicalLines.d.ts +0 -0
  187. /package/dist/{src → legacy-root-azm/src}/frontend/parseLogicalLines.js +0 -0
  188. /package/dist/{src → legacy-root-azm/src}/frontend/parseOp.d.ts +0 -0
  189. /package/dist/{src → legacy-root-azm/src}/frontend/parseOp.js +0 -0
  190. /package/dist/{src → legacy-root-azm/src}/frontend/parseOpHeader.d.ts +0 -0
  191. /package/dist/{src → legacy-root-azm/src}/frontend/parseOpHeader.js +0 -0
  192. /package/dist/{src → legacy-root-azm/src}/frontend/parseOperands.d.ts +0 -0
  193. /package/dist/{src → legacy-root-azm/src}/frontend/parseOperands.js +0 -0
  194. /package/dist/{src → legacy-root-azm/src}/frontend/parseParams.d.ts +0 -0
  195. /package/dist/{src → legacy-root-azm/src}/frontend/parseParams.js +0 -0
  196. /package/dist/{src → legacy-root-azm/src}/frontend/parseParserRecovery.d.ts +0 -0
  197. /package/dist/{src → legacy-root-azm/src}/frontend/parseParserRecovery.js +0 -0
  198. /package/dist/{src → legacy-root-azm/src}/frontend/parseParserShared.d.ts +0 -0
  199. /package/dist/{src → legacy-root-azm/src}/frontend/parseParserShared.js +0 -0
  200. /package/dist/{src → legacy-root-azm/src}/frontend/parseRawDataDirectiveStart.d.ts +0 -0
  201. /package/dist/{src → legacy-root-azm/src}/frontend/parseRawDataDirectiveStart.js +0 -0
  202. /package/dist/{src → legacy-root-azm/src}/frontend/parseRawDataDirectives.d.ts +0 -0
  203. /package/dist/{src → legacy-root-azm/src}/frontend/parseRawDataDirectives.js +0 -0
  204. /package/dist/{src → legacy-root-azm/src}/frontend/parseRecordFieldDecl.d.ts +0 -0
  205. /package/dist/{src → legacy-root-azm/src}/frontend/parseRecordFieldDecl.js +0 -0
  206. /package/dist/{src → legacy-root-azm/src}/frontend/parseSourceItemDispatch.d.ts +0 -0
  207. /package/dist/{src → legacy-root-azm/src}/frontend/parseSourceItemDispatch.js +0 -0
  208. /package/dist/{src → legacy-root-azm/src}/frontend/parseSourceItemTable.d.ts +0 -0
  209. /package/dist/{src → legacy-root-azm/src}/frontend/parseSourceItemTable.js +0 -0
  210. /package/dist/{src → legacy-root-azm/src}/frontend/parseTopLevelCommon.d.ts +0 -0
  211. /package/dist/{src → legacy-root-azm/src}/frontend/parseTopLevelCommon.js +0 -0
  212. /package/dist/{src → legacy-root-azm/src}/frontend/parseTypes.d.ts +0 -0
  213. /package/dist/{src → legacy-root-azm/src}/frontend/parseTypes.js +0 -0
  214. /package/dist/{src → legacy-root-azm/src}/frontend/parser.d.ts +0 -0
  215. /package/dist/{src → legacy-root-azm/src}/frontend/parser.js +0 -0
  216. /package/dist/{src → legacy-root-azm/src}/frontend/source.d.ts +0 -0
  217. /package/dist/{src → legacy-root-azm/src}/frontend/source.js +0 -0
  218. /package/dist/{src → legacy-root-azm/src}/frontend/sourceExtensions.d.ts +0 -0
  219. /package/dist/{src → legacy-root-azm/src}/frontend/sourceExtensions.js +0 -0
  220. /package/dist/{src → legacy-root-azm/src}/lintCaseStyle.d.ts +0 -0
  221. /package/dist/{src → legacy-root-azm/src}/lintCaseStyle.js +0 -0
  222. /package/dist/{src → legacy-root-azm/src}/lowering/asmDirectiveLowering.d.ts +0 -0
  223. /package/dist/{src → legacy-root-azm/src}/lowering/asmDirectiveLowering.js +0 -0
  224. /package/dist/{src → legacy-root-azm/src}/lowering/asmDirectiveTraversal.d.ts +0 -0
  225. /package/dist/{src → legacy-root-azm/src}/lowering/asmDirectiveTraversal.js +0 -0
  226. /package/dist/{src → legacy-root-azm/src}/lowering/asmEquResolution.d.ts +0 -0
  227. /package/dist/{src → legacy-root-azm/src}/lowering/asmEquResolution.js +0 -0
  228. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionLdHelpers.d.ts +0 -0
  229. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionLdHelpers.js +0 -0
  230. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionLowering.d.ts +0 -0
  231. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionLowering.js +0 -0
  232. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionStream.d.ts +0 -0
  233. /package/dist/{src → legacy-root-azm/src}/lowering/asmInstructionStream.js +0 -0
  234. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringBranchCall.d.ts +0 -0
  235. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringBranchCall.js +0 -0
  236. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringHost.d.ts +0 -0
  237. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringHost.js +0 -0
  238. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringLd.d.ts +0 -0
  239. /package/dist/{src → legacy-root-azm/src}/lowering/asmLoweringLd.js +0 -0
  240. /package/dist/{src → legacy-root-azm/src}/lowering/asmRangeLowering.d.ts +0 -0
  241. /package/dist/{src → legacy-root-azm/src}/lowering/asmRangeLowering.js +0 -0
  242. /package/dist/{src → legacy-root-azm/src}/lowering/asmRawDataLowering.d.ts +0 -0
  243. /package/dist/{src → legacy-root-azm/src}/lowering/asmRawDataLowering.js +0 -0
  244. /package/dist/{src → legacy-root-azm/src}/lowering/asmSourceEmitter.d.ts +0 -0
  245. /package/dist/{src → legacy-root-azm/src}/lowering/asmSourceEmitter.js +0 -0
  246. /package/dist/{src → legacy-root-azm/src}/lowering/asmSourceInstructionLowering.d.ts +0 -0
  247. /package/dist/{src → legacy-root-azm/src}/lowering/asmSourceInstructionLowering.js +0 -0
  248. /package/dist/{src → legacy-root-azm/src}/lowering/asmUtils.d.ts +0 -0
  249. /package/dist/{src → legacy-root-azm/src}/lowering/asmUtils.js +0 -0
  250. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerFlowSetup.d.ts +0 -0
  251. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerFlowSetup.js +0 -0
  252. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringContext.d.ts +0 -0
  253. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringContext.js +0 -0
  254. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringContextSplit.d.ts +0 -0
  255. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringContextSplit.js +0 -0
  256. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringPhases.d.ts +0 -0
  257. /package/dist/{src → legacy-root-azm/src}/lowering/assemblerLoweringPhases.js +0 -0
  258. /package/dist/{src → legacy-root-azm/src}/lowering/bytePlacement.d.ts +0 -0
  259. /package/dist/{src → legacy-root-azm/src}/lowering/bytePlacement.js +0 -0
  260. /package/dist/{src → legacy-root-azm/src}/lowering/capabilities.d.ts +0 -0
  261. /package/dist/{src → legacy-root-azm/src}/lowering/capabilities.js +0 -0
  262. /package/dist/{src → legacy-root-azm/src}/lowering/eaResolution.d.ts +0 -0
  263. /package/dist/{src → legacy-root-azm/src}/lowering/eaResolution.js +0 -0
  264. /package/dist/{src → legacy-root-azm/src}/lowering/emissionCore.d.ts +0 -0
  265. /package/dist/{src → legacy-root-azm/src}/lowering/emissionCore.js +0 -0
  266. /package/dist/{src → legacy-root-azm/src}/lowering/emit.d.ts +0 -0
  267. /package/dist/{src → legacy-root-azm/src}/lowering/emit.js +0 -0
  268. /package/dist/{src → legacy-root-azm/src}/lowering/emitContextBuilder.d.ts +0 -0
  269. /package/dist/{src → legacy-root-azm/src}/lowering/emitContextBuilder.js +0 -0
  270. /package/dist/{src → legacy-root-azm/src}/lowering/emitFinalization.d.ts +0 -0
  271. /package/dist/{src → legacy-root-azm/src}/lowering/emitFinalization.js +0 -0
  272. /package/dist/{src → legacy-root-azm/src}/lowering/emitFinalizationSetup.d.ts +0 -0
  273. /package/dist/{src → legacy-root-azm/src}/lowering/emitFinalizationSetup.js +0 -0
  274. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -0
  275. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1BuildProgramLoweringContext.js +0 -0
  276. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Helpers.d.ts +0 -0
  277. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Helpers.js +0 -0
  278. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Types.d.ts +0 -0
  279. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Types.js +0 -0
  280. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1WirePipeline.d.ts +0 -0
  281. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1WirePipeline.js +0 -0
  282. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Workspace.d.ts +0 -0
  283. /package/dist/{src → legacy-root-azm/src}/lowering/emitPhase1Workspace.js +0 -0
  284. /package/dist/{src → legacy-root-azm/src}/lowering/emitPipeline.d.ts +0 -0
  285. /package/dist/{src → legacy-root-azm/src}/lowering/emitPipeline.js +0 -0
  286. /package/dist/{src → legacy-root-azm/src}/lowering/emitProgramContext.d.ts +0 -0
  287. /package/dist/{src → legacy-root-azm/src}/lowering/emitProgramContext.js +0 -0
  288. /package/dist/{src → legacy-root-azm/src}/lowering/emitState.d.ts +0 -0
  289. /package/dist/{src → legacy-root-azm/src}/lowering/emitState.js +0 -0
  290. /package/dist/{src → legacy-root-azm/src}/lowering/fixupBaseResolution.d.ts +0 -0
  291. /package/dist/{src → legacy-root-azm/src}/lowering/fixupBaseResolution.js +0 -0
  292. /package/dist/{src → legacy-root-azm/src}/lowering/fixupEmission.d.ts +0 -0
  293. /package/dist/{src → legacy-root-azm/src}/lowering/fixupEmission.js +0 -0
  294. /package/dist/{src → legacy-root-azm/src}/lowering/immMath.d.ts +0 -0
  295. /package/dist/{src → legacy-root-azm/src}/lowering/immMath.js +0 -0
  296. /package/dist/{src → legacy-root-azm/src}/lowering/inputAssets.d.ts +0 -0
  297. /package/dist/{src → legacy-root-azm/src}/lowering/inputAssets.js +0 -0
  298. /package/dist/{src → legacy-root-azm/src}/lowering/ldEncoding.d.ts +0 -0
  299. /package/dist/{src → legacy-root-azm/src}/lowering/ldEncoding.js +0 -0
  300. /package/dist/{src → legacy-root-azm/src}/lowering/ldEncodingRegMemHelpers.d.ts +0 -0
  301. /package/dist/{src → legacy-root-azm/src}/lowering/ldEncodingRegMemHelpers.js +0 -0
  302. /package/dist/{src → legacy-root-azm/src}/lowering/ldFormSelection.d.ts +0 -0
  303. /package/dist/{src → legacy-root-azm/src}/lowering/ldFormSelection.js +0 -0
  304. /package/dist/{src → legacy-root-azm/src}/lowering/ldLowering.d.ts +0 -0
  305. /package/dist/{src → legacy-root-azm/src}/lowering/ldLowering.js +0 -0
  306. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmByteEmission.d.ts +0 -0
  307. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmByteEmission.js +0 -0
  308. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmPlacement.d.ts +0 -0
  309. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmPlacement.js +0 -0
  310. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmStreamRecording.d.ts +0 -0
  311. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmStreamRecording.js +0 -0
  312. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmTypes.d.ts +0 -0
  313. /package/dist/{src → legacy-root-azm/src}/lowering/loweredAsmTypes.js +0 -0
  314. /package/dist/{src → legacy-root-azm/src}/lowering/loweredFormat.d.ts +0 -0
  315. /package/dist/{src → legacy-root-azm/src}/lowering/loweredFormat.js +0 -0
  316. /package/dist/{src → legacy-root-azm/src}/lowering/loweredItemSize.d.ts +0 -0
  317. /package/dist/{src → legacy-root-azm/src}/lowering/loweredItemSize.js +0 -0
  318. /package/dist/{src → legacy-root-azm/src}/lowering/loweringDiagnostics.d.ts +0 -0
  319. /package/dist/{src → legacy-root-azm/src}/lowering/loweringDiagnostics.js +0 -0
  320. /package/dist/{src → legacy-root-azm/src}/lowering/loweringTypes.d.ts +0 -0
  321. /package/dist/{src → legacy-root-azm/src}/lowering/loweringTypes.js +0 -0
  322. /package/dist/{src → legacy-root-azm/src}/lowering/opCandidateRegistry.d.ts +0 -0
  323. /package/dist/{src → legacy-root-azm/src}/lowering/opCandidateRegistry.js +0 -0
  324. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionExecution.d.ts +0 -0
  325. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionExecution.js +0 -0
  326. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionOrchestration.d.ts +0 -0
  327. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionOrchestration.js +0 -0
  328. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionStream.d.ts +0 -0
  329. /package/dist/{src → legacy-root-azm/src}/lowering/opExpansionStream.js +0 -0
  330. /package/dist/{src → legacy-root-azm/src}/lowering/opMatching.d.ts +0 -0
  331. /package/dist/{src → legacy-root-azm/src}/lowering/opMatching.js +0 -0
  332. /package/dist/{src → legacy-root-azm/src}/lowering/opSubstitution.d.ts +0 -0
  333. /package/dist/{src → legacy-root-azm/src}/lowering/opSubstitution.js +0 -0
  334. /package/dist/{src → legacy-root-azm/src}/lowering/prescanTypes.d.ts +0 -0
  335. /package/dist/{src → legacy-root-azm/src}/lowering/prescanTypes.js +0 -0
  336. /package/dist/{src → legacy-root-azm/src}/lowering/programLowering.d.ts +0 -0
  337. /package/dist/{src → legacy-root-azm/src}/lowering/programLowering.js +0 -0
  338. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringDeclarations.d.ts +0 -0
  339. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringDeclarations.js +0 -0
  340. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringFinalize.d.ts +0 -0
  341. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringFinalize.js +0 -0
  342. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringTraversal.d.ts +0 -0
  343. /package/dist/{src → legacy-root-azm/src}/lowering/programLoweringTraversal.js +0 -0
  344. /package/dist/{src → legacy-root-azm/src}/lowering/programPrescan.d.ts +0 -0
  345. /package/dist/{src → legacy-root-azm/src}/lowering/programPrescan.js +0 -0
  346. /package/dist/{src → legacy-root-azm/src}/lowering/traceFormat.d.ts +0 -0
  347. /package/dist/{src → legacy-root-azm/src}/lowering/traceFormat.js +0 -0
  348. /package/dist/{src → legacy-root-azm/src}/pathCompare.d.ts +0 -0
  349. /package/dist/{src → legacy-root-azm/src}/pathCompare.js +0 -0
  350. /package/dist/{src → legacy-root-azm/src}/pipeline.js +0 -0
  351. /package/dist/{src → legacy-root-azm/src}/registerCare/analyze.d.ts +0 -0
  352. /package/dist/{src → legacy-root-azm/src}/registerCare/analyze.js +0 -0
  353. /package/dist/{src → legacy-root-azm/src}/registerCare/annotate.d.ts +0 -0
  354. /package/dist/{src → legacy-root-azm/src}/registerCare/annotate.js +0 -0
  355. /package/dist/{src → legacy-root-azm/src}/registerCare/boundaryHints.d.ts +0 -0
  356. /package/dist/{src → legacy-root-azm/src}/registerCare/boundaryHints.js +0 -0
  357. /package/dist/{src → legacy-root-azm/src}/registerCare/carriers.d.ts +0 -0
  358. /package/dist/{src → legacy-root-azm/src}/registerCare/carriers.js +0 -0
  359. /package/dist/{src → legacy-root-azm/src}/registerCare/controlFlow.d.ts +0 -0
  360. /package/dist/{src → legacy-root-azm/src}/registerCare/controlFlow.js +0 -0
  361. /package/dist/{src → legacy-root-azm/src}/registerCare/fix.d.ts +0 -0
  362. /package/dist/{src → legacy-root-azm/src}/registerCare/fix.js +0 -0
  363. /package/dist/{src → legacy-root-azm/src}/registerCare/liveness.d.ts +0 -0
  364. /package/dist/{src → legacy-root-azm/src}/registerCare/liveness.js +0 -0
  365. /package/dist/{src → legacy-root-azm/src}/registerCare/profiles.d.ts +0 -0
  366. /package/dist/{src → legacy-root-azm/src}/registerCare/profiles.js +0 -0
  367. /package/dist/{src → legacy-root-azm/src}/registerCare/programModel.d.ts +0 -0
  368. /package/dist/{src → legacy-root-azm/src}/registerCare/programModel.js +0 -0
  369. /package/dist/{src → legacy-root-azm/src}/registerCare/report.d.ts +0 -0
  370. /package/dist/{src → legacy-root-azm/src}/registerCare/report.js +0 -0
  371. /package/dist/{src → legacy-root-azm/src}/registerCare/smartComments.d.ts +0 -0
  372. /package/dist/{src → legacy-root-azm/src}/registerCare/smartComments.js +0 -0
  373. /package/dist/{src → legacy-root-azm/src}/registerCare/sourceText.d.ts +0 -0
  374. /package/dist/{src → legacy-root-azm/src}/registerCare/sourceText.js +0 -0
  375. /package/dist/{src → legacy-root-azm/src}/registerCare/summary.d.ts +0 -0
  376. /package/dist/{src → legacy-root-azm/src}/registerCare/summary.js +0 -0
  377. /package/dist/{src → legacy-root-azm/src}/registerCare/types.d.ts +0 -0
  378. /package/dist/{src → legacy-root-azm/src}/registerCare/types.js +0 -0
  379. /package/dist/{src → legacy-root-azm/src}/semantics/declVisitor.d.ts +0 -0
  380. /package/dist/{src → legacy-root-azm/src}/semantics/declVisitor.js +0 -0
  381. /package/dist/{src → legacy-root-azm/src}/semantics/env.d.ts +0 -0
  382. /package/dist/{src → legacy-root-azm/src}/semantics/env.js +0 -0
  383. /package/dist/{src → legacy-root-azm/src}/semantics/layout.d.ts +0 -0
  384. /package/dist/{src → legacy-root-azm/src}/semantics/layout.js +0 -0
  385. /package/dist/{src → legacy-root-azm/src}/semantics/layoutCastFold.d.ts +0 -0
  386. /package/dist/{src → legacy-root-azm/src}/semantics/layoutCastFold.js +0 -0
  387. /package/dist/{src → legacy-root-azm/src}/semantics/semanticsDiagnostics.d.ts +0 -0
  388. /package/dist/{src → legacy-root-azm/src}/semantics/semanticsDiagnostics.js +0 -0
  389. /package/dist/{src → legacy-root-azm/src}/semantics/typeQueries.d.ts +0 -0
  390. /package/dist/{src → legacy-root-azm/src}/semantics/typeQueries.js +0 -0
  391. /package/dist/{src → legacy-root-azm/src}/sourceIncludeExpansion.d.ts +0 -0
  392. /package/dist/{src → legacy-root-azm/src}/sourceIncludeExpansion.js +0 -0
  393. /package/dist/{src → legacy-root-azm/src}/sourceIncludePaths.d.ts +0 -0
  394. /package/dist/{src → legacy-root-azm/src}/sourceIncludePaths.js +0 -0
  395. /package/dist/{src → legacy-root-azm/src}/sourceLoader.d.ts +0 -0
  396. /package/dist/{src → legacy-root-azm/src}/sourceLoader.js +0 -0
  397. /package/dist/{src → legacy-root-azm/src}/z80/encodeAlu.d.ts +0 -0
  398. /package/dist/{src → legacy-root-azm/src}/z80/encodeAlu.js +0 -0
  399. /package/dist/{src → legacy-root-azm/src}/z80/encodeBitOps.d.ts +0 -0
  400. /package/dist/{src → legacy-root-azm/src}/z80/encodeBitOps.js +0 -0
  401. /package/dist/{src → legacy-root-azm/src}/z80/encodeContext.d.ts +0 -0
  402. /package/dist/{src → legacy-root-azm/src}/z80/encodeContext.js +0 -0
  403. /package/dist/{src → legacy-root-azm/src}/z80/encodeControl.d.ts +0 -0
  404. /package/dist/{src → legacy-root-azm/src}/z80/encodeControl.js +0 -0
  405. /package/dist/{src → legacy-root-azm/src}/z80/encodeCoreOps.d.ts +0 -0
  406. /package/dist/{src → legacy-root-azm/src}/z80/encodeCoreOps.js +0 -0
  407. /package/dist/{src → legacy-root-azm/src}/z80/encodeIo.d.ts +0 -0
  408. /package/dist/{src → legacy-root-azm/src}/z80/encodeIo.js +0 -0
  409. /package/dist/{src → legacy-root-azm/src}/z80/encodeLd.d.ts +0 -0
  410. /package/dist/{src → legacy-root-azm/src}/z80/encodeLd.js +0 -0
  411. /package/dist/{src → legacy-root-azm/src}/z80/encoderRegistry.d.ts +0 -0
  412. /package/dist/{src → legacy-root-azm/src}/z80/encoderRegistry.js +0 -0
package/README.md CHANGED
@@ -85,6 +85,7 @@ Options:
85
85
  --nohex Suppress .hex
86
86
  --nod8m Suppress .d8.json
87
87
  --asm80 Emit assembler-valid lowered source (.z80)
88
+ --source-root <d> Normalize D8 source paths relative to this directory
88
89
  --case-style <m> Case-style lint mode: off|upper|lower|consistent
89
90
  --rc <m> Register-care mode: off|audit|warn|error|strict
90
91
  --reg-report Emit .regcare.txt report
@@ -115,7 +116,14 @@ import { compile, defaultFormatWriters } from '@jhlagado/azm/compile';
115
116
 
116
117
  const result = await compile(
117
118
  '/abs/path/to/main.asm',
118
- { outputType: 'hex' },
119
+ {
120
+ outputType: 'hex',
121
+ sourceRoot: '/abs/path/to/project',
122
+ d8mInputs: {
123
+ hex: '/abs/path/to/project/build/main.hex',
124
+ listing: '/abs/path/to/project/build/main.lst',
125
+ },
126
+ },
119
127
  { formats: defaultFormatWriters },
120
128
  );
121
129
 
@@ -9,6 +9,7 @@ import { emitProgram } from './lowering/emit.js';
9
9
  import { loadProgram } from './sourceLoader.js';
10
10
  import { analyzeRegisterCare } from './registerCare/analyze.js';
11
11
  import { parseInterfaceContracts } from './registerCare/smartComments.js';
12
+ import { readPackageVersion } from './packageInfo.js';
12
13
  function withDefaults(options) {
13
14
  const anyPrimaryEmitSpecified = [options.emitBin, options.emitHex, options.emitD8m].some((v) => v !== undefined);
14
15
  const emitBin = anyPrimaryEmitSpecified ? (options.emitBin ?? false) : true;
@@ -135,8 +136,18 @@ export const compile = async (entryFile, options, deps) => {
135
136
  }
136
137
  if (emit.emitD8m) {
137
138
  const mainEntry = symbols.find((s) => s.kind === 'label' && s.name.toLowerCase() === 'main');
139
+ const d8mRoot = options.sourceRoot ?? dirname(entryPath);
138
140
  artifacts.push(deps.formats.writeD8m(map, symbols, {
139
- rootDir: dirname(entryPath),
141
+ rootDir: d8mRoot,
142
+ packageVersion: readPackageVersion(),
143
+ inputs: {
144
+ entry: entryPath,
145
+ ...(options.d8mInputs?.listing !== undefined
146
+ ? { listing: options.d8mInputs.listing }
147
+ : {}),
148
+ ...(options.d8mInputs?.hex !== undefined ? { hex: options.d8mInputs.hex } : {}),
149
+ ...(options.d8mInputs?.bin !== undefined ? { bin: options.d8mInputs.bin } : {}),
150
+ },
140
151
  ...(mainEntry
141
152
  ? {
142
153
  entrySymbol: mainEntry.name,
@@ -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,20 +68,31 @@ 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.
82
78
  * When provided, file paths are made project-relative and use `/` separators.
83
79
  */
84
80
  rootDir?: string;
81
+ /**
82
+ * AZM package version to record in generator metadata.
83
+ */
84
+ packageVersion?: string;
85
+ /**
86
+ * Source/output paths used to produce this map.
87
+ *
88
+ * Paths are normalized with `rootDir` when present.
89
+ */
90
+ inputs?: {
91
+ entry?: string;
92
+ listing?: string;
93
+ hex?: string;
94
+ bin?: string;
95
+ };
85
96
  /**
86
97
  * Optional runnable entry symbol metadata for harnesses.
87
98
  */
@@ -155,6 +166,64 @@ export interface D8mArtifact {
155
166
  path?: string;
156
167
  json: D8mJson;
157
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
+ }
158
227
  /**
159
228
  * In-memory register-care audit report artifact.
160
229
  */
@@ -194,7 +263,13 @@ export type D8mJson = {
194
263
  format: 'd8-debug-map';
195
264
  version: 1;
196
265
  arch: 'z80';
197
- [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;
198
273
  };
199
274
  /**
200
275
  * Format writers used by the pipeline to turn emitted bytes/symbols into artifacts.
@@ -12,6 +12,14 @@ function normalizeD8mPath(file, rootDir) {
12
12
  }
13
13
  return rel.replace(/\\/g, '/');
14
14
  }
15
+ function normalizeD8mInputs(inputs, rootDir) {
16
+ if (!inputs)
17
+ return undefined;
18
+ const entries = Object.entries(inputs)
19
+ .filter((entry) => typeof entry[1] === 'string' && entry[1] !== '')
20
+ .map(([key, value]) => [key, normalizeD8mPath(value, rootDir)]);
21
+ return entries.length > 0 ? Object.fromEntries(entries) : undefined;
22
+ }
15
23
  function toSerializedSymbol(symbol) {
16
24
  if (symbol.kind === 'constant') {
17
25
  return {
@@ -213,6 +221,7 @@ export function writeD8m(map, symbols, opts) {
213
221
  ...(entry.symbols.length > 0 ? { symbols: entry.symbols } : {}),
214
222
  },
215
223
  ]));
224
+ const generatorInputs = normalizeD8mInputs(opts?.inputs, opts?.rootDir);
216
225
  const json = {
217
226
  format: 'd8-debug-map',
218
227
  version: 1,
@@ -223,17 +232,14 @@ export function writeD8m(map, symbols, opts) {
223
232
  segments,
224
233
  ...(fileList.length > 0 ? { fileList } : {}),
225
234
  symbols: serializedSymbols,
226
- ...(opts?.entrySymbol !== undefined || opts?.entryAddress !== undefined
227
- ? {
228
- generator: {
229
- tool: 'azm',
230
- ...(opts.entrySymbol !== undefined ? { entrySymbol: opts.entrySymbol } : {}),
231
- ...(opts.entryAddress !== undefined
232
- ? { entryAddress: opts.entryAddress & 0xffff }
233
- : {}),
234
- },
235
- }
236
- : {}),
235
+ generator: {
236
+ name: 'azm',
237
+ tool: 'azm',
238
+ ...(opts?.packageVersion !== undefined ? { version: opts.packageVersion } : {}),
239
+ ...(generatorInputs !== undefined ? { inputs: generatorInputs } : {}),
240
+ ...(opts?.entrySymbol !== undefined ? { entrySymbol: opts.entrySymbol } : {}),
241
+ ...(opts?.entryAddress !== undefined ? { entryAddress: opts.entryAddress & 0xffff } : {}),
242
+ },
237
243
  };
238
244
  return { kind: 'd8m', json };
239
245
  }
@@ -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
  */
@@ -0,0 +1 @@
1
+ export declare function readPackageVersion(): string;
@@ -0,0 +1,15 @@
1
+ import { createRequire } from 'node:module';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ export function readPackageVersion() {
5
+ const require = createRequire(import.meta.url);
6
+ const here = dirname(fileURLToPath(import.meta.url));
7
+ let pkg;
8
+ try {
9
+ pkg = require(resolve(here, '..', 'package.json'));
10
+ }
11
+ catch {
12
+ pkg = require(resolve(here, '..', '..', 'package.json'));
13
+ }
14
+ return String(pkg.version ?? '0.0.0');
15
+ }
@@ -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,10 +13,25 @@ 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';
20
+ /**
21
+ * Root used for source paths in debug maps.
22
+ *
23
+ * When present, D8 file keys and generator input paths are emitted relative
24
+ * to this directory with `/` separators.
25
+ */
26
+ sourceRoot?: string;
27
+ /**
28
+ * Output paths recorded in D8 generator metadata when known by the caller.
29
+ */
30
+ d8mInputs?: {
31
+ listing?: string;
32
+ hex?: string;
33
+ bin?: string;
34
+ };
22
35
  /** Emit flat binary (`.bin`). */
23
36
  emitBin?: boolean;
24
37
  /** Emit Intel HEX (`.hex`). */
@@ -27,7 +40,7 @@ export interface CompilerOptions {
27
40
  emitD8m?: boolean;
28
41
  /** Emit listing (`.lst`). */
29
42
  emitListing?: boolean;
30
- /** Emit ASM80-compatible lowered source (`.asm`). */
43
+ /** Emit ASM80-compatible lowered source (`.z80`). */
31
44
  emitAsm80?: boolean;
32
45
  /** Optional case-style lint mode for asm keywords/register tokens. */
33
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;