; ========================================================================
; CS617 MathROM THIN module r022 -- math_b2bcd.inc
; Public entry: MATH_B2BCD
; Function: 16-bit binary to packed BCD
; Resident PB-2000C entry: &H0B53 (in internal low-ROM map)
;
; USAGE: #INCLUDE (lib/math/math_b2bcd.inc) exactly once in the source
;        CAL MATH_B2BCD
; Input (r021 fixture evidence): binary 16-bit in $3/$4
; Output (r021 fixture evidence): packed BCD $14..$16; NOT expanded B9
; Notes: Do not run B9 decoder on its native output.
;
; Self-contained source module: no other math_*.inc is needed *inside* it.
; Runtime dependencies: PB-2000C native low-ROM map and machine state
; (including UA/banks/workspace). The r021 ROM includes source-attributed
; numeric constants; kernel-by-kernel table dependence remains UNPROVEN.
; This module does not embed original ROM data, initialize operands, or
; establish angle mode. The application must qualify its environment.
; Register/flags clobbers, errors, mode/domain, reentrancy, full ABI: OPEN.
;
; Evidence: r021 23/23 owner-reported *single-fixture* emulator smoke.
;          This newly modular r022 path has NO owner assembly/emulator test yet.
; This is a candidate adapter, not a released mathematical API.
; Namespace: all optional internal labels must begin _MATH_B2BCD_.
;
; Rationale: tail JP retains the caller's CAL return frame and native flags,
; unlike a new CAL/RTN layer. Important for MATH_CMP's C/Z results.
; ========================================================================
MATH_B2BCD:
        JP      &H0B53
