home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol074
/
diary.bas
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
8KB
|
224 lines
REM Adapated from September 1981 KILOBAUD/Microcomputing Magazine
REM by Don Weir, 12/Jan/82
REM
REM Use CBASIC compiler
CL$=CHR$(12):PRINT CL$
CODE$="NSCQ"
BLANK$=" "
DASH$=" "
REC.SIZE%=110
DIM DAY$(7),MONTH$(12),FIRST%(12),DAYS%(12)
DIM LINE.1$(8),LINE.2$(8),LINE.3$(8),WK.DY$(8)
FIRST%(1)=1:FIRST%(2)=32:FIRST%(3)=60:FIRST%(4)=91
FIRST%(5)=121:FIRST%(6)=152:FIRST%(7)=182:FIRST%(8)=213
FIRST%(9)=244:FIRST%(10)=274:FIRST%(11)=305:FIRST%(12)=335
DAYS%(1)=31:DAYS%(2)=28:DAYS%(3)=31:DAYS%(4)=30
DAYS%(5)=31:DAYS%(6)=30:DAYS%(7)=31:DAYS%(8)=31
DAYS%(9)=30:DAYS%(10)=31:DAYS%(11)=30:DAYS%(12)=31
DAY$(1)="Mon":DAY$(2)="Tue":DAY$(3)="Wed":DAY$(4)="Thu"
DAY$(5)="Fri":DAY$(6)="Sat":DAY$(7)="Sun"
MONTH$(1)="Jan":MONTH$(2)="Feb":MONTH$(3)="Mar"
MONTH$(4)="Apl":MONTH$(5)="May":MONTH$(6)="Jun"
MONTH$(7)="Jul":MONTH$(8)="Aug":MONTH$(9)="Sep"
MONTH$(10)="Oct":MONTH$(11)="NOv":MONTH$(12)="Dec"
5 PRINT CL$:PRINT TAB(52);"Adapted from"
PRINT TAB(52);"KILOBAUD"
PRINT TAB(52);"Sept. 1981."
FOR I%=1 TO 5:PRINT:NEXT I%
INPUT "Year (i.e., 1981)";YEAR$
PRINT "Is ";YEAR$;" correct "
INPUT LINE Q$
IF LEFT$(Q$,1)="N" THEN 5
YEAR=VAL(YEAR$)
A=YEAR/4:B=INT(A):C=A-B
IF C<>0 THEN 10
DAYS%(2)=29
FOR X%=3 TO 12
FIRST%(X%)=FIRST%(X%)+1
NEXT X%
10 GOSUB 20
ON T% GOSUB 100,200,300,400
GOTO 10
20 PRINT CL$
PRINT
IF ERSW1% THEN ERSW1%=0:PRINT TAB(10);"Year not found.":PRINT
IF ERSW2% THEN ERSW2%=0:PRINT TAB(10);YEAR$;" already exists";:PRINT
PRINT TAB(24);"CALENDAR"
PRINT TAB(24);"--------":PRINT:PRINT
PRINT
PRINT TAB(10);"N = Set up New Year":PRINT
PRINT TAB(10);"Y = Change Year":PRINT
PRINT TAB(10);"S = See":PRINT
PRINT TAB(10);"C = Change Data":PRINT
PRINT TAB(10);"Q = Quit":PRINT
INPUT "Task ";T$
T$=LEFT$(T$,1)
IF T$="Y" THEN 5
FOR T%=1 TO 5
IF T$=MID$(CODE$,T%,1) THEN RETURN
NEXT T%
GOTO 10
100 PRINT CL$
PRINT:PRINT YEAR$:PRINT
INPUT "Jan 1 day number (Monday=1) ";LINE DAY.NUM$
IF DAY.NUM$="" THEN RETURN
DAY.NUM%=VAL(DAY.NUM$)
IF DAY.NUM%<1 OR DAY.NUM%>7 THEN 100
PRINT:PRINT "Writing...";
READ%=0
GOSUB 1000
IF OLD.FILE% THEN ERSW2%=1:GOTO 110
LINE.1$=DASH$:LINE.2$=DASH$:LINE.3$=DASH$
FOR X%=1 TO FIRST%(12)+DAYS%(12)
REC.NUM%=X%
DAY$=DAY$(DAY.NUM%)
GOSUB 1200
DAY.NUM%=DAY.NUM%+1
IF DAY.NUM%>7 THEN DAY.NUM%=1
PRINT ".";
NEXT X%
110 PRINT "":CLOSE 1:RETURN
200 PRINT CL$:PRINT:PRINT
INPUT "Starting date (mm,dd) ";NUM%,DATE%
IF NUM%<1 OR NUM%>12 THEN 200
IF DATE%<1 OR DATE%>DAYS%(NUM%) THEN 200
START%=(FIRST%(NUM%)-1)+DATE%
READ%=1:NEW%=0
GOSUB 1000
IF OLD.FILE%=0 THEN ERSW1%=1:RETURN
205 FOR X%=1 TO 7
REC.NUM%=START%
GOSUB 1100
DATE$=STR$(DATE%)
IF NEW%=0 THEN WK.DY$(X%)=DAY$+" "+DATE$
IF NEW% THEN NEW%=0:WK.DY$(X%)=DAY$+" "+DATE$+" "+"*"
LINE.1$(X%)=LINE.1$
LINE.2$(X%)=LINE.2$
LINE.3$(X%)=LINE.3$
DATE%=DATE%+1
START%=START%+1
IF DATE%>DAYS%(NUM%) THEN DATE%=1:NUM%=NUM%+1:NEW%=1
IF START%>FIRST%(12)+30 THEN START%=1:NUM%=1
NEXT X%
PRINT CL$
210 IF TASK$="P" THEN PRINT:PRINT:PRINT:PRINT TAB(5);MONTH$(NUM%);" ";YEAR$:PRINT:GOTO 215
PRINT TAB(25);MONTH$(NUM%);" ";YEAR$:PRINT
215 FOR X%=1 TO 7 STEP 2
PRINT WK.DY$(X%);TAB(40);WK.DY$(X%+1)
PRINT LINE.1$(X%);TAB(40);LINE.1$(X%+1)
PRINT LINE.2$(X%);TAB(40);LINE.2$(X%+1)
PRINT LINE.3$(X%);TAB(40);LINE.3$(X%+1)
REM PRINT
NEXT X%
IF TASK$="P" THEN CONSOLE
PRINT TAB(5);"P = Print Return-next Q = Quit"
PRINT TAB(5);"Task ";
INPUT LINE TASK$:TASK$=LEFT$(TASK$,1)
IF TASK$="Q" THEN 220
IF TASK$="P" THEN LPRINTER WIDTH 80:GOTO 210
GOTO 205
220 CLOSE 1:READ%=0
RETURN
300 READ%=1
GOSUB 1000
IF OLD.FILE%=0 THEN ERSW1%=0:RETURN
310 PRINT CL$
INPUT "Date (mm,dd) ";NUM%,DATE%
IF NUM%<1 OR NUM%>12 THEN 310
IF DATE%<1 OR DATE%>DAYS%(NUM%) THEN 310
320 REC.NUM%=(FIRST%(NUM%)-1)+DATE%
GOSUB 1100
330 PRINT CL$
PRINT:PRINT:PRINT
PRINT TAB(20);MONTH$(NUM%);" ";YEAR$:PRINT
PRINT TAB(20);DAY$;DATE%
PRINT TAB(20);LINE.1$
PRINT TAB(20);LINE.2$
PRINT TAB(20);LINE.3$
PRINT
PRINT TAB(2);"(B-Blank W-Write S-Switch N-New date)";
PRINT " RETURN-next Q-Quit)"
PRINT TAB(5);"Task";
INPUT LINE TASK$:TASK$=LEFT$(TASK$,1)
IF TASK$="N" OR TASK$="" THEN 350
IF TASK$="Q" THEN 360
IF TASK$="B" THEN GOSUB 1300
IF TASK$="W" THEN GOSUB 1400
IF TASK$="S" THEN 340
GOTO 330
340 INPUT "Switch date (mm,dd) ";SM%,SD%
IF SM%<1 OR SM%>12 THEN 340
IF SD%<1 OR SD%>DAYS%(SM%) THEN 340
REC.1%=REC.NUM%
DAY.1$=DAY$
HOLD.1$=LINE.1$:HOLD.2$=LINE.2$:HOLD.3$=LINE.3$
REC.NUM%=(FIRST%(SM%)-1)+SD%
GOSUB 1100
DAY.2$=DAY$
REC.2%=REC.NUM%
DAY$=DAY.1$
REC.NUM%=REC.1%
GOSUB 1200
DAY$=DAY.2$
LINE.1$=HOLD.1$
LINE.2$=HOLD.2$
LINE.3$=HOLD.3$
REC.NUM%=REC.2%
GOSUB 1200
REC.NUM%=REC.1%
GOSUB 1100
GOTO 330
350 GOSUB 1200
IF TASK$="N" THEN 310
DATE%=DATE%+1
IF DATE%>DAYS%(NUM%) THEN DATE%=1:NUM%=NUM%+1
IF NUM%>12 THEN NUM%=1
GOTO 320
360 GOSUB 1200
CLOSE 1:READ%=0
RETURN
400 PRINT CL$
STOP
1000 OLD.FILE%=0
IF END #1 THEN 1010
FILE$=YEAR$+".DAT"
OPEN FILE$ RECL REC.SIZE% AS 1
OLD.FILE%=1
GOTO 1020
1010 IF READ% THEN 1020
CREATE FILE$ RECL REC.SIZE% AS 1
1020 RETURN
1100 END.FILE%=0
IF END # 1 THEN 1110
READ # 1,REC.NUM%;DAY$,LINE.1$,LINE.2$,LINE.3$
RETURN
1110 END.FILE%=1
RETURN
1200 PRINT # 1,REC.NUM%;DAY$,LINE.1$,LINE.2$,LINE.3$
RETURN
1300 PRINT TAB(5);"Line 1, 2, 3 or all";
INPUT LINE LN.NUM$
IF LN.NUM$="" THEN 1310
LN.NUM$=LEFT$(LN.NUM$,1)
IF LN.NUM$="A" THEN LINE.1$=DASH$:LINE.2$=DASH$:LINE.3$=DASH$
IF LN.NUM$="1" THEN LINE.1$=DASH$
IF LN.NUM$="2" THEN LINE.2$=DASH$
IF LN.NUM$="3" THEN LINE.3$=DASH$
1310 RETURN
1400 PRINT "Line #1 ";"------------------------------*"
INPUT " ";LINE LN$
IF LN$="" THEN 1410
LINE.1$=LEFT$(LN$+BLANK$,30)
1410 PRINT "Line #2 ";"------------------------------*"
INPUT " ";LINE LN$
IF LN$="" THEN 1420
LINE.2$=LEFT$(LN$+BLANK$,30)
1420 PRINT "Line #3 ";"------------------------------*"
INPUT " ";LINE LN$
IF LN$="" THEN 1430
LINE.3$=LEFT$(LN$+BLANK$,30)
1430 RETURN