PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #387)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “KEEP IN TOUCH”

Keep in Touch is a networking tool for all kinds of people and
organizations.  As networking is maintaining contact with people and
organizations thereby sharing and distributing information, products,
services, etc., tying them all together is key to success.  Keep in
Touch may be that key for you!  Two other interesting observations
about this program: while it is written in BASIC, Keep in Touch uses a
menu structure similar to Lotus 1-2-3!

Features:

~ Call using your automatic dialer
~ Display the elapsed time of a call
~ Show the Things-To-Do list
~ Hang up the telephone and show elapsed time
~ Check the time or use the alarm clock
~ Games, visual relaxation and amusement
~ Use the built-in calculator
~ Examine information on your contacts and clients
~ Create reports about your contacts and clients
~ Print a phonelist report
~ Print a report of dates
~ Print mailing labels using Avery Tabulabel 4146 4" format
~ Check the amount of memory available

System Requirements: BASIC

How to Start: Consult the KIT.DOC file for directions and documentation.
To run this BASIC programs, consult the directions in GETTING STARTED
for your configuration.

File Descriptions:

CONFIG   BAS  Configures hardware, monitor, printer, telecommunications
AUTOEXEC BAT  Starts Keep In Touch when the system is booted.
KEYSET   BAS  Author's comments and copyright notice
JAPAN    DAT  Sample file
FILES    KIT  Directory data file
DEMOSET  BAS  Part of the demonstration program
DEMO     KIT  Demo data file
DEMO     BAT  Batch file to start the Keep In Touch demonstration
DEMO     BAS  Keep In Touch demonstration program
CONFIG   KIT  Configuration data file
KIT      BAS  The Keep In Touch program
KIT      DOC  Information about Keep In Touch
KIT      BAT  Same as AUTOEXEC.BAT
TODO     DAT  Sample file
NEW      DAT  Sample file
MENU     KIT  Menu data file

CONFIG.BAS

1 REM KEEP IN TOUCH (tm) -- CONFIGURATION PROGRAM
3 REM (C) COPYRIGHT 1984 -GNOSSOS SOFTWARE- ALL RIGHTS RESERVED
5 REM BY STEVE KANTOR
6 REM V0 - 12/15/84
10 DIM K(15),T%(15),B(30):B(15)=120
11 DIM M$(10,9,1),S$(1,30,2),M%(16),C$(30)
12 DIM T$(10),B$(10),C(10,2)
15 GOSUB 40000:GOTO 60000
19 CLS:GOSUB 110:GOSUB 118:LOCATE 1,1:RETURN
20 GOSUB 102:RETURN
21 GOSUB 280:GOSUB 281:RETURN
22 GOSUB 120:GOSUB 114:RETURN
23 COLOR 7,0:GOSUB 390:PRINT S$(SN,X,0);:GOSUB 390:RETURN
24 GOSUB 102:GOSUB 124:GOSUB 110:GOSUB 530:RETURN
25 GOSUB 534:GOSUB 564:RETURN
26 GOSUB 140:GOSUB 530:RETURN
27 COLOR 0,15:GOSUB 390:PRINT S$(SN,X,0);:GOSUB 390:RETURN
70 REM inchar
72 B(6)=0:R$=INKEY$:IF R$="" THEN 72
74 IF LEN(R$)=2 THEN R$=RIGHT$(R$,1):B(6)=-1
75 R=ASC(R$):RETURN
100 LOCATE 4,1:PRINT STRING$(79,"═");:RETURN
101 A$="MENU":GOSUB 111:RETURN
102 CLS:GOSUB 100:GOSUB 101:B(2)=0:RETURN
103 LOCATE 3,1:PRINT STRING$(79,"─");:RETURN
104 REM BOX
105 LOCATE GSV,GSH:PRINT "┌";STRING$(BW-2,"─");"┐";:FOR V=GSV+1 TO GSV+BH-1
106 LOCATE V,GSH:PRINT "│";:LOCATE V,GSH+BW-1:PRINT "│";:NEXT
107 LOCATE GSV+BH,GSH:PRINT "└";STRING$(BW-2,"─");"┘";
108 FOR V=GSV+5 TO GSV+BH:LOCATE V,GSH:PRINT "█";:NEXT
109 LOCATE GSV+BH,GSH:PRINT "█";STRING$(BW-9,"▄");:RETURN
110 GSV=6:GSH=5:BW=70:BH=17:GOSUB 104:GOSUB 118:RETURN
111 COLOR 0,7:LOCATE 1,74:PRINT " "A$" ";:COLOR 7,0:RETURN
112 COLOR 23,1:LOCATE 1,74:PRINT " WAIT ";:COLOR 7,0:RETURN
113 GSV=7:GSH=5:BW=70:BH=15:GOSUB 104:RETURN
114 A$="PAUSE":GOSUB 111:GOSUB 281:LOCATE 2,1:COLOR 15,0
115 PRINT "Please press any key to continue...";:GOSUB 70:COLOR 7,0:GOSUB 101:RETURN
116 GSV=6:GSH=5:BW=70:BH=18:GOSUB 104:RETURN
118 LOCATE GSV-2,GSH+BW-8:PRINT "┌──────┐";:FOR X=GSV-1 TO GSV-1:LOCATE X,GSH+BW-8
119 PRINT "│";:LOCATE X,GSH+BW-1:PRINT "│";:NEXT:LOCATE GSV,GSH+BW-8:PRINT "┴";:LOCATE GSV,GSH+BW-1:PRINT "┤";:RETURN
120 REM MESSAGE
121 GOSUB 280:LOCATE 3,1:COLOR 15,0:PRINT M$;:COLOR 7,0:RETURN
122 GOSUB 281:LOCATE 2,1:COLOR 15,0:PRINT M$;:COLOR 7,0:RETURN
124 REM OUTCL
125 FOR T1=9 TO 16:LOCATE VAL(CL$(T1,1)),VAL(CL$(T1,2))
126 PRINT CL$(T1,0);":";:NEXT:RETURN
130 REM prompt
131 GOSUB 281:GOSUB 120:LOCATE ,,1,0,7:PRINT ":  ";:LINE INPUT;"";Q$:GOSUB 280:RETURN
133 A$="EDIT":GOSUB 111:GOSUB 21:GOSUB 160
134 LOCATE 2,1:PRINT "Use the direction keys to highlight information (UP/DOWN/LEFT/RIGHT/HOME/END)";
135 LOCATE 3,1:PRINT "Type in new information followed by RETURN.  Use DEL and INS as needed.";
136 RETURN
143 REM YESNO
144 B(2)=0:GOSUB 122:GOSUB 280:SN=1:B(8)=0:GOSUB 300:IF T2=2 THEN 146
145 IF X=1 THEN B(8)=-1 ELSE IF X=3 THEN B(8)=2
146 RC=PC:GOSUB 21:RETURN
152 REM POINT
153 A$="POINT":GOSUB 111:LOCATE 1,1:PRINT "Please use the direction arrow keys to point to the proper item";
154 M$="Use the direction keys (UP/DOWN/LEFT/RIGHT/HOME/END)":GOSUB 122
155 M$="Press the RETURN key to select the configuration choice you are pointing to":GOSUB 120:RETURN
156 NG=NG+1:B(12)=NG:F$="NEW.DAT":GOSUB 500
157 M$="Enter a name for your file (8 characters or less, eg. PEOPLE)":GOSUB 130
158 IF LEN(Q$)>8 THEN 157 ELSE G$(NG,0)=Q$:F$=Q$+".DAT":G$(NG,1)="1"
159 M$="Enter a description of the file":GOSUB 130:G$(NG,2)=Q$:RETURN
160 LOCATE 1,1:PRINT "Press the ESC key when you are finished to return to the menu";:RETURN
162 REM ISDATE
163 B=0:IF LEN(A$)<>8 THEN RETURN ELSE IF MID$(A$,3,1)<>"/" THEN RETURN
164 IF MID$(A$,6,1)<>"/" THEN RETURN ELSE IF VAL(MID$(A$,1,2))<1 THEN RETURN
165 IF VAL(MID$(A$,1,2))>12 THEN RETURN ELSE IF VAL(MID$(A$,4,2))<1 THEN RETURN
166 IF VAL(MID$(A$,4,2))>31 THEN RETURN ELSE IF VAL(MID$(A$,7,2))<1 THEN RETURN
167 IF VAL(MID$(A$,7,2))>99 THEN RETURN ELSE B=-1:RETURN
172 M$="Coming soon in a future version. Be sure to send in your registration!":GOSUB 22:RETURN
173 REM YN
174 T2=0:IF INSTR("Yy",R$)<>0 THEN B(8)=-1:T2=2
175 IF INSTR("Nn",R$)<>0 THEN B(8)=0:T2=2 ELSE IF INSTR("Cc",R$)<>0 THEN B(8)=2:T2=2
177 RETURN
200 REM MENU
202 GOSUB 530:R=-1:B(2)=0:B=0:GOSUB 281:T1=VAL(M$(MN,0,0)):IF MC>T1 OR PM<>MN THEN MC=1
204 FOR X=1 TO T1:LOCATE 2,1+(X-1)*10
206 PRINT M$(MN,X,0);"  ";:NEXT
208 WHILE R<>K(0):LOCATE 2,1+(MC-1)*10:COLOR 0,15:PRINT M$(MN,MC,0);
212 GOSUB 280:LOCATE 3,1:PRINT M$(MN,MC,1);
214 GOSUB 70:GOSUB 231:IF B THEN MC=T3:B=0:RETURN
216 LOCATE 2,1+(MC-1)*10:PRINT M$(MN,MC,0);
218 IF R=K(1) THEN B=1:RETURN
220 IF R=K(5) THEN MC=MC-1:IF MC=0 THEN MC=T1
222 IF R=K(4) THEN MC=MC+1:IF MC>T1 THEN MC=1
224 IF R=K(6) THEN MC=1 ELSE IF R=K(7) THEN MC=T1
226 WEND:R=-1:RETURN
231 IF B(6) THEN RETURN ELSE IF R>90 THEN R=R-32
232 IF NOT ((R>=65 AND R<=90) OR (R>=97 AND R<=122)) THEN RETURN
234 FOR T3=1 TO T1:IF R=ASC(LEFT$(M$(MN,T3,0),1)) THEN B=-1:RETURN
235 NEXT:RETURN
280 COLOR 0,0:LOCATE 3,1:PRINT SPC(78);:COLOR 7,0:RETURN
281 COLOR 0,0:LOCATE 2,1:PRINT SPC(79);:COLOR 7,0:RETURN
299 GOSUB 152:LOCATE 6,1:COLOR 15,0:PRINT "<< ";CF$(CC,0,0);" >>";
300 REM SCRMEN
302 PC=RC:B=0:T1=VAL(S$(SN,0,0)):FOR X=1 TO T1:GOSUB 23:NEXT
304 IF B(2) THEN RETURN
310 IF X<1 OR X>T1 THEN X=1
312 B=0:T1=VAL(S$(SN,0,0)):R=-1:WHILE R<>K(0):GOSUB 27
314 GOSUB 70
316 GOSUB 23
318 IF R=K(5) OR R=K(2) THEN X=X-1
319 IF R=K(4) OR R=K(3) THEN X=X+1
322 IF R=K(6) THEN X=1 ELSE IF R=K(7) THEN X=T1
327 IF X>T1 THEN X=1 ELSE IF X<1 THEN X=T1
328 WEND:CF(CC)=X:CLS:RETURN
390 LOCATE VAL(S$(SN,X,1)),VAL(S$(SN,X,2)),1,31,0:RETURN
400 REM TIM
403 T%(0)=VAL(LEFT$(TIME$,2)):T%(1)=VAL(MID$(TIME$,4,2)):T%(2)=VAL(MID$(TIME$,7,2))
405 T%=T%(0):IF T%(0)>12 THEN T$(2)="PM":T%=T%-12 ELSE T$(2)="AM"
406 T$(3)=STR$(T%)+":"+STR$(T%(1))+"  "+T$(2)
407 RETURN
500 REM READDATA
501 F$="CONFIG.KIT":GOSUB 102:M$="Reading information from disk for "+F$:GOSUB 120
502 GOSUB 112:OPEN F$ FOR INPUT AS #1
504 INPUT #1,VER,VD$,PD$,PT$,CF(0),CF(1),CF(2),CF(3),CF(4):M$="You last configured Keep in Touch on "+PD$+" at "+PT$:GOSUB 120:REM VERSION 0
505 INPUT #1,CU$(0),CU$(1),CU$(2),CU$(3),CU$(4),CU$(5),CU$(6),CU$(7),CU$(8),CU$(9),CU$(10),CU$(11),CU$(12),CU$(13),CU$(14),CU$(15),CU$(16),CU$(17),CU$(18),CU$(19),CU$(20),CU$(21),CU$(22),CU$(23),CU$(24),CU$(25)
506 FOR X=0 TO 30:C$(X)=CU$(X):NEXT:FOR N=0 TO 4:IF N=3 THEN 508
507 FOR X=0 TO 25:CU$(X)=CF$(N,CF(N),X):NEXT:INPUT #1,CU$(0),CU$(1),CU$(2),CU$(3),CU$(4),CU$(5),CU$(6),CU$(7),CU$(8),CU$(9),CU$(10),CU$(11),CU$(12),CU$(13),CU$(14),CU$(15),CU$(16),CU$(17),CU$(18),CU$(19),CU$(20),CU$(21),CU$(22),CU$(23),CU$(24),CU$(25)
508 NEXT N:CLOSE #1:GOSUB 102:FOR X=0 TO 30:CU$(X)=C$(X):NEXT:RETURN
510 REM SAVEDATA
512 GOSUB 400:F$="CONFIG.KIT":GOSUB 102:GOSUB 112:M$="Saving configuration on disk as "+F$:GOSUB 120
513 OPEN F$ FOR OUTPUT AS #1
514 WRITE #1,0,"01/01/85",DATE$,TIME$,CF(0),CF(1),CF(2),CF(3),CF(4):REM VERSION 0
515 WRITE #1,CU$(0),CU$(1),CU$(2),CU$(3),CU$(4),CU$(5),CU$(6),CU$(7),CU$(8),CU$(9),CU$(10),CU$(11),CU$(12),CU$(13),CU$(14),CU$(15),CU$(16),CU$(17),CU$(18),CU$(19),CU$(20),CU$(21),CU$(22),CU$(23),CU$(24),CU$(25)
516 FOR X=0 TO 30:C$(X)=CU$(X):NEXT:FOR N=0 TO 4:IF N=3 THEN 518
517 FOR X=0 TO 25:CU$(X)=CF$(N,CF(N),X):NEXT:WRITE #1,CU$(0),CU$(1),CU$(2),CU$(3),CU$(4),CU$(5),CU$(6),CU$(7),CU$(8),CU$(9),CU$(10),CU$(11),CU$(12),CU$(13),CU$(14),CU$(15),CU$(16),CU$(17),CU$(18),CU$(19),CU$(20),CU$(21),CU$(22),CU$(23),CU$(24),CU$(25)
518 NEXT N:CLOSE #1:GOSUB 102:FOR X=0 TO 30:CU$(X)=C$(X):NEXT:RETURN
520 REM CHOOSE CONFIG
522 SN=0:FOR X=1 TO 20
523 S$(SN,X,0)=CF$(CC,X,0):IF S$(SN,X,0)="XXX" THEN S$(SN,0,0)=STR$(X-1):GOTO 526
524 NEXT X
526 GOSUB 102:GOSUB 299:RETURN
530 REM configpaint
531 GOSUB 102:FOR X=0 TO 4:COLOR 7,0
534 LOCATE X+6,1:PRINT CF$(X,0,0);":";:LOCATE X+6,15:COLOR 15,0:PRINT CF$(X,CF(X),0);
537 NEXT X
541 LOCATE 13,1:PRINT CU$(0);" ";CU$(1);:LOCATE 13,40:PRINT CU$(4);
542 LOCATE 14,1:PRINT CU$(2);:IF CF(4)<2 THEN RETURN
543 COLOR 7,0:LOCATE 17,1:PRINT "Port:";:COLOR 15,0:LOCATE 17,15:PRINT CU$(5);
544 COLOR 7,0:LOCATE 18,1:PRINT "Dialer:";:COLOR 15,0:LOCATE 18,15:PRINT CU$(6);
545 COLOR 7,0:LOCATE 19,1:PRINT "Local #:";:COLOR 15,0:LOCATE 19,15:PRINT CU$(3);
546 COLOR 7,0:LOCATE 20,1:PRINT "Prefix:";:COLOR 15,0:LOCATE 20,15:PRINT CU$(7);
547 COLOR 7,0:LOCATE 21,1:PRINT "Avg. Cost:";:COLOR 15,0:LOCATE 21,15:PRINT CU$(13);
550 COLOR 7,0:LOCATE 17,40:PRINT "Long Distance Access:";:COLOR 15,0:LOCATE 17,65:PRINT CU$(8);
551 COLOR 7,0:LOCATE 18,40:PRINT "Long Distance Code:";:COLOR 15,0:LOCATE 18,65:PRINT CU$(9);
552 COLOR 7,0:LOCATE 19,40:PRINT "Information:";:COLOR 15,0:LOCATE 19,65:PRINT CU$(10);
553 COLOR 7,0:LOCATE 20,40:PRINT "Weather:";:COLOR 15,0:LOCATE 20,65:PRINT CU$(11);
554 COLOR 7,0:LOCATE 21,40:PRINT "Time:";:COLOR 15,0:LOCATE 21,65:PRINT CU$(12);
560 COLOR 7,0:RETURN
660 REM CALL
661 GOSUB 810
662 B(2)=0:M$="Did you connect with who you were calling":GOSUB 143:IF B(8)=2 OR B(8)=0 THEN RETURN
664 CLOSE #1:GOSUB 410:D$(RC,10)=T$(4):MN=8:RETURN
690 REM ERROR
691 GOSUB 102:BEEP:BEEP
692 LOCATE 10,1:PRINT "Program problem number: ";ERR
693 PRINT "            On line # :  ";ERL
694 M$="Please call Gnossos Software @ 202-387-0858":GOSUB 22:RESUME NEXT:RETURN
810 REM CALL
811 IF AD=0 THEN RETURN
812 OPEN "COM1:" FOR OUTPUT AS #1:T$="":IF LEN(D$(RC,8))>8 THEN T$=LS$
813 PRINT #1,"AT T D ";T$;D$(RC,8)
814 M$="Dialing...Press any key and pick up phone when you connect":GOSUB 120
815 IF INKEY$="" THEN 815
816 PRINT #1,"AT H":CLOSE #1:RETURN
900 REM MENUDRIVER
901 B=0:LOCATE 1,1:PRINT SPC(70);:GOSUB 101
902 GOSUB 200:PM=MN:IF B THEN MN=VAL(M$(MN,0,1)):GOTO 902
904 ON MN GOSUB 1100,1200,1300,1400,1500
906 GOTO 900
1100 REM sys,mon,pri,cus,tele,test,quit
1104 ON MC GOSUB 1110,1120,1130,1140,1150,1160,1170,1180:RETURN
1110 CC=0:GOSUB 520:RETURN
1120 CC=1:GOSUB 520:RETURN
1130 CC=2:GOSUB 520:RETURN
1140 MN=3:RETURN
1150 MN=2:RETURN
1160 GOSUB 172:RETURN
1170 GOSUB 510:RETURN
1172 CLS:ON ERROR GOTO 0:LOCATE ,,,0,7:END
1180 CLS:LOCATE 10,35:PRINT "Keep in Touch":LOCATE 12,33:PRINT "Gnossos Software":LOCATE 22,1
1184 GOSUB 112:RUN "KIT"
1200 REM MOD,POR,DIA,PRE,LDS,TOO,COS,MEN
1204 ON MC GOSUB 1210,1220,1230,1240,1250,1260,1270,1280:RETURN
1210 CC=4:GOSUB 520:RETURN
1220 MN=4:RETURN:REM PORT
1230 MN=5:RETURN:REM DIALER
1240 M$="Enter the prefix used to call outside (e.g. 9), or press RETURN":GOSUB 130:CU$(7)=Q$
1246 RETURN
1250 M$="Enter your long-distance service number (e.g. 1 or 463-1800)":GOSUB 130:CU$(8)=Q$
1254 M$="Enter your long-distance code (e.g. nothing or 123456)":GOSUB 130:CU$(9)=Q$
1259 RETURN
1260 M$="Enter the number for information (e.g. 411)":GOSUB 130:CU$(10)=Q$
1262 M$="Enter the number for weather (e.g. 936-1212)":GOSUB 130:CU$(11)=Q$
1264 M$="Enter the number for time (e.g. 844-2525)":GOSUB 130:CU$(12)=Q$
1266 RETURN
1270 M$="Enter your average cost per long-distance minute (e.g. .15)":GOSUB 130:CU$(13)=Q$
1272 RETURN
1280 MN=1:RETURN
1300 REM FIR,LAS,com,pho,bir,MEN
1304 ON MC GOSUB 1310,1320,1330,1340,1350,1360,1370,1380:RETURN
1310 M$="Enter your first name":GOSUB 130:CU$(0)=Q$
1319 RETURN
1320 M$="Enter your last name":GOSUB 130:CU$(1)=Q$
1329 RETURN
1330 M$="Enter your company name":GOSUB 130:CU$(2)=Q$
1339 RETURN
1340 M$="Enter your phone number with area code (e.g. 619-488-7345)":GOSUB 130:CU$(3)=Q$
1349 RETURN
1350 M$="Enter your birthdate using the format MM/DD/YY (e.g. 03/17/60)":GOSUB 130
1352 A$=Q$:GOSUB 162:IF NOT B THEN BEEP:LOCATE 1,1:COLOR 23,0:PRINT "You must enter a date using all 8 characters: 01/01/85";:FOR P=1 TO 3000:NEXT:COLOR 7,0:RETURN
1355 CU$(4)=Q$
1359 RETURN
1360 MN=1:RETURN
1400 ON MC GOSUB 1410,1420:RETURN
1410 CU$(5)="COM1:":MN=2:RETURN
1420 CU$(5)="COM2:":MN=2:RETURN
1500 ON MC GOSUB 1510,1520:RETURN
1510 CU$(6)="T":MN=2:RETURN
1520 CU$(6)="P":MN=2:RETURN
40000 REM (c) 1984 Gnossos Software.  All Rights Reserved.
40010 KEY OFF:CLS
40030 PRINT:PRINT:PRINT:COLOR 15,0
40040 PRINT "                       Keep in Touch  -- Configuration  "
40050 PRINT
40070 PRINT
40080 PRINT
40090 PRINT "                               Gnossos Software":COLOR 7,0:PRINT
40100 PRINT "                    Copyright 1985  -  All Rights Reserved"
40110 PRINT "                              Version 0.1 - 1985"
40120 PRINT
40130 PRINT "         Configures hardware, monitor, printer, telecommunications"
40140 PRINT "                         and personalizes the program"
40150 PRINT
40160 PRINT
40170 PRINT
40180 GOSUB 48000
40190 PRINT
40200 PRINT:COLOR 15,0
40210 PRINT "                               by Steve Kantor":COLOR 7,0:PRINT
40220 PRINT "                written in San Diego CA, and Washington DC"
40230 LOCATE 1,1:PRINT STRING$(79,"█");:LOCATE 25,1:PRINT STRING$(79,"█");
40240 FOR X=1 TO 25:LOCATE X,1:PRINT "█";:LOCATE X,79:PRINT "█";:NEXT X
40250 FOR X=100 TO 1000 STEP 100:SOUND X,1:NEXT
40260 RETURN
48000 D=0:IF VAL(MID$(DATE$,9,2))>85 OR VAL(MID$(DATE$,1,2))>5 THEN D=-1
48010 PRINT "            1616 15th St. NW, Washington DC, 20009 -- (202) 387-0858"
48030 RETURN
60000 KEY OFF:GOSUB 112
60005 ON ERROR GOTO 690
60009 B(19)=1:B(20)=7:B(21)=7:B(22)=31:B(23)=0
60100 DATA 13,27,72,80,77,75,71,79,83,82,73,81,4,45
60104 FOR X=0 TO 13:READ K(X):NEXT:GOSUB 61000:MC=1:MN=1
60105 T$(4)=MID$(DATE$,1,2)+"/"+MID$(DATE$,4,2)+"/"+MID$(DATE$,9,2)
60106 GOSUB 400:T$(0)=T$(3):T%(5)=T%(0):T%(6)=T%(1)
60210 GOSUB 500:GOSUB 102:GOTO 900
61000 REM
62000 DATA 15,3
62001 FOR X=0 TO 1:READ S$(X,0,0):NEXT
62102 SN=0:FOR T1=1 TO 15:S$(SN,T1,1)=STR$(T1+8):S$(SN,T1,2)="1":NEXT
62110 DATA Yes,3,1,No,3,8,Cancel,3,14
62113 FOR T1=1 TO 3:FOR T2=0 TO 2:READ S$(1,T1,T2):NEXT:NEXT
62200 DIM CF$(10,10,30),CF(10),CU$(30)
62202 DATA System,k0,k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,con,XXX
62204 DATA Compaq Portable,13,27,72,80,77,75,71,79,83,82,73,81,4,45,14,15,16,17,18,19,20,1,XXX
62206 DATA IBM Personal Computer,13,27,72,80,77,75,71,79,83,82,73,81,4,45,14,15,16,17,18,19,20,0,XXX
62208 DATA IBM PC Compatible,13,27,72,80,77,75,71,79,83,82,73,81,4,45,14,15,16,17,18,19,20,1,XXX
62210 DATA XXX
62300 DATA Monitor,H,W,Graphics,Curon,ced,ced,cc,cc,cbl,cbl,XXX
62302 DATA Monochrome Display,25,80,0,1,7,7,31,0,0,7,XXX
62304 DATA Graphics Black & White,25,80,1,1,7,7,31,0,0,7,XXX
62306 DATA Graphics Color Display,25,80,1,1,7,7,31,0,0,7,XXX
62308 DATA XXX
62350 DATA Printer,FF,Reset,Bold,Draft,Quality,Thin,Normal,Wide,132,XXX
62352 DATA General Printer 80 Column,0,0,0,0,0,0,0,0,0,XXX
62353 DATA General Printer 132 Column,0,0,0,0,0,0,0,0,1,XXX
62354 DATA Okidata 92,0,0,0,0,0,0,0,0,0,XXX
62355 DATA Okidata 92 Wide,0,0,0,0,0,0,0,0,1,XXX
62356 DATA XXX
62400 DATA Personal,FIRST,LAST,COMPANY,PHONE,BIRTHDAY,XXX
62402 DATA XXX
62450 DATA Telecomm,SPEAKER,REDIAL,XXX
62452 DATA None,0,0,XXX
62454 DATA Hayes 1200B Internal,0,0,XXX
62456 DATA Hayes 1200 External,0,0,XXX
62458 DATA Hayes Compatible,0,0,XXX
62460 DATA XXX
62900 FOR T1=0 TO 4:FOR T2=0 TO 10:FOR T3=0 TO 30
62902 READ CF$(T1,T2,T3):IF CF$(T1,T2,0)="XXX" THEN 62905 ELSE IF CF$(T1,T2,T3)="XXX" THEN 62904
62903 NEXT T3
62904 NEXT T2
62905 NEXT T1
63000 DATA Hardware,Choose the proper computer system you are using
63002 DATA Monitor,Choose the proper monitor your are using
63004 DATA Printer,Choose the proper printer you are using
63006 DATA Custom,Customize Keep in Touch for your personal use
63008 DATA Telecomm,Choose the telecommunications and phone options
63010 DATA Test,Test the configuration selected
63011 DATA Save,Save the configuration you have selected on disk
63012 DATA Quit,Quit the configuration program and return to Keep in Touch
63100 DATA X,1
63102 DATA Modem,Choose the modem you are using
63104 DATA Port,Choose the communications port- COM1 or COM2
63106 DATA Dialer,Choose touch tone or pulse dialer
63108 DATA Prefix,Prefix used to access outside lines (e.g. 9)
63110 DATA LDS,Long-distance service access number and personal code
63112 DATA Tools,"Quick dial numbers for information, weather, and time"
63114 DATA Cost,Average cost per minute for long-distance calls
63116 DATA Menu,Return to main configuration menu
63118 DATA X,2
63140 DATA First,First name
63142 DATA Last,Last name
63144 DATA Company,Company name
63146 DATA Phone,Your local phone number including area code
63148 DATA Birthday,Your birthdate
63150 DATA Menu,Return to main configuration menu
63710 DATA X,3
63800 DATA COM1,Modem is using communications port 1
63803 DATA COM2,Modem is using communications port 2
63806 DATA X,4
63809 DATA Tone,Touch-tone phone connection
63812 DATA Pulse,Pulse dialing phone connection
63815 DATA X,X
63900 DATA 1,1,2,1,1,1,1,2,1,7
63920 FOR T1=1 TO 13:FOR T2=1 TO 10:FOR T3=0 TO 1:READ M$(T1,T2,T3):NEXT
63930 IF M$(T1,T2,0)="X" THEN M$(T1,0,0)=STR$(T2-1):GOTO 63950
63940 NEXT
63950 IF M$(T1,T2,1)="X" THEN 63960
63952 NEXT T1
63960 FOR T1=1 TO 10:READ M$(T1,0,1):NEXT:RETURN

