MAR-APR '91 VOL.9 NO.2

INC LINK

VOL.9 NO.S

MAR-APR '91

S INC-L INK IS A PUBLICATION OF THE TORONTO T I HEX-SINCLAIR USERS CLUB AND IS ISSUED 6 TIMES A YEAR. COPIES OF THE NEWSLETTER ARE 91. SO EACH FOR NON-MEMBERS. CLUB MEMBERS RECEIVE FREE COPIES AS PART OF THE 920.00 ANNUAL MEMBERSHIP FEE. A NEWSLETTER SUBSCRIPTION ONLY IS AVAILABLE FOR 912.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, 710 EGLINTON AVE. W. , TORONTO. START TIME: 7s 00 PM.

SEND CORRESPONDANCE TO:

Attention: S INC-L INK TORONTO TIMEX-SINCLAIR CLUB, 14 RICHOME SCARBOROUGH, ONTARIO, CANADA M1K 2Y1

EXECUTIVE OFFICERS:

PRESIDENT:

TREASURER:

SECRETARY:

ACTIVITIES:

TAPE LIBRARIAN ZX81 :

TAPE LIBRARIAN 2066:

TAPE/DISK LIBRARIAN QL:

PAPER LIBRARIAN:

NEWSLETTER:

LIAISON OFFICER:

( Out-of-town members )

EDITOR USERS COURT,

TORONTO TIMEX-SINCLAIR USERS CLUB

(Area Code 416) RENE BRUNEAU ( 331-9749 ) BILL LAWSON ( 444-8772 ) GEORGE CHAMBERS ( 731-7339 ) RENE BRUNEAU ( 331-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. M1K 2Y1 ( 416-751-7559 )

T I ME^i-S I

I R USERS

SINC-LINK

Editorial

An interesting little get-together was held at Hugh Howie's about three weeks ago. Most of the in-town QL users and the club secretary met with Paul Holmgren for an afternoon bull session and general good time. Paul is best known as a U.S. QUANTA librarian, the current guiding light for SNUG (the Sinclair North American User Group) and a co-owner of Mini Mechanical Affinity, a parts and software company serving the T/S (QL mostly) community.

Everyone happily doled out loot to pick up a variety of bits like keyboard membranes, ROM replacement EPROMS. clock battery-backups and even a TS1000 ROM upgrade.

Then we made Paul really work by grilling him on the progress of SNUG to date and where he thought he would like it to go. Yes. he admitted that things had not moved as quickly as the founding members had hoped and, yes, the newsletter, SNUG Roundup, had been published at rather erratic intervals. Paul attributed this to a combination of the problem of having a club executive spread across the continent, the difficulties of communicating at long distance and perhaps a lack of commitment on the part of some people once the scope of the project was real ized .

Anyway all this is about to change, Paul said, because SNUG now has a new newsletter editor who is determined to succeed. To their credit, SNUG has assembled a data base on 2068 disk of sources of information on any topic relating to Timex-Sinclair . Simply ask them to find info on a subject and they will come back with which publications contain the data you require and then they will find the articles for you. It sounds impressive.

The general consensus at the meeting was that after three years of not seeing much for our SNUG membership fees, we will wait and see if SNUG will take off before renewing our membership. I think Paul felt a little defensive after our verbal third degree.

Things then moved on to a question and answer period about making our QLs run better (not crash) and one of the key points Hugh mentioned and Paul agreed with was that the QL is very sensitive to changes in line voltage. Something to keep in mind. Paul was very helpful and forthcoming with answers to our problems and generally everyone came away feeling he had got something useful out the meeting.

Thanks to Hugh and his wife for their hospitality and thanks to Paul for making the trip from Indiana.

Oops

Some of the out-of-town members received the last issue of Sine-Link with what appeared to be two covers, one after the other and the page numbers in the wrong corners. I assure you that it did not go to the printer like that but since I get it printed for a very reasonable rate I couldn't ask them to redo it. I did however, leave out a listing for Sebastian Boisvert's article. It appears this issue. Sorry, S.B. Oh well, the best laid plans . . .

Cont

SINC-LINK

Cover

This issues' cover is another Super Screen from Byte Power's The Companion suite of screens for the The Print Factory desktop publisher. Not bad for the ol 1 2068 and a nine pin printer, eh? Thanks for the positive feedback on last issues' cover, readers .

That ' s all for now. . .

J.T.

"And the Lord said, 'Come, let us us go down, and there confuse their lan- guage that they may not understand one another's speech . . Gen. 11 V.7.

SINC-LINK

BOB'S NOTEBOOK 919119

In writing this column, I always try to include material from my "notebook" that I have just been working on that should appear in the next Sine-Link in order to be timely. What follows comes as a result of my latest endeavours .

Uhen I read each issue of Sine-Link, there is often material that does not interest me at the time ! But as time wears on, I often go back to old issues in search of some information on a subject I was not then into but have now decided to investigate. Thus, I keep a fairly comprehensive index of items for all the issues of the newsletter back to 1985. This I keep in two Pro/File files, slink and slink2 which are available from the club library.

For those using Pro/File, I have just performed some minor surgery on the BASIC to put in a couple of options that may interest you:

<1> There is now a CAT option that displays the directory on the disk in the selected drive; then goes on to display more information in the form of start address and length of each file on that same disk (a.k.a. Fullcat);

(2) There is also an option to allow you to switch back and forth between the Left and Right side of the 8.5 inch page. This seems a rather crude way to pack more mat er i a 1 - on t o each page for after printing the left column for each page, it is necessary to roll the paper back and then print the right-hand column.

Another way I can see to do this would be to export the Pro/File file into Pixel Print Professional and take advantage of the Bank Switching technique to print the left and right columns simultaneously. I tried this approach; if you want to have a go, here are a few lessons learned :

< 1 > SAVE the Pro/File file to disk using the RND/SEQ commands in the Version 3 EPROM. Give the new files a name ending with the Mscript extensions (.CT) eg, you would open a channel thus: RANDOMIZE USR 190: OPEN *3,Mname.CT OUT".

(2) In PPP, the MSCRIPT to PP conversion routine will only handle up to 375 lines, so you must save text in parts that do not exceed this limit. Vou can accomplish this by using the Profile search command wisely, eg, using 89 will save all the records with that number in

them.

(3) Blank lines will not be* saved so don't count them as you keep track.

(4) Load PPP and select the Mscript conversion routine. Use the 64 col option.

Etc. Etc. Etc.

I concluded it is far easier to use the Left/Right toggle and roll the paper back.

In any case, I have provided a copy of the revision for the club library and it is available to those who are valid owners of Pro/F i 1 e .

One tack I have taken lately (suggested to me by Richard Hurd) was to disconnect my TS2949 and cope only with the wide t>r inter . So far, it has been successful with the only problem area being getting a printout of Timachine output and this can be done using the Random/Sequential Filing commands. Vou may recall that I covered that in the May/Jun 99 issue page 4.

Let's consider interaction bet ween files:

One of the side-effects of using Omnibus is that sometimes loading a program from the menus produces strange results or no results at all.

For example, if you save Timachine onto the Omnibus disk and try to load it using a menu option, you may be frustrated. It seems that some incompatibility exists that prevents Timachine from being loaded unless the computer is reset or at least another AUTOSTART file is loaded. I have never been able to discover the cause or how to resolve this problem.

However, one problem occurred recently which I was able to resolve. If you have Mscript (tailored for Omnibus /Ramdisk use) as an Omnibus menu option, load it and cheok how many bytes have been used <<LENGTH> on the Mscript home menu); it should be 1 (one) . Now quit Mscript which should take you back to the Omnibus menu. Load some other program, say, Profile; then quit to the Omnibus menu. Now reload Mscript. If you do not get a length 1 on the menu, you have this incompatibility. For the length 1 to be displayed, I have discovered that the addresses 46927, 35449 and 44935 must all hold zeroes. Go back to the Omnibus file and break into BASIC. Find the line that loads Mscript; it should be 3329. After the first PAUSE oo, add

