Roy Wisti Sep/ss BULK RATE

JULY/AUGUST ’88 275-B Sheldon Rd US. POSTAGE ree 5 Voluntown, CT 06384 COLTON, OF 87017 3.00 U.S. Funds

POSTM PLEASE EXPEDITE DELIVERY DATED MATERIAL

ADDRESS CORRECTION REQUESTED

The SINCLAIR Computer Technology Magazine

| (716) 834-1716 T&CSERVICES (716) 834-1716

The FOOTE PRINT PRINTER INTERFACE

® for Centronics parallel printers

Summer Westcoast 7S Fatr Special

works in both 2068 and Spectrum mode

compatible with OS-64 & Spectrum emulators EPROM socket and on/off switch on board

works with both Tasman and Aerco driver software

plugs into cartridge dock—door completely closes with cable running back under computer ® frees up rear edge connector allowing other peripherals to be used; less chance of a crash @ print driver software for LPRINT, LLIST, and COPY included for 2068 and Spectrum modes FootePrint Interface w/software & cable #539. 95 FootePrint with OS-64 option included $60.00 Bare board & instructions only .......... $1500 ~Cable only for use with bare board ....... $1500

Zero Insertion Force Socket option add $8.00 SOFTWARE TS2068 TS1000

The Best of SUM | Some sample articles include: Building Your Own

Badgammon (Backgammon)........ $10.00 Spectrum Emulator, Repairing Your TS-1000, Word

Advanced Math (Calculus).........$10.00 Processing Reviews for the 2068, UDGs on the TS-

Calorie Counter..................... .. $8.00 1000, Extensive Review of the Zebra Disk System, : Adding a Keyboard to the 2068, and Enhancing the

U.S.A. (Pres. & States 8 Caps.).... $8.00 %5.00 A &JMicrodrive.112 pages ~

Gambler (poker).........sccsecsecsscsees #8.00

CHR$ (chor. & graphics generator) $10.00 $10.00

Hangman & TIC—TAC—TOE......... eee BFL00

The Best of SUM, Part Il

Articles include Building an EPROM Program- mer, Sprites on the 2068, Adding RGB to 2068, QL Word Processing, What's Available for TS-1000, and much more. 60 pages

$7.00

FOOTE <%, SOFTWARE P.O. Box 14655 Gainesville, FL 32604 (POF) SS38-L273 <(VAN-GPN EDT>S

All prices are pre-paid and include shipping charges. both for £15.00

Florida residents must add state sales tax.

SEE THE TIME DESTENS AND FOGTE SOFTWARE BOOTHS

AT THE NORTHWEST AND MID-WEST TIMEX SINCLAIR SHOWS!

The SINCLAIR Computer Technology

Magazine

JULY/AUGUST ’88 Ree ee tee tees ete Ses ti

Time Designs Magazine Company 29722 Hult Road Colton, Oregon 97017 USA (503) 824-2658 CompuServe ID# 71350,3230

SUM

BACK ISSUES

TIHE DESIGNS ¥¥ VOLUME TWO CLOSEOUT XxX (limtted quantity tn stock) $2.50 each, or 3 fssues for only £6.00 NOV/DEC ’85 AUT we 1) JAN/_ soLD V™.. no.2) MAR/ 4. 36 (Vol.2 No.3) MAY/JUN °86 (Vol.2 No.4) JUL/AUG *86 (Vo1.2 No.3) SEP/OCT *86 (Vol.2 No.6)

¥X¥ VOLUME THREE ISSUES XxX (plenty of these tn stock) $3.00 each, or 3 fssues for only £8.00 NOV/DEC *86 (Vol.3 No.1) JAN/FEB *°87 (Vol.3 No.2) MAR/APR °87 (Vo1.3 No.3) MAY/JUN *°87 (Vol.3 No.4) JUL/AUG *87 (Vol.3 No.3) SEP/OCT *87 (Vol.3 No.6)

VISA and an v4 | MASTERCARD |s==te< ACCEPTED :

TIME DESIGNS MAGAZINE Co.

29722 Hult Rd., Colton, OR 97017

TIME DESIGNS MAGAZINE is published bi-monthly and is Copyright 1988 by the Time Designs Magazine Com- pany, Colton, Oregon 97017. All rights reserved. Reproduction of this magazine in whole or in part by any means without written permission is prohibited by law.

SUBSCRIPTIONS: $16.95 a year for six issues (U.S. funds only), mailed in the U.S. All other countries | please write for information on surface and air mail rates.

CUSTOMER SERVICE: Customer satisfaction is our goal. For subscription service problems, or any ques- tions and comments, please write.or call.

CHANGE OF ADDRESS: Please call or write our office if there is any change in your current mailing address to prevent delay or even loss of service. ~

RENEWAL TIME? To determine your expiration date, simply read the date posted in the upper-right corner of your mailing label (magazine cover). For an example, “Nov/89” would indicate that the November/December 1989 issue would be the last issue received. A form is provided elsewhere to renew your subscription. We also Send one notice in case you forget. An early renewal is very much appreciated, and let us know we are doing an adequate job.

NOTICE: Contributors to TIME DESIGNS are independent of the TIME DESIGNS MAGAZINE CO., and opinions expressed in the contents of this publication are not necessarily those of the management staff or its adver- tisers. Time Designs Magazine Co. will not be held liable for any damage or consequences resulting from instructions, assertions of fact, review of pro- | ducts or companies provided in the magazine's content. It is recommended that anyone attempting to modify their computer or constructing an elec- trical project should seek help from more knowledgeable individuals.

yj

ER SPECIALS =

24 hour © ORDER LINE (503) 824-2658

For Books, Subscriptions and Renewals

Sinclair Survivalist

HANDBOOK The Sinclair Survivalist Handbook is

a new 70 page book that is filled with revious] un-publi pro- gram listings and articles, written by regular contributor’s to

DESIGNS, for the TS1000/2x81, TSi500, TS2068, and the Sinclair Q@L. Examples include: "Adapting external keyboards to your TS1000", "BASIC Line Delete Utility", "Strategic Football", "Fix Your TS2068 Space Bar", "°0S-64 Utilities’, "Little League Scheduler", “Homemade ROM- Switch", "Draw Poker", "@L Super- BASIC Tutorial", "Using Quill With The QL Printer", “Inside the QL", and much more! If you like TIME DESIGNS...you’!11 like this new book. Order your copy today!

READER: SURVEY RESULTS Bore One

Over 280 TIME DESIGNS readers responded to our recent survey. Which is approximately 11 percent of our circulation. Some of the results were most in-—- teresting. The rest of the results will conclude next issue. We sincerely hope that this data will provide developers of hardware and software, and the Timex Sinclair dealers with a better understanding of our TS user community.

Average Age of TDM Subscriber: 45 Other Computer Owned: Oldest Reported Age: 79 4... 251000 Youngest Reported Age: 22 2.- TS2668 3; 2X80 Male/Female Ratio: 22 Male/i Female = oe » States of Highest TS User Concentration: California Most Popular Printer: New York 1. 2040 Thermal Printer Pennsylvannia 2. Gorilla Banana Florida 3. Epson RX-80 Texas 4. Star NX-10 Ohio 5. Panasonic KXP-1080 Illinois Virginia Most Popular Mass Storage Device Used: Michigan 1. Cassette Tape 2. Floppy Disk 10 Most Common Occupations of TS Users: 3. Microdrive Cartridges/Wafers 1. Retired 4. EPROMs 2. Engineer 3. Electronic Technician Most Popular TS2068 Disk Systems: 4. Supervisory/Management 1. Aerco FD-68 5. Student 2. Larken LKDOS 6. Instructor 3. Zebra FDD 7. Consultant 4. Oliger SAFE DOS 8. Military 5. Ramex MK 9. Sales | 10. Librarian 5 Most Popular Monitor Devices: 1 = Céleavcaind= B/W TV Top 5 Hobbies of TS Users: 2. Magnavox RGB 1. Computers 3. Zenith 2. Electronics 4. Sanyo 3. Photography 2. Commodore 4. Amateur Astronomy 5. Gardening oe dees Used The Most: TS2068 TS1000 QL

IBM (or compatible) Commodore 64

seh sod eck

\AQONDODODOODODODDGGEDGEDODOEDOODOONEDEOGELODODODDODONDEUOONNDNNOOOOGODRODEOUOONOOODOROEGR ANNA AED EONE GEA ROROOEOHNA 2 THNDGOUEOOODOOEGENOOGEDOOGRNODODROOROODGUNONDRDOODONOEDOUONOANOGENGONOOGANGONODOODOOORGRDOOONDOROOOROOOESEOGoOROLoORM

TIMEX SINCLAIR NEWS

FILLY ...

rut COLOR

mc? FOF] screen dumps aA ¢/ tor the 205A!

If only TIME DESIGNS were printed in color! Then we could show you what the actual "Sir Clive" screen dump (above) really looks like. It was produced using @ program called THE ARTIST, a TS2068 computer, an OKIMATE 20 Color Printer, and a special interface and printing utility software.

To back-track just a bit...a couple of years ago, a puzzled TDM subscriber sent a letter to the editor, and posed the question whether the OKIMATE 20 could be used with the 2068. Seems that the Okimate was configured to operate with "most popular brands" of personal computers, with optional "Plug 'n Print" interface/software packages...all of the brands, except the Timex (of course).

Thanks to the research and development of John McMichael (who also adapted an inexpensive Commodore plotter to the 2068), Timex users no longer have to face discrimination. Using the Okimate 20, the Commodore "Plug 'N Print" package, and John's new “Commodore serial port emulation circuit board", high quality screen dumps can now be enjoyed in color. John also offers several print utility programs to help get the job done.

Not only is the Okimate 20 a good color printer, but it is also suited for normal printer use (including NLQ mode).

Information about the interface, amd related 2068 software can be obtained by sending a legal SASE to: John McMichael, 1710 Palmer Drive, Laramie, WY 82070.

The Okimate 20 must be purchased elsewhere, and is available everywhere. Try Sears, Target, Best, or Lyco Computer Inc. (1-800-233-8760). Typical discount price for printer and "Plug ‘'n Print" package is right around $180.

iki ii

Another frequently requested device for the TS2068 is a MIDI Interface. MIDI stands for ‘Musical Instrument Digital Interface". Which is the means for hooking up electronic synthesizer keyboards, drum boxes (and much more) to your computer. Other computer brands like the ATARI ST and IBM PC are very

strong in the area of MIDI support, both hardware and software.

eR 7

MIDI FOR THE 2068

ii--5--——— —_— ce ae ee i ee rere ee

il

MIDI is an invaluable tool for music students, composers, and live performers. And since MIDI is a word-wide industrial standard among electronic music instrument manufacturers and computer manufacturers, it wouldn't matter if you had an ATARI or a SINCLAIR, the hardware compatibility should be the same.

Recently, Richard Hurd, ‘a TDM subscriber and occasional contributor wrote, "I have had success implementing MIDI on my TS2068. I also would be happy to hear from anyone interested in this."

Richard has purchased RAM Electronic's MUSIC MACHINE, a MIDI interface for the Spectrum, from England (see review in the November '86 issue of ZX

Computing), and also some accompanying MIDI software from a company called QUASAR. To operate the Spectrum hardware and software on the TS2068, Richard pur— chased John Mathewson's ''Twister Board" for the rear expansion bus, and also used a Spectrum emulator.

For further details, addresses, and even tips on ordering from Great Britain, send a SASE to: Richard Hurd, PO Box 153, Warrenton, OR 97146.

WHERE GOEST FRED??

Fred Nachbaur, formally of Nelson, British Columbia, Canada, and highly-respected authority on Sinclair computers, has taken several new turns. Most recently, he has accepted a position with a firm in Ottawa, and will be turning his 1TS1000/ZX81 product line over to other Timex Sinclair dealers.

Fred's own company, Silicon Mountain Computers, will be renamed "Silicon Mountain Electronics", which, as the name implies, will pursue avenues of a more general electronic nature as well as computers.

As a former TS software/hardware producer and supplier, Fred found that he lacked critical time and funding for development of various special projects, including one particular project...a new type of computer.

Fred recently told TIME DESIGNS that, "It should be clearly understood, however, that this project is by no means a certainty at this point. It's not be— cause of the infamous "big IF", rather it depends on a whole lot of "little if's". I have carefully chosen a core of potential developers who have expressed an interest to investigate the potentials; IF we all agree on the route to take; IF we all find the time to do our parts; IF the economics fall into place; IF the result of our brain-pooling results in a marketable product; IF no one comes up with a better mouse before we build a better trap...then there will be a new computer. But don't believe anything you hear, unless you hear it from us. If it does happen, it will not be, as rumour has it, a Timex "clone". The new machine will have some common features, such as elegance in simplicity, but a new machine in its own right.” .

Fred wants everyone to know that he will continue to be involved with the ZX81 family of fine computers; as a user, writer, and hacker, but not as a commercial supplier of TS software.

SECRET STUFF

Nigel Searle, a close associate of Sir Clive Sinclair for over sixteen years, announced to the General Assembly of the Boston Computer Society, on

June 22, that Sir Clive was involved in developing some highly secretive computer equipment, and that he (Sir Clive) would personally announce detailed plans of the project and launch it world-wide at an upcoming BCS meeting.

The only speculation and possible clues about the new computer equipment are coming out of the British press. Supposedly, Sir Clive is developing a new desktop computer based on transputer chip tech- nology, similar to the INMOS transputer, only Sir Clive felt that the INMOS was unsuitable for his project, and went out and developed his own transputer. The new desktop will reportedly out- perform any PC technology currently available, processing data more than 10 times faster than an IBM AT. The new machine will be marketed under the CAMBRIDGE COMPUTER LTD label, just as the Z88 Laptop is. :

CLEVELAND

Saturday, August 27 and Sunday, August 28, marks the date for the upcoming MIDWEST SINCLAIR COMPUTER CONFERENCE, which will be held at the Beck Center in Lakewood, Ohio (a suburb of Cleveland).

The Conference will feature TS exhibitors like Zebra Systems Inc., Sharp's Inc., Time Designs, and others; as well as seminars by Bill Ferrebee, James DuPuy, Basil Wentworth, Dave Hoshor, Thomas Simon, and others.

For complete details, info on accomodations available in the area, pre-registration forms, and more, send a SASE to: Andy Kosiorek, 2192 Glenbury Ave., Lakewood, OH 44107. For alternate information contact: James DuPuy, 6514 Bradley Ave (down), Parma, OH 44129, (216) 661-4105.

If you live in Ohio, any of the surrounding states, the midwest proper, Ontario (Canada), most anywhere on the eastcoast and southern states (or anywhere!)...come to the show and exchange ideas and information with fellow Timex Sinclair users.

i | 4

NEW RELEASES PODNUH is a clever name for a new TS2068 program, which has been thoroughly tested since its conception: in 1986. This Machine Code program in- cludes a BASIC programmer (called "Supra-Basic") with & swift and reliable method of passing parameters to,

hacker-types everywhere. It contains a complete annotated disassembly of the Home ROM and the XROM, along with several other tables of data. Mr. Pederson offers a theory which one may or might not accept about the development of the Timex ROM ard _ bank- switching routines...but it all makes for interesting reading. The book is priced at $20.00 + $3.00 postage and is available from: The WIDJUP Co., 1120 Merrifield S.E., Grand Rapids, MI 49507.

Arnold Ramaker, PO Box 263, Plymouth, WI 53073, (414) 893-8865, is busy designing an expansion box for the ZX81, TS1000, TS1500, TS2068, and Sinclair QL computers. Any one of the computers can be placed inside the supplied case. The expansion box will feature multi-expansion slots and provisions for attaching a monitor, and several other peripherals. Mr. Ramaker would like to hear from folks who are interested in purchasing an expansion box like this, to get an idea on what price range and any additional features people would like to see incorporated.

Matthew Zenkar, 142 Holcroft Rd., Rochester, NY 14612, (716) 663-2048, is offering a utility program which will allow QL owners who use the Digital Pre- cision Desktop Publisher software package, to dump their files to Hewlett Packard-compatible laser printers. Write for information and price.

The S.A.I.N. (Sinclair Artificial Intelligence Network) special interest group is now forming. It is for any Sinclair user interested in A.I., Micro- PROLOG, LISP, and other related topics. For further information, send a SASE to: Pete Fischer, PO Box 2002, Tempe, AZ 85281, or call the TIMEWARP BRS, (617) 481-0555 (setting: 8/1/N, 300 baud).

LARKEN PRESENTS 2. UP TO 256K RAM for your 2068

- Expand your 2048 with up to 254K of battery backed up Raa - Larken Operating system lets you SAVE to memory, just like cassette or disk. (Floppy disk not required )

~All Cassette commands supported. Very Fast and Reliable .

- Can be used with ALL existing 20468 or Spectrum software.

- Uses the new 32K static ram chips, 62254LP or 43254LP

~ System consists of Larken Cartridge and Rear Mesory Board.

## PRICE ~- MEMORY SYSTEM with 44K Ram cosesss $129.0 ~ MEMORY SYSTEM with 0 K asenecnsve: 5 95.00

and calling other Machine Code programs. These "other" programs may be customized routines, extensions of BASIC, utility programs, or complete applications programs. A PODNUH (version 1) package is available for $17.00 + $2.00 postage, which in- cludes selectable type fonts, a perpetual calendar, note pad, scientific calculator, and more. "Add-On" options will continue to be added, such as WYNN DOE (a windowing utility) for $5.00. The author is also interested in sharing his program with pro- grammerS or user groups, am is offering a disassembled listing with documentation for $1.00, with the hope that PODNUH is adopted as a new 2068 standard. Send check or money order to: Ron Ruegg, 37529 Perkins Road, Prairieville, LA 70769.

Many Timex fans have heard or read about the research that William J. Pederson of THE WIDJUP CO. has conducted on the TS2068 ROM/Operating Systen, from articles in several user group newsletters and magazines. Now there is a 160 page book by Mr. Pederson called "TOURING THE 1TS2068 ROM OPERATING SYSTEM". While this type of book isn't for everyone, it will be of interest to programmers amd 2068

LARKEN 2068 FLOPPY DISK SYSTEM - The most advanced Dos available for the 2068/Spectrum . LKdos uses ALL Commands such as CAT MERGE ERASE LOAD SAVE PRINT OPEN etc. Also can support RAMDISK up to 254K and Sequential / Randoa

Access Files (with additional software). .The Larken Disk Interface can handle up to 4 floppys for up to 3.2 MegaBytes of storage. Also NMI Save Button and KEMPSTON Joystick port on interface Also 10 Extended Basic commands for Windows and Graphics. AERCO RAMEX or OLIGER Disk users can add LKdos for gore commands, Ramdisk and access to all LKdos software ## PRICE - Larken Floppy Disk System ...ccscecsee $119.95

- Floppy Disk IF with 0 K Meaory board .. $149.95

- Larken Disk Edi tor sevnecavese

~ Sequential/Random access files ....eee

- Xmodem to Disk Modem package ..ecoccce

- 2X-B1 Floppy Interface ({ 15 left)...

- LKDOS for Aerco,Ramex or Oliger Disk IF

(All prices are US , Add 4$ Shipping )

LARKEN ELECTRONICS RR#2 NAVAN ONTARIO CANADA K4B-1H9 (613) -B35-2680

the

found that

-

The last four digits of

following program develops words based on telephone numbers. I have

a phone number is remembered as a word,

easier than the four numbers.

16K

should also work with a T1TS2068,

This program will run on a TS1000 or ZX81 with a RAM pack installed, or on a TS1500. This program with only minimal

changes to the program.

Line Uses:

Those

S"2X... PHONE HOME!"

A T51000/T51500/2X61 Program To Help Remember Telephone Numbers

by David Hartman

users with a 16K TS1000/ZX81, should end

up with "13505" printed on the screen, after entering the following line: PRINT (PEEK 16388 + 256 * PEEK 16

389) -

If

likely

1-24: Opening screen VARIABLES: 25-40: Instructions and input §0~70: Check for *°1”’ and 70’ ngs

80: See 8000 110-200: 202-255: 260-310: 500-575: 600-640: 53010-5040: 8000-8040:

Onn

10

BER SPELLS"

30 THEY

Assemble words by slicing Print results on screen Copy and continue Assemble words if a Re-establish phone number for printing Initialize, set up arrays

Not useful message

f? *"1’ or ’O0” are involved “xe

da Ky

REM WORDS FROM TELEPHONE NUMBERS

REM 105/1.1 3/20/88

SLOW

CLS

PRINT AT 6,03"WORDS FROM TELEPHONE NUMBERS"

PRINT AT 21,05"(C) GOSUB 5000 FOR J=1 TO NEXT J

CLS

PRINT TAB 83"TELEPHONE WORDS",,, PRINT "ENTER THE LAST FOUR DIGITS OF SPELL. THEN,

1988 DAVID HARTMAN"

60

WILL BE“,"ABLE TO REMEMBER IT WITHOUT","WRITING IT DOWN.

40

169 170 180 190 200 202 203

INPUT N&

IF LEN N$<4 THEN GOTO 90 LET F=0

FOR J=1 TO 4 IF N@(J)="1" IF N#(J)="1i" IF N#$(J)="0" NEXT J

IF F>1 THEN GOTO 8000

GOTO 110

PRINT AT 15,03;"YOU DID NOT ENTER A 4 DIGIT", "NUMBER. PLEASE TRY AGAIN. "

FOR J=1 TO 60

NEXT J GOTO 25 LET X=1 FAST FOR J=i FOR K=1 FOR L=1 TO 3

FOR M=1 TO 3

IF F THEN GOTO 500

LET WS(X)=LS(VAL N#$(1),J)+L&(VAL NS(2),

K)+L$(VAL N#(3),L)+L$(VAL NS(4)yM) LET X=X+1

NEXT M

NEXT L

NEXT K

NEXT J

CLS

SLOW

OR N$(J)="0O" THEN LET F=F+1 THEN LET N#(J)="Q" THEN LET N#(J)="Z"

59,3 TO 3

l; ms

3AT 14,03"LETS SEE WHAT YOUR NUM

YOUR TELEPHONE NUMBER TO SEE", “WHAT USE THAT WORD WHEN SOMEBODY WANTS YOUR", “NUMBER.

205 210 Z12 215 220 225 230 240 245 2350

260 270 280 290 300 310

500

a1

THEY PROBABLY

(PEEK 16396 + 256 * PEEK 16397)

"13505" is your answer, then you have most typed in the program listing correctly.

Holds entered phone number

w$: Holds all possible letter combinations 1$: Holds telephone dial information

Flag indicates if a (Important to know because 1 and O do not have assigned letters) Increment control

For/Next control

71’ or a ’O’ is in the number

GOSUB 400

PRINT “HERE ARE THE CHOICES FOR "3NS3"=" PRINT :

LET J=1

FOR K=J TO J+5

IF K=82 THEN GOTO PRINT WS(K) 5". "3 NEXT K-

PRINT LET J=K GOTO 220 PRINT AT INPUT A$ IF AS<>"C" PRINT AT COPY

RUN

IF N$(1)="Z" THEN LET W#(X)="O"4+L3(VAL NS

(2) ,K)+LS(VAL N$(3),L)4+LS (VAL NS(4)5M) IF N$(1)="Q" THEN LET WS(X)="1"4+L$(VAL NS

(2) ,K)4+LS(VAL NS$(G),LI+LS$°VAL NE(4),M) IF N#®(2)="Z" THEN LET WS(X)=L$(VAL NS(1), J+"O"+L$(VAL NS(3),LI+LS(VAL NS(4),M)

260

21.0%" (C) COPY?

THEN GOTO 25

21,03" :

330 IF N$(2)="Q" THEN LET WS(X)=LE(VAL N#(1),

5020 LET L#(1)="" J)+"1"4L$(VAL NS(3),L)+LS(VAL NS(4),M) 5022 LET L$(2)="ABRC" 540 IF N#(3)="Z" THEN LET WS(X)=L$(VAL NS(1), J024 LET L$(3)="DEF* J)+L$(VAL NS(Z),K)+"O"+LS(VAL NS(4),M) oe = Sear 550 IF N$(3)="Q" THEN LET W$(X)=L$(VAL N$(1), 5030 LET SS J)+LS (VAL NS(2),K)+"1"4LS(VAL NS(4)5M) 5032 LET L$(7)="PRS" 560 IF N%(4)="Z" THEN LET WS(X)=L$(VAL N$(1), 5034 LET L$(8)="TuUV" J)+L$(VAL NS(2),K)4LS(VAL N$(3)5L) +"9" 3036 LET L$(9)="WxY" 570 IF N$(4)="Q" THEN LET W$(X)=L$(VAL NS(1), ee te Aes J)+L$(VAL N$(Z2),K)+LS(VAL N$(3B),L) +1" B000 CLS 375 GOTO 169 8005 GOSUB 600 380 STOP 8010 PRINT AT 14,03"YOUR NUMBER, "3N%5", HAS 600 FOR J=1 TO 4 Ei TOO MANY ONES OR ZEROS TO BE USEFUL 610 IF NS(Jo="Q" THEN LET N$(J)="1 IN- CREATING A WORD....SORRY ABOUT THAT." 620 IF N&(J)="Z" THEN LET NS(J)="0" 8020 FOR J=i To 100 630 NEXT J 8030 NEXT J 640 RETURN 8040 GOTO 25 5010 DIM L$(10,3) 8999 STOP 9010 RUN

eT By

A Cas

oTUD POKER

io-Style Game Listing For The

by William C. Andrews

This is a TS 2068 program to play FIVE CARD STUD POKER

against the computer, the dealer. After an ante you bet on each

card dealt. time by betting "9".

game’s progress.

The dealer matches your bet.

You may go out at any You must pay to see the hole card if needed. The dealer is also the banker and will keep track of the

When typing the program please note that letters in

quotes in lines 6919, 6939, 6059,

6149,

7828,

letter in lines 8991 to 89852 are in GRAPHIC mode for UDG’s. 9992 clears color from the screen for working on the program.

9991 and the last Line

Ze) 268

262 LET FP (3) =V;

GO TO 3288

NEXT Ks GO TO 482

LET X#(2)=AS(F,

Line 6969 selects cards randomly and line 6119 prevents 4)3 RETURN duplication. Cards are shuffled for each game. 265 LET F(4)=@Vi LET X#(4)=AS(F, 4): RETURN 3 For a tape of this program send $ 19.99 pp to me at 30 268 LET P(S)=V:i LET X#(3) #AS(F, Oak Knoll Drive, San Anselmo, CA. 94949. 4): RETURN 30% FOR Im18 TO 24 STEP 3 3i@ LET AsI iO LET ST=190 195 PRINT PAFER 4;L$ 328 GO SUB 4000 15 IF ST<=0 THEN GO TO 467¢ 110 FOR N=16 TO 21: PRINT AT N, 330 GO SUB 3460+( (1/3) -5) 20 BORDER 4: PAPER 4: CLS : LE @; PAPER 4;" 340 GO SUB 42300+(1+2) T T=@: GO SUB 8sgae - “i NEXT N 345 IF Il=24 THEN IF DR>=1 AND 25 PAPER 7: FOR N=2 TO 14: FRI ee 4959 alae AND DL>PL THEN GO TO Sii ee "s NEXT N aes Pe@: LET D=@ 35@ GO SUB 4750 a se = Z@ PRINT FLASH 13 PAPER 6;AT 355 GO TO 26g 30 LET PR=@: LET DR=@: LET PL fear < peek ke Se $85.50 30268. @s LET DL=@: DIM X#(5)s DIM Y#(6 gg eee pe a ee ) xs 400! . i har dil ae 36% LET D(3)=V: LET Y$(3)=A8 (F A ai eee 4:" "y PAP GO-SUR 6208 4): RETURN ER 2; INK 9; BRIGHT 1;AT @,5;" F Be ea lg Saag S get LET Dis) eva LET, YELAISAGtr, ee ye ee Ag a a opti 363 LET D(S)=V1 LET Y8(5)=A8(F, ie aes 155 LET P(2)=V: LET X$(2) AS (F, 4)1 RETURN 4) 5 $a caineaeselaemiaiaiamiianeainmeein 400 LET B=4: LET A=18 ne ee ees 160 LET H=i: LET A=18: GO SUB 6 cio 6a ee ieee <5 jg 1) otonmntannaanmnermttacacr assoc Doo 420 LET D(1)=Vi LET Y#(1)=AS(F rie oc 165 LET H=@: LET A=24: GO SUB 6 4) . 60 PRINT FPAFER 4:K% 430 GO SUB 4499 65 PRINT "@"; INK @;" YOUR HA gee LE) As2t LEY Oia) evi LET YS 435 GO SUB 4430 ND DEALERS HAND "3; INK 13" § (2) =AS(F, 4) 448 GO TO See " 175 GO SUB 4606 1@0@ DIM A(5): FOR N=1 TO 5 70 PRINT AT 3, G;L;AT 3,0; "R"3 169 GO SUB 4750 1918 LET A(N) =F (N) AT 3,31)"5" 200 LET Bae 1920 NEXT N: GO SUB 1150: RETURN A ee a 218 FOR K=2 TO 8 STEP 3 80 PRINT "§";TAB 313" @"3;TAB 3 220 LET A=K 193@ DIM A(S): FOR N=1 TO 5 1; TAB Sis" y <30 GO SUB 6999 1935 LET A(N)=D(N) 85 NEXT I 240 GO SUB 260+K 114M NEXT N: GO SUB 115@: RETURN Be tep Sack oes e 258 GO SUB 4990+(Kx19) 5; F ge 21 GO SUB 4280 1158 LET STR=@: FOR N=1 TO 4 fon eee nee Cee eS 252 IF K>2 THEN GO TO 358 4 oo eee 6 1178 LET C=A(M) 118@ LET D=A(M+1)

