'===========================================================================
' Subject: CALCULATE DAY OF WEEK              Date: 04-21-96 (16:23)       
'  Author: Steve M. Wiegand                   Code: QB, QBasic, PDS        
'  Origin: stevewie@ksc9.th.com             Packet: DATETIME.ABC
'===========================================================================
'This program will calculate a day of the week for any year from 1753 to 2030

DEFINT A-Z
DECLARE SUB TRANSLATE ()
DECLARE SUB LETTERS ()
DECLARE SUB LAYER1 ()
DECLARE SUB NORMAL1 ()
DECLARE SUB NORMAL0 ()
DECLARE SUB Initialize ()
DECLARE SUB FancyCls (dots%, Background%)
DECLARE SUB Center (Row%, text$)
DECLARE SUB OPENINTRO ()
DECLARE SUB Box (Row1%, Col1%, Row2%, Col2%)
DECLARE SUB PAUSE ()
DECLARE SUB DAYERROR ()
DECLARE SUB inputerror ()
DECLARE FUNCTION GetNum# (Row%, Col%)
CONST TRUE = -1
CONST FLASE = NOT TRUE
CONST BYEAR = 1753
COMMON SHARED P$(), P$, SIZE$
COMMON SHARED C1$, C2$, C3$
COMMON SHARED C4$, BGC, DOT$
COMMON SHARED SPACING$, Word$
COMMON SHARED PFT, PFL
COMMON SHARED m, d, y, nt%
DIM P$(122)
DIM SHARED Colorpref
DIM SHARED Colors(0 TO 20, 1 TO 4)
DIM SHARED year%(278)
DIM SHARED M1%(12), M2%(12), M3%(12), M4%(12), M5%(12), M6%(12), M7%(12)
DIM SHARED M8%(12), M9%(12), M10%(12), M11%(12), M12%(12), M13%(12), M14%(12)
DIM SHARED d1%(31), d2%(31), d3%(31), d4%(31), d5%(31), d6%(31), d7%(31)
DIM SHARED dn$(7)
DIM SHARED mn$(12): DIM SHARED mnu%(12)
CALL LETTERS                                'CALL LETTERSET
'
' Begin Mainline Code
'
Initialize
OPENINTRO
BEGIN:
Colorpref = 1
FancyCls Colors(2, Colorpref), Colors(1, Colorpref)
Box 9, 19, 15, 61
COLOR 7, 0
Center 11, "Enter the Century and Year (CCYY)"
nt% = 1
y = GetNum#(13, 38)
FancyCls Colors(2, Colorpref), Colors(1, Colorpref)
Box 9, 19, 15, 61
COLOR 7, 0
Center 11, "Enter the Month of the Year (01-12)"
nt% = 2
m = GetNum#(13, 39)
FancyCls Colors(2, Colorpref), Colors(1, Colorpref)
Box 9, 19, 15, 61
COLOR 7, 0
Center 11, "Enter the Day of the Month (01-31)"
nt% = 3
d = GetNum#(13, 39)
DATEEDIT:
IF m = 2 THEN
   z% = y MOD 4
   IF z% = 0 THEN
       mnu%(2) = 29
   END IF
END IF
IF d > mnu%(m) THEN
    CALL DAYERROR
    CALL PAUSE
    GOTO doagain
END IF
INDEX1 = (y - BYEAR) + 1
INDEX2 = year%(INDEX1)
SELECT CASE INDEX2
    CASE IS = 1
        index3 = M1%(m)
    CASE IS = 2
        index3 = M2%(m)
    CASE IS = 3
        index3 = M3%(m)
    CASE IS = 4
        index3 = M4%(m)
    CASE IS = 5
        index3 = M5%(m)
    CASE IS = 6
        index3 = M6%(m)
    CASE IS = 7
        index3 = M7%(m)
    CASE IS = 8
        index3 = M8%(m)
    CASE IS = 9
        index3 = M9%(m)
    CASE IS = 10
        index3 = M10%(m)
    CASE IS = 11
        index3 = M11%(m)
    CASE IS = 12
        index3 = M12%(m)
    CASE IS = 13
        index3 = M13%(m)
    CASE IS = 14
        index3 = M14%(m)
END SELECT
SELECT CASE index3
    CASE IS = 1
        bd% = d1%(d)
    CASE IS = 2
        bd% = d2%(d)
    CASE IS = 3
        bd% = d3%(d)
    CASE IS = 4
        bd% = d4%(d)
    CASE IS = 5
        bd% = d5%(d)
    CASE IS = 6
        bd% = d6%(d)
    CASE IS = 7
        bd% = d7%(d)
END SELECT
FancyCls Colors(2, Colorpref), Colors(1, Colorpref)
Box 9, 19, 15, 61
COLOR 7, 0
IF bd% > 7 OR bd% < 0 THEN
   LOCATE 10, 20, 0
   PRINT "Calculation Error - bd%"
   LOCATE 11, 41, 0
   PRINT bd%
   GOTO finish
END IF
z1$ = mn$(m): z2$ = STR$(d): z3$ = STR$(y): z4$ = z1$ + " " + z2$ + z3$
A$ = "The date entered is a " + dn$(bd%)
Center 10, z4$
Center 12, A$
A$ = ""
PAUSE
doagain:
FancyCls Colors(2, Colorpref), Colors(1, Colorpref)
Box 9, 19, 15, 61
COLOR 7, 0
Center 12, "Do another date ? [Y/N]"
LOCATE 14, 40, 1
WHILE INKEY$ <> "": WEND
DO
   kbd$ = UCASE$(INKEY$)