DEMO.BAS

1 REM KEEP IN TOUCH (tm)
3 REM (C) COPYRIGHT 1984 -GNOSSOS SOFTWARE- ALL RIGHTS RESERVED
5 REM BY STEVE KANTOR
6 REM V0 - 11/27/84
7 REM 37881
8 REM CALC-PIANO-FIND-TODO 15
10 DIM K(15),T%(15),B(20):B(15)=120
11 DIM M$(10,9,1),CL$(16,2),S$(7,40,2),M%(16),D$(B(15)+1,16),G$(20,2),B%(B(15)),R%(9,10,1)
15 GOTO 60000
20 GOSUB 102:RETURN
21 GOSUB 280:GOSUB 281:RETURN
22 GOSUB 120:GOSUB 114:RETURN
23 COLOR 7,0:GOSUB 390:PRINT S$(SN,X,0);:GOSUB 390:RETURN
24 GOSUB 102:GOSUB 124:GOSUB 110:GOSUB 530:RETURN
25 GOSUB 534:GOSUB 564:RETURN
26 GOSUB 140:GOSUB 530:RETURN
27 COLOR 0,15:GOSUB 390:PRINT S$(SN,X,0);:GOSUB 390:RETURN
70 REM INCHAR
71 REM
72 B(6)=0:INPUT #3,B(6),R$:IF R$="" THEN R$=CHR$(13)
73 REM
74 REM
75 R=ASC(R$):IF R=25 THEN FOR P=1 TO 1000:NEXT P:GOTO 70
76 REM
77 RETURN
78 REM
79 REM
100 LOCATE 4,1:PRINT STRING$(79,"═");:RETURN
101 A$="MENU":GOSUB 111:RETURN
102 CLS:GOSUB 100:GOSUB 101:B(2)=0:RETURN
103 LOCATE 3,1:PRINT STRING$(79,"─");:RETURN
104 REM BOX
105 LOCATE GSV,GSH:PRINT "╔";STRING$(BW-2,"═");"╗";
106 FOR V=GSV+1 TO GSV+BH-1:LOCATE V,GSH
107 PRINT "║";:LOCATE V,GSH+BW-1:PRINT "║";:NEXT
108 LOCATE GSV+BH,GSH:PRINT "╚";STRING$(BW-2,"═");"╝";:RETURN
110 GSV=6:GSH=5:BW=70:BH=17:GOSUB 104:RETURN
111 COLOR 0,7:LOCATE 1,74:PRINT " "A$" ";:COLOR 7,0:RETURN
112 COLOR 23,1:LOCATE 1,74:PRINT " WAIT ";:COLOR 7,0:RETURN
113 GSV=7:GSH=5:BW=70:BH=15:GOSUB 104:RETURN
114 A$="PAUSE":GOSUB 111:GOSUB 281:LOCATE 2,1:COLOR 15,0
115 PRINT "Please press any key...";:GOSUB 70:COLOR 7,0:GOSUB 101:RETURN
116 GSV=6:GSH=5:BW=70:BH=18:GOSUB 104:RETURN
120 REM MESSAGE
121 GOSUB 280:LOCATE 3,1:COLOR 15,0:PRINT M$;:COLOR 7,0:RETURN
122 GOSUB 281:LOCATE 2,1:COLOR 15,0:PRINT NM$;", ";M$;:COLOR 7,0:RETURN
124 REM OUTCL
125 FOR T1=9 TO 16:LOCATE VAL(CL$(T1,1)),VAL(CL$(T1,2))
126 PRINT CL$(T1,0);":";:NEXT:RETURN
130 REM PROMPT
131 GOSUB 120:PRINT ":  ";:LOCATE ,,1,1,31:INPUT #3,Q$:GOSUB 280:RETURN
133 A$="EDIT":GOSUB 111:GOSUB 21:GOSUB 160
134 LOCATE 2,1:PRINT "Use the direction keys to highlight information (UP/DOWN/LEFT/RIGHT/HOME/END)";
135 LOCATE 3,1:PRINT "Type in new information followed by RETURN.  Use DEL and INS as needed.";
136 RETURN
140 REM CLEARCARD
141 LOCATE 15,23:PRINT SPC(10);:FOR T1=8 TO 13:LOCATE T1,20:PRINT SPC(50);
142 LOCATE T1+9,22:PRINT SPC(50);:NEXT:LOCATE 15,50:PRINT SPC(10);:RETURN
143 REM YESNO
144 B(2)=0:GOSUB 122:GOSUB 280:SN=5:B(8)=0:GOSUB 300:IF T2=2 THEN 146
145 IF X=1 THEN B(8)=-1 ELSE IF X=3 THEN B(8)=2
146 RC=PC:GOSUB 21:RETURN
147 REM CHOOSEFILE
148 GOSUB 20:LOCATE 2,1:PRINT"Here is a list of your Address Books.  Point using the direction keys.":PRINT "Press the RETURN key to select the Book that is highlighted.";
149 SN=6:GOSUB 300:IF B THEN F$="TEMP.DAT":RETURN ELSE RETURN
150 IF B THEN RETURN ELSE B(12)=X:GOSUB 281:IF G$(B(12),0)="NEW" THEN GOSUB 156:RETURN
151 F$=G$(B(12),0)+".DAT":GOSUB 500:RETURN
152 REM POINT
153 A$="POINT":GOSUB 111:LOCATE 1,1:PRINT "Press the ESC key to end pointing and return to menu";
154 M$="Use the direction keys (UP/DOWN/LEFT/RIGHT/HOME/END/PGUP/PGDN)":GOSUB 122
155 M$="Press the RETURN key to select the choice you are pointing to":GOSUB 120:RETURN
156 NG=NG+1:B(12)=NG:F$="NEW.DAT":GOSUB 500
157 M$="Enter a name for your file (8 characters or less, eg. PEOPLE)":GOSUB 130
158 IF LEN(Q$)>8 THEN 157 ELSE G$(NG,0)=Q$:F$=Q$+".DAT":G$(NG,1)="1"
159 M$="Enter a description of the file":GOSUB 130:G$(NG,2)=Q$:RETURN
160 LOCATE 1,1:PRINT "Press the ESC key when you are finished to return to the menu";:RETURN
162 REM ISDATE
163 B=0:IF LEN(A$)<>8 THEN RETURN ELSE IF MID$(A$,3,1)<>"/" THEN RETURN
164 IF MID$(A$,6,1)<>"/" THEN RETURN ELSE IF VAL(MID$(A$,1,2))<1 THEN RETURN
165 IF VAL(MID$(A$,1,2))>12 THEN RETURN ELSE IF VAL(MID$(A$,4,2))<1 THEN RETURN
166 IF VAL(MID$(A$,4,2))>31 THEN RETURN ELSE IF VAL(MID$(A$,7,2))<80 THEN RETURN
167 IF VAL(MID$(A$,7,2))>99 THEN RETURN ELSE B=-1:RETURN
170 REM headfill
171 FOR X=1 TO 16:CL$(X,0)=D$(0,X):NEXT:RETURN
172 M$="To be implemented in future version...":GOSUB 22:RETURN
173 REM YN
174 T2=0:IF INSTR("Yy",R$)<>0 THEN B(8)=-1:T2=2
175 IF INSTR("Nn",R$)<>0 THEN B(8)=0:T2=2 ELSE IF INSTR("Cc",R$)<>0 THEN B(8)=2:T2=2
177 RETURN
180 REM ESCSTOP
181 LOCATE 1,1:PRINT "Press the ESC key to stop printing the report";:RETURN
182 REM FORMFEED
183 GOSUB 102:M$="Do you want to advance the printer to the top of a new page?"
184 GOSUB 143:IF B(8)=-1 THEN LPRINT FF$:RETURN ELSE RETURN
185 REM PRINTERON
186 B=0:IF INP(957)=223 THEN RETURN
187 M$="Careful, make sure the printer is connected and turned on. Please try again.":GOSUB 22:B=-1:RETURN
200 REM MENU
202 R=-1:B(2)=0:B=0:GOSUB 281:T1=VAL(M$(MN,0,0)):IF MC>T1 OR PM<>MN THEN MC=1
204 FOR X=1 TO T1:LOCATE 2,1+(X-1)*10
206 PRINT M$(MN,X,0);"  ";:NEXT
208 WHILE R<>K(0):LOCATE 2,1+(MC-1)*10:COLOR 0,15:PRINT M$(MN,MC,0);
212 GOSUB 280:LOCATE 3,1:PRINT M$(MN,MC,1);
214 GOSUB 70:GOSUB 231:IF B THEN MC=T3:B=0:RETURN
216 LOCATE 2,1+(MC-1)*10:PRINT M$(MN,MC,0);
218 IF R=K(1) THEN B=1:RETURN
220 IF R=K(5) THEN MC=MC-1:IF MC=0 THEN MC=T1
222 IF R=K(4) THEN MC=MC+1:IF MC>T1 THEN MC=1
224 IF R=K(6) THEN MC=1 ELSE IF R=K(7) THEN MC=T1
226 WEND:R=-1:RETURN
231 IF B(6) THEN RETURN ELSE IF R>90 THEN R=R-32
232 IF NOT ((R>=65 AND R<=90) OR (R>=97 AND R<=122)) THEN RETURN
234 FOR T3=1 TO T1:IF R=ASC(LEFT$(M$(MN,T3,0),1)) THEN B=-1:RETURN
235 NEXT:RETURN
280 COLOR 0,0:LOCATE 3,1:PRINT SPC(78);:COLOR 7,0:RETURN
281 COLOR 0,0:LOCATE 2,1:PRINT SPC(79);:COLOR 7,0:RETURN
300 REM SCRMEN
302 PC=RC:B=0:T1=VAL(S$(SN,0,0)):FOR X=1 TO T1
304 LOCATE VAL(S$(SN,X,1)),VAL(S$(SN,X,2)):PRINT S$(SN,X,0);:NEXT:IF B(2) THEN RETURN
310 IF X<1 OR X>T1 THEN X=1
312 B=0:T1=VAL(S$(SN,0,0)):R=-1:WHILE R<>K(0):GOSUB 27
314 GOSUB 70:IF SN=5 THEN GOSUB 173:IF T2=2 THEN RETURN
316 GOSUB 23
317 IF R=K(1) OR R=K(13) THEN B=1:RETURN
318 IF R=K(5) OR R=K(2) THEN X=X-1
319 IF R=K(4) OR R=K(3) THEN X=X+1
320 IF R=K(10) THEN CG=CG-1:B(5)=1:RETURN
321 IF R=K(11) THEN IF NR<CG*40+40 THEN 322 ELSE CG=CG+1:B(5)=1:RETURN
322 IF R=K(6) THEN X=1 ELSE IF R=K(7) THEN X=T1
324 IF SN<3 AND R=K(2) THEN X=X-1 ELSE IF SN<3 AND R=K(3) THEN X=X+1
327 IF X>T1 THEN X=1 ELSE IF X<1 THEN X=T1
328 WEND:RC=CG*40+X:RETURN
350 REM SCRMEN
352 T2=X:PC=RC:T1=VAL(S$(SN,0,0)):FOR X=1 TO T1:GOSUB 23:NEXT:X=T2:IF B(2) THEN RETURN
362 IF X<1 OR X>T1 THEN X=1
363 GOSUB 133:PC=RC:B=0:T1=VAL(S$(SN,0,0)):R=-1:WHILE R<>K(1)
365 GOSUB 27:GOSUB 70:GOSUB 23
367 GOSUB 386:IF B THEN GOTO 377
368 GOSUB 380:IF B=1 THEN RETURN ELSE IF B=2 THEN 378
369 GOSUB 385:IF B AND B(6) THEN B=0:RETURN
370 IF R=3 THEN GOSUB 391:S$(SN,X,0)=T$(5):GOTO 377
375 GOSUB 391:PRINT R$;:INPUT #3,S$(SN,X,0):PRINT S$(SN,X,0);:S$(SN,X,0)=R$+S$(SN,X,0):IF X<4 THEN B(0)=0
376 GOSUB 387:IF B THEN GOSUB 390:GOSUB 391:S$(SN,X,0)="":GOTO 365
377 GOSUB 23:X=X+1
378 IF X>T1 THEN X=1 ELSE IF X<1 THEN X=T1
379 WEND:RC=PC:RETURN
380 FOR T3=0 TO 7:IF R=K(T3) THEN B=2:GOTO 382
381 NEXT:B=0:RETURN
382 IF T3>1 AND B(6)=0 THEN B=0:RETURN ELSE IF R=K(4) OR R=K(0) OR R=K(3) THEN X=X+1 ELSE IF (R=K(5) AND B(6)) OR R=K(2) THEN X=X-1
383 IF R=K(6) THEN X=1 ELSE IF R=K(7) THEN X=T1
384 IF R=K(1) THEN B=1:RETURN ELSE RETURN
385 B=0:IF (R=K(8) OR R=K(9)) AND (SN=3 OR SN=4 OR SN=7) AND B(6) THEN B=1:RETURN ELSE RETURN
386 B=0:IF R=K(12) THEN GOSUB 391:S$(SN,X,0)=T$(4):B=1:RETURN ELSE RETURN
387 B=0:IF SN=4 AND (X=9 OR X=10) THEN A$=S$(SN,X,0):GOSUB 162:IF NOT B THEN BEEP:B=1:RETURN
388 B=0:RETURN
390 LOCATE VAL(S$(SN,X,1)),VAL(S$(SN,X,2)),1,12,20:RETURN
391 PRINT SPC(LEN(S$(SN,X,0)));:GOSUB 390:RETURN
400 REM TIM
403 T$=TIME$:T%(0)=VAL(LEFT$(T$,2)):T%(1)=VAL(MID$(T$,4,2)):T%(2)=VAL(MID$(T$,7,2))
405 T%=T%(0):IF T%(0)>12 THEN T$(2)="PM":T%=T%-12 ELSE T$(2)="AM"
406 T$(3)=STR$(T%)+":"+STR$(T%(1))+"  "+T$(2)
407 RETURN
410 REM timer
411 GOSUB 400:T%(7)=T%(0):T%(8)=T%(1):T%(9)=T%(2):RETURN
413 GOSUB 400:T1=T%(0)*60*60+T%(1)*60+T%(2)
414 T2=T%(7)*60*60+T%(8)*60+T%(9):T3=T1-T2
415 T1=INT(T3/60):T2=T3-T1*60:RETURN
418 GOSUB 280
419 GOSUB 413:M$="Elapsed time is "+STR$(T1)+" minutes and "+STR$(T2)+" seconds  ":GOSUB 22:RETURN
420 M$="Set alarm, up/down=hours, right/left=minutes. Press ESC when time is set.":GOSUB 120
421 T%(12)=-1:COLOR 15,0:T%=T%(3):T$="AM":IF T%(3)>12 THEN T%=T%-12:T$="PM"
422 LOCATE 19,23:PRINT SPC(20);:LOCATE 19,23:PRINT T%;":";T%(4);" ";T$;
423 GOSUB 70:IF R=K(1) OR R=K(0) THEN T$(1)=STR$(T%)+":"+STR$(T%(4))+" "+T$:COLOR 7,0:RETURN
424 IF R=K(2) THEN T%(3)=T%(3)+1
425 IF R=K(3) THEN T%(3)=T%(3)-1
426 IF R=K(5) THEN T%(4)=T%(4)-1:IF T%(4)<0 THEN T%(4)=59:T%(3)=T%(3)-1
427 IF R=K(4) THEN T%(4)=T%(4)+1:IF T%(4)>59 THEN T%(4)=0:T%(3)=T%(3)+1
428 IF T%(3)>23 THEN T%(3)=0 ELSE IF T%(3)<0 THEN T%(3)=23
429 GOTO 421
430 REM SETALARM
432 T$="OFF":IF T%(12) THEN T$="ON"
433 M$="The alarm is currently set "+T$:GOSUB 120:GOSUB 114:RETURN
440 REM DISPLAYTIME
441 GOSUB 400:GOSUB 102:GOSUB 110:LOCATE 9,35:PRINT "KEEP IN TOUCH";
444 LOCATE 12,8:PRINT "Current Time:  ";T$(3);
445 LOCATE 13,8:PRINT "Current Date:  ";DATE$;
446 LOCATE 16,8:PRINT "Starting Time: ";T$(0);
448 T$="OFF":IF T%(12) THEN T$="ON"
449 LOCATE 19,8:PRINT "Alarm Setting: ";T$(1);"   ";T$;:RETURN
450 REM CHECKALARM
451 IF T%(12)=0 THEN RETURN
452 GOSUB 400:T1=T%(3)*60+T%(4):T2=T%(0)*60+T%(1):T3=T%(5)*60+T%(6)
454 IF T2>=T1 AND T1>T3 THEN 455 ELSE RETURN
455 R$=INKEY$:GOSUB 21:M$=NM$+" , the time is now "+T$(3):GOSUB 120
457 COLOR 23,1:LOCATE 1,74:PRINT "ALARM ";:COLOR 7,0:FOR T=1 TO 10
458 SOUND 500,4:FOR P=1 TO 500:NEXT:NEXT:T%(12)=0:GOSUB 114:RETURN
460 REM REPORT
461 B(9)=0:M$="Would you like to send report to the printer":GOSUB 143
462 GOSUB 610:GOSUB 618:IF B(8)=2 THEN RETURN ELSE IF B(8) THEN B(9)=-1:GOSUB 185:IF B THEN RETURN
463 GOSUB 484:CLS:GOSUB 180:PRINT:PRINT:GOSUB 103:LC=0:IF RN=5 THEN LPP=9999:GOTO 465
464 IF B(9) THEN LPP=60 ELSE LPP=20
465 FOR RC=1 TO NR:IF (B(17) AND B%(RC)=0) OR D$(RC,2)="<DELETED>" THEN 468
466 GOSUB 470:IF LC=LPP THEN GOSUB 480:LC=0:IF R=K(1) THEN GOSUB 102:RETURN
467 IF INKEY$=CHR$(27) THEN GOSUB 102:RETURN
468 NEXT:GOSUB 480:IF B(9) THEN GOSUB 182
469 GOSUB 102:RETURN
470 ON RN GOSUB 471,471,471,471,475,471,471,471:LC=LC+1:RETURN
471 FOR T2=1 TO 10:T0=R%(RN,T2,0):T1=R%(RN,T2,1):IF T0=999 OR T1=0 THEN IF B(9) THEN LPRINT:RETURN ELSE PRINT:RETURN
472 IF B(9) THEN LPRINT LEFT$(D$(RC,T0),T1);SPC(1+T1-LEN(LEFT$(D$(RC,T0),T1))); ELSE PRINT LEFT$(D$(RC,T0),T1);SPC(1+T1-LEN(LEFT$(D$(RC,T0),T1)));
473 NEXT:RETURN
475 LPRINT D$(RC,1);" ";D$(RC,2):LPRINT D$(RC,3):LPRINT D$(RC,4):LPRINT D$(RC,5);", ";D$(RC,6);"  ";D$(RC,7):FOR T3=1 TO 5:LPRINT:NEXT:RETURN
476 RETURN
480 REM newpage
481 IF NOT B(9) THEN GOSUB 114:CLS:GOSUB 180:PRINT:PRINT:GOSUB 103:RETURN
482 IF B(9) AND LC=LPP THEN LPRINT FF$:RETURN
483 RETURN
484 REM DOSELECT
485 IF NOT B(16) THEN RETURN ELSE M$="Do you want to report only contacts where "+B$(0):GOSUB 143
486 B(17)=0:IF B(8)=-1 THEN B(17)=-1
487 RETURN
490 REM TODO
491 GOSUB 102:GOSUB 116:COLOR 0,15:LOCATE 7,30:PRINT " ";NM$;"'s Things To Do ";
492 COLOR 7,0:FOR T=1 TO 15:LOCATE T+8,7:PRINT T:NEXT
493 GOSUB 573:SN=3:GOSUB 350:IF R=K(8) THEN T1=X:GOSUB 495:X=T1:GOTO 490
494 IF R=K(9) THEN T1=X:GOSUB 497:X=T1:GOTO 490 ELSE RETURN
495 IF LEN(S$(SN,X,0))>2 THEN OPEN "TODO.LOG" FOR APPEND AS #1:WRITE #1,DATE$,TIME$,S$(SN,X,0):CLOSE #1
496 FOR T2=X TO 15:S$(SN,T2,0)=S$(SN,T2+1,0):NEXT:B(2)=-1:RETURN
497 IF X=15 THEN RETURN ELSE FOR T2=15 TO X+1 STEP -1:S$(SN,T2,0)=S$(SN,T2-1,0):NEXT:S$(SN,X,0)="":B(2)=-1:RETURN
500 REM READDATA
501 GOSUB 102:B(13)=0:M$="Reading information from disk for "+F$:GOSUB 120
502 GOSUB 112:OPEN F$ FOR INPUT AS #1
503 NF=16:T2=0
504 INPUT #1,T$:IF T$<>"*KIT*" THEN T2=1:CLOSE #1:OPEN F$ FOR INPUT AS #1:GOTO 507
505 GOSUB 640:M$="Total of "+T3$+" contacts, last updated on "+T1$+" at "+T2$:GOSUB 120
507 FOR X=T2 TO B(15)+2:IF EOF(1) THEN NR=X-1:CLOSE #1:GOSUB 171:GOSUB 101:B(0)=0:RETURN
508 FOR T1=1 TO NF:INPUT #1,D$(X,T1):NEXT:NEXT:RETURN
510 REM SAVEDATA
512 GOSUB 102:GOSUB 112:M$="Saving information to disk for "+F$:GOSUB 120
513 OPEN F$ FOR OUTPUT AS #1:GOSUB 630
514 FOR X=0 TO NR:IF D$(X,2)="<DELETED>" THEN 517
516 WRITE #1,D$(X,1),D$(X,2),D$(X,3),D$(X,4),D$(X,5),D$(X,6),D$(X,7),D$(X,8),D$(X,9),D$(X,10),D$(X,11),D$(X,12),D$(X,13),D$(X,14),D$(X,15),D$(X,16)
517 NEXT:CLOSE #1:G$(B(12),1)=STR$(NR):GOSUB 600:RETURN
520 REM FILLMENU
521 IF B(0) THEN RETURN ELSE SN=CG
524 FOR X=1 TO 40:IF B(4)=0 THEN S$(SN,X,0)=LEFT$(D$(CG*40+X,3),38) ELSE S$(SN,X,0)=D$(CG*40+X,1)+" "+D$(CG*40+X,2)
526 NEXT:T%=NR-CG*40:IF T%>40 THEN T%=40
529 S$(SN,0,0)=STR$(T%):B(0)=-1:RETURN
530 REM ZOOMIN DRAW
532 B(2)=1:GOSUB 560:X=1:GOSUB 300:RETURN
534 REM ZOOMIN EDIT
536 GOSUB 560:X=1
537 GOSUB 362:IF B THEN LOCATE ,,0:RETURN ELSE IF R=K(8) THEN GOSUB 390:PRINT SPC(LEN(S$(SN,X,0)));:S$(SN,X,0)="":X=X+1:GOTO 537
538 B(3)=1:LOCATE VAL(S$(SN,X,1)),VAL(S$(SN,X,2)):LINE INPUT;"";S$(SN,X,0)
539 GOTO 537
550 REM DELPERSON
551 B(2)=0:M$="Would you like to delete this person's information"
552 GOSUB 143:IF NOT B(8) OR B(8)=2 OR NR=1 THEN BEEP:RETURN
553 FOR X=1 TO 16:D$(RC,X)="":NEXT:D$(RC,2)="<DELETED>":D$(RC,3)="<DELETED>"
554 B(0)=0:RC=RC-1:IF RC=0 THEN RC=2
555 SN=4:GOSUB 26:RETURN
560 REM FILLCARD
562 FOR T%=1 TO 16:S$(SN,T%,0)=D$(RC,T%):NEXT:RETURN
564 FOR T%=1 TO 16:D$(RC,T%)=S$(SN,T%,0):NEXT:RETURN
570 REM SAVETODO
571 IF NOT B(7) THEN RETURN ELSE GOSUB 112:OPEN "TODO.DAT" FOR OUTPUT AS #1
572 FOR X=1 TO 15:WRITE #1,S$(3,X,0):NEXT:CLOSE #1:RETURN
573 IF NOT B(7) THEN OPEN "TODO.DAT" FOR INPUT AS #1 ELSE RETURN
574 FOR X=1 TO 15:IF EOF(1) THEN 576
575 INPUT #1,S$(3,X,0):NEXT
576 CLOSE #1:B(7)=-1:X=1:RETURN
580 REM redial
581 IF AD THEN PRINT #1,"A/":RETURN ELSE RETURN
590 REM READGROUP
591 OPEN "FILES.KIT" FOR INPUT AS #2
592 FOR X=1 TO 20:IF EOF(2) THEN NG=X-1:CLOSE #2:GOSUB 101:GOTO 594
593 FOR T1=0 TO 2:INPUT #2,G$(X,T1):NEXT:NEXT:NG=20
594 SN=6:S$(SN,0,0)=STR$(NG):FOR X=1 TO NG
595 S$(SN,X,0)=G$(X,0)+STRING$(8-LEN(G$(X,0))," ")+STRING$(3," ")+G$(X,1)+STRING$(4-LEN(G$(X,1))," ")+STRING$(3," ")+G$(X,2)
596 NEXT:RETURN
600 REM SAVEGROUP
602 GOSUB 112:OPEN "FILES.KIT" FOR OUTPUT AS #2
604 FOR X=1 TO NG:FOR T1=0 TO 2:WRITE #2,G$(X,T1):NEXT:NEXT
606 CLOSE #2:GOSUB 101:RETURN
610 REM FINDMAXWIDTH
611 IF B(13) THEN RETURN ELSE GOSUB 112:FOR T%=1 TO 16:M%(T%)=1:NEXT
612 FOR X%=1 TO NR:FOR T%=1 TO 16
614 IF LEN(D$(X%,T%))>M%(T%) THEN M%(T%)=LEN(D$(X%,T%))
616 NEXT:NEXT:GOSUB 101:B(13)=-1:RETURN
618 FOR T2=1 TO 10:IF R%(RN,T2,0)=999 THEN RETURN
619 R%(RN,T2,1)=M%(R%(RN,T2,0)):NEXT:RETURN
620 REM SPECREP
621 RC=NR+1:GOSUB 680:GOSUB 610
623 FOR X=1 TO 16:T%=VAL(D$(RC,X)):R%(RN,T%,0)=X
624 R%(RN,T%,1)=M%(X):D$(RC,X)="":NEXT:RC=1
625 TW=0:FOR X=1 TO 10:TW=TW+1+R%(RN,X,1):IF TW>79 THEN R%(RN,X,0)=999:GOTO 627
626 NEXT
627 GOSUB 102:RETURN
630 REM SAVEHEADER
631 WRITE #1,"*KIT*",B(14),DATE$,TIME$,B(4),NR,"6","7","8"
632 FOR X=1 TO 3:RN=X+5:WRITE #1,M$(10,X,0),M$(10,X,1),R%(RN,1,0),R%(RN,2,0),R%(RN,3,0),R%(RN,4,0),R%(RN,5,0),R%(RN,6,0),R%(RN,7,0),R%(RN,8,0),R%(RN,9,0),R%(RN,10,0)
633 NEXT X:RETURN
640 REM RHEADER
641 INPUT #1,B(14),T1$,T2$,B(4),T3$,X$,X$,X$
642 FOR X=1 TO 3:RN=X+5:INPUT #1,M$(10,X,0),M$(10,X,1),R%(RN,1,0),R%(RN,2,0),R%(RN,3,0),R%(RN,4,0),R%(RN,5,0),R%(RN,6,0),R%(RN,7,0),R%(RN,8,0),R%(RN,9,0),R%(RN,10,0)
643 NEXT:RETURN
650 REM SEARCH
652 SN=4:RC=NR+1:GOSUB 24:GOSUB 25
653 FOR X=1 TO 16:IF D$(RC,X)<>"" THEN SF=X:SF$=D$(RC,X):GOTO 656
654 NEXT:RETURN
656 GOSUB 112:FOR X=1 TO NR:IF D$(X,SF)=SF$ THEN B%(X)=-1 ELSE B%(X)=0
657 NEXT:RC=1:B(16)=-1:B$(0)=CL$(SF,0)+" = "+SF$:RETURN
660 REM CALL
661 GOSUB 810
662 B(2)=0:M$="Did you connect with who you were calling":GOSUB 143:IF B(8)=2 OR B(8)=0 THEN RETURN
664 CLOSE #1:GOSUB 410:D$(RC,10)=T$(4):MN=8:RETURN
670 REM ADDCARD
671 NR=NR+1:IF NR>B(15) THEN BEEP:RETURN
672 RC=NR:GOSUB 680:FOR T1=1 TO 16:IF D$(RC,T1)<>"" THEN 675
674 NEXT:NR=NR-1:RC=NR:RETURN
675 B(3)=-1:B(0)=0:B(13)=0:RETURN
680 REM EASYOUT
681 GOSUB 102:FOR X=1 TO 16:LOCATE X+5,1:PRINT CL$(X,0);:NEXT
682 SN=7:GOSUB 25:RETURN
690 REM ERROR
691 GOSUB 102:BEEP:BEEP
692 LOCATE 10,1:PRINT "Program problem number: ";ERR
693 PRINT "            On line # :  ";ERL
694 M$="Please call Gnossos Software @ 202-387-0858":GOSUB 22:RESUME NEXT:RETURN
700 REM EXTRACT
702 GOSUB 707:GOSUB 102:M$="What is the name for the extracted file ":GOSUB 130
703 C=0:GOSUB 112:OPEN LEFT$(Q$,8)+".PRN" FOR OUTPUT AS #1
704 FOR X=1 TO NR:IF B%(X)=0 OR D$(X,2)="<DELETED>" THEN 706 ELSE LOCATE 1,1:C=C+1:PRINT C;
705 WRITE #1,D$(X,1),D$(X,2),D$(X,3),D$(X,4),D$(X,5),D$(X,6),D$(X,7),D$(X,8),D$(X,9),D$(X,10),D$(X,11),D$(X,12),D$(X,13),D$(X,14),D$(X,15),D$(X,16)
706 NEXT:CLOSE #1:GOSUB 102:RETURN
707 M$="Do you wish to extract all the contacts in your address book?":GOSUB 143:IF B(8)=-1 THEN 709
708 GOSUB 650:RETURN
709 FOR X=1 TO NR:B%(X)=-1:NEXT:RETURN
720 REM CALC
721 GOSUB 102:M$="Enter the formula (e.g. 23+54*4/7)  ":GOSUB 130:C(0,0)=1:C=1
722 L$=""
723 IF Q$="" OR C=10 THEN C(C-1,1)=VAL(L$):GOTO 726 ELSE T$=LEFT$(Q$,1)
724 IF INSTR("0123456789.",T$)<>0 THEN L$=L$+T$:GOSUB 732:GOTO 723
725 N=INSTR("+-*/",T$):IF N<>0 THEN C(C-1,1)=VAL(L$):C(C,0)=N:GOSUB 732:C=C+1:GOTO 722
726 LOCATE 5,1
727 T=0:FOR N=0 TO C-1:IF N>5 THEN 731
728 PRINT MID$("+-*/",C(N,0),1);:PRINT TAB(7);:PRINT USING "#######,.##";C(N,1)
729 ON C(N,0) GOSUB 733,734,735,736
730 PRINT STRING$(20,"═"):PRINT TAB(7);:PRINT USING "#######,.##";T:NEXT
731 T$(5)=STR$(T):GOSUB 114:GOSUB 102:RETURN
732 Q$=RIGHT$(Q$,LEN(Q$)-1):RETURN
733 T=T+C(N,1):RETURN
734 T=T-C(N,1):RETURN
735 T=T*C(N,1):RETURN
736 T=T/C(N,1):RETURN
810 REM CALL
811 IF AD=0 THEN RETURN
812 OPEN "COM1:" FOR OUTPUT AS #1:T$="":IF LEN(D$(RC,8))>8 THEN T$=LS$
813 PRINT #1,"AT T D ";T$;D$(RC,8)
814 M$="Dialing...Press any key and pick up phone when you connect":GOSUB 120
815 IF INKEY$="" THEN 815
816 PRINT #1,"AT H":CLOSE #1:RETURN
900 REM MENUDRIVER
901 B=0:LOCATE 1,1:PRINT SPC(70);:GOSUB 101
902 GOSUB 200:PM=MN:IF B THEN MN=VAL(M$(MN,0,1)):GOTO 902
904 ON MN GOSUB 1100,1200,1300,1400,1500,1600,1700,1800,1900,2000
905 IF LM=2 AND MN=1 THEN LM=1:GOSUB 1110
906 GOSUB 450:GOTO 900
1100 REM PEO,CLO,REP,TOD,DB,GAM,OTH,QUIT
1104 ON MC GOSUB 1110,1120,1130,1140,1150,1160,1170,1180:RETURN
1110 B(5)=0:GOSUB 102:SN=CG:GOSUB 152:GOSUB 520:GOSUB 300:IF B THEN RETURN
1111 IF CG<0 THEN CG=0 ELSE IF CG>2 THEN CG=2
1112 IF B(5) THEN B(0)=0:B(2)=0:B=0:GOTO 1110
1114 SN=4:GOSUB 24:MN=2:RETURN
1120 GOSUB 102:GOSUB 440:MN=5:RETURN
1130 MN=7:RETURN
1140 GOSUB 490:RETURN
1150 MN=4:RETURN
1160 MN=9:RETURN
1170 MN=6:RETURN
1180 M$="Are you sure you want to quit and finish using the program":GOSUB 143:IF B(8)<>-1 THEN RETURN
1181 GOSUB 570:M$="Do you wish to save your contact file":GOSUB 143
1182 IF B(8)=-1 THEN GOSUB 510
1184 CLS:LOCATE 10,35:PRINT "Keep In Touch":LOCATE 12,33:PRINT"Gnossos Software":LOCATE 22,1:IF TEST=-1 THEN END ELSE SYSTEM
1200 REM CHA,DIA,NEX,PRE,ADD,FIN,OTH,MEN
1202 B(2)=1:LM=2
1204 ON MC GOSUB 1210,1220,1230,1240,1250,1260,1270,1280:RETURN
1206 LOCATE 15,23:PRINT SPC(10);:FOR T1=8 TO 13:LOCATE T1,20:PRINT SPC(52);
1207 LOCATE T1+9,22:PRINT SPC(50);:NEXT T1:LOCATE 15,50:PRINT SPC(10);
1208 SN=4:GOSUB 530:RETURN
1210 SN=4:GOSUB 25:B(13)=0:RETURN
1220 GOSUB 660:RETURN
1230 RC=RC+1:IF RC>NR THEN RC=NR
1231 SN=4:GOSUB 26:RETURN
1240 RC=RC-1:IF RC=0 THEN RC=1
1241 SN=4:GOSUB 26:RETURN
1250 SN=7:GOSUB 670:SN=4:GOSUB 24:RETURN
1260 M$="Enter part of the name or company":GOSUB 130:IF Q$="" THEN RETURN
1261 GOSUB 112:FOR X=1 TO NR:FOR T1=1 TO 3:IF INSTR(D$(X,T1),Q$)<>0 THEN 1263
1262 NEXT:NEXT:GOSUB 101:RETURN
1263 RC=X:SN=4:GOSUB 26:RETURN
1270 MN=3:RETURN
1280 MN=1:RETURN
1300 REM FIR,LAS,NEX,PRE,DEL,SEL,PRI,MEN
1304 SN=4:ON MC GOSUB 1310,1320,1330,1340,1350,1360,1370,1380
1305 IF MC<5 THEN GOSUB 26:RETURN ELSE RETURN
1310 RC=1:RETURN
1320 RC=NR:RETURN
1330 RC=RC+1:IF RC>NR THEN RC=NR:RETURN ELSE RETURN
1340 RC=RC-1:IF RC=0 THEN RC=1:RETURN ELSE RETURN
1350 GOSUB 550:RETURN
1360 GOSUB 172:RETURN
1370 GOSUB 172:RETURN
1380 MN=2:RETURN
1400 REM SAV,SWI,LIS,DEL,EXT,QUT
1404 ON MC GOSUB 1410,1420,1430,1440,1450,1460:RETURN
1410 GOSUB 510:RETURN
1420 GOSUB 510:ERASE D$:DIM D$(B(15)+1,16):GOSUB 147:GOSUB 150:GOSUB 102:MN=1:RETURN
1430 GOSUB 102:G$(B(12),1)=STR$(NR):GOSUB 594:LOCATE 5,1:FOR X=1 TO NG:PRINT S$(6,X,0):NEXT X:GOSUB 114:GOSUB 102:RETURN
1440 GOSUB 102:GOSUB 147:T4=X:IF T4=B(12) OR G$(T4,0)="NEW" THEN RETURN
1441 M$="Do you want to delete the address book from your disk named "+G$(X,0)
1442 GOSUB 143:IF B(8)<>-1 THEN RETURN
1443 M$="Are you sure you want to delete"
1444 GOSUB 143:IF B(8)<>-1 THEN RETURN
1445 KILL G$(T4,0)+".DAT":FOR T=T4 TO NG:FOR T1=0 TO 2:G$(T,T1)=G$(T+1,T1)
1446 NEXT:NEXT:NG=NG-1:GOSUB 600:RETURN
1450 GOSUB 700:RETURN
1460 MN=1:RETURN
1500 REM SET,OFF,QUT
1504 ON MC GOSUB 1510,1520,1530:RETURN
1510 GOSUB 420:GOSUB 440:RETURN
1520 T%(12)=0:T$(1)="":GOSUB 440:RETURN
1530 MN=1:RETURN
1600 REM COM,NAM,DIA,HEA,CAL,BYT,UTI,QUT
1604 ON MC GOSUB 1610,1620,1630,1640,1650,1660,1670,1680:RETURN
1610 B(4)=0:B(0)=0:RETURN
1620 B(4)=-1:B(0)=0:RETURN
1630 GOSUB 172:RETURN
1640 FOR X=1 TO 16:D$(0,X)=CL$(X,0):NEXT
1641 SN=7:RC=0:GOSUB 680
1642 B(3)=1:FOR X=1 TO 16:CL$(X,0)=LEFT$(D$(0,X),12):NEXT:RETURN
1650 GOSUB 720:RETURN
1660 M$="You have "+STR$(FRE(0))+" bytes free. Do you want to clear memory":GOSUB 143:IF B(8)<>-1 THEN RETURN
1661 M$="Please wait 2 minutes, clearing memory":GOSUB 120:T=FRE("")
1662 BEEP:GOSUB 114:RETURN
1670 GOSUB 172:RETURN
1680 MN=1:RETURN
1700 REM PHO,DAT,COM,CUS,LAB,DES,MEN
1704 ON MC GOSUB 1710,1720,1730,1740,1750,1760,1770,1780:RETURN
1710 RN=1:GOSUB 460:RETURN
1720 RN=2:GOSUB 460:RETURN
1730 RN=3:GOSUB 460:RETURN
1740 MN=10:RETURN
1750 RN=5:GOSUB 460:RETURN
1760 M$="Which custom report do you want to design (1, 2, or 3)":GOSUB 130
1761 RN=VAL(Q$)+5:IF RN<6 OR RN>8 THEN BEEP:GOTO 1760
1762 M$="Enter a short name for the report (8 characters or less)":GOSUB 130
1763 IF LEN(Q$)>8 THEN BEEP:GOTO 1762 ELSE M$(10,RN-5,0)=Q$
1764 M$="Enter a description of report":GOSUB 130:M$(10,RN-5,1)=Q$
1765 GOSUB 620:RETURN
1770 GOSUB 650:RETURN
1780 MN=1:RETURN
1800 REM CHA,ELA,HAN,TOD,MEN
1804 ON MC GOSUB 1810,1820,1830,1840,1850:RETURN
1810 SN=4:GOSUB 25:RETURN
1820 GOSUB 418:RETURN
1830 GOSUB 413
1831 M$="Comment for phone log":GOSUB 130
1832 OPEN "PHONE.LOG" FOR APPEND AS #1
1834 WRITE #1,D$(RC,1),D$(RC,2),D$(RC,3),D$(RC,8),T$(4),T$(3),STR$(T1),Q$:CLOSE #1
1838 M$="You were talking for "+STR$(T1)+" minutes and "+STR$(T2)+" seconds":GOSUB 22:RETURN
1840 GOSUB 490
1841 SN=4:GOSUB 24:RETURN
1850 MN=2:RETURN
1900 REM mus,ran,lin,cir,coo,ska,yan,men
1904 ON MC GOSUB 1910,1920,1930,1940,1950,1960,1970,1980:RETURN
1910 GOSUB 10100:RETURN
1920 GOSUB 10200:RETURN
1930 IF MT THEN GOSUB 10300:RETURN ELSE RETURN
1940 IF MT THEN GOSUB 10400:RETURN ELSE RETURN
1950 GOSUB 10500:RETURN
1960 GOSUB 10600:RETURN
1970 GOSUB 10700:RETURN
1980 MN=1:RETURN
2000 REM cu1,cu2,cu3,spe,men
2002 ON MC GOSUB 2010,2020,2030,2040,2050:RETURN
2010 RN=6:GOSUB 460:RETURN
2020 RN=7:GOSUB 460:RETURN
2030 RN=8:GOSUB 460:RETURN
2040 RN=4:GOSUB 620:GOSUB 460:RETURN
2050 MN=7:RETURN
10100 REM piano
10101 CT$=CHR$(1)+CHR$(2)+CHR$(3)+CHR$(4)+CHR$(5)+CHR$(6)+CHR$(7):GOSUB 102:M$="Press the ESC key to return to the menu":GOSUB 120
10102 LOCATE 6,1:PRINT "Musical Keyboard Piano";:LOCATE 10,5:PRINT "Press the keys 'a,b,c,d,f,e,g' to play notes";:LOCATE 13,5:PRINT "Use the SHIFT and CTRL keys to raise a note to higher octave";
10103 GOSUB 70:IF R=K(1) THEN GOSUB 102:RETURN
10104 PLAY "O1L8":X=INSTR("abcdefgABCDEFG"+CT$,R$):IF X=0 THEN 10103 ELSE IF X>7 THEN PLAY "O2":IF X>14 THEN PLAY "O3"
10105 PLAY MID$("abcdefgabcdefgabcdefg",X,1):GOTO 10103
10106 PLAY R$:GOTO 10104
10200 REM random
10201 UB=RND*5000:DR=RND*5:WHILE INKEY$=""
10210 SOUND RND*UB+40,DR:WEND:RETURN
10300 REM LINES
10302 SCREEN 2,0,0:LINE (RND*640,RND*200)-(RND*640,RND*200)
10304 R$=INKEY$:IF R$<>"" THEN SCREEN 0,0,0:GOSUB 102:RETURN
10306 LINE -(RND*640,RND*200):GOTO 10304
10400 REM cir
10402 SCREEN 2,0,0
10404 R$=INKEY$:IF R$<>"" THEN SCREEN 0,0,0:GOSUB 102:RETURN
10406 CIRCLE (RND*640,RND*200),RND*20:GOTO 10404
10500 REM COOk
10502 CLS:FOR X=400 TO 10 STEP -6:LOCATE RND*23+1,RND*70+1,1,0,31:SOUND 600-X,1
10504 PRINT "COOKIE!";:FOR P=1 TO X/3:NEXT:NEXT
10510 FOR P=1 TO 3000:NEXT:GOSUB 102:RETURN
10600 GOSUB 102:BEEP:LOCATE 10,5:PRINT "Before enlightenment, chop wood and draw water.";:LOCATE 13,10
10602 PRINT "After enlightenment, chop wood and draw water.";:GOSUB 114:RETURN
10700 PLAY "o2ccdeced2ccdec3o1bo2ccdefedco1bgabo2cc":RETURN
60000 KEY OFF
60001 NM$="Steve":AD=0:MT=0:TEST=0
60002 OPEN "DEMO.KIT" FOR INPUT AS #3
60005 ON ERROR GOTO 690:FF$=CHR$(12)
60010 IF AD THEN OPEN "com1:" FOR OUTPUT AS #1:CLOSE #1
60100 DATA 13,27,72,80,77,75,71,79,83,82,73,81,4,45
60104 FOR X=0 TO 13:READ K(X):NEXT:GOSUB 61000:MC=1:MN=1
60105 T$(4)=MID$(DATE$,1,2)+"/"+MID$(DATE$,4,2)+"/"+MID$(DATE$,9,2)
60106 GOSUB 400:T$(0)=T$(3):T%(5)=T%(0):T%(6)=T%(1)
60201 T3=0:T1=5:T2=1:FOR X=1 TO 40:FOR T%=0 TO 2
60202 S$(T%,X,1)=STR$(T1):S$(T%,X,2)=STR$(T2):NEXT:T3=T3+1:T2=40:IF T3=2 THEN T3=0:T1=T1+1:T2=1
60206 NEXT
60210 GOSUB 590:GOSUB 147:GOSUB 150:GOTO 900
61000 DATA 1,12,2,12,3,37,8,12,999,999
61006 DATA 2,12,3,40,9,8,10,8,999,999
61008 DATA 2,12,3,23,16,40,999,999,999,999
61030 FOR RN=1 TO 4:FOR X=1 TO 10:FOR T=0 TO 1
61032 READ R%(RN,X,T):NEXT:IF R%(RN,X,0)=999 THEN 61036
61034 NEXT X
61036 NEXT RN
62102 SN=3:FOR T1=1 TO 15:S$(SN,T1,1)=STR$(T1+8):S$(SN,T1,2)="11"
62104 S$(SN,T1,0)=SPACE$(2):NEXT:S$(SN,0,0)="15"
62202 SN=4:S$(SN,0,0)="16"
62204 DATA First,8,20,Last,8,38,Company,9,20,Street,11,20,City,12,20
62206 DATA State,12,43,Zip,12,48,Phone,13,20,L,15,23,L,15,50
62208 DATA T,17,22,C,18,22,P,19,22,T,20,22,S,21,22
62210 DATA C,22,22
62212 FOR T1=1 TO 16:FOR T2=0 TO 2:READ S$(SN,T1,T2):NEXT:NEXT
62302 SN=5:S$(SN,0,0)="3":DATA Yes,3,1,No,3,8,Cancel,3,14
62312 FOR T1=1 TO 3:FOR T2=0 TO 2:READ S$(SN,T1,T2):NEXT:NEXT
62402 SN=6:S$(SN,0,0)="20"
62404 FOR T1=1 TO 20:S$(SN,T1,1)=STR$(T1+4):S$(SN,T1,2)="1":NEXT T1
62804 DATA Last Meet,15,8,Last Call,15,38,Title,17,8,Category,18,8
62806 DATA Politics,19,8,Type,20,8,Status,21,8,Comments,22,8
62808 FOR T1=9 TO 16:FOR T2=0 TO 2:READ CL$(T1,T2):NEXT:NEXT
62810 FOR T1=1 TO 8:CL$(T1,0)=S$(4,T1,0):NEXT
62820 FOR X=1 TO 16:D$(0,X)=CL$(X,0):NEXT
62850 SN=7:FOR X=1 TO 16:S$(SN,X,0)=CL$(X,0):S$(SN,X,1)=STR$(X+5)
62852 S$(SN,X,2)=STR$(15):NEXT:S$(SN,0,0)="16"
63040 DATA People,Examine information on your contacts and clients
63050 DATA Clock,Check the time and use alarm clock
63060 DATA Reports,Create reports from your information on people
63070 DATA To Do,Maintain Things-To-Do list
63071 DATA Database,"Save your files, switch files, and delete files from your data disk"
63072 DATA Games,"Games, visual relaxation and amusement"
63073 DATA Other,"Change organization, sound, dialing, headings, memory, etc."
63075 DATA Quit,Quit Keep in Touch program
63076 DATA X,1
63077 DATA Edit,Edit and change information on contact's card
63078 DATA Call,Call your contact on the phone using automatic dialer
63079 DATA Next,Turn to next contact card
63080 DATA Previous,Turn to previous contact card
63081 DATA Add,Add a new contact card to your file
63082 DATA Find,Find a contact by entering part of their name or company
63083 DATA Other,"Flipping cards, deleting , printing, selecting contacts, etc."
63084 DATA Menu,Return to a list of all contacts
63099 DATA X,2
63100 DATA First,Turn to the first contact
63102 DATA Last,Turn to the last contact
63104 DATA Next,Turn to the next contact
63106 DATA Previous,Turn to the previous contact
63108 DATA Delete,Delete this contact from your file
63109 DATA Select,Select a group of contacts
63110 DATA Print,Print the contact's information on the printer
63120 DATA Menu,Return to contacts menu
63121 DATA X,3
63150 DATA Save,Save your Address Book on your disk
63151 DATA Switch,Save your current Address Book and open a different one
63154 DATA List,List all of your Address Books on this disk
63155 DATA Delete,Delete an entire Address Book from your disk - Careful!
63156 DATA Extract,Extract a group of contacts to a file for transfer
63158 DATA Menu,Return to main menu
63160 DATA X,4
63204 DATA Alarm,Set the alarm clock and turn the alarm clock on
63208 DATA Off,Turn OFF the alarm clock
63212 DATA Menu,Return to main menu
63214 DATA X,5
63300 DATA Company,Organize contacts by company
63302 DATA Names,Organize contacts by first and last names
63304 DATA Dialing,"Special dialing services, information, weather, time"
63306 DATA Headings,Customize contacts information for your needs
63308 DATA Calc,Use the built-in calculator for simple calculations
63310 DATA Bytes,Check the amount of memory that is available for contacts
63312 DATA Utility,Switch from Keep in Touch to Utility programs
63313 DATA Menu,Return to main menu
63314 DATA X,6
63400 DATA Phonelist,Print a phonelist report
63402 DATA Dates,Print a report of dates
63404 DATA Remarks,Print a report of remarks and comments on contacts
63405 DATA Custom,Print one of your custom reports or a special report
63406 DATA Labels,Mailing labels using Avery Tabulabel 4146 4" format
63410 DATA Design,Design custom reports
63411 DATA Select,Select a subset group of contacts to report
63412 DATA Menu,Return to main menu
63414 DATA X,7
63500 DATA Change,Change the information on your contact
63502 DATA Elapsed,Display the clock for elapsed time of call
63504 DATA Hangup,Hang up the telephone connection and show elapsed time
63506 DATA To Do,Show Things-To-Do list
63508 DATA People,Return to CONTACTS menu
63510 DATA X,8
63600 DATA Piano,Play the musical keyboard like a piano
63601 DATA Notes,Play random tones at random intervals and enjoy
63602 DATA Lines,Random lines a la Jackson Pollack
63603 DATA Circle,Random circles across the heavens
63604 DATA Tricky,Cookie monster game
63605 DATA Quote,Marty Schwimmer's favorite quotation
63606 DATA Yankee,Yankee Doodle Dandy
63609 DATA Menu,Return to main menu
63690 DATA X,9
63700 DATA Cust1,Custom report 1
63702 DATA Cust2,Custom report 2
63704 DATA Cust3,Custom report 3
63706 DATA Special,Create a unique one-time report
63708 DATA Reports,Return to reports menu
63710 DATA X,X
63900 DATA 1,1,2,1,1,1,1,2,1,7
63920 FOR T1=1 TO 13:FOR T2=1 TO 10:FOR T3=0 TO 1:READ M$(T1,T2,T3):NEXT
63930 IF M$(T1,T2,0)="X" THEN M$(T1,0,0)=STR$(T2-1):GOTO 63950
63940 NEXT
63950 IF M$(T1,T2,1)="X" THEN 63960
63952 NEXT T1
63960 FOR T1=1 TO 10:READ M$(T1,0,1):NEXT:RETURN