1198 IF C<=D THEN GO TO i229 1208 LET A(M)=D

1219 LET A(M+1)2C

1228 NEXT M

1238 NEXT N

1249 FOR N=2 TO 5

1258 IF A(N)#=A(N-1)+1 THEN GO T 0 1279

1268 return

1278 NEXT N

1289 LET STR=1: RETURN

3999 STOP

4000 IF P(2)=P(1) THEN LET PL=p

(2): GO TO 4150

4G1® RETURN

4020 IF P(3)=P(1) OR P(3)=eP(2) T

HEN LET PL=P(3): GO TO 4156

4%21 RETURN :

4030 IF PR=1 THEN IF P(3)=P(1)

AND P(3)=P(2) THEN LET PL=P(3)3 GO TO 4199

4842 RETURN

4050 IF PR=1 THEN IF P(4)=P(1)

AND P(4)=P(2) OR P(4)=P(1) AND P (4)=P(3) OR P(4)=P(2) AND P(4) =P (3) THEN LET PL=P(4): GO TO 419

g

4060 IF P(4)=P(1) OR P(4)=P(2) O

R P(4)=P(3) THEN LET PL=P(4): G

0 TO 4150

497% RETURN

4080 IF PR=3 THEN IF P(5)=P(1)

AND P(5)<>P(4) OR P(S)=P(2) AND

P(5)<oF (4) OR P(5)=P(3) AND P(3)

<>P(4) OR P(5)=P(4) AND P(5)<>P(

3) THEN LET PL=P(5): GO TO 4290

4090 IF PR=3 THEN IF P(5)=P(2)

OR F(S5)=P(3) OR P(S)=P(4) THEN

LET PL=P(5): GO TO 4209

4190 IF PR=2 THEN IF P(5)=P(1)

AND P(5)=P(2) OR P(S5)=P(1) AND P (S)=@P(3) OR P(S)=P(1) AND P(S)

=P (4) OR P(5)=P(2) AND P (5)=P(3) OR P(5)=P(2) AND P(S)

=P (4) OR P(5)=P(3) AND P(5) =P (4) THEN LET PL=P(5): GO TO 4192

4119 IF PR=1 THEN IF P(5) =P (1) AND F(5)=P(2) OR F(5)=F(1) AND P(S)=P(3) OR P(5)=P(1) AND P(5) =P (4) OR P(5)=P(2) AND P(S) = P(3) OR P(5)=P(2) AND P(S) =P(

4) OR P(S)=P (3) AND P(S) =P(

4) THEN LET PL=P(5): GO TO 4199 4120 IF P(5)=F(1) OR P(S) =P (2) OR P(5)=P(3) OR P(5)=P(4) THE N LET PL=F (5): GO TO 415@

4148 RETURN

4150 LET PR=PR+1

4168 IF PR=1 THEN PRINT INK 23 AT 16,2;"0NE PAIR", INK 1,AT 17, 25 "ates BEEP 3,19

4170 IF PR=2 THEN PRINT INK 23

AT 16,2;"TWO"s BEEP .3,19s

BEEP .3,10

418 RETURN

4198 LET PR=PR+1

420 LET PR=PR+1

4219 IF FR=5 THEN GO TO 426@

4220 IF PR=3 THEN FRINT INK 23

AT 16,13" THREE 2 AT 17,13 "OF

A KIND"; INK 1sAT 18, 15 “ateMaMaMeMaMe”

"; BEEP .2,10: BEEF .2,14: BEEF tote

4230 IF PR=3 THEN RETURN

4249 IF PR=4 THEN PRINT INK 23

AT 16,143" FOUR “3AT 17,15"0F

A KIND"; INK 15AT 18, 15 “eteMeMatataMeM”

*"'; BEEF .2,10: BEEF .2,1@: BEEP -2,10: BEEP .2,1%

4250 RETURN

4260 IF PR=5 THEN PRINT INK 2;

AT 16,@;"FULL HOUSE"; INK 13;AT 1

7 ; By ii ee te! 3 BEEF a bed ; 1s BE

EP .2,1%8: BEEP .2,1@: BEEP .2,19 : BEEP .2,1@: BEEF .2,1@:

BEEP .2,1@: BEEP .2,1@: BEEP 2,18

427% RETURN

“4280 IF X$(1)=X#(2) THEN IF x@(

2)=X$(3) THEN IF X#(3)=X%(4) TH EN IF X#$(4)=#X$(5) THEN LET FR= &

299 IF PR®& THEN PRINT INK 2; AT 16,13" FLUSH "3 INK 13AT 17 pig atetete"e"e"e"e"s"" 3 FOR N=1 TO 10: B EEP .2,1@: NEXT N 4291 GO SUB 14%: IF STR=1 THEN

LET PR=7 4292 IF FR=7 THEN FRINT INK 23 AT 16,13; "STRAIGHT "3; INK 13AT 17 pig ates eee "e"e”' s FOR N=i TO if: B EEP .2,19: NEXT N :

4299 RETURN

4320 IF D(3)=D(2) THEN LET DL =D(2): GO TO 4499

4321 RETURN

4323 IF DR=1 THEN IF D(4)=D(2) AND D(4)#D(3) THEN LET DL=D(4):

440% IF DR=3 THEN IF D(1)#D(2 ) AND D(1)<>D(5) OR D(1)=D(3) AN D D(1)<>D(5) OR D(1)=D(4) AND D¢(1)<>D(5) OR D(1)=D(S) AND D1) <7D(4) THEN LET DL=D(1): GO To 4546 4410 IF DR=2 THEN IF D(1)#=D(2) OR D(1)=D(2) OR D(1)=D(3) THEN LET DL=D(1):.G0O TO 4530 4426 IF DR=1 THEN IF D(1)=D(2) AND D(2)=D(3) OR D(1)=D(2) AND D(2)=D(4) OR D(1)=D(2) AND D(2)=#D(5) OR D(1)=D(3) AND D (3)=D(4) OR D(1)=D(3) AND D3) =D(S) OR D(1)=D(4) AND D(4)= D(S) THEN LET DL#=D(1): GO TO 45 4d 4430 IF DR=1 THEN IF D(1)=D(2) OR D(1)=D(3) OR D(1)=D(4) OR Dit

GO TO 4548 )=D(5) THEN LET DL=D(1): GO TO 4324 IF D(4)=D(2) OR D(4)=D(3) T A4e0

HEN LET DL=D(4): GO TO 4499 4440 IF D(1)=D(2) OR D(1)=D(3) O

4525 RETURN R D(1)=D(4) OR D(1)=D(S5) THEN L 4326 IF DR=3 THEN IF D(5)=D(2 BT Baws 1134200 7o"kaes

Y AND D(S)=D(3) AND D(5)=D(4) TH 4450 RETURN EN LET DL=D(5)1 GO TO 4540 4460 LET DR@DR+1 4370 IF DR=1 THEN IF D(5)=D

. 4488 GO TO 4590 (2) AND D(S)=D(3) OR D(5)=D(2) A 4490 LET DReDR+i

ND D(5)#D(4) OR D(5)=D(3) AND D( ; 4592 IF DR=1 THEN PRINT INK 2

alias 215 "ate": BEEP 3,2

4560 IF D(S)=D(2) OR D(S)= 451% IF DR=2 THEN PRINT INK 2; DL=D(5): GO TO 4499 =.

429% RETURN

3-D mathematical plot of the moon’s surface (appeared in TDM J/A '85) Converts astronomic coordinates to altitude/azimuth (in TDM N/D ’85) Ultra-easy designer graphics for redesign of U.D.G.s (in TDM J/A '86) “udg” version 2 allows multiple fonts and much more (in TDM N/D ’66) BASIC full-screen window facility + restores screen (in SWN N/D ’86) BASIC Classy Front End new fonts utility (as appeared in TDM M/A ’87) Complete Classy Front End fonts M.C. version (as in TDM J/A-N/D ’87) PLUS this addition if you wish: “wkp” Windows & Portholes complete--can work with “ofe/mc” (New this issue) BINGHAM’S BEST 9.95 ppd 12.95 ppd

“UDG+" The popular & useful "son" of udg program as found in BINGHAM’s BEST “cfe/mc” Complete M.C. version of Classy Front End (use alone or with “wkp" )

“wkp" The complete M.C. version of Windows & Portholes (stand-alone also) JAZZOFIRE : 95 vod

Mail all orders to: PAUL BINGHAM P.O. BOX 2034 MESA, AZ 85214

& (please US funds only) | includes i e @ Ounag Fire Windows WHS 2 ¢O0 cB

| co ott ee Hons le ovine os al Sle tat cee JE cas a ss SS, EBIQEsSeREEIIE; | (2 Se Wy Portholes

TaPUVASASHRU ASSAD EAA SSSUIANSSASISONSLSSSISSSSISHASHBMHHBIE

»

GE

SUnoHE Y

* New sted er sal: sh RM ToT POS ated? THRE OCT CHILD EST UVURY 2]. Ox 66 gta dl oes pes tree ryr Ayse (Noe JOLT ¢Se Oat)? TFET COP CHILI

FUOAODEDUGODED OR ETATERODopengoNS BU

452@ RETURN

4520 LET DR=DR+1

4540 LET DR=DR+1

4550 LET DR=DR+1

4548 IF DR=S THEN GO TO 4610 4570 IF DR=3 THEN FRINT INK 23 AT 16,213" THREE "sAT 17,213 "0 F A KIND", INK 13;AT 18, 215 "etwtetets® ee": BEEP .2,2: BEEP .2,2: BE EP .2,2

4580 IF DR=3 THEN RETURN