SINC-LINK

<POKE 46927, oo: POKE 44935, oo>. you 1 oad flscr ipt you were doing should get the reading.

POKE 35440, oo: Now each time no matter what before, you correct Length

If you keep Timachine on disks and load them own Autostarts, th will just not occur interaction between programs and Omnibus the clash.

Mscript and their separate

Mia their s problem It's the these that causes

It's the curse of complexity; but that's what make programming the TS2868 challenging and good fun, don't you agree? Let's hear from you readers who have anything to add to all this stuff this time.

Bob Mitchell 29 Uild Briarway Uillowdale Ont M2 J 2L2 494-5268.

TORONTO TIHEX-SIHCLRIR USERS CLUB

1 REM This program will produce the globe aboveL 10 FOR ::=-87. 5 TO 87.5:_LET i = INT ( SQR < 7744-x*x ) -. 5 > +. 5.

20 FOR y=-i TO i: IF x+2*y+2*SQR < 7744-x*x-y*y ><RND*264 THEN ,0T x+127. 5, y+87. 5 30 NEXT y: NEXT x

SINC-LINK

QL IPS

By Hugh H Howie

QL BASHERS

Why are there so many QL Bashers out there? Some have never even tried the QL. Anyone I have spoken to, and has used the QL has nothing but praise for it. The main gripe is that it is not IBM compatible. Most folks I have spoken are very quick to praise the power of the QL. Except in a very few cases it is lauded as being better than most PCs on the market, even to-day.

There is nothing wrong with the QL other than the fact it was pushed onto the market before it was ready. Even to-day, the QL is a powerful machine. Don't let anyone try to tell you otherwise.

