--- title: "Office Manager" id: 71991 type: "computer_media" slug: "office-manager" url: "http://localhost/computer_media/office-manager/" markdown_url: "http://localhost/computer_media/office-manager.md" published_at: "2026-10-20T14:07:45+00:00" modified_at: "2026-10-20T14:13:33+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/Office-Manager-scaled.jpg" excerpt: "A phone book, report file and memo file kept in one large string array, with search, printer output and a save that stores the data with the program." 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: "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: "Joseph Glass" slug: "joseph-glass" taxonomy: "indiv" url: "http://localhost/indiv/joseph-glass/" genre: - name: "Business" slug: "business" taxonomy: "genre" url: "http://localhost/type/business/" media_type: "Program" programmers: - name: "Joseph Glass" slug: "joseph-glass" taxonomy: "indiv" url: "http://localhost/indiv/joseph-glass/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Office%20Manager%20%281983%29%28Glass%2C%20Joseph%29%28TS1000%29%28US%29%28Program%29.zip" mediadate: "1983" images: - url: "http://localhost/wp-content/uploads/2026/10/Office-Manager-scaled.jpg" article_media: - id: 19467 title: "Office Manager" type: "article" url: "http://localhost/article/office-manager/" media_type_tags: "Business" --- # Office Manager Keeps three small text files in one string array: a phone book, a report file and a memo file. A twelve-item menu opens, views, searches, extends and prints each file, and option 11 saves the program with all its data to tape so the files reload with it. Records are fixed 31-character lines; the phone book holds 150 entries, the report file 150 and the memo file 20. Typing `END` closes a file, and the marker stays in the array so later additions can find where the file stops. A REM at line 3000 reads “OFFICE MANAGER WAS WRITTEN BY JOSEPH GLASS. ALL RIGHTS RESERVED. (C)1983”. The program was published as a type-in in *Syntax*, April 1983. The handwritten cassette label reads “OFFICE MANAGER / GOTO 1 / MASTER”. The tape holds two recordings: `OMA`, a short save that breaks off partway through the print routine, and `OMB`, the complete program with its data array, about 13K. ## Program Analysis ### Program Structure Line 1 is a REM warning that the array `F$` (321 by 31) has to be created by direct command, because there is no `DIM` in the program; running it with `RUN` or `CLEAR` would wipe the data, which is why the label says `GOTO 1`. Lines 10–110 draw the menu and read a choice. Lines 150–191 set the starting slot `L` through tiny subroutines at 2100 (slot 1, phone), 2200 (slot 151, report) and 2300 (slot 301, memo), then dispatch. The shared loop at 200–235 either inputs new lines (options 1, 4, 7) or just prints them (options 5, 8), stopping at the file’s upper bound or an `END` line. - 2400–2445: print slots `S` to `F` with `LPRINT`. - 2500–2520: `SAVE "FILES"`, then `GOTO 1` so the reloaded program restarts without clearing variables. - 2700–2735: search the phone book for lines that begin with the entered text and show the slot number. - 2800–2865: alter/add: skip forward to the `END` marker, then accept new lines from there. - 2900–2915: list all 320 slots. ### Notable Techniques - One 321×31 array is partitioned by slot ranges (1–150, 151–300, 301–320) instead of using three arrays. - The search uses a slice of the stored line, `F$(L, TO D)`, against the input’s length `D`, giving a prefix match. - Saving from inside the program keeps the data with the code; on reload execution continues at line 2520, which jumps to line 1. - Program title on line 20 uses inverse letters inside a bar of solid blocks. - `FAST` mode throughout. ### Potential Issues - The print loop at 2435–2443 tests `L=F` after incrementing, so the finish slot itself is never printed. - Option 12 lists all slots and then runs off the end of the program at line 3000 instead of returning to the menu. - The alter routine at 2805 scans for `END` with no upper limit; if a file was filled to capacity without an `END` line, it runs into the next file’s slots or past the array. - Menu line 75 in `OMB` reads “VIEW MEMO FINE”. - In the incomplete `OMA` recording, option 5 never sets a starting slot and line 110 loops back to reprint the prompt; `OMB` corrects both. ## Source Code ``` 1 REM OFFICE MANAGER USES AN ARRAY(F$)321 BY 31. THIS MUST BE EN[T]ERED BY DIRECT COMMAND. 5 FAST 10 CLS 15 PRINT 20 PRINT "█████████[O][F][F][I][C][E]█[M][A][N][A][G][E][R]█████████" 25 PRINT 30 PRINT TAB 5;"1 OPEN PHONE BOOK" 35 PRINT TAB 5;"2 SEARCH PHONE BOOK" 40 PRINT TAB 5;"3 ALTER PHONE BOOK" 45 PRINT 50 PRINT TAB 5;"4 OPEN REPORT FILE" 55 PRINT TAB 5;"5 VIEW REPORT FILE" 60 PRINT TAB 5;"6 ADD TO REPORT FILE" 65 PRINT 70 PRINT TAB 5;"7 OPEN MEMO FILE" 75 PRINT TAB 5;"8 VIEW MEMO FINE" 80 PRINT TAB 5;"9 ALTER MEMO FILE" 85 PRINT 90 PRINT TAB 4;"10 PRINT FILE" 95 PRINT TAB 4;"11 SAVE ALL FILES";TAB 4;"12 VIEW ALL FILES" 100 PRINT AT 21,0;"ENTER CHOICE" 105 INPUT C 110 IF C<1 OR C>12 THEN GOTO 105 150 GOSUB 2000 160 IF C=1 OR C=3 THEN GOSUB 2100 165 IF C=4 OR C=5 OR C=6 THEN GOSUB 2200 170 IF C=7 OR C=8 OR C=9 THEN GOSUB 2300 175 IF C=10 THEN GOTO 2400 180 IF C=11 THEN GOTO 2500 185 IF C=2 THEN GOTO 2700 190 IF C=3 OR C=6 OR C=9 THEN GOTO 2800 191 IF C=12 THEN GOTO 2900 195 PRINT "TYPE""END"" TO EXIT" 200 IF C=1 OR C=4 OR C=7 THEN INPUT F$(L) 205 IF F$(L,1 TO 3)="END" THEN GOTO 2600 210 PRINT F$(L) 215 LET L=L+1 220 IF C=1 AND L>150 OR C=3 AND L>150 THEN GOTO 2600 225 IF C=4 AND L>300 OR C=5 AND L>300 OR C=6 AND L>300 THEN GOTO 2600 230 IF C=7 AND L>320 OR C=8 AND L>320 OR C=9 AND L>320 THEN GOTO 2600 235 GOTO 200 250 STOP 300 REM SUBROUTINES FOLLOW 2000 CLS 2005 PRINT 2010 RETURN 2100 LET L=1 2105 RETURN 2200 LET L=151 2205 RETURN 2300 LET L=301 2305 RETURN 2400 GOSUB 2000 2401 PRINT "PARAMETERS: " 2402 PRINT "▀▀▀▀▀▀▀▀▀▀▀" 2403 PRINT "PHONE=1 TO 150";TAB 0;"REPORT=151 TO 300";TAB 0;"MEMO=301 TO 320" 2404 PRINT 2405 PRINT "STARTING LINE?" 2410 INPUT S 2415 PRINT "FINISH LINE?" 2420 INPUT F 2425 PRINT AT 10,0;"PRINTING FILE SLOTS: ";TAB 0;S;" TO ";F 2430 LET L=S 2435 LPRINT F$(L,1 TO 31) 2440 LET L=L+1 2443 IF L=F THEN GOTO 2600 2445 GOTO 2435 2500 GOSUB 2000 2505 PRINT "ALL FILES WILL BE SAVED IN THE STANDARD SINCLAIR FORMAT." 2510 PRINT 2515 PRINT "SIMPLY PRESS ENTER..." 2516 INPUT Z$ 2518 SAVE "FILE[S]" 2520 GOTO 1 2600 PRINT AT 21,0;"KEY ENTER TO CONTINUE" 2605 INPUT Z$ 2610 GOTO 10 2700 GOSUB 2000 2705 PRINT "ENTER SEARCH DATA" 2709 PRINT "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀" 2710 INPUT Z$ 2711 LET D=LEN Z$ 2715 LET L=1 2720 IF F$(L, TO D)=Z$ THEN PRINT "[F][I][L][E]█[S][L][O][T]██";L;TAB 0;F$(L) 2725 LET L=L+1 2730 IF L>150 THEN GOTO 2600 2735 GOTO 2720 2800 GOSUB 2000 2805 IF F$(L,1 TO 3)="END" THEN GOTO 2820 2810 LET L=L+1 2815 GOTO 2805 2820 PRINT "FILE ENDS AT SLOT: ";L 2825 PRINT "ENTER DATA--END TO EXIT" 2830 INPUT F$(L) 2835 IF F$(L,1 TO 3)="END" THEN GOTO 2600 2840 PRINT F$(L) 2845 LET L=L+1 2850 IF C=3 AND L>150 THEN GOTO 10 2855 IF C=6 AND L>300 THEN GOTO 10 2860 IF C=9 AND L>320 THEN GOTO 10 2865 GOTO 2830 2900 GOSUB 2000 2905 FOR L=1 TO 320 2910 PRINT F$(L) 2915 NEXT L 3000 REM OFFICE MANAGER WAS WRITTEN BY JOSEPH GLASS. ALL RIGHTS RESERVED. (C)1983 ```