8-Bit Software Online Conversion

Calendar/Notepad Printer - Listing

10REM >CALENDA 20REM v1.0E 02/98 Check PROCchoose c odes 30*FX6,13 40F%=TRUE :YR%=1998 50PROCinit :ON ERROR PROCerr 60MODE135 :PROCoff :PROCyear 70Day%=FNperams(yr%) :ea%=FNeaster(yr %) 80PROCload :PROCreminders 90IFHIMEM=&8000: F%=FALSE :MODE131 100PROCoff :PROCprintCal :GOTO60 110: 120DEF PROCyear :W%=-1 :REM Easter ini t 130PROCdh(0,3,CHR$134+CHR$157+CHR$132+ "CALENDAR / NOTEBOOK (3*A4) "+CHR$156) 140 PRINTTAB(7,6);CHR$134;"Years 1800 to 3000" 150PROCdh(8,8,CHR$(131)+"Year ? "+STR$ (YR%)) 160yr%=VALFNinput(17,8): IFyr%=0yr%=YR % 170YR%=yr%: IFyr%<1800 OR yr%>3000 VDU 7,7 :GOTO 160 180ENDPROC 190: 200DEF FNinput(x%,y%) :LOCALyr$ :yr$=" " 210REPEAT :G%=GET :IFG%=13 UNTILTRUE : =yr$ 220IFG%=127 AND LENyr$>0: yr$=LEFT$(yr $,LENyr$-1) 230IFG%<>127 AND LENyr$<4 yr$=yr$+CHR$ G% 240FOR n=0 TO 1: PRINTTAB(x%,y%+n)yr$; SPC4 :NEXT 250UNTIL 0 260: 270DEF PROCdh(x,y,word$) 280FOR n=0 TO 1 :PRINTTAB(x,y+n)CHR$14 1;word$ :NEXT 290ENDPROC 300: 310DEF PROCprintCal :IFF%VDU21 320FOR M%=1 TO 12 STEP 2 330 IF M%=1 OR M%=5 OR M%=9 PROCchoose 340 IFprt%=2 VDU 27,71 :REM D/S 350 PRINT"`"SPC(10);M$(M%);" ";yr%;TA B(36)"`"; 360 IFprt%=2 VDU 27,45,0 :REM U/L off 370 PRINTTAB(42); 380 IFprt%=2 VDU 27,45,1 :REM U/L on 390 PRINT"`"SPC(10);M$(M%+1);" ";yr%; TAB(78)"`" 400 IFprt%=2 VDU 27,72 :REM D/S off 410 PROCdates(M%) 420 FOR N%=1 TO 31 430 IFprt%=2AND INSTR(D$(N%,0),"SU ")>0 VDU 27,71 :REM D/S 440 PRINT D$(N%,0); 450 IFprt%=2 VDU 27,45,0,27,72 :RE M U/L & D/S off 460 PRINT TAB(42); 470 IFprt%=2 VDU 27,45,1 :REM U/L on 480 IFprt%=2 AND INSTR(D$(N%,1),"S U")>0 VDU 27,71 :REM D/S 490 PRINT D$(N%,1) 500 IFprt%=2 VDU 27,72 :REM D/S o ff 510 NEXT :PRINT :IF prt%=2PRINT'''''' ' 520NEXT 530IF prt%=2 PROCdly(3): VDU 27,64 :*F X3 540*FX21 550VDU6 :PRINT"<KEY>":IFGET 560ENDPROC 570: 580DEF PROCchoose :prt%=3:*FX3 590IFF%VDU6 600PRINT'M$(M%)" to "M$(M%+3)" ";yr%;" : Print <Yes/key>?"':*FX21 610IFF%VDU21 620IF(GETAND223)<>ASC"Y":ENDPROC 630prt%=2:PROCprtchk:*FX3,10 640VDU 27,56 :REM paper out o ff 650VDU 27,65,10 :REM L/Feed n/72 660VDU 27,50 :REM Enable L/Fe ed (REM Line if not IBM mode) 670VDU 27,69 :REM Emph 680VDU 27,45,1 :REM U/L on 690ENDPROC 700: 710DEF PROCdates(month%) :LOCAL exit% :*FX3 720IFF%VDU6 730PRINT"Wait! "; :exit%=FALSE :colm%= 0 740REPEAT :IFcolm%=1 exit%=TRUE 750 date%=1 760 REPEAT :VDU ASC"-" 770 T$=LEFT$(STRING$(2-LENSTR$(date% )," ")+STR$(date%)+" "+MID$("M T W T F S SU",((Day%-1)*2)+1,2)+FNmonthly(date%,D ay%)+FNholls(month%,date%,Day%)+FNevent( month%+colm%,date%),36) 780 D$(date%,colm%) = T$+STRING$(36- LENT$," ")+"`" 790 date%=date%+1 :Day%=Day%+1 :IF D ay%=8 Day%=1 800 UNTIL (date%-1) = D(month%+colm%) 810 IF D(month%+colm%)<31 FOR N% = D(month%+colm%)+1 TO 31 :D$(N%,colm%)="` "+STRING$(35," ")+"`" :NEXT 820 colm%=1 830UNTIL exit% :PRINT :IFF%VDU21 840IF prt%=2: *FX3,10 850ENDPROC 860: 870 REM month,date,day 880DEF FNholls(m%,t%,d%) 890IF m%+colm%=Ea% AND t%=ea% :W%=0 := " Easter." 900IF W%>=0 W%=W%+1 910IF W%=49 :=" WhitSun." :REM 49 days after easter sunday 920IF m%+colm%=5 AND t%<8 AND d%=1 := " MayDay." :REM 1st Mon 930IF m%+colm%=5 AND t%>24 AND d%=1 := " Spring." :REM Last Mon 940IF m%+colm%=8 AND t%>24 AND d%=1 := " Summer." :REM Last Mon 950IF m%+colm%=3 AND t%>23 AND t%<31 A ND d%=7 :=" BST." :REM Last Sun before 31st 960IF m%+colm%=10 AND t%>23 AND t%<31 AND d%=7 :=" GMT." :REM Last Sun before 31st 970="" 980: 990DEF PROCinit :LOCAL I : name$="CALN OTE" 1000prt%=3 :new%=FALSE 1010DIM M$(12), D(12) ,D$(31,1), d$(12, 9), e$(12,9) 1020FOR I=0 TO 12:FOR g%=1 TO 9:d$(I,g% )="..":NEXT :NEXT 1030S$="JANFEBMARAPRMAYJUNJULAUGSEPOCTN OVDEC" 1040W$="MONTUEWEDTHUFRISATSUN" 1050RESTORE 1060FOR I=1 TO 12 :READ M$(I),D(I) :NEX T :D(0)=28 1070ENDPROC 1080: 1090 DATA January,31,February,28,March, 31,April,30,May,31,June,30,July,31,Augus t,31,September,30,October,31,November,30 ,December,31 1100: 1110DEF PROCdefaultRems :LOCAL I,m$,n$, m% 1120 RESTORE 1290 :m%=1 1130REPEAT :READ m$,n$ 1140IFm$<>"-1" d$(0,m%)=m$ :e$(0,m%)=n$ 1150 m%=m%+1 1160UNTIL m$="-1" 1170: 1180 RESTORE 1350 1190FOR I=1 TO 12 1200READ m$,n$ :m%=1 1210 REPEAT :READ m$,n$ 1220IFm$<>"-1" d$(I,m%)=m$ :e$(I,m%)=n$ 1230 m%=m%+1 1240 UNTIL m$="-1" 1250NEXT 1260ENDPROC 1270: 1280REM Date or Day, event. DATE REP EATED EVERY MONTH, DAY EVERY WEEK 1290DATA 2, Pension., SAT, Papers., -1, "" 1300: 1310REM Data format: Num, Month, Date,E vent., -1,"" MONTH SELECTED ITEMS 1320REM If month needs more Data lines, ONLY terminate last line with -1,"" 1330REM Month MUST remain in Upper case ! 1340: 1350 DATA 1 ,JAN, 1,New Year, -1,"" 1360 DATA 2 ,FEB, 14,Valentines., -1,"" 1370 DATA 3 ,MAR, 9,Mothers., 17,St.Pat ricks., -1,"" 1380 DATA 4 ,APR, 30,Water., -1,"" 1390 DATA 5 ,MAY, 30,Water., -1,"" 1400 DATA 6 ,JUN, 15,Fathers day., 21,L ongest day., 30,Water., -1,"" 1410 DATA 7 ,JUL, 31,T/V., -1,"" 1420 DATA 8 ,AUG, 29,Freds B/D., -1,"" 1430 DATA 9 ,SEP, 30,Water., -1,"" 1440 DATA 10,OCT, 7,Vera B/D., 23,Ella B/D., 31,Hallowe'en. Water., -1,"" 1450 DATA 11,NOV, 2,All Soul's Night., 5,Guy Fawkes., 30,Water., -1,"" 1460 DATA 12,DEC, 25,Christmas., -1,"" 1470: 1480REM month,date 1490DEF FNevent(m%,t%) :LOCALi%,i$ :i$= "" 1500FOR i%=1 TO 9 1510IF d$(m%,i%)=STR$(t%) i$=" "+e$(m%, i%) 1520NEXT 1530=i$ 1540: 1550REM date,day = 1 Mon - 7 Su n 1560DEF FNmonthly(t%,d%): LOCALa$,b$,i% : a$="": b$="" 1570FOR i%=1 TO 9 1580IF d$(0,i%)=MID$(W$,(d%-1)*3+1,3) a $=" "+e$(0,i%) 1590IF d$(0,i%)=STR$(t%) b$=" "+e$(0,i% ) 1600NEXT 1610=a$+b$ 1620: 1630DEF FNperams(yr%) :REM d%=Day of we ek, 1 Mon - 7 SUN 1640d%=(((yr%-1800)*365+(yr%-1800)DIV4) -(yr% DIV100-yr% DIV400-14)+3)MOD7 1650D(2)=28 :IF ((yr% DIV 4)*4=yr%) D(2 )=29 :d%=(d%+6)MOD7 :REM leap year 1660=d% 1670: 1680DEF FNeaster(Y%):LOCAL A,B,C,D,E,F, G,H,J,K,L,Q,month,day 1690B=Y% DIV 100 1700C=Y% MOD 100 1710A=(5*B+C) MOD 19 1720D=(3*B+75) DIV 4 1730E=(3*B+75) MOD 4 1740F=(8*B+88) DIV 25 1750H=(19*A+D-F) MOD 30 1760G=(A+11*H) DIV 319 1770J=(60*(5-E)+C) DIV 4 1780K=(60*(5-E)+C) MOD 4 1790L=(2*J-K-H+G) MOD 7 1800month=(H-G+L+110) DIV 30 1810Q=(H-G+L+110) MOD 30 1820day=(Q+5-month) MOD 32 1830Ea%=month 1840=day 1850: 1860DEF PROCprtchk:LOCALh%:h%=ADVAL(-4) :IFFNprton(h%):ENDPROC 1870PRINT 1880REPEAT:*FX15 1890PRINT" Enable Printer!";:VDU7 :PROC dly(2):PRINTSTRING$(15,CHR$127):VDU11 1900UNTILFNprton(h%) 1910ENDPROC 1920: 1930DEF FNprton(h%) 1940VDU2,1,0,1,0,1,0,1,0,1,0,1,0,3 :PRO Cdly(2) 1950=(ADVAL(-4)=h%) 1960: 1970DEF PROCdly(d%):TIME=0:REPEAT:UNTIL TIME>d%*100:ENDPROC 1980: 1990DEFPROCreminders:LOCAL N%,I%,g%,t%, D$,M$,P$,d$,n$,o$,t$ 2000M$="": new%=FALSE 2010CLS: PROCdh(1,2,CHR$135+CHR$157+CHR $132+" EDIT CALENDAR REMINDERS <Yes/No>? "+CHR$156) 2020REPEAT:o$=CHR$(GETAND223):UNTILINST R("YN",o$)>0 2030IFo$="N"AND new% PROCsave 2040IFo$="N":CLS: ENDPROC 2050PRINT'''"(S)elect Month for reminde rs;"''"(E)very Week/Month reminders;"''" Choose <S/E>?"; 2060REPEAT:o$=CHR$(GETAND223):UNTILINST R("SE",o$)>0 2070V%=VPOS+3 2080IFo$="E" g%=0 ELSE PRINTTAB(3,V%)"M ONTH REQ'D. <1-12>? "SPC5:VDU31,24,V%: I NPUT""g% :IFg%<1 ORg%>12 :GOTO 2080 2090REPEAT: IFo$="S"M$=MID$(S$,((g%-1)* 3)+1,3) 2100CLS: IF o$="E"PROCdh(0,0,CHR$135+CH R$157+CHR$132+"DAY IN EVERY WEEK, DATE E VERY MONTH "):ELSE PROCdh(0,0,CHR$135+CH R$157+CHR$132+" ("+M$(g%)+") Year "+STR$ (yr%)+" "+CHR$156) 2110 PRINT'" Item : When : Reminders"' STRING$(39,"-") 2120 FOR N%=1 TO9: PRINTSPC4;N%") : "; d$(g%,N%);TAB(14)": ";e$(g%,N%):NEXT 2130V%=VPOS: P$="<Z/X>month. ": IFo$="E "P$="" 2140PRINTTAB(0,V%+1)P$"<Rtn>exit. <Item >No. ?";: OSCLI"FX21": t$=GET$: I%=VAL(t $) 2150IFo$="S"AND INSTR("Zz",t$)>0 g%=g%- 1 :IFg%<1 g%=1: GOTO 2140 2160IFo$="S"AND INSTR("Xx",t$)>0 g%=g%+ 1 :IFg%>12 g%=12: GOTO 2140 2170IF INSTR("ZzXx",t$)>0 UNTIL0 2180IF I%=0 UNTIL TRUE :GOTO 2010 2190PRINTTAB(0,V%+1); 2200IF o$="S" t%=19: PRINT"<Rtn> Date i n ("M$") <1-";D(g%);"> ? .."; 2210IF o$="E" t%=8 :PRINT"<Rtn> Date or Day <MON-SUN>? ..."; 2220PRINTSPC10: VDU31,29,V%+1 :INPUT""D $ 2230IFD$=""GOTO 2270 2240d%=VALD$: IF d%>0 AND d%<=D(g%) d$( g%,I%)=STR$d% :GOTO 2270 2250IFLEND$>2d$="":FORN=1TO3:d$=d$+CHR$ (ASC(MID$(D$,N,1))AND223):NEXT:PROCcheck 2260IF d$(g%,I%)=""UNTIL0 2270PRINTTAB(0,V%+3)"<* to DEL>"''"<Rtn > Reminder ?"STRING$(t%,"-") :VDU31,16,V %+5 :INPUT""t$ 2280IFt$="*"e$(g%,I%)="":t$="": new%=TR UE 2290IFt$>""e$(g%,I%)=LEFT$(t$,t%): new% =TRUE 2300UNTIL0 2310ENDPROC 2320: 2330DEFPROCcheck:FORN=0TO6:IF MID$(W$,N *3+1,3)=d$: d$(g%,I%)=d$ 2340NEXT:ENDPROC 2350: 2360DEFPROCload :LOCALg%,I 2370ch%=OPENIN(name$) :IFch%=0PROCdefau ltRems:ENDPROC 2380FOR I=0 TO 12 2390FOR g%=1 TO 9 2400INPUT# ch%,d$(I,g%),e$(I,g%) 2410NEXT :NEXT :CLOSE# ch% 2420ENDPROC 2430: 2440DEFPROCsave :LOCALg%,I,ac$, A%,Y% 2450ac$="RW":IF(USR(&FFDA)AND&FF)=4 ac$ ="" 2460ch%=OPENIN(name$):CLOSE#ch%: IFch%> 0:OSCLI"ACC."+name$+" "+ac$ 2470ch%=OPENOUT(name$) 2480FOR I=0 TO 12 2490FOR g%=1 TO 9 2500PRINT# ch%,d$(I,g%),e$(I,g%) 2510NEXT :NEXT :CLOSE# ch% :new%=FALSE 2520ENDPROC 2530: 2540DEF PROCoff:VDU23,1,0;0;0;0;:ENDPRO C 2550DEF PROCon:VDU23,1,1;0;0;0;:ENDPROC 2560: 2570DEF PROCerr :LOCALp$: CLOSE#0 :IFpr t%=2VDU1,27,1,64 2580*FX3 2590*FX15 2600VDU6,23,1,1;0;0;0; :CLS 2610IFERR<>17CLS:REPORT:PRINT" at line ";ERL 2620IFnew%PRINT'"SAVE NEW DATA <Yes/key >?";:IFCHR$(GETAND223)="Y":PROCsave 2630PRINT''"FINISHED <Yes/Key>?";:IFCHR $(GETAND223)<>"Y":ENDPROC 2640PRINT''"FIN!" 2650END