What prompted me to write this, was that last week I received a letter from Marinus Heuseveldt in Florida, the only person who put pen to paper in reply to my suggestion of a QL Hardware Library, and also Tuition Course. I would like to Quote from his letter :-

"Your idea of a hardware library (QL) sounds good to me, but there may be a question of how much use it will get. It is one thing to hardware hack a TS1000- still another the 2068, and yet another, a QL. To the hardware hacker there wouldn't be any reluctance to work the QL over, however, to the less capable, experienced, there would be"

He also pointed out a few difficulties with a correspondence course in programming. A positive letter with many valid observations. Very constructive. Very welcome. I would like to thank Marinus for his well argued comments, and for taking the time and trouble to write. This article was prompted by his letter to me. Just demonstrates what participation in communication can do. We need more of it. Constructive stuff.

In other words, what he is saying is that the QL is a much more complex machine to hack than the 2068. So there !

Here is another quote, this time from a well known programmer of QL and IBM experience. His experience is mainly in

the ARCHIVE field, but he is also well versed is all aspects of the QL. Bill Cable is a prolific contributer to UPDATE, and his articles are always looked forward to by the QL fraternity. In other words he is an expert, probably one of the best in the world on the QL. This extract is from the April 1990 issue of UPDATE.

Bill Cable writes:-

"How do we judge the QLs performance against the other machines? 1. QL much slower in its screen handling. This is evident in QUILL and ARCHIVE. I tried SPEEDSCREEN and LIGHTNING but they didn't improve the times. Some programs still manage to give fast screens. The EDITOR and TEXT87 are examples. Also the QL was multitasking QUILL while DBEasy was being run. That didn't affect the speed of doing the tasks because QUILL was sitting idle. None of the other computers can multitask. None of the other computers can network either, without expensive equipment. And the AT machines cost 2 to 5 times as much as the QL. At some point I will try these same tasks on the THOR and pass on the results. It should be much closer to the AT machines. If you were to judge the QL purely on the response times it shows its age. If you judge it on its overall features taking into account its powerful operating system, its cost, and how much you can accomplish with it then it still can hold its own against most PCs."

End of Quote.

That is what the experts think, (me too)

The DBEasy program Bill mentions is one of his own creations, and is a database manager for ARCHIVE, permitting the creation and managing of databases for many applications, allowing switching between databases. He has also written a great many other Archive Programs worthy of your attention. He is a regular contributer to UPDATE Magazine, called "The Cable Column"

May his shadow never grow less.

§§§

SINC-LIIMK

LISTING FOR DISK MENU MAKER

1 REM DISK MENU 910216 LDC

2 REM based on the program developed by George Chambers & Bob Mi tchel 1

3 PRINT CHR$ 2: CLS : ON ERR RESET

4 RANDOMIZE USR 100: OPEN #4,"dd"

5 LET c=100: BORDER 6: INK 9: PAPER 5: CLS

10 DIM X$( 16) : FOR i=0 TO 15: LET q=PEEK ( 26660+ i ) : IF q=0 THEN GO TO 15

11 LET x$( i+1 )=CHR$ q: NEXT i

15 PRINT AT 1,1; PAPER 1; INK 9; "MENU FOR DISK "; PAPER 2;x$' '

19 RESTORE c: LET n=0: PRINT

20 READ a$: READ b$: IF a$o"STOP" THEN LET n=n+1 : GO SUB 7000 : GO TO 20

35 PLOT INK 3; 0,0: DRAW 255,0: DRAW 0, 175: DRAW -255,0: DRAW 0 ,-175: PLOT 1,1: DRAW 253,0: DRAW 0, 173: DRAW -253,0: DRAW 0,-173 : INK 9

38 PLOT 9,20: DRAW 237 ,0: DRAW 0, 135: DRAW -237,0: DRAW 0,-135 50 PRINT AT 20,7; PAPER 2; FLASH 1 ; "PRESS A TO " ;CHR$ (n+64) ; " ONLY" ; FLASH 0

70 POKE 23658,8: PAUSE 0: LET n$=INKEY$

80 IF n$<"A" OR n$>CHR$ ((n+1)+64) THEN GO TO 70

85 POKE 23658,0: BORDER 1: PAPER 5: INK 9: CLS

90 RESTORE 100: FOR i=1 TO CODE n$-64: READ a$ : READ b$: NEXT i

91 LET t$=b$(LEN b$-1 TO )

92 IF t$~"CT" THEN GO SUB 5E3 : RANDOMIZE USR c: PRINT b$: PRIN T CHR$ 2: PRINT "END OF FILE. . .PRESS ANY KEY" : PAUSE 0: GO TO 1

94 IF t$(1)="B" THEN RANDOMIZE USR c: LOAD b$ 98 RANDOMIZE USR c: LOAD b$CODE : STOP

1001 DATA "STOP"," "

1002 GO TO 1

