5 ' PERSONAL CORRESPONDENCE DATABASE 6 ' Using UltraScreen & Random 7 ' Russ Hall, 1989, 1380 Diane Dr. 8 ' Salt Lake City, UT 84123 10 CLS:IFPEEK(MAXRAM)<>82ANDPEEK(64230)=243THENPRINT@140,"TS-RANDOM not on!":GOSUB700:MENU 20 PRINT@135,"DB80.BA V.4.0 by RUSS HALL":MAXFILES=3:CLEAR2500:DEFINTA-Z:DEFSTRD,F:DIMN(15),F(15),D(19),M(15),M1(15):RV$=CHR$(27) +"p":NV$=CHR$(27)+"q":O$=STRING$(25,46):FS=" " 25 OPEN"0:"FORINPUTAS1:OPEN"0:"FOROUTPUTAS2:INPUT#1,REC=400,DO$,Z1!,A:D(18)=DO$ 32 CC$="&'?>@A#(6$3491ANDRIGHT$(D(T),1)=FSTHENG=G-1:D(T)=LEFT$(D(T),G) 48 RETURN 50 CK=0:FORT=1TO15:GOSUB47:CK=CK+G:NEXT:IFCK>242THENBEEP:GOTO130 53 IFD(2)<>D(0)THEND(18)=D(2) 54 IFD(5)<>D(17)ANDLEN(D(5))>6THEND(18)=D(5) 55 U=2:GOSUB65:U=5:GOSUB65 60 PRINT#2,REC=V,D(1)","D(16)","D(3)","D(4)","D(19)","D(6)","D(7)","D(8)","D(9)","D(10)","D(11)","D(12)","D(13)","D(14)","D(15) :SOUND5000,2:RETURN 65 E$=D(U):M$=LEFT$(E$,2):Y$=RIGHT$(E$,2):D=MID$(E$,4,2):D(U+14)=Y$+M$+D:RETURN 70 U=2:GOSUB75:U=5:GOSUB75:D(0)=D(2):D(17)=D(5):RETURN 75 E$=D(U):Y$=LEFT$(E$,2):M$=MID$(E$,3,2):D=RIGHT$(E$,2):D(U)=M$+"/"+D+"/"+Y$:RETURN 80 INPUT#1,REC=V,D(1),D(2),D(3),D(4),D(5),D(6),D(7),D(8),D(9),D(10),D(11),D(12),D(13),D(14),D(15):RETURN 85 PRINT@540,RV$;SPACE$(54)"Menu";:LINE(239,61)-(232,56),1,BF:RETURN 90 PRINT@440,"WORKING...":FORT=1TO15:F(T)="":NEXT:T=FRE(""):RETURN 95 FORT=1TO15:D(T)="":NEXT:RETURN 100 ST=1:CLS:V=A:GOSUB85:PRINT@23,NV$"STORE ENTRIES":GOTO110 105 CLS:PRINT@540,RV$" Save Find Delete Prev. Next Print Label Exit";:LINE(239,61)-(232,56),1,BF:PRINT@22,NV$"EXAMINE / UPDATE" 110 C=1:FORT=1TO15:PRINT@M(T),F(T):IFD(T)>""THENPRINT@N(T),D(T); 115 NEXT:IFST<>1THENPRINT@149,"#"V" " 120 IFST=1ANDC>15THENT=1:GOSUB47:A$=D(1):GOSUB335:A=A+1:GOSUB50:GOSUB95:GOTO110ELSEIFC>15THENC=1 124 F=D(C):H=N(C):G=M1(C):E=1:IFF=""THENF=FS 126 L=LEN(F):IFL>GTHENL=G:F=LEFT$(F,G) 128 IFE>GTHENPRINT@H+E-2,B$:IFC=4ANDNOT(F="Y"ORF="N"ORF="I")THENBEEP:GOTO124ELSE158 130 PRINT@H,MID$(F,1,G);:PRINT@H+E-1,;:B$=INPUT$(1) 132 ONINSTR(CC$,B$)+ 1GOTO134,164,166,138,136,156,158,152,148,160,162,144,146,160,162,158,158,150,140,168,142,183,270,260,205,230,245,200,315 134 C$=RIGHT$(F,1):MID$(F,E)=B$+MID$(F,E):F=F+C$:E=E+1:GOTO126 136 GOSUB174:IFE1THENE=E-1:GOTO126ELSE126 140 IFE>1THENMID$(F,E-1)=MID$(F,E):F=LEFT$(F,L-1):PRINT@H+L-1,FS;:GOTO138ELSE126 142 IFE1THENF=LEFT$(F,L-1)+FS:GOTO126ELSE126 144 E=1:GOTO130 146 GOSUB174:E=L:GOTO130 148 E=INSTR(E+1,F,FS):IFE=0THEN146ELSEIFE2THENFORE=E-2TO1STEP-1:IFMID$(F,E,1)<>FSTHENNEXT 154 IFE=1THEN130ELSEE=E+1:GOTO130 156 GOSUB170:C=C-1:IFC<1THENC=15:GOTO124ELSE124 158 GOSUB170:C=C+1:GOTO120 160 GOSUB170:C=1:GOTO124 162 GOSUB170:C=10:GOTO124 164 IFC=2ORC=5THENF=DATE$:PRINT@N(C),F:GOTO158 166 IFC=2ORC=5THENF=D(18):PRINT@N(C),F:GOTO158 168 BEEP:GOTO126 170 IFF=FSTHENRETURNELSED(C)=F:RETURN 174 IFLFSTHENF=F+FS:L=L+1:RETURNELSERETURN 183 IFST=1THEN315ELSEGOSUB50:GOTO130 200 GOSUB470:GOSUB475:CLOSE3:GOTO130 205 Q=-1:IFS=1THENBEEP:GOTO130ELSES=S-1:ONST+1GOTO240,,225,,545 225 V=S:GOSUB80:GOSUB70:GOTO110 230 Q=1:IFS=399THENBEEP:GOTO130ELSES=S+1:ONST+1GOTO240,,225,,540 240 V=S:GOSUB80:IFLEFT$(D(1),1)2THENBEEP:GOTO130ELSEFORT=1TO15:IFT=2THENX=15ELSEIFT=4THENX=8ELSEX=M1(T) 250 LPRINTLEFT$(F(T),LEN(F(T))-X);:LPRINTD(T)" ";:IFT<>3ANDT<>4ANDT<>11ANDT<>12THENLPRINT 255 NEXT:LPRINT:LPRINT:GOTO130 260 IFST>0THENBEEP:GOTO130ELSEGOSUB690:IFK<>89THEN105 265 GOSUB95:D(1)=CHR$(1)+STRING$(23,0):A=A-1:GOSUB60:GOTO315 270 ST=0:CLS:PRINTTAB(22)"- NAME SEARCH -":PRINT:PRINTTAB(18)"Last Name Only, Please":GOSUB85:PRINT@425,NV$"Last update: "DO$:PRINT@455,"Total Records:"A:GOSUB95 285 A$="":PRINT@240,SPACE$(30):PRINT@245,;:INPUTA$:IFA$="THEN315ELSEGOSUB335 290 PRINT" NOT FOUND. ";:GOSUB700:PRINT@300,SPACE$(40):GOTO285 315 CLS:PRINT@126,"IND NAME":PRINT@155,"OMMENT REPORT":PRINT@186,"TORE ENTRIES":PRINT@215,"ABELS PRINTED":PRINT@246," UMERICAL ACCESS":PRINT@275,"ISK FORMAT" 320 PRINT@306,"THER RECALL":PRINT@335,"

