SINC LINK

VOL.8 NO. 6

NOV - DEC '90

SINC-LINK IS A PUBLICATION OF THE TORONTO TIMEX-SINCLAIR USERS CLUB AND IS ISSUED 6 TIMES A YEAR. COPIES OF THE NEWSLETTER ARE SI. 50 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, 7Z0 EGLINTON AVE. W. , TORONTO. START TIME: 7:00 PM.

SEND CORRESPONDANCE TO:

Attention: SINC-LINK TORONTO TIMEX-SINCLAIR CLUB, 14 RICHOME SCARBOROUGH, ONTARIO, CANADA M1K 2Y1

EXECUTIVE OFFICERS:

PRESIDENT; TREASURER; SECRETARY ACTIVITIES: TAPE LIBRARIAN ZX81 : TAPE LIBRARIAN 2068: TAPE/DISK LIBRARIAN QL: PAPER LIBRARIAN: NEWSLETTER: LIAISON OFFICER: ( Out-of-town members )

EDITOR USERS COURT,

TORONTO TltlEX-SINCLAIR USERS CLUB

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

TORONTO T I M£K-S I NCLrA I R USERS CLUB

Editorial

I recently came upon a happy discovery for club members with modems. A BBS devoted entirely to Timex-Sinclair 2068s and running on TS modem software! I'm talking about "SIR CLIVE'S CASTLE" running out of Ottawa, Ontario at (613) -745-8838 . The system runs at 300 and 1200 baud and uses Larry Kenny's MAXCOM terminal software. You can call in using any of the modem programs available for the 2068. I believe this phone number is more current than the one listed in the article about this BBS. I got on using the number above the week of October 31.

I cannot stress how important it is to register and participate in making this BBS grow. It doesn't cost that much to call Ottawa, especially late at night. The BBS is free and runs 24 hours so what more do you want? As the saying goes, "If you don't use it, you lose it". Let's encourage the sysops.

Also, don't forget that the there is a TS file area on the TIBM WIZARD BBS in Toronto at - (416) -743-6703. Get Modeming.

That ' s all for now . . .

J.T.

Laricen Disk Library by G. Chambers

Most of the disks in our Larken Disk Library have a HELP file. Usually this cosnsists of a Tasword file which is displayed on screen in 64 column format.

This is a very handy way of providing documentation about the programs on the disk. Often though, it is desirable to print this out to hard copy rather than simply read it on-screen. We may sometime decide to put in a "print to paper" option in the disk menu. However, in the meantime here is an easy way to obtain printouts to a large printer.

Assuming that you have a large printer hooked up to your 2068 this is the procedure you may follow i

1. AUTOSTART the disk to bring up the menu.

2. Break out of the program and enter the commandi PRINT USR lOOi OPEN #4 3."lP"

(This opens a channel to the large printer, a channel which the command LPRINT can access)

3. LIST the program to find the LINE which prints out the "help" file. It will have a command very much like this PRINT #4 i PRINT "help.CT"

or RANDOMIZE USR lOOi PRINT "xxxxxx.CT"

4. Change the PRINT command to LPRINT.

4. Load your printer with paper, and

activate it.

5. RUN the menu program and select the HELP file option. Printing should ensue.

That* 8 all there is to it.

Does anyone have the documentation for WORD SYNC version 3? Please contact the Editor-

of

I 1 0 N A R V

Instruct ions

Adapted from Tori Baker's book "Mastering Machine Code on the ZX81"by Bob Mitchell 966916.

NOTE :

Throughout these instructions the operand <r> denotes a single register A,B,C,D,E,H or L, a numerical constant or an address pointed to by (HL) , (IX+d) or (IV+d); the operand <s> denotes any register pair BC,DE,HL,SP,IX or IV.

CPS

ADC

Two forms ADC A,r and ADC HL, s; ADC A,r is a single byte instruction which calculates the sum of A+r+carry flag and stores result in A. ADC HL,s is a two byte instruction which

calculates HL+s+carry flag and stores result in HL. ADC A, A does the same thing as RLA but ADC alters all the flags.

ASS Similar to ADC except

carry flag is not used in the initial calculation but is

altered by the final result. Differences from ADC: ADD HL,s is a one byte instruction; ADD IX, s and ADD IV, s are allowed.

AND

AND r is only form. The A register is altered one bit at a time. If the bit=6 it goes unaltered. If the bit~l, it takes on value of corresponding bit of r. AND FF leaves A unchanged; AND alters all flags with the carry flag reset to 0.

BIT

Finds the value of a bit in a register. BIT 5,B returns a zero or non-zero which can be used to exploit using JR Z for example, or RET NZ. BIT does not alter the value of any of the registers nor change the carry flag.

CALL Like GO SUB. PUSHes return address onto the stack and JUMPs to the call address. The return address is used by the RET instruction. The subroutine must not alter the stack unless any PUSH in it is followed by a POP before the RET. CALL has several forms (eg, CALL Z,pq which means CALL pq (an absolute address) if the last calculation was zero otherwise continue with the next instruct ion.

CCF Complement Carry Flag. If zero then it becomes one and vice versa.

CP ComPare. CP r is the form and will calculate A-r; the result is not stored anywhere nor is A or r changed. It alters all the flags. CP r followed by JR Z will JUMP if A=r.

This is like CP(HL)+DEC HL+DEC BC. Zero flag is changed as if a single CP<HL> had been executed. P/V flag is altered thus: If BC becomes zero then P/V=Q; if BC not=0 then P/V=l. So JP PO will JUMP only if BC=6. JP PE will JUMP only if BC not =0. Carry Flag is not altered by CPD.

CPBR Same as CPD but with automatic loop. Stands for

ComPare with Decrement and Repeat. Loop ends when A=HL<zero flag set) or BC reaches 0.

CP I As CPD but Incremented.

CPIR As CPDR but Incremented.

CPL ComPLement. A is altered bit by bit. 6 becomes 1 and vice ver sa . 1 1 0 1 0 1 0 1 becomes 00101010. No flags or other registers are altered.

Decimal Adjust Accumulator Changes hex number to decimal. Flags changed appropriately.

DEC

Two forms. DEC register), or DEC s pair). In DEC r, r is by one, carry flag is and zero flag is

