00000000: 42 41 53 45 3D 24 32 33 32 42 0D 43 45 4C 4C 32 |BASE=$232B.CELL2|
00000010: 31 3D 24 32 33 34 30 0D 43 45 4C 4C 32 3D 24 32 |1=$2340.CELL2=$2|
00000020: 33 32 44 0D 43 45 4C 4C 31 3D 24 32 33 32 43 0D |32D.CELL1=$232C.|
00000030: 54 4D 50 3D 24 32 33 32 41 0D 46 4C 41 47 3D 24 |TMP=$232A.FLAG=$|
00000040: 32 33 32 39 0D 48 49 43 4E 54 3D 24 32 33 32 38 |2329.HICNT=$2328|
00000050: 0D 3B 2D 2D 2D 2D 2D 50 41 52 54 49 41 4C 20 53 |.;-----PARTIAL S|
00000060: 45 45 44 2D 2D 2D 2D 2D 0D 2A 3D 24 32 33 33 31 |EED-----.*=$2331|
00000070: 0D 2E 44 42 59 54 45 20 24 30 33 30 35 2C 24 30 |..DBYTE $0305,$0|
00000080: 39 30 34 2C 24 30 37 30 31 2C 24 30 34 30 36 2C |904,$0701,$0406,|
00000090: 24 30 33 30 32 2C 24 30 30 30 35 2C 24 30 37 30 |$0302,$0005,$070|
000000A0: 34 2C 24 30 39 30 38 0D 2A 3D 24 32 33 34 31 0D |4,$0908.*=$2341.|
000000B0: 3B 0D 3B 0D 3B 0D 49 4E 49 54 20 20 4C 44 41 20 |;.;.;.INIT LDA |
000000C0: 23 30 20 3B 45 4E 54 52 59 20 50 4F 49 4E 54 20 |#0 ;ENTRY POINT |
000000D0: 54 4F 20 52 45 49 4E 49 54 49 41 4C 49 5A 45 0D |TO REINITIALIZE.|
000000E0: 20 20 20 20 20 20 20 53 54 41 20 48 49 43 4E 54 | STA HICNT|
000000F0: 20 20 20 20 20 20 20 3B 5A 45 52 4F 20 43 4F 55 | ;ZERO COU|
00000100: 4E 54 45 52 20 4D 4F 53 54 20 53 49 47 20 42 59 |NTER MOST SIG BY|
00000110: 54 45 0D 20 20 20 20 20 20 20 53 54 41 20 46 4C |TE. STA FL|
00000120: 41 47 20 3B 43 4C 45 41 52 20 46 4C 41 47 0D 20 |AG ;CLEAR FLAG. |
00000130: 20 20 20 20 20 20 54 41 59 20 20 20 20 20 20 20 | TAY |
00000140: 20 20 20 20 20 20 3B 5A 45 52 4F 20 43 4F 55 4E | ;ZERO COUN|
00000150: 54 45 52 20 4C 45 41 53 54 20 53 49 47 20 42 59 |TER LEAST SIG BY|
00000160: 54 45 0D 53 48 49 46 54 20 20 43 4C 43 20 20 20 |TE.SHIFT CLC |
00000170: 20 20 20 20 20 20 20 20 20 20 3B 45 4E 54 52 59 | ;ENTRY|
00000180: 20 41 46 54 45 52 20 52 45 49 4E 49 54 49 41 4C | AFTER REINITIAL|
00000190: 49 5A 41 54 49 4F 4E 0D 20 20 20 20 20 20 20 4C |IZATION. L|
000001A0: 44 41 20 43 45 4C 4C 32 31 0D 20 20 20 20 20 20 |DA CELL21. |
000001B0: 20 41 44 43 20 43 45 4C 4C 32 0D 20 20 20 20 20 | ADC CELL2. |
000001C0: 20 20 43 4D 50 20 23 31 30 0D 20 20 20 20 20 20 | CMP #10. |
000001D0: 20 42 43 43 20 54 45 4D 50 20 20 20 20 20 20 20 | BCC TEMP |
000001E0: 20 3B 41 43 43 20 3C 31 30 3A 20 41 4C 52 45 41 | ;ACC <10: ALREA|
000001F0: 44 59 20 4D 4F 44 20 31 30 0D 20 20 20 20 20 20 |DY MOD 10. |
00000200: 20 53 42 43 20 23 31 30 20 20 20 20 20 20 20 20 | SBC #10 |
00000210: 20 3B 49 46 20 4E 4F 54 2C 4D 41 4B 45 20 52 45 | ;IF NOT,MAKE RE|
00000220: 53 55 4C 54 20 4D 4F 44 20 31 30 0D 54 45 4D 50 |SULT MOD 10.TEMP|
00000230: 20 20 20 53 54 41 20 54 4D 50 20 20 3B 53 54 4F | STA TMP ;STO|
00000240: 52 45 20 55 4E 54 49 4C 20 53 48 49 46 54 20 49 |RE UNTIL SHIFT I|
00000250: 53 20 44 4F 4E 45 0D 20 20 20 20 20 20 20 4C 44 |S DONE. LD|
00000260: 58 20 23 32 30 20 20 3B 23 20 4F 46 20 54 49 4D |X #20 ;# OF TIM|
00000270: 45 53 20 54 4F 20 53 48 49 46 54 0D 4C 4F 4F 50 |ES TO SHIFT.LOOP|
00000280: 20 20 20 4C 44 41 20 42 41 53 45 2C 58 20 20 20 | LDA BASE,X |
00000290: 20 20 20 3B 53 48 49 46 54 20 46 52 4F 4D 20 48 | ;SHIFT FROM H|
000002A0: 45 52 45 2E 2E 2E 0D 20 20 20 20 20 20 20 53 54 |ERE.... ST|
000002B0: 41 20 42 41 53 45 2B 31 2C 58 20 3B 54 4F 20 48 |A BASE+1,X ;TO H|
000002C0: 45 52 45 0D 20 20 20 20 20 20 20 44 45 58 20 20 |ERE. DEX |
000002D0: 20 20 20 20 20 3B 4E 45 58 54 20 4C 4F 57 45 52 | ;NEXT LOWER|
000002E0: 20 43 45 4C 4C 0D 20 20 20 20 20 20 20 43 50 58 | CELL. CPX|
000002F0: 20 23 30 20 20 20 20 3B 44 4F 4E 45 20 59 45 54 | #0 ;DONE YET|
00000300: 3F 0D 20 20 20 20 20 20 20 42 4E 45 20 4C 4F 4F |?. BNE LOO|
00000310: 50 20 20 3B 4E 4F 2C 20 54 48 45 4E 20 4C 4F 4F |P ;NO, THEN LOO|
00000320: 50 0D 20 20 20 20 20 20 20 4C 44 41 20 54 4D 50 |P. LDA TMP|
00000330: 20 20 20 20 20 20 20 20 20 3B 47 45 54 20 4D 4F | ;GET MO|
00000340: 44 20 31 30 20 41 44 44 49 54 49 4F 4E 20 52 45 |D 10 ADDITION RE|
00000350: 53 55 4C 54 2E 2E 2E 0D 20 20 20 20 20 20 20 53 |SULT.... S|
00000360: 54 41 20 43 45 4C 4C 31 20 3B 41 4E 44 20 50 55 |TA CELL1 ;AND PU|
00000370: 54 20 49 4E 20 54 48 45 20 46 49 52 53 54 20 43 |T IN THE FIRST C|
00000380: 45 4C 4C 0D 20 20 20 20 20 20 20 4C 44 41 20 46 |ELL. LDA F|
00000390: 4C 41 47 20 20 20 3B 47 45 54 20 46 4C 41 47 0D |LAG ;GET FLAG.|
000003A0: 20 20 20 20 20 20 20 43 4D 50 20 23 24 46 46 20 | CMP #$FF |
000003B0: 3B 49 4E 49 54 49 41 4C 20 52 55 4E 4E 55 50 20 |;INITIAL RUNNUP |
000003C0: 44 4F 4E 45 3F 0D 20 20 20 20 20 20 20 42 4E 45 |DONE?. BNE|
000003D0: 20 4C 4F 4F 50 32 20 3B 4E 4F 2C 20 54 48 45 4E | LOOP2 ;NO, THEN|
000003E0: 20 43 4F 4E 54 49 4E 55 45 0D 20 20 20 20 20 20 | CONTINUE. |
000003F0: 20 52 54 53 20 20 20 20 3B 59 45 53 2C 20 42 41 | RTS ;YES, BA|
00000400: 43 4B 20 54 4F 20 4D 41 49 4E 20 50 52 47 4D 0D |CK TO MAIN PRGM.|
00000410: 4C 4F 4F 50 32 20 20 49 4E 59 20 20 20 20 20 20 |LOOP2 INY |
00000420: 20 20 20 20 20 20 20 3B 49 4E 43 52 45 4D 45 4E | ;INCREMEN|
00000430: 54 20 4C 45 41 53 54 20 53 49 47 20 42 59 54 45 |T LEAST SIG BYTE|
00000440: 0D 20 20 20 20 20 20 20 43 50 59 20 23 30 0D 20 |. CPY #0. |
00000450: 20 20 20 20 20 20 42 4E 45 20 53 48 49 46 54 20 | BNE SHIFT |
00000460: 20 20 20 20 20 20 3B 4E 4F 54 20 30 3A 20 43 4F | ;NOT 0: CO|
00000470: 4E 54 49 4E 55 45 0D 20 20 20 20 20 20 20 49 4E |NTINUE. IN|
00000480: 43 20 48 49 43 4E 54 20 20 20 20 20 20 20 3B 30 |C HICNT ;0|
00000490: 3A 20 49 4E 43 52 45 4D 45 4E 54 20 4D 4F 53 54 |: INCREMENT MOST|
000004A0: 20 53 49 47 20 42 59 54 45 0D 20 20 20 20 20 20 | SIG BYTE. |
000004B0: 20 4C 44 41 20 48 49 43 4E 54 0D 20 20 20 20 20 | LDA HICNT. |
000004C0: 20 20 43 4D 50 20 23 31 30 20 20 20 20 20 20 20 | CMP #10 |
000004D0: 20 20 3B 52 55 4E 4E 55 50 20 44 4F 4E 45 20 59 | ;RUNNUP DONE Y|
000004E0: 45 54 3F 0D 20 20 20 20 20 20 20 42 4E 45 20 53 |ET?. BNE S|
000004F0: 48 49 46 54 20 20 20 20 20 20 20 3B 4E 4F 2C 20 |HIFT ;NO, |
00000500: 43 4F 4E 54 49 4E 55 45 0D 20 20 20 20 20 20 20 |CONTINUE. |
00000510: 4C 44 41 20 23 24 46 46 0D 20 20 20 20 20 20 20 |LDA #$FF. |
00000520: 53 54 41 20 46 4C 41 47 20 3B 59 45 53 2C 20 53 |STA FLAG ;YES, S|
00000530: 45 54 20 46 4C 41 47 0D 20 20 20 20 20 20 20 4A |ET FLAG. J|
00000540: 4D 50 20 53 48 49 46 54 20 20 20 20 20 20 20 3B |MP SHIFT ;|
00000550: 44 4F 4E 45 20 52 55 4E 4E 55 50 2C 20 53 48 49 |DONE RUNNUP, SHI|
00000560: 46 54 20 4E 4F 52 4D 41 4C 20 4E 4F 57 0D 2E 45 |FT NORMAL NOW..E|
00000570: 4E 44 0D |ND. |
BASE=$232B.CELL21=$2340.CELL2=$232D.CELL
1=$232C.TMP=$232A.FLAG=$2329.HICNT=$2328
.;-----PARTIAL SEED-----.*=$2331..DBYTE
$0305,$0904,$0701,$0406,$0302,$0005,$070
4,$0908.*=$2341.;.;.;.INIT LDA #0 ;ENTR
Y POINT TO REINITIALIZE. STA HICNT
;ZERO COUNTER MOST SIG BYTE.
STA FLAG ;CLEAR FLAG. TAY
;ZERO COUNTER LEAST SIG BYTE.SHIFT
CLC ;ENTRY AFTER REINITIAL
IZATION. LDA CELL21. ADC CEL
L2. CMP #10. BCC TEMP
;ACC <10: ALREADY MOD 10. SBC #10
;IF NOT,MAKE RESULT MOD 10.TEMP
STA TMP ;STORE UNTIL SHIFT IS DONE.
LDX #20 ;# OF TIMES TO SHIFT.LOOP
LDA BASE,X ;SHIFT FROM HERE....
STA BASE+1,X ;TO HERE. DEX
;NEXT LOWER CELL. CPX #0 ;
DONE YET?. BNE LOOP ;NO, THEN LOO
P. LDA TMP ;GET MOD 10 ADD
ITION RESULT.... STA CELL1 ;AND PU
T IN THE FIRST CELL. LDA FLAG ;G
ET FLAG. CMP #$FF ;INITIAL RUNNUP
DONE?. BNE LOOP2 ;NO, THEN CONTINU
E. RTS ;YES, BACK TO MAIN PRGM.
LOOP2 INY ;INCREMENT LEAST
SIG BYTE. CPY #0. BNE SHIFT
;NOT 0: CONTINUE. INC HICNT
;0: INCREMENT MOST SIG BYTE.
LDA HICNT. CMP #10 ;RUNNU
P DONE YET?. BNE SHIFT ;NO,
CONTINUE. LDA #$FF. STA FLAG
;YES, SET FLAG. JMP SHIFT ;
DONE RUNNUP, SHIFT NORMAL NOW..END.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL