10 REM ...SAVE PROGRAMS...82 08 13 SW 20 REM listar dataprogram i DISKREG-filer 29 P$='pr:vsa30a72.5' : REM printerkod 30 GOTO 150 40 REM --------------------------------- 50 GOTO 260 : REM r{cker f|r 700 progr 60 GOTO 290 : REM l{s in progr-namn 70 GOTO 240 : GOTO 840 : REM urval 80 GOTO 260 : GOTO 730 : REM kolla printer 90 GOTO 880 : REM sortering Shell 100 GOTO 1080 : REM sortering Quick 110 GOTO 440 : REM utskrift printer 120 GOTO 770 : REM utskrift sk{rm 130 GOTO 360 : REM listar ej standardprogram 140 REM ----------------------------------- 150 S1%=40% : S9%=60% : REM fr o m/t o m skivnr 160 ; CHR$(12%)'Programmet skriver ut programnamn' 170 ; 'registrerade i DISKREG' 180 GOSUB 690 : REM standardprog? 190 ; : ; 'Bokstavsordning (J)'; : INPUT W1$ : IF W1$='' GOTO 200 ELSE W1%=INSTR(1%,'Nn',W1$) : IF W1% THEN 240 200 ; : ; ' Q =QUICK-SORT' : ; ' S =SHELL SORT'; : ; : ; : ; 'V{lj metod (Q)'; : GET W2$ 210 IF ASC(W2$)=13% THEN W2$='Q' 220 W2%=INSTR(1%,'Ss',W2$) : REM Shell 230 IF W2% ; 'S' ELSE ; 'Q' 240 ; : ; 'Dagens datum: '; : INPUTLINE D9$ 250 GOSUB 840 : REM urval av skivnr 260 DIM F$(700%)=20%,F$=12% : J%=0% : ONERRORGOTO 0 270 ; : ; 'Utskrift p} printer (J)'; : INPUT W$ 280 IF W$='' OR INSTR(1%,'Jj',W$) GOSUB 740 290 REM ---L[S IN PROGRAMNAMN 300 FOR I%=S1% TO S9% : ; CUR(23%,0%)'Skiva nr:'I%' tot antal program:'; 310 ONERRORGOTO 380 320 OPEN 'SKIVA'+NUM$(I%)+'.DAT' ASFILE 1% 330 INPUT #1%,F$ : IF ASC(F$)<64% THEN 330 340 IF F9%=0% THEN 370 350 U$='START.BACLIB.BACFILKOLL.BACMENY.BACCMDINT.SYSCOPY.ABSCOPYLIB.ABS' 360 IF INSTR(1%,U$,F$) THEN 330 370 J%=J%+1% : F$(J%)=F$+NUM$(I%) : ; CUR(23%,32%)J%; : GOTO 330 380 NEXT I% : ; 390 IF W1$='n' OR W1$='N' THEN 430 400 ; : POKE 65008%,255%,255% 410 IF W2% THEN GOSUB 880 ELSE GOSUB 1080 : REM ---SORTERA SHELL/QUICK 420 ; : ; 'tid:'(PEEK(65008%) XOR 255%)/50+(PEEK(65009%) XOR 255%)*5.12' sekunder' 430 IF P%=0% GET W$ : GOTO 780 440 REM --- utskrift 450 REM K1% =ant progr kvar 460 REM K% =r{knare sidor utskrift 470 REM K9% =ant progr akt sida 480 REM I1% =f|rsta progr-nr p} sidan 490 REM Q%,Q1% = ant progr i kolumn 500 ; #P%TAB(3%)CHR$(18%,14%)'PROGRAM i DISKREG'S1%' -'S9% 510 ; #P%TAB(3%)'antal:'J%' utskriftsdatum: 'D9$ 520 K1%=J% : REM spara ant progr 530 FOR K%=0% TO 100% : REM K% ant sid utskrift 540 IF K1%<0% 660 : REM slut 550 IF K1%<240% K9%=K1% ELSE K9%=240% 560 K1%=K1%-240% 570 I1%=1%+K%*240% 580 IF K%>0% ; #P%TAB(70%)'sid'K%+1% : ; #P% 590 GOSUB 620 : REM skriv sida 600 NEXT K% : REM ska aldrig komma till slutet 610 REM --- skriv sida 620 Q%=K9%/4% : IF Q%<>K9%/4 THEN Q1%=Q%+1% ELSE Q1%=Q% : REM fixa kolumnl{ngd 630 FOR I%=I1% TO I1%-1%+Q1% 640 ; #P%TAB(3%)F$(I%)TAB(20%)F$(I%+Q1%)TAB(40%)F$(I%+2%*Q1%)TAB(60%)F$(I%+3%*Q1%) 650 NEXT I% : IF K1%>0% ; #P%CHR$(12%) : RETURN ELSE GOTO 660 : GOTO 590 : REM }terhoppsrad 660 ; #P% : ; #P%'Antal program:'J% 670 ; : ; : ; 'K L A R T' : END 675 REM ------------------------------ 680 REM --- ta med LIB START MENY m fl? (rad 235) 690 ; : ; 'Skall standardprogrammen med (N)'; : INPUT W$ 700 IF W$='' THEN W$='N' 710 F9%=INSTR(1%,'Nn',W$) : REM flagga f|r att skippa standardprog 720 RETURN 730 REM --- kolallaa printer 740 P%=2% : OPEN P$ ASFILE 2% 750 ; CUR(23%,0%)'PRINTER EJ KLAR!'; : ; #2%CHR$(13%) : ; CUR(23%,0%)SPACE$(20%); 760 RETURN 770 REM --- om ej printer 780 Q%=J%/2% : IF Q%<>J%/2 THEN Q%=Q%+1% 790 FOR I%=1% TO Q% 800 ; F$(I%)TAB(20%)F$(I%+Q%) 810 GET W$ : NEXT I% 820 ; 'Vill du se listan igen (N)'; : INPUT W$ 830 IF W$='j' OR W$='J' THEN 790 ELSE 660 840 REM ... urval av skivor 850 ; : ; : ; 'Fr o m skiva nr('S1%')'; : ONERRORGOTO 860 : INPUT S1% 860 ; 'T o m skiva nr('S9%')'; : ONERRORGOTO 870 : INPUT S9% 870 RETURN 880 REM --- SHELL SORT 890 ; 'SORTERING MED SHELL-SORT' 900 REM F$(I%)=listans element 910 REM J%=antal element M%=mittelementet 920 REM N1=antal element i dellistor 930 M%=J% 940 M%=M%/2% 950 IF M%=0% THEN RETURN 960 N1%=J%-M% 970 FOR I%=1% TO N1% 980 K%=I% 990 L%=K%+M% 1000 ; CUR(23%,0%)'M='M%' N1='N1%' I='I%' '; 1010 IF F$(K%)<=F$(L%) THEN 1060 1020 C$=F$(K%) : F$(K%)=F$(L%) : F$(L%)=C$ 1030 K%=K%-M% 1040 IF K%<1% THEN 1060 1050 GOTO 990 1060 NEXT I% 1070 GOTO 940 1080 REM ...SAVE QUICKSORT...82 02 22 1090 ; 'SORTERING MED QUICK-SORT' 1100 REM Ur Mikrodatorn 80/8 1110 REM 1120 REM F$()=listans element 1130 REM J% =antal element 1140 REM I%,K%=index 1150 REM C$ =j{mf|relseelement 1160 REM F% =flagga 1170 REM R%,L%=indexgr{nser 1180 DIM L%(J%),R%(J%),F%(J%) 1190 F%=1% : L%(1%)=1% : R%(1%)=J% 1200 L%=L%(F%) : R%=R%(F%) : F%=F%-1% 1210 I%=L% : K%=R% 1220 C$=F$(L%) 1230 ; CUR(23%,0%)L%' 'TAB(7%)R%' '; 1240 ; CUR(23%,15%)I%' '; : IF F$(I%)>=C$ THEN 1250 ELSE I%=I%+1% : GOTO 1240 1250 ; CUR(23%,25%)K%' '; : IF F$(K%)<=C$ THEN 1260 ELSE K%=K%-1% : GOTO 1250 1260 IF I%>K% THEN 1290 1270 Y$=F$(I%) : F$(I%)=F$(K%) : F$(K%)=Y$ 1280 I%=I%+1% : K%=K%-1% 1290 IF I%<=K% THEN 1240 1300 REM ...{ndra index 1310 IF K%-L%>=R%-I% THEN 1360 1320 IF I%>=R% THEN 1340 1330 F%=F%+1% : L%(F%)=I% : R%(F%)=R% 1340 R%=K% 1350 GOTO 1390 1360 IF L%>=K% THEN 1380 1370 F%=F%+1% : L%(F%)=L% : R%(F%)=K% 1380 L%=I% 1390 IF L%0% THEN 1200 1410 RETURN