SINC-LINK

VOL3 N0.4

JULY -AUG '90

SINC-LINK IS A PUBLICATION OF THE TORONTO TIMEX-SINCLAIR USERS CLUB AND IS ISSUED 6 TIMES A YEAR. COPIES OF THE NEWSLETTER ARE $1,50 EACH FOR NON-MEMBERS. CLUB MEMBERS RECEIVE FREE COPIES AS PART OF THE $20.00 ANNUAL MEMBERSHIP FEE. A NEWSLETTER SUBSCRIPTION ONLY IS A{/AILABLE FOR $22.00.

NEWSLETTERS ARE EXCHANGED, ' FREE OF CHARGE, WITH OTHER TIMEX-SINCLAIR USERS GROUPS.

PLEASE CREDIT THIS PUBLICATION AND THE AUTHOR IF YOU COPY MATERIAL.

THE CLUB MEETS ON THE FIRST WEDNESDAY OF EACH MONTH AT FOREST HILLS COLLEGIATE INSTITUTE, 7 JO EGLINTON A\/E. W. , TORONTO. START TIME: 7:00 PM.

SEND CORRESPONDANCE TO:

A t tenti an: SINC-L INK TORONTO TIMEX-SINCLAIR CLUB, 14 RICHOME SCARBOROUGH, ONTARIO, CANADA MIK 2Y1

EXECUTIVE OFFICERS:

PRESIDENT:

TREASURER:

SECRETARY:

ACTIVITIES:

TAPE LIBRARIAN ZX81:

TAPE LIBRARIAN 2068:

TAPE/DISK LIBRARIAN QL:

PAPER LIBRARIAN:

NEWSLETTER:

LIAISON OFFICER:

( Out-of-town members )

EDITOR USERS COURT,

TORONTO TlflEX-SINCLfllR USERS CLUB

(Area Code 416) RENE BRUNEAU ( 531-9749 ) BILL LAWSON ( 444-8772 ) GEORGE CHAMBERS ( 751-7559 ) RENE BRUNEAU ( 531-9749 ) LYMAN PAQUETTE ( 482-4479 ) RENATO ZANNESE ( 635-6536 ) HUGH HOWIE ( 634-4929 } JEFF TAYLOR ( 244-8583 ) JEFF TAYLOR ( 244-8583 ) GEORGE CHAMBERS, 14 RICHOME COURT, SCARBOROUGH. ONTARIO. MIK 2Y1 ( 416-751-7559 )

Editorial

About a year and a half ago I wrote that I had been saved from the frustration of having to rely on tapes to load the 2068 when I purchased a Larken disk drive interface. I was so happy at getting consistent loads and saves in a few seconds that I thought I had reached the ultimate in mass storage technology.

Well folks, I was wrong. Last week I completed my latest hardware project, popped on the chips, plugged it in and turned on the power. Presto! Instant loading and saving. No whirring drives, no external power supply, no worrying about protecting disks, no moving parts.

Of course, I'm talking about the Larken RAMdisk. The same load and save commands are used but the speed just has to be seen. One moment the computer's RAM is empty. Simply request a program from the RAMdisk and it's installed literally in the blink of an eye. For someone like me who is used to chattering disk drives, the silent and speedy execution of this marvel is a little e e r i e

One "of the other useful features of the RAMdisk is its battery back-up. When the 2068 is powered down, the programs stored in the the RAMdisk remain intact thanks to the onboard 3 volt battery. In fact, I could turn off my 2068, remove the RAMdisk from the edge connector, take the unit across town (or across the country), plug in into someone elses' 2068 and all the data stored on it would still be there for use.

I intend to install my word processing program, a modem program and a suite of utilities on the RAMdisk. With a capacity of up to 256K, several large programs can be put in place for use at any time.

Thanks to Ian Robertson and Rene Bruneau for lending me SRAM chips on short notice. I now intend to utilise the many programs George Chambers and Bob Mitchell have written for the RAMdisk and which are available in the club disk library.

The RAMdisk is not going to obsolete my disk drives but it is going to eliminate some of the drive usage and cut down on my reliance on disks as a storage medium.

Apology

Last issue I promised a review of Byte Power's "The Print Factory" . Well, I haven't learned enough of this excellent packege to do it justice, there are so many features. So you'll just have to wait at least one more issue before I produce the review. Sorry.

Did anyone notice the errors in the last issue? The one on the front cover was the most glaring, considering that I had mentioned another group with the same name but no hyphen. Some of the newsletters had their last few pages out of order. Again, sorry. Production problems. We have received some very nice letters commending the May - June issue. To those readers, thanks for taking the time to write.

That s all for now. . .

J.T.

SINC-LINK

2068

EOE ' S NOTEBOOK

This program was writ ten to keep track of several bank account balances. Note that it is intended only to track current balances. It is written to fit into one block usin-a the LKDOS system; thus it can be stored in RAIiDISK without wasting precious track space. It is entirely in BASIC and cannot be compiled as written due the use of the VAL tokens during calculations. This use of VAL strings is not recognized by Timachine but VAL numbers is.

Here is the listing with some comments and additional information at the end. In the listing and comments? the word TOTAL refers to a computation of balance amounts using designated formulae.

lea REH Bans Balances

Tf^H LET sS="

TO 173

1S50; OPEN nod

lia GC3 TO 2.50 120 JF S9i03$

130 FOR J=oa TO LEN s$ 14S IF S5Cj:: = %" THEN SO 150 NEXT J 1&0 LET S5=s$*"."

170 IF S5CLEN S5-oa)="=" OR S^s LSzH SS)='%" THEN LET S$=S5+"w"