DEMOSET.BAS

40000 REM (c) 1984 Gnossos Software.  All Rights Reserved.
40010 CLS:KEY 10,"CLS"+CHR$(13):KEY 8,"?fre(0)"+CHR$(13)
40020 KEY 9,"?TIME$"+CHR$(13):KEY 7,"gosub "
40030 PRINT:PRINT:PRINT:COLOR 15,0
40040 PRINT "                                 Keep in Touch                    "
40050 PRINT
40060 COLOR 7,0
40070 PRINT "                        a business networking tool by"
40080 COLOR 15,0:PRINT
40090 PRINT "                               Gnossos Software":COLOR 7,0:PRINT
40100 PRINT "                    Copyright 1984  -  All Rights Reserved"
40110 PRINT "                             Version 0 - Fall 1984"
40120 PRINT
40130 PRINT:COLOR 31,0
40140 PRINT "                             Demonstration Program "
40150 PRINT
40160 PRINT "                 Sit back and watch the show for 10 minutes"
40170 PRINT
40180 PRINT
40190 PRINT
40200 PRINT:COLOR 15,0
40210 PRINT "                               by Steve Kantor":COLOR 7,0:PRINT
40220 PRINT "             written in Canary Islands, London, and Washington DC"
40230 LOCATE 1,1:PRINT STRING$(79,"█");:LOCATE 25,1:PRINT STRING$(79,"█");
40240 FOR X=1 TO 25:LOCATE X,1:PRINT "█";:LOCATE X,79:PRINT "█";:NEXT X
40250 FOR X=100 TO 1000 STEP 100:SOUND X,1:NEXT
40260 LOCATE 1,1:RUN "DEMO"

