home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / rainbow / msdos / misc / kit.lzh / KIT.BAS next >
BASIC Source File  |  1994-04-04  |  31KB  |  633 lines

  1. 1 REM KEEP IN TOUCH
  2. 2 REM (C) 1984 GNOSSOS SOFTWARE ALL RIGHTS RESERVED
  3. 3 REM BY STEVE KANTOR 202-387-0858
  4. 4 REM V0 - 11/10/84
  5. 5 REM last edit by Tom Karlsson 4-apr-1994 now supporting compilation...
  6. 7 DIM K(15),T%(15),B(20):B(15)=120
  7. 8 DIM M%(16),D$(B(15)+1,16),G$(20,2),B%(B(15))
  8. 9 DIM R%(9,10,1):DIM S$(7,40,2):DIM CL$(16,2):DIM M$(10,9,1)
  9. 10 DIM B$(12):DIM T$(12)
  10. 18 TOPL$=CHR$(16): BOTL$=CHR$(20): VERL$=CHR$(25)
  11. 19 KEY OFF:CLS:GOSUB 40000:GOTO 60000
  12. 20 GOSUB 102:RETURN
  13. 21 GOSUB 280:GOSUB 281:RETURN
  14. 22 GOSUB 120:GOSUB 114:RETURN
  15. 23 COLOR 0,0:GOSUB 390:PRINT S$(SN,X,0);:RETURN
  16. 24 GOSUB 102:GOSUB 124:GOSUB 110:GOSUB 530:RETURN
  17. 25 GOSUB 534:GOSUB 564:RETURN
  18. 26 GOSUB 140:GOSUB 530:RETURN
  19. 70 REM inchar
  20. 72 B(6)=0:R$=INKEY$:IF R$="" THEN 72
  21. 74 IF LEN(R$)=2 THEN R$=RIGHT$(R$,1):B(6)=-1
  22. 75 R=ASC(R$):FOR I=0 TO 15:IF R=K(I) THEN B(6)=-1
  23. 76 NEXT: RETURN
  24. 100 LOCATE 4,1:PRINT STRING$(79,TOPL$):RETURN
  25. 101 A$="MENU":GOSUB 111:RETURN
  26. 102 CLS:GOSUB 100:GOSUB 101:B(2)=0:RETURN
  27. 103 LOCATE 3,1:PRINT STRING$(79,TOPL$);:RETURN
  28. 104 REM BOX
  29. 105 COLOR 3,0:LOCATE GSV,GSH:PRINT " ";STRING$(BW-2," ");" ";
  30. 106 FOR V=GSV+1 TO GSV+BH-1:LOCATE V,GSH
  31. 107 PRINT "  ";:LOCATE V,GSH+BW-2:PRINT "  ";:NEXT
  32. 108 LOCATE GSV+BH,GSH:PRINT " ";STRING$(BW-2," ");" ";:COLOR 0,0:RETURN
  33. 110 GSV=6:GSH=5:BW=70:BH=17:GOSUB 104:RETURN
  34. 111 COLOR 0,0:LOCATE 1,74:PRINT " "A$" ";:COLOR 0,0:RETURN
  35. 112 COLOR 4,1:LOCATE 1,74:PRINT " WAIT ";:COLOR 0,0:RETURN
  36. 113 GSV=7:GSH=5:BW=70:BH=15:GOSUB 104:RETURN
  37. 114 A$="PAUSE":GOSUB 111:GOSUB 281:LOCATE 2,1:COLOR 2,0
  38. 115 PRINT "Please press any key...";:GOSUB 70:COLOR 0,0:GOSUB 101:RETURN
  39. 120 REM MESSAGE
  40. 121 GOSUB 280:LOCATE 3,1:COLOR 2,0:PRINT M$;:COLOR 0,0:RETURN
  41. 122 GOSUB 281:LOCATE 2,1:COLOR 2,0:PRINT NM$;", ";M$;:COLOR 0,0:RETURN
  42. 124 REM OUTCL
  43. 125 FOR T1=9 TO 16:LOCATE VAL(CL$(T1,1)),VAL(CL$(T1,2))
  44. 126 PRINT CL$(T1,0);":";:NEXT:RETURN
  45. 130 REM PROMPT
  46. 131 GOSUB 120:PRINT ":  ";:LOCATE ,,1,1,31:LINE INPUT;"";Q$:GOSUB 280:RETURN
  47. 133 A$="EDIT":GOSUB 111:GOSUB 21:GOSUB 160
  48. 134 LOCATE 2,1:PRINT "Use the direction keys to highlight information (UP/DOWN/LEFT/RIGHT/HOME/END)";
  49. 135 LOCATE 3,1:PRINT "Type in new information followed by RETURN.  Use DEL and INS as needed.";
  50. 136 RETURN
  51. 140 REM CLEARCARD
  52. 141 LOCATE 15,23:PRINT SPC(10);:FOR T1=8 TO 13:LOCATE T1,20:PRINT SPC(50);
  53. 142 LOCATE T1+9,22:PRINT SPC(50);:NEXT:LOCATE 15,50:PRINT SPC(10);:RETURN
  54. 143 REM YESNO
  55. 144 B(2)=0:GOSUB 122:GOSUB 280:SN=5:B(8)=0:GOSUB 300:IF T2=2 THEN 146
  56. 145 IF X=1 THEN B(8)=-1 ELSE IF X=3 THEN B(8)=2
  57. 146 RC=PC:GOSUB 21:RETURN
  58. 147 REM CHOOSEFILE
  59. 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.";
  60. 149 SN=6:GOSUB 300:IF B THEN F$="TEMP.DAT":RETURN ELSE RETURN
  61. 150 IF B THEN RETURN ELSE B(12)=X:GOSUB 281:IF G$(B(12),0)="NEW" THEN GOSUB 156:RETURN
  62. 151 F$=G$(B(12),0)+".DAT":GOSUB 500:RETURN
  63. 152 REM POINT
  64. 153 A$="POINT":GOSUB 111:LOCATE 1,1:PRINT "Press the ESC key to end pointing and return to menu";
  65. 154 M$="Use the direction keys (UP/DOWN/LEFT/RIGHT/HOME/END/PGUP/PGDN)":GOSUB 122
  66. 155 M$="Press the RETURN key to select the choice you are pointing to":GOSUB 120:RETURN
  67. 156 NG=NG+1:B(12)=NG:F$="NEW.DAT":GOSUB 500:REM NEWFILENAME
  68. 157 M$="Enter a name for your file (8 characters or less, eg. PEOPLE)":GOSUB 130
  69. 158 IF LEN(Q$)>8 THEN 157 ELSE G$(NG,0)=Q$:F$=Q$+".DAT":G$(NG,1)="1"
  70. 159 M$="Enter a description of the file":GOSUB 130:G$(NG,2)=Q$:RETURN
  71. 160 LOCATE 1,1:PRINT "Press the ESC key when you are finished to return to the menu";:RETURN
  72. 162 REM ISDATE
  73. 163 B=0:IF LEN(A$)<>8 THEN RETURN ELSE IF MID$(A$,3,1)<>"/" THEN RETURN
  74. 164 IF MID$(A$,6,1)<>"/" THEN RETURN ELSE IF VAL(MID$(A$,1,2))<1 THEN RETURN
  75. 165 IF VAL(MID$(A$,1,2))>12 THEN RETURN ELSE IF VAL(MID$(A$,4,2))<1 THEN RETURN
  76. 166 IF VAL(MID$(A$,4,2))>31 THEN RETURN ELSE IF VAL(MID$(A$,7,2))<80 THEN RETURN
  77. 167 IF VAL(MID$(A$,7,2))>99 THEN RETURN ELSE B=-1:RETURN
  78. 170 REM headfill
  79. 171 FOR X=1 TO 16:CL$(X,0)=D$(0,X):NEXT:RETURN
  80. 172 M$="To be implemented in future version...":GOSUB 22:RETURN
  81. 173 REM YN
  82. 174 T2=0:IF INSTR("Yy",R$)<>0 THEN B(8)=-1:T2=2
  83. 175 IF INSTR("Nn",R$)<>0 THEN B(8)=0:T2=2 ELSE IF INSTR("Cc",R$)<>0 THEN B(8)=2:T2=2
  84. 177 RETURN
  85. 180 REM ESCSTOP
  86. 181 LOCATE 1,1:PRINT "Press the ESC key to stop printing the report";:RETURN
  87. 200 REM MENU
  88. 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
  89. 204 FOR X=1 TO T1:LOCATE 2,1+(X-1)*10
  90. 206 PRINT M$(MN,X,0);"  ";:NEXT
  91. 208 WHILE R<>K(0):LOCATE 2,1+(MC-1)*10:COLOR 3,0:PRINT M$(MN,MC,0);
  92. 212 GOSUB 280:LOCATE 3,1:PRINT M$(MN,MC,1);
  93. 214 GOSUB 70:GOSUB 230:IF B THEN MC=T3:B=0:RETURN
  94. 216 LOCATE 2,1+(MC-1)*10:PRINT M$(MN,MC,0);
  95. 218 IF R=K(1) THEN B=1:RETURN
  96. 220 IF R=K(5) THEN MC=MC-1:IF MC=0 THEN MC=T1
  97. 222 IF R=K(4) THEN MC=MC+1:IF MC>T1 THEN MC=1
  98. 224 IF R=K(6) THEN MC=1 ELSE IF R=K(7) THEN MC=T1
  99. 226 WEND:R=-1:RETURN
  100. 230 REM
  101. 231 IF B(6) THEN RETURN
  102. 232 IF NOT ((R>=65 AND R<=90) OR (R>=97 AND R<=122)) THEN RETURN
  103. 233 IF R>90 THEN R=R-32
  104. 234 FOR T3=1 TO T1:IF R=ASC(LEFT$(M$(MN,T3,0),1)) THEN B=-1:RETURN
  105. 235 NEXT:RETURN
  106. 280 COLOR 0,0:LOCATE 3,1:PRINT SPC(78);:COLOR 0,0:RETURN
  107. 281 COLOR 0,0:LOCATE 2,1:PRINT SPC(79);:COLOR 0,0:RETURN
  108. 300 REM SCROLL MENU
  109. 302 PC=RC:B=0:T1=VAL(S$(SN,0,0)):FOR X%=1 TO T1
  110. 304 LOCATE VAL(S$(SN,X%,1)),VAL(S$(SN,X%,2)):PRINT S$(SN,X%,0);:NEXT:IF B(2) THEN RETURN
  111. 310 IF X<1 OR X>T1 THEN X=1
  112. 312 B=0:T1=VAL(S$(SN,0,0)):R=-1:WHILE R<>K(0):GOSUB 390
  113. 314 COLOR 1,0:PRINT S$(SN,X,0);:GOSUB 70:IF SN=5 THEN GOSUB 173:IF T2=2 THEN RETURN
  114. 316 GOSUB 23
  115. 317 IF R=K(1) OR R=K(13) THEN B=1:RETURN
  116. 318 IF R=K(5) OR R=K(2) THEN X=X-1
  117. 319 IF R=K(4) OR R=K(3) THEN X=X+1
  118. 320 IF R=K(10) THEN CG=CG-1:B(5)=1:RETURN
  119. 321 IF R=K(11) THEN IF NR<CG*40+40 THEN 322 ELSE CG=CG+1:B(5)=1:RETURN
  120. 322 IF R=K(6) THEN X=1 ELSE IF R=K(7) THEN X=T1
  121. 324 IF SN<3 AND R=K(2) THEN X=X-1 ELSE IF SN<3 AND R=K(3) THEN X=X+1
  122. 327 IF X>T1 THEN X=1 ELSE IF X<1 THEN X=T1
  123. 328 WEND:RC=CG*40+X:RETURN
  124. 350 REM SCRMEN
  125. 352 PC=RC:T1=VAL(S$(SN,0,0)):FOR X=1 TO T1
  126. 354 GOSUB 23:NEXT:IF B(2) THEN RETURN
  127. 360 IF X<1 OR X>T1 THEN X=1
  128. 362 GOSUB 133:PC=RC:B=0:T1=VAL(S$(SN,0,0)):R=-1:WHILE R<>K(1):GOSUB 390
  129. 364 COLOR 1,0:PRINT S$(SN,X,0);
  130. 365 COLOR 2,0:GOSUB 390:GOSUB 70:IF R=K(12) THEN S$(SN,X,0)=T$(4):GOTO 367 ELSE IF (R=K(8) OR R=K(9)) AND (SN=3 OR SN=4) AND B(6) THEN RETURN
  131. 366 IF NOT(R=K(1) OR R=K(0) OR R=K(2) OR R=K(3) OR R=K(4) OR R=K(5) OR R=K(6) OR R=K(7)) OR (B(6)=0 AND R<>13 AND R<>27) THEN 375
  132. 367 GOSUB 23
  133. 368 IF R=K(1) THEN B=1:RETURN
  134. 369 IF R=K(5) THEN X=X-1 ELSE IF R=K(2) THEN X=X-1
  135. 370 IF R=K(4) OR R=K(0) THEN X=X+1 ELSE IF R=K(3) THEN X=X+1
  136. 372 IF R=K(6) THEN X=1 ELSE IF R=K(7) THEN X=T1
  137. 374 GOTO 380
  138. 375 GOSUB 390:PRINT SPC(LEN(S$(SN,X,0)));:GOSUB 390:PRINT R$;:LINE INPUT;"";S$(SN,X,0):S$(SN,X,0)=R$+S$(SN,X,0):IF SN=4 AND (X=9 OR X=10) THEN A$=S$(SN,X,0):GOSUB 162:IF MN=6 OR MN=7 THEN 376 ELSE IF NOT B THEN PRINT CHR$(7):GOTO 365
  139. 376 GOSUB 23:X=X+1:IF X>T1 THEN X=1 ELSE IF X<1 THEN X=T1:GOTO 382
  140. 380 IF X>T1 THEN X=1 ELSE IF X<1 THEN X=T1
  141. 381 GOSUB 23
  142. 382 WEND:RC=PC:RETURN
  143. 390 LOCATE VAL(S$(SN,X,1)),VAL(S$(SN,X,2)),1,12,13:RETURN
  144. 400 REM TIM
  145. 403 T$=TIME$:T%(0)=VAL(LEFT$(T$,2)):T%(1)=VAL(MID$(T$,4,2)):T%(2)=VAL(MID$(T$,7,2))
  146. 405 T%=T%(0):IF T%(0)>12 THEN T$(2)="PM":T%=T%-12 ELSE T$(2)="AM"
  147. 406 T$(3)=STR$(T%)+":"+STR$(T%(1))+"  "+T$(2)
  148. 407 RETURN
  149. 410 REM timer
  150. 411 GOSUB 400:T%(7)=T%(0):T%(8)=T%(1):T%(9)=T%(2):RETURN
  151. 413 GOSUB 400:T1=T%(0)*60*60+T%(1)*60+T%(2)
  152. 414 T2=T%(7)*60*60+T%(8)*60+T%(9):T3=T1-T2
  153. 415 T1=INT(T3/60):T2=T3-T1*60:RETURN
  154. 418 GOSUB 280
  155. 419 GOSUB 413:M$="Elapsed time is "+STR$(T1)+" minutes and "+STR$(T2)+" seconds  ":GOSUB 22:RETURN
  156. 420 M$="Set alarm, up/down=hours, right/left=minutes. Press ESC when time is set.":GOSUB 120
  157. 421 T%(12)=-1:COLOR 2,0:T%=T%(3):T$="AM":IF T%(3)>12 THEN T%=T%-12:T$="PM"
  158. 422 LOCATE 19,23:PRINT SPC(20);:LOCATE 19,23:PRINT T%;":";T%(4);" ";T$;
  159. 423 GOSUB 70:IF R=K(1) OR R=K(0) THEN T$(1)=STR$(T%)+":"+STR$(T%(4))+" "+T$:COLOR 0,0:RETURN
  160. 424 IF R=K(2) THEN T%(3)=T%(3)+1
  161. 425 IF R=K(3) THEN T%(3)=T%(3)-1
  162. 426 IF R=K(5) THEN T%(4)=T%(4)-1:IF T%(4)<0 THEN T%(4)=59:T%(3)=T%(3)-1
  163. 427 IF R=K(4) THEN T%(4)=T%(4)+1:IF T%(4)>59 THEN T%(4)=0:T%(3)=T%(3)+1
  164. 428 IF T%(3)>23 THEN T%(3)=0 ELSE IF T%(3)<0 THEN T%(3)=23
  165. 429 GOTO 421
  166. 430 REM SETALARM
  167. 432 T$="OFF":IF T%(12) THEN T$="ON"
  168. 433 M$="The alarm is currently set "+T$:GOSUB 120:GOSUB 114:RETURN
  169. 440 REM DISPLAYTIME
  170. 441 GOSUB 400:GOSUB 102:GOSUB 110:LOCATE 9,35:PRINT "KEEP IN TOUCH";
  171. 444 LOCATE 12,8:PRINT "Current Time:  ";T$(3);
  172. 445 LOCATE 13,8:PRINT "Current Date:  ";DATE$;
  173. 446 LOCATE 16,8:PRINT "Starting Time: ";T$(0);
  174. 448 T$="OFF":IF T%(12) THEN T$="ON"
  175. 449 LOCATE 19,8:PRINT "Alarm Setting: ";T$(1);"   ";T$;:RETURN
  176. 450 REM CHECKALARM
  177. 451 IF T%(12)=0 THEN RETURN
  178. 452 GOSUB 400:T1=T%(3)*60+T%(4):T2=T%(0)*60+T%(1):T3=T%(5)*60+T%(6)
  179. 454 IF T2>=T1 AND T1>T3 THEN 455 ELSE RETURN
  180. 455 R$=INKEY$:GOSUB 21:M$=NM$+" , the time is now "+T$(3):GOSUB 120
  181. 457 COLOR 4,1:LOCATE 1,74:PRINT "ALARM ";:COLOR 0,0:FOR T=1 TO 5
  182. 458 PRINT CHR$(7);CHR$(7):FOR P=1 TO 400:NEXT:NEXT:T%(12)=0:GOSUB 114:RETURN
  183. 460 REM REPORT
  184. 461 B(9)=0:M$="Would you like to send report to the printer":GOSUB 143
  185. 462 GOSUB 610:GOSUB 618:IF B(8)=2 THEN RETURN ELSE IF B(8) THEN B(9)=-1
  186. 463 GOSUB 484:CLS:GOSUB 180:PRINT:PRINT:GOSUB 103:LC=0:IF RN=5 THEN LPP=999:GOTO 465
  187. 464 IF B(9) THEN LPP=66 ELSE LPP=20
  188. 465 FOR RC=1 TO NR:IF (B(17) AND B%(RC)=0) OR D$(RC,2)="<DELETED>" THEN 468
  189. 466 GOSUB 470:IF LC=LPP THEN LC=0:GOSUB 480:IF R=K(1) THEN GOSUB 102:RETURN
  190. 467 IF INKEY$=CHR$(27) THEN GOSUB 102:RETURN
  191. 468 NEXT:GOSUB 480:GOSUB 102:RETURN
  192. 470 ON RN GOSUB 471,471,471,471,475,471,471,471:LC=LC+1:RETURN
  193. 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
  194. 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)));
  195. 473 NEXT:RETURN
  196. 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
  197. 476 RETURN
  198. 480 REM newpage
  199. 481 IF NOT B(9) THEN GOSUB 114:CLS:GOSUB 180:PRINT:PRINT:GOSUB 103 ELSE LPRINT FF$
  200. 482 RETURN
  201. 484 REM DOSELECT
  202. 485 IF NOT B(16) THEN RETURN ELSE M$="Do you want to report only contacts where "+B$(0):GOSUB 143
  203. 486 B(17)=0:IF B(8)=-1 THEN B(17)=-1
  204. 487 RETURN
  205. 490 REM todo
  206. 491 GOSUB 102:GOSUB 113:COLOR 0,2:LOCATE 8,30:PRINT NM$;"'s Things To Do ";
  207. 492 COLOR 0,0:FOR T=1 TO 10:LOCATE T+9,7:PRINT T:NEXT:X=1
  208. 493 GOSUB 573:SN=3:GOSUB 350:IF R=K(8) THEN T1=X:GOSUB 496:GOTO 490:X=T1
  209. 494 IF R=K(9) THEN T1=X:GOSUB 497:GOTO 490:X=T1 ELSE RETURN
  210. 496 FOR T2=X TO 10:S$(SN,T2,0)=S$(SN,T2+1,0):NEXT:B(2)=-1:RETURN
  211. 497 IF X=10 THEN RETURN ELSE FOR T2=10 TO X+1 STEP -1:S$(SN,T2,0)=S$(SN,T2-1,0):NEXT:S$(SN,X,0)="":B(2)=-1:RETURN
  212. 500 REM READDATA
  213. 501 GOSUB 102:B(13)=0:M$="Reading information from disk for "+F$:GOSUB 120
  214. 502 GOSUB 112:OPEN F$ FOR INPUT AS #1
  215. 503 NF=16:T2=0
  216. 504 INPUT #1,T$:IF T$<>"*KIT*" THEN T2=1:CLOSE #1:OPEN F$ FOR INPUT AS #1:GOTO 507
  217. 505 GOSUB 640:M$="Total of "+T3$+" contacts, last updated on "+T1$+" at "+T2$:GOSUB 120
  218. 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
  219. 508 FOR T1=1 TO NF:INPUT #1,D$(X,T1):NEXT:NEXT:RETURN
  220. 510 REM SAVEDATA
  221. 512 GOSUB 102:GOSUB 112:M$="Saving information to disk for "+F$:GOSUB 120
  222. 513 OPEN F$ FOR OUTPUT AS #1:GOSUB 630
  223. 514 FOR X=0 TO NR:IF D$(X,2)="<DELETED>" THEN 517
  224. 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)
  225. 517 NEXT:CLOSE #1:G$(B(12),1)=STR$(NR):GOSUB 600:RETURN
  226. 520 REM FILLMENU
  227. 521 IF B(0) THEN RETURN ELSE SN=CG
  228. 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)
  229. 526 NEXT:T%=NR-CG*40:IF T%>40 THEN T%=40
  230. 529 S$(SN,0,0)=STR$(T%):B(0)=-1:RETURN
  231. 530 REM ZOOMIN DRAW
  232. 532 B(2)=1:GOSUB 560:X=1:GOSUB 300:RETURN
  233. 534 REM ZOOMIN EDIT
  234. 536 GOSUB 560:X=1
  235. 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)="":GOTO 537
  236. 538 B(3)=1:LOCATE VAL(S$(SN,X,1)),VAL(S$(SN,X,2)):LINE INPUT;"";S$(SN,X,0)
  237. 539 B(0)=0:GOTO 537
  238. 550 REM DELPERSON
  239. 551 B(2)=0:M$="Would you like to delete this person's information"
  240. 552 GOSUB 143:IF NOT B(8) OR B(8)=2 OR NR=1 THEN PRINT CHR$(7):RETURN
  241. 553 FOR X=1 TO 16:D$(RC,X)="":NEXT:D$(RC,2)="<DELETED>":D$(RC,3)="<DELETED>"
  242. 554 B(0)=0:RC=RC-1:IF RC=0 THEN RC=2
  243. 555 SN=4:GOSUB 26:RETURN
  244. 560 REM FILLCARD
  245. 562 FOR T%=1 TO 16:S$(SN,T%,0)=D$(RC,T%):NEXT:RETURN
  246. 564 FOR T%=1 TO 16:D$(RC,T%)=S$(SN,T%,0):NEXT:RETURN
  247. 570 REM SAVETODO
  248. 571 IF NOT B(7) THEN RETURN ELSE GOSUB 112:OPEN "TODO.DAT" FOR OUTPUT AS #1
  249. 572 FOR X=1 TO 10:WRITE #1,S$(3,X,0):NEXT:CLOSE #1:RETURN
  250. 573 IF NOT B(7) THEN OPEN "TODO.DAT" FOR INPUT AS #1 ELSE RETURN
  251. 574 FOR X=1 TO 10:INPUT #1,S$(3,X,0):NEXT:CLOSE #1:B(7)=-1:RETURN
  252. 580 REM redial
  253. 581 IF AD THEN PRINT #1,"A/":RETURN ELSE RETURN
  254. 590 REM READGROUP
  255. 591 GOSUB 112:OPEN "FILES.KIT" FOR INPUT AS #2
  256. 592 FOR X=1 TO 20:IF EOF(2) THEN NG=X-1:CLOSE #2:GOSUB 101:GOTO 594
  257. 593 FOR T1=0 TO 2:INPUT #2,G$(X,T1):NEXT:NEXT:NG=20
  258. 594 SN=6:S$(SN,0,0)=STR$(NG):FOR X=1 TO NG
  259. 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)
  260. 596 NEXT:RETURN
  261. 600 REM SAVEGROUP
  262. 602 GOSUB 112:OPEN "FILES.KIT" FOR OUTPUT AS #2
  263. 604 FOR X=1 TO 20:IF G$(X,0)="" THEN CLOSE #2:GOSUB 101:RETURN
  264. 606 FOR T1=0 TO 2:WRITE #2,G$(X,T1):NEXT:NEXT:RETURN
  265. 610 REM FINDMAXWIDTH
  266. 611 IF B(13) THEN RETURN ELSE GOSUB 112:FOR T%=1 TO 16:M%(T%)=1:NEXT
  267. 612 FOR X%=1 TO NR:FOR T%=1 TO 16
  268. 614 IF LEN(D$(X%,T%))>M%(T%) THEN M%(T%)=LEN(D$(X%,T%))
  269. 616 NEXT:NEXT:GOSUB 101:B(13)=-1:RETURN
  270. 618 FOR T2=1 TO 10:IF R%(RN,T2,0)=999 THEN RETURN
  271. 619 R%(RN,T2,1)=M%(R%(RN,T2,0)):NEXT:RETURN
  272. 620 REM SPECREP
  273. 621 RC=NR+1:GOSUB 680:GOSUB 610
  274. 623 FOR X=1 TO 16:T%=VAL(D$(RC,X)):R%(RN,T%,0)=X
  275. 624 R%(RN,T%,1)=M%(X):D$(RC,X)="":NEXT:RC=1
  276. 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
  277. 626 NEXT
  278. 627 GOSUB 102:RETURN
  279. 630 REM SAVEHEADER
  280. 631 WRITE #1,"*KIT*",B(14),DATE$,TIME$,B(4),NR,"6","7","8"
  281. 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)
  282. 633 NEXT X:RETURN
  283. 640 REM RHEADER
  284. 641 INPUT #1,B(14),T1$,T2$,B(4),T3$,X$,X$,X$
  285. 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)
  286. 643 NEXT:RETURN
  287. 650 REM SEARCH
  288. 652 SN=4:RC=NR+1:GOSUB 24:GOSUB 25
  289. 653 FOR X=1 TO 16:IF D$(RC,X)<>"" THEN SF=X:SF$=D$(RC,X):GOTO 656
  290. 654 NEXT:RETURN
  291. 656 GOSUB 112:FOR X=1 TO NR:IF D$(X,SF)=SF$ THEN B%(X)=-1 ELSE B%(X)=0
  292. 657 NEXT:RC=1:B(16)=-1:B$(0)=CL$(SF,0)+" = "+SF$:RETURN
  293. 660 REM CALL
  294. 661 GOSUB 810
  295. 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
  296. 664 CLOSE #1:GOSUB 410:D$(RC,10)=T$(4):MN=8:RETURN
  297. 670 REM ADDCARD
  298. 671 NR=NR+1:IF NR>B(15) THEN PRINT CHR$(7):RETURN
  299. 672 RC=NR:GOSUB 680:FOR T1=1 TO 16:IF D$(RC,T1)<>"" THEN 675
  300. 674 NEXT:NR=NR-1:RC=NR:RETURN
  301. 675 B(3)=-1:B(0)=0:B(13)=0:RETURN
  302. 680 REM EASYOUT
  303. 681 GOSUB 102:FOR X=1 TO 16:LOCATE X+5,1:PRINT CL$(X,0);:NEXT
  304. 682 SN=7:GOSUB 530:GOSUB 25:RETURN
  305. 690 REM ERROR
  306. 691 GOSUB 102:PRINT CHR$(7);CHR$(7)
  307. 692 LOCATE 10,1:PRINT "Program problem number: ";ERR
  308. 693 PRINT "            On line # :  ";ERL
  309. 694 M$="Please call Gnossos Software @ 202-387-0858":GOSUB 22:RESUME NEXT:RETURN
  310. 700 REM EXTRACT
  311. 702 GOSUB 650:GOSUB 102:M$="What is the name for the extracted file ":GOSUB 130
  312. 703 C=0:F$=LEFT$(Q$,8)+".PRN":GOSUB 112:OPEN F$ FOR OUTPUT AS #1
  313. 704 FOR X=1 TO NR:IF B%(X)=0 OR D$(X,2)="<DELETED>" THEN 707
  314. 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)
  315. 706 LOCATE 1,1:C=C+1:PRINT C;
  316. 707 NEXT:CLOSE #1:GOSUB 102:RETURN
  317. 810 REM CALL
  318. 811 IF AD=0 THEN RETURN
  319. 812 OPEN "COM1:1200,S,7,,RS" FOR OUTPUT AS #1:T$="":IF LEN(D$(RC,8))>8 THEN T$=LS$
  320. 813 PRINT #1,"AT T D ";T$;D$(RC,8)
  321. 814 M$="Dialing...Press any key and pick up phone when you connect":GOSUB 120
  322. 815 IF INKEY$="" THEN 815
  323. 816 PRINT #1,"AT H":CLOSE #1:RETURN
  324. 900 REM MENUDRIVER
  325. 901 B=0:LOCATE 1,1:PRINT SPC(70);:GOSUB 101
  326. 902 GOSUB 200:PM=MN:IF B THEN MN=VAL(M$(MN,0,1)):GOTO 902
  327. 904 ON MN GOSUB 1100,1200,1300,1400,1500,1600,1700,1800,1900,2000
  328. 905 IF LM=2 AND MN=1 THEN LM=1:GOSUB 1110
  329. 906 GOSUB 450:GOTO 900
  330. 1100 REM PEO,CLO,REP,TOD,DB,GAM,OTH,QUIT
  331. 1104 ON MC GOSUB 1110,1120,1130,1140,1150,1160,1170,1180:RETURN
  332. 1110 B(5)=0:GOSUB 102:SN=CG:GOSUB 152:GOSUB 520:GOSUB 300:IF B THEN RETURN
  333. 1111 IF CG<0 THEN CG=0 ELSE IF CG>2 THEN CG=2
  334. 1112 IF B(5) THEN B(0)=0:B(2)=0:B=0:GOTO 1110
  335. 1114 SN=4:GOSUB 24:MN=2:RETURN
  336. 1120 GOSUB 102:GOSUB 440:MN=5:RETURN
  337. 1130 MN=7:RETURN
  338. 1140 GOSUB 490:RETURN
  339. 1150 MN=4:RETURN
  340. 1160 MN=9:RETURN
  341. 1170 MN=6:RETURN
  342. 1180 M$="Are you sure you want to quit and finish using the program":GOSUB 143:IF B(8)<>-1 THEN RETURN
  343. 1181 GOSUB 570:M$="Do you wish to save your contact file":GOSUB 143
  344. 1182 IF B(8)=-1 THEN GOSUB 510
  345. 1184 CLS:LOCATE 10,35:PRINT "Keep In Touch":LOCATE 12,33:PRINT"Gnossos Software":LOCATE 22,1:IF TEST=-1 THEN END ELSE FOR I=1 TO 2000:NEXT:SYSTEM
  346. 1200 REM CHA,DIA,NEX,PRE,ADD,PRI,OTH,MEN
  347. 1202 B(2)=1:LM=2
  348. 1204 ON MC GOSUB 1210,1220,1230,1240,1250,1260,1270,1280:RETURN
  349. 1206 LOCATE 15,23:PRINT SPC(10);:FOR T1=8 TO 13:LOCATE T1,20:PRINT SPC(52);
  350. 1207 LOCATE T1+9,22:PRINT SPC(50);:NEXT T1:LOCATE 15,50:PRINT SPC(10);
  351. 1208 SN=4:GOSUB 530:RETURN
  352. 1210 SN=4:GOSUB 25:B(0)=0:B(13)=0:RETURN
  353. 1220 GOSUB 660:RETURN
  354. 1230 RC=RC+1:IF RC>NR THEN RC=NR
  355. 1231 SN=4:GOSUB 26:RETURN
  356. 1240 RC=RC-1:IF RC=0 THEN RC=1
  357. 1241 SN=4:GOSUB 26:RETURN
  358. 1250 SN=7:GOSUB 670:SN=4:GOSUB 24:RETURN
  359. 1260 RETURN:REM PRINTCARD
  360. 1270 MN=3:RETURN
  361. 1280 MN=1:RETURN
  362. 1300 REM FIR,LAS,NEX,PRE,DEL,SEL,MEN
  363. 1304 SN=4:ON MC GOSUB 1310,1320,1330,1340,1350,1360,1370
  364. 1305 IF MC<5 THEN GOSUB 26:RETURN ELSE RETURN
  365. 1310 RC=1:RETURN
  366. 1320 RC=NR:RETURN
  367. 1330 RC=RC-1:IF RC=0 THEN RC=1:RETURN ELSE RETURN
  368. 1340 RC=RC+1:IF RC>NR THEN RC=NR:RETURN ELSE RETURN
  369. 1350 GOSUB 550:RETURN
  370. 1360 GOSUB 172:RETURN
  371. 1370 MN=2:RETURN
  372. 1400 REM SAV,SWI,LIS,DEL,EXT,QUT
  373. 1404 ON MC GOSUB 1410,1420,1430,1440,1450,1460:RETURN
  374. 1410 GOSUB 510:RETURN
  375. 1420 GOSUB 510:ERASE D$:DIM D$(B(15)+1,16):GOSUB 147:GOSUB 150:GOSUB 102:MN=1:RETURN
  376. 1430 GOSUB 102:LOCATE 5,1:FOR X=1 TO NG:PRINT S$(6,X,0):NEXT X:GOSUB 114:GOSUB 102:RETURN
  377. 1440 GOSUB 102:GOSUB 147:T4=X:IF T4=B(12) THEN RETURN
  378. 1441 M$="Do you want to delete the entire file from your disk for "+G$(X,0)
  379. 1442 GOSUB 143:IF B(8)<>-1 THEN RETURN
  380. 1443 M$="Are you sure you want to delete"
  381. 1444 GOSUB 143:IF B(8)<>-1 THEN RETURN
  382. 1445 KILL G$(T4,0)+".DAT":FOR T=T4 TO NG:FOR T1=0 TO 2:G$(T,T1)=G$(T+1,T1)
  383. 1446 NEXT:NEXT:RETURN
  384. 1450 GOSUB 700:RETURN
  385. 1460 MN=1:RETURN
  386. 1500 REM SET,OFF,QUT
  387. 1504 ON MC GOSUB 1510,1520,1530:RETURN
  388. 1510 GOSUB 420:GOSUB 440:RETURN
  389. 1520 T%(12)=0:T$(1)="":GOSUB 440:RETURN
  390. 1530 MN=1:RETURN
  391. 1600 REM COM,NAM,DIA,HEA,CAL,BYT,UTI,QUT
  392. 1604 ON MC GOSUB 1610,1620,1630,1640,1650,1660,1670,1680:RETURN
  393. 1610 B(4)=0:B(0)=0:RETURN
  394. 1620 B(4)=-1:B(0)=0:RETURN
  395. 1630 GOSUB 172:RETURN
  396. 1640 FOR X=1 TO 16:D$(0,X)=CL$(X,0):NEXT
  397. 1641 SN=7:RC=0:GOSUB 680
  398. 1642 B(3)=1:FOR X=1 TO 16:CL$(X,0)=LEFT$(D$(0,X),12):NEXT:RETURN
  399. 1650 GOSUB 172:RETURN
  400. 1660 M$="You have "+STR$(FRE(0))+" bytes free. Do you want to clear memory":GOSUB 143:IF B(8)<>-1 THEN RETURN
  401. 1661 M$="Please wait 2 minutes, clearing memory":GOSUB 120:T=FRE("")
  402. 1662 PRINT CHR$(7):GOSUB 114:RETURN
  403. 1670 GOSUB 172:RETURN
  404. 1680 MN=1:RETURN
  405. 1700 REM PHO,DAT,COM,CUS,LAB,DES,MEN
  406. 1704 ON MC GOSUB 1710,1720,1730,1740,1750,1760,1770,1780:RETURN
  407. 1710 RN=1:GOSUB 460:RETURN
  408. 1720 RN=2:GOSUB 460:RETURN
  409. 1730 RN=3:GOSUB 460:RETURN
  410. 1740 MN=10:RETURN
  411. 1750 RN=5:GOSUB 460:RETURN
  412. 1760 M$="Which custom report do you want to design (1, 2, or 3)":GOSUB 130
  413. 1761 RN=VAL(Q$)+5:IF RN<6 OR RN>8 THEN PRINT CHR$(7):GOTO 1760
  414. 1762 M$="Enter a short name for the report (8 characters or less)":GOSUB 130
  415. 1763 IF LEN(Q$)>8 THEN PRINT CHR$(7):GOTO 1762 ELSE M$(10,RN-5,0)=Q$
  416. 1764 M$="Enter a description of report":GOSUB 130:M$(10,RN-5,1)=Q$
  417. 1765 GOSUB 620:RETURN
  418. 1770 GOSUB 650:RETURN
  419. 1780 MN=1:RETURN
  420. 1800 REM CHA,ELA,HAN,TOD,MEN
  421. 1804 ON MC GOSUB 1810,1820,1830,1840,1850:RETURN
  422. 1810 SN=4:GOSUB 25:RETURN
  423. 1820 GOSUB 418:RETURN
  424. 1830 GOSUB 413
  425. 1831 M$="Topic of conversation":GOSUB 130
  426. 1832 OPEN "PHONE.KIT" FOR APPEND AS #1
  427. 1834 WRITE #1,D$(RC,1),D$(RC,2),D$(RC,3),D$(RC,8),T$(4),T$(3),STR$(T1),Q$:CLOSE #1
  428. 1838 M$="You were talking for "+STR$(T1)+" minutes and "+STR$(T2)+" seconds":GOSUB 22:RETURN
  429. 1840 GOSUB 490
  430. 1841 SN=4:GOSUB 24:RETURN
  431. 1850 MN=2:RETURN
  432. 1900 REM mus,ran,lin,cir,coo,ska,yan,men
  433. 1904 ON MC GOSUB 1910,1920,1930,1940,1950,1960,1970,1980:RETURN
  434. 1910 GOSUB 10100:RETURN
  435. 1920 GOSUB 10200:RETURN
  436. 1930 IF MT THEN GOSUB 10300:RETURN ELSE RETURN
  437. 1940 IF MT THEN GOSUB 10400:RETURN ELSE RETURN
  438. 1950 GOSUB 10500:RETURN
  439. 1960 GOSUB 10600:RETURN
  440. 1970 GOSUB 10700:RETURN
  441. 1980 MN=1:RETURN
  442. 2000 REM cu1,cu2,cu3,spe,men
  443. 2002 ON MC GOSUB 2010,2020,2030,2040,2050:RETURN
  444. 2010 RN=6:GOSUB 460:RETURN
  445. 2020 RN=7:GOSUB 460:RETURN
  446. 2030 RN=8:GOSUB 460:RETURN
  447. 2040 RN=4:GOSUB 620:GOSUB 460:RETURN
  448. 2050 MN=7:RETURN
  449. 10100 REM PIANO
  450. 10101 PRINT "...Unsupported on RAINBOW";: WHILE INKEY$="":WEND:RETURN
  451. 10102 GOSUB 102:M$="Musical Keyboard: To play music press the keynote, press ESC to return to menu":GOSUB 120
  452. 10103 GOSUB 70:IF R=K(1) THEN GOSUB 102:RETURN
  453. 10104 X=INSTR("abcdefg",R$):IF X=0 THEN 10103
  454. 10105 PLAY MID$("abcdefg",X,1):GOTO 10103
  455. 10106 PLAY R$:GOTO 10104
  456. 10200 REM random
  457. 10201 PRINT "  ...Unsupported on RAINBOW";:UB=RND*5000:DR=RND*5:WHILE INKEY$=""
  458. 10210 WEND: RETURN: rem SOUND RND*UB+40,DR:WEND:RETURN
  459. 10300 REM LINES
  460. 10302 SCREEN 2,0,0:LINE (RND*800,RND*240)-(RND*640,RND*200)
  461. 10304 R$=INKEY$:IF R$<>"" THEN SCREEN 0,0,0:GOSUB 102:RETURN
  462. 10306 LINE -(RND*800,RND*240):GOTO 10304
  463. 10400 REM cir
  464. 10402 SCREEN 2,0,0
  465. 10404 R$=INKEY$:IF R$<>"" THEN SCREEN 0,0,0:GOSUB 102:RETURN
  466. 10406 CIRCLE (RND*800,RND*240),RND*20:GOTO 10404
  467. 10500 REM COOk
  468. 10502 CLS:FOR X=400 TO 10 STEP -6:LOCATE RND*23+1,RND*70+1,1,0,31:REM SOUND 600-X,1
  469. 10504 PRINT "COOKIE!";:FOR P=1 TO X/3:NEXT:NEXT
  470. 10510 FOR P=1 TO 3000:NEXT:GOSUB 102:RETURN
  471. 10600 GOSUB 102:PRINT CHR$(7):LOCATE 10,5:PRINT "Before enlightenment, chop wood and draw water.";:LOCATE 13,10
  472. 10602 PRINT "After enlightenment, chop wood and draw water.";:GOSUB 114:RETURN
  473. 10700 RETURN:REM PLAY "o2ccdeced2ccdec3o1bo2ccdefedco1bgabo2cc":RETURN
  474. 40000 REM
  475. 40030 PRINT:PRINT:COLOR 2,0
  476. 40040 PRINT "                     Keep in Touch (TM)  by Gnossos Software "
  477. 40080 PRINT:COLOR 0,0
  478. 40100 PRINT "    Copyright 1984  -  You may share copies with friends  -  V0 Fall 1984"
  479. 40120 PRINT:COLOR 2,0
  480. 40129 PRINT "         Keep in Touch is a shareware product, pay only if you like it."
  481. 40130 PRINT "      Rather than selling it through retail outlets for a much higher price"
  482. 40140 PRINT "    we offer Keep in Touch to you through the miracle of telecommunications."
  483. 40160 PRINT "        Please try the program, and if you like it and find it useful,"
  484. 40170 PRINT "               send payment of $25/personal or $50/business use
  485. 40171 PRINT "       and we will send you the latest version with a package and manual."
  486. 40172 PRINT "          The full version has auto-dialing, more room for data, etc."
  487. 40173 PRINT "    Please share copies with friends, and remind them to pay for the program"
  488. 40175 PRINT "       Shareware means trust and community.  We offer Keep in Touch to you"
  489. 40176 PRINT "        because we run an honest shop and we want to base our business on"
  490. 40177 PRINT "                         Trust, Sharing, and Synergy.  ":PRINT:COLOR 0,0
  491. 40179 PRINT "                               Gnossos Software"
  492. 40180 PRINT "            1625 R St. NW, Washington DC, 20009 -- (202) 387-0858"
  493. 40200 PRINT
  494. 40210 PRINT "                               by Steve Kantor";
  495. 40230 REM LOCATE 1,1,0:PRINT STRING$(79,BOTL$);:LOCATE 23,1:PRINT STRING$(79,TOPL$);
  496. 40235 GSV=1:GSH=1:BW=79:BH=22:GOSUB 104
  497. 40240 REM for X=2 TO 22:LOCATE X,1:PRINT VERL$;:LOCATE X,79:PRINT VERL$;:NEXT X
  498. 40250 REM WSK NO SOUND FOR X=100 TO 1000 STEP 100:SOUND X,1:NEXT
  499. 40260 LOCATE 1,1:FOR P=1 TO 2500:NEXT P:FOR X=1 TO 16:PRINT STRING$(79," ");:NEXT
  500. 40261 FOR P=1 TO 500:NEXT:LOCATE 16,1:COLOR 3,0:PRINT STRING$(79," "):COLOR 0,0:FOR P=1 TO 500:NEXT:LOCATE 23,1:FOR X=1 TO 11:PRINT:NEXT
  501. 40270 RETURN
  502. 60000 KEY OFF
  503. 60001 NM$=" ":AD=0:MT=1
  504. 60005 ON ERROR GOTO 690
  505. 60010 IF AD THEN OPEN "com1:1200,S,7,,RS" FOR OUTPUT AS #1:CLOSE #1
  506. 60099 REM WSK changed keyboard data below for Rainbow
  507. 60100 DATA 13,27,30,31,28,29,93,92,127,18,95,96,4,45
  508. 60101 rem DIM T%(15),B(20):B(15)=120:DIM D$(B(15)+1,16),G$(20,2),B%(B(15))
  509. 60104 FOR X=0 TO 13:READ K(X):NEXT:GOSUB 61000:MC=1:MN=1
  510. 60105 T$(4)=MID$(DATE$,1,2)+"/"+MID$(DATE$,4,2)+"/"+MID$(DATE$,9,2)
  511. 60106 GOSUB 400:T$(0)=T$(3):T%(5)=T%(0):T%(6)=T%(1)
  512. 60201 T3=0:T1=5:T2=1:FOR X=1 TO 40:FOR T%=0 TO 2
  513. 60202 S$(T%,X,1)=STR$(T1):S$(T%,X,2)=STR$(T2):NEXT:T3=T3+1:T2=40
  514. 60204 IF T3=2 THEN T3=0:T1=T1+1:T2=1
  515. 60206 NEXT
  516. 60210 COLOR 0,0:GOSUB 590:GOSUB 147:GOSUB 150:GOTO 900
  517. 61000 REM REP
  518. 61002 rem DIM R%(9,10,1)
  519. 61004 DATA 1,12,2,12,3,37,8,12,999,999
  520. 61006 DATA 2,12,3,40,9,8,10,8,999,999
  521. 61008 DATA 2,12,3,23,16,40,999,999,999,999
  522. 61030 FOR RN=1 TO 4:FOR X=1 TO 10:FOR T=0 TO 1
  523. 61032 READ R%(RN,X,T):NEXT:IF R%(RN,X,0)=999 THEN 61036
  524. 61034 NEXT X
  525. 61036 NEXT RN
  526. 62000 rem DIM S$(7,40,2)
  527. 62102 SN=3:FOR T1=1 TO 10:S$(SN,T1,1)=STR$(T1+9)
  528. 62104 S$(SN,T1,2)="11":S$(SN,T1,0)=SPACE$(2)
  529. 62106 NEXT:S$(SN,0,0)="10"
  530. 62202 SN=4:S$(SN,0,0)="16"
  531. 62204 DATA First,8,20,Last,8,38,Company,9,20,Street,11,20,City,12,20
  532. 62206 DATA State,12,43,Zip,12,48,Phone,13,20,L,15,23,L,15,50
  533. 62208 DATA T,17,22,C,18,22,P,19,22,T,20,22,S,21,22
  534. 62210 DATA C,22,22
  535. 62212 FOR T1=1 TO 16:FOR T2=0 TO 2:READ S$(SN,T1,T2):NEXT:NEXT
  536. 62300 SN=5:S$(SN,0,0)="3"
  537. 62302 DATA Yes,3,1,No,3,8,Cancel,3,14
  538. 62312 FOR T1=1 TO 3:FOR T2=0 TO 2:READ S$(SN,T1,T2):NEXT:NEXT
  539. 62402 SN=6:S$(SN,0,0)="20"
  540. 62404 FOR T1=1 TO 20:S$(SN,T1,1)=STR$(T1+4):S$(SN,T1,2)="1":NEXT T1
  541. 62802 rem DIM CL$(16,2)
  542. 62804 DATA Last Meet,15,8,Last Call,15,38,Title,17,8,Category,18,8
  543. 62806 DATA Politics,19,8,Type,20,8,Status,21,8,Comments,22,8
  544. 62808 FOR T1=9 TO 16:FOR T2=0 TO 2:READ CL$(T1,T2):NEXT:NEXT
  545. 62810 FOR T1=1 TO 8:CL$(T1,0)=S$(4,T1,0):NEXT T1
  546. 62820 FOR X=1 TO 16:D$(0,X)=CL$(X,0):NEXT
  547. 62850 SN=7:FOR X=1 TO 16:S$(SN,X,0)=CL$(X,0):S$(SN,X,1)=STR$(X+5)
  548. 62852 S$(SN,X,2)=STR$(15):NEXT:S$(SN,0,0)="16"
  549. 63000 rem DIM M$(10,9,1)
  550. 63040 DATA People,Examine information on your contacts and clients
  551. 63050 DATA Clock,Check the time and use alarm clock
  552. 63060 DATA Reports,Create reports from your information on people
  553. 63070 DATA To Do,Maintain Things-To-Do list
  554. 63071 DATA Database,"Save your files, switch files, and delete files from your data disk"
  555. 63072 DATA Games,"Games, visual relaxation and amusement"
  556. 63073 DATA Other,"Change organization, sound, dialing, headings, memory, etc."
  557. 63075 DATA Quit,Quit Keep in Touch program
  558. 63076 DATA X,1
  559. 63077 DATA Edit,Edit and change information on contact's card
  560. 63078 DATA Call,Call your contact on the phone using automatic dialer
  561. 63079 DATA Next,Turn to next contact card
  562. 63080 DATA Previous,Turn to previous contact card
  563. 63081 DATA Add,Add a new contact card to your file
  564. 63082 DATA Print,Print this contact on the printer
  565. 63083 DATA Other,"Flipping cards, deleting contact, selecting contacts, etc."
  566. 63084 DATA Menu,Return to a list of all contacts
  567. 63099 DATA X,2
  568. 63100 DATA First,Turn to the first contact
  569. 63102 DATA Last,Turn to the last contact
  570. 63104 DATA Next,Turn to the next contact
  571. 63106 DATA Previous,Turn to the previous contact
  572. 63108 DATA Delete,Delete this contact from your file
  573. 63109 DATA Select,Select a group of contacts
  574. 63120 DATA Menu,Return to contacts menu
  575. 63121 DATA X,3
  576. 63150 DATA Save,Save your Address Book on your disk
  577. 63151 DATA Switch,Save your current Address Book and open a different one
  578. 63154 DATA List,List all of your Address Books on this disk
  579. 63155 DATA Delete,Delete an entire Address Book from your disk - Careful!
  580. 63156 DATA Extract,Extract a group of contacts to a file for transfer
  581. 63158 DATA Menu,Return to main menu
  582. 63160 DATA X,4
  583. 63204 DATA Alarm,Set the alarm clock and turn the alarm clock on
  584. 63208 DATA Off,Turn OFF the alarm clock
  585. 63212 DATA Menu,Return to main menu
  586. 63214 DATA X,5
  587. 63300 DATA Company,Organize contacts by company
  588. 63302 DATA Names,Organize contacts by first and last names
  589. 63304 DATA Dialing,"Special dialing services, information, weather, time"
  590. 63306 DATA Headings,Customize contacts information for your needs
  591. 63308 DATA Calc,Use the built-in calculator
  592. 63310 DATA Bytes,Check the amount of memory that is available for contacts
  593. 63312 DATA Utility,Switch from Keep in Touch to Utility programs
  594. 63313 DATA Menu,Return to main menu
  595. 63314 DATA X,6
  596. 63400 DATA Phonelist,Print a phonelist report
  597. 63402 DATA Dates,Print a report of dates
  598. 63404 DATA Remarks,Print a report of remarks and comments on contacts
  599. 63405 DATA Custom,Print one of your custom reports or a special report
  600. 63406 DATA Labels,Mailing labels using Avery Tabulabel 4146 4" format
  601. 63410 DATA Design,Design custom reports
  602. 63411 DATA Select,Select a subset group of contacts to report
  603. 63412 DATA Menu,Return to main menu
  604. 63414 DATA X,7
  605. 63500 DATA Change,Change the information on your contact
  606. 63502 DATA Elapsed,Display the clock for elapsed time of call
  607. 63504 DATA Hangup,Hang up the telephone connection and show elapsed time
  608. 63506 DATA To Do,Show Things-To-Do list
  609. 63508 DATA People,Return to CONTACTS menu
  610. 63510 DATA X,8
  611. 63600 DATA Piano,Play the musical keyboard like a piano
  612. 63601 DATA Notes,Play random tones at random intervals and enjoy
  613. 63602 DATA Lines,Random lines a la Jackson Pollack
  614. 63603 DATA Circle,Random circles across the heavens
  615. 63604 DATA Tricky,Cookie monster game
  616. 63605 DATA Quote,Marty Schwimmer's favorite quotation
  617. 63606 DATA Yankee,Yankee Doodle Dandy
  618. 63609 DATA Menu,Return to main menu
  619. 63690 DATA X,9
  620. 63700 DATA Cust1,Custom report 1
  621. 63702 DATA Cust2,Custom report 2
  622. 63704 DATA Cust3,Custom report 3
  623. 63706 DATA Special,Create a unique one-time report
  624. 63708 DATA Reports,Return to reports menu
  625. 63710 DATA X,X
  626. 63900 DATA 1,1,2,1,1,1,1,2,1,7
  627. 63920 FOR T1=1 TO 13:FOR T2=1 TO 10:FOR T3=0 TO 1:READ M$(T1,T2,T3):NEXT
  628. 63930 IF M$(T1,T2,0)="X" THEN M$(T1,0,0)=STR$(T2-1):GOTO 63950
  629. 63940 NEXT
  630. 63950 IF M$(T1,T2,1)="X" THEN 63960
  631. 63952 NEXT T1
  632. 63960 FOR T1=1 TO 10:READ M$(T1,0,1):NEXT:RETURN
  633.