--- title: "Budget Master 1000" id: 71910 type: "computer_media" slug: "budget-master-1000" url: "http://localhost/computer_media/budget-master-1000/" markdown_url: "http://localhost/computer_media/budget-master-1000.md" published_at: "2026-10-20T14:07:49+00:00" modified_at: "2026-10-20T14:10:29+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/BudgetMaster1K2.png" excerpt: "Household budget manager with up to 40 named categories, monthly budget and spending entry, over-budget reports, year-to-date totals and averages over any span of months." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Human Engineered Software" slug: "human-engineered-software" taxonomy: "post_tag" url: "http://localhost/tag/human-engineered-software/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" indiv: - name: "W. D. Goodenberger" slug: "w-d-goodenberger" taxonomy: "indiv" url: "http://localhost/indiv/w-d-goodenberger/" genre: - name: "Finance" slug: "finance" taxonomy: "genre" url: "http://localhost/type/finance/" media_type: "Cassette" programmers: - name: "W. D. Goodenberger" slug: "w-d-goodenberger" taxonomy: "indiv" url: "http://localhost/indiv/w-d-goodenberger/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Budget%20Master%201000%20%281982%29%28Goodenberger%2C%20W.%20D.%29%28TS1000%29%28US%29%28Cassette%29.zip" mediadate: "1982" producer_company: - id: 10939 title: "Human Engineered Software" type: "company" url: "http://localhost/company/human-engineered-software/" images: - url: "http://localhost/wp-content/uploads/2026/10/BudgetMaster1K2.png" - url: "http://localhost/wp-content/uploads/2026/10/BudgetMaster1K1.png" - url: "http://localhost/wp-content/uploads/2026/10/Budget-Master-Tape-scaled.jpg" related_products: - id: 11987 title: "Budget Master 1000" type: "product" url: "http://localhost/product/budget-master-1000/" media_type_tags: "Finance" --- # Budget Master 1000 Tracks a household budget across twelve months in up to 40 categories that you name. You set budget amounts for each category, either one figure for every month, one month at a time, or month by month for each category. Spending is entered as it happens and added to a running total for each category. Reports show budget against spending for a month, only the categories that went over budget (with the total overspend), month and year-to-date totals, and the average monthly spend over any range of months. All figures are kept in BASIC variables, so the data is saved by saving the program to tape, and the program must be restarted with `GOTO 10`, not `RUN`. Budget Master 1000 was sold by HES (Human Engineered Software) as product T601, ©1982 HES, with a requirement for a 16K RAM pack. The on-screen title reads "HOUSEHOLD BUDGETER BY W D GOODENBERGER, ALL RIGHTS RESERVED". A scan of the printed instructions is included. They describe the six menu sections, warn against typing `RUN`, and give optional lines to add that pause the scrolling reports every 18 lines and remove the `FAST`/`SLOW` switching in the category display. This copy is on a cassette with a handwritten label and holds three recordings of the same listing. ## Program Analysis ### Program Structure - Lines 10–190: the title screen and main menu. A menu choice `D` is sent to `GOTO D*1000`. - Lines 1000–1150: enter spending, added into `E(month,category)`. - Lines 2000–2850: monthly totals, or over-budget items only. A category counts as over budget when `C(K,A)+.0096 THEN GOTO 150 180 GOTO D*1000 190 STOP 1000 CLS 1010 PRINT AT 5,0;"ENTER NUMBER OF MONTH TO UPDATE (JAN=1)" 1020 INPUT F 1030 GOSUB 8000 1040 PRINT AT 20,0;"ENTER CATEGORY NUMBER FOR MONTH OF ";M$(F);". (-9 TO END) " 1050 INPUT G 1060 IF G=-9 THEN GOTO 30 1070 IF G<1 OR G>H THEN GOTO 1150 1080 PRINT AT 20,0;"ENTER AMOUNT FOR ";M$(F);". ";C$(G);"EXPENDITURE. " 1090 INPUT I 1100 LET E(F,G)=E(F,G)+I 1110 PRINT AT 20,0;" " 1120 PRINT AT 20,0;C$(G);" EXPENSE IS: $";I 1130 PRINT AT 21,0;"CATEGORY TOTAL IS: $";E(F,G) 1140 PAUSE 200 1150 GOTO 1040 2000 CLS 2010 PRINT AT 3,0;"CHOOSE A DISPLAY PROCESS:" 2020 PRINT AT 8,0;"1 = DISPLAY MONTHLY TOTALS" 2030 PRINT AT 11,0;"2 = DISPLAY OVERBUDGET ITEMS" 2040 PRINT AT 17,0;"ENTER -9 TO END THIS PROCESS" 2050 INPUT J 2060 IF J=-9 THEN GOTO 30 2070 IF J<1 OR J>2 THEN GOTO 2050 2080 CLS 2090 PRINT AT 10,0;"ENTER MONTH TO BE PROCESSED (JAN = 1)" 2100 INPUT K 2120 IF J=2 THEN GOTO 2500 2130 CLS 2140 PRINT AT 18,14;M$(K) 2150 PRINT AT 20,0;"CATEGORY BUDGET AMT AMT SPENT" 2160 LET L=0 2170 LET M=0 2180 FOR A=1 TO H 2190 SCROLL 2200 PRINT AT 20,0;C$(A);TAB 12;"$";C(K,A);TAB 22;"$";E(K,A) 2210 LET L=L+C(K,A) 2220 LET M=M+E(K,A) 2230 NEXT A 2240 SCROLL 2250 SCROLL 2260 PRINT AT 20,0;"TOTALS:";TAB 12;"$";L;TAB 22;"$";M 2270 SCROLL 2280 PRINT AT 21,0;"READY TO CONTINUE? (Y/N)" 2290 INPUT X$ 2300 IF X$="Y" THEN GOTO 2000 2310 GOTO 2900 2500 CLS 2510 LET N=0 2520 PRINT AT 20,0;"CATEGORY BUDGET AMT AMT SPENT" 2530 PRINT AT 18,15;M$(K) 2550 LET O=0 2560 LET P=0 2570 FOR A=1 TO H 2580 IF C(K,A)+.00912 THEN GOTO 3020 3050 CLS 3060 PRINT AT 18,7;"YTD THROUGH ";M$(R);"." 3070 PRINT AT 20,0;"CATEGORY MNTH TOTAL YTD TOTAL" 3080 LET S=0 3090 LET T=0 3100 FOR A=1 TO H 3110 LET U=0 3120 FOR B=1 TO R 3130 LET U=U+E(B,A) 3140 NEXT B 3150 SCROLL 3160 PRINT AT 20,0;C$(A);TAB 12;"$";E(R,A);TAB 22;"$";U 3170 LET T=T+U 3180 LET S=S+E(R,A) 3190 NEXT A 3200 SCROLL 3210 SCROLL 3220 PRINT AT 20,0;"TOTALS:";TAB 12;"$";S;TAB 22;"$";T 3230 SCROLL 3240 PRINT AT 21,0;"READY TO CONTINUE? (Y/N)" 3250 INPUT Z$ 3260 IF Z$="Y" THEN GOTO 30 3270 GOTO 3250 4000 CLS 4010 PRINT "ENTER NUMBER OF MONTH TO START AVERAGING(JAN = 1,-9 TO STOP)" 4020 INPUT V 4030 IF V=-9 THEN GOTO 30 4040 IF V<1 OR V>12 THEN GOTO 4020 4050 CLS 4060 PRINT "ENTER NUMBER OF MONTH TO END AVERAGING (JAN=1)" 4070 INPUT W 4080 IF W<1 OR W>12 THEN GOTO 4070 4090 CLS 4100 PRINT AT 18,3;"AVERAGE FROM ";M$(V);". TO ";M$(W);"." 4110 PRINT AT 20,0;"CATEGORY AVG MONTHLY EXP" 4120 LET X=0 4130 FOR A=1 TO H 4140 LET Y=0 4150 FOR B=V TO W 4160 LET Y=Y+E(B,A) 4170 NEXT B 4180 SCROLL 4190 PRINT AT 20,0;C$(A) 4200 LET Z=INT (100*((Y/((W+1)-V))+.005)) 4210 PRINT AT 20,0;C$(A);TAB 17;"$";Z/100 4220 LET X=X+Z/100 4230 NEXT A 4240 SCROLL 4250 SCROLL 4260 PRINT AT 20,0;"AVG. PER MONTH";TAB 17;"$";X 4270 SCROLL 4280 PRINT AT 21,0;"READY TO CONTINUE? (Y/N)" 4290 INPUT Q$ 4300 IF Q$="Y" THEN GOTO 30 4310 GOTO 4290 5000 CLS 5010 PRINT AT 2,0;"PLEASE CHOOSE ONE:" 5020 PRINT AT 5,0;"1 = ENTER BUDGET FOR 1 CATEGORY (ALL MONTHS THE SAME)" 5030 PRINT AT 8,0;"2 = ENTER BUDGET FOR 1 MONTH (ANY OR ALL CATEGORIES)" 5040 PRINT AT 11,0;"3 = ENTER INDIVIDUAL BUDGET A- MOUNTS (ANY MONTH OR CATEGORY)" 5050 PRINT AT 17,0;"ENTER -9 TO STOP" 5060 INPUT AA 5070 IF AA=-9 THEN GOTO 30 5080 IF AA<1 OR AA>3 THEN GOTO 5060 5090 IF AA=1 THEN GOTO 5500 5100 IF AA=2 THEN GOTO 5800 5110 GOSUB 8000 5120 PRINT AT 20,0;"ENTER NUMBER OF MONTH TO BE BUD-GETED (JAN =1),(-9 TO STOP) " 5130 INPUT BB 5140 IF BB=-9 THEN GOTO 30 5150 IF BB>12 THEN GOTO 5130 5160 PRINT AT 20,0;"ENTER CATEGORY NUMBER TO BE BUD-GETED FOR ";M$(BB);". " 5170 INPUT CC 5180 PRINT AT 20,0;"ENTER THE BUDGET AMOUNT FOR THE ";M$(BB);". ";C$(CC);" CATEGORY " 5190 INPUT DD 5200 PRINT AT 20,0;"BUDGET AMOUNT FOR THE ";C$(CC);"CATEGORY IN ";M$(BB);". IS $";DD 5210 PAUSE 400 5220 LET C(BB,CC)=DD 5230 GOTO 5120 5500 CLS 5510 GOSUB 8000 5520 PRINT AT 20,0;"ENTER STATIC BUDGET CATEGORY NUMBER (-9 TO END)" 5530 INPUT EE 5540 IF EE=-9 THEN GOTO 5000 5550 IF EE<1 OR EE>H THEN GOTO 5530 5560 PRINT AT 20,0;"ENTER BUDGET AMOUNT " 5570 INPUT FF 5580 FOR A=1 TO 12 5590 LET C(A,EE)=FF 5600 NEXT A 5610 PRINT AT 20,0;"THE BUDGET FOR THE ";C$(EE);" " 5620 PRINT AT 21,0;"CATEGORY IS $";FF 5630 PAUSE 200 5640 PRINT AT 21,0;" " 5650 GOTO 5520 5800 CLS 5810 PRINT AT 1,0;"WHAT MONTH TO BUDGET? (1 = JAN.)" 5820 INPUT GG 5830 CLS 5840 GOSUB 8000 5850 PRINT AT 20,0;" ENTER CATEGORY NO.(-9 TO STOP)" 5860 INPUT HH 5870 IF HH=-9 THEN GOTO 5000 5880 IF HH<1 OR HH>H THEN GOTO 5860 5890 PRINT AT 20,0;" ENTER BUDGET AMOUNT " 5900 INPUT II 5910 LET C(GG,HH)=II 5920 PRINT AT 20,0;"$";C(GG,HH);" IS THE BUDGET AMOUNT" 5930 PRINT AT 21,0;"FOR ";M$(GG);"*S ";C$(HH);" CATEGORY" 5940 PAUSE 130 5950 PRINT AT 21,0;" " 5960 GOTO 5850 6000 CLS 6020 PRINT AT 2,1;"ENTER ONE:",,,," 1. ENTER ALL NEW CATEGORIES AND NAMES" 6030 PRINT AT 7,1;"2. CHANGE CATEGORY NAMES ONLY" 6040 INPUT JJ 6050 IF JJ>2 OR JJ<1 THEN GOTO 6040 6060 IF JJ=2 THEN GOTO 6140 6070 CLS 6080 PRINT AT 2,0;"HOW MANY CATEGORIES DO YOU WANT? (40 MAXIMUM)" 6090 INPUT H 6100 IF H>40 THEN GOTO 6090 6110 DIM C$(H,10) 6120 DIM C(12,H) 6130 DIM E(12,H) 6140 GOSUB 8000 6150 PRINT AT 20,0;"ENTER CATEGORY NO. TO BE NAMED OR CHANGED (-9 TO END)" 6160 INPUT KK 6170 IF KK=-9 THEN GOTO 30 6180 PRINT AT 20,0;"ENTER CATEGORY NAME (10 OR FEWER DIGITS OR LETTERS) " 6190 INPUT C$(KK) 6200 IF KK/2<>INT (KK/2) THEN PRINT AT (KK-1)/2,0;KK;" = ";C$(KK) 6210 IF KK/2=INT (KK/2) THEN PRINT AT (KK-2)/2,16;KK;" = ";C$(KK) 6220 GOTO 6150 8000 CLS 8010 FAST 8020 FOR A=0 TO H-1 8030 IF A/2=INT (A/2) THEN PRINT AT A/2,0;A+1;" = ";C$(A+1) 8040 IF A/2<>INT (A/2) THEN PRINT AT (A-1)/2,16;A+1;" = ";C$(A+1) 8050 NEXT A 8060 SLOW 8070 RETURN 9000 DIM M$(12,3) 9010 LET M$(1)="JAN" 9020 LET M$(2)="FEB" 9030 LET M$(3)="MAR" 9040 LET M$(4)="APR" 9050 LET M$(6)="JUN" 9060 LET M$(5)="MAY" 9070 LET M$(7)="JUL" 9080 LET M$(8)="AUG" 9090 LET M$(9)="SEP" 9100 LET M$(10)="OCT" 9110 LET M$(11)="NOV" 9120 LET M$(12)="DEC" 9130 RETURN 9500 SAVE "BUDGE[T]" 9510 GOTO 50 9600 SAVE "BUDGE[T]" 9650 GOTO 1 ```