310 VTAB 20: PRINT "** COPYRIGHT 1983 BY MICROSPARC, INC. **": VTAB 12: INPUT "ENTER CURRENT DATE (MM,DD,YY) :";MM,DD,YY
320 IF MM <1 OR MM >12 OR YY <1 OR YY >99 OR DD <1 THEN 250
330 IF YY/4 < > INT(YY/4) AND MM = 2 AND DD >28 THEN 250
340 IF YY/4 = INT(YY/4) AND MM = 2 AND DD >29 THEN 250
350 IF MM < >2 THEN IF DD >DA(MM) THEN 250
360 IF LEN( STR$(YY)) = 2 THEN YR$ = STR$(YY): GOTO 380
370 IF LEN( STR$(YY)) <2 THEN YR$ = "0" + STR$(YY)
380 GOSUB 9500
390 POKE 34,8: HOME : POKE 32,5: POKE 33,35: HOME
400 PRINT "[1] LIST TODAYS' MEMOS": PRINT "[2] LIST MEMOS FOR SELECTED DATE": PRINT "[3] ADD MEMOS TO CALENDAR": PRINT "[4] DELETE ALL MEMOS": PRINT "[5] EXIT PROGRAM"
410 PRINT : PRINT "SELECT ONE OF THE ABOVE:";: GET A$: PRINT A$: IF VAL(A$) <1 OR VAL(A$) >5 THEN 390
420 TEXT : HOME :R = 0:TM = 0:TD = 0:TY = 0:ME$ = "":PR = 0
430 ON VAL(A$) GOSUB 1010,3000,5000,7000,9000
440 TEXT : HOME :FL = 1: GOSUB 250: GOTO 390
1000 REM LIST OUT CURRENT DATES MEMOS
1010 TM = MM:TD = DD:TY = YY: GOSUB 9010
1020 PRINT O$: PRINT R$;R: INPUT ME: IF ME = 0 THEN PRINT C$:FL = 1: VTAB 12: CALL -958: VTAB 12: PRINT "NO MEMOS FOR "MO$(MM)" "DD", 19"YR$".": VTAB 23: PRINT "PRESS ANY KEY TO RETURN TO MENU.";: GET A$: PRINT : RETURN
1030 FOR I = 1 TO ME: INPUT ME(I): NEXT : PRINT C$: IF PR THEN 1050
1040 VTAB 12: CALL -958: VTAB 12: PRINT "DO YOU WANT A PRINT OUT?";: GET A$: PRINT : IF A$ = "Y" THEN PR = 1
1050 HOME : VTAB 12: PRINT "READING IN MEMO FILES..."
1060 FOR I = 1 TO ME: PRINT OM$: PRINT RM$;ME(I):ME$(I) = ""
1070 CALL -662: FOR J = 512 TO 637:L = PEEK(J): IF L = 141 THEN 1090
1080 L = L -128:ME$(I) = ME$(I) + CHR$(L): NEXT J
1090 NEXT I: PRINT C$
1100 IF ME <2 THEN 1190
1110 FOR I = 1 TO ME -1
1120 FOR J = I +1 TO ME
1130 IF LEFT$(ME$(I),4) < = LEFT$(ME$(J),4) THEN 1170
1140 T$ = ME$(I):T = ME(I)
1150 ME$(I) = ME$(J):ME(I) = ME(J)
1160 ME$(J) = T$:ME(J) = T
1170 NEXT
1180 NEXT
1190 TEXT : HOME
1200 IF PR THEN PRINT CHR$(4);"PR#1": PRINT CHR$(9);"80N": REM TURN ON PARALLEL PRINTER IN SLOT 1.
1210 IF PR THEN PRINT "CURRENT DATE : "MO$(MM)" "DD", 19"YR$
1220 IF AD AND PR THEN PRINT "MEMOS FOR ";MO$(TM)" "TD", 19";TY$
1230 FOR I = 1 TO 10: IF R = HD(I) AND PR THEN PRINT HD$(I): GOTO 1250
1240 NEXT
1250 IF PR THEN GOSUB 5450: REM PRINT OUT
1260 PRINT "CURRENT DATE : "MO$(MM)" "DD", 19"YR$
1270 IF AD THEN PRINT "MEMOS FOR ";MO$(TM)" "TD", 19";TY$
1280 FOR I = 1 TO 10: IF R = HD(I) THEN PRINT HD$(I): GOTO 1300
1320 FOR I = 1 TO ME: INVERSE : PRINT "MEMO #";I: NORMAL : PRINT T1$(I)":"T2$(I);T3$(I);: GOSUB 9700: PRINT
1330 IF I/3 = INT(I/3) AND I < >ME THEN GOSUB 1440
1340 NEXT : GOSUB 1440: TEXT : HOME
1350 IF AD THEN AD = 0: RETURN
1360 VTAB 12: PRINT "DO YOU WANT TOMORROWS' MEMOS ?";: GET A$: PRINT A$: IF A$ = "N" THEN RETURN
1370 TD = TD +1: IF TD >DA(TM) THEN TD = 1:TM = TM +1: IF TM = 3 AND TY/4 < > INT(TY/4) THEN R = R +1
1380 TY$ = YR$
1390 IF TM >12 THEN TM = 1:TY = TY +1:TY$ = STR$(TY): IF LEN(TY$) <2 THEN TY$ = "0" +TY$
1400 R = R +1
1410 PRINT O$: PRINT R$;R: INPUT ME: IF ME = 0 THEN PRINT C$:FL = 1: VTAB 12: CALL -958: VTAB 12: PRINT "NO MEMOS FOR "MO$(TM)" "TD", 19"TY$".": VTAB 23: PRINT "PRESS ANY KEY TO RETURN TO MENU.";: GET A$: PRINT : RETURN
1420 AD = 1: GOSUB 1030
1430 RETURN
1440 REM DELETE A MEMO
1450 VTAB 21: PRINT "PRESS <SPACE> TO DELETE ALL MEMOS FOR THIS DATE, <#> TO DELETE A MEMO, OR <RETURN> TO CONTINUE.": POKE 34,20
1460 X = PEEK( -16384)
1470 IF X = 141 THEN POKE -16368,0: POKE 34,4: HOME : RETURN
1480 IF X = 160 THEN POKE -16368,0: GOTO 1510
1490 IF X = 163 THEN POKE -16368,0: POKE 34,20: HOME : GOTO 1540
1500 GOTO 1460
1510 REM DELETE ALL MEMOS FOR CURRENT DATE.
1520 PRINT "ENTER SECURITY CODE TO CONFIRM :";: INPUT "";A$: IF A$ < >SC$ THEN POKE 34,4: HOME : RETURN
1550 HOME : PRINT "DELETE WHICH MEMO (0 TO ABORT)";: INPUT DE
1560 IF DE = 0 THEN POKE 34,4: HOME : RETURN
1570 IF ME = 1 THEN GOSUB 1530
1580 FOR J = DE TO ME -1:ME(J) = ME(J +1): NEXT
1590 ME = ME -1
1600 PRINT O$: PRINT W$;R: PRINT ME: FOR I = 1 TO ME: PRINT ME(I): NEXT : PRINT C$
1610 POP : GOTO 1060
3000 REM VIEW ANY DATES MEMOS
3010 HOME : VTAB 12: PRINT "ENTER DATE FOR MEMOS YOU WISH TO VIEW INTHE FOLLOWING FORM (MM,DD,YY) :";: INPUT "";TM,TD,TY
3020 IF TM <1 OR TM >12 OR TY <0 OR TY >99 THEN 3010
3030 IF TD <1 OR TD >DA(TM) THEN 3010
3040 TY$ = STR$(TY): IF LEN(TY$) <2 THEN TY$ = "0" +TY$
3050 HOME
3060 R = 0: GOSUB 9010
3070 PRINT O$: PRINT R$;R: INPUT ME: IF ME = 0 THEN PRINT C$:FL = 1: VTAB 12: CALL -958: VTAB 12: PRINT "NO MEMOS FOR "MO$(TM)" "TD", 19"TY$".": VTAB 23: PRINT "PRESS ANY KEY TO RETURN TO MENU.";: GET A$: PRINT : RETURN
3080 AD = 1: GOSUB 1030
3090 TEXT : HOME : VTAB 12: PRINT "DO YOU WISH TO SEE ANOTHER DATE ?";: GET A$: PRINT A$: IF A$ = "Y" THEN 3000
3100 RETURN
5000 REM ADD A MEMO TO CALENDAR
5010 PRINT OM$: PRINT RM$;0: INPUT M1: PRINT C$
5020 PRINT "CURRENT DATE :"MO$(MM)" "DD", 19"YR$
5030 PRINT "________________________________________": POKE 34,2: HOME
5040 ME$ = ""
5050 M1 = M1 +1
5060 VTAB 5: PRINT "ENTER TIME FOR MEMO IN MILITARY FASHION.(EXAMPLE 2300 = 11:00 P.M.) :____";: HTAB PEEK(36) -3: INPUT "";TI$
5070 IF TI$ = "" THEN TI$ = "9999": GOTO 5090
5080 IF VAL( LEFT$(TI$,2)) >24 OR VAL( LEFT$(TI$,2)) <0 OR VAL( MID$ (TI$,3,2)) <0 OR VAL( MID$ (TI$,3,2)) >59 THEN HOME : GOTO 5060
5090 IF LEN(TI$) < >4 THEN HOME : GOTO 5060
5100 VTAB 8: PRINT "ENTER YOUR MEMO:"
5110 FOR I = 1 TO 120: PRINT "_";: NEXT : GOSUB 9540
5120 VTAB 18: PRINT "IS THIS INFORMATION CORRECT ?";: GET A$: PRINT : IF A$ = "N" THEN ME$ = "": TEXT : HOME : GOTO 5000
5130 HOME : VTAB 4: PRINT "ON HOW MANY DATES DO YOU WANT THIS MEMO STORED ? ( 0 TO EXIT TO MENU.) :";: INPUT "";SM: IF SM >52 THEN PRINT : PRINT "TOO MANY DATES - 52 IS MAX.)": FOR I = 1 TO 3000: NEXT : GOTO 5130
5350 IF RE = 15 THEN PRINT : PRINT "THERE ARE ALREADY FIFTEEN MEMOS STORED FOR "MO$(TM(J))" "TD(J)".": GOTO 5400
5360 FOR I = 1 TO RE
5370 INPUT RE(I): NEXT
5380 RE = RE +1:RE(RE) = M1
5390 PRINT W$;R(J): PRINT RE: FOR I = 1 TO RE: PRINT RE(I): NEXT
5400 NEXT : PRINT C$
5410 VTAB 22: PRINT "PRESS <SPACE> FOR ANOTHER MEMO, <RETURN>TO GO BACK TO MENU."
5420 X = PEEK( -16384): IF X = 160 THEN POKE -16368,0: HOME :ME$ = "": GOTO 5020
5430 IF X = 141 THEN POKE -16368,0: RETURN
5440 GOTO 5420
5450 REM PRINT OUT DAILY MEMOS.
5460 PRINT : FOR I = 1 TO ME:T1$(I) = LEFT$(ME$(I),2):T2$(I) = MID$ (ME$(I),3,2)
5470 IF T1$(I) = "99" THEN T1$(I) = " ":T2$(I) = " ":T3$(I) = " ": GOTO 5520
5480 IF VAL(T1$(I)) <12 THEN T3$(I) = " AM": GOTO 5520
5490 IF VAL(T1$(I)) >12 AND VAL(T1$(I)) <24 THEN T3$(I) = " PM":T1$(I) = STR$( VAL(T1$(I)) -12):T1$(I) = "0" +T1$(I): GOTO 5520
5500 IF T1$(I) = "12" THEN T3$(I) = " NOON": GOTO 5520
5510 IF T1$(I) = "00" OR T1$(I) = "24" THEN T1$(I) = "12":T3$(I) = " MID."
5520 IF LEN(T1$(I)) >2 THEN T1$(I) = MID$ (T1$(I),2,2)
5530 NEXT : IF FL = 1 THEN FL = 0: RETURN
5540 FOR I = 1 TO ME: PRINT T1$(I)":"T2$(I);T3$(I);: GOSUB 9710: NEXT
5550 PRINT CHR$(4)"PR#0"
5560 RETURN
7000 REM : RENEW MEMO AND DATES FILES
7010 TEXT : HOME : VTAB 12: PRINT "THIS OPTION WILL DELETE ALL MEMOS CURRENTLY STORED. ONCE DELETED, THEY CANNOT BE RECOVERED. PRESS <RETURN> TO DELETE FILES, <SPACE> TO ABORT."
7020 X = PEEK( -16384): IF X = 160 THEN POKE -16368,0: RETURN
7030 IF X = 141 THEN POKE -16368,0: GOTO 7050
7040 GOTO 7020
7050 PRINT : PRINT "PLEASE ENTER YOUR SECURITY CODE : ";: INPUT "";A$: IF A$ < >SC$ THEN RETURN
7060 HOME : VTAB 12: PRINT "FILES BEING RENEWED...": POKE 34,13: HOME
7070 PRINT O$: FOR I = 1 TO 366: PRINT W$;I: PRINT 0: NEXT : PRINT C$
7080 PRINT CHR$(4)"DELETE MEMOS"
7090 PRINT OM$: PRINT WM$;0: PRINT 0: PRINT C$
7100 RETURN
8000 REM : CENTERING ROUTINE
8010 HTAB 20 - LEN(A$)/2: PRINT A$: RETURN
9000 TEXT : HOME : END
9010 REM ROUTINE TO DETERMINE WHICH DATES FILE TO OPEN
9020 IF TM = 1 THEN 9060
9030 FOR J = 1 TO TM -1
9040 R = R +DA(J)
9050 NEXT
9060 R = R +TD
9070 IF TM >2 AND DA(2) = 28 THEN R = R +1
9080 RETURN
9100 REM : SET UP HOLIDAYS
9110 FOR I = 1 TO 10: READ HD$(I),HD(I): NEXT
9120 FOR I = 1 TO 12: READ MO$(I),DA(I): NEXT
9130 RETURN
9200 REM : CREATE SECURITY FILE
9210 VTAB 20: PRINT "** COPYRIGHT 1983 BY MICROSPARC, INC. **": VTAB 10: PRINT "ENTER A SECURITY CODE : ____";: HTAB ( PEEK(36) -3)
9220 FOR I = 1 TO 4: GET A$: IF A$ = CHR$(13) THEN PRINT : PRINT "ENTRY ERROR !": FOR I = 1 TO 3000: NEXT :SC$ = "": HOME : GOTO 9210
9250 HOME : PRINT "INITIALIZING FILES...": PRINT O$
9260 FOR I = 1 TO 366: PRINT W$;I: PRINT 0: NEXT : PRINT C$
9270 PRINT OM$: PRINT WM$;0: PRINT 0: PRINT C$
9280 GOTO 250
9300 REM : ERROR ROUTINES
9310 ER = PEEK(222): REM ERROR TYPE
9320 EL = PEEK(218) + PEEK(219) *256
9330 IF ER = 6 THEN 9200
9340 IF ER = 254 AND EL = 5130 THEN 5130
9350 IF ER = 22 THEN FL = 1: GOSUB 250:FL = 0: GOTO 390
9360 IF ER = 4 THEN TEXT : HOME : VTAB 12: PRINT "THIS DISK IS WRITE PROTECTED.": END
9370 IF ER = 8 THEN TEXT : HOME : VTAB 12: PRINT "AN I/O ERROR HAS OCCURRED.": END
9380 IF ER = 9 THEN TEXT : HOME : VTAB 12: PRINT "THIS DISK IS FULL.": END
9390 IF ER = 254 AND EL <300 THEN VTAB PEEK(37): RESUME
9400 IF ER = 254 AND EL >300 THEN FL = 1: GOSUB 250:FL = 0: GOTO 390
9410 TEXT : HOME : VTAB 12: PRINT "ERROR #"ER" OCCURRED IN LINE "EL".": PRINT "PLEASE CONSULT DOS OR APPLESOFT MANUAL.": END
9500 REM CHECK FOR A LEAP YEAR
9510 IF INT(YY/4) = YY/4 THEN DA(2) = 29
9520 RETURN
9530 REM INPUT INFORMATION INTO KEYBOARD BUFFER AMD READ IT BACK OUT.
9540 VTAB 9: CALL -662
9600 FOR I = 512 TO 633:L = PEEK(I): IF L = 13 OR L = 141 THEN 9620
9610 ME$ = ME$ + CHR$(L): NEXT
9620 IF LEN(ME$) = 0 THEN POP : RETURN
9630 IF LEN(ME$) >120 THEN ME$ = "": PRINT "TOO LONG, PLEASE RE-ENTER.": FOR I = 1 TO 3000: NEXT : VTAB 8: CALL -958: POP : GOTO 5100
9640 RETURN
9650 REM SCREEN & PRINTOUT FORMATTER
9700 M1 = 11:M2 = 11:M3 = 39: GOTO 9720
9710 M1 = 14:M2 = 14:M3 = 79
9720 N$ = MID$ (ME$(I),5,( LEN(ME$(I)) -4))
9730 LN = LEN(N$): FOR J = M3 -M1 TO 1 STEP -1:BP$ = MID$ (N$,J,1): IF BP$ = " " OR BP$ = "," OR BP$ = ":" OR BP$ = "." OR BP$ = "-" OR LN < = M3 -M1 THEN 9750
9750 POKE 36,M1: PRINT LEFT$(N$,J): IF LN < = M3 -M1 THEN RETURN
9760 N1$ = RIGHT$(N$,LN -J)
9770 IF LEFT$(N1$,1) = " " THEN LN = LEN(N1$) -1:N1$ = MID$ (N1$,2,LN): GOTO 9770
9780 LN = LEN(N1$): FOR J = M3 -M2 TO 1 STEP -1:BP$ = MID$ (N1$,J,1): IF BP$ = " " OR BP$ = "," OR BP$ = ":" OR BP$ = "." OR BP$ = "-" OR LN < = M3 -M2 THEN 9800
9900 DATA NEW YEARS DAY,1,MEMORIAL DAY,151,INDEPENDENCE DAY,186,COLUMBUS DAY,286,VETERANS' DAY,316,CHRISTMAS EVE,359,CHRISTMAS DAY,360,FLAG DAY,166,HALLOWEEN,305,ST. PATRICKS' DAY,77
9910 DATA JANUARY,31,FEBRUARY,28,MARCH,31,APRIL,30,MAY,31,JUNE,30,JULY,31,AUGUST,31,SEPTEMBER,30,OCTOBER,31,NOVEMBER,30,DECEMBER,31