RINT FULL REPORT":LINE(12,6)-(224,46),1,B:GOSUB85:PRINT@439,NV$;SPACE$(21) :PRINT@440,"SELECT? ";:GOSUB95 325 S$=INPUT$(1):B=INSTR("FfCcSsLlNnPpOo",S$):IFB=0THEN325 330 PRINTS$:ONINT(B/2+.5)GOTO270,405,100,455,425,485,515,800,500 335 CALL30300:B=0:F="":G=LEN(A$):IFG<2THEN315ELSEFORT=1TOG:B$=MID$(A$,T,1):E=ASC(B$):IFE=32THENB=TELSEIFE<97THENB$=CHR$(E+32) 345 F=F+B$:NEXT:IFB>0THENA$=LEFT$(F,B-1):F=RIGHT$(F,G-B) 350 R=0:FORI=1TO2:B$=MID$(F,I,1):G=INSTR("ab-c-d-ef-g-hijkl-m-nopqr-s-tuvwxzy",B$):G=G+30:R=R*28+G:NEXT:R=(R/2.45)-364:IFR> 399THENR=399ELSEIFR<1THENR=1 360 V=R:H=0:GOSUB400:C$=F:E=L:IFB>0THENF=A$:GOSUB400:D(1)=F+FS+C$ELSED(1)=C$ 370 INPUT#1,REC=V,D:H=H+1:IFLEFT$(D,1)0THENRETURN 375 G=LEN(D):FORT=1TOG:B$=MID$(D,T,1):IFB$=FSTHEND=RIGHT$(D,G-T) 380 NEXT:IFLEFT$(D,E)=C$ANDST<>1THENS=V:GOSUB80:GOSUB70:GOTO105 385 IFH<20ANDV<398THENV=V+1:GOTO370ELSEIFH=20ORV=399THENV=R 390 IFH<30ANDV>2THENV=V-1:GOTO370 395 IFST=1THENBEEP:PRINT@190," NO ROOM ":GOSUB700:GOTO315ELSERETURN 400 L=LEN(F):F=CHR$(ASC(LEFT$(F,1))-32)+RIGHT$(F,L-1):RETURN 405 CLS:PRINT@70,"COMMENT REPORT FOR OWED LETTERS":GOSUB430:OPEN"CORR"FOROUTPUTAS3:GOSUB90:S=400:FORV=1TO399:S=S- 1:PRINT@320,S:GOSUB80:IFD(4)<>"Y"ORIFVAL(D(2))>Z!THEN420 415 PRINT#3,D(2)","D(1)","D(8)","D(3)","D(5)","D(6)","D(7) 420 NEXT:CLOSE3:GOTO40 425 ST=2:X$="":PRINT@435,"SECTOR # TO SEEK";:INPUTX$:IFX$=""THEN315ELSEV=VAL(X$):IFV<1ORV>400THENBEEP:GOTO315 427 S=V:GOSUB80:GOSUB70:GOTO105 430 GOSUB85:PRINT@184,NV$"CUT OFF DATE: " 435 D="":PRINT@198,"../../.. MM/DD/YY":PRINT@198,; 436 S$=INPUT$(1):IFS$=CHR$(8)ANDD$>""THEND=LEFT$(D,LEN(D)-1):PRINTCHR$(127);:GOTO436 437 IFS$=CHR$(4)THEND=DATE$:PRINT@198,D;:GOTO450 440 B=INSTR("0123456789",S$):IFST=4ANDS$=CHR$(13)THENRETURNELSEIFB=0THENBEEP:GOTO436 445 IFS$="THEN315ELSEPRINTS$;:D=D+S$:IFLEN(D)<8THEN436 450 U=1:D(1)=D:GOSUB65:IFVAL(M$)>12THENBEEP:GOTO435ELSEIFVAL(Y$)<85THENBEEP:GOTO435ELSEZ!=VAL(D(15)):RETURN 455 CLS:PRINT@70,"PRINT LABELS FOR OWED LETTERS":GOSUB430:Z2!=Z!:U=1:D(1)=RIGHT$(STR$(Z1!),6):GOSUB75:PRINT@451,"Making labels from "D(1):GOSUB90:GOSUB470:S=400:FORV=1TO399:S=S-1:PRINT@320,S:GOSUB80:IFD(4)="Y"ANDVAL(D(2))Z1!THENGOSUB475 465 NEXT:CLOSE3:GOTO40 470 OPEN"LABEL"FORAPPENDAS3:RETURN 475 PRINT#3,D(15)" "D(1):PRINT#3,D(10):PRINT#3,D(11)", "D(12)" "D(13):PRINT#3,D(14):PRINT#3,:PRINT#3,:RETURN 485 IF(INP(187)AND6)<>2THENBEEP:GOTO315ELSELPRINT" ----SECTOR #------NAME-------------THEIRS--NUMBER--OWE?--MINE----":LPRINT 487 GOSUB90:T=0:FORV=1TO399:GOSUB80:IFLEFT$(D(1),1)""THEN532 530 NEXT:GOTO315 532 IFTV=1ORTV=3ORTV=5THENPRINT:PRINT"Check Another Field, Too? ";:GOSUB700:IFK=89THENFORT=240TO360STEP60:PRINT@T,SPACE$(50) :NEXT:TV=TV+1:H2=H:A2$=A1$:GOTO517 535 H1=H:FORV=1TO399:GOSUB550:NEXT:GOTO315 540 FORV=STO399:GOSUB550:NEXT:GOTO315 545 FORV=STO1STEP-1:GOSUB550:NEXT:GOTO315 550 GOSUB80:IFLEFT$(D(1),1)>CHR$(2)THENONTVGOSUB552,555,565,570,575,580 551 RETURN 552 IFD(H1)=A1$THEN585ELSERETURN 555 IFD(H1)=A1$ANDD(H2)=A2$THEN585ELSERETURN 565 IFVAL(D(H1))Z!THEN585ELSERETURN 580 IFVAL(D(H2))>Z!ANDD(H1)=A1$THEN585ELSERETURN 585 GOSUB70:S=V:GOTO105 600 IFTV=4ORTV=6THENA1$=D(15):GOTO535ELSEPRINT:PRINT" xact match, efore date, fter date":PRINTTAB(10)"Select? ";:GOSUB700 605 IFK=66THENTV=3:GOTO532ELSEIFK=65THENTV=5:GOTO532 610 A1$=D(15):GOTO532 690 PRINT@545,"ARE YOU SURE? "; 700 S$=INPUT$(1):K=ASC(S$):IFK>96THENK=K-32 705 RETURN 800 GOSUB690:IFK<>89THEN315 810 IFPEEK(64230)=61THENPOKE64201,255:CALL63805,3ELSECALLMAXRAM+10,3 820 CLOSE1:OPEN"0:"FORINPUTAS1:PRINT#2,REC=400,DATE$", 0 , 0 ":BEEP:GOTO315 1555 DATA"NAME: ",66,60,25,"THEIRS: ../../.. MMDDYY",105,97,8,"NUMBER: ..",128,120,2,"OWE? . Y/N/I",137,132,1," MINE: ../../ ..",165,157,8,"...",180,180,60,"...",240,240,60,"SPOUSE/COMP: ....................",313,300,20 1560 DATA"PHONE: ...-...-....",346,339,12,"ADDRESS: ",369,360,32,"CITY: ",426,420,25,"ST: ..",462,458,2,"ZIP: .....",470,465,5,"EXTRA: ",487,480,25,"TITLES: .............",526,518,13