LOOP UNTIL kbd$ = "Y" OR kbd$ = "N"
IF kbd$ = "Y" THEN
   mnu%(2) = 28
   GOTO BEGIN
END IF
CLS
SYSTEM
finish:
END

'The following data defines the color schemes available via the main menu.
'
'    scrn  dots  bar  back   title  shdow  choice  curs   cursbk  shdow
DATA 0,    7,    15,  7,     0,     7,     0,      15,    0,      0
DATA 1,    9,    12,  3,     0,     1,     15,     0,     7,      0
DATA 3,    15,   13,  1,     14,    3,     15,     0,     7,      0
DATA 7,    12,   15,  4,     14,    0,     15,     15,    1,      0

'Box:
'  Draw a box on the screen between the given coordinates.
SUB Box (Row1, Col1, Row2, Col2) STATIC
    COLOR 14, 0
    BoxWidth = Col2 - Col1 + 1

    LOCATE Row1, Col1
    PRINT "Ú"; STRING$(BoxWidth - 2, "Ä"); "¿";

    FOR A = Row1 + 1 TO Row2 - 1
        LOCATE A, Col1
        PRINT "³"; SPACE$(BoxWidth - 2); "³";
    NEXT A

    LOCATE Row2, Col1
    PRINT "À"; STRING$(BoxWidth - 2, "Ä"); "Ù";

END SUB

DEFSNG A-Z
'Center:
'  Center text on the given row.
SUB Center (Row%, text$)
DEFINT A-Z
    LOCATE Row, 41 - LEN(text$) / 2
    PRINT text$;
END SUB

SUB DAYERROR
z1$ = STR$(m)
z2$ = STR$(d)
z3$ = STR$(y)
LINE (158, 235)-(390, 249), 7, B
LINE (159, 236)-(389, 248), 15, BF
Word$ = "              " + z1$ + "/" + z2$ + "/" + z3$
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 4"
C2$ = "C12"
PFT = 245: PFL = 163: CALL NORMAL1
LINE (158, 262)-(390, 274), 7, B
LINE (159, 263)-(389, 273), 15, BF
Word$ = "The day of the month is invalid"
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 4"
C2$ = "C12"
PFT = 272: PFL = 163: CALL NORMAL1
LINE (158, 279)-(415, 291), 7, B
LINE (159, 280)-(414, 290), 15, BF
x$ = STR$(mnu%(m))
Word$ = "The month you selected has " + x$ + " days"
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 4"
C2$ = "C12"
PFT = 289: PFL = 163: CALL NORMAL1
LEAPYRERROR:
IF m < 2 OR m > 2 THEN
        GOTO exitsub
END IF
IF d > 29 THEN
        GOTO exitsub
END IF
LINE (158, 296)-(415, 308), 7, B
LINE (159, 297)-(414, 307), 15, BF
Word$ = "The year is not a leap year"
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 4"
C2$ = "C12"
PFT = 306: PFL = 163: CALL NORMAL1

exitsub:
END SUB

DEFSNG A-Z
'FancyCls:
'  Clears screen in the right color, and draws nice dots.
SUB FancyCls (dots%, Background%)
DEFINT A-Z
    VIEW PRINT 7 TO 25
    COLOR dots, Background
    CLS 2

    FOR A = 560 TO 1820 STEP 45
        Row = A / 80 + 1
        Col = A MOD 80 + 1
        LOCATE Row, Col
        PRINT CHR$(250);
    NEXT A
END SUB

'GetNum:
'  Gets valid numeric input from user
'Parameters:
'  Row, Col - location to echo input
FUNCTION GetNum# (Row, Col)
  result$ = ""
  Done = FALSE
  WHILE INKEY$ <> "": WEND   'Clear keyboard buffer

  DO WHILE NOT Done

    LOCATE Row, Col
    PRINT result$; CHR$(95); "    ";
    
    kbd$ = INKEY$
    SELECT CASE kbd$
      CASE "0" TO "9"
        result$ = result$ + kbd$
      CASE "."
        IF INSTR(result$, ".") = 0 THEN
          result$ = result$ + kbd$
        END IF
      CASE CHR$(13)
        IF (VAL(result$) > 2030 OR VAL(result$) < 1753) AND nt% = 1 THEN
          result$ = ""
            CALL inputerror
        ELSE
        IF (VAL(result$) > 12 OR VAL(result$) < 1) AND nt% = 2 THEN
          result$ = ""
          CALL inputerror
        ELSE
        IF (VAL(result$) > 31 OR VAL(result$) < 1) AND nt% = 3 THEN
          result$ = ""
          CALL inputerror
        ELSE
          Done = TRUE
        END IF
         END IF
          END IF
       
      CASE CHR$(8)
        IF LEN(result$) > 0 THEN
          result$ = LEFT$(result$, LEN(result$) - 1)
        END IF
      CASE ELSE
        IF LEN(kbd$) > 0 THEN
          BEEP
        END IF
      END SELECT
  LOOP

  LOCATE Row, Col
  PRINT result$; " ";

  GetNum# = VAL(result$)
'
END FUNCTION

