MAY-JUN 9 1 VOL. 9 NO.3
SINCLNK
VOL. 9 NO.3
MAY-vJUN '91
SINC-LIMC IS A PUBLICATION OF
THE TORONTO TIMEX -SINCLAIR USERS
CLUB AND IS ISSUED 6 TIMES A
YEAR. COPIES OF THE NEWSLETTER
ARE Si. 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 Si 2. 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, 730 EGLINTON AVE. W. ,
TORONTO. START TIME: 7:00 PM.
SEND CORRESPQNOANCE TO:
Attmnttam SING-LINK EDITOR
TORONTO TIMEX-SINCLAIR USERS
CLUB, 14 RICHOME COURT,
SCARBOROUGH, ONTARIO,
CANADA M1K 2Y1
EXECUTIVE OFFICERS:
TORONTO TlttEX-SINCLflm
USERS CLUB
PRESIDENT
TREASURER
SECRETARY
ACTIVITIES:
TAPE LIBRARIAN ZX81:
TAPE LIBRARIAN 2066:
TAPE/DISK LIBRARIAN QL;
PAPSl LIBRARIAN:
NEWSLETTER:
LIAISON OFFICER:
( Out-of-town members )
(Area Code 416)
RENE BRUNEAU ( 531-9749 )
BILL LAWSON ( 444-8772 )
GEORGE CHAMBERS ( 731-7339 )
RENE BRUNEAU ( 531-9749 )
LYMAN PAQUETTE ( 482-4479 )
RENATQ ZANNESE ( 635-6336 )
HUGH HOWIE ( 634-4929 )
JUT TAYLOR ( 244-8583 )
JEFF TAYLOR ( 244-8583 )
GEORGE CHAMBERS. 14 RICHOME COURT.
SCARBOROUGH. ONTARIO. M1K 2Y1
( 416-751-7559 )
— S I
2
SINC-LINK
Editorial
I really must thank a few of the club members for their kind
words about my third anniversary as newsletter editor. It's very
gratifying to hear from our brothers and sisters within the T/S
community and I can assure you that your letters and cards have
certainly bolstered my resolve to continue to try to put out a
quality product for you.
So, to Joan K. , Les C, Donald L. , Larry C. and all the
members who were so complimentary, my heartfelt thanks.
I can't take all the praise for Sine-Link's success, though.
While I do the assembling, the cover and occasionally an
article, it is the continual high-quality writing of you active
members that makes this newsletter the fine publication it is
today. All you members who have contributed over the last three
years and all you writers whose work we have culled from other
newsletters because we felt it was worth repeating, take a bow.
Alright, enough mushy stuff.
MSCRIPT 5.5 & TASWORD 22M
I recently received the MSCRIPT update from Jack Dohany (no E)
and a TASWORD 2 variation from Larry Crawford and am now trying
to learn all the features these two prolific programmers have
built into their versions. This editorial is a combination of
both programs. Can you spot where they start and stop?
More TPS Info
In the last couple of issues I'd written about my exploits in
repairing one of our TOS/ZEBRA/Engl ish Micro Disk sytems and a
request for information on this disk system. Well, I'd like to
thank Joan Kealy for offering to send me her backup and in
particular I'd also like to send my thanks to James Wilson who
took it upon himself to assemble and send me a great package of
material on this subject. If more material comes in I'd be glad
to exchange what I've received with interested members. Drop me
a line and let's keep supporting another T/S utility.
ZX81/TS1000 Hi-Res
Last issue I wrote about the newest additions to the ZX81
library, namely two tapes full of hi-res programs courtesy of
Greg Harder. The demand for these tapes has been quite
surprising. Members that we didn't even know had ZX81s have been
asking for copies. Bear with us and we'll get those tapes and
manuals to you. It just takes time to make good quality copies.
Digitised Pictures
In last issue there were a few digitised pictures of yours
truly. I am now running a closed circuit tv camera through my
SMUG digitiser and using John Mcmichael's VIDEOTEX software.
Watch for a review of his updated program and more digitised
pictures next issue.
That ' s all for now. . .
J.T.
SINC-LINK
3
BOB'S NOTEBOOK- Programing Tips
Here is an example of how to use a rather obscure LKDOS Extended
BRSIC Command. It concerns that pesky line of dots that appear
at bottom of the screen whenever the NMI push button is pressed.
Those dots, which actually represent the registers and stack
pointers involved, clutter any graphics copies which print the
bottom two lines. However, close reading of the LKDOS Operating
Manual turns up an interesting item: Advanced machine code
programmers can add an extra command to LKDOS by using the PRINT
1*4: DATA a , b , c ... command. Moreover, more reading reveals another
clue from the manual: LKDOS address 8214 User ad • holds the
address of the user NMI function Oft tf*& <94*<**~&ss &f Os**r
cr&mm&nei (£WT/3> .
If this could be used to trigger a graphics-copy machine-code
routine without pressing the NMI button and the F key, then it
should be possible to make an uncluttered copy on a wide
printer, that is, without those dots. Graphics 24 is one such
routine which copies all 24 lines of a SCREEN* and is found in
the Omnibus Collection where it loads into the LKDOS at address
16100. Thus, it ought to be possible to substitute the LKDOS
DATA command for the NMI button. On investigation, this turned
out to be the case. The following lines, which appear in the
Omnibus program, were involved in making the DATA command work:
1020 INPUT AT oo, oo; (uS' "drive? <0-4> ")jdrv: PRINT ttod: GO TO
drvi RETURN
1050 PRINT #od: POKE oz, 16100: LET b=USR oy : RETURN
2578 PRINT AT 00,00; "Standby ..." : GO SUB 1050: IF b<>205 THEN
FOR i =24685 TO 24788: PRINT #od : POKE i-8505,PEEK i: NEXT i
258© PRINT Hod: POKE 8214,16100
2590 CLS : PRINT AT 00, 00; "CHECK Printhead at left each
time.": PAUSE 100 : RETURN
538© GO SUB 5410: ON ERR GO TO 5390: INPUT AT 00,00;" C0PV
SCREENS "'" name? (<=9> ' LINE s*: GO SUB 1020: GO SUB 5500 :
PRINT ttod: LOAD s$SCREEN$: PRINT ttod: DATA 0
5390 ON ERR RESET: GO TO m3
5410 CLS: GO SUB 1050: IF b<>205 THEN GO SUB 2570: RETURN
5420 RETURN
Exp Sanations :
Line 1820 is a sub routine to choose the drive. < u* is used
throughout the program to hold the name of a chosen option) .
Line 1050 does a double poke into LKDOS RAM 8200 (variable oz)
to get the value in LKDOS address 16100.
Lines 2570 to 2590 check that value and if it is not 205 then it
reloads the contents of system variables free space 24605 to
24788 into the LKDOS RAM at address 16180 (24605 minus 8505>;
2588 puts the value 16100 into LKDOS address 16180 and finally
2590 puts a reminder on-screen before returning.
Line 5380 checks that all is ready via 5410; if there is an ERR
message (see below) , the action jumps to line 5398 and thence
back to the menu.
Don't leave out 5420.
The crux of all this is the part at the end of line 5388: PRINT
ttod: DATA 8. Not knowing what to add after the DATA token, I
stuck in the zero. However, no matter what was put in there, an
error message resulted each time so ON ERR commands were added
to overcome the error. Result: the routine worked and the line
of dots was history. By the way, the NMI button ♦ F still does
its job when these changes are made, so it's always there as an
alternative.
One postscript to this story: I later had a go at making the
autoboot code, stored at 16308, work in a similar fashion.
During a lot of experimenting a funny thing came to light: the
command line had to be <PRINT H4 : DATA 0 > ; the computer crashed
(locked up) if < RANDOMIZE USR 100: DATA 0> was used. (I haven't
the foggiest notion why. Can anyone help explain this?) So this
means that to quit any program and get back to Omnibus, the
PRINT #4 switch has to be operative in that program.
§®K1S Dfl®(3@ PK®@l30!?flKlSK]© IFSPS
SINC-LINK
PROFILE: When altering the BASIC program* be careful not to
declare any variable ahead of dS . This string must be the first
variable in the UARS area or the program simply will not work.
PRINTER CONTROL CODES: There are two distinct methods of sending
these to your printer. The FIRST one often used in programming,
uses OUT commands to do the job. For example, to switch to ELITE
typeface requires OUT 127,27: OUT 127,77. BUT, there must be a
check on printer readiness before the commands and this can vary
from printer to printer and even from one TS2868 to another.
Thus it is necessary to make the f o 1 1 owi ng : < GO SUB lme#> prior
to each OUT command. The 1 ine# is the line containing a
routine such as <IF IN 1270237 THEN GO TO line#ft>; line* +1 must
be < RETURN > .
The SECOND one, perhaps not much used, is really more straight
forward: This assumes you are using the LKDOS printer driver and
depends on first switching off the detokenizing and filtering
Cby POKING PPAS at LKDOS RAM address 16693 to 32> which then
causes all subsequent characters to be sent directly to the
printer. PPflS is POKEd with a zero at the close of sending these
printer commands to return to detokenizing and filtering.
Thus the subroutine to turn on ELITE typeface becomes:
RANDOMIZE USR 188: POKE 16893,32
LPRINT CHRS 27; CHRS 77
RANDOMIZE USR 188: POKE 16893,8
RANDOMIZE USR 188: POKE 16894, marg: LPRINT: RETURN
No printer ready check is needed but note that the margin
setting must be repoked since the double poke to 16893 upsets
it. So if you find some of the first style printer commands
cause you problems with your printer and/or TS2868, switch to
the second kind.
MORE ON PRINTER CONTROL CODES
I've recently added the following to both my Tasword and Mscript
1 ists .
First trsuord : This assumes you have Graphics editing
capabilities in your copy of Tasword. British Font ON <27 82 2>
OFF (27 82 8): these could be different for your printer; check
your manual. I put these on key 6 <137 and 134 respectively).
The main use for this font is to get the pound sign to print
instead of a # sign. But the application has other
possibilities: If you write in French or Spanish and these fonts
are included in your printer's memory, substitute them to get
the necessary accented letters.
Another addition <this time on the 5 key — 138 and 133>> was a
quick switch from standard line spacing to narrow line spacing
and vice versa. The commands will vary from printer to printer
but for the Fastext 88 they were Narrow ON <27 65 8> OFF C27 58
>. This allows for packing more text into a page or part of a
page .
Now MSCRIPT: Vou will need instructions for LCODES provided with
Mscript version 505 to do this. The codes above or your
equivalents will be added to the LCODE text. I put the line
spacing against capital A for ON and small a for OFF. British
font ON against capital B and OFF against small b. I see that
the French font could go into capital F and small f. Mscript has
lots of spare letters available for additional commands whereas
Tasword is quite limited.
KEYBOARD IDIOSYNCRASIES
Using INKEV* for keyboard input to any program invites some
troubles since the ROM Debounce and Error Detection routines are
not used. Debouncing is the conversion of mechanical contact
bounce into a clean transition between two logic states. It
involves the disabling of the software's ability to accept a
character for a few milliseconds after receiving one. This
prevents false input or extra signals from a keyboard due the
bouncing of the keys. Keys sometimes tend to bounce due to
inherent design or the keyboard being old or heavily used.
If you have trouble with INKEV*, it may be wise to substitute
some BASIC lines that call on the ROM LAST K routine which does
SINC-LINK
5
u.. the ROM flounce and error deyction^outinjs. These^i 1 lp#
inline." ike ttlf ol iZviZV <f ound in 0MHIBU8> ,
3148 PAUSE oo: LET lk=PEEK 23568
3158 IF lk=13 THEN 60 TO 3128 drv-lk-481
rR!STI#4?kG04?0Rdr^kr5inTTS!H18!59frFLHlH 1{
Uri !? ?R<?!»25^b>ii?.ISEH 60 T0 3148
3188 GO TO 3188+< lk-96>*18
T© explain:
ur.r<»s IS^tiS: SKiS;%f tnesBEE?ber
JCKSSftS.^?*1?!- K ou?,!a.#tn. SaTues'for k,SS a to z. then
^If^he input f-rvlv.. -II tJJJK conditions, then go to the
line number indicated by the formula.
There's more to be read about this subject in Update Apr 89 P . i:
and Apr 88 page 28.
Bob Mitchell Willowdale Ont
Dated: 918223
•000 118 1113 C0MP0TIIS
i in 30FTM8U mua in
gjgK : ft paarful aceoatiag progra for the QL $75.00 a 2 disks
ajSOi is a MCHITI based accounting progra for «t ad 11
Sdaa parable. receivable, ad gaerai ledger adala lateaxated nth a
addrea databae progra. DMddra. gLIRR ba cheek anting andinwicing
Milt in. It aa keep Irak of year IMU Mister Charge or other charge
Sds. sank balaciag is e«f nth QUlK's help-Ia am display ill |«r
checks ad deposits ad eoapare tha nth jeer oak stataats. I« da t
ua to a 8 predefined tccoat ceding system Ton e» a. tha one yon m*.
Iba yea rw the gaerai ledger, each aeeeafc is indmdue ly tallied alia
ioeoM U& tia i aa. It ales a gaaral ledger eiport file for IBK3S.
I baa developed QLBK aer tha pat 3 jtus arking nth several baiaessa.
I baa nr,»T hadreds of boars of dwelopaat ark in this progra.
baa bea careful aot to releae it too soa bat aa fal it is ready. *t
$71.86 QUBE is a pretty eipasite piece of softnarn bat these .ha ant
to keep track of their fiaaca it has a eaal a tha QL and .ill gnckly
ar for itself. It ba any fatara that are eapeaire PC sweating
«rft«a» like Peacbtra and OftC lay fail to inelade like adding aa fenders,
ca oars accaaS .Tprodats on ch. fly. Tha addraa database fatura ar.
^ZT\ [a oaa for bung able to target subgroups for nailing labels or other
parpaa. 1 PC Tenia of QLBa using PC Main is also ui the arks.
0«'t send aaey for QLUK. To order QLHW first send a revest for a are
detailed dacriptioa and special order fora that nil ask for
iafaratia. Eaeh purchaser of QLZRK till at a cata copy of the softeare
1 .ith their boa or baiaess eabedded is the code.
ft Bill Cable : 113 Sos !2 : Cornish, II 83745
V H3 67S 2218
SINC-LINK
Q L I P S
By Hugh H Howie
GARBAGE: GETTING RID OF IT
One night recently I had a phone call
from a QL'er, and during the process of
yakking, he mentioned he was having a
small problem with loading some programs
with long names. The problem was not so
much that he could not load the program,
but that he hated having to type in all
those letters in front of the File Name,
I was able to tell him there was a
program in the QL Library called
DIRJEDIT_BAS, by Howard Clase, that
would do an excellent job for him, I also
said I could remember giving him that
program some time back. Later that week
my friend said the program was really
wonderful, and had saved him a lot of
time in getting rid of a lot of garbage.
I had a couple disks given to me some
weeks ago but had never done much with
them, as each and every title started off
with 'Listl' or fList2' so that every time
I started to work with them I had to type
in those extra letters. Too much work. So
last night I thought of trying this
program on them, but the thought came to
me that perhaps there could be an even
easier way to my job. There is! Most of us
have it right at our fingertips. TK2.
Section 5 of TK2 tells you how it is done.
But is somewhat obscured as it is tagged
on at the end of the section, tucked into
half-a-dozen lines at the very end. All it
says is that "Renaming is a process
similar to COPYing a file" So I went after
the COPY. And those extra bits tagged on
at the front of a file name, can be swept
away in the blink of an eye. I mean that.
Very quickly. Like FAST man!
Say you have a disk on which every title
starts off with "LIST1". It will look like
this:- Listl_Garbage
Listl_MoreGarbage.
Listl_etc
Put the disk in shall we say, FLP1, and
type:- WREN FLPl.LISTl^FLPl
(note comma)
Just look at that and remember it, as one
day you are going to use it.
Press [ENTER], and watch the "LIST1" go.
§
TURTLE-GRAPHICS (TERRAPIN?)
I keep looking for little things for you to
punch in for yourselves, to give you
something to do, and also give an insight
into the various aspects of programming.
This time it is a small fancy little snippet
of a Turtle Graphic. Not quite as slow as
a turtle, but it sure has more twists aad
turns than a turtle. A bit faster too, but
the patterns are interesting. So why not
sit down with me and have bit of a rest
from all that hard stuff.
This came to me with a lot of other stuff,
some good, some not so good. Some I don't
know whether it is good or bad as it does
not work for me. I recently got Minerva,
and I understand that some of the earlier
material does not work on it. I still am
trying to learn about Minerva. But she
sure is one COOL lady. The QL really is a
lot cooler.
Here is the little listing for you to type
in. I can send it to you, but it is cheaper
this way.
100 REMark Turtle graphics
110 WINDOW 512,256,0,0
120 PAPER 0:CLS
130 PENDOWN
140 RE Peat logo
150 IF RND>.68 THEN CLS
160 note=RND
170 POINT 60,60
180 INK RND(1 TO 7)
190 turtle=RND(3 TO 70)
200 terrapin=RND(25 TO 340)
210 FOR k=l TO turtle
220 MOVE k/.7
230 TURN terrapin
240 BEEP 3200,k/note
250 END FOR k
260 IF INKEY$<>"" THEN STOP
270 END REPeat logo
Now was that not fun? Would you like
another? Well space is getting a wee bit
short so we will leave it off for another
time.
In the meantime, 'night all, and have
pleasant dreams of circles flashing round
in front of your eyes. 'Bye §
SINC-LINK
7
MORE ZX81/TS1000 HI-RES PICTURES
NOTE: YOU MUST HAVE NON- VOLATILE MEMORY LIKE THE MODIFIED HUNTER BOARD,
THE SCRAM BOARD OR THE ON -BOARD STATIC RAM BOARD PLUS EXTENDED
MEMORY TO RUN THESE PROGRAMS. CONTACT THE CLUB FOR MORE INFO.
8
SINC-LINK
PUBLIC NOTICE REVISED
It's true that I'm trying to get away from the retail business
side of things, but my intention is to make things EASIER for
folks, not harder! When it comes to filling orders, I'm often
the slowest of the slow. In theory at least, a dealer has
nothing to do except fill orders, whereas there are often long
periods of time when I cannot fill orders due to the press of
other things. However, if a person is unable or unwilling to get
something from a dealer, that person is welcome to try me.
Here's what I'd like:
1. Please state clearly what it is that you want.
2. Please describe your hardware completely.
3. Please include SASE with your order.
4. Please write concisely and don't ask a lot of questions.
5. Send no money. I will include bill with shipment.
6. Be prepared to wait; I am sometimes VERY slow.
I will use your SASE to acknowledge your order. I'll let you
know if your order will take longer than 30 days, or if I'm
unable to fill your order. If you don't like what you get, or
find the price too high, you can return it. Returns are always
welcome. If what you ordered exceeds your budget limits, you can
pay for it over a period of time to suit your budget.
Here's what I'm currently working on:
1. A dealer price list... very complex, trying to simplify.
2. A CONFIG program which will enable the user to easily
configure WORD MASTER and TYPELINER for just about any
dot-matrix printer. Adaptable to other software which is fussy
about printers.
3. TECH DRAW V3 (now completed) for any disk system. For mouse,
trackball, joystick or keyboard.
4. MOUSE DRIVER for use with Zebra A/D + Radio Shack Color
Mouse. Nearly done. Will be quite nifty.
5. A LOADME program which will enable the user to easily load
and print documentation files on disk in Mscript or Word Master
format, without owning or knowing either word processor. Will be
provided free on all disks containing docs in MS/WM format.
6. DEVPAC documentation, long overdue.
7. An improved version of SPECTERM64 which will include support
for the AERCO dual-channel RS232 interface.
8. A new and improved version of the AERCO RS232 interface.
Jack Dohany
390 Rutherford
Redwood City, CA 94061 April 5, 1991
SINC-LINK
SuperBasic Tutorial Part 2
Printing in Columns
In the first episode of this exciting
serial I showed you how to structure a
simple program so that it could easily
be expanded and improved without loosing
track of where you are. All we have to
do is to consider a statement, think how
it might be improved, write the
improvement as a FuNction or PROCedure
and call it by name from the original
statement. The program was one to
print the directory of a storage device
(disk or mdv cartridge) onto paper that
had appeared in an earlier issue of
Sine-Link. The first modification we
made was to give the user the option of
either accepting program's suggestion
for the source of the directory or
putting in one of your own without
having to stop the program and EDIT a
line«
I left you with the problem of altering
the program so that the default offered
doesn't always revert to the one built
into the program in the PROCedure
"Set_up", but uses whatever device you
used last time. There are two ways to
do this, one is to modify line 220 (not
210 - my mistake) as follows:
220 dev$=Get_dev$(dev$) :DIR#3,dev$
The first statement can change the value
of the global variable dev$, which
couldn't happen in the earlier version.
The other way would be to change the dv$
variable to df$ throughout the FuNction
GetJDev$, this means that df$, an alias
(formal variable) for dev$ within the
function, could be altered and dev$
along with it. But I don't favour this
way of doing it, it's a bit too
mysterious!
Another point struck me while re-reading
what I wrote last time: some beginners
might be puzzled about the use of
CHR$(10) and CHR(12) in the program.
These are ASCII control codes which
cannot usually be typed in from the
keyboard; CHR$(10) is an exception, it's
the <ENTER> key, also known as line feed
(LF), since that's what it does both on
the screen and on the printer. (You
can also generate it with <CTRL J> - try
it!). CHR$(12) is form feed (FF) and
does nothing on the QL screen, but has a
noticeable effect on the printer - it
moves to a new sheet of paper at the end
of the run. (On some micros it clef
the screen - but not this one!) One
other code worth mentioning here is
CHR$(13), carriage return (CR) , which on
the QL screen is implied in the LF, and
probably on your printer if you have set
the DIP switches to their most useful
settings.
If you have tried our program as it
stands you will probably have noticed
that it only prints one name on each
line, and since file names are generally
rather short this is a shocking waste of
trees. Wouldn't it be nice to print it
in several columns across the page,
like, for example, Quill does on the
screen when you ask for a list of your
_docs? That is what we are going to
look at in this episode. The first
thing we have to do is to identify the
line that we need to alter, i0e. the one
that actually instructs the computer to
send the directory from the mdv tape or
floppy to the printer. We have to look
no further than line 220; it is the
DIR#3 command that does it. We have
intercept the stream of file names tha .
this command spews straight down the
serial port. This is where the QL's
flexible handling of channels come in
handy.
Aside on channels.
A computer would be useless unless you
could put information into it and get
something back out - it needs to be able
to communicate. Information can be
put into the computer from the keyboard,
from a file on tape or disk, via the net
etc. Output can be obtained on the
screen, on a printer or it can be put
into a file. Some computers have
different commands for dealing with
different kinds of devices (e.g. PRINT
to the screen, but LPRINT to a printer) s
but to the QL they are all just numbered
channels. The commands you use are the
same irrespective of the device at the
other end of the channel. (Although
some are inappropriate - like CLS to a
printer channel.) When you open a
channel you have to tell QDOS what kiri
of input/output device it is, and it
10
SINC-LINK
Super Basic Tutorial Part 2
Printing in Columns
sets up the appropriate "driver" to look
after the details for you.
Back to our columns.
The DIR command directs the list of file
names to a numbered channel, so we can
intercept it if we make the channel a
file rather the printer. Then we can
read it back from the file into an
array, and get full control of the list
of file names as we print them out.
Printing them out at regular intervals
across the page is easy, but proper
printing in columns involves going down
each columns in turn from left to right;
and that is what we shall do - phone
book order is what I am aiming at.
The listing contains all the lines you
will have to alter or add to Prt_dir2 to
upgrade it to Prt_dir3. It is not a
complete program in itself; it will not
run by itself. Type in the listing,
and save it under some temporary name
(e.g. mdvl_Prt_dir_UG) . Then load
Prt_dir2 and MERGE in the upgrade. You
must do it in this order since lines
with the same line number are
overwritten during a MERGEr, and we want
the later versions to stand. This
assumes you have the same line numbers
as the listing published in part one; if
you have RENUMbered, then you will have
to be very careful and make the
alterations by hand.
Upgrade Listing
When merged with Prt_dir2 these lines
convert it to version 3, do not try to
RUN them on their own!
100 nm$ = "Prt__dir3"
110 REMark hjc 1991.03.13 Ver 0.33
162 temp$= ' raml_temp_dir '
164 chars%=80: REMark output line
166 cols%=4
220 Col_dir 3,Get_Dev$(dev$)
630 REMark * *****
640 DEFine PROCedure Col_dir(ch£,dv$)
650 LOCal a$,nl%,i,n%,st$(2,30),rows%
660 n%=0: nl%=chars% DIV cols^-1
670 Make_array dv$
680 PRINT#ch&,st$
690 PRINT#ch2>: FOR i=l TO rows%
700 FOR j=0TO cols^-1
710 a$=ddir$(i+j*rows%)
720 PRINT#ch%, !Procrust$(a$,nl%) ;
730 END FOR j: PRINT#ch%: END FOR i
740 END DEFine
750 REMark ***
760 DEFine PROCedure Make_array(dv$)
770 LOCal a$,c$,i: c5fc=ch%+l
780 REMark Put directory into file
790 DELETE temp$: OPEN_NEW#c%, temp$
800 DIR#c%,dv$: CLOSE#c%
810 n%=Line__count(c%,temp$)-2
820 rows%=nVcols%+.499
830 n$=cols%*rows%
840 DIM ddir$(n%,nl%)
850 OPEN_IN#c%,temp$
860 FOR i =l,2:INPUT#c*,st$(i)
870 FOR i=l TO n%
880 IF E0F(#c5fc): EXIT i
890 INPUT#c5fc,ddir$(i)
900 END FOR i
910 CLOSE#c$: DELETE temp$
920 END DEFine
930 REMark *
940 DEFine FuNction Line_count(ch%,f $)
950 LOCal a$,ct,n&:n5fc=0
960 REMark Count no. of lines in file
970 OPEN_IN#ch%,f$
980 REPeat ct
990 IF EOF(#ch%): EXIT ct
1000 INPUT#ch&,a$: i&-n%+l
1010 END REPeat ct
1020 CLOSE#ch%
1030 RETurn n%: END DEFine
1040 REMark * **
1050 DEFine FuNction Procrust$(r$,p%)
1060 LOCal 1%: l$=LEN(r$)
1070 IF \%>p%
1080 r$=r$(lTO p%)
1090 ELSE r$=r$&FILL$(" " ,p%-l%)
1100 END IF
1110 RETurn r$: END DEFine
(This series will be continued in the
next issue)
(c) 1991 H.J.Clase
Howard Clase
(709) 753-6415
Box 9947, Station B,
St John's, Nfld, A1A 4L4
email hclase@munucs.ucs.mun.ca (Note
SINC-LINK
11
SuperBasic Tutorial Part 2 (Continued)
Printing in Columns
First we need to bring the version info
up to date (100 & 110). Before we get
to the main additions it is necessary to
define a few more global variables, and
the best place to put these is into the
PROCedure Set_up (lines 162, 164 & 166) .
Temp$ is the temporary file we shall
have to set up to hold the directory*
If you have ramdisk use it here, if not
replace raml_ with any device (flp or
mdv) that will have a bit of space on
it. Using a variable in this way means
that you only have to alter the name
once to change it thoughout the program.
Chars% is the number of characters in
the line of the output device; this is
normally 80, but to save paper while I
am testing the program I use a screen
for channel #3 which is only 37
characters wide. (This is an example
of the usefulness of the QL's channels;
all I have to do is to alter the
definition of channel #3 in line 160 to
switch from screen to printer.) ColsSS
is the number of columns required, you
can set it to whatever suits you.
Later we might add a procedure to enable
the user to chose the number required
while the program is running.
I've designed my new PROCedure to look
as much like the QDOS PROCedure it
replaces as possible, so it requires the
same two parameters, a channel number
and a device name (or, in this case, a
function that returns one). (You cannot
use the # notation for your own
superbasic PROCedures; it has to be
replaced with a space.) The main
change to the original listing occurs in
line 220. (You can use either version
-see above) This change leads into
the sequence of two new PROCedures and
two new FuNctions that follows.
Col_dir is the PROCedure that deals with
printing in columns, but there are a few
preliminaries to go through first.
Make_array puts the directory into an
array, ddir$. Lines 790 & 800 OPEN a
new file as channel #c%, and puts the
directory of your chosen device into it.
Not surprisingly QDOS objects if you
try to OPEN_NEW a file with a name that
alredy exists, and the program would
stop with a QDOS error message if it
were not for the protective DELETE
statement - luckily QDOS does not object
to deleting a file that doesn't exist!
DIR produces a series of ASCII text
'lines' each followed by a LF charactei
(CHR$(10)), so that is what the
temporary file consists of. The first
two lines of the directory of a formated
device are always the device name and
the sector statistics. (Well not quite
always, I have a version (2.02) of
Toolkit 2 with a bug in it so that it
fails to produce these two lines from an
empty mdv tape, and the program as
written stops here if there are no files
on the tape. It will, of course always
stop if the tape is not formatted.)
The rest of the file is a list of the
names of the files on the tape or disk*
Since there may be anything from 0 to
about 450 we have to count them. This
is done at line 810, n% is the actual
number of files - two less than the
number of lines found by function
Line__count, which I'll explain later .
Then follows a bit of fudging. Since I
want to print in proper columns the
array has to be exactly the product of
the numbers of rows and columns.
Suppose there were 98 files and we ask..-,
for four columns, we can only print
rows, so the first line would have to
consist of files number 1,26,51 and 76
and so on, but when we get to the last
row but one we should run out in the
last column if we had only dimensioned
our array to 98, generating an "out of
range" error. Line 820 calculates the
number of rows - the .499 makes sure it
rounds up not down - 830 adjusts the
value of n%, and 840 dimensions the
array ddir$() to n% strings of maximum
length nl%. This length was calculated
at line 660 - the -1 ensuring at least
one space between the columns.
Dimensioning Arrays
Because of the way it was dimensioned
ddir$ is a global array. I should have
preferred to make it LOCal to Col_dir,
but this couldn't be done since we don't
know how big it has to be when we enter
the procedure. Variable arrays have to
be dimensioned to help QDOS organise t
memory. Since it is a string array yd.
have to tell it how many elements (file
SINC-LINK
SuperBasic Tutorial Part 2 (Continued)
Printing in Columns
names) and the maximum number of
characters you want in each - if you try
to assign a longer name then only the
first nl% will go into the array. A
LOCal array is declared by putting the
dimensions in brackets after the
variable name in the LOCal statement,
which must be the first line in the
array or function. The variable st$
declared in line 650 is an example of a
LOCal array, this is to hold the device
name and the sector statistics. Since
we know in advance what size this has to
be there is no problem, but we cannot
dimension ddir$ until we know how many
file names there are, and it has to be
done with a DIM statement. SuperBASIC
is more flexible than most BASICs in
that you can re-dimension an array to be
larger than it was before, so there is
no problem with the fact that it will be
re-dimensioned each time you print a
directory.
Having dimensioned our array we have to
fill it with the file names. Line 850
re-OPENs our file for INPUT to the
computer as channel #c% again. (The OPEN
command also allows you to alter or add
to the file, but we don't need to do
that.) The short form FOR loop at line
860 puts the drive name and stats into
st$. I could have just used the first
two elements of ddir$, but I didn't want
them to be truncated. Note that the
INPUT command - with the appropriate
channel number - is used, the same
command you use to get input from the
keyboard. Then we move to a long FOR,
loop which reads the file names from the
temporary file and puts them into the
array. Because we may have increased
the value of n% to be greater than the
actual number of names we have to allow
for getting to the end of the file
before we get to the end of the loop;
this is done at line 880. The last few
arrayelements may remain empty. Then
we've finished with the file and can
dispose of it (910).
We now return to line 680, which
demonstrates a useful trick. If you
want to print a whole array you do not
have to write your own loops, PRINT
array_name will print out the whole
thing. If you follow the array_name
with one of the formatting "punctuation
marks" (, ; !) it is printed as though
each printed element is followed by the
mark; a comma will tab each element -
try the effect of the others for
yourself. Since there is nothing in
line 680 the two entries are printed as
separate lines. Then we move to the
main double loop (690 - 720). The
outer (i) loop controls the rows and the
inner (j) loop picks out the entry for
each column as we go across the row.
The ! puts a space before each column
except the first, and the procrustean
FuNction ensures that each is exactly
the right length. (The formatting mark
! is not used often enough by amateur
programmers, as well as the above role
it will not print at the end of a line
if there is not enough room for the
whole string, but starts a new line - no
split words.) The PRINT statement
between the two END FORs makes sure that
there is a new line after each row, it
is redundant if you have got the
characters per line right in Set__up, but
helps keep things tidy if you haven't.
There are still two FuNctions left
unexplained. Line_count just returns
the number of lines in an ASCII text
file, you can use it, for example on a
basic file - try:
PRINT Line_count ( 4 , "mdv2_Pr t_di r 3 " )
(you must have prt_dir3 loaded at the
time - or Line_count at least, and
don't forget the quotes!. It won't
work on a Quill file they are not
ASCII.) Note in particular line 990*
Whenever you use a loop to run through a
file, since you do not usually know the
length in advance you have to use a
REPeat loop rather than a FOR loop, and
you must test for end-of-file right at
the beginning - it might be an empty
file. Nothing happens to a$ here, it's
just somewhere to put each line while
you count it. You could easily adapt
this FuNction to find the length of the
longest file name in the list as well as
count them couldn't you? (This month's
assignment, you might also try to adapt
it to find the length of a file in bytes
- hint use INKEY$) . The other
FuNction, Procrust$, either truncates
(1070/80) or pads out with spaces (1090)
SINC-LINK
13
SuperBasic Tutorial Part 2 (Continued)
Printing in Columns
the string r$ to make its length exactly
If there is anything I have not
explained in enough detail please write
to me. Next time Afferbeck Lauder.
(c) 1991 H.J.Clase
Howard Clase
(709) 753-6415
Box 9947, Station B,
St John's, Nfld, A1A 4L4
email hclasei&iunucs.ucs.mun.ca (Note
change. )
Put some punch in your
PRINT FACTORY© graphics!!
wmtrafetmrne
Collection© 1 Colleetion#2
Miscellaneous
Men/Boys
Women/Girls
Digitized Misc.
Animals
Sports
Transportation
Computers
Food
Holidays
Xmas
Over i SO targm & small graphic*
in maoH ooltmotioix!
Only $1 2.93 pod. each or both collections
for $1 933 ppd. [Chock or money order,]
Available on tape or S 1/4 DSDD LAHKEN
or OLXGER disk - please specify.
Send order tm
John McMlchael, 1710 Palmer Dr,
Laramie, WY 82070
UPDATE MBG8ZINE
513 E. Main Street
Pera, IN 46970
New
Products
14
SINC-LINK
■■■*>•
laaaaa
■•*•■•
••••••
aaaaaa
■■■■■a
*■■••■
aaaaaa
■■•■*•
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaaaaa
aaa
Bug Alerts
& Updates
by Richard Hurd
■••■•■i
■aaaaaa
aaaaaa
aaaaaa
■aaaaaa
iiiiiii
•aaaaaa
aaaaaa
aaaaaa
aaaaaa
■ ami
aaaaaa
aaaaaa
isaaaaa
aaaaaa
aaaaaa
■asanas
aaaaaa
•■■■•■
mil
• ami
aaaaaa
aiaaaaaaaaaaaaaaaaaaai ■ ■ san i ■■■ • ■
•■•••■■••iiiii
■iiaaaiiiaeei
aaaaaaaaaaaaai
isiiaaaaaaaaai
laaaaaaaaaaac
■aaaaaaaai
"
liiaiaiinsilllii
• •■■■■■•■I iiiiiii
■iiiiiii
■iiiiiii
■ ■■■■•■••>
■ •■•■■••
■>•••••••
maaaaai
IIIIIII!
■ •■>■■■■<
laaaaaaaa
■■■■■■■I
inaaaaaa
laaaaa
MM!
aaaaaa
■ aim
■ ■mi
• aim
••■•■■
aaaaaa
■■•■■■
iaim
mi ■■•ma
■ an mini/
Here are a few updates and corrections to some of my
articles and programs,
NEC 1035 Disk Drive Overview
From SINC-UNK VoL7 No6 NEC 1035 3J5" floppy disk
drive overview.
In the article I mentioned having problems with
formatting disks from MEI/Micro Center. After moving the
drives power supply further away from the drive, the
problem vanished. The no-name disks have held up as well
as the name brand Maxell, 3M, and FUJI disks Pve also
tried, The price of the no-name disks has gone down to $39
ea. in lots of 25. See their ad in Computer Shopper
magazine.
LARKEN Disk Utility Updates.
An update for Copy Machine which is a modified version
of Larry Kenny's Move utility. It allows for batch copy,
copy all, and batch erase. The improvement simply makes it
easier to reLOAD Copy Machine.
A bug alert for LK2cpy. Which is a modified version of
Larry Kenny's 2 drive copy utility. It uses a search routine
to look for the highest numbered used track on the disk. It
then copies all tracks up to and including the last used
track. The fix was suggested by Bob Mitchell, in regards to
a full disk. Thanks Bob. Note that for a full disk copy, I
suggest using Byte Power's COPY 3 utility program,
available from the group's disk exchange. Which due to its'
compacting of track data, gives a faster copy. This is the
purpose of LK2cpy, but it is defeated with a full disk.
LK2cpy is at its best with 75% or less of used disk space.
An update for my RDBKUP [RAMDISK backup) utility.
The original saved all tracks of the RAMDISK to a double
sided floppy. The improvement now saves only up to the
last used track.
These changes can be found on my LARKEN UTILITIES
DISK version 23. Along with updates on Double to Quad
(d2qj, a utiltity for 525" quad density drive users. It
copies S25" double density disks to quad density disks
using just the quad density drive. Fve also added a Quad
to Double (q2d) utility, which copies tracks from a quad
density disk to a preformatted double density disk. For
example you get a double density disk from a friend, use
d2q to convert to the quad drive, you then have a
Preformatted double density disk to load up with
something using q2d to return to your friend.
Copy Machine
Important Notes Do not CLEAR or RUN while making
changes. After making changes, GO TO 9999 to SAVE.
20 RANDOMIZE USR 60016
200 RANDOMIZE USR 60016
8095 IF INKEY$="1" THEN GO TO 8200
8200 CLS • PRINT """Insert CopyMachine Disk In
Drive""TAB 8?"Which Drive? (0-4)"
8210 IF INKEY$<>"" THEN GO TO 8210
8220 IF INKEY$="" THEN GO TO 8220
8230 LET d=C0DE INKEY$-48« IF d<0 OR d>4 THEN BEEP
.1,0. GO TO 8210
LK2cpy
615 IF sid=l THEN LET c=(x/2)-l
635 IF a>blx AND sid=2 THEN GO TO 740
2065 LET blx=sid«numtrks
Optional
660 REM after line number, eliminates auto verify,
speeds up copy.
RDBKUP ve^siouN,
210 GO SUB 2000i PRINT "TAB 9,"Copy Counts";stks
2000 REM Get Last Used Track
2010 LET stks=PEEK (mem+21)
2020 LET x=2
2030 FOR f=((mem+24)+(2*stks-l)) TO (mem+24) STEP
-1
2040 IF PEEK f=245 THEN GO TO 2060
2050 NEXT f
2060 LET x=f-(mem+23)
2070 LET stks=x
2080 RETURN
This page was produced with Word Master, Typeliner &
Headliner. Printed with a Star NX-100Q,
SINC-LINK
15
1301 KibI inner Place
Auburn, IN 46786
Tele i (£13) 925-1372
01 £7 1391
Dear George,
This is to announce that I am the official SNUG NEWSLETTER EDITOR.
Amongst many weeks of wait this has been accomplished. Most of the delay was
occassioned by a sort of computer type glitch,, Paul Holgren was waiting for
material from me and I was waiting for material from him. Now that that has
been reconci led we have also reconciled the disk compatibility between us
since I now have an Oliger disk interface in addition to my Larken. Paul
will not go to another disk I. F. since he is so oieased with Oliger. I have
not had my Oliger long enough to really learn much about it but I am
beginning to feel that he has a point. I plan to get setup so that I will
have both Larken and Oliger operating at the same time, which system gets
used will depend upon the disk commands used.
That was one reason to get an Oliger so that I was compatible to Paul
and another reason is that there are approximately 1700 disk interfaces for
the T/S 2068 sold and of that there are 300 plus Larken and 600 plus Oliger
so if I can handle both Oliger and Larken 1 am compatible with 59* of the
known disk interfaces. However, there is the matter of drive size, I am
using 5 1/4 both 40 track and 80 track so that should take care of at least
a great majority of the Larken or Oliger users.
I am looking for Hen's Teeth, in other words something quite rare. That
is a version of MSCRIPT that will support both the Larken and the Oliger
from the menu and hopefully cassette too. I would like to have version V5» 0
or later but would accept an earlier version if available. Right now on
Oliger I am using Mscript V5c ® and when I use Larken I use V5. 5. Presently
when I transfer files from one the the other I have to SAVE to cassette an;
LOAD back to whatever disk system I want to store the material on. V5. © that,
I have was originally cassette but I have managed to convert it to disk.
Also, I don't know how many know that TASWORD II, which I don't like
nor does Paul, files can be LOADed into MSCRIPT but the format will not be
clean. But the text is there and can, be cleaned up much more easily than
typing in the whole text into MSCRIPT. There is a program to clean it up
that I will have to try, it could save much time.
As EDITOR I am asking for input. Anything from I don't like this to
submission of material to be publishedc Hints, shorscuts, one liners to long
articles on anything pertaining to the T/S computers and even some that
aren't if the articles are related. Is there something that you are looking
for, write and space permitting it will be published, got something to sell,
again send it in and it will get published. Looking for articles on specific
topics, write in or call. I have a filing cabinent full of material, I can't
afford to supply free copies but the fee will be quite reasonable as long as
where I go is reasonable. I will get the submitted material into format for
publishing and send it to Paul on a Oliger disk and he will make it ready
for the copy machine after picking what should be published. The newsletter
will be five sheets of paper and will have a minimum of graphics for front
page to increase the amount of text presented. The outside page will be a
mailer so actually there will be 9 pages of text. The newsletter will only
be as good as the submissions*
Remember that postage cost money, and it has gone up, if you expect a
reply send a LSASE please. My mail box almost always has an outgoing letter
waiting for the post man so I know postage costs. I have to pay for my hobby
from my allowance and when it is spent I have to wait till next month befo
I can do anything. Luckily, it has not came to that yet. Also, as much as 1
like to make phone calls that is one area that my wife watches like an
accountant. So I have to limit my calls.
16
SINC-LINK
Material submitted should be on 5 1/4 40 or 30 track disk to ease the
typing LOAD and should be either Oliger or Larken, perferrably MSCRIPT or if
not that TASWORD II. I have never used any other word processor for the T/S
2068. No SPECTRUM versions please since I am not set up for SPECTRUM. If you
do not have Oliger or Larken disk or the wrong size then cassette is
acceptable. Please use a good quality tape and if postage is sent the
material will be returned. If you do not have a disk system and don't want
to use cassette hardcopy will be accepted, preferrably typed but long hand
will be accepted as a last resort. Anything I type may have errors that I
have introduced. Don't worry about misspellings or writing errors, the
content is more important than correct English.
Submissions should be sent to me at the following address:
DONALD S. LAMBERT
SNUG EDITOR
1301 KIBLINGER PLACE
AUBURN, IN 46706
Let's see how far we can take our wonderful 1 little computers?
Sinclairly yours,
Donald S. Lambert
TS2068 SERIAL CABLE
Gallon Bench
Fellow TS 2068 users. I have found
over the last few months that., some
of the information needed to
complete some projects is not always
clear with the instructions you may
receive with the project. During the
last couple of months I have started
two such projects,, namely the
conversion of the 20SO modem to a
modified serial port, and the
building of a Z-SIO port card for my
2068.
The building of both projects was
not that hard to do, having some
prior kit building experience,
especially soldering. Let me say
that the first thing anyone must
have is the patience to keep working
at it to get it right. After
completing each of the two projects,
I ran into the same problem. I
needed a serial port cable that
would work with each of the two
projects. The 2050 converted serial
port had to have a male 0B2S to
female DBS cable. The Z-SIO serial
port card had to have a male DB25 to
male DB2S cable (DBS and DB2S refers
to the connector types).
The instructions for each project
did not give a clear pinout for
either cable. They did give the
signal available at each pin, but
how these should be configured with
the signals needed for the external
modem was not given. After some
study and Just plain trial and
error, I was able to find the
correct configuration for each
cable. The information was there,
but for a novice, it took a little
work and some added advice from some
friends to put it together right.
Listed below is the serial cable
configuration that I have found will
work on the Z-SIO serial port card,
and the modified 2050 serial port.
I hope this information is helpful.
RS
232
2050
SERIAL
Z-SIO
1
GRN
1
GRO
1
GRD
2
TX
2
TX
2
TX
3
RX
3
RX
3
RX
4
RTS
8
RTS
4
RTS -
5
CTS
i 5
CTS
CTS '
6
DSR
DSR
DSR
7
S.GND
i 7
S.GNS
S.GND
20
DTR
DTR
20
DTR
f
l JUMPER
I hope the above listing of how I
constructed the cables for either of
these serial ports will be
helpful.
From The PLOTTER n/1
SINC-LINK
17
SCROLL TEXT in a UINDOU
The accompanying program is a
demonstration of scrolling text
in a window. Sy adjusting the
values o r' a few variables, one
can make the window any size
and locate it anywhere on the
screen. it is usually located
near the bottom or along the
sides. The procedure is simple
and the action relatively fast
for BRSXC. Rs a matter of fact,
there is a PAUSE 5 in line 7040
to slow things down.
Uindow scr
er way of p r
eye-ca t.chi ng
wi th discret
up many an 0
gram. This
arranged to
i f y and inco
gram of your
oils are Just anoth
oducing a flashy,
e f fee t . But . used
ion., they do liven
therwise dull pro-
demonstration is
make it easy to mod-
rporate into a pro-
own -
The window in this illustra-
tion has a useable width of 24
characters, and provides for 3
lines of print. Hence the di-
mensioning in lines 1000 and
100s, and the frame generated
in lines 8010 to 8030. You can
use other ways to frame and
even use psp^r color alone to
set it off.
The message to be scrolled is
in lines 3010 to 3070 . Notice
that the message is divided up
into strings of 24 characters
maximum, to conform to the win-
dow size. Each string is sent
to the subroutine that scrolls
the window's contents and
prints the new message segment,
on its bottom line, fit the end
of the message, lines 3030 to
3090 clear out the window and
line 3100 prints the sign-off.
In a wor Ki ng program, one would
go, instead., to the next step
at this points
The action of the printing in
the window is such that the'mes-
sage segments move progressive-
ly from c$ to b$ to a$ in lines
7010 and 7015 with d$ just pro-
viding spaces, fls they move in
this fashion, they are printed
in ascending rows by line 7020.
This produces the scroll effect.
Line 7040 prints the message
segments one character at a
time - typewriter style - on
the bottom line of the window.
We could have printed the line
in one fell blow, but then the
action might be too fast and
require a larger PAUSE value to
offset this. One gains but tit-
tle in so doing., and loses the
SEEPing which adds such a nice
touch......
5 REM ** "E-41" , 9-24-88. UP
10 REM ** SCROLL TEXT IN fl
UINDOU
15
1000 DIM a$«24): DIM b* (24)
1005 DIM C$C24): DIM d$ (24)
1010 PRINT RT 3,0;" The screen
itself does not scroll. Any
other action can goon here, a I te
mating with the display in th
e window. It's up to you,"
1020 GO SUB 8000
1030
3000 REM *# UINDOU MESSAGE
3010 LET m$ = 8!In the window size
sel-": SO SUB 7000
3020 LET m$="ected we are limite
d to": GO SUB 7000
3030 LET m$ = '!a maximum o f 24 cha
ract-1' : GO SUB 7000
3040 LET m$="ers to a line. Les
S": GO SUB 7000
3050 LET m$="than this is O.K«
More": GO SUB 7000
30S0 LET m$ = 8,than this will be I
opped": GO SUB 7000
3070 LET m$ = "0 f f i . . . " : GO SUB 7©
00
3080 FOR ffi=l TO 3: LET ffi$=d$
3090 GO SUB 7000: NEXT m
3100 LET m$s"END OF DISPLAY^.."
: GO SUB 7000
3110 STOP
3120
7000 REM ** PRINT JN UINDOU
7010 LET a$=b$: LET b*=e$
7015 LET C$=m$
7020 PRINT RT 16,4; a$; RT 17,4; b$
;AT 18,4; d $
7030 FOR n -1 TO LEM C$
7040 PRINT RT 18 ,3+n ; C* (n ) : IF
$<n}<>" " THEN BEEP -005,20: PR\>
SE 5
7050 NEXT n: RETURN
7060
8000 REM ** DRRU UINDOU FRAME
8010 PRINT RT 15,3; "^"^k
8020 FOR n=15 TO 13: PRINT RT ttf
3; "1 "+d*+" I" : NEXT n
8030 PRINT RT 19 3; "1
ST?5H?ETu1?n"™'
The screen itself does not
scroll. Rny other action can go
on here , alternating wi th the
display in the window. It's up
to you.
18
Uarren Fricke
WHY User Group
SINC-LINK
SINC-LINK
c
Of**
w ►» o u_ x <o j -i -i a, a a, h u o to u o r u.
£\ £ £ E £ £ £ oi of at <y 41 ai E £
£ U U N II II » II II II II H II II II tl II II || ||
*> o u_ r u> _j _j _i a a. a t- u o co u o r u.
SINC-LINK
Q L I P S
by Hmgh H . How-ce
TlQr&QjntJLy mo, madz, cut ^change. 04 oua, QL LLbnasLy asJUth th-z, NESQLUG tn
Boston, and u/Jte/t I wa-6 gotng thn.ou.gh thz^Ut LtbiasLy , I camo, clcslo^a
th^Lb XJtojm o4 <Lntosie^t>t , at toja^t I u)cu> <lntQSLe^t>to,d am, tt, -6o p<zsiha,p-6
you, aJ&>o uiXJUL ho. abHo* to gSLaxun a, 1<lw gojn-h ^tom tt.
It wcl<6 ^iLbmAjttoM. to th<L NESQLUG LtbnjxsLy by Potest HaJiz.; wnJLttojn by
an unknown awtho*,. ThtA cluAKoi aJLtKomgh, unhnoutn to ula , aIa woxMiy o4
olul *,e,&ognttton..
**************** QLHardw_doc *****************
Author unknown Contributed by Peter Hale
The QL has undergone only two design changes during its varied fortunes from
a hardware point of view leading to the conclusion that either it was nearly
right from the word go, or it is so awful that very little can be done with it.
Events taking place susequent to its launch confirm that it is a good machine
that has many advanced features as well a microdrives which are OK but not
everyones cup of tea. It is significant that a fairly major design change took
place at build no.14 moving from Issue 5 to Issue 6 boards. Issue 0,1,2,3 & 4
boards have not been encountered leaving one to assume they were R&D
material.
Reference will simply be made to Issue 5 or Issue 6 boards as build numbers
such as D05, Dll, D16 etc. also AH,JM,JS ROM's are not significant from the
hardware aspect. The only certain way to ascertain what is inside the black box
is to open it up and examine the board. This is achieved by turning the QL
over to gain access to eight cross -head screws. There being four short ones
under the front lip and four long ones in line with the legs. Do not remove
screws from under the microdrives at this stage. Use a new screwdriver with
the point covered in cling film to obviate an amateur chewed screw look.
Lift the keyboard up gently noting two wide flat strips which are the membrane
connector tails. Grasp these between finger and thumb pulling gently but firmly
vertically upwards. There is no need to disconnect anything else at this stage.
Re-assembly is simple, with the membrane tails being carefully inserted by a
gentle downward movement ensuring that they are not creased which could
break the internal track. Also check that the tails are not folded over in the
socket as this will prevent some keys from functioning.
The issue number is on the board in three places, but the two different boards
are easily identified by looking to the right of the ROM chips. If it contains a
HAL 16L8 chip, it is Issue 6c Issue 5 boards employed a 74LS03 chip.
The various ic's (chips) will be dealt with purely from a servicing aspect
laying particular stress on practicality. No attempt will be made to discuss the
technical merits of a particular ic or to propose extensive modification to the
circuit invloving spaghetti wiring.
Purchase of the QL Service Manual is strongly advised and at least some
practice made on soldering small components before embarking on any updates or
projects. It is essential that correct means be employed in extracting ic's as
levering with screwdrivers etc. will damage the board as well as the ic. Pcb's
are not available as replacement parts consequently damage of a serious nature
will scrap the machine. As always it is advisable to work on baking foil but most
of the ic's appear to be fairly robust.
Two ULA's are used on the main board and one on each microdrive. The
microdrive ULA is the same as the SPECTRUM microdrive ULA. It goes off pop
occasionally probably due to it being fed large doses of heat from the 5 volt
regulator heatsink, its own heat and heat from the motor. It is not easy to
SINC-LINK
21
replace on mdvl and a socket cannot be used as the ULA is. jammed up to an ic
on the board with a insulated screen in between. Leaving the screen off
produces more heat, smoke, damage and anguish.
The microdrive pcb is not available as a replacement part which is a pity as
chip failure can damage the board.
Fastened to the board is also the microdrive READ/WRITE head. Not unknown to
fail but expensive to replace. It is only available as a 'sub-assembly' being a
bog standard stereo tape head on a plastic mounting. Thus two parts become a
sub-assembly !!!.
Microdrive ULA's arrive with adorned with a variety of coloured spots, white
ones, pink ones etc. They must mean something but do not appear to have any
performance significance.
Rattles heard whilst microdrive are spinning indicate the rubber drive rollers
are not perfectly true or more probably the roller in the cartridge is not true.
Replacement of the microdrive rubber roller is easy with a bit of glue to make
sure they stay in position.
Microdrive 2 has a useful space under it which will be later utilised when the
battery back-up is explained.
Turning to the main board, one of the most frequent replacements is the ROM
chips. There are two which must be replaced as a pair. You can't get away with
updating the one chip. Usually owners want to update to a JS ROM which is easy
even if you have an AH. Just extract the two chips and insert the new ones the
correct way round. Have a look at the JS ROM chips as the colour spots again
appear (blue ones usually) and a leg disappears from the 128k chip. It is one of
the 5 volt supplies. Don't worry it works OKc Whilst the top is off
the QL it is worth considering how much keyboard bashing you do and the
consequences of a keyboard failure at a critical time. Murphy's law win cause it
to fail on something important. Replacement of the switch contacts is by means of
fitting a new keyboard membrane being both cheap and easy, after the
aluminium plate has been removed. A bubble mat provides the 'springs' for the
keys so there may be good reason for fitting a new one of these at the same
time= The ultimate I suppose is to invest in a proper PC type serial keyboard
plugged into SER2. Be careful when refitting the upper case to the lower, as any
poor contact on the six LED connections stops the appropriate microdrive.
Back to the main board to have a look at the ULA which controls the serial
ports and the microdrives. It is a ZX 8302 having a 5 volt supply on pin 40 &
pin 11 with pin 40 being fed through a link.
Links in the QL are zero ohm resistors. That is, they look exactly like a
resistor making it easy for automatic mechanical insertion but with a single black
band to indicate the value. Even though the circuit diagram shows a link for
both Issue 5 & Issue 6 boards, in practice, only Issue 5 has this present at the
side of SER1 port marked D22. That's right. Issue 5 board has a link which looks
like a resistor, in a position marked for a diode, with another position at the
side for another diode D23.
For some reason Sinclair decided to redesign this area on Issue 6 boards.
Part of the ZX 8302 provides the clock for the QL with all the hassle of
having to reset it frequently, but if the chip can be permanently powered then
the date and time would remain correct.
To implement this change, replace the link in position D22 with a small diode
together with a further diode in D23. A small 3.8 volt rechargeable battery
connected to the points marked BATTERY (under the heatsink) and fastened with
sticky pads under microdrive 2 does the trick. For purists, something like a 270
ohm resistor in the positive lead will restrict the charging current.
On Issue 6 boards this simple approach is not possible due to changes in the
track layout. The only practical solutions being to isolate pin 40 either by
bending it out, cutting it or the track, after which the same type of battery can
be connected by soldering. POS (+) to pin 40, NEG (-) to regulator common.
Staying with the ZX 8302 provides a further item of interest in that colour spots
are not used but marking codes are.
22
SINC-LINK
Example: -
ZX 8392 NCR0371275 USA F812119 P8416
ZX 8302 MCR0371275 USA P812877 P8431
In my experience, a change of chip significantly improves microdrive handling,
but it pure conjecture as to whether the ZX 8302 is faulty or if chips of later
manufacture are of an improved quality.
Moving on to the next ULA, namely the ZX 8301, a similar situation arises in that
different markings appear to coincide with differing performance.
ZX 8301 markings:-
PS P 02 CLA2310 78408B
PS P B CLA2345 8544C ZX8301 Sinclair 1983
Jittery monitor displays usually respond to the replacement of the ZX 8301 with
a loss of colour requiring a new MC 1377p. Squirt the MC 1377p with freezer to
restore your QL to full colour until it warms up again. This trick also produces
some amazing results on other chips as does running the machine with the top
off. Indications therefore are that it gets a bit hot inside and some ventilation
would help in conditons of high ambient temperature.
The reported machine crashes can be reduced by cooling the machine but for
real improvement the 7805 5 volt regulator requires attention both in the QL and
in any add-ons. A 100 nf capacitor must be soldered between input and common
on the chip not some distance away. It is part of the specification and is
chearfully ignored by some manufacturers of computers to the detriment of the
performance. The knittng of three platefuls of spaghetti hanging out the back is
asking for trouble. Keep wires neat and well away from each other, especially
the power lead, mains lead and VDU lead. I sugest you use a curly VDU lead and
run the power lead to the right of the machine. Running the TV or monitor slap
up against the QL is bad practice not only for the QL but it is in a poor
position to be viewed without strain. If possible the interior of the QL casing
should be sprayed with elecrically conductive paint and two 7805 regulators
paralleled up with the use of liberal doses of heat-sink compound. Any
regulators in add-on boards must be checked to make sure they are contacting
the heat-sink and again use heat-sink gung. Do not forget the capacitor across
the input to the regs to remove any possibility of oscillation.
The two remaining large chips are the 68008 CPU and the MAB 8049 co-processor
both of which appear to be reliable. The 8049 receives the RS 232 interface
signals,monitors the keyboard, controls the loudspeaker & co trols the joystick.
A simple but effective test is to plug SER1 into SER2 then get the computer to
talk to itself by some BASIC software.
A joystick test can also be incorporated as well as a colour and sound test.
This pretty- well proves the system. A RAM test requires a m/c routine but if
there is a RAM failure it is usually visible as a black line on the tweed start-up
screen or with a completely green or white screen.
MODIFICATIONS
1. The work involved in having your clock running continuously is quite small
and fairly easy. If possible check the current consumption which should be less
than 2 microamp with the mains power OFF. If the consumption is much greater
then examine the back of the board for a resistor which should not be there.
If the clock does not work from a battery, check for continuity between the
battery and the chip. It is not unknown for tracks having been cut.
2. Some QLfs have 33K resistors soldered to pin 21 & 19 of the 8302 then
connected to -12 volts. Some machines don't have them and some have different
value resistors. It is a nifty piece of soldering but the manual states it is
mandatory. It looks to me that the factory have never read the manual.
3. Own up all those who kept the dongle !. Now is the time to put it to good
use by opening it up to reveal a 16K EPROM. Have the EPROM reprogrammed with
what you need then insert it in the socket you have soldered into the vacant
SINC-LINK
23
location at the side. If a switch is used to pull the appropriate chip select line
low, then two EPROMS can be used but only one at any one time*
Semiconductor
Function
74LS00
Issue 5 Issue 6
2 -in NAND Gates
74LS03 3-in NAND Gates*
Bus-transceiver * *
74LS257 Address Multiplexer
7805 5v Regulator * *
7812 12v+ Regulator * *
7912 12v- Regulator * *
HAL 16L8 Hard Array Logic
Peripheral controler * *
74LS245
MA
8049
MC 1377P
MC 68008
SN 1488
SN 1489A
ZX 8301 ULA
ZX 8302 ULA
PAL/TV Signal Generator
Central processor
RS 232 Buffer *
RS 232 Buffer *
Controls display
Controls MDV's, SER & clock
Test Program
The test program on the cartridge SER1 and SER2 to be linked so that the
QL can talk to itself which is the most comprehensive of the sytems tests. If the
ports are not linked then type GOTO 4480 to carry on.
The memory test is very detailed running as a job but it takes a very long
time to complete, A QL with the full 512K of extra memory will take about two
and a half hours. Watching it is as interesting as watching paint dry but it is
great as a demonstration for non-computer people. If you put a tiny bit of
something in memory it indicate it in the BAD window.
If free_mem from Toolkit II or better still Free_memory from Supercharge or
the memory test indicate faulty chips then put a good memory chip in a test clip
and put it over each chip in turn. Power down between each test or the results
will not be meaningful.
We carry ALL hardware and software lines (of the Sinclair QL.
W« also carry the Z88.
WHITE FOR FREE CATALOG
Sharp's, Inc.
Hi. 10. Bos 459
Mechankovlfla. VA 23111
(804) 746-1664 or 730-9697
IT'* HERE!!
QL, TRIVIA— OLUE
HEBE IS (SEAT NEW COMBINATION 6M€!
if rou uie slue m trivia, then this is for tdui
« HAVE COMBINED THESE TWO GREAT THINKING HANS' GAMES
IN ONE GREAT PACXAGE! I
13 ROOMS - 13 1€AP0NS - 13 SUSPECTS
THAT'S (TVER ZIH POSSIBLE OUTCOrESI
AND NOV - OVER 75# TRIVIA QUESTIONS!
QUESTIONS COVER EVERY CONCEIVABLE SUBJECT!
mi WAMr,m
Also included; at ne ntrj cost, your etolet of
FOOTBALL FORECASTER or LIFE EXPECTANCY FORECASTER
(Specify which you uculd like ufeea you order.)
« THINS YOU'LL LIKE THIS Of!
QUI PRICE? ONLY *l?e9S *«2ph
JMILMLE DELUSIVELY PRORS
ENTERPRISES
24
SINC-LINK
I
■ ■ ■
kirn*)
zymase ,
«
O
z
M
3
Z
Z
0
a
j
j
a
id
U
a y
<rz 3*-o
Ul3 yi-A
JoaHiz^
O
CE
U.
bJ
a.
ZJfiZS
OZOOD
h zjzx>z
bJ ZtaJ
U kJQCOHbJ
z>y_iH-.j
zz>o<z<z
Houaa
d
o
z
•> res— -33
£1 OtJ)-? i.O !«J !«J £ Q. CS J > > ^
o a uj <z a. h a: o x a: r a cc a
25
************************
*** INTERRUPT MODE 2 ***
*** by Bob Mitchell ***
*** 910403 ***
************************
INTRODUCTION
The purpose of this paper is to bring together many of the details on the
Interrupt Mode 2 (IM2) that I have gathered over the past several years-
References are included in brackets? eg I 1 3? to indicate source material
detailed at the end of the text.
BACKGROUND
An interrupt is a signal sent to the microprocessor which generally suspends
the execution of the current program? without the program being aware of it. The
processor resumes its original work when the interrupt service routine finishes.
These interrupts take place at the rate of 60 per second (50 per second for
Spectrum) .
Interrupts are used for two main purposes: til
1. To deal with hardware events such as a key being pressed or a character
arriving through a serial port. These events cannot be ignored; the incoming
data must be either processed immediately or stored in a buffer.
2. To call subroutines that are provided by the hardware or operating system.
SPECTRUM
In the Sinclair Spectrum and indeed in the TS2Q68? such an interrupt forces it
to jump to 38 hex or 56 decimal where it increments the system variable FRAMES
and scans the keyboard to determine what is being keyed in? if anything. If this
interrupt were diverted elsewhere to a user routine it would provide a very
powerful facility with unlimited potential uses. This is precisely what the use
of IM2 is all about.
There are actually three interrupt modes in the Z80 processor but only two of
them apply here: IM1 and IM2. When the Z80 receives an interrupt? it expects the
interrupting device to place one byte of data on the data bus which acts as the
low order of an address.
The interrupting device is the ULA (Uncommitted Logic Array) which implements
necessary timing and hardware control. It is used to select chips and decode
addresses for RAM and ROM? for timing and control of the Z80A microprocessor ?
for keyboard operation sensing? to control signal conditioning and transfer of
input and output information. 121
The high order of the address comes from the I register. The Z80 looks at this
address which gives it A SECOND ADDRESS that it then jumps to. In the Spectrum?
no such low order byte is provided and by default the Z80 thinks it sees FFh or
255d„ Apparently this does not always work properly ? Toni Baker warns against
using IM2 on page 102 of her book on machine code in that after some time a
system hangup appears to occur. In any case? it certainly does not work with the
TS2068, at all.
Still? it is worth examining the Spectrum method more closely? the better to
understand what has to be done with the TS2068o
The I register needs to be changed to a value so that the pair of addresses
< 1*256+25 5 > and <I*256+256> point to a user defined routine. But be warned: the
I register cannot be altered to hold a value between 64 (40h) and 127 (7Fh). If
SINC-LINK
27
the I register is loaded with addresses within the forbidden area, there will be
some screen interference. 131
An inspection of the addresses so formed is made and a jump is made to the
address that it holds? the latter is known as a VECTORed address. Therefore a
vector must be found somewhere in RAM and above 32768 (8000h).
A search of the Spectrum ROM turns up a suitable value for I which will cause
a jump to 65129. This value is 09h. Putting this into the address formulae in
the previous paragraph gives the pair of addresses 09FF and 0A00 (2599 and 2600
dec)? examining the ROM disassembly for Spectrum shows these two addresses
contain 69FE or FE69 taking the bytes in the proper order which equates to 65129
dec. This is the start address of the user routine that IM2 will activate.,
Two added notes s C 3 3
1. if Interface 1 is fitted to the Spectrum? the vectored address may be taken
from the Shadow ROM causing a crash.
2. Prior to using IM2, all registers should be saved and then restored on
returning to the normal IM1 status.
TS2068
The TS206S does not supply a fixed low order byte but rather one that may vary
from 0 to 255. This could be a problem but there is a way out. One technique to
overcome this problem is to create a block of 257 addresses each filled with the
same value. The I register is altered to point to this block and IM2 is called.
No matter what the lower order byte turns out to be? the block will produce the
same address which will vector control to the start of the user-generated
routine. Why 257 addresses? Remember that two addresses are inspected and if the
low order byte were 255 <ie, the last of 256 bytes), there would have to be one
more address with the same value as all the rest.
The vectored address can be a value which is a multiple of 256; or it can be
any address, if a specific one is defined in the set-up routine. If the vectored
address finds an instruction to jump to a specific address, then that is where
it will go.
Examine listing 1 (a MOTHER PROGRAM used to generate the block of bytes and
set up the vectoring to a specified address).
LISTING 1
FEOO
C5
PUSH
BC
sSave all
FE01
D5
PUSH
DE
sthe
FE02
PUSH
HL
s registers
FE03
F5
PUSH
AF
FE04
2100FB
LD
HL,FB00
spoint to the block start.
FE07
0600
LD
B,00
sset reg B for loop? becomes
FF when loop starts.
FE09
36FC
LD
(HL),FC
:put FC into HL
FEOB
23
( INC
HL
spoint to next byte.
FEOC
10FB
DJNZ
FE09
: repeat until B=00 again
FEDE
36FC
LD
(HL),FC
:put FC into 257th address
FE10
3EC3
LD
A,C3
:put C3 into A register
FE12
32FCFC
LD
(FCFC),A
:load FCFC with C3 (JP)
FE15
2169FE
LD
HL , FE69
sload HL with addr 65129
FE18
22FDFC
LD
(FCFD) ,HL
spoke this into next two addrs
FE1B
3EFB
A,FB
?load A register with FB
FE1D
ED47
LD
I, A
•load I register with FB
FE1F
Fl
POP
AF
i restore all registers
FE20
El
POP
HL
FE21
Dl
POP
DE
FE22
CI
POP
BC
FE23
ED5E
IM2
sturn on IM2 & jump to 65129
28
SINC-LINK
FE25 C9 RET
:return
However, this complexity is not needed if a jump is to an address which is an
exact multiple of 256. Listing 2 below gives an example of this version [42
LISTING 2
r tUU
PI ICMJ
.DL
cert i
r tUl
1/3
nc
ETCfT>
rfcUi
rv/vjn
Hi
F<S
pi jqn
r won
AF
fin
FFH4
1 but
210DFF
LD
HL, FEOO
FF07
0600
uouu
LD
B.00
FFn9
Jul 1/
LD
( HL ) i FD
FFOB
INC
HL
FFnr
1 HFB
DJNZ
L/KJ Mi.
r cue.
^Fn
Our U
Ui/
FE10
3EFE
LD
A,FE
FE1D
ED47
LD
I, A
FE1F
Fl
POP
AF
FE20
El
POP
HL
FE21
Dl
POP
DE
FE22
CI
POP
BC
FE23
ED5E
IM2
FE25
C9
RET
sput FE into A register
: load I register with FE (65024)
sturn on IM2
s return
In this version the value loaded into the A register at address FE10 determines
where the user defined routine should start.
Some final thoughts:
When this technique (the 257 byte table) was installed in the TOOLKIT utility
TS2068 version (tstk.Cl on the Omnibus Disk), it of course made all the options
using IM2 operational. Later when the TS2068 version was converted back to
Spectrum, the technique still did its job, at least with the Spectrum Emulator.
Whether it works on a Spectrum machine has not been confirmed.
A concerted effort has been made here to collect accurate information as a
ready reference next time use of IM2 is to be attempted. There may be errors and
I would be grateful if any
reader would let me know of any that are found.
Bob Mitchell 20 Wild Briarway Willowdale Ont M2J 212
#***************»**#***************^
Footnotes (References used in the text).
[13 Barron's Dictionary of Computer Terms
121 ZX Spectrum User's Handbook; by Simpson and Terrell
C33 Howard Allen: Popular Computing Weekly 850704
C43 Floyd Chrysler: Time Designs Sep/Oct 87.
*****#****************#************^
SINC-LINK
29
O L I P S
By Hugh H Howie
Doing saw reading recently and it cane to ne that
we should be holding sons kind of t big birthday
bash for soae of those folks who have done so such
for us, or should I say, so audi to us?
It is not so long ago that a computer was soae kind
of nut who computed things for us. He hsd to be for
we were not capable of doing it for ourselves* until
t guy sailed Sinclair (snd others) cane along about
ten years ago, (or so) when he cane out with his
little black boxes which we have all learned to
love. (Did soaeone say hate?)
Anyway we have cone a long way since then, perhaps
too far. fe have all kinds of little black boxes,
and white ones too. Sons a bit off-white, sons just
plain colored according to the type of language we
are using to describe then. That language is a bit
colored at tines!
Anyway, Sinclair got Knighted by the Queen of ths
British Empire for what he did to us. Just inagine,
hi got to be called a SIR, and allowed to ride
around on a White Charger just like a fairy tale
Prince, just for giving us a black box to play with.
Now was that fair?
He did not do this all on his own, Sinclair didn't,
he had the help of a nan called Charles Babbage who
with the help of the aovemnent tried to build a
meehartkal machine to do all the work of the
eovemnent so that they could collect taxes a lot
easier in the future. The government of the day put
up a handsome £17111, and Babbage hiaaelf put in
£§iff.
That was way back about 1831 or somewhere about
then. Who esres about the exact date? they did not
have computers to do the work for then. In fact
there is doubt as to the exact date of his birth.
Sons of ay sources say 1791, and sons 1792. But I
needed something to write about so ay contention is
he was born in 1791. One source says he was born in
Devon in 1792, where his father was a banker. The
most exact date I can get he was born on December
2§th 1791, in Walworth in London. Just a quarter
mile from the Elephant and Castle Pub. A couple
hundred miles froa Devon and a year earlier.
I guess he got his flair for figures from his
banker/father, also how he got his idea of compiling
a table of logarithms. (Cor bless ' in)
He at one tias even tried ghost hunting, and there
are aplenty of then over there, and ever since we
have been blessed with our own versions of ghosts on
the silver (or whatever) screen. Quite a guy this,
he, hated organ-grinders.
hand at constructing a machine to do his
calculations. He got so far as to ask the Qovernmsn*°
of the day for a grant, but the Prine Minister i
that tine, one Robert Peel, dismissed his ideas as
"worthless to science" Even Disraeli thought the
counting machine's only use might be how to
calculate hoe much money had been wasted on it.
A few years later Sir Robert Peel changed his
thoughts, and offered Charles Babbage a knighthood,
which our Charles of course turned down. Thereby
losing a nice little stipend. Ah So! I guess his
computer was down that day!
A few years pass, Kings and Courtiers cone and go,
but the works of Charles Babbage go on forever. So
much so that without his pioneering we would not
have so many of the things we have to-day. We even
used his ideas to get to the Noon.
Now, to-day, all those years later, Charles Babbage
is being honored. In Britain a Postage Stamp is
being brought out in his honour. Not only that, but
they are going to build a full sue working model of
his "Second Difference Engine" (It was later th@^
called it a computer.)
This contraption which he wanted to build way back
then, is going to be built this year, and it Y
going to be displayed in the Museum of Science an*.
Industry. Now aint that something?
The nan who invented the computer is being honoured
TODAY. All those years after he could not get money
to do the job.
By the way, the model being built this year is going
to cost the Computer Industry about £§ff,|ff. thats
half a million, (pounds that is.) On top of that, it
is going to weigh in at about three ton, and stand
about six feet high. Sot a spare room in your home?
To finalise the story. Charles Babbage was not
buried in one piece. They reckoned he was such a
genuis, his brain should be preserved for posterity.
It is kept in the Hunter ian Museum, at the Royal
College of Surgeons. His body was buried in Kensal
Green Cemetery in 1871.
So there you have it. When you are alive, and
working with computers, you are told you are out of
your mind. When you die, they take the mind out @f
you! and store it away for folks to gawk at.
Sometimes you just can't win..
Lets have a BIG BIRTHDAY BASH for
CHARLES BABBAGE, the father of all Computer Battles.
He went to Trinity College, and about 1811 tried his
Happy 211 Years Mr Babbage.
§
MIKE'S NOTEBOOK
By: Michael J. Di Rienzo
(NOTE: REPRINTING OR REPRODUCING
4 IS COLUMN WITHOUT THE EXPRESSED
-rilTTEN PERMISSION OF THE AUTHOR IS
HEREBY PROHIBITED. FOR PERMISSION,
WRITE THE AUTHOR IN CARE OF THIS
PUBLICATION. )
Here's another easy— to— use command
utility which quickly PRINTs a
string o-f text at any size and at
any pixel coordinate location. You
mill be able to use this utility in
your own programs. The syntax
-follows: PRINT USR large ; AT
X,Y;W,H;"txt" The text at the end o-f
the line can either by within quotes
or use a string variable (A4...Z*).
The variables "X" & "Y" are the
column (0-255) and line (0-191)
pixel location where you want the
text to commence PR INT i ng . The
coordinate 0,0 is at the upper left
corner o-f the screen. The "W"
variable is the letter width in
terms o-f characters (1-32), and "H"
is the height o-f the letter (1-24).
Be sure to note the commas and
fmicolons in the command syntax, l-f
kxx make an error, you will get a
"Nonsense in Basic" error. Note that
the PAPER and INK command can be
used within the PRINT statement in
their usual way. FLASH also works.
I-f your text runs off the screen, it
will wrap around to the opposite
side, so you* I I have to plan -for
text length and size. Be sure to RUN
line 100 to initialize the CODE
be-fore RUNning -for the -first time,
then use RUN thereafter. The CODE is
not relocatable and is 350 bytes
long. Have fun!
Happy TIMEXing. . .
'LARGE'
By Michael J. Di Rienzo
10 BORDER 0: PAPER 0: INK 7: C
LS : OUT 254,1: LET large-60400
20 LET d*=*2068 LARGE print"
30 RAiwOi ;rz£
40 LET »=INT (1+RND*2)
50 LET h= INT (1+RND*12)
60 LET x=INT (RND*(256-(w*8*16
) ) )
70 LET y= I NT ( RND*( 192-< h*8 ) ) )
80 LET i = I NT ( 1+RND*6 )
90 PRINT INK i;USR large; AT x,
y;*,h;dt : PAUSE 100: CLS : GO TO
40
100 CLEAR 59399: LET t=0
110 FOR n=60400 TO 60749
120 READ a: POKE n,a: LET t=t+a
130 NEXT n: IF t<>31728 THEN PR
INT FLASH l;*Data Error!*: PRINT
"Recheck DATA lines": STOP
140 RUN
150 DATA 17,117,33,225,167,237,
82,32,250,213,223,254,59,32,40,2
3 1 , 254 , 172 , 32 , 35 , 205 , 220 , 27 , 205 ,
96,38,237,67, 10,91,223,254,59,32
, 20 , 205 , 220 , 27 , 205 , 96 , 38 , 237 , 67 ,
12,91,62,8,50, 14,91,223,254,59,4
0,2, 207 ,. 1 1 , 23 1 , 205 , 239 , 27 , 205 , 17
5,47,33, 15,91,235,237,176,62,255
,18
160 DATA 33,15,91,126,35,34,0,9
1, 111,60,200,38,0,41,41,41,237,7
5,54,92,9,62,8,50,4,91,58, 11,91,
50,9,91,58, 10,91,50,8,91,62,9,50
,5,91, 126,35,34,2,91,7,50,6,91,5
8,5,91,61,32,50,58,4,91,61,32,24
,58, 14
170 DATA 91,71,58,12,91,79,58,1
0,91, 129,5,32,252,50, 10,91,42,0,
91, 195,60,236,50,4,91,58, 13,91,7
1,58,9,91, 128,50,9,91,42,2,91, 19
5,89,236,50,5,91,58, 12,91,71,58,
9,91,50,7,91,58, 13,91,79,197,205
,221,236, 193,58,7
180 DATA 91,60,50,7,91,13,32,24
1,58,8,91,60,50,8,91,5,32,221,58
,6,91, 195, 105,236, 128,64,32, 16,8
,4,2, 1,58, 142,92,238,255,71,58, 1
43,92, 160,71,58,8,91,230,248, 111
,58,7,91,254, 192,208,31,31,31,23
0,31, 103 , 203 , 28 , 203 , 29 , 203 , 28 , 20
3,29,203,28,203,29,62,88, 180
190 DATA 103,58,142,92,166,176,
119,58,7,91,71,230,7,246,64, 103,
120,31,31,31,230,24, 180, 103, 120,
23,23,230,224,111,58,8,91,71,31,
31,31,230,31, 181, 111,235,33,213,
236, 120,230,7,79,6,0,9,70,26,33,
6,91,203,70,40,3, 176 , 18 , 201 , 47 , 1
76,47, 18,201
SINC-LINK
31
THE QUEBEC LINK
by; Real Sapon, 3288 St-Hubert5 tontrtal (Quebec) H2U 2R4
LINE WITH THE QL
Frst you need a modem. You should look for 200 or 2400 bps. The
300 lips modem are very cheap but very,very slow. Then you need a
cable. Since the QL serial port is not standard, you cannot buy a
modem cable of f the shelf . it s easy to buid to right cable, you need:
1 DB25 male connector wM casing
1 DBS male connector with casing
1 cable with at least 3 wres
Tht connections are:
DBS (QL)
2
3-
DB25(M0DEM)
— 2
— 3
- 4
- 5
6~
- 7
20™
side, 4-5 and 6-20 connections are optionak But
designed this way your cable is in fact a double cable. To connect a
modem, youpbgtheD69hGL>sSER2andtheD625totht modem.
ButifwepbgtheDB9nSER1,wehavea NULL-MODEM cable
that can be used to transfert from aQLtoaPC{youwi need a
GENDER CHANGER because the serial port on the PC is MALE too,
but that's another story.}.
Next, you have to find a communication software. We wi look at
QJJNK and QL52.
(LLNK is a canarfan software written by f*ETA MEDIA PRODUCTION
from B.CL It is a shareware program, so it can copied and
distributed freely. You try it, if you ike it, you register drectiy to
the company for a smal price.
QJJK supports XMODEM protocol which is essential to download
programs or fies from a BBS, There is a dafog dreetory and an
option t@ redal a number if it is busy, plus macro keys, orHht ed&or,
ets= There is no terminal emulation, this is a pure ASCI terminal
With the shareware version you get no documentation, you have to
register to get a manual
QL52 is from the QUANTA irary. It is a pubic domain program very
easy to use but has less power than Q_LNK. QL52 supports
XMOOEM too, but ody the checksum version, Q_LN< has the CRC
and the checksum (XMODEM CRC is more reiaWe than the checksum
version}. There is no dafing directory you have to send the
command drectiy to your modem or define an ALT KEY to do it.
QL52 emulates a VT52 terminal and can display a special Hebrew
character set if you want
Ok, you have your modem, cable, software and some BBS telephone
numbers. Shoe you are a QL user, you are a "distinct computer
user" from say the vast majority of PC users. You won't fnd any
QL programs on odd. You can wnte/read fetters to/from other
users on the BBS., join international conferences on any subject,
download text fies or graphics OF fies.
fies avaiable for download are PACKED into ZP or ARC
fies. This is done to combine many fies into one and reduce the
transmission time. Ore the download is made. The fie is not ready
to be read or used, you have to unARC or unZP it frst! Hopeft%
software to do that exists for the QL
For ARC fie, UNARC from METAMEDIA wi do the job. The ZP are
hinded by QLU€Pf written by Jan Brddbesk of Hoiani
GF fies are picture stored in a format so that a screen created on
a AMKjA can be viewed on a QL screen, colors included wfth no
problem, There is at least 1000 GF pictures in the pubic domain, on
any subjects from astronomy to XXX-rated picture. To view those
pictures you need again a special program caied SH0WQF
{COMPUSERVE}. Results are stunning, you wi find that your QL can
show very good graphics especialy in colors.
QJJK;
META mHA PRODUCTIONS, 726 West 17th
Vancouver BC, V5Z 1T9
QL52:
QUANTA LBRAR1AN, Paul Hotooren
5231 Witon Wood Court
hdanapois N 46251 USA
SHAREWARE & PUBLJC D0MAM for QL(i$ catalog on disk):
HC LOQQUE, PO Box 1393, Place du Pare
Montreal (Quebec} rEW 2R4
32
SINC-LINK
FOR THE TIMEX/SINCLAIR 2068
Entering and Recalling Tex t
in Ma chine Cod
By Dennis Jurries
This subroutine will allow the
user to enter up to 277 characters
into machine code and recover them
at will. The routine consists of
four parts. The first part is the
machine code loader program.
10 FOR x =55501 TO 55533
20 PERD z ' 90? E x = Z
30 NE'*T s
40 DfiTfl 52 , 0 ; 205 ., 48 . 18 . £25 , 70 .,
35,229,33, 153,215, 125, 35,254, 128
, 55 , 250 , 16 ,248 ; 126 , 35 , 254 , 128 , 20
0 ,215 =24 =248 , 201 .. 205 , 205 , 2 16 ,1,2
01
160 F
170 P
160 I
N POKE
1Q0 IF
N LET J
i =1 TO LEN
KE j,CODE a$
a$
i )
i =LEN at
55500 PNC
55500 AND i =i_EN
55500 THEN LET
5$
"1 i_
230 isu -.uc. *k?y
240 LET z=2-l
250 STOP
300 PRINT "TE.xT «" , z , :: ,2
-LEN as, - characters remaining
310 RETURN
400 PRINT
410 print "Ho re text" ( v /n ) "
420 PRU5E 0
430 IF INKEY* = My OP INKE,'**"
THEN CLS . GO TO 110
440 RETURN
RUN the above program then
DELETE it. The second part consists
of six lines that allow the text you
input into machine code, to be re-
covered.
10 FOR x=l TO Z
20 POKE 5553 3, ;<
3 0 RANDOMIZE U5P 555 30
40 PRU5E 0
50 NEXT x
60 STOP
The above is set up to print
on the 24th line. Several different
messages can be run if you add a line
45 CLS. If you wish to print text
from the top of the page, then POKE
55502,2. To change back to the 24th
line, POKE 55502,0.
The following is the OP CODE
for the machine code routine, that
was entered in part one above. This
is the fourth part of the subroutine.
The third part of the routine
allows the user to put text into
machine code. Once the user puts
the text in and tests it, then this
part may be deleted.
100 LET z=l LET j =55224-: LET 3
$
110 PRINT
characters
text on the
ess enter
ext. i:
PRINT
GO SUB 300
INPUT 3*
IF LEN a$>
0,0; "Tex t
120
130
140
150
NT RT
text . "
T Z =Z -1
CL5
GO
In put text Hi m s t 32
if yo u ui an t to p r i n t
24th line on m :> . Pr
yjhen finished tui th t
=55500 -.j THEN PR I
too Lena . Inpu X
: LET j = J -LEN
TO 110
5$ LE
SINC-LINK
55501 LD R ,0
5550 3 ChLl. 4656
•55505 POP HL
55507 LD 5 ■ (HL '■
55505 INC HL
55509 PUSH HL
55510 LD HL , 5522 3
55513 LD R = j HL>
55514 INC HL
55515 CP 126
55517 UP 0,55513
55519 DJNZ 5; 55513
55521 LD R , i HL)
55522 INC HL
55523 0= 126
55525 RET Z
55526 R5T 16
5552"? 55521
55529 RET
55530 CRLL 55501
55533 01
555 34. RET
To save the machine code routine
type SAVE "mssg" CODE 55224,350.
PROGRAMMERS
PLEASE TAKE NOTE
Would I be out of order if I were to
request that ALL programmers take a
thought as to where their programs might
be put to use?
So many excellent programs, especially
Data-Base/Address style, are of little or
no value to the Canadian user. Why ?
Because our Postal Code is in the format
ASA 5A5, whereas the USA Zip Code is all
numbers.
Make the Address Code universally
acceptable. Please? H.H.H.
MINERVA
Recently I bought MINERVA, and I like it,
but only up to a point. I find that when I
first switch on the QL I have to wait
quite a few minutes to give it time to
warm up, else I get so many varieties of
the tweed pattern, and the clock crashes
all over the century, I cuss Minerva all
over the place.
Another thing I do not like about it, and
that is the fact so many of the earlier
programmes are no good any more.
it does have some good points. I like
the Alt/Ctrl/Shift/Tab reset. Really great.
And I just love how much cooler the
machine runs. And it is nice to have one
little bit less sticking out the back, (TK2)
My version is 1.66. How do other folks get
along with her?
Would I marry her again? Well-
H.H.H.
Compare the PSION MOBIL COMPUTER
to an/ other portable computer
now in production.
Dollar for
Dollar,
f ea
ture for
feature ,
it can*
t he
heat .
Model
MC-200 MC-400 MC~600
CPO
tfiftft m
M 16
bit CMOS ****
Speed (Mhz)
7JI
7.68
7.68
BIOS mfg
Phoenix
Phoenix Phoenix
RAM Standard
128R
256K
768K
RAM Maximum
512K
512R
768K
Screen diag
10"
10"
10-
type (LCD)
SupTwist Retardation Film
protocol
CGA
DCGJt
OCGA
resolution
640x200
640x400 640x400
coi x line
85 x 14
35 x
14 ???
No. of Keys
69
69
79
Detach keybd
no
no
no
Slots Stand
0
0
0
Prop
1
2
2
Battery type
life
8xM Ilk/Opt Rtcn IfiCad Pik
T% hr en w in u
repl ace
yes
yes '
yes
Ports Ser/Par 1/1
l/l
1/1
Video Port
no
no
yes
ROM size
256R
2S6R
2S6R
Software
in ROM
GUI
GUI
MS-DOS 3.2
Touch pad
jes
J%3
no
33
uQ
Floppy Ext.
no
no
L44Mb 3.5"
Hard Disk
no
no
DO
RAM Disk
OR
OR
1 Mb inters
Maximum
2 Mb
2 Mb
8 Mb
Slots
4
4
4
Past serial
transfer
Modem
Microphone
Programing
language
Dimension
Height (lbs)
Warranty
Price
***** External Option *****
***** External Option *****
yes yes se
yes yes yes
0PL OPL a/ a
*** 12.4" x 8.9" x 1.9" **«
4.3 4.3 4.3
ttttftttt 12 months ********
$1199 $1699 $2999
Call for current quote from
EMSo f t
Box 8763, Boston, MA 02114
(617) 889-0830
34
SXNC-LINK
inAR/APR 1991
Dear Out-of-Town Members,
Marl3, 1991
Before I go any further, I'd like
you to take a look at the newsletter.
Isn't it great! Seems to me this issue
has something for just about everybody.
Now, most of the credit goes to our
members who have contributed all this
material. But I was looking back in our
old n/l's, and find that Jeff Taylor has
been the Editor for exactly three years
now. Seems like that was about when our
newsletter took off. I wonder
now could ail of you who appreciate
the n/1, drop a line to Jeff and let him
know personally how much you appreciate
his efforts. You can imagine that a
person sometimes has need of such a lift
after three years of effort!! Please do
drop him a line, all of you. -Do it NOW!
His address is:
335 - 75 Lemonwood Drive
Islington, Ontario
CANADA' M9A 4L3
In order to get this letter out I
have had to put aside some interesting
programming exercises I was doing.
One of the things was replacing the
"pico" menu screen compression routine
in my Larken "OMNIBUS" program with the
"cmpres.Bl" picture compression routine
that you will see in this issue of the
newsletter. More about that later.
Another project has been to try and
help a member having difficulty with
managing the printer on the 2068.
Then I have been experimenting with a
disk management system from Bob Swoger,
called Logicall.
I also did some experimenting with
displaying "screen?" a la library disk
#15, using the before-mentioned
"cmpres.Bl" routine. And while I was
about it I did some more refining of
the "cmpres.Bl" program itself, to suit
my fancy.
So there has been a lot going on.
When working on the printer problem
I had to re-learn printer drivers. Since
having the Larken system on the 2068 I
had pretty well forgotten all about
Tasman, Aerco, and Hacksel driver
software, and had to get back into it.
I have always felt that the matter of
controlling a printer on the 2068 (and
other computers) was somewhat akin to a
"black art", more than an understood
thing. I am still of that feeling, but
I think it is about time we shed some
light on the topic of printer control.
The material I have on hand does not
seem to offer much understanding into
the principles. I think that with more
members getting printers now, we should
try to get some articles into the
newsletter on the topic. Anyone
interested in producing an article, or
interested enough to write about what
you know, for me to shape into articles?
For instance, the differences between
the three, (or four, if you include the
Larken) printer drivers . The principles
behind the need to "tokenize" or not to
"tokenize" when sending out printer
control characters. Why must we "point"
(in addresses 26703/4) to the Aerco and
Hacksel driver code, and apparently not
need to with Tasman. Is it possible to
use Tasman code with a Hacksel I/F? And
lots more questions. Any responses?
Enough on that subject.
I mentioned getting a copy of
Logicall, earlier in this letter.
Logicall is Bob Swoger ' s effort and is
designed to make it easier to manage the
Larken disk system. It is not fair of me
to critique this program suite? I am too
biased toward Bob Mitchell's OMNIBUS to
make a fair judgement. My comment would
be that Logicall is somewhat elementary*
Talk about damning with faint praise!
Bob Swoger is trying to get the program
out to all Larken users. I can send you
a copy if you'd like.
Bob Mitchell has incorporated Kris
Boisvert's (BYTEPOWER) "HELLO" program
into OMNIBUS. I'm afraid we also
modified it somewhat to suit the OMNIBUS
application better. It's a super program
idea, and I'd recommend every Larken
owner borrow the Boisvert disk from our
library, that is, disk #32.
There is also a new version of
OMNIBUS, in the disk suite #2, a version
suited for those users who do not have
a RAMdisk. Ask for it.
Jeff Taylor wished to thank all the
members who wrote and phoned, with
suggestions re his Portuguese TOS disk
system. About 6 members who were
familiar with this system gave
suggestions. I can repor* that it is up
and running now, as a result oT these
suggestions.
I have been a little remiss in
answering some letters from members. Too
busy getting our Neighbourhood Watch
organization up and running, I guess. I
have been back at the computer for a
while, and am getting caught up. But I
would like any member who is waiting for
something from me, to drop a line and
ask for it again. I might nave
overlooked your request. I should have
the outstanding letters answered by the
time you get this newsletter. I would
like any member who is still waitng for
something from me to drop me another
line; I might have overlooked your
request.
Joan Kealy asks whether the animal
on the last issue was a cheetah, or was
it one of our MLynxH ! She goes on to
apologise, sayng, MI need a resistor in
my pun line". We forgive her, but only
because of the kind things she went on
to say about our newsletter!
Ian Robertson, one of our in-town
members (we mentioned him in the last
newsletter) unpacked a Larken RAMdisk
that had been sitting idle for a coule
of years. Plugged it in and the programs
were still intact on it. It has 4 chips
on it, so that might give other owners
an idea how long the batteries will last
on their RAMdisks. My own RAMdisk, with
8 chips on it has the same set of
batteries since December 1988. I have
three cells on mine.
Back in '88 I was having problems
with improper chips, and I put the third
cell on to see if that would make a
difference (It didn't, but I left it
there anyway. I replaced the chips.
I read in past issues of NITE TIME
NEWS, the Chicago area club newsletter,
that some people, including members of
our club, had trouble with Larken disk
sytems.- Seems that their old, really old
TEAC drives could not read disks that
were formatted at the 6 ms. head setting
speed . ,
I cannot go into it in this letter, but
if anyone is interested, I'll send you
the clippings from newsletter on the
nature of the problem, and the
solutions.
Something else I read in other club
newsletters. There was a little
brou-ha-ha over Michael De Rienzo's
articles. Nothing to do with us. Seems
that his prefatory statement asking 'no
copying without permission' riled some
folks. .
We are publishing them with
permission. Well, Michael asked that we
send him copies of our newsletters that
carried his articles, which we are
doing. I felt the articljs were so
interesting that we had to carry them.
I hope you agree. There's a very
interesting one in this issue,
"cmpres.Bl". Try it, it's neat. It s the
one I mentioned using earlier.
I have been compressing games
screens onto a single Larken track using
"cmpres.Bl". I then have been working on
a program which would step the drive one
track at a time, and load/display the
compressed screen from each track m
turn. A problem though. If the drive
stops spinning before I request the next
image, the drive will not pick up that
track. Seems the drive must be spinning
a moment or so before the 'track read'
takes place. I solved this by having the
Drive take two steps. This gave the
drive time to get up to speed. What
happens is that I "read" each track
successively on one side of the disk,
then go back and read each track on the
other side of the disk. The advantage of
the whole thing is that the drive does
not have to go back to track 0 every
time a new file (screen) is to be
loaded. I shall write up an article for
the next n/1.
Speaking of Michael Di Rienzo, I see
in the current issue of the Seattle Area
T/S UG n/1 an advert of his offering a
lot of TS2068 equipment for sale. Makes
me think he is giving up on Timex.
One of our members, Larry Crawford,
has been working on Tasword, making it
more responsive to the Larken
environment. Seems to have completely
reworked the Basic. Looks pretty good.
Anyone interested, ask me about it. I
use Tasword a lot to put the HELP
sections in the club library.
Some time ago I mentioned that the
club had bought Peter Hacksel's printe
interface remainders. There were about*
10 printer interface boards. We still
have three boards of the type that plug
into the cartridge dock. Two of them are
populated. They are not as useful as the
boards which plug into the rear of the
computer, since if you have a Larken
system the cartridge dock is already
occupied. No doubt the board could be
adapted to rear use, though I'm not
familiar with what's required. Anyway,
you can have one of these boards for
$10. You would need to make up your own
ribbon cable for it.
I've run dry. Can't think of
anything more, computer-wise. Shall have
to close this off now. But one last
reminder. Do drop a line to Jeff. And if
you seem to have been overlooked by me
in some request, I apologise, and do
remind me.
Sincerely,
George Chambers