home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug056.arc / CHECKS.DOC < prev    next >
Text File  |  1979-12-31  |  19KB  |  386 lines

  1. The CHECKS program was written for my personal use and is 
  2. placed in the public domain for anyone who wants to use it. 
  3. (No business use please) Since it is a 'freeby', don't complain 
  4. about the organization of the program, but if you should 
  5. encounter any bugs, please notify me by letter and I will try to 
  6. fix them. Several restrictions are inherent in the program and 
  7. you must be able to live with them. If you can't, then don't 
  8. bother with the program.
  9.  
  10. RESTRICTION #1
  11.  
  12. The maximum value which the math package can handle 
  13. without overflowing is $83886.07. Amounts which exceed this 
  14. value will be displayed as the amount in excess of $83886.08. 
  15. Overflow will occur if you have more than this amount of money in 
  16. your account at any point in the year, or if the total value of 
  17. the checks exceed this amount when listing out the checks. No 
  18. error message is printed out if overflow should occur. If you 
  19. exceed this amount, you can afford to buy something better 
  20. anyway.
  21.  
  22. RESTRICTION # 2
  23.  
  24. The program will only allow 255 different check names in 
  25. any year's file. The checks program was translated from a 
  26. program I had written for my 6500 system, and made extensive use 
  27. of the indexed instruction. I had a lot of check data that I 
  28. wanted to continue using with the Z80 system, so I merely re-
  29. coded the assembly language program and used the same 
  30. organization of the data in the files.
  31.  
  32. RESTRICTION # 3
  33.  
  34. The program requires the user to enter check names as 
  35. three character mnemonics, although it keeps in the file the 
  36. entire check name for later listing. For example, when I enter a 
  37. check to Fidelity National Bank, I would use the mnemonic FNB for 
  38. the check name. You quickly learn how to choose a good mnemonic 
  39. for the check name, and can always get a listing of mnemonics 
  40. which you have used previously in case you should forget one.
  41.  
  42. If you feel that you can live with these restrictions, 
  43. then give the program a try. The features and operating ease of 
  44. this program will quickly make you ignore these limitations.
  45.  
  46. A little more about the program before we get down to the 
  47. nitty-gritty. Checks will run on either CP/M 1.4 or 2.2. The 
  48. program keeps track of two data files with the name types .CHK 
  49. and .NAM. The filename.CHK file has all the data for the actual 
  50. checks. Each check entry is packed into eight bytes of code and 
  51. the distribution copy allocates 8 kbytes of memory for the 
  52. checks. This gives you the ability to handle 1024 checks in a 
  53. given year. The .NAM file contains the name mnemonics and a list 
  54. of the corresponding full check names. Full check names are 
  55. limited to a 32 character string.
  56.  
  57.  
  58. The user may specify the disk on which the .CHK and .NAM 
  59. files are located. If no name is given for the .NAM file, the 
  60. program will assign the same filename for the .NAM file as was 
  61. specified for the .CHK file. I use the filename 1981 for the 
  62. check file for year 1981 which automatically assigns files 
  63. 1981.CHK and 1981.NAM for use. Other people who have used this 
  64. program find that they normally write checks to the same people 
  65. year after year and do not overflow the 255 name restriction. 
  66. For this reason, you can save a lot of typing by using the same 
  67. name file year after year. To do this, one might type 1981 
  68. (space) NAMES which would assign files 1981.CHK and NAMES.NAM as 
  69. the files to be used. Note that the user does not specify the 
  70. filename extension because the program does it for you. If you 
  71. should try it, the program will issue an error message.
  72.  
  73. Because my wife and I both share the same checking 
  74. account, but she has her own checks which might duplicate my 
  75. check numbers, the program allows you to set a 'W' flag to keep 
  76. to two entries separate. The program also has other flags which 
  77. the user can set upon entry, and yes, as you might expect, you 
  78. can get a listing of checks depending on the flag set. The flags 
  79. which can be set on the distribution copy, and the meaning which 
  80. I place on them are as follows:
  81.  
  82. W Wife's checks
  83. R Returned check
  84. I Income tax deductible
  85.  
  86. All three of the above flags may co-exist in the same 
  87. check entry plus one of the following:
  88.  
  89. C Car expenses
  90. D Doctor bills
  91. E Entertainment expenses
  92. F Food
  93. G Gasoline
  94. H Housing expenses
  95. M Medicine
  96. P Parts for computer
  97. S School expenses
  98. U Utility bills
  99.  
  100. Five spare flags are also available, but have not been 
  101. defined during the assembly. The method of setting or changing 
  102. these flags will be discussed later. A check might have the flags 
  103. IWRS set, which means an income tax deductible check, written by 
  104. my wife which has returned from the bank for some school related 
  105. expense.
  106.  
  107.  
  108. The program enables you to list all checks written to 
  109. some mnemonic name, to list a monthly balance sheet, to compute 
  110. the check balance, to compute the bank balance at the end of the 
  111. month after returned checks are entered, to list outstanding 
  112. checks, to list checks, deposits, and withdrawals from your 
  113. account for any month, or for the year and to fix erroneous 
  114. entries for a check, deposit, withdrawal, or change a mnemonic 
  115. name or a full check name.
  116.  
  117. Thats enough about what can be done, now lets get down 
  118. how to do it. Let's assume it is the start of the year, and we 
  119. are opening up a new years record for say 1981.
  120.  
  121. A>CHECKS 1981 [NAMES] [optional entry]
  122.  
  123. This will load CHECKS from the A drive and try to read a 
  124. file for 1981 from the default drive. Naturally nothing will 
  125. exist, and the program will tell you that it could not load the 
  126. check file, and will go to the command mode. The program has 
  127. assigned the names for the .NAM and .CHK files should data be 
  128. entered and saved. All commands begin with a single alpha 
  129. character and will immediately execute unless an argument is 
  130. required. In this case, the program waits for the argument and 
  131. the carriage return before execution. If you type a ? , the 
  132. program will display all the command characters, their meaning, 
  133. and print the number of names in the current name file.
  134.  
  135. The first thing to enter is the balance in your account 
  136. at the beginning of the year. Enter this value as a deposit by 
  137. hitting the D key. The program will display the prompts for your 
  138. entry and show you that this is deposit #1. Deposits and 
  139. Withdrawals are automatically numbered with 255 deposits and 
  140. withdrawals permitted in a years record. If you hit the space 
  141. bar, the cursor is automatically tabbed to the next entry. The 
  142. month is 1-12, the date 1-31, the amount assumed in dollars 
  143. unless a decimal point is entered. Do not specify $ in the amount 
  144. entry. Legal check , deposit , or withdrawal values are as 
  145. follows:
  146.  
  147.  10000
  148.  234.12
  149.  1
  150.  .23
  151.  
  152.  123.1 is not legal
  153.  
  154. For the mnemonic, you might consider STB
  155.  
  156.  
  157. When you hit the carriage return, the program analyzes 
  158. the entry, and looks up STB in the name file to see if it exists. 
  159. Since it does not, it will ask you if this is a new name. Type 
  160. 'Y' to indicate that it is and fill in the full name STARTING 
  161. BALANCE when it prompts you for the full name. When you now hit 
  162. the carriage return, your first deposit will be entered, and the 
  163. mnemonic STB and the full name STARTING BALANCE will be entered 
  164. into the name file.
  165.  
  166. Now hit B. The program computes the balance by adding 
  167. all deposits from the beginning of the file and subtracting the 
  168. value of all checks and withdrawals from the account. Yes you now 
  169. have a balance of the value which you entered. Now hit V. This 
  170. command is similar to the balance command except only returned 
  171. checks are subtracted. The result is the bank balance which 
  172. should agree with your bank statement after entering all returned 
  173. checks at the end of the month. A check is returned by typing 
  174. the command R and entering in the check number. Since no checks 
  175. have been written, the bank thinks you have the same amount.
  176.  
  177. Suppose your first check is for cash. Hit C to enter a 
  178. check. The check prompt now appears. Check numbers 1-9999 are 
  179. valid check numbers. Fill in the data with the mnemonic CAS. 
  180. Use the full name CASH when it comes time to do this.
  181.  
  182. Now try the B and V commands again. Yes, the new balance 
  183. is the difference between the check and the starting balance but 
  184. the V command still shows the starting balance. As far as the 
  185. program is concerned, the check is still outstanding. You can 
  186. verify this by typing the command O, which shows the check to 
  187. still be outstanding. 
  188.  
  189. Type the command M and specify CAS when it asks for the 
  190. check mnemonic. The M command lists all checks which Match the 
  191. mnemonic name written during the year.
  192.  
  193. Now try to return the check by typing the command R. When 
  194. it asks for the check number, enter the one which you have 
  195. entered. Now re-try the B, V, and O commands. The check is no 
  196. longer outstanding and the bank balance and check book balance 
  197. now agree. You can still find the check using the M command. 
  198.  
  199. When you are typing in any command and make a mistake, a 
  200. control X will abort the command and return you to the command 
  201. mode. You can use backspace (ctrl H) to correct mistakes on any 
  202. entry.
  203.  
  204. Since returning the check set the R flag, you can now 
  205. find the check using the interrogate command I. If you specify 
  206. the R flag, you can now see that a listing of all returned checks 
  207. is possible. The I command will list all checks which have the 
  208. specified flag set. (a handy way to find income tax deductible 
  209. checks)
  210.  
  211. Suppose I do, then you can use the W flag in the flag column when 
  212. entering the check. Another way is to precede the check number 
  213. with the letter W. Thus W123 is wife's check 123 while 123 is my 
  214. check 123. You can print all your wife's checks by using the 
  215. interrogate command (I) and telling the program to use the W 
  216. flag. All other flags may only be specified in the flag column. 
  217. So to flag all your utility bills for example set the U flag in 
  218. the flag column when entering the check.
  219.  
  220. Withdrawals are amounts automatically deducted from your 
  221. checking account each month for say a car payment. Do not 
  222. confuse withdrawals with the W flag which is the wife flag. To 
  223. enter a withdrawal, hit the command W. Unlike a check entry, the 
  224. withdrawal will automatically be deducted from the bank balance 
  225. at the same time it is deducted from the check book balance. 
  226.  
  227. The A command begins auto-numbering of check entries and 
  228. may be auto-numbered either with and without the wife flag. To 
  229. auto-number wife's checks, type W(check number) when prompted. Do 
  230. not put a space between the W and the check number. The control 
  231. X command cancels the auto-number mode.
  232.  
  233. The L command is used to list out checks, withdrawals, 
  234. deposits, or the names which you have used. In the case of 
  235. checks, withdrawals, or deposits, the program will ask which 
  236. month to list. You can enter a month 1-12 for a specific month, 
  237. or enter a 0 to list the entire year's activity. 
  238.  
  239. The T command lists a monthly balance sheet on the 
  240. console. The month also is entered as 1-12 or a 0 for a yearly 
  241. record
  242.  
  243. The P command toggles the output to the printer for the 
  244. next command. Thus command P followed by T will list the balance 
  245. sheet on the printer. A command P followed by command M will 
  246. list on the printer all checks to a specific mnemonic name. The 
  247. print mode is toggled off at the completion of each command.
  248.  
  249. The M command is one of the most valuable commands. In my 
  250. case, all my electric power bills are to AEP for Appalachian 
  251. Electric Power. Thus at the end of the year the command M with 
  252. the mnemonic AEP will show the year's total for electric bills. 
  253. In a similar fashion, C&P shows telephone bills, TEX my Texaco 
  254. gasoline bills, etc. The I command with the G flag will print out 
  255. all gasoline expenses to all companies during the year.
  256.  
  257.  
  258. More about the L command. The L command will also let 
  259. you list the mnemonic names and the full names which you have 
  260. used. This is handy in case you forget one. Type command L and 
  261. specify N for names. When it asks for the mnemonic name, you can 
  262. hit an immediate carriage return to show all the names in the 
  263. file. If you should just type A followed by a carriage return, 
  264. it will show all mnemonic names starting with the letter A. In a 
  265. similar fashion typing CA will show all mnemonics starting with 
  266. the two letters CA. It is pretty easy to at least remember the 
  267. most logical first letter of the mnemonic which you might have 
  268. used for the name.
  269.  
  270.  
  271. Now it is time to save the file away after an editing 
  272. session. You can type Q to go to CP/M or S to save the current 
  273. file but stay in the checking routine. The Q command will first 
  274. ask you if you want to save the checks away before exiting. If 
  275. you have made any changes, you had better do it or everything 
  276. which you have added will be lost. The old file on the disk was 
  277. copied into memory at the beginning of the editing session and is 
  278. still there on the disk. If you type Y for yes, it will show you 
  279. the names under which it will be saved. If you want to change 
  280. the names type N after it asks you if the file names are OK?. 
  281. You can use anything like the following
  282.  
  283.  
  284. B:1981 checks and names file on B drive
  285. B:1981 A:NAMES checks under name 1981 on B drive
  286.  names under NAMES on the A drive
  287.  
  288. One word of warning. Do not get the checks for one year 
  289. mixed up with the name file for another year. The program has no 
  290. way of telling that you have mixed things up and the names will 
  291. be all mixed up on your check file. For this reason, use 
  292. 1981.CHK and 1981.NAM so no possibility exists for this error. 
  293. Nothing disastrous happens if you get them mixed up until you 
  294. make a new entry in the file. Check names are numbered as they 
  295. are entered and the check data file only has the number 
  296. corresponding to the check name used. 
  297.  
  298. The S command saves the current check and name files on 
  299. the disk and stays in the checking routine. This permits you to 
  300. use the G command which gets a different years record for 
  301. observation or modification. You can use the G command to look 
  302. for various years activities without modifying any of the 
  303. contents on the disk.
  304.  
  305. To keep the bank people honest, at the end of the month 
  306. when my checks return, I return all the checks enclosed with my 
  307. statement and hit the V command. The balance shown should agree 
  308. with the bank as long as no deposits have been made into the 
  309. account which do not show in the bank statement.
  310.  
  311.  
  312. Naturally you will make some typing mistake sometime 
  313. during the use of the program. The F command allows you to 
  314. retrieve a check, deposit, or withdrawal from the records and fix 
  315. it. When you enter the number of the item to be fixed, the 
  316. display will show the entry as it has been typed. The entry may 
  317. be fixed up as shown on the console display using the control H 
  318. for backspace, the control A will add a space at the cursor, and 
  319. the control D will delete the character at the cursor. A control 
  320. B will set the cursor to the beginning of the entry being 
  321. displayed for added convenience. You may hit the carriage return 
  322. with the cursor at any position in the display and the entire 
  323. contents of the display will be entered as shown. Using the 
  324. prompts, you may change a name mnemonic, or the full name for 
  325. typing error. Suppose you can't remember a mnemonic because you 
  326. used a poor one the first time you entered it. By changing the 
  327. mnemonic, all entries in the file will now show the new mnemonic.
  328.  
  329. Yes, I can guarantee that sometime or other you will type 
  330. the same check number in twice for two different entries. When 
  331. you try to find the check to return it, only the first entry will 
  332. be displayed and the second check with the duplicate entry can 
  333. not be returned. And as Mr. Murphy would have it, the second 
  334. entry had the wrong check number. The only way to fix this is 
  335. to fix the number on the first check to some fake number which 
  336. has not been used, then fix the wrong check and then re-fix the 
  337. first check back to the correct number. Sorry, but that is the 
  338. way it works. The only way to find this kind of error is to list 
  339. the checks and hunt for that duplicate check number.
  340.  
  341. Modifications:
  342.  
  343. The size of the check and name files may be enlarged by 
  344. changing the address at the equate NFILE. The check file 
  345. starts loading at the address set by the equate at CFILE and 
  346. memory space is available up to the address at NFILE. Names 
  347. begin at NFILE and the rest of memory up to CCPBAS is available. 
  348. Each name entry requires 5 bytes of code, three for the mnemonic 
  349. and two bytes for a pointer to the full name. Since the maximum 
  350. name entry is 32 bytes long, the longest name file possible is 
  351. 9435 bytes. Be sure you update CCPBAS to point to the first 
  352. location before the base of your CCP to insure you do not 
  353. overwrite the CCP. CCPBAS has been arbitrarily defines as $8000 
  354. in the distribution copy.
  355.  
  356. Five additional flags may be defined by replacing the % 
  357. characters at the DEFB string at the label CAT: with the desired 
  358. flag character. The flag characters N,W,I,R are reserved for use 
  359. in the program and may not be doubly defined. 
  360.  
  361.  
  362. Cursor control characters which may vary with different 
  363. video displays are defined at the beginning of the source 
  364. listing. The program may be warm started by jumping to 100H in 
  365. case you should forget to save the data on the disk and returned 
  366. to CP/M. You can do this by executing GO 100 if you are using 
  367. CCPZ or by previously saving a zero length file using the CP/M 
  368. save command with the name GO and typing GO when you are in CP/M.
  369.  
  370. Checks is only a 9k program, and will run in systems with as 
  371. little as 16k of memory. To be safe, you should re-assemble 
  372. the program after redefining CCPBAS to insure the name file does 
  373. not overflow the CCP, and redefine NFILE to 4500H to give a 
  374. little more space for the name file. 
  375.  
  376. Yes, the program has its limitations but it works and it 
  377. puts a lot of power at a few keystrokes once you learn how to use 
  378. it. I am willing to listen to all suggestions how to improve it. 
  379.  
  380. Ralph Sherman
  381. 15 Hydaway drive
  382. Forest, Va.
  383. 24551
  384. (804)-525-3167
  385.  
  386.