Money Manager

Products: Money Manager
Developer(s): Paul Holmgren
Date: 1987
Type: Program
Platform(s): TS 2068

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 
Scroll to Top