home *** CD-ROM | disk | FTP | other *** search
/ A.N.A.L.O.G. Magazine 1986 May / 86_may.atr / alpha3.lst < prev    next >
File List  |  2023-02-26  |  2KB  |  1 lines

  1. 30000 REM *** BRIAN SCHWARTZ  ***¢30010 REM ALPHABETIZATION ROUTINE¢30020 REM AND SUPPORTING ROUTINES¢30030 REM FOR THE ATARI COMPUTERS¢30040 REM *** ANALOG MAGAZINE ***¢30100 REM INITIALIZATION ROUTINE¢30110 IF INIT=1 THEN RETURN ¢30120 INIT=1¢30130 DIM STORAGE$(MEMALLOCATION),ITEM$(MAXSIZE),PIVOT$(MAXSIZE)¢30140 DIM STACK(100,2),POINTERS(MAXNO,2)¢30145 LET POINTERS(0,2)=0¢30150 RETURN ¢30200 REM CLEAR WORKSPACE ROUTINE¢30210 NUMITEMS=0¢30220 RETURN ¢30300 REM ADD ITEM TO LIST ROUTINE¢30310 IF LEN(ITEM$)=0 THEN RETURN ¢30320 IF NUMITEMS=MAXNO THEN PRINT "ITEM LIST FILLED":RETURN ¢30330 IF POINTERS(NUMITEMS,2)+LEN(ITEM$)>MEMALLOCATION THEN PRINT "MME":RETURN ¢30340 NUMITEMS=NUMITEMS+1¢30350 LET POINTERS(NUMITEMS,1)=POINTERS(NUMITEMS-1,2)+1¢30360 LET POINTERS(NUMITEMS,2)=POINTERS(NUMITEMS-1,2)+LEN(ITEM$)¢30370 STORAGE$(POINTERS(NUMITEMS,1),POINTERS(NUMITEMS,2))=ITEM$¢30380 RETURN ¢30400 REM RETRIEVE ITEM ROUTINE¢30410 IF ITEMNO>NUMITEMS OR ITEMNO<1 THEN PRINT "NO SUCH ITEM":RETURN ¢30420 ITEM$=STORAGE$(POINTERS(ITEMNO,1),POINTERS(ITEMNO,2))¢30430 RETURN ¢30500 REM QUICKSORT ROUTINE¢30510 IF NUMITEMS<2 THEN RETURN ¢30520 SP=1¢30530 STACK(1,1)=1¢30540 STACK(1,2)=NUMITEMS¢30550 IF SP=0 THEN RETURN ¢30560 UP=STACK(SP,1)¢30570 DOWN=STACK(SP,2)¢30580 SP=SP-1¢30590 IF UP=DOWN THEN 30550¢30600 PIVOT$=STORAGE$(POINTERS(UP,1),POINTERS(UP,2))¢30610 US=UP¢30620 DS=DOWN¢30630 UP=UP+1¢30640 IF STORAGE$(POINTERS(UP,1),POINTERS(UP,2))>PIVOT$ THEN 30680¢30650 IF UP=DOWN THEN 30790¢30660 UP=UP+1¢30670 GOTO 30640¢30680 IF STORAGE$(POINTERS(DOWN,1),POINTERS(DOWN,2))<PIVOT$ THEN 30720¢30690 IF UP=DOWN THEN 30790¢30700 DOWN=DOWN-1¢30710 GOTO 30680¢30720 TEMP=POINTERS(UP,1)¢30730 LET POINTERS(UP,1)=POINTERS(DOWN,1)¢30740 LET POINTERS(DOWN,1)=TEMP¢30750 TEMP=POINTERS(UP,2)¢30760 LET POINTERS(UP,2)=POINTERS(DOWN,2)¢30770 LET POINTERS(DOWN,2)=TEMP¢30780 GOTO 30660¢30790 IF STORAGE$(POINTERS(UP,1),POINTERS(UP,2))>PIVOT$ THEN UP=UP-1¢30800 TEMP=POINTERS(UP,1)¢30810 LET POINTERS(UP,1)=POINTERS(US,1)¢30820 LET POINTERS(US,1)=TEMP¢30830 TEMP=POINTERS(UP,2)¢30840 LET POINTERS(UP,2)=POINTERS(US,2)¢30850 LET POINTERS(US,2)=TEMP¢30860 IF US>UP-1 THEN 30900¢30870 SP=SP+1¢30880 STACK(SP,1)=US¢30890 STACK(SP,2)=UP-1¢30900 IF UP+1>DS THEN 30560¢30910 SP=SP+1¢30920 STACK(SP,1)=UP+1¢30930 STACK(SP,2)=DS¢30940 GOTO 30560¢30950 RETURN ¢