Hybiscus: Daisy.B6 and Udbm.B6 (Larken Edition)

Developer(s): Bill Jones
Date: 1990
Type: Diskette
Platform(s): TS 2068

Hybiscus is Bill Jones’ office software system for the TS2068 with the Larken disk system: two large, coordinated program ensembles, Daisy.B6 and Udbm.B6, that load each other from disk. Daisy.B6 is a word processor and text database with a fast “turbo” typing buffer, full-screen editing with block cut and paste, menu-driven print styles and page formats, print macros for simple desktop publishing, outlines, mail merge and labels. Udbm.B6, the Universal Data Base Manager, creates and prints LKDOS sequential line, paragraph and page-macro files, and with its companion programs can convert and print almost any kind of TS2068 data file, including Tasword and Mscript files. This is a Larken (LKDOS) edition: it needs a TS2068 with the Larken disk interface and the LKDOS V3 EPROM, and it has not been converted for tape. It cannot run from tape, because the programs MERGE and LOAD their overlays from disk as they are needed and print through the Larken printer channel.

The package comes from Jones’ 80-track “Master Copy” disks, labelled “Hybiscus Software 80T by Bill Jones”: Disk #1 and #2 hold Daisy.B6, and Disk #3 holds Udbm.B6. It is the 1990 “Hybiscus” revision, in which Daisy and Udbm were tied together. Daisy.B6’s title screen reads “Copyright 1989 by Gulf Micro Electronics”, and Jones’ article on the disk calls Udbm.B6 “A New Issue Disk Software” for UPDATE magazine. Jones wrote in UPDATE (January 1991) that the system was made of five major programs, Daisy.B6, Dbx.B6, Udbm.B6, Uptr.B6 and Cdbse.B6, each able to run alone or chain to the others. Daisy.B6 grew out of Gulf Micro’s Smart Text. Jones’ 1989 manual, The Daisy System Software Ensemble, is on the site as a separate document. It describes an earlier revision.

What Is in the Package

Disk 1: Daisy.B6

  • Daisy.B6: the main shell, about 280 lines, with the turbo input/edit routine and roughly thirty menus held as SCREEN$ files (.C1/.C4): Function, Quickie, Office Tools, Format, Print Style, Load, Save, Delete and Utility menus.
  • Overlays that Daisy MERGEs and DELETEs as needed: inpt (input typing), edt (editor), wdpro (word-process print), usrpgm (disk print sequencer), repp (repeat print), tb (turbo modes), fomat (page format), stymn (dot-matrix print styles), otln (outline database), dc (disk coordinator and mail menus), pt, st, px, macro (print macros), word (global word replace), cat, see and paint (catalog, screen viewer and screen colouring), var, varsv and varset (variable set-up, including Jones’ Gulf Micro letterhead), and init/Init (printer and interface set-up for Aerco/Oliger, Tasman and A&J Centronics interfaces).
  • Dbx.B6 with sort.B6 and srch.B6: a record database used for form letters and labels.
  • dbase1.B6: D.Base-1, the database Jones published in UPDATE (July 1989).
  • Uptr.B6: the disk-file print sequencer, which prints up to 50 data files of mixed types as one continuous document.
  • Cdbse.B6 with pgn.B6 and xfr.B6: the Code ASCII file manager, which loads Tasword, Mscript and other code text files, prints them, paginates them into array files and converts other files back into Tasword or Mscript format.
  • xx.B6: an older, intermediate Daisy shell.
  • Information files 1–7.A$, tutorial outlines O1/O2.A$ and add1/add2.A$, and a small demonstration mail file m1.A$.

Disk 2: Daisy.B6 “Read Me” data disk

  • HELP.B6: shows the numbered info files one by one and prints them if asked.
  • Pmacro.B5: a print-macro demonstration that lays out the Daisy menu tutorial pages.
  • DTAPRT.B6: prints a Code ASCII file through the Larken printer channel.
  • Info files 1–9, 12–15 and 19–25.A$, the t1–t4.A$ tutorial on sequential files and the Dta1/Dta2.A$ sequential-file guides. Together they form Jones’ on-disk addendum to the manual.

Disk 3: Udbm.B6

  • Udbm.B6: the Universal Data Base Manager, about 300 lines, with a Macro Manager (page and screen macros), a Sequential Files Manager (paragraph, line and line-macro files), the Code ASCII file manager link and a Print Manager.
  • Labels.B6 (mailing-label printer), macro.B6, Init.B6, paint.B2 and see.B2, plus the Udbm-side versions of Uptr.B6, Cdbse.B6, pgn.B6 and xfr.B6.
  • Help screens (.C4 SCREEN$ files) and documentation files Pg*.A$, Sql*.A$, Sqp1/Sqp2.A$, 95.A$ and the same texts as Tasword (.CT) and Mscript (.CM) files. Sqp1.A$ is Jones’ article “The Universal Data Base Manager”, which invites clubs to use and convert the programs and gives newsletter editors permission to publish them.

A folder of extras from the 40-track Daisy #2 disk adds a newer Dbx.B6 with an extra menu choice, and the Pg1.A$ “Creating Page Macros” document. Every doc file from the four folders is also included as plain text. The 40-track set holds the same software spread over five disks.

Missing and Removed Files

  • lh.B6, the letterhead overlay that Daisy.B6 MERGEs, is not on any of the disks. The older xx.B6 shell calls pe, pg, scopy, vcalc and dpr overlays that are not present either.
  • These were working disks, and they held personal files: a customer list, letters, memory dumps of letters, a household utilities spreadsheet and a travelogue. They have been left out, so HELP.B6 will not find info files 10, 11 and 16, and dbase1.B6 will not find the letter buffer it loads. A letter was also saved in the variables of Daisy.B6, dbase1.B6 and xx.B6. In these copies its text has been blanked, and the programs are otherwise unchanged. One private record in the demonstration mail file has also been blanked. For these reasons no disk image is included.
  • The VU-CALC files on the disks (Psion’s code and Bob Mitchell’s VU-CALC notes) and the Larken system files (AUTOSTART, FORMAT.BO) are not included.

All files are TAPs carrying their LKDOS disk names, so they can be written back to a Larken disk. They were extracted from the original disk images and have not been converted or tested.

Related Products

Three integrated software programs that do most all administrative functions: word processing, data files management, mailing list, form letters, mailing labels, repeat printing, auto letterheads.
Word processor/database/interactive office utility program. It will work with the JLO video upgrade and an assortment of printer interfaces.

Related Articles

Update to program from October 1987 issue to print out the categories of an index after the program had sorted subjects by title.
DBASE-1 makes maximum use of the computer’s free memory, and coordinates disk drive to manage data base files.
Series of articles dealing with Bill Jones’ suite of word processing programs.
We continue discussion of Bill Jones’ suite of Word Processors for the TS-2068.
Let’s keep looking at Bill Jones’ Daisy Disk, Disk No. 1. Autoload brings up the version, which is used for input and edit of documents.
Welcome back !! Let’s get the FUNCTION MENU on the screen, by LOADing Daisy.B6 and pressing 3 2 1 y y y, in succession.
Welcome, guys and gals, to the next installment of daisy mae ueber alles, or “Daisy word processor is the best such software, encountered by us for the Timex-Sinclair 2068 computer and Brother 1109 printer”.
Look HERE, you guys !! We hear, that some of you have DAISY software, but are not following along in...
Good morning, fellow TSers. This issue, we approach the description of Bill Jones’ DAISY, the TS-2068 Software System for the LarKen Disk System.
Greetings, once again, to all us aficionados of the Timex-Sinclair Computer, model 2068.
The entry point for the daisy code that manages “Screen Macros” is line 2443. That’s where the particular menu is.
OK, guys, let’s start wrapping up the main commentary on Bill Jones’ suite of word Processors, that goes by the name of DAISY, by discussing typewriter mode.
Well, guys and gals, we have attempted to bring Daisy into the 21st century, by making better use of RAM and faster I/O operations.
This series of articles deals with Bill Jones’ suite of word processing programs, as customized for our computer system of TS-2068, LKDOS (L3) and 9-pin printer by Brother M-1109.
We continue to describe the operations of our new and improved Daisy word processor, using our TS2068, LKDOS (L3), and 9-pin printer Brother M-1109.
A cohesive set of applications for database management and word processing.
This is one of many selected Daisy.B6 program routines that will be excerpted and given to Public Domain.
Here we are going to discuss program SeqPar.B6, which SOL BBS uses in order to compose messages, to be uploaded to The Net or to other BBSs.
This neat program will work with any TS-2068 configuration, Including cassette, or disk systems (with modifications).
Often we get stymied by having a character array file having a wrong dimension for the job we want to do.
Program for complex printing options.

Related Content

Image Gallery

Source Code

  140 CLS : PRINT #NOT PI;AT NOT PI,NOT PI;"ARROWS=EDIT CAP+Sym Shf=Menu": PAUSE VAL "200"
  150 RANDOMIZE USR VAL "24355"
  158 LET a=PEEK 24314: LET b=PEEK 24313: LET c=PEEK 23560: LET a1=PEEK 24311+256*PEEK 24312
  160 ON ERR GO TO VAL "252": IF c=12 THEN GO TO 370
  162 IF c=13 THEN GO TO 150
  166 GO TO (c=96)*386+(c=7)*310+(c=8)*290+(c=9)*275+(c=10)*265+(c=11)*255+(c=12)*370+(c=13)*150+(c=14)*392+(c<7)*392
  235 POKE 23611,220
  238 IF PEEK 23611<221 THEN GO TO 238
  240 LET c=PEEK 23560: POKE 23611,220: IF c>31 AND c<>96 THEN GO TO 300
  250 GO TO 166
  252 ON ERR RESET : GO TO 150
  255 LET a=a-1: LET a1=a1-32: IF a<0 THEN LET a=0: IF a1<b THEN LET a1=b
  256 GO TO 301
  265 LET a=a+1: LET a1=a1+32: IF a1+64>LEN u$ THEN BEEP VAL ".2",VAL "14": RANDOMIZE USR VAL "24355"
  266 IF a>13 THEN LET a=14:
  267 IF LEN u$<a1-b+1-a*32+481 THEN PRINT AT 0,0;u$(a1-b+1-a*32 TO );
  268 IF a<14 AND LEN u$>a1-b+1-a*32+480 THEN PRINT AT 0,0;u$(a1+1-b-a*32 TO a1-b+1-a*32+480);
  269 IF a>13 AND LEN u$>a1-b+1-a*32+480+64 THEN PRINT AT 0,0;u$(a1+1-b-a*32 TO a1+1-b-a*32+480+64);
  270 PRINT AT a,b; OVER 1;"_";: GO TO 235
  275 LET a1=a1+1: LET b=b+1: IF b=32 THEN LET b=0: LET a=a+1: IF a>21 THEN LET a=a-1: LET b=31: LET a1=a1-1
  280 IF A1>LEN U$ THEN LET A1=A1-1: LET B=B-oa: IF B=-1 THEN LET B=31: LET A=A-1
  285 PRINT AT a,b; OVER 1;"_";: GO TO 235
  290 LET b=b-1: LET a1=a1-1: IF b=-1 THEN LET b=31: LET a=a-1: IF a=-1 THEN LET b=0: LET a=0: LET a1=a1+1
  295 PRINT AT a,b; OVER 1;"_";: GO TO 235
  300 PRINT AT a,b;CHR$ c;: LET u$=u$( TO a1)+CHR$ c+u$(a1+1 TO ): LET b=b+1: LET a1=a1+1: IF b=32 THEN LET b=0: LET a=a+1
  301 IF LEN u$<a1-b+1-a*32+481 THEN PRINT AT 0,0;u$(a1-b+1-a*32 TO )
  302 IF LEN u$>a1-b+1-a*32+480 THEN PRINT AT 0,0;u$(a1-b+1-a*32 TO a1-b+1-a*32+480)
  305 PRINT AT a,b; OVER 1;"_";: GO TO 235
  310 LET d1=(1 AND d1<1)+(2 AND d1>0): LET d2=(a1 AND d1<2)+(d2 AND d1>1): IF d1=2 AND d2<a1 THEN LET l$=u$(d2+1 TO a1+1): LET u$=u$( TO d2)+u$(a1+2 TO ): LET d2=0: LET d1=0: LET a4=1: GO TO VAL "390"
  312 IF d1=2 AND d2<a1 THEN LET d1=0: LET a4=1: LET d2=0: GO TO VAL "390"
  335 IF d1=1 THEN PRINT #0;AT 0,0; INVERSE 1;"Position Cursor to BLOCK END,   Then EDIT": PRINT AT a,b; OVER 1; FLASH 1;"_";: BEEP VAL ".2",15: LET b=b+1: LET a1=a1+1: IF b=32 THEN LET b=0: LET a=a+1
  336 GO TO 235
  340 IF d1=2 THEN LET a4=1: GO TO VAL "390"
  365 PRINT AT 18,0; INK 5;"ENTER = Resume - Caps+SYM=Escape`=Blk Insert - EDIT=Blk Delete. "; INK 7;AT a,b; OVER 1;"_"; INVERSE 0; OVER 0: RETURN 
  370 PRINT AT a,b;"_";
  371 IF a1>0 THEN LET u$=u$( TO a1-1)+u$(a1+1 TO ): IF a1>LEN u$ THEN GO TO 150
  372 LET b=b-1: LET a1=a1-1: IF b<0 THEN LET a=a-1: LET b=31: IF a<0 THEN LET a=0
  373 IF a1<1 THEN LET a1=1: LET b=0
  374 GO TO 301
  386 PRINT INVERSE 1; OVER 1;AT a,b;"::"; OVER 0;#0;AT 0,0;;"BLOCK INSERT"; INVERSE 0;" <1> To Insert L$                <2> Insert Typing": PAUSE 0: LET z=CODE INKEY$-48: LET a3=z: LET a4=z: IF a4<1 OR a4>2 THEN GO TO VAL "386"
  389 IF a4=1 THEN LET u$=u$( TO a1)+l$+u$(a1+1 TO )
  390 IF a4=1 THEN PRINT #0;AT 0,0;"                                                                ": GO SUB 365: GO TO 301
  391 PRINT AT 18,0;"Type the Insert, OR ERASE Quotesand enter String name to insert.": INPUT m$: LET u$=u$( TO a1)+m$+u$(a1+1 TO ): PRINT AT 18,0;"                                                                ": PRINT #0;AT 0,0;"                               ": GO TO VAL "301"
  392 ON ERR GO TO VAL "400": STOP 
  400 ON ERR RESET : GO TO (xy<oa)*VAL "2950"+(xy=oa)*VAL "3028"+(xy>oa)*ed
  498 CLS : PRINT AT VAL "10",VAL "2";"Please Stand By. . .": RETURN 
  500 CLS : PRINT AT ot,oo;"To Load the Code Ascci Mgr Pgm"''"40 Tr Disks use Daisy Disk #2": INPUT "Install Disk, Enter Disk #      Or- Enter <9> to Abort";z: IF z<od THEN PRINT #4: GO TO dd: PRINT #4: LOAD "Cdbse.B6"
  840 GO SUB VAL "495": RANDOMIZE USR m1: MERGE "tb.B6"
  900 ON ERR RESET : ON ERR GO TO VAL "902": DELETE VAL "842",VAL "877": STOP 
  902 ON ERR RESET : GO TO fm
 1800 CLS : INPUT "<1> MERGE Dbx <2> LOAD Dbx          Merge Retains Daisy Data";z: IF z=oa THEN PRINT #NOT PI;"MERGING . .": RANDOMIZE USR m1: MERGE "Dbx.B6": GO TO VAL "2001"
 1802 IF z=ob THEN PRINT #4: LOAD "Dbx.B6": GO TO PI
 2057 CLS : BEEP oa/od,zo: INPUT "Enter Program Disk #";pd: RANDOMIZE USR m1: GO TO pd: DELETE VAL "1810",VAL "2056": GO TO fm
 2060 INK 7: POKE VAL "23730",VAL "255": POKE VAL "23731",VAL "255": RANDOMIZE USR VAL "100": OPEN #4,"dd": RANDOMIZE USR VAL "100": MERGE "init.B6"
 2069 DELETE VAL "2061",VAL "2068"
 2070 ON ERR RESET : RANDOMIZE USR m1: LOAD "fm.C1"SCREEN$ : INK og: LET seq=oo: LET pg=oa: LET alt=fm: LET gg=oo: LET nt=nz: LET mzk=oo: LET rpr=oo
 2071 PRINT AT op,VAL "28"; INVERSE oa;ln;AT og,VAL "28";turbo;AT or,oz;~;AT os,oz;cp;AT oc,oz;("pica" AND ps=oa)+("Elite" AND ps=ob)+("Cond" AND ps=oc);AT oh,oz;lx;AT oi,oz;ll;AT ok,oz;tb;AT om,oz;qq;AT ot,og;pg;AT ot,op;nn;AT oe,VAL "26";("Yes" AND LEN o$(oa,oa)>oa)+("No " AND LEN o$(oa,oa)<ob); INVERSE oo: GO SUB sq: INK og: GO SUB il: IF z<oo OR z>ol THEN GO TO VAL "2071"
 2072 IF z=ok THEN GO SUB pe: GO TO fm
 2073 IF z=oi THEN BEEP ob/oj,ov: GO SUB sp: GO TO VAL "2071"
 2074 IF z=of THEN LET w$=u$: GO TO te: GO TO fm
 2075 GO TO (z=oa)*VAL "3416"+(z=ob)*VAL "2094"+(z=oc)*VAL "2078"+(z=od)*VAL "3579"+(z=oe)*VAL "4099"+(z=oh)*VAL "4050"+(z=og)*VAL "3910"+(z=oo)*VAL "2592"+(z=oj)*VAL "4090"+(z=ol)*k8
 2076 LPRINT ': LET nn=nn+oa: IF nn>=ln THEN GO SUB pe
 2077 RETURN 
 2078 GO SUB VAL "498": RANDOMIZE USR m1: MERGE "fomat.B6"
 2092 DELETE VAL "2080",VAL "2091": GO TO fm
 2093 DELETE VAL "2080",VAL "2091": GO TO VAL "8000"
 2094 CLS : PRINT AT oj,od;"Type the Cap"''TAB od;"Ln lgth limit is: ";lx: INPUT m$: CLS 
 2095 LPRINT TAB qq-LEN m$/ob;m$: LET nn=nn+oa
 2096 IF gg=oa THEN RETURN 
 2097 GO TO fm
 2098 CLS : PRINT AT of,oo;"Your Choices:"''"[1] Use Daisy Auto Print Menu"''"[2] Word Proc Dsk Files via         LOAD Udbx.B6 Pgm": INPUT "Input Choice";z: BEEP oa/od,oz: IF z=ob THEN PRINT #4: LOAD "Uptr.B6"
 2099 LET z=oo: LET lh=oo: LET gg=oa: LET spl=oo: LET te1=VAL "3742": IF turbo=oa OR turbo=oo THEN CLS : GO SUB VAL "498": PRINT #oo;"Printers MERGING": RANDOMIZE USR m1: MERGE "repp.B6": RANDOMIZE USR m1: MERGE "usrpgm.B6": RANDOMIZE USR m1: MERGE "wdpro.B6": LET turbo=(ob AND turbo=oo)+(oc AND turbo=oa)
 2180 CLS : LET rpr=oa: PRINT AT oo,oj;"Event # ";l: LET zp=zx: IF cp>oo AND z=oa AND nn>oa THEN FOR n=oa TO nn: LPRINT : NEXT n
 2181 CLS : REM LET m$="Large Header": GO SUB 2436: GO SUB sp: REM LET m$="Double Hi Header": GO SUB 2416: GO SUB sp: LET m$="Standard Header": GO SUB 2095: GO SUB sp
 2278 REM ** END of User Program Group.  Do not disturb AFTER.
 2280 ON ERR RESET 
 2300 IF lh>oo THEN GO SUB VAL "4090": GO SUB pe: GO TO VAL "2138"
 2400 IF spl=oa THEN GO SUB pe: LET nn=oo: GO TO VAL "2138"
 2401 IF lh>oo THEN LET z=ob
 2402 IF z=ob THEN GO SUB k4+t9: LET z2=z2+oa: IF lh>oo THEN LET z=oa
 2403 GO SUB pe: LET nn=oo: IF gg=oa THEN GO TO VAL "2138"
 2405 ON ERR GO TO VAL "2406": IF turbo<>ob AND turbo<>oc THEN DELETE VAL "2100",VAL "2174": STOP 
 2406 ON ERR RESET : ON ERR GO TO VAL "2407": IF turbo<>ob AND turbo<>oc THEN DELETE VAL "9000",VAL "9026"
 2407 ON ERR RESET : ON ERR GO TO VAL "2408": IF turbo<>ob AND turbo<>oc THEN DELETE VAL "2182",VAL "2277": STOP 
 2408 ON ERR RESET : ON ERR GO TO VAL "2412": IF turbo<>ob AND turbo<>oc THEN DELETE VAL "3742",VAL "3812": STOP 
 2412 ON ERR RESET : GO TO fm
 2413 IF IN po=253 THEN GO TO 2413
 2414 RETURN 
 2416 LET a=VAL "2413": LET ga=gg: LET gg=oa: LET qz=qq: LET qq=(qq AND cp<oa)+(VAL "34" AND cp=oa)+(VAL "87" AND cp>oa)
 2417 LET qq=(qq*VAL "96"/VAL "120" AND ps=oc)+(qq*VAL "96"/t8 AND ps=oa)+(qq AND ps=ob): GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "120": GO SUB a: OUT po,oa: GO SUB a: OUT po,VAL "27": GO SUB a: OUT po,VAL "77": GO SUB a: OUT po,VAL "27": GO SUB a: OUT po,VAL "119": GO SUB a: OUT po,oa: GO SUB VAL "2095": LET qq=qz: LET gg=ga
 2420 LET a=VAL "2413": GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "119": GO SUB a: OUT po,oo: IF cp>oo THEN LET ps=oc
 2422 IF ps=oa THEN GO SUB a: OUT po,zo: GO SUB a: OUT po,t8
 2424 IF ps=oc THEN GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "103"
 2425 IF ps=ob THEN GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "77"
 2427 LET lx=(t8 AND ps=oa)+(VAL "96" AND ps=ob)+(VAL "120" AND ps=oc)
 2434 RETURN 
 2436 LET qz=qq: LET px=ps: LET ga=gg: LET gg=oa: LET ps=1: GO SUB VAL "2420": LET qq=ou: LET a=VAL "2413": GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "119": GO SUB a: OUT po,oa: GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "87": GO SUB a: OUT po,oa: GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "107": GO SUB a: OUT po,oo: GO SUB VAL "2095": LET ps=px: LET qq=qz: GO SUB VAL "2438": GO SUB VAL "2420": LET gg=ga: RETURN 
 2438 LET x=1: LET a=VAL "2413": GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "107": GO SUB a: OUT po,ob: GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "119": GO SUB a: OUT po,oo: GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "87": GO SUB a: OUT po,oo: GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "120": GO SUB a: OUT po,oa: RETURN 
 2440 RANDOMIZE USR m1: MERGE "macro.B6"
 2442 CLS : INPUT "ENTER Data Disk #";dd: RANDOMIZE USR VAL "100": GO TO dd
 2462 DIM p$(oa): DELETE VAL "2443",VAL "2461": INPUT "Enter Program Disk #";dd: PRINT #VAL "4": GO TO dd: IF gg=oa THEN GO TO VAL "9667"
 2463 CLS : INPUT "<1> To Daisy Menu - <2> To Udbm";z: GO TO (z<ob)*VAL "2070"+(z>oa)*VAL "1010"
 2464 ON ERR RESET : IF gg=oa THEN RETURN 
 2466 GO TO (z>ob)*fm+(z<oc)*VAL "7002"
 2550 PAUSE oo: LET t$=INKEY$: IF t$="" THEN GO TO il
 2552 LET z=VAL "-48"+CODE t$: RETURN 
 2554 PAUSE oo: LET t$=INKEY$: IF t$="" THEN GO TO ik
 2556 IF t$<>"y" AND t$<>"Y" AND t$<>"n" AND t$<>"N" THEN GO TO ik
 2558 IF t$="y" OR t$="Y" THEN LET z=oa
 2559 IF t$="n" OR t$="N" THEN LET z=ob
 2560 RETURN 
 2570 CLS : INPUT "Enter Data Disk #";dd: RANDOMIZE USR m1: GO TO dd: RANDOMIZE USR m1: CAT ".B^",: INPUT "Input Nbr of SM File to SAVE";c: LET w$="SM"+STR$ c+".B1": RANDOMIZE USR m1: SAVE w$: RANDOMIZE USR m1: SAVE "cat.C1"CODE VAL "24311",VAL "265": GO TO fm
 2574 BEEP oa/ob,od: BEEP oa/ob,oh: BEEP oa/ob,oj: BEEP oa/ob,od: GO SUB sq: RETURN 
 2576 INK og: BEEP oa/oj,VAL "40": RETURN 
 2590: RANDOMIZE USR m1: MERGE "lh.B6": RETURN 
 2592 RANDOMIZE USR m1: MERGE "lh.B6": CLS : INPUT "<1> Just Let Head -             <2> Include Bus Block";spl: GO SUB (spl>oa)*VAL "4055"+(spl<ob)*VAL "4062"
 2596 ON ERR GO TO VAL "2597": DELETE VAL "4055",VAL "4088": STOP 
 2597 ON ERR RESET : GO TO fm
 2598 CLS : INPUT "Enter View Calc DD#": INPUT dd: RANDOMIZE USR m1: GO TO dd: RANDOMIZE USR 100: PRINT #4: NEW 
 2610 LET a=VAL "2620": GO SUB a: OUT 127,27: GO SUB a: OUT 127,69: GO SUB a: OUT 127,27: GO SUB a: OUT 127,77: OUT 127,27: GO SUB a: OUT 127,83: GO SUB a: OUT 127,1: REM set EMPHSIZE+ELITE+Subscrpt
 2612 GO SUB a: OUT 127,27: GO SUB a: OUT 127,43: GO SUB a: OUT 127,40: LET tb=6: LET ln=86: LET lx=40: LET ll=40: LET qq=23: REM set .1" line space - 86 Lines per page + vbls
 2614 RETURN 
 2616 LET qq=qq/ob: LET a=VAL "2620": GO SUB a: OUT 127,27: GO SUB a: OUT 127,87: GO SUB a: OUT 127,1: GO SUB a: OUT 127,27: GO SUB a: OUT 127,119: GO SUB a: OUT 127,1: GO SUB VAL "2416": REM set Expand height+Expand width+Col Center+get header print.
 2618 LET qq=qq*ob: GO SUB a: GO SUB a: OUT 127,27: GO SUB a: OUT 127,87: GO SUB a: OUT 127,0: GO SUB a: OUT 127,27: GO SUB a: OUT 127,119: GO SUB a: OUT 127,0: REM re-set Col center, cancel dbl hi, cancel dbl wide.
 2619 RETURN 
 2620 IF IN 127<>VAL "237" THEN GO TO a: REM check READY status of printer, wait until ready.
 2621 RETURN 
 2622 LET a=VAL "2620": GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "84": GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "119": GO SUB a: OUT po,oo: GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "87": GO SUB a: OUT po,oo: GO SUB a: OUT po,zo: GO SUB a: OUT po,VAL "43": GO SUB a: OUT po,VAL "66": RETURN 
 2926 ON ERR RESET : RANDOMIZE USR m1: LOAD "ed.C1"SCREEN$ : LET eq=oa: LET ep=oa: LET cx=LEN h$(oa): LET cz=LEN i$(oa): FOR n=oa TO og: LET ep=(n+1 AND CODE h$(n,oa)<>32)+(ep AND CODE h$(n,oa)=32): LET eq=(n+1 AND CODE i$(n,oa)<>32)+(eq AND CODE i$(n,oa)=32): NEXT n: LET ep=(ep AND CODE h$(oa,oa)<>32)+(oo AND CODE h$(oa,oa)=32): LET eq=(eq AND CODE i$(oa,oa)<>32)+(oo AND CODE i$(oa,oa)=32): LET sx=oc: LET qs=oc: LET d1=oo: LET sx=oc: LET w$="": LET s$="": LET xy=ob: PRINT AT or,oi;LEN u$;"  ";AT or,t3-od;(LEN h$(oa) AND ep<oh)+(LEN i$(oa) AND ep>og);AT os,ol;~;"  ";AT os,ox;LEN l$;AT os,od;ep;AT ot,od;eq
 2928 GO SUB sq: GO SUB il: GO TO (z>om OR z<oo)*VAL "2928"+(z=oa)*VAL "140"+(z=ob)*VAL "2930"+(z=oc)*VAL "3400"+(z=od)*fm+(z=oe)*VAL "2966"+(z=of)*VAL "3010"+(z=og)*VAL "9380"+(z=oh)*VAL "2968"+(z=oi)*VAL "2929"+(z=oo)*VAL "2600"+(z=oj)*VAL "3040"+(z=ok)*VAL "2440"+(z=ol)*VAL "3350"+(z=om)*VAL "3360"
 2929 POKE VAL "23658",(oo AND PEEK VAL "23658">oo)+(oh AND PEEK VAL "23658"<oa): BEEP oa/od,on: GO TO VAL "2928"
 2930 RANDOMIZE USR m1: LOAD "prt.C1"SCREEN$ : LET xy=oo: PRINT AT oc,ou; INK oe;"EDIT "; INK og: GO SUB sq: PAUSE oo: LET z=CODE INKEY$-VAL "48": IF z<oa OR z>ou THEN GO TO ed
 2932 IF z<>op THEN LET s$=u$
 2933 LET z1=z
 2934 IF z1<oh THEN LET u$=h$(z1)
 2935 IF z1>og AND z1<op THEN LET u$=i$(z1-og)
 2940 IF z1=oq THEN LET u$=a$
 2941 IF z1=or THEN LET u$=b$
 2942 IF z1=os THEN LET u$=c$
 2943 IF z1=ot THEN LET u$=d$
 2944 IF z1=ou THEN LET u$=e$
 2945 CLS : LET a=oo: LET b=oo: LET a1=oo: GO SUB VAL "365": GO TO m3+oa
 2950 IF z1<oh THEN LET h$(z1)=u$
 2951 IF z>og AND z1<op THEN LET i$(z1-og)=u$
 2954 IF z1=oq THEN LET a$=u$
 2956 IF z1=or THEN LET b$=u$
 2958 IF z1=os THEN LET c$=u$
 2960 IF z1=ot THEN LET d$=u$
 2962 IF z1=ou THEN LET e$=u$
 2963 IF z1<>op THEN LET u$=s$
 2964 LET s$=""
 2965 GO TO ed
 2966 LET u$="": GO TO m1+t5
 2968 CLS : PRINT AT ou,oo;"Input L$ Data to Insert Anywhere"'"during EDIT or Input Typing.": INPUT l$: INVERSE oo: GO TO ed
 3010 CLS : LET sx=oc: LET qs=oc: LET xy=oa: INPUT "View Ed? <1> H$ Db <2> I$ Db    <3> To Menu";z1: IF z1>ob THEN GO TO ed
 3016 LET a=(LEN h$(oa) AND z1<ob)+(LEN i$(1) AND z1>oa): IF a<ob THEN CLS : PRINT #oo;"No Data in the Data Base": BEEP ob,on: GO TO ed
 3017 BEEP PI/oh,on: PRINT #oo;"Input Start Cell # of "; FLASH oa;("H" AND z<ob)+("I" AND z>oa); FLASH oo;" DB for  View EDIT (1 to 7) ": INVERSE oo: PAUSE oo: LET y=CODE INKEY$-VAL "48": CLS : IF y<oa OR y>og THEN GO TO VAL "3015"
 3018 FOR n=y TO og: CLS : IF z1=oa THEN PRINT AT oo,oo;h$(n);
 3019 IF z1=ob THEN PRINT AT oo,oo;i$(n)
 3020 PRINT #oo;AT oo,oo; FLASH oa;("I" AND z1>oa)+("H" AND z1<ob);"(";n;")"; FLASH oo; INVERSE oa;"ENT for NEXT- or-"; INVERSE oo;" "; FLASH oa;"e to EDIT"; FLASH oo: PAUSE oo: LET t$=INKEY$: IF t$<>"e" AND t$<>"E" THEN GO TO VAL "3026"
 3021 CLS : LET s$=u$: IF z1=oa THEN LET u$=h$(n)
 3022 CLS : IF z1=ob THEN LET u$=i$(n)
 3024 LET a=oo: LET b=oo: LET a1=oo: LET d1=oo: GO SUB VAL "365": GO TO VAL "301"
 3026 NEXT n: GO TO ed
 3028 IF z1=oa THEN LET h$(n)=u$
 3029 IF z1=ob THEN LET i$(n)=u$
 3030 LET u$=s$: LET s$="": LET n=n-oa: NEXT n: GO TO ed
 3040 CLS : PRINT AT oj,ob;"Zap Which DB?"''TAB ob;"[1] H Data Base"''TAB ob;"[2] I Data Base"''TAB 2;"[3] Both"''TAB ob;"<4> None": GO SUB sq: GO SUB il: IF z=oa OR z=oc THEN DIM h$(og,oa)
 3042 IF z=ob OR z=oc THEN DIM i$(og,oa)
 3046 GO TO ed
 3350 CLS : INPUT "Load: <1> H or I Db <2> Var File";x: IF x<oc THEN INPUT "Install Data Disk, ENTER #";dd: RANDOMIZE USR m1: GO TO dd: RANDOMIZE USR m1: CAT ".A$",
 3352 IF x>oa THEN CLS : RANDOMIZE USR m1: MERGE "varsv.B6": GO TO VAL "9982"
 3354 INPUT "Load to? <1> H$ <2> I$ <3> Both ";r: BEEP oa/od,zo: INPUT "Enter File # ";z: LET z$=STR$ z+".A$": IF r<>ob THEN RANDOMIZE USR m1: LOAD z$ DATA h$()
 3356 IF r>ob THEN LET z=z+oa: LET z$=STR$ z+".A$"
 3357 IF r>oa THEN RANDOMIZE USR m1: LOAD z$ DATA i$()
 3358 CLS : INPUT "Enter Pgm Disk #";dd: RANDOMIZE USR m1: GO TO dd: GO TO ed
 3360 CLS : INPUT "SAVE? 1. H$ 2.I$ 3. Both 4. Vars";x: IF x>oc THEN RANDOMIZE USR m1: MERGE "varsv.B6": GO TO VAL "9902"
 3362 BEEP oa/od,zo: INPUT "Enter Data Disk #";dd: RANDOMIZE USR m1: GO TO dd: RANDOMIZE USR m1: CAT ".A$",: INPUT "Enter Save File #";m: LET z$=STR$ m+".A$": IF x<>ob THEN RANDOMIZE USR m1: SAVE z$ DATA h$(): IF x=oc THEN LET m=m+oa: LET z$=STR$ m+".A$": RANDOMIZE USR m1: SAVE z$ DATA i$()
 3364 IF x=ob THEN LET z$=STR$ m+".A$": RANDOMIZE USR m1: SAVE z$ DATA i$()
 3366 CLS : INPUT "Enter Pgm Disk #";dd: RANDOMIZE USR m1: GO TO dd: GO TO ed
 3400 CLS : IF cx<ob OR cz<ob AND ep>og THEN PRINT AT om,oa;"Inpt Para Lgth for ";("H$ array" AND cx<ob)+("I$ array" AND ep=oh AND cx>oa): LET mz=oo
 3402 IF cx<ob THEN LET ep=oa: INPUT cx: IF ~-cx*og<k4 THEN LET ep=oo: LET cx=oo: GO TO k3+m4
 3404 IF cx>oo AND ep>og AND cz<ob THEN LET eq=oa: INPUT cz: IF ~-cz*og<k4 THEN LET cz=oo: LET eq=oo: GO TO k3+m4
 3406 IF ep=oa THEN DIM h$(og,cx)
 3407 IF ep=oh AND eq=oa THEN DIM i$(og,cz): LET eq=oa
 3408 IF ep<oh THEN LET h$(ep)=u$: LET ep=ep+oa: GO TO VAL "3411"
 3409 IF ep>og AND eq<oh THEN LET i$(eq)=u$: LET eq=eq+oa
 3411 IF eq<oh THEN LET u$=""
 3414 GO TO ed
 3416 CLS : PRINT AT oj,od;"ELECT:"''TAB od;"["; INVERSE oa;"1"; INVERSE oo;"] Daisy DB Manager"''TAB od;"[2] Universal DB MGR": GO SUB sq: GO SUB il: IF z<oa OR z>ob THEN GO TO VAL "3416"
 3417 CLS : IF z=ob THEN INPUT "Enter Udbm.B6 Disk #";dd: RANDOMIZE USR m1: GO TO dd: RANDOMIZE USR m1: LOAD "Udbm.B6"
 3418 IF turbo=ob OR turbo=oo THEN RANDOMIZE USR m1: MERGE "edt.B6": RANDOMIZE USR m1: MERGE "inpt.B6": LET turbo=(oa AND turbo=oo)+(oc AND turbo=ob)
 3419 GO TO ed
 3579 RANDOMIZE USR m1: MERGE "st.B6": GO TO VAL "3580"
 3588 ON ERR RESET : DELETE VAL "3580",VAL "3584": GO TO k6+t5
 3589 DELETE VAL "3580",VAL "3584": GO TO fm
 3600 FOR a=3 TO LEN m$: IF m$(a TO a+2)="   " THEN LET m$=m$( TO a): RETURN 
 3602 NEXT a: RETURN 
 3700 RANDOMIZE USR 100: MERGE "pt.B6"
 3719 DELETE VAL "3701",VAL "3718"
 3741 IF turbo=oa OR turbo=oo THEN RANDOMIZE USR m1: MERGE "wdpro.B6"
 3814 IF turbo=oa OR turbo=oo THEN ON ERR GO TO VAL "3816": DELETE VAL "3742",VAL "3812": STOP 
 3816 ON ERR RESET : GO TO fm
 3900 CLS : PRINT #oo;"All Data Bases will be CLEARED  and the Udbm.B6 System LOADED.  <1> SAVE FIRST <2> LOAD Udbm": PAUSE oo: LET z=CODE INKEY$-VAL "48": CLS : IF z<oa OR z>ob THEN GO TO VAL "3900"
 3902 IF z=oa THEN CLS : PRINT #oo;"RE-SELECT after SAVE. ENTER": PAUSE oo: RANDOMIZE USR m1: MERGE "varsv.B6": GO TO VAL "9902"
 3904 CLS : INPUT "ENTER Udbm.B6 Disk #";dd: PRINT #4: GO TO dd: PRINT #4: LOAD "Udbm.B6"
 3910 CLS : PRINT AT 10,0;"<1> Print a Selected Memory File"''"<2> Word Proc With User Pgm Gp"''"<3> Word Proc 1-50 Disk Files": INPUT z: IF z<1 OR z>3 THEN GO TO VAL "3910"
 3912 GO TO (z=oa)*VAL "3700"+(z=ob)*VAL "2099"+(z=oc)*VAL "3914"+(z<oa OR z>oc)*VAL "3912"
 3914 RANDOMIZE USR m1: LOAD "Uptr.B6"
 4050 ON ERR RESET : RANDOMIZE USR m1: LOAD "ot.C1"SCREEN$ : LET zy=oo: LET zx=oo: LET zm=oo: LET mz=oo: LET az=oo: LET no=oo: LET nx=oo: LET z5=oo: LET df=oo: LET scp=oo: LET mm=oo: PRINT AT od,ow; INVERSE oa;"turbo=";turbo; INVERSE oo
 4051 GO SUB sq: GO SUB il: IF z>oi THEN LET z=z-og
 4052 GO TO (z<oo OR z>ok)*VAL "4051"+(z=oa)*VAL "840"+(z=ob)*VAL "500"+(z=oc)*VAL "6700"+(z=od)*VAL "2098"+(z=oe)*VAL "1800"+(z=of)*VAL "2598"+(z=og)*fm+(z=oh)*VAL "5400"+(z=oi)*VAL "2060"+(z=oj)*VAL "9666"+(z=ok)*VAL "3900"+(z=oo)*VAL "8120"
 4055 INPUT "ENT Date: ";n$(oj): IF mm=ob THEN RETURN 
 4056 INPUT "1st Name ";n$(oe)
 4058 CLS : PRINT AT oj,oo;"(Optional: Omit line with ENTER)": INPUT "Co Name ";n$(oa): INPUT "Dept ";n$(ob): INPUT "St adr ";n$(oc): INPUT "Cty,St,Zip ";n$(od): CLS 
 4059 IF gg=oa THEN RETURN 
 4060 LET pg=oa: LET nn=oo
 4061 IF lh=oa THEN FOR j=oa TO ok: GO SUB sp: NEXT j: LPRINT TAB qq-oh;n$(oj): LET nn=nn+oa: GO SUB sp: GO TO VAL "4073"
 4062 FOR t=of TO oi
 4067 LPRINT TAB qq-LEN n$(oa)/ob;n$(t): LET nn=nn+oa
 4068 IF t=oi AND spl=oa THEN RETURN 
 4069 IF t=oi THEN GO SUB sp: LPRINT TAB qq-LEN n$(oa)/ob+oj;n$(oj): LET nn=nn+oa: GO SUB sp: IF spl=oa THEN RETURN 
 4071 IF t=oi THEN GO TO VAL "4073"
 4072 NEXT t
 4073 FOR n=oa TO oe
 4074 IF mm<ob THEN LET m$=n$(n)
 4076 IF mm>oa THEN LET m$=o$(l,n)
 4078 IF n=oe THEN LET m$="Dear "+m$
 4080 IF n=oe THEN GO SUB sp
 4082 LPRINT TAB tb;m$: LET nn=nn+oa
 4084 IF n=oe THEN GO SUB sp: RETURN 
 4088 NEXT n: RETURN 
 4090 LET qq=(qq AND cp=oo)+(VAL "34" AND cp=oa)+(VAL "98" AND cp>oa): LPRINT : LPRINT : LPRINT : LPRINT TAB qq;n$(ok): LPRINT : LPRINT : LPRINT : LPRINT TAB qq;n$(om): LET nn=nn+oh: IF scp=oa THEN GO SUB k8+m2
 4091 IF rpr=oo THEN GO SUB pe
 4092 IF gg=oa THEN RETURN 
 4094 IF rpr=oa THEN RETURN 
 4098 GO TO fm
 4099 RANDOMIZE USR m1: MERGE "dc.B6": GO TO VAL "5160"
 5212 DELETE VAL "5100",VAL "5210": GO TO (z=oa)*VAL "2570"+(z=oj)*fm+(z=ol)*VAL "9666"+(z=om)*VAL "9898"+(z=on)*VAL "9899"
 5300 CLEAR VAL "65367": DELETE VAL "5226",VAL "5290": RANDOMIZE USR VAL "100": POKE VAL "16090",VAL "200": RANDOMIZE USR VAL "100": POKE VAL "16094",VAL "0": LPRINT : DIM v$(VAL "1737"): LET k$="01745.C2": RANDOMIZE USR VAL "100": MERGE "varsv.B6": GO TO VAL "9990"
 5401 RANDOMIZE USR m1: LOAD "pg.C1"SCREEN$ 
 5402 GO SUB sq: PRINT AT od,ox; INVERSE oa;pg;AT of,os;ln-nn; INVERSE oo: GO SUB il: IF z<oa OR z>od THEN GO TO VAL "5402"
 5404 IF z=ob THEN PRINT #oo;AT oo,oo; FLASH oa;"ENTER New Lines to PAGE END": PAUSE m1: INPUT LINE t$: LET nn=ln-VAL t$: GO TO VAL "5402"
 5406 IF z=oc THEN PRINT #oo; FLASH oa;"ENTER NEW PAGE NBR": PAUSE m1: INPUT pg: GO TO VAL "5402"
 5408 IF z=oa THEN GO SUB pe
 5410 GO TO fm
 5900 IF pr=oo THEN LPRINT ''''';TAB qq;pg'''''''''': LET nn=oa: LET pg=pg+oa: RETURN 
 5901 IF nn<ln+ob THEN LPRINT : LET nn=nn+oa: IF nn<ln+ob THEN GO TO VAL "5901"
 5902 IF cp>oo THEN GO TO VAL "5906"
 5903 LPRINT TAB qq;pg: LET nn=oo: LET pg=pg+oa: OUT po,ol: IF pr=oa THEN GO TO VAL "5913"
 5904 GO SUB VAL "5912": GO TO VAL "5913"
 5906 IF cp=ob THEN LPRINT TAB lx/ob;pg: LET pg=pg+oa
 5908 OUT po,ol: LET nn=oo: IF pr>oa THEN GO SUB VAL "5912"
 5909 LET cp=(oa AND cp=ob)+(ob AND cp=oa): IF cp=oa THEN LET qq=(VAL "34" AND pr=ob)+(VAL "34" AND pr=oa): LET tb=oh
 5910 IF cp=ob THEN LET qq=(VAL "92" AND pr=ob)+(VAL "86" AND pr=oa): LET tb=(VAL "66" AND pr=ob)+(VAL "62" AND pr=oa)
 5911 GO TO VAL "5913"
 5912 BEEP oa,ov: CLS : PRINT AT oj,ob;"Feed New Sheet, then ENTER": PAUSE oo: LET nn=oo: CLS : RETURN 
 5914 RETURN 
 6050 ON ERR RESET : CLS : PRINT AT VAL "10",VAL "0";"Complete DATA DELETE and LOAD ofVariable File was Ordered?"''"CONFIRM"''"<1> Yes  -or-  <2> No": PAUSE NOT PI: LET z=CODE INKEY$-VAL "48": IF z<oa OR z>ob THEN GO TO VAL "6050"
 6052 IF z=oa THEN GO TO VAL "9898"
 6054 GO TO fm
 6700 CLS : PRINT AT oj,oc;"Dbase1 is an independant"'TAB oc;"Program"''TAB oc;"Daisy Data will be lost."''TAB oc;"<1> Load Db1 <2>SAVE Dta"'TAB oc;"<3> Abort": GO SUB sq: GO SUB il: IF z<oa OR z>oc THEN GO TO VAL "6700"
 6702 IF z=ob THEN PRINT #oo; INVERSE oa;"Re-Select after Save"; INVERSE oo: BEEP oa/od,zo: PAUSE t6: GO TO VAL "9900"
 6704 IF z=oa THEN BEEP oa/od,on: PRINT AT ou,oo;"40 Track DD's use Disk #2,      Enter Drive #": INPUT dd: RANDOMIZE USR m1: GO TO dd: RANDOMIZE USR m1: LOAD "dbase1.B6"
 6705 GO TO fm
 7092 ON ERR GO TO VAL "7094": DELETE VAL "7003",VAL "7090": STOP 
 8000 CLS : RANDOMIZE USR m1: MERGE "stymn.B6"
 8114 ON ERR GO TO VAL "8115": DELETE VAL "8001",VAL "8082": STOP 
 8115 ON ERR RESET : IF z=oi THEN GO TO VAL "2078"
 8116 GO TO fm
 8120 RANDOMIZE USR m1: GO TO dd: RANDOMIZE USR m1: MERGE "otln.B6"
 8176 DELETE VAL "8121",VAL "8168": GO TO fm
 8200 LPRINT ''': LET nn=nn+ob: LET w$=u$: GO SUB te: RETURN 
 9380 RANDOMIZE USR m1: MERGE "word.B6"
 9492 DELETE VAL "9400",VAL "9488": GO TO (turbo=oa)*ed+(turbo<>oa)*VAL "3416"
 9666 PRINT #4: MERGE "px.B6"
 9697 DELETE VAL "9667",VAL "9696": GO TO fm
 9866 ON ERR GO TO VAL "9867": DELETE VAL "9822",VAL "9864": STOP 
 9867 ON ERR RESET : CLS : BEEP oa/od,oz: INPUT "Enter Pgm Disk #";pd: RANDOMIZE USR m1: GO TO pd: IF gg=oa THEN GO TO VAL "9667"
 9868 GO TO fm
 9898 RANDOMIZE USR VAL "100": MERGE "varsv.B6": GO TO VAL "9982"
 9899 POKE VAL "23298",VAL "22": POKE VAL "23299",VAL "8"
 9900 RANDOMIZE USR m1: MERGE "varsv.B6"
 9992 DELETE VAL "9902",VAL "9991": CLS : INPUT "Install PROGRAM DISK, Enter DD# ";dd: RANDOMIZE USR m1: GO TO dd: GO TO fm

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