r (single (register DECr eased unchanged changed

appropriately; in DEC s, the zero flag is not altered nor are any others. Thus DEC BC followed by JR NZ,-3 is either an infinite loop or has no effect.

Jump

If f 0 then i on . s a

Aft , if then from that D JNZ

Relet B = 7, then

Disable Interrupts.

BJHZ Decrement B and

ive if Hot Zero,

then it becomes 6; i it becomes FF. If B=0 action JUMPs to new destinat Form is DJNZ e where e i single byte. If e is between and 2E_, the JUMP is farwapds between 88 and FF backwards. Start the count the next instruction so DJNZ 00= DEC B, except that does not alter any flags.

EI Enable Interrupts. See IM

for more information.

EX Exchange values between

register pairs. AF , AF ' DE , HL

(SP),HL (SP),IX (SP),IV. No flags are altered. Uith the last three, the old value of HL (or IX or IV) is pushed onto the stack and at the same time, the old value at the top of the stack is popped and loaded into HL. The position of the stack pointer is therefore unchanged. AF' called AF dash is a register pair distinct from the real AF and this is the only instruction that uses it.

As well as A F ' also BC ' DE ' and

there are HL' which

are a set of six new registers or three register pairs. These can only be accessed by this one sin9le instruction. Useful in preserving the values in the main registers while calling a ROM routine which relies on ft but wipes out the ° t. ner

registers. The examp 1 e 1 s < EXX > < CALL ROM subrout 1 ne > <EXX>.

lit

Three forms: IM 0 IM1 and IM2. If zero, the interrupt device itself must supply an instruction to be executed. If one, the instruction RST 38 is executed. If two, the interrupt device must supply one byte of data which is the low byte of an address. Register I is used to supply the high byte of the address. The computer then looks up this address and should a second address store there and this is used as a subroutine call. But note: The .Jf20^ requires the use of a table of 257 bytes to do this job properly.

IN

IMput with two forms: IN A,<n> where n refers to an

external device «lin . a

different n for each device, nne byte is read from device n and loaded into A. No effect on flags. IN r,<C> where the C register specifies the clevice and the number input is loaded into rj the flags are altered.

1KB

IHput with Decrement = IN <HL>,<C> + DEC B + DEC HL. The carry flag is not altered but the zero flag is altered o show whether B has decremented to zero .

IHBR

like IND with Repeat until B reaches zero.

INI

like IND except that HL is Incremented.

that HL

IHIR like INDR except is Incremented.

INC INC r IHCreases the value of r by one. All flags but the carry flag is altered. INC s where s is a register gfir will not change any of the flags If s is FFFF it will zoom around to 9000 and carry on. Do not use a check for zero ffter INC s 1g l\ will not work. INC HL + JR. Z means jump if the instruction before INC HL came to zero, not if HL has reached zero. INC H + JR Z does work.

JP

JumP is like GO TO but to an address. JP NZ, 4300 means

.iump to 4300 if «r°TPl*<m ?

zero flag is not set > . JP allows for variable

destinations, but no conditions here. Destination variablescan be in HL, IX and IV and these are powerful instructions for HL

can be the result of

calculation, even at random.

JR

Jump Relative and one byte shorter than JP Four condition* JR Z, JR NZ, JR C and JR NC. Urite the instruction as JR e where e is a single by:*;, forward if e is 0-7F, backward if 88-FF.

LB

Loa9. Transfers data from one place to another Simplest of many forms is LD rl,r2 w,here reregister. LD A,<BC> and LD ft,(DE) are legal and are one byte codes; these ,prva£e

^oupr^able , eg, LD tlft^H.

REMEMBER THAT THE BRACKETS MEAN TurrnNTFNTS OF THE ADDRESS BC (or DE>. Two special registers R and I may be loaded to and f rom A as in LD A, I LD A,R LD I, A LD R , A <but only A>. R is the memory refresh register used for outputting to the screen,; I is used in IM. Reg i st er . pa l rs may all be loaded with either

numerical constants or tne Contents of absolute addresses e<a, LD s,mn or LD s,<P«l>. LD <?q>,i is like a double POKE in BASIC. The register pair SF>, the stack Pointer, can be loaded directly with either HL, IX or IV 5ou can say LD SP,HL but not LD HL,SP.

Decrement . DEC DE + go. Carry sign flag P/V fla9

becomes zero i f BC becomes zero, one otherwise. JP PO will jump only if BC is zero after the instruct ion.

LoaD with LD<DE> , <HL>+ DEC HL+ DEC BC all in one flag, zero flag and are unaltered but

Like LDD but Repeats until

BC reaches zero.

LBI

Like LDD but DE and HL are

both Incremented.

and HL

LBIR

Like LDDR but DE are both Incremented.

NE6

Alters the accumulator and ail flags. It HEGates A. If A lontainl 1 then NEC will change it to minus 1 or FF. it h contains -6 <FA> then NE* £lL alter it to. +6 <%f>-^ feme effect achieved using CPL + INC A but this does not affect the carry flag as NEG does. NEG is faster.

NOP

Ho operation. Uastes time. Like a REM statement in BASIC but you cannot put messages after it. Use it also to overwrite previous machine code when debugging.

OR

OR r is opposite of AND r. If a bit is one then it will be unaltered but if zeV° tJj?n t ±1 will take on the value ofT rth* corresponding bit in r contains 00 then OR r is the

same as LD A.r (except for the flags). If A contains FF then OR r will not change it. All the flags are changed and the carry flag is reset to zero.

OUT

Like IN. Unlike OUT in BASIC. Instruction OUT(n),A

where n is a one byte numerical constant, will transfer contents of A to external device n. OUT ( C ) , r will transfer

contents of r to the device pointed to by register C.

OUT is used in ROM to SAVE things and has no effect at all on the flags.

OUTB

Output with Decrement. Carry flag unchanged; zero flag depends on the final result of E. OUTD is equivalent to OUT(C),(HL) + DEC HL + DEC B.

OTDR

Output with Decrement and Repeat. Like OUTD but with repeat until B = 0 .

OUTI

Li ke Increment ed .

OTIR

Li ke Incremented.

OUTD but HL is

OTDR but HL is

POP

Remove two bytes of data from stack top and load them into any register pair except SP. POP AF will act on the A register and the flags register. Low byte is popped first then the high. The computer remembers that the stack is now two bytes shorter and alters the value of SP automatically.

PUSH

PUSH s is the opposite of POP s. It stores the contents of any register pair (except SP but including AF ) at the stack top. It alters the stack pointer accordingly. The high byte is pushed first then the low so that the low part is at the top. After a push instruction SP will point to the address of this low part .

RES Alters individual bits of any register. Set means change to one; RESet means change to zero, eg, RES 3,D will Reset bit 3 of D to zero. RES has no effect on the flags.

RET

RETurn from a subroutine. It pops an address from the stack top and jumps to that address. This address can be altered by changing the value at the stack top, eg, POP HL + INC HL + PUSH HL will increase the return address by one. Vou can store one byte of data right after the CALL instruction, then POP HL + LD A,(HL) + INC HL + PUSH HL to store that byte in A while at the same time ensuring that the subroutine will return to the address after that data. Another trick is to push an

artificial return address onto the stack and then JP or JR to a subroutine instead of calling it. Now it will "return" to wherever you want it to goi RET may be used with condtions if needed. It does not alter the flags.

RETI

Used to end an Interrupt subroutine (see IM>. Its function is the same as RET, but RETI must be used instead of RET because the chip does clever things if a 2nd interrupt occurs in the middle of an interrupt subroutine: a DI instruction is executed automatically when an interrupt subroutine is called, but there are such things as non maskable (super high-powered)

interrupts that override even DI. These can cause confusion if you don't use RETI.

RETN

Used to end an NM I . Its function is like RETI except that the IM (altered by the NMI in the first place) is also restored to its previous value.

RLA

Rotate Left Accumulator. Each bit of A is moved one position to the left. The leftmost bit is moved into the carry and the rightmost bit takes on the previous value of the carry, eg, if A=10010101 S. the carry was O then after RLA, A will be 00101016 and carry will be 1. Only the carry fla9 is altered by this instruction.

RL RL r (which may be RL A and be taken in error to be RLA). Like RLA but alters ALL of the flags; RLA will only alter the carry. RL may be applied to any register, not just A. RL A does exactly what ADC A, A does down to the last flag, except one that you cannot get at: the H flag. The only way to tell the difference is by following it with a DA A instruction. ADC A, A is twice as fast.

RLCA Almost like RLA but not quite. Each bit of A is moved one position to the left and the leftmost bit is moved BOTH into the carry AND into the rightmost position of A. If, as before, A started off with 10010101 and carry was zero, then after RLCA it will be 80101011. The carry will also be one. Only the carry flag is changed - the previous value of which is lost forever.

RLC RLC r will Rotate Left with Carry the register r in the same way that RLCA does with A. RLC A is a valid instruction which is not same as RLCA. RLC B is a valid instruction but there is no such instruction as RLCB. Always check the spacing. RLC r

will alter all of the flags-

RLB Rotate Left Dec i ma 1 . Do not confuse'uith RL D . RL.D works as follows: Urite the value of A and the value of address (HL) in hex. The second hex d 1 9 1 1 of (HL) is shifted left so that it becomes the first digit. The first digit overwrites the

second digit of A. The second digit of A moves to the second digit of (HL) . Thus if A

contains 25 (hex) and <HL) contains EB then after an RLD has been carried out A will contain 2E and <HL> will contain B5.

RRA

...... Like RL A except

bits are moved Right.

RR

Like RL except bits are moved Right.

that the that the

RRCA

Like RLCA except that bits are moved Right.

the

RRC

......... Like RLC except

bits are moved Right.

that the

RRD

The contents of ( HL ) are moved 1 hex ligit to the right, the rightmost digit moving int£ the rightmost digit of A which in turn becomes the left 01 1 9 1 * of < HL ) . If A equals 25 hex and <HL> equals EB then after RRD, A will equal 2B and <HL>. will equal 5E. Note that RRD twice is the same as RLD once and vice versa. All the flags except carry are altered.

RST

ReSTart : like CALL except that it is only one byte }on9-. But conditions are not legal and only one of eight specific addresses may be called: RST 0 - power down and up; RST 8 = error number follows; RST 16 = Print current character; RST 18 9et char; RST 28 = get next char; RST 28 = start Floating Po*"* Calc; RST 38 = make a space; RST 38 = frames counter and keyboard scan .

SBC

Like ADC with two forms: SBC A,r which will subtract r from A and then Sultract the Carry digit. SBC HL,s which will subtract both s and the carry flag from HL. SBC A, A is useful: if the carry is one then A will be reassigned FF and the carry will still be one.

SET

w-. The opposite of RES . SET

4,H will change the value of bit

4 of H to one. Any bit of any register may be set.

SLA

Shift Left Arithmetic. The form is SLA r. It is similar to RL r except that the rightmost bit is automatically replaced by zero. It alters all the flags. Note that SLA A does the same thing as ADD A, A except that ADD

A , A is faster .

SRft Shift Right Arithmetic. Any register may be shifted right using the forniat SRA r. The rightmost bit falls into the carry but the leftmost bit remains unaltered Thus atter an SRA instruction bit 6 "It1 always be the same as bit 7uTh? effect of SRA is to divide both positive and negative numbers by two. FC (minus four) become Ft (minus two).

SRL

Shift Right Logical. As SLA except that the bits are shifted right instead of left and the leftmost bit becomes zer o .

SUB

ww- SUB r = SUB A , r . The value of r is SUBtracted from t he A register. Note that unlike ADD, there is no corresponding instruction SUB HL,s. If^.you wish to do this you must f*rst of all reset the carry f la9 (usually by use of AND A) and then use SBC HL,s.

XOR

..... XOR r alters all of the flags, resetting the carry to zero and the A register alone r is not altered; A is a^e^g0* to}* by bit like with AND and OR. If a bit is zero it takes on the value of the corresponding bit of r. If on the other hand a bit is one then its new value is the complement of the appropriate bit of r. XOR A is very useful since in one byte it zeroes both the accumulator and the carry flag. So does SUB A.

