64SORT.SRC
FILE INFORMATION
FILENAME(S): 64SORT.SRC
FILE TYPE(S): SEQ
FILE SIZE: 4.5K
FIRST SEEN: 2025-12-02 00:17:46
APPEARS ON: 1 disk(s)
FILE HASH
a96342b11c80277ac59e7aad77e5ac7e83184ff556f99df453120ba000668b51
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| K ASSEMBLER 1 | 64SORT.SRC | SEQ | Maestro | 16 | 9 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 3B 50 55 54 22 40 30 3A 36 34 53 4F 52 54 22 0D |;PUT"@0:64SORT".| 00000010: 3B 0D 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |;.;*************| 00000020: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 3B 2A 20 20 |***********.;* | 00000030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000040: 20 20 20 20 2A 0D 3B 2A 20 43 4F 4D 4D 4F 44 4F | *.;* COMMODO| 00000050: 52 45 20 36 34 20 4D 43 20 53 4F 52 54 20 2A 0D |RE 64 MC SORT *.| 00000060: 3B 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |;* | 00000070: 20 20 20 20 20 20 20 20 2A 0D 3B 2A 20 4F 52 49 | *.;* ORI| 00000080: 47 49 4E 41 4C 20 50 52 4F 47 52 41 4D 20 42 59 |GINAL PROGRAM BY| 00000090: 20 20 2A 0D 3B 2A 20 20 20 4E 49 43 4B 20 48 41 | *.;* NICK HA| 000000A0: 4D 50 53 48 49 52 45 20 20 20 20 20 2A 0D 3B 2A |MPSHIRE *.;*| 000000B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000000C0: 20 20 20 20 20 20 2A 0D 3B 2A 20 20 52 45 57 4F | *.;* REWO| 000000D0: 52 4B 45 44 20 46 4F 52 20 43 36 34 20 20 20 20 |RKED FOR C64 | 000000E0: 2A 0D 3B 2A 20 20 20 20 28 42 41 53 49 43 20 32 |*.;* (BASIC 2| 000000F0: 2E 30 29 20 20 20 20 20 20 20 2A 0D 3B 2A 20 20 |.0) *.;* | 00000100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000110: 20 20 20 20 2A 0D 3B 2A 20 20 20 20 20 50 41 55 | *.;* PAU| 00000120: 4C 20 42 4C 41 49 52 20 20 20 20 20 20 20 2A 0D |L BLAIR *.| 00000130: 3B 2A 20 20 20 20 43 41 4E 42 45 52 52 41 20 41 |;* CANBERRA A| 00000140: 43 54 20 20 20 20 20 20 2A 0D 3B 2A 20 20 20 20 |CT *.;* | 00000150: 20 41 55 53 54 52 41 4C 49 41 20 20 20 20 20 20 | AUSTRALIA | 00000160: 20 20 2A 0D 3B 2A 20 20 20 20 20 20 20 20 20 20 | *.;* | 00000170: 20 20 20 20 20 20 20 20 20 20 20 20 2A 0D 3B 2A | *.;*| 00000180: 20 20 20 20 20 31 30 20 53 45 50 20 38 33 20 20 | 10 SEP 83 | 00000190: 20 20 20 20 20 20 2A 0D 3B 2A 20 20 20 20 20 20 | *.;* | 000001A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000001B0: 2A 0D 3B 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |*.;*************| 000001C0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 2E 53 4B 49 |***********..SKI| 000001D0: 50 0D 2E 53 4B 49 50 0D 2E 53 4B 49 50 0D 3B 54 |P..SKIP..SKIP.;T| 000001E0: 48 49 53 20 56 45 52 53 49 4F 4E 20 49 53 20 44 |HIS VERSION IS D| 000001F0: 45 53 49 47 4E 45 44 0D 3B 54 4F 20 53 49 54 20 |ESIGNED.;TO SIT | 00000200: 41 54 20 24 43 30 30 30 20 57 48 45 52 45 20 49 |AT $C000 WHERE I| 00000210: 54 0D 3B 49 53 20 50 52 4F 54 45 43 54 45 44 20 |T.;IS PROTECTED | 00000220: 46 52 4F 4D 20 42 41 53 49 43 0D 3B 0D 3B 4E 41 |FROM BASIC.;.;NA| 00000230: 4D 45 20 4F 46 20 41 52 52 41 59 20 54 4F 20 53 |ME OF ARRAY TO S| 00000240: 4F 52 54 20 49 53 0D 3B 53 54 4F 52 45 44 20 49 |ORT IS.;STORED I| 00000250: 4E 20 27 43 41 27 20 41 4E 44 20 27 43 42 27 0D |N 'CA' AND 'CB'.| 00000260: 3B 0D 3B 42 41 53 45 20 41 44 44 52 45 53 53 20 |;.;BASE ADDRESS | 00000270: 42 41 3D 34 39 31 35 32 0D 3B 0D 3B 50 4F 4B 45 |BA=49152.;.;POKE| 00000280: 20 42 41 2C 41 53 43 28 43 48 41 52 31 29 0D 3B | BA,ASC(CHAR1).;| 00000290: 50 4F 4B 45 20 42 41 2B 31 2C 41 53 43 28 43 48 |POKE BA+1,ASC(CH| 000002A0: 41 52 32 29 0D 3B 0D 3B 52 45 41 44 20 45 52 52 |AR2).;.;READ ERR| 000002B0: 4F 52 20 46 52 4F 4D 20 42 41 2B 32 0D 3B 0D 3B |OR FROM BA+2.;.;| 000002C0: 2D 2D 53 59 53 54 45 4D 20 43 4F 4E 53 54 41 4E |--SYSTEM CONSTAN| 000002D0: 54 2D 2D 0D 3B 0D 41 53 54 41 52 54 20 3D 24 32 |T--.;.ASTART =$2| 000002E0: 46 20 3B 53 54 41 52 54 20 4F 46 20 41 52 52 41 |F ;START OF ARRA| 000002F0: 59 53 0D 3B 0D 3B 2D 2D 57 4F 52 4B 53 50 41 43 |YS.;.;--WORKSPAC| 00000300: 45 2D 2D 0D 3B 0D 2A 20 3D 24 34 42 0D 42 41 53 |E--.;.* =$4B.BAS| 00000310: 45 20 2A 3D 2A 2B 32 0D 50 41 49 52 20 2A 3D 2A |E *=*+2.PAIR *=*| 00000320: 2B 32 0D 53 54 52 31 20 2A 3D 2A 2B 32 0D 53 54 |+2.STR1 *=*+2.ST| 00000330: 52 32 20 2A 3D 2A 2B 32 0D 3B 0D 3B 50 52 4F 47 |R2 *=*+2.;.;PROG| 00000340: 52 41 4D 20 41 4E 44 20 44 41 54 41 20 40 20 24 |RAM AND DATA @ $| 00000350: 43 30 30 30 0D 3B 0D 2A 20 3D 24 43 30 30 30 0D |C000.;.* =$C000.| 00000360: 3B 0D 3B 2D 2D 56 41 52 49 41 42 4C 45 53 2D 2D |;.;--VARIABLES--| 00000370: 0D 3B 0D 43 41 20 2A 3D 2A 2B 31 0D 43 42 20 2A |.;.CA *=*+1.CB *| 00000380: 3D 2A 2B 31 0D 45 52 52 4F 52 20 2A 3D 2A 2B 31 |=*+1.ERROR *=*+1| 00000390: 0D 4E 4F 4F 46 45 20 2A 3D 2A 2B 32 0D 4E 4F 4F |.NOOFE *=*+2.NOO| 000003A0: 46 43 20 2A 3D 2A 2B 32 0D 4C 45 4E 31 20 2A 3D |FC *=*+2.LEN1 *=| 000003B0: 2A 2B 31 0D 4C 45 4E 32 20 2A 3D 2A 2B 31 0D 43 |*+1.LEN2 *=*+1.C| 000003C0: 4F 55 4E 54 20 2A 3D 2A 2B 32 0D 54 45 4D 50 20 |OUNT *=*+2.TEMP | 000003D0: 2A 3D 2A 2B 32 0D 46 4C 41 47 20 2A 3D 2A 2B 31 |*=*+2.FLAG *=*+1| 000003E0: 0D 2E 53 4B 49 50 0D 2E 53 4B 49 50 0D 2E 53 4B |..SKIP..SKIP..SK| 000003F0: 49 50 0D 3B 2D 2D 2D 2D 4D 41 49 4E 20 50 52 4F |IP.;----MAIN PRO| 00000400: 47 52 41 4D 2D 2D 2D 2D 0D 3B 2D 2D 2D 2D 20 42 |GRAM----.;---- B| 00000410: 41 2B 31 34 3D 34 39 31 36 36 20 2D 2D 2D 0D 2E |A+14=49166 ---..| 00000420: 53 4B 49 50 0D 3B 0D 20 50 48 41 20 3B 53 41 56 |SKIP.;. PHA ;SAV| 00000430: 45 20 52 45 47 49 53 54 45 52 53 20 46 49 52 53 |E REGISTERS FIRS| 00000440: 54 0D 20 54 59 41 0D 20 50 48 41 0D 20 54 58 41 |T. TYA. PHA. TXA| 00000450: 0D 20 50 48 41 0D 3B 0D 3B 43 4C 45 41 52 20 54 |. PHA.;.;CLEAR T| 00000460: 4F 50 20 42 49 54 20 4F 46 20 43 41 0D 3B 0D 20 |OP BIT OF CA.;. | 00000470: 4C 44 41 20 43 41 0D 20 41 4E 44 20 23 24 37 46 |LDA CA. AND #$7F| 00000480: 0D 20 53 54 41 20 43 41 0D 3B 0D 3B 53 45 54 20 |. STA CA.;.;SET | 00000490: 54 4F 50 20 42 49 54 20 4F 46 20 43 42 0D 3B 0D |TOP BIT OF CB.;.| 000004A0: 20 4C 44 41 20 43 42 0D 20 4F 52 41 20 23 24 38 | LDA CB. ORA #$8| 000004B0: 30 0D 20 53 54 41 20 43 42 0D 3B 0D 3B 43 4C 45 |0. STA CB.;.;CLE| 000004C0: 41 52 20 45 52 52 4F 52 20 46 4C 41 47 0D 3B 0D |AR ERROR FLAG.;.| 000004D0: 20 4C 44 41 20 23 24 30 30 0D 20 53 54 41 20 45 | LDA #$00. STA E| 000004E0: 52 52 4F 52 0D 3B 0D 3B 53 45 41 52 43 48 20 41 |RROR.;.;SEARCH A| 000004F0: 52 52 41 59 20 4E 41 4D 45 20 4C 49 53 54 0D 3B |RRAY NAME LIST.;| 00000500: 4C 4F 41 44 20 42 41 53 45 20 57 49 54 48 20 53 |LOAD BASE WITH S| 00000510: 54 41 52 54 20 4F 46 20 41 52 52 41 59 53 0D 3B |TART OF ARRAYS.;| 00000520: 0D 20 4C 44 41 20 41 53 54 41 52 54 0D 20 53 54 |. LDA ASTART. ST| 00000530: 41 20 42 41 53 45 0D 20 4C 44 41 20 41 53 54 41 |A BASE. LDA ASTA| 00000540: 52 54 2B 31 0D 20 53 54 41 20 42 41 53 45 2B 31 |RT+1. STA BASE+1| 00000550: 0D 3B 0D 3B 4C 4F 43 41 54 45 20 41 52 52 41 59 |.;.;LOCATE ARRAY| 00000560: 20 49 4E 20 43 41 20 41 4E 44 20 43 42 0D 3B 0D | IN CA AND CB.;.| 00000570: 4C 4F 43 41 54 45 20 4C 44 59 20 23 24 30 30 0D |LOCATE LDY #$00.| 00000580: 20 4C 44 41 20 28 42 41 53 45 29 2C 59 0D 20 43 | LDA (BASE),Y. C| 00000590: 4D 50 20 23 24 32 34 20 3B 45 4E 44 20 4F 46 20 |MP #$24 ;END OF | 000005A0: 41 52 52 41 59 3F 0D 20 42 4E 45 20 4D 4F 52 45 |ARRAY?. BNE MORE| 000005B0: 41 20 3B 4E 4F 0D 3B 0D 3B 45 52 52 4F 52 20 31 |A ;NO.;.;ERROR 1| 000005C0: 20 2D 20 41 52 52 41 59 20 4E 4F 54 20 46 4F 55 | - ARRAY NOT FOU| 000005D0: 4E 44 0D 3B 0D 20 4C 44 41 20 23 24 30 31 0D 20 |ND.;. LDA #$01. | 000005E0: 53 54 41 20 45 52 52 4F 52 0D 20 4A 4D 50 20 52 |STA ERROR. JMP R| 000005F0: 54 4E 0D 3B 0D 3B 43 48 45 43 4B 20 54 48 49 53 |TN.;.;CHECK THIS| 00000600: 20 41 52 52 41 59 20 4E 41 4D 45 0D 3B 41 47 41 | ARRAY NAME.;AGA| 00000610: 49 4E 53 54 20 43 41 20 41 4E 44 20 43 42 0D 3B |INST CA AND CB.;| 00000620: 0D 4D 4F 52 45 41 20 43 4D 50 20 43 41 20 3B 31 |.MOREA CMP CA ;1| 00000630: 53 54 20 43 48 41 52 0D 20 42 4E 45 20 4E 45 58 |ST CHAR. BNE NEX| 00000640: 54 41 0D 20 49 4E 59 20 3B 4E 45 58 54 20 43 48 |TA. INY ;NEXT CH| 00000650: 41 52 0D 20 4C 44 41 20 28 42 41 53 45 29 2C 59 |AR. LDA (BASE),Y| 00000660: 0D 20 43 4D 50 20 43 42 0D 20 42 45 51 20 41 46 |. CMP CB. BEQ AF| 00000670: 4F 55 4E 44 0D 3B 0D 3B 43 48 45 43 4B 20 4E 45 |OUND.;.;CHECK NE| 00000680: 58 54 20 41 52 52 41 59 20 49 4E 20 54 41 42 4C |XT ARRAY IN TABL| 00000690: 45 0D 3B 53 54 4F 52 45 20 52 45 4C 41 54 49 56 |E.;STORE RELATIV| 000006A0: 45 20 4F 46 46 53 45 54 20 49 4E 20 54 45 4D 50 |E OFFSET IN TEMP| 000006B0: 0D 3B 0D 4E 45 58 54 41 20 4C 44 59 20 23 24 30 |.;.NEXTA LDY #$0| 000006C0: 32 0D 20 4C 44 41 20 28 42 41 53 45 29 2C 59 0D |2. LDA (BASE),Y.| 000006D0: 20 53 54 41 20 54 45 4D 50 0D 20 49 4E 59 0D 20 | STA TEMP. INY. | 000006E0: 4C 44 41 20 28 42 41 53 45 29 2C 59 0D 20 53 54 |LDA (BASE),Y. ST| 000006F0: 41 20 54 45 4D 50 2B 31 0D 3B 0D 3B 41 44 44 20 |A TEMP+1.;.;ADD | 00000700: 52 45 4C 41 54 49 56 45 20 4F 46 46 53 45 54 20 |RELATIVE OFFSET | 00000710: 54 4F 20 42 41 53 45 0D 3B 0D 20 43 4C 43 0D 20 |TO BASE.;. CLC. | 00000720: 4C 44 41 20 42 41 53 45 0D 20 41 44 43 20 54 45 |LDA BASE. ADC TE| 00000730: 4D 50 0D 20 53 54 41 20 42 41 53 45 0D 20 4C 44 |MP. STA BASE. LD| 00000740: 41 20 42 41 53 45 2B 31 0D 20 41 44 43 20 54 45 |A BASE+1. ADC TE| 00000750: 4D 50 2B 31 0D 20 53 54 41 20 42 41 53 45 2B 31 |MP+1. STA BASE+1| 00000760: 0D 3B 0D 3B 4E 45 58 54 20 41 52 52 41 59 0D 3B |.;.;NEXT ARRAY.;| 00000770: 0D 20 42 43 43 20 4C 4F 43 41 54 45 0D 3B 0D 3B |. BCC LOCATE.;.;| 00000780: 4E 41 4D 45 44 20 41 52 52 41 59 20 46 4F 55 4E |NAMED ARRAY FOUN| 00000790: 44 0D 3B 43 48 45 43 4B 20 49 46 20 4F 4E 4C 59 |D.;CHECK IF ONLY| 000007A0: 20 31 20 44 49 4D 45 4E 53 49 4F 4E 0D 3B 0D 41 | 1 DIMENSION.;.A| 000007B0: 46 4F 55 4E 44 20 4C 44 59 20 23 24 30 34 0D 20 |FOUND LDY #$04. | 000007C0: 4C 44 41 20 28 42 41 53 45 29 2C 59 0D 20 43 4D |LDA (BASE),Y. CM| 000007D0: 50 20 23 24 30 31 0D 20 42 45 51 20 44 4F 53 4F |P #$01. BEQ DOSO| 000007E0: 52 54 0D 3B 0D 3B 45 52 52 4F 52 20 32 20 2D 20 |RT.;.;ERROR 2 - | 000007F0: 49 4E 43 4F 52 52 45 43 54 20 44 49 4D 45 4E 53 |INCORRECT DIMENS| 00000800: 49 4F 4E 0D 3B 0D 20 4C 44 41 20 23 24 30 32 0D |ION.;. LDA #$02.| 00000810: 20 53 54 41 20 45 52 52 4F 52 0D 20 4A 4D 50 20 | STA ERROR. JMP | 00000820: 52 54 4E 0D 3B 0D 3B 44 4F 20 42 55 42 42 4C 45 |RTN.;.;DO BUBBLE| 00000830: 20 53 4F 52 54 20 4F 4E 20 41 52 52 41 59 0D 3B | SORT ON ARRAY.;| 00000840: 53 41 56 45 20 23 20 45 4C 45 4D 45 4E 54 53 20 |SAVE # ELEMENTS | 00000850: 49 4E 20 4E 4F 4F 46 45 0D 3B 0D 44 4F 53 4F 52 |IN NOOFE.;.DOSOR| 00000860: 54 20 4C 44 59 20 23 24 30 35 0D 20 4C 44 41 20 |T LDY #$05. LDA | 00000870: 28 42 41 53 45 29 2C 59 0D 20 53 54 41 20 4E 4F |(BASE),Y. STA NO| 00000880: 4F 46 45 2B 31 0D 20 49 4E 59 0D 20 4C 44 41 20 |OFE+1. INY. LDA | 00000890: 28 42 41 53 45 29 2C 59 0D 20 53 54 41 20 4E 4F |(BASE),Y. STA NO| 000008A0: 4F 46 45 0D 3B 0D 3B 43 48 45 43 4B 20 54 48 45 |OFE.;.;CHECK THE| 000008B0: 52 45 20 41 52 45 20 32 20 4F 52 20 4D 4F 52 45 |RE ARE 2 OR MORE| 000008C0: 0D 3B 45 4C 45 4D 45 4E 54 53 20 49 4E 20 4F 52 |.;ELEMENTS IN OR| 000008D0: 44 45 52 0D 3B 0D 20 4C 44 58 20 4E 4F 4F 46 45 |DER.;. LDX NOOFE| 000008E0: 2B 31 0D 20 42 4E 45 20 49 4E 49 54 0D 20 4C 44 |+1. BNE INIT. LD| 000008F0: 41 20 4E 4F 4F 46 45 0D 20 43 4D 50 20 23 24 30 |A NOOFE. CMP #$0| 00000900: 32 0D 20 42 43 53 20 49 4E 49 54 0D 3B 0D 3B 45 |2. BCS INIT.;.;E| 00000910: 52 52 4F 52 20 33 20 2D 20 54 4F 4F 20 46 45 57 |RROR 3 - TOO FEW| 00000920: 20 45 4C 45 4D 45 4E 54 53 0D 3B 0D 20 4C 44 41 | ELEMENTS.;. LDA| 00000930: 20 23 24 30 33 0D 20 53 54 41 20 45 52 52 4F 52 | #$03. STA ERROR| 00000940: 0D 20 4A 4D 50 20 52 54 4E 0D 3B 0D 3B 53 45 54 |. JMP RTN.;.;SET| 00000950: 20 55 50 20 53 4F 52 54 20 50 41 52 41 4D 45 54 | UP SORT PARAMET| 00000960: 45 52 53 0D 3B 0D 49 4E 49 54 20 4C 44 41 20 4E |ERS.;.INIT LDA N| 00000970: 4F 4F 46 45 0D 20 53 54 41 20 4E 4F 4F 46 43 0D |OOFE. STA NOOFC.| 00000980: 20 4C 44 41 20 4E 4F 4F 46 45 2B 31 0D 20 53 54 | LDA NOOFE+1. ST| 00000990: 41 20 4E 4F 4F 46 43 2B 31 0D 3B 0D 3B 4F 55 54 |A NOOFC+1.;.;OUT| 000009A0: 45 52 20 4C 4F 4F 50 20 53 4F 52 54 0D 3B 49 3D |ER LOOP SORT.;I=| 000009B0: 31 20 54 4F 20 4E 4F 4F 46 45 2D 31 0D 3B 43 4C |1 TO NOOFE-1.;CL| 000009C0: 45 41 52 20 54 4F 20 53 57 41 50 20 46 4C 41 47 |EAR TO SWAP FLAG| 000009D0: 53 0D 3B 0D 4F 4C 4F 4F 50 20 4C 44 41 20 23 24 |S.;.OLOOP LDA #$| 000009E0: 30 30 0D 20 53 54 41 20 46 4C 41 47 0D 3B 0D 3B |00. STA FLAG.;.;| 000009F0: 43 4C 45 41 52 20 23 20 54 45 53 54 53 20 43 4F |CLEAR # TESTS CO| 00000A00: 55 4E 54 45 52 0D 3B 0D 20 53 54 41 20 43 4F 55 |UNTER.;. STA COU| 00000A10: 4E 54 0D 20 53 54 41 20 43 4F 55 4E 54 2B 31 0D |NT. STA COUNT+1.| 00000A20: 3B 0D 3B 53 55 42 54 52 41 43 54 20 31 20 46 52 |;.;SUBTRACT 1 FR| 00000A30: 4F 4D 20 4E 4F 4F 46 43 0D 3B 23 20 43 4F 4D 50 |OM NOOFC.;# COMP| 00000A40: 41 52 49 53 4F 4E 53 20 28 31 20 4C 45 53 53 20 |ARISONS (1 LESS | 00000A50: 45 41 43 48 20 54 49 4D 45 29 0D 3B 0D 20 53 45 |EACH TIME).;. SE| 00000A60: 43 0D 20 4C 44 41 20 4E 4F 4F 46 43 0D 20 53 42 |C. LDA NOOFC. SB| 00000A70: 43 20 23 24 30 31 0D 20 53 54 41 20 4E 4F 4F 46 |C #$01. STA NOOF| 00000A80: 43 0D 20 42 43 53 20 43 4F 4E 54 0D 20 4C 44 41 |C. BCS CONT. LDA| 00000A90: 20 4E 4F 4F 46 43 2B 31 0D 20 53 42 43 20 23 24 | NOOFC+1. SBC #$| 00000AA0: 30 30 0D 20 53 54 41 20 4E 4F 4F 46 43 2B 31 0D |00. STA NOOFC+1.| 00000AB0: 3B 0D 3B 41 4C 4C 20 44 4F 4E 45 20 57 48 45 4E |;.;ALL DONE WHEN| 00000AC0: 20 4E 4F 4F 46 43 3D 30 0D 3B 0D 43 4F 4E 54 20 | NOOFC=0.;.CONT | 00000AD0: 4C 44 58 20 4E 4F 4F 46 43 2B 31 0D 20 42 4E 45 |LDX NOOFC+1. BNE| 00000AE0: 20 53 50 41 49 52 0D 20 4C 44 41 20 4E 4F 4F 46 | SPAIR. LDA NOOF| 00000AF0: 43 0D 20 43 4D 50 20 23 24 30 30 0D 20 42 4E 45 |C. CMP #$00. BNE| 00000B00: 20 53 50 41 49 52 0D 3B 0D 3B 53 4F 52 54 20 46 | SPAIR.;.;SORT F| 00000B10: 49 4E 49 53 48 45 44 0D 3B 0D 20 4A 4D 50 20 52 |INISHED.;. JMP R| 00000B20: 54 4E 0D 3B 0D 3B 53 54 41 52 54 20 4F 46 20 53 |TN.;.;START OF S| 00000B30: 54 52 49 4E 47 20 50 54 52 53 0D 3B 50 41 49 52 |TRING PTRS.;PAIR| 00000B40: 3D 42 41 53 45 2B 37 0D 3B 0D 53 50 41 49 52 20 |=BASE+7.;.SPAIR | 00000B50: 43 4C 43 0D 20 4C 44 41 20 42 41 53 45 0D 20 41 |CLC. LDA BASE. A| 00000B60: 44 43 20 23 24 30 37 0D 20 53 54 41 20 50 41 49 |DC #$07. STA PAI| 00000B70: 52 0D 20 4C 44 41 20 42 41 53 45 2B 31 0D 20 41 |R. LDA BASE+1. A| 00000B80: 44 43 20 23 24 30 30 0D 20 53 54 41 20 50 41 49 |DC #$00. STA PAI| 00000B90: 52 2B 31 0D 3B 0D 3B 49 4E 4E 45 52 20 4C 4F 4F |R+1.;.;INNER LOO| 00000BA0: 50 20 2D 20 53 55 43 43 45 53 53 49 56 45 20 43 |P - SUCCESSIVE C| 00000BB0: 4F 4D 50 41 52 45 53 0D 3B 0D 49 4C 4F 4F 50 20 |OMPARES.;.ILOOP | 00000BC0: 4C 44 59 20 23 24 30 30 0D 20 4C 44 41 20 28 50 |LDY #$00. LDA (P| 00000BD0: 41 49 52 29 2C 59 0D 20 53 54 41 20 4C 45 4E 31 |AIR),Y. STA LEN1| 00000BE0: 0D 20 49 4E 59 0D 20 4C 44 41 20 28 50 41 49 52 |. INY. LDA (PAIR| 00000BF0: 29 2C 59 0D 20 53 54 41 20 53 54 52 31 0D 20 49 |),Y. STA STR1. I| 00000C00: 4E 59 0D 20 4C 44 41 20 28 50 41 49 52 29 2C 59 |NY. LDA (PAIR),Y| 00000C10: 0D 20 53 54 41 20 53 54 52 31 2B 31 0D 20 49 4E |. STA STR1+1. IN| 00000C20: 59 0D 20 4C 44 41 20 28 50 41 49 52 29 2C 59 0D |Y. LDA (PAIR),Y.| 00000C30: 20 53 54 41 20 4C 45 4E 32 0D 20 49 4E 59 0D 20 | STA LEN2. INY. | 00000C40: 4C 44 41 20 28 50 41 49 52 29 2C 59 0D 20 53 54 |LDA (PAIR),Y. ST| 00000C50: 41 20 53 54 52 32 0D 20 49 4E 59 0D 20 4C 44 41 |A STR2. INY. LDA| 00000C60: 20 28 50 41 49 52 29 2C 59 0D 20 53 54 41 20 53 | (PAIR),Y. STA S| 00000C70: 54 52 32 2B 31 0D 3B 0D 3B 43 4F 4D 50 41 52 45 |TR2+1.;.;COMPARE| 00000C80: 20 41 44 4A 41 43 45 4E 54 20 53 54 52 49 4E 47 | ADJACENT STRING| 00000C90: 53 0D 3B 50 4F 49 4E 54 45 44 20 41 54 20 42 59 |S.;POINTED AT BY| 00000CA0: 20 53 54 52 31 20 41 4E 44 20 53 54 52 32 0D 3B | STR1 AND STR2.;| 00000CB0: 49 46 20 4C 45 4E 28 53 54 52 32 29 3D 30 54 48 |IF LEN(STR2)=0TH| 00000CC0: 45 4E 20 4E 4F 20 53 57 41 50 0D 3B 0D 20 4C 44 |EN NO SWAP.;. LD| 00000CD0: 58 20 4C 45 4E 32 0D 20 42 45 51 20 4E 4F 53 57 |X LEN2. BEQ NOSW| 00000CE0: 41 50 0D 3B 0D 3B 4F 54 48 45 52 57 49 53 45 20 |AP.;.;OTHERWISE | 00000CF0: 49 46 20 4C 45 4E 28 53 54 52 31 29 3D 30 0D 3B |IF LEN(STR1)=0.;| 00000D00: 54 48 45 4E 20 53 57 41 50 0D 3B 0D 20 4C 44 58 |THEN SWAP.;. LDX| 00000D10: 20 4C 45 4E 31 0D 20 42 45 51 20 53 57 41 50 0D | LEN1. BEQ SWAP.| 00000D20: 3B 0D 3B 43 48 45 43 4B 20 45 41 43 48 20 43 48 |;.;CHECK EACH CH| 00000D30: 41 52 20 49 4E 20 54 55 52 4E 0D 3B 46 49 52 53 |AR IN TURN.;FIRS| 00000D40: 54 20 4E 4F 4E 2D 45 51 55 41 4C 20 50 41 49 52 |T NON-EQUAL PAIR| 00000D50: 0D 3B 44 45 46 49 4E 45 53 20 4C 45 58 49 43 41 |.;DEFINES LEXICA| 00000D60: 4C 20 4F 52 44 45 52 0D 3B 0D 20 4C 44 59 20 23 |L ORDER.;. LDY #| 00000D70: 24 30 30 0D 43 4F 4D 20 4C 44 41 20 28 53 54 52 |$00.COM LDA (STR| 00000D80: 31 29 2C 59 0D 20 43 4D 50 20 28 53 54 52 32 29 |1),Y. CMP (STR2)| 00000D90: 2C 59 0D 20 42 45 51 20 4E 45 58 54 43 48 20 3B |,Y. BEQ NEXTCH ;| 00000DA0: 45 51 55 41 4C 20 2D 20 47 45 54 20 4E 45 58 54 |EQUAL - GET NEXT| 00000DB0: 20 43 48 41 52 0D 20 42 43 43 20 4E 4F 53 57 41 | CHAR. BCC NOSWA| 00000DC0: 50 20 3B 53 54 52 31 3C 53 54 52 32 0D 20 4A 4D |P ;STR1<STR2. JM| 00000DD0: 50 20 53 57 41 50 20 3B 53 54 52 31 3E 53 54 52 |P SWAP ;STR1>STR| 00000DE0: 32 0D 4E 45 58 54 43 48 20 49 4E 59 20 3B 4E 45 |2.NEXTCH INY ;NE| 00000DF0: 58 54 20 32 20 43 48 41 52 53 0D 20 42 45 51 20 |XT 2 CHARS. BEQ | 00000E00: 4E 4F 53 57 41 50 20 3B 32 35 35 20 43 48 41 52 |NOSWAP ;255 CHAR| 00000E10: 53 20 45 51 55 41 4C 0D 20 43 50 59 20 4C 45 4E |S EQUAL. CPY LEN| 00000E20: 31 20 3B 45 4E 44 20 4F 46 20 53 54 52 49 4E 47 |1 ;END OF STRING| 00000E30: 3F 0D 20 42 43 43 20 43 4B 4C 32 20 3B 4E 4F 0D |?. BCC CKL2 ;NO.| 00000E40: 20 42 45 51 20 4C 45 4E 45 51 0D 20 42 43 53 20 | BEQ LENEQ. BCS | 00000E50: 4C 45 4E 45 51 0D 43 4B 4C 32 20 43 50 59 20 4C |LENEQ.CKL2 CPY L| 00000E60: 45 4E 32 0D 20 42 43 43 20 43 4F 4D 0D 20 42 45 |EN2. BCC COM. BE| 00000E70: 51 20 4C 45 4E 45 51 0D 3B 0D 3B 43 48 41 52 53 |Q LENEQ.;.;CHARS| 00000E80: 20 45 51 55 41 4C 20 54 4F 20 4C 45 4E 31 20 4F | EQUAL TO LEN1 O| 00000E90: 52 20 4C 45 4E 32 0D 3B 4C 4F 4E 47 45 52 20 53 |R LEN2.;LONGER S| 00000EA0: 54 52 49 4E 47 20 49 53 20 4C 45 58 49 43 41 4C |TRING IS LEXICAL| 00000EB0: 20 47 52 45 41 54 45 52 0D 3B 0D 4C 45 4E 45 51 | GREATER.;.LENEQ| 00000EC0: 20 4C 44 41 20 4C 45 4E 31 0D 20 43 4D 50 20 4C | LDA LEN1. CMP L| 00000ED0: 45 4E 32 0D 20 42 45 51 20 4E 4F 53 57 41 50 20 |EN2. BEQ NOSWAP | 00000EE0: 3B 45 58 41 43 54 4C 59 20 45 51 55 41 4C 0D 20 |;EXACTLY EQUAL. | 00000EF0: 42 43 43 20 4E 4F 53 57 41 50 20 3B 53 54 52 31 |BCC NOSWAP ;STR1| 00000F00: 20 53 48 4F 52 54 45 52 0D 20 4A 4D 50 20 53 57 | SHORTER. JMP SW| 00000F10: 41 50 0D 3B 0D 3B 52 45 56 45 52 53 45 20 4F 52 |AP.;.;REVERSE OR| 00000F20: 44 45 52 20 4F 46 20 53 54 52 49 4E 47 53 20 42 |DER OF STRINGS B| 00000F30: 59 0D 3B 53 57 41 50 50 49 4E 47 20 50 4F 49 4E |Y.;SWAPPING POIN| 00000F40: 54 45 52 53 20 41 52 4F 55 4E 44 0D 3B 0D 53 57 |TERS AROUND.;.SW| 00000F50: 41 50 20 4C 44 59 20 23 24 30 30 0D 20 4C 44 41 |AP LDY #$00. LDA| 00000F60: 20 4C 45 4E 32 0D 20 53 54 41 20 28 50 41 49 52 | LEN2. STA (PAIR| 00000F70: 29 2C 59 0D 20 49 4E 59 0D 20 4C 44 41 20 53 54 |),Y. INY. LDA ST| 00000F80: 52 32 0D 20 53 54 41 20 28 50 41 49 52 29 2C 59 |R2. STA (PAIR),Y| 00000F90: 0D 20 49 4E 59 0D 20 4C 44 41 20 53 54 52 32 2B |. INY. LDA STR2+| 00000FA0: 31 0D 20 53 54 41 20 28 50 41 49 52 29 2C 59 0D |1. STA (PAIR),Y.| 00000FB0: 20 49 4E 59 0D 20 4C 44 41 20 4C 45 4E 31 0D 20 | INY. LDA LEN1. | 00000FC0: 53 54 41 20 28 50 41 49 52 29 2C 59 0D 20 49 4E |STA (PAIR),Y. IN| 00000FD0: 59 0D 20 4C 44 41 20 53 54 52 31 0D 20 53 54 41 |Y. LDA STR1. STA| 00000FE0: 20 28 50 41 49 52 29 2C 59 0D 20 49 4E 59 0D 20 | (PAIR),Y. INY. | 00000FF0: 4C 44 41 20 53 54 52 31 2B 31 0D 20 53 54 41 20 |LDA STR1+1. STA | 00001000: 28 50 41 49 52 29 2C 59 0D 3B 0D 3B 53 45 54 20 |(PAIR),Y.;.;SET | 00001010: 53 57 41 50 20 46 4C 41 47 0D 3B 0D 20 4C 44 41 |SWAP FLAG.;. LDA| 00001020: 20 23 24 30 30 31 0D 20 53 54 41 20 46 4C 41 47 | #$001. STA FLAG| 00001030: 0D 3B 0D 3B 41 44 44 20 31 20 54 4F 20 43 4F 55 |.;.;ADD 1 TO COU| 00001040: 4E 54 0D 3B 0D 4E 4F 53 57 41 50 20 49 4E 43 20 |NT.;.NOSWAP INC | 00001050: 43 4F 55 4E 54 0D 20 42 4E 45 20 4F 31 0D 20 49 |COUNT. BNE O1. I| 00001060: 4E 43 20 43 4F 55 4E 54 2B 31 0D 3B 0D 3B 43 48 |NC COUNT+1.;.;CH| 00001070: 45 43 4B 20 49 46 20 43 4F 55 4E 54 3D 4E 4F 4F |ECK IF COUNT=NOO| 00001080: 46 43 0D 3B 0D 4F 31 20 4C 44 41 20 43 4F 55 4E |FC.;.O1 LDA COUN| 00001090: 54 0D 20 43 4D 50 20 4E 4F 4F 46 43 0D 20 42 4E |T. CMP NOOFC. BN| 000010A0: 45 20 50 4C 55 53 33 0D 20 4C 44 41 20 43 4F 55 |E PLUS3. LDA COU| 000010B0: 4E 54 2B 31 0D 20 43 4D 50 20 4E 4F 4F 46 43 2B |NT+1. CMP NOOFC+| 000010C0: 31 0D 20 42 4E 45 20 50 4C 55 53 33 0D 3B 0D 3B |1. BNE PLUS3.;.;| 000010D0: 49 4E 4E 45 52 20 4C 4F 4F 50 20 46 49 4E 49 53 |INNER LOOP FINIS| 000010E0: 48 45 44 0D 3B 49 46 20 4E 4F 20 53 57 41 50 53 |HED.;IF NO SWAPS| 000010F0: 2C 20 41 4C 4C 20 44 4F 4E 45 21 0D 3B 0D 20 4C |, ALL DONE!.;. L| 00001100: 44 58 20 46 4C 41 47 0D 20 42 45 51 20 52 54 4E |DX FLAG. BEQ RTN| 00001110: 0D 20 4A 4D 50 20 4F 4C 4F 4F 50 0D 52 54 4E 20 |. JMP OLOOP.RTN | 00001120: 50 4C 41 20 3B 52 45 53 54 4F 52 45 20 52 45 47 |PLA ;RESTORE REG| 00001130: 49 53 54 45 52 53 0D 20 54 41 58 0D 20 50 4C 41 |ISTERS. TAX. PLA| 00001140: 0D 20 54 41 59 0D 20 50 4C 41 0D 20 52 54 53 0D |. TAY. PLA. RTS.| 00001150: 3B 0D 3B 41 44 44 20 33 20 54 4F 20 50 41 49 52 |;.;ADD 3 TO PAIR| 00001160: 20 46 4F 52 20 4E 45 58 54 20 54 57 4F 0D 3B 53 | FOR NEXT TWO.;S| 00001170: 54 52 49 4E 47 53 20 49 4E 20 49 4E 4E 45 52 20 |TRINGS IN INNER | 00001180: 4C 4F 4F 50 0D 3B 0D 50 4C 55 53 33 20 43 4C 43 |LOOP.;.PLUS3 CLC| 00001190: 0D 20 4C 44 41 20 50 41 49 52 0D 20 41 44 43 20 |. LDA PAIR. ADC | 000011A0: 23 24 30 33 0D 20 53 54 41 20 50 41 49 52 0D 20 |#$03. STA PAIR. | 000011B0: 4C 44 41 20 50 41 49 52 2B 31 0D 20 41 44 43 20 |LDA PAIR+1. ADC | 000011C0: 23 24 30 30 0D 20 53 54 41 20 50 41 49 52 2B 31 |#$00. STA PAIR+1| 000011D0: 0D 20 4A 4D 50 20 49 4C 4F 4F 50 0D 3B 0D 3B 0D |. JMP ILOOP.;.;.| 000011E0: 2E 45 4E 44 0D |.END. |
;PUT"@0:64SORT".;.;*********************
***.;* *.;* COMMODO
RE 64 MC SORT *.;*
*.;* ORIGINAL PROGRAM BY *.;* NICK HA
MPSHIRE *.;* *.
;* REWORKED FOR C64 *.;* (BASIC 2
.0) *.;* *.;*
PAUL BLAIR *.;* CANBERRA A
CT *.;* AUSTRALIA *.;*
*.;* 10 SEP 83
*.;* *.;*****
*******************..SKIP..SKIP..SKIP.;T
HIS VERSION IS DESIGNED.;TO SIT AT $C000
WHERE IT.;IS PROTECTED FROM BASIC.;.;NA
ME OF ARRAY TO SORT IS.;STORED IN 'CA' A
ND 'CB'.;.;BASE ADDRESS BA=49152.;.;POKE
BA,ASC(CHAR1).;POKE BA+1,ASC(CHAR2).;.;
READ ERROR FROM BA+2.;.;--SYSTEM CONSTAN
T--.;.ASTART =$2F ;START OF ARRAYS.;.;--
WORKSPACE--.;.* =$4B.BASE *=*+2.PAIR *=*
+2.STR1 *=*+2.STR2 *=*+2.;.;PROGRAM AND
DATA @ $C000.;.* =$C000.;.;--VARIABLES--
.;.CA *=*+1.CB *=*+1.ERROR *=*+1.NOOFE *
=*+2.NOOFC *=*+2.LEN1 *=*+1.LEN2 *=*+1.C
OUNT *=*+2.TEMP *=*+2.FLAG *=*+1..SKIP..
SKIP..SKIP.;----MAIN PROGRAM----.;---- B
A+14=49166 ---..SKIP.;. PHA ;SAVE REGIST
ERS FIRST. TYA. PHA. TXA. PHA.;.;CLEAR T
OP BIT OF CA.;. LDA CA. AND #$7F. STA CA
.;.;SET TOP BIT OF CB.;. LDA CB. ORA #$8
0. STA CB.;.;CLEAR ERROR FLAG.;. LDA #$0
0. STA ERROR.;.;SEARCH ARRAY NAME LIST.;
LOAD BASE WITH START OF ARRAYS.;. LDA AS
TART. STA BASE. LDA ASTART+1. STA BASE+1
.;.;LOCATE ARRAY IN CA AND CB.;.LOCATE L
DY #$00. LDA (BASE),Y. CMP #$24 ;END OF
ARRAY?. BNE MOREA ;NO.;.;ERROR 1 - ARRAY
NOT FOUND.;. LDA #$01. STA ERROR. JMP R
TN.;.;CHECK THIS ARRAY NAME.;AGAINST CA
AND CB.;.MOREA CMP CA ;1ST CHAR. BNE NEX
TA. INY ;NEXT CHAR. LDA (BASE),Y. CMP CB
. BEQ AFOUND.;.;CHECK NEXT ARRAY IN TABL
E.;STORE RELATIVE OFFSET IN TEMP.;.NEXTA
LDY #$02. LDA (BASE),Y. STA TEMP. INY.
LDA (BASE),Y. STA TEMP+1.;.;ADD RELATIVE
OFFSET TO BASE.;. CLC. LDA BASE. ADC TE
MP. STA BASE. LDA BASE+1. ADC TEMP+1. ST
A BASE+1.;.;NEXT ARRAY.;. BCC LOCATE.;.;
NAMED ARRAY FOUND.;CHECK IF ONLY 1 DIMEN
SION.;.AFOUND LDY #$04. LDA (BASE),Y. CM
P #$01. BEQ DOSORT.;.;ERROR 2 - INCORREC
T DIMENSION.;. LDA #$02. STA ERROR. JMP
RTN.;.;DO BUBBLE SORT ON ARRAY.;SAVE # E
LEMENTS IN NOOFE.;.DOSORT LDY #$05. LDA
(BASE),Y. STA NOOFE+1. INY. LDA (BASE),Y
. STA NOOFE.;.;CHECK THERE ARE 2 OR MORE
.;ELEMENTS IN ORDER.;. LDX NOOFE+1. BNE
INIT. LDA NOOFE. CMP #$02. BCS INIT.;.;E
RROR 3 - TOO FEW ELEMENTS.;. LDA #$03. S
TA ERROR. JMP RTN.;.;SET UP SORT PARAMET
ERS.;.INIT LDA NOOFE. STA NOOFC. LDA NOO
FE+1. STA NOOFC+1.;.;OUTER LOOP SORT.;I=
1 TO NOOFE-1.;CLEAR TO SWAP FLAGS.;.OLOO
P LDA #$00. STA FLAG.;.;CLEAR # TESTS CO
UNTER.;. STA COUNT. STA COUNT+1.;.;SUBTR
ACT 1 FROM NOOFC.;# COMPARISONS (1 LESS
EACH TIME).;. SEC. LDA NOOFC. SBC #$01.
STA NOOFC. BCS CONT. LDA NOOFC+1. SBC #$
00. STA NOOFC+1.;.;ALL DONE WHEN NOOFC=0
.;.CONT LDX NOOFC+1. BNE SPAIR. LDA NOOF
C. CMP #$00. BNE SPAIR.;.;SORT FINISHED.
;. JMP RTN.;.;START OF STRING PTRS.;PAIR
=BASE+7.;.SPAIR CLC. LDA BASE. ADC #$07.
STA PAIR. LDA BASE+1. ADC #$00. STA PAI
R+1.;.;INNER LOOP - SUCCESSIVE COMPARES.
;.ILOOP LDY #$00. LDA (PAIR),Y. STA LEN1
. INY. LDA (PAIR),Y. STA STR1. INY. LDA
(PAIR),Y. STA STR1+1. INY. LDA (PAIR),Y.
STA LEN2. INY. LDA (PAIR),Y. STA STR2.
INY. LDA (PAIR),Y. STA STR2+1.;.;COMPARE
ADJACENT STRINGS.;POINTED AT BY STR1 AN
D STR2.;IF LEN(STR2)=0THEN NO SWAP.;. LD
X LEN2. BEQ NOSWAP.;.;OTHERWISE IF LEN(S
TR1)=0.;THEN SWAP.;. LDX LEN1. BEQ SWAP.
;.;CHECK EACH CHAR IN TURN.;FIRST NON-EQ
UAL PAIR.;DEFINES LEXICAL ORDER.;. LDY #
$00.COM LDA (STR1),Y. CMP (STR2),Y. BEQ
NEXTCH ;EQUAL - GET NEXT CHAR. BCC NOSWA
P ;STR1<STR2. JMP SWAP ;STR1>STR2.NEXTCH
INY ;NEXT 2 CHARS. BEQ NOSWAP ;255 CHAR
S EQUAL. CPY LEN1 ;END OF STRING?. BCC C
KL2 ;NO. BEQ LENEQ. BCS LENEQ.CKL2 CPY L
EN2. BCC COM. BEQ LENEQ.;.;CHARS EQUAL T
O LEN1 OR LEN2.;LONGER STRING IS LEXICAL
GREATER.;.LENEQ LDA LEN1. CMP LEN2. BEQ
NOSWAP ;EXACTLY EQUAL. BCC NOSWAP ;STR1
SHORTER. JMP SWAP.;.;REVERSE ORDER OF S
TRINGS BY.;SWAPPING POINTERS AROUND.;.SW
AP LDY #$00. LDA LEN2. STA (PAIR),Y. INY
. LDA STR2. STA (PAIR),Y. INY. LDA STR2+
1. STA (PAIR),Y. INY. LDA LEN1. STA (PAI
R),Y. INY. LDA STR1. STA (PAIR),Y. INY.
LDA STR1+1. STA (PAIR),Y.;.;SET SWAP FLA
G.;. LDA #$001. STA FLAG.;.;ADD 1 TO COU
NT.;.NOSWAP INC COUNT. BNE O1. INC COUNT
+1.;.;CHECK IF COUNT=NOOFC.;.O1 LDA COUN
T. CMP NOOFC. BNE PLUS3. LDA COUNT+1. CM
P NOOFC+1. BNE PLUS3.;.;INNER LOOP FINIS
HED.;IF NO SWAPS, ALL DONE!.;. LDX FLAG.
BEQ RTN. JMP OLOOP.RTN PLA ;RESTORE REG
ISTERS. TAX. PLA. TAY. PLA. RTS.;.;ADD 3
TO PAIR FOR NEXT TWO.;STRINGS IN INNER
LOOP.;.PLUS3 CLC. LDA PAIR. ADC #$03. ST
A PAIR. LDA PAIR+1. ADC #$00. STA PAIR+1
. JMP ILOOP.;.;..END.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL