'===========================================================================
' Subject: DAILY PLANNER                      Date: 06-24-97 (21:26)       
'  Author: Michael G. Stewart                 Code: QB, QBasic, PDS        
'  Origin: mikegs@juno.com                  Packet: MISC.ABC
'===========================================================================
DECLARE SUB printtimes (DTE$)
DECLARE SUB planner ()
DECLARE SUB opens ()
DECLARE SUB new ()
DECLARE SUB title (n$)
DECLARE SUB clearm ()
DECLARE SUB writem ()
DECLARE SUB choice ()
DECLARE SUB readm ()
DECLARE SUB mainscreen ()
DECLARE SUB login ()
DECLARE SUB quit ()
DECLARE SUB center (row%, text$)
DECLARE SUB button (x1%, y1%, x2%, y2%, UpDown%)
DECLARE SUB intro ()
DECLARE SUB getmouse (mode%)
DECLARE SUB initmouse ()
DECLARE SUB mouse (OnOff%)
DECLARE SUB readdata ()
DECLARE FUNCTION Interupt% (Num%, ax%, bx%, cx%, dx%)
DIM SHARED xcoord%, ycoord%, click%
DIM SHARED ml%(45)
DIM SHARED fl$
DEFINT A-Z
ON ERROR GOTO errors
readdata
initmouse
getmouse mode%
intro
SCREEN 9
WIDTH 80, 43
CLS
COLOR 15, 1
title "Untitled"
choice

errors:
RESUME NEXT


MS.Data:               '<!--- WARNING - Do not change this... ---!>
 DATA 55,8b,ec,56,57
 DATA 8b,76,0c,8b,04
 DATA 8b,76,0a,8b,1c
 DATA 8b,76,08,8b,0c
 DATA 8b,76,06,8b,14
 DATA cd,21
 DATA 8b,76,0c,89,04
 DATA 8b,76,0a,89,1c
 DATA 8b,76,08,89,0c
 DATA 8b,76,06,89,14
 DATA 5f,5e,5d
 DATA ca,08,00
 DATA #