FILES387.TXT

------------------------------------------------------------------------
Disk No 387   Keep In Touch                                     V1.1 DS
------------------------------------------------------------------------
     Keep in Touch is a networking tool for of people and organizations.
Networking  is maintaining contact with people and organizations thereby
sharing and distributing information, products, services, and ideas.
Keep in Touch uses a menu structure similar to Lotus 1-2-3.

This disk works best if the files are transferred to a disk that has
the system file COMMAND.COM and BASIC on it.

FEATURES:
     - Call using your automatic dialer.
     - Display the elapsed time of a call.
     - Show the Things-To-Do list.
     - Hang up the telephone and show elapsed time.
     - Check the time or use the alarm clock.
     - Games, visual relaxation and amusement.
     - Use the built-in calculator.
     - Examine information on your contacts and clients.
     - Create reports about your contacts and clients.
     - Print a phonelist report.
     - Print a report of dates.
     - Print mailing labels using Avery Tabulabel 4146 4" format.
     - Check the amount of memory available.

AUTOEXEC BAT  Starts Keep In Touch when the system is booted.
CONFIG   BAS  Configures hardware, monitor, printer, telecommunications
              and personalizes the program.
CONFIG   KIT  Configuration data file.
DEMO     BAS  Keep In Touch demonstration program.
DEMO     BAT  Batch file to start the Keep In Touch demonstration.
DEMO     KIT  Demo data file.
DEMOSET  BAS  Part of the demonstration program.
FILES    KIT  Directory data file.
JAPAN    DAT  Sample file.
KEYSET   BAS  Author's comments and copyright notice.
KIT      BAS  The Keep In Touch program.
KIT      BAT  Same as AUTOEXEC.BAT.
KIT      DOC  Information about Keep In Touch.
MENU     KIT  Menu data file.
NEW      DAT  Sample file.
TODO     DAT  Sample file.
GO       BAT  Start up instructions

PC Software Interest Group (PC-SIG)
1030 E Duane, Suite D
Sunnyvale, CA 94086
(408) 730-9291

KEYSET.BAS