'Initialize:
'  Read colors in and set up assembly routines
SUB Initialize
year%(1) = 1: year%(2) = 2: year%(3) = 3: year%(4) = 11: year%(5) = 6: year%(6) = 7
year%(7) = 1: year%(8) = 9: year%(9) = 4: year%(10) = 5: year%(11) = 6: year%(12) = 14
year%(13) = 2: year%(14) = 3: year%(15) = 4: year%(16) = 12: year%(17) = 7: year%(18) = 1
year%(19) = 2: year%(20) = 10: year%(21) = 5: year%(22) = 6: year%(23) = 7: year%(24) = 8
year%(25) = 3: year%(26) = 4: year%(27) = 5: year%(28) = 13: year%(29) = 1: year%(30) = 2
year%(31) = 3: year%(32) = 11: year%(33) = 6: year%(34) = 7: year%(35) = 1: year%(36) = 9
year%(37) = 4: year%(38) = 5: year%(39) = 6: year%(40) = 14: year%(41) = 2: year%(42) = 3
year%(43) = 4: year%(44) = 12: year%(45) = 7: year%(46) = 1: year%(47) = 2: year%(48) = 3
year%(49) = 4: year%(50) = 5: year%(51) = 6: year%(52) = 14: year%(53) = 2: year%(54) = 3
year%(55) = 4: year%(56) = 12: year%(57) = 7: year%(58) = 1: year%(59) = 2: year%(60) = 10
year%(61) = 5: year%(62) = 6: year%(63) = 7: year%(64) = 8: year%(65) = 3: year%(66) = 4
year%(67) = 5: year%(68) = 13: year%(69) = 1: year%(70) = 2: year%(71) = 3: year%(72) = 11
year%(73) = 6: year%(74) = 7: year%(75) = 1: year%(76) = 9: year%(77) = 4: year%(78) = 5
year%(79) = 6: year%(80) = 14: year%(81) = 2: year%(82) = 3: year%(83) = 4: year%(84) = 12
year%(85) = 7: year%(86) = 1: year%(87) = 2: year%(88) = 10: year%(89) = 5: year%(90) = 6
year%(91) = 7: year%(92) = 8: year%(93) = 3: year%(94) = 4: year%(95) = 5: year%(96) = 13
year%(97) = 1: year%(98) = 2: year%(99) = 3: year%(100) = 11: year%(101) = 6: year%(102) = 7
year%(103) = 1: year%(104) = 9: year%(105) = 4: year%(106) = 5: year%(107) = 6: year%(108) = 14
year%(109) = 2: year%(110) = 3: year%(111) = 4: year%(112) = 12: year%(113) = 7: year%(114) = 1
year%(115) = 2: year%(116) = 10: year%(117) = 5: year%(118) = 6: year%(119) = 7: year%(120) = 8
year%(121) = 3: year%(122) = 4: year%(123) = 5: year%(124) = 13: year%(125) = 1: year%(126) = 2
year%(127) = 3: year%(128) = 11: year%(129) = 6: year%(130) = 7: year%(131) = 1: year%(132) = 9
year%(133) = 4: year%(134) = 5: year%(135) = 6: year%(136) = 14: year%(137) = 2: year%(138) = 3
year%(139) = 4: year%(140) = 12: year%(141) = 7: year%(142) = 1: year%(143) = 2: year%(144) = 10
year%(145) = 5: year%(146) = 6: year%(147) = 7: year%(148) = 1: year%(149) = 2: year%(150) = 3
year%(151) = 4: year%(152) = 12: year%(153) = 7: year%(154) = 1: year%(155) = 2: year%(156) = 10
year%(157) = 5: year%(158) = 6: year%(159) = 7: year%(160) = 8: year%(161) = 3: year%(162) = 4
year%(163) = 5: year%(164) = 13: year%(165) = 1: year%(166) = 2: year%(167) = 3: year%(168) = 11
year%(169) = 6: year%(170) = 7: year%(171) = 1: year%(172) = 9: year%(173) = 4: year%(174) = 5
year%(175) = 6: year%(176) = 14: year%(177) = 2: year%(178) = 3: year%(179) = 4: year%(180) = 12
year%(181) = 7: year%(182) = 1: year%(183) = 2: year%(184) = 10: year%(185) = 5: year%(186) = 6
year%(187) = 7: year%(188) = 8: year%(189) = 3: year%(190) = 4: year%(191) = 5: year%(192) = 13
year%(193) = 1: year%(194) = 2: year%(195) = 3: year%(196) = 11: year%(197) = 6: year%(198) = 7
year%(199) = 1: year%(200) = 9: year%(201) = 4: year%(202) = 5: year%(203) = 6: year%(204) = 14
year%(205) = 2: year%(206) = 3: year%(207) = 4: year%(208) = 12: year%(209) = 7: year%(210) = 1
year%(211) = 2: year%(212) = 10: year%(213) = 5: year%(214) = 6: year%(215) = 7: year%(216) = 8
year%(217) = 3: year%(218) = 4: year%(219) = 5: year%(220) = 13: year%(221) = 1: year%(222) = 2
year%(223) = 3: year%(224) = 11: year%(225) = 6: year%(226) = 7: year%(227) = 1: year%(228) = 9
year%(229) = 4: year%(230) = 5: year%(231) = 6: year%(232) = 14: year%(233) = 2: year%(234) = 3
year%(235) = 4: year%(236) = 12: year%(237) = 7: year%(238) = 1: year%(239) = 2: year%(240) = 10
year%(241) = 5: year%(242) = 6: year%(243) = 7: year%(244) = 8: year%(245) = 3: year%(246) = 4
year%(247) = 5: year%(248) = 13: year%(249) = 1: year%(250) = 2: year%(251) = 3: year%(252) = 11
year%(253) = 6: year%(254) = 7: year%(255) = 1: year%(256) = 9: year%(257) = 4: year%(258) = 5
year%(259) = 6: year%(260) = 14: year%(261) = 2: year%(262) = 3: year%(263) = 4: year%(264) = 12
year%(265) = 7: year%(266) = 1: year%(267) = 2: year%(268) = 10: year%(269) = 5: year%(270) = 6
year%(271) = 7: year%(272) = 8: year%(273) = 3: year%(274) = 4: year%(275) = 5: year%(276) = 13
year%(277) = 1: year%(278) = 2
M1%(1) = 1: M1%(2) = 4: M1%(3) = 4: M1%(4) = 7: M1%(5) = 2: M1%(6) = 5
M1%(7) = 7: M1%(8) = 3: M1%(9) = 6: M1%(10) = 1: M1%(11) = 4: M1%(12) = 6
M2%(1) = 2: M2%(2) = 5: M2%(3) = 5: M2%(4) = 1: M2%(5) = 3: M2%(6) = 6
M2%(7) = 1: M2%(8) = 4: M2%(9) = 7: M2%(10) = 2: M2%(11) = 5: M2%(12) = 7
M3%(1) = 3: M3%(2) = 6: M3%(3) = 6: M3%(4) = 2: M3%(5) = 4: M3%(6) = 7
M3%(7) = 2: M3%(8) = 5: M3%(9) = 1: M3%(10) = 3: M3%(11) = 6: M3%(12) = 1
M4%(1) = 4: M4%(2) = 7: M4%(3) = 7: M4%(4) = 3: M4%(5) = 5: M4%(6) = 1
M4%(7) = 3: M4%(8) = 6: M4%(9) = 2: M4%(10) = 4: M4%(11) = 7: M4%(12) = 2
M5%(1) = 5: M5%(2) = 1: M5%(3) = 1: M5%(4) = 4: M5%(5) = 6: M5%(6) = 2
M5%(7) = 4: M5%(8) = 7: M5%(9) = 3: M5%(10) = 5: M5%(11) = 1: M5%(12) = 3
M6%(1) = 6: M6%(2) = 2: M6%(3) = 2: M6%(4) = 5: M6%(5) = 7: M6%(6) = 3
M6%(7) = 5: M6%(8) = 1: M6%(9) = 4: M6%(10) = 6: M6%(11) = 2: M6%(12) = 4
M7%(1) = 7: M7%(2) = 3: M7%(3) = 3: M7%(4) = 6: M7%(5) = 1: M7%(6) = 4
M7%(7) = 6: M7%(8) = 2: M7%(9) = 5: M7%(10) = 7: M7%(11) = 3: M7%(12) = 5
M8%(1) = 1: M8%(2) = 4: M8%(3) = 5: M8%(4) = 1: M8%(5) = 3: M8%(6) = 6
M8%(7) = 1: M8%(8) = 4: M8%(9) = 7: M8%(10) = 2: M8%(11) = 5: M8%(12) = 7
M9%(1) = 2: M9%(2) = 5: M9%(3) = 6: M9%(4) = 2: M9%(5) = 4: M9%(6) = 7
M9%(7) = 2: M9%(8) = 5: M9%(9) = 1: M9%(10) = 3: M9%(11) = 6: M9%(12) = 1
M10%(1) = 3: M10%(2) = 6: M10%(3) = 7: M10%(4) = 3: M10%(5) = 5: M10%(6) = 1
M10%(7) = 3: M10%(8) = 6: M10%(9) = 2: M10%(10) = 4: M10%(11) = 7: M10%(12) = 2
M11%(1) = 4: M11%(2) = 7: M11%(3) = 1: M11%(4) = 4: M11%(5) = 6: M11%(6) = 2
M11%(7) = 4: M11%(8) = 7: M11%(9) = 3: M11%(10) = 5: M11%(11) = 1: M11%(12) = 3
M12%(1) = 5: M12%(2) = 1: M12%(3) = 2: M12%(4) = 5: M12%(5) = 7: M12%(6) = 3
M12%(7) = 5: M12%(8) = 1: M12%(9) = 4: M12%(10) = 6: M12%(11) = 2: M12%(12) = 4
M13%(1) = 6: M13%(2) = 2: M13%(3) = 3: M13%(4) = 6: M13%(5) = 1: M13%(6) = 4
M13%(7) = 6: M13%(8) = 2: M13%(9) = 5: M13%(10) = 7: M13%(11) = 3: M13%(12) = 5
M14%(1) = 7: M14%(2) = 3: M14%(3) = 4: M14%(4) = 7: M14%(5) = 2: M14%(6) = 5
M14%(7) = 7: M14%(8) = 3: M14%(9) = 6: M14%(10) = 1: M14%(11) = 4: M14%(12) = 6
dn$(1) = "MONDAY   ": dn$(2) = "TUESDAY  ": dn$(3) = "WEDNESDAY": dn$(4) = "THURSDAY ": dn$(5) = "FRIDAY   ": dn$(6) = "SATURDAY ": dn$(7) = "SUNDAY"
d1%(1) = 1: d1%(2) = 2: d1%(3) = 3: d1%(4) = 4: d1%(5) = 5: d1%(6) = 6:
d1%(7) = 7: d1%(8) = 1: d1%(9) = 2: d1%(10) = 3
d1%(11) = 4: d1%(12) = 5: d1%(13) = 6: d1%(14) = 7: d1%(15) = 1: d1%(16) = 2: d1%(17) = 3: d1%(18) = 4: d1%(19) = 5: d1%(20) = 6
d1%(21) = 7: d1%(22) = 1: d1%(23) = 2: d1%(24) = 3: d1%(25) = 4: d1%(26) = 5: d1%(27) = 6: d1%(28) = 7: d1%(29) = 1: d1%(30) = 2
d1%(31) = 3
d2%(1) = 2: d2%(2) = 3: d2%(3) = 4: d2%(4) = 5: d2%(5) = 6: d2%(6) = 7: d2%(7) = 1: d2%(8) = 2: d2%(9) = 3: d2%(10) = 4
d2%(11) = 5: d2%(12) = 6: d2%(13) = 7: d2%(14) = 1: d2%(15) = 2: d2%(16) = 3: d2%(17) = 4: d2%(18) = 5: d2%(19) = 6: d2%(20) = 7
d2%(21) = 1: d2%(22) = 2: d2%(23) = 3: d2%(24) = 4: d2%(25) = 5: d2%(26) = 6: d2%(27) = 7: d2%(28) = 1: d2%(29) = 2: d2%(30) = 3
d2%(31) = 4
d3%(1) = 3: d3%(2) = 4: d3%(3) = 5: d3%(4) = 6: d3%(5) = 7: d3%(6) = 1: d3%(7) = 2: d3%(8) = 3: d3%(9) = 4: d3%(10) = 5
d3%(11) = 6: d3%(12) = 7: d3%(13) = 1: d3%(14) = 2: d3%(15) = 3: d3%(16) = 4: d3%(17) = 5: d3%(18) = 6: d3%(19) = 7: d3%(20) = 1
d3%(21) = 2: d3%(22) = 3: d3%(23) = 4: d3%(24) = 5: d3%(25) = 6: d3%(26) = 7: d3%(27) = 1: d3%(28) = 2: d3%(29) = 3: d3%(30) = 4
d3%(31) = 5
d4%(1) = 4: d4%(2) = 5: d4%(3) = 6: d4%(4) = 7: d4%(5) = 1: d4%(6) = 2: d4%(7) = 3: d4%(8) = 4: d4%(9) = 5: d4%(10) = 6
d4%(11) = 7: d4%(12) = 1: d4%(13) = 2: d4%(14) = 3: d4%(15) = 4: d4%(16) = 5: d4%(17) = 6: d4%(18) = 7: d4%(19) = 1: d4%(20) = 2
d4%(21) = 3: d4%(22) = 4: d4%(23) = 5: d4%(24) = 6: d4%(25) = 7: d4%(26) = 1: d4%(27) = 2: d4%(28) = 3: d4%(29) = 4: d4%(30) = 5
d4%(31) = 6
d5%(1) = 5: d5%(2) = 6: d5%(3) = 7: d5%(4) = 1: d5%(5) = 2: d5%(6) = 3: d5%(7) = 4: d5%(8) = 5: d5%(9) = 6: d5%(10) = 7
d5%(11) = 1: d5%(12) = 2: d5%(13) = 3: d5%(14) = 4: d5%(15) = 5: d5%(16) = 6: d5%(17) = 7: d5%(18) = 1: d5%(19) = 2: d5%(20) = 3
d5%(21) = 4: d5%(22) = 5: d5%(23) = 6: d5%(24) = 7: d5%(25) = 1: d5%(26) = 2: d5%(27) = 3: d5%(28) = 4: d5%(29) = 5: d5%(30) = 2
d5%(31) = 7
d6%(1) = 6: d6%(2) = 7: d6%(3) = 1: d6%(4) = 2: d6%(5) = 3: d6%(6) = 4: d6%(7) = 5: d6%(8) = 6: d6%(9) = 7: d6%(10) = 1
d6%(11) = 2: d6%(12) = 3: d6%(13) = 4: d6%(14) = 5: d6%(15) = 6: d6%(16) = 7: d6%(17) = 1: d6%(18) = 2: d6%(19) = 3: d6%(20) = 4
d6%(21) = 5: d6%(22) = 6: d6%(23) = 7: d6%(24) = 1: d6%(25) = 2: d6%(26) = 3: d6%(27) = 4: d6%(28) = 5: d6%(29) = 6: d6%(30) = 7
d6%(31) = 1
d7%(1) = 7: d7%(2) = 1: d7%(3) = 2: d7%(4) = 3: d7%(5) = 4: d7%(6) = 5: d7%(7) = 6: d7%(8) = 7: d7%(9) = 1: d7%(10) = 2
d7%(11) = 3: d7%(12) = 4: d7%(13) = 5: d7%(14) = 6: d7%(15) = 7: d7%(16) = 1: d7%(17) = 2: d7%(18) = 3: d7%(19) = 4: d7%(20) = 5
d7%(21) = 6: d7%(22) = 7: d7%(23) = 1: d7%(24) = 2: d7%(25) = 3: d7%(26) = 4: d7%(27) = 5: d7%(28) = 6: d7%(29) = 7: d7%(30) = 1
d7%(31) = 2
mn$(1) = "January": mn$(2) = "February": mn$(3) = "March": mn$(4) = "April": mn$(5) = "May": mn$(6) = "June"
mn$(7) = "July": mn$(8) = "August": mn$(9) = "September": mn$(10) = "October": mn$(11) = "November": mn$(12) = "December"
mnu%(1) = 31: mnu%(2) = 28: mnu%(3) = 31: mnu%(4) = 30: mnu%(5) = 31: mnu%(6) = 30: mnu%(7) = 31: mnu%(8) = 31: mnu%(9) = 30: mnu%(10) = 31: mnu%(11) = 30: mnu%(12) = 31

