Documente Academic
Documente Profesional
Documente Cultură
0000 ;
3100 ORG $3100
3100 ;
3100 A9 0D BINX LDA @ $0D ; Put ASCII carriage
3102 48 PHA ; return onto stack.
3103 A0 20 BINX1 LDY @ 32 ; Initialise bit cnt.
3105 A9 00 LDA @ 0 ; Clear A.
3107 06 80 BINX2 ASL M0 ; Shift
3109 26 81 ROL M1 ; 32-bit
310B 26 82 ROL M2 ; number
310D 26 83 ROL M3 ; left
310F 2A ROL A ; into A.
3110 C5 0C CMP MC ; A less than base?
3112 90 04 BCC BINX3 ; Jump if so.
3114 E5 0C SBC MC ; Subtract base from A
3116 E6 80 INC M0 ; & set result bit.
3118 88 BINX3 DEY ; Repeat
3119 D0 EC BNE BINX2 ; 32 times.
311B C9 0A CMP @ 10 ; Convert
311D 90 02 BCC BINX4 ; digit
311F 69 06 ADC @ 6 ; to
3121 69 30 BINX4 ADC @ $30 ; ASCII
3123 48 PHA ; & put onto stack.
3124 A5 83 LDA M3 ; Check
3126 05 82 ORA M2 ; if 32-bit
3128 05 81 ORA M1 ; number
312A 05 80 ORA M0 ; now = 0.
312C D0 D5 BNE BINX1 ; Repeat if not.
312E 68 BINX5 PLA ; Get digit &
312F 91 84 STA (M4),Y ; store in RAM.
3131 C8 INY ; Adjust pointer.
3132 C9 0E CMP @ $0E ; CR stored?
3134 B0 F8 BCS BINX5 ; If not, get next digit
3136 60 BINX6 RTS ; else return with Cy=0.
=================================================================