CHECK REGISTER PROGRAM CP/M-80 Version 1.0 June 1986 Copyright (c) 1986 by WoolleyWare All Rights Reserved v.1.0, Page i USER-SUPPORTED SOFTWARE This program is distributed as User-Supported Software. You are encouraged to copy and share this program and related files with the following conditions: 1. Except for a nominal handling fee (perhaps $5 or $10), no financial or other consideration may be charged for distribution. 2. All original files must be distributed together in unmodified form. If appropriate, you may include additional files, so long as they are identified separately from the originals. 3. The copyright notice must not be altered, bypassed, or removed from the original files. As described in this document, you may delete the copyright notice from your private version of the program. If you find this program useful, your contribution in proportion to its value (perhaps $25) will be appreciated. Note that whatever amount you send may be tax deductible as an expense toward improved management of your financial records. When you correspond, please identify which operating system (CP/M-80) and version of the Check Register Program you are using. The version number is indicated in the default title line at the top of the screen before your personalized title has been read from the INF file; your copy may be more recent than the version available when this document was prepared (1.0). If you expect a response, include a self-addressed stamped envelope. Absolutely no phone calls, please. Jim Woolley WoolleyWare 5825 Pilar Court San Jose, CA 95120 DISCLAIMER WoolleyWare makes no representations or warranties with respect to the contents hereof and specifically disclaims any implied warranties of merchantability or fitness for any particular purpose. WoolleyWare reserves the right to revise this publication and to make changes from time to time in the content hereof without obligation to notify any person or organization of such revisions or changes. TRADEMARKS WordStar is a trademark of MicroPro International Corp. SuperCalc is a trademark of Sorcim Corp. dBASE II is a trademark of Ashton-Tate. MBASIC is a trademark of Microsoft. CBASIC is a trademark of Compiler Systems, Inc. CP/M is a trademark of Digital Research Inc. v.1.0, Page ii ABSTRACT The Check Register Program simplifies the task of maintaining one or more checking accounts. Three separate programs are included: CHECKS The primary application, manages the current check register, including reconciliation of transactions which have cleared the bank. CLEARS Maintains and summarizes transactions after they have cleared the bank, for historical review. CHECKSIN Installs the CHECKS.SCR file, adapting CHECKS and CLEARS to your particular video display terminal or computer console. Sample data files are included for tutorial and demonstration purposes. Commented C language source files are provided in lieu of further support. v.1.0, Page iii TABLE of CONTENTS Page TITLE PAGE USER-SUPPORTED SOFTWARE i DISCLAIMER i TRADEMARKS i ABSTRACT ii TABLE of CONTENTS iii FEATURES 1 REQUIREMENTS 2 GENESIS and BIOGRAPHY 2 INSTALLATION 5 LBR Distribution Library 5 CHECKS.SCR File and CHECKSIN Program 5 DEMONSTRATION and TUTORIAL 9 CHECKS Program 9 Current Date and Yes/No Queries 9 Cursor Movement 10 Save, Quit, and Done Commands 11 New Entry and Date Field 11 Payee Field and Abreviations 12 Category Field 13 Amount Field and Calculator 13 Deposit Field 15 Clear Field 15 Balance Field 16 Insert/Delete Entry and Undo Commands 16 Ordering Entries 16 Check Number 17 Print Command 17 Reconciliation 18 Done Command 18 Balance Brought Forward 19 CLEARS Program 19 EXECUTING the PROGRAM 20 INFORMATION FILE 22 GETTING STARTED 24 Beginning a New Register 24 Insufficient Disk Space 25 COMMANDS 25 Cursor Movement Commands 25 Editing Commands 26 Calculator Commands 27 Save, Quit, and Done Commands 27 Miscellaneous Commands 28 FUTURE PLANS 28 v.1.0, Page 1 FEATURES As you will surely admit, managing a checkbook by hand is fairly simple; therefore, one of the primary design goals for this program was to make using it at least as easy as the manual method. This has been accomplished by implementing the following features: o The user interface is modeled after WordStar. If you use WordStar, you already know how to move the cursor, scroll pages, and edit text. If you are not familiar with WordStar, a convenient "help" screen is readily available. o Transaction date (month, day, and year) will default to that of the previous entry. Only changes need to be typed. If you are entering several transactions for the same month and year, only the day might require revision. o You may define abreviations for accounts that are paid repeatedly, such as gas, electric, water, and telephone utilities, revolving charge accounts, and supermarkets. When an abreviation is entered, the payee description will automatically expand to the full name you have linked to the abreviation. o Each entry may be assigned a category. You may define your own categories by use of a single character. For example, you may use H for household transactions and T for tax deductible entries. Also, categories may be conveniently utilized to manage two or more checkbooks within one account. o Extended integer arithmetic is used to keep track of amounts ranging from -3,276,899.99 thru +3,276,799.99 without losing any pennies. o A simple calculator may be used to add to or subtract from the amount field of each entry. A memory register is included, which is retained each time the program is executed. o Automatic transactions may be defined. Examples include a monthly loan payment which is automatically withdrawn from your account on a certain day, or your salary which is automatically transferred from your employer's bank to your account. o Entries may be conveniently sorted to primary and secondary levels, including date and payee, payee and date, category and date, or amount and date. o A reconciliation report itemizes checks, deposits, and current balance for entries which have cleared the bank and for all entries by category, including a total over all categories. o Cleared entries are removed to a separate file, retaining only active transactions in the check register. An independent program is provided to manage cleared entries. Features v.1.0, Page 2 o The current check register, the reconciliation report, and an audit trail of cleared entries may be printed for filing and backup. o An installation program will quickly adapt the program to work with your video display terminal or computer console. Commented C language source files are included. If you require additional features, feel free to add them. REQUIREMENTS The Check Register Program requires an 80 column x 24 row video display with addressable cursor. Various terminals and computer consoles are supported. The CP/M-80 operating system and one disk drive are necessary. An 80 column printer with FORM FEED control is desirable. For a single check register, the database of transactions is maintained in two separate files, one for those which have not cleared the bank and another for those which have. The maximum number of active (uncleared) entries is 128, which is generally sufficient for a very large family or a very small business, assuming bank statements are received monthly. Up to 384 cleared entries are kept in the database; for an average family, this should be sufficient for about six months. When the 384 limit is approached, older records may be marked for summary and removal; each summary is retained in the database. The program may be used to manage more than one check register by defining separate sets of database files. It is assumed that the CP/M Basic Input/Output System (BIOS) console display function treats BACKSPACE as non-destructive; that is, the cursor is moved to the previous character position on the same line without changing the character. Similarly, it is assumed that a LF (line feed) character sent to the console from any location above the 24th line will move the cursor down one line without altering the display. Finally, it is assumed that a CR (carriage return) character sent to the screen from any location will move the cursor to the beginning of the same line (without line feed). These assumptions are not expected to be restricting. The Check Register Program was developed using WordStar, BDS C, and an Osborne 1 59K CP/M 2.2 system with 52.5K transient program area (TPA). GENESIS and BIOGRAPHY You might wish to skip this section until you have had a chance to see a demonstration of the Check Register Program. To do that, follow instructions given in the Installation and the Demonstration and Tutorial section. You can return to this section after determining that the Check Register Program is worth further consideration. On the other hand, you may already be convinced; in that case, the following background information should be useful. Genesis and Biography v.1.0, Page 3 When I bought my Osborne 1 computer in the Fall of '81, I had no specific plans for its use. I had been a nuclear engineer with General Electric Company for 16 years; much of that time was spent developing engineering computer programs for nuclear power reactors. I had experience with BASIC, FORTRAN, and assembly language. My wife was running a small business teaching microwave cooking. My sons were teenagers. I thought the computer would help organize my wife's books and the kids might learn something about technology. The kids thought they could play games with it. I was especially interested in using the computer to simplify managing our family checkbook. The Osborne 1 came bundled with CP/M, WordStar, SuperCalc, MBASIC, and CBASIC. I thought WordStar would get little use. SuperCalc looked handy for financial analysis. But I knew I could write my own BASIC programs whenever necessary. As it turned out, WordStar proved to be the most useful application by far; I used it for correspondence, the kids used it for school, and my wife used it to print recipes and shopping lists. I set up SuperCalc spreadsheets to keep track of utility bills and to help reconcile my checkbook at the end of the month, but found it a little cumbersome. I discovered a public domain general ledger program to help with my wife's business. It was written in CBASIC, and I was able to adapt it to the Osborne 1. But the thought of committing our check register to a BASIC program was not appealing. Maintaining the register by hand is fairly easy; whatever is done by computer should be at least as simple, or it would not be worth booting the disk. I felt the performance of BASIC in terms of memory capacity and speed would be insufficient to justify the effort of struggling with BASIC's syntax and development environment. In the meantime, I decided to redirect my career from nuclear engineering into computer engineering. I joined a consulting firm and began to develop small computer systems and software. Currently I am specializing in refrigeration control systems for huge cold storage facilities servicing the food processing industry. Experience with the public domain (PD) general ledger program led to my heavy involvement with the First Osborne Group (FOG). For two years, I served as Disk Librarian for FOG's rapidly growing collection of PD programs. It was very educational, leading to my interest in the C programming language, but most of my spare time was consumed by responsibilities to FOG. I was still interested in a program to aid with check register management. I found some PD SuperCalc templates, but they suffered from SuperCalc's shortcomings. Another PD dBASE II application looked interesting, but I did not own a copy of dBASE. I thought about purchasing a commercial program, but they usually offered more features than I required, such as budgeting or tax preparation. I was concerned that after buying a package, I would find that keeping the checkbook manually remained simpler than using the computer. Genesis and Biography v.1.0, Page 4 When I found myself with some spare time during the Christmas season of 1985, I finally decided to write a program in C to address the requirements I had in mind when I bought the computer four years earlier. Since my wife and I keep separate checkbooks with only one joint account, I wanted to categorize transactions, so that our separate balances could be easily maintained. Since I am not a good typist, I wanted to abreviate those accounts that were paid repeatedly, such as telephone, water, and credit cards. I wanted reasonable default dates, eliminating the need to reenter the same values for each check or deposit. Since I sometimes forgot to record automatic transactions, like a monthly loan payment to the bank, I wanted a feature that would remember such things. I decided to make the user interface similar to WordStar, avoiding the need to learn another. I thought it would be useful to incorporate a simple calculator for the amount portion of each entry. I wanted to be able to sort entries in a variety of ways. Above all, I wanted to reduce the effort of reconciling the checkbook against the monthly statement. As development progressed and I could see how useful the program was to me, I began to think that others might be interested, too. Since my oldest son had just started college, the thought of another source of income was attractive. I decided to try the concept of User-Supported Software distribution. This seems to be a winner for both the user and the developer. Anyone can try the program without making a commitment. If the program proves useful, they may contribute toward its development in proportion to its worth. The developer avoids the expense of packaging and advertising, yet receives a just reward if the program has any real value to others. I decided to go one step farther. Many User-Supported Software programs are distributed without the source files; that is, only executable files and a document file are usually provided. As a user of such programs, I've always wanted to have the source files, so that I could better understand how the program worked. That way, I knew that I could add features, write separate interface programs, or correct any latent bugs myself. Also, I believe that the developer should be proud to display his work. I decided to include the commented C language files in lieu of further support. After using the Check Register Program myself for several months, I believe that it functions correctly. If there are detailed questions about how the program works, you or a friend familiar with C are invited to investigate the source files. If you require additional features, feel free to add them. I will be interested in your written questions or comments, but do not expect a response unless you include a self-addressed, stamped envelope. Naturally, I cannot help you diagnose problems in your own modified version of the program. On the other hand, if you discover a genuine bug in the original version, I will be indebted to you for identifying it to me. But absolutely no phone calls, please. One final request. Feel free to distribute the Check Register Program to your friends, but be sure to include all of the original files Genesis and Biography v.1.0, Page 5 unmodified. You may add your revisions, so long as they are identified separately from the originals. INSTALLATION LBR Distribution Library The Check Register Program is normally distributed as an LBR library file containing several executable COM files, a squeezed (reduced in size) document DQC file, several squeezed C language CQ and HQ files, and other files which may or may not be squeezed. Because of size limitations, the DQC file may be supplied separate from the LBR file which contains executable programs. For the same reason, the CQ and HQ files may be concatenated and provided as a single CQ file separate from the program LBR file. Alternatively, the DQC, CQ, and HQ files may be distributed together, but in a separate documentation LBR file. An appropriate public domain (PD) program such as LU, NULU, or LSWEEP may be used to extract files from the LBR distribution library. If your disk will hold approximately 180 KB, you may wish to extract all except the CQ, HQ, and DQC files onto one disk. After extracting such files, any which are squeezed (have a Q as the second letter of the file type, as in FILENAME.TQP) should be unsqueezed using a PD program like USQ or NSWEEP. C language source files of type CQ or HQ may be left within the original LBR distribution library until needed. The CHECKS.DQC file should be extracted, unsqueezed to make CHECKS.DOC, and printed for your use. To print the file, do not use a formatting print routine such as WordStar's Print function. CHECKS.DOC has already been formatted, so that page numbers will be consistent with the Table of Contents. It may be conveniently printed using the CP/M PIP utility. Place PIP.COM and CHECKS.DOC in drive A. At the A> prompt, type PIP LST:=CHECKS.DOC after first making sure that your printer is set for 66 lines per page (11 inch page at 6 lines per inch) and 80 columns per line, loaded with continuous fan-fold paper, and positioned with the print-head at top-of- page. Once all necessary files have been extracted and unsqueezed, store the original LBR distribution disk in a safe place as a backup. That disk should be used if you wish to make a copy for a friend. CHECKS.SCR File and CHECKSIN Program The Check Register Program utilizes the screen parameter file CHECKS.SCR to identify cursor controls which are compatible with your video display terminal or computer console. CHECKS.SCR also contains a "help" display as well as the initial copyright message. Installation v.1.0, Page 6 An uninstalled copy of CHECKS.SCR is included in the distribution package. That file may be modified to add the necessary screen controls by one of three methods: 1. Extract the screen controls from a copy of the WordStar file WS.COM, which has already been installed for your computer console. 2. Select your terminal or one similar to yours from among the limited number available within the CHECKSIN.DAT file. 3. Directly edit the CHECKS.SCR file using a text editor such as WordStar or ED to describe your terminal's screen controls. The CHECKSIN program will automatically adapt the uninstalled CHECKS.SCR file to work properly with your equipment by using either method 1 or method 2. If you have a copy of WS.COM which works with your computer screen, method 1 is perhaps the easiest. If you choose method 2, the CHECKSIN program will display the list of terminals found in CHECKSIN.DAT; since CHECKSIN.DAT is a standard ASCII file, it may be reviewed using the CP/M TYPE command, also. Instructions for performing each of the three installation methods are provided in this section. To execute the CHECKSIN installation program, place CHECKSIN.COM, CHECKSIN.DAT, and CHECKS.SCR on a single disk in drive A. (If you plan to use installation method 1 and have only one disk drive, it will also be necessary to put a copy of WS.COM on the same disk.) You should leave about 2 KB free space on the disk. Do not remove this disk until the installation process is complete. At the A> prompt, type CHECKSIN You will be asked to select one of the three installation methods. If you choose method 1, you will be prompted to insert an installed copy of the WordStar file WS.COM into one of your disk drives; you should not remove it until the CHECKSIN process is complete. Although the WS.COM file will only be read from and will not be altered in any way, it is always best to have a backup copy available. You will be asked to identify which drive contains WS.COM; type the drive letter (A or B or whatever), then press RETURN. If you select method 2, you must indicate which drive includes a copy of the CHECKSIN.DAT file. Assuming you have followed these directions, you may respond by typing A, followed by RETURN. As with WS.COM above, CHECKSIN.DAT will not be altered, but it is best to use a backup copy. When requested to identify which drive contains an uninstalled copy of the screen parameter file CHECKS.SCR, you may type A and RETURN, as indicated above. This file will be modified, but a backup of the original will be created on the same disk and named CHECKS.BAK. Your disk must have enough free space to store this backup file (about 2 KB). Whether or not CHECKSIN is used to adapt CHECKS.SCR to your console screen, you may wish to customize the installation by directly editing Installation v.1.0, Page 7 this standard ASCII file using ED, WordStar, or some other text editor. When using WordStar, it is MANDATORY to edit CHECKS.SCR as a Non- document mode file (select N from the main menu). The CHECKS.SCR file consists of three sections: 1. The first six lines contain a "help" screen, which is shown whenever the ^J command (CONTROL and J simultaneously) is given within the Check Register Program. This section should not be edited. 2. The next eleven lines identify screen controls, which are detailed below. This section may be customized using your text editor. 3. The last section contains a coded copyright message, which is displayed whenever the Check Register Program is started. The coded message is preceded by a single blank line. After seeing the copyright message a number of times, you may wish to eliminate it, thus speeding the startup process. This is possible by deleting the blank line and everything following it. If using WordStar, position the cursor on the blank line preceding the coded message and press ^Y (CONTROL and Y simultaneously) until all following text is deleted. The second section contains eleven lines identifying screen controls required by the Check Register Program. An example is given in Figure 1 below. 2 27 61 Clead1 ESC = 0 Clead2 Not Applicable 0 Ctrail Not Applicable 0 32 32 0 Cb4flg Linoff Coloff Ascur 2 27 84 Eraeol ESC T 2 27 82 Lindel ESC R 2 27 69 Linins ESC E 2 27 41 Ivon ESC ) 2 27 40 Ivoff ESC ( 1 26 Trmini CTRL-Z 100 1 Dloop Inserton Figure 1: Example of Section 2 of CHECKS.SCR Each line consists of decimal integers separated by one or more space or tab character (called white space). There may be white space before the first integer on a line; anything may follow white space after the last integer on a line. Except for the fourth and eleventh lines, the format of each line consists of a count of the number of values contained in the screen control string, then the decimal equivalents of the string of ASCII characters which define each screen control; a count of zero indicates that the string is not applicable. Screen controls identified on each of the eleven lines are defined by line number below. The first four lines describe how to position the cursor at a specific (row,column) coordinate on the screen, where (0,0) represents the upper- Installation v.1.0, Page 8 left corner. The cursor positioning control sequence must obey the following model (spaces are for presentation only): Clead1 P1 Clead2 P2 Ctrail When Cb4flg is zero, P1 = row + Linoff and P2 = column + Coloff. When Cb4flg is non-zero, P1 and P2 are reversed. All parameters are detailed below. 1. Count From 1 thru 8, or 0 if not applicable Clead1 Cursor positioning string preceding row and column 2. Count From 1 thru 4, or 0 if not applicable Clead2 Cursor positioning string between row and column 3. Count From 1 thru 4, or 0 if not applicable Ctrail Cursor positioning string following row and column 4. Cb4flg Zero if row precedes column in cursor positioning sequence; else, non-zero Linoff Cursor positioning value recognized as top row Coloff Cursor positioning value recognized as left column Ascur Zero if cursor positioning P1 and P2 are to be expressed as binary values, 2 if expressed as two ASCII digits, or 3 if expressed as three ASCII digits 5. Count From 1 thru 6, or 0 if not applicable Eraeol Control string to erase from cursor to end of line 6. Count From 1 thru 6, or 0 if not applicable, or -1 to indicate VT100 compatible horizontal scroll region specified by ESC [ Pt r Lindel Control string to delete line containing cursor and move all lower lines up one line each, making last line blank; not used if Count = -1 7. Count From 1 thru 8, or 0 if not applicable, or -1 to indicate VT100 compatible horizontal scroll region specified by ESC [ Pt r Linins Control string to insert a blank line and move line containing cursor and all lower lines down one line each, pushing last line off screen; not used if Count = -1 8. Count From 1 thru 6, or 0 if not applicable Ivon Control string to activate highlighting (dim prefered; else, inverse, underline, or other) 9. Count From 1 thru 6, or 0 if not applicable Ivoff Control string to deactivate highlighting (return to normal) 10. Count From 1 thru 8, or 0 if not applicable Trmini Control string to clear the screen; it may be necessary to include the home cursor control string first Installation v.1.0, Page 9 11. Dloop Approximate speed of your CPU relative to 4 MHz Z80, expressed as percent; 200 indicates your CPU is twice as fast; reducing Dloop reduces the number of loops required for a given delay time, indicating that your CPU is slower or that you wish shorter delay Inserton Zero to startup in overtype (replace) mode when editing Payee field; non-zero to startup in insert mode By carefully following instructions described in this section, you should be able to properly initialize CHECKS.SCR to describe screen controls compatible with your computer console. DEMONSTRATION and TUTORIAL The distribution library contains data files which may be used with the Check Register Program for demonstration and tutorial purposes. After CHECKS.SCR has been properly initialized, place that file along with CHECKS.COM, CLEARS.COM (optional), DEMO.DAT, and DEMO.INF on a disk in drive A. Be sure to retain a copy of DEMO.DAT, since that file will be modified during the following exercises. CHECKS Program The CHECKS program may be used to manage the check register database. To start it, type CHECKS DEMO at the A> prompt. Once the program reads cursor controls from the CHECKS.SCR file and clears the screen, a copyright notice should appear. Press any key except ^C (CONTROL and C simultaneously, which causes the program to stop). Check register entries will be read from the DEMO.DAT database and displayed on your console screen. The default title line, which identifies the CHECKS version number, will appear centered at the top. To the right of that will be the current filename, including disk drive. If your console supports it, the top line should appear highlighted (dim or inverse). After one blank line, a prompt line will be seen; all program prompts will appear on that line. After another blank line, a header (highlighted) displays field names applicable to all records (entries); these are Date (with subfields month, date, and year displayed as MM/DD/YY), Payee, Category, Amount, Deposit, Clear, and Balance (a calculated field). If anything looks wrong, verify that your CHECKS.SCR file was properly initialized as described in the Installation section. Current Date and Yes/No Queries You will be prompted to enter the current date. This is requested because the DEMO.INF file contains information defining automatic transactions. In order to determine if an automatic entry should be generated, it is necessary to compare the current date against the most Demonstration and Tutorial v.1.0, Page 10 recent date found in the database. For demonstration purposes, make the current month one greater than the most recent month, which is the default (e.g., if the default month is 6, simply press 7 and RETURN to change it). Then press RETURN twice to skip past date and year subfields. You will be asked if you wish to change the current date and prompted for a Y/N (Yes/No) response. Queries which may be answered Yes or No normally show a default response. If you simply press RETURN (or any other control command), the default response will be assumed. Pressing ESCAPE will toggle the default reponse, but you will still have to press RETURN if you wish to accept the new default. Press Y or N (without RETURN) to respond Yes or No regardless of the indicated default. There is a shortcut way to specify the current date. After making the minimum number of changes to convert the default date into the current date (e.g., after changing the month), simply press ESCAPE. This will cause the new date to be accepted immediately. Notice that no changes will be necessary if the default date is satisfactory; ESCAPE will be sufficient. Assuming you have made the current month one greater than the most recent previous month, tell the program that you do not wish to change it. You should then see several automatic transactions entered near the bottom of the screen. You will be asked if you wish to accept each. After appropriate automatic transactions have been completed, abreviation information will be read from DEMO.INF and installed into memory. Finally, the personalized title line found in DEMO.INF will be read and displayed on the top line. At this point, you will be prompted to either start a new entry or press ^J for help. Take a look at the "help" screen by pressing ^J (CONTROL and J simultaneously). Throughout the balance of this document, a carat symbol (^) indicates use of the CONTROL key in conjunction with another key, which is similar to the use of SHIFT to type an upper case letter. Cursor Movement Now roam around the check register. Move the cursor using ^D, ^S, ^E, and ^X, which form a diamond pattern on the keyboard. Notice that the cursor jumps left and right by field except within the Payee field, where it moves one character at a time. Try ^F and ^A, which jump from word to word within the Payee field but work like ^D and ^S outside of Payee. Within Payee, ^F and ^A always stop at the first non-space character following one or more spaces, or at the start or end of text, without regard to punctuation. Notice that TAB and ^I do the same thing as ^F; also, BACKSPACE and ^H work like ^S. Scroll up and down one "page" at a time with ^R and ^C, or one line at a time with ^W and ^Z. Use ^QW and ^QZ for continuous scrolling, or ^QR and ^QC for a quick jump to the extremities. Find screen edges with ^QD, ^QS, ^QE, and ^QX. Notice that ^Q appears at the top left whenever you have entered only the first half of a quick cursor movement command; this command display changes to show the cursor line number after completing the command. Demonstration and Tutorial v.1.0, Page 11 Also notice that the second half of a two key command may be entered by pressing either the lower case, upper case, or CONTROLed form; for example, ^Qc, ^QC, and ^Q^C all move to the bottom of the check register. Save, Quit, and Done Commands You may wish to interrupt the demonstration and return to it at a later time. To record all changes made to the check register without quitting the program, use the ^KS command. This will save a complete copy of the current register after first making a backup copy of the original register. The filename specified on the command line when the program was initiated, which also appears at the right edge of the top display line, will be used for each file. For the demonstration, the filename is DEMO. Therefore, the original database file DEMO.DAT will be renamed DEMO.BAK, and the current check register will be saved as DEMO.DAT. All entries including any cleared entries (see Clear Field later in this section) will be saved. There are two ways to stop the program. ^KQ will quit without saving any revisions you may have made to the check register. If there have not been any changes since you first started the program or since the last time you saved the register using ^KS, then the program will quit immediately. If the register was modified, you will be queried to verify that you wish to abandon the current register without first saving it. You may respond Yes or No (see Yes/No Queries earlier in this section). If the response is Yes, then the program will quit; if No, it will resume. The other way to exit the program is by use of the Done command ^KD (or ^KX, which is a synonym for ^KD). In this case, any cleared entries (marked CLR in the Clear field) will first be appended to the CLR file (DEMO.CLR for the demonstration), the DAT file will be renamed BAK (DEMO.BAK), and all active entries (those which have not cleared the bank) will be saved in a new DAT file (DEMO.DAT). Notice that if there are any cleared entries, ^KD is not the same as ^KS followed by ^KQ, since ^KS saves all entries, both cleared and active. The Done command is described in more detail later in this section. New Entry and Date Field When at the end of the check register, you may start a new entry by pressing RETURN. The first time a new entry is initiated, the Date field will default to whatever you entered for current date during program startup. After that, the preceding entry's date will be used as the default. You may change the date by entering a new value when the cursor is in an appropriate subfield; only two digits are permitted. RETURN or any other control command (except ^G, DEL, or ^U, which are discussed below) will cause whatever appears on the display to be accepted as the value for the subfield. For the Date field only, the slash character (/) will produce the same result as RETURN, and the cursor will advance. The value is not checked to be sure that a valid date has been entered, allowing flexibility in your definition of dates; however, the automatic transaction processor and the sorting routine Demonstration and Tutorial v.1.0, Page 12 assume that dates are calendar values displayed as MM/DD/YY (month/day/year). Notice that the prompt line changes each time the cursor enters a new field or subfield. Also, pressing RETURN always causes the cursor to advance to the next field or subfield. Date subfields may be edited by pressing ^G or DEL; further information on editing numeric values is postponed until description of the Amount field. When you are satisfied with the date for your new entry, move to the Payee field. Payee Field and Abreviations Before entering text into the Payee field, check which abreviations are available by using the ^KA command. Abreviations defined in DEMO.INF and installed during startup will be shown in alphabetical order. If there are too many to display on one screen, scroll up or down with ^W or ^Z. Press ESCAPE to restore the check register display. Pick one of the abreviations to define the payee for your new entry. Type the three character abreviation using either upper or lower case (or both), then pause briefly. The abreviation will be automatically expanded, leaving the cursor at the end where additional text may be inserted. The program checks for an abreviation whenever only three characters have been entered for the payee, regardless of case, but only if there has been a brief delay after the third character was typed. Therefore, the same three characters may be used to enter a complete payee description without abreviation expansion, if typed continuously at normal speed. The necessary delay will be shorter (longer) if the value of Dloop found in CHECKS.SCR is reduced (increased) as described in the Installation section. The normal delay is one-half second. Characters may be inserted into the middle of a payee description by moving the cursor to the appropriate position, then typing additional text. If INSERT mode is ON, then previous text will be pushed to the right to make room for the new characters; if INSERT mode is OFF, new characters will overtype (replace) previous ones. Whenever the cursor is within the Payee field, the current mode will be displayed on the prompt line. Pressing ^V will toggle between INSERT ON and INSERT OFF. As described in the Installation section, the value of Inserton in CHECKS.SCR defines the initial mode. The Payee field may be edited using ^G (delete cursor character), DEL (delete previous character), ^T (delete balance of word), ^QY (delete from cursor to end of field), and ^QDEL (delete to beginning of field except cursor). Each deletion may be restored (undeleted) by pressing ^U before additional editing (insert or delete) has been performed. Notice that after the cursor has been moved out of the Payee field, ^U will still be effective once the cursor is returned anywhere within the Payee field; the entire contents of Payee are restored whenever ^U is used. The editing commands ^T, ^QY, and ^QDEL are meaningful only within the Payee field and have no effect outside of that field. Demonstration and Tutorial v.1.0, Page 13 DEL has been used in the previous paragraph to signify the DELETE key. The combination represented by ^_ (CONTROL and UNDERLINE simultaneously) is always a synonym for DEL, so ^Q^_ will function the same as ^QDEL. When reading this document, DEL should be understood to indicate either the DELETE key or the ^_ combination. Notice that a check for abreviation expansion will not occur when the payee description has been edited until only three characters are left. Instead, the check is performed only after the third character is typed. Therefore, to insure that a valid abreviation will be expanded, it is necessary to edit until only two characters are left, then type one more. Category Field When contents of the Payee field are satisfactory, press RETURN or an appropriate control command to move to the Category field. The default category is blank or SPACE. You may enter any single character which will display on the screen, such as a letter, digit, or punctuation mark. Letters will always be converted to upper case. Therefore, the most useful categories are represented by 26 letters and 10 digits. For example, you might use H for household expenses, U for utilities, etc. Or if keeping two separate check registers with one account, you might let 1 represent the first register and 2 the second. It is often satisfactory to accept the default and leave the category blank. The effect of pressing ^G or DEL while in the Category field is to delete the existing character and leave a blank, which is the same result as pressing SPACE. The undo command ^U has no effect upon category (although it may restore an entry which was previously deleted using ^Y). Amount Field and Calculator Next move to the Amount field and enter a value for your new entry. The default amount for new entries is zero. When another value is started, it will replace any previous value. Amounts are always positive, so a plus or minus sign is not required. If plus or minus is pressed, it will be assumed the start of a calculation, which is described below. Amounts should be entered using digits and decimal (or period); a numeric keypad is particularly useful. RETURN or any other control command except ^G, DEL, or ^U, completes the value. It is not always necessary to enter a decimal followed by two digits. If a value is completed before or immediately after pressing decimal, then the value is assumed to be whole dollars; it will be displayed with zeroes following the decimal. If the value is completed after entering a decimal and one digit, then the digit is assumed to be tens of cents and zero is shown in the units place. No more than two digits are permitted after typing a decimal. For example, typing 123 RETURN results in 123.00 123. RETURN results in 123.00 123.4 RETURN results in 123.40 123.45 RETURN results in 123.45 Demonstration and Tutorial v.1.0, Page 14 Numeric fields (Date and Amount) may be edited by pressing ^G or DEL. The effect of either is to delete digits from the right, so that new low-order digits may be substituted. If ^U is pressed before completing a new value, an edited numeric field will be restored to its original value; this is true even if the only editing has been substitution of another value, rather than use of ^G or DEL. Another way to complete a new value is to enter a calculator command. The calculator may be used to add to or subtract from the Amount field. Also, the current amount may be added to or subtracted from calculator Memory, which is displayed on the prompt line whenever the cursor is in the Amount field. Finally, Memory may be cleared, or it may be recalled to the Amount field. Note that calculator Memory will be saved with check register entries, so that it will be available the next time the program is executed. The available calculator commands are listed below: + Add Value to Amount - Subtract Value from Amount = Display Result as Amount m+ Add Amount to Memory m- Subtract Amount from Memory mc Clear Memory to Zero mr Recall from Memory to Amount To add to (or subtract from) the current amount, press + (or -) followed by the value to be added (or subtracted). Press = to complete the addend (or subtrahend) and display the result. Any other calculator or control command except ^G, DEL, or ^U will also complete the result. Adding and/or subtracting several values may be done in series. For example, if the Amount field contains 1.23, then entering + 4.56 - 7.89 + 10.11 = will result in 8.01 for Amount. Notice that aftering entering 7.89 +, the Deposit field changes to show that the sign of Amount has changed; this will be discussed in more detail below. When using the + or - command, the value entered after the command may be used as a constant in a series calculation. Before making use of this constant feature, it is best to press = to make sure the current value is complete. For example, if Amount is 12.00, then entering = + 6 + + + = results in 36.00 for Amount, which is 12.00 + ( 6.00 x 4 ). Or when Amount is 36.00, then = - 5 - - - = yields 16.00, as in 36.00 - ( 5.00 x 4 ). Finally, with Amount at 16.00, then Demonstration and Tutorial v.1.0, Page 15 = + 4 - + - = produces no change in Amount. If there is no value entered after the first + or - command, then the original value of Amount will be used as the constant. For example, if Amount is 16.00, then entering = + + + = yields 16.00 + 16.00 + 16.00 + 16.00 = 4 x 16.00 = 64.00. Calculator Memory may be used in calculations. Assuming that Amount is 64.00 and Memory is 12.34, typing + mr - 9.87 mc m- + 3.45 m+ - 1.23 = produces 69.92 for Amount and 2.22 for Memory. Notice that m commands may be entered using upper or lower case, but are always displayed in lower case. Deposit Field As previously mentioned, amounts are always positive. When the cursor is within the Deposit field, a query on the prompt line asks whether the amount represents a deposit. The response may be Yes or No; the default response will be equal to the current value of the Deposit field, which will be No for a new entry. A Yes response will cause DEP to display in the Deposit field, indicating that the amount is a deposit. If the amount is a withdrawal, then the response should be No, and the Deposit field will be blank. As described near the beginning of this section, the default response for a Yes/No query will be toggled each time ESCAPE is pressed. To accept the default, press RETURN or any other control command. Press Y or N (without RETURN) to respond Yes or No regardless of the indicated default. Editing commands including ^G and DEL have no effect within the Deposit field. Similarly, ^U will not restore the previous value of Deposit (although it may restore an entry which was previously deleted using ^Y). If the amount becomes negative as a result of calculator commands, then the Deposit field will automatically be reversed to restore the amount to a positive value. For example, if Amount is 12.34 and Deposit is blank (No), then entering - 23.45 = will cause Amount to become 11.11 and DEP (Yes) to display in the Deposit field. Clear Field When a transaction is recorded by the bank, it should be marked by positioning the cursor in the Clear field and responding Yes to the query. This will cause CLR to display in the Clear field, signifying Demonstration and Tutorial v.1.0, Page 16 that the check has cleared the bank. The default for a new entry will be No, which is indicated by a blank Clear field. As described for the Deposit field, the default response will be toggled between Yes and No each time ESCAPE is pressed. Press RETURN or any other control command to accept the default. Press the single character Y or N to respond Yes or No directly. Editing commands including ^G and DEL have no effect, and ^U will not restore the previous value. Balance Field Notice that it is not possible to position the cursor within the Balance field; therefore, this field may not be directly altered. Instead, the cumulative balance is automatically calculated and updated whenever necessary. The balance will display within parentheses whenever it is negative (i.e., overdrawn or deficit). In this unfortunate case, it will display with two digits following a decimal over the range ( 0.01) thru (9999.99); beyond that, cents will be rounded off to display ( 10000) thru (3276899). A positive balance will display from 0.00 thru 99999.99, then round off cents to show 100000 thru 3276799, which would be a clear indication of affluence. Insert/Delete Entry and Undo Commands As we have discussed, it is possible to start a new entry by pressing RETURN whenever the cursor is at the end of the check register. To insert a new entry in the middle of the check register, position the cursor on the line where the entry is desired (any field will do), and press ^N. The previous entry on that line will move down to make room. It should be noted that the program will permit up to 128 active entries. If this limit would be exceeded, you will not be permitted to create a new entry. Normally, cleared entries are transferred from the active database file to a separate file, freeing space for new entries. To delete an entry, place the cursor within any field and press ^Y. After an entry has been deleted, it may be restored by positioning the cursor on any line of the check register and within any field, then pressing the Undo command ^U. This feature may be used to move an entry from one line to another by first deleting it, then restoring it at the new location. It is also possible to make several copies of an entry by first deleting it, then pressing ^U repeatedly. Each time ^U is pressed, the entry last deleted by ^Y will be restored at whichever line the cursor is positioned. If a character insert or delete (such as ^G) has intervened since the last ^Y, then the affected Payee field or numeric value may be restored by the first ^U command, but the deleted entry will be restored by the second ^U. Ordering Entries Check register entries may be conveniently ordered (sorted) according to several criteria. Press ^KO to order all entries. You will be prompted Demonstration and Tutorial v.1.0, Page 17 to select the primary field, which implies a specific secondary field as follows: Primary Field Secondary Field Date Payee Payee Date Category Date Amount Date All entries will be ordered by ascending value of the primary field. Entries having the same primary field contents are ordered according to their secondary field. The Payee field will be sorted by ascending ASCII value, which means that upper case letters will come before lower case. Category will be sorted by ASCII value, also, but lower case letters are not allowed in the Category field. It is possible to order a subset of the entire check register. Position the cursor anywhere within the first entry of the subset and press ^O (or ^B, which is a synonym for ^O). As for the ^KO command, you will be prompted to choose the primary field; however, only the remainder of the register will be sorted. That is, all entries above the current entry will be disregarded when ordering is commanded with ^O (or ^B). For example, suppose you wish to sort entries since January 1st (or any other date) by category. First order all entries chronologically by using ^KO and identifying Date as the primary field. Then position the cursor at the entry with the earliest date of interest and press ^O to order remaining entries by the Category field. Check Number You may have noticed the absence of any field to identify the number which is usually printed on a check by the bank. The reason for this is personal; I have never found any particular value in trying to keep track of a check's number. Therefore, I preferred to make the Payee field as long as possible, rather than reserve space for a number field. For those who must record the number, the easiest way may be to add it at the end of the Payee field. Unfortunately, there will not be any convenient way to sort by number if this method is used. Alternatively, you may add the number at the start of the Payee field, so that ASCII ordering by payee will provide some kind of sequence. If you wish to use the latter approach, it is suggested that you first type the payee's description, taking advantage of the abreviation feature, then return to the start of the Payee field to insert the check number, using INSERT ON mode. Print Command The entire check register may be printed by using the ^KP command (or ^P, which is a synonym for ^KP) regardless of the cursor location. You will be prompted to prepare the printer, then press RETURN when ready. The paper should be positioned at the top of a clean page and the printer should be on line before pressing RETURN. The prompt line will Demonstration and Tutorial v.1.0, Page 18 display an appropriate message while printing continues. When complete, a form feed will cause the paper to roll to a new page. Reconciliation In most cases, the bank sends a statement each month indicating which deposits and withdrawals have been recorded for your account. At that time, it is convenient to reconcile your check register against the bank statement. Each transaction recorded by the bank should be marked CLR in your register's Clear field. A convenient way to reconcile is to first order all entries by amount using the ^KO command. Then each statement transaction may be easily located in the register by scanning for the correct amount. Moving the cursor up and down in the Clear field (with ^E and ^X) permits appropriate entries to be directly marked (with ESCAPE or Y) when found. If the statement indicates bank fees have been withdrawn, you should create a debit entry and mark it CLR. Similarly, any interest paid by the bank should be noted as a deposit and cleared. For demonstration purposes, you should mark about a dozen entries CLR. A special reconciliation display is produced by use of the ^KR command. This report itemizes beginning balance, checks (debits), deposits (credits), and current balance summed for each category, including a total over all categories. Checks, deposits, and current balance are listed for cleared entries first, then for all entries (cleared plus uncleared). For each category and for the bottom line, date of the most recent entry will be displayed. If the report is too long to fit on the screen, it may be scrolled up or down using ^Z or ^W. The ^P command will cause the report to be printed. To return to the complete check register, press ESCAPE. By comparing checks, deposits, and current balance totaled over all cleared entries relative to the bank statement, correct reconciliation may be confirmed. Done Command As described earlier in this section, the Done command ^KD (or ^KX, which is a synonym for ^KD) is the most convient way to save the current check register and exit the program. Any cleared entries (marked CLR in the Clear field) will first be appended to the CLR file (DEMO.CLR for the demonstration), the DAT file will be renamed BAK (DEMO.BAK), and all active entries (those which have not cleared the bank) will be saved in a new DAT file (DEMO.DAT). The CLR file is able to hold up to 384 cleared entries, which are stored chronologically. In order to maintain the proper order, the check register will be sorted by date before transferring cleared entries to the CLR file. If the number of new cleared entries to be appended will cause the CLR file to exceed its limit, you will first be asked to authorize eliminating enough of the oldest entries from the CLR file to avoid the problem. If you answer No, you may use ^KS to save all current entries including cleared entries, followed by ^KQ to quit the CHECKS program, then use the CLEARS program (described later in this section) to review, edit, summarize, and delete CLR file entries. If Demonstration and Tutorial v.1.0, Page 19 you answer Yes, then the oldest entries will be automatically discarded. Notice that a backup of the previous CLR file is not made. Before separating them from the active check register, you will be prompted to print an audit trail of cleared entries for your permanent records. You may respond Yes or No. The same disk drive accessed for the original register database file will be used to save the final files. Before writing, all drives will automatically be reset; therefore, it will be possible to change the disk without causing an operating system error. If there is a problem, such as insufficient space on the disk, then you will be prompted to replace the disk and try again; all data should be recovered. For your information, the DAT file will require no more than 7 KB, and the CLR file, 20 KB maximum. Balance Brought Forward Entries which have been marked CLR are transferred from the active database DAT file to a separate CLR file when the ^KD command (or ^KX, as described earlier in this section) is used to save the register and stop the program. Before a cleared entry is transferred, its amount will be added to a special BALANCE BROUGHT FORWARD entry, which is retained in the active database. This insures that the cumulative balance based upon active entries will be accurate. For a demonstration, you should use the Done command (^KD or ^KX), then restart the CHECKS program using the procedure indicated at the beginning of this section. A separate BALANCE BROUGHT FORWARD is determined for each unique category (see Category field); all cleared entries with the same category will be summarized by a single BALANCE BROUGHT FORWARD. The date of the BALANCE BROUGHT FORWARD will be made equal to that of the most recent cleared entry added to the summary. All BALANCE BROUGHT FORWARD entries will be sorted to the top of the check register in order of their date. Because of the special significance of a BALANCE BROUGHT FORWARD entry, it may not be directly modified. Whenever the cursor is within such an entry, the prompt line will query whether its BALANCE BROUGHT FORWARD status should be canceled. If the response is Yes, verification will be requested, since this action removes the entry's special protection. If verified, the change will be denoted by converting all characters in the Payee field to lower case. Once BALANCE BROUGHT FORWARD status is removed, the entry may be edited or deleted; however, this may have a significant impact upon the check register's cumulative balance, so it should be carefully considered. If you simply wish to revise the entry's category, for example, then you may wish to mark it CLR, so that it will subsequently be summarized into another BALANCE BROUGHT FORWARD entry. CLEARS Program The CLEARS program may be used to manage cleared entries stored in the CLR file. Make sure that CLEARS.COM, CHECKS.SCR, DEMO.INF, and DEMO.CLR Demonstration and Tutorial v.1.0, Page 20 are in drive A. At the A> prompt, type CLEARS DEMO Once the program reads cursor controls from the CHECKS.SCR file and clears the screen, a copyright notice should appear. Press any key except ^C to continue. Cleared entries will be read from the DEMO.CLR file (created earlier during this demonstration) and displayed on your screen. The default title line, which identifies the CLEARS version number, will appear centered at the top. To the right of that will be the current filename, including disk drive. A customized title will be read from the DEMO.INF file and displayed in place of the default title. Other information in DEMO.INF, including abreviations and automatic transactions, will be ignored. As you will see, CLEARS operates in a manner which is very similar to the CHECKS program. The Clear field is replaced by the ark field. If an entry is arked, it will be added into a SUMMARY BROUGHT FORWARD entry and deleted from the database of cleared entries (CLR file) when the Done command (^KD or ^KX) is executed. The SUMMARY BROUGHT FORWARD is analogous to BALANCE BROUGHT FORWARD; all arked entries with the same category will be added to a single SUMMARY BROUGHT FORWARD. The Done command and the Save command (^KS) will replace the CLR file without altering the active database DAT file. The cursor will enter only the Category and ark fields, since those are the only ones which may be changed. The other fields cannot be modified, to preserve integrity of the original entries. Changing category permits you to redefine which SUMMARY BROUGHT FORWARD will be used for a arked entry. The ^KR command produces a report analogous to the reconciliation report, with beginning summary, checks, deposits, and current summary for arked entries and for all cleared entries itemized by category, including a total over all categories. CHECKS commands which are not meaningful for the CLEARS program include ^V (insert mode), ^N (insert line), ^T (delete word), ^QY (delete to EOL), ^QDEL (delete to BOL), and ^KA (display abreviations). Delete character commands ^G and DEL are applicable only while the cursor is within the Category field. Other commands function as expected. In particular, ^Y may be used to delete entries from the CLR database, ^U will restore the last entry deleted by ^Y, ^KO (and ^O) may be used to order entries, and ^KP (or ^P) will print them. EXECUTING the PROGRAM The Check Register Program requires that CHECKS.SCR, which has been installed with your console's screen controls, reside in the default disk drive (indicated as part of the > prompt). When the program is started, it will look for an information file of type INF (described in Executing the Program v.1.0, Page 21 a following section) and a database file of type DAT, which need not be on the same disk as the COM or SCR files. When the program is stopped using ^KD (or ^KX), it will add any cleared entries to a file of type CLR, rename the original DAT file to be of type BAK, and write the current active register to a new DAT file. The INF, DAT, CLR, and BAK files will all be on the same disk and will all have the same filename; the default filename is CHECKS, but you may choose another name. In this way, you may manage more than one check register by giving each a different name. On the command line, you may indicate which check register to use. For example, if you wish to work with a register named FAMILY located on a disk in drive B, place CHECKS.COM and CHECKS.SCR in drive A and at the A> prompt type CHECKS B:FAMILY The program will look for FAMILY.INF on drive B. If it is not found, you will be given an opportunity to stop or proceed (the information file is optional). Next the database file FAMILY.DAT will be located on drive B. If it does not exist, which will be the case when you start a new register (described in a later section), you may again choose to quit or continue; in this case, the check register will be empty, and you may begin filling it with entries. When you are done, enter the ^KD command. The program will append any cleared entries to FAMILY.CLR on drive B or, if there were no previous CLR file, it will create one. Finally, FAMILY.DAT (if it existed) will be renamed FAMILY.BAK, and the active check register will be written to a new FAMILY.DAT file on the B drive. In general, the command line may be typed as u>v:CHECKS w:filename where u represents the default disk drive containing CHECKS.SCR, v indicates the drive where CHECKS.COM is located, and the register files may be found on drive w with the name "filename". If v: is not specified, the COM and SCR files will be assumed on default drive u. Similarly, if w: is not included, register files will be read and written on the default drive. Finally, if "filename" is blank, the default name CHECKS will be assumed. Therefore, A>CHECKS will use CHECKS.COM, CHECKS.SCR, CHECKS.INF, CHECKS.DAT, CHECKS.BAK, and CHECKS.CLR all on drive A. Also, A>CHECKS B: will look for CHECKS.COM and CHECKS.SCR on drive A, while CHECKS.INF, CHECKS.DAT, CHECKS.BAK, and CHECKS.CLR will each be on drive B. Other valid commands include Executing the Program v.1.0, Page 22 A>B:CHECKS with CHECKS.SCR in drive A A>CHECKS MYBOOK with CHECKS.SCR in drive A B>A:CHECKS SPOUSE with CHECKS.SCR in drive B B>CHECKS A:CHECKS with CHECKS.SCR in drive B B>CHECKS A: with CHECKS.SCR in drive B The CLEARS program is initiated in a similar manner. CHECKS.SCR must be on the default disk. CLEARS will read the filename.INF and filename.CLR files and write a new filename.CLR file; DAT and BAK files are not involved with the CLEARS program. The general command line is u>v:CLEARS w:filename where the default "filename" is CHECKS. Therefore, the procedure for running CLEARS is the same as that for CHECKS; simply substitute CLEARS in place of CHECKS. INFORMATION FILE The information file is a standard ASCII file which may be created using any text editor, such as ED or WordStar. If WordStar is used, the file must be edited in Non-document mode (select N from the main menu). You may give the file any name of type INF, such as FAMILY.INF. The default name is CHECKS.INF. The INF file may contain three sets of information, which are automatic transactions, abreviation definitions, and customized title. Each set is identified by a keyword. Only the first five characters of each keyword are significant; they may be in upper or lower case. The keywords are AUTOMatic transactions ABREViations TITLE Each keyword must begin in the first column of a line. When the first five characters are determined to be a keyword, remaining characters on the same line are ignored. Each line of text following a keyword will be interpreted as a definition of the type indicated by the keyword, until another keyword is recognized. If the first lines of the file do not contain a keyword, they will be ignored. No line may contain more than 148 characters. Each automatic transaction definition must appear on a separate line and must contain the following five fields: Date Category Amount Deposit Payee The fields must be separated by one or more space or tab (white space). Each of the first four fields may not contain any embedded white space. Examples are Information File v.1.0, Page 23 Automatic Transactions 1 - 1234.56 D Salary 15 h 765.43 w First National Bank, mortage payment 5 H 88.00 - United Power & Light, utilities Date is a single number representing the date of the month when the automatic transaction should occur. Category will be converted to upper case; a hyphen (-) will be interpreted as a blank (default) category. Amount should always be positive; any leading minus sign(s) will be ignored. If the deposit field is D or d, a deposit transaction will be indicated; any other non-space character will define a withdrawal. After skipping any white space following the Deposit field, remaining characters on the line will be considered part of the Payee field. Note that abreviations will not be expanded for automatic transactions. Each abreviation definition must appear on a separate line and must contain two fields separated by white space. The first three characters on each line (including white space) will be converted to upper case and interpreted as an abreviation. Any white space following the first three characters will be ignored. Up to 42 remaining characters on the line (including white space) will replace the abreviation whenever it is recognized in the Payee field. Examples include ABREVIATIONS FNB First National Bank sal Salary Uni United Power & Light The title line displayed by CHECKS and CLEARS may be customized by including the desired text on a separate line following the TITLE keyword in the information file. The first 62 characters will be interpreted as the new title and displayed on the title line. If more than one line of text appears after the TITLE keyword and before the next keyword, only the last will be retained as the new title. An example is Title Jones Family Check Register Each of the three sets of information recognized in an INF file may appear in any order and may be included more than once. That is, you may define abreviations, then a title, then more abreviations, then automatic transactions, then another title, etc. The recommended order is automatic transactions, followed by abreviations, and finally a title. A special character will be recognized whenever it appears in the information file. If a vertical bar (|, which is ASCII 7C hex or 124 decimal) appears on any line, then that character and all following characters on the same line will be ignored. This permits you to include comments in the INF file, which will not be included in the definitions. A complete INF file example follows: Information File v.1.0, Page 24 | Information File for Check Register Program AUTOMATIC TRANSACTIONS 1 - 1234.56 D Salary| 1st of each month 15 h 765.43 w First National Bank, mortage payment 5 H 88.00 - United Power & Light, utilities ABREVIATIONS FNB First National Bank| use for deposits or cash withdrawals sal Salary Uni United Power & Light| gas and electric company TITLE Jones Family Check Register | End of Information File The INF file must carry the same filename as the check register database DAT file; for example, FAMILY.INF goes with FAMILY.DAT. GETTING STARTED Beginning a New Register The simplest way to begin a new register is to create an information file with the default name CHECKS.INF. Use a familiar ASCII text editor such as ED or WordStar (Non-document mode) as described in the preceding section. Define any automatic transactions, which might include salary deposits, mortgage payments, or checking account fees. Add abreviations for utility companies, loan companies, credit cards, supermarkets, etc. Then compose a title for your personalized register. Place CHECKS.COM, CLEARS.COM, and CHECKS.SCR (installed for your screen) on one disk in drive A and CHECKS.INF on another disk in drive B. At the A> prompt, type CHECKS B: The program will indicate that CHECKS.DAT is not available, but you should choose to continue. You will then be presented with an empty register. Find the oldest uncleared entry in your previous paper check register. Determine the account balance which existed prior to that transaction, and enter the balance amount into the new register as a deposit (DEP). Call that entry something like "Current Balance", and mark it cleared (CLR). Then proceed to transfer all remaining transactions from your previous register to your new register, marking them CLR if appropriate. When completed, you may wish to order (^KO) and/or print (^KP) the result. Finally, use ^KD to quit the program. You should observe that CHECKS.DAT and CHECKS.CLR have been added to drive B. You may wish to investigate these files by restarting CHECKS or by executing CLEARS (in the same manner as CHECKS). Getting Started v.1.0, Page 25 Insufficient Disk Space It is usually more convient to have CHECKS.INF, CHECKS.DAT, and CHECKS.CLR on the same disk as CHECKS.COM, CLEARS.COM, and CHECKS.SCR. That way, the program may be started simply by inserting the disk in drive A and typing at the A> prompt CHECKS However, you must remember that the DAT file may grow to be 7 KB, there will probably be a BAK file of the same size, the CLR file can be up to 20 KB, and there must be sufficient space for a copy of the CLR file while appending cleared entries. Therefore, you should verify that the disk can hold about 54 KB in addition to the INF, SCR, and two COM files. If you wish, CLEARS.COM need not be on the same disk. If you run short of disk space while executing either Done (^KD) or Save (^KS), the best way to recover is to remove the disk when prompted and replace it with a formatted disk having about 7 KB free space; make sure that the physical write protect tab is disabled, so that it is possible to write on the disk. Do this even if the removed disk contains the COM and SCR files, since these are not required after the program has started. Then use ^KS followed by ^KQ (Quit). Finally, put the INF and CLR files from the old disk together with the DAT file from the new disk, making sure that there is enough free space left over to match the size of CLR and DAT combined. Restart the Check Register Program to verify that your data was recovered properly. COMMANDS This section describes each command recognized by the Check Register Program. The commands are shown on the left side of the page, along with any applicable synonyms. The description of each command appears on the right side. Commands are grouped according to logical function. The carat symbol (^) indicates use of the CONTROL key in conjunction with another key, in a manner which is analogous to the use of SHIFT to type an upper case letter. The second half of a two key command may be entered by pressing either the lower case, upper case, or CONTROLed form; for example, ^Qc, ^QC, and ^Q^C all move to the bottom of the check register. Cursor Movement Commands ^D Move cursor right one character if in Payee field; otherwise, move right one field or subfield. ^S or ^H Move cursor left one character if in Payee field; or BACKSPACE otherwise, move left one field or subfield. ^E Move cursor up one line if below the first line. ^X Move cursor down one line if above the last line. Commands v.1.0, Page 26 ^F or TAB or ^I Move cursor right one word if in Payee field; otherwise, move right one field or subfield. ^A Move cursor left one word if in Payee field; otherwise, move left one field or subfield. RETURN Move cursor right one field or subfield. / Only while in Date field, move cursor right one subfield. ^R Scroll up one page. ^C Scroll down one page. ^W Scroll up one line, if below first line. ^Z Scroll down one line, if above last line. ^QW Continuously scroll up one line at a time. Speed is adjustable by typing a single digit, 1 for fast thru 9 for slow. Press any non-digit key to stop scrolling. ^QZ Continuously scroll down one line at a time. Speed is adjustable by typing a single digit, 1 for fast thru 9 for slow. Press any non-digit key to stop scrolling. ^QR Jump to beginning of register. ^QC Jump to end of the register. ^QD Jump to last field on the line. ^QS or ^QH Jump to first field on the line. ^QE Jump to top register line displayed on the screen, but stay within the same field. ^QX Jump to bottom register line displayed on the screen, but stay within the same field. Editing Commands ^V Toggle INSERT mode if in Payee field; otherwise, not applicable. ^G Delete the character at the cursor. Not applicable if in Deposit or Clear field. DEL (DELETE) or ^_ Delete the character preceding the cursor if in Payee field; otherwise, same as ^G. Commands v.1.0, Page 27 ^T Delete balance of word if in Payee field; otherwise, not applicable. ^QY Delete from cursor to end of field if in Payee field; otherwise, not applicable. ^QDEL or ^Q^_ Delete from beginning of field to but not including cursor if in Payee field; otherwise, not applicable. ^N Insert a new entry at the line containing the cursor. Move existing lines down. ^Y Delete the line containing the cursor. ^U Undo most recent deletion. If in Date subfield or Amount field, restore previous value. If in Payee field, restore last deleted character. Otherwise, insert previously deleted line. Calculator Commands (while in the Amount field) + Add to current amount. - Subtract from current amount. = Display calculated result as new amount. m+ Add current amount to Memory. m- Subtract current amount from Memory. mc Clear Memory to zero. mr Recall from Memory to Amount field. Save, Quit, and Done Commands ^KS Rename filename.DAT to be filename.BAK, then save all entries, cleared and uncleared, in a new DAT file. ^KQ If there have been no changes, quit immediately; otherwise, verify that the current register is to be abandoned without saving changes. ^KD or ^KX Append all cleared entries to filename.CLR after adding to BALANCE BROUGHT FORWARD amount for each category. Rename filename.DAT to be filename.BAK, then save all uncleared and BALANCE BROUGHT FORWARD entries in a new DAT file. Quit the program. Commands v.1.0, Page 28 Miscellaneous Commands ^KO Order all entries by Date and Payee, or Payee and Date, or Category and Date, or Amount and Date. ^O or ^B Order all entries from the current cursor line thru the remainder of the register, with the same options as ^KO. ^KP or ^P Print the complete check register. ^KA Display all abreviations. ^KR Display reconcilition report. ^J or LINEFEED Display help. ESCAPE Only when queried for a Yes/No response, toggle to opposite default. All of the commands described in this section are applicable to the CHECKS program. All perform similar functions when used with the CLEARS program, except for ^V, ^T, ^N, ^QY, ^QDEL, and ^KA. Notice that ^L is the only alphabetic control character which is not used as a command. FUTURE PLANS Future plans for the Check Register Program include: o Porting from CP/M-80 to MS/PC-DOS and to CP/M-86 and its derivatives. o Relaxing memory constraints for 16-bit computers. o Addition of a program to print new checks which have been entered into the check register. o Possible addition of a field for check number. o Possible extension of the Payee field, with horizontal scrolling when the number of characters exceeds the display window. o Implementation of ideas submitted by you. Let me know what you think.