FOR ColorSet = 1 TO 4
     FOR x = 1 TO 10
            READ Colors(x, ColorSet)
     NEXT x
NEXT ColorSet

END SUB

SUB inputerror
LINE (158, 235)-(390, 249), 7, B
LINE (159, 236)-(389, 248), 15, BF
Word$ = "Input Error"
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 4"
C2$ = "C12"
PFT = 245: PFL = 163: CALL NORMAL1
LINE (158, 262)-(390, 274), 7, B
LINE (159, 263)-(389, 273), 15, BF
IF nt% = 1 THEN
   Word$ = "The Year entered is invalid"
ELSEIF nt% = 2 THEN
   Word$ = "The Month entered is invalid"
ELSEIF nt% = 3 THEN
   Word$ = "The Day entered is invalid"
END IF
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 4"
C2$ = "C12"
PFT = 272: PFL = 163: CALL NORMAL1
LINE (158, 279)-(415, 291), 7, B
LINE (159, 280)-(414, 290), 15, BF
IF nt% = 1 THEN
    Word$ = "Valid range is 1753 - 2030"
ELSEIF nt% = 2 THEN
    Word$ = "Valid range is 1 - 12"
ELSEIF nt% = 3 THEN
    Word$ = "Valid range is 1 -31"
END IF
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 4"
C2$ = "C12"
PFT = 289: PFL = 163: CALL NORMAL1
LINE (158, 296)-(415, 308), 7, B
LINE (159, 297)-(414, 307), 15, BF
Word$ = "Please re-enter"
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 4"
C2$ = "C12"
PFT = 306: PFL = 163: CALL NORMAL1