1B0 IF s$CLEN S5-oa>="." THEN L ET S*=S*+"0"

1S0 Ir LEN siiooi THEN LET S5="

"+£*: SO TO 1-50

200 RETURN

210 PkINT Sgo : 'Ca I c :j I a t i n o "

FOR i =©a TO a2

LET fat=URL r$ii:: LET bt=IN T (bt*100+,5> LET -5=5TRs b t: SO SUB 120 LET t5Ci)=--== 24^ NEXT i 250 RETURN 2S0 RjSNDOnlZE USR , "dd" 279 ON ERR SO TO 2?^0 PRINT Uod: CLOSE Soc 290 Ir s=ob THEN CLOSE noiy ?^ Jl ^=-^c THEN OPEN noc,"P' w^i® ^='--^ THEN PRINT nod: OS>E

N «oe,"ip": f-'RINT Uod: POKE iF.gQ

320 CLS : PRINT " BRNK B«! «N

330 PRINT "1> Set Date d5 2. Na»e File",y$'"3> Save Fi le" ^4. ^ tan CSS " ' "5> CHRNSE HENU '

..^1.3^^^^ File" '"7> Set Di^ioia "i'r^C^^N" flNJ> s=ob.»4C TS2^4-i*"

> t ' ^ ' " ^" - =*-'^ '

34^ PRINT 555

?S*'7?*5^*^J™ Of. Press Choice KEvi^s " ^^^"^^ it=eODE IN

360 IF k ; LINE d$

370 IF i=ob THEN INPUT "n^sts> ^ max 5) ": LINE

3S0 IF |^=£h Tf^ ON ERR RESET

Li_i> : : STOP

390 IF k=oc THEN GO TQ 1020

3:r ?.=De !?i£iN SO TO 57g Ir- ^=c.f THEN SO TO i.50

=03 THEN INPUT "date?

4-30 Ir ii=.3g THEN INPUT i "diss J a y asode?"'"2=Screen 3=TS20i0 5= wide "2^:s: ±r s=GC THEN PRIMT S^i

4-4^ Ir ?.=.3D THEN PRINT sod: SO TO Od: PRINT sod" NEU

4-50 SO TO 250

4-t>0 CLS : CLEhR 55535: INPUT -S oa» many accts? imsx 10)":al- I«p LfT_"hous sany totals? c.-nas 7} :a2 ^ ±F al>i0 OR a2>7 THEN SO TO *S

4-70 LET 00=NOT PI: LET .3a=SSN ±: i-£T 0S:.=Ga*03: LET OC=Gb+oa- L ET od=ob+ob: LET oe=Oti+oa- LET o f=or^ocj_ LET .33=of-*-oa: LET .3.H=od -to it : t_tz I o z =0 h -i-o a : LET o J =oe -^o e

4-30 DIN C 5 sal, -213: DIH bCals r> -lH b5 Cal , G i } LJiH t s 132 , oi } : r>TH

95132.15) - --71

4-is0 DIH f5Ca2,5«>: LET Ls$="====

Cob.i =" LE

DIH S!5 foe ,-G f .i : LET ijCREEN" : LET ?n5 Cg C s ='T T_a* Coe t ="yir?E" i3l0 LSI? s=Gb: LET y$=".-=ni!" dS=-;^setd3te" : so ~Q 53©

rV-^ ^=?>3 TO 31: PRINT ijT*3B 2:C5ii-': NEXT i 530 FOR i =03 TO el

h$=oo THEn'ssD to 550 LET C5 4"i:* ,Db; c$Ci )

5S0 NEXT i : PfaJSE I00

t>70 CLi> : PRTiir - "BRNK 3kL«NCE S" "CHi^SE HENU" US -^^^ ^^S0_^RINT "1> Ha in HENU"' "2 > Re