40000 REM
40010 GOSUB 47000:CLS:KEY 10,"CLS"+CHR$(13):KEY 8,"?fre(0)"+CHR$(13)
40020 KEY 9,"?TIME$"+CHR$(13):KEY 7,"gosub "
40040 PRINT:PRINT:PRINT:COLOR 15,0
40050 PRINT "                                 Keep in Touch                    "
40060 PRINT
40070 COLOR 7,0
40080 PRINT "                        a business networking tool by"
40090 COLOR 15,0:PRINT
40100 PRINT "                               Gnossos Software":COLOR 7,0:PRINT
40110 PRINT "                 Copyright 1985, 1986 - All Rights Reserved"
40120 PRINT "                              Version 0.1 - 1986"
40130 PRINT
40140 PRINT "           Copying this software for other than shareware purposes"
40150 PRINT "               is both unethical and illegal.  We trust you,"
40160 PRINT "        please respect our intellectual effort.  We promise to provide"
40170 PRINT "      support and improvements.  Send your shareware donation of $35-50 to:"
40180 PRINT
40190 PRINT "           1616 15th St. NW, Washington DC, 20009 -- (202) 387-0858"
40210 PRINT
40220 PRINT:COLOR 15,0
40230 PRINT "                               by Steve Kantor":COLOR 7,0:PRINT
40240 PRINT "     written in Canary Islands, London, California, and Washington DC"
40250 LOCATE 1,1:PRINT STRING$(79,"█");:LOCATE 25,1:PRINT STRING$(79,"█");
40260 FOR X=1 TO 25:LOCATE X,1:PRINT "█";:LOCATE X,79:PRINT "█";:NEXT X
40270 FOR X=100 TO 1000 STEP 100:SOUND X,1:NEXT
40280 LOCATE 1,1:RUN "kit"
47000 GOSUB 47010:RETURN
47010 KEY OFF:CLS:COLOR 15,0
47030 PRINT "Hi! Congratulations, you have a copy of Keep in Touch!"
47050 PRINT "Keep in Touch is a shareware program for desktop management"
47060 PRINT
47070 PRINT "I am Steve Kantor and I wrote the program to help me in my business."
47080 PRINT "I wish to share it with you and your friends so you may also improve"
47090 PRINT "your business, and I can get some psychological and monetary reward"
47100 PRINT
47110 PRINT "I am originally from San Diego, CA and I studied political science at"
47120 PRINT "Harvard University from 1978-1981.  When I moved to Washington DC,"
47130 PRINT "I bought an Apple and taught myself how to program.  I created a consulting"
47140 PRINT "firm called Gnossos Software and recently finished a M.A. in"
47160 PRINT "International Relations at Johns Hopkins University School of "
47170 PRINT "Advanced International Studies in May 1985.  From 1985-1986, I"
47180 PRINT "travelled around-the-world on a backpacking adventure and now I am back"
47185 PRINT "in business with PC training, consulting, and software development."
47187 PRINT
47190 PRINT "If you have not done so already, and you use my program, please send"
47200 PRINT "a shareware payment of $35 individual, $50 corporate to 1616 15th St. NW"
47202 PRINT "Washington DC, 20009. Besides being ethically correct, it will build trust."
47205 PRINT "I will then send you a printed manual and free updated improvements"
47210 PRINT:PRINT "Please copy and pass Keep in Touch to all your PC friends. Thanks!"
47220 PRINT:COLOR 0,15:PRINT "Press any key to continue....";:COLOR 7,0
47230 IF INKEY$="" THEN 47230 ELSE CLS:RETURN

KIT.BAS

