'=========================================================================== ' 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: ' 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