4590 IF DR=4 THEN PRINT INK 23 AT 16,215" FOUR “sAT 17,213"0 F A KIND"s INK 1; AT 18,21) "etette’? e""": BEEP .2,2: BEEP .2,2: BEE P .2,2: BEEP .2,2

460@ RETURN

4619 IF DR=S THEN PRINT INK 23 AT 16,21;"FULL HOUSE";AT 17,213" aeeteee"e"ee”' 1 FOR N=1 TO 8: BEEP .2,2: NEXT N

4620 RETURN

4620 IF Y#(1)=Y$(2) THEN IF Ys( 2)=Y$(3) THEN IF Y#(3)=Y#(4) TH EN IF Y#(4)=Y#(5) THEN LET DR= &

4640 IF DR=6& THEN FRINT INK a AT 16,213" FLUSH.-"sAT 17,21; "oe ofaMe"e"e"e"e"e"" : BEEP .2,23 BEEF .2, 2: BEEP .2,2: BEEP .2,2: B

EEP .2,2: BEEF .2,2: BEEF Pr 4 465% GO SUB 193%: IF STR=1 THEN LET DR=7

4655 IF DR=7 THEN PRINT INK 2} AT 16,215" STRAIGHT "sAT 17,213" anata eee ees FOR N=1 TO 8: BEEF e2,28 NEXT N

4660 RETURN

467@ BORDER 6: FPAFER 6: CLS

468% PRINT INK @;AT 9,18;"YOU’'R E BROKE" ;AT 11,1;"SEE YOUR BANKE R AND COME BACK."

469% FAUSE @

4728 STOP

4719-PRINT AT 19,@;"YOU NOW

"SAT 20,8; "HAVE-8 "3ST

4720 IF ST<1@ THEN PRINT AT 28, 83" is

4730 IF ST<18G8 THEN FRINT AT 22 9 73 8 ie

4746 IF ST<=8 THEN GO TO 467% 475% PRINT FLASH 1; PAPER 6;AT ios. sai.”

£760. PRINT AT 17,153" —"

47708 FRINT AT 19,@3;"YOU NOW er AT 20,M;"HAVE-$ ";ST: IF ST<190 THEN FRINT AT 20,93" "

4780 .INFUT W

4790 PRINT AT 16,1233" .

4890 LET W=INT W

4810 IF W>16 THEN FRINT AT 17,1 S;"SORRY,"sAT 18,13; "LIMIT"sAT 1 9,113" "SAT 19,133 "% 10" 4820 IF W>18 THEN FAUSE 150 4830 IF W218 THEN FRINT AT 17,1 33" "SAT 18,133" "SAT 9, 415" rs

4849 IF W>1@ THEN GO TO 474¢ 4858 IF W<1 THEN FRINT AT 16,11

3 PAPER S; FLASH 1;" YOU "SA T 27,1325" CHOSE. "SAT 16,11, " TO GO “sAT 19, bas” imei =*%: 3

EEP 1,-15: PAUSE 15@: GO TO 512% 4868 LET ST=ST-w 4878 LET T=T+2xW 488@ PRINT AT 17,133" "SAT 18,12;" "SAT 19,113" “SAT 17,13; "8 "sW 489% PRINT AT 20,7;ST

49090 IF ST<1@ THEN PRINT AT 29, 8, i i : 4919 IF ST<19@ THEN PRINT AT 2g V3 a de

4920 IF T<1@@ THEN FRINT AT 19, 11;"TOTAL=$"3T

4930 IF T>=19@ THEN PRINT AT 19 »ils"TOTALS"3T

4948 RETURN

4958 FOR 1=16 TO 20

4966 PRINT AT 1,10; PAPER 4; "8"; AT 1,20; "a"

497% NEXT I

4980 PRINT AT 15,10; PAPER 4; "" ae

4985 FOR N=16 TO 19: PRINT AT N, lis PAPER 73; INK 13" my NEXT N

4999 PRINT AT 20,10; PAPER 4)" 9" s PAPER 2; INK 93" THE POT "3; PA

PER 4;"8"

4995 RETURN ,

S@1i@ IF PR>DR THEN GO TO 5a@6o S@15 IF DR>PR THEN GO TO 5119 520 IF PR=@® AND DR=@ THEN GO T

O 5130

5@30 IF PR=DR AND PL>DL THEN GO TO 5049

5049 IF PR=DR AND DL>PL THEN GO TO 5119

5050 GO TO Size

5068 PAUSE ao

5S@70 PRINT FLASH 13 INK 1;AT 16 ,13;" WINNER "3 FLASH @; INK 3A T 17,43" "SAT 17,33" "3

T: FOR N=1 TO 8: BEEP .1,19: NEX TN

5080 LET ST=ST+T

5090 PRINT AT 20,7;ST

5108 GO TO Size

5118 PAUSE ag

S120 PRYNT FLASH 13 INK 1;AT 16 »21;" WINNER "3 FLASH @} INK Q}

AT 17,213" "sT: FOR N=1 TO 8: BEEP .1,-191 NEXT N

S13@ PRINT AT 16,113 PAPER 4; FL

ASH 15" PLAY "“sAT 17,113" ANO

THER "s3AT 18,113" HAND? "sAT 4

9,113" (Y/N) "

514@ PAUSE @

S150 IF INKEY$="N" THEN GO TO 3

149 |

5i55 GO To 11

S16@ BORDER 3: FPAFER 3: INK 7: C

LS

5170 PRINT AT 1@,1;"HOPE YOU HAD FUN---COME AGAIN."

5i8@ PAUSE @.

5192 STOP

600% FOR C=1 TO 2

6918 PRINT AT B,A;"FJJIG"

6%20 FOR N=B+1 TO B+5

693G PRINT AT N,A;"K kK"

6848 NEXT N

6850 PRINT AT B+46,A;"HJJJI"

6968 NEXT C

6W@65 BEEF .@1,10

697@ IF H=1 THEN GO TO 61239

6W88 GO SUB 7oa"

6090 PRINT AT B+i,A+1; INK X;A8(

F,4)sAT B+3,A+1; INK @,AS(F,2 TO 3)s;AT B+S,A+3; INK X;AS(F, 4)

6100 LET V=@: GO SUB 7040

6110 LET AS(F,1)="4"

6128 RETURN

6138 FOR N=B+1 TO B+5

6149 PRINT AT N,A;"K"3 INK 13 "EE

EE‘, INK By Wiee

615@ NEXT N: RETURN

6608 LET F=INT (RNDXKS52) +1

6610 IF AS(F,4)<>"9" THEN GO TO 1628

6628 LET X=@

6630 IF AS(F,1)="2" OR AS(F,1)="

4" THEN LET X=2

6648 RETURN

7088 LET F=INT (RNDX52) +1

7019 IF AS(F,1)<>"@" THEN GO TO 7230

7029 LET X=@: IF AS(F,4)="A" OR

AS(F,4)="D" THEN LET X=2

7830 RETURN

7049 IF AS(F,2 TO 3)=" A" THEN

LET V=14: RETURN

8

"SAT 17,23; "8

7050 IF AS(F,2 TO

LET Vell:

RETURN

7W68 IF AS(F,2 TO

LET V=12:

RETURN

7070 IF AS(F,2 TO

LET V=13:

RETURN

a4, prem! (a"

3) ="

2)=" J" THEN

THEN

Kk" THEN

7080 LET VeVAL AS(F,2 TO 2) 7098 RETURN

B98 DIM D(S) BOG1 LET 89S2 LET BOSS LET 8004 LET B05 LET 8986 LET BOd7 LET 8408 LET B89 LET 8418 LET 8411 LET 8412 LET 8813 LET 8914 LET 8215 LET 8016 LET 8817 LET 8@18 LET B8B19 LET 8829 LET S021 LET 8922 LET BO23 LET 8W24 LET BG25 LET BG26 LET BW27 LET 8928 LET BY29 LET 8038 LET 8831 LET 88932 LET B32 LET 8934 LET BOIS LET 8826 LET B837 LET 8438 LET BWI9 LET 8848 LET 68041 LET 8042 LET B43 LET 8344 LET 8845 LET 8846 LET 8847 LET 8848 LET B49 LET 8058 LET 8851 LET 8852 LET

A$ (S52, 4):

AS$(1)="g

AS (2) ="g

AS (3) ="9g

AS (4) ="g

AS (5) ="g

AS (6) ="g

AS(7) ="g

A$ (8) ="g

AS(9)="g

AS(19) ="g AS$(11) =" AS(12) ="g AS(13) ="¢ AS (14) =" A$(15)="¢ AS(16) =" AS(17) =" A$(18)="g AS(19) ="g AS (20) ="g AS (21) ="¢ AS (22) =" AS (23) ="g AS (24) ="g AS (25) ="g AS (26) ="g AS (27) ="¢ AS (28) ="g AS (29) ="g AS (3B) ="g AS (21) ="¢ AS (32) ="g AS (33) ="¢G AS (34) ="9g AS (35) ="g AS (36) ="g AS (37) ="g A$ (38)="g AS (ZI) ="g AS (4G) ="g AS (41) ="g AS (42) ="9 AS (43) ="g AS (44) ="9 AS (45) ="g5 AS (46) ="g AS (47) ="g AS (48) ="g AS (49) ="g A$ (50) ="g AS(Si)="g AS (52) ="9

BG52 RETURN

9000 RESTORE : FOR a=USR

USR “"k"+7

9018 READ

9028 NEXT as GO TO

9O28 DATA

60, 24

9940 DATA

29

9250 DATA

16,56

9260 DATA

6,40, 24

DIM F(S): DIM

AA Tt] 2A" 3A" 4A" SA 1) 6A" 70 i 8A" 9A iT) 1A" JA" QA" KA 1] AB" -B 3B" 4B" SB" 6B" 7B" BB" 9B" 195" JB" QB u KB" AC iy yd lag 3 ‘i 4C" SC ty EC di LT) 8c" 9C 19C" gia fits KC" AD" oT) u 3D" 4D" SD" 6D" 7D" 8D" 9D" 19D" JD" @D" KD"

16

ahi At TO

user: FPOKE a,user

24,606,126, 255, 255,126, 28, 28,8, 197,127,197,8, 16,56,124, 254, 254, 254,

192, 255, 255, 255, 255,12

9370 DATA 284,204,51,51, 204, 204,

sl,ol

9080 DATA @ 9898 DATA ® 9190 DATA 2 9118 DATA 9120 DATA 9138 DATA

4

O,, B, td

»15,12,24,24 , 192,249, 48, 24, 24 24,12,15,7,8,8,@ 24,24, 48,240, 192,9,9,8 ,0,0,255,255,9,8,90 24,24, 24,24, 24, 24,24,2

9990 REMabcdefghi jk 9991 REMABCDEFPGHIJIK

9992 BORDER 7:

LS : STOP 9995 SAVE "STUD FO 9996 GO TO 18

FAPER 7:

KER"

INK @: C

LINE 9899

WARREN'S 2068 BASIE’. BOR Z OG bei ede

Warren Fricke

HORIZONTAL BAR CHART is a routine in BASIC for

the TS2068 with an attached TS2040 printer. The APPLES = 180 units. purpose of the routine is two-fold. One, it is a a | relatively short program that provides a bar chart to AVOCHDOS = 20 units. illustrate the comparative status of a number of items wOnNOs —" “si (up to 20) in an inventory. Two, it demonstrates one fia ae ee ito: way in which the 2040 printer can print out and BLUE BERRIES = S@ units’ “couple” automatically several screens full of data, a = and print it as a single illustration. CHERRIES = 72 units.. This program will print out one screen full, or ng P : two screens full, as the number of items requires. GRAPES = in units. For example, we input data on 15 assumed and PROPE FRUIT = 25 units. related items, in this case various fruits. We also ee ci oe Rite Seal included make-believe quatities and ae title, in LEHONS = 88 units. : response to LINE 55 of the program. The routine is —_ ¥ universal. You may enter any related items and LINES = ii units. respective quantities. The item name is limited to 12 Peery 23 ner ey characters, in LINE 20. We also elected to call this reeiies ge SLES FIGURE 1, but again, this may be changed to suit your PERCHES = 562 units. application. Usually bar charts are used for a group ee . of related items of 5 or more. Less than this and a PEHRS = 35 units. pie chart may be a better choice. es x x ; In order to understand the arithmetic of the PLOT PINEAPPLES = 27 units. | and PRINT AT lines, such as 240, 250, 630 and 640, you © PLUMS = 12 units. should refer to a screen chart for the computer. There is one on page 152 of the User Manual. TANGERINES =z ¢ UNALS. H 1 REM ## HORIZONTAL SAR CHART 2 REM #4 "“D-36", 3-17-33, WF S REM #4 ENTER CATA 8 LET max=@: POKE 23658,3 18 INPUT “How many items, 5 to BO? “7s iS IF I920- THEN -ee. Ta 108 223 ye AR(I,12): DIM OCT) 32 FOR n=1 To I WUE ¥ , 48 INPUT “Enter item No. “; in) Baer Es re eer | » amd quantity “;Asind ,O Cn) 45 IF QOtn) +max THEN LET max=01 rh) S@ NEXT n S68 PLOT @,0: GRALW @,175: ORAL SS INPUT “Ernrtver- tittle. Maxtemu 255,06: DRAW O,-175: COPY : CLS m of Se Characters a S10 IF I+=1l2 THEN GO SUB 6ae8 2@8 REM *#+# PLOT CATA =e AS re B$/2;84,; 2190 LET V=160 HH) 20 ,iz GU ral 220 FOR m=1 TO I ents PLOT @,375: ORAW @,-17S:- DR 230 FOR n=@ TO 2 Wy 255,08: CRAY @,175: coPyY : sTa 240 PLOT @,V484n: DRAW S550 tm) Pp fiiax,@: NEAT ni 668 REM #4 PLOT CONTINUATION 25@ PRINT AT e21- »1;AR(MI;" = oF DATA “;, Bimr:; | Ofrs tee 665 LET V=sil6e 2608 LET VsV-16 618 FOR ma=1le TO I 2708 IF m=108 AND T=10 OR m>10 AN 623 FOR m=8 TO 2 D +e a GO TO 580 630 Ag Nk Poe aad CRAW 25340 (mn) 238 NEAT m : f/fiax 5,2: NEXT 7n en dee ee taken Se B$/2;,BS; 540 PRINT AT 2l-VrS,1; Agim = 28, ;‘> GUR Sas eS pei 5 ~ URALS. 3608 PLOT ©,@: ORAV 8,175: DORA 650 LET V=V-16 255,88: 4 @,-175: ORAW -255,6: 678 NEAT m: RETURN COPY : .STOP i A BROKEN 2068 x FIX IT YOURSELF! by John M. Bell IMPORTANT NOTE: The following article describes a 5 aes BS: SOO ORR ec ae Pie ree ge method of testing for, and repairing a Timex Sinclair sue SOE Ee pe seri ey chips, © chip(s) = 2068 with bad RAM chips. Though it is a simple project usually destroyed when turning on the computer with a that most people with basic soldering skills are printer or disk interface attached. Though I have no capable of completing, and the information presented way of proving it, the most likely cause is a high here is believed to be correct, the author and pub- voltage “glitch” produced by the switching regulator lisher take no responsibility for any damage done to when it is "“powered-up" under a heavy load. Note that the computer (or hobbyist) as a result of, or while one or all of the chips can burn out, and in any

combination.

There are three symptoms that may indicate bad RAM chips. The first is a blank screen when the computer is turned on. This suggests either a "brain

using this information.

5

rear 4

Sresire i

GT-STtP cq = ae GT-STtrr ¢c =

RAM CHIP LOCATIONS IK TIMES 2068, CHIPS ARE HARKED 4416-15

GTt-STttrr de

@> seria. no.[ |

Syne EDGE OF PRINTED CIRCUIT BOARD

~ J

TIMEX TS-2000 335-5000 1-@3A

CARTRIDGE CONNECTOR ——

FIGURE ONE

dead" 2068 (the SCLD...or "square chip" and is VERY difficult to replace, or that most of the

is destroyed, IF you can get one), RAM chips have burnt out. The

second symptom is a display that consists of a white border around ae screen of "garbage". This indicates that at least one of the RAM chips in the first 16K

bank is bad. The last and most obvious symptom is the free memory after power up is less than 38652 bytes (using the PRINT FREE command). If a Spectrum ROM is installed in the computer, the original Timex ROM will

have to be replaced to use the FREE command. If your machine exhibits any of these symptoms, there is a chance it can be easily repaired. First,

the computer's PC board must be completely removed from it's case. Save all the screws and be careful to avoid damaging the keyboard ribbon cable. Place the PC board on a non-conductive work surface and plug it in. Leave it turned on for a few minutes and then check each of the RAM chips for overheating (see Figure One for the chip locations). If any of the chips are hot to the touch, they are bad and need replacing. Mark them for removal. If none of the chips are hot and the computer still displays a black screen, the problem is probably not with the RAM chips. Consider sending the machine out for repair (to Dan Elliott of Promise Land Electronics—--see May/June '88 issue of TDM for address listing). If the computer displays a border around a screen of garbage, chips U6 and/or U7 may have gone bad. If a normal sign on the screen is displayed, but only 22268 bytes are "free", chips U16 and/or U17 may have gone bad. If 5884 bytes are free, chips U12 and/or U13 and possibly U16 and/or U17 may have gone

bad.

The chips that are hot to the touch should now be removed. Don't bother trying to remove them in one piece. Just cut or clip pins near the body of the chip, and remove the remaining pins from the PC board with a hot soldering iron and tweezers. If the chips are suspected to be bad but are not getting hot, a more difficult problem exists. The chips can be clipped off the board and discarded, or removed in one

piece. If the chip is clipped off, you will never know if it was good or bad, and it will have to be re- placed. If the chip is removed in one piece (a very

difficult task), the chip can be saved for testing and possible re-use...but only at the risk of possibly damaging the PC board. Make your own decision.

Once the chips have been removed, the computer should be tested again. Connect it to a monitor and

turn it on. If any of the remaining RAM chips are now getting hot, they should also be removed. If the display was formerly black, and now displays the

10

normal copyright message, but with availabie, the chips can be should work fine. If a border is displayed around a screen of garbage. and chips U6 and U7 are still on the board, one or both of them may also be bad. Remove them for replacement or testing.

New RAM chips for the computer will have to be purchased. The 2068 uses 4416-15's, which are 16K*4 RAM chips. The 15 in the chip number designates speed. In this case 150 ns (nano seconds). Purchase either 120 or 150 ns chips, as the slower 200 ns chips will not work. Radio Shack does not sell them, so they must be mail-ordered (suppliers listed at the end of the article). Consider purchasing extra RAM chips, so that if one of the RAM chips left on the board is bad, you won't have to re-order. Don't even think about soldering the chips in. Purchase IC sockets along with the chips. Sockets make it easy to remove a chip for testing, and at twenty cents each, are a lot cheaper than cutting a $4.00 RAM chip off the board.

The sockets should now be soldered in place where the RAM chips once were. If the holes on the PC board are filled with solder, they will first have to be cleared. The best method I have found is to hold the PC board vertically ina vice, melt the solder from one side of the board with a soldering iron and use a solder pump to suck the molten solder out from the other side. Remove any solder splashes or excess flux from the PC board and solder the sockets into place using rosin core solder. ;

Insert the new RAM chips .into the sockets with the notch end of the chip pointing to the back of the PC board. Test the computr out of the case once again as described in paragraphs two and three. If every-

thing checks out fine, the computer can be re- installed in the case and used as normal. If the computer still does not work or has reduced RAM available, there are two possible reasons. Either there is yet another bad RAM chip (new or old), or another chip in the computer is damaged, but still operates. Re-test the computer for bad RAM chips, and if none can be found, consider having the computer professionally repaired.

reduced RAM replaced and computer

SUPPLIERS: JDR Microdevices, 110 Knowles Drive, Los Gatos, CA 95030, (800) 538-5000. Takes VISA & M-CARD, $10 min. order. JAMECO Electronics, 1355 Shoreway Road, Belmont, CA 94002, (415) 592-8097. Takes VISA & M-CARD. $20 min. order.

Curry P.O. BOX 54607 or ee Computer [Reiss seem

H#eHeHeHEH SUMMER CLEARANCE SALE **#*%%%

SOFTWARE for the T/S 1000: All $2 ea.

Mixed Game Bag I\Presidents\ Stk Mkt Calc\ Red Alert\ Night Gunner\ Hangman\ Fin Mor & Rec Keep\ Alien Invasion\. Meteorites\ Chess\ Gambler\ Cube Game\ Mixed Game IIN Organizer\ Home Asset\ Home Improve.\ VuCalc\ Geometry\ Pioneer Trail\ Damper-Glooper\ Croaka Crawler Plus many more Write for a list.

T/S 1000 Computer (2K) with 3 Programs $22.95 SOFTWARE for the T/S 2068:

Budgeter...%5 Stk Mkt Calc...€$3.50

F2zohter Pilot...%12.95

SOFTWARE for the Spectrum:

Storm Bringer... #5 I, Ball...%6 Bigqgles...%8 10th Frame...%10 Mag Max...%10 Snowman... $5 Speed King ia « ores Skyranger...%6 Plus many “One

Onlys’, write for a list.

SOFTWARE for the QL:

Super Disk CTKII req.)...%$19.95 Cribbage...%14.95 SuperBoot...%$14.95 (disk) QRAM. .. $39.95

Graphic TK. ..%18.95 Wanderer CRGB only)...%18.95 Archive 22 0G. «2 $14.95 Grab Bag Il...%$14.95 Fresidents...%$9.95 Nucleon...#19.95

Super Checking... %#14.95 Thompson Case Ci22. = « BE. 99 Assembler... #34.95

MAGAZINES:

QL Worlds: Current Issues -—- €#$4.25 \ Back Issues $3 (Jan/Feb/Mar/Ap/May/June/Oct °87)

Sinclair User: Current Issues —- $4.50 \ Back Issues $2

(call for list)

We also have: Commodore User; Commodore International; Amiga Users; Atari Users Atari ST Users Computer & Video Games; PC Amstrad; Amstrad User; Amstrad PCW...Call for Pricing.

S/H Charges: Under #15 = $1 \ Under $30 = $2 \ Under $50 = $3 \ Under $100 = $4 \ Under $200 = $6 \ Over $200 = $8

Sale Prices Good for 30 Days from Publication.

Mass-Storage

CADDETTE TAPE OTORAGE

2068 PROGRAM INDEX

by V. Phillip Hosey

This simple program is easily adaptable to productive activities while passing the few minutes virtually any computer. It not only provides a delay required for LOADing lengthy data. One last modicum of security, but files all your’. stored note: LINE 0O was obtained from Randall Larson's "NO programs by digital location on tape, eliminating a DELETE PROGRAM" listed in the NOV/DEC '87 issue of lengthy title-by-title search. I always incorporate TDM ("In The Mailbag"). Originally intended for the an attention-getting BEEP at the beginning of each Spectrum, it functions perfectly without modification program SAVEd LINE 1 so that I may divert to other on the TS2068.

il

O>REM 1985:V. Phillip Hosey

1 PRINT "STOP TAPE:CODE?": INPUT A$: IF a} I use my computer's serial

$<>"(any CODE you want)" THEN NEW number as an access code. ;

10 BORDER 0: PAPER 0: FOR 1=0 TO 21: CLS : oe. PRINT INK 7;AT 1,0;": V. Phillip Hosey/T So EF abe sa Or EN eee S-2068:1985": BEEP .01,-1: NEXT 1 Si TE INKS e~ 1) Aas pee

20 INK 2: CIRCLE 80,92,81 ee et ee en Geese

ag Ee 4: CUNGLE 201.5843 gc ip imecgceae tue HEP ES to ine eae

30 PRINT INK 6;AT 2,10;"1";AT 3,7;"Progra So TF ST TREN Se ale ae m";AT 4,7;"-INDEX-";AT 14,23;"16k=90";AT 15 see 6 ee ee os oe ,23;"second";AT 16,22;"loadtime";AT 4,22;"I 87 IF INKEY$="7" THEN LET t=165 (ignoye these samples) NKEY$"; FLASH 1;AT 5,24;"#2": FLASH 0 ee ee eee

40 FOR n=0 TO 9: READ A$: PRINT INK 3;AT oo SF Teer ee" ss pew LET t=300 F

50 FOR y=0 TO 31: PRINT ,AT 224 ,¥3"* *

60 IF INKEYS=""_THEN NEXT y: BEEP .01,9: GO TO 50

ENS 45AT “21, 93"."

"; INKEYS;

oo Guo % 1;"REWIND TAPE THEN’ SAVE ": 99 DATA "Index Editor","BattleStarXEMIT"," Se MSCRIPT Master","Printer Drive","Accounts:1 = 987","TS-2068 CDP","File Matrix","SmartMode m","WordWright","Dive Guide"

Do you have lots of programs on tape? Do you gO crazy waiting For them to load? If you answered yes then you may bs interested in this program to double the speed of your taps loads.

I was in the same position when I received the May 1S86

issus of "Your Sinclair”. Even though I have the AERCO FD-68 SI still have lots of programs on tape I really didn’t want to move to disk and I still make backup copies of important progams for long term storage. Using disk made my tape deck seem so slow.

In the magazine was a program by Esben Hansen for the Spectrum that allowed you to save and load programs at variable baud rates From 1500 (normal rate) to 3500 (mors than double). I wanted to do this on a 2068 so I vowed to convert the program to work on my machine.

This was not as easy as I had thought. While a lot of the

program was compatable with the 2068, by just changing the ROM

calls, the calls to the tape handling routines were a problem. On the 2068 the tape routines are all in EXROM. It was either bankswitching or a rewrite to do the tapes handling routines within the program. I chose the second and by some Fiddling

managed to gst the program to work with most of the Functions in the original and only use a little over 200 bytes more.

The program supports all the tape commands - Saves, Load, Verify, and Merge. Turboloader is invoked by a RANDOMIZE USR 63600. This is followed by the Turboloader commands - EIisti; PRINT, INPUT, or RUN. And Finally your tape command - SAVE, LOAD, etc.

To save a screen at double speed:

RANDOMIZE USR 63600: RUN 3100: SAVE "pic” SCREENS

The keywords List, Print, Input, and Run will still work as normal except when they Follow a RANDOMIZE USR 63600. When used as.Turboloader commands they have the following meaning:

LIST - This command reads a header from tape and lists it on

the screen. It displays program length, data ‘length For code, start line, etc. ex: RANDOMIZE USR 63600: RUN 3100: SAVE "test” CODE

63600,600: LIST RUN - This changes the baud rate. It must be Followed by a number ranging from 1500 to 3500, in steps of e200 €1500,1700,1900, etc.). A good tape recorder should be able to handle at least 3100.

Tape "°;AT-5,22;" AT 15,23;"Forward";AT 16,22;" Tape To"; FLA SH iI:AT-17,252¢;AP..21,7;"* PAUSE. TO- LOAD FLASH 0:

2068 TURBOLOADER

by Floyd Chrysler (adapted from an original Spectrum program, with permission, by Esben Krag Hansen)

Now ";AT 14,23;"Fast- ";

INK 7: LOAD INKEYS$ BEEP 1,30: PRINT ; FLASH 0

Lior 99; FLASH

You can list program names in order prior to storage. (Ignore these samples)

\

INPUT- This deals with the message start tape on SAVE’s

INPUT 2 prints the Turboloader message and the start tape message and waits for a keypress.

INPUT 1 print the Turboloader message only and waits for a key press.

INPUT O prints nothing and goes right into the

save without waiting for a key press.

PRINT- This deals with LOAD/VERIFY commands Print 2 prints the turboloader message names as they are found.

Print O nothing is printed.

and program

PRINT 2 and INPUT 2 are the initial default values.

There is a lot of code to enter for Turboloader. I included a Hex loader program to make it a little esasier. the loader program and save it. The code ¢s listed in columns. The first is the address for that code line. thse code in blocks of B hex bytes.

have Enter threes Next is Last is;a check digit.

start then and Enter

When you run the hex loader it will ask you for a address. The first time you should enter 63380. It will ask For the code. Enter all 16 characters (8 hex bytes) press enter. You will then be asked for the check number. it and if all is ok the program will display the next address Cwhich should match the next address in the code list), if there is an error the program will beep and redisplay the same address For you to reenter the line in error.

At any time you may enter STOP to the enter code message and you will be prompted to save the code entered to that point. You can then restart at a later time by reloading the code and loader program and entering the next address from where you left off at the prompt. When you have entered all the code ths program will prompt you to save the code. Once you have all the code saved you can start speeding! Enter CLEAR 63379: LOAD "TURBO” CODE 63380. Remember the entry point to the program for all user calls is §3600.

Don’t be intimidated by all the code. I’m sure you will Find it worth the time to enter. If you have not yet spent the Family Fortune on a disk drive you will Find this program

invaluable,

12

160 POKE adr,FN h(€cS)*16+FN hCa

(ready

addr

63380 63388 63396 63404 63412 63420 63428 63436 B3444 63452 63460 63468 63476 63484 63492 63500 63508 63516 63524 63532 63540 63548 63556 63564 63572 63580 63588 63536 63604 63612 63620 63628 63636 63644 63652 63660 63668 63576 63684 63682 63700 63708 63716 63724 63732 63740 63748 63756 63764

63772 63780

63788

637396 63804 63812

63820

$) . 1S0 PRINT cSC(1);a$S; Hex Loader eC00 LET cS"cSC(3 TO D 30 DEF FN HCaS)=CODE aS-48-(7 210 LET sum=sum+C(CPEEK adr) AND aS>"9") ecO LET adr=adr+1 4O POKE 23658,8 230 NEXT i SO INPUT "Start Address:”;star e+O INPUT "Check Number=”; check = 60 IF start=63380 THEN GO TO e2SO PRINT ”;sum sO e60 IF sum<>check THEN GO TO 3 70 INPUT "Have you re-loaded c ‘tO ode?”; 2% e270 NEXT t BO IF zS<> "Y”" THEN PRINT "Lo ©2680 PRINT "END OF CODE” ad code and re-start”: STOP 230 SAVE "TURBO”CODE 63380,2066 SO LET adr=start | 100 FOR t=start TO 65444 STEP Bg 300 PRINT "VERIFY” 310 VERIFY "TURBO”CODE 63380 110 LET sum=0 320 PRINT ”"FINISHED” 120 PRINT adr;” ”; 330 STOP 130 INPUT "enter code ";cS$ 340 LET adr=adr-8 140 IF cS=”"STOP” THEN GO TO 38 gaw BEEP .5,1 0 360 PRINT "ERROR - RE-ENTER” 150 IF LEN cS<>16 THEN BEEP ,2 370 GO TO 110 S, 2565S 0 +30 380 INPUT "Do You want to Save 160 FOR i=1 TO 8B your work? CY or N)”;z$% 170 LET aS=cS$(2) 350 IF zS=”"Y”" THEN GO TO eso 400 STOP 333 SAVE "hexload” LINE 10

Turboloader Code for Hex Loader program)

code

CF1A7EE6CO20191A 13BE2320021ABE1B eCB3I008ESEBCD2017 F118ECCDFOF718E2 7EYFFEBOCBES214B SC7EFEBO02825B928 08C5CD2017C1EB18 FOEGEOFEA02012D1 DSE523131ABE2006 1730F7E11803E118 EO3EFFD1EB3C37CD FOF718C420100822 SFSCEBCD2017CDS0 17EBeASFSCO808DS CDe0172eSFSCeAS3 SCE3CS0838072BCD BB1l2231803CDBB1e

-€3C1D1EDS3S3S5CED

SBSFSCCSDSEBEDBO FiC10SCDS017D1ics 3D20FDA7O4CB3E7F DBFE1FDOASEG2028 F3792F4FE607F608 D3SFE37CSFS3AN85C E6380FOFOFD3FE3E

. 7FOBFE1FFB3802CF

OCF 1CSo0o00000000 OCOOQOOOCDFFEOD2s8 47FESAC8O02CFOBFD StOD2ASDSCESE721 7OFBESFEFS285DF5 ESCDCDFSE1F1FEEE C8SFFEF7CAC7FAFE FOCA78FAOGOOFEFS CB86104FEEFeCSSCO4 FED628S704FEDS28 SseeeSDSCFDSSODE1 CDOCYFSEDYB76SCCS

' SASBFFFEO2COC3AS

O83A3CFFFEO2COCD AS081160FEAFCD3F O7EDYB37FFCD8817 SEODD7CSCDOOFSFE O3D276FA323BFF18 DSCDOOFSFEO330F1 3e3SCF FCSE7CDESIB CSLELF783239FFE7 CDEF 1BCD8S28283D 0111003A3SFFA728 O20E22F7DSDDE106 OB3E20121310FCDD 3601 FFCDAFe2F21F6 FFOBOS0330103A339 FFA72003C3701478 B1280A010A00DDES E123EBEDBODFFEEY

check

seu S21 B23 1427 1124 902 917 1367 750 B13 1305 797 367 716 606 B35 677 1169 1336 1349 306 1183 981 1188 BSE 1147 454 530 896 785 1464 1845 1381 1320 770 1106 BYS 1372 1184 1034 987 993 1199 969 1216 1258 969 gs 535 962 631 1016 457 so4 688 1613

63828 63836 63844 63852 63860 63868 63876 63884 63892 633900 63908 63916 63924 63932 63940 63948 63955 63964 63972 63980 63988 63996 64004 64012 64020 64028 64036 BYO44 54052 64060 64068 64076 64084 64092

‘64100

64108 64116 64124 64132 64140 64148 64156 64164 64172 64180 64188 64196 64204 64212 64220 64228

64236 B4Y244 64252 64260.

64268

20473A3SFFFEO3CA ED1BE7CD702CCBFS 300C2100003A3SFF 302816C3911BCeED 1BCD8S282818237E DD770B237EDD770C 230D710E3E01CB71 €68013CDD7700EBE7 FEeSe0DAE7EBC3ED FBFEAA2O1C3A39FF FEOSCAED1BE7DD36 OBOODD360C1B2100 YODD7SODDD740E18 SAFEAF2O4D3A3SFF FEOSCAED1IBE7CDE7 21200C3A3SFFA7CA ED1BCD511C180FCD ES1BDFFEeCe80C3A 3SFFA7CAED1BCDS1 1C18O4%E7CDES1BCD 231F0D710BDD700C CDe31FDD710DDD70 OEGO6SDD360003C3 6DFBFECA2B07DD36 OESOC34DFB3A3SFF A7CeEDIBE7CDES1B C344FBE7CDES1BCD 231 FCSCDES300164 OOCDES3S0EFOS38CD LE1LFFEOF3S834FEC4% SO30D60FCBY47202A CBe7CBe7el4tDFFOG OOYFOSEB213DFFO6 O8CS1A134Ee2346e3 O2C110FS3A1BFE32 4SFECIEDY3S37FFC3 COFSCFOSE7FEOD28

. OGFESAe2BO2CFOB11

1100DD2126FFAF37 CDOCBFD30Fe23A26FF FEOY3SO0EBCDCYFB3E O2CD301e11F6FECD 3FO71127FFO60A1A FE203001AFD71310 FG3EQDD73ACEFFA7 eBeeFEO3Se8SD3SE0S 1160FECD3F073A34 FFFSE61FC640D7F1 CB7728033E24D73E ODD71B84%EEDYBS3FF 7BE6CO2010CS3E0e2 1160FECD3FO07C1iCD 68173E0DD73E0611 6GOFECD3FO7EDYB3S FFCSCD3AFB3E0711 6OFECD3F07C12A31

13

932 1308 463 921 634 B64 762 S07 1315 1105 1229 358 730 982 1390 816 B22 B87 1231 953 756 951 ES9 1138 1035 1317 1411 gS0 991 728 673 BSS 678 468 B4YS 1329 1207 S35 734 1302 1252 935 423 760 1054 531 752 1479 740 348 B51 1040 S34 330 1052 gog

‘64276 64284 64292 64300 64308 64316 64324 64332 64340 64348 64356 64364 64372 64380 64388 64396 64404 64412 64420 64428 64436 S444 5%+52 64460 64468 64476 64464 64492 64S00 64508 64516 SYsSe4 64532 64540 64548 64556 64564 64S7e2 64580 64588 64596 64%60% 64612 64620 64628 64636 BY6%4 64652 64660 64668 64676 64684 64692 6%700 64708 64716 647c% 64732 64740

FFA7EDY24¢44DCD3A FB160F3E031160FE CD3SFO7EDYB33FFCD JAF B3E04%1160FECD SFO7EDYB31FFCDES 30CDA1313E0DD7cC9g CD231FDD710DDD70 OEDD3600002ASS5C EDSBS35C37EDS2eDD 7SOBDD74O0C2AYXYBSC EDS2@DD7SOFDD7410 EB3A3SFFA7CAODFD FS011100DD0ScDcpD FBDDES111100AF37 COCBFDDDE130EF3A SBFFA7280CCDCYFB JEFECD3012FD36S5e2 O3SOEBODD7EOODDBE EFCOO20EFEFEO430 CD4¢73A3BFFA776828 O811F6FECSCD3F07 C1DDESD121FOFF19 O60A7E3C20037380 4F131ABE2320010C SASBFFA728021AD7 1OEFCB7S20983A3B FFA72B063E0DD7CD COFSE1DD7EOOFEO3 eBOC3A3SFF3DCAY41 FCFEOCCAEEFCESDD GEFADDG6FBDDSEOB DDS60C7CBS280EED 52€38272808DD7E00 FEO3C2S4F7E17CB5 eOO6DDBEODDDEE0E ESDDE13A3SFFFE02 372001A73EFFCDCB FDDSC3S4F 7DDSEOB DDSS0CES7CBS2005 131313EB180CDDG6E FADD66FBEB37EDS2 380911050019444p CDBB1FE1DD7EOOA7 e€83D7CBS528132BY46 eCBYE2BO30303DD22 SFSCCDS017DD2ASF SCe2ASSSC2BDDYEOB DDY60CCSO30303DD 7EFDFSCDBB1223F 1 77012373237223E5 DDE1373EFF188FEB CASSSCeBDD22SFSC DDYEOBDDYSOCCSCD 4D17C1ESCSCDBB1e2 DD2ASFSCe23DDYEOF DDY6100S224BSCDD 650E7CE6CO200ADD GEOD22+2SCFD360A OOD1DDE1373EFFC3

1133 722 1098 S47 1124 954 951 512 1098 685 1025 1240 BB7 962 1452 1182 376 S03 B39 975 997 1405 485 334 B22 BBO 963 1282 750 1650 1260 915 S72 1376 713 1301 980 1385 B91 6s3 1433 257 1162 578 428 BS3 e568 730 1310 891 1220 708 1015 1129 733 738 925 632 1222

te Praca Siete 64972 OB1SF33EOFD3FE21 847 ceeaG. Ge aneeaai es oe 64748 3AFCDDYEOBDDY60C 823 eee ee ee 65228 YISSZO¥EYIYDYSBA 661 64756 CSO3F73680EBD1E5 1302 64995 30FA211S50410FE 6Se36 = SOSeHFY7See1eDeO SEB 64764 ESDDE1373EFFCD3A 1310 Een04 Se casrar i ee ee BSett SCYSES7SEHBBAYC 712 64772 FCE1EDSBS3SCC396 1325 | 6SeSe YSHEY7SY4BcOuFYG = SSS 647680 F7ES3A3CFFA72824 1092 eae. EBOReL Che PEoet iets 6Se60 9 eOS6itSersiitesyC SHS 64788 3D200A3EFDCD3012 689 65020 3ECSBB30E02420F1 1025 65268 Y4SS3SBAODSOS24F47 653 64796 CDD9111817CDASOS &86B 650e8 OSCSCDOSBFE30D578 1138 65276 Se2414DBAODYESSYD 653 64804 CDCDF83E011160FE 1088 65035 FEDYSOFYCDSBFEDO 1516 6S2e84 424kSS22041S5e5e41 S43 64812 CD3FO7CDDS11CDAS 1088 BSOnt =7SEEOSYFEGOO06B0 E6't 65292 SSBAODYS4B8415241 639 64820 OBCDCDFBDDES1111 1150 oe Shy ars eg tl one 65300 4354455220415252 563 64828 OOAFCDS2FDDDE10§ 1167 tes See ee Goa 6S308 4ISSBAODYeSSS4u4S 661 64B36 327610FDDDSEOBDD 384 Gian peneenieaicccon ces 65316 S3BAO00000000000 263 64844 SSOC3EFFDDE121S0 974 les bere ceeeeeiney 3os1 65324 oO000000000000000 oO 64852 FSES21801FCB7F28 1033 65332 OOO000ODCeSO00002 227 64860 O321S80C0813DD2B 491 6309e CBBBCBISOGBO30F3 1084 65340 O2S8BFDA7FDADFDBB 1424 64868 FSSEOQU4710FED3FE 1115 65100 7CADS77AB320CB7C 1060 65348 FDIBFESCFEYYFESC 1262 64876 EEOFOSA4Y2D20FS0S 750 a FEOICSCDSBFEDO3E 1276 65356 FESBY23E31BOB2CB 1047 64884 2SF268FD062F10FE 359 116 16C334F880S45552 B96 65364 16373D3A2DB7BSD0 817 64892 D3FESEOCOS3710FE 870 BSlet FeePeCHFYl44eO7F Sse 65372 1532393528BDBFDY 6813 64900 D3FEO1OD3BO86F18 681 B513e 31393836204S482B 432 65380 132E343124C4CEDS 813 64YSO8 OS7AB32BOBDDSECO 692 G6S1%0 4HG6ESeO0eOte41SSY4 = 4BS 65388 1229302CiFCACCDD 803 64916 7CADS73E02371817 SEG 651468 BAeOeOS3SH41SeSt B64 65396 10252B281BD1D3E2 80S 64924 6C1BFS7SCB7B10FE 1091 BSiS6 ecOSth1SOeSeo04l4E SOS 6S404 OF21272417D7DSE6 808 64932 3O004064210FED3FE 859 65164 $4e0S0Se24S535320 Seg 65412 OD1C221F1i2DEFOFB 80S 6YS4O OB3E20EFOSAF3CCB 782 oe ee ee ie 65420 OC181E1BOEE4EGEF 804 eigi® iseoesisnoesoss: Scien usesewsicesi0 eos esis opiaisioseseDrs 60: 64964 20C70S63B10FECS14 787 65196 F1GHReSeySS3S53BA 704 65444 oO700000000000000 7 65204 4YC4YS4EY7SY4B204F 561 q ; - J by Stan Lemke

Although some bank-switching applications might encompass seemingly insurmountable programming obstacles...there are many others that can be Lie chk HWemor-w accomplished with ease! I'd like to present three

bank-switching

examples/applications adapted and expanded on for a wide variety of uses.

that can

be

4 a

.

BANK SWITCHING THEORY--FROM A LAYMAN'S PERSPECTIVE

What is bank switching? In very simple terms, it is a way to direct the computer to switch between Gifferent "banks" of memory circuits. This is accomplished in a program with the OUT 244,VALUE command, where VALUE defines which memory "banks" are being used. Although the computer can only talk to 64K of memory (8 banks of 8K each) at any given time, BANK-SWITCHING can switch in/out different banks of memory...and make it appear like more memory. One little detail that makes this all possible, is that when you swtich out one memory bank for another, the memory in that bank remains just the way you left it...so when you return to it, you can continue on just as before!

Another important detail is that we will only be working with memory above location 32768. By doing this, we will not interfere with the computer oper- ating system and greatly simplify our work. This means that we will only have an additional 32K of RAM to work with, but that almost doubles the memory capacity we are currently working with after sub- tracting that used by the operating system!

Memory is "bank-switched" in 8K chunks using the OUT 244,VALUE command. VALUE determines which chunks are being used. The following table defines VALUE and the "DOCK" memory addresses that are used.

Now, by adding various values, one can activate multiple banks of dock memory (i.e., VALUE = 64+128 = 192 operates on addresses 49152 —- 65535). To reset all banks to the standard memory, use VALUE = 0. NOTE: We will only be activating chunks with addresses above 32768 (VALUE = 16 and above). AERCO FD-68 Users: The AERCO disk system requires that chunk 1 be active to utilize the disk, therefore, add 1 to your VALUE to keep the disk active.

14

magazine for a 32K RAM cartridge). Other

fi. es

i 4

te] oh wh fh

fe ToT) ot

Mn CT) eR] tt Cl ct

CT] Cd ee te me) LT] fd Oe On) ee A LT fade ote] LT] i

as eS tira t mb ob GI ble oo

[J 1 OJ

Mm fh. tI mM

Tl yf fs GI OJ Til ee 1

ts is { i}

BANK-SWITCHING RAM (where to get it)

Add-on bank switchable RAM can be obtained from &@ variety of sources. The AERCO disk interface comes with 64K of additional bank-switchdble RAM built right in. Another source is RAM cartridges that plug into the 2068 cartridge dock such as the one designed by Tom Bent (Quantum Levels), and once marketed by

Thomas B. Woods, or the one available from Lem

Software (see the ad on the back cover of this sources of RAM are available, like the new RAMdisk from LARKEN, and there are probably others that I am not aware of.

WHAT CAN WE DO WITH IT?

OK, what can we do with this add-on memory? What is the #1 complaint about 64K computers? They have so little memory to work with! There is always more data than memory to hold it! The #1 use for more memory will be to store more data. So, my first example is a short data transfer program.

XFER_1 (LISTING A)

XFER_1 is a ZEUS assembler source listing, ready to be assembled. LINE 270 is set to assemble this routine starting at 39000 (RANDOMIZE USR 39000). Following the source file is a dis-assembly of the

routine identifying the memory address, the value at placing the destination byte back into the source!

that address and the assembler instruction This routine works much like XFER_1 above. The key to associated with that address. I would like to thank this seo Se the use of the AF and alternate AP AL Schremmer, an active member of the Kansas Area TS registers, and exchanging these to easily allow the User Group for writing this very helpful and unique exchange of the source/destination values. dis-assembler!

XFER_1 is a simple program that will transfer XFER_3 (LISTING C) (COPY) data from one bank to another bank. As ~ ; - : written, 24064 bytes of data are copied from The third example is a merging of the source/ standard memory starting at address 41300 to the dock destination data. This application superimposes the bank, also starting at address 41300. The "“scurea" source data on the destination data using the "OR" bank is the source of the data to be copied...and Sipser and pee rans Ps oe ee could be the dock bank. The "destination" bank is Pictures on a light board...ending up with one. I've where you are copying data to, and could be regular used this function with my PIXEL PRINT PROFESSIONAL memory (with a little modification). Also, this (desktop publisher) program, to combine (or merge) example copies data to the same address in the dock two PIXEL PRINT files. As you can see, the operation bank, but you can see that this also can be changed of the program is quite Similar to the two above with easily a simple modification for the "OR" function. NOTE:

The way it works is this: after assigning the both the source and destination addresses contain the destination and source addresses, and the number of merged data. ; bytes to be copied (LINES 290 to 310), the source Now, I don't pretend to be a very good assembly bank is activated (LINES 430 and 440) and 1 byte is programmer, so I am sure there are many other ways to copied into the accumulator and saved by pushing it do these jobs. But, if I have been able to show you onto the stack (LINES 450 and 460). Then the enough to get your interest peaked, and convinced you destination bank is activated (LINES 570 and 580) and chat: BANE SWITCHING is not an°iinpossible “task, “then the saved byte is recalled and stored at it's I've accomplished my goal! destination address (LINES 590 and 600). The Keep 152068-ing, and start taking advantage of destination and source addresses are incremented 2068 BANK-SWITCHING.

(LINES 670 and 680) while the number of bytes that are to be copied is decremented (LINE 690). The

number of bytes remaining is checked to see if it is XFER_1 zero (LINES 700 to 720), and if not, the process is a : sey 39017 > 211 > out (N),a repeated. When complete, the source bank is activated Secs 4 aa > epee ig $9018 > 244 <244> : 3 39019 > 241 > pop af LINES 730 a Oy, d he fe) end WwW i pe ites nd 740), and t program Ss ith a 39002 > 141 39020 > 119 > 1d (hl),a : 39003 > 17 > 1d de,NN 39021 > 19 > ine de 39004 > 84 <41300> 39022 > 35 > ine hl XFER_2 (LISTING B) = batt Anew slapd $7005 > 161 39023.>.11° “= dec be 39006 > 1 > ld be,NN . A second form of data transfer useful in 39007 > O pretest pad e4 * 120 > 1d a,b bank-switching is the ability to "swap" data between = $7025 2,477 _>.OF © igo panel 39008 > 94 39026 > 32. > > DIS banks. This is the function of routine XFER_2. Where 39009 > 42 > ld a.N —eag ce IF Nes XFER_1 merely copied data from one bank/address to : S9027 > 237 <257> ¥ : e7010 > 1 <i> 39028 > 62 > ld a.N another, XFER_2 performs a swap function, copying the 39011 > 211 > out (N).a w = 4 data from the source into the destination, and then BOOS + oa4 2445. $9029 > 1 <i> yap denna Saeene 39030 > 211 > out (N),a 39013 » 26 > 1d a, (de) 39031 > 244 £244> : ay : we re 39032 > 201 > ret a : 39033 > O > 39016 > 225 <225> See LISTING B LISTING A 00390 ; SOURCE BANK = 1 (AERCO) : ' “ae 00010 ; XFER_2 00010 ; XFER_1 00400 5 SOURCE BANK: = 0 (OTHER) lg ee 00020 3 ~—--—<- ~~ = 00420 « 00030 ; PRACTICAL : - <0 5 . BANK-SWITCHING O00S0 ; PRACT SOR 00430 XFER1 LD A,1 ; SOURCE BhK —. 00040 ; BANK-SWITCHING gr ee pokey Lease F 00050 ; : 3 S34 4 4 ; 00060 3: t+tt++ettettet+t+etts+ vos 00450 LD A, (DE) ; LOAD S. VALUE ; (0100) 10 eee Gok eA AP Ok SAU iy 00070 ; + THIS SAMPLE PROG. + 00070 ; + THIS SAMPLE PROG. + : : : O0080 ; + WILL SWAP 24064 + 00080 ; + WILL COFY 24064 + G0470 -; 00090 ; + BYTES FROM MEMORY + 00090 ; | + BYTES FROM MEMORY + a. 00100 ; + ADDRESS 41300 OF + 00100 ; + ADDRESS 41300 OF + ise 2 00110 ; + STD RAM AND 41300 + 00110 ; STD. RAM TO 41300 pein ‘a 060120 ; + OF THE DOCK BANK. + eet hope, ABU STORES IME OOLSO 5 +H+ttt tte et tettet tet QOLSO 4 FFF Heeet tte eee tttttt wvee 3 SLE Ble Gee 00140 ; . f GOLA 4 Se: ; DEST BANK = 225 (AERCO) le Re eae li oe 00150 3; (c) S D LEMKE 1988 Aoeeate Heat BANE a ae prea 00140 ; 00160 ; Rice ts , as 00170 ; LEMKE SOFTWARE DEVELOP. 00170 ; LEMKE SOFTWARE DEVELOP. : : aoe 00180 ; 2144 WHITE OAK 00180 ; 2144 WHITE OAK ot Ss 00190 ; WICHITA, KS. 67207 00190 ; WICHITA, KS. 67207 MSeO_ EET (244) 58 3 ENABLE a alt £2 ces hentia remeron cance OB800° 6 SR ange 00590 FOP AF ; RECALL S. VALUE so ree ee Oa 00210 3 ----------~-------+------ 00600 LD (HL),A 3; STORE IT 00220 ; 00220 ; 00610 2pt $9 8 00230 ; GETTING STARTED... 00230 ; GETTING STARTED... 00620 ; 00240 ; SET SOURCE, DEST, AND 00240 ; SET SOURCE, DEST, AND 00630 3; INCREMENT THE SOURCE 00250 ; NUMBER OF BYTES 250 - 00640 ; AND DEST. ADDRESSES. 00260 : 00250 ; NUMBER OF BYTES : 00260 ; 00650 ; CHECK TO SEE IF DONE. 00270 ORG 39000 ; CODE ADD. 00270 ORG 29000 ; CODE ADD. 00660 3; 00280 ; 00280 ; 00670 INC DE ; SOURCE + 1 00290 LD HL,41200 ; DEST. ADD. 00290 LD HL,41300 ; DEST. ADD. 00680 INC HL ; DEST. + 1 00300 LD DE, 41300 ; SOURCE ADD. 00300 LD DE,41300 3; SOURCE ADD. 00690 DEC BC ; LENGTH - 1 00210 LD BC,24044 ; LENGTH 00310 LD BC,24064 ; LENGTH 00700 LD A,B 3; "B" INTO ACC. 00320 ; 00320 ; 00710 OR C 3; SUM WITH "C" 00330 ;--------------~-------~-- 00330 ;—------------------------ 00720 JR NZ,XFER1 3; "BC" = 0 ? 00340 ; 00340 ; 00730 LD A,1 ; RESTORE S. BANK 00350 ; BEGIN BY ENABLING THE 00350 ; BEGIN BY ENABLING THE 00740 OUT (244),A 3; ENABLE IT 00360 ; SOURCE BANK AND SAVING 003460 ; SOURCE BANK AND SAVING 00750 RET 3; ALL DONE 00370 3; THE SOURCE BYTE ©0370 ; THE SOURCE BYTE 00380 ; OO380 ; 00390 ; SOURCE BANK = 1 (AERCO) 15 00400 ; SOURCE BANK = 0 (OTHER)

00410 00420 00430 00440 00450 00460 00470 00480 00490 00500 00510 00520 00530 00540 00550 00540 00570 00580 00590

00600 00610 00620 00430 00640 00550 0046450 004670 00680 00590 00700 00710 00720 00730 00740 007350 00740 00770 00780 00790 60800 00810 00820 00830 00840 00850 00860

5 XFER2 LD A,1

; SOURCE BNK OUT (244),A 3; ENABLE IT LD A, (DE) ; LOAD S. VALUE EX AF,AF? ; SAVE IT

“ee we

NEXT, ENABLE THE DEST. BANK, AND STORE THE SOURCE BYTE THERE

@e ‘at we

DEST BANK DEST BANK

225 (AERCO) 224 (OTHER)

we ‘ae

LD A,225 ; DESTINATION OUT (244),A ; ENABLE IT LD A, (HL) ; LOAD D. VALUE

EX AF,AF’ ; SWAP VALUES LD (HL),A ; STORE DEST.

ENABLE THE SOURCE BANK, AND STORE THE DEST. BYTE. THERE

ae “66 ‘4¢ ‘40 @

LD A,1 H OUT (244),A 3; EX AF,AF’ ; SWAP VALUES LD (DE),A ; STORE S. BYTE EX AF,AF’ ; RESTORE AF

Se ee eS SS EE SE ee ES ES EE NE SE OY SE SD Se

SOURCE BANK ENABLE IT

INCREMENT THE SOURCE AND DEST. ADDRESSES. CHECK TO SEE IF DONE.

wo "28 we We ‘46 ‘2

INC DE ; SOURCE + 1

INC HL ; DEST. + 1

DEC BC ; LENGTH - 1

LD A,B ; “B" INTO ACC. OR C=: SUM WITH "C"

JR NZ,XFER2 ; "BC" = 0 ? LD A,1 3; RESTORE S. BANK OUT (244),A ; ENABLE IT RET ; ALL DONE

AFR SOFTWARE ®

Presents: Powerful And Inexpensive Business Software For "Timex-Sinclair" Computers

T/S-ZX Financial Report Generator

Printout Of Same

Send S.AS.E. For Free Catalog Or Check Or Money Order To: AF.R. SOFTWARE 1605 Pennsylvania Ave.

No. 204 Miami Beach, FL 33139 (305) 531-6464 “FLORIDIANS ADD SALES TAX” Dealer Inquires Invited

00010 00020 00030 00040 00050 00060 00070 00080 00090 00100 00110 00120 00130 00140 00150 00160 00170 00180 00190 00200 00210 00220 00230 00240 00250 00260 00270 00280 00290 00300 00310 00320 00330 00340 00350 00360 00370 00380 00390 00400 00410 00420 00430 00440

LISTING C

; XFER_3 § tot 00450 3 FRACTICAL 00460 : BANK-SWITCHING 00470 : 00480 : THEE EEE EEE HEHEHE 00490 s + TRIS SAMPLE PROG. + 00500 ; + WILL MERGE 24044 + 00510 s o> BYTES FROM MEMORY + 00520 ; + ADDRESS 41300 OF + 00530 3 + STD RAM AND 41200 + 00540 3; + OF THE DOCK BANK. + 00550 ee 00560 3 00570 3; €¢c) $ D LEMKE 1988 00580 ; 00590 ; LEMKE SOFTWARE DEVELOP. 00600 5 2144 WHITE OAK 00610 : WICHITA, KS. 67207 00620 + ett ehan eterna entententanieeneteatenentetentans 00630 $n nr nnn rr 00640 : 00650 ; GETTING STARTED... 00640 3'= SET SOURCE, DEST,. AND 004670 ; NUMBER OF BYTES 00680 3 00690 ORG 39000 ; CODE ADD. 00700 3 00710 LD HL,41300 ; DEST. ADD. 00720 LD DE,41300 ; SOURCE ADD. 00730 LD BC,24064 ; LENGTH 00740 ; 00750 een an are er are ern rere min wm Sem ca ae en om ee 00760 : 00770 3; BEGIN BY ENABLING THE 00780 s; SOURCE BANK AND SAVING 00790 ; THE SOURCE BYTE 00800 ; 00810 ; SOURCE BANK = 1 (AERCO) 00820 3; SOURCE BANK = 0 (OTHER) 00830 3 00840 3 00850 XFERS LD A,1 ; SOURCE BNK 00860 OUT (244),A 3; ENABLE IT XFER_2

39000 > 33 > 1d hl,NN

39001 > 84 <41300>

=sF002 > 161

sF7003S._> 17 > ld de,NN

29004 > 84 <41300>

39005 > 161

=9006 > 1 > ld bc, NN

39007 > 0 ~24064>

39008 > 94

39009 > 62 > ld a,N

araidg > i <1>

wri, 2 wil > cut Mea

S9012 > 244 <244>

s7013 > 26 > ld a, (de)

39014 > 8 ? ex af,at’*

ein 2 Ge > ld a,N

27016. > 2235 Ee

39017 > 211 > out (N),a

39018 > 244 <244>

mrUiT 2 i246 > ld a, (hid

7020 2 8 > ex af,af’

weGe. 247 —* Id thi) ,.@

Be 9 <a ae De > ld a,N

5 Se i | <t>

w7Tu2e + 2ti 7? Gut Wya

29025 > 244 <244>

~VG2Z6 >-G > @x at,at’

o7G2ZF ->-18 > ld (de),a

STOLE > - 8 > ex af,af’

SI02Ze S19 > inc de

37030-5335 > thc. Ki

SIGS FS? 71 > dec bec

ores F°tZ0 > 12d a,b

2tGSo 7-177 > ore

390234 > 32 2 jr nz,DIs

BIOS > 229 - €229>

29036 > &2 > ld a,N

SIOS7: > U1 <i>

39038 > 211 > out (N,a

39039 > 244 <244>

39040 > 201 > ret

16

LD A, (DE) ; LOAD S. VALUE PUSH AF ; SAVE TT

3

3

; NEXT, ENABLE THE DEST.

BANK, AND STORE THE SOURCE BYTE THERE

3 (AERCO)

DEST BANK 2 D 24 (OTHER)

EST BANK

os 2

© a6 ‘86 We ‘48

LD A,225 ; DESTINATION OUT (244Y,A ; ENABLE IT POP AF ; RECALL S VALUE OR (HL). ; "OR" DEST VALUE LD (HL),A ; STORE DEST. PUSH AF ; SAVE SUM VALUE NPt cage ENABLE THE SOURCE BANK, AND STORE THE "SUM" THERE

3

LD A,1

OUT (244),A ; ;

SOURCE BANK ENABLE IT

POP AF ; RECALL. “SUM LD (DE),A STORE S. BYTE

Be ee ce Ere ae ee Se) oe ee eee pes ee a ee cee one ete

3

3; INCREMENT THE SOURCE

; AND DEST. ADDRESSES. 3 UMELK TO SEE IF DONE.

3 INC DE 3 SOURCE + 1 INC HL. ; DEST. + 1 DEC BC ; LENGTH —- 1 LD A,B 3; "B&B" INTO ACC. OR C s- SUM -aitTn *c” on HL, AFERS §-*BC* = 'O*? LD A,1 ; RESTORE S. BANK OUT (244),A 3 3; ENABLE IT RET ; ALL DONE XFER_S 27200 > 33 > ld h1l,NN 39001 > 84 £41300 39002 > 161 =TOOS 2.47 > ld de,NN 39004 > 84 <41300> 29005 >: 161 Z9006 > 1 > ld be,NN 39007 > O < 240647 39008 > 94 37009 > 62 > ld a,N 39010:> 1 <1> S9011 > 211 > out (N),a S9012 > 244 <244> s97013 > 26 > ld a, (de) 39014 245 > push af s701IS > 62 > ld a,N 39018 > 225 K{2252 39017 >/211 > out (N),a 39018 > °244 <244> 39019 >'241 > pop af 29020 > 182 > or {hl) soles? £29 - > 38 «nD ,2 39022 > 245 > push af avOgo. > G2 > ld a,N 39024 > -1 Ci svOZze > 2it > out (N),a 39026 > 244 <244> 39027 > 241 > pop af 39028 °'18 > ld (de),a 39029 > 19 > inc de SISO 2 So * inc Al soi > 12 > dec bc wives »£ AZO > 1d «ways Sie sae YO DOF 39034 > 32 yar nz,ois 39035 > 229 <229> s7036 > &2 > ld a,N s70S7 > 1 <1> 39038 > 211 > out (N),a 39039 > 244 <244> 39040 > 201 > ret

AERCO FD-68 DISK SYSTEM

AERCO MERGE FUNCTION

by Larry Zunk

Larry Zunk of Zunk Custom Electronics (4800 East

Cedar lane, Norman, Oklahoma

73071), shares ae few

routines for the AERCO FD-68 disk drive system. Larry has programmed a powerful software package for the

FD-68 called "CADZ"

issue, or write to the

details).

This is a tip for all Aerco FD-68 users. The basic MERGE function has never been available, but a simulated merge can‘be accomplished.

Rule #1: line numbers must be consecutive. Rule #2: get rid of all variables. Rule #3: is make sure there is enough room for both listings.

It works like this. In the immediate mode, type:

CAT "first program.BAS",

CLEAR 65535

for review in upcoming

above address for further

POKE 23635,PEAK 23627 POKE 23636,PEAK 23628 CAT "second program.BAS", (NOTE: Execution will stop here, and all you

will see is the second listing.) Then also in the

immediate mode, type: POKE 23635,86 POKE 23636,104 LIST

(POKE prog,vars)

(POKE prog, 26710)

SUPER DETAILED DISK DIRECTORY

by Larry Zunk

The following program listings are for the AERCO FD-68 Disk Drive System. I must give credit to Mowgli Assor for his user tips in the SEP/OCT '87 issue of TDM. His machine code routines are the heart of these programs...

Listing 1 is a 32 column detailed disk direc-— tory. Listing 2 is a 64 column detailed directory for use with the Advanced Video Modes software by BEAVER COMPUTER PRODUCTS. Either version can be run in BASIC or compiled with the TIMACHINE compiler by NOVELSOFT.

The directory gives file name, type, length, location, auto start line numbers, length of vari- ables, active chunks, and tracks allocated for each file. Although the information is the same, I prefer the 64 column version because everything fits on one line and it gives a much cleaner screen display.

My system is double-sided double-density, so some changes to the machine code in the data state-— ment may be required for other systems. The disk directory is on track 0 sectors 2 and 3. The code sets the start of the buffer at E290h (58000 decimal) and reads track 0 sector 2, then increments the buffer address held in the HL register by 512 bytes. Then it sets the B register to 3 and reads sector 3. The AERCO user manual states that a single-—density system has 256 bytes per sector and a double-—density system has 512 bytes per sector (I assume that a quad-density system would have 1024 bytes per sector). This is what will need to be changed for systems other than DD/DD.

LISTING 121

10 REM !USR 6280090

20 REM {INT +LEN,LNLOC, VAR, BUF »TYP,LOC,F,E

30 REM 1LEN PS<a87

40 REN ! LIS

9@ REM ! OPEN tt

60 FOR F=59967 TO 59999: READ E: POKE F,E: NEXT fF: RANDOMIZE U

SR 59967 78 1-26 INT 62,3,211,244,205,6 6,53,1, Sa, 364, 226, 205, 86, 53,

= 2 35° 144, 2D8, 205, 86, 53, 205, 1 30, 53, 52,1, eit, Bad, 201 88 Ler BUF =58a32

90: P$="BASDATCHRBINSCRARGL ROBUTUAR™

198 CLS : PRINT INVERSE 1; d it 3

= . LINER VARS NA

ME TYPE BYTES LOC CHUNK"; I See aaa ae S,;a.3; UVER 25

3 AJ 3

430 LET LOCsBUF: LET TYPsFPEER LL. OC43+1:..LET LOCsLOC4+3: LET E=Loc +10

120 IF PEEK LOC<¢>0 AND LOC<E TH EN PRINT CHRS PEEK LOC;: LET LOC =LOC+1: GO TO 126

L3@.LEFLOCsE

146 GO. SUB S098: LET LEN=E

158 GO SUB S@@: LET LNLOC=E

160 GO SUB S3BS: LET VAR=E

178 IF TYP=13 THEN LET LEN=6912

180 PRINT TAB 16;".";P8(TYP TO TYP+2);TAB 15;LEN; TAB 21;

130 IF TYP=1 AND LNLOC<10000 ‘TR EN PRINT “U";LNLOC;TAB 27;LEN-UA R;

2060 IF TYP=10 THEN PRINT LNLOC; TAB 27; INT, (VAR/256) -2;

210 IF TyP=13. ae PRINT 16384;

220 PRINT TAB @;'

230 IF Ce Loc THEN PRINT P EEX LOL; ‘3: LET LOC=LOC+1: GO TO 238

240 POKE 23659, PEEK 23689+1: PR A Ue Be Bai Ee ee ee ee

B80 LET BUF =BUP +32

250 PRINT TAB

270 IF PEEK. 23689=2 THEN PRINT HI; AT 1,0; INVERSE 1;" HIT E NTER TO CONTINUE "; INVERSE ®: PAUSE 8: GO TO 190

280 IF LOC>58992 THEN STOP

298 GO TO 110 s

300 LET E=PEEK LOC+256*PEEK (LO. C+1): LET LOC=S=L0C+2: RETURN

310 REM ! CLOSE tt

999 ERASE “S2COLDIR.BAS",: MOVE

“S2COLDIR.BAS", |

LISTING 2

16 REM !USR 5a000

20 REN re +LOOP,LNLOC,VARS,L FN,LOC,B(),

30 REM 1LEN "pg ¢=27 460 REM ! LIST 5@ REM !: OPEN t

Listing Continued Next Page

SS CATA INT 62,3;,211,244,2 OS, 6,33, Ljnge 833; ‘tad, 226, 205,86, Bo: A a, 33, 144,208; ‘205, 86, 53, 205, 30, 53.82, 1,211, Daa, 20

56 FOR F= 59967 TO 33999: READ N: POKE F;WN: NEXT: f: RANDOMIZE U SR 59967

60 RANDOMIZE USR ‘61450: POKE 2 ae PRINT #4; CHRS S34+CHR4 62

Te Let LOOP= 46: LEFT Loc s889si:

DIN Bl25).

60 LET P$5"BASDATCHRBINSCRAROL ROBUTVAR".

96 PRINT. AT. a, @; INVERSE : eee ilé Name Tup: Butes+Vars -Line: ‘Ad dr: Chunks: Tracks ee4444E¥EEEEHE"5

INVERSE 9O -

1685 FOR F=1 TO LOOP

110 FOR Nei TO 25: EET BitWN) -=PEE K, (LOC+N) : NH

: 23s TF bin) F HEN PRINT AT sN-2;CHRS bin

1585 NEXT n: LET VARS=B(1) = PRINT TAB 18; "°."; PS CUARS TO +2);TAB 15;

1490 LET LEN= -B (12) +256+#B(135)

>SG1

) 5

in Se VARS

150 LET LNLOC=B (14) +256+B (15)

160 LET VARS=B.(16) +2564#B(173

170 IF Rey = THEN PRINT VARS; ‘9 AB 29; > LBN-VARS; TAB 27; (LNLOC

AND i NLOG<19080)

180 IF B(1)=3 GR B(1) =8 THEN a

INT LEN; TAB S2;LNLOC; TAB 36&;.: b(1) =G THEN . PRINT B17) -2; 190 IF B(l1) =4° THEN PRINT 6912;T AB 32; 16384;

2008 PRINT TAB 44;: FOR N=18 23: IF Stn) >@. THEN PRINT (BIN) —( S87 AND BIN) >99))°" “5

210 NEXT N

220 LET LOC=LOC+32

230 NEXT Ff:

240 PRINT INVERSE : ATT CENTERIJ OR: CFIRE BUTTON] TO CONTINUE | - INVERSE @

{2,1

3: IF LOOP=15 T HEN PRINT CHRS. 3+CHR# 0; CHRS BO: POKE 253578,6: STOP 270 LET LOOP=1i5: oe TO 90

250 IF tus te ase STICK

260 REM ! CLOSE 9999 OUT 244,1: ERASE “newdir.ba 67s: - MOVE “newdir.bas",

oO YNX

by Jack Dohany

SYNX is a 46-byte relocatable AERCO disk drive system users.

for the

MC routine It is given into

"public domain". SYNX is short for "Syntax Checker Switch". This routine allows you to turn off the BASIC syntax checker when writing or editing BASIC lines...and to turn it back on. Syntax checking

during program execution remains in effect.

Why? Perhaps you may want to write a BASIC pro- gram that can be used on a non-AERCO disk system (perhaps for ALL disk systems). You may want to write a line like this:

300 SAVE. *"TEST":

Well, syntax <3 ae

REM for Zebra disk you can't write it because it will fail checking. But with the syntax checker turned you can write it. SYNX works by changing some locations in the BASIC operating system...normally in ROM, but in RAM with AERCO disk. A more detailed explanation is beyond the scope of this article.

Assuming you have the code on disk or tape as .BIN or CODE file, it can be loaded wherever there's no conflict with other software. Let us say you want to load it at Loc 64000: CAT "SYNX.bin",64000 or LOAD "SYNX'' CODE 64000 will do it.

To SAVE the code: MOVE "SYNX.bin",

64000,46 or

TIMACHINE ON AERCO DISK

Here is the SYNX code as ae decimal

64828 24 64028 24 54848 64001 27 64021 221 64041 64002 24 64022 197 64042 64083 18 64023 225 64043 64004 @ 64024 1 64044 64005 2 64025 11 64845 64006 @ 64026 2 64087 253 64027 24 64908 54 64028 «5 64009 «a 64029 197 64818 255 64930 255 64G1i @ 64031 1 64012 @ 64032 4 64014 15 64034 9 GABBA 24S 64035 17 64016 253 64036 76 64017 34 64037 14 64018 @ 64938 1 64919 255 64039 9

Of course, computer is likely to crash when you attempt t SYNX. So it ig a good idea to SAVE before you t out.

by Carl Green

SAVE "SYNX" CODE 64000, 46

To use SYNX (assuming the code is at 64000):

RANDOMIZE USER 64000 turns the syntax checker OFF. RANDOMIZE USER 64002 turns the syntax checker back ON.

Here is a hint for putting TIMACHINE (Novelsoft) on the AERCO disk drive system. I found the FD-68

does not like: 1) equations 2) VAL a i) 3) more than one period (.) 4) scientific notations (eg: 6e4) in the CAT and MOVE statements. Try the following for

TIMACHINE:

1) LOAD the whole program from tape.

2) Move the cursor to the right of the quotation marks.

3) DELETE the quotation marks.

4) Press STOP once, then ENTER twice.

5) Change line 8070 to read:

8070 PRINT AT 19,0: - BAS", 9997s. MOVE O614, 4922: MOVE QOOQ» 933 MOVE »11458°

MOVE "TSTIME

"TSTMLGO.BIN",6 “TSSETUP. BIN", 60 "“TSTIMEZ. BIN", 26688

6) Change line 9997 to read:

3997 CLEAR GO61S: INK 6: PAPER & : BORDER 6: CLS : PRINT. AT. 19,0: CAT "TSTMLGO.BIN",: RANDOMIZE U SR 60614: INK 6: PRINT AT 15,0: CAT oe ee BIN", : RANDOMIZE 11 458: LET =USR’' 60000: PRINT AT li 193-03 INK: 6: CAT "TSTIMEZ.BIN",: INK Oo: GO TO 89000

7) OUT 244,1

8) GOTO 8000

9) Put formatted disk in.

10) At the “BACK UP?" option, press "Y".

TIMACHINE should now be on disk with the option operational.

18

if you get a single number wrong,

listing, ready to be POKEd into memory however you wish:

243 Zot 176 21

201

the o use est it

backup

LARKEN 2068 DISK DRIVE SYSTEM

CASSETTE TO LARKEN DISK

by Gaylen W.

From the time I first bought my Timex Sinclair 1000 for a close-out price of $29.95 (around 1982), I have always dreamed of the day when I could have a "complete" computer system.

I moved one step closer with the purchase of a

used TS52068 in November of 1986. But I was still stuck with using cassette tapes. : Next I moved up to A&J Microdrives (for my

TS2068). It was so much faster and easier to use. Over the next few weeks I spent a lot of time con- verting all of my cassette software to the A&J. I was happy with the A&J for almost six months...maybe even a little longer.

Then one day I was over at a friend's home and saw how nice his computer worked with a disk drive system. Now that would really be something to have a disk system for my hard-working Timex Sinclair. But, it was just too expensive to add one to my computer system.

Then along came Mr. Larry Kenny of LARKEN ELECTRONICS, and his floppy disk drive system for the TS2068. The cost was low enough to give it a try. Now about a year later, my present system includes the used 2068, a Larken disk drive system, a dual Amdek Amdisk III, one Quad 5 1/4" drive, an RX-80 Epson printer, an Aerco printer interface, a TS2040 printer, a 2050 modem, a green screen monitor, and lots of software. If I had the money that I have spent on this system over the last six years, I could

buy a "basic" PC compatible, with NO software or peripheral hardware. I'm going to stick with my Sinclair.

Now that you know a little of the history of my hardware system, maybe I can help you convert cassette (or A&J Micro Drive cartridge) software to the Larken Disk Drive system. During this last year, I have, with the help and advise of some fellow Sinclair users, converted the following software to the Larken:

Tasword II, Pro/File 2068, Pro/File +5, VuCalc, Timemachine, Pixel Print, Zeus, Loader V, Jet Set Willy, Voice Chess, Greeting Card Designer, Banner Designer, Personal Accountant, Kruncher, pro- grams on the original tape supplied with the 2068, and many other pieces of software taken froma variety of sources.

Changing all of this software to the Larken DOS (Disk Operating System) has one thing in common: the changes made in each program is a modification of the BASIC save and load commands, to save the program, to load and save code, to load and save data strings, to load and save screen strings. Refer to the Larken operations manual for instructions on how the “RANDOMIZE USR 100" is used before each load or save command in your BASIC program. The following listing is an example of how these changes were made in TASWORD II (2068 word processor):

VuFile,

15 RANDOMIZE USR 1a@: OPEN #4,

"dd": PORKE VAL "S36@a",UAL “ea”: CLEAR VAL "335279": GO SUB VAL "4 @@G": BORDER VAL “2”: FPARPER UAL “d": INK VAL "a": PRINT #4: LOAD “TW.Ct "CODE : CLS : LET asUSR V nL... “SSeei": GO FO Vat “i6" 25 GO SUB VAL “4080": PRINT AT VL. @ pve. © 3 BTERT “CERT Fit e”"; TRE Vat “3i"; “p” 23 PRINT : PRINT “save text fi Le as ; TRE UAL ates, Be er "s ae

32 PRINT : PRINT “load text fi Le; TRE URL ii. late ; ae =

~ 8

35 PRINT : PRINT “merge text F 1126 3.088. VAL og! 345m,

48 PRINT : PRINT "return to te Kt Fite" TAS Val. °32";.*u"

45 PRINT : PRINT “define graph ics/printer”’;TAB VAL "31"; "9"

19

Bench Sa PRINT PRINT “save tasward Sent en Vee "ODS LES 55 FRINT ‘RINT “inta Basic"; TRE VA “3i"; “5S” of PRINT PRINT "“GIRECTORY';T HE *3 3 a3 st *Q PRINT_AT UAL “ee” VAL "@";” eo AF. b6SUeL “338" THEN LET ..2V a3 e a3 igs IF b=VAL "106" THEN LET i=V : eS 125 IF bsVAL “116" THEN LET is¥V ..° ae. jereese b=asVAL “11ie" THEN LET i = 140 IF b=sVAL "121" THEN LET i =¥V AL “i2" 150 IF b=VAL "109" THEN LET i= AL "ie" 160 IF bsVAL "103" THEN LET i=¥ AL "14" ean boVAL “S8" THEN LET i=UA yo IF b=VAL "100" THEN GO TO WV AL "Sora" OO CLS ecrkhET -<eVAL a SO Sua WAL "Fea": SO SUB VAL EM TGTS Be = ET a$="TW": PRINT tad: SAVE a $+". St” LINE Vai “45" 71i@ PRINT #4 SAVE a$e”"°,. Ct "Cope VAL “547384" ,VAaL “1a7s1' GO Ta URL Vee" 1230 LET <#=VAL 12": GO SUB UAL “Sag: GO SUB VAL "9980": PRINT #4: SAVE a8+",.0t "CODE 6,4 4 e830 LET b=FN pPI(VAL "62215"): GO SUB VAL "S998": PRINT #4: LOAD . ags+" .Cti"Cope ta+b),(0(FN pivaL "5 ee2l")I+VUAL "SS" UAL "Bd" -ai: GO TO VAL “ie” S398 INPUT "Brive So. 25 2.3 = ;Ofr: PRINT #4: GO TO Er RETURN 99°20 CLS : GO SUB VAL "S908": PR int @é" “Gar -** , PAUSE @: CLs SO TO VAL "25" Line 15 sets up the PRINT #4 command that will

be used before each save and load command in the pro- gram. Line 60 adds a disk directory choice to the tasword menu. Line 175 is the IF..THEN statement used by the menu to call Line 9970. Line 9970 calls the GO SUB Line 9900 which gives you a choice of which'drive you want and then returns to do the catalog of that chosen drive. After the directory is done, the pro- gram will return to the main menu. Please note that the drive selection GO SUB Line 9900 is also called by both the load and save lines of the ‘program. Lines 700-710 are the save lines that will save Tasword II to disk. Line 1030 is the save line that will save all files (letters or documents) to disk. Line 2030 is the load line that will load your chosen file from the disk to Tasword.

I know that this is a brief description of how these lines are changed. But there is one area of concern that has to be dealt with in making these changes. That area is the memory spaces for the basic program. You will note in Line 15, that RAMTOP is lowered to 33279, and then the Tasword ‘code is loaded above that. The basic program cannot be written above that address. If you change that address...well, that's another complete article.

There are a number of ways that the original basic program can be changed to free up memory space to allow for these changes. If you are going to dedicate the program to disk use only, you can go in and DELETE the cassette VERIFY routines. The Larken system uses the VERIFY command asa "disk check" command (refer to the Larken manual for further details). You can also change or eliminate any prompts that are displayed on the screen concerning the loading, saving, or verifying of cassette tapes.

One more way to free up program memory space is the use of the KRUNCHER program (written by Syd Wyncoop and available from RMG Enterprises) . KRUNCHER will "modify" the basic listing. It places all numbers found in the listing inside VAL "" state- ments, and replaces the number 0 with NOT PI, 1 with SGN PI, and 3 with INT PI. These tokens have the same value as the number. There is one problem in using the KRUNCHER program: it does not change negative numbers correctly. A -250 will be changed to VAL

"-250", which causes a syntax error in the basic program. The way to correct this is, before you "krunch" the program, list it out and put any negative number inside brackets (-250 will be

-~(250)). The KRUNCHER program will now convert this number correctly.

There are some other problems encountered when converting cassette software to disk. One of the first ones you may come across, is the program (or file) name. Cassette allows a name to be ten char- acters long. Larken allows up to six characters plus an "extension". You can see how the program (file) name and extension are used, by looking at the load and save lines of the Tasword listing example (please refer to the Larken manual for rules concerning the

to contact me. I'm Gaylen W. Bench, and my address is: 900 N.W. Mawcrest Dr. #110, Gresham, Oregon

97030. You can also contact me via CompuServe (ID# 73720,755), or on the RMG BBS (503-656-8072; settings 8/1/N). I will gladly pass any updated information to TDM readers in a future article.

The information provided in this article is a long way from being complete on how to convert every program to disk. If any of you would like assistance in making these changes, please contact me, and we will work out some arrangement on how to get the job done.

One more important find. If any of you have attempted to put a choice in your basic program to Switch between the Timex 2040 printer and a full-size printer, you will run into a problem using the Larken system. For some reason the Larken system over-writes the 2068's print buffer. You can find out if you have this problem by doing an LLIST to the 2040 printer. If the first thing printed is garbage, then you’ have the problem. I tried for about a year to find a solution. Whenever I would use the PRO/FILE +5 pro- gram, I could not switch back to the 2040 printer after using the full-size printer...the program would “crash". The correction to this problem is so simple!

use of extensions). Some basic programs include a When you change back to the 2040, the first thing you "test statement", testing for the cassette ten need to do is a simple "LPRINT". This clears the 2068 character name length. These statements will have to print buffer and now you can print with the 2040 be changed to conform to the Larken file name length. without any trouble. I hope that I have been able to help some of you with the change from cassette to Larken disk. If any of you have suggestions on how these changes can be made easier than I have listed, please feel free Article by David Solly Programs by David Solly and Larry Kenny

Access to the Larken Disk Drive System from within

a compiled HiSoft(TM) Pascal program is now

possible thanks to the procedures developed by

David Solly and Larry Kenny. This article

demonstrates how to install these procedures and

gives a practical demonstration on how they may be

used within a simple directory program. The

procedures described in this article are valid for

both the Timex Sinclair 2068 and the ZX Spectrum

versions of HiSoft Pascal.

I have owned HiSoft Pascal, (henceforth Pascal), for the The crux of the problem is that, although both Timex Sinclair 2068 and the ZX Spectrum for a number of

years now but the drawback with Pascal, as it is implemented on Sinclair computers, has been that there was no way to access a DOS from within a compiled program. It seemed ridiculous to put the effort into creating programs’ which ran like machine code once the source code was debugged, compiled and transfered to disk only to be forced to go back to a plodding tape operating system, (henceforth TOS), when I needed to save or enter data from within the compiled program. Finally I sat down and did some serious study of the problem, some head scratching, some question asking (especially of Larry Kenny, who is the creator of the Larken DOS, and Ken Schieman) and some experimentation. The result

of this is the creation of the Pascal disk handler described below.

The needs of LKDOS are the same as for the TOS. You are required to provide the name of your program, the starting address of the program and the lenght of the program. This is exactly what happens when you type within Basic:

SAVE "Myprogram” CODE start, length.

Pascal also passes the same information to the TOS when it saves out a variable through the use of the procedure:

TOUT (’Myprogram’, ADDR (the name of the variable

being saved), SIZE (the name of the variable being saved));

20

generate identical information, LKDOS can from within the programming is need in order to transfer the parameters to LKDOS from within the Pascal environment.

The first steps towards transfering t form Pascal to LKDOS are to address, and the length of the loaded in a safe area of the RAM. This is a thanks to the very Unlike the POKE command function can DOKE a number or POKE the contents of a character array starting at a fifteen bytes of the printer buffer proved to be the area to which all the transfers can be following lines:

POKE (23300,

You can see demonstration - DISKSAVE and DISKLOAD.

extract it

Basic environment. Therefore,

save or

store the name, the varialble to be simple function in Basic, this

POKE () available in

versatile

given address. The

achieved

"Myprogram’);

POKE (23311, ADDR (name of variable));

and

POKE (23313, SIZE (name of variable));

these program

lines in a within the

modified form in procedures

languages

additional

he required information

saved matter Pascal. Pascal

safest with the

GETNAME,

Upon completion of these steps the next step is to copy the information from its storage place in the RAM to the appropriate routines in the LKDOS. Again to HiSoft includes within their implementation of Pascal the procedure INLINE() wich allows us to embed Z80 machine code within a Pascal procedure to accomplish our ends.

The following is a disassembly of the machine code used in the procedure DOUT

00010 NAME EQU 23300 00020 PROGNM EQU 8226 00030 TEMP4 EQU 8243

' 00040 TEMP2 EQU 8241 00050 NMIF EQU 8194 00060 ADDR EQU 23311 00070 SIZE EQU 23313 00080 SVI1 EQU 0204 00090 SV2 EQU 0207 00100 ORG 40000 00110 DI ; Disable interrupt 00120 CALL 98 ; Turn on LKDOS cartridge 00130 LD HL,NAME ; Transfer file name 00140 LD DE,PROGNM ; to prognm 00150 LD BC,09 00160 MOVE LD A, (HL) ; Loop to catch any 00170 CP 0 ; occurance of CHR$ O 00180 JR NZ,NZERO 00190 LD 44L14,22 ; & replace with a space 00200 NZERO LDI 00210 LD A,B 00220 OR C 00230 JR NZ, MOVE 00240 LD A,11 00250 LD (NMIF),A 00260 CALL SV1 ; save name 00270 LD HL, (ADDR) ; Retrieve start address 00280 LD (TEMP4) ,HL ; set start address 00290 kat 4, 4ASTZS) > Retrieve length of save 00300 LD (TEMP2) ,HL ; Set length of save 00310 CALL SV2 > second save data 00320 LD A, (100) ; Exit cartridge 00330 EI > Enable interrupt

(Program provided by Larry Kenny of Larken Electronics, #2 Navan, Ontario, Canada K4B 1H9, Tel: (613)-835-2680) (Listing made using Zeus Assembler)

The procedure DIN contains the same code except that SV1 and SV2 are replaced with LD1 EQU 198 and LD2 EQU 201. The MOVE loop insures that the file name is padded out with the correct number of spaces so that it totals nine characters and spaces otherwise the file name may be corrupted and fail to reload.

The following listing demonstrates how all the procedures described above are used within a complete Pascal program. The object of the program is to create a simple telephone directory which will allow you to store ten names. and numbers, read the information stored in the directory, and read and write the information stored in the directory to disk using the Larken LKDOS. There is also a summation of this article contained in the procedure SONGANDDANCE.

Pascal source code listing

10 {PROGRAM BY: } 20 {DAVID SOLLY } 30 (1402-1545 ALTA VISTA DRIVE} 40 {OTTAWA, ONTARIO } 50 {CANADA K1G 3P4 } 60 {TEL: (613)-731-2120 =h 70

80

90 {THIS PORGRAM IS FOR

100 {DEMONSTRATING HOW THE

110 {(LARKEN DISK DRIVE MAY BE 120 (ACCESSED FOR STORING AND 130 {RETRIEVING DATA WITHIN A 140 {HISOFT(TM) PASCAL PROGRAM. 150 {THE PROCEDURES DESCRIBED 160 {IN THIS PROGRAM ARE VALID 170 {FOR BOTH THE ZX SPECTRUM 180 {AND THE TIMEX SINCLAIR 190 {2068 VERSIONS OF HISOFT 200 {PASCL.

Rag aD Neg Ned eg Nat et ed et te

4i

210 220 230 240 250 260 270 280 290 300 310

320 -

330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500

510 520 530 540 550

560 ©

570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 880 890 900 910 920 930 940 950 960 970 980 990 1000 1010 1020 1030 1040 1050 1060

PROGRAM LARKENDEMO;

CONST LENGTH = 10; PN = 23300; {ADDRESS WHERE THE NAME FOR THE SAVE/LOAD} {ROUTINES IS STORED} PB = 23311; {CONTAINS THE ADDRESS WHERE THE DATA BEGINS) PS = 23313; {CONTAINS THE NUMBER OF BYTES USED BY THE DATA} CAPSLOCK = 23658; {ADDRESS OF THE CAP SHIFT LOCK CONTROL) ON = 8; {SWITCHES CAPSLOCK ON} OFF = 0; {SWITCHES CAPSLOCK OFF}

TYPE ENTRY = RECORD NAME : ARRAY (1..10] OF CHAR; NUMBER : ARRAY (1..10] OF CHAR; END;

VAR DIRECTORY : ARRAY (1..LENGTH] OF ENTRY; I : INTEGER; FINISHED : BOOLEAN; ANS : CHAR;

PROCEDURE DOUT; {INVOKES LKDOS WRITE} BEGIN INLINE (#F3, #CD, #62, #00, #21, #04, #5B, #11,

#22, #20, #01, #09, #00, #7E, #FE, #00, #20, #02, #36, #20, #ED, #A0, #78, #B1, #20, #F3, #3E, #0B, #32, #02, #20, #CD, HCC, #00, #2A, HOF, #5B, #22, #33, #20, #2A, #11, #5B, #22, #31, #20, #CD, #CF, #00, #3A, #64, #00, #FB);

END;

PROCEDURE DIN; {INVOKES LKDOS READ) BEGIN INLINE (#F3, #CD, #62, #00, #21, #04, #5B, #11,

#22, #20, #01, #09, #00, #H7E, #FE, #00, #20, #02, #36, #20, HED, #AO, #78, ¥#B1, #20, #F3, #3E, #0B, #32, #02, #20, #CD, #C6, #00, #2A, #OF, #5B, #22, #33, #20, #2A, #11, #5B, #22, #31, #20, #CD, aC9, #00, 43A, #64, #00, #FB);

END;

PROCEDURE GETNAME; VAR PROGNM : ARRAY (1..9] OF CHAR;

BEGIN WRITELN; POKE (CAPSLOCK, OFF); WRITELN (’NAME FOR DISK OPERATION? '); WRITELN; * 3 WRITE ('9 CHARACTERS MAXIMUM: '°); READLN; READLN (PROGNM) ; POKE (PN, PROGNM); {STORES THE NAME IN RAM} END;

PROCEDURE DISKSAVE; BEGIN PAGE; WRITELN; WRITELN (’LARKEN DISK SAVE ROUTINE’); WRITELN; GETNAME; POKE (PB, ADDR (DIRECTORY)); {START ADDRESS FROM WHERE THE} {DATA IS TO BE SAVED} POKE (PS, SIZE (DIRECTORY)); {NUMBER OF DATA BYTES TO SAVE} DOUT; WRITELN (’SAVED!’); FOR I := 1 TO 100 DO {PAUSE LOOP) END;

1070 1080 1090 1100 1110

1120.

1130 1140 1150 1160 1170 1180 1190 1200 1210 1220 1230 1240 1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370

1380 ~

1390 1400 1410 1420 1430 1440 1450 1460 1470

1480 1490 1500 1510 1520 1530 1540 1550 1560 1570 1580 1590 1600 1610 1620 1630 1640 1650 1660 1670 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780

1790

1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940

PROCEDURE DISKLOAD;

BEGIN PAGE; WRITELN; _ WRITELN (’LARKEN DISK LOAD ROUTINE’); WRITELN; GETNAME; POKE (PB, ADDR (DIRECTORY)); {START ADDRESS AT WHICH THE} {DATA IS TO BE LOADED} POKE (PS, SIZE (DIRECTORY)); {NUMBER OF DATA BYTES TO LOAD} DIN; WRITELN (’LOADED!’); | FOR I := 1 TO 100 DO (PAUSE LOOP) END; PROCEDURE FILLDIRECTORY;

BEGIN PAGE; POKE (CAPSLOCK, OFF); FOR I := 1 TO LENGTH DO BEGIN WITH DIRECTORY CI] DO BEGIN WRITELN (’ENTRY NO. ', I, ° OF ', LENGTH); WRITELN; WRITE ('NAME PLEASE (10 CHARS) ’); READLN; READ (NAME); WRITE (’NUMBER PLEASE (10 CHARS) ’); READLN; READ (NUMBER) END END; WRITELN (’DIRECTORY FULL ’); WRITELN; WRITELN (’HIT ANY KEY TO CONTINUE’); READLN END;

PROCEDURE READDIRECTORY; BEGIN PAGE; POKE (CAPSLOCK, OFF); FOR I := 1 TO LENGTH DO BEGIN WITH DIRECTORY C1] DO BEGIN WRITELN (NAME, ’, NUMBER); WRITELN; END END; WRITELN (’END OF DIRECTORY’); WRITELN (’HIT ANY KEY TO CONTINUE’); READLN END;

PROCEDURE SONGANDDANCE;

BEGIN PAGE; WRITELN (’Larken Disk Access Routine’); WRITELN (’for’); WRITELN (’HiSoft (TM) Pascal’); WRITELN (’for the’); WRITELN ('ZX Spectrum’); WRITELN (’and the’); WRITELN (’Timex Sinclair 2068’); WRITELN; WRITELN (’by’); WRITELN (’David Solly’); WRITELN (’and’); WRITELN (’Larry Kenny’); WRITELN; WRITELN (’Hit any key to continue’); READLN; PAGE; WRITELN (’Many ZX Spectrum and TS 2068’); WRITELN (’programers have long wanted to’); WRITELN ('do serious programing in other’); WRITELN (’languages than the resident’); WRITELN (’Sinclair Basic. Although such’); WRITELN (’languages as Forth, Logo, C,’); WRITELN (’Prolog and Pascal have long been’); WRITELN (’available to Sinclair users one’); WRITELN (’of the main drawbacks for’);

1950 WRITELN (’serious programing in these’);

1960 WRITELN (’languages has been the lack of’); 1970 WRITELN (’disk I/O routines. This program’); 1980 WRITELN (’will demonstrate how the Larken’); 1990 WRITELN (’disk drive system may be’);

2000 WRITELN ("accessed for storing and ");

2010 WRITELN (’retrieving data within a’);

2020 WRITELN (’HiSoft(TM) Pascal program. The’); 2030 WRITELN (’procedures described in this '); 2040 WRITELN;

2050 WRITELN (’Hit any key to continue’);

2060 READLN;

2070 PAGE;

2080 WRITELN (’program are valid for both the’); 2090 WRITELN (’ZX Spectrum and the Timex’);

2100 WRITELN (’Sinclair 2068’);

2110 WRITELN;

2120 WRITELN (’The two disk drive procedures’); 2130 WRITELN (’are found in the procedures DIN,’); 2140 WRITELN (’and DOUT. A third procedure, ’); 2150 WRITELN (’called GETNAME, supplies the’); 2160 WRITELN (’above procedures with a name for’); 2170 WRITELN (’storing or retrieving from the’); 2180 WRITELN (’disk. All these procedures work’); 2190 WRITELN ("’in conjunction with the resident’); 2200 WRITELN (’procedures ADDR(), SIZE(), and’);

2210 WRITELN (’POKE() ’); 2220 WRITELN;

2230 WRITELN (’The authors hope that these’); 2240 WRITELN (’procedures will stimulate Pascal’); 2250 WRITELN (’programing for the ZX Spectrum’); 2260 WRITELN;

2270 WRITELN (’Hit any key to continue’);

2280 READLN;

2290 PAGE;

2300 WRITELN (’and the Timex Sinclair 2068 and’); 2310 WRITELN (’encourage other Sinclairests to’); 2320 WRITELN (’write disk routines for the’); 2330 WRITELN (’other languages mentioned’);

2340 WRITELN ('’above.’);

TIMEX 2068 and GRINATE 20/7 iE LON RI

NEW for your 2068!!:

COPY A SCREENS IN COLOR? YES! Now a T/S 2068 artist can copy to paper his/her favorite screen$ ....e. JN FULL COLOR!! All eight Timex paper & ink colors are accurately reproduced for a full 24 line X 32 coluan graphics screen duap. The user friendly software provides for two copy sizes in color or in black & white.

HARDWARE REQUIREMENTS? - An OKIMATE 20 printer w/ COMMODORE PLUG ’n PRINT CARTRIDGE are inter- faced to a 2068 via a simple COMMODORE serial port emu- lator circuit; (The same circuit also interfaces a 2068 to a COMMODORE 1520 4-color printerdplotter.) The I/F hard- ware sells for $14.95 (bareboard only), $20.95 (complete kit), and. $30.95 (asseabled & tested) - all postpaid.

OTHER SOFTWARE? - The OKIMATE 20 is a many featured 80/156 col. printer, able to print in draft, NLQ, italics, reverse (white on black), underline, super/sub- scripts, six char. sizes, and do 7 or 24 pin color or b/w graphics. A “patch kit” software program allows CMScript versions 9/5.2 to print to the OKINATE 20. A hi-ses driver code block is also available for LPRINT/LLISTing to the OKINATE 20 from BASIC. All software is priced at $8.95 postpaid each and comes with coaplete user notes.

Send LSASE for additional information and order fora to: ¢4 John McMichael ¢4¢ #€¢¢ 1710 Palmer Drive ¢¢¢

#¢¢@ Laramie, WY 82070 ¢¢4¢4

22

2350 WRITELN; 2360 WRITELN ('’David Solly’); 2370 WRITELN (’Larry Kenny’); 2380 WRITELN; 2390 WRITELN;

2400 WRITELN (’Hit any key to continue’); 2410 READLN

2420 END;

2430

2440

2450 BEGIN {BODY OF THE PROGRAM} 2460 REPEAT

2470 PAGE;

2480 POKE (CAPSLOCK, ON); 2490 FINISHED := FALSE;

2500 WRITELN;

2510 WRITELN;

2520 WRITELN (’MENU’);

2530 WRITELN;

2540 WRITELN (°SELECT ONE OF THE FOLLOWING’); 2550 WRITELN (’OPTIONS ’); 2560 WRITELN;

2570 WRITELN;

2580 WRITELN (’1) READ THE INTRODUCTION’); 2590 WRITELN ('2) CREATE DATA’);

2600 WRITELN ('’3) READ DATA’);

2610 WRITELN (’4) SAVE DATE TO DISK’); 2620 WRITELN (’5) LOAD DATA FROM DISK’); 2630 WRITELN ('’6) EXIT THE PROGAM’);

2640 WRITELN;

2650 WRITELN;

2660 WRITE ('MAKE YOUR SELECTION '); 2670 READLN;

2680 READ (ANS);

2690

2700

2710 CASE ANS OF

2720 ’1’ : SONGANDDANCE; 2730 ’2’ 3 FILLDIRECTORY; 2740 *3’ : READDIRECTORY; 2750 '4’ : DISKSAVE;

2760 ’5’ : DISKLOAD;

2770 ’6’ : FINISHED := TRUE 2780 END;

2790

2800

The Pascal

2810 UNTIL FINISHED = TRUE;

2820 2830 2840 2850 2860 2870 2880 2890 2900 2910 END.

disk handler program works only within a

{FINALE} PAGE;

WRITELN; WRITELN;

WRITELN (’END OF DEMONSTRATION’);

WRITELN; WRITELN

described compiled Pascal program and,

in this article and

regretfull , can not be used to save Pascal source code. The

procedures DIN, DOUT, and GETNAME They may be copied directly from

are completely modular. this program into the

appropriate section of any Pascal program you care to write

which requires access to LKDOS.

The procedures DISKSAVE and

DISKLOAD may also be used but remember to change the name within the parentheses of ADDR() and SIZE() to the name of the variable within your program that you wish to save or load. The ”.C” extension required by data file saves within Basic when using LKDOS is not required by the Pascal disk

handler, however, extension

is intended for a program. All the LKDOS error codes are operational and will

stop your program

compiled code is accessed through a

it may be good practice to use the ".P” to indicate that the data that has been saved Pascal program

rather than ae Basic

without crashing providing that the

Basic loader progran,

that a PRINT USR is used rather than RANDOMIZE USR and that

there is at least one line of

Example:

Basic

after the USR call.

10 REM TYPICAL COMPILED PASCAL PROGRAM LOADER

20 BORDER O: PAPER 0:

30 PRINT #4: LOAD 40 CLS: PRINT USR 27000 50 STOP 9000 REM SAVE LOADER TO DISK 9010 PRINT #4: SAVE

INK 7: CLS

"MYPROG.C1” CODE 27000

"LOADER.B1” LINE 1

On behalf of Larry and myself I hope that this Pascal disk handler will prove to be useful serious programming in Pascal which requires disk access.

all who wish to do

7FBRA/TIMEX FDD DISK SYSTEM

MACHINE CODE TRACK

by Mike Finn

In order to write more advanced programs for the Zebra FDD disk drive system, we need to know more about it's operating system. To write disk utilities we need to be able to see exactly what is on disk without a basic program using basic TOS (Timex Oper- ating System) commands as intermediary. Since TOS is stored on the first four tracks of the disk and downloaded to controller RAM, we need disk reading and writing utilities to make any desired changes’ to TOS, or to develop utilities such as a program which would recover disk data after accidental erasure.

The following machine code program will read all the sectors of any given track on the disk and store the 4K bytes of disk track data in Home RAM at 7000 hex for access by a monitor disassembler machine code program. The track reader code resides at EOOO to E050 hex. I have used both Zeus Monitor and HOT-Z AROS with it. In fact, I have used HOT-Z AROS in all 3 banks: home, dock, and exrom with 32K non-volatile memory board in the dock cartridge slot with this track reader program. The code can be readily modi- fied to be used at some other location if you are using some other disassembler.

E000 E001 E002

E005 E008 E009 E00C EOOD EOOF E013 E016 E018 EO1A

E01C EO1F E020 E021 E022 E025

E028

23

00 00 210070

3A01E0

FDES FD210000 CDO800 FDE1 1E00 3E1B

320021 CS DS ES CDO8C6 CD2606

3A0221

READER

LD HL, 7000

LD A, (E001) LD D,A LD A, CEOOO)

LD IY,0000 CALL 0008 POP IY

LD E,00

LD A,1B

LD (2100) ,A PUSH BC PUSH DE PUSH HL CALL 0608 CALL 0626

LD A, (2102)

Storage space for drive # Storage space for track # Beginning of home ram storage for disk track contents

D contains track #

C contains drive unit # Page in ZEBRA interface rom/ram

E will hold sector #

Disk command to read sector contained in E of track in D of drive in C

Command buffer

Save request parameters

Save current home ram download address

Calls command sending routine

This routine controls for reply from disk

This system variable holds

E001. I use the GOTO command to rerun the code at E002. For HOT-Z, the normal read mode can disassemble code and the display switch (SS-G) will read data. I can enter the edit mode (SS-A) to input new parameter values and use the run command (CSS-RUN) to rerun the track reader code. HOT-Z has an advantage over ZEUS for reading files containing basic programs. ZEUS won't display the characters corresponding to codes

calls are to a jump table in Zebra ROM, as in Appendix F of the user manual,

the FDD should run this code. need to be changed to relocate this code for use with

another monitor/disassembler You will need to change the absolute

The only

are lines 3, 4,

TOS error code

EO02B A7 AND A Test for error. E02C 0600 LD B,00 If an error occurred return EO2E 4F LD C,A to basic with error E02F 201C JR NZ,EO4D reason in BC E031 El POP HL Restore home ram address and E032 110020 LD DE,2000 download from ZEBRA ram E035 EB EX DE,HL buffer to home E036 010001 LD BC,0100 E039 EDBO LDIR EO3B EB EX DE,HL EO3C Dl POP DE Restore sector/track parameter EO3D 7B LD A,E Pick up next data sector of EQ3E C607 ADD A,07 track E040 E60F AND OF E042 SF LD E,A E043 Cl POP BC Restore drive parameter E044 20D4 JR NZ,EO1A If all 16 sectors not read then loop back for next one E046 010000 LD BC,O0000 If all 16 read set error report code to 0 E049 CDO306 CALL 0603 Page out ZEBRA rom/ram EO04C C9 RET Return to basic to call up either monitor or error message E04D El POP HL Clear stack and return to -EO4E El POP HL basic EO4F El POP HL E0SO 18F7 JR E049 Relative addressing is used as much as possible within the machine code. The only absolute address

described so all versions of lines that

and 6.

addresses used

in those lines to match your memory layout.

A basic

you must your own monitor/disassembler loads and calls. I use

program

run the code,

is used to load the code from disk, poke the track and driver parameters, favorite monitor, program to view the disk data.

load your

and enter the monitor In the replace lines 30 to 38 and 140 to 148 with

basic program

over 127.

For those whose

assembler, the code.

10 20 30

34

36 38 40

monitors do not

the following loader may be used to enter

REM ZEBRA Disk Drive Track Reader Utility by Mike Finn

REM This utility requires a monitor/disassembler machine code program

REM Program allows for monitor code to occupy addresses from 8000 to DFFF Hex or from E051 to FFS7 hex

REM E000 to E050 is reserv- ed for track reader m/c

REM 7000 to 7FFF is reserv- ed for disk data

CLEAR 28671

LOAD *''TRACKRDR.COD''CODE

REM 2% ORR RRR RIO KK

REM

REM Replace this REM with a LOAD * instruction to load your favorite mon- itor disassembler from Disk

REM

REM 46K ROR ROR KOK

PRINT ’TAB 5;''DISK REVIEWIN

GS UriLitr’

90

INPUT ''Source Drive (A TO D

) "Ds

60 70

LET D=CODE Ds IF D>=97 AND D<=100 THEN L

ET D=D-32

80 HEN 90 100 110 100 120 130 140 142 144

LET D=D-65: GO TO 50 POKE 57344,D INPOr “Track (0 to 39) ";T IF T<O OR T>39 THEN GO TO

IF D<O OR D>3 T

POKE 57345,T LET BC=USR 57346 REM 6 OR ORO ORK OK OK REM REM Replace this REM with IF BC=0 THEN RAND USR monitor address )

one of following depending on my _= system configuration. ZEUS monitor: 30 LOAD * "ZEUSMON.COD"CODE 140 IF BC=0 THEN PRINT USR 62137 HOT-Z AROS: Home : 30 LOAD * "HOT-Z2,5.COD"CODE 140 IF BC=0 THEN RAND USR 32776 Dock: 140 IF BC=0 THEN OUT 255,0: OUT 244, 240: RAND USR 32776 Exrom: 140 IF BC=#0 THEN OUT 255,128: OUT 24 4,240: RAND USR 32776 Mostly I keep HOT-Z in Exrom. There are several "bugs" in the FDD's initiation routines when dock

bank cartridges are present. I avoid these conflicts by keeping HOT-Z AROS in exrom from 8000 to DFFF hex.

Once you enter the monitor you shouldn't need to return to basic. Parameters at E000 and E001 hex can be poked using utilities in the monitor program and both ZEUS and HOT-Z have code execution routines. For ZEUS, I use the DISASSEMBLE command to read code and the EDIT command to read data. The EDIT command is also used to change parameter values at EOOO and

24

146 REM 148 REM RRR ORK 150 PRINT "ERROR '"' sBC; nk Please

see user manual,"

10 REM Machine code loader

15 RESTORE

20 FOR I= 57344 TO $7425

25 READ A: POKE I,A: NEXT I

30 DATA 000,000, 033, 000,112,05 8, 001,224 ,087,058,000,224 079.

DATA 253, 229. ,203, 033, 000,00 0,205 ,008,000,253,225,030,000

40 DATA 062,027,050,000,033,19 7,213,229,205,008,006,205,038

45 DATA 006,058,002,033,167,00 6,000,079,032,028,225,017,000

SO DATA 032,235,001,000,001,23 7,176,235,209,123,198,007,230

55 DATA 015,095,193,032,212,00 1,000,000,205 ,003,006,201,225

60 DATA 225,225 ,024,247

Tee rANL: Qo oKE Yo» WEPH= "CAPs": COMMAND

by Mike Finn

After reading Ronald Havlen's FDD Express (Oct. '87) newsletter about the problem with stopping the scrolling on the CAT* command with keys "S" and "Q", I began to experiment and I soon discovered that

from the data buffer before it has to return to the original calling routine. If a directory printout contains less than 257 bytes, the "S" key will not

these keys will work occasionally. Here is a= small Seer 2% Sear Oi ee erates trensren wince It eon

A tested prior to the data printout. ae eas which shows that an even larger problem Can a long directory be contained in just 256 exists.

bytes? If look at th b i i First, make sure you have a disk with a large dag is sg e TOE By ene DEIBkeUy OF

: : _ the previous sample directory, you will notice that enough directory to require screen scrolling. One it is mostly empty spaces. The TAB function can

fast way to do this is to run the following program: easily generate all those spaces in just a few bytes

of machine code, so pressing "S" may not necessarily 10 FOR I = 1 TO 40 stop even a large directory from scrolling. ce STR$ I Zebra ROM subroutines called by the "S" and "Q"

40 NEXT I key routine:

Now delete that program and enter the following: go9, FpcBO1AE RES 5,(IY+01) RESET SYSTEM VARIABLE FLAG WHICH

10 LET I = 0 TRACKS KEYHITS 20 CAT* OOOE FDCBOI1DE SET 3, (IY+01) SET CURSOR MODE L 30 LETI=<«I+1 0012 CD3003 CALL 0330 CALL KEYBOARD SCANNER IN 40 GOTO 20 0015 BOO02 DEFB O020B HOME ROM 0017 AF XOR A CLEAR FLAG REGISTER : : > @ f 0018 FDCBO16E BIT 5, (1Y+01) TEST WHETHER KEYHIT FOUND Run this program and while it is running, press 001C C8 RET 2 IF NOT, RETURN TO CALLING ROUTINE and Held Ehe 28. Bays 20,0arient. 88 S058 DAY take 8... oO1D SA0SSGs CED 7Ay Sene) SYSTEM VARIABLE - LAST KEY minute or so. Eventually, the scrolling will freeze 0020 FE61 CP 61 TEST FOR UPPER CASE and will remain this way until the "Q" key is 0022 D8 RET C RETURN IF UPPER CASE pressed. Press the "Q" key and the screen will begin 0023 E6DF AND DF IF LOWER CASE. CONVERT TO scrolling again. Immediately press CAPS SHIFT and 0025 C9 RET UPPER CASE AND RETURN BREAK. Enter as a direct command PRINT I. The first 0026 3E0D LD A.OD CARRIAGE RETURN time I tried this it took 33 repetitions of the loop 0028 CD3003 CALL 0330 CALL RST 10 IN HOME ROM from lines 20 to 40 before the scrolling stopped. 002B 1000 DEFB 0010 TO TRANSMIT CARRIAGE RETURN Other times it took -as few as four loops. This shows that the "S" and "Q" keys do work %92D C9 RET

sometimes...the problem is why don't they work all of the time.

I've also noticed another problem which may be Similar to the systems non-response to the "S" key. Let's clean up our disk's directory with the following program.

10 FOR I = 1 to 40 20 LET A$ = STR$ I 30 ERASE A$

40 NEXT I

BIE OU MISS G@HE FAIR?

re) If so, you’ll be glad

to Know that you too can get in on the specials that were. offered! We want to send a list of our special “AFTER THE FAIR" sale items so that you can get in on the savings! All you do i‘s send a legal sized SASE and we’!l] send it out to you with all due haste! AND...1¢ you would like to order a souvenier packet of specials and a program from the show, just send a check or MO for $3 and we’ll send

it out! (Packet includes specials from most attending vendors.)

For RMG’s BIG 70+ page catalog, send $3, refunded first order.

RAG ENTERPRISES

1419 1/2 7TH STREET OREGON CITY, OREGON 97045 903/655-7484 *# NOON-10 TUE-SAT

When you run this program, TOS (Timex Operating System) will ask you to confirm that you want to erase each directory entry. Answer "Y" each time and take notice of how long a wait there is between when you press "Y" and when TOS recognizes that you replied. The first six times I answered "Y", TOS recognized my input immediately, but the following two times, there was noticeable lag. on one occasion, I tapped the "Y" key several times before the system finally responded. I have not had this problem any other time, so I assume the problem is not a defective keyboard. (I would like to know if these things I've written about are peculiar only to my setup or if they are universal among all Zebra FDD owners. )

I have been working on a disassembly of the Zebra interface ROM. I believe the I've identified the subroutine that deals with the use of the "Q" and "S". I am still investigating this routine and have nothing final to report, but on my first glance, I see no reason why it shouldn't work consistently.

My initial review shows that when the Zebra in- terface ROM sets up a TOS command to the disk controller, it then controls a response using a sub- routine which the Zebra Disk Drive Technical Manual (page 28) calls RESPOSTA. This routine lies between 0688 hex and O6DB. If TOS wants a write out of text in the data buffer (2000 to 20FF hex) or from the error message section of the command buffer (210D to 212D), the routine at O3EB to 0423 is called. It is this routine which contains the "S" and "Q" key tests. One noteworthy point about this routine is that it only tests the "S" key at the beginning of the screen printout of text. It can print 256 bytes

23

printout routine:

IF SO, RETURN TO CALLING ROUTINE

O3EB ES PUSH HL SAVE HL, ADDRESS OF TEXT TO BE 0418 C8 RET Z , Pe PRINTED OUT 0419 7E LD A, CHL) PICK UP TEXT BYTE POINTED TO BY O3EC 3E02 LD A,02 OPEN CHANNEL # 2; 0330 IS THE HL aes: O3EE CD3003 CALL 0330 i CBAS ROUTINE USED TO CALL HOME 041A B7 OR A TESTS TO SEE IF WE REACHED END O3Fl 3012 DEFB 1230 ROM ROUTINES OF DATA MARKER, O00 HEX | O3F3 3EFF LD A,FF POKE SYSTEM VARIABLE WITH FF FOR 041B C8 RET 2 IF SO, RETURN TO CALLING ROUTINE O3F5 328C5C LD (5C8C),A CONTINUOUS SCROLL OF SCREEN 041C 23 INC HL IF NOT END OF DATA OR END OF O3F8 CDOA0O CALL OOOA KEYBOARD SCANNER ROUTINE 041D ES PUSH HL BUFFER THEN GET NEXT ADDRESS TO O3FB FES3 CP.53 « IS IT THE ''S" KEY? BE PRINTED OUT AND SAVE IT O3FD 2007 JR NZ,0406 IF NOT,CONTINUE WITH PRINTOUT 041E CD3003 CALL 0330 USE CBAS TO RUN HOME ROM RST 10 O3FF CDOA0O CALL OOOA IF IT IS ''S'', KEEP SCANNING 0421 1000 DEFB 0010 FOR TEXT BYTE IN THE A REGISTER 0402 FES1 CP 51 IS IT THE ''Q'' KEY? 0423 18EE JR 0413 REPEAT THE END OF DATA AND END OF 0404 20F9 JR.NZ,03FF IF NOT, THEN KEEP SCANNING BUFFER TESTS KEYBOARD UNTIL ''Q'' IS PRESSED 0406 CD2600 CALL 0026 THIS DOES HOME ROM RST 10 TO Note that the keyboard is only tested once for TRANSMIT A CARRIAGE RETURN the "S" key, then up to 265 bytes are printed out. 0409 El POP HL RESTORE POINTER TO BUFFER BYTES When this is completed we return to REPOSTA which 040A ES PUSH HL sends a DONE message to TOS. If TOS has anything else 040B 7C LD A,H THIS TESTS WHETHER HL POINTS TO to output to the screen, it repeats the request for COMMAND BUFFER 210D HEX OR TO data printout and up to 256 bytes can again be DATA BUFFER 2000 HEX printed. So we only get the chance to stop the screen 040C 1F . RRA CARRY WILL BE SET FOR COMMAND scrolling every 256 bytes. BUFFER, AND RESET FOR DATA When you try the program, you will see _ the BUFFER READOUTS scrolling freeze occasionally and will have to press 040D 0600 LD B,0O THIS SETS UP A PRINTOUT OF "Q" to restart it. This shows that the routine does UP TO 32 BYTES, THE MAXIMUM work. I see no software bugs to prevent it from SIZE OF THE MESSAGE AREA IN THE working all the time (i.e., every 256 bytes). I don't COMMAND BUFFER know enough about the hardware mechanisms involved in O40F 3802 JR C,0413 paging in and out the Zebra FDD shadow ROM, but I 0411 0621 LD B,21 THIS SETS UP A PRINTOUT OF UP TO suspect a timing problem or a keyboard debouncing/ 256 BYTES, THE MAXIMUM LENGTH OF. reading problem more than a software problem. Does THE DATA BUFFER, 2000 TO 20FF anyone have any suggestions for further study so we 0413 El POP HL RESTORE BUFFER TEXT ADDRESS can nail down the source of this problem? 0414 04 INC B TESTS THAT WE DON’T EXCEED THE 0415 78 LD A,B MAXIMUM SIZE OF BUFFER 0416 FE21 CP 21 USING OLIGER SAFE DOS VERSION 2.52 by Dick Wagner The final OLIGER SAFE DOS (Disk Operating Now the user can change disk names at will with the

System) on EPROM is now available as version 2.52. The system is more than just a disk operating system. The additional utilities that John Oliger provides are interesting and useful.

Here are some of the latest features:

1. A fast FOR--NEXT loop routine

2. ERASE /"Filename" command

3. improved cataloging (CAT command)

4. RESTORE /"New disk name" command

5. MERGE /"Name" command Along with these, there is a well-coordinated version of the MSCRIPT word processor available to use with SAFE DOS, and it is now possible to operate two disk drive operating systems at will, without changing disks! (i.e., OLIGER and LARKEN)

The fast FOR--NEXT loop utility provides a con- stant speed whenever it is used in a program, giving 9 to 50 times faster operation. Only one such loop is

permitted, but it may be mixed with regular BASIC loops. It is simple to implement. The variable must be assigned at the beginning of a program, such as: S LET /k=1 200 FOR /1 TO 100 255 NEXT The ERASE /"Filename” command permits erasing

any disk file, which is great for cleaning up a disk. All consecutive files following the erased file are moved up and the catalog is corrected without blank lines.

The new CAT extended command produces an improved screen display with an added column which shows the starting address for code and data files.

The extended command FORMAT /"name" has been in use from the beginning, as it is always necessary to give the disk a name (even if the name is only " ").

26

RESTORE /"New disk name" command. This is handy for formatting disks in advance. With the new MERGE /"name" command, Oliger makes

it possible to append a program to an existing program, without seriously polluting the current program!

Printing a hard copy of the disk catalog is a snap. In the immediate mode, type: LET /P=0 and OPEN #2,"p". Now type CAT, and the display is shunted to the printer in place of the screen.

The OLIGER SAFE disk system and hardware has the unique ability to be compatible with the LARKEN DOS (Disk Operating System), which is supplied in cart- ridge form, and is available from LARKEN (and RMG Enterprises). Now the user can operate both systems interchangeably at will (with the LARKEN disk in

drive 0O and the OLIGER disk in drive 2.1 OT example). The extended commands can be sent to either disk, and even some OLIGER commands can be used in LARKEN programs, such as the fast FOR--NEXT loop routine. As I prefer using the OLIGER DOS, I can purchase programs available only for the LARKEN DOS, make the appropriate program changes, and save a version on the OLIGER.

My personal favorite (and much used) disk oper- ation is in conjunction with MSCRIPT version 5.3. I make a MSCRIPT utility save on each disk I use with this program. A special FILE 0 program is used with LOAD to display the catalog with a moveable cursor. Select MSCRIPT, press ENTER and there it is. Issue the CAT command in the MSCRIPT menu and the catalog is displayed. Select a program to LOAD into MSCRIPT as text, and there is the complete text, including a list of printer commands used with that particular text. A quick delete of the text leaves the printer codes to use as reference.

For convenience, I also have the printer codes the OUT 127,n direct port approach for this type of (S2 possible) stored on the same disk as text. It can programming. I prefer to use the LPRINT method be loaded at any time, referred to, codes added to commonly used in many computer programs. The LET /P=0

the deleted. The alternative is a printed listt.

Many large printers provide graphic capabilities every print pixel is defined. John Oliger uses

where

list already in the reference lines, and then be

command will not properly send printer codes greater than 127. The word from John, is to make 2 pokes: 23300,60 and 23301,3 to overcome this problem, so that LPRINT CHR$ n will work properly.

ROTRONICS WAFADRIVE

The following utility program was TIME DESIGNS by Dave Maccarone, distributor of the Rotronics Wafadrive.

supplied to a former authorized Rotronics is not longer in business. It should be noted that the following "Tape Transfer Utility" is for the Spectrum computer or the Spectrum-Emulated Timex Sinclair 2068.

When transferring software from cassette to wafer, some kind of transfer utility program is virtually indispensable. The program given here is written largely in BASIC and sets up its own machine code subroutines. The three facilities provided by the program are:

1. READ HEADER: Essential for analysing the attributes of files on cassette. Displays the auto- run line number of BASIC programs, location and length of code files. It works by reading the program header which preceeds the file on tape. Beware of false headers!

2, RECLAIM RAM: This option effectively de- initializes the Wafaderive Operating System and reclaims all RAM used. The BASIC program is pre- served.

3. STOP: This can be used to load a BASIC program such that it is prevented from auto-running once loaded. It will thus cope with "anti-merge" programs. The auto-run line number is displayed on

screen with the program name. The utility program itself is overwritten.

The machine code subroutines used by the program are all relocateable and can be lifted for use in your own programs. Memory saving techniques have been

used in the BASIC to assist when working in "con- fined spaces". The program can be further reduced in size if required by splitting it into three parts

and/or by loading the machine code straight into printer buffer as a separate file.

the

TAPE TRANSFER UTILITY

10 PAPER VAL “5”: INK NOT PIs BORDER VAL “5S”: GO SUB VAL “1le3” 20 CLS =: PRINT “Enter number:”’7?? 30 PRINT “” 1 READ HEADER”?” - loads header from cassette

% displays file attributes.”

40 PRINT ’”’” 2 RECLAIM RAM“?” - de-initialises WOS &

reclaims RAM.”

SO PRINT **" 3 St0Gr-** - loads BASIC program from casse tte, preventing auto- rune”

60 LET a$=INKEY$: 70 CLS : GO TO VAL 100 REM HEADER READ 110 PRINT *” HEADER READ ”’’“Play tape...”: 3320”5 CLS & LET a®VAL “23296” 120 LET t=PEEK as: LET a=a+SGN PI 130 PRINT “TYPE:”,”“Program” AND (NOT t)3“Number array” AND (t#S 3N PI) 3”String array”. AND (t#VAL “2”)3"Bytes” AND (t=INT PI) 140 PRINT ’°”NAME:”,: FOR n=SGN PI TO VAL “10”: PRINT CHR$ (PEEK a)3s LET aza+SGN PI: NEXT n 150 PRINT °’”“LENGTH:”,PEEK a+VAL +9 160 LET b=*PEEK a+VAL TO-RUNS”,s IF BCVAL “1e4” THEN PRINT b 170 IF t#INT PI THEN PRINT ’”START:”,b 180 PRINT £NOT PI;3”Press a kay to return to menu”: PAUSE NOT PI : GO TO VAL “20” 200 REM RECLAIM 210 PRINT ~” RECLAIM RAM 220 GO SUB VAL “2e3”: CLEAR #5 VAL “20” 300 REM STOP 310 PRINT ~ STOP “”***WARNING! ted.”s GO SUB VAL “2e3” 320 PRINT “The number shown on screen is the line from which the program would normally auto-run.”’’”Play tape...”’’"sUSR VAL "25369": STOP 1000 RESTORE i020 DASH. fal» Soy O 5 Ve 9 aan. » #ae pit iP ee , W178" 5 a” ¢ 205°» G6" ,°5S", "221" 5" 229", "48", "242" “SSt*, “201I* L020 DATA “219%,°12”,"205" ,"46",°%10" , "205", "159", "0". "42", "99" 4” Fag SO" gp AOL 5 22s Say 148” 4 “OZ” "54" 4" 104" 4°92", "SS" 182" ,” Tag & ¢ 28% «9 ©» 199 5 eee 5 20. DSO: DATA ag SS” 5 Og "247", S2AS" 9 Zeke eee 5 22k» Se", "1", "2 oy aad 9 Oe» 10 5 128" » "62", "1" "SO", "126" 5. Fa", 20S" 5" SS" "7 "9 2.4 Bow ¢ 30" 68" 9°92” 237" 9°75" "66.5 “Fa” 5 “208 , "27" "26" » 207" , “285” 1040 FOR a=VAL EXT as RETURN 2000 REM CONTINUE? 2010 PRINT °’”Press Y to proceed or any other key to return to m enu” 2020 PAUSE NOT PI: »CODE “y” THEN RUN 2030 CLS = RETURN

IF a$¢<"1”" OR a#>”“3”% THEN GO TO 60 “LOO” #VAL af

RANDOMIZE USR VAL “2

“2S6*#PEEK (at1)"3 LET a=a+VAL

“256"PEEK (at+1)”s IF NOT t THEN PRINT ’“AU

RANDOMIZE USR VAL “23340”: GO TO

- this program is lost when selec

“23320” TO VAL “23405”: READ a¥: POKE a,VAL af: N

LET a=PEEK VAL “23560”: IF a<>CODE “Y” AND aX

KAKA AAAS

Pee ee ai

Oo F

Bee ee ma OWN TH

MERE A RRA AERA K KAKA RR AAA RARER A ERATE ERR EERER RE KKEE EES

The GIVENS of this puzzle are:

CEDRIC R. BASTIAANS

A. There are S children, all more than 1 year old and younger than 25. B. Their combined ages total 40.

C. The product’ of the boys’ ages is 39 times the product of the girls’

ages.

D. Next year, the product of the boys’ ages is an even number of times the

product of the girls’ ages.

CAN YOU COME UP WITH A PROGRAM FOR OUR COMPUTERS TO FIGURE OUT THE AGES OF THE

FIVE CHILDREN???

send real money. Thanks to

not

Mlease do

This is NOT a real ad.

William Scott

Notes:

his humerous little ditty from Australia.

OF caaktranutcing ¢t

ot oe

+

Exclusive advance “purchase!

SINCLAIR 2X83

We've done it again! Be the first in your street to own Sinclair’s new baby, the incredible Z X89! Just look at these features:

* Powerful, Cray 1 compatible processor on one chip!

* 14 Megabytes of RAM on one chip!!

° Advanced touch-sensitive multifunction keyboard each key has 27 functions!!!

* Twin 10 Mbyte winchester disks new, ultra-mini design exclusive to ZX89!!!!

°* Plugs into your own TV, run: ‘ora year on two micro batteries

All this for just $35.00 inc sales tax, post, packing, all connecting cables, and all the software you can get into your house! (Send cash only no cheques, credit cards, POs, Lan Choo Labels, etc accepted. Strictly mail order only.)

Wlicrobee Pacemaker

That's right! Now you can control your own heartbeat with this powerful software package. All connectors pilus scaipel blades supplied install it yourself with our easy-to-follow instructions. Lifetime quarantee. Supplied on cassette for

just $15.95 inc p&p (no refunds). Ask about our very own

life insurance scheme exclusive to Microbee Pacemaker owners!

Games software

Dam: Build your own Franklin below Gordon obstruction, tend off the Greeny attackers by puncturing thei rubber dinghy. With full colour, sound, fast-moving graphics. $20.00

' invading Orphan attack: Defend the food-laden table from inva hordes of hungry orphans. Can you eat it all before they do? $16.00

hiker appears in the gloom. Can you run him over before he jumps clear? $520.00

The Stones of HI’Fydgra: Ultimate Adventure’ type game, lasts for weeks, no-body has yet Managed to win will you be the first? Explore the caverns of Ygnbs, the Magician of Ggon; fight Typo the mystic Gzknw and his followers, the Pfinds of Tzdi. Find the Treasure of Pjjjj and you've won! $2.00 inc free dictionary.

Hitch-hiker: You're driving along a dark road. Suddeniy a hitch- | |

Zap the Zits: Can you stop those pesky zits from spreading? The faster you zap them, the faster they come back! Find the secret ‘Clearasil’ button to win. Full sound and colour. $45.00

WILD BILLSCOMPUTER

RODEO

PO BOX 835539A SYDNEY (02) 747 6311

Buy yours NOW!

DON’T WAIT TILL NEXT MONTH FOR THE VZ200

Beat the delay buy your VZ200 Dick Smith color computer

now from us orer the counter! How do we do it? Simple! As soon as we heard of the VZ we bribed security guards at the Hong Kong factory to shoot machines out the side door}!

Standard Machine $853.02

Prices exclude post, packing, sales tax, case, bribe, keyboard, ma.ucl and connecting cables.

UNUSX

Now you can have the power of this incredible Unix-like Operating system on your ZX811 Just like Unix but “pruned’”’ to fit into basic Ik ‘81!

Don’t be !eft out when your neighbours switch to Unix! Just $23,427.63 (on cassette only).

Business software

MoralStar: New addition to your word processing suite. Auto- matically searches your text for dirty words, expletives, double- entendres, etc, and replaces them with ‘clean’ text which even F Nile would approve. A ‘must’ for TV scriptwriters!

$750.00

TLO Toolkit: Trying to get to grips with The Last One? Our TLO Toolkit makes the job a cinch, gets TLO working, produces exactly the code you want. Definitely the jast program you'll need to

buy (revised version coming in September). $540.00

V1IC-370: Give your VIC 20 the power of an 1BM 370 with this

super conversion program! You too can have mainframe computing | power at your fingertips in the comfort and privacy of your own home. Requires 1.432 16k RAM packs. On cassette only $37.50

processing system. Scans your text and inserts dirty words, exple- tives, double-entendres, etc, in place of ‘clean’ words. A ‘must’

innuengo: Not a game but an indispensable addition to your word l for TV scriptwriters! $23.95 , |

é ‘Bumper’ Bundle: All your favourite packages On one disk! Word- star, The Last One, dBase I!, Visicaic, Unix, MBasic and seven versions of Pascal, all available for the first time on a single disk! $9.20 (discounts for bulk orders and educational institutions). {Manuals not available at time of going to press.)

The Editor: Incredible new ‘artificial intelligence’ Program replaces Magazine editors with a computer. You too can produce your very Own micro Magazine in the comfort and privacy of your own home} As used by J Pierce, L Belle and several others. $2500.19.

SSS TPT F se S FFs cote s ees sects esses sesteccsesesesse sees sss ese Sess ese ST est thes ti THE SOLUTION OF THE FUZZLE OF THE MONTH WIPE SL TITS TLS PSPS SESS S SSeS ese sessesesececesss esses sess esses eee eee eae sss eset S|

First, we'll give the children some simple names, very simple like Ay - OB, €,5 O and e.

Then, we will assume that there are 3 girls and 2 boys. Maybe it’s the other way around, but we’ll see.

Furthermore, the number 39 can only be composed of 1x39 or 3x13. What this means

is that one of the boys simply HAS to be 13 years old, while another boy’s age HAS to be divisible by 3. We may thus write:

a=13 and b=St, where t=1,2,3....8 (maximum 8, because no one can be older than 24).

The girls being called c,d and e, we may write (algebraically):

S9cde = 13(3t) or cde =t

Also:

ctdteti13+(3t) = 40 or COGtGi % 27 SE i Sin b oo 600 tees (2) Since c,d and e are older than or as old as 2 years, we can write:

COG 2 Bains 04 eh Een OEE SAG Wid ou O 0 1S S KAS ewe bake (3) MO CO EB a a oes ip a he ee hoes CELA BK RE ERA (4) From equations (1) and (3) follows that:

Se -4 ak 6a ia ios ae ee KG a We ba Re We A % hk (3S) On the other hand, from (2) and (4) we find:

t <= 7

CP CRED Cee eBes enc eees cach coeaweseseresbee sie owed bic (4)

‘Equations (5) and (4) contradict and the truth is therefore that we have THREE boys and only TWO girls!

The situation for the 3 boys a, b and c and the 2 girls d and e is therefore a trifle different:

CEDRIC R. BASTIAANS

We may thusly write the following program:

10 LET A=13

20 FOR T=2 TO 7

SO LET B=38T

40 REM EQUATION (8): LET SUM=T%(27-2%T)

SO FOR D=2 TO 24

60 FOR E=D TO 24

70 REM EQUATION (7): LET C=DKE/T

80 IF C=INT(C) AND (D+T)*(E+T)=SUM THEN GOSUB 1000

90 NEXT E

100 NEXT D

110 NEXT T

120 STOP

1000 REM NEXT YEAR AND SOLUTION

1010 LET X=(A+1)%(B+1)*(C+1)

1020 LET Y=(D+1) 4%(E+1)

1030 IF X/Y=INT(X/Y) THEN PRINT “THE BOYS ARE "sA;"“, “sBs " AND";C;" YEARS, THE GIRLS ARE "3D3" AND “sE;"."

1040 RETURN

S9de = 13(3t)c or de=tc or ie: aa ee (7)

while, however, equation (2) still holds true!

Substituting for c in (2) yields: With this program keyed into my TS2068, it displayed the solution in 11 seconds Stt+tde/tt+td+e = 27 BOYS 13, 9 and 8; GIRLS 4 and 4.

or 3t*+detdt+et = 27t or t#tdetdttet = 27t-2t2 Or. thee) rt) we Sa ck Sok Siac a oa ec Sec ee (8)

A Letter From Fred Nachbaur

(concerning the PC8300

Dear Tim,

"Timex Clone")

[I read with interest Bruce C. Taylor’s article on the PC8300, since I have been quite deeply involved with this machine. I would like toa clarify some of the points brought up by Mr. Taylor.

The S0/60 Hz. signal diode serves exactly the same function ‘as pin 22 of the 2xX81/TS1000 ULA. The video frame rate has nothing’to do

with the power-line frequency; instead,

it is determined by the

that unique blend of hardware and software that constitutes the 2X display system. In the PC8300, the 50/60 Hz. diode goes to an input port. Each time through the display loop, the software checks whether this port is high or low, adjusting the MARGIN

system variable accordingly.

It should be noted that the machine

matter) runs about S0% faster, averall,

the 2x81, for that

in SLOW mode, if it is in

the SO Hz. mode. This is because the system has more time between

frames to work on your program. My ROM

improvement (€more about

that later) allows MARGIN to be changed by the user, and always defaults on power-up at 60 Hz. regardless of whether the diode is

connected or not.

29

There is most certainly a clock component on the FPC8&300 board. It is exactly the same as on a ZX81, a 6.5 mHz. ceramic element just to the left of the ULA, in front of the madulator. This behaves electrically just like a crystals; the only significant difference is that the frequency stability and precision is less than that of a crystal. For most jobs, however, the variance is negligible.

There is also most certainly a Z80A on the board. This is the large chip in the centre. Mr. Taylor may have been confused by the fact that some manufacturers of the 280A give it their own part number. The designation 780C is particularly common. There is absolutely no difference between such chips and 280A’s marked as such.

Regarding place of origin, it does say "Made in Hong Kong." However, the manual is written in the Chinese dialect of the mainland. Draw your own conclusions.

There is nothing strange about the fact that the 1 REM location is ??3 bytes higher on the PCS300, than it is on the 2X81 family. There is also nothing mystical about memory allocation. The only difference is the location af the display file. On the 2X81, it rides above the BASIC program. It therefore moves about as BASIC lines are added and deleted. On the PC8300, however, the display file is always at a fixed location BELOW the program area. What do you get when you multiply 24 lines by 33 bytes per line and add 1 for end-of-file marker? That’s right, 73.

The PCS300 will successfully load 2X&1 programs that are entirely in BASIC. It does this by looking at the VERS variable, adjusting how it perceives the incoming data as required. However, because of the way the display file location was modified, it will NOT load any BASIC variables associated with the Sinclair program. Sa if your program is, for instance, a mailing-list, you can load the program but mat your data.

Worse, the different location of the first program Jine means that machine-code wan’t run unless it was written to be position- independent, and you adjust al? USR calls accordingly. Even worse, no ROM calls are allowed since the ROM routines were campletely scrambled, presumably to help prevent copyright hassles. For all practical purposes, one can coansider that it is completely incompatible with 2X81 machine-code.

There are also some relatively minor, though potentially troublesome changes in the system variables. You have to be aware of these if you intend to write machine-code for this computer.

It is not possible to use a straight Timex or Sinclair ROM with the PCS300. Rather, it isn’t practical. The reason is that the hardware of the display system is sufficiently different to cause the display toa be "wonky," far lack of a better word.

I have developed a Timex-compatible ROM which runs all Known low- res Timex programs, including machine-caode. The only pregrams that won’t run, are high-res programs and SOME "banner" programs.

The other hardware-dependent factor is the character set. These are NOT housed in the top Siz2 bytes of the ROM, as on the

30

Sinclair. Rather, they are cantained within the custom chip, and are the reason that high-res won’t work no matter what we do. There is mo point, even, in trreing to revector the I register; actually a blessing, since it is now available to the programmer. For instance, IM2 Cinterrupt mode 2) is theoretically usable with this machine. On the down side, some of the Sinclair punctuation ¢€: 2? and the pound sign? still remain game characters, and the grey graphics are right triangles and a "race car"

Otherwise, the PCS300 behaves just like a TS1000 with the new ROM. Even the keywords were reverted to their original Key locations. Keywords are, of course, entered with a single Key-stroke.

To make up for the few remaining shortcomings of my _ Timex- compatible ROM, it sports a few added features, same of which are not available either on the 2X81 or the stock PC8300. A new BEEP Keyword turns beeping Keys on or off. The REM command is now used to turn the blinking cursor on or off, in addition to its use as a REMark statement. A BASIC single-stepper ("debugger") is included.

The machine can be set to make an audible noise when Jloading or saving a program.

Hardware-wise, there is nothing "different" about the electrical characteristics of the edge-connector lines. The problem is’ that some of them are missing. That’s right, the edge traces go absolutely nowhere. Most of these (WAIT*®, BUSRQ*, BUSAK*, HALT, NMI*#, etc.> are nat commonly used by external peripherals. At least one, however, is relatively vital; this is Mix. If this line is brought out, the FC&S0G will work with Timex/Sinclair-—- compatible 64K RAMpacks. Incidentally, na modification is needed to run machine-code in the 32-48K regian. In this respect, it is like the TS1500.

Even without the Mix® or other lines connected, the ‘8300 works with most ordinary Timex peripherals, such as the 2050 modem, 16K RAM, 2040 printer, many “big-printer" interfaces, and so an. One notable exception would be the Oliger Video Upgrade, again because the ROM does not contain the character patterns. Other devices that would not work include anything with an EPROM that overlays the ROM Ce.g. the Memotech parallel interface> , or cantains ROM calls €e.g. the A&J Stringy-Floppy>.

In my Cadmittedly biased) oapinion, the PCes00 is virtually useless, unless its ROM is changed to make its claim of "Timex compatibility" at least 0% justifiable.

Regards, Fred Nachbaur

d JP IDA TET

WORLD?S SVIMPLEST VOLT-METER

THIS LITTLE CIRCUIT DETECTS ANY ¥OLTAGE FROM 2 TO 12s VOLTS, A.C. OR B.C.

RED LED - DC, Probe positive GRN LED - BC, Probe negative BOTH LEDS - alternating

INPUT: | my a6? lanp indicates higher | Aca pe | Le oi Se indi i or EU: NAIF A AV, voltages, starting about 15 (oad ALL : LAH Wi volts, RC. OF B.C ee 967 Lap way be ordered = 5 LED’s through any electronic

Supporting the Sinclair QL, 288, and TS-2068 RAR Fo St PS len drawn by: Subscription $15.00 Year. UPDATE Magazine,

supply house or catalog

Build inte pen or = 1317 Stratford Ave., Panama Cit FL 32404 Swall plastic ell Yr

Re Oe ee ete eee ee ee he

BEYOND THE FS i900 t242AaA8TY FS Foc:

Le TYPE Cat

Pt t,

LISoerF FIGMUAEL

AE Flos T tard 3

by Earl V. Dunnington Now thanks to Earl, we have a sum-checker program for

the 7S81000/TS1500/ZxX81, Just

The Machine Code is not relocatable and the program requires a minimum of 14K RAM. Those readers who wish to use the CKTYPE listings should LOAD the final BASIC version before proceeding.

Listing K is the final decimal machine code data, after deleting the unused portion of the Run Time Package. Included in the code is a routine to load a program fram tape, defeating the autorun. This is necessary as some programs may contain machine code that would be loaded into the area where the code for CKTYPE 1000 will reside, if they were allowed to autorun. The loading routine will not work if you Play the tape before the end of any program Proceeding the one you wish to load.

Listing L is a program that will convert the machine code data into the corresponding character (CHR) and enter it into the dimensioned string At. This program will also produce a printout in the same format as Listing K,; so that you can check the data. To correct an error, use the direct command:

LET AS(n)=CHRS c

where n= the string character number and c= the correct decimal code. WARNING: FROM THIS POINT ON, DO NOT USE CLEAR, DIM A$, NEW, OR RUN. These commands wolld erase As.

Listing M is the CKTYPE printout for the program of Listing L.

After entering and checking all of the M/C data, program lines are to be deleted or added so that the program will now appear as in Listing N. After POKEing some additional machine code into the REM statement using the direct command GOTO 2 and deleting lines 2 to 6, this becomes the final CKTYPE 1000 M/C program. To SAVE the program on tape, use the direct command: GOTO 20.

Listing @ 15 the CKTYPE for Listing N before using the command GOTO 2.

When LOADed, the program will: Set RAMTOP to 32085 POKE the machine code stored in At into the addresses above RAMTOP starting with 32084 Clean the memory below RAMTOP in 32

like the one introduced for the TS2068 in TDM, May/June

Stan Lemke '88.

preparation for either typing in a program aor LOADing a program from tape for which a CKTYPE listing is desired

Instructions for operating the programs will be displayed on the screen. Anyone needing more detailed instructions, send an S.A.5.E. to me at 4356 King Theodore Dr. Boynton Bch., FL 33436. Comments on this series af articles are also solicited.

LISTING kK

AS (1) wo a2eo 64 32~ “116 “i2t¢ AST) 3S 15 64 265 252 127 AS(13) 235 33 @ 1 205 1/3 A(19) teOs 82S: 33=- 12 64° -285 H$(25) Que i2/ £05 g25 25. 34 AS(S1) LtG i226 42-176 126 Sa AS (ST) 128. ten. So i 8 oa AS (435) tee” 125 SS * @ a om H#(49) iat 426 33>, 0 e oa HE(S5) 126 i265 d2 120 126 205 AS(61) eve 127 235% 35: 2 BS AHS(67) 205 173,326 £22398 17 i AS (7S) 8 42 #120 126 25 205 As (TS) 252 L2@7~235 225 25. 3a AS (S5i) tee ietb if 2 a d= As (91) 120 126 25 S34 120 126 AS(97) « ae 3 a d= i120 126 AStLOS) -25 “205 252 127 235 3s HS(109) © 4 205 1/73 126 e223 A$(115) 42 128 126 205 252 127 AS(1l213 235 e25 25 Sd 124 126 HStie7) if -e 8 42 120 1265 AG(133S) 25 34 120 126 33 1 AS11359) 8 34 128 126 33 1 AHE(145) 8 34 1230 1265 42 124 HSLi52) 1265.34 i132 126.33. .2 H$(157) @ 34 154 126 33 252 A$(165) 125 34 156 126 237 gl AS(i69S) jizs i268 42 125 126 25 ASti“‘s) sy =F @ 25 e225 42 H$(1iS1) i28 i226 205 252 i277 235 AS(167) 225 25 3d 126 126 42 HE(2L9S) 26.126 205 10 ila? 34 HSt(Ie0) ieo i26 ir i @ 42 A$(205) 120 126 25 34 i12e@ 126 AS(211) 205 201 i227 150 1265 253 AS(217) 265 1 #06 42 jee 126 H$l(223)} 265 44 127 33S 6 a H$(229) 205 1635 is? 205 106 le? AE(255) id 6 ilj2 42 ged 126 HEl(241) 205 44 #127 SS 1s 8 AGi2d7) 205 1635 lea? 205-108 ie? AS(255) 14 8 ile 42: 126° i256 ASiL259F" 2OS“44 if/ Ge. 115.215 AS26565) 255 2653 1 id2 237 31 Agade71I© 115 125 42 “128 i265 205 HEte 77) e2d- ler 205 146 127 Ted AS (2635) 425 265 246 Is? 8 o AS(259i 2 a & 8 a RS(295) 8 & o a S & H$(GA1) 8 @ @ a a & HS(se7) 8 o 205 231 265 MEiSis) Bali 2/7 295.57 -.6 201 AE(G19) 1 gi @ ae Dar ee AS(S25) 17 S 16 ied 7 Ss AS(SS1) 8 8 41 203 1d? ‘23 AS(SG7)I 45 1 25.16 -2d7 195 AP(SIS) 21 id 4 d24 170 238 AS(S49) 123 71 215 205 6 Le? AF(GSS) eer 205 O 12? 235. 225 MSE CSE62Z7 321 i67 40 34° te20"i77 AS(3S67) e229 237 898 e237 62 e225 AS(3S73) 193 2069 3s. 8 e ka] H$(379) 63— 245.122 63 38 ¢& H$(SSG5) 41 45 #5 143 e257 “a4 HS(G91) 2 =) 135 e237 ‘74 S56 AS(SO7) S 23/7 66° 61°86 e393 AS(4035) G2 25365 95 e241 465 226 AGS(4069) 205 79 j%Se 1 235 263

A$(415) 127 200 24 11 205 154 2Q4 LPRINT TAR AS(d21) 126 293 16 208 24 3 B 8:CODE Asin) ; AS (427) sd F 208 235 i167 237 1};TAB 16; A$(433) 98 237 82 261 124 161 DE As IN43)5, TRE A$(d59) 35 68 8 192 d4 201 AB 23; cCOLE Ag (N45) AS (445) 1 3 126 24. 4 225 2a5 NEXT Hi AS(d51) 1 > i265 led 166 195 206 PRINT AT &.@: AS(457) 122 168 87 |S? B82 36 ERRONEOUS VALUE,’ A$(d65) 8 d2i° 142 S15 2539-1 T COMMANL:- A$(469) 111 201 58 33 64 203 % DATA AS(475) 71 32 26 203 79 32 HARACTER NUMBER IN Ag(481) 10 203 124 40 6 62 Do DATA IS THE corR- AS(487) 22 215 205 3 127 1 210 sToOP AS(495) 240 215 30 255 197 205 A$(499) 225 7 205 173 10 229 AS(505) 193 33 93 64 87 30 aie ise AS(511) 2B 112 283 122 40 1 LISTING # A$(517) 113 151 237 111 131 215 e : AS(523) 151 257 111 131 215 203 = A¥(529) 122 203 250 40 239 201 =i@ s4 A$¥(535) 225 126 35 254 112 40 et 21 A$(541) 47 254 118 32 3 #4215 eat a AS(547) 24 2243 205 146 126 24 aoe 2 AS(S553) 233 151 24 2 62 i144 eve Sos AS(559) 75 69 33 48 64 865 2oi iié¢ AS(555) 119 213 229 205 178 11 al a2 AS(S71) 225 285 114 201 205 16 cea 463 AS(S77) 127 124 161 227 94 35 aa aoe AS(583) 86 35 e227 192 225 ass aaa > A$(589) 233 125 2350 31 79 253 eg isi A$(595) 203 1 78 40 10 253 =2e = A$(601) 1509 56 283 255 198 60 AS(607) 212 113 8 253 1354 57 A$(513) 254 35 58 58 64 222 A$(619) 1 285 258 8 253 202 LISTING @ A$(625) 1 198 281 225 94 35 A$(631) 86 35 229 213 353 7 1 6 AS(637) @ 25 6 4 86 43 2 21 A$(643) 94 43 213 16 249 225 3 22 A$(649) 195 289 122 25 235 225 4 22 AS(655) 227 115 35 114 197 225 5 23 A$(661) 7 45 1 £2355 205 18 6 23 AS(667) 127 225 216 193 253 ass 19 2 AS(673) 115 281 193 229 193 201 20 10 AS(679)} 118 38 @ 281 3a 2. “a if ond 5a 23 LISTING L 6a 22 7a 21 20 DIM AS(5e2) 3a 21 170 PRINT “WORKING FROM LEFT To 90 23 RIGHT, ENTER A DATA VALUE" 188 22 180 FOR N=1 TO 682 118 23 185 INPUT DATA 120 14 199 LET AS(N} =CHRS DATA 138 18 2080 NEXT N 148 198 281 PRINT AT 8.8; "TO OBTAIN A P 158 146 RINTOUT OF Ag, TURN ON PRINT 160 a1 ER AND PRESS A LET-TER KEY OTHER i7a is WISE PRESS BREAR' 180 ei 202 PAUSE 32768 1928 22 283 FOR N=1 TO 682 STEP 6 200 3 210 2

THT HTH AT aT aT S Teel aT eT eTay sy ey-

"TO

Pies =e Gees Das ae TAB 12; CODE ease cope Ag (N42) >; TAB. 2O; 2#4;CODE AS I(N4+4) 5;T

THE

aT)

1D 0)

a)

Cee fe C0 Te Be Be Te #* U0 bs Fb OR Po ete ee

HO OD 00

Noe POLI) Re eo

-.J

Be Re ISIE LeE CTT UD bet best fet bee pt fect a face te dd ed) Id ae ee a Bt Oe Bag 00 ne a Oo no oO ee 2 no no ho na oo

$1) PO ee EO Oo 0 OT he fe oe i)

fa be ~J

354

FOR YOUR QL

ARLHIVE SECRETS

by Real Gagnon

ARCHIVE is a powerful database program but there are some little known secrets that can make life easier to every programmer.

ARCHIVE version

2.00 introduced a whole new control characters

set which are undocummented in the ARCHIVE reference manual.

These characters adds more options to the ARCHIVE PRINT command. A complete list can be found in the ARCHIVE RUN-TIME manual only avallable from PSION or maybe from a few QL dealer.

We learn that some characters with ASCII code inferior to 32 get special attention from the ARCHIVE screen driver.

Some of these characters have their equivalent in ARCHIVE

language, for exemple, take CHR(1), it can be used

to set the

INK color, the form is CHR(1)+CHR(n) where n is the color number (same number as in SUFERBASIC).

PRINT "This a"+CHR(1)+CHR(2)+"test" is equivalent to PRINT “This a “gink 2s"“test" .

But some of these codes

CORRECT AN USE.THE DIREC LET A$ (NN) =CHR WHERE N=THE C STRING RECT VALUE"

: TA

co

AN

POKE

Secu Cie eeieiic

LISTING WN

REM lesd

POKE 165198,8@ POKE 16514,49 POKE 16515,.81 POKE 16515,125 POKE 16517,2@1 RETURN

SAVE “CKTYPE"

FRST POKE 16358,85 POKE 16359,125 POKE 32854,62 PORE 32883 POKE 32852,65 POKE 32851,1186 POKE 16355,831 16357,125 RAND USR 16514 GOSUB 12 PRINT AT @,9;"

=¥* 7 Re:

LeGS

“;AT 2,0; “1. RANTOP HAS SEEN SET AT 32 1885"; AT 4,0;"2. PRESS A LE TTER KEY TO HOVE M/C ABOVE RAN

TOP AFTER NAKING A NOTE OF THE F OLLOWING"

150 PRINT AT 8,90;

us Js

WHEN CURSO

R APPEARS, EITHER TYPE IN A PRO GRAM OR LOAD A FRO-GRAM FROW TAP F USING THE CIRECT COMMAND: RAND USR G2so4"

1650 PRINT AT 13,0;"4¢4. TO LPRINT A CKTYPE LISTING, USE THE DIRE CT COMMAND: RAND USRS2086"

170 PAUSE 3275s

180 FOR N=1 TO 6é82

196 PORE N+32855,CODE Agini

2<@0 NEXT WN

210 NEW

os nl te ese 3c

some of them.

CHR (4) +CHR (c) +CHR (rr)

CHR (3)

CHR (4) CHR (8)

CHR (9) +CHR (c)

CHR (10) CHR (11)

have a more unique effect, let’s see

is very useful, CHR(c) will be repeated "r" times.

If we have PRINT CHR(4)+"xk"+chr (80), the character "xX" will be displayed 80 times on the screen.

is an PRINT

underline switch. Try this: CHR (5) +"SINCLAIR"+CHR(5)+" QL"

moves moves,

the cursor to the right the cursor to the left

Same as SUPERBASIC PRINT TO c, where c is the column number.

moves the cursor down moves the cursor up

BHR ALA) erases the screen like CLS. These graphic characters are similar to those found on IBM

GRAPHICS compatible printer. Run the following program to print CHR (14) then you see the cursor flashing a reference sheet for the 11 new characters with the = corresponding ARCHIVE codes. Your printer must be set for the CHR (15) then you don’t see the cursor flashing IBM GRAPHICS character set #2, but anyway if your printer do not CHR (18) +CHR (n) is the equivalent to the SUFERBASIC OVER eee eS te ae Se A command. n=O then PRINT with INK on current FAFER n=1 then FRINT with INK with TRANSPARENT paper, it’s overprinting. SuperBasic program to print a n=2 then PRINT with INK but XOR the data re hei on the screen. 5 1 REMark by Real Gagnon Montreal May 1988 CHR (20) +CHR (a) +CHR (b) creates a WINDOW. >. +CHR (c) +CHR (d) The coordinates are in "characters". 10 OPEN #4,ser1 "a" is the left margin from the left 2 s side of the screen. 30 PRINT #4,°.ARCHIVE graphic characters (SEDIT) “bY is the top margin from the top of 35 PRINT #4,° function key FS then one of the following keys:’ the screen. 37 PRINT #4, CHR$(27)3°A73CHR$(18) : REMark set line spacing (opt.) “c" is the right margin from the left 40 FRINT #4,°KEY *,° CHARACTER’,” ARCHIVE code’ side of the screen. 45 RESTORE "d" is the bottom margin from the top 47 + of the screen. 50 REFeat loop 60 READ sed,ibm,ql$ An exemple will help to understand the 70 PRINT#H4, CHR$(sed),,CHR$(ibm),,q1$ ARCHIVE WINDOW creation. 80 IF sed=107:EXIT loop 90 END REPeat loop PRINT CHR(20)+CHR (10) +CHR (15) +CHR (20) + 95 : CHR (30) | 100 DATA 97,179,° 224" sREMark a 110 DATA 98,180,7225° :REMark b will create the following WINDOW. 120 DATA 99,191,7226* sREMark c 130 DATA 100,192,°227*:REMark d TOP 140 DATA 101,193,°228*:REMark e oe ; ee ee 150 DATA 102,194,’ 229° :REMark f 7 = 160 DATA 102,195,* 230? sREMark gq : i bels 170 DATA 104,194,° 231° :REMark h ine Sek den ati 3 180 DATA 105,197,* 232*:REMark i Pee ks Sn sees . 190 DATA 106,217, 7235" :REMark j Rae a ee ra) a ' 1 ry a 79 TAF OM LEFT } aia «SENN ees ST OHO tRIGHT eee eee c=20 Archive screen}! ie »ARCHIVE GRAPHIC CHARACTERS (SEDIT) There is only one active WINDOW at FUNCTION KEY F5 THEN ONE OF THE FOLLOWING KEYS: one time. The initial ARCHIVE WINDOW is defined KEY CHARACTER ARCHIVE CODE with the following parameters: A 224 CHR (20) +CHR (0) +CHR (0) +CHR (80) +CHR (25) 8 225 CHR (21) +CHR (n) scrolls up "n" lines. C 226 CHR (22) +CHR (n) scrolls down "n" lines. CHR (23) +CHR (n) scrolls left "c" columns. D Zeaf CHR (24) +CHR (n) scrolls right "c" columns. E 228 CHR (26) exchanges the PAPER with the INK, it’s F 229 INVERSE printing. 5 230 CHR (27) +CHR (n) is for special CLS. H 231 n=65 , CLS from the cursor position to + 232 the end of line. : n=466 , CLS from the cursor position to J 233 the end of the screen/window. K 234 n=67 , STORE the cursor position. n=68 , RESTORE the cursor position.

CHR (30) puts the cursor at the position 0,0 without erasing the screen.

CHR (31) +CHR (a) +CHR (b) Same as AT ayb . FRINT at line “a", column "b",

ma, WM iuradn,

y

There is more control codes, but these are the most useful ones. he Sve ee

"SST S TOS eee : ; Sat e Ox Seevesse A very useful undocummented feature with the SEDIT command is PORES TS

hidden in ARCHIVE version 2.25. .

When designing a screen, ARCHIVE provides some graphic characters to draw boxes. To use them, in SEDIT, do FS and after press any key between "a" and "k". When drawing a box, you don’t have to press each time FS and the right key because SEDIT gives an easy way to repeat the last typed characters, just keep your finger on SHIFT and press a cursor key.

34

PC-IMPORT

How Does This IBM Translator Software Package From MINNY ELECTRONICS Stack Up??

reviewed by Michael E. Carver

This package bills itself as "a file transfer and BASIC language dialect translater". PC-Import will allow the user, who has access to an IBM Personal Computer (or compatible) equipped with a communication board anda QL, to "download" and translate MicroSoft BASIC programs into SuperBASIC, which will run in- dependently on the QL. After a couple of false starts, I was able to successfully import IBM BASIC programs into my QL.

The first problem was hardware oriented. The manual assumes the user has a ready-made RS-232 cable. As I built my own cable, there were some problems not addressed in the accompanying manual. The QL serial ports only have 5 lines (GND, Txd, RxD, DTR, and CTS). The IBM serial ports have 9 different lines. In order for IBM BIOS to send messages out the serial port, both the DSR and CTS lines must be "true". I had to "tie" the DSR and CTS pins on the IBM together, to achieve communications from the IBM to the QL. This was accomplished by soldering a "jumper" wire between pins 5 and 6 (CTS & DTR) on the IBM cable end.

The other false start was due to an error in the manual. The manual provides step-by-step instructions on preparing MS-DOS to send information out its RS-232 port. To accomplish this, the printer output (LPT1) is directed to the communication output (COM1). The in- structions successfully got me to this point, but the steps to direct a copy of the BASIC program to the

printer output was in error. "COPY A: {file _name} LST1" would not work. This should have read, "COPY A: {file_name} LPT1i". With this minor correction, I

received data from the IBM successfully every time.

Before a BASIC program is transferred to the QL, it must be in ASCII format. The manual provides sufficient instruction on how to insure the BASIC files are in ASCII. As the program is "sent" to the QL, it is written to a file ona user-specified micro- drive. The transfer portion of PC-IMPORT is straight-— forward and quick. The transfer rate is 4800 baud and only takes seconds.

The most important part of the program is the translation of IBM's BASIC into SuperBASIC. As PC—-IMPORT is written entirely in BASIC, the translation is slow. Approximately 2.8 bytes are translated per second. A 4551 byte program took 27 minutes and 16 seconds to translate. The manual claims that up to 90 percent of the translation work can be achieved by PC-IMPORT. I found this figure to be highly overstated. Only a portion of non-compatible MicroSoft BASIC is translated into SuperBASIC (see Table 1). A fair knowledge of BASIC programming, and an ability to follow a BASIC listing to fathom the flow and logic are required to successfully get most imported BASIC programs to run on the QL.

As an acid-test, I took a text-—manipulation program I had written on an IBM at work as an example. The program includes no graphics and simply accepts input from the keyboard. It then breaks up the text into proper spacing for book card labels. Due to major differences between the way the IBM BASIC handles string manipulation and undefined variables, I ran into many problems getting the program to run on the QL. Even though I had written the program, it was hard to follow the logic and correctly make the "“hand- translations" required. One of the major problems was caused by the incomplete PC-IMPORT translation of the MID$ command.

A 2048 byte program (translated in 12:09 minutes) took me about 20 to 25 minutes to re-edit and hand- translate to achieve proper execution. I would not have .been able to achieve this without the constant referral to the MicroSoft BASIC manual. I have had

limited experience in BASIC programming on an IBM. (I would like to take a second to applaud the Sinclair BASICs. They are far easier languages to program, than MicroSoft BASIC.) If you do not have access to a MicroSoft manual, check your local library, you'll probably need it. As SuperBASIC will mark any BASIC line with "MISTAKE", the “hand-translation" job is made easier. The PC-IMPORT manual does provide a small table of BASICA commands with SuperBASIC equivalents, if any.

Most of the programs I imported dealt with graphics, but none of the graphic commands are translated by PC-IMPORT. One thing to keep in mind when translating most BASICs into Sinclair BASIC, is that their graphic screens are upside down (point 0,0 is in the upper-left-hand corner). Many of the IBM graphic commands’ can be imitated by creating procedures with SuperBASIC, to achieve the proper results (see Listing 1).

Some other uses for PC-IMPORT, which aren't mentioned in the manual, include: downloading BASIC ASCII files from bulleting boards and translating them into SuperBASIC. Using QUILL to type in a BASIC listing, printing it to a microdrive file and using PC-IMPORT to translate. The printer drive with QUILL

SHARPS IS THE CARGEST QL SOFTWARE AND HARDWARE

DEALER!

WRITE FOR FREE CATALOG

Sharp’s, Inc. Rt. 10, Box 459

Mechanicsville, VA 23111 (804) 746-1664 or 730-9697

will need to be altered to print a useable file to the Table 1 -- IBM commands translated into Super BASIC microdrive (see Table 2). One may also use a simple

program to enter an IBM listing directly into a INPUT DATA THEN microdrive file (see Listing 2). GOTO GOSUB TAB

I have mixed feelings about PC-IMPORT. It is slow To , ASC and incomplete. PC-IMPORT must be viewed Only as a COLOR SQR SGN programmer's tool. To achieve full usefulness from LOCATE LEFTS MIDS PC-IMPORT, the user must be a fair to accomplished RIGHTS STRINGS ELSE BASIC programmer. If one has access to an IBM (or VAL

any other "on-line" source of MicroSoft BASIC), a lot of typing and raw translating can be avoided. I

Table 2 -- Quill Printer Driver for ASCII BASIC believe that PC-IMPORT could have been a much better program had other IBM BASIC commands been supported (i.e., PSET, INSTR, SPACES, a eae Interger Division, DRIVER NAME *BASIC LOG). Also commands such as MID$ should have been PORT oseri fully translated, or RANDOMIZE should have been BAUD RATE =9600 translated to the British spelling. I only hope that PARITY : NONE Minny Electronics will provide updated versions of LINES/PAGE 2255 this product in the future. CHARACTERS/LINE 2255

This program was obtained for review from: RMG CONTINUOUS FORMS :YES Enterprises, 1419 1/2 7th Street, Oregon City, OR END OF LINE CODE :LF 97045, (503) 655-7484. PREAMBLE CODE : NONE

POSTAMBLE CODE : NONE

LISTING 1 All other options : NONE 19450 REMark ---- MicroSoft BASIC command to draw a box 1452 REMark ---- The two co-ords are adjacent corners of the box NOTE: To send the ASCII BASIC to 1454 REMark ---- followed by ink color -- B = box or BF = Fill microdrive, the above printer 1460 REMark ---- LINE (IxX1,1Y¥1)-(IX2,1Y2),RND¥2+1, BF driver must be installed or be 1462 : . present on the default drive 19464 REMark ---- SuperBASIC translation using PROCEDURE box (usually #1) as "PRINTER_DAT". 1466 box IX1,1Y1,1xX2,1Y2,RND(1 TO 7),1 Select the Print option from 1468 : within Quill and direct output to 1470 REMark ---- LINE (IX1,1Y1)-(IxX2,1Y2),0,B [Device_filename] instead of the 19472 box IX1i,IvY1,1X2,1Y2,0,0: REMark SuperBASIC translation printer. 1474 :

9000 DEFine PROCedure box (x,y,xc,yc,crayon,all) 9005 FILL all: INK crayon

7010 LINE x,y TO xc,y TO xc,yce TO x,yc TO x,y 9015 FILL O

MANDELBROT THE MOST COMPREHENSIVE

RESOURCE FOR THE SINCLAIR - A Fractal World QL. GET YOUR COPY TODAY!!

More and more QL owners are discovering the excellent new book by

| ] >} Mike de Sosa TAKING THE QUANTUM LEAP: The Last Word On \_ ; The Sinclair QL.

: This 280 page book is chock full of useful programs and original by Michael E. Carver programming examples. Chapters on using the bundled software and a

look at the latest hardware and software releases. Written for both the novice and more advanced users. Priced less than most software packages and nearly two pounds of information!!!

As I was developing the mandelbrot program, I $26 (USA). was unable to drive my monitor in Fl mode. I was un- Exclusively available from: aware of the difference between the height of the characters as sent to the Screen. The following TIME DESIGN listings will allow complete viewing of the mini_menu 29772 Hult Road, Colton, Oregon, 97017, USA. Telephone (503) area and the "canvas" while the Madelbrot Sets are 824-2658. being drawn (when the QL is in Fi-Monitor mode). Key-in and run the following Listing. This VISA and MASTERCARD accepted.

contains a short machine code routine to send only 8 For a sample QL and Spectrum magazine, send $3 lines of pixel information for each character (as opposed to 10 in Monitor mode). The program will self-install into the machine and save to MDV1

Insure that your Master Mandelbrot cartridge contains a copy of the newly created code

19 REMark +*# (YINC_code). Insert (or merge) the following listing 29 tihieen cece 2D. VINE aes Sn into the BASIC listing of the Mandelbrot program:

3@ FOR x=8 TO 67 STEP 2

4B READ num: POKE_W (atx), num 19835 CALL yinc

S52 END FOR x 2555 yinc=RESPR(68): LBYTES mdvi_yinc_code,yince: CALL 69 SBYTES mdvi_YINC_code,a,68 yinc

1928 DATA 17914,56,8316,1,1, 28681, 38463, 20935 2995 CALL yinc

1919 DATA 8316,2,2, 28681, 39463, 20035, 28688, 9326 S755 CALL yinc

1228 DATA 48, -16132, 49, -19816, 8319, -22528, 17914, 12 4695 CALL yinc

1238 DATA 28681, 39463, 20935, 28672, 20885, 12668,8, 42 4665 CALL yinc

1948 DATA 28672, 292385

36

=3 ea)

ba)

RA Pee EA Pied Pts Mee Bs |

it Pint nF pel es |

ch Se, |

41

PSEC IC 5 SC IC

Ct Bod Cad bad bod

DEERE eee RRO ROAR RATATAT A ARIA REED ERE E 2222320009 9933333 99559909999 99999 9929983009908R8888

time Uesigns Tesis

QRAMN, Archivist MP, Text8?, & Mailbag

QJump’s QRAM v. 1.16 * * kK * 1/2

Farlier versions of Tony Tebby’s QRAM, tested as part of the Sandy SuperQBoard system, troubled me, but now I realize that this was mainly due to flaws in the system and not in the QRAM software, itself. Then there were the spurious rumors that Tony had designed QRAM to be incompatible with the software of some of his competitors (Super- charge and QLiberator, to name two). What- ever the whole truth, much is now improved. QRAM now seems to work well with SPEED- SCREEN, Trump Card and other disk interfaces and RAM packs, but not with FLASHBACK or TurboQuill+—-two top-notch programs.

QRAM comprises RAM-based utilities for the QL: a full multitasking front end, pap- up menus (within your Psion programs), fast and versatile RAMdisk software, dual- keystroke hotkeys, screen and window dumps, spoolers, a good compatibility with Tebby’s QDOS and SUPERTOOLKIT II and other software, and many other utilities.

QRAM, already very efficient as it comes, offers many opportunities for customization. In its "stock” configuration, it "comes up” in the standard QL dual-screen format. Keying Alt / from the SuperBASIC format or within Psion or other programs presents the initial pop-up menu with six main options (FILES, JOBS, CHANNELS, PRINT, WINDOW DUMP, OPTIONS, and several redundant controls for QUIT, HELP, and moving the menu window. Two methods of selecting options are always available: by means of a pointer control- lable with the cursor or QIMI (QL Internal Mouse Interface) and by keying the first letter of an option. The SPACE bar is usually used to select an action or file, and ENTER to execute a selected command.

QRAM is most economical in the use