[* * (n) (c) lpx * Print number n, using at least c characters. * * Different from normal, this function: * 1. Uses the current ibase (not the obase) to print the number. * 2. Prunes "0" digits from the right, so [1.500 1 lxp] prints "1.5". * 3. Pads "0" digits to the left, so [_1.5 6 lxp] prints "-001.5". * 4. Never prints a newline. *]sz [ Sc Sn [Local n, c = from stack.]sz K Ss [Local s = original scale.]sz [Reserve local variables D, F, I, L.]sz 0 SD 0 SF 0 SI 0 SL [ [If n < 0:]sz [-]P [Print negative sign.]sz lc 1 - sc [Decrement c.]sz 0 ln - sn [Negate n.]sz ]sI 0 ln 0:]sz 1 lf + - [Subtract 1 radix point + f from count.]sz ]sI 0 lf >I [ [Loop:]sz [0]P [Print a padding "0".]sz 1 - [Decrement count.]sz d 0 0.]sz ]sL d 0 0.]sz ]sL d 0 0:]sz [.]P [Print radix point.]sz lf [Push counter = f.]sz [ [Loop:]sz 1 - [Decrement counter.]sz d ;F lPx [Print digit F[counter].]sz d 0 0.]sz ]sL d 0 I [Restore variables n, c, d, f, D, F, L, I, P.]sz Lnsz Lcsz Ldsz Lfsz LDsz LFsz LLsz LIsz LPsz Ls k [Restore variable s. Restore original scale.]sz ]sp