Tax 2068

Date: 1983
Type: Program
Platform(s): TS 2068
Tags: Finance, Tax

Tax 2068 is a two-part U.S. federal income tax computation program for the 1983 tax year, split across two cassette sides. Part 1 handles income entry (wages, dividends, interest, capital gains, other income), adjustments to income (IRA, Keogh, alimony, moving expenses, etc.), and itemized deductions broken into medical, taxes, interest, contributions, and miscellaneous categories. Part 2 performs the actual tax calculation using bracket tables encoded as colon-delimited numeric strings in long string variables, parsed at runtime into a DIM array by a dedicated subroutine. The program supports all five IRS filing statuses with corresponding standard deductions, income averaging (Schedule G), tax credits, other taxes, and withholding payments to compute a final refund or amount owed. Deduction category labels are stored compactly in string variables and parsed similarly into a string array for display.


Program Analysis

Program Structure

The program is split into two independent parts, each saved to a separate side of a cassette tape. Part 1 (lines 1–9030) collects income, adjustments, and deductions. At line 3100 it instructs the user to write down two carry-forward values (AI and DE) and load Part 2. Part 2 (lines 1–9030 in the second listing) accepts those two values as manual input, then performs tax bracket lookup, income averaging, credits, other taxes, and payment reconciliation to produce a final refund or balance-due figure.

Data Encoding and Parsing

Both parts use a compact colon-delimited string encoding for tabular data. In Part 1, lines 14–15 hold deduction category labels in C$ and D$; subroutine 5500 walks the string character by character, splitting on : and ; to populate the string array V$(). In Part 2, lines 4 and 6 hold the IRS tax bracket tables as long numeric strings in B$ and C$; subroutine 5000 parses these into the numeric array V() (dimensioned to 126). This avoids storing large DATA blocks and saves memory.

Tax Bracket Lookup (Part 2)

Subroutine 3700 implements the bracket search loop. The variable H is used as a pointer into the V() array. An initial base tax TX is read, then the loop (lines 3740–3800) reads triplets of upper-limit, base-tax, and marginal-rate values. The filing status determines the starting offset in the array: status 2, 3, and 5 begin at offset 42; status 4 at offset 84; status 1 at offset 0. For married-filing-separately (status 3), income and base tax are halved before lookup and the result is not doubled back — this appears to be a potential bug in the bracket calculation.

Income Averaging (Schedule G)

Lines 3440–3680 implement income averaging. The user enters taxable income for 1979–1982 (net of exemptions). The base income BI is 30% of the four-year sum. The tax is computed twice via subroutine 3700: once on BI alone to get TB, and once on 0.2*IA + BI where IA is the averageable income. The final tax is 4*(TX-TB)+TB_tax, approximating the Schedule G formula. If IA does not exceed $3,000, income averaging is suppressed.

Input and Navigation Idiom

Throughout both parts, the program uses the pattern at lines such as 770, 1430, 1920, 2860, and 4080:

IF INKEY$="" THEN GO TO [same line]
LET A$=INKEY$

This busy-waits for a keypress then dispatches on the character with a cascade of IF A$="x" THEN GO SUB / GO TO statements. This is a standard menu-driven navigation technique, avoiding INPUT for single-character commands.

String Array Label Display (Part 1, Subroutine 2880)

Lines 2880–2920 display a deduction label stored in V$(I) by splitting it into a left portion (characters 1–4), a middle character (position 5), and a right portion (position 6 onward). The middle character’s code is incremented by 128 (line 2904–2906) to produce an inverse-video character for visual emphasis on screen. This is a deliberate display technique using CODE and CHR$ arithmetic.

Capital Gains Calculation (Part 1)

Lines 840–1040 implement Schedule D capital gains. Short-term (NS) and long-term (NL) net gains are combined. The 60% long-term deduction is applied when the net is positive. When the net is negative, a $3,000 loss limit is enforced (line 952), and short-term and long-term carryforward amounts S1 and S2 are computed and displayed (lines 1000–1006).

Variable Summary

VariableMeaning
AIAdjusted gross income (carry-forward between parts)
DETotal itemized deductions (carry-forward between parts)
NITaxable income (after deductions and exemptions)
TXComputed tax from bracket table
XTTotal tax (TX + additional tax AT)
FSFiling status (1–5)
SDStandard deduction ($2300/$3400/$1700 by status)
EXNumber of exemptions
HArray pointer used in bracket table parsing
V()Numeric array holding parsed bracket table values (Part 2)
V$()String array holding deduction category labels (Part 1)

Notable Anomalies

  • Line 200 in Part 1 loops FOR I=14 TO ND when displaying existing dividends, but the array D() is indexed 1–10 elsewhere; starting at 14 would always be out of range and the loop body never executes for any realistic ND value — likely a typo for FOR I=1 TO ND.
  • Lines 910 and 920 in the capital gains section are unreachable: line 910 is only reached when NG<0, but its condition IF NS>0 combined with the prior logic at line 880 means line 920 can never be reached through normal flow, and the GO TO 940 at line 912 skips line 920 entirely regardless.
  • Line 1422 in Part 1 is a bare line number with no statement — a harmless no-op.
  • The “DISABILITY” label is misspelled as “DISIBILITY” at line 1732.
  • Part 2 lines 3700–3702 set H=42 for both filing status 2 and status 3, even though status 3 (married filing separately) uses halved brackets — the halving at lines 3784–3786 compensates, but the offset logic conflates two distinct tax schedules.

Save/Reload Pattern

Both parts end with a lines-9000 block (CLS : CLEAR : SAVE "TAX x" : RUN) providing a convenient way to re-save the program to tape after any modifications, immediately followed by RUN to restart.

Content

Appears On

Related Products

Related Articles

Related Content

Image Gallery

Source Code

    1 REM "TAX 1"
    3 PRINT AT 11,9;"PLEASE WAIT"
    4 LET GI=0
    5 LET AD=0
    6 LET DE=0
    7 LET TX=0
    8 LET P=0
    9 LET TT=0
   12 DIM V$(21,20)
   13 DIM V(21)
   14 LET C$=" 1  MEDICINE:: 4A DOCTORS, ETC.: 4B TRANSPORT.: 4C OTHER MEDICAL: 8  INCOME TAXES: 9  PROPERTY:10A SALES TAXES:10B VEHICLE:11  OTHER TAXES:13A BANK MORT:13B IND. MORT:14  CREDIT CARDS:15  OTHER INTER.:17ABCASH CONT.:18  OTHER CONT.:19  PRIOR YEARS:;"
   15 LET D$="21  CASUALTY:22  DUES-UN. AND PR.:23  TAX FEE:24  OTHER DEDUC.:;"
   22 LET H$="NO"
   24 LET EX=1
   25 LET NN=0
   26 LET FS=1
   28 LET SD=2300
   30 DIM I(10)
   31 LET ND=0
   32 DIM D(10)
   33 LET NS=0
   34 LET NL=0
   35 LET IG=0
   36 DIM S(10)
   37 DIM L(10)
   38 LET IL=0
   39 DIM O(10)
   40 LET W2=0
   41 LET IN=0
   42 LET D=0
   43 LET EC=0
   44 LET CG=0
   45 LET IO=0
   47 LET MV=0
   48 LET BS=0
   49 LET IR=0
   50 LET K=0
   51 LET SP=0
   52 LET AL=0
   53 LET MP=0
   54 LET DS=0
   55 LET M=0
   56 LET T=0
   57 LET ID=0
   58 LET CO=0
   59 LET MS=0
   60 LET LO=0
   62 LET B=0
   65 LET H=0
   66 LET F$=C$
   68 CLS 
   72 GO SUB 5500
   74 LET F$=D$
   76 GO SUB 5500
   78 GO TO 1360
   80 CLS 
   84 PRINT AT 1,0;"7.TYPE TOTAL WAGES"
   94 PRINT AT 4,0;" ";W2
  120 INPUT W2
  124 PRINT AT 4,0;" ";W2;"   "
  170 RETURN 
  180 CLS 
  184 PRINT AT 1,0;"9.TYPE DIVIDEND"
  185 PRINT "TYPE 0 TO QUIT"
  186 PRINT 
  190 IF ND=0 THEN GO TO 220
  200 FOR I=14 TO ND
  210 PRINT "  ";D(I)
  212 NEXT I
  220 LET D=0
  230 FOR I=1 TO 10
  240 INPUT D(I)
  245 PRINT D(I);"     "
  250 IF D(I)=0 THEN GO TO 280
  260 LET D=D+D(I)
  270 NEXT I
  280 LET ND=I-1
  290 RETURN 
  300 CLS 
  302 PRINT AT 1,0;"8.TYPE INTEREST"
  306 PRINT "TYPE 0 TO QUIT"
  308 PRINT 
  310 IF NN=0 THEN GO TO 350
  320 FOR I=1 TO NN
  330 PRINT " ";I(I)
  332 NEXT I
  340 PRINT AT 3,0
  350 LET IN=0
  360 FOR I=1 TO 10
  370 INPUT I(I)
  375 PRINT "  ";I(I);"     "
  380 IF I(I)=0 THEN GO TO 410
  390 LET IN=IN+I(I)
  400 NEXT I
  410 LET NN=I-1
  420 RETURN 
  430 CLS 
  432 PRINT AT 1,0;"OTHER INCOME"
  436 PRINT 
  440 PRINT "10TAX REFUND   ";O(1)
  450 PRINT "11ALIMONY REC. ";O(2)
  460 PRINT "12BUSINESS INC.";O(3)
  470 PRINT "14OTHER GAIN   ";O(4)
  480 PRINT "15SUPP. GAIN   ";O(5)
  490 PRINT "16/17PENSION   ";O(6)
  500 PRINT "18RENTS, ROYAL.";O(7)
  510 PRINT "19FARM INCOME  ";O(8)
  520 PRINT "20UNEMP. COM.  ";O(9)
  530 PRINT "21OTHER INCOME ";O(10)
  531 PRINT 
  532 PRINT "  RETURN"
  533 PRINT 
  534 PRINT "TYPE BLACK LETTER"
  535 PRINT 
  536 IF INKEY$="" THEN GO TO 536
  538 LET A$=INKEY$
  540 IF A$="R" THEN GO TO 593
  541 IF A$<>"T" THEN GO TO 546
  542 PRINT "TAX REFUND"
  543 INPUT O(1)
  544 PRINT AT 3,15;O(1);"     "
  545 GO TO 590
  546 IF A$<>"A" THEN GO TO 551
  547 PRINT "ALIMONY REC."
  548 INPUT O(2)
  549 PRINT AT 4,15;O(2);"     "
  550 GO TO 590
  551 IF A$<>"B" THEN GO TO 556
  552 PRINT "BUSINESS INC."
  553 INPUT O(3)
  554 PRINT AT 5,15;O(3);"     "
  555 GO TO 590
  556 IF A$<>"O" THEN GO TO 561
  557 PRINT "OTHER GAIN"
  558 INPUT O(4)
  559 PRINT AT 6,15;O(4);"     "
  560 GO TO 590
  561 IF A$<>"S" THEN GO TO 566
  562 PRINT "SUPP. GAIN"
  563 INPUT O(5)
  564 PRINT AT 7,15;O(5);"     "
  565 GO TO 590
  566 IF A$<>"P" THEN GO TO 571
  567 PRINT "PENSION"
  568 INPUT O(6)
  569 PRINT AT 8,15;O(6);"     "
  570 GO TO 590
  571 IF A$<>"E" THEN GO TO 576
  572 PRINT "RENTS, ROYAL."
  573 INPUT O(7)
  574 PRINT AT 9,15;O(7);"     "
  575 GO TO 590
  576 IF A$<>"F" THEN GO TO 581
  577 PRINT "FARM INC."
  578 INPUT O(8)
  579 PRINT AT 10,15;O(8);"     "
  580 GO TO 590
  581 IF A$<>"U" THEN GO TO 586
  582 PRINT "UNEMP. COM."
  583 INPUT O(9)
  584 PRINT AT 11,15;O(9);"     "
  585 GO TO 590
  586 IF A$<>"I" THEN GO TO 590
  587 PRINT "OTHER INCOME"
  588 INPUT O(10)
  589 PRINT AT 12,15;O(10);"     "
  590 PRINT AT 18,0;"             "
  591 PRINT AT 17,0
  592 GO TO 536
  593 LET IO=0
  594 FOR I=1 TO 10
  596 LET IO=IO+O(I)
  598 NEXT I
  600 RETURN 
  610 CLS 
  612 PRINT 
  614 PRINT "1983 TAX: INCOME"
  616 PRINT "TYPE BLACK LETTERS"
  620 PRINT 
  622 PRINT " 7WAGES, SAL.",W2
  630 PRINT " 8INTEREST",IN
  640 LET DV=D-EC
  642 IF DV<0 THEN LET DV=0
  650 PRINT " 9DIVIDEND",DV
  660 PRINT "(";D;"-";EC;")"
  670 PRINT " (EXCL.)",EC
  680 PRINT "13CAP. GAIN",CG
  690 PRINT "  OTHER INCOME",IO
  700 LET GI=W2+DV+IN+IO+CG
  710 IF GI<0 THEN LET GI=0
  720 PRINT 
  722 PRINT "22TOTAL INCOME",GI
  740 PRINT 
  742 PRINT "  RETURN"
  750 PRINT AT 21,0;"COPR 1983 PRACTIC PROG"
  770 IF INKEY$="" THEN GO TO 770
  772 LET A$=INKEY$
  780 IF A$="R" THEN RETURN 
  790 IF A$="W" THEN GO SUB 80
  792 IF A$="D" THEN GO SUB 180
  800 IF A$="I" THEN GO SUB 300
  802 IF A$="O" THEN GO SUB 430
  804 IF A$="C" THEN GO SUB 840
  810 IF A$="E" THEN GO SUB 830
  820 GO TO 610
  830 CLS 
  832 PRINT 
  834 PRINT "EXCLUSION"
  836 INPUT EC
  837 PRINT "  ";EC
  838 RETURN 
  840 CLS 
  842 PRINT 
  844 PRINT "D.CAPITAL GAIN"
  850 PRINT 
  852 PRINT "I. SHORT",NS
  860 PRINT 
  862 PRINT "II.LONG",NL
  870 LET NG=NS+NL
  880 IF NG<0 THEN GO TO 910
  890 LET GG=NG
  892 IF NL<NG THEN LET GG=NL
  894 IF GG<0 THEN LET GG=0
  900 LET CG=NG-.6*GG
  902 GO TO 940
  910 IF NS>0 THEN LET CG=.5*NG
  912 GO TO 940
  920 IF NL>0 THEN LET CG=NG
  922 GO TO 940
  930 LET CG=NS+.5*NL
  940 IF CG>-3000 THEN GO TO 1010
  950 LET CF=CG+3000
  952 LET CG=-3000
  960 LET S1=NS+3000
  970 IF S1>0 THEN LET S1=0
  980 IF S1<CF THEN LET S1=CF
  990 LET S2=2*(CF-S1)
 1000 PRINT 
 1002 PRINT "CARRYFORWARDS:"
 1004 PRINT "30SHORT",S1
 1006 PRINT "36LONG",S2
 1010 LET A=22
 1012 IF CG<0 THEN LET A=24
 1020 LET CG=INT (CG+.5)
 1030 PRINT 
 1032 PRINT A;"TOTAL",CG
 1040 PRINT 
 1042 PRINT "RETURN"
 1050 PRINT "TYPE LETTER"
 1060 IF INKEY$="" THEN GO TO 1060
 1062 LET A$=INKEY$
 1070 IF A$="R" THEN RETURN 
 1072 IF A$=CHR$ 118 THEN RETURN 
 1080 IF A$="S" THEN GO SUB 1100
 1082 IF A$="L" THEN GO SUB 1230
 1090 GO TO 840
 1100 CLS 
 1102 PRINT 
 1104 PRINT "I.TYPE SHORT TERM CAPITAL GAINS."
 1105 PRINT "TYPE 0 TO QUIT"
 1106 PRINT 
 1110 IF IG=0 THEN GO TO 1150
 1120 FOR I=1 TO IG
 1130 PRINT "  ";S(I)
 1132 NEXT I
 1150 LET NS=0
 1152 PRINT AT 3,0
 1160 FOR I=1 TO 10
 1170 INPUT S(I)
 1175 PRINT "  ";S(I);"    "
 1180 IF S(I)=0 THEN GO TO 1210
 1190 LET NS=NS+S(I)
 1200 NEXT I
 1210 LET IG=I-1
 1220 RETURN 
 1230 CLS 
 1232 PRINT 
 1234 PRINT "II.TYPE LONG TERM CAPITAL GAINS."
 1235 PRINT "TYPE 0 TO QUIT"
 1236 PRINT 
 1240 IF IL=0 THEN GO TO 1280
 1250 FOR I=1 TO IL
 1260 PRINT "  ";L(I)
 1262 NEXT I
 1280 LET NL=0
 1285 PRINT AT 3,0
 1290 FOR I=1 TO 10
 1300 INPUT L(I)
 1302 PRINT "  ";L(I);"     "
 1310 IF L(I)=0 THEN GO TO 1340
 1320 LET NL=NL+L(I)
 1330 NEXT I
 1340 LET IL=I-1
 1350 RETURN 
 1360 CLS 
 1362 PRINT 
 1364 PRINT "1983 INCOME TAX COMPUTATION PROG"
 1366 PRINT "TYPE BLACK LETTERS"
 1370 PRINT 
 1372 PRINT "22TOT. INC",GI
 1380 PRINT 
 1382 PRINT "31ADJUSTMENTS",AD
 1390 LET AI=GI-AD
 1392 IF AI<0 THEN LET AI=0
 1400 PRINT 
 1402 PRINT "32ADJ. INC.",AI
 1404 PRINT 
 1406 PRINT "34DEDUCTIONS",DE
 1408 PRINT 
 1410 PRINT "  GOTO PART 2 OF PROG."
 1416 PRINT 
 1418 PRINT "  QUIT"
 1420 PRINT AT 20,0;"COPR 1983 PRACTICAL PROGRAMS,   INC."
 1422 
 1430 IF INKEY$="" THEN GO TO 1430
 1432 LET A$=INKEY$
 1440 IF A$="Q" THEN STOP 
 1450 IF A$="A" THEN GO SUB 1490
 1452 IF A$="I" THEN GO SUB 610
 1454 IF A$="D" THEN GO SUB 1840
 1456 IF A$="G" THEN GO SUB 3000
 1460 GO TO 1360
 1470 PRINT "TOTAL INC."
 1472 INPUT GI
 1474 PRINT AT 12,0;GI
 1480 GO TO 1360
 1490 CLS 
 1491 PRINT 
 1492 PRINT "TYPE ADJUSTMENTS TO INCOME"
 1500 PRINT 
 1502 PRINT "23MOVING EXP.",MV
 1510 PRINT "24BUSINESS",BS
 1520 PRINT "25IRA PAYMENTS",IR
 1530 PRINT "26KEOGH PAYM.",K
 1540 PRINT "27SAV. PENALTY",SP
 1550 PRINT "28ALIMONY PAID",AL
 1560 PRINT "29MARRIAGE",MP
 1570 PRINT "30DISABILITY",DS
 1580 LET AD=MV+BS+IR+K+SP+AL+MP+DS
 1590 GO SUB 1740
 1600 IF A$="R" THEN RETURN 
 1610 IF A$="O" THEN GO TO 1650
 1612 IF A$="B" THEN GO TO 1660
 1614 IF A$="I" THEN GO TO 1680
 1620 IF A$="K" THEN GO TO 1690
 1622 IF A$="S" THEN GO TO 1700
 1624 IF A$="A" THEN GO TO 1710
 1630 IF A$="M" THEN GO TO 1720
 1632 IF A$="D" THEN GO TO 1730
 1640 GO TO 1490
 1650 PRINT 
 1652 PRINT "MOVING"
 1654 INPUT MV
 1656 GO TO 1490
 1660 PRINT 
 1662 PRINT "BUSINESS EXPENSE"
 1664 INPUT BS
 1670 GO TO 1490
 1680 PRINT 
 1682 PRINT "IRA CONTRIB."
 1684 INPUT IR
 1686 GO TO 1490
 1690 PRINT 
 1692 PRINT "KEOGH"
 1694 INPUT K
 1696 GO TO 1490
 1700 PRINT 
 1702 PRINT "SAVING PEN."
 1704 INPUT SP
 1706 GO TO 1490
 1710 PRINT 
 1712 PRINT "ALIMONY"
 1714 INPUT AL
 1716 GO TO 1490
 1720 PRINT 
 1722 PRINT "MARRIAGE"
 1724 INPUT MP
 1726 GO TO 1490
 1730 PRINT 
 1732 PRINT "DISIBILITY"
 1734 INPUT DS
 1736 GO TO 1490
 1740 PRINT 
 1742 PRINT "RETURN"
 1750 PRINT 
 1752 PRINT "TYPE LETTER"
 1760 IF INKEY$="" THEN GO TO 1760
 1762 LET A$=INKEY$
 1770 RETURN 
 1840 CLS 
 1842 PRINT 
 1844 PRINT "DEDUCTIONS"
 1850 PRINT 
 1852 PRINT "32ADJUST. INC",AI
 1860 PRINT 
 1862 PRINT " 7MEDICAL DED.",M
 1865 PRINT "12TAXES",T
 1870 PRINT "16INTEREST EXP.",ID
 1875 PRINT "20CONTRIBUTIONS",CO
 1877 PRINT "21LOSSES",LO
 1880 PRINT "24OTHER DEDUCT.",MS
 1890 LET DE=M+T+ID+CO+LO+B+MS
 1900 PRINT 
 1902 PRINT "25TOTAL DEDUCT.",DE
 1910 PRINT 
 1912 PRINT "  RETURN"
 1914 PRINT 
 1916 PRINT "TYPE LETTER"
 1920 IF INKEY$="" THEN GO TO 1920
 1922 LET A$=INKEY$
 1930 IF A$="R" THEN RETURN 
 1950 IF A$="M" THEN GO SUB 1980
 1952 IF A$="T" THEN GO SUB 2280
 1960 IF A$="I" THEN GO SUB 2430
 1962 IF A$="C" THEN GO SUB 2570
 1964 IF A$="O" THEN GO SUB 2700
 1966 IF A$="L" THEN GO SUB 2691
 1970 GO TO 1840
 1980 CLS 
 1981 PRINT 
 1982 PRINT "MEDICAL DEDUCTIONS"
 1990 LET I=1
 1992 GO SUB 2880
 2000 LET L2=INT (.01*AI+.5)
 2010 PRINT " 2 1PERCENT INC.     ";L2
 2020 LET L3=V(1)-L2
 2022 IF L3<0 THEN LET L3=0
 2030 PRINT " 3","     ";L3
 2050 LET I=3
 2052 GO SUB 2880
 2060 LET I=4
 2062 GO SUB 2880
 2070 LET I=5
 2072 GO SUB 2880
 2080 LET L6=L3
 2082 FOR I=2 TO 5
 2084 LET L6=L6+V(I)
 2086 NEXT I
 2090 PRINT " 5","     ";L6
 2100 LET L7=INT (.05*AI+.5)
 2110 PRINT " 6 5PERCENT INC.     ";L7
 2120 LET M=L6-L7
 2122 IF M<0 THEN LET M=0
 2170 PRINT " 7 TOTAL MEDICAL     ";M
 2180 GO SUB 2840
 2190 IF A$="R" THEN RETURN 
 2200 IF A$="M" THEN LET I=1
 2220 IF A$="D" THEN LET I=3
 2230 IF A$="T" THEN LET I=4
 2240 IF A$="O" THEN LET I=5
 2250 IF I=0 THEN GO TO 1980
 2260 GO SUB 2930
 2270 GO TO 1980
 2280 CLS 
 2282 PRINT 
 2284 PRINT "TAXES"
 2290 LET T=0
 2300 FOR I=6 TO 10
 2302 GO SUB 2880
 2310 LET T=T+V(I)
 2312 NEXT I
 2320 PRINT "12TOTAL TAXES        ";T
 2330 GO SUB 2840
 2340 IF A$="R" THEN RETURN 
 2350 IF A$="I" THEN LET I=6
 2360 IF A$="P" THEN LET I=7
 2370 IF A$="S" THEN LET I=8
 2380 IF A$="V" THEN LET I=9
 2390 IF A$="O" THEN LET I=10
 2400 IF I=0 THEN GO TO 2280
 2410 GO SUB 2930
 2420 GO TO 2280
 2430 CLS 
 2432 PRINT 
 2434 PRINT "INTEREST EXPENSE"
 2440 LET ID=0
 2450 FOR I=11 TO 14
 2452 GO SUB 2880
 2460 LET ID=ID+V(I)
 2462 NEXT I
 2470 PRINT "16TOTAL INTEREST     ";ID
 2480 GO SUB 2840
 2490 IF A$="R" THEN RETURN 
 2500 IF A$="B" THEN LET I=11
 2510 IF A$="I" THEN LET I=12
 2520 IF A$="C" THEN LET I=13
 2530 IF A$="O" THEN LET I=14
 2540 IF I=0 THEN GO TO 2430
 2550 GO SUB 2930
 2560 GO TO 2430
 2570 CLS 
 2572 PRINT 
 2574 PRINT "CONTRIBUTIONS"
 2580 LET CO=0
 2590 FOR I=15 TO 17
 2592 GO SUB 2880
 2600 LET CO=CO+V(I)
 2602 NEXT I
 2610 PRINT "20TOTAL CONTRIB.     ";CO
 2620 GO SUB 2840
 2630 IF A$="R" THEN RETURN 
 2640 IF A$="C" THEN LET I=15
 2650 IF A$="O" THEN LET I=16
 2660 IF A$="P" THEN LET I=17
 2670 IF I=0 THEN GO TO 2570
 2680 GO SUB 2930
 2690 GO TO 2570
 2691 CLS 
 2692 PRINT "21 LOSSES ";LO
 2693 INPUT LO
 2694 RETURN 
 2700 CLS 
 2702 PRINT 
 2704 PRINT "MISCELLANEOUS"
 2710 LET MS=0
 2720 FOR I=19 TO 21
 2722 GO SUB 2880
 2730 LET MS=MS+V(I)
 2732 NEXT I
 2740 PRINT "25TOTAL MISCEL.      ";MS
 2750 GO SUB 2840
 2760 IF A$="R" THEN RETURN 
 2780 IF A$="D" THEN LET I=19
 2790 IF A$="T" THEN LET I=20
 2800 IF A$="O" THEN LET I=21
 2810 IF I=0 THEN GO TO 2700
 2820 GO SUB 2930
 2830 GO TO 2700
 2840 PRINT 
 2842 PRINT "  RETURN"
 2850 PRINT 
 2852 PRINT "TYPE LETTER"
 2860 IF INKEY$="" THEN GO TO 2860
 2862 LET A$=INKEY$
 2870 LET I=0
 2872 RETURN 
 2880 LET L$=V$(I)( TO 4)
 2890 LET M$=V$(I)(5 TO 5)
 2900 LET R$=V$(I)(6 TO )
 2902 LET ZZ=CODE M$
 2904 LET ZZ=ZZ+128
 2906 LET M$=CHR$ ZZ
 2910 PRINT L$;M$;R$;" ";V(I)
 2920 RETURN 
 2930 PRINT 
 2932 PRINT V$(I)
 2934 INPUT V(I)
 2936 RETURN 
 3000 CLS 
 3002 PRINT 
 3009 PRINT "ARE YOU SURE YOU ARE"
 3010 PRINT "COMPLETELY FINISHED WITH PART 1"
 3020 PRINT "(Y OR N)"
 3030 INPUT T$
 3040 IF T$="Y" THEN GO TO 3100
 3050 GO TO 1360
 3100 PRINT "WRITE DOWN THE FOLLOWING VALUES"
 3105 PRINT 
 3110 PRINT "1. ";AI
 3120 PRINT "2. ";DE
 3140 PRINT 
 3150 PRINT "THEN FLIP OVER CASSETTE AND TYPE"
 3155 PRINT 
 3160 PRINT " LOAD  TAX 2 "
 3165 PRINT 
 3170 PRINT "PART 2 WILL ASK FOR VALUES"
 3180 PRINT "1-2 IN ORDER"
 4000 STOP 
 5500 LET N=0
 5505 LET E$=""
 5510 LET H=H+1
 5515 LET N=N+1
 5520 LET G$=F$(N TO N)
 5525 IF G$=":" THEN GO TO 5545
 5530 IF G$=";" THEN GO TO 5565
 5535 LET E$=E$+G$
 5540 GO TO 5515
 5545 LET V$(H)=E$
 5550 LET E$=""
 5555 GO TO 5510
 5565 LET H=H-1
 5570 RETURN 
 9000 CLS 
 9010 CLEAR 
 9020 SAVE "TAX 1"
 9030 RUN 

    1 REM "TAX 2"
    3 PRINT AT 11,9;"PLEASE WAIT"
    4 LET B$="23:0:0:34:0:11:44:121:13:85:251:15:108:866:17:129:1257:19:150:1656:21:182:2097:24:235:2865:28:288:4349:32:341:6045:36:415:7953:40:553:10913:45:10000:17123:50:34:0:0:55:0:11:76:231:13:119:504:15:160:1149:17:202:1846:19:246:2644:23:299:3656:26:;"
    6 LET C$="352:5034:30:458:6624:35:600:10334:40:856:16014:44:1094:27278:48:10000:38702:50:23:0:0:44:0:11:65:231:13:87:504:15:118:834:18:150:1392:19:182:2000:21:235:2672:25:288:3997:29:341:5534:34:447:7336:37:606:11258:44:818:18254:48:10000:28430:50:;"
   10 DIM V(126)
   12 LET H=0
   22 LET H$="NO"
   24 LET EX=1
   26 LET FS=1
   28 LET SD=2300
   30 CLS 
   34 LET F$=B$
   36 GO SUB 5000
   38 LET F$=C$
   40 GO SUB 5000
   44 CLS 
   46 PRINT 
   50 PRINT "INPUT THE VALUES 1-2 FROM PART 1"
   60 PRINT 
   70 PRINT "VALUE 1="
   74 INPUT AI
   76 PRINT AT 3,9;AI
   80 PRINT 
   90 PRINT "VALUE 2="
   94 INPUT DE
   96 PRINT AT 5,9;DE
  100 PRINT 
  140 PRINT "ARE THESE VALUES RIGHT (Y OR N)"
  150 INPUT Q$
  160 IF Q$="N" THEN GO TO 30
  170 LET H=0
  180 LET Q=0
  190 LET TX=0
  195 LET XT=0
  200 LET P=0
  210 LET TT=0
  230 LET AT=0
  240 LET C=0
  250 LET OT=0
  260 LET TD=0
  270 LET I0=0
  280 LET I1=0
  290 LET I2=0
  300 LET I3=0
  310 LET P=0
  320 LET WI=0
  330 DIM R(7)
  340 DIM X(8)
  360 DIM W(7)
  400 LET UL=0
  410 LET H=1
 1360 CLS 
 1362 PRINT 
 1364 PRINT "1983 INCOME TAX COMPUTATION PROG."
 1366 PRINT "TYPE BLACK LETTERS"
 1400 PRINT 
 1402 PRINT "32ADJ. INC.",AI
 1404 PRINT 
 1406 PRINT "34DEDUCTIONS",DE
 1408 PRINT 
 1410 PRINT "40TAX COMP.",XT
 1412 PRINT 
 1414 PRINT "69NET REFUND",P-TT
 1416 PRINT 
 1418 PRINT "  QUIT"
 1420 PRINT AT 20,0;"COPR 1983 PRACTICAL PROGRAMS INC"
 1430 IF INKEY$="" THEN GO TO 1430
 1432 LET A$=INKEY$
 1440 IF A$="Q" THEN STOP 
 1456 IF A$="T" THEN GO SUB 3000
 1458 IF A$="N" THEN GO SUB 3930
 1460 GO TO 1360
 1470 PRINT "TOTAL INC."
 1472 INPUT GI
 1474 PRINT AT 0,12;GI
 1480 GO TO 1360
 3000 CLS 
 3002 PRINT 
 3004 PRINT "TAX CALCULATION"
 3010 PRINT FS;"FILING STATUS"
 3020 PRINT 
 3022 PRINT "32ADJUST. INC.",AI
 3030 LET ED=DE-SD
 3032 IF ED<0 THEN LET ED=0
 3040 PRINT "34DEDUCTIONS",ED
 3042 PRINT "(";DE;"-";SD;")"
 3050 PRINT "35",AI-ED
 3060 PRINT "36EXEMPTIONS",1000*EX
 3062 PRINT "(1000*";EX;")"
 3070 LET NI=AI-ED-1000*EX
 3080 IF NI<0 THEN LET NI=0
 3090 PRINT "37TAXABLE INC.",NI
 3100 LET TX=INT (TX+.5)
 3110 PRINT 
 3112 PRINT "38TAX",TX
 3120 PRINT "  G:INCOME AVG. ";H$
 3130 PRINT 
 3132 PRINT "39ADD. TAX",AT
 3140 LET XT=TX+AT
 3150 PRINT "40TOTAL TAX",XT
 3160 PRINT 
 3162 PRINT "  RETURN"
 3170 PRINT "TYPE LETTER"
 3180 IF INKEY$="" THEN GO TO 3180
 3182 LET A$=INKEY$
 3190 IF A$="I" THEN GO SUB 3310
 3195 IF A$="R" THEN RETURN 
 3200 IF A$="D" THEN GO SUB 3340
 3202 IF A$="E" THEN GO SUB 3410
 3204 IF A$="G" THEN GO SUB 3440
 3210 IF A$="T" THEN GO SUB 3690
 3212 IF A$="F" THEN GO SUB 3240
 3214 IF A$="A" THEN GO SUB 3230
 3220 GO TO 3000
 3230 PRINT "ADD. TAX"
 3232 INPUT AT
 3234 RETURN 
 3240 CLS 
 3242 PRINT 
 3246 PRINT "FILING STATUS="
 3248 PRINT "1=SINGLE","2=JOINT"
 3250 PRINT "3=SEPARATE, MARRIED"
 3252 PRINT "4=HEAD OF HOUSEHOLD"
 3254 PRINT "5=WIDOW(ER)"
 3260 IF INKEY$="" THEN GO TO 3260
 3262 LET FS=(CODE INKEY$)-28
 3264 IF FS=0 THEN GO TO 3260
 3266 IF FS>5 THEN GO TO 3260
 3270 IF FS=1 THEN GO TO 3280
 3272 IF FS=2 THEN GO TO 3290
 3274 IF FS=3 THEN GO TO 3300
 3276 IF FS=4 THEN GO TO 3280
 3278 IF FS=5 THEN GO TO 3290
 3280 LET SD=2300
 3282 RETURN 
 3290 LET SD=3400
 3292 RETURN 
 3300 LET SD=1700
 3302 RETURN 
 3310 PRINT "ADJ. INC."
 3320 INPUT AI
 3330 RETURN 
 3340 CLS 
 3342 PRINT 
 3344 PRINT "DEDUCTIONS"
 3350 INPUT DE
 3355 PRINT "  ";DE
 3360 IF DE>SD THEN RETURN 
 3370 PRINT "DEDUCTION<STANDARD. WANT 34B?"
 3375 PRINT "(Y OR N)"
 3380 IF INKEY$="" THEN GO TO 3380
 3382 LET A$=INKEY$
 3390 IF A$="Y" THEN GO TO 3394
 3392 GO TO 3400
 3394 PRINT "AMOUNT"
 3396 INPUT DE
 3398 LET SD=0
 3400 RETURN 
 3410 PRINT "NUMBER OF EXEMPTIONS"
 3420 INPUT EX
 3430 RETURN 
 3440 CLS 
 3442 PRINT 
 3446 PRINT "G:INCOME AVERAGING"
 3450 LET H$="YES"
 3460 PRINT "INCOME-EXEMPT.:"
 3462 PRINT 
 3470 PRINT " 3 1979  ";I0
 3480 PRINT " 6 1980  ";I1
 3490 PRINT " 7 1981  ";I2
 3500 PRINT " 8 1982  ";I3
 3502 PRINT 
 3504 PRINT "1979"
 3510 INPUT I0
 3520 PRINT AT 4,9;I0
 3528 PRINT AT 9,0;"1980"
 3530 INPUT I1
 3532 PRINT AT 5,9;I1
 3538 PRINT AT 9,0;"1981"
 3540 INPUT I2
 3542 PRINT AT 6,9;I2
 3548 PRINT AT 9,0;"1982"
 3550 INPUT I3
 3552 PRINT AT 7,9;I3
 3560 LET BI=(I0+I1+I2+I3)*.3
 3570 LET II=NI
 3572 LET NI=BI
 3574 GO SUB 3700
 3580 LET TB=TX
 3582 LET IA=II-BI
 3590 LET NI=.2*IA+BI
 3592 GO SUB 3700
 3600 LET NI=II
 3602 LET TX=4*(TX-TB)+TX
 3610 PRINT AT 10,0;"18 AVERAGEABLE INC. ";IA
 3620 IF IA>3000 THEN GO TO 3640
 3630 PRINT "NO AVERAGING"
 3640 PRINT "TYPE ANY KEY"
 3650 IF INKEY$="" THEN GO TO 3650
 3660 LET A$=""
 3670 IF IA<3000 THEN GO SUB 3690
 3680 RETURN 
 3690 PRINT AT 20,0;"TAXES BEING CALCULATED"
 3692 LET H$="NO"
 3700 IF FS=2 THEN LET H=42
 3702 IF FS=3 THEN LET H=42
 3704 IF FS=5 THEN LET H=42
 3710 IF FS=4 THEN LET H=84
 3712 LET TX=V(H)
 3713 IF FS=1 THEN LET H=0
 3720 IF H$="YES" THEN GO TO 3740
 3722 IF NI>50000 THEN GO TO 3740
 3724 IF NI>3000 THEN GO TO 3730
 3726 LET NI=25*INT (NI/25)+12.5
 3728 GO TO 3740
 3730 LET NI=50*INT (NI/50)+25
 3740 FOR I=1 TO 20
 3750 LET LL=UL
 3760 LET H=H+1
 3762 LET UL=V(H)
 3764 LET H=H+1
 3766 LET TX=V(H)
 3768 LET H=H+1
 3770 LET PC=V(H)
 3772 LET UL=UL*100
 3780 IF FS=3 THEN GO TO 3784
 3782 GO TO 3790
 3784 LET UL=UL/2
 3786 LET TX=TX/2
 3790 IF NI<UL THEN GO TO 3810
 3800 NEXT I
 3810 LET TX=TX+PC/100*(NI-LL)
 3820 LET H=0
 3830 RETURN 
 3930 IF P=0 THEN LET P=WI
 3940 CLS 
 3942 PRINT 
 3944 PRINT "REFUND OR OWED"
 3950 PRINT 
 3952 PRINT "40TTOTAL TAX",XT
 3960 PRINT "48CREDITS",C
 3970 LET TT=XT-C
 3980 PRINT "49BALANCE",TT
 3990 LET TT=TT+OT
 4000 PRINT "  OTHER TAXES",OT
 4010 PRINT "56TOT TAX",TT
 4020 PRINT "64PAYMENTS",P
 4030 LET TD=TT-P
 4040 IF TD<0 THEN GO TO 4044
 4042 GO TO 4050
 4044 PRINT "68REFUND",-TD
 4046 GO TO 4060
 4050 PRINT "68DUE IRS",TD
 4060 PRINT 
 4062 PRINT "  RETURN"
 4070 PRINT "TYPE LETTER"
 4080 IF INKEY$="" THEN GO TO 4080
 4082 LET A$=INKEY$
 4085 IF A$="R" THEN RETURN 
 4090 IF A$="O" THEN GO SUB 4360
 4100 IF A$="T" THEN GO TO 4104
 4102 GO TO 4110
 4104 PRINT "TAX"
 4106 INPUT TX
 4108 GO TO 3940
 4110 IF A$="C" THEN GO SUB 4150
 4112 IF A$="P" THEN GO SUB 4570
 4120 GO TO 3940
 4150 CLS 
 4152 PRINT 
 4154 PRINT "CREDITS."
 4156 PRINT 
 4160 PRINT "41ELDERLY"
 4162 INPUT R(1)
 4164 PRINT AT 3,10;R(1)
 4170 PRINT "42FOREIGN"
 4172 INPUT R(2)
 4174 PRINT AT 4,10;R(2)
 4180 PRINT "43INVEST."
 4182 INPUT R(3)
 4184 PRINT AT 5,10;R(3)
 4190 PRINT "44POLITC,"
 4192 INPUT R(4)
 4194 PRINT AT 6,10;R(4)
 4200 PRINT "45CHILD"
 4202 INPUT R(5)
 4204 PRINT AT 7,10;R(5)
 4210 PRINT "46JOBS"
 4212 INPUT R(6)
 4214 PRINT AT 8,10;R(6)
 4220 PRINT "47ENERGY"
 4222 INPUT R(7)
 4224 PRINT AT 9,10;R(7)
 4330 LET C=0
 4340 FOR I=1 TO 7
 4342 LET C=C+R(I)
 4344 NEXT I
 4350 RETURN 
 4360 CLS 
 4362 PRINT 
 4364 PRINT "OTHER TAXES"
 4366 PRINT 
 4370 PRINT "51SELF EM"
 4372 INPUT X(1)
 4374 PRINT AT 3,10;X(1)
 4390 PRINT "51ALT MIN"
 4392 INPUT X(2)
 4394 PRINT AT 4,10;X(2)
 4400 PRINT "52INV CR."
 4402 INPUT X(3)
 4404 PRINT AT 5,10;X(3)
 4410 PRINT "53UNR TIP"
 4412 INPUT X(4)
 4414 PRINT AT 6,10;X(4)
 4420 PRINT "54UNC TIP"
 4422 INPUT X(5)
 4424 PRINT AT 7,10;X(5)
 4430 PRINT "55IRA"
 4432 INPUT X(6)
 4434 PRINT AT 8,10;X(6)
 4450 LET OT=0
 4550 FOR I=1 TO 6
 4552 LET OT=X(I)+OT
 4554 NEXT I
 4560 RETURN 
 4570 CLS 
 4572 PRINT 
 4574 PRINT "TYPE WITHHOLDING AND OTHER TAX  PAYMENTS."
 4576 PRINT 
 4580 IF W(1)=0 THEN LET W(1)=WI
 4590 PRINT "57WITHHLD"
 4592 INPUT W(1)
 4594 PRINT AT 4,10;W(1)
 4600 PRINT "58EST PAY"
 4602 INPUT W(2)
 4604 PRINT AT 5,10;W(2)
 4610 PRINT "59EIC"
 4612 INPUT W(3)
 4614 PRINT AT 6,10;W(3)
 4620 PRINT "60FM 4868"
 4622 INPUT W(4)
 4624 PRINT AT 7,10;W(4)
 4630 PRINT "61EX FICA"
 4632 INPUT W(5)
 4634 PRINT AT 8,10;W(5)
 4640 PRINT "62FUELS"
 4642 INPUT W(6)
 4644 PRINT AT 9,10;W(6)
 4650 PRINT "63RIC CR"
 4652 INPUT W(7)
 4654 PRINT AT 10,10;W(7)
 4660 LET P=0
 4740 FOR I=1 TO 7
 4742 LET P=W(I)+P
 4744 NEXT I
 4750 RETURN 
 5000 LET N=0
 5005 LET E$=""
 5010 LET H=H+1
 5015 LET N=N+1
 5020 LET G$=F$(N TO N)
 5025 IF G$=":" THEN GO TO 5045
 5030 IF G$=";" THEN GO TO 5065
 5035 LET E$=E$+G$
 5040 GO TO 5015
 5045 LET V(H)=VAL E$
 5050 LET E$=""
 5055 GO TO 5010
 5065 LET H=H-1
 5070 RETURN 
 9000 CLS 
 9010 CLEAR 
 9020 SAVE "TAX 2"
 9030 RUN 

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

People

No people associated with this content.

Scroll to Top