3200 RANDOMIZE USR c : GO TO 4 : PRINT #4: NEW 5000 INK 0: PAPER 7: BORDER 7: CLS 5010 RANDOMIZE USR c: LOAD " tasw i . Cx "CODE 5020 RANDOMIZE USR 64300: PRINT CHR$ 3; 5030 ON ERR GO TO 1 : RETURN

7000 IF LEN a$<24 THEN PRINT " " ;CHR$ (n+64) ; " - " ; a$ : RETURN 7010 PRINT " ";CHR$ (n+64);" - ";a$( TO 24): PRINT TAB 6;a$(25 T 0 ) : RETURN

8000 CLEAR 65535: RESTORE 8010: FOR i =0 TO 32: READ a: POKE 2431 1 +i ,a: NEXT I: RANDOMIZE USR 243 1 1 : RUN

8010 DATA 243,205,98,0, 1 75 , 50 , 29 , 32 , 50 , 32 , 32 , 205 , 126,0,205, 123,0, 33,4,50, 17,36, 104, 1 , 16,0,237, 1 76 , 58 , 100 , 0 , 25 1 , 201

8887 STOP

8888 CLS : INPUT AT 10 , 0 ;" DESTINATION DRIVE #? " ;dd: LET c=100: R ANDOMIZE USR c: POKE 8200,8195: LET s=USR 1 10: LET sd=INT (s/4-(s >8) ) : RANDOMIZE USR c: GO TO sd: RANDOMIZE USR c: LOAD "taswi .Cx" CODE : RANDOMIZE USR c: GO TO dd: RANDOMIZE USR c: SAVE "taswi .Cx "CODE 63223, 1492

8889 DELETE 8888,8889

9999 CLEAR : POKE 23730, PEEK 23641 : POKE 23731 , PEEK 23642+1 : CLS : PRINT AT 10,0; "PRESS <D> KEY FOR AUTOSTART SAVE" : RANDOMIZE USR 102: GO TO 8000

SINC-LINK

ZX81 NOTE Al V 71 DATE 91/02/21 TIME 9:37:25 PAGE

Periodically its nice to set up your ZX81 and have a little fun.

I like to think of games in three categories. 1) ARCADE - these*are

the kill the cleons type, pong etc. In the early days of home computing

these games flourished but today there is no way to compete with

Nintendo. 2) ADVENTURE - these are the games were you try to find

your way interactively through the castle and get the treasure.

I have found a few good examples that run on my ZX81, for example

TREASURE HUNT. 3) MIND - these are the interesting games because

they do not require a great deal of graphics just a good thinking

mind, for example THE TOWERS OF HANOI. It is the last two types of

games that I am searching for. I have looked through our club

library and can find several examples of the ARCADE games and

a few ADVENTURE games, but very little MIND games. I suspect that

there are a lot of these games gathering dust in the bottom of

your filing cabinets but I would like to see them. Have you

got some great MIND game that you think would stump the whiz?

Heres the deal. Send me whatever you have in the way of MIND or

a really good ADVENTURE game, either listing or on tape. I will

edit and accumulate them into a set of games. If you send me

something, you will get a copy of the complete set of all

games sent in.

Send your stuff to:

Ron Campbell

37 Sir Galahad Place

Markham, Ontario

L3P 3K7

- T H E: M R THE R H LIGHT"

TORONTO T I HEX-5 I HCLfl I R USERS CLUB

SINC-LINK

323 1/2 N. Church Street Bowling Green, OH 43402 November 19, 1990

Dear George,

I got the November Sine-Link today, and thought I would write you concerning packing numbers, as was discussed in the TS Bulletin, p. 4. (By the way, there was no page 2 on the copy I got. Others may have had that problem as well.)

In general, you can place 2 numbers into 1 byte, but not 3 as was attempted by this routine - unless you can't use every number. However, you can fit 7 digits in 3 bytes, by extending the normal method used to double-POKE . This would look as follows: (The Variable ph is presumed to be the phone number.)

1 REM (at least 15 characters) 5 REM Telephone number storage

10 FOR 1 = 1 TO 3

15 LET hi = INT (ph/256)

20 POKE 16524+i,ph-hi*256

25 LET ph = hi

30 NEXT i

40 REM handles any 7 -dig it number

50 PRINT "TEL NO. ••;

60 FOR 1 = 3 TO 1 STEP -1

70 LET ph = 256*ph+PEEK(165244-i )

8 0 NEXT i 90 PRINT ph

9 9 STOP

I should note that this routine would handle any kind of a number provided it was less than 16,000,000. As for marking invalid (non-existent) numbers, there are over 6 million left over, so that should be easy.

Actually, there are fewer phone numbers than the 10 million I was presuming above. First, no 7-digit phone number can begin with a 0 or 1, the operatop or long-distance codes. Secondly, the first 3 digits must not correspond to an area code, or the phone company's switching circuits would get confused. Since all area codes have a second digit of 0 or 1, we could compute there are really only 6,400,000 valid 7-digit phone numbers. It still takes 3 bytes to store it, but we have a lot of spare digits.