.^f^^i^^T "3> TOTRL Hsm^s" "4.y ^^«^""'5> Balances" b3*%- -5 \"Press Choice Cl- 5i . PRUsjt: 00: !_ET li=CODE INKEY-5

560 PRINT RT

i -03

bl0 Ir j=Ga THEN SO TO 320 620 IF k-ob THEN 60 TO 520 -?f ^L - THEH SO TO 560

^ =-^-^ THEN SO TO S90 &50 Ir ?.=Ge THEN SO TO BI0 to70 SO TO 570

'-'^S PRI-NT ssjT Of;-B£»iK BRLRNCES "jD*. PRINT

690 FOR i=oa TO ai

J^s^S-SW^' = ' " ^'^^^

.zr^^S ^ '--"^ THEN PRINT Its; INU

u'^T^iUtm^^^ ^^'^^^^

WT Its^iisRr. G€J: c$Ci) ;TRB tb;b$Ci 730 NEXT i

74« PRINT SsiTRB O f +Od ; "TOTRLS" : -F'OR i=oa TO a2 750 PHINT #s;s5Ci ! ;TR3 tb;t5Cil 760 NEXT i

770 -i-S:_S_?>Gb THEN PRXHT Us ' ' ■' 780 Pkj.Ni #oo;Ri go ,00; "Press a ^ey": PhUSE 00: SO TO 320 810 CLS : LET tb=23: PRINT FO R i=Ga TO 31: PRINT i;TRB ob; c«s i ) ;TRB tb; b5 Ci > : NEXT i : FOR i =0

h*=oo Ti^H SO TO S50 320 LET b5:i:!=iiRL h$ 330 LET S5=STR5 bCi): SO SUB 12 0: LET bsii) =S5 840 PRINT RT i,tb,b*(i) SSa NEXT i 860 SO SUB 210 870 SO TO 320

SINC-LINK

(dank b^larices - cm-tj

2068

3^ ei_S : PRXNT "Fnter all ents as bCx> a?here x is irie

acct nusberr""': FOR i =oa Tis 32 : PR3>rr i;T3B 0£;f5iiJ: ?ezXr i

900 FOR i =03 TO 32

gi« iMPirr

PRUSE 60: UH SljOa; "Enter POKE 23607.2

RT oo,oo; T"liTiVliIiri-7i;

. E i-XHE h5: XF DO

DE h$=00 TrSH «3 TO S4.@ 920 UET

330 PRXHT RT S3+Ci*Gb) ,OC: f*Ci)

340 HEXT i _ _

350 GO SUB 21«: GO lO 3H0

960 CLS : FiM? i =0 3 TO a2: PRXNT

i;TfS Ob;35Ci>: HEXT i

970 FOR i=03 TO a2 ...

360 Xj^UT RT GO, go; ("fHHlBSinL aEESaE ";!)■ LXHE h$: XF CG&c: h$=00 THEN GO TO 1000

3^ LET 95*

1000 PRINT RT i -oa ,ob; g$ is 5

1010 HEXT i: PRU5E 100: t?0 5 1* t:.7 0

1020 XtS^tn" "drv? C 0-4-5 ";-drv: ?-'R 3KT Sod: SO TO drv - 1030 ON B?R SO TO 3005: pRlf^T so d: SAVE yS+"-31" 3005 ON ERR Rt^:-ET :

EfW 60 TO 301» 3010 Ci-S : PRINs RT

passufo rd " 3015 POKE 2365«,00: 50

3017 X"^!f^_!rP^^

3013 PuKt -fr^xs% / , t50

3O20^XF p$="passu>Of OR_p*= u:.i

OCk" THEN CL^i- : ON EkR RSztsET :

O TO 260

3030 ON ERR GO TO 3005 904« STOP

Once entered into the 2068 and saved, reset the computer, reload the file and initialize it using option 6 on the MAIN MENU to erase all data and variables in the file.

Enter the number of bank accounts (up to ten) that you wish to track. These could include bonds, chequing and savings accounts, RSP accounts, etc. There is room for 21 characters uihen describing each account (bank, acct number, type of account, etc). See example a.

Next, enter the number of TOTAL'S you want to calculate (up to seven). Establish the names of these TOTAL groupings (option 3) and then develop the formulae for these (Option 4). See R Uimplt? b.

The balance for each account is stored in numerical array b( ); a grouping might be b(l)+b(3) or b(l)*1.2. There is room for 50 characters in these formulae. See example c.

Finally, enter the bal?.ncr=i ^ ption f □n the CHANGE MENU). DO NOT ENIER BALANCES UNTIL OTHER OPTIONS HAVE BEEN ENTERED. You can view your balance sheet on the screen, TS2040 or Wide Printer. (Option 4 on the MAIN. MENU).

