JAN/FEB ’87
Vol. 3 No. 2 : PAID $3.00 U.S. Funds COLTON, OR 97017
PERMIT
BULK RATE U.S. POSTAGE
POSTMASTER: PLEASE EXPEDITE DELIVERY DATED MATERIAL,
a
WHAT’S NEW FOR
19 8 7
COMPLETE SINCLAIR FORECASTS
PLUS...
RLE Graphics e Tax Calculator TASWORD TWO + Build a Data Acquisition Module | Exploring the QL ° QL Quill AND MORE!
BSS CN NSSSAN ASSEN ASS ANN
idee MM,
|
QL, with 4 Psion programs,4 blank mdv cartridges, and 640K RAM $399. 00+ 512K RAM PAK for QL, brings total memory to 640K
AVATEX 300/1200 BAUD MODEMS, 8 LED, RS232, etc.
AVATEX 300/1200, 100% Hayes Compatible QL MODAPTER, allows use of 300 Baud modem with QL, includes QCODE terminal program which supports up/downloading, etc oe $ 59.95+ Modapter WITH AVATEX 1200 HC (Hayes Compatible) + $209 PP! QL ASSEMBLER WORKBENCH, includes monitor, disassembler, assembler, by Talent, a great buy, great software! Only..............
TRANSFORM CASE, plastic case holds 20 MDV cartridges
MICRODRIVE CARTRIDGES for QL, ZX Microdrives ONLY(4 carts)..
QL BOOKS, Assorted, call for titles, only...
¥THE 2068S is NOT Forgotten
: WEXSS! Fighter Pilot, Night Gunner, or Loader V, only $10 each POST PAID while current supply lasts!
SPRITES 2068, all new! Design, combine, and use sprites quickly and easily. Includes GREAT demos! Includes detailed manual, sprite service utility (2520 bytes MC), spritedraw program...........0.0005 $ 19.95+
SABOTEUR, you are a ninja spy who must get a disk from the eneny wharehouse; use lethal i punches, stars, knives, grenades to ‘remove’ guards and dogs ‘¥ et in the way’. Super graphics! $ 15.95+ CRITICAL MASS, aliens thie stroy your solar system by taking over your anti-matter co You must infiltrate the plant and destroy the converte and it turns into a black hole,
eer $ 15.95+
SPECTERM 64- Brand new 64 colum terminal software for the Spectrum or 2068 with Spectrum Emulator and 2050 modem OR ANY RS232 BOARD! Yes, 1200 BAUD (300 baud with 2050 modem) on a 2068! You get 64 columns ON SCREEN, built in XModem up and downloading, half/full duplex, 31K buffer, can transmit/receive ANY file- Bytes or Program. Automatically aves Tasword II files properly! 4K user menu area, and documentation for full power modeming, all for only............ 0c. cece eee DOUBLE SIDE/DOUBLE DENSITY floppy disks, highest quality, lifetime guarantee, Tyvec sleeves, user ID labels, and write protect tabs, only 6k 75 CENTS each (minimum 10), or 100 for 65 cents each! (100 shipped PP!)
S|
+») Unless etherwise noted, Please add S> shipping for software, BS. For hardware, or $10 for a& QL package.
Send check or Money Order toa: VARIETY SALES COMPUTER DIVISION
Department TeEN-—-S B25 WEST JIERSEY STREET, #2D ELIZABETH, NEW JTERSEY o7v2o> 2OoO1—-S27-0O535 FOR MORE INFORMATION.
ced
JAN/FEB 87 VOL. 3 NO. 2
MAGAZINE
FOR ALL TIMEX AND SINCLAIR COMPUTERS.
TIME DESIGNS MAGAZINE CO. 29722 Hult Rd.eColton, Oregon 97017 (503) 824.2658 Compuserve IDw 71350,3230 TIME DESIGNS MAGAZINE is published bi- monthly and is Copyright © 1986 by the Time Designs Magazine Company, Colton, Oregon 97017. All rights reserved. Editor: Tim Woods Assistant Editor: Stephanie Woods Editorlal AssistanuProduction: D.L. Woods Photography: (unless otherwise noted): Thomas Judd Printing by; Toad’! Litho Printing and Comp., Oregon City, Oregon 97045
SUBSCRIPTIONS: $15 a year for six issues (US funds only). No extra charge to Canadian subscribers. All other countries please write for information on air mail rates.
CUSTOMER SERVICE: Customer satistaction is our goal. For subscription: service problems please write or call TIME DESIGNS,
CHANGE OF ADDRESS: Write or call to prevent delay of sevice,
Reproduction of this magazine in whole or in part by any means without written permission is prohibited by law
“NOTICE: Contributors to TIME DESIGNS are independent of the TIME DESIGNS MAGAZINE CO., and opinions ex- bressed in the contents of the magazine are not necessarily those of the management or its advertisers. Time Designs Magazine Co. willnot be held liable forany damage or conse- ‘quences resulting from instructions, assertions of fact, review of products or companies provided in the magazine's content.”
Renew Your Subscription Today!
LETTERS
Micro-Prolog :
Dear Sir,
Reference the question in your last magazine about the availability of the program "Prologue" for the 2X Spectrum. computer. Sinclair Research commissioned a version of the Prolog language for the Spectrum and sold it for about 30 Brit. pounds. However, when the rights to the Spectrum were transferred to Amstrad, all pro- duction ceased. Morever, Amstrad refuses to publish the Prolog software. So mich for the bad news, now the good news...a copy of "Nicro-Prolog" is available from: Logic Sales Ltd., 6 Midgate, Peterborough, Cambs. PE1 1TN, England (limited quantities available).
The cost for this program is £3.95 + £ 4.00(airmail postage); total £7.95. The pound is currently worth about $1.45(U.S.). Anyone who wants a copy had better hurry; there are only a few copies left. The reason that the airmail postage is {4.00 is that the cassette comes ina presentation case with a 24 page introduction booklet, plus a 301 page primer on Micro-Prolog.
Sincerely,
Charles R. Byler Ft. Riley, KS
A & J help request
To the Editor & Readers,
I have a major problem (and others may have this same problem) with “self-starting" programs. This in- volves trying to put these programs on to an A&J Micro Drive for the TS-2068.
Does anyone have a program that can be pre-loaded into the computer then merged with the self-starting program, so that the Save instructions can be changed to allow it to go to the Add instead of the cassette re- corder? Sure hope someone out there can help.
Thanks. kindly,
Vince Stimmel Hendersonville, NC
Editor: White I heartily endorse and support the ALJ as @ Low-cost mass storage device, I found that it's user guide is very skimpy. We nequearty receive atl kinds of requests for help with this system. 1 do hope that othens wilt share info and tidbits fon the ALJ. 18 there such @ Routine, ..simi£ar £0 an "007" onr* "Spy" routine?
2068 Music
Program Contributed By: Joe E. Jenkins Amarillo, TX
10 FOR z=1 TO 13: READ a,b,c
BO SOUND 7,60;8,15;9,1570,8;1, bj}2,34+2}3,b
98 PRUSE 1@%c: SOUND 8,9;9,2: NEXT. z: "STOP
40 DATA 92,4,2,209,5,2,92,4,2 209,5,2,92,4/1,188,4,1,47,5,4,4 8,4,1,92,4,4,325,3,2,209,5,2, 23 23,2,209,5,2,226,3,1,289,5,1,47
a 8 §,1,209,5,1,92,4,4 :
Letters continued on page three...
NEW PRODUCTS
For TS2068 and SPECTRUM
VERSION 1.1
* Pull-Down Menus * Auto-Speed Control © Includes Spectrum & TS2068 Versions * Several Brushes * Magnify & Reduce Supports Microdrives and Kempston * Spray * Rotate & Mirror Joystick 7 © Auto-Fill © Full Attribute Control « Includes GALLERY, the slide
* Zoom * Fully Elastic Shapes including Circle, _ show/animator
* Undo Box, Triangle, Ray and Line «5 Samples of Artwork
* Several Text Fonts © Fast Ellipse and Arc * Excellent Manual
* Cut & Paste Windows
Unshackle your creativity with ... ARTWORX!! ARTWORX V1.1 - $19.95 U.S. plus $3.00S & H
REVOLUTIONARY NEW BASIC COMPILER...
The dream of every BASIC programmer has now been realized!
* TIMACHINE will turn your BASIC * Handles all BASIC except I/O into super-fast machine code, * Includes an excellent manual and running up to 200 times faster! 4 demonstration programs
* Handles floating point operations * Compiles up to 27K in seconds like SIN, COS, TAN * Includes Spectrum & 2068 versions
Super-Charge your BASIC programs with... TIMACHINE!
TIMACHINE — $19.95 U.S. Plus $3.00S & H
A unique combination of planning aids, decision tools, and utilities.
* ScheduledPlanner * Biorhythms
* Notepad * Perpetual Calendar
* Telephone Book * International Time Zones
* Programmable Calculator * Superb Manual
* Decision Factoring * Includes Spectrum & TS2068 * Real Time Clock Versions
* Supports Microdrives A TIMELY ADDITION TO YOUR SOFTWARE LIBRARY... THE WORX!
— $19.95 U.S. Plus $3.00 $ & H
Novelsoft
A FORMAT FOR THE FUTURE
106 Seventh Street, Toronto, Ontario, Canada M8V 3B4 ¢ TEL. (416)259-8682 * CompuServe 70416,1435
LETTERS 80 Col. VU-CALC MSCRIPT Dear Tin
Here are some program lines for people with Timex's
First of all, I would like to encourage ali of the YU-CALC and an 80 column printer. suppliers (magazines, newsletters, developers of soft- After calculating and saving your calculations to ware and hardware) to continue offering useful software tape or disk, break out of VU-CALC (Enter #Q then Option or modifications to existing software. I suspect that #1). Merge your printer interface software (it can't the majority of Timex computerist are not all that in- occupy addresses 34573 to 52072). Add these lines: terested in learning the “ins and outs" of programming, as hacking, and hardware development. We just want some- Bee OR eda ro: Saye STER SED thing practical which we can use on a day to day basis. 9720 FOR L=0 TO 69 Please don't think I am knocking those who have a more 3328 KEGENT CHRS ¢ PEEK (Z+P+L))5 techinical interest. But neither do I wish to be 9745 LPRINT criticized for my.lack of. technical interest. Z i As examples of the above coment, I) offer SCRIPT BoEn NET Pee ee ne {especially Jack Dohany's customized version CMS-5), . ° wi = Tasword Two, Omnicalc 2, Pro/File 2068. There are more ‘ial dorkateecs Hat userethe: ce Of eG anne of course but these represent the ones most useful to To keep 7 aight tapers tron running rouethers ada Second, a word about MSCRIPT. I have seen almost these lines, (this also separates every 7th letter if you nothing about this tremendous program. I used WordStar jave :.
for quite a long time on my brother's computer and I can 9735 IF (L+12/7= INT ¢€(L+1)/7) THEN LPRINT honestly say that MSCRIPT has some distinct advantages DELETE line 9745
over WordStar. Admittedly, it is not perfect but it is If you do not use the workspace below line "AN" and
VERY GOOD! want a neat looking double spaced work sheet, change I have not always felt this way about MSCRIPT. It these lines:
wasn't until I saw a small note in T-S Horizons about
(i space)
spices ‘ 9710 FOR Z=34573 TO 48500 STEP 350 Jack Dohany's "Jack's Fairware". The article mentioned 9745 LPRINT 1 CPRINT a customized version of MSCRIPT which I immediately sent DELETE tine 97:
for. This is the best piece of software that has been
If you only want one page, change these lines: written for the 2068 computer. The original version of id sf pe i
MSCRIPT, and Tasword Two are nothing by comparison. In sg 4 > soleen £8 19: 3788 tet 0 fact, the only deficiency I have found is -that end of age § = Solum 24 £3 89 : 2789 Let Paige page markers are not available (as in WordStar). You Page S - column 41 to 50 7 9700 LET P=sB0 have to print the document to see where the pages DELETE line 9760 break. Tasword Two does not do this either. f oa oe
I would like to see Jack get the recognition and A; GOTO 2000" “wi] 1 give: yourthe ‘optt on’ to retirs, to;
credit he deserves for this fine word processor. I use MUON Se
it several times a week, every week. ‘ apicG@ieen Looking forward to my next issue of Time Designs. East Liverpool, OH Richard Templeton Springfield, MO
Editon: while giving Jack proper recognition, I might inn:
mention that he has a now address- Jack Dohany, 390 spinning wee
Rutherford Ave., Redwood City, CA 94061. Folks who send
@ Legal size S.A.S.E, can get complete details on the
Customized MSCRIPT Vers. and other "fainwane". This short program for the TS2068 draws several different “views” of a wheel, then “spins” the wheel for an interesting animated effect. Try it out!
Sinclair Joysticks Program Contributed by:
Charles Goyette Drummondville, Quebec
In regard to the recent query from a Time Designs Canada reader about using the Kempston protocol joystick inter- face by modifying the program or use of user-definable 4 REN If you vk want tose keys (for reference- see the article "Adding a Joystick engngqubees. Pein SOE UN ASE To The Spectrum-ized 2068" in May/June ‘86 issue of 154 INK o TOM); there is no easy way to do that short of modifying 5 CLEAR 2ges8 the program itself. However, there is one simplistic a3 Reno's oi joystick interface which is "cheap and dirty" (but it 25 POKE - hn: works), which can be used with both Sinclair joystick eo? fon 5S ? Sod. oF s<seat7 THEN interface and keyboard options, x gs parE $3,0,64- 33: 9,320,108 Very simply, the Sinclair interface mimics the 5 ,201,1,0,40) 1933 keyboard keys 6,7,8,9 and 0 for joystick control. This 20,200 70,47,0,64, 4,0, 84.857 .1257 can be done by simply wiring a joystick in directly, or 345345,0,183,16,225, 202 Providing a socket for attachment. The following dia- 1ee oe TO eee sease gram indicates the wiring as viewed from the wiring side TS LET raPEEK SOQ04+2564PEEK 3 of a DB9 socket. This type of interface would have to be ooo oaks soees INT (7/256) the low cost leader as far as joystick interfaces go. LBS POKE 50004 /r-258sPEEK 30005 130 NEXT T ; Jack Keene 120 REN Machine Routine, Starts Dallas, TX Here *
245 LET tsUsR ooo12
CIRCUIT CON BDO az io | a eee rite eq To s$ea' STEP 5 fee ma LeSOxPx / ¥ 426+7925IN a re eS 859 LET Susess793c05 8 380 126,85: DRAW sx-126,¢4 pinectios rr -85 fri 970 NEXT t a os98 Go Te ti8 creutr edo xdoz feos xdos acy ie
Character Font Generator
Now, you can design your own UDGs and character sets with this great programmer’s tool. It even comes with 4 fonts to get you started. Plus, it can make sprites for use with the Advanced Video Modes. One joystick required. for just $800 Can/US.
$2000 US $2500 Can $1500 US $2000 Can
Send cheque or money order for $1.50 US/Can. to receive our catalogue complete with Demonstration Tape V3.0 plus bonus programs. And remember, we still pay the postage & handling charges on all our orders!
Seaver Compulir Products
756 Fleming Avenue, Winnipeg, Manitoba, R2K IV5 "The best DAM software around?
% <Q, %
The FootePrint Printer Interface
¢ for Centronics parallel printers
¢ 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,
Advanced Video Modes
The most complete package for utilizing all of the T/S 2068's enhanced screen displays. to their fullest. It provides access to 32, 64, and even 8O columns, plus dual screen and extended colour modes. Updates are available
Now at last. ..
HAPPY NEW YEAR! FROM
RMG ENTERPRISES JESSE HOO OSE EEO EES
TO START 1987 OUT ON THE RIGHT FOOT, WE JUST WANT TO REMIND YOU THAT WE HAVE A BRAND NEW 40+ PACE 8 1/2*r11* CATALOG JUST WAITING FOR YOU TO BROWSE THROUGH!
JF YOU HAVE NOT ALREADY ORDERED YOUR COPY, HURRY AND DO SO! WE KNOW THAT YOU WILL FIND THINGS IN IT. THAT YOU HAY NOT HAVE EVEN KNOWN EXISTED! THINGS THAT YOU NEED!
WE NOW STOCK OVER 550 DIFFERENT ITEMS THAT ARE USABLE DIRECTLY OR INDIRECTLY WITH THE SINCLAIR LINE OF COMPUTERS,
SEND FOR YOURS TODAY! “
JUST SEND A CHECK OR MONEY ORDER FOR $3.00 TO THE ADDRESS BELOW, AND WE WILL RUSH YOUR BIG NEW CATALOG 10 YOU! :
INSIDE YOU WILL FIND A LOT OF HARDWARE AND SOFTWARE THAT
MAY SULT YOUR NEEDS. AND YOU WILL ALSO FIND A COUPON
GOOD FOR $3-GFF ON YOUR FIRST ORDER FROM THE CATALOG! THAT WAY YOU DON’T LOSE A THING!
DETAILS ARE ALSO INCLUDED GN HOW TO KEEP THIS CATALOG UP-TO-DATE AND CURRENT. AS IT 1S THE LAST FULL CATALOG RMG WILL-EVER PUBLISH, THIS WILL BE IMPORTANT TO YOU!
© 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 .$45°° FootePrint with OS-64 option included . .$65°° Bare board & instructions only .......... $1500 Cable only for use with bare board All prices are pre-paid and include shipping charges.
FOOTE x, SOFTWARE P. O. Box 14655 — Gainesville, FL 32604 904/462-1086 (6 pm - 9 pm EDT)
SEND_T0:
RMG ENTERPRISES 1419 1/2 7TH STREET OREGON CITY, OR 97045 503/655-7484 TUE-SAT 10 AM TO 10 PH
/New and Upcoming i 1987
By Tim Woods and
INTRODUCTION: You've seen those glaring tabloids on the news rack at your local grocery store...you know, the ones boasting new trends and predictions for the new year...all hyphenated in bold print and splashed accross their front page. While we won't comment on the accuracy or validity of these publications (after all, how do we know that Sylvester Stallone won't be visited by the ghost of Elvis?!?)...instead we offer our version of the same concept, but based more on "fact" and gleaned from interviews, telephone conversations and press releases.
We are going to take a “sneak preview" of what we think will be the most important events and trends for our Timex Sinclair computing community in 1987. Some of the issues we will address along the way will be--"what
new hardware and software is being developed?"—-"will Uncle Clive's computers survive in the U.S., now three years after Timex dropped out of the market?"——"what are
some new ways I can put my computer to work for me?" and much more.
So, hold on to your hat, as we start our whirlwind tour of "what.'s new and upcoming in 1987"...and as our tabloid counterparts might say..."a look at what's hot, and what's not!"
Indianapolis: The Place To Be In May
If you read the reports about the Mid-West Timex Sinclair Computerfest which was held in Cincinnati, Ohio last year...you may have wished that you had been there. Well, now you have a second chance. It's time to start saving your nickels, dimes, and “cash in* on your pop bottles. That's right, the 2nd Annual Mid-West Timex Sinclair Computerfest will be held in Indianapolis, Indiana on May 2nd and 3rd...and plans are going “full steam ahead". If you can fly, drive, ride the bus, ride the train, walk (?)...no matter what mode of trans— portation you use...you might not want to miss perhaps the single most important event for Sinclair enthusiasts in North America. In fact, the only event of it's kind held in the U.S. [there have only been two other such conventions: Boston in 1983 and Cincinnati in 1986].
The 1987 Mid-West Timex Sinclair Computerfest will be located at the Holiday Inn North in Indianapolis (just off North I-465 at 3850 Depauw Blvd.). This is a “Holi-dome", and one of the top hotels in the Holiday Inn chain. The exhibition area is twice as large as last year, with over 5,000 square feet of display space plus areas for seminars, conferences and a hospitality suite.
This year's executive director of the Computerfest is Paul Holmgren, who not only is a fan of Sinclair computers, but also has ties to the city commerce department of Indianapolis. Paul will be working closely with Computerfest founder and promoter, Frank Davis. Other Computerfest committe members are representatives of TS user groups from Indiana and Ohio.
The list of dealers that have indicated they will be attending the show at this early date has been im- pressive. These include: Sharp's Inc., C.W. Associates, Knighted Computers, Thomas B. Woods and Syncware News, Variety Sales, Zebra Systems Inc., Markel Enterprises, Time Designs Magazine Company, and The WJDJUP Company; along with several user groups from Indiana, Ohio, New York, Maryland, and Wisconsin. As we went to press, more dealers (including some of the largest TS mail order houses) expressed interest in the show.
a)
- Hutchinson
Tickets for the TS Computerfest can be purchased in advance for a discount before March 30 ($4 for an individual; $7 for the family plan)...or at the door for $6/individual or $9/family plan. The Computerfest will be open on Saturday May 2nd from 9-6pm and on Sunday May 3rd from 9-Spm. Accomodations can be obtained at the “headquarters" hotel for a special rate by mentioning the TS Computerfest (phone number is 317-872-9790); or lodging is also available at six other hotels in the immediate area. Transportation to and from the Inter- national Airport is being provided by the Holiday Inn, for those staying at the headquarters hotel.
Some of the activities planned for the Computerfest include workshops by Timex Sinclair “experts", and most of the workshops will be repeated twice, to allow for a more convenient schedule for all attendees. There will be a swap meet for used equipment or programs; and like last year's show, valuable door prizes will be given away (some lucky fellow went home with a complete QL system including computer, RGB monitor and printer!). Friday evening at 7:00pm on May 1st, will be a banquet for all exhibitors participating in the show.
Every Timex and Sinclair computer will be featured in one way or another. The March/April '87 issue of Time Designs will carry more information on the Mid-West TS Computerfest as well as an updated exhibitor listing and schedule of events.
For more information on the show, lodging, tickets, and display booth reservations...write or call: Paul Holmgren, 5231 Wilton Wood Ct., Indianapolis, IN 46254, tel. (317) 291-6002; or Frank Davis, 513 E. Main St., Peru, IN 46970, tel. (317) 473-8030.
RAM, RAM and more RAM
Running out of places to store your data with 16k or 48k RAM? Good news for you on the horizon...and most likely, the most popular hardware ‘adaition this coming year...memory boards.
* Larry Kenny of Larken Electronics (RR#2 Navan, Ontario, Canada K4B 1H9) is currently developing a 256k RAMdisk for the TS2068.
* Another company (who asked to remain anonomous) is also working on a 256k RAM expansion board for the 2068. The operating system software is reported to be similar to Timex's proposed plans for ‘the 2068, and will utilize commands found on the top row; of keys (OPEN#, MOVE, CAT, ect.). The board will also be expandable for additional RAM. ‘
* Thomas B. Woods will be offering a RAM board in kit form that operates in the cartridge slot of the
2068. The kit and board is designed by Tom Bent, and features user expandable RAM from 8k to 120k, with battery back-up. The kit is similar to a board that is
being marketed by The E. Arthur Brown Company. For more information and prices, write to: PO Box 64, Jefferson, NH 03583.
Continued Next Page.
* In light of Wes Brzozowski's five-part article “The Mystery Of The Missing 253" on bank-switching memory for the TS2068 (to be concluded next issue), several bank-switching "spin-offs" are in the works, in- cluding some future hardware projects recently submitted to Time Designs. We think research and development in bank-switched RAM will produce some valuable "add-ons" later this year.
* Bill Pederson of The WJDJUP Company reported that he will be conducting live demonstrations of his bank- switching boards at the upcoming Mid-West TS Computer- fest in Indianapolis (for further details on peripherals and software write to: 1120 Merrifield S.E., Grand Rapids, MI 49507).
* After Tim Stoddard completed the two-part article on upgrading the TS1016 RAM Pack to 64k, in TDM (see the Sept/Oct '86 and Nov/Dec '86 issues); he came up with an excellent INTERNAL 64k upgrade for the 151000 and 2X81, It's a three chip modification, that makes a neat and tidy installation, with a substantial boost in “power" for all 1S/ZX hackers. Complete plans will appear in the May/June '87 issue of Time Designs.
TS Telecommunications
Telecommunications is not necessarily a new field for TS users,..as the Byte Back Modem cropped up early on in hey-days of the 2x81, then followed by the West~
ridge 152050 modem, the original Timex modem. But recent developments in this area, are making telecommunications @ growing support base for Timex Sinclair owners.
A new booklet tells it all. It's called "the Guide To T/S Telecommunications", written by Pete Fischer and Steve Ishii. Over 50 pages of information offer a tutorial on “how to get started", necessary equipment and software, Timex Sinclair BBS phone numbers and info about each one, and even sections for the QL. ‘The booklet is available for $2.00 postage paid from Pete Fischer (PO Box 2002, Tempe, AZ 85281). There is also a DELUXE edition which will be available shortly in an expanded format for $5.00 postage paid. Anyone remotely interested in this area should get a copy...it could even save you money in the long run with all of the special tips, and helpful information it provides.
Many users have discovered the Timex/Sinclair area offered by the huge telecomputing information service, CompuServe. Several TS dealers have subscription packets for sale, or check at your local computer store. Price for this "starter package" is around $30. The Timex Sinclair (an@ Qi) area can be found in the Computer Club Forum sponsored by Family Computing Magazine. Type GO CLUB at the user prompt, and your there. You will find lots of messages, programs and articles to "download", a live conference on Wendsday nights...all just for 7S users...and hosted by SYSOP's Patrick Spera and Dave Rothman.
Front Cover of "The Guide To T/S Telecommunications" by Pete Fischer and Steve Ishii (the RLE graphic picture vas downloaded from CompuServe).
It wasn't until just recently, that software to allow setting up ones own home BES using a TS2068 became available. CASBOARD 2068 is available from The E. Arthur Brown Company (3404 Pawnee Dr., Alexandria, MN 56308) for $19.95 + $1.95 for postage. This program written by Kurt Casby is the most sophisticated BBS for the 2068 yet (all machine code). Another program that is based on the-original public domain software, "Tiny-board" by Randy and Lucy Gordon, is also available and used as the BBS for the Indiana Sinclair Timex Users Group BBS.
Casboard and "Tiny~Board" BES are cropping up all over the place. In the final chapter of Pete Fischer's guide, he predicts that these new boards will have “a major impact" on TS telecommunications.
SINCLAIR QL
The steady stream of business programs, graphic design and CAD programs, utilities (including front-end type software), and game programs, is keeping the QL "alive and well", both in Europe and on a small scale here in the states. There is enough action (and ad- vertising) to keep a genuine "slick" monthly magazine in business--QL WORLD (79-80 Petty France, London, England SW1H 9ED...subscription rate is 45 Brit. pounds for one year...but several TS dealers have them for a discount).
The hottest thing going for the QL, are the second- generation "clone" machines. The 640k CST THOR is available now, complete with 3.5" floppy drive, and IBM style keyboard and packaging. (For further information, write to: Eidersoft, The Office, Hall Farm, North Ocken- don, Upminster, Essex, U.K., RM14 3QH...there is even a trade-in offer for your old QL). The newest clone should be out by the time you read this...the Sandy FUTURA. The Futura incorporates several new enhancements like a real 68000 MPU and Tony Tebby's improved QDOS system. (for details, write to: Sandy U.K., Unit 33, Murdoch Road, Bedford, England MK41 7PQ).
While not every QL owner will be upgrading to the newer machine (considering the £600+ price tag), the real value lies in the increase of the over-all QL user base due to clone sales.
Anew area for the QL is Desk-Top Publishing with the release of the new program FRONT PAGE. ‘The program isn't on par with PAGEMAKER for the Apple Mac, but Front Page's distributor, GAP Software, promises updates to be available soon. Front Page may spawn other Desk-Top programs. Several U.S. dealers have Front Page in stock now, including Variety Sales, C.W. Associates, Curry Computer, and RMG Enterprises.
A lump comes to ones throat, and a warm feeling to the heart, to see two American QL programs recieve worthy recognition in the European computer market. They are WAR IN THE EAST by Sharp's Inc., and CONCEPT 3D by Tesseract Software (see July/Aug.'86 and Sept/Oct "86 issues of TDM). Both have been rated favorably in
<2
British magazines, and are being distributed by European dealers. Perhaps other American-made programs and hard- ware may get some notice.
Two soon-to-be-released QL books are coming from the northwest. ARCHIVE MASTER, published by Executive Workshop, will be distributed by RMG Enterprises (1419 1/2 7th Street, Oregon City, OR 97045). The book offers an explanation of Psion's Archive database, and includes several routines and procedures to use the program for serious business applications (inventory, accounts, and
mail list management). Archive Master has been "field tested" and comes in a three-ring binder. Time Designs QL columnist, Mike de Sosa, is the
author of TAKING THE QUANTUM LEAP, a 260 page book for both beginners and the advanced QL user. The book will feature mich information "missing" from the QL Users Guide, as well as program listings, explanation and en- hancements of the bundled software. Over two years in the making! For further information, write to : TDM, 29722 Hult Rd., Colton, OR 97017.
ZEBRA/TIMEX DISK SUPPORT GROUP
First the bad news. Zebra Systems Inc., announced publicly that they have completely sold out of the Zebra FDD Disk Drive System for the TS2068, and that they will no longer carry them.
Now for the good news. A new special interest group is forming to provide support and a newsletter dedicated to users of this disk system. The Zebra FDD is actually a system that is manufactured in a Timex factory in Portugal. These units are marketed in Europe for the Sinclair Spectrum and in Portugal for the 1TC2068 (a later version of the U.S. TS2068). An early version of the FDD, consisted of three separate components (power supply, controller, and drive). It's disk operating system (TOS) resided in 16k RAN (included), and all three pieces were painted silver like the 2068. A later version, the FDD-3000, contained dual-drives, built-in 64k RAM, CP/M compatibility, all in one compact package, and painted black. Both models use the Hitachi and Anstrad-type 3" diskettes.
The new FDD support group's newsletter is called T.0.P.S. (for "Pimex Of Portugal Systems") and is for both earlier models of the disk system, and the current FDD-3000. The newsletter's editor is Dave Franson of Milwaukee, Wisconsin. Articles will be written by Dave, Kurt Casby, and many others. Subjects will cover the CP/M operating system, software conversions to disk, use of the RS232 ports, and other related topics. The group is also open to any article or program contributions, and any comments or suggestions.
If you are a Zebra/Timex FDD user, you can contact the group's secretary, John Bylander (1203 N. Owens St. #308, Stillwater, MN 55082) for more details.
Note: The Aerco FD-68 Disc Drive System for the TS2068 has a support group and newsletter also. Users of the FD-68 can contact: Dave Hill, PO Box 310-A, Holland, MI 49423, for further information.
More...
Here's a Whitman's Sampler of some more TS stuff to look for in 1987:
* NOVA 1000 is a new program from Weymil Corp. (PO Box 5904, Bellingham, WA 98227), which performs Multi- Tasking on a TS1000! You can operate multiple programs simultaneously, in addition the programs features a real-time (on screen) clock, auto-repeat for all keys, and program line tracing. All for $20 (plus $2 postage).
* Several GEOS type programs are currently being developed for the TS2068 (GEOS, the front end, house- keeping utility, is currently the best-selling program for Commodore computers).
* An extensive project of de-bugging the TS2068 ROM will be completed soon by Bob Orrfelt of Redwood City, California. A new EPROM will be available to replace the old ROM, and will feature some new routines, including auto line-renumbering.
* A MIDI interface (the standard for electronic musical instruments) is being developed for the 1S2068 by Larken Electronics (RR#2 Navan, Ontario, Canada R4B-1H9).
We feel that 1987 will be a good year for Timex Sinclair users. Some of our TS developers also have and use other PC brands. Many of the trends and new products in the computer industry will continue to be adapted (and translated) by these developers for our own micro- computers. Thanks to Uncle Clive, he engineered a very flexible design that can grow and expand for years to come.
Speaking of Sir Clive, he also has some new things up his sleeve to watch for...including Mega-RAM on wafer and the PANDORA portable computer. The beat goes on.
ORK KEK SMART TEXT TS-2068 KKK x*
KKK A complete manager, Mail List, formatter, for personal form letters. publishing. KKK
Full
Administrative package: text editor,
Perfect letters or manuscripts in multiple copies. Repeat print 5 page reports. Friendly, Menu Driven, no command keys to learn, Crash Proof, Use with ALL Parallel Interfaces, Printers.
Word processor, Data base Automatic printer, Automatic Mail List Desk top
Second program included
for use with OS-64 Cart (64 Col Screen). #X* Disk Versions for Aerco FD and Qliger V2-12.
¥4kX =Satisfaction Guarantee, Stratford Ave, Panama City, Cassette or Disk Drive,
$39.95 Check or H/O, FL 32404. Inquiries welcome.
7
Gulf Micro, 1317
Specify type interface, for
pe
CAP SOFTWARE BRKOURCE SESCTOP {__ PUBLISHING ON TRE SIRCLATE OL
CESK-TOP PUBLISHING FOR THE _ SINCLAIR aL
AVAILABLE HOv!
Fron URPTETY SALES (This pogeset-ap_asing FRAT PEGE]
GHLY. es ake i FP
rH FZ rad
18 Typefaces and Sizes Available!
é4 User Graphics Included!
fix Text & Graphics OH SCREEN easily! Freehand Oravina Mode!
Sove/Load Sc! or Parts of Screen You can even add screens from OTHER prograas inte your page! If you have digitizer, you can add photos!
Up to 123 colugns/8@ lines on a page (prints on full 8 1/2" x 11" paper) Herdvare Requirements:
Standard @L vith 128K RAN
EPSON coapatible printer with OOUBLE OQENSITY graphics to print full vidth.. if you have oniy single density you cau print only the first 488 pixels. ' - HO EXTRA HENRY HEEQED! Witt work vith pig depen art ind extra RAN, though. Con also use DISKS or after being created with OL PEIRTREN!
Pee os ne oe
as!
es
”
even RANDISKS! Can easily be transferred You cam do it ton.. .ERSILY! THING, POSLIGHING, PRTMERK, ALL fo disk! (isk GREATLY speeds up the i enor SES LS IVT progran!) SEG @RBERS TO: VARIETY SALES E.
t Uhole Progra is Menu Driven! 325 §. JERSEY ST,, 428 TOGETHER? BUSINESS CARDS? RING
4 Ask for Sazale Sheet vith More Info. ELIZABETH, KJ 07202 TEL: 201-527-0525 | AND PK FOR CETAILS, B1-SS2HN2
TOMAHAWK TOMAHAWK is a real-time flight simelation based upon the US ARNY AH-C42 APACHE Advanced Atack Helicopter - the aeanest, deadliest combat helicopter ever to rale the skies! Its specialized job is to hunt tanks and destroy anything that gets in its way, the Apache was built specifically to fight and survive, night and day, in the thick of the battlefield. Flying a real helicopter is a demaading task, requiring training aad practice - particularly ground attack. TOMARAWK gives you this challenge. Climb into your cockpit and prepart tor take-off...
FEATURES: Spectacular 3D real world display *Pally aerobatic (within limits of the real helicopter) *Ground attack & air-to-air interception Over 1000 ground features *Day/Might vision systems "Cloudy coaditigas, crossvinds & turbslence *Doppler*aavigation & target tracking system Laser ‘Guided aissiles, plus rockets & 30am chain gan *Selection of training and combat aissions ‘Iapressive sound effects *Pilot ratings ~ Tralnee to Ace *Uses BOTE 752068
Joystick ports! ONLY $15.99! 4
Send check or money order to: Variety Sales 325 W. Jersey St., #2D Elizabeth, HJ 07202 - Thank You!) PHONE: 201-527-0535
Y (Please add $3 shipping. .
MORE “COLORS” IN QL’*S MODE 4
By Paul Bingham
5 RiMark MODE, 4 COLOR EDITOR
1@ INK 7:PAPER @: i =@: WINDOW 512, 256,0,0 2@ MODE 4:CLS:CSIZE 0,0:AT @, 25
25 INPUT “STIPPLE 0,1,2,or 37 “js: INK @:CLS:b=@:f=32 3@ FOR d=@ TO 6 STEP 2
35 FOR o-@ TO 6 STEP 2
Anyone who has a QL and a monitor that will display 4g papen 7-PRINS | BARR Sota d the mode 4 (Fl) screen might be wishing that there was 5@ b=b+9:f=f+21:END FOR c:END FOR a more than four colors; i.e., white black, green and red. 60 AT 5, i “ss: 0SIZE 2,0 If one experiments with the PAPER command he finds that 7 A 2 ne SOE 4 AT’ 3, 1:PRINT’ “COLORS” * it can provide a stipple function for “blending” colors. , ‘ Alternating red and white pixels yields a textured pink Sh eee eee bettas Screen, green and red gives brown and so on. 95 PAPER c:PRINT “ EXT _©:GO SUB 10:0 TO 155 This short program lets the user pick one of the 10 WINDOW 97,87, 350,@:PAPER a,2,u: INK @:CLS:PRINT . four pixel patern alternatives then displays labeled 105 CSIZE 2,0:PRINT "PA"; :INK 6:PRINT " : overlapping windows of sixteen new "colors". an input 110 PRINT "RN"; :INK 2:PRINT “S:":FOR window in the lower left allows choices for testing any a ee 6 io, TO 186 window or changing the pattern. A small window in the 125 IF t23: . upper right lists the colors end number values and a 130 CSIZE @
larger window tests the chosen "color" by printing over
:PAPER 4: PRINT y$:PAPER a,z,u it with letters of different sizes and colors. This will
NK i:END FOR t:i=@:RETurn
Feveal that sone new pixel-produced "colors" are not 155 GO SUB 200:CLS:AT 1,1:INPUT "PAPER —";a:AT 1,9 v : : ; aria : suited to certain types of print, while others look just }82 ZNFUT, 1) TiesA 2.22: INPUT ( "iuschs 3 ‘ " 5 175 GO SUB :AT 2,2: INPUT lor? = Refering to the User's Manual while using the COLOR 199 IF n$="y" OR née"":G0 70 Ise EDITOR will be of value. By altering the window para- 165 GO SUB 200:AT 2,2:INPUT “new stipple? (y/n)";n$ meters in lines 10, 40, 8, 100 and 200, they offset 189 IF n$="y" OF values in line 50 (and a few other minor changes)...this 195 CLS:AT 2,3:PRINT “program ended. “: STOP Std Glas dois an Goin aie ee 200 WINDOW 132, 32,30, 128:PAPER 6: INK @:RETurn
QL GAS GUIDE
By Gale Hensliee
10 REMerk ixs2areererrreree seer OOo r non ioe moore: 15 REMark Kxxeaexwue exe KE Re EE EKER ERE RELA ER EKAKEES EKER E LENE SUA EK EAE REREEEE 20 REMerk = x 25 REMark
* PROGRAM TO DETERMINE WHETHER YOU SHOULD SPEND THE EXTRA * 3@ REMark * MONEY TO PURCHASE PREMIUM GASOLINE INSTEAD OF REGULAR. * 35 REMerk * IT ASSUMES THAT YOUR CAR RUNS FINE ON EITHER GRADE OF GAS * 4@ REMerk * AND DOES NOT KNOCK OR PING ON THE LOWER GRADE. * 45 REMark * x 5 REMark x GALE HENSLEE OCTOBER, 1986 AMARILLO, TX * 5S REMark *
GO REMark xxeexxxexeaxne saan nsee eee eee e eee ENCE EEE EEE EKEXES IER ER SERRE EEEE 65 REMank. eexxacearaxeeeccxecsexxrereeeeeseeseseresxexerexcixeseeereresss 109 OPEN #1, con
110 WINDOW #1, 512, 256, 0, @:PAPER 6: INK 1
126 BORDER 10, 4
130 CLS #1
140 vEnter price of REGULAR (d.cc) “:AT 5, 45: INPUT pi 150 vEnter price of PREMIUM (d.cc) “2 AT 6, 45: INPUT p2 160
“Enter miles per gallon you get with REGULAR”: : 178 AT 9,5:PRINT' “Enter miles per gallon you get with PREMIUM! 180 dispi/mi 190 d2=p2/m2 20@ AT 11,5:PRINT “Cost per mile vith REGULAR is “:round (d1);” cents. ” : 210 AT 12,5:PRINT “Cost per mile vith PREMIUM is “;round (d2);” cents. ” 220 IF d2<di THEN GO TO 250 238 AT 14,5:PRINT “Your best gasoline choice is REGULAR” 248 GO TO 260 260 AT 15, 5:PRINT “Your best gasoline choice is PREMLUN” i 260 AT 17, 5:PRINT “AGAIN? (Y/N) “:AT 17, 25:LET iS = INKEY@:1F if = “” THEN GO TO 260 270 IF ig=”y” THEN GO TO 130:60 TO 330 28 DEFine FuNction round (a) 29@ LOCal answer 300 answer = INT (a#1000)/10 310 RETurn answer 32@ END DEFine 330 OPEN #1, ecr: WINDOW #1, 258,200, 0, @:PAPER #1,3:INK #1,6:BORDER #1, 2, @, 340 OPEN #2, scr: WINDOW #2, 256, 200, 254,0:PAPER #2,6:INK #2, 3:BORDER #2, 2,0, #2 350 WINDOW #@, 512, 57, 8, 199:PAPER #0, @: INK#O, 368 STOP
T 8, SO: INPUT smi T 9, SQ: INPUT m2
CLS #0
Exploring The Mysterious QL
JOS: Adding Your Own Commands to Super BASIC
By Joe Newman
I£ you're like me and don't know machine language, I'll bet there are times when you really wished you did. You probably would like to make all those fancy appli- cation programs with neat advanced features, etcetera. With the power of the QL, you now have an excuse to hold off on learning MC a little longer...Procedures.
Procedures aren't as mysterious as they may at first seem. In fact, they are rather fascinating, and really deserve some attention, even by novice SuperBASIC programmers. Some pretty neat things can be accomplished with them--things that can only be done in machine code on other computers. Here are a few of the things I have discovered about procedures:
1. Procedures typed in as program lines can called WITHOUT even first typing RUN!
2. Procedures can be called from within other Procedures.
3. Procedure names can CLUDING SuperBASIC Keywords!
4, Procedures act just like additional commands added to the QL operating system!
You can discover these things yourself by experi-~ menting and reading the QL Users Guide. The BEST way to learn Procedure structure (and anything else on a micro- computer) is by experimenting. You can't blow up the QL by typing in the wrong program, although you can get some pretty strange results!
In this article, I will present a practical use of Procedures involving the above mentioned items. I have created a sample program I call JOS (pronounced JOB's). This program when used will appear to have added and re- fined sowe commands to SuperBASIC. To use it, type it in and save it as BOOT. Then put the disk/cart. that con- tains this program into drive 1 whenever you turn on your QL, so it will load and run automatically. You can even.make this the BOOT program on all your disks/carts. If you have 1.C.E. you must hold down ALT when you choose monitor (Fl) to load the program.
When it first comes on, a screen will say JOS ACTIVE, and a prompt will be waiting for the year. Either continue entering the time and date or hit ENTER at the year prompt. The computer will "jingle" and will instruct you to hit "i", if you wish to go into I.C.E., or b if you want Basic. If you don't have I.C.E., you can delete these program lines.
Once you are in Basic, the only way to tell that JOs ie there, is by typing LIST. JOS is from line 20000 on. I have placed it this high so it (hopefully) won't conflict with any other Basic programs. Remember, you can change line numbers with the RENUM command (page 47, Keywords, QLUG). To see a list of all the extra commands available with JOS (so far), just type-in the word "COMMANDS". The following list will be presented:
LD S D DS CAT LPRINT DEFAULT LRUN LLIST CC L SIREN
Here is what each command does and how to use it:
DEFAULT chooses which drive will be the default for the other commands which require use of a drive. Syntax is DEFAULT "name", i.e. DEFAULT "MDV1_". You must add
be
be almost anything, IN-
the "_". You can also specify any other type of storage device.
LD will load a program. Syntax is LD
Swill save a program. Syntax is S$ "filename".
D will delete a file from a storage device. is D "filename".
DS will delete a file froma storage device, save the program in memory as that file. Useful for dating programs. Syntax is DS "filename".
Syntax
then up-
1G
CAT will give a directory of the default drive.
LPRINT will print text to the printer through serial port 1. Syntax is LPRINT "text".
LRUN will load and run a_ program, MERGEs a program with JOS, then runs LRUN "filename".
LLIST will send a listing of the program in memory to the printer through port 1. Syntax is just LLIST.
CC will clear windows 0,1 and 2; the whole QL default screen. Syntax is just CC.
Lwill list the program in memory to window #2. Syntax is just L.
SIREN starts a siren sound. To stop it enter BEEP.
To use the commands, either type them in using
it is
(actually it). Syntax
their proper form, or use them in a new program. I had attempted to incorporate a NEW command, which would delete everything but the JOS program, but I kept
getting an error, and the QL would crash. I was trying to use DLINE TO 19000. Can anyone let me know why this won't work, or how I cah get it to work? Sometimes it would...most of the time it wouldn't.
y around, experiment, add your own commands. I have included some of the more useful ones, but I'm sure there are plenty more. Maybe you can add a routine to change the paper, ink, and border, or change windows around. Let me know what you come up with.
By examining this program and figuring out how it works, you will begin to get a good understanding of the power of Procedures. I haven't even started to exploit the full power they have to offer.
There is one feature of Procedures I would like to explain. While writing JOS I discovered for myself (by accident) that strings could be added after procedure names; I had thought only numbers could be passed into procedures. An example of this is:
DEFine PROCedure say (x$) PRINT x$ END DEFine say
The proper name of this procedure is "say". If you had this routine running on the QL, and then typed...say “Hello---it worked!" and enter "hello-~~it worked! will appear in window #1 (the output window, red). That is how I made the Procedures, such as DEFAULT. DEFAULT is the actual procedure name, and you enter a string after it, which contains other information. You must remember the quotes, though! Also, if JOS crashes with an error, just try again...no harm done. j
Remenber, experimenting and doing ‘is the key to learning. Fool around, try anything. If it doesn't work, keep trying, or else scrap it and start over! To con- stantly resave your own altered version of JOS as you work on it, use the DS command. It will allow you to save your current version, while you can continue altering. Remeber to save it as BOOT so it will auto load and run.
Let me know how you came along in your experi-~ mentations. If you have any questions or comments, let me know also. Joe Newnan, 325 West Jersey Street #2D, Elizabeth, NJ 07202.
JOS
20000 ce :CSIZE 2,1:PRINT 20010 PRINT 20020 CSIZE 0,
see JOS ACTIVE eke” "91986 by JOE NEWMAN”
SPRINT "Enter year or ENTER to quit” syearsiIF CODECyear$)<>0 THEN year=year$:
HCSIZE 3, 1:INFUT "year Cyy) ” INPUT "month", month? INPUT "day", day: IN
PUT "hour" hr HINPUT "Min." miniyear="19"&year {SOATE year,month,day,Ar,min, 0
20020 20040 20080 20060 20070 20000 20030 20100 20110 20120 20130 20140
CSIZE 0,0:BEEP 0,1, 265,1900,1 drives="flp1_”
PAUSE SO:BEEP:PRINT "hit > ink$=INKEY$: IF ink#="" IF ink$="i" THEN DEFine PROCedure DEFine PROCedure DEFine PROCedure call#=files file_names=drivesticalls MERGE file_nanes
ENO DEFine id
ld (files)
20150 DEFine PROCedure default (drivers)
20160 20170 20180 20190 20200 20210 20220 20230 20240 20250 20260 ce 20270 LIST #100 20280 CLOSE #100 20290 DEFine PROCedure cat 20300 DIR drives 20310 END DEFine cat 20320 DEFine PROCedure s (files) 20330 call$=file$:SAVE drivesacalls 20340 END DEFine s 20350 20360 20370 20380 20390 20400 20410 20420 20430 20440 20450 20460 0465, 0466, 20470
drives=drivers
END DEFine default
DEFine PROGedure LRUN (Tiles) calls=files
RUN
END DEFine LRUN DEFine PROCecure llist OPEN #100,ser
END DEFine lprint
DEFine PROCedure d (files?
DELETE drivesafiles
END DEFine d
DEFine PROCedure ds (files)
callé=files
DELETE drivesafiles
SAVE drivesafiles
END DEFine ds
DEFine PROCedure commands
ce {PRINT PRINT *—-
END DEFine commands
ce!PRINT "READY PRINTER Chit any key)":
RESTORE 20480:FOR LOOPER=1 TO 12:READ 20480 DATA "LO", "S","D", "DS", "CAT", "LPRINT”, "DEFAULT", "LRUN", "LLIST" "CO", "L",”
idce or basic”
THEN GO TO 20060
ICE:ELSE cc:STOP . ce 1CLS#O:CLSWZICLS:ENO DEFine ce
LILIST:END DEFine 1
TN
file_namesedrivesicall$:MERGE file_namot
AUSE 40000
DEFine PROCedure print (printers) OPEN #100, seriPRINT #100,printer$:CLOSE #100
“AVAILABLE COMMANDS FOR JOS”
COM: PRINT COM$:NEXT LOOPER
DEFine PROCedure siren:BEEP 0,1,1300,150,1:END DEFine siren
QU QuillsvWword Processor Tips PART I
By Mike de Sosm
I'd like to start off this article with a few tips regarding the QL QUILL commands. I assume that you are already familiar with the use of these commands.
The Copy command is not user-friendly. Follow the associated screen instructions carefully or you will, almost inevitably, lose desired material when copying. If large segments are to be copied, Save the document prior to doing so. The Copy command offers you two options in a rather tricky sequence: you can copy a passage from one location to one or more other loca- tions, first deleting it from its former position, or youcan copy it without first deleting it. Simple enough, but watch your step!
The Design command sequence can be used to ease your eyes. In most cases, your QUILL document formats should be no more than 64-colums wide. Set the "Display width" to 64-columns for easier viewing; you may then, like me, find that you no longer need your spectacles to use QUILL. ‘If you still experience eyestrain, try alternating between green and white letters for your main text. ~
1
In using the Erase command, keying SHIFT and the Down cursor highlights text to be*erased a paragraph at a time. Keying SHIFT and the Rights cursor highlights text a word at a time. If you go too far, use the Left and Up cursor (with or without the SHIFT key) to back up.
Make full use of the Header and Footer commands. Use Header to make single-line letterheads (use a specially prepared letterhead "doc" file for multi-line letterheads). Use Footer to include your address and telephone number, ect., in a single-line continuation of your letterhead at the bottom of each page. Don't forget that there is a "default" Footer that’ must be canceled, if not desired.
Don't forget to use Goto to move: through your docu- ment. This saves both time and wear and tear on your QL keyboard.
Justify can be used as a time-saver when entering
3+ FREE MONITOR!
YES! IT’S TRUE!! Just order a QL Computer and a QL printer from VARIETY SALES and you will get, absolutely FREE, a Magnavox (or equivalent brand name) Monochrome Monitor along with the proper cable and everything else you need to start a small business or home computer set-up:
Sinclair QL with 90 day warranty Magnavox (or equivalent) monochrome monitor Sinclair QL Near Letter Quality Printer
Psion Quill full-~feature Word Processor Psion Archive full~feature Data Base Psion Easel Business Graphing/Charting
Psion Abacus Electronic Spreadsheet All cables, manuals, wallet of 4 microdrive cartridges, power supply, ribbon for printer
At Commuter
And you get it all for just: $590
Send
check or Money Order +SIS shipping to:
for $599
VARIETY SALES SESS WEST JERSEY STREET #2D EwWLSABETH.,. MT oO72Zoz PHONE: : Bol —-S27—-osss5
BANK SWITCHING IS HERE! WIMKJET 1 lets you use @1l the Features oF
ERE TI your OLIVETTI PRESGG ink jet printer, /BE pain aa a - PIOHS if G MENU bUile universal interface, [Use your TASMAN, SERCO, or home brew parallel | Physaccd interface,
LPRINT speaks Fluent 2: ihe machine stack, Printing to the 2048 is fot j odeRe at the PRIZID GRA usualty desirable, So a universal interface is WOOP Y includéd, When used, the appropriate kernel i8 @l normed siz ded into the printer buffer, Because this ah “overlay” it does aot intengens with any usage by other banks or peripherals.
Nded ASCII, and is OSsdiglece,
PS the screen to the, printer in or ZOOM, LIST is supported in high resolution sraphics using We
WHAT YOU SEE IS WHAT YOU GET! WINDOW dumps part of the screen in variable
To help convince you of the great features of length lings up €¢ 11g characters per line, this Program, Send US ho more than 68 bytes oF Tes default configuration prints the Lower anu code you Like and SASE, TA WSDFUP Cao, Will@ two screen lines as 44 wade:
reiuri_a disassembly of thal code and wore info Tre WIDUUP Co, word processer/data base
@bout TOURIST C. How's that for bait? Try it. | program TypoLot uses WINDOU tO Prepire ads this and the ona to left,
: WINKJET. 1 : TS23849 w/OLIVETTI PRIZEZQ printer TPBINTF SSB
Tt WADSUP Co. Program: TOURIST C 1128 MH ifietd S.E. Order Wh: TS25PYSGsR Grand Rapids, MI 49507 Price: $32.58 inc wh
58 $2
WIDJUPEEL WINDOWS ON GORILLA BANANA... OrderHT7LINTF86B $14.95 + $1.58 S&H TyPaLot Jl WORD PROCESSING On PR230G...0nderHTSiWDSJ86B $18.50 + $1.58 S&H TyPOLOt GB Ditto for GORILLA BANANA....Order#TSiWDS5868 $18.58 + $1.50 S&H
QL Quill
multi-line, centered headings or titles. Executive-level correspondence is not usually right-justified; use pro- portional spacing or “near letter quality" (High Quality on your QL printer) typeface for this, if your printer has such features. The justification selected applies to the current paragraph and all following text, until you again change justification.
Prepare short "_doc" files for each of your fre- quently used document formats so you don't have to set- up and format QUILL each time you wish to prepare such a document. Include such things as letterheads; Design settings, margin, and tab settings; Headers and Footers; introductory paragrephs, closures, and signature blocks. SAVE these to your program cartridge or disk and Load the appropriate “doc” file when beginning a new docu- ment. Include the title and purpose of this mini- Gocument and its parameters in text. Don't forget to change the name of your document file before SAVEing it for the first time or you will overwrite it.
Use Margins command efficiently and imaginatively. If you set the Indent margin to the same value as the Left margin and use ENTER as you would a carriage return, you are misusing QUILL. ENTER (or the Down cursor key) should only be used to begin a new para~ graph; otherwise, scrolling by paragraph for any purpose will be greatly slowed. Instead, use the SPACE bar to move the cursor to the end of a line, or, better yet, the TABULATE key: neither of these methods initiate a new paragraph. Remeber, too, that the Indent margin may be set to the left of the Left margin, useful for typing numbered paragraphs and for other purposes.
Remember that the Print command may be used to print a hard copy of all or a portion of any QUILL ("_doc" suffix) document on any on-line medium--a very useful feature, if you keep a good index of just what is on what page of certain key documents. Note that in the Print command sequence you may call for a directory of the data medium in the usual manner. Try this, you'll like it.
Print may also be used to print all or part of any QUILL document to a Microdrive or other type file. Such a file would have the “_lis" suffix (unless another suffix, e.g., "_exp" were specified) and cannot be Merged or Imported into QUILL, not printed using the QUILL Print sequence. Such files are useful for a number of purposes, including "print spooling", i.e., printing such documents without QUILL or alongside QUILL using
special software, or printing such documents from Super- BASIC using:
COPY MDV2 QUILL lis TO SERL
The “_lis" and "exp" “files” produced using the Print command are printed or imported in print fashion, that is, if they are double-spaced files, they would be printed double-spaced on your printer or on your monitor screen.
The print-to-a-file option of the Print command sequence may be used to print an export file (the "exp" suffix must be appended to the filename) from any Gocu- ment file on storage media. This file may then be imported into the current QUILL document file using the Import option of the Files command sequence. This is a quick and excellent method of "cutting and pasting" passages from among several QUILL documents, expecially if the working files are loaded onto RAMdisk.
Finally, before starting to print, QUILL reads the current printer driver (printer _< dat file) information from your designated (using config bas) program medium (i.e., MDVL, FLP_, RAM, ect.). This printer driver data may be selected from among several sets of such data from within QUILL using the Delete and Backup options of the Files command sequence. For example, store several printer drivers on your program medium as printer] _dat, printer2 dat, ect. Then, before printing, decide which printer driver is to be used and delete the current printer_dat file using the Files command option:
Delete mivl_printer_dat 1
Then copy the appropriate printer driver to printer_dat using the Files command option:
Backup mdvl_printer2_dat to mévl_printer_dat You are now ready to print, and your selection of printer drivers is intact.
It may seem to you that the Quit command does not always work in the same fashion. If the current QUILL document is amended in any way, you must either Save the document or take a positive measure to zap it before you are permitted to Quit, otherwise, you may quit almost directly.
Make full use of Tabs, but do not use more than you need as this will slow down using the TABULATE key as your carriage return as recommended above.
The Files command options (Backup, Delete, Format, and Import) assume that (default) your designated data medium is the device desired unless this is otherwise specified. Backup and Delete assume "_doc" file suffixes unless otherwise specified. Import will only import files with the exp" suffix. Frequently overlooked, these command options offer good flexibility in file management, cutting and pasting documents, and selecting alternative printer drivers.
Use of the Hyphenate command is good practice, but incredibly slow. If you have some kind of "key define” software, this is a good candidate for translation to one or two keystrokes. Use Hyphenate during final editing of a manuscript to reduce overly wide gaps on the printed line: just remain in the Hyphenate sequence as you scroll through the entire document.
For safety's sake, always Save the current document before attempting to Merge it with another. If only a minor part of another document is needed, consider use of the QUILL-to-QUILL export method described above.
Like Hyphenate, the Page command is a good candi- date for translation to a single or double-keystroke. I have found that QUILL ofter "locks up" when I attempt to eliminate a page break and recommend that you Save the current document to a permanent storage medium before attempting this.
Use the Replace command to semi-automatically search for and correct words that you frequently mis- spell or to correct a word that you later find was misspelled. Replace may also be used for many other purposes, for example, completely deleting certain words or punctuation marks from your document.
DRIVER NAME QL_PRINTERT
PORT SER)
BAUD_RATE 9600
PARITY NONE i LINES/PAGE : 66
CHARACTERS/LINE
80 ‘ YES (if using fanfold paper) or NO Cif not? CRLLF
PREAMBLE CODE 27,64,27,82,0 ENTER POSTAMBLE CODE NONE.
EMPHASIZE ON 27,69 ENTER EMPHASIZE OFF 27,70 ENTER UNDERLINE ON 27,45,1 ENTER UNDERLINE OFF 27, 45,0 ENTER SUBSCRIPT ON 27,83,1 ENTER SUBSCRIPT OFF 27,84 ENTER ‘SUPERSCRIPT ON 27,83,0 ENTER SUPERSCRIPT OFF 27,04 ENTER ‘TRANSLATET $ 96,27,82,3,35,27,82,0 ENTER TRANSLATE2 : *CS/P,27,112.1,14,27,71 "SPACE ENTER TRANSLATES *CS/1,27,82,27,69,27,71, "SPACE ENTER TRANSLATES “CS/S, 27,72, 27,70, 27,53, "SPACE ENTER TRANSLATES: “CS/E, 27,77, "SPACE ENTER TRANSLATES. “CS/R,15,27,71, "SPACE ENTER TRANSLATET "CS/B, 27,71, "SPACE ENTER TRANSLATES: “CS/H,27,120,1, "SPACE ENTER TRANSLATES "CS/Q,27,120,0, "SPACE ENTER TRANSLATE1O "CS/Z,27,112,0,18,27,80,27,72, "SPACE ENTER
3
Figure 1. QL Printer Typeface Codes
QUILL Typeface Options
There are several ways to insert additional type- face commands in a QUILL document. Most of these require use of the INSTALL BAS (see the “INFORMATION section of the QL User ie) program to modify the preamble code, the standard QUILL typeface codes, or the ten “translate” options offered on each printer driver.
Printing is controlled by a special program called the printer driver or PRINTER_DAT file which may be modified to work with different printers and to produce customized results. Appropriate printer driver data for a number of printers and your customized data is stored in the INSTALL DAT file. The INSTALL BAS program is used to select and modify (customize) printer driver data and to "install" your selection in the current PRINTER_DAT file. QUILL, itself, uses only the PRINTER DAT file on the program medium which it consults before printing each document.
The examples given below are for the Sinclair QL Printer. Use your printer manual to modify the examples shown for your printer set-up.
Figure 1 is a depiction of the printer driver in- formation in the edit mode of INSTALL BAS. In this de- piction, decimal codes are shown for the entries under PREAMBLE CODE, ect. Select the FX-80 line and key Fl to make a copy of it, and then F2 to edit it to be like Figure 1. When you have entered the decimal code for a given line, check it very carefully and then ENTER: at this time, the decimal codes will change to alphanumeric codes. To set in the codes for TRANSLATE2, et seq., pro- ceed as follows:
a. Select the line for editing with the carsor key.
b. Type a" (using SHIFT '), then CONTROL SHIFT P followed by a comma, then the following numbers each followed by.a comma: 27,112,1,14,27,71,
c. Following the comma after the last number, type ", a space (using the space bar), and then key
right
In explanation, "CS/P and the symbol it produces signal QUILL to send decimal codes to your QL Printer: 27,112,1 are the code for proportional spacing; 14 the code for double-width printing; and 27,71 the code for double-strike (darker) printing. In a QUILL document then, keying CONTROL SHIFT P depicts the Greek letter mu on the screen and orders the QL Printer (and many other printers) to print the following text in double-width, double-struck letters with proportional spacing.
CS/I directs bold, double-struck italics.
cs/s terminates italic printing.
CS/E directs Elite (12 cpi) printing.
S/R directs double-struck Condensed (17 cpi)print.
CS/B directs bold, double-struck print.
CS/H directs High Quality printing (use the decimal codes 27,66,4 with other printers--or check your own printer manual).
CS/Q terminates High Quality printing (use the decimal codes 27,66,5 with other printers—-or check your printer manual).
CS/Z terminates the following:
1) Proportional spacing
2) Elite (12 cpi) printing
3) Condensed (17 cpi) printing 4): Double-strike printing
Experiment using all of these ina text document. Become familiar with the symbols and effects each command produces. Check which may be used in combination (there is a priority system which precludes some). Check your printer manual to see what else may be done, e.g., Mode Combinations using the Ql printer.’ Most printers should make use of these codes with only minor changes. If you have any questions, write to me c/o TIME DESIGNS.
A Promising New Product
QATS, a powerful QL utility designed to reduce the number of keystrokes required to perform housekeeping chores and manage other computer tasks, is pronounced “cats" because it gets rid of "mice". QATS, for QL Applications Traffic Supervisor, is, among other things, an attractive alternative to such programs as I.C.E., with or without a mouse (though not for CHOICE, since it does ‘not--as yet--have a multitasking capability).
QATS is "menu-driven" (menus may be tailored to your needs)--only two keystrokes are required to call any of the Psion programs--and provides facilities for the following tasks:
a. Initiating and returning from the Psion pro- grams.
b. Initiating, managing, and returning from other EXEC'able programs.
¢. Sophisticated wildcard filename processing.
d. Fast file copying and deletion—-en masse or selectively.
e. Formatting media.
£. Alphabetical media directories with file lengths
g. Comprehensive printing package, including print
drivers and spooling. Due to an equipment malfunction, I cannot give a fuller description of how QATS works at this time, but I did want to call this very promising piece of software to your attention. QATS is available from: COPE, 3 Langham Mansions, Earls Court Square, London, England, SW5 9UH, U.K. QATS and its Output Control (an extension of QATS) sell for $35 and $25, respectively and are available in and EPROM version.
pea eg i |
That's all for now. Next time: more on QL QUILL, including using it with floppy disks, RAMdisk, and some
exotic software. i
Now Available! “THE BEST OF SUM, PART II”
Over 60 pages of program listings, reviews, hard- ware projects, hints and tips, and articles. Covers TS-1000, TS-2068, and QL. All are reprints from the last year of SUM plus a few that didn't make it into print before now
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. Does overlap the “Special Issues” advertised to the right
56.95 postpaid
The original “THE BEST OF SUM” is now in its 2nd printing. 112 pages of articles going all the way back to the beginning of Sum — 3 years worth!
511.95 postpaid
QL Special Issue (12/85) — *3.95 postpaid TS-1000 Special Issue (5/86) — *3.95 postpaid.
Everything! §20.00 postpaid
FOOTE %%, SOFTWARE P.O. Box 14655 — Gainesville, FL 32604 904/462-1086 (6 pm - 9 pm EDT)
2068 TAX (5\(6)=) CALCULATOR
Cio ©
One of the most rewarding and interesting aspects of programming is in designing accurate and meaningful programs for business application...and our TS2068 (and 7TS1000) are highly adaptable to this purpose. (Mr. Sugar please pay attention!)
Being a retired Federal Auditor, I have always had a profound interest in accounting and tax programs. I currently keep several sets of books for small business in my area and rely entirely on my 2068 to do most of the work. During tax season for the past two years, I have used my 2068 (and my 1000 before that), to perform the complex calculations required in the preparation of my clients returns.
I have seen several tax programs that have been produced during the past several years. I have even had occaison to work with one highly praised program written for the Apple. For the most part, the programs (in cluding the one for the Apple) left much to be desired. They appeared to be "word processor" programs with an add/subtract function...you still needed a calculator, a scratch pad, and a stack of charts and schedules and a lot of patience to operate them,
A truly dedicated income tax program should require you to have nothing on your desk but your computer, your W2's, some receipts anda cup of coffee. It may be helpful to have a manual nearby (Lasser is about the best), just in case you have to check some theory, which is impossible for your computer to do (so far).
The main program itself is a snap to write. after all, the entire pseudo-code is already written for you on the tax form itself. The only thing you need to do is assign variables to the lines on the form, and you're in
Sr.
business. Setting parameters for some items would be helpful and this would allow the computer to alarm you for values that could trigger an audit. ‘hese figures
can be found in most good manuals IRS), and are programmable.
That brings us to the various calculations required to determine the taxable or deductible values of certain items on the return (i.e., Social Security, retirement income, IRA's, marriage deduction, ect.). These can be found in the instructions for the official forms, and are easily programmable as sub-routines.
All of the attached schedules can be easily pro- grammed including schedule "C" and simple schedule "D". Schedule "G" presents quite a challenge for the pro- grammer, but can be done. This one is really fun to write and you have a really warm feeling of accomplish- ment when you complete it.
This brings us to the actual tax calculation it~ self. Equations used to calculate taxes as with most accounting equations require only basic arithmetic skill (addition, subtraction, multiplication and sometimes division). In fact if any higher mathematics were essential, I would have gone into worm-farming instead of accounting!
Now two methods are used to determine tax lia— bilities. Note that I said "are" used, and not "may" be used. There are the X, 2¥'s(?), and Z Tax Rate Schedules and then there are the ever popular Tax Tables.
The Internal Revenue Service in their infinite wisdom, with the help of Congress, gives us no choice. In fact, that freedom is not even addressed in the U.S. Constitution. If your taxable income is less than $50,000 per tax year you MUST use the TAX TABLES to
(but not from the
on
calculate your tax liability. (An exception is the use of schedule "G", and the use of form 4972--Special 10 Year Averaging, which only determines the tax on spe- cific types of income and not your total taxable in- come). Now looking up a figure on a Tax Table appears to be a fairly simple thing to do, and one would think that any eleven year old would accomplish it with ease. But not only are the Tax Tables (with their 4,932 separate brackets) NOT easy to use, but they are one of the great inequities that exist in the current tax system. Actual IRS statistics show that more HONEST mistakes are made in this area than any other.
Tax Reform is not the subject of this article, so now let's get back to business. The IRS in preparing the Tables did not just pull the figures out of the air, but did apply a specific formula. You can't call the local IRS office to get the formula, because I doubt that the "voice" on the other end of the phone would even know what it is.
It took a few hours of mostly "hit and miss" calc- ulating, but I finally figured out the precise formula used by the IRS programmers. Once I had the equation, breaking down the X¥Z schedules into DATA statements was no problem. Then I set out to write the algorythm to calculate the tax. It is necessary to calculate the tax twice at both the upper and the lower bracket parameters for the particular taxable income. This should produce the exact tax found in the Tax Table. Simple, right? Wrong!!! For some reason the IRS computers, billed as the "most sophisticated computer system in the world", goof-up once in awhile. This is not the ordinary com- puter goof that may occur due to binary conversions, but goofs in entire sections of the tables. This year, it only occured in one small section of the tables (which is an improvement over past years). I told an auditor at a local IRS office about it last year. He just smiled and said, "Well it's only a dollar off!". True, but it's our dollar.
Since most of us MUST use the Tax Tables, we must also use the correct figures. Therefore, in the Tax Calculator program that follows, some calculations with- in the DATA itself were necessary so that our 2068 could compensate for the inadequateness of the IRS computers. Line 9512 [DATA 131.9-sch] Everyoné with taxable income from $3,700 to $5999.99 will be charged an extra_ buck. Line 9522 [DATA 0-((ta?3670 AND (ta>3700))+sch)] Tax- payers with taxable amounts $3670 to $3688.99 will get a $1 break. Hey IRS! "It's only a dollar!".
All that is left for you to do now is to type-in the sub-program and work it into your own main program. The program itself is lines 1100 thru 9544. The INPUT and OUTPUT variables are detailed in the REM at 1100.
feseeusibs aeaecec haere! eer $1040 U's inaividuatincome Tax Return a Bae ee een ay eer ma 7 Lull Preseni home $s (Number and street, wi eee 1200 CIT4 “BQIG Kime | Amy eeece OSPR O79V2 Sa
2068 TAX CALCULATOR 1182 LET
be =254 (10330) #25) LET bisINT (tavbri: LET be lebr LET bosbe¢+br Lines 100 thru 160 are a test module. Plug in some LET L=b2/100 figures and then check them against the Tax Tables that 1460-00 SUS 1200: LET List came with your 1040. Since the test module is only in- LET (sb37100
tended to test Form 1040, 1040A & EZ, it is necessary to put in a dummy variable (sch=0) so that the program will calculate Tax Table tax. If you are going to calculate tax for other forms or schedules, "sch" should be set to 1 (true),
I would like to get some "feedback" as to how you liked this program, and if you would like to see some more along the same lines. You can either write to TIME DESIGNS, or you can write tome direct. I'll give you "sudden service" on answering any questions. You can locate me here, behind the same old stand at 2588 Woodshire Circle, Chesapeake, VA 23323.
GO SUB 1220: LET t2=t
LET tax=INT ( (1412) 724.5) RETURN
RESTORE data: LET lo=0 FOR fai TO 15+¢fs=4) READ hi.plus,pct IF slo AND i¢=ni THEN LET L=(t-lolepct+plus: RE LET Loshi: NEXT f: RETURN
9500 REM Btax calculation datall
@>REM 1986 #eFederal Tax Calcutatorss by: herb bowers, sr. December 1956
180 REM HTest Module 1m
a40 LET sch REM dummy variable
INPUT “Filing status (1 To Fs: PRINT “Filing Status
INPUT ("Taxable Income 1040, Line 3 140A, Line 7 Line iota: PRIN
140 PRINT "Tax Liability 150 GO 5UB 1100 160 GO TO 12a
@ REM Mtax calculation
INPUT: ta=taxable amount fs ng_status os) $532 DATA_18.35,0,0,29.7,0, sche schedule or
other than 1e40A or EZ
OUTFUT
liability
2110 LET L=ta: LET telvia0 LET data=9500+(fs#10) = Ct fs25) 430)
4120 IF NOT sch AND ta<saoaa
124.85,12,64.2,260.45,14, 66.35, s$3s.as° 16,109,939.65,18,132.75,1 347.35,22,161.95,1864,85,25
9534 DATA 169,9,2584.95,26, :3984.25,33,323.75,5271.85, 1.85 ,8184.55,42,590.25,13964 45,876.25,19762.75,49, 1536 , 33 -75,5@
THEN GO TO 1140
S540 REM Mhead of householdllt 1130 GO_SUB 1200
S as 9542 DATA 24.5,0,0,47,5,0,11,70. Ber Rae sane, CLETOO re L A208: 2,249.7,12,93.9,520.9,14,4137.3,8 S4.2,47,161.9,3421.9,16,150.4,20 Yano. eno 44..7,20,25316,2734.7) 24 5 OR gS44 DATE $10.8,4107.5,28,558 87 ry 2s ’ 26 2D.
“ANB ta r S5@} THEN §43.5,42,882.7 $18746 §.45,1168.7
@: RETURN 729042.5,48, 1635 ,42770.5,58
GRAPHEX-PANDER Sideways Graphics Utility for Gorilla Banana
By John Memmi chaet
The following program is a BASIC screen dump pro- gram for the Gorilla Banana printer with the Aerco (or Oliger) printer interface. The "heart" of the program is the POINT (x,y) command. what it does is to test screen pixel (x,y) and return a 1 if it is INK coloc ora 0 if it is PAPER color. The program uses this information to expand each INK colored screen pixel into the resulting 2X2 dot printout.
To use the program, first LOAD, MERGE, or type in the GRAPHEX-PANDER program. Next LOAD or otherwise pro- duce the screen that you want printed. Turn the printer ON and type GO TO 9800. DO NOT RUN the program as the screen will be cleared. Be patient...the program is written in BASIC and is therefore painfully slow. A full screen print-out will take approximately 21 minutes.
Ihave compiled the progcam and it does a screen printout in only 4 minutes. It is 576 bytes and resides at 60000. For those of you wanting faster machine code version, please send $4.00 to: McMichael, 1710 Palmer Dr., Laramie, WY 82070. I also include a copy of the BASIC programas it is sented here, on the same tape.
The sample graphics screen printout shown, was made with the program ART STUDIO and GRAPHEX-PANDER.
full long this John will pre~
T/S MODEM-ing
Even though you might have the very best graphics programs for the TS2068, it still takes a lot of time and talent to create anything that remotely resembles act. Wouldn't it be nice to ~get copies of computer graphics that..."more talented" people created for their computers?
Well, there is! COMPUSERVE (for example) has li- braries of computer graphics that you can "download" to your computer and enjoy...with a minimal amount of effort! What you need is a modem, a subscription to CompuServe (for example), and the following RLE decoder program. RLE graphic files are hi-resolution graphic pictures that follow a "standardized" format compatible with just about any computer supporting high resolution graphics. The TS2068 will support RLE Decoded graphics in the 32 column video mode.
John Ryan has supplied to CompuServe subscribers, several files related to the subject of RLE graphics: an ENCODE program used to take TS2068 graphics files (like those of the Pixel Sketch and Graphics Editor--for example) and convert them to the RLE format to upload to CompuServe. There is a DECODE program to convert an RLE download picture to the TS2068 format; and there is an information file that goes into detail concerning RLE format structures. For now, we will only be concerned with the DECODE program.
The following program is a modification of the one supplied by John Ryan. The program performs thousands of calculations in the conversion process (RLE to 152068) and is very time-consuming in BASIC. It will work as is, but very, very slowly. For all practical purposes, one really needs to compile it. LISTING #1 presents the pro- gram as used directly from BASIC. Simply type in the Program, SAVE it to tape by typing: RUN 9999 [ENTER]. When you LOAD the program it will auto-run and begin prompting you to PLAY the tape holding an RLE coded file.
LISTING #2 presents a copy of the program as I use it...part A is BASIC and does the LOAD (RLE file) and SAVE (TS2068 SCREENS) functions, part B is the basic
2919 GO SUB 9950: IF v<173 THE!
9935 9340,
2345 REM Output to printer via 9990 LET bet IF 16¢t THEN LET
LET t13! GO SUB 9950: LET x=x+11 G0 TO 931 925
GRAPHEX—PANOER
REN Put Banana into GRAPHIC MOLE & initislize variable: LET teBt GO SUB 9980 LET x=0 ve
LET t=t28
REN Expand to @ dots X 2 dots each "ON" screen pixel using POINT Cxyu). TF POINT Cxsy> THEN LET tates
LET xextit IF POINT Cxsu2 THEN LET t=t+12
LET xextit IF POINT Cx»u2 THEN LET teteae
LET xext1i IF POINT Cxs4) THEN LET tetvss
REM Loop to build @ Line of graphics in printers? buffer.
9 GO SUB 9950; IF yCi75 THEN LET veuett LET xmx-31 GO TO 9615
REN Print the arachic line. LET ta13! GO SUB 9950 LET veo) REI Exrend to 2 dots X 2 dots each “ON” LET tet@et IF POINT Cx»4> THEN LET t=t+1 REM IF xe255 then GOTO 50a For spacial lest line printout, IF 254<x THEN GO TO 9930 LET xext1i IF POINT Cxs4? THEN LET t=t+6 CET xextt? IF POINT ¢x,99 THEN LET te t+2s LET xextit IF POINT Gcoy) THEN LET t=t+56 REM Looe to build @ Line oF graphics In printers? buffer.
NH LET veyrt: LET x=x-3! GO TO 2875 REM Print the sraphic line.
screen pixel using POINT Gow.
1310 EM Speciat branch For (ast Line print=out.
Stops & returns printer to NCRMAL MODE when done.
@.60 SUB 9950! IF 174<y THEN LET t=19: GO SUB 9950! LET t=151 GO SUB 9950:
LET weuett IF POINT C255,\y) THEN LET t=129: GO 19 9930 LET t=i28: GO TO 9930
Oliser or Aerce centronics LF. bse
9955 IF IN 1275253 THEN GO TO 9955 2369 OUT 427,t LET beb-1: IF b THEN GOTO 9955 9965. RETURN
RON LENGTH ENCODED GR@PHICS
By Stan Lemke
basic code as prepared for the TIMACHINE BASIC (from Novelsoft), part C is the output from MACHINE compiler when I compiled part B (this will know if you typed part B of the program rectly). Type and save part A, part B (SAVEing as directed). LOAD part A, LOAD the compiled code at location 30000 (LOAD "" CODE 30000 ({ENTER], and SAVE this all to tape by typing RUN 9999 CENTER].
Once you have "downloaded" an RLE file from Compu~ Serve (for example), save this to tape for RLE decoding. (Use GO PICS on CompuServe to get to the RLE liabrary. I use MTERM II with [none] conversion and the DC2/DC4 download protocol from CompuServe. Save the RLE code using : SAVE "RLE.PIC" CODE 26710, xxxxx where xxxxx is the bytes-used parameter from the buffer). NOTE: Compu- Serve DC2/DC4 will automatically open your buffer and transmit the file when transmission stops, press ENTER. The RLE file will appear to be random Jetters and char- acters on your screen...an ASCII equivalent of the graphic code
fo run the RLE decoder program, LOAD the program. It will auto-run. "Play tape to LOAD the RLE file" will be displayed. Play the downloaded RLE file. Immediately the picture will begin to form (somewhat slower in BASIC). The RLE conversion process will take a few seconds (15-20) compiled, 20-30+ minutes in BASIC! All 24 lines of the picture are shown on ‘the screen. The last 2 lines take a few seconds to develop in the com- piled program (you will think that the computer has died in the BASIC version, but be patient...once the picture is completed, a series of BEEPs will signal that the picture is done. Now you have a few options available to you at the press of a key:
PRESS C to send a COPY of the screen to the 1S2040 printer.
PRESS I to invert (exchange paper and ink)*
PRESS S to SAVE the picture to tape**
‘*Note: RLE pictures use white ink on black paper, 2040 printer will print ink black and paper white.
COMPILER the TI- way you in cor- type-save-and compile
the So
RGN LENGTH ENCODED GRAPHICS
you must use the INVERT function to switch these before printing. Try printing both images.
‘Note: When you SAVE the screen/picture, a copy of the screen is copied into high memory. This takes about one second in the compiled program, but mich, much longer in BASIC. When transfer is complete, you will be asked for a file name. Then this high memory version is SAVEd; this is done to SAVE the entire picture. When you SAVE anything, the system destroys the bottom 2 lines of the screen with the SAVE messages. This process preserves
these lines, and restores them to the screen when the SAVE is completed.
CompuServe has a wide variety of RLE files in their libraries. These include: New RLE uploads, Art Exhi- bition, Popular Faces, Sci-fi, Fantasy, Cartoons, Animal Kingdon, Japanimation, RLE Greetings,
Fish and Fowl,
1 REM #¢eeeeeseeseeeeeeeeaeeE
RLE sBaASsIC Run Length Encoded Graphics
Original program by John Ryan Presented With author’s consent
Modified by 3D Lemke
Lemke Sortware Development 4 White Da
Wichita, Ks. 67287
FESPEESER EERE REET E EEE EEER EEE EEEE
50 DIN Lg(4ag6)}: GO TO 400
180 LET D=0
410 IF X>255 THEN LET x=X-256:
ET Y=¥-1
20 IF ¥<@ AND _Y>-17 THEN LET Lb $CC(OBS Y)-4) 35584X42) S42": GO Oo 140 125 IF Y¢s-17 THEN RETURN 238 PLOT _x,¥ 140 LET D=D41: LET X=X+i 450 IF B=C THEN RETURN 169 GO _To 112 200 LET C=PEEK A-32 220 IF o<s@ THEN RETURN
eo BES THEN LE
bo OR Nze4s08, 72 24 585: READ POKE N,X:
410 DATA Bist Beige, ibs, ain REM Fut Screen Cop P ET I=?: BORDER & NK I: cis. 240080: LET X=8: LET ¥
449 TE PEEK Aco72 THEN LET Asas 1:_60 TO 115875, PEEK Aco72 THEN LET A=A+
EABLET Acne. S58 GO SUB 302 S55 IF C<a THEN GO TO 620
S60 LET A=At: 18
Listing #1
Potpourri, and the Sysop's Favorites! The enclosed pic- tures were downloaded from CompuServe and are presented here with their permission: The Mermaid is an RLE copy of an art work by Maryiln Morey; the Augmented Lunar Module was provided by the Picture Support Forum. They were Decoded, then printed with the Pixel Sketch and Graphics Editor (large size mode) with an ‘SG-10 printer.
In addition to the many RLE file libraries, Compu- Serve has a Picture Support Forum dedicated to online computer graphics. The forum will keep you up-to-date with bulletins, message boards, and courtéous help from the system operators (sysops). In this regard, I would like to thank CompuServe and Larry Wood for the help and cooperation I got in putting this article together. Thanks Larry! Also, I would like to thank John Ryan for the use of his RLE decoder program. Now we can all enjoy with anticipation the downloading of RLE graphics, the magic of decoding the file, and watching as a work of art is painted on our computer screens! It only takes a few minutes to turn any day into Christmas again.
578 GO SUB 200 575 ie <@ THEN GO TO 623 5
SAL a0 TF ova THEN co To 602 GO SUB 120 605 IF Y¢=-17 THEN GO TO 520 619 Go TO S58 620 PRINT #1;AT @,8;: FOR Z=a T
839 FOR Yo1 TO 256 STEP 8 MaZeS41 TO 74348
@ LET b=0
660 FOR N=@ TO 7: IF L$ ix-1)42 S6+V4Ni s"1" THEN GO SUB sso
678 Ni N
IE: POKE USR “Hi
4K-1-153E:0
NEXT _X PRINT #1; PAPER P; INK 1; °H) NEXT ¥ NEXT _Z R Z=1 TO «1,2: BE
FOR Z= 5S: BEEP 8 oie NEXT Z: PAUSE oa: LET Is 749 IF Ig="c" OR Ig="C" THEN RA NBgRIZE USR 24500; LPRINT
EY S="I" svi" THE N "FOR Nzisese 10 22827" LET X=PE 255-x: “oR I #1;AT 0,8; FOR Sil POKE (Spoeseh) PEEK” ti63B4eH) xT 60 TO 330
738 820 FOR M=8 TO 6911: POKE (1638 eaND PEEK {S@OI+Ms > NEXT HM: GO
850 IF N=? THEN LET D=D+1: RETU
RN
Ag? FF N=@ THEN LET DeD+2: RETU ag7® IF N=S THEN LET D=D+4: RETU 880 IF N=4 THEN LET D2D+8: RETU
THEN LET D=D+i6: RET THEN LET D=D4+32: RET THEN LET 0=D+64: RET
THEN LET D=D+128: RE 938 GO TO 1200
940 Stop
1810 REM DECODE.RLE
1020 CLEAR 3999
40390 REH
188 CLS
ay your TAPE : LOAD "CODE
1118 GO To Se 1200 INPUT 8@;AT 2,2; "File Name Zgib LINE n&: SAVE NSCODE sBDee,
1218 Go
TO S20 9999 SAVE “RLE.DECODE” LINE 1020
nes 682 and 702, the “A”
is ups a GRAPHICS A
Listing #2-A 1005 REM 20000
RLE -- DECODER
RLE SAVE/LOAD program... used with the RLE Compiled BASIC
AUG UOIO GIO IGG IO OOK OK
1010 REM DECODE.RLE
1020 CLEAR 39999: LOAD "RLE.DECO DE"CODE 30000
1090 REM LOAD
1100 CLS : PRINT "Play your TAPE to LOAD RLE file.": LOAD ""CODE 40000
1110 RANDOMIZE USR 30000
1190 REM SAVE
1200 INPUT #0;AT 0,0; "File Name = "; LINE n#: SAVE n$CODE 50000, 6912
1210 RANDOMIZE USR 31265
1220 GO TO 1200
9999 SAVE "RLE.DECODE" LINE 1020 : SAVE "RLE.DECODE"CODE 30000, 19 79
Lasting #2-e
1 REM s¢¢3eeceeeaseeeeseseeee
Compited RLE BASIC Run Length Encoded Graphi
Original program by presented with author
Modified by 3 D Lemke
Lemke Software Deve
2144 White Wichita, Ks.
del et io ete t +++ eli
OPEN # 5Q@ DIM L$(4ag6): Go LET b=8 130 IF X258 THEN LET
LET Ysy-. dea IF ¥<@ AND_¥>-17 Tt acSiaee Yi-2) €2564+%41) =
125 IF vai? THEN RETURN 130 PLOT Xx, i4@ LET D bia: LET.X=X+i 250 IF D=C THEN RETURN 160 Go To 110
200 LET C=PEEK 98-32
210 IF aah THEN RETURN
320 ter C=sPEEK A-3e o<=8 THEN RETURN +
2 ie: 245000: LET
=175 449 IF PEEK A<>74 THEN LET A=A+ 1: GO TO 449
453,75, PEEK Ac>72 THEN LET A=A+ 540 eae fers, S55 oe a8 TREN Go TO 620 S60 LET A=A+i 572 GO suB Baa S75 IF C<@ THEN GO TO S20 LET AsAs1 59@ IF C=@ THEN GO To 55a
Augmented
Lunar Module
13
GO SUB ioe
IF ¥<=-17 THEN Go To
Go TO Sse
PRINT #1;AT O,8;: FOR Z=0 T
FOR Y=1 TO 256 STEP 8 FOR XsZeo¢1 TO Zs5+5 —T D=2
700 PRINT #1; PAPER P; INK 32; "a
710 NEXT ¥ 720 NEXT Z
730 FOR Z=1 TO S: BEEF .1,2: BE Saykeva NEXT Z: PAUSE @ LET Is
Igs"c" oR Co THEN 8A
NOOHIZE USR 24500: INT 750 IF INKEYS="I" OR Tgs"i" THE N FOR N=16964 To gebe7: LET XaPE
aah) apEEK (500004) + "350 IF ®7 THEN
660 IF THEN RN
Ra’? TF NeS THEN 1! 380 IF N=4 THEN $690 IF N=3 THEN URN
900 IF THEN URN
910 IF N=1 THEN 820 IF N=@ THEN
930 REM! CLOSE & stop
OTE: Lines 53a RAP
N 788, the “A” is UDG A, GI +
RTL 315 RT2 Sis RTS 315. RTS 31s: RTS 3isss RT1a 31564 RT11 31573 RT12 $1574 RTS 31583 ATi4 3isss eaTis 31532 RTis 31599 RTO 31685
RTS. 31613 #7870
RT22 Si6el #7685 aTeS B7BS. RT29 #7BaF RT33. #7BCB RT4S #7608 RTSO H?BES RTSS #?BFO RTSL R?BFS RT62 #7c25 RTSS, B2C30 RTS9 B7C44 RT7O #7851 RT?i 87059 RTSS #7C05F RTOS #7058 RT1a5 #7070 RT112 #2078 RTiLT B707F RTi1g B7ce? BTiS #7092 RT117 7O38 RT1B2 7OSE RT12¢ $1910 #7CHS
#7CRB
We stopped last time in mid-description. It seems our Good Editor has such a wealth of excellent contributions last issue (besides mine, I mean) that my article had to be cut to fit the space remaining. This is just fine; my volumninous verbage often takes up so much space that I worry that I am pushing many worthy euthors from these pages.
I don't have to worry about that anymore.
In any case, we'll just continue where we left off last time. We were discussing flowchart 4, which shows the building of the SYSCON table. You'll want to tuen back to the last issue, read the final 4 paragraphs of the last installment, and continue here (back issues are available)...
We know that expansion banks could control extra hardware (printers, disk drives, ect.), but they also could have caused an interrupt, by grounding the INT line on the backplane, with an Open Collector driver.
The subject of interrupts is far outside the scope of this series, but they effectively cause a special subroutine to be run due to an external hardvare signal, rather than the execution of a CALL statement. In the standard 7S2068, an interrupt occurs every 1/60 second, causing the keyboard scanner to be run. De- pending on the hardware causing the interrupt, it may need a fast response, or it may be prepared to wait all day to be serviced.
A bank switching interrupt handler would have had to poll each bank to determine who caused the interrupt (or wether it was just a request to scan the Keyboard) and this takes time. The ability to renumber banks according to an interrupt priority would ensure that the banks that must be serviced fastest also have the lowest bank numbers. This makes it easy to check the critical ones, first.
Now suppose that when we installed the bank number, the bank really DID exist. We put the bank nunber into SYSCON 0] for that bank, but with bit 7 also set. This flag states that this bank hasn't been renumbered yet.
Starting with XOAS8, we try several things at once. The bank can be either RAM or ROM bank. ‘The best way to check for RAM is to write a number, and then read it back, to see if it "took". of course a ROM bank just MIGHT have the same value by coincidence, 50 it pays to write a second value to the same location, and check it again.
Unfortunately, as we can see from the flowchart, the routine to move bytes from one bank to another has been misapplied; it errantly tries to copy bytes from the RAM bank to the EXROM bank. It's obvious that the folks at Timex didn't have any expansion bank hardware, at least when the code for the ROM was frozen. These are the simple, “preliminary” mistakes a programmer makes when writing code ina hurry, and prior to debugging. If any hardware were available to check this code out, these problens would never have existed.
‘Another thing that's done (properly this time) is to move a 24 byte block from location 0000 of the expansion bank into SYSCON 2 and the bytes following. If it's a RAM bank, this is
harmless "power up" garbage. If it's a ROM bank, then these are ay
RT128
c x y a d i n P Zz m i
t
31927 #7087 INTES INTES INTES POSINT POSINT POSINT POSINT POSINT BOSINT. . POSINT STR ta) (4ag6) STR
II LILI WLI GEL GE
parry
TIME MACHINE ©1986 Cameron Hayne
M/C: 1978 BYTES +4141 BYTES FOR M/O VARIABLES (BASIC URS 23se BYTES)
SAVE “mrc"CODE SS257,187a LOAD “m/c"CODE Sa02a
“The Mystery of the Missing 253.
Part Four
By Wes Brrzorowski
the overhead bytes for the bank, and they'll follow a pattern like the SYSCON Table Configuration, given in part 2. (Note that a couple of items got left out of that table; we'll put in corrections as needed. )
Having done all this, we execute code to do the final setup for the bank. If it's a RAM bank, we end up at XOAB7, where we CALL a routine to check which chunks of the bank actually contain RAM. (It was also supposed to copy in the interrupt handler from the EXROM, but if fouls that up.) In any case, SYSCON 02 gets a byte whose bits specify the chunks where RAM is available.
If it's instead a ROM bank, we reset bit 5 of SYSCON 02. tty SYSCON configuration could use a tad of clarification on this point. This could have been an ASCII character representing a channel specification. This is because the bank switching system could have allowed for additional channels, which could have been Linked to an expansion bank. We'll talk more about I/O in a minute, but for nov, we'll just point out that resetting the bit will shift the character to upper case.
Now, at XOAC7 and following, we CALL a routine to check SYSCON 15 for the bank, and if it contains 01, we get the address of the initialization code from SYSCON 07 and 08, and run the code at that address in the expansion bank. Thus, for a little while, the expansion bank is in control of the system. There are lots of things we may want to do with this. There are cases where it would be more convenient to permanently add a channel, without using the OPEN routine (this should become clearer, in a bit) or, you may wish for it to install, somé special code in the Home Bank. It could even take over the entire system, or prompt you as to whether you'd like it to do.so. #
Whether it was RAM or ROM, initialize or not, we always end up at XOACA, which steps the daisychain to the next bank, and we loop to XOAdc and try to find another bank.
Now that we've seen how the 752068 builds the SYSCON table, we can take a better look at Flowchart 3, which actually installs the bank number. First let's note that the system variable MAXBNK normally contains the number of expansion banks plugged into your system. But during initialization, it's the number of the bank presently being assigned. Since the vety last bank number assigned equals the nunber of expansion banks, everything works out nicely.
We start by assuming that there's another bank to in- itialize and increment MAXENK. If it turns out we're wrong, we'll correct it later. At XOBDB we try to install that number in the next bank, which is selected by the Daisychain. That bank now has the number (MAXBNK). By sending that number to register 80 (Bank Number Access) we can access its Horizontal Select Register.
At XOBE7, we send 00 to register 40 (Horizontal Select). ‘This does not remove "power on garbage" as the flowchart says: at Power on, the bank resets itself. However, this DOES make this routine useful to another (presently unused) routine in the that RESETS the SYSCON table, by fixing up any values that
oa
we may have changed there. It's at XCC4C; check it out and see if you can find some use for it. It appears that Timex may have once had plans to access this through one form'of the RESET conmand, from BASIC. We'll talk about that next time.
In any case, at XOBEE, we save the maximum bank number, the contents of location A000, and then write 04 there; this is NOT an unlock command, as the flowchart says. One of the bank's status registers (the AO register) is memory mapped into location A000. But we don't yet know if the bank we're setting up actually exists, yet! If it does, then when we read register AO, we'll find bit 2= 0. BUI IP IT'S NOT THERE, WE'LL JUST GET THE CONTENTS OF LOCATION A000 WHEN WE TRY TO READ IT. As such, we first set the contents of A000 so that bit 2= 1. If the bank doesn't exist, we are guaranteed to see a "1" there.
Almost. What if NO bank has location AOO0's chunk allocated to it? This can happen, since that routine that resets the SYSCON table also CALLs this, and the chunk could have been “lost” through some code of our own. Looking at the TS2068 schematic, we see that data line D2, and only D2, has a pullup resistor on it. Even if no bank will respond to location A000, we're still covered, and the lack of an expansion bank will show us al. This would also have been needed if Timex sold versions of the 1S2068 that only had 16k of RAM in them. (They did announce such plans, though they wisely discarded them.) This is a somewhat more complete (and slightly more accurate) explanation of the resistor than was given in the past. If this explanation makes any sense, you may see why I simplified the description, earlier.
All right, NOW we can read the CO/AO register pair, and check bit 2 to see if the bank exists. In either case, we'll re- store the contents of location A000, that we wiped out earlier. If the bark is there, we set the CY flag, and return to the CALLing routine with the bank's number installed, and NAXBNK properly updated. If the bank isn't there, we return with the CY flag reset, we decrement MXBNK, to correct our original assump- tion that another bank existed, and we send 04 to register C0, to end the setup mode, since we won't be using the daisychain, any more. That's it!
Flowchart 5 shows the GET_STATUS routine, in the RAM resi- dent code, after the modifications in 16.5.2 have been in- stalled. For a specified bank, it will return the Horizontal select byte, and will also return the status byte for an expan- sion bank. Note that in normal use, this routine is called once for each bank, and the information is used as a whole. This is because the Horizontal Select register for the standard banks "claims" all 8 chunks for those banks. Remenber, an expansion bank has to override this, by applying the BE signal at the computer's backplane connector. As such, the horizontal select information for the standard banks is only valid for those chunks not claimed by an expansion bank.
There's not too much to say about Flowchart 6, This is CALLed when the initialization code finds a ROM bank. It marks it as such in the SYSCON table, and checks bit 0 of SYSCON 15. If it's a "1", then the initialization code for the bank is run. This allovs each bank the option of participating in systen in- itialization. It's not mandatory, but it's nice if it's needed: particularly if the bank has some I/O hardware that needs sone initial massaging. Note that HL is used throughout the initial- ization as an address pointer into the SYSCON table. As the flow- chart shows, this routine has a major bug in that it wipes out that pointer by accident. This does not seem difficult to fix, but as is, it seems unlikely that the systen could initialize with a ROM bank present.
Increasing Your Vocabulary
Many readers know about the working S2068 commands that aren't documented in your owner's manual. For example, OPEN #2, "p" will redirect all output from a PRINT statement to your printer, rather than your screen. There are also commands that are only “half there". Turn on your 752068, and type in the following “program":
10 LOAD =m’
20 CAT “a" 43,4
3O FORMAT "m",1,2,3, "junk"
40 OPEN #3,"5".1,2,"moretrash" SO MOVE “a” ,“garbage",2,5
60 ERASE "b" ,1, "nonsense"
You may be surprised to find that every one of these cormands can be entered into your machine, and it will accept them, but not one of them will actually RUN! (You'll get an error message, instead.) Furthermore, each one will take as long a list of string and numberic items as you'd like to give, provided you give at least one, following the single letter in quotes. (Except for the OPEN¥ command, which normally needs no extra list following the letter. :
What gives? The Timex/Sinclair machines are supposed to do complete syntax checking when you type your lines in; how did it miss these? Well, there is a class of commands, that only work when extra hardvare is plugged into your machine. There are two ways these could have been implemented, and the TS2068 de- signers seen to have left both options open. The first method is largely copied from the Sinclair Spectrum, and it works like this. BASIC can do two things when it "sees" avprogram line. If you're typing the line in, it runs the Syntax Checker. If it's RUNning a program, it looks up the address of the routine that executes the conmand and runs it. (If you type in a line with no line number, it does both.)
This is also true for the above extended commands. We think we see a difference because the routine that runs the command is designed to end up with the printing of an error message. ‘Thus, if you type in the proper syntax, the machine will properly accept the line, and when you RUN it, it "properly" prints an error code.
Whatever for? The program that prints error messages (for both the 752068 and the Spectrum) is at location 0008. ‘Those familiar with Sinclair's Interface One, for the Spectrum, know that it switches in it's "shadow ROM" whenever the instruction at 0008 is run. The shadow ROM then checks the cause of the error, scans the present BASIC line, determines if it's supposed to be running an extended command, and acts accordingly. While this might seem like an odd way to add commands, it contains a per- verse sort of beauty. It makes it possible to design a computer and include all the ROM code necessary to run future add-ons, without really knowing what those add-ons will look like, or what real software is needed to run them. It's a great way to “buy time".
If this method were used, we can guess that the BEU would have contained extra hardvace to ewitch in the "Superbank" mentioned in the past. This would be analagous to the shadow ROM. Since the Home ROM code contains nothing to link it to a bank switching interrupt handler, perhaps the "Superbank" may have switched in when the code at 0038 (the keyboard interrupt handler) was run.
There is a second option. In routines to "run" the extended commands, we tend to find a JUMP instruction to code to print the error message. But following that JUMP is usually found extra code that appears to look up an address in the SYSCON table and CALL the routine in its expansion bank. It also passes on what- ever list of information was tacked onto the end of the state- ment. As such, if the JUMP is NOPed out, it appears that the system should find code in an expansion bank to actually handle the comand. Pucthermore, these extra blocks of code are not used anywhere else in the ROM! They were almost certainly intended to link the extended commands to the expansion banks. Why were they blocked from that purpose?
Nothing is simple. Once again, there are two fairly rea- sonable options. In essentially every case, the little packet of code that's blocked off contains one or more fatal bugs that could really gun up the system if allowed to run. Since it would have been fairly clear to the designers that new, bugless ROMs would be needed for bank switching anyway, they could save debug time by simply hiding the code that the original ROMs would really not need. ins
‘The other option centers around the timing of separate Timex and Sinclair developments. The Sinclair Intérface One was re- leased around the same time as the TS2068 was, and its relative simplicity suggests that design on the TS2068 was begun a good deal BEFORE the Interface One. As such, the original 152068 designs could not have considered it, and if Timex did eventually plan to copy the Interface One's method into its own microdrive interface, they would have had to make some changes.
While blocking off some of their code might seem a sloppy way to do this, it vould have worked, and the rest of the Timex ™odifications to the Spectrum code aren't very neat, either. As a glating example, we can find several routines in the ROM that were probably used by the progranmers to debug the code, but aren't used by the ROM, itself. This method is fairly universal, but the common practice is to remove your debug garbage before assembling the version that's to go into ROM.
It's a similar bit of sloppiness that makes this second option the most likely. You see, one of these "blocked off" bits of code seems to have quite a few instructions missing from it; it could never work as is. Now, I know that some of you have bootleg copies of Timex's original source code listing for the
Continued Next Page.
ROMS. If you'll look at the code following the JP at 25El in the Home ROM, you'll see that Timex "commented out" a full 28 lines of code, which would have assembled into about 43 bytes. These would have restored the missing functions, but the Home ROM only has 36 spare bytes in it (3CDC, and following), so these extra bytes wouldn't have fit. Rather than to search for debug garbage to delete, they simply hacked out some code that might otherwise have been functional! Clearly, it wasn't too important to them. As such, they were probably going to copy the method (and as much software as possible!) from the Interface One.
While we can bounce these, and a whole lot of other bits of circumstantial evidence around, we can get no conclusive answer. In the end, it doesn't matter. If we wish to restore the bank switching functions, we can use either option. But it does help to understand that both options are there. It's also worthwhile to note that restoring the blocked out code would make the hard- ware design somewhat simpler for us.
I/O, 1/0, It’s off to Work We Go...
Take some time and get cozy with 14.1, on 1/0 channels. ‘This is not a great treatment of the subject, but it's a start. Next, if you'll read the definitions of the system variables STRMS and CHANS, on pages 262, 263 of your 1S2068 User Manual, you'll notice some subtle inconsistencies with the Technical Manual, The User Manual implies that channels and streams are two different things, and that channels are "attached" to streams. The Technical Manual suggests that the two things are identical.
Actually, a channel is a block of information providing a link to an I/O device. At a minimum, it contains a 2 byte output address for the device, a 2 byte input address, anda l byte de- vice specification, waich is an ASCII character. All of the normal channels that appear when you power up your computer, ("k", for keyboard & lower screen, "s", for main screen, "p", for printer, and "r*, which isn't used, but is there anyway) follow this 5 byte format. It doesn't have to be this way though; an "m" (microdrive) channel on the Spectrum, is an incredible 595 bytes Jong!
A stream is normally a displacement into the channel area. ‘There are 19 available streams, and the system does most of it's 3/0 through then. It must lock up the channels they point to, find the addresses of the appropriate input or output routines, and then jump to them. Normally, stream 0 points to the "k" channel, stream 2 to the "s" channel, and stream 3 to the "p" channel.
Can we use this from BASIC? Sure thing!
PRINT #0;"test":PAUSE 0
If you type:
OTE = Save Razis tes [6407 _- Move bark # ve A
CiF0g- oS - Fs it the Exkome CER Fs tome Bek TD (aera ded kt D
Berg Fox Exrontion Ganky 6413 6-4/8 - Send bank H to egsste BE CBA) eH ~C41F Read Ene 40/80 wegister pace U's) = EES Cask him tone 64204422-Mahe the hertt-select fow-tue Leat 1€ ta fee Cveyisler” lo+23-4-42¢-Read the Ao rayider pain Coank stile) & ped in B heals low
Flowwany 5° GETSTATS, in RAM vescdand
code, Tasorperates the corrections im TGS CAUTION: This rontine is intended te be CALL once foreach bank. The Home bank will afp to Town” chunks” allocated to expansion banks, and this will be misleading without Lhe extra, information on the expansion banks.
22
YOUF Point to SVStew Ot Xocto/s = Mark this as a ROM Bark Koctt-xons- Get SYSCOM 1s Koct7-Move bit @ to CY. TF its DB, they there's vo initialization te be dome
frocts-Koct@ - Forne WL bo s¥5tON OL Fe the NEXT bank & RETum
KOCLF=WOCIO Thea will gel « Hevitental Salah,
nk aman’
Koc21-¥0C33 Gees the bank wamber
lkoc34-KocsB Point to SYSCOM 12 (Address for tuitiabantion code) and put the cou€ents ef SYSCON 12 inte HL. (This is eet
et wegen out the SYSCON pacwten |
Koes Put bank wamben in B
Ixoc3D PUSH doves, § CAL wentine Ciniti al - jeation cole.
CSE PUSH Bank te of CALL veutine, with HS being every chank,excert chunk > elie Presently Contains dee CALLBWK code,
OCBFXOCAS. Theve will be no output O inpad
en
(0044-¥OEHL- CALL dhe veatiwe te iuibialize
C47 -XOCtA-TF HL hadwt been sped, Ehis way have wpdated the SYSCONM pointer, be
L SVSCOW O41 hehe NEXT bark RET ur |
Floucnatr 6, Cheeks fe see ef 4 Rom
bank meade obe initialized, Tf se ce bral an kiey veutin€ ML BANK.
you'll find that it prints on the bottom line of the screen, Where BASIC can't usually PRINT. The PAUSE 0 is simply there to keep the system from printing its "OK" down there before you can see what you printed. If you instead use #2, it will PRINT normally on the screen. Using #3 will send the information to the printer. What we're doing is telling BASIC which stream to use when it sends out the PRINT data. When ve don't give it a stream number, it uses #2, as a default value.
Conversely, we can do the same thing with the INPUT command. The command INPUT #1/A will input a character through stream 1. This is what it does by default, and so doesn't demonstrate as much as we'd like, but it shows how we'd use INPUT to take data directly into BASIC from an I/O device. None of the other channels has a true "input address": the addresses given will just cause the printing of an error message. Clearly, there's a lot of 1/0 power here that just isn't being used!
The “print drivers’ that allow LPRINT and LLIST commands to run a large printer work because they modify the output address in the "p" channel. (Ordinarily, it points toa routine in the ROM that accommodates the TS2040 printer.) The COPY command needs a separate routine because the COPY command doesn't work through an I/O stream.
Most of this can be gleaned from the Technical Manual, but there are additional capabilities that have not been documented. Above, I said that a stream is NORMALLY a displacement into the channels area. Actually, only the lower 15 bits of the value are a displacement. (The most significant bit is then normally “O".) However, if the most significant bit contains a "1", then the other bits represent a displacement into the SYSCON table, and can give us an 1/0 link to routines in an expansion bank.
Some machine code programmers use the RST 10 command to print the character in the A register on the screen. Actually, RST 10 will send it to the "current channel" (whose address is in the system variable CURCHL), and BASIC will have set this to the "s" channel somewhat before it executes the USR funtion that hands control to our machine code. It can be changed by putting a stream number in A and CALLing 1230. For example, stream 3 normally points to the "p" (printer) channel. If we LD A,3 and then CAL 1230 then subsequent RST 10 commands will send the character in A to the printer.
Now, this RST 10 business is standaré Spectrum stuff, but ‘Timex added a lot more for bank switching (mostly inoperable, due to bugs). There is also a “current channel bank nunber", in the system variable CURCBN. For expansion banks, this is the bank number, and for Home Bank, it's set to 0. The Dock and EXROM banks aren't supported by this. As such, RST 10 was intended to be able to send the value in the A register toa routine in any expansion bank. If it were'nt for a bug, it could also be used to INPUT a character through a routine in an expansion bank nunbered 2 or greater. apparently, Timex had a special purpose in mind for bank #1 (the superbank, perhaps?)
I you're comfortable with streams and channels, you prob- ably realize that the primary function of the OPEN # command in the standard TS2068 is to modify a stream to point to a par ticular channel (OPEN #stream,"channel"). However, there is also a “channel specific" portion run, since there may also be some systen flags that need massaging. To make it possible to OPEN a channel into an expansion bank, placing a comma after the standard OPEN { format will allow you to add any additional garbage you'd like to the line; it needn't be a list at all. This will pass the syntax check, but trigger an error on execution, kicking in the superbank, (if that method were used) and handling whatever channel specific operations may be needed. Like actually inserting the new channel. Oc scanning the SYSCON table for the proper channel specifier and running a routine to open the channel from that bank. The OPEN # code address would be at SYSCON 03 & 04; this got left out of the table, in part 2.)
‘The CLOSE # command looks a bit more boring, but it does a Jot. In the standard 752068, it largely just returns to its power on value, but if the stream was attached to an expansion bank channel, it will also run some code form that bank. ‘The address is found at SYSCON 05 and 06 this WAS included in the table in part 2. (Well, every now and then, SOMETHING goes right!) In order to get some use out of extended bank switching, the 1/0 routines must be understood and debugged. This is a bit far fron the topic of this series, and space won't alloy a detailed ox- amination, but here are some memory addresses to help (keep your bug- spray handy!!!)
“I really meant it... I really dia”
I began this series vith the cautionary note that I'd be presenting only the results of my foray through the ROMs; not giving a construction project. But perhaps I can break my own rule just this once. Some readers are a bit scared by the idea of changing the ROM code, to make the bank switching work properly. Cutting up their computers, and opening it repeatedly to switch EPROMs just seems too bothersome. Actually, there's a better way, which is so simple that it is by far the easiest part of im plementing bank switching. 2
Figure 5 shows a circuit I use in order to run EPROMS in place of the ROMs. I was able to build mine on a small card that plugs into the cartridge slot, although it's slightly too large to get the door closed. This is not really too bothersome, since it's only a temporary modification, used when debugging the actual ROM code. One fly in the ointment is that one necessary signal is not available on either connector, and you'll have to open up your computer to tack a wire cn to it.
‘The jumper marked W2 is the point to which the wire mat be attached. Although it looks like a resistor, it's merely a wire jumper in disguise, so you can hook the wire to either side. While you've got your computer open, don't forget to remove the ROWS. It's also a good idea to put a label on each, telling which is which; if you ever want to put them back, you'll need to know.
Depending on the installation of the jumpers as shown in Figure 5, you can run either EPROMs or the original ROMs, or one of each. This is helpful in debugging the board, and also in de- bugging your ROM modifications, since you may frequently want to switch back to the original ROMs, to see how they react to a certain set of circumstances. I find it most convenient to keep a set of EPROMS that contain an exact copy of the ROM code for this. That way, I don't have to fool with the jumpers, much. Still, you can do whatever suits you best. Also note that the extra wire is only needed if you want to make changes to the Home ROM code. You can simulate EXROM externally without any extra wires tacked on, but you'll still vant to open the computer and renove the real EXROM, first.
Since you'll be doing a lot of plugging and unplugging, in- vest the extra ten or fifteen bucks to install ZIF sockets. This will be cheaper in the long run, since you can't plug a chip too many times into a normal socket, without breaking off a pin. The cost of the sockets will far outweigh the cost of the ruined EPROMs, not to mention the wasted time and frustration.
That's all for now; we'll wrap up this series next time. Don't forget to write or call with your questions, ideas or observations. I'll be glad to hear from you!
11AA-11BE Initial Channel Data
11€1-11CD Initial Stream Data
11ED-122F Outputs A to current channel (used by RST 10) 1230-1292 Set current channel according to stream # in A 1374-139E Search SYSCON table for channel specifier in C 139F-1429 CLOSE routines
142A-14C6 OPEN routines - Note that location 1486 contains a
JR that is reached through another JR.
one of those JUMPS that blocks off some of the ROM code. 4
depending on how you may want to implement things, this JR might be NOPed to allow OPENing a stream
through an expansion bank.
This second JR is
Kine tall Ti B32 oty do werlrce Home Rom with EPROM TS only te van the Timex Home ROM
Dwetel!
ety HOME Rom OR 27128 EPROM
Eustel’ 34 Lnstall Ie
FICORE 5. Ay external circuit beard Som Jebuyying clivmpes in Home ROM and EXROM code i
BTS only de replree Bxaom with EPROM only te run the "Timer SXxROM
23
CHARACTER ANALYSIS By William C. Andrews
CHARACTER ANALYSIS is a utility program to define
the binary and decimal value of a byte and is useful with user defined graphics when they appear in a machine code program. It can be merged with another program and activated with GOSUB 9600.
9600 BORDER 5S: PAFER S: CLS
9610 CLS : PRINT AT 10,053" ENTER CHARACTER TO BE ANALYZED "
9620 INPUT "(GRAFHIC MODE) ";AS 9620 CLS
76440 GO SUB 9880
9650 PRINT AT 4,15; FPAFER 7: BRIG HT O; AS 9660 LET + 9670 LET 9680 LET 9690 FOR 9700 LET 9710 LET 9720 LET byte=0
9730 FOR b=x TO x+7
9740 LET byte=byte+2*2x (POINT (b, ad)
2750 FRINT AT 1,c3FO0INT (bya)
9760 IF POINT (b,a)=0 THEN PRINT OAT 1,03 OVER 1: PAPER 6: BRIGHT ts" "
9770 IF POINT (bsa)=1 THEN FRINT AT 1,c; OVER 13; INVERSE 1; BRIGH
45 TO y-7 STEP ~1
Tages 9780 PRINT FAPER 1; INK 7; BRIGH T 13;AT 1,193" "SAT 1,20:byte
9790 LET c=c+l
7800 LET z=z-1
9810 NEXT b
9820 LET 1=1+1
9820 NEXT a
9840 PRINT FAFER 2; INK 9; BRIGH
T i3AT 18,93" BINARY ";AT 18,173
PAPER 13" DECIMAL "
9850 PRINT #1;TAB 10;"COPY? (Y/N) "
9860 PAUSE O: IF INKEY$="y" THEN COFY
9870 CLS : PRINT AT 10,0; "REMEMBE
R TO CHANGE GRAPHIC MODE”: FAUSE
200: CLS : STOF
7880 FLOT 111,152
9890 DRAW 25,0: DRAW ©,-25: DRAW -25,0: DRAW 0,25
9900 PRINT AT 3,14; FAFER 73" is
9910 PRINT AT 4,14; PAPER 73"
9920 PRINT AT 5,14; FAPER 7;" my
9930 RETURN
EEE EEECEEELEEELEGEELEECLELLECELELELCEELEECEEEEEEEEEEEEEEEECELLCELEEEEEEELELECELLLE
wee DUNGEON OF FMR eee A MULTI-LEVEL HAZE ADVENTURE GAKE by Fred flachbaur (091986
FOR THE TIMEx Ts1isee@
FINALLY! A FULL-FEATURE, HIGH RESOLUTION DUNGEON GAME FOR THE TS150@!
This 24K game, written entirely in machine-code, is the most spectacular program ever written for the TS1588. Nine levels, 16 types of monsters, 14 objects, six spells. Easy to play, difficult to master. Includes FAST-SAVE with auto-boot to save in-progress games: time to load entire program reduced to 7@ seconds! Revolutionary TRUE HI-RES puts your TS15@@ on a par with much larger machines.
Send $24.95 (cheque or MO) to FRED NACHBAUR, C-12 MTN. STN. GROUP BOX, NELSON BC VIL SP1 CANADA. Specify version: V1 (TS1588 + 8K Hunter NVM or equivalent) or V2 <TS150@ + 16K RAM pack>. V2 requires a minor hardware addition ¢included?. COMING SOON: V3 for 2X61/TS18@6. Inquire. *** ALSO AVAILABLE: 751588 HI*RES EXTENDED BASIC (916.95)
Weaaaea Hain tae as ieee
E GAME by Fred Rachbaer (C
CHARACTERS----| Bed Sagi. Tow mast at SP eartsaered questa
EVE Fab HS Eble
o 5 18, the were Rast
3 perk on, perkans. Be ALL ay, YOu 8 ny strange Things-—-| |= nates ARTWORK aU OF CASTLCGR IN THIS AD a FROM ACTUAL f SCREEN DUMPS! 1085 trite a o iy Paces woe
IASTLT COR! Thee wonster attacks, (soe ayse (OMT OTHE veere: | Saetgh Se any
Sette spett Tl ORs Beth a
sili eEs2099 8 8790998026709 9 9080864095999 86 8043990001 URHHRGAGBOREEOTAWENE
Sharp’s Inc. Rt. 10, Box 459 Mechanicsville, VA 23111 (804) 746-1664 or 730-9697 COMPARE OUR PRICES!
QSOUNDIQPRINT $129.95
A sound generator board METACOMCO: THE EDITOR $34.95 PASCAL $79.95
10 times better than Quill BCPL $69.95 512 KRAM siesg5 APL $99.95 DISK VF gi24.95 LATTICE 'C bed oe4 QFLASH $29.95 LISP br ps 512K & DISC IF s2g9,.05 ASSEMBLER $40.95 CENTRONICS I/F $34.95 BOOKS: $8.95 EACH SUPERCHARGE $69.95 | MACHINE CODE PROG. AQUANAUT 471 $25.95 | QDDS COMPANION THE KING $25.95 QL GAMESMASTER QL PAINT $34.95 INSIDE THE SINCLAIR QL SPRITE GENERATOR $24.95 USING GRAPHICS ON THE QL QL MOUSE $129.95 ADVANCED PROGRAMMING ON QL SUPER ASTROLOGER $29.95 | DATABASE MANAGMENT QL WARIN THE EAST $27.95 QL SUPERBASIC SUPER TOOLKIT II $54.95 PROFITING FROM THE QL QL PRINTER $219.00 QL COMPUTING ROM DISASSEMBLER $34.95 (MANY MORE TITLES)
MICRODRIVES IN STOCK AT $9.95 FOR (4)
VISA & MASTERCARD ACCEPTED WITH 3% SURCHARGE. ALL PRICES INCLUDE SHIPPING. WRITE FOR OUR NEW 6th EDITION CATALOG.
TASWORD TWO+
net (a) tuner cD Finish at Cine? Cast Lert margin cop
I use my TS2068 for many tasks. But if I had to choose one major use, I would have to say it's WORD PROCESSING. Be it for writing letters, making a check list, or compiling articles (like this one), I make great use of my Word Processor.
A short time back, I did an extensive overview of available 2068 Word Processing software for a news- letter. Of all of the programs I looked at, two were exceptional: MSCRIPT and TASWORD TWO.
Both programs were well written, and had some very nice features not found in programs for other computers.
I personally prefer using TASWORD TWO, mainly be- cause of its screen presentation. If, for exemple, a line of text needs to be centered.on the page, it will be centered on the screen. “What you see is what you get" is the best way to describe it.
As I said before, both programs were well written. But do we T/S users EVER leave a good program alone? Heavens, NO! We have to make it BETTER!
In the case of MSCRIPT, Jack Dohany has authored a major rewrite: MSCRIPT Version 5. Jack has added every imaginable feature, and a few you may not have thought of. All owners of the original MSCRIPT should contact Jack about his upgrade. You need to legally own a copy of the original, because he only includes documentation
on the added new features. Write to: Jack Dohany, 390 Rutherford Ave., Redwood City, CA°94061. As for TASWORD TWO...enter TASWORD TWO+! Tasword
Two+ adds a few new features, original ones:
1. An expanded and easier-to-understand Main Menu.
2. Easily modify Help. Pages from the Menu.
3. Nake multiple copies of your document an on-screen copy # indicator).
4. User-definable Paper/Ink colors from the Menu.
5. Easier modification of the left print margin.
6. TS2040 printer is not disabled after use of a full-size printer.
‘The following program "Laspatch" as listed replaces the original BASIC portion of Tasword Two. Once entered into the computer, the Machine Code (bytes:tasword) por- tion of your original program needs to be added.
Once both parts are entered, simply go to the Main
and save back a new copy of ‘TASWORD TWOt. Also included with this article is the supplemental documentation that explains the use of the new features of TASWORD TWO+,
Good luck with your copy of TASWORD TWOt. If you have any other modifications for this program, please send them to me. I also have cassette copies of the “taspatch" BASIC and “tasdoc" text file available for $9.95 postage paid. Bill Ferrebee, Mountaineer Software, 749 Hill Street #6, Parkersburg, WV 26104.
and’ improves upon some
(includes
Nenu,
By 111 Ferrebee
o Soret
PRINT text file SRUE text FAL LORD text rit MERGE text hte RETURN to text ile dering
TASWORD TWO+ Supplemental Documentation 1986 Mountaineer Software
Welcome to TASWORD THO+! This program gives you even more Word Processing powery and will make use even easier.
5 extra documentation will guide through the changes nade by TASWORD THOt, and will help you te make the best une vot those chang:
MAIN MENU
The Main Menu has been augmented with new choices, and streamlined for easier use. Its use is the same as before: press the corresponding letter to your choice, and ENTER to verify.
PRINT MENU
The PRINT text file Menu has a few new options added to it. Firat, you may select the number of copies you want printed by typing that number in at the prompt.
Remember to either designate a graphics symbol for form-feed, or space the proper number of spaces between pages, or the text will be printed continously, with no break between copies.
Also, the left margin of your printout may be specified from this menu. Originally, this selection was in the Printer Interface control code selection routine.
PAPER/INK COLOR SELECTION
You may now specify what PAPER/INK color combination you would like to use with TASWORD THO+. To make your choice, first go to the Main Menu and select “define. GRAPHICS/printer....g"+ When you are asked to “Reset interface/printer codes?", (yes, Press ENTER until you get to “Paper/Ink control and use the chart below to. enter your choice.
ber, some color combinations may not be very suitable
This will depend on your TV/Monitor selection.>
MAGENTA
HELP PAGES
Help Pages (Main & Extended) may be customized for your own use by using the Ce? command on the Nain Menu. Once you have entered the particular page into the text files make sure to replace it as soon as you have made your changes. Then SAVE a new copy of TASWORD TWO+ with your new Help Pages.
Prog: taspatch
10 LET hf=NOT PI: CLS : LET a=USR VAL 11 FOR i=8GN PI TO VAL “9"1 BEEP VAL "2", VAL "3!
SB", VAL "2": NEXT i: RETURN
15 POKE VAL "23609",VAL "2": CLEAR VAL "33279": GO SUB VAL 00"1 PRINT AT VAL "10",VAL "S"; FLASH SGN P:
"64930": Gi
TO VAL "20" BEEP VAL ".
"40 Do NOT stop the ta
pe"sAT SGN PI,NOT PIt LOAD “tasword+"CODE + CLS : PRINT AT VAL *
10", VAL "6"; FLASH SGN PI;"Stop the tape’ a=USR VAL "59081": GO TO VAL "10" 4"XINT Ca/VAL "64"+VAL
20 CLS : LET a=VAL " “O" THEN 60 TO VAL
#3000"
GO SUB VAL "11": LET
"0.99": IF a=VAL
26
LEMKE SOFTWARE DEVELOPMENT FHERB BOUERS PROUDLY PRESENTS3:
presents the 206s,
The CHECKBOOK/BUDGET MASTER {a @ checkbook database program and @ powerful hone or business budget analysis program in one
conpect/lightning fast program. CBBM was written in BASIC and =”, ) ° Semmcksllghenag tobe program. cam etn weieeor ines 1 Mi 1
Program’ Specification:
RO icy Asano '
Database holds 600 checks Cwithdrewl or deposits?
Check Rocel Review bus theck Nomber, fonth, Pela To Based on 2 Popular TV Game Show
Functions: REVIEW, LPRINT, DELETE, SUBTOTAL C+ or -)
Budget Analysis: 14 User Defined Categories + 2 ench category, hes, 4: Slissee? STARRING LOVELY MISS BANNA BRITE
Assign S Budget to each category (for each month)
Automatically tellies EXPENDITURES es checks era filed The Ultimate Word Game ‘and INCOME am deposits are filed! The all new MONEY MACHINE IT Update Festuca: change categories at any tine, use the FEATURING: UPDATE conmand to re-cataleg checkbook’ 4
New theme! OUTPUT: Tebuter or Graphic Forest : P 2c10 printer cr beep Full size printer wed. Fantastic Family Fun
Get the CHECKEOOK/EUNGET MASTER program from LEMKE SOFTWARE “BANNA” turning the letters DEVELOPMENT Choma of the PIXEL SKETCH and GRAPHICS EDITOR v2.0
the only graphics program to cross the ADVANCED VIDEO MOoE Hundreds of NEU Puzzles barcier providing 32 column, 6% column, and extended color “s
graphical). CHECKBOOK/BUDGET MASTER and PIXEL SKETCH and Sole or Bor 3 Players GRAPHICS EDITOR v2.0 are
Atl this For only
vA 68 bes Cite $e 5 oo (us)
Inctudes Postage-via ist Class
Bisse
HERB BOWERS, Sr. 2S58G Uoodshire Circte Chesapeake, VA 22323
Phone: 604 467-5924
25 GO SUB VAL "4000": POKE VAL "26703",NOT PI: POKE VAL "26704 “,VAL "S"2 PRINT AT VAL “4",NOT PI;"PRINT text file seep
28 PRINT : PRINT "SAVE text file. RINT "LOAD text file. xt file,
aeeeeeeeeS"2 PRINT 2 P see "s PRINT : PRINT "MERGE te m": PRINT + PRINT “RETURN to text file...
“ey 30 PRINT PRINT “define GRAPHICS/printer........g"% PRINT : P RINT “SAVE Tasword Twotscesssseeeees ett PRINT § PRINT “into BAS TC... seeseeeb": PRINT ¢ PRINT “EDIT help page(s)...
--3"
70 PRINT #SGN PI;AT NOT PI,NOT PI5" press key
80 LET at=INKEY$: IF a$="" THEN GO TO VAL “80”
90° LET i=NOT PI: LET b=CODE a$: IF b<VAL "97" THEN LET b=b+VA L "go"
110 IF BeVAL "115" THEN LET i=VAL "6"
120 IF b=VAL "106" THEN LET i=VAL “@" : 125 IF b=VAL "116" THEN LET i=VAL "16" od 130 IF b=VAL "112" THEN LET i=VAL "4" iH 140 IF beVAL "121" THEN LET i=VAL "12" AL "109" THEN LET i=VAL "10"
160 IF b=VAL "103" THEN LET i=VAL "14"
170 IF b=VAL "98" THEN LET i=VAL "16 175 IF b=VAL "101" THEN LET i=VAL "21 180 IF i>NOT PI THEN PRINT AT i,VAL "Si"; FLASH SGN PIFCHRS b; + GO TO VAL “500”
190 GO TO VAL "Go"
200 CLS : GO SUB VAL "4000": PRINT AT VAL “4",VAL "8"; "PRINT OP TIONS": PRINT " just press ENTER for default values given in brackets"
210 LET isVAL “B": LET j0=VAL "23": PRINT AT i,NOT PI; “Line spa cing? (1)": GO SUB VAL "6000": IF a$="" THEN LET as="i*
215 POKE VAL "62235", VAL as
220 LET i=VAL “10": PRINT AT i,NOT PIj "Start at line? (1)": GO SUB VAL "6000": IF a$="" THEN LET as="1"
230 LET ceVAL "64"xCINT VAL a$-SGN PI): LET b=c+FN pC(VAL "62216 “2 LET x=VAL "60045": GO SUB VAL "950"
240 LET isVAL "12": PRINT AT i,NOT PI;"Finish at line? Clast)": GO SUB VAL “G000": IF a$="" THEN LET bea-c: GO TO VAL “250" 245 LET b=VAL "64"XINT VAL af~c
250 RANDOMIZE USR VAL "S906": RANDOMIZE USR (FN p(VAL "62472")
* > 27
TASWORD TWO +
251 LET i=VAL UB VAL "6000"; 252 LET k=VAL 259 LET i=VAL "16": PRINT AT i,NOT PIy"Left margin (";PEEK VAL "60927"; "2": GO SUB VAL “G000": IF a$<>"" THEN POKE VAL "60927" 2VAL at
260 CLS : PRINT AT VAL “20",;NOT PI;"Press the q key to quit pri nting"
270 LET x=VAL "60049": GO SUB-VAL "950"
£7 Lt. 1 CPEERTVAC 8Z970" Fk -CCFNDT PIT TREND CPRINT CARD c 279 FOR i=SGN PI TO ke PRINT AT NOT PI,NOT PI; "Printing Copy #
“No. of copies (1)": GOS
"Fig" of "pk 280° RANDOMIZE USR VAL "60038"
281 NEXT i
285 LET c=PEEK VAL "62471"1 IF c<>NOT PI THEN LPRINT CHRS c
290 RANDOMIZE USR VAL “S9806": POKE VAL "26703",NOT PI: POKE VA L_ "26704", VAL "S": GO TO VAL "10"
300 CLS 1 GO SUB VAL "4000": PRINT "Printer control graphics ch arsi"
305 LET b=VAL “4%: FOR i=NOT PI TO VAL "15": LET D=ABS (b-VaAL " 4°08 PRINT AT i+VAL "4",b;i+VAL "128";CHRS Ci+VAL "128")
807 FOR j=NOT PI TO VAL "3": LET c=PEEK (VAL "6GOB6O"+i*VAL “4+ 32+ LET a$=STRS cr IF c=VAL "25S" THEN. LET a$=""
308 PRINT AT i+VAL "4", VAL "1O"4VAL "“4%kj;a%: NEXT js NEXT i
320 INPUT "Type graphics character code 128-143 (ENTER if finis hed) ";as 325 IF as="" THEN GO TO VAL "400"
340 LET b=VAL a$: IF BCVAL "128" OR BOVAL "143" THEN GO TO VAL
*320"
350 PRINT AT VAL "21",VAL "3"; FLASH SGN PI;b; FLASH NOT PI;" " 3CHR$ b 35S__FOR j=NOT PI TO VAL "3": POKE (VAL "GO34B"+bxVAL "4"459,VA L "255": NEXT j 360 FOR j=NOT PI TO VAL "3": INPUT “Code? (ENTER if finished)"; as: IF 2¢=5"" THEN GO TO VAL “300"
370 POKE CVAL "G034B"+bxVAL_ "4"452,VAL a$: PRINT AT VAL "21",VA Lb "10"+VAL “4"e 5; VAL at: NEXT 53: GO TO VAL "300"
400 CLS 1 GO SUB VAL "4000": PRINT AT VAL "3",NOT PI; "Reset int erface/printer codes?": LET i=VAL “S": GO SUB VAL "920": CLS: I F i=NOT PI THEN GO TO VAL "25" -
401 GO SUB VAL "4000"1 PRINT AT VAL "3",NOT PI; "just ENTER to k eep values given:"
4623 LET JO=VAL "27": LET isVAL "8": LET j=NOT PI: LET a$="Inter face control codei=": LET x=VAL "60924": GD SUB VAL "850"
404 LET.i=VAL "9"E LET j=VAL "18": LET a$="codeZ=": LET x=VAL " 62470": GO SUB VAL "850"
405 LET i=VAL "10": LET j=VAL "18": LET a$="“code@=": LET x=VAL "62471"3 GO SUB VAL "850"
406 LET i=vaAL "1 PRINT AT i,VAL "18"; "coded=";FN pCVAL "6247 2") LET i=VaL "12": LET jO=VAL "24": GO SUB VAL "6000": LET jO= VAL "27"3 IF a$<>"" THEN LET b=VAL a$: LET x=VAL "62472": GO SU B VAL "950"
410 LET isVAL "14": LET j=NOT PI: LET a$="Printer carriage retu yn="t LET x=VAL "60925"; GO SUB VAL “aso”
420 LET i=VAL "16": LET j=NOT PIs LET a$="Printer linefeed=": L ET xmVAL "60926": GO SUB VAL "@so"
430 LET i=VAL "16": LET x=VAL “S@513": PRINT AT i,NOT PI; "Paper “Ink control code=";PEEK x: GO SUB VAL "6000": IF a$<>"" THEN P OKE VAL "58512", VAL “S4"2 POKE x,VAL a$: POKE VAL “S8521i",VAL "5S. 4"1 POKE VAL "S8522",VAL at
490 GO\TO VAL "20"
S00 PRINT #SGN PI;AT NOT PI,NOT PIs" press the "; FLASH SGN PI; "ENTER"; FLASH NOT PI;" key to proceed";AT SGN PI,NOT PI;" pres ‘s_"y FLASH SGN PI;"c"; FLASH NOT PI;" to change the choice "
510 LET aS=INKEY$: IF a$="c" OR a$="C" THEN G60 TO VAL "20"
520 IF CODE a$=VAL "18" THEN GO TO VAL "600"
530 GO TO VAL "510"
600 IF b=VAL "116" THEN GO TO VAL "700"
610 IF b=VAL "121" THEN CLS : GO TO VAL
620 IF b=VAL "115" THEN CLS = GO TO VAL
630 IF b=VAL "109" THEN GO TO VAL "200
640 IF beVAL "106" THEN LET a=USR VAL "S9081": LET a=NOT PI: G 0 TO VAL "2000"
650 IF b=VAL "112" THEN GO TO VAL "200"
660 IF b=VAL "103" THEN GO TO VAL "300" 670° IF GeVAL” "101" THEN CCS": GO TO VAL "sO0O" 699 CLS 1 STOP 700 CLS : LET i=VAL "8": GO SUB VAL "800": LET a$= AVE af LINE VAL "15"
710 SAVE a$CODE VAL "54764",VAL "10751 770 PRINT AT VAL "19",NOT PIy 780 VERIFY a%: PRINT AT VAL "21",NOT PI; "tasword: basic O.K.; AT VAL “19",NOT PI;
790 VERIFY a$CODE. VAL "54784", VAL "10751": PRINT AT VAL "21 L "20";" m/code O.K.": GO TO VAL "25"
800 PRINT AT i,NOT PIs"Remove ear plug from cassette. ": RETURN
25
10" 1000"
tasword+": §
GO SUB VAL "900"
2VA
850 PRINT AT i7j3a%sPEEK x: GO SUB VAL "6000
POKE x, VAL af
860 RETURN
900 PRINT AT VAL “8",NOT PI;"Reconnect ear plug, and rewind"; AT
VAL "10",NOT PI;"and play the tape to verify";AT VAL "12",NOT P
Tyas: RETURN
920 PRINT AT i,VAL "
“s%n for no"
930 IF INKEY$="n" OR INKEY$="N" THEN LET i=NOT PI: RETURN
940 IF INKEY$="y" OR INKEY$="Y" THEN LET i=SGN PI: RETURN
945 GO TO VAL "930"
950 POKE x,b-VAL "256"KINT Cb/VAL "256"22 POKE (x+SGN PID, INT ¢
b/VAL "256")1 RETURN
1000 LET b=FN pC(VAL 62216"): CLS
1005 PRINT AT VAL "“8",NOT PI;"Name of text file for saving?": LE
T i=VAL "10": LET j0=NOT PI: GO SUB VAL "6000"
1010 IF LEN a$>VAL "10" THEN CLS : PRINT AT VAL "12",NOT PI; "to
© many characters - max is 10": GO TO VAL "1005"
1020 IF LEN a#=NOT PI THEN : CLS ¢ PRINT AT VAL “12",NOT PI; "the GO TO VAL "1005"
GO SUB VAL “800: SAVE a$CODE b,
1040 PRINT AT VAL "“B",NOT PI;"text file ";a%;" saved:
O",NOT PI;a;" bytes, ",a/PEEK VAL “6223 lines"
1050 PRINT AT VAL “12",NOT PI; "do you want to verify ";a8;" 2"
LET i=VAL “14": GO SUB VAL "920": IF i=NOT PI THEN GO TO VAL
on
1100 CLS : GO SUB VAL "900": VERIFY a$CODE bra
1110 PRINT AT VAL “21",VAL "6"; "text file verified": GO TO VAL “
25"
2000 CLS : PRINT AT VAL “8",NOT PI; "type the name of the text fi
Te";AT VAL “10",NOT PI; “and press ENTER"
2010 PRINT AT VAL “12",VAL "2" just press ENTER to load the";AT
VAL "14",VAL "2"; "first text file on the tape”
2020 LET jO=NOT PI: LET i=VAL "16": GO SUB VAL "GOOO": PRINT AT
VAL “18",VAL "9"; "Play the tape"
2030 LET b=FN p(VAL "62216"): LOAD a$CODE (a+b), (CFN pCVAL "6222
1*2+VAL “22")"VAL “64"—ad: GO TO VAL "10"
3000 FOR i=VAL "23296" TO VAL "23361": POKE i,VAL “S2": NEXT i
3005 POKE VAL “23362",NOT PI
3010 PRINT AT VAL "8",NOT PI;"type word to be replaced / found
3012 LET jO=NOT PI: LET i=VAL “10": GO SUB VAL "6000"r. IF as=
THEN GO TO VAL “10"
3020 LET j=NOT PI: FOR i=SGN PI TO LEN a$: POKE VAL “23297"+i,CO
DE atid: IF a$Cid=" “ THEN LET j=j+SGN PI
3021 NEXT i
3022 IF j<>NOT PI THEN CLS : PRINT AT VAL “12",NOT PI;"just a w
ord — no spaces allowed": GO TO VAL "3000"
3025 POKE VAL "23297",LEN at -
3030 PRINT AT VAL “12",NOT PI;“with Cjust ENTER for find only)":
LET i=VAL “141 GO SUB VAL "6000"
3040 IF a%="" THEN POKE VAL “23362",SGN PI: GO TO VAL "3060"
3050 FOR i=SGN PI TO LEN a@: POKE VAL "23329"+i,CODE a$Cid: NEXT
i
3060 LET a=USR VAL "64955"2 LET a=USR VAL "64333": GO TO VAL "20
‘4000-PRINT” AT” NOT PIYVAL "TO"; "Tasword Twoo"ZAT SGN PI,VAL "5"; " aman Software 1983",;AT VAL “2",VAL “2"j" Mountaineer Softwa ren 1386" RETURN
5000 GO SUB VAL "4000": PRINT AT VAL "4",VAL "6"; "EDIT help Ca "ZAT VAL "7",VAL "4 “GPEN ¢ iMain 2€xtended ‘AB VAL CLOSE: 3Main 4Extended"
5010 LET aS=INKEYS: IF a%=""" THEN GO TO VAL "S010"
S020 IF VAL a$<SGN PI OR VAL aS>VAL "4" THEN GO TO VAL "S010" 5030 IF at="2" OR a$="4" THEN LET hf=SGN PI
5040 PRINT AT VAL “10",VAL “12; FLASH SGN PI; “WORKING SOSO LET c=VAL "S4784": IF hf=S6N PI THEN LET c=VAL "56320" 5060 FOR i=NOT PI TO VAL "1536"
5070 IF a$="1" OR ag="2" THEN POKE (VAL "33260"4i),PEEK (c+i)
IF as<>"" THEN
s"press y for yes";AT i+VAL “2",VAL “11
cLs 34T VAL "1
5075 IF a$="3" OR a$="4" THEN POKE (c+id,PEEK (VAL "33280"+i) S080 NEXT i: LET hf=NOT PI: GO TO VAL "20"
6000 LET a$="": PRINT AT i,j0; FLASH SGN PI;" “
6010 LET j=jO: IF INKEY$<>"" THEN GO TO VAL "6010"
6020 LET bS=INKEYS
6030 IF b$="" THEN GO TO VAL "6020"
6040 IF CODE b$=VAL “13" THEN PRINT AT i, 33” RETURN
6050 IF CODE b$<>vVAL "12" THEN GO TO VAL "6170"
6060 IF j=j0 THEN GO TO VAL “6z00"
6070 LET j=j-SGN PI: PRINT AT iyi; FLASH SGN PI;" "; FLASH NOT P
Ip" “tr LET at=as¢ TO j-j02: GO TO VAL "6200"
6170 IF CODE b$<VAL “32" OR CODE b$>VAL "127" THEN GO TO VAL "6G 200"
6180 BEEP VAL ".00S",VAL "S": LET j=j+SGN PI: LET a¢=at+b¢
6190 IF j=VAL "32" THEN PRINT AT i+SGN PI,NOT PI;" " 6200 IF INKEY$¢>"" THEN GO TO VAL "6200"
6210 GO TO VAL "6020"
7000 DEF FN p(x)=PEEK x+VAL "256"*PEEK (x+SGN PI)
PRINT AT i,j;b%; FLASH SGN PI3" ":
RETURN
29
SOFTWARE
Oliger 2.1 Disk System Update
Reviewed By Dick Wagner
The John Oliger Company is now delivering their V2.1 EPROM for the SAFE disk system. There have been quite a few reviews of the original V1.1 DOS including the mother board, board "A" and "B", and NMI (non- maskable interupt) switch add-on used for state-of- computer saves. There has been an improvement in the NMI switch part of board "B" and it is now part of the unit. A disable switch is also added to this board. I added this switch because of a problem experienced in making cassette saves when an A&J I/F was in place. This switch solved it. This review is intended to bring information to the reader about the new V2.1 DOS EPROM commands.
The new EPROM V2.1 is available for $20 ppd. or the user can send in the Vl.a EPROM for $15 ppd. and get it re-programmed.
T must say that John has not let the V1.1 user down in the least as it is possible to use ALL of those old files. We can continue to use the old commands for loading old files, but new commands are required to SAVE to new FORMAT and to LOAD those saves. An old disk can- not be saved on by this new system without proper formatting.
The Following list of commands shows the degree of file storage capability now built into SAFE DOS. It is nice not to have to learn a whole new series of strange commands as most of these are duplicate in action to the cassette commands.
LET /sen LET /Ten
Let Den LET Wan
ET 7PaO & LET /PaT LEY /PeQ/B t LET /Pat/3 FORMAT /*FILEWAME® SAVE /*FILENOHES
SAVE /*PILENANE® LINE 9 (aap /*FILENANe*
BAVE/® Load or Loape
SAVE /*FILEMAME* CODE nym LOAD /*FILENAHE' CODE nym Lord /*FILENANE™ CODE n LOAD /*FILENANE* CODE SAVE /*FILENAME* SCREENS LoeD /*FILENAME SCREENS SAVE /*FILENANE* DATA XC) LOAD /*FILENAME DATA XC) SAVE /*FILEMAME? DATA X$() LORD /*FILENAME' DATA XE SAVE /*FILENAME' VAL Leo /*FILENARE* VAL SAVE /*FILENAHET ABS LOKD /*FILENANE* ABS Loap 7m cat
hove 7 cays
NMI Cpushbueon save) RESTORE /*OLENAME! TO ‘NEUNAME®
Several JLO commands have been added by using key- words. For instance, the VAL command saves and loads the BASIC progran variables only. Thus, those variables are not cleared on loading. Using ABS in the command, saves everything as the old SAVE /n or NMI save does. These files are retrieved by LOAD /"n" ABS where "n" is the number selected for the save ID.
CAT is the catalog system used by V2.1 and is simple to use. The user can call up CAT on a disk with a program in the computer without loss. CAT displays the disk name (it must have a name, even " "), FORMATTED shows the number of tracks, the total capacity in cyl- inders, and bytes. FREE shows the number of cylinders left. Cylinders are 5k blocks of storage. Also the dis~ play shows the file name, the basis the storage was made on (STATE, BASIC, BYTES), the number of cylinders used and the number of bytes in each file.
Some interesting operations are possible. File names can be changed so NMI saves by number can be changed to words later. NMI saves are memory hungry (at least 49664 bytes). After a NMI save has been made the file can be LOADed and then saved again as DATA, VAL, SCREENS, and CODE desired. This may or may not save cylinders of space, depending upon program length. Over- writing is interesting as the first time a name is used,
the space in cylinders for that name is established. Overwriting with a changed program may require more space than first established. If so, you get a report "BILE TOO LARGE". The old file is not lost nor do you loose the new program. This requires a save under a new name and if the disk lacks enough space a "DISK FULL" report is shown. If a program is to be saved with an identical name of a program already on that disk a 0OT is given as a warning, and there is 5 seconds to cancel the instructions with ENTER.
SAVE/O is still available and can be used to show information not shown in CAT, such as 2068 or Spectrum systems (works with both), special disk use such as ‘TASWORD, MSCRIPT, arcade games, utilities, ect. This file will hold 1 1/2k of information.
This system is a pleasure to use and it overcomes the major complaint about V1.1 system-limited number of files. I have no experience with other DOS, so I can't really make a comparison this way. John entered into the development of V2 after extensive delays ocurred in ob- taining the Ray Kingsley DOS. Ray has a preliminary DOS operating and rumor has it, that the final system will not be found wanting in features available to other makes of computers. Iwas in hopes of obtaining Ray Kingsley's system but felt that John's SAFE improvements would do what I wanted with the drives I am now using.
One improvement I would like to see, is an ERASE command to delete a file from disk. I tried saving an empty file with an identical name/save basis. The file appeared to be deleted, but the number of bytes was not changed, Even an empty file must have an identical save basis if this method is use.
For further information on the Oliger SAFE v2.1, write to: The John Oliger Company, 11601 Whidbey Dr., Cumberland, IN 46229. Include a legal size S.A.S.E.
r-S.T.U.G.
eviewed By
I am sure that every BBS "addict" has promised with each months growing phone bill, that they will cut down on "calling"...only to do the same thing again the following month...or wished for his/her BBS, so that other “addicts" would call him/her instead! But, not having disc drives, or money for high-priced software, owning a BBS seemed impossible.
Members of the Indiana Sinclair Timex User Group felt the need for a dependable, low-cost BBS system, and went to work. Now if you own an "“unexpanded" Timex Sinclair 2068, a TS2050 modem, and a TS2040 printer, you an operate your own BBS.
The I.S.T.U.G. TS2068 BBS program loads in about 48 seconds from cassette tape, and uses just 8.5k RAM of memory. It functions mainly in simple BASIC, with the codeing hidden neatly in line 0. An easy to use SYSOP editor, lets you establish the time and date. You can quick scan the message base, Read, leave, or delete messages, Load or Save the message base. You can return to the SYSOP editor from anyplace in the program by simply pushing [symbol/shift] STEP. A real time clock keeps the time and date, and even advances the date at midnight. ‘The message base will hold 40 messages—-535 characters long. Each message is stamped with the time and date of when it was left. There is room for one to four screens of bulletins. The system automatically prints to the 2040 printer, the name of the caller, what
TS2068S BES
Ralph mMecrum
messages they read (or leave), along with a "page" for the SYSOP, and the elapsed time that the caller was on- line. All of this makes it easy to keep records, and
manage your BBS.
The BBS callers have a quick scan option that only lists who the message is for, and who it is from, and the time/date of the messages. If the caller is in a hurry, he can abort the scan and return to the menu. There is a check time option, a “chat with the SYSOP" option, and a "read users log" option. And of course, a read/leave message option.
The I.S.T.U.G. BBS is easy to operate, and "crash proof"...and most important. dependable. ..providing many hours of just plain fun. It comes with six pages of easy-to-understand documentation, that takes you step- by-step into big time BBSing.
The work of the software's programmer Paul Holmgren (and BBS SYSOP, Willie Jones) can be viewed by calling the I.S.1.U.G. board at 1-317-898-3903 (24 hours). Modem settings: 7-1-E OR, you can get your own copy of the BBS program, by sending $16 (postage paid) U.S. funds to: Willie Jones, 10126 E. 33rd Street, Indianapolis, IN 46236. When you order, you might mention to Willie that you wouldn't mind recieving his “Bucn graphics one-time command" utility also...just to make it a little more interesting. .
COLOSSUS
Seace
Like it's namesake, the Colossus of Rhodes, Lemke Software Development's graphic banner designer utility "Colossus" stands head and shoulders above similar soft- ware. Colossus contains features that heavyweight soft- developer Broderbund Software has just recently added to it's popular program “The Print Shop".
Because of the popularity of "The Print Shop", a graphic utility for lesser computers than our beloved 'TS2068, everyone knows what a "banner" is. "The Print Shop" allows any of several type fonts to be used for the message portion of the banner. It also permits a graphic picture to be included in front of and or behind the message.
What makes banners produced by “Colossus” different from those made by "The Print Shop" is "“Colossus'" ability to include more than one type font in a single banner and the option of placing graphic pictures any- where within the banner.
There are, unfortunately, no graphic pictures cluded with the program. The user must draw his or own. Fortunately, the program contains an option using redefined keys to print graphic symbols on screen.
There are twenty symbol keys, nineteen stored graphics plus a blank space. Fourteen redefined keys duplicate the shifted and unshifted graphic symbols on the 1-5 and 7-8 keys. The other six symbols include a right triangle in four different orientations, a hollow square, and a small, centered square dot.
The text can be typed into the banner in any of three sizes and in two different type fonts. One font is the standard TS2068 system font; and the other is a calligraphy font called “Chancery". Either of these two fonts can be modified to give a different look. The modifying options are bold, modern, and italics.
in- her for the
31
Reviewed By Duncan Temcue
Happy Birthday
The effects of the modifiers are additive. One can, for example, use bold-modern-chancery font or a modern- italic-system font. All possible combinations of mod- ified and unmodified fonts would give the user a choice of sixteen different type styles to be used in any one
ner.
"Colossus" can store up to 1024 columns, or 32 screens, of data. It can horizontally scroll one column at a time while you are working on the banner. Rows can also be inserted or deleted. A portion of the banner can be copied to another portion. In a similar manner seg- ments of the banner can be erased.
Once the banner has been completed, you can view your creation sequentially. The banner is scrolled from right to left across the screen a selectable number of columns at a time. A special feature alldws you to set the scroll rate at thirty-two columns, ome full screen, every four seconds. If successive screens have been de- signed correctly, your banner is animated.
The banner can be printed horizontally on a 12040 printer or on a full size printer. The only catch to using a full size printer is that it must be supported by Zebra Systems Inc.'s "ZPrint-80" print driver. My C.Itoh Prowriter is not. Gr-r-r! Along with printing, "Colossus" Saves and Loads banners via cassette tape.
A welcome piece of support software which would complement "Colossus" and the previously reviewed "Pixel Sketch and Graphics Editor" would be a utility for de- signing your own type fonts. I understand that one will be published in the upcoming issue of TIME DESIGNS. I'm looking forward to it.
“Colossus” is $19.95 and is available from Lemke Software Development, 2144 White Oak, Wichita, KS 67207. The program comes with two samples: "LSD-banner" and “Animation".
prom,
ACZ General Ledger
Reviewed By Dennis Silvestri
ACZ GENERAL LEDGER 2,000 is a small business accounting system for the TS 2068 computer. This program will provide the small business with the following financial reports: Monthly and Year To Date Income Statements, Ledger Detail, Balance Sheets, Chart of Accounts, Trail Balance, and Journal Entries. This double entry system has a maximum capacity of 800 entries and accounts per month in any combinantion and a maximum of 150 named accounts. The program will calc- ulate sums of up to $999,999.00. Printing of all trans- actions is to the TS 2040 printer only. You can also use the optional Cardco brand numeric keypad. This keypad
plugs into the joystick port and is used to speed entry of numerical data. I am not familiar with this keypad and did not have one available for review, so I am un- able to say how much if any this keypad will increase the entry of data.
There are two parts to this program. The system
"set-up" and the Transaction Entry. determines the format of the business financial state- ments as well as the position of the accounts in all reports and establishes Account Numbers. This set-up routine also requires the user to make and save three data programs, that must be used with the transaction entry program. Helpful menu's and prompts guide you along the way, while creating the set-up routine.
When the system set-up is complete you are ready to Load in the transaction entry program and the tapes that were created from the set-up. Not all three set-up tapes are loaded together. What determines which of these tapes are used depends on the following: If you are using the system for the first time, starting a new month, or adding additional transactions to the current month. It is with this transactions entry that all
The system set-up
General Ledger Accounting is done including printing of Financial Statements and Saving of all records. Again, helpful menu's and prompts guide you along the way.
Since this program is only available on tape, there
is time lost due to saving, verifying, and merging of the various routines. However, this is minor when compared to the time it would take to format and enter
all transactions without the use of a computer.
ACZ GENERAL LEDGER comes with extensive docu- mentation that can be read and understood, providing the user takes the necessary time to thoroughly read it. Included in the documentation are financial records for a fictitious business. Before converting your books to this system the user should work with the given example.
ACZ GENERAL LEDGER 2.000 is available from WMJ Data Systems, 4 Butterfly Dr., Hauppauge, NY 11788. Cost is $19.95 plus $3 for Sai.
BRICKWORKER
Reviewed By R. Lussier
Bei Ss SS SSS 55 5255555 SS SS
BRICKWORKER is a utility-type of program for who require help, or are interested in the brickworking. BRICKWORKER will operate on Spectrum or the un-aided TS 2068 computer.
The program contains illustrations of Bonding, Foundations, Brickwork Calculator, Mortar mixes, and Decorative finishes. The screen illustrations are good and very useful. The program itself is written in BASIC and is very User friendly...an overall good quality program.
Another program that the same software company has on hand is called PAVEMASTER which deals with the design and quantity calculation for constructing Patios and Driveways, ect., using various sizes of paving blocks
those "act" of either the
and slabs. If interested in such programs, then contact- Konkrete Software, 6 Willowcourt Ave., Kenton, Harrow,
middlesex HA3 8ES, Great Britain.
PRO/FILE Cartridge
Reviewed By Robert Fischer
32
Probably the most useful type of computer program is the data base since almost anyone can find a need for it and because it can be effectively used without a printer.
For Timex computers, Tom Woods haS twice provided high quality programs in this field with ZX PRO/FILE for the TS 1000 and then with PRO/FILE 2068. Just get out old copies of Timex oriented magazines and newsletters and you will find consistently high praise for these programs.
Now Tom has a new version on cartridge for the TS 2068. This is much more than you may expect. Sure, it loads instantly and has mich greater capacity (37,000
bytes), but it also has many new capabilities.
First, let me briefly list the elements of the pro-~ gram which are essentially unchanged. Each file can have up to 15 lines of 32 characters each. Multi-word searches are still available and the progran is still
very flexible, easy to use, and very fast. Besides these things, the improvements found in the manual which could be added yourself are almost all included as is ‘Tom's machine code sort routine and a DATA save (thank good-
ness).
About the only negative changes are an extremely small reduction in speed due to extensive bank switch- ing and a reduced ability to make changes due to the use of a cartridge, although you can make some.
Enhancements to the original routines include the ability to calculate numeric information on any line you wish (this refers to the TALLY routine in the original manual), built in programming allowing a choice of seven printer interfaces, the ability (when using a full size printer) to print different file lines on the same line of paper, TALLY information can be printed out in the position you wish as well, and when adding more than one file at a time, you can bypass the main menu.
Totally new routines include duplication of files (saves time with files that are similar), separate sets of files can be merged together, you can start a search from any point in the files (useful when your printer breaks dwon halfway through a search), and you can ad- just the INK and PAPER for color or black and white TVs. For those who wish to use an IBM compatible keyboard, you'll be pleased to know that the cartridge includes the necessary software. His documentation shows you what hardware modifications are needed.
For those with special drive systems, you can make the program exit to regular BASIC to permit saving on these devices (instructions for a couple are provided as examples). Of course, you can also write special BASIC routines for other purposes as well.
All the above improvements are valuable and worth the investment, especially if you don't have the ori~ ginal PRO/FILE 2068, but I saved the best for last. When you input a search command, besides being able to search for single or multiple words you can also perform a NOT search or an OR search! In fact, AND, OR, and NOT can all be combined! The power this provides is fantastic and as you use it, you'll wonder how you ever worked without it.
For-all of the following examples, I'll use situ- ations I actually deal with in the band classes I teach. The AND. search is pretty straight forward. If I search for “Plute AND 12th-"\ I would find only the flute players-who are seniors. If T.extend it to "Flute AND
By Syd Wyncocom
Editon: Those readers Koltowing along with Syd's Machine Code Series, should note that there were two zextuae errors in the Nov/Deo '86 issue, that need to be corrected, Last paragraph, first cokumn on page 19 should read, "the status of these bite is uhémportant.” The Last sentence of the fourth paragraph on page 20 should read, "the onty f£ags affected are the P/V and zero flags. The P/V’ {lag is reset if BC=0. The zenro féag is set to dndécate a match, just as in a normal CP instruction."
‘This lesson we will discuss the stack and the instructions which use the stack. What is a stack? A stack is simply an area of consecutive bytes of memory which are used for storage by the CPU. ‘The CPU cannot operate without a stack. We will find that we too can use the stack, if we are careful.
Remenber our earlier discussion of ROM, RAM and boxes? If not, you need some back issues! Think of our CPU's stack as a stack of boxes (memory locations). You can remove or add to the top of the stack easily, but try to remove or add a box somewhere in the middle and the stack topples. CPU's stack works the same way except it grows down fron the top as if the boxes were suspended from the ceiling. Therefore, we actually add to the bottom of the stack.
Beginning Z80 Machine Code
PART SIX
12th- AND MB-" I would obtain all senior flute players in the marching band (MB- is my code for marching bank). That's pretty easy to understand.
The NOT search is essentially the opposite of AND. To compare with the above example, if I search for “Flute NOT 12th- NOT MB-" I would get every flute player who is not a senior and who is not in marching bank. Since I have instrumentalists who are in the color guard during marching season, a more typical situation would be a need to list only those marching band members who are not in the color gurard. I just do this search: "MB- NOT RIFLE NOT FLAG". It is a little unusual at first searching fron this opposite viewpoint, but it soon becomes second nature and Tom explains it well in the documentation.
The OR search is especially useful to me. Often I do a printout of the band according to the section they are in. Therefore I would first search for "Piccolo" and when done, search for "Flute" and then "Clarinet", ect. All those searches were annoying, but with OR I can search for "Piccolo OR Flute OR Clarinent OR Saxaphone" and the computer will print all the piccolo players followed by flutes, ect. I'm sure most of you can think of times you wished you had this capability.
The OR search can get a bit complicated when used in combination with the other commands. Think of it as a divider. For example, the command "Flute NOT 12th- OR Clarinet AND 12th- OR Saxophone" would result in the computer first finding every flute player who IS NOT a senior. When this is done, the computer will find every clarinet player who IS a senior. Finally it will find every saxophone player. See how the use of OR divides up the search command? If not, Tom explains it better than I do and gives examples of what to watch out for.
Simply put, to me the new search capabilities alone are worth the price and everything is just a bonus. I strongly recommend it to anyone who neads to keep track of names, addresses, phone numbers, recipes, collections or just about any other records you can think of.
The PRO/FILE Cartridge for the TS 2068 is priced at $59.95 plus $1.50 for postage, and is available from the author, Thomas B. Woods, PO Box 64, Jefferson, NH 03583.
There is a special register inside CPU dedicated to keeping track of the stack. Its mnemonic is SP which means Stack Pointer. SP contains the address of the last location on the stack.
All information on the stack is stored in the usual two byte format used for addresses. We can place information on the stack (PUSH) or remove it from the stack (POP). Our friend CPU auto- matically adjusts the SP with each operation by the required two bytes. It is important to realize that even though sP is adjusted to point to the correct location (box), the information is still there until it is overwritten. Sce Pig.1 to make this clearer.
The PUSH and POP instructions can add/remove information to/from the stack and any register pair. For instance, if we wish to stack the contents of the B register, we need to PUSH BC. We will have also stacked the C register, since we must use a register pair.
Last issue we learned the CALL instruction. It stack to save the value of PC in order to know where to. In effect, CALL executes a PUSH PC, JP to new complete the subroutine, and then a POP PC (Ret) executing the program from the byte after the CALL
rses the to return location and and continue instruction.
Figure t
Assume the top two locations of the stack
ess O is overwritten by another stack
bobbie!
612345678
Take first 3 digits
NEW BOOKS FOR THE NEW YEAR! ROM
RMG ENTERPRISES pitsietiscsiiccicoseciesiasscesss Las 2068 ROM MANUSCRIFT
By DR. LLOYD DREGER OF SMUG is a FULL DISASSEMBLY of the 2068 ROK, with notes and comments. If you.are into HC programming on the 2048, this is one volume that will serve you well! Over 20@ pages of information with an index to routines with starting addresses in both HEX and DEC! Also includes a full cross-reference to SPECTRUM ROM!
Our price is only $14.95 plus $2.50 ph.
INTRODUCTION TO 2068 MACHINE CODE PROGRAMMING
Also by DR. LLOYD DREGER OF SMUC (SINCLAIR MILWAUKIE USERS GROUP) is the first of a proposed 2 book series on this subject. This one has A LOT if information that has not been explained too well up to now. Again, over 200 pages of educational material, Written to be used as a self studi course in beginning MC, we feel that it is well worth the
woney! Also only $14.9 plus $2.50 ph.
SPECIAL!!! BOTH BOOKS-ONLY $36.00 PLUS $3.00 FH! SEND TI RMC ENTERPRISES 1419 1/2 7TH STREET t FAs
A najor breakthrough for the T/S 2086. EYTE TOWER, a highly sophisticated
conputerized magazine on cassette.
No longer will you have to type in long. fastidious prograns...JUST LOAD AND RUNY
BYTE POWER is the ultinate nagazine for the T/S 2066. Each tape is full of prograns, a real 1/5 2066 ouner’s drean.
EYTE FOHER is a software based magazine with over 130 prograns per year, nost of then in fast Machine Language. Frograns such as TALKING CLOCK, E4SYuord uord-procesecor, GHANI' FRIX a Sf race, and 35F Cinall Screen Paint are sone exanples of the high quality prograns published in BYTE FOWER Magazine.
BYTE POWER beings you this quality progranning at a very snall cost, LESS THAN 39 CENTS 4 PROGRAM. based on 1 year subseriptian.
Flus you get Software and Harduare reviews and Tips to help you design better progranst
SSUE CSAMPL
TH SUESCE
AR SUBSCRIPTION (12 ISSUES). AR SULSCRIPTION (24 ISSUES)
ALL prices in US FUNDS. SEND CHECK Of MONEY ORDER TO BYTE POWER,
1748 Headouview Avenue, Pickering, Ontario, Canada LiV 366
Note that the information was moved from the stack into a different register pair than it originated fron. This is a very useful tool to have at our disposal. However, we must be aware of what we are doing or we may find ourselves expecting data at a location other than where it ended up.
You will no doubt have noticed that I have rater laboriously explained the many instructions we have learned up to this point. ‘The truth of the matter is that I have been trying to walk the fine line of too much detail/not enough detail. I hope there has been enough to get you started without boring anyone.
We now have enough instructions to begin programming. I firmly believe the only way to learn any language is to use it. With that in mind, we will concentrate more on accomplishing some task and less on the instructions. I must assume that if you are still with me, you have by now acquired sane good books to supplement your learning.
We will need to be able to "see" if our programs are com- pleting the task as we desire, therefore, we will initially write programs that will affect the display file. This will necessitate two separate discussions, as the TS1000 and 1S2068 each handle their display files differently. You may wish to skip the section which does not pertain to your computer, but I think you will find it beneficial to read.
Before we jump right into it though, we need to look at the Sinclair manual again. Towards the back of the manual you will find a section on the system variables. These are variables used by the Basic operating system to keep track of various items. Many of these will prove useful to us and several others are required to be under our full control. I will use Sinclair's names and explain each one as we need it. You should take a moment to review this section of the manual as we will become comfortable with many of the system variables.
‘Timex Sinclair 1000
The display file (D-File) is arranged as 24 rows of 33 characters. The last character in. each row is an end-of-line (EOL) marker, which is CHR$ 118 (the code for Enter). In addition the very first character is an EOL marker. We must never ever overwrite any of the EOL markers. If we overwrite any of the EOL markers; the system will. crash!
This description only applies to a fully expanded system (greater ‘than 3,25k). The D-Pile is collapsed to 25 EOL markers ina smaller system, Iwill assume yours is fully expanded.
Since the D-File moves about in‘memory as your Basic program expands and contracts, its location'is held ina system variable known as none other than D-File. This means that we can always locate the'D-File with the instruction Ld HL, (D-File).
The easiest way to print to the D-Pile is to use the RST 10h instruction as that is where Sinclair has placed the print routine. RST 10h will print whatever character is in the A register. Enter the following to get a full screen of asterisks:
dating 1
jLine counter icharacters/line counter jeharacter to print
@E16 = Start Ld C,18h 9620 Loopi Ld B,2eh SEIT == Loop? Ld A,17h
Dr Rst idh jgo print it
1078 DINZ, Loopz juntil line ts full 20 Dec ¢
20F6 Jr NZ,Loopt
co Done Ret. ireturn to basic
While RST 10 is the easy way, it is only a minor improvement over Basic. That's because we are using the same routine as Basic uses. The advantage is that we didn't have to keep track of the EOL markers.
The fastest way to print to the screen is by direct pokes, even from Basic. Enter the following for an almost instant screen fill:
Listing 2 2A0C4@ Start Ld HL, (D-File) get D-File location Oz18 Ld*C, 18h line counter 23 Leopi Ine Bb get past EOL 2620 bd B, 20h characters/line counter 3617 Loop2 Ld (HL),17h j poke character onto screen 23 Ino aL jadvance print position 10FB DINZ, Loop? igo do again? oD Dee ¢ jeount one line done 20R5 Jr NZ, Loopl do another line? co Done Ret. jreturn to Basic
You should have noticed that this method allowed printing on all lines. There is a system variable, DF_SZ, which can be poked from MC or Basic to allow full screen printing, however, the system can be easily crashed if not properly handled. Also, the number 17h can be any printable character code. Now for an all purpose, generic print routini
dating 3 1A Print Ld A, (DE) icheck for EOL marker FETS Cp 7éh 2001 Jz NZ,NozOL 13 Tne DE get past EOL marker iz NoHOL Ld A, (HL) get character to print FEFE Cp Fh check for end of text co Exit Ret Z and return if reached 12 Ld (DE),A iprint it 23 Inc BL advance character pointer 13 Inc DE ‘advance print position 18F3 Sr Print do it again
‘The print routine is useless by itself. Upon entry, HL must contain the address of the first character to print and DE must contain the address in the D-File to print at. Enter the following routine to understand how you would set-up HL & DE and Call this routine at Print.
Listing 4
2A0C4G Entry Ld HL,(D-File) ;get D-File location EB EX DE,RL
jinto DE
210041 Ld HL, Text jget address of text jaddress assumed to be 41¢¢h epee Call Print go print message address assumed to be 4082h co Done Ret ireturn to basic
And now a message must be stored at 4100h. Enter these hex codes to address 4100h:
Hex Dump 1 39 2D 2E 38 00 2E 38 OO 26 0 39 2A 38 39 1B 20 2E 2 38 3A 37 2A OS 2D 34 35 2A OB 2E 39 00 OO 3C 34 37 30 98 18 FF
Note that the print routine requires a terminating byte FFh in order to exit. Our test should now work with the command Rand Use Entry.
‘Timex Sinclair 2068
The D-File consists of 192 lines of 32 bytes/line for the character information and 24 lines of 32 bytes/line for the attribute information. The last 768 bytes are known as the Attribute File (A-File). The D-File is fixed in memory at address 4000h and the A-File resides at 5600h. We will discuss the A-Pile at another time, as its purpose is to hold the color attributes ef each character square. We will therefore not be using the A-Pile at this time.
‘The organization of the D-File is not what you would expect. Each character is eight pixels by eight pixels (one character square). The eight pixels across fit nicely in one byte, hence the 32 bytes across each line. The problem is the eight bytes needed to make each character are not stored consecutively. Looking at Fig.2, you can see that the D-File is split in three sections of 64 lines each. Within each section, the eight lines which comprise each character are 256 bytes apart (8 lines * 32 character spaces). The junction of two sections is where there is a difference as the sequence begins to repeat. Study Fig.l] to make this clear. I am told this unique structure has something to do with the way in which a TV draws its scan lines. Since I understand very little about the hardware, I must. claim ignorance and accept this explanation.
This means that the easiest way to print to the screen is by using RST 10h, which is where Sinclair chose to start an all Purpose print routine. Once again though, things are not as easy as they would seem. The 2068 uses channels arid streams to direct the traffic (we will discuss channels and streams later). This means that we mst be sure we know where ve are directing the output of RST 10h or else we will have no idea where it will end up.
Do not allow the D-File structure to put you off. We can still write to it if we understand its structure. Also, many of the routines we will need to help us handle it, are already located in the ROM.
Let's try a simple print using RST 10h. Enter Listing 1 from the 11000 area above and run it with Rand Usr address.
You should get Error 5 on running this one. Notice how the bottom line is printed and scrolled. Probably:not what you ex- pected. We could call the channel open routine to fix this, but there is an upper/lower screen flag that can be temporarily set. If we reset bit 0 of TVFlag, we can print to ‘the upper screen. Insert as the first two instructions:
213csc Ld BL, TVFlag
et TVFlag address 3600 Ld (HL),00
set flag
Now run the routine. Works great! A much better way is to only affect the bit needed. This requires the instruction Res 0,(I¥+02), which we have not learned yet. You could also have
achieved the same result with the first routine if you ran it with Print Usr address. This sometimes leads to undesireable results, therefore, we will always use Rand Usr address or Let x= Usr address.
Lets attempt to poke a character directly onto the screen. It cannot be done in one easy step as was the case with the TS1000. We mist now resort to a complicated routine such as:
ddsting 5 0630 © MakeC Add A, 30h EDADIGSC Print Ld BC, (chars) 55 Push Ab 2600 La H, oon jtransfer character oF La bia feo nt 23 Ade BL, HL jmutiply by 8 29 ‘Aad BL,HG 23 fae HLH 29 Agé HL, BC jget offset to character Hate in table mB EX DE,HL address of date to DE 2ApOSC Ld HL, (Store) storing address ale to print st e608 La B, ooh ia boop Ud Ay (DED ” La (AL), A 24 Ine H jadjust print pointer 13 Ine DE djust data pointer 10FA DINZ Loop re we done? loop back t not, to complete 21B05¢ Ld HL,Store get and adjust print rt 2p at etnies aoa OD Hfetrleve char location ce Done Ret
jone character rrinted
This routine is worthless without some data to print and another routine to set-up the registers and call it. Notice that there are two entry points. Print is the normal entry, however, MakeC is used to print a’ number without having its character code (as in raw data, instead of text). The unused location of SCBOh
in the system variables area stores the address of the next print position.
Upon entry to Print, we need to have the character to be printed in A. The HL register points to the character to print and needs to be preserved while Print is executing. Also, note that the program expects the data string to end with a byte con- taining FFh. Enter the following routine to set-up the registers and Call Print for a test. Your command to execute is Rand Usr Entry.
Listing §
210040 Entry Ld HL, 400¢h jist address to print
22n05C Ld (Store),HL iat into our variable
213075 Ud HL, Date
78 Loop Ld A, (HL)
FEF CP Fin
ca Exit Ret 2
coegeo Call Print ‘go print it rint assumed to be t 820R
23 Inc BL \dyance char pointer
1876 Je Loop et next characte
And here is the data as a hex dump:
Hex Dump 2 54 68 69 73 20 72 GF 75 74 69 GE 65 20 77 69 GC GC 26 GF SE 6C 79 29 70 72 69 GE 74 20 69 GE 20 SF SE 65 20 74 GB 69 72 64 26 GF 66 20 74 68 65 20 73 63 12 65 65 GE 20.61 74 26 61 GE 79 20 20 74 69 GD 65 28 FF
Be sure you have used the sane addresses or change them to suit. If any address is not correct, you may crash.
Well, that's all folks, See ya next time. Syd Wyncoop, SE 155th St., Portland, OR 97233.
2107
PROGRAMMING CONCEPTS py arperte
The following articke deals with programming on a Sinctain 2X81 (ox 781000). It 48 just a portion of a £arge document, with the ngmainder £0 be published in the next Lssue of TOM, atong with a phognam Listing. The Listing is a game. program, "1X81 TIC-TAC- TOE", which wile serve as the chieg example and will be discussed extensively. If readers would Like to get a “head start", a complete Listing of the program, declarations and array content
are avaitable for $6.10 ppd.; on a cassette is avaiable (non- Listable) for those who don't want to key in the prognam, from the authon. Albert F. Rodriguez, 1605 Pennsyfvania Ave. #204,
Wiand Beach, FL 33139. (Fonedgn buyers add $2 for the cassette, on $1 for the Listing).
‘This article was meant to be an exercise in learning about the actual aspects, functions and limitations of the Sinclair 2X81 microcomputer and it's version of the BASIC language. It also provides a tool for finding if, given the technology of this machine, quality software could be produced, and if indeed so, how would soneone do it.
First of all, a vord of caution to the reader about what lies ahead is in order. Some of the concepts presented in this article, which pertain to programming habits and techniques, were borrowed fron works by other parties. Careful attempts in this article have been taken to clearly credit their ideas to each of then. However, the integration of these ideas into a concise whole, as well as any derivations of new ideas thereof, is only this weiter, who does accept full credit and responsibility for this work.
As a novice I must say that I was oblivious to the most basic aspects of writing a program using the 2X61: Space and Time. Both of these elements are usually, but not always, directly proportional. The less available programmable memory used, the less time it should take for a progran to either execute or transfer from cassette to the computer.
‘The load time for my program 2X81 TIC-TAC-TOE (which we will lock at later on) is 4.17 minutes, without any special hardware assistance. It is saved, self-runs and executes in FAST mode. The actual RAM cccupied by the program is 10535 bytes. How this figure was determined reveals a relevant proceedure about pro- gramming with this machine.
Both the ZX81 and the TS1000's User Manual fail to discuss how a given amount of RAM programmable memory can be measured in order to determine the total amount of it available, how much is used, and how much remaining for progranming.
It is well known that a byte is a memory location that, when active, is holding either blank space, numerical or alpha- numerical characters. Given as an example, a machine with 16k of
36
Fr.
Rodri guex
RAM-that is turned on, and is not exhibiting a program, plus the fact that 1k is equal to 1024 bytes, we would expect that it's total available programmable memory is (16 X 1024)...16384 bytes. Yet the display file constantly occupies 1k of memory, even when it is providing nothing but a blank screen with a cursor (for this piece of info, I am grateful to Memotech Corp., Denver, CO 80227). Hence, a blank screen actually represents 1024 bytes of monory occupied by character spaces.
If the programmable area of the screen consists of only 23 lines and 32 columns, then there are only (23 X 32) 736 pro- grammable memory locations (i.e.; only 736 programmable bytes) available in the display file. The other (1024-736) 288 bytes in the display file are found starting with the first line after the cursor line in the work space area and consist of (288/32) 9 lines each having 32 columns. If then, we subtract 288 from 16384 we obtain the total available bytes--16096—-that_ can be used before the machine's entire programmable memory becomes full.
To determine the amount of programmable memory used by a program, the following expression should be placed as the last line of a program and executed with a GOTO from the immediate mode:
9999 PRINT PEEK (16404)+PEEK (16405) *256-16597;"_BYTES"
(In part, for this expression I am grateful to Ms. Toni Baker, "Mastering Machine Code On Your 2X81", Reston Publishing Co., 1981, page 30.) The figure 16597 was determined by taking the starting address of the program area (16509) then adding to it the bytes occupied by this expression (66) and 22 more bytes occupied by another expression (described below) that reveals the amount of programmable memory remaining.
In determining how many bytes of programmable memory re- mains during, or after a program is being (or was) composed...the following expression should be placed as the first line of a Program and executed fron the immediate mode by the statement “PRINT USR 16514":
1 REM EQRNDLN ACS : FAST AT 5 = GOSUB PI FAST AT TAN (Bor this expression I am grateful to Dr. Ian Logan, “Bytes Re-
maining--8k", SYNTAX, Vol.2 No.12, Dec. 1981, page 5). With this expression I obtained 5559 bytes of memory remaining after finishing my 2X81 TIC~TAC~TOE program. My memory used (10535) plus my memory remaining (5559) equals 16094. If, however, we add 2 bytes occupied by the cursor sign, then we have the exact sum (16096) of the total available programmable memory for a 16k machine that was mentioned earlier.
‘Another pertinent phenomenon I realized about both time and space, while writing my program, was about how the 2X81 uses it's available memory to store and manipulate data and the effect of the same on processing time.
My primary concern while writing my progran was whether I could fit it all within 16k of RAN. I strived to make my routines as concise and as frugal as possible with respect to the utili- zation of memory. Consequently, my programming impetus was to make a program that was primarily a space maximizer: “Do all that you have to do, with what you have, in the least amount of space that you can."
Tt was the inadvertent pursuit of this maxim and the fact that I happened to be reading Chapter 3 of Mr. Randle Hurley's book, "The Sinclair 2x81: Programming For Real Applications" (available from Time Designs), that made me become aware of the fact that less space utilization does not always result in less processing time required for a program or routine to execute properly.
It would be redundant (and beyond the scope of this article) to reiterate the fine explanation that Mc. Hurley provides in his book, as proof, of why the Zx81 sacrifices processing time at the expense of storing and manipulating more accurate data, than say it's forebear the 2x80. Its suffice to say that the ZX81 pays for these new capabilities in terms of more time and less speed during processing.
It should, therefore, be a priority of ZX81/TS1000 pro- grammers, who use BASIC, to accomplish their programming ob- jectives by using instruction-code techniques that minimize memory consumption while simultaneously mzximizing (or at least not minimizing) processing speed.
In his book, Mr. Hurley identifies five important techniques that were helpful toward obtaining an optimm memory-cost-to- processing-speed (MC/PS) ratio when I wrote my program. Though I did use most of these techniques in writing my program, I cannot honestly claim that each part of my program represents the most
optimal acheivement of said ratio. Nonetheless, they were en- ployed enough to make somewhat of a positive effect on processing speed and memory savings.
First, there is an advantage in using numerical variable names versus using numerical constants within code expressions. The savings in memory costs can be as much as 40% while still maintaining a faster processing speed. It is for these reasons that all of my subroutines, within my 2X TIC-TAC-10E program, are called via a respective variable name. This technique also helps to easily access a particular routine in the program for purposes of editing or debugging.
Second, one of the most important aspects about my program is that it requires and makes plenty of use of FOR/NEXT loops. How these loops are structured can have a significant effect on the NC/PS ratio. how they can be made to optimize this ratio is a matter of determining the instruction-code placed inside this kind of loop structure, which will use the least amount of memory to accomplish the necessary accurate manipulation of data with the least amount of loop repetitions. Specific examples that illustrate this principle can be found in Me. Hurley's book on page 36.
Third, another benefit regarding how to preserve processing speep while saving memory is in how values are calculated with FOR/NEXT loops containing different arithmetic functions. For example, values determined by power functions tend to take longer to compute than if either multiplication or addition were used instead (Ibid., page 36).
Fourth, a substantial optimization of the MC/PS ratio results by initializing numerical variable name constants, in the immediate mode, versus listing them within the programming acea. For both memory costs and execution time are augmented when these variables, unnecessarily occupy space both in the instruction area and the variable store. If entered via the immediate mode, they will still be saved on tape; so, why list them in the in struction area again?
Finally, Mr. Hurley's book briefly mentions that where a subroutine is located in a program can affect the MC/PS ratio (Ibid., page 37). Routines (that differ only by size of their line numbers) at the beginning of a program use less memory, but are slower in executing; whereas, those further down the program execute faster but use more memory.
More programning concepts next time.
ZX81 Data Acquisition Module
Tim Stoddard
For a long time now I have shied away from using or designing circuits that use A/D converters. I've always figured that they were too difficult not only to build, but also align and set up. Soin this issue I've de~ cided to take a stab at an A/D converter for the TS/ZX.
I picked the TLC548 as the work-horse for a few reasons: it's cheap ($6.95), it's easily obtained (Radio Shack #276-1796), it's fairly fast for an inexpensive converter (8 micro-seconds conversion typical), it's CMOS, and it looks quite easy to interface to the TS/ZX. (I found out later on that it's easier to interface than I thought! The entire circuit only took me three hours to set-up, from design to working prototype.) The technical info that comes with the TLC548 really helped to speed the design. This circuit is based on the one in that tech sheet, although re-designed for the TS/ZX. The software is again based on the example in the tech sheet but re-written for the re-designed hardware.
The Sinclair's architecture for I/o is rather complex, ironically, because Mr. Sinclair was trying to keep the hardware design simple! The Z80A used in the 1S/ZX is capable of 256 I/O ports using address bits 0-7, However, in order to keep circuit parts count down, the Sinclair's I/O is only PARTIALLY decoded. That means instead of decoding all 8 I/O address bits to come up with an address to read the keyboard, Sinclair only used bit 0 to select the keyboard whenever it is a logical zero, and IGNORES ALL OTHER BITS. So, amy EVEN I/O address (bit O=logic zero) will read the keyboard. That
eliminates using all even addresses for external de- vices. Bit 1 is also used within the computer, when it's a logical zero, so we can't use that bit either. The 7S2040 printer is also partially decoded by selecting bit 2=zero and bit 7=one, so if we keep bit 7=zero, then we can use bit 2. The 2050 modem is completely decoded and uses ports 73 and 77 hex. You'll note that they keep bit 7=zero and bits 0 6 l=one to avoid selecting 1/0 operations in the computer or in the printer. In our A/D converter we will use port 67 hex, which will avoid conflict with any of the common peripherals.
You can make this project simple or complex de- pending on the options you decide to use. ICs 8-19 are optional. To wire up just one channel all you need are ICs 1-7. For two converters just add Ic8, and wire up the second half of IC5. You can continue to add A/D converters as shown in the schomatic, up to a total of eight. The pin connections on the left side of IC7 are common to all A/D converters that you connect up. For multiple converters, this circuit is moré complex than using an ADC809 converter from National, Semiconductor, but that converter takes 10 times longer for each con- version than does the TLC548. So for spéed's sake the slightly more complex circuit is worth it.
Looking at the schematic #1, ICl & IC2 serve to decode the I/O address and form the proper read and write signals we will need to access the A/D converters. IC5 is used as a simple output port to “select” the A/D
Continued Next Page.
converter that we want to read. Note that upon power up or reset IC5 will be preset, deselecting the attached A/D converter. IC7-IC]14 are the converters. IC3 is a tri-state buffer used to read the serial conversion data from the TLCS48s. IC6 is the A/D converter supply and reference.
Schematic #2 shows how you can use the other port commands that happen to decode from IC2 for a general purpose I/O port. IC18 can be added if you want a general purpose input port (input 63H) and ICl9 for a general purpose output port (out 63H). You could also use that port for any other project you may have in mind. If you can wait until next issue, my next article will be using port 63H for a D/A converter.
To begin an operation, we first select one of the converters by writing port 67H (the "H" designates hex) with the appropriate bit=zero and all other data bits set high. For instance, to select converter #0 we write port 67H with FEH (binary = 1111 1110). So, to select converter #1 we would write port 67H with FDH (binary 1111 1101). After we have selected one of the converters we then can read the PREVIOUS conversion results from it in SERIAL form, [So after selection, data bit 7 of the result is available from the data out pin (pin 6).] All we need to do is issue a read port 67H instruction and IC3 will put the serial bit on to bit 0 of the data buss for the Z80A to input. IC4 inverts the read port 67H signal so that at the END of the read port instruction the low-going signal will cause the TLC548 to send the next bit out by toggling the I/O CLOCK pin (pin 7). All we need to do in the software is READ PORT 67H, SHIFT LEFT, READ PORT 67H, SHIFT LEFT, ect., until all 8 bits have been read. Then, at the end of the operation, we de-select the A/D by writing port 67H with FFH (binary = 1111 1111). You can deviate from the circuit when selecting a regulator for IC6. I used a 723 because I have a lot of them, and they are readily available. The overall accuracy of the converter is based on this regulator since it supplies the reference voltage to the converter. You could also leave the regulator out and use the regular five volt supply, but accuracy would suffer. The TLC548 is an 8-bit converter. This means that it can "dissect" the voltage being measured by 256,
and this would be the smallest measurable voltage. For instance, if the reference voltage is 2.56 volts, then the maximum measurable voltage would be 2.56 volts and
a a
rept
S12 vorrs
EPs
the smallest would be 2.56/256 or .01 volts. This would be an ideal reference because each count would be .01 volts. However, the tech sheet indicates that “un- adjusted errors may increase if the differential voltage Vref+ to Vref- falls below 4.75 volts". So we need something greater than 2.56 volts to keep accuracy up. If we use 5 volts this would give us the smallest measurable voltage 5/256 or .01953125 volts-~-a rather hard number to work with. Looking again at the tech sheet you'll see we can supply up to 6 volts in normal operation. So if we use 5.12 volts this would not be too high for the other logic and it would give us 5.12/256 or .02 volts as the smallest measurable voltage-—-an easy number to work with. Why use the 5.12 as the supply voltage too? If we use the TS/ZX 5 volt supply to supply vec to the TLC548 and the 5.12 volts as reference voltage only, we would be violating one of the specs for the TLC548. Page 4 of the sheet, the line that states “Positive reference voltage, Vref+ (see Note 2)", this states that the max Vref+ that can be supplied is vcc + +1 volts. We would be .12 volts over Vcc.
The following ML routine can be poked into the first REM statement and will give you the PREVIOUS con~ version results each time it is accessed. The routine uses relative jumps so it can be placed anywhere. Just remember to add 6 to the starting address of the routine to obtain the address to change the converter selection
byte.
LD B,08H 06 08 «= 06:«08_~—ss initialize counter LD ¢,0 0B 00 14 :00_~—sjcllear result register LD A,FEH SEFE © 62.:«254_~—sjsellect_ converter QUT 67H,A =-D3.67 211 103 ;via out instruction LOOP: RLC C CBO 203 01.—=s shift result register left If A,67H = DB67 == 219 103s read converter bit AND A E601 230 01 «= ;mask off bit 0 OR C BL 177 jor result register to new bit LD CA 4F 79 jput new result into result register DEC B 05 05 jdecrement bit count JR HZ,LOOP 20F5 32-245 «= j4f bit count>o continue LD A,FFH 9 SEFF © 62. «255 elect all converters OUT 67H,A = D367 211. 103 ia out 67 instruction RET co ireturn to BASIC
CHAMUELS FOR voumnees To BE mensueed arent
Grey & Clifford COMPUTER PRODUCTS
Ed Guy
(213) 759-7406 SALES AND INFO.
Dave Clifford (213) 516-6648 TECHNICAL INFO.
P.O. Box #2196 INGLEWooD. CA 90305
LARKEN
SCHEAATIC. HL. pp eonvare, ) oF To f comics ae ou35 rm B85 ore Br L ‘er?
3
onraus @)+ Semicr nce
Ed
DISK DRIVE py-g ys a for 2068
DOS on Eprom supports Basic Programs, Code blocks end Arrays, = Commends are-DIRECTORY,LOAD,SAVE FORMAT, DELETE ond EXIT = Up to 52 files per disk ~ Directory is 0S maintained = Con be modified to work on either computer (eprom and cable rea) - The most Powertul DOS for the ZX-81 : Very User Friendly = 2068 version is Spectrum Emulator Competible: Extra commends ~ Requires double sided 5.25" drive 160 day money back guarantee Prices: $95.00 (US) for single drive $99.00 for 1 or2 drives $400. tor drive cable (all other cables included) include $5.00 shipping : Send certified cheque or M0. To- LARKEN ELECTRONICS RR#2 NAVAN ONTARIO CANADA KaB~1H9
(specify 2X-81 or 2068) wee
The following is a BASIC program that shows
usage of the ML routine above.
1 REM 123456789012345678901234
1000 PRINT AT 12,0;"AD1=";AT 12, 16; "AD2= 1004 POKE 16519, 254
1005 LET A=USR 16514x.02
1006 POKE 16519, 253
1007 LET B=USR 16514x.02
1010 PRINT AT 12,5;A;AT 12,21;B;
1020 GOTO 1004
Poke the assembly language routine starting at 16514 which is in the REM statement. Then run the pro- gram and it will continiuously read conversions from both A/Ds.
Lines 1005 and 1007 show the usage of the routine, simply call the routine as a USR funtion and multiply the count returned by .02. Of course, if you decide on a different reference voltage, then you would multiply by the result of this formula: Vref+/256.
Location 16519 contains the converter selection byte layed out as follows:
BIT? BIT6 BITS BIT4 BITS BIT2 BIT1 BITO CORVERTER # 7 6 5 4 3 2 1 )
PARTS LIST
YOU MUST SELECT ONLY ONE CONVERTER AT A TIME! A
ZERO in the bit location selects that converter, and a ONE deselects it. There should be only ONE ZERO in the byte at location 16519 when selecting a converter. This
selection method allows up to eight converters to be used while only using one I/O port!
Layout is not critical, however, use.a large enough perf board to allow for expansion. My next article will include the addition of a D/A converter to this board, using port 63H. I used a Vector P178-1 tool and the heat vaporizing wire to wire mine up on a perf board, and using one of the Zebra Systems Inc. edge connectors. Hot glue works great for attaching the IC sockets and edge connector to the perf board. y
Most of the parts can be obtained at Radio Shack, Jameco, or JDR Microdevices who all advertise in most of the electronic journals. The Zebra edge connectors are $5.95 each (Zebra Systems, 78-06 Jamaica Avenue, Wood- haven, NY 11421), or you can cut a 50 pin wire-wrap edge connector down to the 46 pins required using a fine saw or small cutting disc attachment on a Dremel Moto-tool.
I£ you have any problems, or even if you don't, drop me a line and let me know hoy you made out. Tim Stoddard, 85-48 66th Road, Rego Park, New York 11374. CompuServe ID# 73127, 2664.
Ic1, 1c2 741138 Sm
1¢3 74125 hora ”
Ich 74104 oy —3 bts
165 7ALSTA
1c Lx723 @ i a?
ler TLCs48 st @—H we ff : Wied OPTIOWAL PARTS o— ay
uw] tor [is
1C8-IC14 TLCS48 © Fomawe
IC15-1¢17 7A4LSTA You'll neod 1 for every 2 TLCS48e )— oe
1c18 74LS244 @— nS
Tc19 ‘7ALS374 cls
TS 1000/1500 PROGRAM CHAINING
FART
FIVE
BY
Earl v.
In the previous episode of this series, the use of an endless tape with a chained program was presented. I failed to mention that the tape recorder could be left running while the program is being used. The maximum access time for the next module would be one minute for the one minute tape or three minutes for the three minute tape. Due to the manner in which these tapes operate, just how long it would take before the tape failed, when used in your own recorder, is a matter for you to investigate. The best method of using a chained program on endless tape, if your tape recorder has a jack for an external motor switch, is to leave the re~ corder on play and use a foot switch (Radio Shack #44- 610 $2.99) to turn the motor on and off. This same method could also be used, if the entire program re- quires more than a three minute tape or you do not wish to use an endless tape, by recording the modules several times on a regular tape. Using the demonstration program
Dunnington
as an example, you would record the modules as follows: RT, TE, PRT, TE, PRT, TE, PRT, ect.
Even those readers with only a 2k RAM, now have a basis for a full-featured word processor, a file program or a data base by adding additional modules. One of the first would probably be a SAVE/LOAD module. Because the data (text) is stored above RAMTOP and BASIC on this computer does not have a command to SAVE or LOAD data from this area, a machine code program is required. Un- fortunately there are only so many ways'to write a pro- gram like this and they have been published and copy- righted, precluding me from presenting a listing in this article. A data SAVE/LOAD program was published August 1984 in the now defunct SYNTAX. A similar program is in David B. Wood's book "Machine Language’ Programming On The Timex/Sinclair® from Siriusware. For thoe readers who have a ZX81 or TS1000 with at least 16k RAM and who do not mind losing some storage space above RAMIOP, as the program itself occupies 2k RAM, there is a faster-
39
than-normal SAVE/LOAD from anywhere in memory program available from Zebra Systems Inc. (Z-XLR8 Cat# GRO4 $11 plus $3 for postage). According to Zebra, this program will not work on the TS1500. Perhaps one of our more accomplished 280 Assembly Language programmers could de- velop some pokes to this program for the TS1500.
Additional modules you might wish to add to the chained program could be Text Corrections, Cut and Paste, Right Justification, Letter Heading, and Search modules. M& the tree modules presented in the previous episode were developed strictly for demonstration pur- poses, feel free to use them, as is, or changed in your own program. In order to do this, you should know how the value for RAMTOP and the variable B were determined.
For a more detailed explanation of the procedure involved, please see "Adventures In The RAM Jungle" (Sept/Oct '85 to Jan/Feb '86 issues of TDM). This method for determining the Upper and Lower Limits of the Safe Area will not work when there are expanding un-dimen- sioned strings in the program, due to the random use of the Spare Area of the RAM by the ROM routine. The Wicked Wizard of ROM strikes again!
The Spare Area of the user-available RAM is located between the top of the Calculator Stack and the bottom of the Machine Stack (see page 128 of the TS1000 or page 154 of the TS1500 User Manuals). When the computer is turned on, the addresses in this area are filled with zeros. Upon loading and running a program from tape, the Calculator Stack expands upwards and the Machine Stack downwards into the Spare Area leaving, what I call the Safe area untouched. The Upper Limit of the Safe Area is easily determined, as the Machine Stack leaves a trail of. values other than zeros as it contracts upwards. De- termining the Lower Limit is more difficult, because as the Calculator Stack contracts downwards it either re- places the zeros when RAMTOP is set above address 19711 or fills the addresses with the values stored in the Safe Area just above the Lower Limit, if RAMTOP is set to 19718 or less, an INPUT commandis in the program, and the DELETE command is used to correct the input. The Wicked Wizard does not play by the same rules all of the time! In addition, when RAMTOP is set to 19711 or less, the computer is in the minimum display file mode and as characters are printed on the screen, the display file expands, pushing the Calculator stack upwards. There- fore, in the case of the demonstration program, we cannot allow the program to be listed when determining the Lower Limit of the Safe Area.
‘The number of bytes in the Safe Area plus 36, of the module requiring the most memory in order to operate determines the address to which we can lower RAMTOP and still have both the entire program and the computer operate properly.
I must admit that having-a TS1000, I set RAMTOP to 2k (address 18432) and developed the TE module first, as I expected it to require most memory. The text in this
1 REM 1234 Fi
So" “EP
RAND USR VAL GOSUE UAL ”
LORD RETURN POKE 16514,49 POKE 16515,252 POKE 16516,67 POKE 16517,201 ROUTINE TO SET RAMTOP To i7da8
FIGURE NO. 4
Ee
40
case being POKEd to 18433 and above. I then determined the Safe Area for that module. Next I programmed the PRT module, also with RAMTOP set to 2k, and determined the Safe Area for it. Then I programmed the RT module so