870 VTAB 22: FOR Z = 1 TO 40: PRINT "-";: NEXT :V = 23:X$ = "ENTER <Q> TO QUIT": GOSUB 830:V = 24:X$ = "ENTER ZERO (0) TO DISPLAY DATES": GOSUB 830: POKE 35,21: RETURN
880 VTAB 23: PRINT "<";: INVERSE : PRINT "RET";: NORMAL : PRINT ">";: PRINT " = CONTINUE <";: INVERSE : PRINT "ESC";: NORMAL : PRINT "> FOR MAIN MENU";
890 RETURN
900 VTAB 23: HTAB 1: PRINT "ANY KEY TO CONTINUE..<";: INVERSE : PRINT "ESC";: NORMAL : PRINT "> FOR MENU";: GET X$: POKE -16368,0: HOME : IF X$ = CHR$(27) THEN EF = 1
910 RETURN
920 GOSUB 180:V = 10: FLASH :X$ = " SORTING EVENTS BY DATE": GOSUB 830: GOSUB 1010: FOR I = 1 TO 1500: NEXT : HOME : RETURN
930 PRINT D$"PR#1": PRINT CHR$(0)
940 PRINT D$"PR#0": RETURN
950 REM
960 REM ****************
970 REM * *
980 REM * SORT EVENTS *
990 REM * *
1000 REM ****************
1010 IF N = 1 THEN RETURN : REM NO NEED TO SORT
1020 K = N -1: FOR I = 1 TO K: REM BUBBLE SORT TO NUMERICALLY SORT EVENTS BY DATE
1910 IF PR THEN PRINT CHR$(27); CHR$(88);: FOR I = 1 TO L: PRINT CHR$(32);: NEXT
1920 IF PR THEN PRINT CHR$(27); CHR$(89);: PRINT CHR$(12);: PRINT CHR$(27); CHR$(114);: PRINT CHR$(10): PRINT CHR$(27); CHR$(102)
1930 GOSUB 1470: REM PRINT STRING
1940 PRINT : IF PR THEN 1960
1950 IF J <N AND PEEK(37) = >19 THEN EF = 0: GOSUB 900: IF EF GOTO 3700
1960 NEXT J
1970 IF PR THEN PRINT : PRINT : PRINT : PRINT D$;"PR#0": PRINT CHR$(9);"I": HOME
1980 POKE -16368,0: VTAB 22: HTAB 1: PRINT "ANY KEY TO CONTINUE..<";: INVERSE : PRINT "ESC";: NORMAL : PRINT "> FOR MENU";: GET X$: POKE -16368,0: HOME : IF X$ = CHR$(27) THEN 3700
1990 TEXT : GOSUB 190
2000 IF PR THEN PRINT : PRINT D$;"PR#1"
2010 NEXT F
2020 PRINT : PRINT D$"PR#0"
2030 GOTO 1640: REM DISPLAY CHOICES
2040 CALL 65338: CALL 65338: VTAB 6: GOSUB 2090
2050 V = 10:X$ = "THERE ARE NO EVENTS FOR " +M$(F) +" " +YR$: GOSUB 830:V = 12:X$ = "PRESS ANY KEY FOR MENU": GOSUB 830: GOSUB 2090: POKE -16368,0
2060 VTAB 12: HTAB 32
2070 GET X$: IF NOT N THEN 3700
2080 GOTO 1640
2090 PRINT : PRINT : FOR I = 1 TO 40: PRINT "*";: NEXT : PRINT : RETURN
2100 REM
2110 REM *******************
2120 REM * *
2130 REM * CREATE CALENDAR *
2140 REM * *
2150 REM *******************
2160 REM
2170 TEXT
2180 J = C
2190 GOSUB 190:V = 1:M1 = 1: GOSUB 840: REM HOME & HEADING
2240 INVERSE : PRINT "NOTE:": NORMAL :NC = 35:A$ = "THIS PART OF THE PROGRAM WILL DELETE ANY EXISTING EVENTS IN THE MONTH CHOSEN.": GOSUB 1470: PRINT
2250 A$ = "TO ADD, CHANGE, OR DELETE ANY EVENTS RETURN TO THE MAIN MENU AND CHOOSE THE ADD/CHANGE/DELETE OPTION."
2260 GOSUB 1470: PRINT
2270 GOSUB 880
2280 POKE -16368,0: GET X$
2290 IF X$ = CHR$(27) THEN TEXT : GOSUB 190: GOTO 3700
2300 GOSUB 180
2310 I = 1
2320 VTAB 4:NC = 40
2330 IF I +N *AD >39 THEN PRINT CHR$(7)"NO MORE ROOM IN THIS CALENDAR MONTH.": PRINT : PRINT "PRESS ANY KEY TO CONTINUE.": GET Z$: PRINT : ON NOT (AD) GOTO 2590: RETURN
2340 A$ = "ENTER THE DATE OF THE EVENT IN " +M$(C)
2380 IF (IN$(I) = "Q" OR IN$(I) = CHR$(113)) AND AD THEN RETURN : REM QUIT ADD ROUTINE
2390 IF IN$(I) = "Q" OR IN$(I) = CHR$(113) THEN 2590: REM QUIT
2400 IF IN$(I) = "0" AND I <2 AND NOT N AND AD THEN VTAB 6:A$ = "NO ENTRIES": GOSUB 1470: GOTO 2370
2410 IF IN$(I) = "0" AND I <2 AND NOT AD THEN VTAB 6:A$ = "NO ENTRIES": GOSUB 1470: GOTO 2370
2420 IF IN$(I) = "0" THEN VTAB 6: FOR J = 1 TO N *AD +I -1:A$ = A$ + STR$(D(J)) +" ": NEXT : GOSUB 1470: GOTO 2370
2430 X = VAL(IN$(I)): GOSUB 850: IF ER = 1 THEN ER = 0: POKE 34,0: POKE 35,24: GOTO 2320
2440 IF AD THEN D(N +I) = X: GOTO 2460
2450 D(I) = X: REM DATE OF EVENT
2460 GOSUB 190:V = 4:X$ = "ENTER THE EVENT(S) FOR THE DATE": GOSUB 830:X$ = M$(C) +" " + STR$(X):V = 5: GOSUB 830: PRINT : PRINT
2470 FOR Z = 1 TO 40: PRINT "-";: NEXT : PRINT
2480 CALL 768:IN$ = MID$ (IN$,1)
2490 IN$(I) = IN$
2500 IF (IN$(I) = "Q" OR IN$(I) = CHR$(113)) AND AD THEN RETURN : REM QUIT ADD ROUTINE
2510 IF LEN(IN$(I)) >159 THEN IN$(I) = LEFT$(IN$(I),159): VTAB 10: HTAB 1: CALL -958: VTAB 11: PRINT "ENTRY TRUNCATED TO 159 CHARACTERS.": PRINT "START OVER(Y/N)? ";: CALL 65338: CALL 65338: POKE -16368,0: GET X$: PRINT X$: ON X$ = "Y" GOTO 2460
2520 IF IN$(I) = "Q" OR IN$(I) = CHR$(113) THEN 2590: REM QUIT
2530 IF IN$(I) = "0" AND I <2 AND NOT N AND AD THEN VTAB 9:A$ = "NO ENTRIES -- ANY KEY TO CONTINUE": GOSUB 1470: VTAB 9: HTAB 34: POKE -16368,0: GET X$: GOTO 2460
2540 IF IN$(I) = "0" AND I <2 AND NOT AD THEN VTAB 9:A$ = "NO ENTRIES - ANY KEY TO CONTINUE": GOSUB 1470: VTAB 9: HTAB 34: POKE -16368,0: GET X$: GOTO 2460
2550 IF IN$(I) = "0" THEN VTAB 9: FOR J = 1 TO N +I -1:A$ = A$ + STR$(D(J)) +" ": NEXT : GOSUB 1470: VTAB 12:A$ = "ANY KEY TO CONTINUE..": GOSUB 1470: VTAB 12: HTAB 22: POKE -16368,0: GET X$: GOTO 2460
2560 IF AD THEN EV$(N +I) = IN$(I): GOTO 2580
2570 EV$(I) = IN$(I): REM EVENT DESCRIPTION
2580 I = I +1: GOSUB 180: IF I +N *(AD) <40 GOTO 2320: REM ANOTHER ENTRY
2590 IF I <2 THEN TEXT : GOSUB 190: GOTO 3700
2600 N = I -1:F = C: GOSUB 920: GOSUB 1110: REM DISK WRITE ROUTINE AFTER SORT
3620 POKE -16368,0: VTAB 23: HTAB 1: PRINT "ANY KEY TO CONTINUE..<";: INVERSE : PRINT "ESC";: NORMAL : PRINT "> FOR MENU";: GET X$: POKE -16368,0: IF X$ = CHR$(27) THEN 3700
3630 IF PR THEN 3660
3640 IF X$ = "P" OR X$ = CHR$(112) THEN POKE 8,20: VTAB 20: PRINT : GOSUB 930: GOSUB 4460: POKE 8,23: PRINT D$"PR#1": PRINT CHR$(13);: PRINT D$"PR#0": GOTO 3680
3650 HOME : RETURN
3660 VTAB 22: HTAB 1: CALL -958: VTAB 22: PRINT : REM CLEAR BOTTOM OF SCREEN
3670 IF PR THEN POKE 8,18: GOSUB 930: GOSUB 4460: REM PRINT SCREEN
3680 POKE -16368,0: VTAB 21: CALL -958: VTAB 22: HTAB 1: PRINT "ANY KEY TO CONTINUE..";: PRINT "<";: INVERSE : PRINT "ESC";: NORMAL : PRINT "> FOR MENU";: GET X$: ON X$ = CHR$(27) GOTO 3700: HOME : RETURN : REM BACK TO PRINT EVENTS
3690 GOSUB 190: VTAB 10: HTAB 18: PRINT "END": END
3700 TEXT : HOME : PRINT "****************************************";:
3740 PRINT TAB( 1)"*"; TAB( 13)"MARK R. CRAVEN"; TAB( 40)"*";
3750 HTAB 1: PRINT "*";: HTAB 40: PRINT "*";
3760 HTAB 1: PRINT "* COPYRIGHT 1985 BY MICROSPARC, INC. *";
3770 HTAB 1: PRINT "*";: HTAB 40: PRINT "*";
3780 PRINT "**************";: INVERSE : PRINT " MAIN MENU ";: NORMAL : PRINT "**************";:
3790 H = 10:V% = 10:S = 5:C = 1:VS% = 2:M1 = 1:FLAG = 0: REM PARAMETERS FOR MAIN MENU
3800 GOTO 240
3810 REM MAIN MENU DATA MU$(1,X)
3820 DATA "DISPLAY EVENT CALENDAR ","CREATE CALENDAR MONTH ","ADD/CHANGE/DELETE EVENTS","DISPLAY/CHANGE YEAR ","QUIT "
3830 REM MONTHS OF YEAR DATA M$(X)
3840 DATA "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"
3850 DATA "MAIN MENU"
3860 REM 9020-9050=INPUT ROUTINE DATA
3870 DATA 162,0,32,117,253,160,2
3880 DATA 138,145,105,200,169,0
3890 DATA 145,105,200,169,2,145
3900 DATA 105,76,57,213
3910 REM DAYS IN EACH MONTH N(X)
3920 DATA 31,29,31,30,31,30,31,31,30,31,30,31
3930 REM DISPLAY EVENT MENU MU$(2,X)
3940 DATA "ONE MONTH ","FULL YEAR ", "MAIN MENU
3950 REM DISPLAY PRINT MENU MU$(3,X)
3960 DATA "SCREEN ONLY ","PRINTER - 80 COL","MAIN MENU "
3970 REM ADD/CHANGE/DELETE MENU MU$(4,X)
3980 DATA "ADD EVENT ","CHANGE/DELETE EVENT","MAIN MENU "
3990 DATA "YES","NO "
4000 IF PEEK(222) = 5 THEN PRINT PEEK(222): GOTO 4030
4010 IF PEEK(222) = 6 THEN 4060
4020 GOTO 4120
4030 PRINT D$"OPEN"M$(F)YR$
4040 PRINT D$;"CLOSE"M$(F)YR$
4050 PRINT D$;"DELETE"M$(F)YR$
4060 PRINT D$"OPEN "M$(F)YR$
4070 PRINT D$"WRITE"M$(F)YR$
4080 PRINT 0,0,""
4090 PRINT D$"CLOSE"M$(F)YR$
4100 POKE 216,0
4110 RESUME
4120 TEXT : HOME :V = 8
4130 IF PEEK(222) = 4 THEN X$ = " DISK WRITE PROTECTED ": GOSUB 830: GOTO 4200
4140 IF PEEK(222) = 8 THEN X$ = " I/O ERROR -- CHECK DRIVE DOOR ": GOSUB 830: GOTO 4200
4150 IF PEEK(222) = 9 THEN X$ = " DISK FULL -- INSERT ANOTHER DISK ": GOSUB 830: GOTO 4200
4160 IF PEEK(222) = 10 THEN X$ = "FILE IS LOCKED--UNLOCK ? (Y/N) ?": GOSUB 830: CALL 65338: CALL 65338: POKE -16368,0: GET X$: IF LEFT$(X$,1) = "N" OR LEFT$(X$,1) = CHR$(110) THEN PRINT : PRINT " CANNOT CONTINUE ": END
4170 PRINT :V = 8: IF PEEK(222) = 6 THEN X$ = "PROGRAM NOT ON DISK": TEXT : HOME : GOSUB 830:V = 9:X$ = "CANNOT CONTINUE": GOSUB 830: END
4180 IF PEEK(222) = 10 THEN X$ = " UNLOCKING FILE IN PROGRESS": VTAB 8: CALL -868: GOSUB 830: PRINT : PRINT D$"UNLOCK"M$(F)YR$: GOSUB 1110: GOTO 4200: REM WRITE FILE AGAIN
4190 HOME : PRINT "ERROR " PEEK(222)" IN LINE " PEEK(219) *256 + PEEK(218)
4200 VTAB 20: HTAB 1: PRINT "PRESS ANY KEY TO CONTINUE..";: POKE -16368,0: GET X$
4210 DL = 0
4220 M1 = PEEK(894):CS = PEEK(895): ON PEEK(896) +1 GOTO 400,730: REM BACK TO LAST USED MENU AFTER ERROR
4230 REM ** GET NEW YEAR
4240 HOME : VTAB 6: PRINT "CURRENT YEAR: "YR$: VTAB 22: PRINT "<RETURN> TO KEEP SAME YEAR"
4250 VTAB 12: CALL -868: VTAB 12: PRINT "INPUT NEW YEAR (YYYY): ";: INPUT "";YY$
4260 IF YY$ = "" GOTO 3700
4270 IF LEN(YY$) < >4 GOTO 4250
4280 IF VAL(YY$) <1753 OR VAL(YY$) >9999 GOTO 4250
4470 FOR J = I TO I +39:A = PEEK(J):A = A +(A <32) *192:A = A +(A <64) *128:A = A +(A <96) *64:A = A +(A <128) *64:A = A +(A <160) *64: PRINT CHR$(A);: NEXT J: PRINT CHR$(13);: RETURN
4480 PRINT CHR$(4)"PR#1": PRINT CHR$(9)"80N"
4490 FOR I = 1024 TO 1920 STEP 128: GOSUB 4470: NEXT I
4500 FOR I = 1064 TO 1960 STEP 128: GOSUB 4470: NEXT I
4510 FOR I = 1104 TO 1616 -384 *(NR <6) STEP 128: GOSUB 4470: NEXT I