The program uses ON ERR which has to be handled gingerly to avoid a lock-up, so I have built in two escape routes; this is particularly useful during altering or de-bugging the BASIC. One is at the MAIN MENU where pressing <8> will do an ON ERR RESET and LIST the file; ^■he other is at the end of the listing (lines 9005 to 9040) which allows you to hold down the BREAK key to get back to BASIC. Even so, make sure you save your balance sheet before playing around with the program. If you want to take out these escapes, delete line 380 and delete <,PAUSE 60> in line 9005.

While you are looking at those lines, note line 9020 which contains the password privacy codes. You can replace Yhe two codes with anything you like. This does not provide full security for your information because anyone familiar with the LKDOS system can break in during 'he LOAD function. You could also read the data using Disk Doctor. However, these codes offer a reasonable degree of privacy.

When changes are made to any data, the current data are listed on the screen and a prompt is shown at the bottom to Pnter new data. If an item is correct as displayed, simply press the CENTER! key to step to the next item. This technique is used several times, ie, at line 520 for name and acct i.d.; at line 890 for TOTAL formulae; at line 810 for balances and at line 960 for TOTAL names.

The following techniques are used to display data on the screen as quick., is possible:

1) Justification to express amounts in dollars and cents is performed at line l-'O iL.i^-h decimal points being aligned and any necessary trailing zeros added; formulae are evaluated at line 210 to 2^0; these subroutines are located early Tn the listing to cause the least delay. Note line 230 which in evaluating the string f$ ensures that only two decimal places will be displayed. Remember, at every GO SUB command, the TS2068 starts at the first line and looks for the 60 SUB line number so the earlier it finds it, the quicker the results.

2) all calculations are performed at the time the changes are entered; leaving them to the time of display would speed up entry time but slow down the display.

SINC-LINK

2068

Now, some more notes on specific lines:

270 ON EPR GO TO de-9ctivates BREAK key; ON ERR RESET r3-fictivats= It.

290-310 LKDOS printer codes are set up depending on value of 's> determined in line 430.

320-450 MAIN MENU: Includes current status information (date? file name, display device. Line 440 as written reloads an autostart program in RAMDISK and may be changed to suit (or ON ERR RESET: STOP).

460-560 RESET FILE: This lets you start a fresh file. Line 470 sets variables for numbers 1 to 10 to save bytes. Arrays are established: c$ (acct names); b (numeric balances for computation) b$ (balances derived from b( ) and Justified for display); f$ (TOTAL formulae for computation; g$ (TOTAL names); t$ (TOTAL values derived from f$( ) and justified for display).

680-730 DISPLAY BALANCES: Lines 710 and 720 change display for wide printer. The LKDOS printer driver does not like INVERSE in LPRINT statements or indeed any attribute commands such as PAPER, INK etc. Was thi= an oversight, Larry Kenny 7

910 ENTER TOTAL FORMULAE: You may use all the arithmetic functions here, le, add \+ ; subtract <- ; multiply v*>, etc.

g TD100 Cheqsjing

^ - ' ••

S CT RSP

Cash on hand

Tn v<x^ i g&^n i s.

$U5 i n $C^M Ne t yo r t h $CRN

Ex asp t c h

1 bCl) -fbC2) +bC3)*l.

2+bC4.)

2 k(5}-fbCS)

3 bC3)

5 b ti) -i-b (2) -i-b i3) (6)

2-fb (4>) -fbCS) -fb

Example c

QL "TI^Y- XT"

This ONE-LINER is rather peculiir.

'copy con to ser '

The cursor Mill disappear, and anything you type Mill go straight to the printer Nhen you press <ENTER> provided your printer is attached to serl. HITHOUT APPEARIHB ON THE SCREEN Mhile you are still in this lode, try 'Irun xxxxjoeething', and the coiiand goes to the printer I Using SCR instead of CON Mill give you 'Bad nate'. As I understand it, SCReen Morks as a display device, Mhereas CONsole, acts as a separate teriinal.

To break out, press CTRL-SPACE.

Try it !

HiHtHi

SINC-LINK

5

QL

SOME POPULAR MISCONCEPTIONS (Mostly about filenames).

From time to time I read in an article or letter about the QL statements that I know to be untrue or at least misunderstood. Sometimes the same misconceptions occur over and over again. The following comments arise from a recent (Jan 90) issue of QL World and the final issue of a US newsletter called Quantum Levels, which started with high hopes as a bimonthly in August 1986 but only managed 12 issues in three years.

Basic Filenames.

Many people seem not to realise that there are two ways of presenting QDOS commands with filenames, and that the rules for allowable characters differ between them. In each case there is a limit of 36 characters in addition to the five which define the device (e.g. mdv2_).

1. The normal method of supplying a "parameter" consisting of unadorned ascii characters when only normal letters, numbers and the underscore character are accepted, e.g. LOAD mdvl_jny_j)rogl.

