home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib19a.dsk / APRIL.1984 / NIBBLE.TV.GUIDE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  10KB  |  135 lines

  1. 1  REM   **********************
  2. 2  REM   *   NIBBLE.TV.GUIDE  *
  3. 3  REM   *  BY RICK CONNOLLY  *
  4. 4  REM   * COPYRIGHT (C) 1984 *
  5. 5  REM   * BY MICROSPARC, INC *
  6. 6  REM   * LINCOLN, MA. 01773 *
  7. 7  REM   **********************
  8. 10  SPEED= 255: NORMAL : NOTRACE :D$ =  CHR$(4):B$ =  CHR$(7): GOTO 1100
  9. 20  REM  ** CONTINUE ROUTINE **
  10. 30  PRINT B$"BAD INPUT"
  11. 40  VTAB 22: CALL  -958: HTAB 8: PRINT "PRESS ANY KEY TO CONTINUE ";: GET Z$: PRINT : RETURN 
  12. 50  GOSUB 940: GOSUB 960: GOTO 1050
  13. 60  TEXT : HOME : PRINT "REVIEWING WEEK "WK$: PRINT : PRINT : POKE 34,2
  14. 70  FOR I = 1 TO ED *6 +1  STEP ED: INVERSE : PRINT DA$( INT(I/ED) +1): NORMAL : PRINT 
  15. 80  FOR J = I TO I +ED -1: IF SC$(J,1) = ""  THEN 130
  16. 90  PRINT SC$(J,1): PRINT "CHANNEL "SC$(J,6) TAB( 14)SC$(J,2) TAB( 26)"DURATION "SC$(J,4)" ";
  17. 100  IF  VAL(SC$(J,3)) > VAL(SC$(J +1,5))  AND SC$(J +1,5) < >""  THEN  INVERSE : PRINT "*";: NORMAL 
  18. 110  IF SC$(J +1,5) = ""  AND  VAL(SC$(J,3)) > VAL(SC$(I +ED,5))  AND SC$(I +ED,5) < >""  THEN  INVERSE : PRINT "*";: NORMAL 
  19. 120  PRINT : PRINT 
  20. 130  NEXT : PRINT "RETURN TO CONTINUE, M FOR MENU ";: GET Z$: PRINT Z$: IF Z$ = "M"  THEN 1050
  21. 140  NEXT : GOTO 1050
  22. 150  HOME : IF DA$ < >""  THEN  PRINT DA$: PRINT : GOSUB 570: GOTO 170
  23. 160  GOSUB 520
  24. 170  IF SC$(EA,1) < >""  THEN  PRINT B$"SORRY.  "DA$" IS ALL FILLED": PRINT : INPUT "PRESS RETURN FOR MENU ";Z$: GOTO 1050
  25. 180  TEXT : HOME : PRINT "DAY: ";: INVERSE : PRINT DA$;: NORMAL : PRINT  TAB( 10)"WEEK: ";: INVERSE : PRINT WK$: NORMAL : PRINT : POKE 34,2
  26. 190  INPUT "EVENT ";NA$:NA$ =  LEFT$(NA$,39): PRINT : IF NA$ = ""  THEN 1050
  27. 200  PRINT "ENTER STARTING TIME": PRINT "USE FORMAT OF '1030 AM' OR '400 PM'": PRINT "'1200 PM' IS NOON": PRINT 
  28. 210  INPUT "";TI$:VT =  PEEK(37): IF  RIGHT$(TI$,3) < >" AM"  AND  RIGHT$(TI$,3) < >" PM"  THEN  GOSUB 30: VTAB VT: CALL  -958: GOTO 210
  29. 220  IF  LEN(TI$) = 7  THEN 250
  30. 230  IF  LEN(TI$) < >6  THEN VT =  PEEK(37): GOSUB 30: VTAB VT: CALL  -958: GOTO 210
  31. 240 TI$ = " " +TI$
  32. 250  PRINT : INPUT "CHANNEL ";CH$: PRINT 
  33. 260  INPUT "DURATION IN MINUTES ";RT$:I = SA
  34. 270 T =  VAL( LEFT$(TI$,2)): IF  RIGHT$(TI$,2) = "PM"  AND T <12  THEN T = T +12: REM ADJUST FOR NOON
  35. 280 T = T *60 + VAL( MID$ (TI$,3,2)): IF  LEFT$(TI$,2) = "12"  AND  RIGHT$(TI$,2) = "AM"  THEN T = T -720: REM ADJUST FOR MIDNIGHT (0000 HOURS)
  36. 290 T = T +(DA -1) *1440: REM ADDED DAYS
  37. 300 TI$ =  LEFT$(TI$,2) +":" + RIGHT$(TI$,5)
  38. 310 EM$ =  STR$(T + VAL(RT$)): PRINT 
  39. 320  IF SC$(SA,1) = ""  THEN 380
  40. 330  IF T < =  VAL(SC$(SA,5))  THEN 370
  41. 340  FOR I = SA +1 TO SA +EA -1: IF T > VAL(SC$(I -1,5))  AND T < =  VAL(SC$(I,5))  THEN 370
  42. 350  IF SC$(I,1) = ""  THEN 380
  43. 360  NEXT : GOTO 380
  44. 370  FOR J = EA TO I  STEP  -1: FOR K = 1 TO EE:SC$(J,K) = SC$(J -1,K): NEXT : NEXT 
  45. 380 SC$(I,1) = NA$:SC$(I,2) = TI$:SC$(I,3) = EM$:SC$(I,4) = RT$:SC$(I,5) =  STR$(T):SC$(I,6) = CH$: GOSUB 420:CF = 1
  46. 390  IF CH  THEN CH = 0: GOTO 1050
  47. 400  PRINT : PRINT "ENTER ANOTHER (Y/N) ";: GET Z$: PRINT Z$: IF Z$ = "N"  THEN 1050
  48. 410  GOSUB 570: HOME : GOTO 170
  49. 420 J = 0: FOR I = SA TO EA: IF  VAL(SC$(I,3)) > VAL(SC$(I +1,5))  AND SC$(I +1,5) < >""  THEN 450
  50. 430  IF SC$(I +1,5) = ""  AND  VAL(SC$(I,3)) > VAL(SC$(EA +1,5))  AND SC$(EA +1,5) < >""  THEN 450
  51. 440  GOTO 500
  52. 450  IF   NOT J  THEN  INVERSE : PRINT B$"CONFLICT ALERT": NORMAL 
  53. 460 J = 1: PRINT : PRINT "EVENT             CH     START     LEN": PRINT 
  54. 470  PRINT  LEFT$(SC$(I,1),15) TAB( 19)SC$(I,6) TAB( 24)SC$(I,2) TAB( 36);: INVERSE : PRINT SC$(I,4): NORMAL 
  55. 480 K = I: IF SC$(K +1,1) = ""  THEN K = EA
  56. 490  PRINT  LEFT$(SC$(K +1,1),15) TAB( 19)SC$(K +1,6) TAB( 24);: INVERSE : PRINT SC$(K +1,2);: NORMAL : PRINT  TAB( 36)SC$(K +1,4): PRINT 
  57. 500  NEXT : IF   NOT J  THEN  RETURN 
  58. 510  INPUT "PRESS RETURN TO CONTINUE ";Z$: RETURN 
  59. 520  PRINT : PRINT 
  60. 530  INPUT "ENTER DAY (SUN THRU SAT) ";DA$:VT =  PEEK(37)
  61. 540 DA =  VAL(DA$): IF DA >0  AND DA <8  THEN DA$ = DA$(DA): GOTO 580
  62. 550  FOR DA = 1 TO 7: IF DA$ = DA$(DA)  THEN 580
  63. 560  NEXT : GOSUB 30: VTAB VT: CALL  -958: GOTO 530
  64. 570  PRINT "ENTER NEW DAY OR PRESS RETURN FOR "DA$" ": INPUT Z$: IF Z$ < >""  THEN DA$ = Z$: GOTO 540
  65. 580 SA = (DA -1) *ED +1: REM START IN ARRAY
  66. 590 EA = SA +ED -1: RETURN : REM END IN ARRAY
  67. 600  GOSUB 730: INPUT "ENTER NO. TO CHANGE ";Z$:I =  VAL(Z$): IF I <SA  OR I >EA GOTO 1050
  68. 610  PRINT : PRINT "PRESS RETURN TO KEEP CURRENT ENTRY": PRINT "OR TYPE NEW ENTRY": PRINT 
  69. 620  PRINT SC$(I,1): INPUT NA$: IF NA$ = ""  THEN NA$ = SC$(I,1)
  70. 630  PRINT : PRINT "STARTING TIME: " LEFT$(SC$(I,2),2) RIGHT$(SC$(I,2),5): INPUT TI$
  71. 640  IF TI$ = ""  THEN TI$ =  LEFT$(SC$(I,2),2) + RIGHT$(SC$(I,2),5): GOTO 670
  72. 650  IF  LEN(TI$) <6  OR  LEN(TI$) >7  THEN  PRINT B$: GOTO 630
  73. 660  IF  LEN(TI$) = 6  THEN TI$ = " " +TI$
  74. 670  PRINT : PRINT "CHANNEL "SC$(I,6): INPUT CH$: IF CH$ = ""  THEN CH$ = SC$(I,6)
  75. 680  PRINT : PRINT "EVENT DURATION "SC$(I,4): INPUT RT$: IF RT$ = ""  THEN RT$ = SC$(I,4)
  76. 690 CH = 1: GOSUB 710: GOTO 270
  77. 700  GOSUB 730: INPUT "ENTER NO. TO DELETE OR PRESS RETURN ";Z$:I =  VAL(Z$): IF I <SA  OR I >EA GOTO 1050
  78. 710  FOR J = I TO EA -1: FOR K = 1 TO EE:SC$(J,K) = SC$(J +1,K): NEXT : NEXT : FOR K = 1 TO EE:SC$(EA,K) = "": NEXT :CF = 1
  79. 720  ON   NOT CH GOTO 1050: RETURN 
  80. 730  HOME : GOSUB 520: IF SC$(SA,1) = ""  THEN 1050
  81. 740  FOR I = SA TO EA: IF SC$(I,1) < >""  THEN  PRINT I TAB( 4) LEFT$(SC$(I,1),30): PRINT 
  82. 750  NEXT 
  83. 760  RETURN 
  84. 770  HOME : PRINT "TURN PRINTER ON AND PRESS P, OR ANY": PRINT "OTHER KEY FOR MENU ";: GET Z$: PRINT Z$: IF Z$ < >"P"  THEN 1050
  85. 780  PRINT  CHR$(4)"PR#1": PRINT  CHR$(9)"80N": REM PARALLEL 80 COLUMN CARD
  86. 790  PRINT : PRINT  TAB( 33)WK$: PRINT : PRINT : PRINT : PRINT "DAY";: POKE 36,20: PRINT "EVENT";: POKE 36,50
  87. 800  PRINT "CHANNEL";: POKE 36,60: PRINT "TIME";: POKE 36,68: PRINT "DURATION": PRINT : PRINT 
  88. 810  FOR I = 1 TO 6 *ED +1  STEP ED: PRINT DA$( INT(I/ED) +1);
  89. 820  FOR J = I TO I +ED -1: IF SC$(J,1) = ""  THEN  HTAB 8: FOR K = 1 TO 69: PRINT "-";: NEXT : PRINT : GOTO 860: REM SUB CHR$(95) FOR UNDERLINE
  90. 830  HTAB 8: PRINT SC$(J,1);: IF  VAL(SC$(J,3)) > VAL(SC$(J +1,5))  AND SC$(J +1,5) < >""  THEN  POKE 36,47: PRINT " **";
  91. 840  IF SC$(J +1,5) = ""  AND  VAL(SC$(J,3)) > VAL(SC$(I +ED,5))  AND SC$(I +ED,5) < >""  THEN  POKE 36,47: PRINT " **";
  92. 850  POKE 36,52: PRINT SC$(J,6);: POKE 36,58: PRINT SC$(J,2);: POKE 36,71: PRINT SC$(J,4)
  93. 860  NEXT : PRINT : NEXT : PRINT : PRINT : PRINT "** INDICATES CONFLICT WITH THE NEXT FOLLOWING EVENT."
  94. 870  PRINT  CHR$(12): PRINT  CHR$(4)"PR#0": GOTO 1050: REM CHR$ (12) IS FORM FEED
  95. 880  HOME : PRINT "ALL WEEKS PRIOR TO "WK$: PRINT "WILL BE REMOVED.  ENTER R TO REMOVE"
  96. 890  INPUT "THEM OR RETURN FOR MENU ";Z$: PRINT : IF Z$ < >"R"  THEN 1050
  97. 900  FOR I = LW TO WK -1: PRINT D$"OPEN   "WK$(I): PRINT D$"CLOSE": PRINT D$"DELETE "WK$(I): NEXT 
  98. 910  FOR I = LW TO WK -1:WK$(I) = "": NEXT 
  99. 920 LW = WK: PRINT D$"OPEN WEEKS": PRINT D$"WRITE WEEKS": FOR I = 1 TO 53: PRINT WK$(I): NEXT : PRINT LW: PRINT D$"CLOSE": GOTO 1050
  100. 930  GOSUB 940: HOME : END 
  101. 940  IF   NOT CF  THEN  RETURN 
  102. 950  PRINT D$"OPEN"WK$: PRINT D$"WRITE"WK$: FOR I = 1 TO ED *7: FOR J = 1 TO EE: PRINT  CHR$(34)SC$(I,J): NEXT : NEXT : PRINT D$"CLOSE":CF = 0: RETURN 
  103. 960  HOME : FOR I = LW TO 52  STEP 3: PRINT : PRINT I". " LEFT$(WK$(I),6) TAB( 13);
  104. 970  IF I +1 <53  THEN  PRINT I +1". " LEFT$(WK$(I +1),6) TAB( 25);: IF I +2 <53  THEN  PRINT I +2". " LEFT$(WK$(I +2),6);
  105. 980  NEXT : IF  POS(0) >30  THEN  PRINT 
  106. 990  IF WK$(53) < >""  THEN  PRINT "53. " LEFT$(WK$(53),6)
  107. 1000  VTAB 23: HTAB 1: CALL  -958: INPUT "CHOOSE WEEK BY NUMBER ";W1$:WK =  VAL(W1$): IF W1$ = ""  AND WK$ < >""  THEN 1050
  108. 1010 WK$ = W1$: IF WK <LW  OR WK >53  OR WK = 53  AND WK$(53) = ""  THEN  PRINT B$;:WK$ = "": GOTO 1000
  109. 1020 WK$ = WK$(WK): ONERR  GOTO 1040
  110. 1030  PRINT D$"OPEN"WK$: PRINT D$"READ"WK$: FOR I = 1 TO ED *7: FOR J = 1 TO EE: INPUT SC$(I,J): NEXT : NEXT : POKE 216,0: PRINT D$"CLOSE": RETURN 
  111. 1040  POKE 216,0: PRINT D$"CLOSE": PRINT D$"DELETE"WK$: FOR I = 1 TO ED *7: FOR J = 1 TO EE:SC$(I,J) = "": NEXT : NEXT 
  112. 1050  CALL 54915: TEXT : HOME : PRINT "WEEK NOW IN FILE: ";: INVERSE : PRINT WK$: NORMAL : PRINT 
  113. 1060  PRINT : PRINT "YOU CAN:": PRINT : PRINT "1.  CHANGE WEEK": PRINT "2.  REVIEW WEEK": PRINT "3.  ENTER DATA FOR THE WEEK": PRINT "4.  CORRECT DATA IN A WEEK"
  114. 1070  PRINT "5.  DELETE DATA IN A WEEK": PRINT "6.  PRINT WEEKLY SCHEDULE": PRINT "7.  REMOVE OLD WEEKS FROM DISK"
  115. 1080  PRINT "8.  END": PRINT : PRINT "PLEASE ENTER YOUR CHOICE ";: GET Z$: PRINT Z$
  116. 1090 I =  VAL(Z$): ON I GOTO 50,60,150,600,700,770,880,930: PRINT B$: GOTO 1050
  117. 1100  TEXT : HOME : VTAB 8: PRINT  TAB( 12)"NIBBLE TV GUIDE": VTAB 12: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **":VT = 20: GOSUB 40
  118. 1110 ED = 6:EE = 6: REM ED IS # ENTRIES;EE IS # ELEMENTS
  119. 1120  DIM SC$(ED *7 +1,EE)
  120. 1130  DIM MO$(13): FOR I = 1 TO 13: READ MO$(I): NEXT : DATA JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC,JAN
  121. 1140  FOR I = 1 TO 7: READ DA$(I): NEXT : DATA SUN,MON,TUE,WED,THU,FRI,SAT
  122. 1150  DIM WK$(53): ONERR  GOTO 1170
  123. 1160  PRINT D$"OPEN WEEKS": PRINT D$"READ WEEKS": FOR I = 1 TO 53: INPUT WK$(I): NEXT : INPUT LW: PRINT D$"CLOSE": POKE 216,0: GOSUB 960: GOTO 1050
  124. 1170  POKE 216,0: DIM Y(13): FOR I = 1 TO 13: READ Y(I): NEXT 
  125. 1180  DATA 31,28,31,30,31,30,31,31,30,31,30,31,31
  126. 1190 LY = 0: REM  LY = 1 IN LEAP YEAR, 0 IN NON-LEAP YEAR. SET UP FOR 1986
  127. 1200 FD = 5: REM  FIRST SUNDAY OF THE YEAR. SET UP FOR 1986
  128. 1210 Y(2) = Y(2) +LY
  129. 1220 WK = 1:FD = FD -1: FOR I = 1 TO 12:FS = FD +1
  130. 1230 WK$ = MO$(I) +"." + STR$(FS) +"...": IF FS +6 < = Y(I)  THEN WK$ = WK$ +MO$(I) +"." + STR$(FS +6): GOTO 1250
  131. 1240 FD = FS +6 -Y(I):WK$ = WK$ +MO$(I +1) +"." + STR$(FD):WK$(WK) = WK$:WK = WK +1: GOTO 1270
  132. 1250 WK$(WK) = WK$:WK = WK +1: IF FS +6 = Y(I)  THEN FD = 0: GOTO 1270
  133. 1260 FS = FS +7: GOTO 1230
  134. 1270  NEXT :LW = 1
  135. 1280  PRINT D$"CLOSE": PRINT D$"OPEN WEEKS": PRINT D$"WRITE WEEKS": FOR I = 1 TO 53: PRINT WK$(I): NEXT : PRINT LW: PRINT D$"CLOSE": GOSUB 960: GOTO 1050