Manage your income and expenses, circa 1985.
Related Products
Manage home expenses.
Related Articles
Next we have the instructions and tips For running Paul Holmgren’s type in program for handling and tracking your financial situation (ran in last issue). By the way, check out the upcoming issues of SyncWare News and you will see another program of Paul’s hitting print, we also have a few other surprises coming up
This was a TS1000 program first published in SYNC Jan/Feb 1983 submitted by Alan Pattison. It had a lot of features I felt I liked in a budget program. For a long time I tried to make it work in my 1000 but never quite made it, so I gave up. Along came the 2068
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