HALT This definition belongs up above. Halt is not the same as STOP. It means "do nothing but keeps repeating NOP instructions until it gets an i nt errupt .Use EI before HALT but not BI before HALT.

Finally, I have checked thi5 summary against, the referenced book; even so, it would be wise to consult a good Z88 manual if in doubt about any definition.

Ro;g>o:tr-fc from QL L,±to2rs.3rd.s.n 1990

Last year at this time the QL membership was about 20. Today, we have a list of 27 QL members, some of whom are admittedly only Newsletter members, but very important members at that. Some of our most active people are Newsletter_only members. Some of our N/L only members are our most prolific contributers. Of those 27 members, we can count 8 as In- town members, that is those who attend the meetings on a reasonably regular basis; which leaves 19 as Out-of-Town members. I think the number of N/L members is 5, ( or 6) I am not too sure on that figure.

This leaves us with 19 0/T members. I have had contact by letter with no less than 11, with the occasional phone call thrown in. 11 out of 19 is I think, very gratifying, and indicates the amount of interest in the QL Library. The number of letters I have received is well in excess of fifty in this last twelve-month. Yes, I have them all on file. Yes, I have replied to them all. (This does not include internal club letters, or my personal letters)

At this time last year we had about 80 programs in the library. Our library to-day, consists of over 150 programs. The improvement is not only in the quantity, but a vast improvement in the Quality. I have sent out, on request, about 14 full disks, some of which are 80 track disks, and about a dozen plus cartridges. As a matter of interest, the 40 track disks are just a little more than the 80 track. With a few 3 1/2 tossed in. I will not try to count the number of programs concerned. I could, but the end result is not worth the toil of counting them. The most recent catalogue has generated a further number of requests already.