1 REM KEEP IN TOUCH (TM) BY STEVE KANTOR
3 REM (C) COPYRIGHT 1985 GNOSSOS SOFTWARE ALL RIGHTS RESERVED
6 REM V0.1 - 5/2/85 - 34915 719 B ORMOND CT. SAN DIEGO, CA 92109
10 DIM K(20),T%(15),B(30),TD$(15),CU$(25),CF$(3,25):B(15)=120:NF=16
11 DIM M$(10,9,1),CL$(16,2),S$(7,40,2),M%(16),D$(B(15)+1,NF)
12 DIM G$(20,2),B%(B(15)),R%(9,10,1),T$(10),B$(10),C(10,2),MA$(10)
15 GOSUB 40000:GOTO 60000
19 CLS:GOSUB 110:GOSUB 118:LOCATE 1,1:RETURN
20 GOSUB 102:RETURN
21 GOSUB 280:GOSUB 281:RETURN
22 GOSUB 120:GOSUB 114:RETURN
23 COLOR 7,0:GOSUB 390:PRINT S$(SN,X,0);:GOSUB 390:RETURN
24 GOSUB 102:GOSUB 124:GOSUB 110:GOSUB 530:RETURN
25 GOSUB 534:GOSUB 564:IF B=2 THEN GOSUB 740:RETURN ELSE RETURN
26 GOSUB 140:GOSUB 530:RETURN
27 COLOR 0,15:GOSUB 390:PRINT S$(SN,X,0);:GOSUB 390:RETURN
28 ERASE D$:DIM D$(B(15)+1,26):RETURN
70 REM inchar
72 B(6)=0:R$=INKEY$:IF R$="" THEN 72
74 IF LEN(R$)=2 THEN R$=RIGHT$(R$,1):B(6)=-1
75 R=ASC(R$):RETURN
100 LOCATE 4,1:PRINT STRING$(79,"═");:RETURN
101 A$="MENU":GOSUB 111:RETURN
102 CLS:GOSUB 100:GOSUB 101:B(2)=0:RETURN
103 LOCATE 3,1:PRINT STRING$(79,"─");:RETURN
104 REM BOX
105 LOCATE GSV,GSH:PRINT "┌";STRING$(BW-2,"─");"┐";:FOR V=GSV+1 TO GSV+BH-1
106 LOCATE V,GSH:PRINT "│";:LOCATE V,GSH+BW-1:PRINT "│";:NEXT
107 LOCATE GSV+BH,GSH:PRINT "└";STRING$(BW-2,"─");"┘";
108 FOR V=GSV+3 TO GSV+BH:LOCATE V,GSH:PRINT "█";:NEXT
109 LOCATE GSV+BH,GSH:PRINT "█";STRING$(BW-7,"▄");:RETURN
110 GSV=6:GSH=5:BW=70:BH=17:GOSUB 104:RETURN
111 COLOR 0,7:LOCATE 1,74:PRINT " "A$" ";:COLOR 7,0:RETURN
112 COLOR 23,1:LOCATE 1,74:PRINT " WAIT ";:COLOR 7,0:RETURN
113 GSV=7:GSH=5:BW=70:BH=15:GOSUB 104:RETURN
114 A$="PAUSE":GOSUB 111:GOSUB 281:LOCATE 2,1:COLOR 15,0
115 PRINT "Please press any key to continue...";:GOSUB 70:COLOR 7,0:GOSUB 101:RETURN
116 GSV=6:GSH=5:BW=70:BH=18:GOSUB 104:RETURN
117 GSV=6:GSH=7:BW=70:BH=15:GOSUB 104:RETURN
118 LOCATE 1,1:PRINT SPC(73);:RETURN
120 REM MESSAGE
121 GOSUB 280:GOSUB 281:LOCATE 3,1:COLOR 15,0:PRINT M$;:COLOR 7,0:RETURN
122 GOSUB 281:LOCATE 2,1:COLOR 15,0:PRINT CU$(0);", ";M$;:COLOR 7,0:RETURN
124 REM OUTCL
125 FOR T1=9 TO 16:LOCATE VAL(CL$(T1,1)),VAL(CL$(T1,2))
126 PRINT CL$(T1,0);":";:NEXT:RETURN
130 REM PROMPT
131 GOSUB 120:PRINT ":  ";:LOCATE ,,1,1,31:LINE INPUT;"";Q$:GOSUB 280:RETURN
133 A$="EDIT":GOSUB 111:GOSUB 21:GOSUB 160
134 LOCATE 2,1:PRINT "Use the direction keys to highlight information (UP/DOWN/LEFT/RIGHT/HOME/END)";
135 LOCATE 3,1:PRINT "Type in information followed by RETURN. PGDN for detail. DEL/INS as needed.";:RETURN
140 REM CLEARCARD
141 LOCATE 15,22:PRINT SPC(10);:FOR T1=8 TO 13:LOCATE T1,20:PRINT SPC(50);
142 LOCATE T1+9,22:PRINT SPC(50);:NEXT:LOCATE 15,50:PRINT SPC(10);:RETURN
143 REM YESNO
144 A$="YESNO":GOSUB 111:B(2)=0:GOSUB 122:GOSUB 280
145 SN=5:B(8)=0:GOSUB 300:IF T2=2 THEN 146 ELSE IF X=1 THEN B(8)=-1 ELSE IF X=3 THEN B(8)=2
146 RC=PC:GOSUB 21:RETURN
147 REM CFILE
148 GOSUB 20:LOCATE 2,1:PRINT"Here is a list of your Address Books.  Point using the direction keys.":PRINT "Press the RETURN key to select the Book that is highlighted.";
149 SN=6:GOSUB 300:RETURN
150 IF B THEN RETURN ELSE B(12)=X:GOSUB 281:IF G$(B(12),0)="NEW" THEN GOSUB 156:RETURN
151 F$=G$(B(12),0)+".DAT":GOSUB 500:RETURN
152 REM POINT
153 A$="POINT":GOSUB 111:LOCATE 1,1:PRINT "Press the ESC key to end pointing and return to menu";
154 M$="Use the direction keys (UP/DOWN/LEFT/RIGHT/HOME/END/PGUP/PGDN)":GOSUB 122
155 LOCATE 3,1:PRINT "Press the RETURN key to select a choice. INS to add a new contact":RETURN
156 NG=NG+1:B(12)=NG:F$="NEW.DAT":GOSUB 177:IF B(24)=0 THEN GOSUB 170:B1=-1:GOSUB 500:B1=0
157 M$="Enter a name for your file (8 characters or less, eg. PEOPLE)":GOSUB 130
158 IF LEN(Q$)>8 OR LEN(Q$)<3 THEN 157 ELSE G$(NG,0)=Q$:F$=Q$+".DAT"
159 M$="Enter a description of the file":GOSUB 130:IF LEN(Q$)<3 THEN 159 ELSE G$(NG,2)=Q$:RETURN
160 LOCATE 1,1:PRINT "Press the ESC key when you are finished to return to the menu";:RETURN
162 REM ISDATE
163 B=0:IF LEN(A$)<>8 THEN RETURN ELSE IF MID$(A$,3,1)<>"/" THEN RETURN
164 IF MID$(A$,6,1)<>"/" THEN RETURN ELSE IF VAL(MID$(A$,1,2))<1 THEN RETURN
165 IF VAL(MID$(A$,1,2))>12 THEN RETURN ELSE IF VAL(MID$(A$,4,2))<1 THEN RETURN
166 IF VAL(MID$(A$,4,2))>31 THEN RETURN ELSE IF VAL(MID$(A$,7,2))<0 THEN RETURN
167 IF VAL(MID$(A$,7,2))>99 THEN RETURN ELSE B=-1:RETURN
170 FOR X=1 TO 16:D$(0,X)=CL$(X,0):NEXT:RETURN
171 FOR X=1 TO 16:CL$(X,0)=D$(0,X):NEXT:RETURN
172 M$="Coming soon in next version!":GOSUB 22:RETURN
173 REM YN
174 T2=0:IF INSTR("Yy",R$)<>0 THEN B(8)=-1:T2=2
175 IF INSTR("Nn",R$)<>0 THEN B(8)=0:T2=2 ELSE IF INSTR("Cc",R$)<>0 THEN B(8)=2:T2=2
176 RETURN
177 REM DETAIL
178 NF=16:B(24)=0:M$="Do you want to have an extra card of DETAIL for each contact?":GOSUB 143
179 IF B(8)=-1 THEN GOSUB 509:B=-1:RETURN ELSE B=0:RETURN
180 REM ESCSTOP
181 LOCATE 1,1:PRINT "Press the ESC key to stop printing the report";:RETURN
182 REM FORMFEED
183 GOSUB 102:M$="Do you want to advance the printer to the top of a new page?"
184 GOSUB 143:IF B(8)=-1 THEN LPRINT FF$:RETURN ELSE RETURN
185 REM PRINTERON
186 RETURN:REM B=0:IF INP(957)=223 THEN RETURN
187 BEEP:REM printer is connected and turned on.:b=-1:return
188 A$="DESIGN":GOSUB 111:GOSUB 21:GOSUB 160
189 LOCATE 2,1:PRINT "To create a column report of 1-10 columns, number each heading starting with 1";
190 LOCATE 3,1:PRINT "in the heading you want in the first column, 2 in the second, etc.";:RETURN
192 WRITE #1,D$(X,1),D$(X,2),D$(X,3),D$(X,4),D$(X,5),D$(X,6),D$(X,7),D$(X,8),D$(X,9),D$(X,10),D$(X,11),D$(X,12),D$(X,13),D$(X,14),D$(X,15),D$(X,16):RETURN
193 WRITE #1,D$(X,1),D$(X,2),D$(X,3),D$(X,4),D$(X,5),D$(X,6),D$(X,7),D$(X,8),D$(X,9),D$(X,10),D$(X,11),D$(X,12),D$(X,13),D$(X,14),D$(X,15),D$(X,16),D$(X,17),D$(X,18),D$(X,19),D$(X,20),D$(X,21),D$(X,22),D$(X,23),D$(X,24),D$(X,25),D$(X,26):RETURN
194 GOSUB 112:FOR T3=1 TO NR:FOR T4=1 TO T5:IF INSTR(D$(T3,T4),Q$)<>0 THEN RC=T3:SN=4:GOSUB 26:M$="Is this the person you are looking for?":GOSUB 143:IF B(8)=-1 THEN MC=1:RETURN
195 NEXT T4:NEXT T3:GOSUB 101:RETURN
200 REM MENU
202 R=-1:B(2)=0:B=0:GOSUB 281:T1=VAL(M$(MN,0,0)):IF MC>T1 OR PM<>MN THEN MC=1
204 FOR X=1 TO T1:LOCATE 2,1+(X-1)*10:PRINT M$(MN,X,0);"  ";:NEXT
208 WHILE R<>K(0):LOCATE 2,1+(MC-1)*10:COLOR 0,15:PRINT M$(MN,MC,0);
212 GOSUB 280:LOCATE 3,1:PRINT M$(MN,MC,1);
214 GOSUB 70:GOSUB 231:IF B THEN MC=T3:B=0:RETURN
216 LOCATE 2,1+(MC-1)*10:PRINT M$(MN,MC,0);:IF R=K(1) THEN B=1:RETURN
220 IF R=K(5) THEN MC=MC-1:IF MC=0 THEN MC=T1
222 IF R=K(4) THEN MC=MC+1:IF MC>T1 THEN MC=1
224 IF R=K(6) THEN MC=1 ELSE IF R=K(7) THEN MC=T1
226 WEND:R=-1:RETURN
231 IF B(6) THEN RETURN ELSE IF R>90 THEN R=R-32
232 IF NOT ((R>=65 AND R<=90) OR (R>=97 AND R<=122)) THEN RETURN
234 FOR T3=1 TO T1:IF R=ASC(LEFT$(M$(MN,T3,0),1)) THEN B=-1:RETURN
235 NEXT:RETURN
280 COLOR 0,0:LOCATE 3,1:PRINT SPC(78);:COLOR 7,0:RETURN
281 COLOR 0,0:LOCATE 2,1:PRINT SPC(79);:COLOR 7,0:RETURN
300 REM SCRMEN
302 PC=RC:B=0:T1=VAL(S$(SN,0,0)):FOR X=1 TO T1:GOSUB 23:IF SN<3 THEN R$=INKEY$:IF R$=CHR$(27) THEN B=1:RETURN ELSE IF R$<>"" THEN RC=1:RETURN
303 NEXT
304 IF B(2) THEN RETURN
310 IF X<1 OR X>T1 THEN X=1
312 B=0:R=-1:WHILE R<>K(0):GOSUB 27
314 GOSUB 70:IF SN=5 THEN GOSUB 173:IF T2=2 THEN RETURN
316 GOSUB 23:IF R=K(9) AND B(6) THEN SN=7:GOSUB 670:B=0:RETURN
317 IF R=K(1) OR R=K(13) THEN B=1:RETURN
318 IF R=K(5) OR R=K(2) THEN X=X-1 ELSE IF R=K(4) OR R=K(3) THEN X=X+1
320 IF R=K(10) AND SN<3 THEN CG=CG-1:B(5)=1:RETURN
321 IF R=K(11) AND SN<3 THEN IF NR<CG*40+40 THEN 322 ELSE CG=CG+1:B(5)=1:RETURN
322 IF R=K(6) THEN X=1 ELSE IF R=K(7) THEN X=T1
324 IF SN<3 AND R=K(2) THEN X=X-1 ELSE IF SN<3 AND R=K(3) THEN X=X+1
327 IF X>T1 THEN X=1 ELSE IF X<1 THEN X=T1
328 WEND:RC=CG*40+X:RETURN
350 REM SCRMEN
352 T2=X:PC=RC:T1=VAL(S$(SN,0,0)):FOR X=1 TO T1:GOSUB 23:NEXT:X=T2:IF B(2) THEN RETURN
362 IF X<1 OR X>T1 THEN X=1
363 PC=RC:B=0:T1=VAL(S$(SN,0,0)):R=-1:WHILE R<>K(1)
365 GOSUB 27:GOSUB 70:GOSUB 23
367 GOSUB 386:IF B THEN GOTO 377 ELSE IF B(6) AND R=K(11) AND B(24) THEN B=2:RETURN ELSE IF B(6) AND R=K(11) AND B(24)=0 THEN BEEP:GOTO 377
368 GOSUB 380:IF B=1 THEN RETURN ELSE IF B=2 THEN 378
369 GOSUB 385:IF B AND B(6) THEN B=0:RETURN
370 IF R=3 THEN GOSUB 391:S$(SN,X,0)=T$(5):GOTO 377
375 GOSUB 391:PRINT R$;:LINE INPUT;"";S$(SN,X,0):S$(SN,X,0)=R$+S$(SN,X,0):IF X<4 AND (SN=4 OR SN=7) AND RC>0 THEN B(0)=0:GOSUB 528
376 GOSUB 387:IF B THEN GOSUB 390:GOSUB 391:S$(SN,X,0)="":GOTO 365
377 GOSUB 23:X=X+1
378 IF X>T1 THEN X=1 ELSE IF X<1 THEN X=T1
379 WEND:RC=PC:LOCATE ,,,B(22),B(23):RETURN
380 FOR T3=0 TO 7:IF R=K(T3) THEN B=2:GOTO 382
381 NEXT:B=0:RETURN
382 IF T3>1 AND B(6)=0 THEN B=0:RETURN ELSE IF R=K(4) OR R=K(0) OR R=K(3) THEN X=X+1 ELSE IF (R=K(5) AND B(6)) OR R=K(2) THEN X=X-1
383 IF R=K(6) THEN X=1 ELSE IF R=K(7) THEN X=T1
384 IF R=K(1) THEN B=1:RETURN ELSE IF B(6) AND R=K(11) THEN B=2:RETURN ELSE RETURN
385 B=0:IF (R=K(8) OR R=K(9)) AND (SN=3 OR SN=4 OR SN=7) AND B(6) THEN B=1:RETURN ELSE RETURN
386 B=0:IF R=K(12) THEN GOSUB 391:S$(SN,X,0)=T$(4):B=1:RETURN ELSE RETURN
387 B=0:IF SN=4 AND (X=9 OR X=10) THEN A$=S$(SN,X,0):GOSUB 162:IF NOT B THEN BEEP:B=1:RETURN
388 B=0:RETURN
390 LOCATE VAL(S$(SN,X,1)),VAL(S$(SN,X,2)),B(19),B(20),B(21):RETURN
391 PRINT SPC(LEN(S$(SN,X,0)));:GOSUB 390:RETURN
400 REM TIM
403 T$=TIME$:T%(0)=VAL(LEFT$(T$,2)):T%(1)=VAL(MID$(T$,4,2)):T%(2)=VAL(MID$(T$,7,2))
405 T%=T%(0):RETURN
406 IF T%(0)>11 THEN T$(2)="PM":IF T%<>12 THEN T%=T%-12
407 IF T%(0)<12 THEN T$(2)="AM":IF T%=0 THEN T%=12
408 IF T%(1)>10 THEN T$=RIGHT$(STR$(T%(1)),2) ELSE T$="0"+RIGHT$(STR$(T%(1)),1)
409 T$(3)=STR$(T%)+":"+T$+" "+T$(2):RETURN
410 REM timer
411 GOSUB 400:T%(7)=T%(0):T%(8)=T%(1):T%(9)=T%(2):RETURN
413 GOSUB 400:T1=T%(0)*60*60+T%(1)*60+T%(2):T2=T%(7)*60*60+T%(8)*60+T%(9)
415 T3=T1-T2:T1=INT(T3/60):T2=T3-T1*60:RETURN
418 GOSUB 280:COLOR 15,0:C=0
419 GOSUB 413:C=C+1:FOR X=1 TO 10:LOCATE 3,1:PRINT "Elapsed time is ";:PRINT USING "##";T1;:PRINT " minutes and ";:PRINT USING "##";T2;:PRINT " seconds  ":NEXT:R$=INKEY$:IF C>60 THEN RETURN ELSE IF R$="" THEN 419 ELSE RETURN
420 M$="Enter alarm setting using the format (4:31=4:31 am, 14:03=2:03 pm)"
422 GOSUB 130:IF LEN(Q$)<4 THEN RETURN
423 T1=VAL(LEFT$(Q$,2)):T2=VAL(RIGHT$(Q$,2)):IF T1<0 OR T1>23 OR T2<0 OR T2>59 THEN BEEP:GOTO 420
425 T%=T1
426 IF T1>11 THEN T$="PM":IF T%<>12 THEN T%=T%-12
427 IF T1<12 THEN T$="AM":IF T%=0 THEN T%=12
428 IF T2>10 THEN T1$=RIGHT$(STR$(T2),2) ELSE T1$="0"+RIGHT$(STR$(T2),1)
429 T$(1)=STR$(T%)+":"+T1$+" "+T$:T%(12)=-1:T%(3)=T1:T%(4)=T2:RETURN
430 REM SETALARM
432 T$="OFF":IF T%(12) THEN T$="ON"
433 RETURN
440 REM OUTTIME
441 GOSUB 400:GOSUB 406:GOSUB 102:GSV=10:GSH=15:BW=40:BH=12:GOSUB 104:COLOR 15,0:LOCATE 8,29:PRINT "Keep in Touch";:COLOR 7,0
442 LOCATE 12,18:PRINT T$(4);:LOCATE 12,38:PRINT T$(3);:LOCATE 16,18:PRINT "Alarm Clock";:LOCATE 16,38:IF NOT T%(12) THEN PRINT " OFF"; ELSE PRINT T$(1);
443 LOCATE 20,18:PRINT "Starting Time";:LOCATE 20,38:PRINT T$(0);:LOCATE 14,16:PRINT STRING$(38,"─");:LOCATE 18,16:PRINT STRING$(38,"─");:RETURN
450 REM CALARM
451 IF T%(12)=0 THEN RETURN
452 GOSUB 400:T1=T%(3)*60+T%(4):T2=T%(0)*60+T%(1):T3=T%(5)*60+T%(6)
454 IF T2>=T1 AND T1>T3 THEN 455 ELSE RETURN
455 GOSUB 406:R$=INKEY$:GOSUB 21:M$=CU$(0)+", the time is now "+T$(3):GOSUB 120
458 FOR T=1 TO 6:SOUND 500,4:FOR P=1 TO 500:NEXT:NEXT:T%(12)=0:GOSUB 114:RETURN
460 REM REPORT
461 B(9)=0:M$="Would you like to send report to the printer":GOSUB 143
462 GOSUB 610:GOSUB 618:IF B(8)=2 THEN RETURN ELSE IF B(8) THEN B(9)=-1:GOSUB 185:WIDTH "lpt1:",255:OPEN "lpt1:" FOR OUTPUT AS #1
463 GOSUB 484:CLS:GOSUB 180:PRINT:PRINT:GOSUB 103:LC=0:IF RN=5 THEN LPP=9999:GOTO 465
464 IF B(9) THEN LPP=60 ELSE LPP=20
465 FOR RC=1 TO NR:IF (B(17) AND B%(RC)=0) OR D$(RC,2)="<DELETED>" THEN 468
466 GOSUB 470:IF LC=LPP THEN GOSUB 480:LC=0:IF R=K(1) THEN GOSUB 102:RETURN
467 IF INKEY$=CHR$(27) THEN GOSUB 102:RETURN
468 NEXT:GOSUB 480:IF B(9) THEN GOSUB 182
469 GOSUB 102:RETURN
470 ON RN GOSUB 471,471,471,471,475,471,471,471:LC=LC+1:RETURN
471 FOR T2=1 TO 10:T0=R%(RN,T2,0):T1=R%(RN,T2,1):IF T0=999 OR T1=0 THEN IF B(9) THEN LPRINT:RETURN ELSE PRINT:RETURN
472 IF B(9) THEN LPRINT LEFT$(D$(RC,T0),T1);SPC(1+T1-LEN(LEFT$(D$(RC,T0),T1))); ELSE PRINT LEFT$(D$(RC,T0),T1);SPC(1+T1-LEN(LEFT$(D$(RC,T0),T1)));
473 NEXT:RETURN
475 LPRINT D$(RC,1);" ";D$(RC,2):LPRINT D$(RC,3):LPRINT D$(RC,4):LPRINT D$(RC,5);", ";D$(RC,6);"  ";D$(RC,7):FOR T3=1 TO 5:LPRINT:NEXT:RETURN
476 RETURN
477 GOSUB 475:FOR T=8 TO 16:LPRINT D$(0,T);":";TAB(20);D$(RC,T):NEXT:LPRINT
478 IF B(24)<>1 THEN RETURN
479 FOR T=17 TO 26:LPRINT D$(RC,T):NEXT:RETURN
480 REM newpage
481 IF NOT B(9) THEN GOSUB 114:CLS:GOSUB 180:PRINT:PRINT:GOSUB 103:RETURN
482 IF B(9) AND LC=LPP THEN LPRINT FF$:RETURN
483 RETURN
484 REM DOSELECT
485 IF NOT B(16) THEN RETURN ELSE M$=LEFT$("Do you only want contacts where "+B$(0),67):GOSUB 143
486 B(17)=0:IF B(8)=-1 THEN B(17)=-1
487 RETURN
490 REM TODO
491 GOSUB 102:GOSUB 133:GOSUB 116:COLOR 0,15:LOCATE 7,30:PRINT " ";CU$(0);"'s Things To Do ";
492 COLOR 7,0:FOR T=1 TO 15:LOCATE T+8,7:PRINT T:NEXT
493 GOSUB 573:SN=3:GOSUB 350:IF R=K(8) THEN T1=X:GOSUB 495:X=T1:GOTO 498
494 IF R=K(9) THEN T1=X:GOSUB 497:X=T1:GOTO 498 ELSE RETURN
495 IF LEN(S$(SN,X,0))>2 THEN GOSUB 400:GOSUB 406:OPEN "TODO.LOG" FOR APPEND AS #1:WRITE #1,T$(4),T$(3),S$(SN,X,0):CLOSE #1
496 FOR T2=X TO 15:S$(SN,T2,0)=S$(SN,T2+1,0):NEXT:RETURN
497 IF X=15 THEN RETURN ELSE FOR T2=15 TO X+1 STEP -1:S$(SN,T2,0)=S$(SN,T2-1,0):NEXT:S$(SN,X,0)="":RETURN
498 FOR T=1 TO 15:LOCATE T+8,11:PRINT SPC(62);:NEXT:GOTO 493
500 REM READDATA
501 GOSUB 102:B(13)=0:M$="Reading information from disk for "+F$:GOSUB 120
502 GOSUB 112:OPEN F$ FOR INPUT AS #1:T2=0
504 INPUT #1,T$:IF T$<>"*KIT*" THEN T2=1:CLOSE #1:OPEN F$ FOR INPUT AS #1:GOTO 507
505 GOSUB 640:M$="Total of "+T3$+" contacts, last updated on "+T1$+" at "+T2$:GOSUB 120:IF B(24)=6 THEN B(24)=0
506 T2=0:IF B(24)=1 THEN GOSUB 28:NF=26
507 FOR X=T2 TO B(15)+2:IF EOF(1) THEN NR=X-1:CLOSE #1:GOSUB 171:GOSUB 101:GOSUB 520:RETURN
508 FOR T1=1 TO NF:INPUT #1,D$(X,T1):NEXT:NEXT:RETURN
509 GOSUB 28:B1=-1:NF=16:CLOSE #1:GOSUB 170:GOSUB 500:B1=0:NF=26:B(24)=1:RETURN
510 REM SAVEDATA
512 GOSUB 102:GOSUB 112:M$="Saving information to disk for "+F$:GOSUB 120
513 OPEN F$ FOR OUTPUT AS #1:GOSUB 630
514 FOR X=0 TO NR:IF D$(X,2)="<DELETED>" THEN 517
516 IF B(24)=1 THEN GOSUB 193 ELSE GOSUB 192
517 NEXT:CLOSE #1:G$(B(12),1)=STR$(NR):GOSUB 600:RETURN
520 REM FILLMENU
521 FOR CG=0 TO 2
523 FOR X=1 TO 40:IF B(4)=0 THEN S$(CG,X,0)=LEFT$(D$(CG*40+X,3),38) ELSE S$(CG,X,0)=D$(CG*40+X,2)+", "+D$(CG*40+X,1)
524 IF CG*40+X>NR THEN T%=NR-CG*40:IF T%>40 THEN T%=40:GOTO 526 ELSE 526
525 NEXT:S$(CG,0,0)="40":NEXT CG
526 S$(CG,0,0)=STR$(T%):B(0)=-1:CG=0:RETURN
528 T=INT((PC-1)/40):IF B(4)=0 THEN S$(T,PC-T*40,0)=LEFT$(S$(SN,3,0),38) ELSE S$(T,PC-T*40,0)=S$(SN,2,0)+", "+S$(SN,1,0)
529 B(0)=-1:IF PC=NR THEN S$(T,0,0)=STR$(PC-T*40):RETURN ELSE RETURN
530 REM DRAW
532 B(2)=1:GOSUB 560:X=1:GOSUB 300:RETURN
534 REM EDIT
536 GOSUB 560:X=1:GOSUB 133
537 GOSUB 362:IF B=1 OR B=2 THEN LOCATE ,,0:RETURN ELSE IF R=K(8) THEN GOSUB 390:PRINT SPC(LEN(S$(SN,X,0)));:S$(SN,X,0)="":GOTO 537
538 B(3)=1:GOSUB 390:LINE INPUT;"";S$(SN,X,0)
550 REM DELPERSON
551 B(2)=0:M$="Would you like to delete this person's information"
552 GOSUB 143:IF NOT B(8) OR B(8)=2 OR NR=1 THEN RETURN
553 FOR X=1 TO NF:D$(RC,X)="":NEXT:D$(RC,2)="<DELETED>":D$(RC,3)=D$(RC,2)
554 B(0)=0:RC=RC-1:IF RC=0 THEN RC=2
555 SN=4:GOSUB 26:RETURN
560 FOR T%=1 TO 16:S$(SN,T%,0)=D$(RC,T%):NEXT:RETURN
564 FOR T%=1 TO 16:SWAP D$(RC,T%),S$(SN,T%,0):NEXT
565 IF B(0)=0 THEN GOSUB 528:RETURN ELSE RETURN
570 REM STODO
571 IF NOT B(7) THEN RETURN ELSE GOSUB 112:OPEN "TODO.DAT" FOR OUTPUT AS #1
572 FOR X=1 TO 15:WRITE #1,S$(3,X,0):NEXT:CLOSE #1:RETURN
573 IF NOT B(7) THEN OPEN "TODO.DAT" FOR INPUT AS #1 ELSE RETURN
574 FOR X=1 TO 15:IF EOF(1) THEN 576
575 INPUT #1,S$(3,X,0):NEXT
576 CLOSE #1:B(7)=-1:X=1:RETURN
590 REM RGROUP
591 OPEN "FILES.KIT" FOR INPUT AS #2
592 FOR X=1 TO 20:IF EOF(2) THEN NG=X-1:GOTO 594
593 FOR T1=0 TO 2:INPUT #2,G$(X,T1):NEXT:NEXT:NG=20
594 CLOSE #2:GOSUB 101:SN=6:S$(SN,0,0)=STR$(NG):FOR X=1 TO NG
595 S$(SN,X,0)=G$(X,0)+STRING$(8-LEN(G$(X,0))," ")+STRING$(3," ")+G$(X,1)+STRING$(4-LEN(G$(X,1))," ")+STRING$(3," ")+G$(X,2):NEXT:RETURN
600 REM SGROUP
602 GOSUB 112:OPEN "FILES.KIT" FOR OUTPUT AS #2:FOR X=1 TO NG
604 FOR T1=0 TO 2:WRITE #2,G$(X,T1):NEXT:NEXT:CLOSE #2:GOSUB 101:RETURN
610 REM FMAXW
611 IF B(13) THEN RETURN ELSE GOSUB 112:FOR T%=1 TO 16:M%(T%)=1:NEXT
612 FOR X%=1 TO NR:FOR T%=1 TO 16
614 IF LEN(D$(X%,T%))>M%(T%) THEN M%(T%)=LEN(D$(X%,T%))
616 NEXT:NEXT:GOSUB 101:B(13)=-1:RETURN
618 FOR T2=1 TO 10:IF R%(RN,T2,0)=999 THEN RETURN
619 R%(RN,T2,1)=M%(R%(RN,T2,0)):NEXT:RETURN
620 REM SPECREP
621 RC=NR+1:GOSUB 680:GOSUB 610:FOR X=1 TO 16
623 T%=VAL(D$(RC,X)):R%(RN,T%,0)=X:R%(RN,T%,1)=M%(X):D$(RC,X)="":NEXT:RC=1
625 TW=0:FOR X=1 TO 10:TW=TW+1+R%(RN,X,1):IF TW>131 THEN R%(RN,X,0)=999:GOTO 627
626 NEXT
627 GOSUB 102:RETURN
630 REM SHEADER
631 WRITE #1,"*KIT*",B(14),DATE$,TIME$,B(4),NR,B(24),"7","8"
632 FOR X=1 TO 3:RN=X+5:WRITE #1,M$(10,X,0),M$(10,X,1),R%(RN,1,0),R%(RN,2,0),R%(RN,3,0),R%(RN,4,0),R%(RN,5,0),R%(RN,6,0),R%(RN,7,0),R%(RN,8,0),R%(RN,9,0),R%(RN,10,0):NEXT:RETURN
640 REM RHEADER
641 INPUT #1,B(14),T1$,T2$,B(4),T3$,T4$,X$,X$:B(24)=VAL(T4$)
642 FOR X=1 TO 3:RN=X+5:INPUT #1,M$(10,X,0),M$(10,X,1):FOR T1=1 TO 10:INPUT #1,R%(RN,T1,0):NEXT:NEXT:RETURN
650 REM SEARCH
652 RC=NR+1:GOSUB 680:GOSUB 102
653 FOR X=1 TO 16:IF D$(RC,X)<>"" THEN SF=X:SF$=D$(RC,X):GOTO 656
654 NEXT:RETURN
656 GOSUB 112:B(26)=0:FOR X=1 TO NR:IF D$(X,SF)=SF$ THEN B(26)=B(26)+1:B%(X)=-1 ELSE B%(X)=0
657 NEXT:RC=1:B(16)=-1:B$(0)=CL$(SF,0)+" = "+SF$:M$="You have selected a total of"+STR$(B(26))+" contacts.":GOSUB 118:GOSUB 22:RETURN
660 REM CALL
661 IF LEN(D$(RC,8))>8 THEN T$=LS$+D$(RC,8) ELSE T$=D$(RC,8)
662 GOSUB 810:B(2)=0:M$="Did you connect with whom you were calling":GOSUB 143:IF B(8)=2 OR B(8)=0 THEN RETURN
664 CLOSE #1:GOSUB 410:D$(RC,10)=T$(4):MN=8:RETURN
670 REM ADDCARD
671 IF NR>=B(15) THEN BEEP:RETURN ELSE NR=NR+1
672 RC=NR:GOSUB 680:FOR T1=1 TO 16:IF D$(RC,T1)<>"" THEN B(3)=-1:B(0)=0:B(13)=0:RETURN
674 NEXT:NR=NR-1:RC=NR:RETURN
680 REM EASYOUT
682 GOSUB 102:IF MN=3 THEN COLOR 15,0:LOCATE 5,1:PRINT "OLD";TAB(15);"NEW";:COLOR 7,0
683 FOR X=1 TO 16:LOCATE X+5,1:PRINT CL$(X,0);:NEXT:SN=7:GOSUB 530:GOSUB 25:RETURN
690 REM ERROR
692 SOUND 200,0.5:GOSUB 102:LOCATE 10,1:PRINT "Program problem number: ";ERR
693 PRINT "            On line # :  ";ERL
694 M$="Press return, if you have problems please call Gnossos Software":GOSUB 22:RESUME NEXT:RETURN
700 REM EXTRACT
702 GOSUB 707:GOSUB 102:M$="What is the name for the extracted file (1-8 letters) ":GOSUB 130
703 C=0:GOSUB 112:OPEN LEFT$(Q$,8)+".PRN" FOR OUTPUT AS #1
704 FOR X=1 TO NR:IF B%(X)=0 OR D$(X,2)="<DELETED>" THEN 706 ELSE LOCATE 1,1:C=C+1:PRINT C;:GOSUB 192
706 NEXT:CLOSE #1:GOSUB 102:RETURN
707 M$="Do you wish to extract all the contacts in your address book?":GOSUB 143:IF B(8)<>-1 THEN GOSUB 650:RETURN
709 FOR X=1 TO NR:B%(X)=-1:NEXT:RETURN
710 REM GROUPEDIT
711 GOSUB 102:LOCATE 3,1:M$="Enter a description for "+G$(B(12),0):GOSUB 130:G$(B(12),2)=Q$:RETURN
713 REM ADDGROUP
714 IF NG=20 THEN RETURN ELSE M$="Enter the Address Book name (e.g. JAPAN) "
715 GOSUB 130:F$=LEFT$(Q$,8)+".DAT":GOSUB 500:NG=NG+1:B(12)=NG
716 G$(B(12),0)=LEFT$(Q$,8):GOSUB 710:GOSUB 600:RETURN
720 REM CALC
721 GOSUB 102:M$="Enter the formula (e.g. 23+54*4/7)  ":GOSUB 130:C(0,0)=1:C=1
722 L$=""
723 IF Q$="" OR C=10 THEN C(C-1,1)=VAL(L$):GOTO 727 ELSE T$=LEFT$(Q$,1)
724 IF INSTR("0123456789.",T$)<>0 THEN L$=L$+T$:GOSUB 732:GOTO 723
725 N=INSTR("+-*/",T$):IF N<>0 THEN C(C-1,1)=VAL(L$):C(C,0)=N:GOSUB 732:C=C+1:GOTO 722
727 LOCATE 5,1:T=0:FOR N=0 TO C-1:IF N>5 THEN 731
728 PRINT MID$("+-*/",C(N,0),1);:PRINT TAB(7);:PRINT USING "#######,.##";C(N,1)
729 ON C(N,0) GOSUB 733,734,735,736
730 PRINT STRING$(20,"═"):PRINT TAB(7);:PRINT USING "#######,.##";T:NEXT
731 T$(5)=STR$(T):GOSUB 114:GOSUB 102:RETURN
732 Q$=RIGHT$(Q$,LEN(Q$)-1):RETURN
733 T=T+C(N,1):RETURN
734 T=T-C(N,1):RETURN
735 T=T*C(N,1):RETURN
736 T=T/C(N,1):RETURN
738 T=0:FOR N=0 TO C-1:ON C(N,0) GOSUB 733,734,735,736:NEXT:T$(5)=STR$(T):RETURN
740 REM DETAIL
741 SN=3:B(25)=1:FOR X=1 TO 15:TD$(X)=S$(SN,X,0):NEXT:FOR X=1 TO 10:S$(SN,X,0)=D$(RC,X+16):NEXT:S$(SN,0,0)="10"
742 GOSUB 102:GOSUB 117:COLOR 0,15:LOCATE 6,11:PRINT " ";D$(RC,1);" ";D$(RC,2);" -- ";D$(RC,3);" ";
743 B(2)=1:X=1:GOSUB 300:X=1:GOSUB 133:GOSUB 537
745 B(25)=0:FOR X=1 TO 10:D$(RC,X+16)=S$(SN,X,0):NEXT:FOR X=1 TO 15:S$(SN,X,0)=TD$(X):NEXT:S$(SN,0,0)="15"
747 SN=4:GOSUB 24:RETURN
750 REM READCONFIG
752 F$="CONFIG.KIT":OPEN F$ FOR INPUT AS #1
753 INPUT #1,VER,VD$,PD$,PT$,CF(0),CF(1),CF(2),CF(3),CF(4)
754 FOR X=0 TO 25:INPUT #1,CU$(X):NEXT
755 FOR N=0 TO 3:FOR X=0 TO 25:INPUT #1,CF$(N,X):NEXT:NEXT:CLOSE #1
761 FOR X=1 TO 20:K(X-1)=VAL(CF$(0,X)):NEXT
762 B(27)=0:IF CF$(3,0)<>"None" THEN B(27)=-1
763 FOR X=4 TO 8:B(X+15)=VAL(CF$(1,X)):NEXT:B(28)=VAL(CF$(1,3))
766 RETURN
770 REM dump
771 PC=RC:T4=0:FOR RC=1 TO NR:IF INKEY$<>"" THEN RETURN
772 GOSUB 477:T4=T4+1:IF (T4=2 AND B(24)) OR (T4=3 AND B(24)=0) THEN T4=0:LPRINT FF$
773 NEXT RC:GOSUB 182:RC=PC:RETURN
810 REM CALL
811 IF B(27)=0 THEN RETURN
812 OPEN CU$(5) FOR OUTPUT AS #1:PRINT #1,"AT";CU$(6);"D";T$
814 M$="Dialing...Press any key and pick up phone when you connect":GOSUB 120
815 IF INKEY$="" THEN 815 ELSE PRINT #1,"AT H":CLOSE #1:RETURN
850 REM SORT
852 GOSUB 102:T2=0:I=1:IF B(4)=0 THEN K=3 ELSE K=2
854 IF I=NR THEN GOSUB 520:BEEP:GOSUB 114:RETURN
856 IF D$(I,K)>D$(I+1,K) THEN 858 ELSE I=I+1:GOTO 854
858 FOR T3=1 TO NF:SWAP D$(I,T3),D$(I+1,T3):NEXT:A=I+1
860 IF I-1=0 THEN 864 ELSE IF I>T2 THEN T2=T2+1:LOCATE 3,1:PRINT "Sorting...";NR-T2;
862 IF D$(I-1,K)>D$(I,K) THEN 866
864 I=A:GOTO 854
866 FOR T3=1 TO NF:SWAP D$(I,T3),D$(I-1,T3):NEXT:I=I-1:GOTO 860
900 REM MENUDRIVER
901 B=0:LOCATE 1,1:PRINT SPC(70);:GOSUB 101
902 GOSUB 200:PM=MN:IF B THEN MN=VAL(M$(MN,0,1)):GOTO 902
904 ON MN GOSUB 1100,1200,1300,1400,1500,1600,1700,1800,1900,2000
905 IF LM=2 AND MN=1 THEN LM=1:GOSUB 1110
906 GOSUB 450:GOTO 900
1100 REM P,C,R,T,D,G,O,Q
1104 ON MC GOSUB 1110,1120,1130,1140,1150,1160,1170,1180:RETURN
1110 B(5)=0:GOSUB 102:SN=CG:GOSUB 152:GOSUB 300:IF B THEN GOSUB 102:RETURN
1111 IF CG<0 THEN CG=0 ELSE IF CG>2 THEN CG=2
1112 IF B(5) THEN B(0)=0:B(2)=0:B=0:GOTO 1110 ELSE SN=4:GOSUB 24:MN=2:RETURN
1120 GOSUB 440:MN=5:RETURN
1130 MN=7:RETURN
1140 GOSUB 490:GOSUB 102:RETURN
1150 MN=4:RETURN
1160 MN=9:RETURN
1170 MN=6:RETURN
1180 M$="Are you sure you want to quit":GOSUB 143:IF B(8)<>-1 THEN RETURN
1181 GOSUB 570:M$="Do you wish to save your address book":GOSUB 143
1182 IF B(8)=-1 THEN GOSUB 510
1184 CLS:LOCATE 10,34:PRINT "Keep In Touch":LOCATE 12,33:PRINT"Gnossos Software":LOCATE 22,1:IF TEST=-1 THEN ON ERROR GOTO 0:END ELSE SYSTEM
1200 REM CH,DI,NE,PR,AD,FI,OT,ME
1204 B(2)=1:LM=2:ON MC GOSUB 1210,1220,1230,1240,1250,1260,1270,1280:RETURN
1206 LOCATE 15,23:PRINT SPC(10);:FOR T1=8 TO 13:LOCATE T1,20:PRINT SPC(52);
1207 LOCATE T1+9,22:PRINT SPC(50);:NEXT T1:LOCATE 15,50:PRINT SPC(10);
1208 SN=4:GOSUB 530:RETURN
1210 SN=4:GOSUB 25:B(13)=0:RETURN
1220 GOSUB 660:RETURN
1230 RC=RC+1:IF RC>NR THEN RC=NR
1231 SN=4:GOSUB 26:RETURN
1240 RC=RC-1:IF RC=0 THEN RC=1
1241 SN=4:GOSUB 26:RETURN
1250 SN=7:GOSUB 670:SN=4:GOSUB 24:RETURN
1260 M$="Enter part of the name or company":GOSUB 130:IF Q$="" THEN RETURN
1261 T5=3:GOSUB 194:RETURN
1270 MN=3:RETURN
1280 MN=1:RETURN
1300 REM FI,LA,DE,SE,PR,OR,HE,ME
1304 SN=4:ON MC GOSUB 1310,1320,1330,1340,1350,1360,1370,1380
1305 IF MC<3 OR MC=5 THEN SN=4:GOSUB 26:RETURN ELSE RETURN
1310 RC=1:RETURN
1320 RC=NR:RETURN
1330 GOSUB 550:RETURN
1340 M$="Enter any word or phrase for searching in any area or detail":GOSUB 130:IF Q$="" THEN RETURN
1341 T5=NF:GOSUB 194:RETURN
1350 GOSUB 477:GOSUB 182:RETURN
1360 B(0)=0:M$="Do you want to organize this address book by Company":GOSUB 143:IF B(8)=-1 THEN B(4)=0 ELSE B(4)=-1
1361 GOSUB 520:RETURN
1370 FOR X=1 TO 16:D$(0,X)=CL$(X,0):NEXT:SN=7:T2=RC:RC=0:GOSUB 680:RC=T2
1372 B(3)=1:FOR X=1 TO 16:CL$(X,0)=LEFT$(D$(0,X),12):NEXT:SN=4:GOSUB 24:RETURN
1380 MN=2:RETURN
1400 REM SAV,CHA,LIS,DEL,EXT,TRA,QUT
1404 ON MC GOSUB 1410,1420,1430,1440,1450,1460,1470:GOSUB 102:RETURN
1410 GOSUB 510:RETURN
1420 GOSUB 510:NF=16:ERASE D$:DIM D$(B(15)+1,16):GOSUB 147:GOSUB 150:GOSUB 102:MN=1:CG=0:B(3)=0:B(16)=0:RETURN
1430 GOSUB 102:G$(B(12),1)=STR$(NR):GOSUB 594:LOCATE 5,1:FOR X=1 TO NG:PRINT S$(6,X,0):NEXT X:GOSUB 114:GOSUB 102:RETURN
1440 GOSUB 147:T4=X:IF T4=B(12) OR G$(T4,0)="NEW" THEN RETURN
1441 M$="Do you want to delete the address book from your disk named "+G$(X,0)
1442 GOSUB 143:IF B(8)<>-1 THEN RETURN ELSE M$="Do you really want to delete?"
1444 GOSUB 143:IF B(8)<>-1 THEN RETURN
1445 KILL G$(T4,0)+".DAT":FOR T=T4 TO NG:FOR T1=0 TO 2:G$(T,T1)=G$(T+1,T1)
1446 NEXT:S$(6,T,0)=S$(6,T+1,0):NEXT:NG=NG-1:S$(6,0,0)=STR$(NG):GOSUB 600:RETURN
1450 GOSUB 700:RETURN
1460 GOSUB 713:RETURN
1470 MN=1:RETURN
1500 REM SET,OFF,QUT
1504 ON MC GOSUB 1510,1520,1530:RETURN
1510 GOSUB 420:GOSUB 440:RETURN
1520 T%(12)=0:T$(1)="":GOSUB 440:RETURN
1530 MN=1:GOSUB 102:RETURN
1600 REM CAL,DIA,BYT,CON,UTI,QUI
1604 ON MC GOSUB 1610,1620,1630,1640,1650,1660,1670:RETURN
1610 GOSUB 720:RETURN
1620 GOSUB 172:RETURN
1630 GOSUB 280:GOSUB 281:LOCATE 2,1:PRINT "You have ";FRE(0);" bytes free. Do you want to refresh the memory?":GOSUB 145:IF B(8)<>-1 THEN RETURN
1631 M$="Please wait 5 minutes, clearing memory":GOSUB 120:T=FRE("")
1632 BEEP:GOSUB 114:RETURN
1640 GOSUB 570:GOSUB 112:RUN "CONFIG"
1650 GOSUB 172:RETURN
1660 GOSUB 850:RETURN
1670 MN=1:RETURN
1700 REM PHO,DAT,COM,CUS,LAB,DES,MEN
1704 ON MC GOSUB 1710,1720,1730,1740,1750,1760,1770,1780:CLOSE #1:RETURN
1710 REM
1720 REM
1730 RN=MC:GOSUB 460:RETURN
1740 MN=10:RETURN
1750 RN=5:GOSUB 460:RETURN
1760 M$="Which custom report do you want to design (1, 2, or 3)":GOSUB 130
1761 RN=VAL(Q$)+5:IF RN<6 OR RN>8 THEN BEEP:GOTO 1760
1762 M$="Enter a short name for the report (8 characters or less)":GOSUB 130
1763 IF LEN(Q$)>8 THEN BEEP:GOTO 1762 ELSE M$(10,RN-5,0)=Q$
1764 M$="Enter a description of report":GOSUB 130:M$(10,RN-5,1)=Q$
1765 GOSUB 620:RETURN
1770 GOSUB 650:RETURN
1780 MN=1:RETURN
1800 REM CHA,ELA,TOD,HAN
1804 ON MC GOSUB 1810,1820,1830,1840:RETURN
1810 SN=4:GOSUB 25:RETURN
1820 GOSUB 418:RETURN
1830 GOSUB 490:SN=4:GOSUB 24:RETURN
1840 GOSUB 413:M$="Comment for phone log":GOSUB 130
1842 OPEN "PHONE.LOG" FOR APPEND AS #1
1844 WRITE #1,D$(RC,1),D$(RC,2),D$(RC,3),D$(RC,8),T$(4),T$(3),STR$(T1),Q$:CLOSE #1
1848 M$="You were talking for "+STR$(T1)+" minutes and "+STR$(T2)+" seconds":GOSUB 22:MN=2:RETURN
1900 REM mus,ran,lin,cir,coo,ska,yan,men
1904 ON MC GOSUB 1910,1920,1930,1940,1950,1960,1970,1980:RETURN
1910 GOSUB 10100:RETURN
1920 GOSUB 10200:RETURN
1930 IF B(28) THEN GOSUB 10300:RETURN ELSE RETURN
1940 IF B(28) THEN GOSUB 10400:RETURN ELSE RETURN
1950 GOSUB 10500:RETURN
1960 GOSUB 10600:GOSUB 102:RETURN
1970 GOSUB 10700:RETURN
1980 MN=1:RETURN
2000 REM cu1,cu2,cu3,spe,men
2002 ON MC GOSUB 2010,2020,2030,2040,2050:CLOSE #1:RETURN
2010 REM
2020 REM
2030 RN=MC+5:GOSUB 460:RETURN
2040 RN=4:GOSUB 620:GOSUB 102:GOSUB 460:RETURN
2050 MN=7:RETURN
10100 REM piano
10101 CT$=CHR$(1)+CHR$(2)+CHR$(3)+CHR$(4)+CHR$(5)+CHR$(6)+CHR$(7):GOSUB 102:M$="Press the ESC key to return to the menu":GOSUB 120
10102 LOCATE 6,1:PRINT "Musical Keyboard Piano";:LOCATE 10,5:PRINT "Press the keys 'c,d,e,f,g,a,b' to play notes";:LOCATE 13,5:PRINT "Use the SHIFT and CTRL keys to raise a note to higher octave";
10103 GOSUB 70:IF R=K(1) THEN GOSUB 102:RETURN
10104 PLAY "O1L8":X=INSTR("abcdefgABCDEFG"+CT$,R$):IF X=0 THEN 10103 ELSE IF X>7 THEN PLAY "O2":IF X>14 THEN PLAY "O3"
10105 PLAY MID$("abcdefgabcdefgabcdefg",X,1):GOTO 10103
10200 UB=RND*5000:DR=RND*5:WHILE INKEY$="":SOUND RND*UB+40,DR:WEND:RETURN
10300 SCREEN 2,0,0:LINE (RND*640,RND*200)-(RND*640,RND*200)
10304 R$=INKEY$:IF R$<>"" THEN SCREEN 0,0,0:GOSUB 102:RETURN
10306 LINE -(RND*640,RND*200):GOTO 10304
10400 GOSUB 10830:RETURN
10500 CLS:FOR X=400 TO 10 STEP -6:LOCATE RND*23+1,RND*70+1,1,0,31:SOUND 600-X,1
10504 PRINT "COOKIE!";:FOR P=1 TO X/3:NEXT:NEXT:FOR P=1 TO 3000:NEXT:CLS:RETURN
10600 GOSUB 102:LOCATE 10,5:PRINT "Before enlightenment, chop wood and draw water.";:LOCATE 13,10
10602 PRINT "After enlightenment, chop wood and draw water.";:GOSUB 114:RETURN
10700 PLAY "o2ccdeced2ccdec3o1bo2ccdefedco1bgabo2cc":RETURN
10830 CLS:SCREEN 1:FOR S=0 TO 319 STEP 4:LINE (S,0)-(0,199-S):LINE (S,199)-(0,S)
10833 LINE (319-S,0)-(319,199-S):LINE (319-S,199)-(319,S):NEXT
10834 LOCATE 10,14:PRINT "Keep in Touch";:FOR P=1 TO 2000:NEXT
10840 SCREEN 0:WIDTH 80:GOSUB 102:RETURN
40000 RETURN
60000 KEY OFF:GOSUB 112:ON ERROR GOTO 690:FF$=CHR$(12)
60008 GOSUB 750:IF CU$(8)<>"1" THEN LS$=CU$(8)+",,"+CU$(9)
60010 B(14)=0.1:IF B(27) THEN OPEN CU$(5) FOR OUTPUT AS #1:PRINT #1,"AT Z":CLOSE #1
60105 GOSUB 61000:T$(4)=MID$(DATE$,1,2)+"/"+MID$(DATE$,4,2)+"/"+MID$(DATE$,9,2)
60106 MC=1:MN=1:GOSUB 400:GOSUB 406:T$(0)=T$(3):T%(5)=T%(0):T%(6)=T%(1)
60201 T3=0:T1=5:T2=1:FOR X=1 TO 40:FOR T%=0 TO 2
60202 S$(T%,X,1)=STR$(T1):S$(T%,X,2)=STR$(T2):NEXT:T3=T3+1:T2=40:IF T3=2 THEN T3=0:T1=T1+1:T2=1
60206 NEXT
60209 IF INKEY$<>"" THEN T$=INKEY$:GOTO 60209
60210 GOSUB 590:GOSUB 147:GOSUB 150:GOTO 900
61000 DATA 1,12,2,12,3,37,8,12,999,999,2,12,3,40,9,8,10,8,999,999
61008 DATA 2,12,3,23,16,40,999,999,999,999:FOR RN=1 TO 3:FOR X=1 TO 5
61032 FOR T=0 TO 1:READ R%(RN,X,T):NEXT:NEXT:NEXT
62000 DATA 40,40,40,15,16,3,20,16:FOR X=0 TO 7:READ S$(X,0,0):NEXT
62102 SN=3:FOR T1=1 TO 15:S$(SN,T1,1)=STR$(T1+8):S$(SN,T1,2)="11"
62104 S$(SN,T1,0)=SPACE$(1):NEXT
62204 SN=4:DATA First,8,22,Last,8,38,Company,9,22,Street,11,22,City,12,22
62206 DATA State,12,43,Zip,12,48,Phone,13,22,Last Met,15,22,Last Call,15,50
62208 DATA 1,17,22,2,18,22,3,19,22,4,20,22,5,21,22,6,22,22
62212 FOR T1=1 TO 16:FOR T2=0 TO 2:READ S$(SN,T1,T2):NEXT:NEXT
62302 SN=5:DATA Yes,3,1,No,3,8,Cancel,3,14
62312 FOR T1=1 TO 3:FOR T2=0 TO 2:READ S$(SN,T1,T2):NEXT:NEXT
62404 SN=6:FOR T1=1 TO 20:S$(SN,T1,1)=STR$(T1+4):S$(SN,T1,2)="1":NEXT T1
62804 DATA Last Met,15,8,Last Call,15,38,1,17,8,2,18,8
62806 DATA 3,19,8,4,20,8,5,21,8,6,22,8
62808 FOR T1=9 TO 16:FOR T2=0 TO 2:READ CL$(T1,T2):NEXT:NEXT
62810 FOR T1=1 TO 8:CL$(T1,0)=S$(4,T1,0):NEXT:GOSUB 170
62850 SN=7:FOR X=1 TO 16:S$(SN,X,0)=CL$(X,0):S$(SN,X,1)=STR$(X+5)
62852 S$(SN,X,2)=STR$(15):NEXT
63900 OPEN "MENU.KIT" FOR INPUT AS #1
63920 FOR T1=1 TO 13:FOR T2=1 TO 10:FOR T3=0 TO 1:INPUT #1,M$(T1,T2,T3):NEXT
63930 IF M$(T1,T2,0)="X" THEN M$(T1,0,0)=STR$(T2-1):GOTO 63950
63940 NEXT
63950 IF M$(T1,T2,1)="X" THEN 63960
63955 NEXT T1
63960 FOR T1=1 TO 10:INPUT #1,M$(T1,0,1):NEXT:CLOSE #1:RETURN

