@jhlagado/azm 0.2.1 → 0.2.3

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 (313) hide show
  1. package/README.md +16 -9
  2. package/dist/src/api-compile.d.ts +0 -2
  3. package/dist/src/api-compile.js +1 -8
  4. package/dist/src/assembly/address-planning.js +19 -1
  5. package/dist/src/cli/parse-args.d.ts +0 -1
  6. package/dist/src/cli/parse-args.js +0 -7
  7. package/dist/src/cli/write-artifacts.js +0 -11
  8. package/dist/src/core/compile.js +176 -9
  9. package/dist/src/expansion/op-expansion.js +1 -0
  10. package/dist/src/model/expression.d.ts +4 -0
  11. package/dist/src/model/source-item.d.ts +5 -0
  12. package/dist/src/outputs/index.js +0 -2
  13. package/dist/src/outputs/types.d.ts +3 -16
  14. package/dist/src/outputs/write-asm80.js +84 -0
  15. package/dist/src/semantics/expression-evaluation.d.ts +7 -3
  16. package/dist/src/semantics/expression-evaluation.js +57 -0
  17. package/dist/src/syntax/directive-aliases.js +9 -10
  18. package/dist/src/syntax/parse-expression.js +34 -9
  19. package/dist/src/syntax/parse-line.js +80 -44
  20. package/dist/src/tooling/case-style.js +3 -0
  21. package/docs/reference/cli.md +6 -4
  22. package/docs/reference/tooling-api.md +1 -4
  23. package/package.json +2 -6
  24. package/dist/legacy-root-azm/src/analysis.d.ts +0 -11
  25. package/dist/legacy-root-azm/src/analysis.js +0 -41
  26. package/dist/legacy-root-azm/src/compile.d.ts +0 -10
  27. package/dist/legacy-root-azm/src/compile.js +0 -186
  28. package/dist/legacy-root-azm/src/compileShared.d.ts +0 -3
  29. package/dist/legacy-root-azm/src/compileShared.js +0 -7
  30. package/dist/legacy-root-azm/src/diagnosticTypes.d.ts +0 -77
  31. package/dist/legacy-root-azm/src/diagnosticTypes.js +0 -53
  32. package/dist/legacy-root-azm/src/formats/index.d.ts +0 -7
  33. package/dist/legacy-root-azm/src/formats/index.js +0 -17
  34. package/dist/legacy-root-azm/src/formats/range.d.ts +0 -17
  35. package/dist/legacy-root-azm/src/formats/range.js +0 -45
  36. package/dist/legacy-root-azm/src/formats/types.d.ts +0 -283
  37. package/dist/legacy-root-azm/src/formats/types.js +0 -1
  38. package/dist/legacy-root-azm/src/formats/writeAsm80.d.ts +0 -6
  39. package/dist/legacy-root-azm/src/formats/writeAsm80.js +0 -86
  40. package/dist/legacy-root-azm/src/formats/writeBin.d.ts +0 -7
  41. package/dist/legacy-root-azm/src/formats/writeBin.js +0 -23
  42. package/dist/legacy-root-azm/src/formats/writeD8m.d.ts +0 -9
  43. package/dist/legacy-root-azm/src/formats/writeD8m.js +0 -245
  44. package/dist/legacy-root-azm/src/formats/writeHex.d.ts +0 -8
  45. package/dist/legacy-root-azm/src/formats/writeHex.js +0 -38
  46. package/dist/legacy-root-azm/src/formats/writeListing.d.ts +0 -8
  47. package/dist/legacy-root-azm/src/formats/writeListing.js +0 -83
  48. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.d.ts +0 -39
  49. package/dist/legacy-root-azm/src/frontend/asm80/asmLine.js +0 -89
  50. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.d.ts +0 -4
  51. package/dist/legacy-root-azm/src/frontend/asm80/parseAsmRawValues.js +0 -94
  52. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.d.ts +0 -10
  53. package/dist/legacy-root-azm/src/frontend/asm80/quoteScan.js +0 -25
  54. package/dist/legacy-root-azm/src/frontend/ast.d.ts +0 -376
  55. package/dist/legacy-root-azm/src/frontend/ast.js +0 -1
  56. package/dist/legacy-root-azm/src/frontend/directiveAliases.d.ts +0 -14
  57. package/dist/legacy-root-azm/src/frontend/directiveAliases.js +0 -189
  58. package/dist/legacy-root-azm/src/frontend/grammarData.d.ts +0 -14
  59. package/dist/legacy-root-azm/src/frontend/grammarData.js +0 -65
  60. package/dist/legacy-root-azm/src/frontend/immExprUtils.d.ts +0 -2
  61. package/dist/legacy-root-azm/src/frontend/immExprUtils.js +0 -12
  62. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.d.ts +0 -17
  63. package/dist/legacy-root-azm/src/frontend/parseAsmFlatDirectiveLine.js +0 -187
  64. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.d.ts +0 -3
  65. package/dist/legacy-root-azm/src/frontend/parseAsmInstruction.js +0 -73
  66. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.d.ts +0 -6
  67. package/dist/legacy-root-azm/src/frontend/parseAsmStatements.js +0 -16
  68. package/dist/legacy-root-azm/src/frontend/parseAsmStream.d.ts +0 -10
  69. package/dist/legacy-root-azm/src/frontend/parseAsmStream.js +0 -33
  70. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.d.ts +0 -18
  71. package/dist/legacy-root-azm/src/frontend/parseAsmTopLevel.js +0 -34
  72. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.d.ts +0 -9
  73. package/dist/legacy-root-azm/src/frontend/parseDiagnostics.js +0 -16
  74. package/dist/legacy-root-azm/src/frontend/parseEnum.d.ts +0 -12
  75. package/dist/legacy-root-azm/src/frontend/parseEnum.js +0 -70
  76. package/dist/legacy-root-azm/src/frontend/parseImm.d.ts +0 -10
  77. package/dist/legacy-root-azm/src/frontend/parseImm.js +0 -397
  78. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.d.ts +0 -11
  79. package/dist/legacy-root-azm/src/frontend/parseLogicalLines.js +0 -94
  80. package/dist/legacy-root-azm/src/frontend/parseOp.d.ts +0 -25
  81. package/dist/legacy-root-azm/src/frontend/parseOp.js +0 -120
  82. package/dist/legacy-root-azm/src/frontend/parseOpHeader.d.ts +0 -20
  83. package/dist/legacy-root-azm/src/frontend/parseOpHeader.js +0 -32
  84. package/dist/legacy-root-azm/src/frontend/parseOperands.d.ts +0 -4
  85. package/dist/legacy-root-azm/src/frontend/parseOperands.js +0 -290
  86. package/dist/legacy-root-azm/src/frontend/parseParams.d.ts +0 -6
  87. package/dist/legacy-root-azm/src/frontend/parseParams.js +0 -62
  88. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.d.ts +0 -12
  89. package/dist/legacy-root-azm/src/frontend/parseParserRecovery.js +0 -17
  90. package/dist/legacy-root-azm/src/frontend/parseParserShared.d.ts +0 -2
  91. package/dist/legacy-root-azm/src/frontend/parseParserShared.js +0 -8
  92. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.d.ts +0 -1
  93. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectiveStart.js +0 -3
  94. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.d.ts +0 -7
  95. package/dist/legacy-root-azm/src/frontend/parseRawDataDirectives.js +0 -142
  96. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.d.ts +0 -34
  97. package/dist/legacy-root-azm/src/frontend/parseRecordFieldDecl.js +0 -177
  98. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.d.ts +0 -46
  99. package/dist/legacy-root-azm/src/frontend/parseSourceItemDispatch.js +0 -53
  100. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.d.ts +0 -16
  101. package/dist/legacy-root-azm/src/frontend/parseSourceItemTable.js +0 -68
  102. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.d.ts +0 -11
  103. package/dist/legacy-root-azm/src/frontend/parseTopLevelCommon.js +0 -50
  104. package/dist/legacy-root-azm/src/frontend/parseTypes.d.ts +0 -24
  105. package/dist/legacy-root-azm/src/frontend/parseTypes.js +0 -77
  106. package/dist/legacy-root-azm/src/frontend/parser.d.ts +0 -11
  107. package/dist/legacy-root-azm/src/frontend/parser.js +0 -88
  108. package/dist/legacy-root-azm/src/frontend/source.d.ts +0 -28
  109. package/dist/legacy-root-azm/src/frontend/source.js +0 -58
  110. package/dist/legacy-root-azm/src/frontend/sourceExtensions.d.ts +0 -2
  111. package/dist/legacy-root-azm/src/frontend/sourceExtensions.js +0 -6
  112. package/dist/legacy-root-azm/src/lintCaseStyle.d.ts +0 -4
  113. package/dist/legacy-root-azm/src/lintCaseStyle.js +0 -129
  114. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.d.ts +0 -4
  115. package/dist/legacy-root-azm/src/lowering/asmDirectiveLowering.js +0 -229
  116. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.d.ts +0 -47
  117. package/dist/legacy-root-azm/src/lowering/asmDirectiveTraversal.js +0 -52
  118. package/dist/legacy-root-azm/src/lowering/asmEquResolution.d.ts +0 -8
  119. package/dist/legacy-root-azm/src/lowering/asmEquResolution.js +0 -69
  120. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.d.ts +0 -15
  121. package/dist/legacy-root-azm/src/lowering/asmInstructionLdHelpers.js +0 -102
  122. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.d.ts +0 -5
  123. package/dist/legacy-root-azm/src/lowering/asmInstructionLowering.js +0 -54
  124. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.d.ts +0 -46
  125. package/dist/legacy-root-azm/src/lowering/asmInstructionStream.js +0 -51
  126. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.d.ts +0 -43
  127. package/dist/legacy-root-azm/src/lowering/asmLoweringBranchCall.js +0 -254
  128. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.d.ts +0 -23
  129. package/dist/legacy-root-azm/src/lowering/asmLoweringHost.js +0 -1
  130. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.d.ts +0 -28
  131. package/dist/legacy-root-azm/src/lowering/asmLoweringLd.js +0 -144
  132. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.d.ts +0 -17
  133. package/dist/legacy-root-azm/src/lowering/asmRangeLowering.js +0 -39
  134. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.d.ts +0 -16
  135. package/dist/legacy-root-azm/src/lowering/asmRawDataLowering.js +0 -209
  136. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.d.ts +0 -4
  137. package/dist/legacy-root-azm/src/lowering/asmSourceEmitter.js +0 -9
  138. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.d.ts +0 -4
  139. package/dist/legacy-root-azm/src/lowering/asmSourceInstructionLowering.js +0 -14
  140. package/dist/legacy-root-azm/src/lowering/asmUtils.d.ts +0 -13
  141. package/dist/legacy-root-azm/src/lowering/asmUtils.js +0 -105
  142. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.d.ts +0 -54
  143. package/dist/legacy-root-azm/src/lowering/assemblerFlowSetup.js +0 -128
  144. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.d.ts +0 -151
  145. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContext.js +0 -16
  146. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.d.ts +0 -7
  147. package/dist/legacy-root-azm/src/lowering/assemblerLoweringContextSplit.js +0 -75
  148. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.d.ts +0 -66
  149. package/dist/legacy-root-azm/src/lowering/assemblerLoweringPhases.js +0 -166
  150. package/dist/legacy-root-azm/src/lowering/bytePlacement.d.ts +0 -7
  151. package/dist/legacy-root-azm/src/lowering/bytePlacement.js +0 -37
  152. package/dist/legacy-root-azm/src/lowering/capabilities.d.ts +0 -67
  153. package/dist/legacy-root-azm/src/lowering/capabilities.js +0 -1
  154. package/dist/legacy-root-azm/src/lowering/eaResolution.d.ts +0 -58
  155. package/dist/legacy-root-azm/src/lowering/eaResolution.js +0 -159
  156. package/dist/legacy-root-azm/src/lowering/emissionCore.d.ts +0 -17
  157. package/dist/legacy-root-azm/src/lowering/emissionCore.js +0 -21
  158. package/dist/legacy-root-azm/src/lowering/emit.d.ts +0 -17
  159. package/dist/legacy-root-azm/src/lowering/emit.js +0 -46
  160. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.d.ts +0 -63
  161. package/dist/legacy-root-azm/src/lowering/emitContextBuilder.js +0 -41
  162. package/dist/legacy-root-azm/src/lowering/emitFinalization.d.ts +0 -61
  163. package/dist/legacy-root-azm/src/lowering/emitFinalization.js +0 -66
  164. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.d.ts +0 -19
  165. package/dist/legacy-root-azm/src/lowering/emitFinalizationSetup.js +0 -26
  166. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.d.ts +0 -7
  167. package/dist/legacy-root-azm/src/lowering/emitPhase1BuildProgramLoweringContext.js +0 -119
  168. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.d.ts +0 -4
  169. package/dist/legacy-root-azm/src/lowering/emitPhase1Helpers.js +0 -12
  170. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.d.ts +0 -21
  171. package/dist/legacy-root-azm/src/lowering/emitPhase1Types.js +0 -1
  172. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.d.ts +0 -70
  173. package/dist/legacy-root-azm/src/lowering/emitPhase1WirePipeline.js +0 -203
  174. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.d.ts +0 -82
  175. package/dist/legacy-root-azm/src/lowering/emitPhase1Workspace.js +0 -55
  176. package/dist/legacy-root-azm/src/lowering/emitPipeline.d.ts +0 -121
  177. package/dist/legacy-root-azm/src/lowering/emitPipeline.js +0 -57
  178. package/dist/legacy-root-azm/src/lowering/emitProgramContext.d.ts +0 -39
  179. package/dist/legacy-root-azm/src/lowering/emitProgramContext.js +0 -29
  180. package/dist/legacy-root-azm/src/lowering/emitState.d.ts +0 -90
  181. package/dist/legacy-root-azm/src/lowering/emitState.js +0 -124
  182. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.d.ts +0 -7
  183. package/dist/legacy-root-azm/src/lowering/fixupBaseResolution.js +0 -23
  184. package/dist/legacy-root-azm/src/lowering/fixupEmission.d.ts +0 -64
  185. package/dist/legacy-root-azm/src/lowering/fixupEmission.js +0 -199
  186. package/dist/legacy-root-azm/src/lowering/immMath.d.ts +0 -2
  187. package/dist/legacy-root-azm/src/lowering/immMath.js +0 -34
  188. package/dist/legacy-root-azm/src/lowering/inputAssets.d.ts +0 -7
  189. package/dist/legacy-root-azm/src/lowering/inputAssets.js +0 -106
  190. package/dist/legacy-root-azm/src/lowering/ldEncoding.d.ts +0 -15
  191. package/dist/legacy-root-azm/src/lowering/ldEncoding.js +0 -12
  192. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.d.ts +0 -5
  193. package/dist/legacy-root-azm/src/lowering/ldEncodingRegMemHelpers.js +0 -124
  194. package/dist/legacy-root-azm/src/lowering/ldFormSelection.d.ts +0 -26
  195. package/dist/legacy-root-azm/src/lowering/ldFormSelection.js +0 -92
  196. package/dist/legacy-root-azm/src/lowering/ldLowering.d.ts +0 -7
  197. package/dist/legacy-root-azm/src/lowering/ldLowering.js +0 -13
  198. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.d.ts +0 -23
  199. package/dist/legacy-root-azm/src/lowering/loweredAsmByteEmission.js +0 -185
  200. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.d.ts +0 -13
  201. package/dist/legacy-root-azm/src/lowering/loweredAsmPlacement.js +0 -86
  202. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.d.ts +0 -27
  203. package/dist/legacy-root-azm/src/lowering/loweredAsmStreamRecording.js +0 -215
  204. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.d.ts +0 -202
  205. package/dist/legacy-root-azm/src/lowering/loweredAsmTypes.js +0 -1
  206. package/dist/legacy-root-azm/src/lowering/loweredFormat.d.ts +0 -3
  207. package/dist/legacy-root-azm/src/lowering/loweredFormat.js +0 -26
  208. package/dist/legacy-root-azm/src/lowering/loweredItemSize.d.ts +0 -4
  209. package/dist/legacy-root-azm/src/lowering/loweredItemSize.js +0 -17
  210. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.d.ts +0 -9
  211. package/dist/legacy-root-azm/src/lowering/loweringDiagnostics.js +0 -55
  212. package/dist/legacy-root-azm/src/lowering/loweringTypes.d.ts +0 -27
  213. package/dist/legacy-root-azm/src/lowering/loweringTypes.js +0 -1
  214. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.d.ts +0 -9
  215. package/dist/legacy-root-azm/src/lowering/opCandidateRegistry.js +0 -9
  216. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.d.ts +0 -15
  217. package/dist/legacy-root-azm/src/lowering/opExpansionExecution.js +0 -45
  218. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.d.ts +0 -15
  219. package/dist/legacy-root-azm/src/lowering/opExpansionOrchestration.js +0 -88
  220. package/dist/legacy-root-azm/src/lowering/opExpansionStream.d.ts +0 -12
  221. package/dist/legacy-root-azm/src/lowering/opExpansionStream.js +0 -176
  222. package/dist/legacy-root-azm/src/lowering/opMatching.d.ts +0 -52
  223. package/dist/legacy-root-azm/src/lowering/opMatching.js +0 -355
  224. package/dist/legacy-root-azm/src/lowering/opSubstitution.d.ts +0 -13
  225. package/dist/legacy-root-azm/src/lowering/opSubstitution.js +0 -175
  226. package/dist/legacy-root-azm/src/lowering/prescanTypes.d.ts +0 -7
  227. package/dist/legacy-root-azm/src/lowering/prescanTypes.js +0 -1
  228. package/dist/legacy-root-azm/src/lowering/programLowering.d.ts +0 -144
  229. package/dist/legacy-root-azm/src/lowering/programLowering.js +0 -2
  230. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.d.ts +0 -5
  231. package/dist/legacy-root-azm/src/lowering/programLoweringDeclarations.js +0 -5
  232. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.d.ts +0 -18
  233. package/dist/legacy-root-azm/src/lowering/programLoweringFinalize.js +0 -115
  234. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.d.ts +0 -2
  235. package/dist/legacy-root-azm/src/lowering/programLoweringTraversal.js +0 -93
  236. package/dist/legacy-root-azm/src/lowering/programPrescan.d.ts +0 -3
  237. package/dist/legacy-root-azm/src/lowering/programPrescan.js +0 -37
  238. package/dist/legacy-root-azm/src/lowering/traceFormat.d.ts +0 -13
  239. package/dist/legacy-root-azm/src/lowering/traceFormat.js +0 -211
  240. package/dist/legacy-root-azm/src/packageInfo.d.ts +0 -1
  241. package/dist/legacy-root-azm/src/packageInfo.js +0 -15
  242. package/dist/legacy-root-azm/src/pathCompare.d.ts +0 -3
  243. package/dist/legacy-root-azm/src/pathCompare.js +0 -26
  244. package/dist/legacy-root-azm/src/pipeline.d.ts +0 -91
  245. package/dist/legacy-root-azm/src/pipeline.js +0 -1
  246. package/dist/legacy-root-azm/src/registerCare/analyze.d.ts +0 -24
  247. package/dist/legacy-root-azm/src/registerCare/analyze.js +0 -327
  248. package/dist/legacy-root-azm/src/registerCare/annotate.d.ts +0 -11
  249. package/dist/legacy-root-azm/src/registerCare/annotate.js +0 -76
  250. package/dist/legacy-root-azm/src/registerCare/boundaryHints.d.ts +0 -2
  251. package/dist/legacy-root-azm/src/registerCare/boundaryHints.js +0 -10
  252. package/dist/legacy-root-azm/src/registerCare/carriers.d.ts +0 -4
  253. package/dist/legacy-root-azm/src/registerCare/carriers.js +0 -78
  254. package/dist/legacy-root-azm/src/registerCare/controlFlow.d.ts +0 -5
  255. package/dist/legacy-root-azm/src/registerCare/controlFlow.js +0 -35
  256. package/dist/legacy-root-azm/src/registerCare/fix.d.ts +0 -11
  257. package/dist/legacy-root-azm/src/registerCare/fix.js +0 -119
  258. package/dist/legacy-root-azm/src/registerCare/liveness.d.ts +0 -7
  259. package/dist/legacy-root-azm/src/registerCare/liveness.js +0 -227
  260. package/dist/legacy-root-azm/src/registerCare/profiles.d.ts +0 -11
  261. package/dist/legacy-root-azm/src/registerCare/profiles.js +0 -45
  262. package/dist/legacy-root-azm/src/registerCare/programModel.d.ts +0 -3
  263. package/dist/legacy-root-azm/src/registerCare/programModel.js +0 -181
  264. package/dist/legacy-root-azm/src/registerCare/report.d.ts +0 -5
  265. package/dist/legacy-root-azm/src/registerCare/report.js +0 -139
  266. package/dist/legacy-root-azm/src/registerCare/smartComments.d.ts +0 -5
  267. package/dist/legacy-root-azm/src/registerCare/smartComments.js +0 -247
  268. package/dist/legacy-root-azm/src/registerCare/sourceText.d.ts +0 -8
  269. package/dist/legacy-root-azm/src/registerCare/sourceText.js +0 -15
  270. package/dist/legacy-root-azm/src/registerCare/summary.d.ts +0 -3
  271. package/dist/legacy-root-azm/src/registerCare/summary.js +0 -492
  272. package/dist/legacy-root-azm/src/registerCare/types.d.ts +0 -154
  273. package/dist/legacy-root-azm/src/registerCare/types.js +0 -1
  274. package/dist/legacy-root-azm/src/semantics/declVisitor.d.ts +0 -5
  275. package/dist/legacy-root-azm/src/semantics/declVisitor.js +0 -11
  276. package/dist/legacy-root-azm/src/semantics/env.d.ts +0 -28
  277. package/dist/legacy-root-azm/src/semantics/env.js +0 -432
  278. package/dist/legacy-root-azm/src/semantics/layout.d.ts +0 -21
  279. package/dist/legacy-root-azm/src/semantics/layout.js +0 -226
  280. package/dist/legacy-root-azm/src/semantics/layoutCastFold.d.ts +0 -22
  281. package/dist/legacy-root-azm/src/semantics/layoutCastFold.js +0 -118
  282. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.d.ts +0 -2
  283. package/dist/legacy-root-azm/src/semantics/semanticsDiagnostics.js +0 -4
  284. package/dist/legacy-root-azm/src/semantics/typeQueries.d.ts +0 -31
  285. package/dist/legacy-root-azm/src/semantics/typeQueries.js +0 -124
  286. package/dist/legacy-root-azm/src/sourceIncludeExpansion.d.ts +0 -17
  287. package/dist/legacy-root-azm/src/sourceIncludeExpansion.js +0 -124
  288. package/dist/legacy-root-azm/src/sourceIncludePaths.d.ts +0 -1
  289. package/dist/legacy-root-azm/src/sourceIncludePaths.js +0 -12
  290. package/dist/legacy-root-azm/src/sourceLoader.d.ts +0 -15
  291. package/dist/legacy-root-azm/src/sourceLoader.js +0 -118
  292. package/dist/legacy-root-azm/src/z80/effects.d.ts +0 -3
  293. package/dist/legacy-root-azm/src/z80/effects.js +0 -516
  294. package/dist/legacy-root-azm/src/z80/encode.d.ts +0 -10
  295. package/dist/legacy-root-azm/src/z80/encode.js +0 -412
  296. package/dist/legacy-root-azm/src/z80/encodeAlu.d.ts +0 -7
  297. package/dist/legacy-root-azm/src/z80/encodeAlu.js +0 -219
  298. package/dist/legacy-root-azm/src/z80/encodeBitOps.d.ts +0 -7
  299. package/dist/legacy-root-azm/src/z80/encodeBitOps.js +0 -123
  300. package/dist/legacy-root-azm/src/z80/encodeContext.d.ts +0 -29
  301. package/dist/legacy-root-azm/src/z80/encodeContext.js +0 -1
  302. package/dist/legacy-root-azm/src/z80/encodeControl.d.ts +0 -26
  303. package/dist/legacy-root-azm/src/z80/encodeControl.js +0 -180
  304. package/dist/legacy-root-azm/src/z80/encodeCoreOps.d.ts +0 -7
  305. package/dist/legacy-root-azm/src/z80/encodeCoreOps.js +0 -131
  306. package/dist/legacy-root-azm/src/z80/encodeIo.d.ts +0 -9
  307. package/dist/legacy-root-azm/src/z80/encodeIo.js +0 -128
  308. package/dist/legacy-root-azm/src/z80/encodeLd.d.ts +0 -13
  309. package/dist/legacy-root-azm/src/z80/encodeLd.js +0 -273
  310. package/dist/legacy-root-azm/src/z80/encoderRegistry.d.ts +0 -13
  311. package/dist/legacy-root-azm/src/z80/encoderRegistry.js +0 -169
  312. package/dist/src/outputs/write-listing.d.ts +0 -2
  313. package/dist/src/outputs/write-listing.js +0 -79