To go from nothing to what we have to-day is no mean accomplishment, and I would like to extend my thanks, the thanks of this club, to all those people who have contributed so much, in such a short time, to the benefit of this club. Thanks to those who send in material, and thanks to those who make use of the library That is my reward.

I am sometimes accused of being too serious, but if I were anything else, I would not be able to do a good job. As the foremost Sinclair Club in Canada, and one of the most powerful in North America, I believe that we must be forever trying to improve our position, and to do that means a constant effort on the part of every member, no matter who or where they may be.

In Jeff's editorial in the May issue, he stated we were arguably the strongest and richest club in North America. That is a very strong statement to make, but it is not quite correct. With apologies to Jeff, I would like to amend that statement. We are WITHOUT argument, the BEST in North America.

Let's keep it that way.

Hugh H. Howie. October 5/90.

QT. TPS

In the current issue of HESQLUG Newsletter, a Member Survey form was included, and in the process of filling it out, and adding a few remarks, I came up with an idea, and I don't know why someone has not tried it before, and if they had, why it did not work. Perhaps there is someone out there who can give me the answer. All comments will be welcome on this subject.

Ever since I started using the QL, I have been looking for some instruction on SuperBasic Programming. Ho one in my immediate circle would seem to have the necessary knowledge, and yet I know there is a thirst for this instruction, I know there is a desire for this instruction.