If we wanted to use 10-digit phone numbers, we could use this to our advantage. Normally, 10 digits would require 5 bytes. But there are enough un-usable numbers so that we could get by with only 4, and have the entire area code in 1 byte. This requires a little more trickery, but not much. In the following part of a program, presume (ac) is the area code, and (ph) is the phone number:

1 REM (at least 15 characters)

5 REM Store (ac) and (ph) 10 LET ac=ac-80*INT (ac/100) 15 POKE 16524, ac

SING— LINK

20 FOR 1 = 1 TO 3

2 5 LET hi=INT(ph/256 )

30 POKE 16524+i,ph

35 LET ph=hi

4 0 NEXT i

45 REM phone number stored 50 PRINT "TEL NO. ";

55 LET ac=PEEK 16524

56 LET ac=ac+80*INT (ac/20)

6 0 IF AO0 THEN PRINT " ( " ; ac; " ) " ; 65 FOR 1=3 TO 1 STEP -1 70 LET ph=ph*256+PEEK(16524+i) 75 NEXT i

80 IF ph>0 THEN PRINT ph

85 IF ph=0 THEN PRINT "None"

99 STOP

Of course, you would need a line to put the phone number into ac and ph. I am using a 0 in either to indicate it is missing, since neither can be all O's.

Similar techniques could be used in any field with data from a restricted set of characters - anything numeric, or even postal codes. If we wished to use end-of-field markers and such, we could change every 256 to a lower number, like 250, or anything down to about 220. Anything below 220, though, and our 7-digit phone number would need at least 4 bytes of storage, and 1 for the area code.

Well, that's all for right now. Also note that on a 2068, we would change the 16524 to some other number. In a practical program, you would want a variable instead - we can't POKE everything into the same location. Or we could change the POKEs and PEEKS to use CODE and CHR$ and put the number into a string or string array.

I am almost done with ray version of Statistical Analysis for single variable distributions, which I am writing for Bob Mitchell. The program he had, which he said he pulled out of a magazine, was a mixture of different routines for one and two variables, which made it confusing to use, so I thought I would seperate them and clear it up some.

Anyway, I will probably write you again in a couple of weeks when I am satisfied with it. I'll be in Windsor this week, but I'll be back by next week - you may remember I always go to Windsor for my American Thanksgiving break. So bye for now, and peace.

S incerely

SINC-LINK

The last version of ARCHIVE, called flRCdev and ARCrtn, introduces the possibility to call external nachine code routine to conplenent the fiRCHIUE programing language. This is also true for the PSION XCHRN6E software.

ye load the external routines, with LOAD USR 'filename'

the default extension is '_pnc' .

and we call then with LET x=USR(pari,'par2*') .

The first paraneter, PARI, is a nunber and the second one (PAR2$) , a string. Note that even if PAR2$ is a variable, we have to put quotes around it. The variable X will contain an error code in the QDOS

tradition.

From the programing point of view, the routine nust begin with a 6 bytes header like this: DO 'pncO'

OC.U routing J ength

The register DO contains the value of PARI and AO is pointing to PAR2*. The first byte of PAR2I is length of the string.

Only one 'jane' file can be in nenory. But it is possible to develop a toolkit for fiRCHIUE and use PARI to select the different routines by testing the value of DO in our program

ex. RQU7INEJ} DBF dO,ROUTINE_l

ROUTINE.! DBF d0,R0UTINE_2 ...

RTS

ROUTINES DBF dO, ERROR

ERROR

flOUEQ *-15,d0 RTS

PAR2$ can pass nore than one paraneter by using the ascii code of each character. Uith this nethod each paraneter can have a value between 0-255. For example, if the routine 2 of our imaginary toolkit is to produce a beep, the first paraneter can be the tone and the second, the length. For exanpie, if we need a tone of 20 of length 5, this can be coded with LET beep*=ChR(20)4CHR<5) and called with LET x=USR(2,'beep*') .

The following utility will pernit to fiRCHIUE to comunicate via the SER2 port, we will use it to dial a phone nunber by sending the appropriate comand to a noden.

In fiRCHIUE, load SER2_pnc with LOAD USR 'SER2' . If you want to dial a nunber and your noden is HAYES compatible then type

LET nunber$='fiTDT1234567'4CHR(13) .

'flTOF is a comand to dial a nunber on a TOUCH TONE line, if you have a PULSE line use 'ATOP' instead. You have to terninate the variable nunber* with CHR03) to force to noden to execute the comand.

To start the dialing type LET x=USR(speed, 'nunber*') where speed represents to baud rate specific to your noden. Speed equals to 0 for 75 bauds, 1 for 300 , 2 for 600, 3 for 1200 , 4 for 2400, 5 for 4800, 6 for 9600 vtd 7 for 19200!

Uhile the noden dials the nunber pick up the phone. After the dialing, the noden nust hang up the phone. Just send a carriage retirrs to the noden, this will put it off line right away.

