UPDATE Magazine Issue Disk, October 1987 (Larken Edition)

Developer(s): Bill Jones, Robert Hartung
Date: 1987
Type: Diskette
Platform(s): TS 2068

This is the Larken (LKDOS) version of the issue disk for the October 1987 issue of UPDATE, Bill Jones’ TS2068 magazine. Its feature program is Mail Merge (MMRG.B1), the database UPDATE used to keep its subscriber records and print its mailing labels. It holds 100-name files of seven lines each, with four address lines, a first-name line and two information lines, and it sorts, searches by last name, reverses names, prints labels, envelopes and letters on a TS2040 or a Centronics printer, and keeps a second OUTLINE database for printing topic outlines. The disk also carries the J-Utilities and the short routines published in the same issue. Apart from the J-Utilities, the programs need a TS2068 with the Larken disk interface and the LKDOS V3 EPROM printer driver. They have not been converted for tape.

The October 1987 and January 1988 issue disks were issued together on one Larken disk. Each half is archived as its own post. The briefing program BRIEF.B1 explains that the Larken version took weeks to convert from the Oliger originals and was then revised again for Larry Kenny’s Version 3 EPROM, and that MMRG differs from the magazine’s tutorial listing only in calling its menus from disk.

Contents

  • BRIEF.B1: the on-screen briefing for the issue disk, with an optional printout.
  • MMRG.B1: Mail Merge, with its menu screens fm, pg, fo, ml and cpr.C1 (Function, Page Management, Format and Mail menus and the title screen).
  • J-UTIL.B1: the J-Utilities, the issue’s key-in project: a memory peeker and disassembly display, decimal and hex DATA pokers, hex/decimal/binary conversion, mixed hex and decimal arithmetic, a binary analysis table and RAMTOP setting.
  • PROMPT.B1: GO SUB routines for Y/N keys and number-key menus.
  • PSTAT.B1: waits for a Centronics printer to be ready by reading IN 127.
  • pseudo.B1 and vars.B1: a “pseudo-variable” table of numeric constants and letterhead strings to MERGE into a program.
  • USING.B1: PRINT USING-style column alignment of numbers (on-screen credit “SYNTAX 1984”).
  • MENAG.B1: border, colour and SOUND effect routines.
  • Pscren.B1: a large-text demonstration (REM “ZX-Appeal Sept. 86”), the same program as Large Text.

PROMPT, PSTAT and the pseudo-variable table match the routines in Robert Hartung’s “Quick and Easy Routines” in the same issue.

J-Utilities on Tape

J-UTIL.B1 uses no disk commands, so it is also included as a tape TAP that runs on a stock TS2068: J-Utilities (1987)(Jones, Bill)(TS2068)(US)(Program).tap. It shows a title screen and two pages of notes, then stops and asks you to set CAPS LOCK and type CONTINUE. After that its menu is an INPUT prompt. Hex must be entered in capitals. In the conversion only the Larken variables marker was removed and the autostart set to line 9800. It was tested in ZEsarUX: the hex/decimal conversion turned 65535 into FFFF and binary 1111111111111111, and the mixed arithmetic gave FFh × 16 = 4080 (FF0h).

Not Included

The disk’s subscriber mailing list holds personal data and has been left out, so no disk image is included. The Larken system files are also left out. LLOOK.B1 and Purity.B1, the Mail Merge companions announced for January, are with the January 1988 issue disk. The disk’s other files are George Chambers’ MTERM II modification and public-domain programs that are already archived on this site.

Related Articles

This interesting batch of string slicing and concatenations does a nice job of aligning decimal places and simulating the print using functions.
Update to program from October 1987 issue to print out the categories of an index after the program had sorted subjects by title.
Disassembler, poke a decimal table, poke a hex table, convert Hex-Dec-BIN, Mixed Math, Binary Table.
Next issue two more functions will be added to SDOS MAIL MERGE, One will quickly let you flip through the listing to find a name or stock list.
Yes – No INKEY$, SDOS Printer Drier, Software check of printer status, Pseudo Hex Vars Table with Letterhead Data
Database/mail merge program that will work with any Centronics printer.
How can one name a program that has six diverse functions? J-Util combines most “number functions” needed in computing.
The two programs in this issue are long and complex but worth the effort to key in.
The OCTOBER 87 and JANUARY 88 Issue disks are now available for three Disk Operating Systems; Oliger DOS, Larken DOS, and Aerco FD-68 DOS.
SDOS Mail Merge and Outline, a database.

Related Content

Image Gallery

Source Code

  100 BORDER 0: INK 7: PAPER 0: CLS : RANDOMIZE USR 100: OPEN #4,"dd": GO TO 2061
  400 INPUT "Number of Mailing list Names?";h: LET k=h: LET b$=""
  402 INPUT "Sort by: <1> First name                  <2> Last name";z
  404 IF z=oa THEN GO SUB VAL "1010": GO TO VAL "500"
  406 IF z=ob THEN GO SUB VAL "640": GO SUB VAL "1010": GO SUB VAL "670"
  500 GO TO VAL "2000"
  640 CLS : PRINT FLASH oa;AT oj,oa;"Last Name Reverse- 40 Seconds";AT ok,oa;"Line 640": FOR n=oa TO h: IF o$(n,oa)(oa TO od)="    " THEN NEXT n: RETURN 
  642 LET b$=o$(n,oa)
  646 IF b$(LEN b$)=" " THEN LET b$=b$( TO LEN b$-oa): GO TO VAL "646"
  650 FOR l=LEN b$ TO oa STEP -oa: IF b$(oa TO od)="    " THEN NEXT n
  652 IF n>k THEN RETURN 
  654 IF b$(l)=" " THEN LET o$(n,oa)=b$(l+oa TO )+" "+o$(n,oa)( TO l): NEXT n
  656 NEXT l
  658 NEXT n
  660 RETURN 
  670 CLS : PRINT AT oj,oa;"Replace First name- 40 Seconds";AT ok,oa;"Line 670": LET b$=""
  672 FOR n=oa TO k: IF o$(n,oa)(oa TO od)="    " THEN NEXT n: RETURN 
  674 IF n>k THEN GO TO y
  676 LET b$=o$(n,oa)
  682 FOR l=oa TO LEN b$: IF b$(l)=" " THEN LET b$=o$(n,oa)(l+oa TO ): GO TO VAL "686"
  684 NEXT l
  685 IF LEN b$=oo THEN GO TO VAL "689"
  686 IF LEN b$>oo AND b$(LEN b$)=" " THEN LET b$=b$( TO LEN b$-oa): GO TO VAL "685"
  687 IF LEN b$>oa AND b$(oa)=" " THEN LET b$=b$(ob TO ): GO TO VAL "685"
  689 LET o$(n,oa)=b$+" "+o$(n,oa)( TO l)
  690 NEXT n
  692 RETURN 
 1010 CLS : PRINT AT oj,oh; FLASH oa;"Sorting- 1 Minute";AT ok,oh;"Line 1010": DIM v$(of,31): LET n=h
 1020 LET I=N-oa
 1030 FOR J=oa TO I
 1040 LET K=J+oa
 1050 FOR L=N TO K STEP -oa
 1052 IF o$(l,oa)(oa TO od)="    " THEN GO TO VAL "1100"
 1060 IF o$(L,oa)>o$(J,oa) THEN GO TO VAL "1100"
 1070 IF o$(l,oa)(oa TO od)<>"    " THEN LET b$=o$(L,oa): LET v$(oa)=o$(l,ob): LET v$(ob)=o$(l,oc): LET v$(oc)=o$(l,od): LET v$(od)=o$(l,oe): LET v$(oe)=o$(l,of): LET v$(of)=o$(l,og)
 1080 IF o$(l,oa)(oa TO od)<>"    " THEN LET o$(L,oa)=o$(J,oa): LET o$(l,ob)=o$(j,ob): LET o$(l,oc)=o$(j,oc): LET o$(l,od)=o$(j,od): LET o$(l,oe)=o$(j,oe): LET o$(l,of)=o$(j,of): LET o$(l,og)=o$(j,og)
 1090 LET o$(J,oa)=B$: LET o$(j,ob)=v$(oa): LET o$(j,oc)=v$(ob): LET o$(j,od)=v$(oc): LET o$(j,oe)=v$(od): LET o$(j,of)=v$(oe): LET o$(j,og)=v$(of)
 1100 NEXT L
 1110 NEXT J
 1120 CLS : FLASH oo
 1130 RETURN 
 2000 ON ERR GO TO VAL "9980": STOP 
 2001 PRINT #4: LOAD "ml.C1"SCREEN$ : PRINT AT 2,19;("Yes" AND LEN o$(1,1)>1)+("No " AND LEN o$(1,1)<2);AT 19,11;pg;" ";AT 19,25;nn;" "
 2002 PRINT AT ot,ok;pg;" ";AT ot,VAL "25";nn;" ";AT ob,ot; FLASH oa;("NO " AND LEN o$(oa,oa)<ob)+("Yes" AND LEN o$(oa,oa)>oa); FLASH oo;AT oc,VAL "24";~
 2003 GO SUB SQ: GO SUB Il: GO TO (Z<OO OR z>OI)*VAL "2000"+(z=OO)*VAL "3020"+(Z=OA)*VAL "2004"+(z>OA AND Z<OF)*VAL "2007"+(Z=OF)*VAL "2600"+(Z=OG)*VAL "2058"+(Z=OH)*VAL "400"+(Z=OI)*FM
 2004 CLS : PRINT AT OJ,OF; FLASH OA;"Confirm, START NEW"; FLASH OO''TAB OF;"<y> Yes -or- <n> No": GO SUB SQ: GO SUB IK: IF Z=OA THEN INPUT "Input Nbr of Names";mx: IF mx*VAL "217">VAL "27000" THEN GO TO VAL "2004"
 2005 IF z=oa THEN DIM o$(mx,7,31): DIM O$(mx,7,31): LET IN=OA: LET ms=OA: CLS : GO TO VAL "2009"
 2006 GO TO VAL "2000"
 2007 IF Z>OA AND Z<OF THEN LET in=oa: INPUT "Ent Strt Nbr ";MS: CLS : INPUT "Ent end Nbr ";MX: CLS 
 2008 IF Z=OE THEN CLS : INPUT "Twin Labels? <y> yes or <n> No  ";t$: INPUT "Ent sps bet: ";SX: INPUT "Ent Tab ";TB: CLS : LET h$=" ": FOR g=0 TO tb: LET h$=h$+" ": NEXT g: INPUT "Nbr of Fields (1-7) 4 for labels";x: PRINT AT OU,OB;"Do you want Page Control?": INPUT "<1> yes or <2> No  ";K: IF k=oa THEN PRINT AT OU,OO;"Ent ""PG"" for same page, or a nbrto change. ": INPUT PG: PRINT AT OU,OO;"Ent ""NN"" for same line count,or nbr to re-set line count. ": INPUT NN
 2009 FOR O=MS TO MX
 2010 IF Z<OC THEN GO SUB VAL "2022"
 2011 IF Z=OD THEN GO SUB VAL "2110"
 2012 IF Z=OC THEN GO SUB VAL "2034"
 2014 IF Z=OE THEN GO SUB VAL "2040"
 2016 IF O>=MX THEN GO TO VAL "2000"
 2018 NEXT O
 2022 CLS : PRINT AT OF,OF;"Ml No. ";O
 2024 CLS : PRINT AT og,oo;o;AT OJ,OO;"Input ";("Co Name " AND IN=OA)+("Dept    " AND IN=OB)+("St adr  " AND IN=OC)+("ct,St,Zp" AND IN=OD)+("1st Name" AND IN=OE)+("Tel Nbr " AND IN=OF)+("spare dta" AND in=og);"  or zz to quit.": INPUT T$: IF T$="zz" THEN LET IN=OA: LET O=MX: CLS : RETURN 
 2025 LET O$(O,IN)=T$
 2026 IF IN=OG THEN CLS : GO TO VAL "2030"
 2028 LET IN=IN+OA: GO TO VAL "2024"
 2030 PRINT AT OH,OO;O$(O,OA)'O$(O,OB)'O$(O,OC)'O$(O,OD)'O$(O,OE)'O$(O,OF)'O$(o,og)''"OK?  <Y> Yes, or <N> No": GO SUB IK: IF Z=OB THEN LET IN=OA: GO TO VAL "2024"
 2032 CLS : LET IN=OA: RETURN 
 2034 IF O$(O,OA)(OA TO OB)="zz" THEN GO TO ml
 2035 PRINT AT OE,oo;"Ml No. ";o''O$(O,OA)'O$(O,OB)'O$(O,OC)'O$(O,OD)'O$(O,OE)'O$(O,OF)
 2036 PRINT O$(O,Og)
 2037 PRINT '"Key ENT for Next": PAUSE oo: CLS : RETURN 
 2038 IF LEN O$(O,OA)<OE THEN RETURN 
 2040 FOR y=oa TO x: IF y=oa AND o$(o,y)( TO ob)="  " THEN RETURN 
 2041 LPRINT h$;o$(o,y): LET nn=nn+oa: NEXT y: GO SUB VAL "2046"
 2042 IF t$="y" OR t$="Y" THEN FOR y=oa TO od: LPRINT h$;n$(y): LET nn=nn+oa: NEXT y: GO SUB VAL "2046"
 2044 RETURN 
 2046 LET DD=SX: IF K=OA AND SX+NN>=LN THEN GO SUB PE: LET DD=OO: RETURN 
 2047 IF DD>OO THEN LPRINT : LET DD=DD-OA: LET NN=NN+OA: IF NN>=LN AND K=OA AND NN+OD>=LN THEN GO SUB PE: LET DD=OO: LET NN=OA: RETURN 
 2048 IF DD>OO THEN GO TO VAL "2047"
 2050 RETURN 
 2051 NEXT N
 2052 GO TO VAL "2000"
 2058 CLS : PRINT FLASH oa;AT oj,od;"Confirm DELETE MAIL FILE"; FLASH oo''TAB od;"<y> Yes or <n> No": GO SUB ik: IF z=oa THEN DIM o$(oa,oa)
 2059 GO TO fm
 2060 GO TO FM
 2061 GO SUB VAL "2586": GO SUB VAL "2572": CLS 
 2063 CLS : PRINT AT OH,OI;"Please Select"''TAB OD;"<1> TS 2040 Printer?"''TAB OD;"<2> Centronics Printer": GO SUB SQ: GO SUB IL: IF Z<OA OR Z>OB THEN GO TO VAL "2063": LET PR=Z-OA: IF PR=OO THEN LET lx=VAL "32": LET qq=oq: GO SUB VAL "9990": GO TO FM
 2065 GO TO 9997
 2066 CLS : PRINT AT oi,oo;"Turn Printer ON, Adjust Page,   Then ENTER": PAUSE oo
 2070 CLS : PRINT #4: LOAD "fm.C1"SCREEN$ : PRINT INK 6;AT 19,11;pg;AT 19,21;nn
 2071 INK og: LET gg=oa: GO SUB sq: GO SUB il: IF z=oo THEN GO TO VAL "3390"
 2072 IF Z=OF THEN GO SUB PE: GO TO FM
 2073 IF z=oe THEN GO SUB sp: GO TO fm
 2074 GO TO (z=oo)*VAL "3324"+(z=oa)*VAL "2000"+(z=ob)*VAL "2094"+(z=oc)*VAL "2083"+(z=od)*VAL "3004"+(z=og)*VAL "3370"+(z=oh)*VAL "3384"+(z=oi)*VAL "3300"+(z=oj)*VAL "3390"+(z=ok)*VAL "3394"
 2083 PRINT #4: LOAD "fo.C1"SCREEN$ 
 2084 GO SUB sq: GO SUB il: IF z=od THEN CLS : INPUT "Input Page Center";qq: GO TO VAL "2083"
 2086 IF z=oc THEN CLS : PRINT AT OJ,OA;"key ln lgth: ": INPUT LL
 2087 IF z=oe THEN GO TO fm
 2088 IF z<oc AND z>oo THEN LET sd=z
 2092 GO TO VAL "2083"
 2094 CLS : PRINT AT OJ,OD;"Type the Cap"''TAB od;"Line lgth limit is: ";LX: INPUT m$
 2095 LPRINT TAB qq-LEN m$/2;m$: LET NN=NN+OA
 2096 GO TO FM
 2110 LET IN=OA
 2112 CLS : PRINT "Enter Field Nbr to Correct,     or ""8"" for next field."''"Ml No. ";O''"Fields"'"1. ";O$(O,OA)'"2. ";O$(O,OB)'"3. ";O$(O,OC)'"4. ";O$(O,OD)'"5. ";O$(O,OE)'"6. ";O$(O,OF)'"7. ";o$(o,og): INPUT "Field Nbr or 8:";IN: IF IN=oh THEN RETURN 
 2120 CLS : PRINT AT oj,oo;o$(o,in);AT ou,oo;"npt ";("Co Name " AND in=OA)+("Dept    " AND in=OB)+("St adr  " AND in=OC)+("ct,St,Zp" AND in=OD)+("1st Name" AND in=OE)+("Tel Nbr " AND in=OF): INPUT T$
 2122 LET o$(o,in)=t$: CLS : GO TO VAL "2112"
 2550 PAUSE oo: LET t$=INKEY$: LET z=CODE t$-48: IF z<oo OR z>ok THEN GO TO il: REM * For Key 0 to 11
 2553 RETURN 
 2554 PAUSE oo: LET t$=INKEY$: IF t$<>"y" AND t$<>"Y" AND t$<>"n" AND t$<>"N" THEN GO TO ik: REM * For Key Y or N
 2555 LET Z=(oa AND t$="y")+(oa AND t$="Y")+(2 AND t$="n")+(2 AND t$="N")
 2560 RETURN 
 2567 IF IN 127=253 THEN GO TO BU
 2568 RETURN 
 2570 CLS : PRINT AT oj,od;"INPUT FILE NUMBER": INPUT t$: LET t$="MMRG"+t$+".B1": PRINT #4: SAVE t$ LINE 100: BEEP oa,oa: CLS : GO TO FM
 2572 PRINT #4: LOAD "cpr.C1"SCREEN$ 
 2575 FOR N=OA TO of: GO SUB SQ: PAUSE VAL "100": NEXT N: RETURN 
 2576 INK xa: PLOT oo,oo: DRAW oo,VAL "175": DRAW VAL "255",oo: DRAW oo,VAL "-175": DRAW VAL "-255",oo: LET xa=xa+oa: IF xa>of THEN LET xa=oa
 2578 INK xa: PLOT oh,oh: DRAW oo,VAL "159": DRAW VAL "239",oo: DRAW oo,VAL "-159": DRAW VAL "-239",oo: LET xa=xa+oa: BEEP oa/oj,VAL "40": IF xa>of THEN LET xa=ob
 2579 BORDER oo: INK og: RETURN 
 2580 BEEP .1,40: PAUSE VAL "20": RETURN 
 2582 BEEP OB/OJ,OD: BEEP OB/OJ,OH: BEEP OB/OJ,OJ: BEEP OB/OJ,OD: RETURN 
 2586 LET po=127: LET oo=0: LET oa=1: LET ob=2: LET oc=3: LET od=4: LET oe=5: LET of=6: LET og=7: LET oh=8: LET oi=9: LET oj=10: LET ok=11: LET ol=12: LET om=13: LET on=14: LET op=15: LET oq=16: LET or=17: LET os=18: LET ot=19: LET ou=20
 2588 LET tw=oo: LET xa=2: LET ln=54: LET nn=0: LET pg=1: LET pr=1: LET bu=2567: LET zc=5: LET sq=2576: LET fm=2070: LET sd=1: LET sp=2990: LET lh=2610: LET pe=3014: LET ik=2554: LET il=2550
 2590 DIM n$(og,31): LET n$(oa)="UPDATE Magazine": LET n$(ob)="1317 Stratford Ave.": LET n$(oc)="Panama City, FL 32404": LET n$(oe)="Bill Jones": LET n$(of)="904 871 4513": LET n$(og)="Sincerely,"
 2596 RETURN 
 2600 CLS : PRINT AT oj,oj;"SAVE Menu"''TAB 4;"<1> Save this Mail File"''TAB od;"<2> Save Program + File": GO SUB sq: GO SUB il: GO TO (z<oa OR z>ob)*VAL "2600"+(z=ob)*VAL "2570"+(z=oa)*VAL "2602"
 2604 CLS : PRINT AT OJ,OH;"INPUT FILE NBR": INPUT t$: LET t$="m"+t$+".A$": PRINT #4: SAVE t$ DATA o$(): GO TO VAL "2000"
 2990 LPRINT : LET NN=NN+OA: IF NN>=LN THEN GO SUB PE
 2994 IF sd=ob THEN LPRINT : LET NN=NN+OA: IF NN>=LN THEN GO SUB PE
 2996 RETURN 
 3004 PRINT #4: LOAD "pg.C1"SCREEN$ : PRINT AT 5,18;pg;AT 7,23;ln-nn
 3005 PRINT AT oe,os;pg;" ";AT og,VAL "23";ln-nn;" ": GO SUB sq: GO SUB il: IF z<oa OR z>od THEN GO TO VAL "3004"
 3006 IF Z=OD THEN GO TO FM
 3008 IF Z=OB THEN INPUT "Ent new lines to end. ";NL: LET NN=LN-NL: GO TO VAL "3004"
 3010 IF z=oa THEN GO SUB pe: GO TO fm
 3012 IF Z=OC THEN INPUT "Enter next pg No. ";PG: GO TO VAL "3004"
 3013 GO TO VAL "3004"
 3014 IF PR=OO THEN LPRINT '''';pg'''''''''''''''''': LET NN=OA: LET PG=PG+OA: RETURN 
 3016 IF NN<VAL "58" THEN LPRINT : LET NN=NN+OA: IF NN<VAL "58" THEN GO TO VAL "3016"
 3018 LPRINT TAB qq;PG: CLS : OUT PO,OL: LPRINT : LET PG=PG+OA: LET NN=OA: PRINT "Adjust Page, then ENTER": BEEP oa,on: PAUSE oo: RETURN 
 3020 CLS : PRINT AT oj,ob;"Install Data Diskette,"'TAB ob;"Touch ENTER": PAUSE oo: CLS : PRINT #4: CAT "",: INPUT "Enter TITLE of C ARRY,          (All between Quotes)";t$: PRINT #4: LOAD t$ DATA o$(): GO TO VAL "2000"
 3300 CLS : PRINT AT oj,ob;"Outline Fill": INPUT "Enter Nbr of Major Topics:";mj: INPUT "Enter Nbr of Sub Topics of each:";sb: INPUT "Enter Column width:";lgt: DIM k$(mj,lgt): DIM v$(mj,sb,lgt)
 3304 LET a=oa: FOR n=oa TO mj
 3305 IF n>mj THEN GO TO VAL "3320"
 3306 PRINT AT on,oo;"Ent Major Line #"; INK oe;n; INK of;" or zz to quit": INPUT k$(n): IF k$(n)( TO ob)="zz" THEN LET k$(n)="": GO TO VAL "3320"
 3308 FOR y=oa TO sb: PRINT AT on,od;"Minor";AT on,oq; INK od;y; INK of: IF y>sb THEN GO TO VAL "3316"
 3310 INPUT v$(n,y): IF v$(n,y)( TO ob)="zz" THEN LET v$(n,y)="": GO TO 3316
 3312 NEXT y
 3316 NEXT n
 3320 LET n=mj: LET y=sb: CLS : PRINT AT oj,ob;"Print the Outline now?"''TAB ob;"<y> Yes or <n> No": GO SUB ik: IF z=ob THEN LET n=mj: GO TO fm
 3324 CLS : INPUT "Input Tab for line print:";tz
 3330 FOR n=oa TO mj: IF k$(n)( TO ob)="  " THEN GO TO VAL "3354"
 3334 LPRINT TAB tz;k$(n)'': LET nn=nn+ob: IF nn>=ln THEN GO SUB pe
 3338 FOR y=oa TO sb: IF v$(n,y)( TO ob)="  " THEN GO TO VAL "3346"
 3342 LPRINT TAB tz+5;q$;v$(n,y)'': LET nn=nn+ob: IF nn>=ln THEN GO SUB pe
 3346 NEXT y
 3350 NEXT n
 3358 CLS : PRINT AT oj,ob;"Delete the Data?"''TAB ob;"<y> Yes or <n> No": GO SUB ik: IF z=oa THEN DIM k$(oa,oa): DIM v$(oa,oa)
 3360 GO TO fm
 3370 FOR n=1 TO oc: LET m$=n$(n): GO SUB VAL "3380": NEXT n: LET m$=n$(of): GO SUB VAL "3380": GO TO fm
 3380 IF m$(LEN m$)=" " THEN LET m$=m$( TO LEN m$-oa): GO TO VAL "3380"
 3382 LPRINT TAB qq-LEN m$/ob;q$;m$: LET nn=nn+oa: RETURN 
 3384 FOR n=1 TO 3: GO SUB sp: NEXT n: LET m$=n$(og): GO SUB VAL "3380": FOR n=1 TO 3: GO SUB sp: NEXT n: LET m$=n$(oe): GO SUB VAL "3380": GO SUB pe: GO TO fm
 3390 CLS : FOR n=oa TO VAL "200": ON ERR GO TO VAL "3392": PRINT "File No. ";n'O$(n,oa)'': NEXT n
 3392 ON ERR RESET : PRINT '' FLASH oa;"ENTER When Ready": PAUSE oo: FLASH oo: GO TO fm
 3394 CLS : INPUT "Input Last Name or Stock Noun   ";m$: CLS : FOR n=1 TO VAL "200": ON ERR GO TO VAL "3415": FOR y=31 TO 1 STEP -1: IF o$(n,1)(y)=" " THEN NEXT y: IF y=oo THEN NEXT n
 3396 LET b=y: FOR y=b-1 TO 1 STEP -1: IF o$(n,oa)(y)<>" " THEN NEXT y
 3398 LET a=y+1: IF o$(n,1)(a TO b)=m$ THEN GO TO VAL "3420"
 3400 NEXT n
 3415 ON ERR RESET : CLS : PRINT FLASH oa;AT oj,of;"File Name Not Present": PAUSE VAL "400": FLASH oo: GO TO fm
 3420 PRINT "File No. ";n''o$(n,1)'o$(n,ob)'o$(n,oc)'o$(n,od)'o$(n,oe)'o$(n,of)'o$(n,og)'': INPUT "<1> Continue Search- <2> Quit";c: IF c=1 THEN GO TO VAL "3400"
 3422 GO TO fm
 3430 INPUT "Field Number to Delete";x: FOR n=x TO 100: IF o$(n,1)(oa TO ob)<>"  " THEN NEXT n
 3432 LET a=n-1: FOR n=x TO a: FOR y=oa TO og: LET o$(n,y)=o$(n+1,y): NEXT y: NEXT n
 3434 STOP 
 4000 PRINT "File No. ";n''o$(oa)'o$(ob)'o$(oc)'o$(od)'o$(oe)'o$(of)'o$(og): PAUSE VAL "4e4": GO TO fm
 9980 ON ERR RESET : ON ERR GO TO VAL "9982": IF LEN o$(1,1)>1 THEN GO TO VAL "9984"
 9982 ON ERR RESET : DIM o$(1,1,1): GO TO VAL "2001"
 9984 ON ERR RESET : ON ERR GO TO VAL "9986": STOP 
 9986 ON ERR RESET : GO TO VAL "2001"
 9990 PRINT #4: OPEN #7,"LP": RETURN 
 9997 CLS : PRINT AT 10,0;"Printer Parameters Set"''"Touch Type of Interface"''"<1> Aerco or Oliger CPI"''"<2> TASMAN CPI"''"<3> A&J CPI"''"<4> TS-2040": GO SUB il: IF z<1 OR z>4 THEN GO TO 9997
 9998 LET z=z-1: PRINT #4: OPEN #(3 AND z<3)+(7 AND z>2),"LP": CLS : INPUT "Key <1> for Line Feed               <2> for NO line feed";lf: LET lf=10*NOT (lf-1): PRINT #4: POKE 16092,lf : INPUT "Key Maximum Line Length";lx: LET qq=lx/ob: PRINT #4: POKE 16090,lx: LPRINT : GO TO VAL "2066"

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.