Apple II User Manual

Page of 257
1593   EA42 20 46 EA    WRAX   JSR NUMA
1594   EA45 8A                 TXA
1595   EA46
1596   EA46             ;PRINT ONE BYTE=TWO ASCII CHARS TO OUTPUT DEVICE
1597   EA46 48          NUMA   PHA
1598   EA47 4A                 LSR A
1599   EA48 4A                 LSR A
1600   EA49 4A                 LSR A
1601   EA4A 4A                 LSR A
1602   EA4B 20 51 EA           JSR NOUT
1603   EA4E 68                 PLA
1604   EA4F 29 0F              AND #$F
1605   EA51 18          NOUT   CLC
1606   EA52 69 30              ADC #'0'
1607   EA54 C9 3A              CMP #'9'+1
1608   EA56 90 02              BCC LT10
1609   EA58 69 06              ADC #6          ;CARRY IS SET
1610   EA5A 4C BC E9    LT10   JMP OUTALL
1611   EA5D
1612   EA5D             ;READ TWO CHR & PACK THEM INTO ONE BYTE
1613   EA5D             ;PART OF ALTER MEMORY , / COMM
1614   EA5D 20 73 E9    RD2    JSR REDOUT
1615   EA60 C9 0D              CMP #CR         ;<CR>?
1616   EA62 F0 17              BEQ RSPAC
1617   EA64 C9 20              CMP #' '        ;FOR MEMORY ALTER
1618   EA66 F0 13              BEQ RSPAC
1619   EA68 C9 2E              CMP #'.'        ;TREAT "." AS <SPACE>
1620   EA6A D0 04              BNE RD1
1621   EA6C A9 20              LDA #' '
1622   EA6E D0 0B              BNE RSPAC
1623   EA70 20 84 EA    RD1    JSR PACK
1624   EA73 B0 06              BCS RSPAC
1625   EA75 20 73 E9           JSR REDOUT
1626   EA78 4C 84 EA           JMP PACK
1627   EA7B             ;WAS SPACE OR <CR>
1628   EA7B 38          RSPAC  SEC
1629   EA7C 60                 RTS
1630   EA7D
1631   EA7D             ;CONVERT ACC IN ASCII TO ACC IN HEX (4 MSB=0)
1632   EA7D 48          HEX    PHA             ;SAVE A
1633   EA7E A9 00              LDA #0          ;CLEAR STIY IF HEX
1634   EA80 8D 29 A4           STA STIY+2      ;BECAUSE ONLY ONCE
1635   EA83 68                 PLA
1636   EA84             ;PACK TWO ASCII INTO ONE HEX (CALL SUBR TWO TIMES)
1637   EA84             ;RESULT IS GIVEN ON ACC WITH FIRST CHR INTO 4 MSB
1638   EA84 C9 30       PACK   CMP #'0'        ;< 30 ?
1639   EA86 90 F3              BCC RSPAC
1640   EA88 C9 47              CMP #'F'+1      ; > 47 ?
1641   EA8A B0 EF              BCS RSPAC
1642   EA8C C9 3A              CMP #'9'+1      ; < $10
1643   EA8E 90 06              BCC PAK1
1644   EA90 C9 40              CMP #'A'-1      ; > $10 ?
1645   EA92 90 E7              BCC RSPAC
1646   EA94 69 08              ADC #8          ;ADD 9 IF LETTER (C IS SET)
1647   EA96 2A          PAK1   ROL A           ;SHIFT A 4 TIMES
1648   EA97 2A                 ROL A
1649   EA98 2A                 ROL A
1650   EA99 2A                 ROL A
1651   EA9A 8E 2D A4           STX CPIY+3      ;SAVE X
1652   EA9D A2 04              LDX #4
1653   EA9F 2A          PAK2   ROL A           ;TRANSFER A TO STIY
1654   EAA0 2E 29 A4           ROL STIY+2      ; THRU CARRY