KIT.DOC

                                     





                               Keep in Touch




                    Copyright (C) 1986 Gnossos Software
                            All Rights Reserved







                          User Manual Version 0.1
                              by Steve Kantor








                             Gnossos Software
                             1616 15th St. NW
                           Washington, DC 20009
                              202-387-0858
..page
..pgno2
..foot62CPage ##
                    Customer Support and Update Policy


    Keep in Touch is a tool for personal networking of people and
organizations.  Personal networking is maintaining contact with a variety
of people and organizations and sharing and distributing information,
products, services, and ideas.

    Gnossos Software is developing Keep in Touch with long-range plans that
will be of greatest benefit to early users of the program.  We will provide
improvements and support.  But we need your help.  It is important that you
write or call if you have any problems with the program or you can not
understand a command in the manual. Similarly, we know that everyone and
every industry has unique needs.  If you have any idea on how to improve
the program or an idea of a new function you would like to see, please
write or call. You may be pleasantly surprised at how quickly your
suggestion may be implemented and sent to you.

    If you have an error message while using the program, please write down
the error number and the line number of the error as well as a short
description of what you were doing.  Send it to us or call and we will
quickly send you a reply and a solution or an updated disk.

    Keep in Touch will continue to grow in capabilities, become even easier
to use, and faster.  Good software is spread by word-of-mouth.  If you like
Keep in Touch, please tell your friends using PCs about the program and
give them a demonstration.  Your investment will grow in value as more and
more people have the program.  We will convert Keep in Touch to other
hardware as demand warrants, and by the time we all have personal briefcase
computers in the late 1980s, Keep in Touch will be a key program built into
the computer.

    Most of all, enjoy personal networking.  Gnossos lives to connect
people and information.  We strive to connect people to people and people
to information. But remember, "the passing of more messages does not imply
better communication."  Be selective, and sit down tonight to handwrite a
letter on good parchment to an old friend.

Keep in Touch!

Steve Kantor


..page
                     Setting up your program and disk

    To use the Keep in Touch program you should create a backup copy of the
program by formatting a blank disk and then using the DISKCOPY command in
DOS to copy the disk onto your backup.  You are authorized to make only 1
backup copy.  If you have troubles, send us the disk and $10 and we will
send you a fresh Keep in Touch disk.

    To start the program when the computer is turned off, place the Keep in
Touch disk in disk drive A and turn on the computer.  Enter the correct
date and time and Keep in Touch will automatically begin.  To start the
program when the computer is already turned on and you are in DOS, place
the disk in the computer and type KIT.  The most important command to
learn of any software is how to stop it, to end Keep in Touch, chose
the Quit command at the far right of the main menu.  When you are finished
using the program and the DOS prompt returns, you can turn off the computer
and remove the disk.

                     Running the Demonstration program

    To run the demonstration program, place the disk in the computer and
type DEMO. You will be asked to press RETURN when you are ready and a
totally self-running demonstration of Keep in Touch will start.  The
demonstration lasts about 10 minutes and will run through almost all of the
Keep in Touch commands. It is a good idea to watch the demo before doing
anything, after gazing at the manual, and again after using the program a
few times.  Be sure not to delete the JAPAN example address book.
    Feel free to make copies of the DEMO program and data files and give
them to friends and associates.

                 Using Keep in Touch on a hard disk system

    Keep in Touch is not copy-protected because we trust our customers and
users, and because we want you to get the most out of your investment.
Many people have unique configurations of hardware, peripherals and
software, and copy-protected software prevents you from utilizes your
system to its fullest.

    You can easily transfer Keep in Touch to use on one hard disk system on
which the program is licensed for use.  If you have more than one
system, you must either purchase another copy, or more likely, contact
Gnossos Software to discuss site licensing agreements.  You should create a
directory on the C drive by typing 
                          MKDIR C:/KIT  
