Compucolor.org – Virtual Media

Listing of file='CLNDR1.BAS;01' on disk='vmedia/chip_129-sector.ccvf'

2 REM  CALENDAR MAINTAIMCE PROGRAM VER 7.5
3 REM  LARRY PETERSON SITTINGBOURNE, KENT, ENGLAND MAY 1982
4 REM HARD COPY FOR MX-80 TYPE II WITH 132 CHARACTERS/LINE
10 CLEAR 2000
15 DIM ME$(7,12),M$(12),M(7,12),DT(37),L$(130)
20 FOR  X= 1TO  7: FOR Y= 1 TO  12: ME$(X,Y)= " ": M(X,Y)= 1: NEXT Y,X
25 D$ = "----------------"
30 WE = 1
35 PLOT 14,30,16,29,22,12,27,11
40 FOR  X = 1 TO  7:READ  D$(X):NEXT  X
45 DATA  SUNDAY,MONDAY,TUESDAY,WEDNESDAY,TURSDAY,FRIDAY,SATURDAY
50 FOR  X = 1 TO  12:READ  M$(X):NEXT
55 DATA  JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER
57 PLOT 3,13,6:PRINT "FOR INSTRUCTIONS RUN 'CLNDRI'"
60 PLOT 3,7,10:INPUT "IN WHICH YEAR WILL WE BE WORKING (82,83)? ";YR
65 IF  YR> 99 THEN  60
70 PLOT 3,13,14,20:INPUT "GIVE BAUD RATE (1,2,3,4,5,6,7) ";BD
100 PLOT 12,14:PRINT TAB( 20)"****** MAIN MENU *****":PRINT
110 PRINT TAB( 20)"BEGIN A NEW MONTH ......1"
120 PRINT TAB( 20)"ADD A WEEK .............2"
130 PRINT TAB( 20)"EDIT A DAY .............3"
135 PRINT TAB( 20)"CHANGE MONTHS ..........4"
140 PRINT TAB( 20)"LOAD A WEEK ............5"
150 PRINT TAB( 20)"SAVE A WEEK ............6"
160 PRINT TAB( 20)"PRINT THE MEETINGS .....7"
170 PRINT TAB( 20)"VEIW WEEK BY DAYS ......8"
180 PRINT :PRINT TAB( 20)"MAKE YOUR SELECTION ... ";
185 PLOT 2,92,44,242,36,44,36,114,92,114,92,28,85,28,85,44,255
187 INPUT ""; NO
190 PLOT 15,12:IF NO < 1 OR  NO > 8 THEN 100
200 ON NO GOSUB 300,500,3000,1700,4000,5000,6000,7000
210 PLOT 12,14,19:GOTO 100
300 REM    BEGIN A NEW CALENDAR MONTH
310 GOTO 365
320 PLOT 3,0,8:FOR X = 1 TO 12
330   PRINT TAB( 20)""X"....."M$(X)
340 NEXT X
350 PLOT 3,0,14:PRINT "  WHICH MONTH? ";
352 PLOT 2,74,44,242,38,44,38,65,1,65,1,74,38,74,38,98,74,98,74,44,255
354 INPUT "";Q
355 IF Q < 0 OR  Q > 12 THEN 300
360 M1$ = LEFT$ (M$(Q),3):RETURN
365 GOSUB 320:FILE "T",420
370 FILE "N",M1$,5,1024,1
380 RETURN
420 PRINT "A CALENDAR ALREADY EXISTS FOR "M$(Q)"": RETURN
500 REM    ADD A DATE TO THE CALENDAR
510 IF Q = 0 THEN GOSUB 320
520 PLOT 12,15,18:GOSUB 1500:PLOT 8
530 PRINT "         ADD A WEEK TO THE CALENDAR."
534 PRINT "ANY EXISTING INFORMATION FOR A DAY WILL BE LISTED IN THE BOX."
540 PRINT "ENTER C OR c TO COPY; D OR d TO DELETE THE INFORMATION."
545 PRINT "ENTERING A - WILL SET YOU BACK A DAY."
548 PRINT "RETURN WITHOUT ENTERING ANY CHARACTERS WILL ADVANCE DAYS."
550 PRINT "ONLY DATA INSIDE THE BOX WILL BE COPIED!"
560 PRINT "WHICH WEEK IN THE MONTH OF "M$(Q)" TO ENTER? ";:INPUT "";WE
600 IF F1= 0THEN 900
610 IF F2= WETHEN 900
620 PLOT 12,3,1,10
630 PRINT "YOU HAVE NOT SAVED WEEK "F2" YET"
640 INPUT "WOULD YOU LIKE TO (Y OR N)? ";A$
650 IF A$= "Y"THEN WE= F2:GOSUB 5000
660 F1= 0:GOTO 500
900 F1= WE:F2= WE
1000 REM      GET A WEEKS SCHEDULE
1010 GOSUB 2000
1020 FOR X = 1 TO 7:PLOT 3,22,9:PRINT "         "
1030   PLOT 3,22,9:PRINT "" D$(X)""
1040   GOSUB 1300:GOSUB 1080
1060 NEXT X:RETURN
1080 REM     BLOCK EDITER
1100 PLOT 3,0,9
1120 FOR Y = 2 TO 12
1140   PLOT 3,16,10 + Y:INPUT "";M$:M$ = LEFT$ (M$,17)
1150   IF M$ = "0" THEN RETURN
1160 IF M$= "D"OR M$= "d"THEN PLOT 3,16,10+ Y:PRINT "                 ":M$= ""
1180 IF M$= "C"OR M$= "c"THEN PLOT 3,16,10+ Y:PRINT ME$(X,Y):GOTO 1220
1190 IF M$= "U"OR M$= "u"THEN PLOT 3,16,10+ Y:PLOT 32,26:PRINT ME$(X,Y):Y= Y- 1:GOTO 1140
1195 IF M$= "-"AND X> 1THEN X= X- 2:RETURN
1197 IF M$= "-"THEN X= 0:RETURN
1200   ME$(X,Y) = M$:M(X,Y) = LEN (ME$(X,Y))
1210 IF M(X,Y)= 0THEN M(X,Y)= 1
1220 NEXT Y:RETURN
1300 REM     BLOCK LISTER
1315 FOR Y= 1TO 12:PLOT 3,16,10+ Y:PRINT "                 ":NEXT
1320 PLOT 3,0,9
1340 FOR Y = 1 TO 12
1360   PLOT 3,16,10 + Y:PRINT ME$(X,Y)
1380 NEXT Y:RETURN
1500 REM     REM DRAW THE BOX SIZE
1510 PLOT 22,2,30,86,242,67,86,67,34,30,34,30,86,255
1520 RETURN
1700 REM    CHANGE MONTHS
1720 PLOT 12,15:GOSUB 320:GOSUB 2000:GOTO 100
2000 REM    FIND CALENDAR DATES
2010 Y = 0:C1 = 19
2015 FOR X = 1 TO 37:DT(X) = 0:NEXT X
2020 FOR X = 1 TO 7:ME$(X,1) = " ":NEXT X
2100 DEF FN L(X) = X = 4 * INT (X/ 4)AND X> < 100* INT (X/ 100)OR X= 400* INT (X/ 400)
2120 DEF FN T(X) = 31 * (X- 1) + INT (2.2+ .4* X)* (X> 2)
2140 W= FN T(Q)+ 36- 28* Q+ YR+ INT (YR/ 4)- 2* (C1- 4* INT (C1/ 4))- FN L(100* C1+ YR)* (Q< 3)
2145 W1 = INT (W / 7)
2160 W = W - 7 * W1
2180 W = W - 7 * (W = 0)
2200 LN = FN T(Q + 1) - FN T(Q) + FN L(100 * C1 + YR) * (Q = 2)
2220 FOR X = W TO LN + W - 1:Y = Y + 1:DT(X) = Y:NEXT :Y = 0
2240 FOR X = 7 * WE - 6 TO 7 * WE:Y = Y + 1
2255   IF DT(X) = 0 GOTO 2300
2260   ME$(Y,1) = STR$ (DT(X)):M(Y,1)= 3
2300 NEXT X
2310 IF DT(36) > 0 AND  WE = 5 THEN GOSUB 2330
2320 RETURN
2330 ME$(1,6) = D$:ME$(1,7) = STR$ (DT(36))
2340 IF DT(37)> 0THEN  ME$(2,6) = D$:ME$(2,7) = STR$ (DT(37))
2350 RETURN
3000 REM    EDIT A DATE ON THE CALENDAR
3005 PLOT 12,3,0,8
3008 FOR X = 1 TO 7:PRINT TAB( 20)""X") "D$(X)"":NEXT  X
3010 PRINT :INPUT "           WHICH DAY OF THE WEEK TO EDIT? ";X
3040 PLOT 12,20,3,22,9:PRINT  D$(X)
3060 GOSUB 1500:GOSUB 1300:GOSUB 1080:RETURN
4000 REM    LOAD A CALENDAR FROM THE DISK
4100 PRINT "SELECT A MONTH TO READ ":PRINT :GOSUB  320
4105 PLOT 12,19,14:PLOT 3,15,15
4110 PRINT "WHICH WEEK IN "M$(Q)" TO READ?";:INPUT " ";WE:PLOT 12
4140 FILE "R",1,M1$,1:B = 1
4150 IF NO < > 7 THEN PLOT 12,14,20,3,20,15:PRINT "READING "M$(Q)" WEEK "WE
4160 FOR X = 1 TO 7
4180   FOR Y = 1 TO 12
4190     GET 1,WEEK,B;C:M(X,Y) = C: B = B + 4
4200     GET 1,WEEK,B;ME$(X,Y)[C]:B = B + C
4240   NEXT Y
4260 NEXT X
4270 IF NO < > 7 THEN PLOT 12,15,18
4280 FILE "C",1:RETURN
5000 REM    SAVE THE CALENDAR
5080 B= 1
5140 PLOT 3,13,15,20,14:PRINT "STORING WEEK "WE" OF "M$(Q)
5150 FILE "R",1,M1$,1:B = 1
5160 FOR X = 1 TO 7
5180   FOR Y = 1 TO 12:C = M(X,Y)
5190     PUT 1,WEEK,B;C:B = B + 4
5200     PUT 1,WEEK,B;ME$(X,Y)[C]:B = B + C
5240   NEXT Y
5260 NEXT X
5280 FILE "C",1:RETURN
6000 REM    PRINT THE MEETING SCHEDULE ON THE CALENDAR
6010 PLOT 12,15:PRINT :PRINT TAB( 20)"PRINT HEADINGS .......6"
6020 PRINT TAB( 20)"PRINT WEEK 1 .........1"
6030 PRINT TAB( 20)"PRINT WEEK 2 .........2"
6040 PRINT TAB( 20)"PRINT WEEK 3 .........3"
6050 PRINT TAB( 20)"PRINT WEEK 4 .........4"
6060 PRINT TAB( 20)"PRINT WEEK 5 .........5"
6065 PRINT TAB( 20)"PRINT THE MONTH ......7"
6070 PRINT TAB( 20)"PRINT FROM KEYBOARD...8"
6080 PRINT : PRINT TAB( 19);:INPUT "MAKEY YOUR SELECTION ";W1
6100 IF W1 = WEEK GOTO 6145
6120 IF W1 = 6 GOTO 6700
6125 IF W1 = 8 GOTO 6350
6130 IF Q = 0 THEN PLOT 12:PRINT "WHICH MONTH TO PRINT":PRINT :GOSUB 320
6135 IF W1 = 7 GOTO 6500
6140 WEEK = W1:GOSUB 4140
6145 GOSUB 6150:GOSUB 6200:POKE 33265,0:RETURN
6150 PLOT 27,18,BD,27,13:REM  SET BAUD TO 9600 & OUTPUT TO PRINTER
6155 PLOT 18,20,15,27,48:REM 15=132 CHARACTERS/LINE & 27,48=8 LINES/IN
6160 PLOT 27,68,19,38,57,76,95,114,0:RETURN :REM PRINT TAB SETTINGS
6200 REM      PRINT OUT A WEEKS SCHEDULE
6220 FOR Y = 1 TO 12
6240   FOR X = 1 TO 7
6250 IF LEN (ME$(X,Y))= 0GOTO 6280
6265     FOR T = 1 TO LEN (ME$(X,Y)):PLOT ASC (MID$ (ME$(X,Y),T,T)):NEXT
6280 PLOT 9:NEXT X:PLOT 10,13
6300 NEXT Y
6320 GOSUB 6900:RETURN
6350 PLOT 12,3,0,3:PRINT "POSITION THE PAPER IN THE PRINTER AND ENTER"
6360 PRINT "THE MATERIAL YOU WOULD LIKE TO ADD TO THE CALENDAR."
6370 PRINT "UP TO 120 CHARACTERS PER LINE CAN BE PRINTED."
6380 PRINT "TO END ENTER 'E'":PRINT :PRINT
6390 INPUT "INPUT LINE ";L$
6400 IF L$= "E" THEN RETURN
6410 PLOT 27,18,BD,27,13,27,48:PRINT L$:POKE 33265,0
6420 GOTO 6390
6500 REM  PRINT THE ENTIRE CALENDAR
6510 GOSUB 6700:GOSUB 6150
6520 FOR WE = 1 TO 5
6530 GOSUB 4140:GOSUB 6200
6550 NEXT WE:POKE 33265,0:RETURN
6700 REM    PRINT CALENDAR HEADINGS
6703 IF Q = 0 THEN PLOT 12,15:GOSUB 320
6705 PLOT 27,18,BD,27,13:PLOT 15,14
6708 PLOT 27,68,19,38,57,76,95,114,0
6710 PRINT TAB( 15)"CALENDAR FOR THE MONTH OF "M$(Q)
6720 PRINT :PRINT
6730 FOR X = 1 TO 7:PRINT "  " D$(X);:PLOT 9:NEXT :PRINT
6740 GOSUB 6900:POKE 33265,0:RETURN
6900 FOR L = 1 TO 130:PLOT 45:NEXT L:PRINT :RETURN
7000 REM    VIEW A MONTH BY DAYS
7004 T(1)= 0:T(2)= 20:T(3)= 40:T(4)= 0:T(5)= 20:T(6)= 40
7005 PLOT 12:PRINT  TAB( 17)"MONTH OF "M$(Q)" WEEK"WE""
7075 FOR X = 1 TO 3:PRINT TAB( T(X))"";D$(X);:NEXT X:PRINT ""
7080 FOR Y = 1 TO 12
7090   FOR X = 1 TO 3
7100   PRINT TAB( T(X));ME$(X,Y);
7110   NEXT X:PRINT
7120 NEXT Y
7140 FOR X = 4 TO 6:PRINT TAB( T(X))"";D$(X)"";:NEXT  X:PRINT
7150 FOR Y = 1 TO 12
7160   FOR X = 4 TO 6
7170     PRINT TAB( T(X));ME$(X,Y);
7180   NEXT X:PRINT
7190 NEXT  Y
7200 PRINT TAB( 20)"";D$(7)"":X = 0
7205 FOR Y1 = 1 TO 4
7210   FOR Y = Y1 TO 12 STEP 4:X = X + 1
7220     PRINT  TAB( T(X));ME$(7,Y);
7230   NEXT Y:IF Y1 < 4 THEN PRINT :X = 0
7250 NEXT Y1
7340 PLOT 3,62,5,27,10
7350 INPUT "HIT RETURN FOR MENU ";A$:PLOT 27,11:RETURN