END SUB

SUB LAYER1
  PSET (PFL + 2, PFT + 5), BGC: DRAW C3$ + P$
  PSET (PFL + 0, PFT + 5), BGC: DRAW C3$ + P$
  PSET (PFL + 1, PFT + 5), BGC: DRAW C3$ + P$
  PSET (PFL + 0, PFT + 4), BGC: DRAW C3$ + P$
  PSET (PFL + 1, PFT + 2), BGC: DRAW C2$ + P$
  PSET (PFL + 2, PFT + 4), BGC: DRAW C1$ + P$
  PSET (PFL + 3, PFT + 3), BGC: DRAW C4$ + P$
  PSET (PFL + 3, PFT + 2), BGC: DRAW C2$ + P$
  PSET (PFL + 4, PFT + 4), BGC: DRAW C2$ + P$
  PSET (PFL + 5, PFT + 2), BGC: DRAW C3$ + P$
  PSET (PFL + 5, PFT + 3), BGC: DRAW C2$ + P$
  PSET (PFL + 4, PFT + 3), BGC: DRAW C1$ + P$
END SUB

SUB LETTERS
   P$(32) = "BR4"                                                  'SPACE
   P$(33) = "BR1BD1U1BU2U5BD7BR3"                                  '!
   P$(34) = "BR0BU7D2BR2U2BD7BR3"                                  '"
   P$(35) = "BD1BR1U8D2L1R5L1U2D8U2L4R5BR2BD1"                     '#
   P$(36) = "BD1BR3U8D8BL3BU5U1E1R3F1BD1BL5F1R3F1D1G1L3H1BR7BD1"   '$
   P$(37) = "BD1U1E6U1BL5BD2U1R1D1L1BD4BR4R1D1L1U1BD1BR5"          '%
   P$(38) = "BR1BU2BL1E3U1H1L1G1D1F6BU1BL5BU3G2D1F1R3E3BD2BR2"     '&
   P$(39) = "BR2BU7D1G1BD5BR4"                                     ''
   P$(40) = "BR1BD1BU2U4E2G2D4F2BU1BR4"                            '(
   P$(41) = "BR2BD1BU2U4H2F2D4G2BU1BR5"                            ')
   P$(42) = "BR2BU2U6D3L2R4BL4BD2E4BL4F4BD3BR4"                    '*
   P$(43) = "BR2BD1U7D3L2R5BD3BR3"                                 '+
   P$(44) = "BD1U1R1D2G1BU3BR4"                                    ',
   P$(45) = "BR1BU3R3L3BD3BR5"                                     '-
   P$(46) = "BD1BR1L1BU1BR4"                                       '.
   P$(47) = "BR1E5G5BR7"                                           '/
   P$(48) = "BD1BU1U6E1R2F1D6G1L2H1BR6"                            '0
   P$(49) = "BD1BR2U7BL1E1D1BD6BR3"                                '1
   P$(50) = "BR1BU6E1R2F1D2G4D1R4BU1BR3"                           '2
   P$(51) = "BU6E1R2F1D2G1L2R2F1D2G1L2H1BR7"                       '3
   P$(52) = "BU3E4D8U4L4R5BD3BR3"                                  '4
   P$(53) = "BR1BU3U4R4L4D4E1R2F1D3G1L2H1BR7"                      '5
   P$(54) = "BR1BD1BU4U3E1R2F1H1L2G1D6F1R2E1U3H1L2G1BD3BR6"        '6
   P$(55) = "BR1BU7R4D3G4D1BU1BR7"                                 '7
   P$(56) = "BR1BU6E1R2F1D2G1L2R2F1D2G1L2H1U2E1H1U2BD6BR7"         '8
   P$(57) = "BR1BU4U2E1R2F1D6G1L2H1BU4F1R3BD3BR3"                  '9
   P$(58) = "BR1U1BU2U1BD4BR3"                                     ':
   P$(59) = "BD1BR1BU1U1BU2U1BD4G1BU1BR6"                          ';
   P$(60) = "BU3E3G3F3BR3"                                         '<
   P$(61) = "BU3R4BD2L4BR7BD1"                                     '=
   P$(62) = "BU6BR1F3G3BR5"                                        '>
   P$(63) = "BR1BU5U1E1R2F1D2G1D1BD2D1BU1BR3"                      '?
   P$(64) = "BD1BU1U6E1R3F1D5L2H1U2E1R1D3BD3L3H1F1R3E1BR3"         '@
   P$(65) = "BD1U7E1R3F1D3L5R5D4BR4BU1"                            'A
   P$(66) = "BD1U8R4F1D2G1L4R4F1D2G1L4BU1BR9"                      'B
   P$(67) = "BD1BU1U6E1R3F1BD6G1L3H1F1R3BR4BU1"                    'C
   P$(68) = "BD1U8R4F1D6G1L4BR9BU1 "                               'D
   P$(69) = "BD1U8R4L4D4R3L3D4R4BU1BR4"                            'E
   P$(70) = "BD1U8R5L5D4R4L4D4BR8BU1"                              'F
   P$(71) = "BD1BU1U6E1R3F1BD6G1L3H1F1R3E1U3L2R2D3BR4"             'G
   P$(72) = "BD1U8D4R4U4D8BR4BU1"                                  'H
   P$(73) = "BD1BR3U8L1R2L1D8L1R2BR4BU1"                           'I
   P$(74) = "BD1BU1F1R2E1U7L1R2L1D7BR5"                            'J
   P$(75) = "BD1BU8D8U4R1E4G4F4BR4BU1"                             'K
   P$(76) = "BD1BU8D8R4BU1BR4"                                     'L
   P$(77) = "BD1U7E1R2F1D7U7E1R2F1D7BU1BR4"                        'M
   P$(78) = "BD1U8F7D1U8D8BR4BU1"                                  'N
   P$(79) = "BD1BU1U6E1R3F1BD6G1L3H1BR5U6D6BR4"                    'O
   P$(80) = "BD1U8R4F1D2G1L4D4BR9BU1"                              'P
   P$(81) = "BD1BU1U6E1R3F1BD6G1L3H1BR5U6BL3BD5F3BG3BR7BU5"        'Q
   P$(82) = "BD1U8R4F1D2G1L4R1F4BR4BU1"                            'R
   P$(83) = "BD1BU5U2E1R3F1BD2BL5F1R3F1D2G1L3H1BR9"                'S
   P$(84) = "BR3BD1BU8L4R6L3D8BR6BU1"                              'T
   P$(85) = "BD1BU1U7D7F1R3E1U7D7BR4"                              'U
   P$(86) = "BD1BU8D5F2D1U1E2U5D5BR5BD2"                           'V
   P$(87) = "BD1BU1U7D7F1R2E1U7D7F1R2E1U7D7BD1BR4BU1"              'W
   P$(88) = "BD1BU8D1F3E3U1D1G6D1U1E3F3D1BU1BR5"                   'X
   P$(89) = "BL1BU5U2D2F3E3U2D2G3D3BU1BR7"                         'Y
   P$(90) = "BU7R5D2G5D1R5BR4BU1"                                  'Z
   P$(91) = "BR1BD1BR3L3U8R3BR3BD7"                                '[
   P$(92) = "BU5F5BR3"                                             '\
   P$(93) = "BD1R3U8L3BR2BD7BR4"                                   ']
   P$(94) = "BR1BU5E2F2BD5BR2"                                     '^
   P$(95) = "BD1R4BU1BL2BR5"                                       '_
   P$(96) = "BR2BU7D1F1BD5BR2"                                     '`
   P$(97) = "U2E1R3U1H1L2G1E1R2F1D4G1L2H1F1BR2E1U2D3BR4BU1"        'a
   P$(98) = "BD1U8D8R3E1U4H1L2G1D4BR8"                             'b
   P$(99) = "BR0U4E1R2F1BD4G1L2H1F1R2E1BR4"                        'c
   P$(100) = "U4E1R2F1H1L2G1D4F1R2E1U7D7D1BU1BR4"                  'd
   P$(101) = "U4E1R2F1D2L4D2F1R2E1BR4"                             'e
   P$(102) = "BR1BD1U7E1R2F1H1L2G1D3L1R3BD3BR5"                    'f
   P$(103) = "U4E1R2F1D4G1L2H1BD3F1R2E1U3BR4"                      'g
   P$(104) = "BU7D8U5E1R2F1D5BU1BR4"                               'h
   P$(105) = "BR3BD1U6BU2BD7BR4"                                   'i
   P$(106) = "BR1BD1U6BU2BD7D3G1L2BU4BR8"                          'j
   P$(107) = "BD1BU8D8U3E3G3F3BU1BR3"                              'k
   P$(108) = "BR1BD1U8L1R1D8L1R2BR4BU1"                            'l
   P$(109) = "BD1U6D1E1R1F1D5U5E1R1F1D5BU1BR4"                     'm
   P$(110) = "BD1U6D1E1R2F1D5U4BD3BR4"                             'n
   P$(111) = "U4E1R2F1D4G1L2H1BR8"                                 'o
   P$(112) = "U4E1R2F1D4G1L2H1D4U4BR8"                             'p
   P$(113) = "U4E1R2F1D4G1L2H1BR4D4L1R2L1U4BR5"                    'q
   P$(114) = "BD1U6D1E1R2F1H1L2G1U1D6BU1BR7"                       'r
   P$(115) = "BU3U1E1R2F1H1L2G1D1F1R2F1D1G1L2H1BR8"                's
   P$(116) = "BR1BU7D2L2R4L2D5F1R1E1BR4"                           't
   P$(117) = "U5D5F1R2E1U5D5BR4"                                   'u
   P$(118) = "BD1BU6D3F2D1U1E2U3D3BD2BR4"                          'v
   P$(119) = "BD1BU6D5F1R1E1U4D4F1R1E1U5D5BR4"                     'w
   P$(120) = "BD1BU6D1F2E2U1D1G4D1U1E2F2D1BU1BR4"                  'x
   P$(121) = "BU5D5F1R2E1U5D8G1L2H1BU3BR8"                         'y
   P$(122) = "BU5R4D1G4D1R4BU1BR4"                                 'z
END SUB

SUB NORMAL0
PSET (PFL + 0, PFT + 0), BGC: DRAW C1$ + P$
END SUB

SUB NORMAL1
    PSET (PFL + 0, PFT + 1), BGC: DRAW C2$ + P$
    PSET (PFL + 1, PFT + 0), BGC: DRAW C1$ + P$
    PSET (PFL + 2, PFT + 0), BGC: DRAW C1$ + P$
END SUB

SUB OPENINTRO
COLOR 7, 0
SCREEN 9                                    'SET SCREEN MODE TO 9
CLS
LINE (1, 1)-(590, 72), 13, B
LINE (3, 3)-(588, 70), 7, BF
Word$ = "What Day Was It ?"
SPACING$ = "L1"
SIZE$ = "20"
DOT$ = "N"
BGC = 7
CALL TRANSLATE
C1$ = "C 5": C2$ = "C 8": C3$ = "C 8": C4$ = "C 8"
PFT = 52: PFL = 16: CALL LAYER1
PFT = 52: PFL = 14: CALL LAYER1
PFT = 52: PFL = 12: CALL LAYER1
C1$ = "C 5": C2$ = "C 0": C3$ = "C 0": C4$ = "C15"
PFT = 50: PFL = 18: CALL LAYER1
PFT = 50: PFL = 17: CALL LAYER1
Colorpref = 1
FancyCls Colors(2, Colorpref), Colors(1, Colorpref)