SUB button (x1, y1, x2, y2, UpDown)
   SELECT CASE UpDown
      CASE 1 'unpushed
         LINE (x1, y1)-(x2, y2), 7, BF
         LINE (x1, y1)-(x2 - 1, y1), 15
         LINE (x1, y1)-(x1, y2 + 1), 15
         LINE (x1, y2 + 1)-(x2 + 1, y2 + 1), 8
         LINE (x2 + 1, y2 + 1)-(x2 + 1, y1), 8
      CASE 2 'pushed
         LINE (x1, y1)-(x2, y2), 7, BF
         LINE (x1, y1)-(x2 - 1, y1), 8
         LINE (x1, y1)-(x1, y2 + 1), 8
         LINE (x1, y2 + 1)-(x2 + 1, y2 + 1), 15
         LINE (x2 + 1, y2 + 1)-(x2 + 1, y1), 15
      CASE 3 '[]
         LINE (x1, y1)-(x2, y2), 7, BF
         LINE (x1, y1)-(x2 - 1, y1), 15
         LINE (x1, y1)-(x1, y2 + 1), 15
         LINE (x1, y2 + 1)-(x2 + 1, y2 + 1), 0
         LINE (x1 + 2, y1 + 2)-(x2 - 2, y2 - 2), 8, B
         LINE (x1 + 2, y1 + 2)-(x2 - 2, y1 + 1), 8, BF
      CASE 4 '_
         LINE (x1, y1)-(x2, y2), 7, BF
         LINE (x1, y1)-(x2 - 1, y1), 15
         LINE (x1, y1)-(x1, y2 + 1), 15
         LINE (x1, y2 + 1)-(x2 + 1, y2 + 1), 8
         LINE (x2 + 1, y2 + 1)-(x2 + 1, y1), 8
         LINE (x1 + 2, y2 - 2)-(x2 - 2, y2 - 1), 8, BF
      CASE 5 'X
         LINE (x1, y1)-(x2, y2), 7, BF
         LINE (x1, y1)-(x2 - 1, y1), 15
         LINE (x1, y1)-(x1, y2 + 1), 15
         LINE (x1, y2 + 1)-(x2 + 1, y2 + 1), 8
         LINE (x2 + 1, y2 + 1)-(x2 + 1, y1), 8
         LINE (x1 + 4, y1 + 3)-(x1 + 7, y1 + 6), 8, BF
         LINE (x1 + 3, y1 + 2)-(x1 + 4, y1 + 3), 8, BF
         LINE (x1 + 2, y1 + 1)-(x1 + 3, y1 + 2), 8, BF
         LINE (x1 + 7, y1 + 2)-(x1 + 8, y1 + 3), 8, BF
         LINE (x1 + 8, y1 + 1)-(x1 + 9, y1 + 2), 8, BF
         LINE (x1 + 3, y1 + 6)-(x1 + 4, y1 + 7), 8, BF
         LINE (x1 + 2, y1 + 7)-(x1 + 2, y1 + 8), 8, BF
         LINE (x1 + 7, y1 + 6)-(x1 + 8, y1 + 7), 8, BF
         LINE (x1 + 8, y1 + 7)-(x1 + 9, y1 + 8), 8, BF
      CASE 6 '\/
         a = (x2 - x1) / 2
         b = (y2 - y1) / 2
         LINE (x1, y1)-(x2, y2), 7, BF
         LINE (x1, y1)-(x2 - 1, y1), 15
         LINE (x1, y1)-(x1, y2 + 1), 15
         LINE (x1, y2 + 1)-(x2 + 1, y2 + 1), 8
         LINE (x2 + 1, y2 + 1)-(x2 + 1, y1), 8
         LINE (x1 + a, y2 - 2)-(x1 + 2, y1 + 2), 8
         LINE (x1 + a, y2 - 2)-(x2 - 2, y1 + 2), 8
         LINE (x1 + 2, y1 + 2)-(x2 - 2, y1 + 2), 8
         PAINT (x1 + 5, y1 + 5), 8, 8
      CASE 50 'X disabled
         LINE (x1, y1)-(x2, y2), 7, BF
         LINE (x1, y1)-(x2 - 1, y1), 15
         LINE (x1, y1)-(x1, y2 + 1), 15
         LINE (x1, y2 + 1)-(x2 + 1, y2 + 1), 8
         LINE (x2 + 1, y2 + 1)-(x2 + 1, y1), 8
         LINE (x1 + 4, y1 + 3)-(x1 + 7, y1 + 6), 15, BF
         LINE (x1 + 3, y1 + 2)-(x1 + 4, y1 + 3), 15, BF
         LINE (x1 + 2, y1 + 1)-(x1 + 3, y1 + 2), 15, BF
         LINE (x1 + 7, y1 + 2)-(x1 + 8, y1 + 3), 15, BF
         LINE (x1 + 8, y1 + 1)-(x1 + 9, y1 + 2), 15, BF
         LINE (x1 + 3, y1 + 6)-(x1 + 4, y1 + 7), 15, BF
         LINE (x1 + 2, y1 + 7)-(x1 + 2, y1 + 8), 15, BF
         LINE (x1 + 7, y1 + 6)-(x1 + 8, y1 + 7), 15, BF
         LINE (x1 + 8, y1 + 7)-(x1 + 9, y1 + 8), 15, BF
      CASE 30 '[] Disabled
         LINE (x1, y1)-(x2, y2), 7, BF
         LINE (x1, y1)-(x2 - 1, y1), 15
         LINE (x1, y1)-(x1, y2 + 1), 15
         LINE (x1, y2 + 1)-(x2 + 1, y2 + 1), 0
         LINE (x1 + 2, y1 + 2)-(x2 - 2, y2 - 2), 15, B
         LINE (x1 + 2, y1 + 2)-(x2 - 2, y1 + 1), 15, BF
      CASE 40 '_ Disabled
         LINE (x1, y1)-(x2, y2), 7, BF
         LINE (x1, y1)-(x2 - 1, y1), 15
         LINE (x1, y1)-(x1, y2 + 1), 15
         LINE (x1, y2 + 1)-(x2 + 1, y2 + 1), 8
         LINE (x2 + 1, y2 + 1)-(x2 + 1, y1), 8
         LINE (x1 + 2, y2 - 2)-(x2 - 2, y2 - 1), 15, BF
 
   END SELECT


END SUB

SUB center (row%, text$)
    LOCATE row%, 41 - LEN(text$) / 2
    PRINT text$;

END SUB

SUB choice
COLOR 15
mainscreen
button 150, 125, 490, 225, 1
LINE (151, 126)-(489, 224), 1, BF
button 200, 172, 250, 187, 1
LINE (201, 173)-(249, 186), 1, BF
LOCATE 23, 28
PRINT "New"
button 290, 172, 340, 187, 1
LINE (291, 173)-(339, 186), 1, BF
center 23, "Open "
button 380, 172, 430, 187, 1
LINE (381, 173)-(429, 186), 1, BF
LOCATE 23, 50
PRINT "Quit"
mouse 1
DO
 getmouse 0
 IF click% = 1 AND xcoord% >= 200 AND xcoord% <= 250 AND ycoord% >= 172 AND ycoord% <= 187 THEN button 200, 172, 250, 187, 2: new
 IF click% = 1 AND xcoord% >= 290 AND xcoord% <= 340 AND ycoord% >= 172 AND ycoord% <= 187 THEN button 290, 172, 340, 187, 2: opens
 IF click% = 1 AND xcoord% >= 380 AND xcoord% <= 430 AND ycoord% >= 172 AND ycoord% <= 187 THEN button 380, 172, 430, 187, 2: quit
 IF click% = 1 AND xcoord% >= 629 AND xcoord% <= 639 AND ycoord% >= 1 AND ycoord% <= 10 THEN button 629, 1, 639, 10, 2: SLEEP 1: button 629, 1, 639, 10, 5: quit
LOOP
mouse 0
END SUB

SUB getmouse (mode%)

  R% = Interupt%(&H33, 3, bx%, cx%, dx%)

  click% = bx%

  IF mode% THEN
   xcoord% = cx% / 16 + 1
   ycoord% = dx% / 16 + 1
  ELSE
   xcoord% = cx%
   ycoord% = dx%
  END IF


END SUB

SUB initmouse

'Calls mouse interrupts...

 R% = Interupt%(&H33, 0, bx%, cx%, dx%)

END SUB

FUNCTION Interupt% (Num%, ax%, bx%, cx%, dx%)

 IF ml%(0) = 0 THEN   'Error, no MS.Data statment...
 BEEP
 BEEP
 END
 END IF

 DEF SEG = VARSEG(ml%(0))
 POKE VARPTR(ml%(0)) + 26, Num%

 CALL ABSOLUTE(ax%, bx%, cx%, dx%, VARPTR(ml%(0)))

 Interupt% = ax%


END FUNCTION

SUB intro
logo$ = "C0 BD6 BR2 E4 R6 F4 E4 R6 F4 D20 H4 L6 G4 H4 L6 G4 U20 BR14 D20 L16 R32 U21 L3 BL26 L3 D21 BE4 P15,0 BE15 P15,0 BU4 BD22 P0,0 BL14 P0,0 BH4 P4,0 BR30 P4,0"
SCREEN 12: WIDTH 80, 30
PAINT (71, 1), 3, 3
button 200, 180, 440, 300, 1
LINE (202, 182)-(438, 298), 15, B
LINE (204, 184)-(436, 296), 0, BF
LINE (205, 185)-(435, 295), 4, B
LINE (199, 179)-(442, 302), 3, B
COLOR 4
center 13, "QBasic Planner"
center 14, "     for Windows 95"
COLOR 14
center 16, "Press any key or click mouse"
COLOR 4
center 17, "(C) 1997 Gascan"
center 18, "All Rights Reseved"
LOCATE 13, 28
button 209, 189, 243, 223, 1
DRAW "BM210,190"
DRAW "X" + VARPTR$(logo$)
mouse 1
DO
 getmouse 0
 IF click% = 1 OR click% = 2 THEN EXIT DO
 IF INKEY$ <> "" THEN EXIT DO
LOOP WHILE INKEY$ = ""
mouse 0
END SUB

SUB mainscreen
FOR a% = 3 TO 41
 LOCATE a%, 1
 PRINT SPACE$(80)
NEXT a%
LOCATE 3, 1
PRINT STRING$(80, 205)
END SUB

SUB mouse (OnOff%)

 IF OnOff% = 0 THEN OnOff% = 2 ELSE OnOff% = 1
 R% = Interupt%(&H33, OnOff%, bx%, cx%, dx%)

END SUB

