Re: [Zx81:Type-Ins] "Your Computer" campaign...
Posted: Sat Dec 05, 2020 8:54 pm
"Your computer" 09/82
" Indexer "
/ Basic tool/
Contributor : Antipontifex.
" Indexer "
/ Basic tool/
Contributor : Antipontifex.
Code: Select all
0 REM (C) JOHN WATSON,1982
1 DIM A$(341,30)
2 LET CT=0
3 GOTO 100
10 LET X=325-CT
12 LET CD=0
13 FAST
16 CLS
17 FOR N=1 TO 17
20 PRINT A$(X)
25 LET X=X+1
30 NEXT N
35 LET X=X-1
40 PRINT AT 16,0;CHR$((CODE A$(X))+128)
46 PRINT AT 20,0;"%0%=menu%,«e%=edit%,«d%=delete««or««««cursor«up«or«down«to«view«pages%."
47 SLOW
50 GOTO 550
100 CLS
105 SLOW
110 PRINT " indexer"
120 PRINT
125 PRINT "%1 BEGIN NEW INDEX"
130 PRINT
135 PRINT "%2 KEY ENTRIES"
140 PRINT
155 PRINT "%3 SAVE ENTRIES"
160 PRINT
165 PRINT "%4 PRINT INDEX"
170 PRINT
175 PRINT "%5 EDIT INDEX"
180 LET K$=INKEY$
190 IF K$="1" THEN GOTO 230
195 IF K$="2" THEN GOTO 496
205 IF K$="3" THEN GOTO 8500
210 IF K$="4" THEN GOTO 1990
215 IF K$="5" THEN GOTO 10
220 GOTO 180
230 CLS
235 PRINT AT 11,0;"warning THIS DELETES ALL DATA. KEY Y TO GO ON, 0 FOR MENU."
240 IF INKEY$="Y" THEN GOTO 485
245 IF INKEY$="0" THEN GOTO 100
250 GOTO 240
485 CLEAR
486 DIM A$(341,30)
490 LET CT=0
496 FAST
497 CLS
498 LET X=1
500 PRINT AT 0,0;" *******ENTRY********** PAGE";AT 0,0;CT
505 IF CT>330 THEN PRINT AT 0,4;"index«almost«full"
510 IF CT>340 THEN GOTO 100
520 GOSUB 5010
530 SCROLL
540 GOTO 500
550 LET K$=INKEY$
555 IF K$="7" THEN GOTO 600
560 IF K$="6" THEN GOTO 620
565 IF K$="0" THEN GOTO 680
570 IF K$="E" THEN GOTO 700
575 IF K$="D" THEN GOTO 650
580 GOTO 550
600 LET X=X-17
605 IF X<325-CT THEN LET X=325-CT
610 GOTO 13
620 LET X=X-8
630 IF X>324 THEN LET X=324
635 GOTO 13
650 IF A$(X,1)=" " THEN GOTO 550
652 LET A$(X)=""
655 LET CD=CD+1
660 GOTO 600
680 LET CT=CT-CD
690 GOTO 8000
700 IF A$(X,1)=" " THEN GOTO 550
705 LET CT=CT-1
710 GOSUB 5010
720 GOTO 550
1990 PRINT AT 20,0;"PRINTER (p) OR SCREEN (s)?"
1994 LET P$=""
1995 LET P$=INKEY$
1996 IF P$="P" OR P$="S" THEN GOTO 2000
1997 GOTO 1995
2000 LET X=341-CT
2005 FAST
2006 CLS
2010 IF PEEK((PEEK 16396+256*PEEK 16397)+67)<>0 THEN GOTO 2200
2020 SCROLL
2030 SCROLL
2040 LET Z$=A$(X, TO 27)
2045 IF Z$(1)=" " THEN GOTO 2260
2050 PRINT AT 19,0;Z$
2060 LET X=X+1
2070 LET Y$=A$(X, TO 27)
2080 GOSUB 3000
2090 PRINT AT 19,C;", ";A$(X-1,28 TO 30);
2095 LET C=C+5
2100 IF Y$<>Z$ THEN GOTO 2010
2110 GOTO 2160
2120 LET Z$=Y$
2130 LET X=X+1
2135 IF X>341 THEN GOTO 2260
2140 LET Y$=A$(X,1 TO 27)
2150 IF Y$<>Z$ THEN GOTO 2260
2160 PRINT ",";A$(X,26 TO 30);
2165 LET C=C+4
2170 GOTO 2120
2200 IF P$="P" THEN GOTO 2240
2205 PRINT AT 0,0;" press«any«key«to«continue "
2210 PAUSE 33000
2215 CLS
2220 GOTO 2010
2240 COPY
2245 CLS
2250 GOTO 2010
2260 IF PEEK((PEEK 16396+256*PEEK 16397)+67)<>0 THEN GOTO 2300
2270 SCROLL
2280 GOTO 2260
2300 IF P$="P" THEN COPY
2310 PRINT AT 0,0;"end"
2320 PAUSE 33000
2330 GOTO 100
2500 SCROLL
2510 PRINT AT 19,0;
2520 LET C=0
2530 RETURN
3000 LET C=27
3010 IF A$(X-1,C)<>" " THEN RETURN
3020 LET C=C-1
3030 IF C<1 THEN RETURN
3040 GOTO 3010
3050 GOTO 100
5010 INPUT C$
5020 IF C$="0" THEN GOTO 8000
5025 IF C$="" THEN GOTO 5010
5030 IF C$(1)=" " THEN GOTO 5010
5035 LET A$(X)=C$
5038 LET CT=CT+1
5040 PRINT AT19,0;A$(X, TO 27);", ";
5050 INPUT B$
5055 IF B$="" OR LEN B$>3 THEN GOTO 5050
5060 IF B$(1)>"9" OR B$(1)<"0" THEN GOTO 5050
5070 LET Q=LEN B$
5080 FOR S=Q TO 1 STEP -1
5085 LET A$(X,31-S)=B$((Q+1)-S)
5090 NEXT S
5095 LET X=X+1
6000 PRINT AT 19,29;B$
6010 RETURN
8000 FAST
8010 LET C=0
8020 LET S=0
8030 LET A=1
8040 LET N=340
8050 IF 2**A>N THEN GOTO 8080
8060 LET A=A+1
8070 GOTO 8050
8080 LET F=2**A-1
8090 LET F=INT(F/2)
8100 IF F=0 THEN GOTO 100
8110 LET D=N-F
8120 LET B=1
8130 LET A=B
8140 LET E=A+F
8150 LET C=C+1
8160 IF A$(A)>A$(E) THEN GOTO 8200
8170 LET B=B+1
8180 IF B>D THEN GOTO 8090
8190 GOTO 8130
8200 LET S=S+1
8210 LET T$=A$(A)
8220 LET A$(A)=A$(E)
8230 LET A$(E)=T$
8240 LET A=A-F
8250 IF A<1 THEN GOTO 8170
8260 GOTO 8140
8500 PRINT AT 20,0;"prepare«tape - NEWLINE TO START"
8510 INPUT K$
8520 SAVE "INDEXER"
8530 GOTO 100
8600 SAVE "INDEXER"
8610 GOTO 1