Here is my idea, I will throw it out to the winds and see what blows back. I will publish the results in this column.

Is there anyone out there willing to start a correspondence course in SuperBasic ? Make a few bucks?

Each lesson or group of lessons would be accompanied by a test paper. Payment of say $5 for each test? Too much? Too little? If you have an opinion write and let me know. If you would be willing to provide the service, write and let me know. I am willing to bet there are a number of takers out there, but if you do not tell us your opinion, then nothing will be done. This may be your last chance to get something going.

The idea may not be viable, but if you do not take this opportunity to make your views known, you may never get another chance. Anyone interested in the use and in providing this service, would you please write me giving me your opinion. Do you want to learn SupeBasic?

As I have said, the results HILL be published in the next issue of this Newsletter. Don 't delay firite today.

Hugh H. Howie QL Librarian 586 Oneida Dr Burlington. Ont.

L7T 3V3

From the

QL LIBRARY

There are many wonderful little things in our QL Library, and few are aware that they are there. Here is one of those gens, complete with the doc file which goes with it. Hugh Howie.

"DISOE.JAME" by Real Gagnon.

CHANGING THE NAME OF A DISK.

When you format a new disk, you can

assign a name to the disk. But it is

impossible to change this name after

the disk has been formatted unless you

reformat the disk and all the data on

this disk will be lost.

The following program will correct

this situation. You can now rename a

disk without having to reformat this

disk- .„ u

When you run the program, you will be

asked for the number of the disk drive

(e.g. 1 or 2 )." This program will

only work with disk "" floppies "" and

you can not rename microdrive. " The

program will then display the name of

the disk and will ask you for the

proposed name The limit is 10

characters.

100 REMark DiskJtEJiame 110 REMark by Real Gagnon 120 :

130 REPeat loop

140 PRINT #0,"Disk Drive Number :- 11 ! ; 145 d$=INKEY$(-D

150 IF d$ INSTR '123456789': PRINT #0,d$: EXIT loop 160 END REPeat loop 165 :

170 OPEN#10,,,flp"&d$&"_*D2Dn 180 :

190 GET#10\l,a$

200 PRINT#0 , "Present name : " ! a$ (5 TO 14)

210 INPOTS0, "New name : " !n$

220 LET a$(5 TO 15)=n$ 230 FOT*10\l,a$ 240 :

250 CLOSE#10

This is a reprint from the last issue because this article was badly copied. - Ed.

The C Page

By Timothy Swenson

Last month we looked at a simple program. This month we will look at how to do input and output in C.

C has no built in input or output commands. Functions are called that per-Form input and output. Last month we used the function printf. This month we will use the function getchar. Getchar gets one character from the standard input channel, the keyboard. The input from getchar is assigned to an integer variable.