You should then copy the disk onto the hard disk drive by putting the Keep
in Touch disk in drive A and typing 
                          COPY A:*.* C:/KIT/*.*
To start the program type
                          C:
                          CD \KIT
                          KIT
..page
                                 CONCEPTS


Address Books and Contacts

    You want to keep in touch with 'Contacts' which are people and
organizations. Some of your contacts may be clients, some may be suppliers,
some may be associates, some may be friends.  Usually, we have an  address
book or rolodex or pile of business cards on our desk or in our drawers.
Keep in Touch gathers contacts into 'Address Books.'  Keep in Touch
provides up to 20 address books on your disk and each  address book
contains up to 120 contacts.  When you are using Keep in Touch, one address
book is open at a time.  When you are finished using the address book and
end the program, the updated address book is saved on your disk. Every
address book can be given a name of 1 to 8 characters which is used as a
filename on the disk, and a description of 40 characters so you know what
is in each address book can be added.
    Each contact has a card in the address book. Each card has the
contact's first and last name, company, street address, city, state, zip
code, phone number, the last date you met the contact, the last date you
called the contact, and six (6) other fields of information for general
comments or specific information.  When you run the DEMO program you will
get an idea of these cards and the fields of information.



Special Keys on your Keyboard

    Keep in Touch uses certain keys for certain functions.  You should
acquaint yourself with the keys used by reading this section.

    Direction keys are the keys on the numeric keypad on the right side of
the computer.  The UP, DOWN, LEFT, RIGHT, HOME, END, PGUP, and PGDN keys
are all used in the program.  HOME will always bring you to the first
choice in a menu, or the first field in a contact card, or the first item
in your To Do list.  The END key will bring you to the last item in all of
those same areas.  The PGUP and PGDN keys are used to flip through your
address book from the first 40 contacts to the next 40 and the last 40.
PGDN brings you to the next 40 and PGUP works backward by 40 people at a
time. The UP, DOWN, LEFT, and RIGHT keys are used to point in menus and in
data-entry screens.

    The RETURN key is used to select a menu choice that you are pointing
to.  It is also used to complete any entry of data.  If you type in the
name of a person, you must end the entry with a RETURN key which will move
you forward to the next field of your contact card.

    The DEL key is used to delete any field you are pointing to in a
data-entry section.  The INS key is only used in the To Do list to make
room for a new item in your list and move down all the other items one
notch in priority.  The CTRL D key is used in the contact card section to
enter today's date in a date field.

    The BACKSPACE key is used to correct mistakes when you are entering
data.

    The ESC key is used to complete adding a new card, editing a card,
editing the To Do list, and, in general, to complete any work on data below
the dividing line and return to the menu at the top.  The ESC key also
works to back up a menu at a time.


Menus

    Keep in Touch uses a menu structure very similar to Lotus 1-2-3 and
other programs.  Thus, if you are a user of Lotus 1-2-3, Keep in Touch will
appear very familiar to you.  We want to make life as easy as possible for
you so we designed the software to use terms that may be familiar to you.

    You make Keep in Touch do things by choosing commands from menus.  A
menu is a list of commands at the top of your screen.  For example:  

People Clock Reports ToDo Database Games Other Quit

You select a command from a menu by pointing to it using the direction keys
and pressing the RETURN key to select it.  You use the direction keys to
highlight a menu command and press RETURN to select the command. Remember
that the HOME and END keys jump to the first and last menu commands. The
RIGHT key moves one menu choice to the right, and the LEFT key moves one
choice to the left.  If you are familiar with the program, you can also
press the first letter of a command instead of pointing to it and selecting
it. So, if the command is Next to flip to the next contact card, you can
just press the letter 'N.' If a menu has more than one command with the
same first letter, the first command in the menu will be selected.

    A another type of menu is the menu of People showing 40 people or
companies on the screen at once.  You can also use the UP and DOWN keys to
point to your choice when using this menu.
..page
                                  MENUS AND COMMANDS

Opening Address Books

    When the program starts, you are given a list of your address books on
the disk. To open an existing address book, use the direction keys and
press RETURN to select it, then wait while the contacts are read from the
disk.  When you select NEW to create a new book you will be asked to give a
short 1-8 character name and a one line description.  The 1-8 character
name you give the address book will be the filename that will be stored on
your disk.  For example, if you give the name CLIENTS, the file will be
called CLIENTS.DAT on your disk.  You will also be asked if you want to
reserve more room for DETAIL.  DETAIL takes up more memory and reserves an
extra 10 lines of comments for every contact.  In most cases, you will not
want to use the DETAIL feature.  Try experimenting.

Main menu

    Here is a quick synopsis of the main menu and the functions of the
commands:

1. People, Examine information on your contacts and clients.
2. Clock, Check the time and use the alarm clock.
3. Reports, Create reports from your information on people
4. ToDo, Maintain Things-To-Do list
5. Database, Save your address books, extract files for data transfer.
6. Games, Games visual relaxation and amusement.
7. Other, Organize contacts, calculator, change headings, etc.
8. Quit, Quit the Keep in Touch program


    The commands are organized numerically by the numbers 1-8.  Under each
number may be more menus with a structure 1.1 1.2 1.3, etc.  Use the table
of contents to help you find the correct section of the manual, and consult
the command reference page in the back of the manual.


1. People,Examine information on your contacts and clients

    People allows you to look at the people in your  address book. You can
add new people, flip through the contact cards in your book, delete people
from the book, call up people using the automatic-dialer, and edit or
change information on any of your contacts.

People Menu

    When you choose People from the main menu, you will see a list of the
first 40 of your contacts in your  address book by name or company.  You
can use the direction keys to point to the contact you want and press
RETURN to pull out their card.  You can use the PGUP and PGDN keys to skip
to the next 40 contacts or back to the first 40.  You can have up to 120
contacts per  address book.  When you select a contact, the contact's card
will be displayed on the screen and you can then do the following:

1.1 Edit,Edit and change information on contact's card

    Edit allows you to edit or change any of the information on the card
for a contact.  To change a field of data you should point to the field by
using the direction keys, then type in the new data, and end your entry
with the RETURN key. Remember to always end any data entry with the RETURN
key.  You can delete a field by pointing to it and pressing the DEL key.
If you want to enter today's date in a date field, point to it and press
CTRL D (Control D).  Dates must be entered with leading zeros and slashes,
for example 03/17/60, 12/08/84, and 09/01/85 are all correct.  If you are
typing and make a mistake you can use the BACKSPACE key, but not the left
arrow key.  NOTE: IF YOU MAKE A MISTAKE ON THE FIRST LETTER OF AN ENTRY YOU
MUST PRESS RETURN AND THEN LEFT ARROW AND ENTER THE DATA AGAIN!
    If you have DETAIL for the address book, when editing press PGDN and
the detail card of 10 lines of notes will appear.  When you are through
looking at the DETAIL, press ESC and you will return to the menu.
    When you are finished editing a contact card press the ESC key to
return to the menu.

1.2 Call,Call your contact on the phone using automatic dialer

    Call allows you to use a Hayes 1200 modem to hook your telephone to the
modem and use Keep in Touch as an autodialer.  Keep in Touch even puts in
your MCI or SPRINT number if you have one.  To use the autodialer you must
contact Gnossos Software so we can send you a new disk with a new version.

1.2.1 Change,Change the information on your contact 

    Change allows you to change or edit the information on your contact
just like Edit on the People menu.

1.2.2 Elapsed,Display the clock for elapsed time of call 

    Elapsed will show a ticking clock of the elapsed time that you have
been speaking.  Press any key to return to the menu.


1.2.3 To Do,Show Things-To-Do list 

    To Do allows you to change your To Do list while you are on the phone
with somebody.

1.2.4 Hangup,Hang up the telephone connection and show elapsed time 

    Hangup should be chosen when you have ended the conversation.  You will
be asked to enter a short description of the conversation and a note of the
call will be written on your Phone Log.  Keep in Touch then tells you how
long the call lasted.

1.3 Next,Turn to next contact card

    Next flips to the next contact card in your  address book.

1.4 Previous,Turn to previous contact card

    Previous flips to the previous contact card in your  address book.

1.5 Add,Add a new contact card to your file

    Add allows you to add a new person to your  address book.  You are
given a blank screen with the data headings at the far left and you should
enter the data for the new person.  When you are finished, press the ESC
key and you will see the new contact card appear.  When you return to the
list of all your contacts you will see the new person added at the end.

1.6 Find,Find a contact by name or company

    A new quick way to pull out a contact card on any contact based upon
their name or company.  The choice is under the People menu.  You are asked
to enter part of the name or company, you must use the proper case, upper
and lower case.  If you have a contact named Kennedy, you could type in
'Ken' and the contact would pop up.  Or, if a company was 'The Orkand
Group' you could type in 'Ork' and it would find the contact. If it is
not the contact you want, respond with No when asked and Keep in Touch
will flip to the next contact it 'finds.'  Try it, you'll like it!

1.7 Other,Flipping cards, deleting contact, selecting contacts, etc.

    Other brings up a second menu to delete contacts and flip through your
address book.


1.7.1 First,Turn to the first contact

    First flips to the first contact in your  address book.

1.7.2 Last,Turn to the last contact

    Last flips to the last contact in your address book.

1.7.3 Delete,Delete this contact from your file

    Delete allows you to delete a contact from your address book. This is
the same as erasing someone from your address book. The card will appear as
<DELETED> on the screen and will not be totally removed until you save your
address book.

1.7.4 Select,Select a group of contacts

    Select will do a global search for any character string in any contact.
The search will look on both the contact card and detail card if the
address book has detail.  You enter the word or characters to search for
and the contact card will be displayed.  You can then flip to the next
contact.

1.7.5 Print, Print the contact's information on the printer

    Print will print the address information, special data, and any detail
on a contact on the printer.  You are then asked if you want to advance the
printer to the next page.

1.7.6 Organize, Organize contacts by company or names

    If you want to organize the address book by company, then answer Yes.
If you want it organized by Names answer No.

1.7.7 Headings,Customize contacts information for your needs

    Headings allows you to change the contact card headings to customize an
address book for your specific needs.  The last 6 fields at the bottom of
each card can be customized for your needs.  This means that one address
book may have different headings from another.  To change the headings,
edit the headings as you wish.  The only rule is that the headings must be
less than 12 characters long.  The headings on the left are the OLD version
and the ones on the right, that you will edit, are the NEW headings.  When
you are through changing them, press the ESC key to return to the menu.

1.7.8 Contacts, Return to the contacts menu

1.8 Menu,Return to a list of all contacts



2. Clock,Check the time and use alarm clock

    Clock tells you what the time is, the current date, and what time you
started using the program.  You can also set the alarm clock to ring at a
certain time to remind you of a meeting.  The time you started using the
program is displayed so you can see how long you have been using the
computer and 'keeping in touch'.

2.1 Alarm,Set the alarm clock and turn the alarm clock on

    Alarm allows you to set the alarm clock to go off at a certain time.
You can set the alarm by entering the time in the DOS format of a 24 hour
clock.  That is, 6 AM would be 6:00, 2:34 PM would be 14:34, and so forth.

2.2 Off,Turn OFF the alarm clock

    Off allows you to turn off the alarm clock so it does not ring at the
designated time.
..page
3. Reports,Create reports from your information on people

    Reports allows you to create reports on people in your  address book
such as phonelists, reports of when you last met or called the people, and
other custom reports.  The reports can also be a selected group of people.
That is, if you want a report of only a subset or selected group of people,
you could select only those people who are in California, and create a
report of that selected group.
    Please note that you may send any report to the printer for a hard
copy. If you have selected a group of people to report, after you are asked
about sending the report to the printer, you will be asked if you only want
to report that certain group.  If you answer NO you will get a report of
everybody.  If you answer YES you will get a report of only that selected
group of your address book that you requested by the Select choice.

3.1 Phonelist,Print a phonelist report 

    Phonelist creates a phonelist report of the first and last name,
company, and phone number of your contacts.  Like all reports, you can do
this for the address book you are working with, or a selected group of the
address book.

3.2 Dates,Print a report of dates 

    Dates creates a report of the last name, company, and last dates you
met and called the contact.

3.3 Remarks,Print a report of remarks and comments on contacts 

    Remarks creates a report of the name, company, and the remarks in the
last field of the contact card.

3.4 Custom,Print one of your custom reports or a special report 

    Custom brings up the custom reports menu which is used to write custom
reports or special one-time reports.
    Custom reports menu provides 3 custom reports which you design on the
reports menu for each address book. To design a report, you want to
chose Design from the reports menu.  You can then chose any of the three
reports.

3.4.4 Special,Create a unique one-time report 

    Special allows you to create a special one-time report using the same
procedure described earlier in the Reports menu under Design.

3.4.5 Reports,Return to reports menu

    Reports returns you to the reports menu.


3.5 Labels,Mailing labels using Avery Tabulabel 4146 4" format 

    Labels is used to produce mailing labels on your printer.  You should
only choose this if you have the printer ready.  The labels are designed
for 4" format similar to Avery model #4146.

3.6 Design,Design custom reports

    Design allows you to design custom reports specific to your address
book. You can have a total of 3 custom reports for each address book. A
custom report consists of a columnar report of from 1 to 10 columns.  You
choose which fields of your cards are in the report, and which order they
should be in.  You enter the numbers 1 to 10 (but only as high as you want)
in whatever fields you want. For example, if you want a report of the
following information:

LAST NAME       LAST MET          PHONE         STATE

    you should enter the number 1 in the last name field, 2 in the last met
field, 3 in the phone field, and 4 in the state field.  When you are
finished press the ESC key.  You can then choose Custom and you will see
your report listed and ready to go.
    The custom reports that you create are saved with your address book
when you save it.  So, if you design a report once, save your address book,
and come back in a week, the same report is all ready to go, you only have
to design it once.

3.7 Select,Select a subset group of contacts to report 

    Select allows you to select a certain group of contacts from your
address book for your reports or mailing labels.  For example, if you wish
to only report those contacts who live in California you would enter CA in
the state field you are searching on.  If you want to find those people who
are in a certain city, you would enter the city in the city field.  You are
shown a blank contact card.  Point to the field you are searching for,
enter the information you want to match, press RETURN, and then press ESC.
The WAIT signal will flash as Keep in Touch selects that group of people
from your address book and tells you how many contacts were selected.  When
the menu reappears, you can write reports for only those contacts you
selected.

4. To Do,Maintain Things-To-Do list

    To Do allows you to keep a 'Things To Do' list on your Keep in Touch
desk which you can refer to at anytime.  The list is 15 items and you can
add or delete items from the list whenever you want. Your list is saved
when you finish using the program by choosing the Quit menu choice (see
#8).  Remember that you can use the INS and DEL keys. When you complete an
item, and press DEL when pointing to it, Keep in Touch will add the
information to a log file called TODO.LOG which lists the date and time and
task you completed.
..page
5. Database,Save your files, switch files, and delete files from your data
disk

    Database allows you to save your  address book, open a new address
book, show you a list of all the  address books on your disk, and delete an
address book from your disk.  Also, you can extract a group of people to a
file that you can use with word-processors and database programs if you are
a real sharp hacker/programmer/philosopher! This aspect makes Keep in Touch
a modifiable and programmable tool for integration with your other software
and information.

5.1 Save,Save your Address Book on your disk 

    Save allows you to save any additions or changes you made to your
address book on the disk.  Although this is also done when you finish
using the program, you should do this every 30 minutes or so just in case
the power fails or lightening sizzles your silicon chips.

5.2 Change,Save your current Address Book and open a different one

    Change allows you to close the address book you are currently looking
at and open a different address book .  First, your current address book is
saved on the disk and then you are shown your list of address books. This
is used when you are working with one address book and you want to change
to another.  

5.3 List,List all of your Address Books on this disk 

    List shows you a list of all of your address books on your disk and how
many people you have in each address book.

5.4 Delete,Delete an entire Address Book from your disk - Careful!

    Delete is used to delete or remove an entire address book from your
disk forever. Forever is a very long time so make sure that you are
completely sure that you do not want to use that address book ever again.

5.5 Extract,Extract a group of contacts to transfer to another program

    Extract allows you to transfer data from your address book to a disk
file that can be used by other programs such as Lotus 1-2-3, RBase 4000,
DBase, Wordstar, Volkswriter, and many others.  You can either extract all
of your contacts or just a selected group.  You must give a name for the
disk file such as TRANSFER.  The file will then be named TRANSFER.PRN on
the disk.  If you wish, you can also preface the filename with a disk drive
name, e.g. B:TRANSFER.  See the Appendix on Data Transfer for further
instructions.

5.6 Transfer

    A Transfer command under the Database menu allows you to merge old
address books from old disks onto your working Keep in Touch disk.  First,
in DOS copy your address file, such as JAPAN.DAT, onto your working disk.
Choose Transfer and enter the name, such as JAPAN.  Then enter a
description.  The program will read the new address book and update your
list of address books.
..page
6. Games,Games, visual relaxation and amusement

    Games allows you to relax and enjoy keeping in touch by seeing a little
of what your computer can do.  You can play a musical piano or hear random
notes. If you have a graphics card you can see random pictures. You can
even hear Yankee Doodle Dandy!
    Everybody needs some relaxation and diversions during work, and Keep in
Touch gives you some fun while you are using the program.  If you are a
very straight-laced Type A, then just ignore this section and never ever
chose Games.  But if you are a fun-loving artistic type then enjoy.  But
don't linger here too long, you should be sure to keep in touch with
people.

6.1 Piano,Play the musical keyboard like a piano 

    Piano gives you a high octave of notes to play.  Press the keys
a,b,c,d,e,f, or g to play those notes.  You can choose higher octaves by
using the SHIFT and CTRL keys in conunction with the letters
'a,b,c,d,e,f,g.'  When you are finished being a modern day Beethoven press
the ESC key.

6.2 Notes,Play random tones at random intervals and enjoy 

6.3 Lines,Random lines a la Jackson Pollack 

6.4 Circle,Random circles across the heavens 

6.5 Tricky,Cookie monster game 

    Tricky is a ridiculous 'game' which demands Cookies! all over the
screen at a loud pitch.  Don't worry, it will end soon.  If you can figure
out what this is all about, or the historic origins of such mania, please
tell us.

6.6 Quote,Marty Schwimmer's favorite quotation 

6.7 Yankee,Yankee Doodle Dandy 
..page
7. Other, Calculator, dialing, memory, configuration

    Other brings up a group of menu choices for specific topics.

7.1 Calc,Use the built-in calculator 

    Keep in Touch now has a simple four-function calculator.  You may add,
subtract, multiply, and divide.  The proper symbols are +, -, *, and /. The
Calc choice is under the Other menu choice from the main menu.  You are
asked to enter a formula, such as 23+45*.654.  Do not put any blank spaces
in the formula.  You can use the backspace to correct mistakes.  Press
RETURN when you have finished typing the formula and you'll see
calculations and the total.  You can transfer the total to any contact
card.  When you are editing a contact card, if you press CTRL C (Control
C), the last total will be entered in that field.  This is similar to CTRL
D for Date.

7.2 Dialing,Special dialing services, information, weather, time

    Dialing will be implemented in a future version

7.3 Bytes,Check the amount of memory that is available for contacts 

    Bytes tells you how many bytes (characters) of memory you have left in
the program for your address book. If the number is less than 2000 or so,
you should probably ask to clear the program's memory.  Clearing the memory
makes more room for your data and takes about 3 minutes, so go get a snack.

7.4 Configure, Switch to the Configuration program

    Configure will start the Keep in Touch configuration program that
allows you to customize the program for different monitors, printers, and
PCs, as well as set up the autodialer if you have a modem.  Remember to
save your address book before you switch to the Configuration program.
    To use the configuration program, choose an area and then point to the
configuration that fits your system and press RETURN.  After you customize
your system, choose Save on the main menu.  Then when you Quit the
Configuration program, Keep in Touch will automatically start again.

7.5 Utility,Switch from Keep in Touch to Utility programs 

    Utility will switch to the other programs that Keep in Touch will have
in the future; such as, a Tutorial program, a Utility program to transfer
data and combine address books, and a Configure program to customize the
program for your equipment.

7.6 Sort, Sort the address book by name or company

    You can organize your address book by last name or company through the
People Other Organize command.  When you choose Sort, the address book is
sorted.  This may take a minute or two, the PC will beep when the sort is
complete.  You can then save your address book.

7.7 Credits, Credits of author and where to write for advice

    This will list the address for updates, questions, bugs, and
suggestions.


8. Quit,Quit Keep in Touch program

    Quit allows you to finish Keep in Touch, save your To Do list, and save
your address book. When you choose Quit, you will see the DOS prompt and
you can then turn off your computer or start another program.
..page
                            Appendix D  --  Data Transfer

    Keep in Touch allows data transfer using the Database Extract command
so you can use Keep in Touch data in Lotus 1-2-3, RBase 4000, Volkswriter,
Wordstar, BASIC language, and other programs.  By using this feature, you
can easily create form-letters, large relational contact databases,
spreadsheets, etc.
    The extract file is stored with the extension .PRN.  Each file is ASCII
text, one row per contact, with 16 fields per row.  The field order is
firstname, lastname, company, street, city, state, zip, phone, last met,
last call, custom1, custom2, custom3, custom4, custom5, custom6.
    The files are stored using the WRITE command, so the data is enclosed
in quotes and separated by commas.  Each record has 16 fields and each
record ends with a carriage return.

Lotus 1-2-3

    The file is stored as a text file with the extension .PRN.  Enter the
Lotus program.  To import the Keep in Touch extract file TRANSFER.PRN, use
the following commands:

    /File Import Numbers
      and then point to TRANSFER and press RETURN.

Volkswriter

    The file is perfectly configured for Text Merge files for performing
mail merge of form letters and labels.  Create a letter with the following
information:

-------------------------------------------------------------------------
..file\first\last\company\street\city\state\zip\phone\met\call\f1\f2\f3\f4\
f5\f6

\first \last
\company
\street
\city, \state    \zip

Dear \first,

    Thank you for your interest in our product.  I plan to be visiting
\city soon and I wonder if I could meet with you.  I am sure that \company
would benefit greatly from our new product line.

--------------------------------------------------------------------------

Wordstar

    Wordstar is very similar to Volkswriter.  Consult the Mail-Merge manual
for detailed instructions.


RBase 4000

    Keep in Touch extract files can be loaded into RBase databases for
various purposes.  First, define a database in RBase using a relation which
has a structure of 16 attributes/fields in the same order as used in Keep
in Touch (or different if you are really fancy with RBase).  Then, you
can load the data from the file into the empty RBase database.  Thus,
Keep in Touch provides an easily upgradeable link to full relational
databases.  This is especially useful in various offices wish to
consolidate individual Keep in Touch address books into a large
relational database.  For example:

DEFINE KITDB
ATTRIBUTES
FIRST TEXT 10
LAST TEXT 15
COMPANY TEXT 40
STREET TEXT 40
CITY TEXT 20
STATE TEXT 2
ZIP TEXT 9
PHONE TEXT 12
MET DATE
CALL DATE
OPEN1 TEXT 40
OPEN2 TEXT 40
OPEN3 TEXT 40
OPEN4 TEXT 40
OPEN5 TEXT 40
OPEN6 TEXT 40
RELATIONS
PEOPLE WITH FIRST LAST COMPANY STREET CITY STATE ZIP PHONE +
MET CALL OPEN1 OPEN2 OPEN3 OPEN4 OPEN5 OPEN6
END
LOAD PEOPLE FROM TRANSFER.PRN AS ASCII
SELECT ALL FROM PEOPLE

dBase II and III

    dBase II and III (hereafter dBase) are similar to RBase 4000.  First
define the structure and then load the database with the extracted Keep in
Touch file.

    Write or call if you have specific questions or if you have found any
interesting use of data transfer capabilities.


Directory of PC-SIG Library Disk #0387

 Volume in drive A has no label
 Directory of A:\

AUTOEXEC BAT        28   8-27-84   2:05a
CONFIG   BAS     13440   9-02-86   7:44p
CONFIG   KIT       768   6-04-85   5:15p
DEMO     BAS     24064  11-27-84  12:51a
DEMO     BAT       372  12-15-84   9:11p
DEMO     KIT     12288  11-27-84  12:25a
DEMOSET  BAS      1024  12-15-84   9:09p
FILES    KIT       256   3-11-85   1:00p
FILES387 TXT      2130  11-21-86  10:05a
GO       BAT       656  11-21-86  10:13a
JAPAN    DAT      8448   3-11-85   1:01p
KEYSET   BAS      2688   9-02-86   8:21p
KIT      BAS     23680   8-21-80  11:57a
KIT      BAT        28   8-27-84   2:05a
KIT      DOC     35200   9-02-86   8:36p
MENU     KIT      3584   4-17-85   8:52p
NEW      DAT       256  12-15-84   2:34a
TODO     DAT       384   9-02-86   8:32p
       18 file(s)     129294 bytes
                       26624 bytes free