LINE (158, 100)-(390, 116), 7, B
LINE (159, 101)-(389, 115), 15, BF
Word$ = "Display Any Day of the Week for"
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 1"
C2$ = "C 9"
PFT = 110: PFL = 163: CALL NORMAL1
LINE (158, 122)-(390, 138), 7, B
LINE (159, 123)-(389, 137), 15, BF
Word$ = "   Any Date Between 1753 - 2030"
SPACING$ = "R0"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 1"
C2$ = "C 9"
PFT = 132: PFL = 163: CALL NORMAL1

HITENTER:
LINE (228, 337)-(340, 350), 7, BF
Word$ = "Press any Key"
SPACING$ = "R1"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 0"
C2$ = "C 8"
PFT = 346: PFL = 231: CALL NORMAL1
INKEY1:
C1$ = "C 0"
C2$ = "C 8"
PFT = 346: PFL = 231: CALL NORMAL1
SLEEP 1
C1$ = "C 4"
C2$ = "C 8"
PFT = 346: PFL = 231: CALL NORMAL1
SLEEP 1
A$ = INKEY$: IF A$ = "" THEN GOTO INKEY1
END SUB

SUB PAUSE
LINE (248, 337)-(360, 350), 7, BF
Word$ = "Press any Key"
SPACING$ = "R1"
SIZE$ = " 4"
DOT$ = "N"
BGC = 15
CALL TRANSLATE
C1$ = "C 0"
C2$ = "C 8"
PFT = 346: PFL = 251: CALL NORMAL1
INKEY2:
C1$ = "C 0"
C2$ = "C 8"
PFT = 346: PFL = 251: CALL NORMAL1
SLEEP 1
C1$ = "C 4"
C2$ = "C 8"
PFT = 346: PFL = 251: CALL NORMAL1
SLEEP 1
A$ = INKEY$: IF A$ = "" THEN GOTO INKEY2
END SUB

SUB TRANSLATE
  SPACING$ = "B" + UCASE$(SPACING$)
     SIZE$ = "S" + UCASE$(SIZE$)
  P$(105) = "BR0BD1U6BU2BD7BR4"                     'i
  P$(106) = "BR1BD1U6BU2BD7D3G1L2BU4BR8"            'j
  IF DOT$ = "Y" THEN P$(105) = "BR0BD1U6BU1U1BD7BR4"            'DOT OVER i
  IF DOT$ = "Y" THEN P$(106) = "BR1BD1U6BU1U1BD7D3G1L2BU4BR8"   'DOT OVER j
  P$ = SIZE$
  FOR J = 1 TO LEN(Word$)
  P$ = P$ + P$(ASC(MID$(Word$, J, 1))) + SPACING$
  NEXT J
END SUB