The opposite function is putchar. Putchar puts one character to the standard output channel, the screen. Putchar takes in a single integer variable.

Take at look at program number 2. The program gets a character from the keyboard, then while the character is not a lower case q, the character is put to the screen and another character is read in.

This program takes characters entered from the keyboard and echos them to the screen. Getchar does not echo any characters by itself.

Any assignment can be used within an expression. Look at program number 3. With the assignment statement inside the logic of the while statement, one extra line can be left out. The assignment will be executed before the evaluation on it is performed. This shows you how C can become more compact (and more unreadable)

Since we are on the subject of input/output, let's take a look at string input/output. C does not have a string type. You have to use an array of characters. Since there are no string types, there are no string manipulation commands. Instead there are functions to do this.

Look at program number 4. The variable string is defined as an array of 20 characters. Now a call is made to the function gets. Gets is short for "get string." This function gets a string from the standard input and assigns it to the variable string.

Now in the while statement a comparison is made to see if the string is of length 0. Strlen is a function that will return the length of the string. If the length is greater than 0, the string is sent to the standard output with puts (put string) and another string is inputed.

A lot of necessary functions are included in the standard C library. Most commands in basic have an equal C function. Plus you may write your own functions and add them to the library. There has always been a problem that not all C libraries are equal and some programs may not be ported from compiler to compiler.

Next month we mil look at how C handles files.

/* Program 2 */ #include <stdio h>

mainO

int c;

c getcharO; while ( c •= *q*) C

putchar (c) ;

c = getcharO;

>

/* Program 3 */ #include <stdio_h>

mainO i

int c;