let nunber*^ RTDT1234567' +chr (13) let hangup*=chr<13) let x=usrQ,'nunberf') print 'Press a key to put the noden off line after the dialing.' input dumy* let xsusrO/hangup*')

Say you have a database containing a nenbership list for your bowling club. The phone nunber of each newer is given by the field phone*. To call Joseph, find his record and issue the following comands to dial his nunber:

let nunber*='flMs+phone*+chr(13) let x=usr<3/nunber*')

To create SER2j3nc, type in the BRSIC loader and run it.

I repeat, this will not work with ARCHIUE 2.3 or 2.35. You need fiRCdev/flRCrtn (also called fiRCHIUE run-tine) or the PSION XCHANGE which is a conbinaison of QUIUyflRCHIUE/EIKEL/flBflCUS into one big progran. I have developped SER2jnc with XCHRN6E v3.27, I don't have ARCdev.

SER2_pmc BASIC LOADER

100 REttark LOADER for SER2jmc

110 REHark by Real 6agnon, ttontreai Quebec decSO

120 :

130 CIS: INPUT "SflUE SER2_pnc UHERE? (default flpO?";sauve* 140 IF LEN<sauve$)=0:sauve*="flpl_" 150 PRINT "One nonent please.";

160 :

170 RESTORE 1000

180 nenoire=RESPR(5l2) :base_nenoire=nenoire 190 conpte=0 : checksun=6567 : checkne=0

200 :

210 REPeat loop

220 IF EOFiEXIT loop

230 READ byte: POKE nemire,bute:nemire=nenoire+i

240 conpte=conpte+l

245 checkjte=checkm+byte

250 PRINT "."]

260 END REPeat loop

265 :

270 IF checkm<>checksun:PRINT v'Checksun incorrect" :ST0P 280 :

290 S8YTES sauve*8'SER2_pnc? ,base.nenoire,conpte 300 PRINT '0k!'sST0P 310 :

1000 DfiTfl 112, 109,

1001 DATA 0, 66,

1002 DfiTfl 78, 65,

1003 OfiTfi 65, 250,

1004 OfiTfi 102, 0,

1005 DflTB 34, ~

1006 DfiTfl

1007 ORTR

1008 DfiTfl

1009 DfiTfl

o2' 75,

75, Si

99,

48,

o,

86,

38,

72,

65,

250

50,

24,

81,

200,

255,

252,

112,

18

255,

38,

60,

0,

0,

o,

0

36,

112,

1,

78,

66,

74,

64

o,

5'

27,

?2,

130,

118,

255

112, 112,

I

78,

67,

2'

64,

102,

0

78,

68, 114,

■8'

6

50,

105,

o,

75, 192,

?;

44

176;

3,

96

18

3?;

128

12

SINC-LINK

The Quebec Link.

* filena* : SER2_pk vision 1.8 X date : decetter 1998

X tochine code extension for ARCHIVE 2.38 and XCHflNGE X to add the possibility to talk directly to the X SER2 port. X

X LORD with the corand LORD USR 'ser2'

X USE with the coaund

X LET resuU=USR<speed,'strinQS')

t uhere speed is the baud rate to be used

X 8=75 1=388 2=689 3=1288 4=2488

X 5=4888 6=9688 7=19288

I uhere strings* is the variable no*

* containing the string to be sent.

X note that you have to put quotes around

X it.

X

X the routine returns an error code in the X variable result if any. 8 = no error X other = error

X

X This prograi is donated to the public drain

I written by Real Gagnon and HIC LOGIQUE

X 8286 Stt*i>ert P.O. Box 1393

I Montreal (Quebec) Place du Pare

I CflNflOR H2P 1Z3 Montreal Quebec

X CflNflOfl H2U 2R4

HT.BflUD

IO.OPEN

IO.aOSE

IOSSTRG

THIS.JOB

neaoer

equ equ equ equ equ

dc.b dc.u

S12 SI 12 17

-1

'pK8'

finish-start

set the baud rate open a channel close a channel send a string to a channel

A8 contains the pointer of the string to be sent. 08 contains the baud- rate to be used

set the baud rate

start aove.l o8,a3 preserve the string address

lea baud_choice,a8 find the correct baud rate

baud, loop tove.u (aB)+,dl

dbra d8.baud.loop

■oveq tnT_6flOO,d8

trap tl

X

t

X

open a enamel for SER2

■oveq ITHIS.JOB,dl

■ove.l W,d3 ue open a channel for a device

lea devicenaK,a8

•oveq «O„0PEH,d8

trap 12 open the channel

tst d8 error?

bne error.de tected

R8 contains the CHfHfi ID (needed fx 10 SSTRG) nou ue have to send the string pointed by B4

length of the string

iove.b (a3)+,d2

ext.u d2

■oveq H,d3 no tiieout

■ove.l a3.al string address

■oveq ♦Iu„SSTRG,d8

