\\ Calendar - for "REAL" programmers \\ All statements in UPPERCASE \\ Output to 132 characters console - as a line printer \\ USE COURIER NEW (FONT "COURIER NEW") \\ CHANGE THE VALUE OF PRINT_IT TO TRUE FOR PRINTING GLOBAL CONST PRINT_IT AS BOOLEAN=FALSE MODULE GLOBAL SNOOPY { IF NOT PRINT_IT THEN CURSOR 0,ROW ELSE IF ROW>0 THEN PAGE 1 PRINT $(,8) PRINT #-2, { XXXX X XX X *** X XXXXX X ***** X XXX XX XXXX ******* XXX XXXX XX XX X ****** XXXXXXXXX El@ XX XXX XX X **** X X** X X XX XX X X***X X //XXXX X XXXX X // X XX X // X XXXXXXXXXXXXXXXXXX/ X XXX// X X X X X X X X X X X X X X X X X XX X X X X X XXX XX X XXX X X X X X X X X X XX X XXXX X X XXXXXXXX\ XX XX X XX XX X X @X XX XX XXXX XXXXXX/ X XXXX XXX XX*** X X XXXXXXXXXXXXX * * X X *---* X X X *-* * XXX X X *- * XXX X *- *X XXX *- *X X XXX *- *X X XX *- *XX X X * *X* X X X * *X * X X X * * X** X XXXX X * * X** XX X X * ** X** X XX X * ** X* XXX X X * ** XX XXXX XXX * * * XXXX X X * * * X X X =======******* * * X X XXXXXXXX\ * * * /XXXXX XXXXXXXX\ ) =====********** * X ) \ ) ====* * X \ \ )XXXXX =========********** XXXXXXXXXXXXXXXXXXXXXX } } MODULE CALENDAR (YEAR, LOCALEID) { FUNCTION GETMAX(YEAR, MONTH) { A=DATE(STR$(YEAR)+"-"+STR$(MONTH)+"-1") MAX=32 DO { MAX-- M=VAL(STR$(CDATE(A,0,0,MAX), "M")) } UNTIL M=MONTH =MAX+1 } FUNCTION SKIPMO(YEAR, MONTH) { A=DATE(STR$(YEAR)+"-"+STR$(MONTH)+"-1") =(VAL(STR$(A, "W"))-8) MOD 7 +7 } FUNCTION TITLE$(A$) { =UCASE$(LEFT$(A$,1))+LCASE$(MID$(A$, 2)) } LOCALE LOCALEID IF NOT PRINT_IT THEN CURSOR 0,HEIGHT-1 ' LAST LINE, SO EACH NEW LINE SCROLL ALL LINES UP SNOOPY PRINT UNDER ' PRINT UNDERLINE PRINT OVER $(2), YEAR PRINT FOR J=0 TO 1 { PRINT FOR I=1 TO 6 { MONTH=I+J*6 PRINT PART @((I-1)*22+1), $(2,21), UCASE$(LOCALE$(55+MONTH)) } PRINT DIM SKIP(1 TO 6), COUNT(1 TO 6), D(1 TO 6)=1 FOR I=1 TO 6 { MONTH=I+J*6 IF I>1 THEN PRINT " "; FOR K=42 TO 48 :PRINT " ";UCASE$(LEFT$(LOCALE$(K),2));:NEXT K SKIP(I)=SKIPMO(YEAR, MONTH) COUNT(I)=GETMAX(YEAR, MONTH) } PRINT IF PRINT_IT ELSE REFRESH 1000 FOR I=1 TO 6 { IF I>1 THEN PRINT " "; FOR K=1 TO 7 { SKIP(I)-- IF SKIP(I)>0 THEN PRINT " "; :CONTINUE COUNT(I)-- PRINT FORMAT$(" {0::-2}", D(I)); D(I)++ } } PRINT IF PRINT_IT ELSE REFRESH 1000 PRINT @(0) FOR M=1 TO 5 { FOR I=1 TO 6 { IF I>1 THEN PRINT " "; FOR K=1 TO 7 { COUNT(I)-- IF COUNT(I)<0 THEN PRINT " "; : CONTINUE PRINT FORMAT$(" {0::-2}", D(I)); D(I)++ } } PRINT IF PRINT_IT ELSE REFRESH 1000 } } } WHILE INKEY$<>"" : END WHILE IF PRINT_IT THEN PRINTING ON ELSE REFRESH 1000 FONT "COURIER NEW" PEN 0 CLS 15, 0 FORM 132,68 CALENDAR 1966, 1032 ' GREEK GOSUB WAITKEY_OR_MOUSE FOR I=2020 TO 2026 CALENDAR I, 1033 ' ENGLISH GOSUB WAITKEY_OR_MOUSE NEXT I IF PRINT_IT THEN PRINTING OFF ELSE REFRESH 50 CLEAR ' CLEAR VARIABLES FROM THIS MODULE END WAITKEY_OR_MOUSE: IF PRINT_IT THEN RETURN WHILE INKEY$="" AND MOUSE=0 END WHILE RETURN