2. QDOS will also accept strings, otherwise it would be almost impossible to write file handling programs. (I think early versions of the QL only worked this way. ) By a string I mean

i. a set of characters in quotes e.g. SAVE "flpl_!@#$",

ii. a string variable to which a string of characters has been assigned e.g. COPY a$,b$

iii. a string function e.g.

MERGE dev$&"_"&p$&CHR$(233). In these cases the only restriction is that the first five characters must be a legitimate device name followed by an underscore, the rest can be anything you can type in at the keyboard, and even unprintable characters (use CHR$() as above). Thus you could create files with unprintable names that would be almost impossible to delete without reformat ing the medium - if there were any point to this! Some commercial programmers have used filenames consisting entirely of spaces, which are invisible in a normal listing - I once discovered one on a disk someone sent me that read "FORMAT flpl_: FORMAT flp2J' that was named " "; luckily I discovered it using my Ftidy program before it was activated.

As far as I can see these rules apply to all commands that take filenames in the QL ROMs and in Toolkit II, such as RENAME.

FORMAT also works in the same way as far as medium name is concerned; that's how they got the date in the form 9\9\86 on the early mdv cartridges.

6

SINC-LINK

QL

You can even put one totally nameless file onto each medium; e.g. SAVE flpl_ creates such a file. The file can be BASIC, text or machine code, and is available to any of the commands referring to a single file name. However, DIE, and any commands or programs which make use of the directory, fail to recognise the file at all. If you suspect such a file may be lurking about on one of your disks /cartridges you can reveal it by COPY flpl_,mdv2 .secret (or something similar - COPY flpl_,scr_ also works). If a file called "secret" appears on your target device, then it is secret no more and now available to all the normal manipulations.

P.qinn Filenames.

It is fairly common to read that Quill files must have the extension _doc, export files must have the extension _exp etc. , This is not so, these are merely the defaults that the Psion suite uses if provided with nothing else. While you are restricted to a maximum of eight normal letters and numbers for the main part of the name and there must be a thre character extension you can use any three characters that can be obtained from the keyboard for the extension. You must, however, type them all in when you want to save or load the file; "letter_@#$" is quite acceptable as a quill file name for example. You can import any ascii text file into quill too, but it must also fit these rules, so you may have to COPY it to a regulation filename (or rename if you have the facility. ) It is the file header itself that distinguishes quill files from abacus files etc. and not the extension as is often thought. I use a three character date code on all my letters e.g. Michael_B12 means a letter to Michael written on November 12*^ (to me at any rate!)

Morft P-c^ion tricks

Shift + F5 refreshes the screen in all the programs, but for some reason is undocumented. (Much better than F2 twice ! )

Have you discovered that CTRL + down-arrow deletes from the cursor to the end of the line, and CTRL + up-arrow from the cursor to the beginning of the line?

Howard Clase, e-mail: hclase@kean. ucs. raun. ca. bitnet

Box 9947, Station B, St John's, Newfoundland, CANADA, AlA 4L4.

Tel:

(N. Am.) (709) 753-6415 (O.K. ) 0101 709 753-6415

1990.04. 10

SINC-LINK

323 1/2 N. Church Street Bowling Green, OH 43402 March 20, 1990

Dear George,

Being a mathematician, I tend to do a lot of fooling around with DEF FN and FN. You may have seen my letter on some of the stranger examples in ZX Computing about 3 years ago. Those weren't exceedingly practical - they took too long to return an answer. But they were intended to illustrate just how much you could actually do with the DEF FN command. If written in the normal way, they would have taken several lines.

If you want a simpler (and more useful) function, try this one out:

1 DEF FN l${a)=(" > "+STR$ a)(LEN STR$ a TO)

This function produces a string of 11 characters which ends in the value of the variable a. In other words, it could be used for left- just if ying numbers, if you want them to line up in nice columns. If you will be using relatively small numbers, you could drop a few of the spaces - just make sure there is one less than the final length you want.

I have in various places collections of dozens of DEF FN functions, though as I said most of them are not necessarily practical. Oh, if you are trying to figure out why a DEF FN might take a bit of time and can't find the letter in question, it is because the functions involved something called recursion, in which a function may call itself several times in order to obtain an answer. Naturally, the more times the function has to call itself, the longer it takes. It is a sophisticated approach which lets you put the equivalent of a FOR/NEXT loop in a function, but it is somewhat tricky as well. Among other things, you have to design the function very carefully to avoid being caught in an endless loop.

I should give you an example. Some of the more sophisticated computers have a built-in function called INSTR. This function takes as parameters 2 strings and a number, and returns a number which is the first occurence of the second string in the first string, after the position corresponding to the number. If it isn't found, a value of 0 is returned.

