--- title: "Tax Records" id: 72208 type: "computer_media" slug: "tax-records" url: "http://localhost/computer_media/tax-records/" markdown_url: "http://localhost/computer_media/tax-records.md" published_at: "2026-10-23T01:10:27+00:00" modified_at: "2026-10-23T01:10:27+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/tax-menu.png" excerpt: "Keeps a year's tax records as BASIC strings that a short subroutine itemizes and totals by category, with the author's article about it and his own text editor." post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" indiv: - name: "John (Basil) Wentworth" slug: "john-basil-wentworth" taxonomy: "indiv" url: "http://localhost/indiv/john-basil-wentworth/" genre: - name: "Tax" slug: "tax" taxonomy: "genre" url: "http://localhost/type/tax/" media_type: "Program" programmers: - name: "John (Basil) Wentworth" slug: "john-basil-wentworth" taxonomy: "indiv" url: "http://localhost/indiv/john-basil-wentworth/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Tax%20%28198x%29%28Wentworth%2C%20John%29%28US%29%28TS2068%29%28Program%29.zip" tsrun_member: "Tax (198x)(Wentworth, John)(US)(TS2068)(Program).tap" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2026/10/tax-menu.png" media_type_tags: "Tax" license: false --- # Tax Records 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 to `LLIST` it 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 into `X$(150)` onward, with `ON ERR` catching the end of the DATA. Line 8670 then calls the code with `USR (a+155)`, where `a` is read from VARS (23627). The line length goes in `X$(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 with `CHR$ 8` and printing an underscore with `OVER 1`. ### Potential Issues - `taxfig` shows the OTHER BANK interest as 120, while the `taxlist` version 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 CUN2 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 CUN2 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 FB8 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 100 ```