_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

ARITH.SRC

FILE INFORMATION

FILENAME(S): ARITH.SRC

FILE TYPE(S): SEQ

FILE SIZE: 3.5K

FIRST SEEN: 2025-10-20 00:37:13

APPEARS ON: 3 disk(s)

FILE HASH

92bb5a791cf917c9fc5fb93f8b7947522dc39b2db0bd7afef71678199a48f93e

FOUND ON DISKS (3 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
SONDERHEFT 4 ARITH.SRC SEQ C64er, Treasure Chest - Holger 24 4 DOWNLOAD FILE
SONDERHEFT 4 ARITH.SRC SEQ Treasure Chest - Klaus Der Suhler 24 4 DOWNLOAD FILE
SONDERHEFT 4 ARITH.SRC SEQ Treasure Chest - ralf 24 4 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 3B 20 49 4E 54 45 47 45  52 20 41 52 49 54 48 4D  |; INTEGER ARITHM|
00000010: 45 54 49 43 20 52 4F 55  54 49 4E 45 53 0D 3B 0D  |ETIC ROUTINES.;.|
00000020: 3B 20 52 49 43 48 41 52  44 20 4C 2E 20 52 59 4C  |; RICHARD L. RYL|
00000030: 41 4E 44 45 52 20 20 20  20 38 2F 31 32 2F 38 34  |ANDER    8/12/84|
00000040: 0D 3B 0D 3B 20 52 45 56  49 53 45 44 20 31 30 2F  |.;.; REVISED 10/|
00000050: 32 39 2F 38 34 20 54 4F  20 41 44 44 20 46 55 4C  |29/84 TO ADD FUL|
00000060: 4C 20 44 4F 55 42 4C 45  0D 3B 20 50 52 45 43 49  |L DOUBLE.; PRECI|
00000070: 53 49 4F 4E 20 41 52 47  55 4D 45 4E 54 53 20 49  |SION ARGUMENTS I|
00000080: 4E 20 44 49 56 49 44 45  20 52 4F 55 54 49 4E 45  |N DIVIDE ROUTINE|
00000090: 0D 3B 0D 3B 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |.;.;************|
000000A0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
000000B0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 0D 3B 0D  |*************.;.|
000000C0: 3B 20 55 53 45 20 50 41  47 45 20 5A 45 52 4F 20  |; USE PAGE ZERO |
000000D0: 4C 4F 43 41 54 49 4F 4E  53 20 57 48 45 52 45 20  |LOCATIONS WHERE |
000000E0: 50 4F 53 53 49 42 4C 45  20 46 4F 52 0D 3B 20 49  |POSSIBLE FOR.; I|
000000F0: 54 45 52 41 54 49 56 45  20 50 52 4F 43 45 44 55  |TERATIVE PROCEDU|
00000100: 52 45 20 57 4F 52 4B 20  53 50 41 43 45 0D 3B 0D  |RE WORK SPACE.;.|
00000110: 4D 4C 50 43 4E 44 20 3D  24 41 43 20 20 20 20 3B  |MLPCND =$AC    ;|
00000120: 20 4D 55 4C 54 49 50 4C  49 43 41 4E 44 0D 4D 4C  | MULTIPLICAND.ML|
00000130: 50 4C 45 52 20 3D 24 41  44 20 20 20 20 3B 20 4D  |PLER =$AD    ; M|
00000140: 55 4C 54 49 50 4C 49 45  52 0D 50 52 4F 44 20 20  |ULTIPLIER.PROD  |
00000150: 20 3D 24 41 45 20 20 20  20 3B 20 50 52 4F 44 55  | =$AE    ; PRODU|
00000160: 43 54 0D 3B 0D 44 56 44  4E 44 20 20 3D 24 46 44  |CT.;.DVDND  =$FD|
00000170: 20 20 20 20 3B 20 44 49  56 49 44 45 4E 44 2F 51  |    ; DIVIDEND/Q|
00000180: 55 4F 54 49 45 4E 54 0D  44 56 53 4F 52 20 20 3D  |UOTIENT.DVSOR  =|
00000190: 24 46 42 20 20 20 20 3B  20 44 49 56 49 53 4F 52  |$FB    ; DIVISOR|
000001A0: 0D 52 4D 4E 44 52 20 20  3D 24 42 34 20 20 20 20  |.RMNDR  =$B4    |
000001B0: 3B 20 52 45 4D 41 49 4E  44 45 52 0D 3B 0D 52 41  |; REMAINDER.;.RA|
000001C0: 44 43 4E 44 20 3D 24 41  43 20 20 20 20 3B 20 52  |DCND =$AC    ; R|
000001D0: 41 44 49 43 41 4E 44 0D  52 4F 4F 54 20 20 20 3D  |ADICAND.ROOT   =|
000001E0: 24 30 33 33 43 20 20 3B  20 53 51 55 41 52 45 20  |$033C  ; SQUARE |
000001F0: 52 4F 4F 54 0D 3B 0D 54  45 4D 50 20 20 20 3D 24  |ROOT.;.TEMP   =$|
00000200: 46 42 0D 3B 0D 3B 20 53  45 54 20 55 50 20 53 45  |FB.;.; SET UP SE|
00000210: 45 44 20 56 41 4C 55 45  53 20 46 4F 52 20 50 53  |ED VALUES FOR PS|
00000220: 45 55 44 4F 2D 52 41 4E  44 4F 4D 20 4E 55 4D 42  |EUDO-RANDOM NUMB|
00000230: 45 52 53 0D 20 20 20 20  20 20 2A 3D 24 43 30 30  |ERS.      *=$C00|
00000240: 30 0D 52 4E 44 4D 20 20  20 2E 42 59 54 45 20 24  |0.RNDM   .BYTE $|
00000250: 46 46 2C 24 35 35 0D 52  54 45 4D 50 20 20 2E 42  |FF,$55.RTEMP  .B|
00000260: 59 54 45 20 24 30 30 2C  24 30 30 0D 3B 0D 3B 0D  |YTE $00,$00.;.;.|
00000270: 3B 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |;***************|
00000280: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000290: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 0D 3B 0D 3B 20 4D  |**********.;.; M|
000002A0: 55 4C 54 49 50 4C 59 20  53 49 4E 47 4C 45 20 50  |ULTIPLY SINGLE P|
000002B0: 52 45 43 49 53 49 4F 4E  20 4D 55 4C 54 49 50 4C  |RECISION MULTIPL|
000002C0: 49 43 41 4E 44 0D 3B 20  42 59 20 53 49 4E 47 4C  |ICAND.; BY SINGL|
000002D0: 45 20 50 52 45 43 49 53  49 4F 4E 20 4D 55 4C 54  |E PRECISION MULT|
000002E0: 49 50 4C 49 45 52 20 47  49 56 49 4E 47 0D 3B 20  |IPLIER GIVING.; |
000002F0: 44 4F 55 42 4C 45 20 50  52 45 43 49 53 49 4F 4E  |DOUBLE PRECISION|
00000300: 20 50 52 4F 44 55 43 54  20 28 45 4E 54 45 52 20  | PRODUCT (ENTER |
00000310: 41 54 20 22 4D 55 4C 54  22 29 0D 3B 0D 3B 20 53  |AT "MULT").;.; S|
00000320: 50 45 43 49 41 4C 20 43  41 53 45 3A 20 45 4E 54  |PECIAL CASE: ENT|
00000330: 45 52 20 41 54 20 22 53  51 55 41 52 45 22 20 54  |ER AT "SQUARE" T|
00000340: 4F 20 46 49 4E 44 0D 3B  20 53 51 55 41 52 45 20  |O FIND.; SQUARE |
00000350: 4F 46 20 53 49 47 4E 45  44 20 38 2D 42 49 54 20  |OF SIGNED 8-BIT |
00000360: 4E 55 4D 42 45 52 0D 3B  0D 53 51 55 41 52 45 20  |NUMBER.;.SQUARE |
00000370: 4C 44 41 20 4D 4C 50 43  4E 44 20 20 3B 20 45 4E  |LDA MLPCND  ; EN|
00000380: 54 52 59 20 54 4F 20 53  51 55 41 52 45 0D 20 20  |TRY TO SQUARE.  |
00000390: 20 20 20 20 20 42 50 4C  20 50 4F 53 49 54 56 20  |     BPL POSITV |
000003A0: 20 3B 20 55 53 45 20 41  42 53 4F 4C 55 54 45 20  | ; USE ABSOLUTE |
000003B0: 56 41 4C 55 45 0D 20 20  20 20 20 20 20 53 45 43  |VALUE.       SEC|
000003C0: 20 20 20 20 20 20 20 20  20 3B 20 4E 45 47 41 54  |         ; NEGAT|
000003D0: 45 20 49 46 20 4E 45 45  44 45 44 0D 20 20 20 20  |E IF NEEDED.    |
000003E0: 20 20 20 4C 44 41 20 23  24 30 30 0D 20 20 20 20  |   LDA #$00.    |
000003F0: 20 20 20 53 42 43 20 4D  4C 50 43 4E 44 0D 20 20  |   SBC MLPCND.  |
00000400: 20 20 20 20 20 53 54 41  20 4D 4C 50 43 4E 44 0D  |     STA MLPCND.|
00000410: 50 4F 53 49 54 56 20 53  54 41 20 4D 4C 50 4C 45  |POSITV STA MLPLE|
00000420: 52 0D 4D 55 4C 54 20 20  20 4C 44 41 20 23 24 30  |R.MULT   LDA #$0|
00000430: 30 20 20 20 20 3B 20 45  4E 54 52 59 20 54 4F 20  |0    ; ENTRY TO |
00000440: 4D 55 4C 54 49 50 4C 59  0D 20 20 20 20 20 20 20  |MULTIPLY.       |
00000450: 4C 44 58 20 23 24 30 38  0D 4D 4C 4F 4F 50 20 20  |LDX #$08.MLOOP  |
00000460: 4C 53 52 20 4D 4C 50 4C  45 52 0D 20 20 20 20 20  |LSR MLPLER.     |
00000470: 20 20 42 43 43 20 4E 4F  41 44 44 0D 20 20 20 20  |  BCC NOADD.    |
00000480: 20 20 20 43 4C 43 0D 20  20 20 20 20 20 20 41 44  |   CLC.       AD|
00000490: 43 20 4D 4C 50 43 4E 44  0D 4E 4F 41 44 44 20 20  |C MLPCND.NOADD  |
000004A0: 52 4F 52 20 41 0D 20 20  20 20 20 20 20 52 4F 52  |ROR A.       ROR|
000004B0: 20 50 52 4F 44 0D 20 20  20 20 20 20 20 44 45 58  | PROD.       DEX|
000004C0: 0D 20 20 20 20 20 20 20  42 4E 45 20 4D 4C 4F 4F  |.       BNE MLOO|
000004D0: 50 0D 20 20 20 20 20 20  20 53 54 41 20 50 52 4F  |P.       STA PRO|
000004E0: 44 2B 31 0D 20 20 20 20  20 20 20 52 54 53 0D 3B  |D+1.       RTS.;|
000004F0: 0D 3B 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |.;**************|
00000500: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000510: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 0D 3B 0D 3B 20  |***********.;.; |
00000520: 44 49 56 49 44 45 20 44  4F 55 42 4C 45 20 50 52  |DIVIDE DOUBLE PR|
00000530: 45 43 49 53 49 4F 4E 20  44 49 56 49 44 45 4E 44  |ECISION DIVIDEND|
00000540: 0D 3B 20 42 59 20 44 4F  55 42 4C 45 20 50 52 45  |.; BY DOUBLE PRE|
00000550: 43 49 53 49 4F 4E 20 44  49 56 49 53 4F 52 20 47  |CISION DIVISOR G|
00000560: 49 56 49 4E 47 0D 3B 20  44 4F 55 42 4C 45 20 50  |IVING.; DOUBLE P|
00000570: 52 45 43 49 53 49 4F 4E  20 51 55 4F 54 49 45 4E  |RECISION QUOTIEN|
00000580: 54 0D 3B 0D 3B 20 44 49  56 49 44 45 4E 44 20 49  |T.;.; DIVIDEND I|
00000590: 53 20 52 45 50 4C 41 43  45 44 20 42 59 20 51 55  |S REPLACED BY QU|
000005A0: 4F 54 49 45 4E 54 0D 3B  20 49 4E 20 54 48 45 20  |OTIENT.; IN THE |
000005B0: 50 52 4F 43 45 53 53 0D  3B 0D 3B 20 51 55 4F 54  |PROCESS.;.; QUOT|
000005C0: 49 45 4E 54 20 49 53 20  52 4F 55 4E 44 45 44 20  |IENT IS ROUNDED |
000005D0: 54 4F 20 4E 45 41 52 45  53 54 20 49 4E 54 45 47  |TO NEAREST INTEG|
000005E0: 45 52 0D 3B 0D 44 49 56  49 44 45 20 4C 44 41 20  |ER.;.DIVIDE LDA |
000005F0: 23 24 30 30 0D 20 20 20  20 20 20 20 53 54 41 20  |#$00.       STA |
00000600: 52 4D 4E 44 52 0D 20 20  20 20 20 20 20 53 54 41  |RMNDR.       STA|
00000610: 20 52 4D 4E 44 52 2B 31  0D 20 20 20 20 20 20 20  | RMNDR+1.       |
00000620: 4C 44 58 20 23 24 31 30  0D 44 4C 4F 4F 50 20 20  |LDX #$10.DLOOP  |
00000630: 52 4F 4C 20 44 56 44 4E  44 0D 20 20 20 20 20 20  |ROL DVDND.      |
00000640: 20 52 4F 4C 20 44 56 44  4E 44 2B 31 0D 20 20 20  | ROL DVDND+1.   |
00000650: 20 20 20 20 52 4F 4C 20  52 4D 4E 44 52 0D 20 20  |    ROL RMNDR.  |
00000660: 20 20 20 20 20 52 4F 4C  20 52 4D 4E 44 52 2B 31  |     ROL RMNDR+1|
00000670: 0D 20 20 20 20 20 20 20  53 45 43 0D 20 20 20 20  |.       SEC.    |
00000680: 20 20 20 4C 44 41 20 52  4D 4E 44 52 0D 20 20 20  |   LDA RMNDR.   |
00000690: 20 20 20 20 53 42 43 20  44 56 53 4F 52 0D 20 20  |    SBC DVSOR.  |
000006A0: 20 20 20 20 20 54 41 59  0D 20 20 20 20 20 20 20  |     TAY.       |
000006B0: 4C 44 41 20 52 4D 4E 44  52 2B 31 0D 20 20 20 20  |LDA RMNDR+1.    |
000006C0: 20 20 20 53 42 43 20 44  56 53 4F 52 2B 31 0D 20  |   SBC DVSOR+1. |
000006D0: 20 20 20 20 20 20 42 43  43 20 44 45 43 43 4E 54  |      BCC DECCNT|
000006E0: 0D 20 20 20 20 20 20 20  53 54 59 20 52 4D 4E 44  |.       STY RMND|
000006F0: 52 0D 20 20 20 20 20 20  20 53 54 41 20 52 4D 4E  |R.       STA RMN|
00000700: 44 52 2B 31 0D 44 45 43  43 4E 54 20 44 45 58 0D  |DR+1.DECCNT DEX.|
00000710: 20 20 20 20 20 20 20 42  4E 45 20 44 4C 4F 4F 50  |       BNE DLOOP|
00000720: 0D 20 20 20 20 20 20 20  52 4F 4C 20 44 56 44 4E  |.       ROL DVDN|
00000730: 44 20 20 20 20 20 3B 20  43 48 45 43 4B 20 49 46  |D     ; CHECK IF|
00000740: 20 52 45 4D 41 49 4E 44  45 52 0D 20 20 20 20 20  | REMAINDER.     |
00000750: 20 20 52 4F 4C 20 44 56  44 4E 44 2B 31 20 20 20  |  ROL DVDND+1   |
00000760: 3B 20 49 53 20 3E 3D 20  31 2F 32 20 4F 46 20 44  |; IS >= 1/2 OF D|
00000770: 49 56 49 44 45 4E 44 0D  20 20 20 20 20 20 20 41  |IVIDEND.       A|
00000780: 53 4C 20 52 4D 4E 44 52  20 20 20 20 20 3B 20 46  |SL RMNDR     ; F|
00000790: 4F 52 20 52 4F 55 4E 44  49 4E 47 0D 20 20 20 20  |OR ROUNDING.    |
000007A0: 20 20 20 52 4F 4C 20 52  4D 4E 44 52 2B 31 0D 20  |   ROL RMNDR+1. |
000007B0: 20 20 20 20 20 20 42 43  53 20 52 4F 55 4E 44 0D  |      BCS ROUND.|
000007C0: 20 20 20 20 20 20 20 53  45 43 0D 20 20 20 20 20  |       SEC.     |
000007D0: 20 20 4C 44 41 20 44 56  53 4F 52 0D 20 20 20 20  |  LDA DVSOR.    |
000007E0: 20 20 20 53 42 43 20 52  4D 4E 44 52 0D 20 20 20  |   SBC RMNDR.   |
000007F0: 20 20 20 20 4C 44 41 20  44 56 53 4F 52 2B 31 0D  |    LDA DVSOR+1.|
00000800: 20 20 20 20 20 20 20 53  42 43 20 52 4D 4E 44 52  |       SBC RMNDR|
00000810: 2B 31 0D 20 20 20 20 20  20 20 42 43 53 20 4E 4F  |+1.       BCS NO|
00000820: 43 48 4E 47 0D 52 4F 55  4E 44 20 20 49 4E 43 20  |CHNG.ROUND  INC |
00000830: 44 56 44 4E 44 0D 20 20  20 20 20 20 20 42 4E 45  |DVDND.       BNE|
00000840: 20 4E 4F 43 48 4E 47 0D  20 20 20 20 20 20 20 49  | NOCHNG.       I|
00000850: 4E 43 20 44 56 44 4E 44  2B 31 0D 4E 4F 43 48 4E  |NC DVDND+1.NOCHN|
00000860: 47 20 52 54 53 0D 3B 0D  3B 2A 2A 2A 2A 2A 2A 2A  |G RTS.;.;*******|
00000870: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000880: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000890: 2A 2A 0D 3B 0D 3B 20 54  41 4B 45 20 49 4E 54 45  |**.;.; TAKE INTE|
000008A0: 47 45 52 20 53 51 55 41  52 45 20 52 4F 4F 54 20  |GER SQUARE ROOT |
000008B0: 4F 46 20 41 0D 3B 20 44  4F 55 42 4C 45 20 50 52  |OF A.; DOUBLE PR|
000008C0: 45 43 49 53 49 4F 4E 20  52 41 44 49 43 41 4E 44  |ECISION RADICAND|
000008D0: 20 47 49 56 49 4E 47 0D  3B 20 53 49 4E 47 4C 45  | GIVING.; SINGLE|
000008E0: 20 50 52 45 43 49 53 49  4F 4E 20 52 4F 4F 54 20  | PRECISION ROOT |
000008F0: 28 20 3C 3D 20 52 45 41  4C 20 52 4F 4F 54 20 29  |( <= REAL ROOT )|
00000900: 0D 3B 0D 53 51 52 54 20  20 20 4C 44 58 20 23 24  |.;.SQRT   LDX #$|
00000910: 30 38 0D 20 20 20 20 20  20 20 4C 44 41 20 23 24  |08.       LDA #$|
00000920: 30 30 0D 20 20 20 20 20  20 20 53 54 41 20 52 4F  |00.       STA RO|
00000930: 4F 54 0D 20 20 20 20 20  20 20 53 54 41 20 52 4F  |OT.       STA RO|
00000940: 4F 54 2B 31 0D 20 20 20  20 20 20 20 53 54 41 20  |OT+1.       STA |
00000950: 54 45 4D 50 0D 20 20 20  20 20 20 20 53 54 41 20  |TEMP.       STA |
00000960: 54 45 4D 50 2B 31 0D 53  51 52 54 31 20 20 41 53  |TEMP+1.SQRT1  AS|
00000970: 4C 20 52 4F 4F 54 0D 20  20 20 20 20 20 20 52 4F  |L ROOT.       RO|
00000980: 4C 20 52 4F 4F 54 2B 31  0D 20 20 20 20 20 20 20  |L ROOT+1.       |
00000990: 49 4E 43 20 52 4F 4F 54  20 20 20 20 3B 20 41 53  |INC ROOT    ; AS|
000009A0: 53 55 4D 45 20 43 55 52  52 45 4E 54 20 4C 53 42  |SUME CURRENT LSB|
000009B0: 20 4F 46 0D 20 20 20 20  20 20 20 42 4E 45 20 4E  | OF.       BNE N|
000009C0: 45 58 54 31 20 20 20 3B  20 52 4F 4F 54 20 57 49  |EXT1   ; ROOT WI|
000009D0: 4C 4C 20 42 45 20 31 0D  20 20 20 20 20 20 20 49  |LL BE 1.       I|
000009E0: 4E 43 20 52 4F 4F 54 2B  31 0D 4E 45 58 54 31 20  |NC ROOT+1.NEXT1 |
000009F0: 20 41 53 4C 20 52 41 44  43 4E 44 20 20 3B 20 53  | ASL RADCND  ; S|
00000A00: 48 49 46 54 20 52 41 44  49 43 41 4E 44 20 4C 45  |HIFT RADICAND LE|
00000A10: 46 54 0D 20 20 20 20 20  20 20 52 4F 4C 20 52 41  |FT.       ROL RA|
00000A20: 44 43 4E 44 2B 31 20 3B  20 54 57 49 43 45 20 49  |DCND+1 ; TWICE I|
00000A30: 4E 54 4F 20 54 45 4D 50  0D 20 20 20 20 20 20 20  |NTO TEMP.       |
00000A40: 52 4F 4C 20 54 45 4D 50  0D 20 20 20 20 20 20 20  |ROL TEMP.       |
00000A50: 52 4F 4C 20 54 45 4D 50  2B 31 0D 20 20 20 20 20  |ROL TEMP+1.     |
00000A60: 20 20 41 53 4C 20 52 41  44 43 4E 44 0D 20 20 20  |  ASL RADCND.   |
00000A70: 20 20 20 20 52 4F 4C 20  52 41 44 43 4E 44 2B 31  |    ROL RADCND+1|
00000A80: 0D 20 20 20 20 20 20 20  52 4F 4C 20 54 45 4D 50  |.       ROL TEMP|
00000A90: 0D 20 20 20 20 20 20 20  52 4F 4C 20 54 45 4D 50  |.       ROL TEMP|
00000AA0: 2B 31 0D 20 20 20 20 20  20 20 53 45 43 20 20 20  |+1.       SEC   |
00000AB0: 20 20 20 20 20 20 3B 20  53 55 42 54 52 41 43 54  |      ; SUBTRACT|
00000AC0: 20 52 4F 4F 54 20 45 53  54 49 4D 41 54 45 0D 20  | ROOT ESTIMATE. |
00000AD0: 20 20 20 20 20 20 4C 44  41 20 54 45 4D 50 20 20  |      LDA TEMP  |
00000AE0: 20 20 3B 20 46 52 4F 4D  20 54 45 4D 50 0D 20 20  |  ; FROM TEMP.  |
00000AF0: 20 20 20 20 20 53 42 43  20 52 4F 4F 54 0D 20 20  |     SBC ROOT.  |
00000B00: 20 20 20 20 20 54 41 59  0D 20 20 20 20 20 20 20  |     TAY.       |
00000B10: 4C 44 41 20 54 45 4D 50  2B 31 0D 20 20 20 20 20  |LDA TEMP+1.     |
00000B20: 20 20 53 42 43 20 52 4F  4F 54 2B 31 0D 20 20 20  |  SBC ROOT+1.   |
00000B30: 20 20 20 20 42 43 43 20  52 45 53 54 4F 52 0D 20  |    BCC RESTOR. |
00000B40: 20 20 20 20 20 20 53 54  41 20 54 45 4D 50 2B 31  |      STA TEMP+1|
00000B50: 20 20 3B 20 53 55 42 54  52 41 43 54 49 4F 4E 20  |  ; SUBTRACTION |
00000B60: 4F 4B 0D 20 20 20 20 20  20 20 53 54 59 20 54 45  |OK.       STY TE|
00000B70: 4D 50 0D 20 20 20 20 20  20 20 49 4E 43 20 52 4F  |MP.       INC RO|
00000B80: 4F 54 0D 20 20 20 20 20  20 20 42 4E 45 20 4E 45  |OT.       BNE NE|
00000B90: 58 54 32 0D 20 20 20 20  20 20 20 49 4E 43 20 52  |XT2.       INC R|
00000BA0: 4F 4F 54 2B 31 0D 4E 45  58 54 32 20 20 44 45 58  |OOT+1.NEXT2  DEX|
00000BB0: 0D 20 20 20 20 20 20 20  42 4E 45 20 53 51 52 54  |.       BNE SQRT|
00000BC0: 31 0D 20 20 20 20 20 20  20 4A 4D 50 20 46 49 4E  |1.       JMP FIN|
00000BD0: 49 0D 52 45 53 54 4F 52  20 53 45 43 20 20 20 20  |I.RESTOR SEC    |
00000BE0: 20 20 20 20 20 3B 20 49  47 4E 4F 52 45 20 53 55  |     ; IGNORE SU|
00000BF0: 42 54 52 41 43 54 49 4F  4E 0D 20 20 20 20 20 20  |BTRACTION.      |
00000C00: 20 4C 44 41 20 52 4F 4F  54 20 20 20 20 3B 20 41  | LDA ROOT    ; A|
00000C10: 4E 44 20 52 45 53 45 54  20 4C 53 42 20 4F 46 20  |ND RESET LSB OF |
00000C20: 52 4F 4F 54 0D 20 20 20  20 20 20 20 53 42 43 20  |ROOT.       SBC |
00000C30: 23 24 30 31 0D 20 20 20  20 20 20 20 53 54 41 20  |#$01.       STA |
00000C40: 52 4F 4F 54 0D 20 20 20  20 20 20 20 42 43 53 20  |ROOT.       BCS |
00000C50: 4E 45 58 54 33 0D 20 20  20 20 20 20 20 44 45 43  |NEXT3.       DEC|
00000C60: 20 52 4F 4F 54 2B 31 0D  4E 45 58 54 33 20 20 44  | ROOT+1.NEXT3  D|
00000C70: 45 58 0D 20 20 20 20 20  20 20 42 4E 45 20 53 51  |EX.       BNE SQ|
00000C80: 52 54 31 0D 46 49 4E 49  20 20 20 52 4F 52 20 52  |RT1.FINI   ROR R|
00000C90: 4F 4F 54 2B 31 20 20 3B  20 46 49 4E 41 4C 20 2F  |OOT+1  ; FINAL /|
00000CA0: 32 20 54 4F 20 4E 4F 52  4D 41 4C 49 5A 45 0D 20  |2 TO NORMALIZE. |
00000CB0: 20 20 20 20 20 20 52 4F  52 20 52 4F 4F 54 0D 20  |      ROR ROOT. |
00000CC0: 20 20 20 20 20 20 52 54  53 0D 3B 0D 3B 2A 2A 2A  |      RTS.;.;***|
00000CD0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000CE0: 2A 2A 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A  |****************|
00000CF0: 2A 2A 2A 2A 2A 2A 0D 3B  0D 3B 20 47 45 4E 45 52  |******.;.; GENER|
00000D00: 41 54 45 20 50 53 45 55  44 4F 2D 52 41 4E 44 4F  |ATE PSEUDO-RANDO|
00000D10: 4D 20 42 59 54 45 53 0D  3B 20 45 58 49 54 20 57  |M BYTES.; EXIT W|
00000D20: 49 54 48 20 50 2D 52 20  42 59 54 45 20 49 4E 20  |ITH P-R BYTE IN |
00000D30: 41 43 43 55 4D 2E 0D 3B  0D 52 41 4E 44 4F 4D 20  |ACCUM..;.RANDOM |
00000D40: 4C 44 41 20 52 4E 44 4D  0D 20 20 20 20 20 20 20  |LDA RNDM.       |
00000D50: 53 54 41 20 52 54 45 4D  50 0D 20 20 20 20 20 20  |STA RTEMP.      |
00000D60: 20 45 4F 52 20 52 4E 44  4D 2B 31 0D 20 20 20 20  | EOR RNDM+1.    |
00000D70: 20 20 20 52 4F 4C 20 52  54 45 4D 50 2B 31 20 20  |   ROL RTEMP+1  |
00000D80: 3B 20 52 54 45 4D 50 2B  31 20 50 52 45 53 45 52  |; RTEMP+1 PRESER|
00000D90: 56 45 53 0D 20 20 20 20  20 20 20 52 4F 52 20 41  |VES.       ROR A|
00000DA0: 20 20 20 20 20 20 20 20  3B 20 43 41 52 52 59 20  |        ; CARRY |
00000DB0: 42 49 54 20 46 4F 52 20  43 59 43 4C 49 4E 47 0D  |BIT FOR CYCLING.|
00000DC0: 20 20 20 20 20 20 20 52  4F 52 20 52 54 45 4D 50  |       ROR RTEMP|
00000DD0: 2B 31 20 20 3B 20 52 41  4E 44 4F 4D 20 4E 55 4D  |+1  ; RANDOM NUM|
00000DE0: 42 45 52 53 0D 20 20 20  20 20 20 20 53 54 41 20  |BERS.       STA |
00000DF0: 52 4E 44 4D 0D 20 20 20  20 20 20 20 4C 44 41 20  |RNDM.       LDA |
00000E00: 52 54 45 4D 50 0D 20 20  20 20 20 20 20 53 54 41  |RTEMP.       STA|
00000E10: 20 52 4E 44 4D 2B 31 0D  20 20 20 20 20 20 20 52  | RNDM+1.       R|
00000E20: 54 53 0D 2E 45 4E 44 0D                           |TS..END.        |
; INTEGER ARITHMETIC ROUTINES.;.; RICHAR
D L. RYLANDER    8/12/84.;.; REVISED 10/
29/84 TO ADD FULL DOUBLE.; PRECISION ARG
UMENTS IN DIVIDE ROUTINE.;.;************
*****************************.;.; USE PA
GE ZERO LOCATIONS WHERE POSSIBLE FOR.; I
TERATIVE PROCEDURE WORK SPACE.;.MLPCND =
$AC    ; MULTIPLICAND.MLPLER =$AD    ; M
ULTIPLIER.PROD   =$AE    ; PRODUCT.;.DVD
ND  =$FD    ; DIVIDEND/QUOTIENT.DVSOR  =
$FB    ; DIVISOR.RMNDR  =$B4    ; REMAIN
DER.;.RADCND =$AC    ; RADICAND.ROOT   =
$033C  ; SQUARE ROOT.;.TEMP   =$FB.;.; S
ET UP SEED VALUES FOR PSEUDO-RANDOM NUMB
ERS.      *=$C000.RNDM   .BYTE $FF,$55.R
TEMP  .BYTE $00,$00.;.;.;***************
**************************.;.; MULTIPLY 
SINGLE PRECISION MULTIPLICAND.; BY SINGL
E PRECISION MULTIPLIER GIVING.; DOUBLE P
RECISION PRODUCT (ENTER AT "MULT").;.; S
PECIAL CASE: ENTER AT "SQUARE" TO FIND.;
 SQUARE OF SIGNED 8-BIT NUMBER.;.SQUARE 
LDA MLPCND  ; ENTRY TO SQUARE.       BPL
 POSITV  ; USE ABSOLUTE VALUE.       SEC
         ; NEGATE IF NEEDED.       LDA #
$00.       SBC MLPCND.       STA MLPCND.
POSITV STA MLPLER.MULT   LDA #$00    ; E
NTRY TO MULTIPLY.       LDX #$08.MLOOP  
LSR MLPLER.       BCC NOADD.       CLC. 
      ADC MLPCND.NOADD  ROR A.       ROR
 PROD.       DEX.       BNE MLOOP.      
 STA PROD+1.       RTS.;.;**************
***************************.;.; DIVIDE D
OUBLE PRECISION DIVIDEND.; BY DOUBLE PRE
CISION DIVISOR GIVING.; DOUBLE PRECISION
 QUOTIENT.;.; DIVIDEND IS REPLACED BY QU
OTIENT.; IN THE PROCESS.;.; QUOTIENT IS 
ROUNDED TO NEAREST INTEGER.;.DIVIDE LDA 
#$00.       STA RMNDR.       STA RMNDR+1
.       LDX #$10.DLOOP  ROL DVDND.      
 ROL DVDND+1.       ROL RMNDR.       ROL
 RMNDR+1.       SEC.       LDA RMNDR.   
    SBC DVSOR.       TAY.       LDA RMND
R+1.       SBC DVSOR+1.       BCC DECCNT
.       STY RMNDR.       STA RMNDR+1.DEC
CNT DEX.       BNE DLOOP.       ROL DVDN
D     ; CHECK IF REMAINDER.       ROL DV
DND+1   ; IS >= 1/2 OF DIVIDEND.       A
SL RMNDR     ; FOR ROUNDING.       ROL R
MNDR+1.       BCS ROUND.       SEC.     
  LDA DVSOR.       SBC RMNDR.       LDA 
DVSOR+1.       SBC RMNDR+1.       BCS NO
CHNG.ROUND  INC DVDND.       BNE NOCHNG.
       INC DVDND+1.NOCHNG RTS.;.;*******
**********************************.;.; T
AKE INTEGER SQUARE ROOT OF A.; DOUBLE PR
ECISION RADICAND GIVING.; SINGLE PRECISI
ON ROOT ( <= REAL ROOT ).;.SQRT   LDX #$
08.       LDA #$00.       STA ROOT.     
  STA ROOT+1.       STA TEMP.       STA 
TEMP+1.SQRT1  ASL ROOT.       ROL ROOT+1
.       INC ROOT    ; ASSUME CURRENT LSB
 OF.       BNE NEXT1   ; ROOT WILL BE 1.
       INC ROOT+1.NEXT1  ASL RADCND  ; S
HIFT RADICAND LEFT.       ROL RADCND+1 ;
 TWICE INTO TEMP.       ROL TEMP.       
ROL TEMP+1.       ASL RADCND.       ROL 
RADCND+1.       ROL TEMP.       ROL TEMP
+1.       SEC         ; SUBTRACT ROOT ES
TIMATE.       LDA TEMP    ; FROM TEMP.  
     SBC ROOT.       TAY.       LDA TEMP
+1.       SBC ROOT+1.       BCC RESTOR. 
      STA TEMP+1  ; SUBTRACTION OK.     
  STY TEMP.       INC ROOT.       BNE NE
XT2.       INC ROOT+1.NEXT2  DEX.       
BNE SQRT1.       JMP FINI.RESTOR SEC    
     ; IGNORE SUBTRACTION.       LDA ROO
T    ; AND RESET LSB OF ROOT.       SBC 
#$01.       STA ROOT.       BCS NEXT3.  
     DEC ROOT+1.NEXT3  DEX.       BNE SQ
RT1.FINI   ROR ROOT+1  ; FINAL /2 TO NOR
MALIZE.       ROR ROOT.       RTS.;.;***
**************************************.;
.; GENERATE PSEUDO-RANDOM BYTES.; EXIT W
ITH P-R BYTE IN ACCUM..;.RANDOM LDA RNDM
.       STA RTEMP.       EOR RNDM+1.    
   ROL RTEMP+1  ; RTEMP+1 PRESERVES.    
   ROR A        ; CARRY BIT FOR CYCLING.
       ROR RTEMP+1  ; RANDOM NUMBERS.   
    STA RNDM.       LDA RTEMP.       STA
 RNDM+1.       RTS..END.
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL