Commit | Line | Data |
---|---|---|
0f95cc4b H |
1 | '\r |
2 | ' Q B a s i c M O N E Y M A N A G E R\r | |
3 | '\r | |
4 | ' Copyright (C) Microsoft Corporation 1990\r | |
5 | '\r | |
6 | ' The Money Manager is a personal finance manager that allows you\r | |
7 | ' to enter account transactions while tracking your account balances\r | |
8 | ' and net worth.\r | |
9 | '\r | |
10 | ' To run this program, press Shift+F5.\r | |
11 | '\r | |
12 | ' To exit QBasic, press Alt, F, X.\r | |
13 | '\r | |
14 | ' To get help on a BASIC keyword, move the cursor to the keyword and press\r | |
15 | ' F1 or click the right mouse button.\r | |
16 | '\r | |
17 | \r | |
18 | \r | |
19 | 'Set default data type to integer for faster operation\r | |
20 | DEFINT A-Z\r | |
21 | \r | |
22 | 'Sub and function declarations\r | |
23 | DECLARE SUB TransactionSummary (item%)\r | |
24 | DECLARE SUB LCenter (text$)\r | |
25 | DECLARE SUB ScrollUp ()\r | |
26 | DECLARE SUB ScrollDown ()\r | |
27 | DECLARE SUB Initialize ()\r | |
28 | DECLARE SUB Intro ()\r | |
29 | DECLARE SUB SparklePause ()\r | |
30 | DECLARE SUB Center (row%, text$)\r | |
31 | DECLARE SUB FancyCls (dots%, Background%)\r | |
32 | DECLARE SUB LoadState ()\r | |
33 | DECLARE SUB SaveState ()\r | |
34 | DECLARE SUB MenuSystem ()\r | |
35 | DECLARE SUB MakeBackup ()\r | |
36 | DECLARE SUB RestoreBackup ()\r | |
37 | DECLARE SUB Box (Row1%, Col1%, Row2%, Col2%)\r | |
38 | DECLARE SUB NetWorthReport ()\r | |
39 | DECLARE SUB EditAccounts ()\r | |
40 | DECLARE SUB PrintHelpLine (help$)\r | |
41 | DECLARE SUB EditTrans (item%)\r | |
42 | DECLARE FUNCTION Cvdt$ (X#)\r | |
43 | DECLARE FUNCTION Cvst$ (X!)\r | |
44 | DECLARE FUNCTION Cvit$ (X%)\r | |
45 | DECLARE FUNCTION Menu% (CurrChoiceX%, MaxChoice%, choice$(), ItemRow%(), ItemCol%(), help$(), BarMode%)\r | |
46 | DECLARE FUNCTION GetString$ (row%, col%, start$, end$, Vis%, Max%)\r | |
47 | DECLARE FUNCTION Trim$ (X$)\r | |
48 | \r | |
49 | 'Constants\r | |
50 | CONST TRUE = -1\r | |
51 | CONST FALSE = NOT TRUE\r | |
52 | \r | |
53 | 'User-defined types\r | |
54 | TYPE AccountType\r | |
55 | Title AS STRING * 20\r | |
56 | AType AS STRING * 1\r | |
57 | Desc AS STRING * 50\r | |
58 | END TYPE\r | |
59 | \r | |
60 | TYPE Recordtype\r | |
61 | Date AS STRING * 8\r | |
62 | Ref AS STRING * 10\r | |
63 | Desc AS STRING * 50\r | |
64 | Fig1 AS DOUBLE\r | |
65 | Fig2 AS DOUBLE\r | |
66 | END TYPE\r | |
67 | \r | |
68 | 'Global variables\r | |
69 | DIM SHARED account(1 TO 19) AS AccountType 'Stores the 19 account titles\r | |
70 | DIM SHARED ColorPref 'Color Preference\r | |
71 | DIM SHARED colors(0 TO 20, 1 TO 4) 'Different Colors\r | |
72 | DIM SHARED ScrollUpAsm(1 TO 7) 'Assembly Language Routines\r | |
73 | DIM SHARED ScrollDownAsm(1 TO 7)\r | |
74 | DIM SHARED PrintErr AS INTEGER 'Printer error flag\r | |
75 | \r | |
76 | DEF SEG = 0 ' Turn off CapLock, NumLock and ScrollLock\r | |
77 | KeyFlags = PEEK(1047)\r | |
78 | POKE 1047, &H0\r | |
79 | DEF SEG\r | |
80 | \r | |
81 | 'Open money manager data file. If it does not exist in current directory,\r | |
82 | ' goto error handler to create and initialize it.\r | |
83 | ON ERROR GOTO ErrorTrap\r | |
84 | OPEN "money.dat" FOR INPUT AS #1\r | |
85 | CLOSE\r | |
86 | ON ERROR GOTO 0 'Reset error handler\r | |
87 | \r | |
88 | Initialize 'Initialize program\r | |
89 | Intro 'Display introduction screen\r | |
90 | MenuSystem 'This is the main program\r | |
91 | COLOR 7, 0 'Clear screen and end\r | |
92 | CLS\r | |
93 | \r | |
94 | DEF SEG = 0 ' Restore CapLock, NumLock and ScrollLock states\r | |
95 | POKE 1047, KeyFlags\r | |
96 | DEF SEG\r | |
97 | \r | |
98 | END\r | |
99 | \r | |
100 | ' Error handler for program\r | |
101 | ' If data file not found, create and initialize a new one.\r | |
102 | ErrorTrap:\r | |
103 | SELECT CASE ERR\r | |
104 | ' If data file not found, create and initialize a new one.\r | |
105 | CASE 53\r | |
106 | CLOSE\r | |
107 | ColorPref = 1\r | |
108 | FOR a = 1 TO 19\r | |
109 | account(a).Title = ""\r | |
110 | account(a).AType = ""\r | |
111 | account(a).Desc = ""\r | |
112 | NEXT a\r | |
113 | SaveState\r | |
114 | RESUME\r | |
115 | CASE 24, 25\r | |
116 | PrintErr = TRUE\r | |
117 | Box 8, 13, 14, 69\r | |
118 | Center 11, "Printer not responding ... Press Space to continue"\r | |
119 | WHILE INKEY$ <> "": WEND\r | |
120 | WHILE INKEY$ <> " ": WEND\r | |
121 | RESUME NEXT\r | |
122 | CASE ELSE\r | |
123 | END SELECT\r | |
124 | RESUME NEXT\r | |
125 | \r | |
126 | \r | |
127 | 'The following data defines the color schemes available via the main menu.\r | |
128 | '\r | |
129 | ' scrn dots bar back title shdow choice curs cursbk shdow\r | |
130 | DATA 0, 7, 15, 7, 0, 7, 0, 15, 0, 0\r | |
131 | DATA 1, 9, 12, 3, 0, 1, 15, 0, 7, 0\r | |
132 | DATA 3, 15, 13, 1, 14, 3, 15, 0, 7, 0\r | |
133 | DATA 7, 12, 15, 4, 14, 0, 15, 15, 1, 0\r | |
134 | \r | |
135 | 'The following data is actually a machine language program to\r | |
136 | 'scroll the screen up or down very fast using a BIOS call.\r | |
137 | DATA &HB8,&H01,&H06,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB\r | |
138 | DATA &HB8,&H01,&H07,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB\r | |
139 | \r | |
140 | 'Box:\r | |
141 | ' Draw a box on the screen between the given coordinates.\r | |
142 | SUB Box (Row1, Col1, Row2, Col2) STATIC\r | |
143 | \r | |
144 | BoxWidth = Col2 - Col1 + 1\r | |
145 | \r | |
146 | LOCATE Row1, Col1\r | |
147 |