.PREL .IDENT PRTSUBS .INSERT BBEQU.ASM ; PRTSTG, QTSTG, PRTNUM, PRTLN PRTSTG:: SUB A PS1: MOV B,A PS2: LDAX D INX D CMP B RZ RSTOCH CPI CR JRNZ PS2 RET QTSTG:: TSTC '"',QT3 MVI A,'"' QT1: CALL PS1 QT2: CPI CR POP H JZ RUNNXL# INX H INX H PCHL QT3: TSTCC 027H,QT5 MVI A,027H JMPR QT1 QT5: RET PRTCHS:: MOV A,E CMP B RZ LDAX D RSTOCH INX D JMPR PRTCHS PRTNUM ==: . PUSH D ; SAVE GOOD OLD D LXI D,0FFH ; PUSH STACK END FLAG PUSH D LDA DEVNB# ; GET CONVERSION BASE ANI 3FH ; LIMIT TO BASE 64 OR SO CPI 2 ; REJECT 0 OR 1 AS IMPOSSIBLE JRNC ..OKB MVI A,10 ; FORCE BIZARROS TO 10 ..OKB: MOV E,A MVI D,0 PN3: MVI B,0 CALL CHKSGN# JP PN4 MVI B,'-' DCR C PN4: DCR C PUSH B PN5: CALL DIVIDE# MOV A,B ORA C JZ PN6 XTHL DCR L PUSH H MOV H,B MOV L,C JMPR PN5 PN6: POP B PN7: DCR C MOV A,C ORA A JM PN8 MVI A,' ' RSTOCH JMPR PN7 PN8: MOV A,B ORA A CNZ OUTCH# MOV E,L PN9: MOV A,E CPI 0FFH POP D RZ ADI '0' CPI '9'+1 JRC ..OKD ADI 7 ; RANGE A-Z ..OKD: RSTOCH JMPR PN9 PRTLN:: LDAX D MOV L,A INX D LDAX D MOV H,A INX D MVI C,2 CALL PRTNUM MVI A,' ' RSTOCH RET .END