FAST SQR.PAL
FILE INFORMATION
FILENAME(S): FAST SQR.PAL
FILE TYPE(S): PRG
FILE SIZE: 2.2K
FIRST SEEN: 2025-11-30 21:12:51
APPEARS ON: 1 disk(s)
FILE HASH
bb41a08fe66330d16dfce2c3f4304c5ee6083081e42602598702b1c8b7d99eeb
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| TRANSACTOR DISK | FAST SQR.PAL | PRG | DuncanTwain | 9 | 1 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
> DETECTED: COMMODORE BASIC PROGRAM (LOAD ADDRESS $0801)
00000000: 01 08 25 08 64 00 8F 20 46 41 53 54 45 52 20 53 |..%.d.. FASTER S| 00000010: 51 55 41 52 45 20 52 4F 4F 54 20 50 41 4C 20 53 |QUARE ROOT PAL S| 00000020: 4F 55 52 43 45 00 40 08 6E 00 9F 38 2C 38 2C 31 |OURCE.@.n..8,8,1| 00000030: 2C 22 30 3A 46 41 53 54 20 53 51 52 2E 4F 42 4A |,"0:FAST SQR.OBJ| 00000040: 00 4A 08 78 00 9E 20 37 30 30 00 56 08 82 00 2E |.J.x.. 700.V....| 00000050: 4F 50 54 20 4F 38 00 63 08 8C 00 AC B2 20 24 43 |OPT O8.c..... $C| 00000060: 30 30 30 00 7C 08 96 00 3B 20 46 41 53 54 45 52 |000.|...; FASTER| 00000070: 20 53 51 55 41 52 45 20 52 4F 4F 54 00 9F 08 A0 | SQUARE ROOT....| 00000080: 00 3B 20 54 41 4B 45 53 20 46 49 52 53 54 20 42 |.; TAKES FIRST B| 00000090: 41 53 49 43 20 56 41 52 49 41 42 4C 45 20 AF 00 |ASIC VARIABLE ..| 000000A0: C1 08 AA 00 3B 20 8E 53 20 53 51 55 41 52 45 20 |....; .S SQUARE | 000000B0: 52 4F 4F 54 20 49 4E 20 49 54 53 20 50 4C 41 43 |ROOT IN ITS PLAC| 000000C0: 45 00 E4 08 B4 00 3B 20 55 53 45 53 20 A2 A4 4E |E.....; USES ..N| 000000D0: 27 53 20 4D 45 54 48 4F 44 20 57 49 54 48 20 41 |'S METHOD WITH A| 000000E0: 20 CB 4F 44 00 FE 08 BE 00 3B 20 46 49 52 53 54 | .OD.....; FIRST| 000000F0: 20 41 50 50 52 4F 58 49 4D 41 54 49 91 2E 00 04 | APPROXIMATI....| 00000100: 09 C8 00 3B 00 27 09 D2 00 56 41 52 20 B2 20 24 |...;.'...VAR . $| 00000110: 32 44 20 3B 20 53 54 41 52 54 20 4F 46 20 56 41 |2D ; START OF VA| 00000120: 52 49 41 42 4C 45 53 00 47 09 DC 00 50 54 52 20 |RIABLES.G...PTR | 00000130: B2 20 24 41 41 20 3B 20 50 4F B5 53 20 A4 20 56 |. $AA ; PO.S . V| 00000140: 41 52 49 41 42 4C 45 00 68 09 E6 00 43 54 52 20 |ARIABLE.h...CTR | 00000150: B2 20 24 41 43 20 3B 20 49 54 45 52 41 54 49 91 |. $AC ; ITERATI.| 00000160: 20 43 4F 55 4E 54 45 52 00 8E 09 F0 00 54 45 4D | COUNTER.....TEM| 00000170: 50 20 B2 20 24 35 43 20 3B 20 54 45 4D 50 20 53 |P . $5C ; TEMP S| 00000180: A4 52 45 20 81 20 46 4C 54 20 50 54 20 23 00 94 |.RE . FLT PT #..| 00000190: 09 FA 00 3B 00 A7 09 04 01 3B 20 52 4F 4D 20 52 |...;.....; ROM R| 000001A0: 4F 55 54 49 4E 45 53 00 CD 09 0E 01 54 45 4D 46 |OUTINES.....TEMF| 000001B0: 31 20 B2 20 24 42 42 41 32 20 3B 20 55 4E 50 41 |1 . $BBA2 ; UNPA| 000001C0: 43 4B 20 35 43 20 A4 20 46 41 43 23 31 00 F1 09 |CK 5C . FAC#1...| 000001D0: 18 01 44 49 56 49 44 20 B2 20 24 42 42 30 46 20 |..DIVID . $BB0F | 000001E0: 3B 20 46 41 43 23 31 B2 56 41 52 AD 46 41 43 23 |; FAC#1.VAR.FAC#| 000001F0: 31 00 16 0A 22 01 50 4C 55 53 20 B2 20 24 42 38 |1...".PLUS . $B8| 00000200: 36 37 20 20 3B 46 41 43 23 31 B2 46 41 43 23 32 |67 ;FAC#1.FAC#2| 00000210: AA 46 41 43 23 31 00 3A 0A 2C 01 46 31 54 45 4D |.FAC#1.:.,.F1TEM| 00000220: 20 B2 20 24 42 42 43 37 20 3B 20 50 41 43 4B 20 | . $BBC7 ; PACK | 00000230: 46 41 43 23 31 20 A4 20 35 43 00 61 0A 36 01 46 |FAC#1 . 5C.a.6.F| 00000240: 31 4D 45 4D 20 B2 20 24 42 42 44 34 20 3B 20 50 |1MEM . $BBD4 ; P| 00000250: 41 43 4B 20 46 41 43 23 31 20 A4 20 4D 45 4D B0 |ACK FAC#1 . MEM.| 00000260: 59 00 80 0A 40 01 99 20 B2 20 24 46 46 44 32 20 |Y...@.. . $FFD2 | 00000270: 3B 20 43 48 52 4F 55 54 20 52 4F 55 54 49 4E 45 |; CHROUT ROUTINE| 00000280: 00 86 0A 4A 01 3B 00 AD 0A 54 01 4C 44 59 20 23 |...J.;...T.LDY #| 00000290: 24 30 33 20 20 20 20 3B A1 20 56 41 52 49 41 42 |$03 ;. VARIAB| 000002A0: 4C 45 27 53 20 4D 41 4E 54 49 53 53 41 00 CF 0A |LE'S MANTISSA...| 000002B0: 5E 01 4C 44 41 20 28 56 41 52 29 2C 59 20 3B 43 |^.LDA (VAR),Y ;C| 000002C0: 48 45 43 4B 20 8B 20 4E 45 47 41 54 49 56 45 00 |HECK . NEGATIVE.| 000002D0: E0 0A 68 01 42 4D 49 20 45 52 52 B0 45 58 49 54 |..h.BMI ERR.EXIT| 000002E0: 00 E8 0A 72 01 44 45 59 00 0C 0B 7C 01 4C 44 41 |...r.DEY...|.LDA| 000002F0: 20 28 56 41 52 29 2C 59 20 3B A1 20 56 41 52 49 | (VAR),Y ;. VARI| 00000300: 41 42 4C 45 27 53 20 BD 91 45 4E 54 00 25 0B 86 |ABLE'S ..ENT.%..| 00000310: 01 42 45 51 20 8E 20 20 3B 8E 20 8B 20 56 41 52 |.BEQ . ;. . VAR| 00000320: B2 5A 45 52 4F 00 46 0B 90 01 4C 44 41 20 56 41 |.ZERO.F...LDA VA| 00000330: 52 20 20 20 20 20 3B 50 4F B5 53 20 A4 20 56 41 |R ;PO.S . VA| 00000340: 52 20 4E 41 4D 45 00 4E 0B 9A 01 43 4C 43 00 6C |R NAME.N...CLC.l| 00000350: 0B A4 01 41 44 43 20 23 24 30 32 20 20 20 20 3B |...ADC #$02 ;| 00000360: 41 44 44 20 32 20 53 4F 20 50 54 52 00 8D 0B AE |ADD 2 SO PTR....| 00000370: 01 53 54 41 20 50 54 52 20 20 20 20 20 3B 50 4F |.STA PTR ;PO| 00000380: B5 53 20 A4 20 56 41 52 49 41 42 4C 45 00 A8 0B |.S . VARIABLE...| 00000390: B8 01 4C 44 41 20 56 41 52 AA 31 20 20 20 3B AF |..LDA VAR.1 ;.| 000003A0: 20 53 A4 52 45 20 49 54 00 B5 0B C2 01 41 44 43 | S.RE IT.....ADC| 000003B0: 20 23 24 30 30 00 C3 0B CC 01 53 54 41 20 50 54 | #$00.....STA PT| 000003C0: 52 AA 31 00 EA 0B D6 01 4C 44 59 20 23 24 30 20 |R.1.....LDY #$0 | 000003D0: 20 20 20 20 3B 46 49 4C 4C 20 54 45 4D 50 20 57 | ;FILL TEMP W| 000003E0: 49 54 48 20 5A 45 52 4F 45 53 00 F9 0B E0 01 53 |ITH ZEROES.....S| 000003F0: 54 59 20 54 45 4D 50 AA 31 00 08 0C EA 01 53 54 |TY TEMP.1.....ST| 00000400: 59 20 54 45 4D 50 AA 32 00 17 0C F4 01 53 54 59 |Y TEMP.2.....STY| 00000410: 20 54 45 4D 50 AA 33 00 26 0C FE 01 53 54 59 20 | TEMP.3.&...STY | 00000420: 54 45 4D 50 AA 34 00 2C 0C 08 02 3B 00 50 0C 12 |TEMP.4.,...;.P..| 00000430: 02 3B 20 4E 4F 57 20 46 49 4E 44 20 41 20 46 49 |.; NOW FIND A FI| 00000440: 52 53 54 20 41 50 50 52 4F 58 49 4D 41 54 49 91 |RST APPROXIMATI.| 00000450: 00 68 0C 1C 02 3B 20 A4 20 54 48 45 20 53 51 55 |.h...; . THE SQU| 00000460: 41 52 45 20 52 4F 4F 54 00 84 0C 26 02 3B 20 BD |ARE ROOT...&.; .| 00000470: 91 45 4E 54 B2 20 20 BD 91 45 4E 54 AD 32 20 AA |.ENT. ..ENT.2 .| 00000480: 34 30 2E 35 00 A4 0C 30 02 3B 20 4D 41 4E 54 49 |40.5...0.; MANTI| 00000490: 53 53 41 20 46 4F 55 4E 44 20 46 52 4F 4D 20 54 |SSA FOUND FROM T| 000004A0: 41 42 4C 45 00 C4 0C 3A 02 4C 44 41 20 28 50 54 |ABLE...:.LDA (PT| 000004B0: 52 29 2C 59 20 3B A1 20 BD 91 45 4E 54 20 20 28 |R),Y ;. ..ENT (| 000004C0: 59 B2 30 29 00 E6 0C 44 02 52 B0 20 20 20 20 20 |Y.0)...D.R. | 000004D0: 20 20 20 3B 41 B2 41 AD 41 2C 20 50 4F 50 20 4C | ;A.A.A, POP L| 000004E0: 4F 57 20 42 49 54 00 05 0D 4E 02 3B 20 20 20 43 |OW BIT...N.; C| 000004F0: 41 52 52 59 B2 31 20 57 48 45 4E 20 BD 91 45 4E |ARRY.1 WHEN ..EN| 00000500: 54 20 4F 44 44 00 27 0D 58 02 42 43 53 20 41 44 |T ODD.'.X.BCS AD| 00000510: 44 20 20 20 20 3B 4E 4F 20 46 4C 41 47 20 53 45 |D ;NO FLAG SE| 00000520: 54 20 8B 20 4F 44 44 00 4F 0D 62 02 4C 44 58 20 |T . ODD.O.b.LDX | 00000530: 23 24 38 30 20 20 20 3B 45 56 45 4E 2C 20 53 4F |#$80 ;EVEN, SO| 00000540: 20 53 45 54 20 41 20 46 4C 41 47 20 42 49 54 00 | SET A FLAG BIT.| 00000550: 5E 0D 6C 02 53 54 58 20 54 45 4D 50 AA 31 00 84 |^.l.STX TEMP.1..| 00000560: 0D 76 02 41 44 44 20 41 44 43 20 23 24 34 30 20 |.v.ADD ADC #$40 | 00000570: 3B 41 B2 BD 91 45 4E 54 20 4F 46 20 31 53 54 20 |;A...ENT OF 1ST | 00000580: 41 50 50 52 00 9F 0D 80 02 53 54 41 20 54 45 4D |APPR.....STA TEM| 00000590: 50 20 20 20 3B 53 A4 52 45 20 BD 91 45 4E 54 00 |P ;S.RE ..ENT.| 000005A0: B3 0D 8A 02 49 4E 59 20 20 20 20 20 20 20 20 3B |....INY ;| 000005B0: 59 B2 31 00 D9 0D 94 02 4C 44 41 20 28 50 54 52 |Y.1.....LDA (PTR| 000005C0: 29 2C 59 20 3B 4D 41 4E 54 49 53 53 41 20 4F 46 |),Y ;MANTISSA OF| 000005D0: 20 56 41 52 49 41 42 4C 45 00 F8 0D 9E 02 B0 41 | VARIABLE......A| 000005E0: 20 54 45 4D 50 AA 31 20 3B 8B 20 BD 91 20 4F 44 | TEMP.1 ;. .. OD| 000005F0: 44 20 41 44 44 20 38 30 00 1E 0E A8 02 4C 53 52 |D ADD 80.....LSR| 00000600: 20 20 20 20 20 20 20 20 20 20 20 20 3B 53 48 8B | ;SH.| 00000610: 54 20 4E 59 42 42 4C 45 20 52 49 47 48 54 00 26 |T NYBBLE RIGHT.&| 00000620: 0E B2 02 4C 53 52 00 2E 0E BC 02 4C 53 52 00 36 |...LSR.....LSR.6| 00000630: 0E C6 02 4C 53 52 00 3E 0E D0 02 54 41 58 00 62 |...LSR.>...TAX.b| 00000640: 0E DA 02 4C 44 41 20 54 41 42 4C 2C 58 20 3B A1 |...LDA TABL,X ;.| 00000650: 20 41 50 50 52 4F 58 20 46 52 4F 4D 20 54 41 42 | APPROX FROM TAB| 00000660: 4C 45 00 8B 0E E4 02 53 54 41 20 54 45 4D 50 AA |LE.....STA TEMP.| 00000670: 31 20 3B 53 A4 52 45 20 49 54 20 49 4E 20 54 45 |1 ;S.RE IT IN TE| 00000680: 4D 50 20 4D 41 4E 54 49 53 53 41 00 A6 0E EE 02 |MP MANTISSA.....| 00000690: 3B 20 4E 4F 57 20 55 53 45 20 A2 A4 4E 27 53 20 |; NOW USE ..N'S | 000006A0: 4D 45 54 48 4F 44 00 BA 0E F8 02 3B 20 58 B2 28 |METHOD.....; X.(| 000006B0: 58 AA 56 41 52 AD 58 29 AD 32 00 C7 0E 02 03 4C |X.VAR.X).2.....L| 000006C0: 44 41 20 23 24 30 34 00 E6 0E 0C 03 53 54 41 20 |DA #$04.....STA | 000006D0: 43 54 52 20 20 20 3B 53 45 54 20 43 4F 55 4E 54 |CTR ;SET COUNT| 000006E0: 45 52 20 A4 20 34 00 F5 0E 16 03 4C 44 41 20 23 |ER . 4.....LDA #| 000006F0: B3 54 45 4D 50 00 00 0F 20 03 4C 44 59 20 23 30 |.TEMP... .LDY #0| 00000700: 00 21 0F 2A 03 4A 53 52 20 54 45 4D 46 31 20 3B |.!.*.JSR TEMF1 ;| 00000710: 93 20 46 41 43 23 31 20 46 52 4F 4D 20 54 45 4D |. FAC#1 FROM TEM| 00000720: 50 00 32 0F 34 03 4C 4F 4F 50 20 4C 44 41 20 50 |P.2.4.LOOP LDA P| 00000730: 54 52 00 40 0F 3E 03 4C 44 59 20 50 54 52 AA 31 |TR.@.>.LDY PTR.1| 00000740: 00 63 0F 48 03 4A 53 52 20 44 49 56 49 44 20 3B |.c.H.JSR DIVID ;| 00000750: 44 49 56 49 44 45 20 46 41 43 23 31 20 B5 4F 20 |DIVIDE FAC#1 .O | 00000760: 56 41 52 00 72 0F 52 03 4C 44 41 20 23 B3 54 45 |VAR.r.R.LDA #.TE| 00000770: 4D 50 00 7D 0F 5C 03 4C 44 59 20 23 30 00 9D 0F |MP.}.\.LDY #0...| 00000780: 66 03 4A 53 52 20 50 4C 55 53 20 20 3B 41 44 44 |f.JSR PLUS ;ADD| 00000790: 20 54 45 4D 50 20 A4 20 46 41 43 23 31 00 BE 0F | TEMP . FAC#1...| 000007A0: 70 03 44 45 43 20 24 36 31 20 20 20 3B 44 49 56 |p.DEC $61 ;DIV| 000007B0: 49 44 45 20 46 41 43 23 31 20 42 59 20 32 00 DF |IDE FAC#1 BY 2..| 000007C0: 0F 7A 03 4A 53 52 20 46 31 54 45 4D 20 3B 50 41 |.z.JSR F1TEM ;PA| 000007D0: 43 4B 20 46 41 43 23 31 20 A4 20 54 45 4D 50 00 |CK FAC#1 . TEMP.| 000007E0: 02 10 84 03 44 45 43 20 43 54 52 20 20 20 3B 44 |....DEC CTR ;D| 000007F0: 45 43 8F 45 4E 54 20 54 48 45 20 43 4F 55 4E 54 |EC.ENT THE COUNT| 00000800: 45 52 00 1F 10 8E 03 42 4E 45 20 4C 4F 4F 50 20 |ER.....BNE LOOP | 00000810: 20 3B 4C 4F 4F 50 20 8B 20 A8 20 5A 45 52 4F 00 | ;LOOP . . ZERO.| 00000820: 2B 10 98 03 4C 44 58 20 50 54 52 00 39 10 A2 03 |+...LDX PTR.9...| 00000830: 4C 44 59 20 50 54 52 AA 31 00 5B 10 AC 03 4A 53 |LDY PTR.1.[...JS| 00000840: 52 20 46 31 4D 45 4D 20 3B 50 41 43 4B 20 46 41 |R F1MEM ;PACK FA| 00000850: 43 23 31 20 A4 20 4D 45 4D B0 59 00 65 10 B6 03 |C#1 . MEM.Y.e...| 00000860: 8E 20 52 54 53 00 81 10 C0 03 45 52 52 B0 45 58 |. RTS.....ERR.EX| 00000870: 49 54 20 4C 44 41 20 23 24 33 46 20 3B 20 22 3F |IT LDA #$3F ; "?| 00000880: 22 00 9B 10 CA 03 4A 53 52 20 99 20 20 20 20 20 |".....JSR . | 00000890: 20 20 20 20 20 3B 99 20 22 3F 22 00 A3 10 D4 03 | ;. "?".....| 000008A0: 52 54 53 00 CA 10 DE 03 54 41 42 4C 20 2E 42 59 |RTS.....TABL .BY| 000008B0: 54 45 20 30 33 2C 31 31 2C 31 38 2C 32 35 2C 33 |TE 03,11,18,25,3| 000008C0: 32 2C 33 38 2C 34 34 2C 35 30 00 EF 10 E8 03 2E |2,38,44,50......| 000008D0: 42 59 54 45 20 35 38 2C 36 39 2C 37 39 2C 38 39 |BYTE 58,69,79,89| 000008E0: 2C 39 38 2C 31 30 37 2C 31 31 35 2C 31 32 33 00 |,98,107,115,123.| 000008F0: F6 10 F2 03 2E 80 00 00 00 |......... |
..%.D.. FASTER SQUARE ROOT PAL SOURCE.@. N..8,8,1,"0:FAST SQR.OBJ.J.X.. 700.V.... OPT O8.C..... $C000.|...; FASTER SQUARE ROOT... .; TAKES FIRST BASIC VARIABLE .. A...; .S SQUARE ROOT IN ITS PLACE.....; USES ..N'S METHOD WITH A KOD.....; FIRST APPROXIMATI.....H.;.'.R.VAR . $2D ; STA RT OF VARIABLES.G...PTR . $AA ; PO.S . V ARIABLE.H...CTR . $AC ; ITERATI. COUNTER .....TEMP . $5C ; TEMP S.RE . FLT PT #.. ...;.....; ROM ROUTINES.M...TEMF1 . $BBA 2 ; UNPACK 5C . FAC#1.....DIVID . $BB0F ; FAC#1.VAR.FAC#1...".PLUS . $B867 ;FAC #1.FAC#2.FAC#1.:.,.F1TEM . $BBC7 ; PACK FAC#1 . 5C.A.6.F1MEM . $BBD4 ; PACK FAC# 1 . MEM.Y...@.. . $FFD2 ; CHROUT ROUTINE ...J.;...T.LDY #$03 ;. VARIABLE'S MAN TISSA.O.^.LDA (VAR),Y ;CHECK . NEGATIVE. ..H.BMI ERR.EXIT...R.DEY...|.LDA (VAR),Y ;. VARIABLE'S ..ENT.%...BEQ . ;. . VAR .ZERO.F...LDA VAR ;PO.S . VAR NAME.N ...CLC.L...ADC #$02 ;ADD 2 SO PTR.... .STA PTR ;PO.S . VARIABLE.....LDA VA R.1 ;. S.RE IT...B.ADC #$00.C.L.STA PT R.1...V.LDY #$0 ;FILL TEMP WITH ZERO ES.....STY TEMP.1.....STY TEMP.2.....STY TEMP.3.&...STY TEMP.4.,...;.P...; NOW F IND A FIRST APPROXIMATI..H...; . THE SQU ARE ROOT...&.; ..ENT. ..ENT.2 .40.5...0 .; MANTISSA FOUND FROM TABLE.D.:.LDA (PT R),Y ;. ..ENT (Y.0)...D.R. ;A.A. A, POP LOW BIT...N.; CARRY.1 WHEN ..EN T ODD.'.X.BCS ADD ;NO FLAG SET . ODD. O.B.LDX #$80 ;EVEN, SO SET A FLAG BIT. ^.L.STX TEMP.1...V.ADD ADC #$40 ;A...ENT OF 1ST APPR.....STA TEMP ;S.RE ..ENT. ....INY ;Y.1.Y...LDA (PTR),Y ;MAN TISSA OF VARIABLE......A TEMP.1 ;. .. OD D ADD 80.....LSR ;SH.T NYBBLE RIGHT.&...LSR.....LSR.6.F.LSR.>.P.TAX.B .Z.LDA TABL,X ;. APPROX FROM TABLE.....S TA TEMP.1 ;S.RE IT IN TEMP MANTISSA..... ; NOW USE ..N'S METHOD.....; X.(X.VAR.X) .2.G...LDA #$04.....STA CTR ;SET COUNT ER . 4.....LDA #.TEMP... .LDY #0.!.*.JSR TEMF1 ;. FAC#1 FROM TEMP.2.4.LOOP LDA P TR.@.>.LDY PTR.1.C.H.JSR DIVID ;DIVIDE F AC#1 .O VAR.R.R.LDA #.TEMP.}.\.LDY #0... F.JSR PLUS ;ADD TEMP . FAC#1...P.DEC $6 1 ;DIVIDE FAC#1 BY 2...Z.JSR F1TEM ;PA CK FAC#1 . TEMP.....DEC CTR ;DEC.ENT T HE COUNTER.....BNE LOOP ;LOOP . . ZERO. +...LDX PTR.9...LDY PTR.1.[...JSR F1MEM ;PACK FAC#1 . MEM.Y.E.... RTS.....ERR.EX IT LDA #$3F ; "?"...J.JSR . ;. "?"...T.RTS.J...TABL .BYTE 03,11,18,25,3 2,38,44,50......BYTE 58,69,79,89,98,107, 115,123..........
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL