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,seeandpaint(catalog, screen viewer and screen colouring),var,varsvandvarset(variable set-up, including Jones’ Gulf Micro letterhead), andinit/Init(printer and interface set-up for Aerco/Oliger, Tasman and A&J Centronics interfaces). Dbx.B6withsort.B6andsrch.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.B6withpgn.B6andxfr.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 outlinesO1/O2.A$andadd1/add2.A$, and a small demonstration mail filem1.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–15and19–25.A$, thet1–t4.A$tutorial on sequential files and theDta1/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.B2andsee.B2, plus the Udbm-side versions ofUptr.B6,Cdbse.B6,pgn.B6andxfr.B6.- Help screens (
.C4SCREEN$ files) and documentation filesPg*.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 thatDaisy.B6MERGEs, is not on any of the disks. The olderxx.B6shell callspe,pg,scopy,vcalcanddproverlays 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.B6will not find info files 10, 11 and 16, anddbase1.B6will not find the letter buffer it loads. A letter was also saved in the variables ofDaisy.B6,dbase1.B6andxx.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.
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 fmNote: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.



