Keeps track of tax records by category, so that receipts filed in labeled envelopes can be totaled at the end of the year. A table of contents in lines 500–999 lists headings for income, deductions, credits and estimated-tax payments, each with the line number where its entries are kept. Entries are typed into the program as strings: the first five characters of each entry are the amount, followed by a description, with entries separated by an asterisk. A subroutine at line 100 splits the string apart, prints each entry, and prints a total for the category, on screen and on a printer.
The tape is the author’s working copy of a magazine article, "Systematize Your Tax Records" by Basil Wentworth. It holds four files:
tax: Wentworth’s own full-screen text editor, saved with the first part of the article text in memory.tax2: a character array holding the rest of the article, about 4,000 characters, which loads into the editor with LOAD DATA.taxfig: prints the article’s three figures: the table of contents, a partial print-out with sample entries (LOCAL BANK, CHARITY 1 and so on), and the strings used to produce it.taxlist: the tax-record program itself, with sample entries, and an option toLLISTit to a printer. The sample entries also cover a non-cash contribution and estimated federal and state tax payments.
The article explains that the program uses strings and a subroutine rather than READ/DATA so that it runs unchanged on the TS1000 and the TS2068. It also says the entries shown are only a sample, not a full record.
Program Analysis
The Record Program (taxlist)
Lines 100–280 do all the work. A$( TO 5) is taken as the amount with VAL and added to a running total. The rest of the string is then printed one character at a time until an asterisk starts the next entry. Each category is a short block of lines such as 1210 LET A$=" 153LOCAL BANK* 12OTHER BANK" followed by GO SUB 100, so a long category can be split across several LET A$=A$+... lines. Negative amounts are allowed with a leading minus sign. The user runs a category with GO TO its line number, which the table of contents lists.
The Text Editor (tax)
The editor keeps the whole document in A$ and shows a 320-character window of it, with the cursor marked by a character inserted into the display copy. Keys 1–9 move the window down by that many lines, 0 moves it back ten, shifted 5–8 move the cursor, shifted 0 deletes, and ENTER inserts typed text. A menu offers clear, enter/edit, delete/move a marked passage, proofread, LOAD and SAVE of the text as a string array, print, and SAVE of the program. Before a block is deleted or moved, the editor shows the result with up to 250 characters on either side and asks for confirmation. Typing FORMAT or FORMAT 1 as a line of text inserts a stored address block or closing signature.
The print section is marked in a REM as "Woods software". It asks for the margin, one of eight pitch settings (compressed, proportional, elite or pica, normal or elongated), normal or bold strike, line length and line spacing. These are sent to the printer as ESC sequences: ESC L for the margin, ESC Q/P/E/N for pitch with CHR$ 14/CHR$ 15 for elongated, and ESC T for line spacing. The maximum line length for each pitch is worked out from the margin.
Notable Techniques
- Word wrap is done by a 37-byte machine-code routine. After
CLEAR,DIM X$(190)is created first so that it sits at the start of the variables area. Lines 9900–9950 are read intoX$(150)onward, withON ERRcatching the end of the DATA. Line 8670 then calls the code withUSR (a+155), whereais read from VARS (23627). The line length goes inX$(159). The routine scans back from the end of the line for a space or a:'paragraph mark (character 139) and returns the break position. - A blank ENTER inserts character 139 as a paragraph mark, and the print routine breaks lines there.
GO TO 1000*VAL INKEY$sends a menu key straight to its section at line 1000, 3000, 4000 and so on.- In
taxfig, the "COPY" in its printer note is underlined by printing each letter, backspacing withCHR$ 8and printing an underscore withOVER 1.
Potential Issues
taxfigshows the OTHER BANK interest as 120, while thetaxlistversion of the same line has 12.- Several jumps in the editor (
GO TO 1030,GO SUB 1030, menu key 1 to line 1000) point at lines that don’t exist. They work because BASIC carries on at the next line.
Source Code
## Program "tax" (autostart 1)
10 GO TO 600
20 REM SUB INKEY$
30 IF INKEY$="" THEN GO TO 30
35 LET P=CODE INKEY$
40 RETURN
45 REM SUB CONFIRM
50 IF INKEY$<>"" THEN GO TO 50
55 PRINT ''"To CONFIRM, press ""C""": GO SUB 20
60 LET CO=(P=67)+(P=99): RETURN
65 REM GO SUB LIMITS
70 IF N1<1 THEN LET N1=1
75 IF N1>LEN A$ THEN LET N1=LEN A$
80 LET N2=N1+318
85 IF N2>LEN A$ THEN LET N2=LEN A$
90 IF CU<N1-1 THEN LET CU=N1-1
95 IF CU<1 THEN LET CU=1
100 IF CU>N2 THEN LET CU=N2
110 RETURN
120 REM LEGENDS
125 PRINT AT 13,0;LEN A$-1,"LINE NO. ";1+INT (N1/32)
130 PRINT '"1-9 advances line; 0 back 10"
135 PRINT "Shifted 5-8 MOVES cursor"
140 PRINT "Shifted 0 DELETES character"
145 PRINT "Shifted 1 gives MENU"
150 PRINT L$
155 RETURN
600 REM MENU
605 CLS
610 PRINT '"FOR:","PRESS:"
615 PRINT '"CLEAR","CLEAR"
620 PRINT '"ENTER/EDIT",1
625 PRINT
630 PRINT "DELETE/MOVE",3
635 PRINT "PROOFREAD",4
640 PRINT "LOAD "; BRIGHT 1;"data"; BRIGHT 0,5
645 PRINT '"SAVE "; BRIGHT 1;"data"; BRIGHT 0,7
650 PRINT "PRINT",8
655 PRINT "SAVE "; BRIGHT 1;"program"; BRIGHT 0,9
700 GO SUB 20
705 LET CO=0
710 IF P>48 AND P<58 THEN GO TO 1000*VAL INKEY$
890 IF P<>88 AND P<>120 THEN GO TO 600
895 CLS : PRINT '"CLEAR- ": GO SUB 50
900 GO TO 600+350*CO
945 REM CLEAR
950 CLEAR : PRINT ''"Stand by for just a moment"
955 DIM X$(190)
960 RESTORE : FOR F=150 TO 190: READ A: ON ERR GO TO 970
965 LET X$(F)=CHR$ A: NEXT F
970 ON ERR RESET
980 LET a$=CHR$ 128: LET N1=1: LET CU=1
985 LET MA=10: LET TY=4: LET ST=1
990 LET LL=65: LET LS=1: LET RE=1
1005 LET Z$="L"
1015 LET L$="Press ""ENTER"" to add text."
1020 LET MO=1
1045 GO SUB 65
1050 CLS : PRINT 'A$(N1 TO CU);Z$;A$(CU+1 TO N2)
1055 GO SUB 120
1065 REM MOVE WINDOW
1070 GO SUB 20
1075 IF P=7 THEN GO TO 600
1100 IF P=13 AND MO=3 THEN LET A$=A$( TO CU)+">"+A$(CU+1 TO )
1105 IF P=13 AND MO=4 THEN LET A$=A$( TO CU)+"<"+A$(CU+1 TO )
1110 IF P<48 OR P>57 THEN GO TO 1150
1125 LET N1=N1+32*VAL INKEY$-320*(P=48)
1130 LET CU=CU+32*VAL INKEY$-320*(P=48)
1135 GO TO 1030
1150 REM MOVE CURSOR
1155 IF (P<8 OR P>11) AND P<>37 AND P<>40 THEN GO TO 1200
1160 LET CU=CU+(P=9)-(P=8)+5*((P=40)-(P=37))+32*((P=10)-(P=11))
1165 IF CU<N1 THEN LET N1=CU
1170 IF CU>N2 THEN LET N1=CU-319
1180 GO TO 1030
1200 REM ADD TEXT
1205 IF P<>13 AND P<>42 THEN GO TO 1250
1215 IF MO<>1 THEN RETURN
1220 INPUT T$
1225 GO SUB 7200
1235 LET A$=A$( TO CU)+T$+A$(CU+1 TO )
1240 LET CU=CU+LEN T$: LET N2=N2+LEN T$: LET N1=N2-318
1245 GO TO 1000
1250 REM DELETE
1255 IF P<>12 THEN GO TO 1030
1260 LET A$=A$( TO CU-1)+A$(CU+1 TO )
1270 LET CU=CU-1
1280 GO TO 1030
1999 STOP
2000 GO TO 600
3000 REM DELETE/MOVE
3005 LET MO=3
3010 LET Z$=">"
3020 LET L$="Press ""ENTER"" to mark START of passage to be moved."
3030 GO SUB 1030
3040 LET D1=CU
3100 LET Z$="<"
3105 LET MO=4
3110 LET L$="Press ""ENTER"" to mark END of passage to be moved."
3120 GO SUB 1030
3130 LET D2=CU
3140 IF D1>D2 THEN CLS : PRINT '' BRIGHT 1;"You have asked for the end to bebefore the start. Try again. ": GO TO 610
3150 LET Z$="^"
3155 LET MO=5
3160 LET L$="Press ""ENTER"" to mark point of insertion; ""*"" to DELETE"
3170 GO SUB 1030
3180 LET D3=CU
3195 REM DELETE
3200 IF P=13 THEN GO TO 3300
3210 LET ND1=D1-250: IF ND1<1 THEN LET ND1=1
3215 LET ND2=D2+250: IF ND2>LEN A$ THEN LET ND2=LEN A$
3220 CLS : PRINT A$(ND1 TO D1)+A$(D2+2 TO ND2)
3230 GO SUB 50
3235 IF NOT CO THEN GO TO 3000
3240 LET A$=A$( TO D1)+A$(D2+2 TO )
3250 GO TO 1000
3299 REM MOVE TEXT BACKWARD
3300 IF D3>=D2 THEN GO TO 3400
3310 LET ND1=D3-250: IF ND1<1 THEN LET ND1=1
3315 LET ND2=D2+250: IF ND2>LEN A$ THEN LET ND2=LEN A$
3320 CLS : PRINT A$(ND1 TO D3)+A$(D1+2 TO D2)+A$(D3+1 TO D1)+A$(D2+2 TO ND2)
3330 GO SUB 50
3335 IF NOT CO THEN GO TO 3000
3340 LET A$=A$( TO D3)+A$(D1+2 TO D2)+A$(D3+1 TO D1)+A$(D2+2 TO )
3350 GO TO 1000
3409 REM MOVE TEXT FORWARD
3410 LET ND1=D3-250: IF ND1<1 THEN LET ND1=1
3415 LET ND2=D2+250: IF ND2>LEN A$ THEN LET ND2=LEN A$
3420 CLS : PRINT A$(ND1 TO D1)+A$(D2+2 TO D3)+A$(D1+2 TO D2)+A$(D3+1 TO ND2)
3430 GO SUB 50
3435 IF NOT CO THEN GO TO 3000
3440 LET A$=A$( TO D1)+A$(D2+2 TO D3)+A$(D1+2 TO D2)+A$(D3+1 TO )
3450 GO TO 1000
4000 REM PROOFREAD
4005 CLS
4010 LET LL=32
4020 LET HA=0: LET FB=N1
4030 GO TO 8605
5000 REM LOAD data
5005 CLS : PRINT '"Loading "; BRIGHT 1;"data"; BRIGHT 0;''"Start tape"
5010 LOAD "" DATA W$()
5015 LET A$=W$
5020 DIM W$(1)
5025 BEEP .3,12: BEEP 1,12
5030 LET N1=1
5040 LET N2=320
5050 IF N2>LEN A$ THEN LET N2=LEN A$
5060 LET SC=1
5100 GO TO 1
6000 GO TO 600
7000 REM SAVE data
7010 LET SA=7
7020 DIM W$(LEN A$)
7030 LET W$=A$
7040 CLS : PRINT AT 3,6; BRIGHT 1;"DATA"
7100 GO TO 9015
7200 REM PRE-FABS
7210 IF T$="" THEN LET T$=":'"
7220 IF T$=" FORMAT " THEN GO TO 7950
7225 IF T$=" FORMAT 1" THEN GO TO 7980
7230 IF T$=" CAT " THEN LET T$=" :' "
7900 RETURN
7950 LET Z$=" :' "
7955 LET T$=Z$+"[address removed]"
7960 LET T$=T$+Z$+"[address removed]"
7965 LET T$=T$+Z$+"[phone removed]"
7975 RETURN
7980 LET Z$=" :':':':' "
7985 LET T$=Z$+"Yours truly,"+Z$
7990 LET T$=T$+"Basil Wentworth"
7995 RETURN
8000 REM PRINT (Woods software)
8010 CLS : PRINT ''"Hard copy? Y- N- "
8020 GO SUB 20
8030 PRINT AT 2,20; BRIGHT 1;INKEY$: LET HA=(INKEY$="y")+(INKEY$="Y")
8040 GO SUB 50: IF NOT CO THEN GO TO 8000
8050 IF NOT HA THEN GO TO 8500
8060 REM Margin
8065 CLS : PRINT '' FLASH 1;"Be sure"; FLASH 0;" that Printer power"
8070 PRINT "and SEL are ON"
8075 PRINT ''"Margin set at "; BRIGHT 1;MA; BRIGHT 0;" "
8080 GO SUB 8990
8085 IF Z$<>"" THEN LET MA=VAL Z$: GO TO 8060
8090 LPRINT CHR$ 27;"L0";STR$ MA;
8095 REM Type
8100 CLS : PRINT ''"Type set at "; BRIGHT 1;TY; BRIGHT 0;" "
8110 PRINT ''"1. Compressed"'"2. Proportional"'"3. Elite"'"4. Pica"
8120 PRINT "5. Elongated compressed"'"6. Elongated proportional"
8125 PRINT "7. Elongated elite"'"8. Elongated pica"
8130 GO SUB 8990
8140 IF Z$<>"" THEN LET TY=VAL Z$: GO TO 8100
8145 GO TO 8150+TY
8151 LPRINT CHR$ 15;CHR$ 27;"Q";: GO TO 8160
8152 LPRINT CHR$ 15;CHR$ 27;"P";: GO TO 8160
8153 LPRINT CHR$ 15;CHR$ 27;"E";: GO TO 8160
8154 LPRINT CHR$ 15;CHR$ 27;"N";: GO TO 8160
8155 LPRINT CHR$ 14;CHR$ 27;"Q";: GO TO 8160
8156 LPRINT CHR$ 14;CHR$ 27;"P";: GO TO 8160
8157 LPRINT CHR$ 14;CHR$ 27;"E";: GO TO 8160
8158 LPRINT CHR$ 14;CHR$ 27;"N";: GO TO 8160
8180 REM Bold?
8190 CLS : PRINT ''"Strike set for "; BRIGHT 1;ST; BRIGHT 0;" "
8200 PRINT ''"1. Normal"'"2. Bold"
8205 GO SUB 8990
8210 IF Z$<>"" THEN LET ST=VAL Z$: GO TO 8190
8220 IF ST=1 THEN LPRINT CHR$ 27;CHR$ 34;
8230 IF ST=2 THEN LPRINT CHR$ 27;CHR$ 33;
8240 REM LINE LENGTH
8241 IF TY=1 THEN LET LMAX=130-MA
8242 IF TY=2 THEN LET LMAX=105-1.5*MA
8243 IF TY=3 THEN LET LMAX=90-MA
8244 IF TY=4 THEN LET LMAX=75-MA
8245 IF TY=5 THEN LET LMAX=65-.5*MA
8246 IF TY=6 THEN LET LMAX=51-.5*MA
8247 IF TY=7 THEN LET LMAX=45-.5*MA
8248 IF TY=8 THEN LET LMAX=36-.5*MA
8249 LET LL=LMAX
8250 CLS : PRINT ''"Line length set for "; BRIGHT 1;LL; BRIGHT 0;" "
8260 PRINT '"Maximum permissible length is "
8280 PRINT " ";LMAX
8290 GO SUB 8990
8300 IF Z$="" THEN GO TO 8330
8305 LET LL=VAL Z$
8310 IF LL>LMAX THEN LET LL=LMAX
8320 GO TO 8250
8330 REM LINE FEED
8340 CLS : PRINT ''"Line spacing set at ";
8345 PRINT BRIGHT 1;LS; BRIGHT 0;" "
8350 GO SUB 8990
8360 IF Z$="" THEN GO TO 8390
8370 LET LS=VAL Z$: LET LS=.01*INT (100*LS)
8380 GO TO 8340
8390 LET Z$=STR$ INT (24*LS)
8400 IF VAL Z$<10 THEN LET Z$="0"+Z$
8410 LPRINT CHR$ 27+"T"+Z$;
8500 REM PRINT proper
8510 CLS : PRINT ''"Start at beginning (1)"
8520 PRINT " or resume (2)? "; BRIGHT 1;RE
8530 GO SUB 8990
8550 IF Z$<>"" THEN LET RE=VAL Z$: GO TO 8500
8560 IF NOT HA THEN LET LL=32: CLS
8600 LET FB=2
8610 IF RE=2 THEN LET FB=N1
8620 IF A$(LEN A$)<>" " THEN LET A$=A$+" "
8630 IF LL>LEN A$+1-FB THEN LET LL=LEN A$+1-FB
8640 LET X$( TO LL)=A$(FB TO )
8650 LET X$(159)=CHR$ LL
8660 LET a=PEEK 23627+256*PEEK 23628
8670 LET B=USR (a+155)
8680 IF NOT HA THEN PRINT x$( TO B)
8690 IF HA THEN LPRINT x$( TO B)
8700 LET FB=FB+B+1
8710 IF FB<LEN A$ THEN GO TO 8630
8720 BEEP .3,12: BEEP 1,12: STOP
8990 INPUT "If OK, press ""ENTER""; if not, input new value ";Z$
8995 RETURN
9000 REM SAVE program
9005 LET SA=9
9010 CLS : PRINT AT 3,6; BRIGHT 1;"program"
9015 PRINT AT 3,0;"SAVE"''"Under what name do you want to SAVE?"
9020 INPUT N$
9030 PRINT ''"Is """;N$;""" OK?"
9045 GO SUB 45
9050 IF CO THEN GO TO 9100
9055 IF SA>8 THEN GO TO 9000
9060 IF SA<9 THEN GO TO 7000
9100 CLS : PRINT "SAVE """;N$;""""''"Remove earplug from recorder."
9120 IF SA>8 THEN SAVE N$ LINE 1
9130 IF SA<8 THEN SAVE N$ DATA W$()
9135 BEEP .3,12: BEEP 1,12
9140 CLS : PRINT ''"To VERIFY, rewind tape, replace earplug, and play tape."
9150 PRINT ''"If verification fails, GO TO 1 and try again."
9160 IF SA>8 THEN VERIFY N$
9165 IF SA<8 THEN VERIFY N$ DATA W$()
9170 PRINT ' BRIGHT 1;"Verifies OK"
9175 BEEP .3,12: BEEP 1,12
9180 STOP
9900 DATA 42,75,92,1,4,0,237,74
9910 DATA 6,17,14,0,35,12,5,40,7
9920 DATA 62,139,190,40,11,24,244
9930 DATA 62,32,190,40,4
9940 DATA 13,43,24,249
9950 DATA 6,0,13,201
## Program "taxfig" (autostart 1)
10 CLS : PRINT ''"Suggest using TS 2040 printer, or other printer with"; OVER 1;" C";CHR$ 8;"_O";CHR$ 8;"_P";CHR$ 8;"_Y";CHR$ 8;"_ capability."
20 PRINT ''"For FIG 1, GO TO 500"
30 PRINT ''"For FIG 2, GO TO 1000"
40 PRINT ''"For FIG 3, GO TO 4000"
99 STOP
100 LET T=0
110 LET T$=A$( TO 5)
120 PRINT
130 PRINT T$;" ";
140 LET T=T+VAL T$
150 LET A$=A$(6 TO )
170 LET F=1
180 IF F>LEN A$ THEN GO TO 260
190 IF A$(F)<>"*" THEN GO TO 220
200 LET A$=A$(F+1 TO )
210 GO TO 110
220 PRINT A$(F);
240 LET F=F+1
250 GO TO 180
260 PRINT
270 PRINT ,,T;" TOTAL"
280 RETURN
500 CLS : PRINT "CONTENTS LINE"
510 PRINT
520 PRINT "INCOME 1000"
530 PRINT " WAGES 1100"
540 PRINT " INTEREST 1200"
550 PRINT " DIVIDENDS 1300"
590 PRINT "DEDUCTIONS"
630 PRINT " REAL EST TAX 2300"
640 PRINT " SALES TAX 2400"
650 PRINT " OTHER TAX 2500"
660 PRINT " INTEREST PAID 2600"
670 PRINT " MISC 2700"
680 PRINT " CONTRIBUTIONS 2800"
690 PRINT " CASH"
700 PRINT " NON-CASH"
810 PRINT "CREDITS"
820 PRINT " POL CONT 3100"
960 PRINT "PAYMENTS (E.G. ESTIMATED TAX)"
970 PRINT " 8000"
980 PRINT ''"FIGURE 1. TABLE OF CONTENTS"
999 STOP
1000 CLS
1200 PRINT ,,"INTEREST INCOME"
1210 LET A$=" 153LOCAL BANK"
1220 LET A$=A$+"* 120OTHER BANK"
1290 GO SUB 100
2800 PRINT ,,"CONTRIBUTIONS"
2805 PRINT ,," CASH"
2810 LET A$=" 30CHARITY 1 JAN* 100CHARITY 2 MAR"
2840 GO SUB 100
3000 PRINT ''"FIGURE 2. PARTIAL PRINT-OUT"
3999 STOP
4000 CLS
4010 PRINT '"1200 PRINT ,,""INTEREST INCOME"""
4040 PRINT "1210 LET A$="" 153LOCAL BANK"""
4050 PRINT "1220 LET A$=A$+""* 120OTHER BANK"""
4060 PRINT "1290 GO SUB 100"
4070 PRINT "2800 PRINT ,,""CONTRIBUTIONS"""
4080 PRINT "2805 PRINT ,,"" CASH"""
4090 PRINT "2810 LET A$="" 30CHARITY 1 JAN* 100CHARITY 2 MAR"""
4100 PRINT "2840 GO SUB 100"
4200 PRINT '"FIGURE 3. STRINGS FOR FIGURE 2"
8999 STOP
9000 CLS : SAVE "taxfig" LINE 1
9020 BEEP .3,12: BEEP 1,12
9030 PRINT ''"Replay tape TO VERIFY "
9040 VERIFY "taxfig"
9050 PRINT ''' BRIGHT 1;" VERIFY OK "
9060 BEEP .3,12: BEEP 1,12
## Program "taxlist" (autostart 1)
5 CLS : PRINT ''" FOR LPRINT OF LISTING, PRESS ""ENTER"""
10 INPUT A$
15 CLS
20 LLIST 49
25 LPRINT '"LISTING OF TAX RECORD PROGRAM"
26 STOP
29 REM SAVE
30 CLS : SAVE "taxlist" LINE 1
35 BEEP .3,12: BEEP 1,12
40 PRINT "Replay tape TO VERIFY ": VERIFY "taxlist"
42 PRINT '' BRIGHT 1;" VERIFY OK "
45 BEEP .3,12: BEEP 1,12
47 STOP
50 GO TO 500
100 LET T=0
110 LET T$=A$( TO 5)
120 PRINT
121 LPRINT
130 PRINT T$;" ";
131 LPRINT T$;" ";
140 LET T=T+VAL T$
150 LET A$=A$(6 TO )
170 LET F=1
180 IF F>LEN A$ THEN GO TO 260
190 IF A$(F)<>"*" THEN GO TO 220
200 LET A$=A$(F+1 TO )
210 GO TO 110
220 PRINT A$(F);
221 LPRINT A$(F);
240 LET F=F+1
250 GO TO 180
260 PRINT
261 LPRINT
270 PRINT ,,T;" TOTAL"
271 LPRINT ,,T;" TOTAL"
280 RETURN
500 PRINT "CONTENTS LINE"
510 PRINT
520 PRINT "INCOME 1000"
530 PRINT " WAGES 1100"
540 PRINT " INTEREST 1200"
550 PRINT " DIVIDENDS 1300"
580 PRINT
590 PRINT "DEDUCTIONS"
630 PRINT " REAL EST TAX 2300"
640 PRINT " SALES TAX 2400"
650 PRINT " OTHER TAX 2500"
660 PRINT " INTEREST PAID 2600"
670 PRINT " MISC 2700"
680 PRINT " CONTRIBUTIONS 2800"
690 PRINT " CASH"
700 PRINT " NON-CASH"
800 PRINT
810 PRINT "CREDITS"
820 PRINT " POL CONT 3100"
950 PRINT
960 PRINT "PAYMENTS (E.G. ESTIMATED TAX)"
970 PRINT " 8000"
999 STOP
1200 PRINT ,,"INTEREST INCOME"
1210 LET A$=" 153LOCAL BANK* 12OTHER BANK"
1290 GO SUB 100
2800 PRINT ,,"CONTRIBUTIONS"
2805 PRINT ,," CASH"
2810 LET A$=" 30CHARITY 1 JAN* 100CHARITY 2 MAR"
2840 GO SUB 100
2850 PRINT ,," NON-CASH"
2860 LET A$=" 5COOKIES FOR BAKE SALE JUN"
2890 GO SUB 100
8000 PRINT ,,"PAYMENT OF ESTIMATED U.S. TAX"
8010 LET A$=" 634APRIL* 634JUN* 634SEP"
8090 GO SUB 100
8500 PRINT ,,"PAYMENT OF ESTIMATED STATE TAX"
8510 LET A$=" 220APRIL* 220JUN* 220SEP"
8590 GO SUB 100Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.
