1000 *=$600›1010 ;›1020 SAVMSC = $58›1030 FR0 = $D4›1040 FRE = $DA›1050 FR2 = $E0›1060 FR1 = $E6›1070 CIX = $F2›1080 INBUFF = $F3›1090 ;›1100 ; X=USR(1536,ADR(A$),N,L)›1110 ;›1120 ; A$ - ENTRIES TO BE SORTED›1130 ; N - NUMBER OF ENTRIES›1140 ; L - LENGTH OF ENTRIES›1150 ; X - ADDRESS OF POINTER TABLE›1160 ;›1170 PLA›1180 PLA›1190 STA INBUFF+1›1200 PLA›1210 STA INBUFF›1220 PLA›1230 PLA›1240 STA CIX›1250 PLA›1260 PLA›1270 STA FR0+4›1280 STA FR0+3›1290 DEC FR0+3›1300 LDX SAVMSC+1›1310 DEX›1320 STX FR0+1›1330 DEX›1340 STX FR1+1›1350 DEX›1360 STX FR2+1›1370 LDY #0›1380 STY FR0›1390 STY FR1›1400 STY FR2›1410 STY FR0+2›1420 PASS0 TYA›1430 STA (FR0),Y›1440 INY›1450 BNE PASS0›1460 ;›1470 PASS1 CLC›1480 PASS2 ROR FR0+2›1490 LDY #0›1500 TYA›1510 SET1 PHA›1520 BIT FR0+2›1530 BPL NADD›1540 ;›1550 CLC›1560 ADC (FR2),Y›1570 NADD TAX›1580 PLA›1590 STA (FR2),Y›1600 TXA›1610 INY›1620 BNE SET1›1630 ;›1640 LDX #0›1650 ORDR TXA›1660 TAY›1670 LDA (FR0),Y›1680 PHA›1690 STA FR0+5›1700 LDA #0›1710 STA FRE+1›1720 LDY #$07›1730 SHFT ASL A›1740 ROL FRE+1›1750 ASL FR0+5›1760 BCC NEXB›1770 ;›1780 CLC›1790 ADC FR0+4›1800 BCC NEXB›1810 ;›1820 INC FRE+1›1830 NEXB DEY›1840 BPL SHFT›1850 ;›1860 CLC›1870 ADC INBUFF›1880 STA FRE›1890 LDA FRE+1›1900 ADC INBUFF+1›1910 STA FRE+1›1920 LDY FR0+3›1930 LDA (FRE),Y›1940 TAY›1950 LDA (FR2),Y›1960 PHA›1970 CLC›1980 ADC #1›1990 STA (FR2),Y›2000 PLA›2010 TAY›2020 PLA›2030 STA (FR1),Y›2040 INX›2050 CPX CIX›2060 BCC ORDR›2070 ;›2080 BIT FR0+2›2090 BPL PASS2›2100 ;›2110 LDA FR0+1›2120 LDX FR1+1›2130 STX FR0+1›2140 STA FR1+1›2150 DEC FR0+3›2160 BPL PASS1›2170 RTS›2180 ;›2190 .END›