@@ -1,283 +0,0 @@
1
- /**
2
- * Half-open address range in the Z80 16-bit address space.
3
- */
4
- export interface AddressRange {
5
- /** Inclusive start address. */
6
- start: number;
7
- /** Exclusive end address. */
8
- end: number;
9
- }
10
- /**
11
- * Address->byte map for all emitted machine-code bytes.
12
- */
13
- export interface EmittedByteMap {
14
- /**
15
- * Address -> byte (0..255). Addresses are 0..65535 for Z80.
16
- */
17
- bytes: Map<number, number>;
18
- writtenRange?: AddressRange;
19
- /**
20
- * Optional source-attributed code segments emitted by lowering.
21
- *
22
- * Addresses are absolute in the final 16-bit address space.
23
- */
24
- sourceSegments?: EmittedSourceSegment[];
25
- }
26
- /**
27
- * Source-attributed emitted range used by debug-map writers.
28
- */
29
- export interface EmittedSourceSegment {
30
- start: number;
31
- end: number;
32
- file: string;
33
- line: number;
34
- column: number;
35
- kind: 'code' | 'data' | 'directive' | 'label' | 'macro' | 'unknown';
36
- confidence: 'high' | 'medium' | 'low';
37
- }
38
- /**
39
- * A symbol entry for debug maps and listings.
40
- */
41
- export type SymbolEntry = {
42
- kind: 'constant';
43
- name: string;
44
- /**
45
- * Constant value (not an address).
46
- *
47
- * D8M serialization includes this as `value`.
48
- */
49
- value: number;
50
- file?: string;
51
- line?: number;
52
- scope?: 'global' | 'local';
53
- } | {
54
- kind: 'label' | 'data' | 'unknown';
55
- name: string;
56
- address: number;
57
- file?: string;
58
- line?: number;
59
- scope?: 'global' | 'local';
60
- size?: number;
61
- };
62
- /**
63
- * Options for Intel HEX writing.
64
- */
65
- export interface WriteHexOptions {
66
- /**
67
- * Line ending to use when emitting text formats.
68
- */
69
- lineEnding?: '\n' | '\r\n';
70
- }
71
- /** Options for BIN writing. */
72
- export interface WriteBinOptions {
73
- }
74
- /** Options for D8M writing. */
75
- export interface WriteD8mOptions {
76
- /**
77
- * Base directory used to normalize file paths in D8M symbol entries.
78
- * When provided, file paths are made project-relative and use `/` separators.
79
- */
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
- };
96
- /**
97
- * Optional runnable entry symbol metadata for harnesses.
98
- */
99
- entrySymbol?: string;
100
- /**
101
- * Optional resolved entry address metadata for harnesses.
102
- */
103
- entryAddress?: number;
104
- }
105
- /**
106
- * Options for listing writing.
107
- *
108
- * Note: the listing format is currently a deterministic byte dump plus a symbol table.
109
- */
110
- export interface WriteListingOptions {
111
- /**
112
- * Line ending to use when emitting text formats.
113
- */
114
- lineEnding?: '\n' | '\r\n';
115
- /**
116
- * Number of bytes shown per listing line.
117
- */
118
- bytesPerLine?: number;
119
- }
120
- /**
121
- * Options for ASM80 source emission.
122
- */
123
- export interface WriteAsm80Options {
124
- /**
125
- * Line ending to use when emitting text formats.
126
- */
127
- lineEnding?: '\n' | '\r\n';
128
- }
129
- /**
130
- * In-memory Intel HEX artifact.
131
- */
132
- export interface HexArtifact {
133
- kind: 'hex';
134
- path?: string;
135
- text: string;
136
- }
137
- /**
138
- * In-memory flat binary artifact.
139
- */
140
- export interface BinArtifact {
141
- kind: 'bin';
142
- path?: string;
143
- bytes: Uint8Array;
144
- }
145
- /**
146
- * In-memory listing artifact.
147
- */
148
- export interface ListingArtifact {
149
- kind: 'lst';
150
- path?: string;
151
- text: string;
152
- }
153
- /**
154
- * In-memory ASM80 `.z80` artifact.
155
- */
156
- export interface Asm80Artifact {
157
- kind: 'asm80';
158
- path?: string;
159
- text: string;
160
- }
161
- /**
162
- * In-memory D8 Debug Map (D8M) artifact.
163
- */
164
- export interface D8mArtifact {
165
- kind: 'd8m';
166
- path?: string;
167
- json: D8mJson;
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
- }
227
- /**
228
- * In-memory register-care audit report artifact.
229
- */
230
- export interface RegisterCareReportArtifact {
231
- kind: 'register-care-report';
232
- path?: string;
233
- text: string;
234
- }
235
- /**
236
- * In-memory inferred register-care interface artifact.
237
- */
238
- export interface RegisterCareInterfaceArtifact {
239
- kind: 'register-care-interface';
240
- path?: string;
241
- text: string;
242
- }
243
- /**
244
- * In-memory register-care source annotation artifact.
245
- */
246
- export interface RegisterCareAnnotationsArtifact {
247
- kind: 'register-care-annotations';
248
- files: Array<{
249
- path: string;
250
- text: string;
251
- }>;
252
- }
253
- /**
254
- * Union of all artifact kinds produced by the compiler.
255
- */
256
- export type Artifact = HexArtifact | BinArtifact | ListingArtifact | D8mArtifact | Asm80Artifact | RegisterCareReportArtifact | RegisterCareInterfaceArtifact | RegisterCareAnnotationsArtifact;
257
- /**
258
- * Minimal D8 Debug Map (D8M) v1 JSON shape.
259
- *
260
- * Writers may add additional keys as needed.
261
- */
262
- export type D8mJson = {
263
- format: 'd8-debug-map';
264
- version: 1;
265
- arch: 'z80';
266
- addressWidth: 16;
267
- endianness: 'little';
268
- files: Record<string, D8mFileEntry>;
269
- segments: AddressRange[];
270
- fileList?: string[];
271
- symbols: D8mSymbol[];
272
- generator: D8mGenerator;
273
- };
274
- /**
275
- * Format writers used by the pipeline to turn emitted bytes/symbols into artifacts.
276
- */
277
- export interface FormatWriters {
278
- writeHex(map: EmittedByteMap, symbols: SymbolEntry[], opts?: WriteHexOptions): HexArtifact;
279
- writeBin(map: EmittedByteMap, symbols: SymbolEntry[], opts?: WriteBinOptions): BinArtifact;
280
- writeD8m(map: EmittedByteMap, symbols: SymbolEntry[], opts?: WriteD8mOptions): D8mArtifact;
281
- writeListing?(map: EmittedByteMap, symbols: SymbolEntry[], opts?: WriteListingOptions): ListingArtifact;
282
- writeAsm80?(program: import('../lowering/loweredAsmTypes.js').LoweredAsmProgram, opts?: WriteAsm80Options): Asm80Artifact;
283
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,6 +0,0 @@
1
- import type { Asm80Artifact, WriteAsm80Options } from './types.js';
2
- import type { LoweredAsmProgram } from '../lowering/loweredAsmTypes.js';
3
- /**
4
- * Emit ASM80-compatible source from a placed lowered assembly program.
5
- */
6
- export declare function writeAsm80(program: LoweredAsmProgram, opts?: WriteAsm80Options): Asm80Artifact;
@@ -1,86 +0,0 @@
1
- import { formatLoweredImmExpr, formatLoweredNumber } from '../lowering/loweredFormat.js';
2
- const toHexByte = (value) => value.toString(16).toUpperCase().padStart(2, '0');
3
- function formatEaExpr(expr) {
4
- switch (expr.kind) {
5
- case 'name':
6
- return expr.name;
7
- case 'imm':
8
- return formatLoweredImmExpr(expr.expr);
9
- case 'add':
10
- return `${formatEaExpr(expr.base)}+${formatLoweredImmExpr(expr.offset)}`;
11
- case 'sub':
12
- return `${formatEaExpr(expr.base)}-${formatLoweredImmExpr(expr.offset)}`;
13
- case 'field':
14
- case 'index':
15
- case 'layoutCast':
16
- throw new Error(`ASM80 emitter cannot format lowered EA kind "${expr.kind}".`);
17
- }
18
- }
19
- function formatOperand(op) {
20
- switch (op.kind) {
21
- case 'reg':
22
- return op.name.toLowerCase();
23
- case 'imm':
24
- return formatLoweredImmExpr(op.expr);
25
- case 'ea':
26
- return formatEaExpr(op.expr);
27
- case 'mem':
28
- return `(${formatEaExpr(op.expr)})`;
29
- case 'portImm8':
30
- return `(${formatLoweredImmExpr(op.expr)})`;
31
- case 'portC':
32
- return '(c)';
33
- }
34
- }
35
- function formatItem(item) {
36
- switch (item.kind) {
37
- case 'label':
38
- return [`${item.name}:`];
39
- case 'const':
40
- return [`${item.name} EQU ${formatLoweredImmExpr(item.value)}`];
41
- case 'comment':
42
- if (!item.text.trim())
43
- return [];
44
- if (item.origin === 'user')
45
- return [`; ${item.text}`];
46
- return [`; AZM: ${item.text}`];
47
- case 'db':
48
- return [`DB ${item.values.map(formatLoweredImmExpr).join(', ')}`];
49
- case 'dw':
50
- return [`DW ${item.values.map(formatLoweredImmExpr).join(', ')}`];
51
- case 'ds':
52
- return [
53
- item.fill === undefined
54
- ? `DS ${formatLoweredImmExpr(item.size)}`
55
- : `DS ${formatLoweredImmExpr(item.size)}, ${formatLoweredImmExpr(item.fill)}`,
56
- ];
57
- case 'instr': {
58
- if (item.head === '@raw') {
59
- const bytes = item.bytes ?? [];
60
- if (bytes.length === 0)
61
- return [];
62
- const parts = bytes.map((b) => `$${toHexByte(b & 0xff)}`);
63
- return [`DB ${parts.join(', ')}`];
64
- }
65
- const head = item.head.toLowerCase();
66
- const ops = item.operands.map(formatOperand);
67
- return [ops.length ? `${head} ${ops.join(', ')}` : head];
68
- }
69
- }
70
- }
71
- /**
72
- * Emit ASM80-compatible source from a placed lowered assembly program.
73
- */
74
- export function writeAsm80(program, opts) {
75
- const lineEnding = opts?.lineEnding ?? '\n';
76
- const lines = [];
77
- lines.push('; AZM lowered ASM80 output');
78
- for (const block of program.blocks) {
79
- lines.push('');
80
- lines.push(`ORG ${formatLoweredNumber(block.origin)}`);
81
- for (const item of block.items) {
82
- lines.push(...formatItem(item));
83
- }
84
- }
85
- return { kind: 'asm80', text: lines.join(lineEnding) + lineEnding };
86
- }
@@ -1,7 +0,0 @@
1
- import type { BinArtifact, EmittedByteMap, SymbolEntry, WriteBinOptions } from './types.js';
2
- /**
3
- * Create a flat binary artifact from an emitted address->byte map.
4
- *
5
- * Bytes are emitted for the computed written range; unwritten addresses inside the range are `0x00`.
6
- */
7
- export declare function writeBin(map: EmittedByteMap, symbols: SymbolEntry[], opts?: WriteBinOptions): BinArtifact;
@@ -1,23 +0,0 @@
1
- import { getWrittenRange } from './range.js';
2
- const BINFROM_SYMBOL_NAME = '__azm_binfrom';
3
- const BINTO_SYMBOL_NAME = '__azm_binto';
4
- /**
5
- * Create a flat binary artifact from an emitted address->byte map.
6
- *
7
- * Bytes are emitted for the computed written range; unwritten addresses inside the range are `0x00`.
8
- */
9
- export function writeBin(map, symbols, opts) {
10
- const { start: writtenStart, end } = getWrittenRange(map);
11
- const optionStart = opts?.binFrom ??
12
- opts?.startAddress;
13
- const symbolStart = symbols.find((symbol) => symbol.kind === 'constant' && symbol.name === BINFROM_SYMBOL_NAME);
14
- const symbolEnd = symbols.find((symbol) => symbol.kind === 'constant' && symbol.name === BINTO_SYMBOL_NAME);
15
- const start = optionStart ?? (symbolStart?.kind === 'constant' ? symbolStart.value : writtenStart);
16
- const exclusiveEnd = symbolEnd?.kind === 'constant' ? symbolEnd.value + 1 : end;
17
- const out = new Uint8Array(Math.max(0, exclusiveEnd - start));
18
- for (let i = 0; i < out.length; i++) {
19
- const addr = start + i;
20
- out[i] = map.bytes.get(addr) ?? 0;
21
- }
22
- return { kind: 'bin', bytes: out };
23
- }
@@ -1,9 +0,0 @@
1
- import type { D8mArtifact, EmittedByteMap, SymbolEntry, WriteD8mOptions } from './types.js';
2
- /**
3
- * Create a minimal D8 Debug Map (D8M) v1 JSON artifact.
4
- *
5
- * Implementation note:
6
- * - Emits baseline contiguous written segments plus optional source-attributed per-file segments
7
- * when provided by lowering.
8
- */
9
- export declare function writeD8m(map: EmittedByteMap, symbols: SymbolEntry[], opts?: WriteD8mOptions): D8mArtifact;
@@ -1,245 +0,0 @@
1
- import { isAbsolute, relative, resolve } from 'node:path';
2
- import { getWrittenRange, getWrittenSegments } from './range.js';
3
- function normalizeD8mPath(file, rootDir) {
4
- const withSlashes = file.replace(/\\/g, '/');
5
- if (!rootDir)
6
- return withSlashes;
7
- const absFile = resolve(file);
8
- const absRoot = resolve(rootDir);
9
- const rel = relative(absRoot, absFile);
10
- if (!rel || rel.startsWith('..') || isAbsolute(rel)) {
11
- return absFile.replace(/\\/g, '/');
12
- }
13
- return rel.replace(/\\/g, '/');
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
- }
23
- function toSerializedSymbol(symbol) {
24
- if (symbol.kind === 'constant') {
25
- return {
26
- name: symbol.name,
27
- kind: 'constant',
28
- value: symbol.value,
29
- ...(symbol.file !== undefined ? { file: symbol.file } : {}),
30
- ...(symbol.line !== undefined ? { line: symbol.line } : {}),
31
- ...(symbol.scope !== undefined ? { scope: symbol.scope } : {}),
32
- };
33
- }
34
- return {
35
- name: symbol.name,
36
- kind: symbol.kind,
37
- address: symbol.address,
38
- ...(symbol.file !== undefined ? { file: symbol.file } : {}),
39
- ...(symbol.line !== undefined ? { line: symbol.line } : {}),
40
- ...(symbol.scope !== undefined ? { scope: symbol.scope } : {}),
41
- ...(symbol.size !== undefined ? { size: symbol.size } : {}),
42
- };
43
- }
44
- function compareSerializedSymbols(a, b) {
45
- const aClass = a.kind === 'constant' ? 1 : 0;
46
- const bClass = b.kind === 'constant' ? 1 : 0;
47
- if (aClass !== bClass)
48
- return aClass - bClass;
49
- const aAddress = a.kind === 'constant' ? a.value & 0xffff : a.address;
50
- const bAddress = b.kind === 'constant' ? b.value & 0xffff : b.address;
51
- if (aAddress !== bAddress)
52
- return aAddress - bAddress;
53
- const nameCmp = a.name.toLowerCase().localeCompare(b.name.toLowerCase());
54
- if (nameCmp !== 0)
55
- return nameCmp;
56
- const kindCmp = a.kind.localeCompare(b.kind);
57
- if (kindCmp !== 0)
58
- return kindCmp;
59
- const fileCmp = (a.file ?? '').localeCompare(b.file ?? '');
60
- if (fileCmp !== 0)
61
- return fileCmp;
62
- const lineCmp = (a.line ?? 0) - (b.line ?? 0);
63
- if (lineCmp !== 0)
64
- return lineCmp;
65
- if (a.kind === 'constant' && b.kind === 'constant') {
66
- return a.value - b.value;
67
- }
68
- const aSize = a.size ?? 0;
69
- const bSize = b.size ?? 0;
70
- return aSize - bSize;
71
- }
72
- function compareFileSymbols(a, b) {
73
- const withFile = (symbol) => ({
74
- ...symbol,
75
- });
76
- return compareSerializedSymbols(withFile(a), withFile(b));
77
- }
78
- function compareD8mSegments(a, b) {
79
- if (a.start !== b.start)
80
- return a.start - b.start;
81
- if (a.end !== b.end)
82
- return a.end - b.end;
83
- if (a.lstLine !== b.lstLine)
84
- return a.lstLine - b.lstLine;
85
- const aLine = a.line ?? 0;
86
- const bLine = b.line ?? 0;
87
- if (aLine !== bLine)
88
- return aLine - bLine;
89
- const kindCmp = a.kind.localeCompare(b.kind);
90
- if (kindCmp !== 0)
91
- return kindCmp;
92
- return a.confidence.localeCompare(b.confidence);
93
- }
94
- function rangesOverlap(a, b) {
95
- return a.start < b.end && b.start < a.end;
96
- }
97
- function hasOverlappingSourceSegment(sourceSegmentsByFile, file, range) {
98
- return (sourceSegmentsByFile.get(file) ?? []).some((segment) => rangesOverlap({ start: segment.start, end: segment.end }, range));
99
- }
100
- /**
101
- * Create a minimal D8 Debug Map (D8M) v1 JSON artifact.
102
- *
103
- * Implementation note:
104
- * - Emits baseline contiguous written segments plus optional source-attributed per-file segments
105
- * when provided by lowering.
106
- */
107
- export function writeD8m(map, symbols, opts) {
108
- const { start, end } = getWrittenRange(map);
109
- const writtenSegments = getWrittenSegments(map);
110
- const segments = writtenSegments.length > 0
111
- ? writtenSegments
112
- : start < end
113
- ? [{ start, end }]
114
- : [{ start: 0, end: 0 }];
115
- const normalizedSymbols = symbols.map((s) => ({
116
- ...s,
117
- ...(s.file !== undefined ? { file: normalizeD8mPath(s.file, opts?.rootDir) } : {}),
118
- }));
119
- const normalizedSourceSegments = (map.sourceSegments ?? [])
120
- .filter((segment) => segment.end > segment.start)
121
- .map((segment) => ({
122
- ...segment,
123
- file: normalizeD8mPath(segment.file, opts?.rootDir),
124
- }));
125
- const fileSet = new Set(normalizedSymbols
126
- .map((s) => s.file)
127
- .filter((f) => typeof f === 'string' && f.length > 0));
128
- for (const segment of normalizedSourceSegments) {
129
- if (segment.file.length > 0)
130
- fileSet.add(segment.file);
131
- }
132
- const fileList = Array.from(fileSet).sort((a, b) => a.localeCompare(b));
133
- const serializedSymbols = normalizedSymbols
134
- .map(toSerializedSymbol)
135
- .sort(compareSerializedSymbols);
136
- const fileEntries = new Map();
137
- const ensureFileEntry = (path) => {
138
- let entry = fileEntries.get(path);
139
- if (!entry) {
140
- entry = { symbols: [], segments: [] };
141
- fileEntries.set(path, entry);
142
- }
143
- return entry;
144
- };
145
- for (const symbol of serializedSymbols) {
146
- const key = symbol.file ?? '';
147
- const entry = ensureFileEntry(key);
148
- const { file: _file, ...withoutFile } = symbol;
149
- entry.symbols.push(withoutFile);
150
- }
151
- for (const segment of normalizedSourceSegments) {
152
- ensureFileEntry(segment.file).segments.push({
153
- start: segment.start,
154
- end: segment.end,
155
- lstLine: segment.line,
156
- line: segment.line,
157
- kind: segment.kind,
158
- confidence: segment.confidence,
159
- });
160
- }
161
- const sourceSegmentsByFile = new Map();
162
- for (const segment of normalizedSourceSegments) {
163
- const entries = sourceSegmentsByFile.get(segment.file);
164
- if (entries) {
165
- entries.push(segment);
166
- }
167
- else {
168
- sourceSegmentsByFile.set(segment.file, [segment]);
169
- }
170
- }
171
- const symbolRangesByFile = new Map();
172
- for (const symbol of serializedSymbols) {
173
- if (symbol.kind === 'constant' || symbol.file === undefined)
174
- continue;
175
- const spanSize = symbol.size !== undefined && symbol.size > 0 ? symbol.size : 1;
176
- const range = {
177
- start: symbol.address,
178
- end: Math.min(0x10000, symbol.address + spanSize),
179
- };
180
- const currentRanges = symbolRangesByFile.get(symbol.file);
181
- if (currentRanges) {
182
- currentRanges.push(range);
183
- }
184
- else {
185
- symbolRangesByFile.set(symbol.file, [range]);
186
- }
187
- }
188
- for (const ranges of symbolRangesByFile.values()) {
189
- ranges.sort((a, b) => a.start - b.start || a.end - b.end);
190
- }
191
- for (const segment of segments) {
192
- const segmentRange = { start: segment.start, end: segment.end };
193
- const fileKeys = Array.from(symbolRangesByFile.entries())
194
- .filter(([, ranges]) => ranges.some((range) => rangesOverlap(range, segmentRange)))
195
- .map(([path]) => path)
196
- .sort((a, b) => a.localeCompare(b));
197
- const targets = fileKeys.length > 0 ? fileKeys : [fileList[0] ?? ''];
198
- for (const target of targets) {
199
- if (hasOverlappingSourceSegment(sourceSegmentsByFile, target, segmentRange))
200
- continue;
201
- ensureFileEntry(target).segments.push({
202
- start: segment.start,
203
- end: segment.end,
204
- // Synthetic file-attribution segments have no exact source line; use a valid fallback.
205
- lstLine: 1,
206
- kind: 'unknown',
207
- confidence: 'low',
208
- });
209
- }
210
- }
211
- for (const entry of fileEntries.values()) {
212
- entry.symbols.sort(compareFileSymbols);
213
- entry.segments.sort(compareD8mSegments);
214
- }
215
- const files = Object.fromEntries(Array.from(fileEntries.entries())
216
- .sort(([a], [b]) => a.localeCompare(b))
217
- .map(([path, entry]) => [
218
- path,
219
- {
220
- ...(entry.segments.length > 0 ? { segments: entry.segments } : {}),
221
- ...(entry.symbols.length > 0 ? { symbols: entry.symbols } : {}),
222
- },
223
- ]));
224
- const generatorInputs = normalizeD8mInputs(opts?.inputs, opts?.rootDir);
225
- const json = {
226
- format: 'd8-debug-map',
227
- version: 1,
228
- arch: 'z80',
229
- addressWidth: 16,
230
- endianness: 'little',
231
- files,
232
- segments,
233
- ...(fileList.length > 0 ? { fileList } : {}),
234
- symbols: serializedSymbols,
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
- },
243
- };
244
- return { kind: 'd8m', json };
245
- }
@@ -1,8 +0,0 @@
1
- import type { EmittedByteMap, HexArtifact, SymbolEntry, WriteHexOptions } from './types.js';
2
- /**
3
- * Create an Intel HEX artifact from an emitted address->byte map.
4
- *
5
- * - Emits only type-00 data records and a type-01 EOF record.
6
- * - Does not emit extended address records (assumes 16-bit address space).
7
- */
8
- export declare function writeHex(map: EmittedByteMap, _symbols: SymbolEntry[], opts?: WriteHexOptions): HexArtifact;