IRS – 1986

Developer(s): Algis Gedris
Date: 1986
Type: Program
Platform(s): TS 2068
Tags: Tax

This program is a comprehensive U.S. federal and state income tax calculator for the 1986 tax year, covering IRS Form 1040 (Pages 1 and 2), Schedule A (itemized deductions including medical, taxes, interest, and contributions), Schedule B (interest income), Schedule W (married couple’s deduction), Ohio state income tax, and city/local tax calculations. The federal tax computation at lines 50–88 uses a bracket interpolation technique, reading tax table data with RESTORE and FOR/NEXT loops across up to 16 brackets depending on filing status (BOX variable), and applies a midpoint averaging method for incomes that fall between bracket boundaries. A machine code routine is called via RANDOMIZE USR 64716 to perform a screen copy (print) operation, suggesting a third-party printer driver is loaded separately from tape as noted in the REM at line 9098. All numeric variables are reset to NOT PI (which evaluates to 0 in Sinclair BASIC) at line 9000 rather than using a simple assignment of 0, and column positioning for right-aligned currency display is handled through a set of subroutines (lines 580–597, 3100–3119, 8980–8986) that calculate the correct AT column based on the magnitude of the value.


Program Structure

The program is organized as a menu-driven suite of tax modules, each occupying a distinct line-number range. Execution begins at line 100 (the main menu) after initialization data is set up at lines 9098–9120. The top-level menu dispatches to the following modules:

OptionModuleEntry Line
11040 Page 1600
21040 Page 21000
3Schedule A2000
4Schedule B2500
6Schedule W3000
7Ohio Tax6000
8City Tax7000
9Reset all variables9000
11Save to tape9900
12STOP

Lines 9099–9116 use a DIM T$(17,29) string array to hold the labels for 1040 Page 2 rows, which are printed en masse at line 1005. This is an efficient way to store fixed display strings without cluttering the PRINT statements.

Federal Tax Bracket Engine (Lines 50–88)

The core tax calculation is a reusable subroutine entered at line 50. The filing status is held in BOX (1–5, corresponding to the five IRS filing categories). The data variable is computed at line 50 to select the correct RESTORE target line from the four DATA blocks at lines 78–92. The formula 74+(BOX*4)-INT((BOX=5)*12) maps each BOX value to a specific DATA line number.

For incomes below $50,000 (and not on Schedule C), the program uses a bracket-averaging technique at lines 58–66: it finds the two nearest $25 or $50 bracket boundaries, computes the tax at each boundary by calling the inner subroutine at line 68 twice, then averages the results and rounds to the nearest cent. This mirrors the IRS Tax Table lookup methodology.

The inner subroutine at lines 68–76 performs a sequential scan through up to 16 tax brackets using a FOR/NEXT loop. Each bracket is defined by three DATA values: upper income limit h1, base tax plus, and marginal rate pct. The formula (l-lo)*pct+plus computes the marginal tax within the bracket. The use of 1E36 as the upper limit of the top bracket is a sentinel value ensuring the last bracket always matches.

A notable detail in the Schedule A DATA at line 82 is the expression 0-((A37>3670) AND (A37<3700))+sch as the base tax for the first married-filing-jointly bracket — this embeds an inline correction for a narrow income range, reflecting an actual quirk in the 1986 tax tables.

Column-Positioning Subroutines

Right-aligning currency values on screen is handled by three variants of a magnitude-testing subroutine, each calibrated for a different screen region:

  • Lines 580–586: Right margin at column 29 (for 1040 Page 1, right side)
  • Lines 590–597: Negative number column positioning (right margin at column 28)
  • Lines 3100–3109 / 3110–3119: Left-panel columns for Schedule W display
  • Lines 8980–8986: City tax display columns

Each subroutine sets the variable K by testing R against descending powers of 10, so the final value of K is the correct AT column for right-aligned display. Because the tests are sequential IF statements without ELSE, every condition is evaluated, and the last matching condition wins — a standard Sinclair BASIC idiom for magnitude dispatch.

Machine Code Usage

RANDOMIZE USR 64716 is called at several points (lines 869, 1040, 2042, 2295, 2591, 3056, 6047, 7182, 9930) to invoke a machine code routine at address 64716. The REM at line 9098 — LOAD "TASMAN" CODE : RANDOMIZE USR 64719 — indicates this is a third-party screen dump/printer driver called “TASMAN” (likely the Tasman printer interface software), loaded separately before the BASIC program runs. The slightly different entry points (64716 vs. 64719) suggest different entry points for print and initialization within the same code block.

Variable Reset Strategy

Lines 9000–9023 initialize all program variables to zero using the expression NOT PI. In Sinclair BASIC, PI is non-zero, so NOT PI evaluates to 0 (false). This is functionally identical to LET x=0 but was likely a stylistic or mnemonic choice by the author. All major variable groups are reset in sequence: 1040 variables, city tax variables, Schedule W variables, Ohio tax variables, and Schedule A/B variables.

Ohio Tax Module (Lines 6000–6325)

The Ohio tax calculation at lines 6250–6325 implements a piecewise linear tax function with eight income brackets (up to $5,000, $10,000, $15,000, $20,000, $40,000, $80,000, $100,000, and above). The module computes tax two ways — once with the standard exemption (O6) and once with an additional exemption for dependents (O66) — and selects the more favorable result at lines 6092–6094. The joint filing credit at lines 6150–6200 scales from 20% down to 5% depending on income level.

City Tax Module (Lines 7000–7290)

The city tax module handles up to three income sources (Z1A, Z1B, Z1C) with corresponding withheld amounts, a Schedule J income entry, and configurable tax rates entered as variables T3A (city rate), T5BB (out-of-city rate), and P (tax credit rate). Input is string-based (INPUT R$ at line 7165), using codes like "AA", "AAAA", "BBBB", "CCCC" to select fields — a workaround that allows alphanumeric menu codes where numeric INPUT would be ambiguous. The subroutine at line 8980 provides city-panel-specific column positioning.

Bugs and Anomalies

  • Line 836 is referenced from line 628 (IF A=25 THEN GO TO 836) but does not exist in the listing; this would cause a BASIC error if option 25 is selected from the Page 1 menu. The intended target may be line 830.
  • Line 700 sets LET A6=BX — the variable BX is never defined anywhere in the program; this should almost certainly be BOX. As a result, A6 (exemption count) would always be set to 0 from this path.
  • Line 560 is called at line 710 (GO SUB 560) but does not exist; the intended subroutine is likely at line 580.
  • Line 905 prints A12 instead of A13 at the capital gains row: PRINT AT 6,K;A12 — a copy-paste error that causes the wrong value to display.
  • Line 7145 contains a syntax anomaly: PRINT AT 17,22;" ";17,K;T12 is missing the AT keyword before the second position, which would cause a syntax error at runtime when R<0.
  • Lines 590–591 both test R<-0 and R<-1 respectively and set K=27 in both cases; since -0 = 0, the first condition R<-0 is equivalent to R<0 and will always be true for negative numbers, making line 591 redundant.
  • The DIM T$(17,29) at line 9099 and the subsequent GO TO 80 at line 9120 indicate this initialization block is intended to run only once at first load (jumping to the DATA block entry, then to line 100 via line 49). Re-running GO TO 9099 would re-dimension the array and clear all string data.

Content

Appears On

Related Products

Related Articles

Related Content

Image Gallery

Source Code

   49 GO TO 100
   50 LET l=A37:LET l=l/100:LET data=74+(BOX*4)- INT ((BOX=5)*12)
   52 IF NOT sch AND A37<50000 THEN GO TO 56
   54 GO SUB 68:LET tax= INT (l*100+.5)/100:RETURN 
   56 IF ((BOX=1 OR BOX=4) AND A37 <=2480) OR ((BOX=2 OR BOX=5) AND A37 <=3670) OR ((BOX=3) AND A37 <=1850) THEN LET tax=0:RETURN 
   58 LET br=25+((l>30)*25):LET b1= INT (A37/br):LET b2=b1*br:LET b3=b2+br:LET l=b2/100
   60 GO SUB 68:LET l1=l:LET l=b3/100
   62 GO SUB 68:LET l2=l
   64 LET tax= INT ((l1+l2)/2+.5)
   66 RETURN 
   68 RESTORE data:LET lo=0
   70 FOR f=1 TO 15+(BOX=1)
   72 READ h1,plus,pct
   74 IF l>lo AND l <=h1 THEN LET l=(l-lo)*pct+plus:RETURN 
   76 LET lo=h1:NEXT f:RETURN 
   78 DATA 24.8,0,0,36.7,0,11,47.5,131.9-sch,12,70.1,260.5,14,91.7,576.9,15,116.5,900.9,16,139.2,1297.7,18,161.9,1706.3,20,196.4,2160.3,23
   80 DATA 253.6,2953.8,26,310.8,4441,30,368,6157,34,447.8,8101.8,38,596.7,11134.2,42,882.7,17388,48,1E36,31116,50
   82 DATA 36.7,0,0,59.4,0-((A37>3670) AND (A37<3700))+sch,11,82,249.7,12,128.4,520.9,14,172.7,1170.5,16,218,1879.3,18,265.5,2694.7,22,322.7,3739.7,25
   84 DATA 379.8,5169.7,28,494.2,6768.5,33,647.5,10543.7,38,923.7,16369.1,42,1180.5,27969.5,45,1752.5,39525.5,49,1E36,67553.5,50
   86 DATA 18.35,0,0,29.7,0,11,41,124.85,12,64.2,260.45,14,86.35,585.25,16,109,939.65,18,132.75,1347.35,22,161.35,1869.85,25
   88 DATA 189.9,2584.85,28,247.1,3384.25,33,323.75,5271.85,38,461.85,8184.55,42,590.25,13984.75,45,876.25,19762.75,49,1E36,33776.75,50
   90 DATA 24.8,0,0,47.5,0,11,70.1,249.7,12,93.9,520.9,14,127.3,854.1,17,161.9,1421.9,18,196.4,2044.7,20,253.6,2734.7,24
   92 DATA 310.8,4107.5,28,368,5709.1,32,482.4,7539.5,35,653.9,11543.5,42,882.7,18746.5,45,1168.7,29042.5,48,1E36,42770.5,50
  100 CLS :POKE 23658,8:POKE 23609,40
  103 PRINT AT 0,2;"\{16}\{2}\{20}\{1}     \{20}\{0} I R S  *1 9 8 6* \{20}\{1}     \{20}\{0}\{16}\{0}";'' TAB 6;"SCHEDULE 1040"; TAB 23;"\{16}\{4}ENTER\{16}\{0}"
  107 PRINT AT 3,12;"PAGE 1.......1"; TAB 12;"PAGE 2.......2"
  111 PRINT AT 6,6;"SCHEDULE -A-.......3";''; TAB 6;"SCHEDULE -B-.......4";'' TAB 6;"SCHEDULE -W-.......6";'' TAB 6;"OHIO TAX...........7";'' TAB 6;"CITY TAX...........8";'' TAB 6;"RESET TO ""0"".......9"
  130 PRINT AT 18,0;"\{16}\{2}ALGIS E. GEDRIS    JAN. 19, 1987\{16}\{0}"
  131 REM PRINT AT 19,0;"\{16}\{1}TASMAN - SG/10 ALL-UP\{16}\{0}"
  132 PRINT AT 20,20;"TAPE......11";'"\{16}\{4}OPTION?\{16}\{0}"; TAB 20;"STOP......12"
  140 INPUT A
  142 IF A=1 THEN GO TO 600
  144 IF A=2 THEN GO TO 1000
  146 IF A=3 THEN GO TO 2000
  148 IF A=4 THEN GO TO 2500
  150 IF A=6 THEN GO TO 3000
  152 IF A=7 THEN GO TO 6000
  155 IF A=8 THEN GO TO 7000
  157 IF A=9 THEN GO TO 9000
  158 IF A=11 THEN GO TO 9900
  159 IF A=12 THEN STOP 
  160 PRINT INK 2; FLASH 1; AT 21,0;"INVALID":PAUSE 50:GO TO 100
  500 REM \{16}\{2}1040 PAGE 1\{16}\{0}
  505 CLS 
  510 PRINT AT 0,5;"\{18}\{1}\{16}\{2}6\{16}\{0}\{18}\{0} EXEMPTION No...";' TAB 2;"// 7 WAGES..........";' TAB 2;"/  8 INTEREST.......";' TAB 2;"/  9 DIVIDENDS......";' TAB 2;"I 10 REFUNDS(TAX)..";' TAB 2;"N 12 BUSINESS INCOME";' TAB 2;"C 13 CAPITAL GAIN...";' TAB 2;"O 14 40% CAP GAIN...";' TAB 2;"M 15 SUPLEMENT GAIN.";' TAB 2;"E 16 TAXLE PENSIONS.";' TAB 2;"/ 17 PENSION ROLLOV.";' TAB 2;"/ 18 RENTS.........."
  534 PRINT AT 12,2;"//22 OTHER INCOME...";' TAB 4;"23 TOTAL..........";' TAB 4;"25 BUSINESS EXPENC";' TAB 4;"26 IRA DEDUCTION..";' TAB 4;"28 PENALTY........";' TAB 4;"30 MARRIED COUPLE.";' TAB 4;"31 TOTAL ADJUST...";' TAB 4;"32 GROSS INCOME...";' TAB 10;"\{16}\{4}BALANCE..\{16}\{0}2  \{16}\{4}1040 Pg2.\{16}\{0}3";' TAB 10;"\{16}\{4}C0PY.....\{16}\{0}4  \{16}\{4}RETURN...\{16}\{0}5"
  554 PRINT AT 6,0;"1"'"0"'"4"'"0"''"P"'"A"'"G"'"E"''"1"
  575 GO TO 603
  580 IF R<1000000 THEN LET K=23
  581 IF R<100000 THEN LET K=24
  582 IF R<10000 THEN LET K=25
  583 IF R<1000 THEN LET K=26
  584 IF R<100 THEN LET K=27
  585 IF R<10 THEN LET K=28
  586 RETURN 
  590 IF R<-0 THEN LET K=27
  591 IF R<-1 THEN LET K=27
  592 IF R<-10 THEN LET K=26
  593 IF R<-100 THEN LET K=25
  594 IF R<-1000 THEN LET K=24
  595 IF R<-10000 THEN LET K=23
  596 IF R<-100000 THEN LET K=22
  597 RETURN 
  601 CLS 
  602 GO SUB 510
  603 GO SUB 875
  604 PRINT INK 4; AT 21,0;"OPTION "
  605 INPUT A
  611 IF A=2 THEN GO TO 9500
  612 IF A=3 THEN GO TO 1000
  613 IF A=4 THEN GO TO 869
  614 IF A=5 THEN GO TO 100
  615 IF A=6 THEN GO TO 700
  616 IF A=7 THEN GO TO 710
  617 IF A=8 THEN GO TO 720
  618 IF A=9 THEN GO TO 730
  619 IF A=10 THEN GO TO 740
  620 IF A=12 THEN GO TO 750
  621 IF A=13 THEN GO TO 760
  622 IF A=14 THEN GO TO 770
  623 IF A=15 THEN GO TO 780
  624 IF A=16 THEN GO TO 790
  625 IF A=17 THEN GO TO 800
  626 IF A=18 THEN GO TO 810
  627 IF A=22 THEN GO TO 820
  628 IF A=25 THEN GO TO 836
  629 IF A=26 THEN GO TO 840
  630 IF A=28 THEN GO TO 850
  633 PRINT AT 21,0;"\{18}\{1}\{19}\{1}\{16}\{2}INVALID\{16}\{0}\{18}\{0}\{18}\{0}"
  634 PAUSE 50:GO TO 604
  700 PRINT AT 0,24;"\{16}\{4}NUMBER\{16}\{0}"
  702 INPUT BOX:LET A6=BX
  704 PRINT AT 0,24;"      "
  705 PRINT AT 0,28;A6:GO TO 605
  710 PRINT AT 1,22;"\{16}\{4}YOUR INCOM\{16}\{0}":INPUT W1:PRINT AT 1,22;"\{16}\{4}WIFE INCOM\{16}\{0}":INPUT W11:LET A7=W1+W11:PRINT AT 1,22;"          ":LET R=A7:GO SUB 560:PRINT AT 1,K;A7:GO TO 605
  720 PRINT AT 2,22;"\{16}\{4}\{16}\{0}  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A8=A8+B:PRINT AT 2,22;"          ":LET R=A8:GO SUB 580:PRINT AT 2,K;A8:GO TO 605
  730 PRINT AT 3,22;"\{16}\{4}\{16}\{0}  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A9=A9+B:PRINT AT 3,22;"          ":LET R=A9:GO SUB 580:PRINT AT 3,K;A9:GO TO 605
  740 PRINT AT 4,22;"\{16}\{4}\{16}\{0}  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A10=A10+B:PRINT AT 4,22;"          ":LET R=A10:GO SUB 580:PRINT AT 4,K;A10:GO TO 605
  750 PRINT AT 5,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A12=A12+B:PRINT AT 5,22;"          ":LET R=A12:GO SUB 580:PRINT AT 5,K;A12:GO TO 605
  760 PRINT AT 6,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A13=A13+B:PRINT AT 6,22;"          ":LET R=A13:GO SUB 580:PRINT AT 6,K;A13:GO TO 605
  770 PRINT AT 7,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A14=A14+B:PRINT AT 7,22;"          ":LET R=A14:GO SUB 580:PRINT AT 7,K;A14:GO TO 605
  780 PRINT AT 8,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A15=A15+B:PRINT AT 8,22;"          ":LET R=A15:GO SUB 580:PRINT AT 8,K;A15:GO TO 605
  790 PRINT AT 9,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A16=A16+B:PRINT AT 9,22;"          ":LET R=A16:GO SUB 580:PRINT AT 9,K;A16:GO TO 605
  800 PRINT AT 10,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A17=A17+B:PRINT AT 10,22;"          ":LET R=A17:GO SUB 580:PRINT AT 10,K;A17:GO TO 605
  810 PRINT AT 11,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A18=A18+B:PRINT AT 11,22;"          ":LET R=A18:GO SUB 815:PRINT AT 11,K;A18:GO TO 605
  815 IF A18 >=0 THEN GO SUB 580
  816 IF A18<0 THEN GO SUB 590
  817 RETURN 
  820 PRINT AT 12,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A22=A22+B:PRINT AT 12,22;"          ":LET R=A22:GO SUB 580:PRINT AT 12,K;A22:GO TO 605
  830 PRINT AT 14,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A25=A25+B:PRINT AT 14,22;"          ":LET R=A25:GO SUB 580:PRINT AT 14,K;A25:GO TO 605
  840 PRINT AT 15,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A26=A26+B:PRINT AT 15,22;"          ":LET R=A26:GO SUB 580:PRINT AT 15,K;A26:GO TO 605
  850 PRINT AT 16,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT B:LET A28=A28+B:PRINT AT 16,22;"          ":LET R=A28:GO SUB 580:PRINT AT 16,K;A28:GO TO 605
  860 PRINT AT 17,22;"  \{16}\{4}AMOUNT\{16}\{0}  ":LET A28=A28+B:LET R=A30:GO SUB 580:PRINT AT 17,K;A30:GO TO 605
  869 PRINT AT 20,0;"                                "; AT 21,0;"                                ":RANDOMIZE USR 64716:GO TO 100
  875 PRINT AT 0,22;"          "; AT 0,28;A6
  880 PRINT AT 1,22;"          ":LET R=A7:GO SUB 580:PRINT AT 1,K;A7
  885 PRINT AT 2,22;"          ":LET R=A8:GO SUB 580:PRINT AT 2,K;A8
  890 PRINT AT 3,22;"          ":LET R=A9:GO SUB 580:PRINT AT 3,K;A9
  895 PRINT AT 4,22;"          ":LET R=A10:GO SUB 580:PRINT AT 4,K;A10
  900 PRINT AT 5,22;"          ":LET R=A12:GO SUB 901:PRINT AT 5,K;A12:GO TO 905
  901 IF A12 >=0 THEN GO SUB 580:RETURN 
  902 IF A12<0 THEN GO SUB 590
  904 RETURN 
  905 PRINT AT 6,22;"          ":LET R=A13:GO SUB 580:PRINT AT 6,K;A12
  910 PRINT AT 7,22;"          ":LET R=A14:GO SUB 580:PRINT AT 7,K;A14
  915 PRINT AT 8,22;"          ":LET R=A15:GO SUB 580:PRINT AT 8,K;A15
  920 PRINT AT 9,22;"          ":LET R=A16:GO SUB 580:PRINT AT 9,K;A16
  925 PRINT AT 10,22;"          ":LET R=A17:GO SUB 580:PRINT AT 10,K;A17
  930 PRINT AT 11,22;"          ":LET R=A18:GO SUB 931:PRINT AT 11,K;A18:GO TO 935
  931 IF A18 >=0 THEN GO SUB 580
  932 IF A18<0 THEN GO SUB 590
  934 RETURN 
  935 PRINT AT 12,22;"          ":LET R=A22:GO SUB 580:PRINT AT 12,K;A22
  940 PRINT AT 14,22;"          ":LET R=A25:GO SUB 580:PRINT AT 14,K;A25
  945 PRINT AT 15,22;"          ":LET R=A26:GO SUB 580:PRINT AT 15,K;A26
  950 PRINT AT 16,22;"          ":LET R=A28:GO SUB 580:PRINT AT 16,K;A28
  955 PRINT AT 17,22;"          ":LET R=A30:GO SUB 580:PRINT AT 17,K;A30
  960 RETURN 
 1000 REM \{16}\{2}1040 PAGE 2\{16}\{0}
 1001 CLS 
 1005 PRINT T$(1),T$(2),T$(3),T$(4),T$(5),T$(6),T$(7),T$(8),T$(9),T$(10),T$(11),T$(12),T$(13),T$(14),T$(15),T$(16),T$(17)
 1006 PRINT INK 4; AT 20,11;"BALANCE...2  COPY...3"; AT 21,0;"INPUTS     RETURN....4  TAPE...5"
 1007 LET A33=A32:LET A35=A33-A34:LET A35= INT (A35*100+.5)/100:LET A36=A6*\{16}\{2}1080\{16}\{0}:LET A37=A35-A36
 1009 LET R=A33:GO TO 1027
 1010 LET R=A34:GO TO 1032
 1011 LET R=A35:GO TO 1032
 1012 LET R=A36:GO TO 1032
 1013 LET R=A37:GO TO 1032
 1014 GO SUB 50:LET A38=tax:LET R=tax:GO TO 1032
 1015 LET R=A39:GO TO 1032
 1016 LET R=A40:GO TO 1032
 1017 LET R=A41:GO TO 1032
 1018 LET R=A42:GO TO 1032
 1019 LET R=A43:GO TO 1032
 1020 LET R=A55:GO TO 1032
 1021 LET R=A56:GO TO 1032
 1022 LET R=A60:GO TO 1032
 1023 LET R=A63:GO TO 1032
 1024 LET R=A64:GO TO 1032
 1025 LET R=A67:GO TO 1032
 1026 GO TO 1033
 1027 FOR I=0 TO 16
 1028 IF R >=0 THEN GO SUB 580:GO TO 1029
 1029 IF R<0 THEN GO SUB 590
 1030 PRINT AT I,20;"            "; AT I,K;R
 1031 GO TO 1010+I
 1032 NEXT I
 1033 INPUT R
 1039 IF R=2 THEN GO TO 1115
 1040 IF R=3 THEN PRINT AT 20,0;"                                ":PRINT AT 21,0;"                                ":RANDOMIZE USR 64716:GO TO 100
 1041 IF R=4 THEN GO TO 100
 1042 IF R=5 THEN GO TO 9900
 1043 IF R=34 THEN GO TO 1060
 1045 IF R=39 THEN GO TO 1070
 1046 IF R=41 THEN GO TO 1075
 1047 IF R=42 THEN GO TO 1080
 1048 IF R=43 THEN GO TO 1085
 1049 IF R=56 THEN GO TO 1090
 1050 IF R=60 THEN GO TO 1095
 1055 PRINT INK 2; FLASH 1; AT 21,0;"INVALID":PAUSE 50:PRINT AT 21,0;"        ":GO TO 1033
 1060 PRINT INK 4; AT 1,22;"  AMOUNT  "
 1061 INPUT A34
 1062 LET R=A34:GO SUB 580:PRINT AT 1,22;"           ":PRINT AT 1,K;A34:GO TO 1110
 1070 PRINT INK 4; AT 6,22;"  AMOUNT  "
 1071 INPUT A39:LET R=A39:GO SUB 580:PRINT AT 6,22;"           ":PRINT AT 6,K;A39:GO TO 1115
 1075 PRINT INK 4; AT 8,22;"  AMOUNT  "
 1076 INPUT A41:LET R=A41:GO SUB 580:PRINT AT 8,22;"           ":PRINT AT 8,K;A41:GO TO 1115
 1080 PRINT INK 4; AT 9,22;"  AMOUNT  "
 1081 INPUT A42:LET R=A42:GO SUB 580:PRINT AT 9,22;"           ":PRINT AT 9,K;A42:GO TO 1115
 1085 PRINT INK 4; AT 10,22;"  AMOUNT  "
 1086 INPUT A43:LET A43=A43/2:GO SUB 1600:LET R=A43:GO SUB 580:PRINT AT 10,22;"           ":PRINT AT 10,K;A43:GO TO 1115
 1090 PRINT INK 4; AT 12,22;"  AMOUNT  "
 1091 INPUT A56:LET R=A56:GO SUB 580:PRINT AT 12,22;"          ":PRINT AT 12,K;A56:GO TO 1115
 1095 PRINT INK 4; AT 13,22;"  AMOUNT  "
 1096 INPUT A60:LET R=A60:GO SUB 580:PRINT AT 13,22;"           ":PRINT AT 13,K;A60:GO TO 1115
 1110 LET A35=A33-A34:LET A37=A35-A36:GO TO 1500
 1115 LET A40=A38+A39:LET A55=A40-A41-A42-A43:LET A63=A56+A60:LET A64=A63-A55
 1116 IF A64 >=0 THEN LET A64=A64:LET A67=0:GO TO 1009
 1117 IF A64<0 THEN LET A67= ABS A64:LET A64=0:GO TO 1009
 1600 IF BOX=1 OR BOX=3 OR BOX=4 OR BOX=5 THEN LET RR=50:GO TO 1620
 1610 IF BOX=2 THEN LET RR=100:GO TO 1630
 1615 RETURN 
 1620 IF A43>RR THEN LET A43=50:RETURN 
 1630 IF A43>RR THEN LET A43=100:RETURN 
 1635 RETURN 
 2000 REM \{16}\{2}SCHEDULE A\{16}\{0}
 2002 CLS 
 2004 LET AA6=O13+T5A+T16-T19
 2005 PRINT AT 0,3;"1 MEDICINE........":PRINT AT 0,21; INK 4;"YES-1/NO-0"
 2006 INPUT A
 2007 IF A=0 THEN GO TO 2009
 2008 IF A=1 THEN GO TO 2200
 2009 PRINT "     MEDICINE........":PRINT AT 1,3;"6 STATE,CITY TAX.."; AT 2,3;"7 REAL ESTATE TAX."; AT 3,3;"8 GENERAL SALES...":PRINT "S 80 CAR TAX.........","C  9 PERSONAL PROP TX","H        TAXES TOTAL","E 11 HOME INTEREST...","D 12 CREDIT CARD INT.","U      INTEREST TOTAL","L 15 CONTRIBUTIONS...","E 16   "" NOT CASH....","         CONTR. TOTAL","  20 UNION DUES......","A 22 OTHER...........","                T0TAL","     SUB TOTAL.......","  \{18}\{1}\{16}\{2}25\{18}\{0}\{16}\{0} STATUS \{16}\{2}BOX >\{16}\{0}","     SCHED A TOTAL...":PRINT AT 17,18;BOX
 2010 PRINT AT 21,0;"OPTION?":PRINT AT 20,21;" COPY.....3":PRINT AT 21,21;" RETURN...4"
 2015 LET R=AA5:GO TO 2036
 2016 LET R=AA6:GO TO 2040
 2017 LET R=AA7:GO TO 2040
 2018 LET R=AA8:GO TO 2040
 2019 LET R=AA80:GO TO 2040
 2020 LET R=AA9:GO TO 2040
 2021 LET R=AA10:GO TO 2040
 2022 LET R=AA11:GO TO 2040
 2023 LET R=AA12:GO TO 2040
 2024 LET R=AA14:GO TO 2040
 2025 LET R=AA15:GO TO 2040
 2026 LET R=AA16:GO TO 2040
 2027 LET R=AA18:GO TO 2040
 2028 LET R=AA20:GO TO 2040
 2029 LET R=AA22:GO TO 2040
 2030 LET R=AA23:GO TO 2040
 2031 LET R=AA24:GO TO 2040
 2032 LET R=AA25:GO TO 2040
 2033 LET R=AA26:GO TO 2040
 2035 GO TO 2041
 2037 FOR I=0 TO 18:LET R= INT (R*100+.5)/100:GO SUB 580:PRINT AT I,21;"           "; AT I,K;R:GO TO 2016+I
 2040 NEXT I
 2041 INPUT R
 2042 IF R=3 THEN PRINT AT 20,0;"                                                                ":RANDOMIZE USR 64716:GO TO 100
 2043 IF R=4 THEN GO TO 100
 2044 IF R=6 THEN GO TO 2060
 2045 IF R=7 THEN GO TO 2063
 2046 IF R=8 THEN GO TO 2066
 2047 IF R=80 THEN GO TO 2069
 2048 IF R=9 THEN GO TO 2072
 2049 IF R=11 THEN GO TO 2075
 2050 IF R=12 THEN GO TO 2078
 2051 IF R=15 THEN GO TO 2081
 2052 IF R=16 THEN GO TO 2084
 2053 IF R=20 THEN GO TO 2087
 2054 IF R=22 THEN GO TO 2090
 2055 IF R=25 THEN GO TO 2093
 2060 PRINT INK 4; AT 1,21;"  AMOUNT   ":INPUT AA6:GO TO 2150
 2063 PRINT INK 4; AT 2,21;"  AMOUNT   ":INPUT AA7:GO TO 2150
 2066 PRINT INK 4; AT 3,21;"  AMOUNT   ":INPUT AA8:LET AA8=AA8*\{16}\{2}1.3\{16}\{0}:GO TO 2150
 2069 PRINT INK 4; AT 4,21;"  AMOUNT   ":INPUT AA80:GO TO 2150
 2072 PRINT INK 4; AT 5,21;"  AMOUNT   ":INPUT AA9:GO TO 2150
 2075 PRINT INK 4; AT 7,21;"  AMOUNT   ":INPUT AA11:GO TO 2150
 2078 PRINT INK 4; AT 8,21;"  AMOUNT   ":INPUT AA12:GO TO 2150
 2081 PRINT INK 4; AT 10,21;"  AMOUNT   ":INPUT AA15:GO TO 2150
 2084 PRINT INK 4; AT 11,21;"  AMOUNT   ":INPUT AA16:GO TO 2150
 2087 PRINT INK 4; AT 13,21;"  AMOUNT   ":INPUT AA20:GO TO 2150
 2090 PRINT INK 4; AT 14,21;"  AMOUNT   ":INPUT AA22:GO TO 2150
 2093 PRINT AT 17,18;"\{18}\{1}\{16}\{4}???\{16}\{0}\{18}\{0}":INPUT BOX:PRINT AT 17,18;"   "; AT 17,18;BOX
 2094 IF BOX=1 THEN LET AA25\{18}\{1}=\{18}\{0}2480\{18}\{0}:GO TO 2150
 2095 IF BOX=2 THEN LET AA25=3670:GO TO 2150
 2096 IF BOX=3 THEN LET AA25=1835:GO TO 2150
 2097 IF BOX=4 THEN LET AA25=2480:GO TO 2150
 2098 \{18}\{0} IF BOX=5 THEN LET \{16}\{0}AA25\{18}\{1}=\{18}\{0}3670:GO TO 2150
 2099 RETURN 
 2150 LET AA10=AA9+AA80+AA8+AA7+AA6:LET AA14=AA12+AA11:LET AA18=AA16+AA15:LET AA23=AA22+AA20:LET AA24=AA5+AA10+AA14+AA18+AA23:LET AA26=AA24-AA25:LET AA26= INT (AA26*100+.5)/100:LET A34=AA26
 2151 IF AA26<0 THEN LET AA26=0:LET A34=AA26
 2152 GO TO 2015
 2199 GO TO 100
 2201 CLS 
 2202 PRINT AT 0,0;"\{20}\{1}>>>>>>\{20}\{0} MEDICAL AND DENTAL \{20}\{1}<<<<<<\{20}\{0}"; AT 1,12;"EXPENSES"
 2205 PRINT AT 3,2;"1 DRUGS............"; AT 4,2;"2 DOCTORS.........."; AT 5,4;"TRANSPORTATION..."; AT 6,4;"HEARING AID......"; AT 7,4;"DENTURES.........."; AT 8,4;"GLASSES.........."; AT 9,4;"OTHERS..........."; AT 10,21;"-----------"; AT 11,2;"3 TOTAL............"; AT 12,2;"4 1040 LINE 33-5%.."; AT 13,21;"-----------"; AT 14,2;"5 MEDICAL TOTAL...."; AT 20,21;"COPY.....2"; AT 21,0;"INPUTS               SCHED-A-.3"
 2210 PRINT AT 3,21;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT AA1:LET R=AA1:GO SUB 580:PRINT AT 3,21;"           "; AT 3,K;AA1
 2220 PRINT AT 4,21;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT AA2:LET R=AA2:GO SUB 580:PRINT AT 4,21;"           "; AT 4,K;AA2
 2230 PRINT AT 5,21;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT AA224:LET R=AA224:GO SUB 580:PRINT AT 5,21;"           "; AT 5,K;AA224
 2240 PRINT AT 6,21;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT AA225:LET R=AA225:GO SUB 580:PRINT AT 6,21;"           "; AT 6,K;AA225
 2250 PRINT AT 7,21;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT AA226:LET R=AA226:GO SUB 580:PRINT AT 7,21;"           "; AT 7,K;AA226
 2260 PRINT AT 8,21;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT AA227:LET R=AA227:GO SUB 580:PRINT AT 8,21;"           "; AT 8,K;AA227
 2270 PRINT AT 9,21;"  \{16}\{4}AMOUNT\{16}\{0}  ":INPUT AA228:LET R=AA228:GO SUB 580:PRINT AT 9,21;"           "; AT 9,K;AA228
 2280 LET AA3=AA228+AA227+AA226+AA225+AA224+AA2+AA1:LET R=AA3:GO SUB 580:PRINT AT 11,K;AA3
 2282 LET AA4=A32*.05:LET AA4= INT (AA4*100+.5)/100:LET R=AA4:GO SUB 580:PRINT AT 12,K;AA4
 2285 LET AA5=AA3-AA4
 2287 IF AA5<0 THEN LET R=AA5:GO SUB 590:PRINT AT 14,K;AA5:LET AA5=0:GO TO 2290
 2289 IF AA5 >=0 THEN LET R=AA5:GO SUB 580:PRINT AT 14,K;AA5
 2290 PRINT FLASH 1; INK 2; AT 20,14;">>>>>"; AT 21,14;">>>>>"
 2291 INPUT C
 2292 IF C=2 THEN GO TO 2295
 2293 IF C=3 THEN CLS 
 2294 PRINT AT 0,3;"1 MEDICINE........":GO TO 2009
 2295 PRINT AT 20,0;"                                "; AT 21,0;"                                ":RANDOMIZE USR 64716:CLS 
 2297 PRINT AT 0,3;"1 MEDICINE........":GO TO 2009
 2299 STOP 
 2500 REM \{16}\{2}SCHEDULE B\{16}\{0}
 2502 CLS 
 2505 PRINT AT 0,0;"\{20}\{1}>>>>>\{20}\{0} S C H E D U L E  -B- \{20}\{1}<<<<<\{20}\{0}"
 2510 PRINT AT 3,3;"1  MORTGAGE.......":PRINT INK 4; AT 3,21;"  AMOUNT   "
 2515 INPUT "\{16}\{2}IF NONE ENTER >> 0 << \{16}\{0}";B1
 2516 LET R=B1:GO SUB 580:PRINT AT 3,21;"           ":PRINT AT 3,K;B1
 2520 PRINT AT 4,3;"2  INTEREST.......":PRINT INK 4; AT 4,21;"  AMOUNT   ":LET BB2=4
 2525 INPUT "\{16}\{2}IF NONE ENTER >> 0 << \{16}\{0}";B2B
 2530 IF B2B=0 THEN GO TO 2580
 2531 LET BB2=BB2+1
 2532 IF B2B>0 THEN LET R=B2B:GO SUB 580:PRINT AT BB2,K;B2B:LET B2=B2+B2B:GO TO 2525
 2580 PRINT AT BB2+1,21;"-----------":PRINT AT 4,21;"           ":LET B3=B2+B1:LET R=B3:GO SUB 580:PRINT AT BB2+2,K;B3:PRINT AT BB2+2,3;"3 TOTAL":LET A8=B3
 2585 PRINT AT 20,21;"COPY.....2":PRINT AT 21,0;"INPUTS               RETURN...3"
 2586 PRINT FLASH 1; INK 2; AT 20,15;">>>>>"; AT 21,15;">>>>>"
 2590 INPUT W
 2591 IF W=2 THEN PRINT AT 20,15;"                  ":PRINT AT 21,0;"                                ":RANDOMIZE USR 64716:GO TO 100
 2592 IF W=3 THEN GO TO 100
 2600 STOP 
 3000 REM \{16}\{2}SCHEDULE W\{16}\{0}
 3002 CLS 
 3005 PRINT AT 0,0;"\{20}\{1}>>>>>\{20}\{0} S C H E D U L E -W- \{20}\{1}<<<<<<\{20}\{0}"
 3007 PRINT AT 2,12;"(A) YOU   (B) SPOUSE"
 3010 PRINT AT 3,0;"1 WAGES":PRINT AT 5,0;"2 INC/LOSS":PRINT AT 7,0;"3 TOTAL":PRINT AT 9,0;"4 ADJUST.":PRINT AT 11,0;"5 QUALIFY":PRINT AT 13,0;"6 SMALLER":PRINT AT 15,0;"7 10%":PRINT AT 16,20;"------------":PRINT AT 17,0;"8 DEDUCTION"
 3012 LET R=W1:GO SUB 3100:PRINT AT 3,K;W1:LET R=W11:GO SUB 580:PRINT AT 3,K;W11
 3014 PRINT INK 4; AT 5,11;"YOU-Y/SPOUSE-S/B0TH-B"
 3015 INPUT W$
 3016 IF W$="Y" THEN LET W2=A18:LET W12=0:PRINT AT 5,10;"                      ":LET R=W2:IF R >=0 THEN GO SUB 3100:PRINT AT 5,K;W2:GO TO 3030
 3017 IF R<0 THEN GO SUB 3110:PRINT AT 5,K;W2:GO TO 3030
 3019 IF W$="S" THEN LET W12=A18:LET W2=0:PRINT AT 5,10;"                      ":LET R=W12:IF R >=0 THEN GO SUB 580:PRINT AT 5,K;W12:GO TO 3030
 3020 IF R<0 THEN GO SUB 590:PRINT AT 5,K;W12:GO TO 3030
 3022 IF W$="B" THEN LET W12=A18/2:PRINT AT 5,10;"                      ":LET R=W12:IF R >=0 THEN GO SUB 580:PRINT AT 5,K;W12:GO TO 3025
 3023 IF R<0 THEN GO SUB 590:PRINT AT 5,K;W12
 3025 LET W2=A18/2:LET R=W2:IF R >=0 THEN GO SUB 3100:PRINT AT 5,K;W2:GO TO 3030
 3026 IF R<0 THEN GO SUB 3110:PRINT AT 5,K;W2
 3030 LET W3=W1+W2:LET R=W3:GO SUB 3100:PRINT AT 7,K;W3
 3031 PRINT AT 6,10;"----------------------"
 3033 LET W13=W12+W11:LET R=W13:GO SUB 580:PRINT AT 7,K;W13
 3034 PRINT INK 4; AT 9,13;"LINE A25   ":INPUT AA:PRINT AT 9,13;"         "
 3035 LET W4=A26/2+AA:LET R=W4:GO SUB 3100:PRINT AT 9,K;W4
 3038 LET W5=W3-W4:LET W5= INT (W5*100+.5)/100:LET R=W5:GO SUB 3100:PRINT AT 11,K;W5
 3039 PRINT INK 4; AT 9,24;"LINE A25   ":INPUT BB:PRINT AT 9,24;"         "
 3040 LET W14=A26/2+BB:LET R=W14:GO SUB 580:PRINT AT 9,K;W14
 3043 LET W15=W13-W14:LET R=W15:GO SUB 580:PRINT AT 11,K;W15
 3045 IF W5<W15 THEN LET W6=W5:LET R=W6:GO SUB 580:PRINT AT 13,K;W6:GO TO 3050
 3047 IF W15<W5 THEN LET W6=W15:LET R=W6:GO SUB 580:PRINT AT 13,K;W6:GO TO 3050
 3050 PRINT AT 15,27;"X .10"
 3051 LET W8=W6*.1:LET W8= INT (W8*100+.5)/100:LET R=W8:GO SUB 580:PRINT AT 17,K;W8:LET A30=W8
 3053 PRINT AT 20,21;"COPY.....2"; AT 21,0;"INPUT                RETURN...3"
 3054 PRINT FLASH 1; INK 2; AT 20,15;">>>>>"; AT 21,15;">>>>>"
 3055 INPUT W
 3056 IF W=2 THEN PRINT AT 20,15;"                 "; AT 21,0;"                                ":RANDOMIZE USR 64716:GO TO 100
 3057 IF W=3 THEN GO TO 100
 3100 IF R<1000000 THEN LET K=12
 3101 IF R<100000 THEN LET K=13
 3102 IF R<10000 THEN LET K=14
 3103 IF R<1000 THEN LET K=15
 3104 IF R<100 THEN LET K=16
 3105 IF R<10 THEN LET K=17
 3109 RETURN 
 3110 IF R<-0 THEN LET K=16
 3111 IF R<-1 THEN LET K=16
 3112 IF R<-10 THEN LET K=15
 3113 IF R<-100 THEN LET K=14
 3114 IF R<-1000 THEN LET K=13
 3115 IF R<-10000 THEN LET K=12
 3116 IF R<-100000 THEN LET K=11
 3119 RETURN 
 3500 STOP 
 6000 REM \{16}\{2}OHIO TAX\{16}\{0}
 6005 CLS 
 6007 PRINT "   1 INCOME 1040-32-.","   \{18}\{1}\{16}\{2}2\{16}\{0}\{18}\{0} OH ADJ(IF NO-0)\{18}\{1}\{16}\{2}>\{16}\{0}\{18}\{0}","   3 GROSS INCOME....","O  4 EXEMPTION No....","H  5 ADDITIONAL EXEMP","I  6 TAXABLE INCOME..","O  7 TAXES(TAX TABLE)","   8 CREDITS.........","  10 EXEMPT CREDIT...","T 11 BALANCE.........","A \{18}\{1}\{16}\{2}12\{16}\{0}\{18}\{0} JOINT CREDIT..\{18}\{1}\{16}\{2}>>\{16}\{0}\{18}\{0}","X 13 OHIO TAX.....DUE","  14 TAX PAID........","  18 AMOUNT YOU OWE..","  23 REFUND.........."
 6008 PRINT AT 3,18;A6:LET O4=A6*650
 6009 LET O4=A6*650:PRINT AT 3,18;A6; AT 20,21;"COPY....21"; AT 21,0;"INPUTS               RETURN..22"; AT 20,15;"\{18}\{1}\{16}\{2}>>>>>\{16}\{0}\{18}\{0}"; AT 21,15;"\{18}\{1}\{16}\{2}>>>>>\{16}\{0}\{18}\{0}"
 6010 GO SUB 6015:GO TO 6042
 6015 LET R=A32:GO TO 6036
 6016 LET R=O2:GO TO 6040
 6017 LET R=O3:GO TO 6040
 6018 LET R=O4:GO TO 6040
 6019 LET R=O5:GO TO 6040
 6020 LET R=O6:GO TO 6040
 6021 LET R=O7:GO TO 6040
 6022 LET R=O8:GO TO 6040
 6023 LET R=O10:GO TO 6040
 6024 LET R=O11:GO TO 6040
 6025 LET R=O12:GO TO 6040
 6026 LET R=O13:GO TO 6040
 6027 LET R=O14:GO TO 6040
 6028 LET R=O18:GO TO 6040
 6029 LET R=O23:GO TO 6040
 6035 GO TO 6041
 6036 FOR I=0 TO 14:LET R= INT (R*100+.5)/100:IF R >=0 THEN GO SUB 580:GO TO 6038
 6037 IF R<0 THEN GO SUB 590
 6038 PRINT AT I,21;"           "; AT I,K;R
 6039 GO TO 6016+I
 6040 NEXT I
 6041 RETURN 
 6042 INPUT R
 6043 IF R=2 THEN GO TO 6050
 6044 IF R=8 THEN GO TO 6080
 6045 IF R=12 THEN GO TO 6150
 6046 IF R=14 THEN GO TO 6205
 6047 IF R=21 THEN PRINT AT 20,0;"                                "; AT 21,0;"                                ":RANDOMIZE USR 64716:GO TO 100
 6048 IF R=22 THEN GO TO 100
 6049 PRINT #1; AT 0,0;"\{16}\{2}INVALID\{16}\{0}":PAUSE 50:GO TO 6042
 6050 PRINT INK 4; AT 1,21;"   AMOUNT  ":INPUT O2
 6051 LET O3=A32+O2:LET O4=A6*650:LET O6=O3-O4:GO SUB 6015
 6052 PRINT FLASH 1; INK 2; AT 5,21;">>"; AT 6,21;"   AMOUNT  "
 6075 INPUT O7
 6076 GO TO 6250
 6077 LET O5=350*A6:LET O66=O3-O4-O5:LET R=O66:GO SUB 580:PRINT AT 5,23;"        ":PRINT FLASH 1; INK 4; AT 5,K;O66
 6078 INPUT O77
 6079 GO TO 6290
 6080 PRINT INK 4; AT 7,21;"   AMOUNT  ":INPUT O8
 6088 LET O10=A6*20:LET O11=O7-O8-O10:LET O111=O77-O8
 6092 IF O11<O111 THEN LET O5=0:LET O13=O11:GO SUB 6015:GO TO 6042
 6094 IF O11>O111 THEN LET O11=O111:LET O13=O11:LET O6=O66:LET O7=O77:LET O10=0:GO SUB 6015:GO TO 6042
 6150 IF O6 <=25000 THEN GO TO 6160
 6152 IF O6 <=50000 THEN GO TO 6170
 6153 IF O6 <=75000 THEN GO TO 6180
 6154 IF O6>75000 THEN GO TO 6190
 6160 LET O12=.2*O11:GO TO 6200
 6170 LET O12=.15*O11:GO TO 6200
 6180 LET O12=.1*O11:GO TO 6200
 6190 LET O12=.05*O11
 6200 LET O13=O11-O12:GO TO 6210
 6205 PRINT INK 4; AT 12,21;"   AMOUNT  ":INPUT O14
 6210 LET O13=O11-O12:LET O18=O13-O14
 6212 IF O18>0 THEN LET O23=0:LET O18= ABS O18:GO SUB 6015:GO TO 6042
 6213 IF O18<0 THEN LET O23= ABS O18:LET O18=0:GO SUB 6015:GO TO 6042
 6250 IF O6<5000 THEN GO TO 6260
 6251 IF O6<10000 THEN GO TO 6263
 6252 IF O6<15000 THEN GO TO 6266
 6254 IF O6<20000 THEN GO TO 6270
 6256 IF O6<40000 THEN GO TO 6273
 6257 IF O6<80000 THEN GO TO 6276
 6258 IF O6<100000 THEN GO TO 6280
 6259 IF O6>100000 THEN GO TO 6283
 6260 LET O7A=O6*.00855
 6261 IF O7>O7A THEN LET O7=O7A:GO TO 6077
 6262 IF O7<O7A THEN GO TO 6077
 6263 LET O7A=42.75+(O6-5000)*.0171
 6264 IF O7>O7A THEN LET O7=O7A:GO TO 6077
 6265 IF O7<O7A THEN GO TO 6077
 6266 LET O7A=128.25+(O6-10000)*.0342
 6267 IF O7>O7A THEN LET O7=O7A:GO TO 6077
 6268 IF O7<O7A THEN GO TO 6077
 6270 LET O7A=299.25+(O6-15000)*.04275
 6271 IF O7>O7A THEN LET O7=O7A:GO TO 6077
 6272 IF O7<O7A THEN GO TO 6077
 6273 LET O7A=513+(O6-20000)*.0513
 6274 IF O7>O7A THEN LET O7=O7A:GO TO 6077
 6275 IF O7<O7A THEN GO TO 6077
 6276 LET O7A=1539+(O6-40000)*.05985
 6277 IF O7>O7A THEN LET O7=O7A:GO TO 6077
 6278 IF O7<O7A THEN GO TO 6077
 6280 LET O7A=3933+(O6-80000)*.0684
 6281 IF O7>O7A THEN LET O7=O7A:GO TO 6077
 6282 IF O7<O7A THEN GO TO 6077
 6283 LET O7A=5301+(O6-100000)*.0855
 6284 IF O7>O7A THEN LET O7=O7A:GO TO 6077
 6286 IF O7<O7A THEN GO TO 6077
 6290 IF O66 <=5000 THEN GO TO 6300
 6291 IF O66 <=10000 THEN GO TO 6303
 6292 IF O66 <=15000 THEN GO TO 6306
 6293 IF O66 <=20000 THEN GO TO 6310
 6294 IF O66 <=40000 THEN GO TO 6313
 6295 IF O66 <=80000 THEN GO TO 6316
 6296 IF O66 <=100000 THEN GO TO 6320
 6297 IF O66>100000 THEN GO TO 6323
 6300 LET O77A=O66*.00855
 6301 IF O77>O77A THEN LET O77=O77A:GO TO 6088
 6302 IF O77<O77A THEN GO TO 6088
 6303 LET O77A=42.75+(O66-5000)*.0171
 6304 IF O77>O77A THEN LET O77=O77A:GO TO 6088
 6305 IF O77<O77A THEN GO TO 6088
 6306 LET O77A=128.25+(O66-10000)*.0342
 6307 IF O77>O77A THEN LET O77=O77A:GO TO 6088
 6308 IF O77<O77A THEN GO TO 6088
 6310 LET O77A=299.25+(O66-15000)*.04275
 6311 IF O77>O77A THEN LET O77=O77A:GO TO 6088
 6312 IF O77<O77A THEN GO TO 6088
 6313 LET O77A=513+(O66-20000)*.0513
 6314 IF O77>O77A THEN LET O77=O77A:GO TO 6088
 6315 IF O77<O77A THEN GO TO 6088
 6316 LET O77A=1539+(O66-40000)*.05985
 6317 IF O77>O77A THEN LET O77=O77A:GO TO 6088
 6318 IF O77<O77A THEN GO TO 6088
 6320 LET O77A=3933+(O66-80000)*.0684
 6321 IF O77>O77A THEN LET O77=O77A:GO TO 6088
 6322 IF O77<O77A THEN GO TO 6088
 6323 LET O77A=5301+(O66-100000)*.0855
 6324 IF O77>O77A THEN LET O77=O77A:GO TO 6088
 6325 IF O77<O77A THEN GO TO 6088
 6900 STOP 
 7000 REM \{16}\{2}CITY TAX\{16}\{0}
 7001 CLS 
 7003 PRINT "INCOME.          C/TAX.."," ""\{18}\{1}\{16}\{2}AA\{16}\{0}\{18}\{0}""":PRINT AT 3,3;"1A TOTAL WAGES....","   1B INCOME SCHED J.","   2  TAXABLE INCOME.","\{20}\{1}C\{20}\{0}  3  CITY TAX %\{16}\{2}AAAA\{16}\{0}.","\{20}\{1}I\{20}\{0}  4A TAX WITHHELD...","\{20}\{1}T\{20}\{0}  4B DIRECT PAY O/C."
 7004 PRINT "\{20}\{1}Y\{20}\{0}  5A TOTAL TAX......","   5B INC O/SD %\{16}\{2}BBBB\{16}\{0}.","   5C LESSER 5A/5B...","   6  TAX CRED %\{16}\{2}CCCC\{16}\{0}.","  7/8 CREDITS........","\{20}\{1}T\{20}\{0}\{20}\{0}  9  LINE3 - LINE8..","\{20}\{1}A\{20}\{0} 10  NONWITHHELD TAX"
 7005 PRINT "\{20}\{1}X\{20}\{0} 11  TAX ON SCHED J.","  12  TAX DUE........","  15  TOTAL CREDIT...","  16  YOU OWE........","  19  REFUND.........","INPUTS        COPY.22  RETURN.33"
 7007 IF T3A>0 THEN PRINT AT 6,16;"    ":PRINT AT 6,16;T3A
 7009 IF T5BB>0 THEN PRINT AT 10,16;"    ":PRINT AT 10,16;T5BB
 7011 IF P>0 THEN PRINT AT 12,16;"    ":PRINT AT 12,16;P
 7082 LET R=Z1A:GO SUB 8980:PRINT AT 0,6;"          ":PRINT AT 0,K;Z1A
 7084 LET R=Z2A:GO SUB 580:PRINT AT 0,22;"         ":PRINT AT 0,K;Z2A
 7088 IF Z1B=0 THEN LET Z2B=0:LET Z1C=0:LET Z2C=0:PRINT AT 1,6;"                          ":GO TO 7102
 7090 LET R=Z1B:GO SUB 8980:PRINT AT 1,6;"          ":PRINT AT 1,K;Z1B
 7092 LET R=Z2B:GO SUB 580:PRINT AT 1,22;"         ":PRINT AT 1,K;Z2B
 7096 IF Z1C=0 THEN LET Z2C=0:PRINT AT 2,6;"                          ":GO TO 7102
 7098 LET R=Z1C:GO SUB 8980:PRINT AT 2,6;"          ":PRINT AT 2,K;Z1C
 7100 LET R=Z2C:GO SUB 580:PRINT AT 2,22;"         ":PRINT AT 2,K;Z2C
 7102 LET T1A=Z1A+Z1B+Z1C:LET R=T1A:GO SUB 580:PRINT AT 3,22;"          "; AT 3,K;T1A
 7104 PRINT AT 4,21;"           ":LET R=T1B:IF R >=0 THEN GO SUB 580:PRINT AT 4,K;T1B:GO TO 7106
 7105 IF R<0 THEN GO SUB 590:PRINT AT 4,22;"          "; AT 4,K;T1B
 7106 LET T2=T1A+T1B:LET R=T2:GO SUB 580:PRINT AT 5,22;"          "; AT 5,K;T2
 7109 LET T3=T3A*T2:LET T3= INT (T3*100+.5)/100:LET R=T3:GO SUB 580:PRINT AT 6,22;"          "; AT 6,K;T3
 7110 LET T4A=Z2A+Z2B+Z2C:LET R=T4A:GO SUB 580:PRINT AT 7,22;"          "; AT 7,K;T4A
 7112 PRINT AT 8,21;"           ":LET R=T4B:GO SUB 580:PRINT AT 8,K;T4B
 7114 LET T5A=T4A+T4B:LET R=T5A:GO SUB 580:PRINT AT 9,22;"          "; AT 9,K;T5A
 7118 LET T5B=G*T5BB:LET T5B= INT (T5B*100+.5)/100:LET R=T5B:GO SUB 580:PRINT AT 10,21;"           ":PRINT AT 10,K;T5B
 7120 IF T5A <=T5B THEN GO TO 7128
 7122 IF T5B<T5A THEN LET T5C=T5B
 7124 LET R=T5C:GO SUB 580:PRINT AT 11,22;"          "; AT 11,K;T5C
 7126 GO TO 7130
 7128 LET T5C=T5A:LET R=T5C:GO SUB 580:PRINT AT 11,22;"          "; AT 11,K;T5C
 7131 LET T6=T5C*P:LET T6= INT (T6*100+.5)/100:LET R=T6:GO SUB 580:PRINT AT 12,22;"          "; AT 12,K;T6
 7132 LET T8=T7+T6:LET R=T8:GO SUB 580:PRINT AT 13,21;"           ":PRINT AT 13,K;T8
 7134 LET T9=T3-T8:LET T9= INT (T9*100+.5)/100:LET R=T9
 7136 IF T9 >=0 THEN GO SUB 580:GO TO 7139
 7137 IF T9<0 THEN GO SUB 590
 7139 PRINT AT 14,22;"          ":PRINT AT 14,K;T9
 7141 LET R=T10:GO SUB 580:PRINT AT 15,21;"           ":PRINT AT 15,K;T10
 7143 PRINT AT 16,21;"           ":LET R=T11:GO SUB 580:PRINT AT 16,K;T11
 7144 LET T12=T9+T10+T11:LET R=T12:IF R >=0 THEN GO SUB 580:PRINT AT 17,22;"          ":PRINT AT 17,K;T12:GO TO 7147
 7145 IF R<0 THEN GO SUB 590:PRINT AT 17,22;"          ";17,K;T12
 7147 LET R=T15:PRINT AT 18,21;"           ":GO SUB 580:PRINT AT 18,K;T15
 7149 IF T15<T12 THEN GO TO 7153
 7151 IF T15>T12 THEN GO TO 7159
 7153 LET T16=T12-T15:LET T16= INT (T16*100+.5)/100
 7155 LET R=T16:GO SUB 580:PRINT AT 19,22;"          ":PRINT INK 2; AT 19,K;T16
 7157 LET T19=0:PRINT AT 20,22;"          "; AT 20,28;T19:GO TO 7160
 7159 LET T19=T15-T12:LET T19= INT (T19*100+.5)/100
 7161 LET R=T19:GO SUB 580:PRINT AT 20,22;"          ":PRINT INK 4; AT 20,K;T19
 7163 LET T16=0:PRINT AT 19,22;"          ":PRINT AT 19,28;T16
 7165 INPUT R$
 7170 IF R$="AA" THEN GO TO 7200
 7172 IF R$="7" THEN GO TO 7260
 7174 IF R$="10" THEN GO TO 7270
 7176 IF R$="\{18}\{0}11" THEN GO TO 7280
 7178 IF R$="1B" THEN GO TO 7220
 7180 IF R$="15" THEN GO TO 7290
 7182 IF R$="22" THEN PRINT AT 21,0;"                                ":RANDOMIZE USR 64716:GO TO 100
 7184 IF R$="33" THEN GO TO 100
 7186 IF R$="4B" THEN GO TO 7235
 7188 IF R$="AAAA" THEN GO TO 7230
 7190 IF R$="BBBB" THEN GO TO 7240
 7192 IF R$="CCCC" THEN GO TO 7250
 7199 PRINT FLASH 1; INK 2; AT 21,0;"INVALID":PAUSE 50:PRINT INK 4; AT 21,0;"INPUTS ":GO TO 7165
 7200 PRINT INK 4; AT 0,6;"  AMOUNT  ":INPUT R:LET Z1A=R:GO SUB 8980:PRINT AT 0,6;"           ":PRINT AT 0,K;Z1A
 7202 PRINT INK 4; AT 0,22;"  AMOUNT  ":INPUT Z2A:LET R=Z2A:GO SUB 580:PRINT AT 0,22;"          ":PRINT AT 0,K;Z2A
 7204 PRINT INK 4; AT 1,7;"  AMOUNT   ":INPUT R:IF R=0 THEN GO TO 7082
 7206 IF R>0 THEN LET Z1B=R:PRINT AT 1,7;"           ":GO SUB 8980:PRINT AT 1,K;Z1B
 7208 PRINT INK 4; AT 1,22;"  AMOUNT   ":INPUT R:LET Z2B=R:GO SUB 580:PRINT AT 1,22;"          ":PRINT AT 1,K;R
 7210 PRINT INK 4; AT 2,7;"  AMOUNT   ":INPUT R:IF R=0 THEN GO TO 7082
 7212 IF R>0 THEN LET Z1C=R:PRINT AT 2,7;"           ":GO SUB 8980:PRINT AT 2,K;Z1C
 7214 PRINT INK 4; AT 2,22;"  AMOUNT   ":INPUT R:LET Z2C=R:GO SUB 580:PRINT AT 2,22;"          ":PRINT AT 2,K;R
 7216 GO TO 7102
 7220 PRINT INK 4; AT 4,22;"   AMOUNT  ":INPUT T1B:GO TO 7104
 7230 PRINT INK 4; AT 6,16;"????":INPUT T3A:PRINT AT 6,16;"    ":PRINT AT 6,16;T3A:GO TO 7109
 7235 PRINT INK 4; AT 8,22;"  AMOUNT  ":INPUT T4B:GO TO 7112
 7240 PRINT INK 4; AT 10,16;"????":INPUT T5BB:PRINT AT 10,16;"    ":PRINT AT 10,16;T5BB
 7242 PRINT INK 4; AT 10,22;"  AMOUNT  ":INPUT G:GO TO 7118
 7250 PRINT INK 4; AT 12,16;"????":INPUT P:PRINT AT 12,16;"    ":PRINT AT 12,16;P:GO TO 7131
 7260 PRINT INK 4; AT 13,22;"  AMOUNT  ":INPUT T7:GO TO 7132
 7270 PRINT INK 4; AT 15,22;"  AMOUNT  ":INPUT T10:GO TO 7141
 7280 PRINT INK 4; AT 16,22;"  AMOUNT  ":INPUT T11:GO TO 7143
 7290 PRINT INK 4; AT 18,22;"  AMOUNT  ":INPUT T15:GO TO 7147
 8980 IF R<1000000 THEN LET K=7
 8981 IF R<100000 THEN LET K=8
 8982 IF R<10000 THEN LET K=9
 8983 IF R<1000 THEN LET K=10
 8984 IF R<100 THEN LET K=11
 8985 IF R<10 THEN LET K=12
 8986 RETURN 
 9000 LET W6= NOT PI:LET W8= NOT PI:LET W1= NOT PI:LET W11= NOT PI:LET BOX= NOT PI:LET A6= NOT PI:LET A33= NOT PI:LET A40= NOT PI:LET A55= NOT PI:LET A63= NOT PI:LET A64= NOT PI
 9001 LET A67= NOT PI:LET A8= NOT PI:LET A7= NOT PI:LET A34= NOT PI:LET A38= NOT PI:LET A39= NOT PI:LET A41= NOT PI:LET A42= NOT PI:LET A43= NOT PI:LET A56= NOT PI:LET A60= NOT PI
 9002 LET T3A= NOT PI:LET T5BB= NOT PI:LET P= NOT PI:LET Z1A= NOT PI:LET Z2A= NOT PI:LET Z1B= NOT PI:LET Z2B= NOT PI:LET Z1C= NOT PI:LET Z2C= NOT PI:LET T1B= NOT PI:LET T4B= NOT PI:LET G= NOT PI:LET T7= NOT PI:LET T10= NOT PI:LET T11= NOT PI:LET T15= NOT PI
 9003 LET A9= NOT PI:LET T2= NOT PI:LET T3= NOT PI:LET T4A= NOT PI:LET T5A= NOT PI:LET T9= NOT PI:LET T12= NOT PI:LET T16= NOT PI
 9004 LET A10= NOT PI:LET A12= NOT PI:LET A13= NOT PI:LET A14= NOT PI:LET A15= NOT PI:LET A16= NOT PI:LET A17= NOT PI:LET A18= NOT PI
 9012 LET O2= NOT PI:LET O3= NOT PI:LET O4= NOT PI:LET O5= NOT PI:LET O6= NOT PI:LET O7= NOT PI:LET O8= NOT PI:LET O10= NOT PI:LET O11= NOT PI:LET O12= NOT PI:LET O14= NOT PI:LET O18= NOT PI:LET O23= NOT PI
 9013 LET A22= NOT PI:LET A25= NOT PI:LET A26= NOT PI:LET A28= NOT PI:LET A30= NOT PI:LET A31= NOT PI:LET A32= NOT PI
 9020 LET B2= NOT PI:LET AA1= NOT PI:LET AA2= NOT PI:LET AA3= NOT PI:LET AA4= NOT PI
 9021 LET AA5= NOT PI:LET AA6= NOT PI:LET AA7= NOT PI:LET AA8= NOT PI:LET AA80= NOT PI:LET AA9= NOT PI:LET AA10= NOT PI:LET AA11= NOT PI:LET AA12= NOT PI:LET AA14= NOT PI:LET AA15= NOT PI:LET AA16= NOT PI:LET AA18= NOT PI:LET AA20= NOT PI:LET AA22= NOT PI:LET AA23= NOT PI:LET AA24= NOT PI:LET AA25= NOT PI:LET AA26= NOT PI
 9022 LET B= NOT PI:LET BB2= NOT PI:LET O13= NOT PI:LET T5A= NOT PI:LET T16= NOT PI:LET T19= NOT PI
 9023 LET sch= NOT PI
 9025 GO TO 100
 9098 REM \{16}\{0}LOAD "TASMAN"CODE :RANDOMIZE USR 64719
 9099 DIM T$(17,29)
 9100 LET T$(1)="   33 LINE 32......."
 9101 LET T$(2)="   34 SCHEDULE ""A"".."
 9102 LET T$(3)="   35 LINE 33-34...."
 9103 LET T$(4)="1  36 EXEMPT X \{16}\{2}1080\{16}\{0}."
 9104 LET T$(5)="0  37 TAXABLE INCOME"
 9105 LET T$(6)="4  38 CALCULATED TAX"
 9106 LET T$(7)="0  39 ADDIT'L TAX..."
 9107 LET T$(8)="   40 TOTAL TAX....."
 9108 LET T$(9)="P  41 CHILD/DEPEND.."
 9109 LET T$(10)="a  42 ELDERLY CREDIT" 
 9110 LET T$(11)="g  43 POLITIC CONTR."
 9111 LET T$(12)="e  55 TOTAL TAX....."
 9112 LET T$(13)="   56 TAX PAID TOTAL"
 9113 LET T$(14)="2  60 EXCESS SOC SEC"
 9114 LET T$(15)="   63 TOTAL TAX PAID"
 9115 LET T$(16)="   64 REFUND TO YOU."
 9116 LET T$(17)="   67 YOU PAY IRS..."
 9120 GO TO 80
 9499 STOP 
 9500 LET A23=A7+A8+A9+A10+A12+A13+A14+A15+A16+A17+A18+A22
 9505 LET A23= INT (A23*100+.5)/100
 9506 LET R=A23
 9507 GO SUB 580
 9508 PRINT AT 13,22;"          "; AT 13,K;A23
 9510 LET A31=A25+A26+A28+A30
 9511 LET A31= INT (A31*100+.5)/100
 9513 LET R=A31
 9514 GO SUB 580
 9515 PRINT AT 18,22;"          "; AT 18,K;A31
 9516 LET A32=A23-A31:LET A32= INT (A32*100+.5)/100:LET R=A32:GO SUB 580:PRINT AT 19,22;"          "; AT 19,K;A32
 9519 GO TO 605
 9901 CLS 
 9902 PRINT INK 2; AT 7,7;"\:'\''\''\''\''\''\''\''\''\''\''\''\''\''\''\''\':"
 9904 PRINT INK 2; AT 8,7;"\:  STORE ON TAPE \ :"
 9905 PRINT INK 2; AT 9,7;"\:.\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\.:"
 9908 PRINT INK 4; AT 21,0;"INPUT  "
 9909 PRINT INK 4; AT 19,10;"STORE ON TAPE......"; INK 0;"\{18}\{0}T"
 9910 PRINT INK 4; AT 20,10;"STOP..............."; INK 0;"\{18}\{0}S"
 9911 PRINT INK 4; AT 21,10;"RETURN TO START...."; INK 0;"R"
 9915 INPUT M$
 9916 IF M$="T" THEN GO TO 9930
 9917 IF M$="S" THEN STOP 
 9918 IF M$="R" THEN GO TO 100
 9920 FLASH 1:PRINT AT 21,0; INK 2;"INVALID"
 9921 PAUSE 0
 9922 FLASH 0
 9923 GO TO 9908
 9930 PRINT AT 13, PI;"PROGRAM IS SAVED BY TITLE"
 9932 PRINT INK 2; AT 15,4;"\{18}\{1}>>>>>\{18}\{0} ""IRS - 1986"" \{18}\{1}<<<<<\{18}\{0}"
 9998 SAVE "IRS - 1986" LINE 9098:REM SAVE /"TASMAN"CODE 64716,652
 9999 REM PRINT AT 15,0;FLASH 1;INK 1;">>>>REWIND THE TAPE AND PLAY<<<<":VERIFY ""

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

Scroll to Top