while ( (c = getcharO ) •= *q') < putchar (c);

>

>

/* Prog 4 */ tinclude <stdio__h>

mainO

i

char stringC203; gets (string) ;

while (strlen (string) != 0) C puts (string) ; gets (string) ;

olume 1, Number 1

February 19, 1989

ARTICLES

LARKEN MAXCOH

A review by Greg Popovich It has finally happened! Fellow LKDOS users, It has finally come to pass that the 2068 has finally gotten not only a terminal program BUT a BBS that will bring us into the 90's!!.' What would you say to a terminal program that will handle both the Z-SIO AND the 2050. Either recieve or send a file up to 110K DIRECTLY TO DISK. Have a 64 column display that CAN handle 1200 baud without losing characters. Can move either headerless (TSXmodem/Mterm2) or header type (Specterm 64) files whether they be Basic or Code. With a choice of 128, 512 OR 1024 byte block protoco 1 (Checksum) . And, ALSO display IBM Hercu 1 es (Monochrome ) graphics ! AND has a BBS built right in! You'd say I must be dreaming! WRONG! It is TRUE! It is REAL! I couldn't believe it myself. Being a seasoned modemer and BBS sysop I've gotten used to using Telix on my Clone to get around the BBS world. I've used all of the terminal programs that are available for all of the Timex's, and IBM & Clones. My tastes for terminal programs are sweet. I judge a program not only on how it looks, but on how well it performs and ease of operation. MAXCOM has it ALL! MAXCOM consists of 2 large Basic programs (one for the 2050 and one for the Z-SIO) as well as a 7K code file. When loaded it will display a Main Menu. From there you can go to the Terminal Mode or run the BBS. Also from this menu you receive and send files, select Xmodem packet size, load the BBS message base, Catalog a drive, toggle duplex, set the modem parameters, close or open the buffer (write to disk also!), dial the modem, and hangup the phone. You can, in the terminal mode, send the full ASCII control character table to the other computer from ACK to NAK. The terminal mode has a 64 column display that you can read without eyestrain. You also have a status bar at the top of the screen telling you your setup and whether or not you are online. Also, an added feature is that you can access up to 4 MacroKeys that you can utilitize.

The BBS

Being a Sysop of a BBS (I use RBBS on a Clone). I can safely say that this BBS is one of the most advanced BBS's for a Timex computer. I once ran one on my 2068 but soon found that 64K, 3 800K, 1 400K floppies and 256K of Ramdisk wasn't cutting it for me. I started with TInyBoard and worked my way up to Casboard. I also ran modified versions of Casboard by James Rod 1 in and myself (don't get me wrong, I still use my 2068! (Like typing in this review) Sometimes I cannot even get on my own BBS!). Well MAXCOM' s BBS you can:

The Timex/Sinclair Electronic NewsLetter

Volume 1, Number 1

February 19, 1989

Use 300/1200 baud operation

Have Passwords, Security levels, and Time Limits Multiple Messagebases with search

Downloads, and Uploads without memory constraints Help files and Bulletins Access to LKDOS from Remote

Interrupt driven hangup and timeout watchdog

A user log of the BBS activity

Dual Window monitor screen

Can be easily customized and expanded

Some of the features until now you only saw on the Big till boards. Like the Watchdog and access to DOS. You can Blue Doar". t t setup y0ur opening screen and

Sune^ns' You "So have to do some customizing to start it up, like let it know how many drives you have. But for the most plrt nil much has to be done to be on the axr >n under an Ko„^ To assist you in setting up the BBS, Larry mciuueu 6 rEdilor^o^etup your screens and a deluxe file manager that can MOVE individual files to different *lsks V^!"* in itself). The error trapping is the most advanced fea ore o? the BBS. MAXCOM uses 2 interrupt traps to trap almost anything that a user can do to crash a BBS (like dropping carMerto falling asleep behind to console). If an error occurs the interrupt routines v 1 1 correct u by e^ing RUN 9230 (just as if you ^P«- i**".^^ er, to reboot the system. These routines can handle lost ti-eout timeup and Basic crashes. The operation of the BBS is simple to both the Sysop AND the User. This BBS comes a

ong fro. the days of 1 messagebase 20 messages

Board and 300 baud only operation. For the *25. 00 you get more than your moneys' worth -^h this projrt.. This program will work with the straight LKDO. sytem or LKDOS compatab 1 e setups. I've thoroughly tested MAXCOM and —found it to be 100% bugfree (but a few minor mispe 1 1 ings ) . The program is available from:

Larken Electronics

RR §2, Navan, Ontario, Canada K4B 1HS (613)835-2680

RMG Enterprises (503)655-7484 Noon-10PM

1419 1/2 7th Street, Oregon City, OR 970At> iava*va=>

Pacific Time * Tue-Sat Ed Grey

P. 0. Box 2186, Inglewood, CA 90305 (213)759-7406

a ^ or urite your favorite dealer at the abt

For more information, call or write yuui

numbers or addresses, or myself ats

C/08 Thr^S.I .W.Y.G. RBBS FidoNet 1:lB7/564

^L"9stfssrUo':era(^l>9sI-77«3 <BBS 8-i-N 3../12H/24M BPS,

Taken from THE PLOTTER, the nil of the Clackamas County T/S Users Group

-fcioax tB7

MV IMPRESSION

by hugh h. howie.

A couple of months ago I decided I would like to try this wonderful new word processor, text87. So off went my bucks, (dear dear) and back caste the word processor.

Now I don't know whether to laugh or cry. This darned thing is so complex I hardly know where to start with my diatribe. It is so easy to get into a rut, and this is what happened to me, I git into the most gol darnedest rut you ever saw or imagined, and even now I can't get out of it.

This pesky text87 (no capitals please, we're modest) is the most habit forming thing I have seldom, rarely, ever come across. It gets into you, it gets under your skin, it bugs you. Night and day you think about it, until there is no other program on the QL you want to even look at. You waken up in the middle of the night and say to yourself, "I must try this in the morning, N you look at the clock, and by golly it IS morning. (3.15AM) so as it is morning, you have to have a go at your new toy.

Type F3 and you have a whole string of commands at your fingertips, all operated by the- initial letter, the reaction time is instant, no waiting. Each keypress opens up a new string of commands, and then another. You are gently led from one stage to the next.

To scroll from top to bottom or bottom to top, is adequately fast, giving you time to have a look at what passes on the screen. If you