trap 13

tst d8

bne error .detected

X

>

X

ax it. send ■oveq trap

errordetected rts

nou, ue close the channel <A8 still contains CHRN€L 10

«I0_CL0SE,d8 12

device_noM

baud.choice finish

dc.u dc.b

dc.u

end

SER2ir'

go back to flRCMUE/XCHRNGE

length of the device nose no handshake and no parity

75 ,388 ,688, 1286 ,2488 ,4888 ,9688, 19288

SINC-LINK

13

MIKE'S NOTEBOOK

By: Michael J. Di Rienzo

(NOTE: REPRINTING OR REPRODUCING THIS COLUMN WITHOUT THE EXPRESSED WRITTEN PERMISSION OF THE AUTHOR IS HEREBY PROHIBITED. FOR PERMISSION, WRITE THE AUTHOR IN CARE OF THIS PUBLICATION. )

If you are used to SAVEing SCREEN* files, you may have noticed that the file size is rather large especially if you LOAD or SAVE using cassette storage medium* The file is 69 12 bytes long. Another problem to overcome is that if you want to store more than four or five SCREEN* es in RAM memory, there is hardly any memory left for your programs. This months utility will COMPRESS a typical SCREEN* file up to as much as 1/2 its usual size, in addition, a header is automatically included in the SAVED file which will resolve the compressed SCREEN* back to its full size onto the screen by simply using RANDOMIZE USR (address) . The following program will SAVE the compressed SCREEN* CODE at address 40246 and you will be shown the file length if you wish to write it down. When you are ready to LOAD the compressed file into your own program, you can LOAD it to any legal address then "call" that address to get your expanded SCREEN*. The following program will POKE in the CODE th en prompt you to INPUT the file name of the SCREEN* that you want to compress. It will then LOAD it and temporarily store it. Next you'll be asked what name you want to give the compressed SCREEN* . The SCREEN* will be

instantly compressed and you will be notified of the start address and byte length of the file. Now, a prompt to press any key when you are ready to SAVE your file. Don't worry, your compressed file is already stored at address 40246 . This utility can be easily modified by you to work with any disk system. I use this utility alot to animate as many as 15 compressed SCREEN* by LOADing them consecutively in memory then calling them in sequence to simulate animation. The CODE is not relocatable and is 132 bytes long. Have fun!

•CMPRES*

By Michael J. Di Rienzo

10 CLEAR 36611: LET store=3672 0s LET recal I =36732: LET compres s=36612: GO SUB 100

20 INPUT "What is the file nam e to LOAD? ;n*

30 LOAD n* SCREEN* : RANDOMIZE USR store

40 INPUT "What is the file nass e to SAVE? ; n* : RANDOMIZE USR recal 1

50 RANDOMIZE USR compress: LET L=USR 40192: LET L=L-40246 60 PRINT INK 2; PAPER 5;AT 10, 0 ; BFi 1 e: ; n* ; " "CODE 40246 , ; L » FLASH ljAT 11,5; -Press any key to SAVE*: PAUSE 0 70 SAVE n*CODE 40246 , L 80 CLS : RANDOMIZE USR 40246: PRINT INK I? FLASH If AT 10,0: "To resolve the compressed file ba ck to the screen in the futureRA NDOMIZE USR (Starting address wh ere CODE is LOADed ! ) 90 STOP 100 LET t=0

110 FOR N=36612 TO 36743 120 READ a: POKE n,a: LET t=t+a 130 NEXT n: IF t<> 12070 THEN PR INT FLASH 1; -Data Error! Recheck DATA line.-: STOP 140 RETURN

150 DATA 17,0,157,33,16,143,1,9 8,0,237, 176,201, 197,209,33, 100,0 ,25,235,33,0,64, 14 , 1 , 126 , 167 , 40 , 9,254,255,40,5,237, 160,3,24,21,7 1,121,60,35,40,7, 126,184,32,3, 12 ,24,243, 120, 18, 19, 121, 18, 19, 14, 1 , 124,254,91,32,217,213, 193,201, 1 7,0,64,221,33,46,0,221,9, 122,254 ,91,200,221, 126,0, 167,40, 10,254, 255,40,6, 18, 19,221,35,24,236,221 ,70, 1, 18, 19, 16,252,221,35,221,35 , 24 , 223

160 DATA 17,0,157,33,0,64,1,0,2 4,237, 176,201,17,0,64,33,0, 157, 1 ,0,24,237, 176 ,201

SI NC— LINK

C0mDffiS5 36612 8F04 LD DE , 4U 1 'dZ V 36615 8F07 LD HL , 36624 36618 8F0A LD BC,98 36621 8F0D LDIR 36623 8F0F RET

36624 8F10 PUSH BC

36625 8F11 POP DE

36626 8F12 LD HL, 100

36629 8F15 ADD HL , DE

36630 8F16 EX DE, HL

36631 8F17 LD HL , 16384 36634 8F1A LD C, 1;