SUB new
title "New"
mainscreen
LOCATE 4, 2: INPUT "First Name: ", f$
LOCATE 5, 2: INPUT "Middle Initial: ", m$
LOCATE 6, 2: INPUT "Last Name: ", l$
LOCATE 7, 2: INPUT "File Name: ", fl$
fl$ = fl$ + ".pln"
OPEN "members.pln" FOR APPEND AS #1
PRINT #1, "Name: "; l$; ", "; f$; " "; m$; ".", "File: "; fl$
CLOSE #1
planner
END SUB

SUB opens
title "Open"
mainscreen
OPEN "members.pln" FOR INPUT AS #1
a% = 4
DO WHILE NOT EOF(1)
 LINE INPUT #1, mem$
 LOCATE a%, 2: PRINT mem$
 a% = a% + 1
LOOP
LOCATE a%, 2: INPUT "File to Open"; fl$
fl$ = fl$ + ".pln"
title fl$
OPEN fl$ FOR INPUT AS #2
CLOSE #1
DO WHILE NOT EOF(2)
 mainscreen
 LINE INPUT #2, a$
 printtimes a$
 FOR a = 1 TO 33
  b% = a + 4
  LINE INPUT #2, rec$
  LOCATE b%, 10: PRINT rec$
 NEXT
 center 38, "Press Esc to view next schedule, or Shift+PrintScreen to Print."
 DO: LOOP WHILE INKEY$ <> CHR$(27)
 IF EOF(2) THEN EXIT DO
LOOP
CLOSE #2
center 39, "Press Spacebar to Plan, or Esc to End."
DO
 kbd$ = ""
 kbd$ = INKEY$
 IF kbd$ = CHR$(27) THEN quit
 IF kbd$ = " " THEN planner
LOOP
END SUB

SUB planner
title fl$
mainscreen
LOCATE 4, 2
INPUT "Plan What Date"; DTE$
mainscreen
printtimes DTE$
b% = 5
OPEN fl$ FOR APPEND AS #2
PRINT #2, DTE$
FOR a = 1 TO 16
 COLOR 15
 LOCATE b%, 10: INPUT "", a$
 COLOR 14
 LOCATE b% + 1, 10: INPUT "", b$
 PRINT #2, a$
 PRINT #2, b$
 b% = b% + 2
NEXT a
COLOR 15
LOCATE b%, 10: INPUT "", a$
PRINT #2, a$
CLOSE #2
center 40, "Press Esc to work with another file, or press Shift+PrintScreen to Print"
DO: LOOP WHILE INKEY$ <> CHR$(27)
choice
END SUB

SUB printtimes (DTE$)
center 4, DTE$
b% = 5
FOR a = 6 TO 12
 IF a < 10 THEN
  COLOR 15
  LOCATE b%, 2
  PRINT a; " :00"
  COLOR 14
  LOCATE b% + 1, 2
  PRINT a; " :30"
 ELSEIF a >= 10 THEN
  COLOR 15
  LOCATE b%, 2
  PRINT a; ":00"
  COLOR 14
  LOCATE b% + 1, 2
  PRINT a; ":30"
 END IF
 LET b% = b% + 2
NEXT a
FOR a = 1 TO 9
 IF a < 10 THEN
  COLOR 15
  LOCATE b%, 2
  PRINT a; " :00"
  COLOR 14
  LOCATE b% + 1, 2
  PRINT a; " :30"
 ELSEIF a >= 10 THEN
  COLOR 15
  LOCATE b%, 2
  PRINT a; ":00"
  COLOR 14
  LOCATE b% + 1, 2
  PRINT a; ":30"
 END IF
 LET b% = b% + 2
NEXT a
COLOR 15
LOCATE b%, 3
PRINT "10 :00"

END SUB

SUB quit
mouse 0
title "Quitting..."
mainscreen
mouse 1
SLEEP 3
mouse 0
SYSTEM
END SUB

SUB readdata

'Reads machine language thingy MS.Data...

RESTORE MS.Data
 DEF SEG = VARSEG(ml%(0))

 FOR i% = 0 TO 99
  READ Octet$
  IF Octet$ = "#" THEN EXIT FOR
  POKE VARPTR(ml%(0)) + i%, VAL("&H" + Octet$)
 NEXT i%

END SUB

SUB title (n$)
LOCATE 1
PRINT SPACE$(80)
LOCATE 1
PRINT "  QBasic Planner - "; n$
button 629, 1, 639, 10, 5
END SUB
