home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Compute! Gazette 1994 July
/
1994-07b.d64
/
listmaker
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-09-20
|
5KB
|
165 lines
5 rem copyright 1994 - compute publications intl. ltd. - all rights reserved
10 clr:n=224:m=74:dima$(250):print chr$(14):s$="":n$="[147]":dr=8
15 poke53281,6:poke53280,6:poke646,1
20 print n$s$s$:h$="***** [212][200][197] [204][201][211][212][205][193][203][197][210] *****":l=len(h$):ta=(40-l)/2-1
30 for h=l to 1 step-1:h1$=" "+mid$(h$,h,1)
40 if h1$<>" "then for hh=1 to h:printtab(ta+hh-1)h1$"[145]":next
50 next:print s$s$
60 printtab(6)"[208]ress [204] to [204]oad a [198]ile"
70 printtab(6)"[208]ress [197] to [208]roceed to [197]ntry"
80 get l$:if l$="e"then120
90 if l$<>"l"then80
100 gosub1070:if k<1then60
110 goto340
120 print n$tab(6)s$"[197]nter a [212]itle for your [204]ist"
130 printtab(4):inputc$:if c$=""then120
140 print n$"[204][201][205][201][212][211]:"n"entries -"m"characters each";
150 print"[213]se [201][206][211][212]-[196][197][204] to [195]orrect in current entry";
160 print"[208]ress ^ on blank line to [197]nd entry mode"
170 ll=0:k=k+1:a$(k)="":print"[157]"k"[157]-";:if k<10then print" ";
180 if k<100then print" ";
190 print"[164][157]";:get a$:if a$=""then190
200 ll=len(a$(k)):if a$=chr$(20)and ll<1or a$=chr$(34)then190
210 if a$=chr$(20)then a$(k)=left$(a$(k),ll-1):goto270
220 if a$=chr$(13)and ll<1 or a$=chr$(19)then190
230 if a$=chr$(13)then print" ":goto290
240 if asc(a$)<32 or asc(a$)>96and asc(a$)<191then190
250 if ll>m-1then190
260 a$(k)=a$(k)+a$
270 print a$;:if a$="^"and ll=0then a$(k)="":k=k-1:goto310
280 goto190
290 if k=n then310
300 goto170
310 print n$tab(11)s$k"[197]ntries [205]ade"
320 printtab(13)s$"[208]ress [193]ny [203]ey"
330 wait198,15:get m$
340 print n$ tab(2)s$"[208] = [208]rintout (turn printer on)"
350 printtab(5)"[196] = [196]elete [213]nwanted [197]ntries"
360 printtab(8)"+ = [205]ake [193]dditions to [204]ist"
370 printtab(11)"[214] = [214]iew [195]omplete [204]ist"
380 printtab(14)"[206] = [211]tart a [206]ew [204]ist"
390 printtab(17)"[193] = [193]lphabetize [204]ist":printtab(20)"[211] = [211]ave to [196]isk"
400 printtab(23)"[209] = [209]uit"
410 get p$:if p$="+"then m=74:goto140
420 if p$="s"and k>1 then gosub880:goto340
430 if p$="p" and k>1then gosub540:goto340
440 if p$="v"then gosub1290:goto340
450 if p$="n"or p$="q"then1570
460 if p$="d"then gosub1340:goto340
470 if p$<>"a"then410
480 print n$tab(10)s$"[215]ait - [193]lphabetizing"
490 for j=k to 2step-1:r$=a$(1):f=1
500 for l=2 to j
510 if a$(l)>r$then r$=a$(l):f=l
520 next:a$(f)=a$(j):a$(j)=r$
530 next:printtab(8)"[145][193]lphabetizing [195]omplete":for x=1 to 1200:next:goto340
540 print n$s$"[208]lease [215]ait: [195]hecking for [204]ongest [197]ntry"
550 le=0:for x=1 to k:ll=len(a$(x))
560 if ll>le then le=ll
570 next:if le>38 or k<10then nc=1:m=74:goto690
580 print n$s$" [195][200][207][207][211][197] [206][213][205][194][197][210] of [195]olumns for [208]rintout":print" [206][207][212][197]: [195]hoices";
590 print" are determined by longest"spc(7)"entry -"le"characters/spaces"
600 printtab(11)"1 = [211]ingle [195]olumn"
610 if le<39then printtab(11)"2 = [212]wo [195]olumns":y=2
620 if le<26then printtab(11)"3 = [212]hree [195]olumns":y=3
630 if le<19then printtab(11)"4 = [198]our [195]olumns":y=4
640 get nc$:nc=val(nc$):if nc<1 or nc>y then640
650 if nc=1then m=74
660 if nc=2then m=38
670 if nc=3then m=25
680 if nc=4then m=18
690 print n$s$" [198]orm [198]eed will occur when any column"spc(4)"exceeds 56 entries"
700 printtab(7)s$"[208] = [195]ontinue with [208]rintout":printtab(7)"[195] = [195]ancel"
710 get h$:if h$="c"then return
720 if h$<>"p"then710
730 mh=39:hh=mh-(len(c$)/2):hi=int(hh)
740 print n$tab(13)s$"[208]rinting...."
750 open4,4,7:open2,4
760 print#4,spc(hi);c$:print#4:print#4
770 tc=int(k/nc):z=k-(tc*nc):if z>0then tc=tc+1
780 for i=1 to tc:if i=57 or i=113 or i=169then print#2,chr$(12)
790 pi=m+2-len(a$(i)):pj=m+2-len(a$(i+tc)):pk=m+2-len(a$(i+tc*2))
800 if nc=1then print#4,a$(i):goto850
810 if nc=2then print#4,a$(i);spc(pi);a$(i+tc):goto850
820 if nc=3then print#4,a$(i);spc(pi);a$(i+tc);spc(pj);a$(i+tc*2):goto850
830 if nc=4then print#4,a$(i);spc(pi);a$(i+tc);spc(pj);a$(i+tc*2);
840 print#4,spc(pk);a$(i+tc*3)
850 next i:close4:close2
860 printtab(11)"[145][208]rintout [195]omplete"
870 for x=1 to 2000:next:return
880 print n$s$" [196]o you want to view the [196]isk [196]irectory before";
890 print" making [211]ave?":gosub1560
900 get d$:if d$="y"then gosub1510:goto920
910 if d$<>"n"then900
920 print n$s$" *** [208]ress [210]eturn [193]lone to [195]ancel ***"
930 printtab(6)s$"[197]nter [198]ilename use lower case":print
940 printtab(11);:input f$
950 if f$=""then return
960 if len(f$)>16then printtab(13)"[210]e-enter-[212]oo [204]ong":goto940
970 printtab(10)s$"[211]aving "f$:cr$=chr$(13)
980 open 15,8,15:print#15,"s0:"f$
990 open2,8,2,"@0:"+f$+",s,w":gosub1260
1000 print#2,k;cr$;c$
1010 for i=1 to k
1020 print#2,chr$(34);a$(i)
1030 next:gosub1260
1040 close2:close15
1050 printtab(12)s$"[211]ave [195]ompleted":for x=1 to 1000:next
1060 return
1070 print n$s$" [196]o you want to view the [196]isk [196]irectory before [204]oading?"
1080 gosub1560
1090 get ld$:if ld$="y"then gosub1510:goto1110
1100 if ld$<>"n"then1090
1110 print n$s$" *** [208]ress [210]eturn [193]lone to [195]ancel ***"
1120 printtab(6)s$"[197]nter [198]ilename use lower case":print
1130 printtab(11);:input g$
1140 if g$=""then print n$s$chr$(14):return
1150 printtab(10)s$"[204]ooking for ";g$
1160 open 15,8,15
1170 open2,8,2,"0:"+g$+",s,r":gosub1260
1180 input#2,k,c$
1190 for i=1 to k
1200 input#2,a$(i)
1210 gosub1260
1220 next
1230 close2:close15
1250 return
1260 input#15,en,em$,et,es
1270 if en>1thenprint ,em$
1280 return
1290 print n$" [208]ress [211]pace [194]ar [212]o [211]tart/[208]ause [204]isting "
1300 get m$:if m$<>chr$(32)then1300
1310 for i=1 to k:get m$:print a$(i):if m$=chr$(32)then wait198,15:get m$
1320 for x=1to100:next:next:print:printtab(14)"[208]ress [193]ny [203]ey":wait198,15:get m$
1330 return
1340 gosub1500:a=1:aa=1:for i=1 to k:print i"[157]-"left$(a$(i),34)
1350 if i/22=int(i/22)or i=k then print" "chr$(19):poke204,0:goto1380
1360 next:if z$="^" or k=0 then poke204,255:return
1370 goto1340
1380 getz$:ifz$=chr$(32)then aa=i+1:a=aa:gosub1500:goto1360
1390 if z$=""and aa<>i and aa<k then aa=aa+1:print" [157]"
1400 if z$="[145]"and i=k and aa<a+1 then1380
1410 if z$="[145]"and aa>i-21 then aa=aa-1:print" [157][145][145]"
1420 if z$="^"then i=k:goto1360
1430 if z$=chr$(4)then for y=1to38:print" ";:next:print" ":goto1450
1440 goto1380
1450 a$(aa)="":p=1:for x=1 to k
1460 if a$(x)=""then1480
1470 a$(p)=a$(x):p=p+1
1480 next:for j=p to k:a$(j)="":next:k=p-1
1490 i=k+1:goto1360
1500 print" "n$"[211][208][193][195][197] [194][193][210]=list [195][212][210][204]/[196]=delete ^=cancel[146]":return
1510 sys57812"$",dr:poke43,1:poke44,192:poke768,174:poke769,167:sys47003,1
1520 poke782,192:sys65493:sys42291:list:poke44,8:poke768,139:poke769,227
1530 print:printtab(8)"[208]ress [193]ny [203]ey"
1540 wait198,15:get m$
1550 return
1560 printtab(17)"[217]es/[206]o":return
1570 print n$s$:if p$="q"then printtab(17)"[209]uit??"
1580 if p$="n"then printtab(12)"[211]tart [206]ew [204]ist??"
1590 printtab(13)"[193]re [217]ou [211]ure??":gosub 1560
1600 get q$:if q$="n"then340
1610 if q$="y"and p$="n"then10
1620 if q$="y"and p$="q"then sys64738
1630 goto1600