As a subroutine, such a function would look like the program below. Here, a$ is the first string, b$ is the second string, and s is the number input, and pos is the result.

1000 FOR i = s TO LEN a$-LEN b$+l

1010 IF a$(i TO i+LEN b$-l)=b$ THEN LET pos=i: GOTO 1030 1020 NEXT i: LET pos=0 1030 RETURN

That is actually quite a lot going on there. If it were written on another computer, I would have had to include one more IF to be sure s<=LEN a$-LEN b$+l, I would have to be sure a$ was long enough to possibly have b$ in it. On our computers, if s is too big, it will automatically skip the loop.

SINC-LINK

To do the same thing in a single DEF FN statement is complicated, of course, but it can be done. I have to specifically check all the possibilities. And I have to also use the VAL function to make sure I can get out of the loop. If I referred to the function directly, there would be no way out of the recursion.

So, without further ado, here it is:

5 DEF FN p(a$,b$,s )=VAL (VAL$ ({"(""s"" AND a$(s TO s+LEN b$-l)= b$)+(""FN p(a$,b$,s+l)"" AND a$(s TO s+LEN b$-l)<>b$)") AND s<= LEN a$-LEN b$+l )+"+""""") +"+0" )

As I said, it is extremely complicated. One thing that makes it especially complicated is that I have to make sure that if s>LEN a$-LEN b$+l it will not attempt to evaluate any of the subscripted strings. The " + """••" and "+0" are there to avoid errors trying to evaluate an empty string. Let me try and walk through it for you.

There are 3 cases to consider. If s is too big, the whole thing collapses to VAL (VAL$ ("+""""") +"+0" ) . The VAL$ produces an empty string - it evaluates the string - so that the VAL

only evaluates +0 to get 0. That is as it is supposed to be. If s is small enough, then the VAL$ recieves the string "(""s"" AND a$(s TO s+LEN b$-l ) =b$ ) + ( ""FN p(a$,b$,s)"" AND a$(s TO s+LEN b$-l)=b$)+""""" . Of course, the first and last quote are removed, and all the double quotes are converted to single quotes .

This is where the other two cases come in. We already know that s is small enough. If at that location, we can find b$ in a$, the VAL$ simply produces "s", which has 0 added to it and is evaluated to give the answer. If b$ is not at that location, the VAL$ produces "FN p(a$,b$,s+l ) ", which the VAL then evalutes to determine if b$ can be found at the next position (and the next, and the next, until we hit one of the other cases).

I admit, this is a rather extreme example, and hence will evaluate slowly if it can't find the answer the place it checks. I presume if a$ was too long, it might actually produce an Expression too .complicated error. Needless to say, that is not a problem with using an actual subroutine.

Anyway, enough fun for one day. That particular function I think I would never try and put to any practical use, but would instead use the subroutine. There are examples where the subroutine is less practical or almost impossible where this could be done, but they are unusual mathematical functions which might take too long to explain. Oh, needless to say, even the more sophisticated computers would have trouble handling.

I have not recieved the March issue of Sine-Link yet, but I presume it is about as slow as usual and I will get it in the next couple of days. I'll be mailing this from Windsor, where I am spending my March Break, so I won't really know if I got it for a little while anyway. Take care, and Peace!

P.S., I just finished checking it out. I originally had one too many "(" in the DEF FN, but I have corrected it. And it performs as billed. If you were to use it to search a string of about 150 characters for the last character, it would take sincerely/ roughly a minute-. Actually, that isn't quite as bad as I expected, but it seems longer than it actually is. ^ ^.^

SINC-LINK

This pa0e was printed with the 2068 in SPECTRUM mode on a Panaeofiic KX-PU80 9-pin printer, using the WORD-MASTER suite of programs from Britain, tf this is the first time you have seen such output, then, Uke ine, i am sure you are impressed. If word processing or Desk Top Publishir^ is your requirement, this review is of interest to you.

In mg humble opinion, this is the best word processing padcage avallaMe for the SPECTRUM emulated 2068 today. I have used MSCRPT and have had a fleeting try at TASWORD I. MSCRPT is a very good program and, as a word processor may be slifihtly better than WORD-MASTER, but with the graphics capabiUty and the other features avaUabie through the extension programs, WM wins hands down.

First of all I will discuss WM Itself. Its major difference from the other programs is the flie handUng capability. It aUows more than one file in RAM at C*t can be many more, <*8pendlng on size, up to the avallable 2gkX These may be ottier text flies (created %vith ottjer- word processors like MSCRPTX graphic Hies (mag be amkms with artist type prom an IB Uke ART STUDO, wWch was used to create the graphic of our favourite computer), fonts (user defined or otherwiseX or other WWcations programs that operate with WM (to allow its anf»zlng output), it also allows several text f Ues to be linked to form one larger file.

As a word processor, WM has aU ttte required amenities, or is *«**ng in only minor points. The features include:

2068

ByLiooelllKeqiiDg

T9 tea

c. change drives

d. get a flle already in RAM

e. delete a file from RAM

f . erase a flle from disk

g. catalogue the drive

h. link flies

2. Fitt Optiona:

a. alter screen columns from 16 to 64

b. alter screen colours c delete all but ASCI codes

in a flle

d. find a selected page in the

flle

a save or rename the current file

f. exit to main flle handling screen

g. exit to print options

h. begin %vritir«

3. EcSt Options:

a insert and typeover modes t>. Insert command lines (or non printing comments) to control special options (see 4 below)

c fast scroll through text

d. Imbed control characters into text (much easier than MSCRPT)

e. isiderline words (visible on screen)

f. delete / undelete %vord or

line

9. block move, copy, delete, save

h. search / replace with or without auto replace and case sensitivity and with a "smart" feature that will search on a lowercase string but capitalize the first letter at the begining of a sentence!

"targe", or "normal"

c change Justiflcatlon by simply typing "All", "centre". Vight", or "left"

d. change margins ("margin nn". nn in lOths of an inch) or columns rcolunrvi nn", nn between 16 and 255)

e. define up to 7 special characters which may be used to print othenvise unavailable characters

f. send printer control codes using "Iprint n^-" (up to 16 codes per line)

0. select "wMe" (double spacing, flU Justification)

h. "reset" the printer

L force a page break using "form" for form feed

j. select "draft" or "nlq"

5. Graphic Prlntino:

a. print a graphic, from BAM, with the text

b. vary the width and height of the jraphlc when printed

c print text to left or right of the graphic

d. print graphic with shading to approximate colours

^ Fitt Handing:

& create a flle b. load a flle (including SCREENt) from disk or t^

Command Unas:

a place non printing comments In text

b. change pitch by typing -elite", "Pica", "condensed".

B. Hoodora and Footero:

a create headers and footers which may be called up from RAM to print in the document

b. move the printhead to a selected line before printing

c styles and pitches In 'waders and footers ^r^f^epenOent of the main document

d. send conb-ol codes within the header or footer

e. print header or footer to left or right of. the page

f. print page number In Swatter or footer (or in nr^ain text)

7. Prmt Optiona:

a set number of lines per page

b. set form feed on or off c use fanfold paper or single sheets (with prompt for next sheet)

d. select page number start a print selected pages

SINC-LINK

2068

r. set line spedno.

As you can see, the features are numerous. To help you keep track, WM prints two or three lines at the bottom of the screen to remind you which mode you are in and which keys perform the functions. For example, %vhile writing, the information lines tell you if Caps Lock is on, whether you are in Insert mode, how many columns are displayed, if fast scroU is on, that [Shift 9 - GRAPHCS3 ylves printer control opttons. that [Shift 2 - HXT2 calls up the delete options, that [Sym Sh W - DRAW] enables the block function and that [Sym Sh E > ?EM] alkiws the search function. It also tells you the number of %^ds in the document (at the last save), the number of characters, and the amount of free RAM or other information, dependino on the feature selected.

There are similar help lines for the other options, inckjdino the PRMT mode, RLE HAMXM6 mode. RLE CFTIONS mode, DB.ETE options, and BLCX3C options.

All In all, the features are very extensive and the program is relatively easy to use, but, as with any software with so many features, it takes a bit of gettino used to (ever try using WORDPBV=ECT on an BM without something to tell you what all the function keys mean?!).

If the foregoing were the only benefits of WM, you would probably be as well off with MSCRPT, except for its lack of graphics capability. However, it Is the extension programs that

make this whole thing worthwhile.

There are two nrtajor programs that make this package work. They are TYPBJNB^ and HEAOUNBV TYPBJNER Is the desktop publishing program that produced this page after it was typed with WM. HEAOUNER is a graphic creation program that allows use of large fonts and graphics to create graphic files.

The first of these. TYPELWER. Is the showcase of the package. It takes the Yaw" text produced on WM and allows you to manipulate It virtually any way you wish. It does this by means

PAGE LAYCXJT SCBEB4

of user defined "blocks" for the page layout.

There are three types of blocks - Text, Graphic or Box. The first, the Text block, must be used to contain all text on the page. TMs is not as restrictive as it sounds. Rectangular blocks nr^y be created and/or deleted very easUy, resized, renumbered, and nwved around the page.

The page is an area of akxxjt half the screen, set up on the right of the nxxiitor. AU blocks are visible on the page when being created or nrwdified but disappear when the page is "Viewed" prior to printing. To

"View", V Is pressed and the text automatically "pours" into the text block and flUs it, stopping when the block is "full". Text may be forced into another block by using the "FORM" coRYnand on a command line in the text. This is all visible in the preview. (See the Illustration below.)

Graphic blocks are created by pressing SHFT 9 (GRAPHCS). When the name of a graphic in memory is entered, it fills the block created. These may also be moved and resized. The restriction here is that the graphic must be a file created with HEADUNER. This is also quite simple, and when a file is created from a screen, it actually compresses the number of bytes used to allow you to store more screens (or parts of screens) than would normally be possible. For example, the graphic of the page layout screen you see above is stored In only 5139 bytes with HEADLVyER after being created from an NM SCBEBi$ save using LARKB4 DOS. Unfortunately, HEADUNER loses the bottom 2 lines of the SCBEEm when it loads it from disk.

Boxes nnay also be created. There are six styles of Box available - horizontal line, vertical line, rectangle, thick line rectangle, shaded line rectangle and double line rectangle. These are used to place borders around text or whatever other use may come to mind (for example, separating colunrvis of text).

WhUe using TYPEUNER, the text may be edited at any time simply by pressing "E". You

SINC-LINK

11

2068

may also move to any block of text before edtttnQ by steppino throuc^ the blocks using the "N" and keys. Each text block may have its own Justification, either fill, left, ris^t or centred, by using command lines in the text Fonts may be selected (12 are provMed with the package) using number codes

correspondino to their place in the fonts listing. The fonts used mm be varied at will and may also be modified using the font editor so you can create your own personal font (on a 24 by 24 point grid).

HEAOUNBV as you miflht expect, may be used to create headlines. it has a limited

graphic capabWty. allowing straioht lines, rectanglss, arcs and circles to be drawn. When printed with TYPEUNB^ each graphic is printed with two passes of die print head (text is printed with three passesi) so the quality is quite good. Shading is possible and the user msM define his own patterns for shading. There are 6 large fonts (6x6 characters) supplied - Ught. BoM, Outline, Data, Roman and Stadkvn (see the Illustration belowX Each may be varied in height and width to t%M> sizes and may be printed In Bold and Italics. A program is also provided to allow conversion of other fonts (1x1 character only) like those used

with PIXB. PRNT by Stan Lemke.

I could go on and on about these spectacular programs but the best way to find out about them is to try them yourself (your printer must be capable of ESC "K- - 60 dpi and ESC - 120 dpi graphics and ESC "J* - n/216th8 line feed). They are now for sale in North America by Jack Dohany who, apparently, has nwde some modifications to add extra features. If anyone would like to contact him, his address is - Jack Dohany, 435 Woodward Way. Athens GA 30606. He also supplies extra font&

Light Bold Oy*

Data Roman :d'J'jiDJ]Ji:J

HEADUNER FONTS

2

SINC-LINK

2068

File Header Reader Larlcen TS2068 by G. Chambers

Here is yet another header reader. But this has some interesting features about it that will interest you. Even if you have a header reader which satisfies you this program has a number of programming techniques which are worth more than a passing glance.

The program POKEs code into a part of the memory which we seldom use, namely just below the system variable area. This was selected purposely. If you have a Larlcen RAMdisk this block of code can be stored as an integral part Of the OMNIBUS program, m fact the code car^ stored m any AUTOSTART program, and used independantly of this Basic program. When stored there, a simple PRINT USR 24800 will produce a near-instant screen listing of the disk m the drive the Larken system is currently pointing to. If necessary, change the drive by prefacing the command with a PRINT USR 100 J GOTO X (where x = the selected drive number ) .

Put the code into an AUTOSTART program by first running this program to get the code into the 24800+ area of memory. Then do a SAVE with the command 'PRINT USR 100 j SAVE "code. CI- CODE 24800,178'. Load your AUTOSTART program, and then load the just-saved "code. CI" file. Now reSAVE the AUTOSTART program (with the NMI-button and "D- key, of course). It's done. Test it by breaking out of the program, and doing a PRINT USR 24800. Or if the AUTOSTART is a menu program you could introduce this function as one of the menu options.

If you are using the OMNIBUS AUTOSTART menu program and have stored the code as described above you can -REM" LINE 7 of this program, since you have no need to move the code. This will speed program initialisation.

The address 24800 was purposely selected. The AUTOSTART program on the OMNIBUS disk (TTSUC Larken library disk #2) has a number of other m/c utilities stored in the memory area 24311/24989, and this was the last remaining space! If you wish to store the code in another location you may do so by using the m/c program reloc8.Cc, found on the OMNIBUS disk also.

This program can print to the screen, to the TS2040 printer, or to a large printer. It does this by pointing channel #2 to the desired output device. Normally channel #2 points to the screen, and that is where you see listings, etc. In the program LINE