36636 8F1C LD A, (HL )

36637 8F1D AND A

36638 8F1E JR Z, 36649 36640 8F20 CP 255? 36642 8F22 JR Z, 36649 36644 8F24 LDI

36646 8F26 INC BC

36647 8F27 JR 36670

36649 8F29 LD B, A

36650 8F2A LD A,C

36651 8F2B INC A

36652 8F2C INC HL

36653 8F2D JR Z, 36662

36655 8F2F LD A, CHL)

36656 8F30 CP B

36657 8F31 JR NZ, 36662

36659 8F33 INC C

36660 8F34 JR 36649

36662 8F36 LD A, B

36663 8F37 LD <DE>,A

36664 8F38 INC DE

36665 8F39 LD A,C

36666 8F3A LD <DE),A

36667 8F3B INC DE

36668 8F3C LD C, 1 ?

36670 8F3E LD A,H

36671 8F3F CP 91 J C 36673 8F41 JR NZ , 36636

36675 8F43 PUSH DE

36676 8F44 POP BC

36677 8F45 RET

36678 36681 36685 36687 36688 36690 36691 36694 36695 36697 36699 36701 36702 36703 36705

36707 36710 36711 36712 36714 36716 36718

8F46 8F49 8F4D 8F4F 8F50 8F52 8F53 8F56 8F57 8F59 8F5B 8F5D 8F5E 8F5F 8F61

LD DE, 16384 LD IX,46 ADD IX, BC LD A,D CP 91; C RET Z

LD A, CIX+O) AND A

JR Z, 36707 CP 255; JR Z, 36707 LD (DE) f A INC DE INC IX JR 36687

8F63 LD B, CIX+1) 8F66 LD CDE) , A 8F67 INC DE 8F68 DJNZ 36710 8F6A INC IX 8F6C INC IX 8F6E JR 36687

store 36720 8F70 LD DE, 40192 ~ 36723 8F73 LD HL f 16384 36726 8F76 LD BC,6144 36729 8F79 LDIR 36731 8F7B RET

recaft 36732 8F7C LD DE, 16384 36735 8F7F LD HL, 40192 36738 8F82 LD BC,6144 36741 8F85 LDIR 36743 8F87 RET

06714 QFOO LP Df, 1^

O Z, MEAAJPER I hi G S ccrucC OAfE-LIMERS

6// Hugh Howie,.

' To then, night I woa Jyittin thinkin.

U^JLOtly I jUAt -tyUt. ' tiA QjOU>i&SL.

A long time, ago I aAked you to *end in ^ome, ONE-LINERS , nothing came. 04 the, njzjqueAt, bat I Atitl think, thene, one. a tot oi one,-tinenA out thene, juAt waiting 4 oa. who-even, to <6<md them in. So git going guy<6 {and dollA oIao oj> counAe,)

ixfaile. ^ittin thinkin, I came, up with -borne, thoughts might be, inteneAt to someone,. Don't know who , but you. neven. know in thiA Hi-Tcck wonJLd we. live, in juAt who might be, in a. mood to tiAten to ^om&rono, who iA -^ittin, and thinkin nathen, than ^omerone, who iA juAt ^ittin.

you iA ^ittin thinkin. you. might juAt 4ay Aomethin Month heanin. That iA i& you. hoA a mind to talkin. Hone. iA Aome. o4 my thinkin, i& you. ha* a mind to liAtnin.

Say you wnXte, a tot o4 tetter and ^ave, them to ViAh on. MDU , giving them name* accjonjding to whom you, ana, wnAJbing. {Almost ^aid "you. one. wniting to!" ( nexien, end a sentence. with a. pnjzpoMtion. ) Alt the, time, I do it.

{Vnjopo^itJionA one. di^ienjinti )

when you want to njzcall when, and what you. wnote,, you, have, to go thnough a whole, ^tning name* on the. DZR 04 youn, ViAh an, MDf . Ane, you, AtUUL with me,?

But TK2, including Tnjumpcand, ha* a, corrmmd to hetp you,. Say you wntte. to Tom on. Dick on, Jack., {ha ha you, thought i woa going to *ay Hanny) Anyway you, want to necaJUl the, lettenA to Dave.. Att you, have, to do iA type, in: -

"DZR FLVlJDaveJ'

That. iA 14 you, uAe, "Dave." a* the, ne4enence.. Attest, the, 'ENTER' you, wait a. second and what do you, know, up on the, ^cneen cornet a tiAt o& the, tetter you wnote, to Vave,. Tnjy it ion, the, expesiXence,.

Hene, iA anothen, tittle, gem. You, one, lending something to the, pninten,, gnaphicA on. something tike, that, and you, want to Msip in a tittle, corrrmnt at a

given, point {tine,). Tnjy thiA:_

Open #3,^l7: Vnint #3, "MESSAGE" : cJbo^e, #3

The, quotes one, eAAential. The,