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 2A 3D 24 32 33 34 |TMP=$232A.*=$234|
00000040: 31 0D 3B 0D 3B 0D 3B 0D 53 48 49 46 54 20 20 43 |1.;.;.;.SHIFT C|
00000050: 4C 43 20 20 20 20 20 20 20 20 20 20 20 20 20 3B |LC ;|
00000060: 45 4E 54 52 59 20 50 4F 49 4E 54 0D 20 20 20 20 |ENTRY POINT. |
00000070: 20 20 20 4C 44 41 20 43 45 4C 4C 32 31 0D 20 20 | LDA CELL21. |
00000080: 20 20 20 20 20 41 44 43 20 43 45 4C 4C 32 20 20 | ADC CELL2 |
00000090: 20 20 20 20 20 3B 41 44 44 20 54 48 45 53 45 20 | ;ADD THESE |
000000A0: 43 45 4C 4C 53 0D 20 20 20 20 20 20 20 43 4D 50 |CELLS. CMP|
000000B0: 20 23 31 30 0D 20 20 20 20 20 20 20 42 43 43 20 | #10. BCC |
000000C0: 54 45 4D 50 20 20 20 20 20 20 20 20 3B 41 43 43 |TEMP ;ACC|
000000D0: 20 3C 31 30 3A 20 41 4C 52 45 41 44 59 20 4D 4F | <10: ALREADY MO|
000000E0: 44 20 31 30 0D 20 20 20 20 20 20 20 53 42 43 20 |D 10. SBC |
000000F0: 23 31 30 20 20 20 20 20 20 20 20 20 3B 49 46 20 |#10 ;IF |
00000100: 4E 4F 54 2C 20 4D 41 4B 45 20 52 45 53 55 4C 54 |NOT, MAKE RESULT|
00000110: 20 4D 4F 44 20 31 30 0D 54 45 4D 50 20 20 20 53 | MOD 10.TEMP S|
00000120: 54 41 20 54 4D 50 20 3B 53 54 4F 52 45 20 55 4E |TA TMP ;STORE UN|
00000130: 54 49 4C 20 53 48 49 46 54 20 49 53 20 44 4F 4E |TIL SHIFT IS DON|
00000140: 45 0D 20 20 20 20 20 20 20 4C 44 58 20 23 32 30 |E. LDX #20|
00000150: 20 3B 23 20 4F 46 20 54 49 4D 45 53 20 54 4F 20 | ;# OF TIMES TO |
00000160: 53 48 49 46 54 0D 4C 4F 4F 50 20 20 20 4C 44 41 |SHIFT.LOOP LDA|
00000170: 20 42 41 53 45 2C 58 20 3B 53 48 49 46 54 20 46 | BASE,X ;SHIFT F|
00000180: 52 4F 4D 20 48 45 52 45 2E 2E 2E 0D 20 20 20 20 |ROM HERE.... |
00000190: 20 20 20 53 54 41 20 42 41 53 45 2B 31 2C 58 20 | STA BASE+1,X |
000001A0: 3B 54 4F 20 48 45 52 45 0D 20 20 20 20 20 20 20 |;TO HERE. |
000001B0: 44 45 58 20 3B 4E 45 58 54 20 4C 4F 57 45 52 20 |DEX ;NEXT LOWER |
000001C0: 43 45 4C 4C 0D 20 20 20 20 20 20 20 43 50 58 20 |CELL. CPX |
000001D0: 23 30 20 3B 44 4F 4E 45 20 59 45 54 3F 0D 20 20 |#0 ;DONE YET?. |
000001E0: 20 20 20 20 20 42 4E 45 20 4C 4F 4F 50 20 3B 4E | BNE LOOP ;N|
000001F0: 4F 2C 20 54 48 45 4E 20 4C 4F 4F 50 0D 20 20 20 |O, THEN LOOP. |
00000200: 20 20 20 20 4C 44 41 20 54 4D 50 20 20 3B 47 45 | LDA TMP ;GE|
00000210: 54 20 4D 4F 44 20 31 30 20 41 44 44 49 54 49 4F |T MOD 10 ADDITIO|
00000220: 4E 20 52 45 53 55 4C 54 2E 2E 2E 0D 20 20 20 20 |N RESULT.... |
00000230: 20 20 20 53 54 41 20 43 45 4C 4C 31 20 20 20 20 | STA CELL1 |
00000240: 20 20 20 3B 41 4E 44 20 50 55 54 20 49 4E 20 54 | ;AND PUT IN T|
00000250: 48 45 20 46 49 52 53 54 20 43 45 4C 4C 0D 20 20 |HE FIRST CELL. |
00000260: 20 20 20 20 20 52 54 53 20 20 3B 42 41 43 4B 20 | RTS ;BACK |
00000270: 54 4F 20 4D 41 49 4E 20 50 52 47 4D 2E 0D 20 20 |TO MAIN PRGM.. |
00000280: 2E 45 4E 44 0D |.END. |
BASE=$232B.CELL21=$2340.CELL2=$232D.CELL
1=$232C.TMP=$232A.*=$2341.;.;.;.SHIFT C
LC ;ENTRY POINT. LDA C
ELL21. ADC CELL2 ;ADD THESE
CELLS. CMP #10. BCC TEMP
;ACC <10: ALREADY MOD 10. SBC
#10 ;IF NOT, MAKE RESULT MOD 10.
TEMP STA TMP ;STORE UNTIL SHIFT IS DON
E. LDX #20 ;# OF TIMES TO SHIFT.LO
OP LDA BASE,X ;SHIFT FROM HERE....
STA BASE+1,X ;TO HERE. DEX ;NEX
T LOWER CELL. CPX #0 ;DONE YET?.
BNE LOOP ;NO, THEN LOOP. LDA
TMP ;GET MOD 10 ADDITION RESULT....
STA CELL1 ;AND PUT IN THE FIRST
CELL. RTS ;BACK TO MAIN PRGM..
.END.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL