Manage your income and expenses, circa 1985.
Content
Image Gallery
Source Code
10 LET N1=SGN PI: LET N0=NOT PI: BORDER N1: INK 9: PAPER N1
20 DEF FN T(P)=VAL "INT ((P)*100+.5)/100"
30 REM subroutines
40 CLS : POKE 23658,8: GO TO 6040: DATA "JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"
50 PRINT : PLOT n0,PEEK 23689*8-12: DRAW 255,N0: RETURN
60 LET X=36: LET L=184: GO TO 80
70 LET X=80: LET L=90
80 PLOT X,171: DRAW L,N0: DRAW N0,-16: DRAW -L,N0: DRAW N0,16: RETURN
90 INPUT "0 to make Entries"'"1 to return to menu Select ";W: IF w>N1 THEN GO TO 90
100 RETURN
110 LET peek=PEEK 23689: PRINT AT 18,N0;"MA=Misc. Assets","CK=Checking","SA=Saving","CA=Cash","CC=Cash Card","CD=Cir. of Dep. ST=Stocks",,: RETURN
120 PRINT AT 18,N0,,,,,,,,: POKE 23689,peek: RETURN
130 PRINT #N1;"No such Item, press ENTER": PAUSE N0: RETURN
140 GO SUB 50
150 INPUT "Do you wish a COPY ";P$: IF P$="" THEN GO TO 150
160 IF P$(N1)="Y" THEN COPY
170 IF go THEN RETURN
180 PRINT #N1;"Press ENTER for Menu ": PAUSE N0: RETURN
190 PRINT '"To stop entries ENTER RETURN ": GO SUB 50: PRINT ,M$(go);TAB 25;"Year"
200 IF B THEN INPUT "Is this a new month? ";P$: IF P$="" THEN GO TO 200
210 LET B=N0: RETURN
220 RESTORE : FOR I=2 TO 24 STEP 2: READ P$
230 IF P$=M$(n1, TO 3) THEN LET B=I
240 NEXT I: RETURN
500 REM INCOME
510 PRINT 'TAB 13;"INCOME": GO SUB 70: GO SUB 6160: REM S1
520 PRINT '"Item",m$(n1);TAB 25;"Year"
530 GO SUB 50: FOR B=N1 TO IMX
540 GO SUB 6160: REM s2
550 PRINT L$(B),H(B);TAB 24;F(B)
560 NEXT B: GO SUB 50
570 PRINT "Total",HT;TAB 24;FT
580 GO SUB 90: IF w THEN RETURN
590 CLS : GO TO 2000
1000 REM expense statement
1010 PRINT 'TAB 12;"EXPENSES": GO SUB 70
1020 PRINT '"Item",M$(2);TAB 25;"Year": GO SUB 50
1030 FOR I=N1 TO EMX
1040 GO SUB 6160: REM s3
1050 PRINT I$(I),M(I);TAB 24;T(I): NEXT I: GO SUB 50
1060 PRINT "TOTAL",MT;TAB 24;TT
1070 GO SUB 90: IF w THEN RETURN
1080 CLS : GO TO 2500
1500 REM ASSETS/LIABILITIES
1510 PRINT 'TAB 5;"ASSETS and LIABILITIES": GO SUB 50
1520 GO SUB 6160: REM s4
1530 PRINT '" Checking bal.";TAB 23-LEN STR$ CK;"$";CK," Cash Card";TAB 23-LEN STR$ CC;"$";CC," Savings bal.";TAB 23-LEN STR$ SA;"$";SA,
1540 PRINT " Cash bal.";TAB 23-LEN STR$ CA;"$";CA," Certs. of Deposit";TAB 23-LEN STR$ CD;"$";CD," Stocks";TAB 23-LEN STR$ ST;"$";ST,
1550 PRINT " Misc. Assets";TAB 23-LEN STR$ MA;"$";MA," Property";TAB 23-LEN STR$ PR;"$";PR
1560 LET B=CK+CC+SA+CA+CD+ST+MA+PR
1570 PRINT " Assets";TAB 23-LEN STR$ B;"$";B
1580 GO SUB 50: PRINT " Mortgage";TAB 23-LEN STR$ MG;"$";MG," Ins. loan";TAB 23-LEN STR$ LL;"$";LL," 2nd Mort.";TAB 23-LEN STR$ L2;"$";L2
1590 LET B=MG+LL+L2: PRINT " Liabilities";TAB 23-LEN STR$ B;"$";B
1600 LET B=(SA+CA+CK+ST+CD+PR+MA)-B
1610 GO SUB 50: PRINT "Net Worth";TAB 23-LEN STR$ B;"$";B
1620 GO SUB 140: RETURN
2000 REM income entries
2010 LET go=n1: PRINT 'TAB 9;"Income entries": GO SUB 60: GO SUB 190
2020 IF P$(N1)="Y" THEN LET HT=N0: DIM H(6): INPUT "Type month (3 letters e.g. JAN) ";m$(n1): LET P$=" ": CLS : GO TO 2000
2030 GO SUB 50
2040 INPUT " Item ";P$: IF P$="RETURN"( TO LEN P$) THEN RETURN
2050 FOR B=N1 TO IMX
2060 IF P$=L$(B, TO LEN P$) THEN GO TO 2090
2070 NEXT B: GO SUB 130
2080 GO TO 2040
2090 PRINT L$(B),H(B);TAB 24;F(B)
2100 INPUT "Amount $";TR: GO SUB 110: INPUT "For account? ";T$
2110 LET P$=T$: LET go=2100: GO TO 5470
2120 GO SUB 120
2130 IF T$="CK" THEN LET CK=CK+TR
2140 IF T$="SA" THEN LET SA=SA+TR
2150 IF T$="CC" THEN LET CC=CC+TR
2160 IF T$="CA" THEN LET CA=CA+TR
2170 IF T$="ST" THEN LET ST=ST+TR
2180 IF T$="CD" THEN LET CD=CD+TR
2190 IF T$="MA" THEN LET MA=MA+TR
2200 IF S1 THEN RETURN
2210 LET H(B)=H(B)+TR: LET HT=HT+TR: LET F(B)=F(B)+TR: LET FT=FT+TR
2220 GO SUB 50: PRINT "TO DATE",H(B);TAB 24;F(B)
2230 GO SUB 50: PRINT "Total Income",HT;TAB 24;FT
2240 GO SUB 220: LET W(B-N1)=HT
2250 GO SUB 50: GO TO 2040
2500 REM expense entries
2510 LET go=2: PRINT 'TAB 9;"Expense entries": GO SUB 60: GO SUB 190
2520 IF P$(N1)="Y" THEN LET MT=N0: LET PPT=N0: DIM m(EMX): INPUT "Type month (3 letters e.g. JUL) ";M$(2): LET p$=" ": CLS : GO TO 2500
2530 INPUT " Item ";P$: IF P$="RETURN"( TO LEN P$) THEN RETURN
2540 FOR B=N1 TO EMX
2550 IF P$=I$(B, TO LEN P$) THEN GO TO 2580
2560 NEXT B
2570 GO SUB 130: GO TO 2530
2580 PRINT I$(B),M(B);TAB 24;T(B)
2590 INPUT "Amount $";TR: GO SUB 110: INPUT "From Account? ";Q$
2600 LET P$=Q$: LET go=2590: GO TO 5470
2610 GO SUB 120: IF Q$="SA" THEN LET SA=SA-TR
2620 IF Q$="CC" THEN LET CC=CC-TR
2630 IF Q$="CA" THEN LET CA=CA-TR
2640 IF Q$="CK" THEN LET CK=CK-TR
2650 LET M(B)=M(B)+TR: LET MT=MT+TR: LET T(B)=T(B)+TR: LET TT=TT+TR
2660 GO SUB 50: PRINT "Total Expense",MT;TAB 24;TT
2670 GO SUB 50: PRINT "To date",M(B);TAB 24;T(B)
2680 GO SUB 220: LET R(B)=MT: LET W(B)=MT
2690 GO SUB 50: GO TO 2530
3000 REM set income/expense flag for graph
3010 LET go=n0
3500 REM DRAW graph : 2-year expense graph
3510 IF go THEN PRINT " 2 Year Expense Graph"
3520 IF NOT go THEN PRINT " Income/Expense Graph"
3530 GO SUB 50
3540 FOR I=15 TO N0 STEP -N1
3550 PRINT AT 17-I,I<5;"$";I*200;: IF NOT I THEN PRINT "00";
3560 FOR B=N1 TO 24
3570 IF go THEN LET Y=R(B)+-I*200
3580 IF NOT go THEN LET Y=W(B)+-I*200
3590 IF Y<-25 THEN PRINT "_";: GO TO 3630
3600 LET ink=7: IF B/2<>INT (B/2) THEN LET ink=4
3610 IF Y>-26 AND Y<25 THEN PRINT INK ink;"\..";
3620 IF Y>24 THEN PRINT INK ink;"\::";
3630 NEXT B
3640 PRINT : NEXT I
3650 IF go THEN PRINT " 1984J F M A M J J A S O N D"'" 1985 J F M A M J J A S O N D"'TAB 7;"Expense 1984-1985"
3660 IF NOT go THEN PRINT " IEIEIEIEIEIEIEIEIEIEIEIE"," J F M A M J J A S O N D"," Income and Expense 1985"
3670 LET go=n0: GO SUB 150: RETURN
4000 REM BUDGET
4010 PRINT 'TAB 13;"Budget": GO SUB 70
4020 PRINT '"Expenses","To date Budget": GO SUB 50
4030 FOR N=N1 TO EMX
4040 PRINT I$(N),T(N);TAB 25;
4050 GO SUB 6160: REM s5
4060 PRINT p(n): NEXT n
4070 GO SUB 50: PRINT "Totals",TT;TAB 25;BT
4080 INPUT " COPY ?";p$: IF p$="y" OR p$="Y" THEN FOR n=n1 TO emx: LPRINT p(n),t(n);TAB 25;p(n): NEXT n
4090 RETURN
4500 REM CASH FLOW
4510 PRINT 'TAB 11;"CASH FLOW": GO SUB 70
4520 PRINT ',M$(n1);TAB 25;"Year": GO SUB 50
4530 PRINT '"Income:",HT;TAB 24;FT
4540 PRINT '"Expense:",MT;TAB 24;TT
4550 PRINT '"Loan Prin. pd.:",PPT;TAB 24;PPX
4560 GO SUB 50: PRINT '"Net:",HT-MT-PPT;TAB 24;FN T(FT-TT-PPX)
4570 GO SUB 140: RETURN
5000 REM REPAY LOANS & TRANSFERSBETWEEN ACCOUNTS
5010 PRINT ''" 0 Principal Payment on loans"''" 1 Transfers between Accounts": GO SUB 50
5020 INPUT "Select number ";TR: IF TR THEN GO TO 5270
5030 CLS : PRINT ''"Which loan are you paying on?": GO SUB 50
5040 PRINT " 0 Mortgage"'" 1 2nd Mortgage"'" 2 Insurance Loan": GO SUB 50
5050 INPUT "Select number ";TR
5060 PRINT "Just Input the Principal paid. Adjusts Assets/Liabilities here.": GO SUB 50
5070 PRINT ("Mortgage: " AND TR=n0)+(" 2nd Mortgage: " AND TR=N1)+(" Insurance Loan: " AND TR=2);
5080 INPUT "Prin. payment = $";PP: PRINT PP
5090 LET PPT=PPT+PP: LET PPX=PPX+PP
5100 INPUT "Paid from which account? ";Y$
5110 LET P$=Y$: LET go=5100: GO TO 5470
5120 IF NOT TR THEN LET MG=MG-PP
5130 IF TR=N1 THEN LET L2=L2-PP
5140 IF TR=2 THEN LET LL=LL-PP
5150 IF Y$="SA" THEN LET SA=SA-PP
5160 IF Y$="CK" THEN LET CK=CK-PP
5170 IF Y$="CC" THEN LET CC=CC-PP
5180 GO SUB 50
5190 PRINT ("New 2nd Mort. bal. $" AND TR=N1)+("New Ins. Loan bal. $" AND TR=2)+("New Mortgage bal $" AND TR=N0);
5200 PRINT (L2 AND TR=N1)+(LL AND TR=2)+(MG AND TR=N0)
5210 GO SUB 140
5220 PRINT "1 Transfer between accounts","2 return to Menu"'"3 another loan payment?","4 see account balances"
5230 INPUT "Select number ";TR: IF TR>4 THEN GO TO 5230
5240 CLS : IF TR=2 THEN RETURN
5250 IF TR=3 THEN GO TO 5030
5260 IF TR=4 THEN GO TO 1500
5270 CLS : PRINT 'TAB 9;"Transfer Funds": GO SUB 60
5280 INPUT "Transfer how much? $";TR
5290 INPUT "Transfer $";(TR);" from Account? ";W$
5300 LET P$=W$: LET go=5290: GO TO 5470
5310 INPUT "to Account ";T$
5320 LET P$=T$: LET go=5310: GO TO 5470
5330 IF W$="SA" THEN LET SA=SA-TR
5340 IF W$="MA" THEN LET MA=MA-TR
5350 IF W$="CC" THEN LET CC=CC-TR
5360 IF W$="CK" THEN LET CK=CK-TR
5370 IF W$="CD" THEN LET CD=CD-TR
5380 IF W$="ST" THEN LET ST=ST-TR
5390 IF W$="CA" THEN LET CA=CA-TR
5400 LET S1=N1: GO SUB 2130: LET S1=N0
5410 PRINT : GO SUB 50
5420 PRINT "You transfered $";TR;" from ",W$;" to ";T$;"."
5430 INPUT "0 Another transfer?","1 Return to Menu","2 See revised Accounts SELECT ";TR: IF TR>2 THEN GO TO 5430
5440 IF TR=N1 THEN RETURN
5450 IF TR THEN CLS : GO TO 1500
5460 GO TO 5280
5470 IF P$<>"CA" OR P$<>"CK" OR P$<>"SA" OR P$<>"MA" OR P$<>"ST" OR P$<>"CC" OR P$<>"CD" THEN PRINT #N1;"No such Account. Press ENTER": PAUSE N0: GO TO go
5480 GO TO go+20
5500 REM In/Ex (diff, means)
5510 PRINT '"Monthly Income & Expense summery": GO SUB 50
5520 PRINT "Month Income Expense Difference": GO SUB 50
5530 RESTORE : LET T1=N0: LET T2=T1: LET T3=T1
5540 FOR B=N1 TO 23 STEP 2
5550 LET W(B)=INT (W(B)+.5): LET W(B+N1)=INT (W(B+N1)+.5)
5560 READ P$: PRINT P$;" ";W(B),W(B+N1);TAB 24;W(B)-W(B+N1)
5570 LET T3=T3+W(B): LET T1=T1+W(B+N1)
5580 IF W(B)>N0 THEN LET T2=T2+N1
5590 NEXT B
5600 GO SUB 50: PRINT "Totals ";T3,T1;TAB 24;T3-T1
5610 GO SUB 140: PRINT #N1;"press ENTER to include Mortgage ": PAUSE N0
5620 CLS : PRINT 'TAB 7;"Income Expense Difference": GO SUB 50
5630 PRINT TAB 8;T3,T1;TAB 24;T3-T1: GO SUB 50
5640 LET PP=INT (MGX-MG)
5650 PRINT "Prin. Pmts.",pp: GO SUB 50
5660 PRINT "Year ";T3,T1+PP;TAB 24;T3+T1-PP: GO SUB 50
5670 LET BB=N0: FOR B=N1 TO 24 STEP 2
5680 LET AA=R(B): LET BB=BB+AA: NEXT B
5690 PRINT "Mean monthly Income: $";FN T(T3/T2)
5700 PRINT "Mean monthly Expense $";FN T(T1/T2)
5710 PRINT "Mean Expense last year $";FN T(BB/12)
5720 PRINT "( EXCLUDING MORTGAGE )": GO SUB 50
5730 LET go=N0: GO SUB 140: RETURN
6000 REM END PROGRAM
6010 PRINT ''''"You may SAVE OR STOP the"'"program."''"If you have made any changes in the data"'''': GO SUB 50: PRINT " Do not forget to re-load tape ": GO SUB 50
6020 INPUT "0 = SAVE 1 = STOP ";SP: IF NOT SP THEN SAVE "Mon Man"
6040 REM MAIN MENU
6050 CLS : PRINT ''TAB 9;"Money Manager": GO SUB 50
6060 PRINT '" 1 Check INCOME statement"," 2 Check EXPENSE statement"
6070 PRINT " 3 Check ASSETS and LIABILITIES 4 Enter INCOME items"
6080 PRINT " 5 Enter EXPENSE items"," 6 See INCOME/EXPENSE graph"
6090 PRINT " 7 See 2 year EXPENSES graph"," 8 Compare EXPENSES with Budget"
6100 PRINT " 9 See CASH flow statement"," 10 TRANSFER funds; Repay LOANS"
6110 PRINT " 11 See monthly INCOME/EXPENSE"," 12 Exit this program"
6120 PRINT : GO SUB 50: PRINT ' BRIGHT N1;" Please; never use"; PAPER 2;" RUN "
6130 INPUT "SELECT, 1 TO 12 ";go
6140 IF go<N1 OR go>12 THEN GO TO 6130
6150 CLS : GO SUB 500*go: GO TO N1
6160 REM setup
6170 IF s1 THEN GO TO 6230
6180 IF s2 THEN GO TO 6270
6190 IF s3 THEN GO TO 6300
6200 IF s4 THEN GO TO 6340
6210 IF S5 THEN GO TO 6370
6220 RETURN
6230 REM INCOME s1
6240 INPUT "How many Income items? ";IMX: LET MGX=N0: DIM L$(IMX,15): DIM H(IMX): DIM F(IMX): DIM M$(2,PI): LET M$(N1)="mon": LET m$(2)="mon"
6250 INPUT "How many Expense items? ";EMX: DIM T(EMX): LET HT=N0: LET FT=N0: DIM I$(EMX,15): DIM m(EMX): LET MT=n0: LET TT=MT: LET PPT=MT: LET PPX=MT: DIM W(24): DIM R(24): DIM P(EMX): LET BT=N0
6260 LET S2=s1: LET S1=n0: RETURN
6270 REM INCOME s2
6280 INPUT "Name INCOME item ";(B);" ";L$(b): IF B=IMX THEN LET s3=s2: LET s2=n0
6290 RETURN
6300 REM expense s3
6310 INPUT "Name Expense item ";(I);" ";I$(I)
6320 IF I=EMX THEN RESTORE : FOR B=N1 TO 23 STEP 2: READ P$: INPUT (p$);" last year; Expenses $";R(B): NEXT B: LET s4=s3: LET s3=n0
6330 RETURN
6340 REM ASS AND LIB s4
6350 INPUT "Checking Acc. bal ";CK'"Cash Card bal. ";CC'"Savings acc. bal. ";SA'"Cash on hand ";CA'"Cirt. of Deposit bal. ";CD'"Stocks & Bonds ";ST'"value of Real & Personal prop. ";PR'"value of other assets ";MA'"principal bal. of Mortgage ";MG'"bal. of 2nd Mort. ";L2'"other loan balances ";LL
6360 LET s5=s4: LET s4=n0: RETURN
6370 REM BUDGET s5
6380 INPUT "Budget amount for item ";(n);" $";p(n): LET bt=bt+p(n): IF N=EMX THEN LET S5=N0: DELETE 6160,6380
6390 RETURN