Skip to main content

Full text of "Sorcerers Apprentice, The - Vol. 4 No. 2 (1982-03-01)(Sorcerer Users Group)(US)"

See other formats


PAGE 25 
VOLUME 4 



FIFFf^EflTISE " 

INTERNATIONAL COMPUTER USERS GROUP/NEWSLETTER 

Copyright (C) 1982 by Sorcerer's Apprentice - All rights reserved Price ^3.00 



NUMBER 2 



MARCH 1, 1982 



IN THIS ISSUE - 

EVALUAT IONS 25 

ODDS & ENDS 2 6 

OFFICE SORCERER 26 

WP-PAC & D-PAC CP/M LINKER.. 28 
WP-PAC TITLING & PAGE NLM...2 9 
RELOC. WP-PAC J CCM. REVIEW. 2 9 
SAVING WP-PAC FILES TO DISK. 29 

BITS & BYTES 31 

ON-LINE 32 

PAC BASIC PROG. TO M-DISK...33 
W-PAC MX80 PRINTER DRIVER... 34 
GRAFTRAX-8 W/SPELLBI^DER . . . 34 
HARDWARE NOTES 35 



yfORD PROCESS ING CORNER 35 

CADAS DATA BASE - REVIEWED.. 3 8 

PASCAL PORT 38 

4TH-TIP 39 

RECONFIGURING CP/M 39 

RANDOM SEED FOR (RDM) 40 

ASRTO ATTACKER - REVIEWED. .. 41 

GRAPHICS FOR THE MX80 41 

HAGAN SPREADSHEET PROGRAM... 41 
SaiCERY BREWS - REVI EWED. . . . 42 

CALL-WAITING FIX 42 

RA^DOM I/O 44 

DISK NOTES 47 









EVALUATIONS 

by Emiliano De Laurentiis 

After a long winter sojourn, it is a pleastire to review some fine products that I 
received this week from Global Software Network (i.e. Howard Arrington). In this 
issue I Mdll review two games which Howard submitted to me. In the next issue 
Database System II and Super Disassembler will be reviewed. 

Missile Defense, written by Roger A. Kemp, is the Sorcerer version of the Atari 
Missile Command game. The keypad keys, or a joystick, conttol the missile sight 
that is used to aim one of four missiles to an approaching enemy missile. In the 
opinion of one person on whom I tested the game, the representation of the city is 
very well done, hut the explosions are monotonous, too symmetrical, and predictable. 
It is not too difficult to detain a high score in missile defense (I obtained 26000 in 
the first hour). The highest score obtainable is 32700. The existence of such a 
limitation also limits the challenge of the game. Where do you go once you have 
reached the limit? Youncer computerists may find the game interesting, but since my 
greatest competitor in Galaxians is an eleven year old, I dovbt this too. 

In all fairness to the author and publisher of missile defense, let me say that 
many of the limitations of die game are due to the limitations of the Sorcerer. If 
this game were written for the Atari by making use of the Ataris' state of the art 
graphics capabilities it would be as good as, if not superior to. Atari's own Missile 
Conmiand. 

Howard also submitted CHOMP. This program was reviewed by Ralph LaFlamme in 
the December issue. I can only add the following comments to Ralphs rave 
review... Yes, Yes, Yes... this is an excellent game. May I add that the new version 
has joystick control and sound. It is a definite plus in the excitement that CHOMP 
delivers. And do not expect just random tones, CHOMP sounds include munching, 
music, and a guttural burp when you eat the cherry. Do you think that it is 
because of the absence of violence in this game, and because of the gastronomic 
connotations that this has become the most popular arcade game for women? • 



ODDS ft ENDS 

bf Ralph LaFlatnme, Editor 

I would like to start off by 
thanking Don Gottwald for putting 
out the last issue foe me while I was 
on vacation. It's a lot of wodc 
especially when you haven't done it 
before. We've gotten some complaints 
about some of those issua. Some had 
blank pages or were badly stapled. 
If you have audi a copy, please return 
It and well send you anodier. We 
want those copies back so they can be 
rctutned to out printer. He apolo- 
gizes for them. 

We have also received a number of 
complaints about non -delivery of 
some issuM. Please let us know if 
youVe missed an issue. We'll get 
another out to you. We want to 
know about any problems you are 
having in this regard. We want to 
file a complaint with die Post Office 
and need your input to do so. 

We appreciate the numerous articles 
on the MXSO printer and will 
continue to pti)lish diem (more in 
this issue) but we would also like 
articles on interfaces for other 
printers al well. 

We also need articles on various 
didc systems, such ss the Vista, 
Discus, Mocrow, etc. Please help vour 
fellow member by submitting articles 
on how you interfaced your drives to 
the Sorcerer. 

Your contributions of articles have 
been the key ingredient in our success 
and am looking forward to another 
very sucessfull year with diis News- 
letter. I must, however, ask your 
indulgence once again. We are be- 
ginning to get low on articles and 
need your help. If you have any 
programs, routines, observations, re- 
views, successes or failures that may 
be of inters t to others, please send 
^cm along. We still haven't pii>- 
lished anything on sound genera- 
tion/recognition, light pens, bat code 
readers, MicroNET, Source, etc. If 
Y<M have any particular area of 
interest that we have not yet coireted, 
please send along your request. 
We'll see what we can do to help. 

In this issue, we are b^inning 
ptfclication of Roger Hagan's spread- 
sheet program. This is quite a long 
RamPac Basic program. As recetired, it 
tuns to 19 pages. In this issue, we 
have included what is equivalent to 
five of those pages. This will requite 
several issues to publish. If you 
don't want to be botfiered going 
through all the hassle of keying it in 
then dd>ugging that, or you want a 
didc-based version, then see Roger 
Hagan's column, Tlic Office SMcerer, 
elsewhere on this page, foe ordering 
details. If you want to key it in but 
don't want to wait foe the whole 
program to be published, then Roger 
has garen us permission to distribute 
hardcopy versions for ^S to covet out 
costs. Jiut send us a check or money 
order, and we'll send you the whole 
thing pronto. 

I am pleased to announce that Tim 
Huang, out FORTH Editor, has 
authored a CP/M version of FORTH 
for the Sorcerer I or II. He has been 
under contract to Ezidy Systems, Inc. 
since last fall, to produce this new 

26 



customized Z-80 version of fig- 
FORTH for the Sorcerer. This mns 
under Mentzer's CP/M 2.2 or Life- 
boat's 1.4. An Ezidy version is in 
the works and should be ready soon. 
This ^120 package includes a FORTH 
disk, a screen didc (loaded and 
another on the way!), his new book 
AND SO FOBTH (20 chapters, 5 
appendices and more than 300 pages 
^25 separately), current update 
notes for a year, postage and 
handling. We have a copy on the 
way and will do a review in a future 
issue. We will have more details, 
however, in die next issue. If you 
wish mact information, or wish to 
order a copy for yourself, you may 
contact: Tim Huang, 9929 N.E. Gertz 
Circle, Portland, OR 97211 td. 
(503) 289-9135; Roger Hagan, 109 
Belmont Place, Seattle, WA 98102 
tel. (206) 394-9034; oc Arrington 
Software Service, 9S22 Linstock, Boise, 
ID 83704 tel. (208) 377-1938. 

Some of you may be wondering why 
we are not offering surface subscrip- 
tions for overseas members. Well, 
we've had many complaints due to 
extremely lona delays in delivery of 
issues (120 days oc mace) and in 
some cases no delivery at all. Since 
we have no control over the mail in 
anv country (including die USA) 
we've decided that Airmail is the best 
way to assure that out members get 
the Newsletter. 

We've had to raise the cost of the 
Newsletter (to ^24.00 - same u USA 
First Class) to Canada and Mexico, 
since we cannot bulk mail to these 
countries and must, therefoce, pay 
First Class postage. We hope this 
answers some of you inquiries regard- 
ing die price of me Newsletter.9 



THE OPFICE SOKCBSEl 

by Roger Hagan 

This month I commence printing a 
commented lilting of my Spreaddieet 
program in the Rompac Basic version. 
As you will see from its 17K size, 
^47.90 is hardly adequate compensa- 
tion for the hours you will spend 
typing the program and debugging it 
for your typos. The disk Basic 
version is in a different vernacular, 
and its price, ^75, is even worse 
compensation for the effat you will 
make to convert it, split it into three 
overlays, and type it etc. But if you 
type it anyway, write me if vou want 
a manual, SAMPL sheet tile, and 
occasional update memos. I'll get 
you there for ^20 or so. I ask only 
that you include my copyright line in 
your version, so that my copyright 
remains valid. Publication of ^e 
program does not mean that I 
relinquish copyright. You may not 
sdl or distribute your typing of die 
program. 

First some news, possibly old when 
this teaches you. Exidy Systems is 
leaving Silkon Valley and moving to 
Texas. As of this writing (mid- 
January), Paul Terrell is out as 
president. Ramona Fleck, a point of 
contact toe many dealers, is out, the 
service department is unpopulated, and 
the company is directed by a 

SORCERER'S APPRENTICE, March T, 1982 



management consultant hired by 
BioTech, the owners. Neither the 
consultant nor Terrell has supported 
a pr(»osed plan to sell spare parts 
and diagnostic supplies to servicing 
dealers, so none of us have them, 
which is doii>ly unfortunate at a time 
when the plant has no setvke 
capacity. Exidy in Texas will con- 
centrate on developing a new Sorcer- 
er, and some peripherals in the 
current catalog such as the S-; 
100/Video diq>lay unit, ■whida seemed 
like a good idea, will never be made. 
Support of current systems after the 
move is an open question. 

Rand<»n reports: I have received a 
good report from a Sorcerer user on 
the bargain spelling dieck program, 
WORD, from Oasis Systems of 2765 
Raynatd Way, San Diego, CA 92103. 
Like Spell check it works on any Ascii 
file. Unlike it, it has a 45,000 word 
dictionary, displays the correct spell- 
ing on request, and costs ^75. 

The same user reports diff amity 
with Vandata's CBasic business pro- 

fram package in the matter of screen 
ormatting, specifically an unwanted 
linefeed after 50 characters. This in 
spite of a Sorcerer set-up routine 
built into Vndata's package. We are 
contacting Vandata and hope to 
report an easy solution. He has 8" 
drives and had no trouble getting 
CBasic going from a standard disk 
from Compiler Systems. He is most 
enthusiastic about the new three- 
author Osborne book on CBasic. 

Another reader reports that Tri- 
angle Systems has not responded in 
some feiv months to a prepaid order. 

Exidy no longer offers 8" drives 
due to trouble with the Morrow 
systems they had been packaging. 
This may be related to die report 
from a San Diego user that the 
California Computer new model (2422 
Rev. A) System card conttoller for 8" 
didcs, no lonaer works well with the 
Exidy due to long delay states in the 
Sorcerer RAM. I will gladly pass 
along reports of 8" drive controllers 
that work well with our systems. 

Exidy has stated that their Exidy 
CP/M 2,2 can be provided foe an 
upgrade price to owners of CP/M 1.4, 
if they can provide the serial nimiber 
to die dealer and evidence that they 
are the purchaser. We expect that 
returning the original numbered sys- 
tem diaE will serve as well as an 
invoke. I believe that Exidy's CP/M 
operates faster than Lifdboat and 
Mentzer CP/M, due to deferences in 
the keyboard routine, buffer size, and 
sector arrangement, but am awaiting 
an opportunity to run the same files 
through the two systems. 

Finally, here is a tip on an 
eternal bug in the Word Processor 
Pac. If you save a file on cassette 
which includes a 26 space indent, 
using the Indent key, the file will 
not rdoad beyond that point. 
Reason: the Indent key puts "IF lA 
IF" in RAM for "Indent 26", and lA 
is also the tape end-of-file symbol, 
triggering an ending procediue in die 
Pac and the placing of an 03 end- 
of-file symbol in RAM. Ciue: never 
use a 26 space indent. # 

Roger Hagan Assoc., 1019 Belmont 
Place E., Seattle, WA 9810 2 



n- 



Better than 
BASIC 

C/80 increases the efficiency 
of your Sorcerer, at ten times 
ttie speed of BASIC! 

Triangle Systems C/80 provides you with ttie speed of a compiler and ttie power of 
structured programming. Now, you can run programs up to ten times faster ttian 
before, with a lot less debugging. C/80 offers you a valuable programming tool 
at a very reasonable price. 



C/80 Supports: 



Character and integer types 

Pointers and arrays 

String constants 

All C math and logic 

Full function recursion 



All C control statements 
I/O redirection 
Standard C I/O library 
Dynamic storage allocation 
C preprocessor statements 



^49. 



includes C/80: compiler and library, CASM: absolute 
assembler, Sample C/80 programs: file 
compression utility, file comparison utility, 
WP PAC file conversion. Triangle Systems 
includes a tutorial introduction to C/80. 

C/80 needs at least 40K of RAM and either 
Exidy or Micropolis C/PM. 



C.O.D. orders are accepted in the United States. Or, send check or money 
order, including $3.00 domestic, $8.00 overseas for shipping and handling. 
Add 5.5% sales tax in Ohio. Specify hardware configuration and software 
format. (1200 baud cassette, Exidy C/PM or Micropolis C/PM.) 




Triangle; 



1690 West Lane Avenue • Columbus, Ohio 43221 



614/486-3527 



SORCERER'S APPRENTICE, Marc/j 7, T982 



27 



WPAC - DBV PAC CP/M - UNKER 

by Dr. Daniel Little 

I would like to share my experiences in relocating the 
Word Processor Pac using the procedure MOVIT listed in SA 
3.1 and interfacing it with the Development Pac. 

Fi'«t» I ^ind the code contained in my Pac is somewhat 
different from the author's. I have an early version of the 
PAC on B>ROM. There were evidently some changes made 
later. Consequently, the author's fixes are incorrect for my 
Pac. In order to fix the relocated code, it was necessary to 
disassemble both the Pac and the relocat^ed code, and then 
con^are the two listings line for line. The main error 
which MOVIT makes is to occasionallv misread data as an 
LD command. This error can be easily detected since the 
two listings will list different instructions. The fastest 
way I found for comparing the two listings was to put one 
on top of the other and hold them up to a desk lamp. 
Differences in the listings are quickly apparent. 

Secondly, I use a CP/M system with DISKDRIV.COM, 
which alloivs the WP Pac to aeate and read CP/M text 
files. I founc the DISKDRIV.COM package to also include 
a revised version of the Word Processor Pac, "addressed to 
run at COOOH. I used MOVIT to relocate this code, and 
corrected the errors by comparing the two listings (before 
and after relocation). It was necessary to relocate the code 
to 4000H tadier than 5000H, since CP/M resxlcs at 6800H. 
When the Pac (or the revised version) is located at 4000H, 
it has full diik capabilities. 

The tarised version contained in DISKDRIV behaves 
somovhat differently than the Pac. It has the same 
cotmnands, but the cursor blinks moce slowly and the 
keyboard routine picks up characters more quickly. I tend 
to drop characters when typing quickly with WP PAC; this 
doesn't haPP«n with the new version. What does happen, 
however, is that the keyboard routine tends to repeat a 
character in lower case when an iqpper case character is 
entered] Tthis lis Wwhat li Mmean. (Not so frequently, 
but often enough to be annoying.) Also, Ae system cradies 
if an illegal command is entered -- e.g. 'N' -- rather 
than responding with the "INVALID ENTRY" message. 

I am using the relocated revised WP as a disk-based 
editor for BASIC and the Development Pac. I've written a 
short formatting program which converts a WP file in 
memory into a DEVJ»AC file. I've inserted a new command 
into the relocated WP: G causts control to jump to die 
format program, *4iich in turn jumps to the DEVJPAC cold 
start. (See SA 3.1 and SA 3.3 foe other applications 
involving new coomiands for WP.) TTiis is a simple way of 
interfacing the DEVJ>AC with CP/M. Files can be created, 
written, and read using the relocated WP vfhiLc the DEVJAC 
is installed, then the source file can be reformatted in 
memory and control shifted to the DEVJ>AC. The source 
file can then be assembled and linked to the tun address, 
then the code can be moved to a safe area (i.e. 3000H) and 
CP/M reinstalled. Finally, using CP/M's DDT the code can 
be moved to llOH, with a short blodc move program at 
lOOH (see SA 3.3), and the code can be saved on disk as a 
.COM file. This makes the DEVJ>AC as convenient as any 
other disk-based assembler, since the DEV.PAC permits 
linked loading and global symbols. 

To reformat the WP file, three things are needed. First, 
the file must be moved, since DEV.PAC expects source code 
in high memory. Second, WP does not use LF's, whereas 
DEVJPAC does, so LF's have to be inserted. And finally, 
WP ends a file with 03, whereas DEV.PAC ends with 00 00. 
All three of these fixes are quite simple. (I have also 
founu it convenient to limit line length in the WP file to 
55 characters, since otherwise die assembler of DEVJ'AC will 
create lines longer than 80 characters.) 

In order to insert LF's, I use WP to insert a dummy 
character (%) where the LF should be, and then a simple 
machine language routine to replace '%' with LF. To use 
WP to insert '%' after every carriage return, just put '%' in 
the buffer, dien enter the following command: 

COMMAND: T/lOOFl/U/ 

(The number 100 is just an example. You should use the 
number ot lines in your program and there should be a '%' 
after the last line.) Now type 'G' and the word processor 
will shift control to FORMAT, and then to DEV.PAC. This 
leaves you in the DEVJ'AC with the drivers configured for 
assembly, and with :SI pointing to a modified Centronics 



routine. You can also still use die editor of the DEVJ'AC, 
although you must use WP to make changes in the disk file. 

This program also provides several useful I/O drivers for 
DEV.PAC: a di^lay delay routine (DELAY) which allows 
the user to stop screen display during an assembly listing, 
and a Centronics routine which allows you to send LF to 
the printer. (To use DELAY for :CO it is necessary to 
install it using the M :CO command; a coldstart of 
DEVJ'AC sets :CO to :SV.) The print routine supplied 
here is useful because Exidy's CENTRON routine in the 
Monitor strips off the LF; this means that the printer must 
be set to auto-LF, which is inconvenient for word 
processing. (For word processing it is necessary to be able 
to separate CR and LF in order to pass over the same line 
for underlining.) 

I link this program to run at 80H, but store it 
immediately below the relocated Pac (3F00H), along with a 
short block move program to move it to 80H when it is 
called. (Since finishing this program I've run into one 
annoying feature. The Centronics routine outputs a 
formfeed every 56th line. But it doesn't reset the linccount 
(LNCOUNT) at the end of assembly. This means that if 
you do a second assembly, the linecount will simply pick vp 
where jou left off with the first run. In order to block 
this, simply use the M: command of die DEV.PAC to enter 
00 into LNCOUNT (START+3 in the listing).© 



THIS PROGRAM INTERFACES ZSM WITH WPE6K. IT UTILIZES 
WIDSK AS A SCREEN H)nai~'m»J M:7^S TEXT INTO HIGH 
MBMCKY FCR ASSEN«LY. TT THEN SETS UP DEV.PACK WDRK 
AREA AfO JIMPS TO WARMSTART. 

PSECT REL 



TXBUFF 


EQJ 


3E80H ;BBGINNING CF ZStA TEXT 


BLaIZE 


EQJ 


3E80H~80EH 




WPBUFF 


EQJ 


80EH 




VIDEO 


EQJ 


OEOIBH 




QCKOK 


EQJ 


0E015H 




COLDCT 


EQJ 


OCOOOH 




OD 


EQJ 


0F020H 




SI 


EQJ 


0F026H 




SO 


EQJ 


0F028H 




OI 


EQJ 


0F022H 




00 


EQJ 


0F024H 




AI 


EQJ 


0C5F5H 




AO 


EQJ 


0C60AH 




BI 


EQJ 


0C61FH 




BO 


EQJ 


0C624H 




CR 


EQJ 


OEH 




LF 


EQJ 


OAH 




FF 


EQJ 


OCH 




' 


ORG 









JP 


ECRMAT 




IMDLNTDEFB 


; 


PRINT RCUTINE SETS PAGE 








LENGTH TO 55 LINES— 1H»} 








sees FORMFFFD 


PRINT 


ID 


A,D 






CALL 


VIDEO 






C\LL 


CENTRO 






CP 


LF 






RET 


NZ 






ID 


A, (LNOXNT) ; CHECK FOR PAGE LENGTH 




INC 


A 






ID 


(LNOXNT), A 




CP 


37H 






BET 


NZ 






ID 


A,FF 






CALL 


CENTRO 






ID 


A,0 






ID 


(LNOXNT), A, 




RET 






canRO 


PUSH 


AF 






JP 


0E99BH ; 
5 


ROUTINE LEAVES LF'S IN 
OUIPUT STRE/M 


DELAY 


ID 


A,D ; 


ESC CR RUN/STC* INIERRLPTS 




CP 


OCH ; 


LISTING AS LONG AS KEY IS 




JR 


^E,CUT-^ ; 


DEPRESSED 


CHECK 


CALL 


QCKCHK 






JR 


NZ,CHECK-J! 




OUT 


ID 


A,D 






CALL 


VIDEO 






RET 







(continued on next page) 



28 



SORCERER'S APPRENTICE, Marc/i T, 1982 



V 



(PAC CP/M LINKER continued) 

PCRMAT ID HL.WPBUFF ; NEVE TEXT LP TO TXIBUFF 

LD DE .TXBLFF 

LD BC,BLSIZE-10H 

IDIR 

ID HL,TXBUFF 

NEXT INC HL 

ID A,(HL) 

CP 03H 

JP Z.CLOSE 

a» 25H 

JP NZ,NDCr 

ID (HL),LF ; INSTALL LF PCR TARGET OMl 

JP NEOT 

CLOSE ID (HL),OOH ; REPLACE 03 BY NLLLS PCR 

INC HL ; eO CF TEXT 

ID (HL) , OOH 

SEILP LD HL, PRINT ; :SOIS INITIAUZED TO CHraiO 
LD (SO) ,HL 

ID HL.BO ; :SI IS INITLAUZED TO :BO 

ID (SI),HL 

ID HL.AD ; :OI IS INITLVUZHD TO :A0 

ID (OI),HL 

ID HL,AI ; :00 IS INITIALIZE) TO :AI 

ID (CO) ,HL 

JP OOLDST ; OXDSTART DEV.PAC 

:CD SHUD BE INITIALIZED TO DELAY AFTER DEV.PAC 
SIGNS CN. 

W-PAC TITUNG AND PAGE NUMBERING 

by Emiliano De Lautentiis 

Theie may be some concern by those who have the Exidy 
Word Ptocessoi Pac, that diete is no built in way of titling 
and numbering pages so the first page is not numbered, and 
may or may not have a header. The programmable feature of 
the WP Pac makes such features possible. The following two 
Macros will accomplish just that. 

The first Macro will print a title on the top of each 
page and start numbering on page two only. The second 
Macro will print neither a title nor a number on page 1 
(your title page) but will print a title on the second page 
and both a title and number on page 3 which is in reality 
the second page of your manuscript since the first page is 
only a cover page. 

In the following descriptions, the comments are not to be 
placed in the Macro; they are just for descriptive purposes. 
Enter yoxir Macro at the end of the file, and press "a" 
when in commmand mode. To execute the Macro, simply type 
in "al". Printing will automatically begin from the top of 
the file. The first line of your file should contain the 
header title left justified on the screen. 

Macro to title from page one and nxambering starts at 
page 2. 



Macro 



Conmcnt s 



y / / 1 Select page title option 

t/fl/pxx Go top/forward 1 to skip title/ 

Print XX lines. XX=page length. 
Is/YYY/YYif 2/ Search string YYiT and add nimber 2 

to it. The search string is the 

title at top of file, 
i Pause to insert page 2 

fXX/p Forward page 1 (of XX length) and 

print rest of file 

Macro to start title on page 2 and start numbering on 
page 3. 

Macro Caiments 

t/fl/pXX Print 1st page 

y / / 1 Select titling option in y table 

i Pause to insert page 2 

pXX/t Print page 2, goto top to insert 

page nunber in title for page 3 
which we shall call page 2 
Is/YYYA'YY 2/ Add number to title 
i Pause to insert page 

fXXXX/p • XXXX=2*XX (i.e. 2 pages)/print 

remainder of file 

I hope that these Macros will prove useful to you WP Pac 
users.# 



RELOCATED W-PAC WITH ] COMMAND 

Reviewed by Mark Northrup 

The SORCERER^ S APPRENTICE Users Group has been 
working on relocating the Word Processor Pac into RAM, 
and to send the edited BASIC code to the BASIC ROM -PAC. 

The copy I made wodced very well. There were very few 
bugs in the relocated version. One problem was that the 
relocated Word Processor did not "know" it had been 
relocated at 5000 hex, and would write over itsdf. To fix 
this, load the relocated Word Processor, then type EN 5015 
<CR> (Carriage Return) 

5015: CD 87 70/<CR> QVLL ADJUST 

then type: H^ 7087 <CR> 

70 87: 23 <CR> INC HL 

7088: 7C <CR> ID A,H 

7089: C6 CE <CR> AEDA,0CEH 

708B: 67 <CR> ID H,A 

708C: C9 / <CR> RET 

There are only two other problems. The first is the RUN 
command «iiich will give an OS error on the newly loaded 
program. This problem can be corrected by prefacing the 
program listing with a CLEAR nnnnn command. The other 
problem hi^pens when there is a program already "active" 
with BASIC; diis will cause some lines to be redefined. This 
problem requires that you preface your Word Processor 
program with a NEW command. 

The ) command method of processing offers many 
advantages such as batch and command list (CLIST) 
procedures. I tried several job streams and CLIST "s. They 
went extremely fast, although they cannot be stopped by 
the RUN/STOP button. The direct mode commands all 
execute as noted in "A SHORT TOUR OF BASIC". The 
batch job streams will not allow the values of the variables 
to be used by different programs in the batch. This is just 
like in most large systems. Despite this seeming 
disadvantage, the batch and CLIST capabilities really 
enhance the power of the Sorcerer, gn^ing us powers like 
text -files on the APPLE II computers using DOS. 

This package is a powerful enhancement to the Sorcerer, 
and provides new opportunities for using the Word Processor. 

Mark Nocthrt^, 9212 North 70th St., Milwaukee, WI 532239 



Saving Wocd Ptocessoc Pac Files to Disk 

by Bryan Lewis 

The following procedure will ttansfer WP Pac files from 
cassette to disk for use with Spellbinder. The mechanism is 
simple: the file is read from cassette, moved down a little 
in memory, and saved on disk. The only troublesome step 
is calculating the number of pages of memory to save. 

1. Power up the Sorcerer with the WP Pac in 

place. 

2. GCM/IANO: X Exit to the Monitor. 

3. >GO BCOO Cold boot CP/M. 

4. Reset the Sorcerer to get back to the Pac. 

5. GCM*1AND: M Find the memory space 

available with no text. (If 
the disk is at BCOO, then 
this is 30360.) 

6. OCMlAbD: R Read the cassette file as 

usual . 

7. GOtiMAND: M Find the memory left over 

now. (Let's use 27913 as an 
example) 

8. Calculate the space used bv the file, first by 

taking tne difference 
between the memory readings, 
e.g.: 

30360 - 27913 = 2447 

Divide by 256, round up: 2447 / 256 > 10 

9. OCMvIAND: X <cr> Back to the monitor. 

10. >MO 80F 5800 10 Move the file down to lOOH. 

11. >GO Warm boot CP/M. 

12. A>SAVE n FNAME Save, with n = result from 

above (10 in the exanple). 

Note: if the cassette file is very big, there is a risk that 
it will overlay part of CP/M. The second M command 
should give a result of at least 10,000 to be safe.# 



SORCERER'S APPRENTICE, March r, T982 



29 



r 



FOR THE EXIDY SORCERER 



TM 





1 



^ 




A Dogfight in Space 



• a real-time graphics game for two players 

• written in machine language for the Exidy Sorcerer^** 

• graphics characters continually redrawn for smooth, high-resolution movement 

• each ship realistically accelerates, rotates, and fires 

• 16K required 

• $20.00 for cassette (includes shipping) M^ ^Q 
We think you'll like it! 




C=:CZ)I\/IF=>I I I l=:F=? 



ir^T"^F=lF=>F=l I ^I^E 



P.O. BOX 1910 • EUGENE, OREGON 97440 • (503) 689-7409 



1 



30 



SORCERER'S APPRENTICE, March 7, 7982 



BITS ft BYTES 

by Jonathan Burnett 



In the last issue I mentioned that I would now begin a 
series of tutorials on the use of the Z80 Assembly language. 
Since that article was written, I've started receiving mail 
about this column. Aside from their gracious complunents, 
(its nice to have fansi), they posed some very good 
questions who's answers could benefit o&ers if they were 
published. So, I will answer some member questions for 
now. 

I'd like to start with Julius Loftsson's questions 
regarding some difficulties he experienced in using the 
INDEX registers (IX K lY). Here is his example program: 

START EQU $ 

ID IX,1200H jLQAD 1200H INTD REG IX. 

LD A, (IX) ; LOUD VALUE (POINTED BY IX), 

;INTC) REG A. 
CALL OEOIEH ; PRINT GONTH^S OE REG A CN 

;THE SORCERER'S VIDEO SCREEN 
RET ; RETURN TO CILLER. 

He assembled this program, and then typed 'GO' to the 
program's start address (diis forces the Monitor to execute 
a Z80 CALL to your program). The program ran 
successfully and then returned control to the caller (the 
Monitor). So far, so goodi However, when he tried the 
same program, substituting register lY for IX, some verv 
disturbing and (seoaingly) mysterious things happened. 
First of all, the character at location 1200H was properly 
displayed on the video screen, but then when control 
returned to the Monitor, the PROMPT character had changed. 
He also noticed, that the area near 120 OH had been 
corrupted by what appeared to be Monitor commands. 

Well that last one was really the clue to it all! 
Apparently, what is not very well doctunented, is the fact 
that the Exidy Monitor ROMS use register lY as a pointer 
to its WORK AREA (MWA). In this work area, is stored 
(among other things) the Monitor PROMPT character, and 
the Monitor's keyboard buffer area (the place where 
commands are kq>t until you press RETURN). Monitor 
release Vl.O, assumes (a bad thing to do around 
computersi) that register lY alwsfs points to its MWA. 
Well, when the Monitor again got control, you can now 
imagine why it did what it did to the area around 120 OH. 
Though he didn't say in his letter, I'll bet the machine 
lock^ up and he had to press the RESET keys to get 
things going again. The reason? Also contained in the 
MWA, are the vectors iat the keyboard and the video drivers. 
The Monitor uses the addresses found at those points, just 
in case you might have setup some other device driver, like a 
tape drive for input, and a printer for output. Well, what 
he found at those locations near 1200H, were very probably 
not addresses of executable routines in the ROMS or 
anyplace else for that matter! The result: instant 
catastxophd 1 1 

If you had wondered why the CALL OEOIBH was still able 
to correctly output register A to the video saeen, it was 
because EOIBH is the duect address of the video drh^er found 
in the Monitor ROMS. Had Julius CALLed 0E009H, which 
derives the video driver address from the MWA, he would have 
met with disaster before his program had endedl 

Well you might think that this means you can't use 
register lY ...Jlight????....Wrong! ! ! Actually, you can still 
use it very easily. You can PUSH it onto your STACK 
when you first get control, and then POP it back to 
normal, whenever you return control to the Monitor. 
Sounds good, but wait! What if you have to call some of 
the Monitor's routines from your program? That's right, 
most if not all of the Monitor routines use die MWA, so lY 
has got to still point to it. The solution is still simple: 
first before calling the Monitor, save yaat register lY either 
on the STACK or wherever it is convenient. Now CALL 
0E1A2H. This Monitor routine, will re-dcterminc the 
location of die MWA, and load it into register lY, and 
then return control to you. Now you can safely call any 
Monitor routine, and be assured success! Upon return to 
your program, you can restore lY back to your own value. 
Just remember, that before exiting completely to the 
Monitor, be sure lY points to the MWA. 

Another (though not recommended) way of locating the 
MWA, is by examining locations FOOO & FOOl HEX. There 
you will find the top-of-RAM location. The MWA is 



located 110 (6E HEX) bytes BELOW this. ProvUed your 
program does not modify these locations, you can count on 
its accuracy. WARNING: If your program does modify this 
area, then you must not call any Monitor routines. The 
top-of-RAM is used as a reference in several places within 
the Monitor. The result will be a total system crash. 

Any of you users that have the Monitor ROMS release 
VI. 1 will not experience the problems Julius has had. As 
published in the SORCERER'S APPRENTICE VOL 2, NO. 4 
page 33, a fix was made with these ROMS that stops the 
Monitor from assuming that register lY is OK. It will, 
upon return to the Monitor, reset die lY register to point 
to the MWA. 

A letter from Richard Stone relates some troubles he was 
having with his DEVELOPMENT PAC. He had observed that 
whenever he used the 'ORG' pseudo - oper at or , the value used 
as its operand was being taken (mistakenly he felt), to be 
in DECIMAL rather than the HEXADECIMAL that he really 
wanted it to use. He did observe, that by placing the letter 
'H' next to the value, the assembler did correctly recognize 
the value as HEX. Well, this one is easy. On page 49 of 
my DEVELOPMENT PAC manual, you will find an easily 
overlooked sentence, that just about says it all. "There 
are fii^e types of constants, but the default is DECIMAL. A 
number can be (optionally) denoted as decimal by 
following it with the letter 'D'. Hexadecimal constants 
must start with a digit from to 9 and end with the letter 
'H'. Octal constants must end with either die letters 'Q' or 
-'O'. A binary constant must end witJi a 'B'." Note, that 
-these rules apply to all usages of numeric values as they 
appear in the assembly source code, not just in regards to 
the 'ORG' statement. 

His other question concerned his inability to get his 
assembler to properly calculate the values for the 
RELATIVE JUMP instructions he was attempting (so fat 
without siKcess) to use. To answer his question, no this is 
not a bug. It is confusing, especially to someone already 
familiar with other Z80 (usually didc based) assemblers. 
Again I reference page 50 in my DEVELOPMENT PAC 
manual, "When using relative addressing, the current value 
of the program counter must be subtracted from the label if 
the branch is to be made to that label address. For 
example. 



NAME 



JR 



NC,LOOP-^ 



will transfer control to the location 'LOOP'." Since he 
didn't supply me with an example of his procedure, I could 
only presume he made the error of not subtracting die 
current location (-^) from the label you were jumping to. 
Those of you that have used 'other' Z80 assemblers probably 
never had to do this. The assembler itself was 'smart' 
enough to know that a relative jump instruction required 
this 'customary' calculation, and would do so for you 
automatically. Likewise, the assembly language source code 
of programs published in magazines and books, may or may 
not show the use of the '-^'. It all depends upon what 
assembler the author was using. In any case, we as 
DEVELOPMENT PAC users must use it, in order for the 
proper offsets in all relative jump instructions (this 
includes DJNZ), to be calculated correctly. 

To both Julius and Richard, thank you for taking the 
time to write me about my column. This satt of 'feedback' 
really helps me to direct this column's material, in the 
directions that will be of most benefit to the readers. So 
to all of you aspiring (or exasperated!) programmers, keq> 
sending those cards and letters, and I'll try my best to 
answer them to your full satisfaction in this column. (Any 
of you tha' prefer or requite a more rapid or private 
response to your inquiry, please note that in your letter, 
and supply me with sufficient information as to how to 
contact you.) 

I'll also try to cover the areas of your particular 
interest. Julius wrote and suggested I spend some time 
covering the CASSETTE mode of operation within the 
DEVELOPMENT PAC. Your wish is my command, in the 
next issue I have prepared some material on the subject, 
that I hope will adequately cover it. Actually, I find the 
cassette operations to be the most difficult, so I have 
written a couple of programs that I think will make things 
easier whenever you nave to use the PAC. If space permits, 
I'll have the source code in the same issue. I also hope to 
be able to answer more questions. 

So until then Jiave FUN1# 



SORCERER'S APPRENTICE, March T, 1982 



31 



ON-UNE 

by Robert Hageman, System Operator 
A few announcementa: 

1. My by-line, DUSTINGS FROM THE LIBRARY, has been 
dbanged to ON-LINE. This mitrors my change in post 
from Librarian and Sysop to System Operator. 

2. Bruce Blakeslee, our new Disk Librarian, will handle oiu 
Mictopolia CP/M didc library. His address is: 906 
Creatwood Rd, Weatfield, NJ 07090. Bruce has all the 
CP/M User Group and SIGM diics. Copies of any of 
tbcie disks may be ordered by: 

a. Sending a focmattcd disk and ^3.00 foe each disk 
order ed... OR 

b. Send ^8.00 per didc and we'll proi^ide the didcs. 

3. Jonathan Burnett (by-line, BITS ft BYTES) will handle 
all tape programs. The Tape Librarian may be 
contacted by writing: 

Tape Library 

Sorcerer's Apprentice 

PX>. Box 33 

Madison Heights, MI. 48071 

This is a new library. Some of you may remember a 
program exdiange, which was run by Ralph Ruh in Ohio. 
This program exchange was Ralph's and was not connected 
to the Sorcerer's Apprentice. As -material comes in and is 
catalogued, we will pti>ljsh a listing. 



+++ 



+++ 



Owners and future owners of Gerald Neil's EDOS 
(Coprrighted by System Software), please take note. There 
is a better way to modify the Micropolis controller board to 
address it to BCOOH. Exidv's November 1980 Technical 
Note No.3 documents a methoa allowing you to have 47K of 
RAM in the machine. You do not have to reduce a 48K 
machine to 32K by pulling out 16K of chips. Just complete 
the following steps: 

1. In the S-100 Expansion Unit: 

a. Jumper S-100 bus pin 21 to IC lA-pinll. 

b. Junper IC lA-pin9 to connector j3-pin46. 

2. On Micropolis controller Printed Circuit Board 
(PCB): 

a. On PCB component side: 

i. Remove all jumpers at location D4. 
ii. Jumper IC D8-pin4 to IC D8-pin8. 
iii. Jumper IC D8-pin9 to connector Jl- n21 
(bottom edge connector). 

b. On PCB circuit side: 

i. At IC D8, cut trace from pin2 to pin4. 

c. Boot address is now at BCOOH. 

This is a little more work than System Software's mod 
but then you don't have to resort to: "If you have 48K 
RAM, simply remove or disable the top 16K RAM to change 
back to 32 K."! 

+++ +++ +++ 

I received the following on Keith Petersen's system when I 
sought an answer to a member's question: 

1. Bob, I "overheard" your query to Keith regarding 
printing from MBasic. The file you want is called 
SETUP .ASM. I am not sure its on Keith's system, but 
it is certainly on a ntonber of RCPM's. Charlie. 

2. Bob, Charlie is right - SETUP^SM is one good 
approach. You will find that on hard disk B:. It does 
have the disadvantage that it must be run beforehand 
and should never be tun more than once. Another 
approach is to implement the lOBYTE. See NSUSER5Z- 
ASM on hard diac A:. That's a full implementation of 
lOBYTE and takes a fak amount of room, but you 
could strip out the unwanted parts and set it up so that 
console output would go to console if IOBYTE=01H and 
to console + line printer if IC»YTE=03H. Keith. 

Our member also wanted information on doing the same 
thing from Mkropolis Basic. Examination of the MDOS 
ASSIGN function leads me to believe the (SDIPORT and 
@D2PC^T addresses can be POKEd to control console 
output. (SDIPORT is at 04EAH (12 58 decimal) and 
feD2PC»T is at 04EBH (1259 decimal). Plysical console 
output is controlled by the ODIPORT byte, a value of 1 



directs the logkal stream to the CRT while a 2 directs the 
stream to the printer and a 3 will send the output to both 
printer and CRT. Physical printer output is likewise 
controlled by die @D2PORT byte. Also found during this 
examination, location 05 IIH (1297 decimal) contains 
NULLS+1 while location 0512H (1298 decimal) contains 
WIDTH. 



Keith was also kind enough to leave the following on 
RCFM-Sorcerer (Reprinted, with permission, from Mar/Apr 
1981 issue of Mkioaystcms magazine. Box 1192 Mountain- 
skie, NJ 07092): 

BASPRINT.DOC 

Choosing Between CRT Output and Printer Output 

by Bob Kowitt 

1727 N. Jerusalem Rd.^ East Meadow, NY 11554 

Some versions of Basic allow you to specify while running 
your program whether you want to output to your CRT 
terminal or to your printer. Unfortunately, one of the 
most widely used and powerful Basics, Microsoft Basic, does 
not. If you use the methods proposed in the user's manual, 
you are told tOiUse the command PRINT to go to the CRT 
terminal and die coomiand LPRINT when you want to 
output to your printer. 

There is, however, a way you can bypass this deficiency if 
you are using Microsoft Basic Rev. 5.0 or later, under CP/M. 
Locations 0000, 0001, and 0002 contain the jump to the 
BIOS in CP/M. Microsoft Basic uses the data stored at 
these locations to direct yoiu output as you have chosen 
with the commands PRINT or LPRINT in your program. 
Using this same information, you can locate the point in 
memory that contains your routine to write to the terminal 
or to the printer. 

You can bypass the use of LPRINT by fooling the 
Microsoft Interpreter. In Microsoft BASIC 5.0 and higher, 
this data is stored at a location between 16000 and 18000 
(decimal), dq>ending on which release you are using. The 
location changed during the modification of Mkrosoft Basic 
to eliminate bugs that were discovered after the original 
release. By including the following routine within your 
program, you can redirect the output in either direction at 
runtime rather than being fccced to duplkate the code when 
writing your program. You cannot poke the data directly 
into die jump table of CP/M because Mkrosoft Basic does 
not use diis jump table after finding its location. 

Lines 60 to 100 define your variables and prepare your 
program for further input during your program. 

Poke F,OT (line 160) should be inserted before each point 
at which you may want to change the output. Poke F,C 
(line 18u) should be inserted to get output back to your 
CRT terminal. Line 180 must appear at the end of your 
program, otherwise you will be locked into your printer and 
not your CRT at the end of the program. Your keyboard 
will still be entering data to your computer but there will 
be output to the printer and not to the CRT. 



10 
20 
25 

n 

30 



SAMPLE PROGRAM 



'To operate the printer, fill F with PENTBYTE 
'To operate console, fill F with GONSCXEBYTE 

31 BIOSBOrrcM=(PEEK(2)*25 6+PEEK(l)) 

32 PM^TBYrELOC=BIOSBOTrcM+13 : 
aDNS0LEBYTELOC=B I OS BCnTCM+ 1 

3 3 PRNTBYIE=PEEK(PRNTBYrELOC) : 

OCWS(XEBYTE=PEEK (CDNSCLEBYTELOC) 

34 C=GONS(XEBYTE 'F is the location within MBASIC 
that directs th« output to the CRT or printer 

35 FC« 1=16600 TO 18000 

36 IF PEEK(I)=OC»iSaLEBYTE AM) (PEEK (I + 1))=PEEK 
(GC»e(XEBYTELOC+l) THHSI 3 8 

37 NEXT 

38 F=I 
110 ' 

120 INPUT "Do you want P (printer) or 
C( console) J';CHOICE^ 

130 ar=c 

140 IF LEFT? (CHOICER, 1)="P" THEN ar=PENTBYTE 
150 ' 

160 PCKE F,ar 

170 PRINT "This is a demonstration of print output 

s elec tion" 
180 POKE F,C 
190 END 

If you get trapped in printer mode, simply type: POKE 
F,C,(cr), to regain control and output to the console. • 



3 



3 



3 



32 



SORCERER'S APPRENTICE, March T, 7982 



SAVING BASIC PROGRAMS ON MICROPOLIS DISK 

from Jan 1980 S.U.N, by Peter Hunter 

(Condensation submitted by Bryan Lewis) 

^ Here are the steps to save RomPac BASIC programs on disk: 

Power up with the BASIC RomPac inserted and enter the following:. 

QJQAD Load the program. 

R LN This sets up BASIC 's pointers. 

(CIRL-C) Interrupt it if you wish. 

BYE Exit to Monitor. 

MD 3000 4 F00 6000 Move the program up in memory. 

MD 0000 2FFF 3000 

GO BCOO Boot the disk. 

LOAD "SAVEBAS" Retrieve the relocating program given below) 

DLMP 31B7 31B8 Note the ending address R€>, 

31B7 HSDLL H^DHI (It's in reverse-byte order: eO=QC*« HSDLL. ) 

Calculate NEWEND=END+3000H (just add 3 to high digit). 

SAVE "NAME" 2FD0 NEWEND 18 2FD0 

In the future, you onlv have to type in the NAME of the program, and it will 
load, relocate itself, ana jump to the RomPac. Just type RUN when you sec the 
READY message. 

+++ +++ +++ 

SAVEBAS - by Peter Hunter 

(disassembly by Bob Hageman, SA System Operator) 

This routine is only applicable to systems where the disk controller board does 
not conflict with the RomPac area of memory. Enter and save hex code under MDOS. 

2ED0 DO NCP 

/*^ 2FD1 00 NCP 

V 2ED2 21 EO 2F LD HL,2FE0 ;Relocate Rclocator in user 

2ED5 11 00 FE ID CE,FEOO ;definable graphics area 

2ED8 01 20 00 ID DC, 0020 

2BDB H) BO IDIR ;Do move 

2HX) C3 00 FE JP EEOO ;Go do it I 

2EE0 21 00 30 ID HL,3000 ;Relocator 

2FE3 11 00 00 ID DE,0000 

2FE6 HD 4B B7 31 ID BC, (31B7) ;Get program length 

2FEA H3 BO IDIR ;Movc to low memory 

2EEC CD Bl E9 CALL E9B1 ;Havc Monitor init. video board 

2FEF C3 FA DF JP DFFA ;Warm boot to RcmPac 



THE SORCERER'S SPELL 

This unique and economical spell -correction system has been improved again. Now 
it checks files on disk or in memory that have been created either by Exidy Word 
Processor RomPac or by Spellbinder. To demonstrate its capability, SPELL^s 
performance has recently been compared with that of five spelling -correction 
programs for CP/M -based systems. Using the test program given by Phil Lemmons 
in the November, 1981 BYTE, SPELL had the fastest time to identify and make all 
corrections. And that time included adding new words to its dictionary. In fact, it 
was over three times faster than WORDSEARCH and 1 1/2 times faster than 
SPELLGUARD. Moreover, despite the larger dwtionary in SPELLGUARD, it found 
fewer suspect words that were not misspelled. Available on tape so that any Sorcerer 
owner can load it in and then put it on disk. Requires CP/M and a minimum of 
32 K. The price is $100, including postage. 

STALEY'S SORCERER SOFTWARE 
3497 School Rd., Murrysville, PA 15668 



SORCERER'S APPRENTICE, March 1, 1982 33 



EPSON MX-80 F/T PUNTER DKIVER 
FOR EXIDY WORD PROCESSOR PAC 

Copyright by Hetman Huni, May 1981 

The EPSON line of ptinters have several operating 
features and character fonts that are activated by sending 
die appropriate control bytes to the printer. These special 
featuro can be selected when using the machine- language 
printer -driver program listed below. 

To use the program, proceed as follows: 

1. Turn on the computer with the Exidy Word Processor Pac 
in place. 

Enter Y in the COMMAND MODE and set PRINT 
DEVICE to 1. 

2. Exit the Word Processor and enter the system Monitor. 
(Enter X in the COMMAND MODE) 

3. Load the printer driver program. 

4. Type "GO 0" to start the program. You should now be 
in the EDIT MCOE of the Word Processing System. 

5. To select a printer function listed in the tdble below, 
type the appropriate control letter, move the cursor back 
over die letter using the cursor left key, type underscore 
(-) over the letter. The control letter is now shown 
inverted and will not be printed out.# 



MX-80 
Printer Function 

Doubl e Wid th on 
off 
Condensed Width on 
off 
Enphasized on 

off 
Double Strike on 
off 
Line Spacing 1/6 in. 
1/8 in. 
nil in. 
Btizzer 
Printer on 
off 
Data if no paper in 

only if paper in 
Clear print buffer 



Control 
Letter 

a 
b 

c 
d 
e 
f 



ASCII Function 
Code 

SO 
DC 4 
SI 

DC 2 
ESC E 
ESC F 
ESC G 
ESC H 
ESC 2 
ESC O 
ESC 1 
BH. 
DC 1 
DC 3 
ESC 8 
ESC 9 
CAN 



AECR 123456789ABCDEF 



0000: 
0010: 
0020: 
0030: 
0040: 
0050: 
0060: 
0070: 



21 09 
00 11 
31 00 
00 CD 
C9 61 
76 n 
IB 48 
IB 39 



00 11 E7 07 C3 FA DF FE 5F C2 70 EC 21 15 

E7 07 C9 21 IC 00 11 E7 07 C9 01 11 00 21 

H) B9 20 14 CB 21 CD 21 52 00 ED 09 ED 7E 

70 IK ED 7E 01 OD 70 EX 21 09 00 11 E7 07 

62 63 64 65 66 67 68 6C 6D 6E 6F 70 71 75 

OE 01 14 01 OF 01 12 01 IB 45 IB 46 IB 47 

IB 32 IB 30 IB 31 07 01 11 01 13 01 IB 38 

18 01 00 00 



DUEL - A Dogfight in Space 

by Don Gottwald 

DUEL is an addictive, competitive game available from 
Dayspring Computer Enterprises for ^20. In this two- 
player video encounter, you and yoiu partner duel by each 
controlling yotu own space fighter. You can rotate in 
eidier direction, accelerate, and fire your gun using four 
keys for each player. 

At the start of the game, you must choose one of four 
speeds for the ship speed, rotate speed and missile speed as 
well as one of four tiring rates. The graphics and feel are 
realistic and captivating. 

A newer, updated vasion was received just prior to 
publication so, to do this program justice, a more extensive 
review is being postponed until the next issue.# 

USING GRAFTRAX-80 W/ SPELLBINDER 
by Leslie M. Zatz, M.D. 

I have customized my I/O section for the EPSON MX-80 
printer with GRAFTRAX 80 graphic ROM's. This enables 
one to do underlining using the techniques described in the 
SPELLBINDER manual. It also provides for printing double 
spaced or in italics, condensed, expanded, condensed- 
expanded and emphasized modes by using the I q-z in-line 
commands. Here are the modifications to be made to the 



lOS file of CP/M 1.1: 

a. Collect on one disk DDT, your lOS file (mine is 
called XIOS8D.ASM), your original SPELLBINDER file 
(mine is XSB.COM) and KEYBRD.HEX. 

b. Rename die lOS file EPSNIOSIJVSM and then EDIT it 
making the changes indicated. 

c. Assemble EPSNIOSl and put the HEX file on the disk 
with DDT described in paragrah (a). 

d. Follow the instructions provided to reassemble your 
complete program. This includes using DDT to load in the 
SPELLBINDER file, XSB.COM. Overlay the lOS file 
EPSNIOSIJIEX. Then overlay the keyboard file KEY- 
BRD.HEX. 

e. Exit DDT and save the new version with - SAVE 85 
ESBl.CCM. This version will be the unconfigured version. 
You can then configure it for a precision printer add Y/N 
help messages and save the configured version for use. I 
call that version ESB.COM to distinguish it from the non- 
EPS ON version, SB.COM. 

Changes in XIOS8D.ASM to convert to EPSNIOSIASM 

The ••**• numbers refer to the lines in the original 
XIOS8D.ASM file. Some surrounding lines are gi/en for 
orientation. # 

; EPSNIOS.ASd MX>IFICATICN FOR EPSCN 80 

; PRINTER BY LM, ZATZ, DEC. 6, 1981. VERS. 1.0 

; MODIFIHD FRCM 

; lOS.ASM FILE FC» SPELLBirOER VERSION 5.03 

•••♦•205: 

; OUTPUT CHAR IN A REG TO EXIDY MOtilTOR CENTRCNIX 
; DRIVER. STRIPS LF'S FRCM TEXT 

HPOT: PUSH PSW ;SAVE NEEDH) KM DRIVER 

DB 0C3H,97H,0E9H; ;JP E997H 



HPIN: MVI A, 6 
•••••265: 



CPR: 



HPOTOl; 



MDV A,C 
ANI 7EH 
CPI 5EH 
JNZ HPOT 
MVI A,1BH 
CALL HPOT 
MVI A,4CH 
CALL HPCT 
MVI A,OCH 
CALL HPOT 
MVI A,01H 
PUSH B 
MVI B,0GH 
CALL HPOT 
DB 10H,0FBH 
POP B 
RET 



;AUICMATIC ACK 

PUT CHAR IN A REG 
STRIP PARITY 
UCERLINE? 
NO. GO SE^D. 
GRAPHICS CN 
= ESC 'L' 12 



GRAPHIC CHARACTER 

NEED REGISTER 

NEED 12 DOTS 

SEND 

DJNZ, HPOTOl (Z80 GODE) 

FINISHED 



{ROUTINE TO JUIP TO CPM 



CPMGO: PUSH H 
DRIVERS 

•••••1002: 

; PRINTER TABLE TO EXCL«kMATICN OCMMANDS FRCM 
; SPELLBINDER DEFINE) FOi EPSC»«I PRINTER. 
PTABLE EQJ ^ 



DB 


1BH,41H,24 


II II 


= 


DOUBLE SPACE 


DB 


1BH,32H,0 


II . II 


= 


SINGLE SPACE 


DB 


1BH,34H,0 


II 5 II 


= 


ITALICS CN 


DB 


1BH,35H,0 


II ^ II 


= 


ITALICS OFF 


DB 


0FH,0,0 


"u" 


= 


CD^DENSHD CN 


DB 


12H,0,0 


"y" 


= 


ODNDENSm OFF 


DB 


0EH,0,0 


,"w" 


= 


EXPA^DH) CN 


DB 


14H,0,0 


II — II 


= 


EXPANDS) GEF 


DB 


1BH,45H,0 


llyll 


= 


EMPHASIS CN 


DB 


1BH,46H,0 


"z" 


= 


EMPHASIS OFF 



•••••1252: 

; TABLES KM PRECIS ICN PRINTERS 

PTLENG ECJJ 21 

HTABLE DB OOIH, 9FH, 00 IH, 09EH, 00 IH, 0B6H, 0B5H 
DB 00AH,08AH,0 78H,0 89H,0 01H,00DH,01BH 
DB OlFH, OODH, OIBH, OIBH, 007H, OOOH, OOOH 

QTABLE DB 002H,09FH,001H,09EH,001H,0B6H,0B5H 
DB GOAH, 08AH, 078H, 089H, OOlH, OIBH, OlAH 
DB 049H, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH 

NTABLE DB 00 3H, OECH, 040H, OCCH, 04FH, OBCH, OBffl 
DB OOAH,OB9H,015H, OOOH, OOOH, OlBH.OBEXi 
DB OOOH, OOOH, OOOH, OOOH, OOOH, OOOH, OOOH 
HO 



J 



3 



34 



SORCERER'S APPRENTICE, March T, 1982 



^^. 



V 



C 



HARDWARE NOTES 

by Russell Frew, Haidwaie Editor 



In this column I want to try and 
answer some of the letters that I've 
received that might be of general 
interest to all Sorcerer users. 

Several issues ago, I mentioned that 
I was trying to implement the S-100 
PHANTOM signal in my Expansion 
Box. Since that time I've received 
several letters asking about it. There 
seems to be some confusion on 
exactly what that signal is foe. 

Most people write thinking that it 
will allow them to use multiple banks 
of 64k RAM. That is not true. The 
signal is used on system start-up in 
many computers to disable a bank of 
memory for disk boot or jiimp to 
ROM routines but it is not a stand 
alone Bank Select signal. It could 
be used in that manner but other 
hardware and software is necessary to 
make that happen. For those of you 
interested in memory beyond 64K, my 
next column will cover a method to 
swap pages of memory beyond the 16- 
bit aadressing limit without giving t^ 
A13 as a pointer. 

There seems to be many questions 
on memory up-grades. Here are some 
reminders. The 16K RAMs are very 
sensitive to static. If you carelessly 
handle them, especially during this 
cold winter when your house has low 
humidity, you are very likely to blow 
one or mcxe elements in the memory. 
The rule is ground yourself to the 
"unplugged computet" at all times 
during the installation. Handle the 
RAM as little as possible and avoid 
touching the metal legs. Secondly, 
triple dieck that the #1 pin is 
properly oriented. Do not rely on 
the package numbering! Sometimes 
they are printed one way, other times 
it is reversed. Each manufacturer 
does it differently. Texas Instru- 
ments even puts a notch in both ends 
of some of their parts to make it 
twke as confusing. Only the dot 

over the #1 pin tdls you foi sure. 
If you reverse it, you not only lose 
the chip but you may short your 
power simply too. As you insert the 
chip, be sure that none of the legs 
cud under die RAM. I've seen this 
problem several times. And lastly, 
don't forget to install the jumper to 
select the proper row/chip configura- 
tion. On the Sorcerer II the junker 
has been replaced with a DIP switch 
however the funtions ate the same. 

Several people have asked how they 
can make their S-100 box IEEE 
compatible. First it is important to 
note that in 95% of the applications 
this is not necessary. Most of the 
signals involved deal with multi- 
processor master/slave bus configura- 
tions. If you do have a board that 
requires one of these signal, it may 
still be compatible if it does not 
require the Exidy system to sink 20mA 
at >.5VDC. When you get it down 
to that one s^nal it may be easier 
to deal with the problem on the 
board itsdf rather than the Expan- 
sion Box. 

To help everyone along in this 
area, I would be willing to compile a 
list of all the S-10 boards that 
members have working in their systems 



along with whatever mod's they have 
had to apply. The SA could then 
publish this list or make it available 
to members on request. If you have a 
working S-100 board, send its ID 
data to me in care of Sorcerers 
Apprentice or via The SOURCE 
Electronic Mail (TCA651). 

A quick word about light pens. In 
my column on video displays I 
mentioned light pens would be fairly 
easy to interface to the Sorcerer and 
this triggered several questions on the 
subject. Light pens aren't all diey 
are cradled up to be. To use one 
inexpensively on a taster scan 
display, every pixel must be flashed 
so that when the phototransistor 
inside the light pen is triggered, a 
software routine can dieck the vxleo 
counters and extract the X,Y coordi- 
nates of die pen tip. This flashing is 
very disturbing to the operator. You 
generally end up with an all white 
screen, drawing in black. Routines 
you have surely seen such as polygon 
dragging and white -on -black di^lays 
are all done with radically different 
display systems. 

If you are serious about graphics 
(and I am) then you should look 
into one of the graphic digitizing 
pads that can take your input, create 
the display you want and do it with 
fat mote resolution than an^ light 
pen ever could. If anyone is interes- 
ted in this, we can devote a future 
column to it. 

Speaking of the future, here are 
some topic areas that I am consider- 
ing for future columns. If you have 
a favorite or another idea, drop me a 
line. Fee projects to enhance your 
Sorcerer: A crypto modification to 
National Bureau of Standards level of 
encryption; HP bar code reader; 
Magnetic bubble memory for non- 
volatile storage; A/D techniques; 
Sound generators; BSR controllers fee 
the Sorcerer. Some problem areas to 
be covered include marginal voltage 
regulation and keyboard debounce. 

Please send your ideas/cwuments to 
me via the Sorcerers Apprentice or The 
SOURCE electronic mail at account 
TCA651.» 



THE WCHtD PSOCESSING CORNER 

#18 - by Steven Guralnick 

I am sure that some of you have 
been wondering where I have been for 
the last two months. I take my 
annual vacation in December so that 
explains my being absent from that 
month's issue. 

With respect to January, I decided I 
would do some soul searching about 
this column and its future. What 
precipitated this was the happening of 
two events, within a fov days of each 
other. The first was the announce- 
ment of the imminent release of 
Version 5.10 of SPELLBINDER. This 
new version has incorporated some 
wonderful enhancements, including a 
considerably simplified method of 
setting the parameters for printing. 
That meant that I would have to stop 
my series on how to print with 
SPELLBINDER and start all over 
again. It also meant that I have to 
devote at least six months of articles 
to the changes brought aout by the 
new version. 

SORCERER'S APPRENTICE, March h 1982 



The second event was a telephone 
call by one of the editors of the 
Sorcerer's Apprentice. During the 
conversation, I was ghren to under- 
stand that some of you have been 
complaining that my column was 
devoted entirely to SPELLBINDER, at 
least insofar as discussion of word- 
processing software was concerned. 
The fact of the matter is that this is 
the wordprocessor with which I feel 
sufficiently familiar to hold myself 
out as an expert. Although I have 
extended invitations for "guest co- 
limins", no one has ever responded. 
Therefore, I find myself in a "no- 
win" situation. I either talk about 
SPELLBINDER or I spend the same 
two and one-half vears that I have 
already spent ad learn some other 
wordprocessor. 

When I measure these two events 
against the fact that our office is 
increasingly busy, it becomes pain- 
ftdly obvious to me that I cannot 
continue to write this column any 
longer. Accordingly, this is the last 
"Word Processing Corner". I depart 
this partictilar journalistic scene with 
much regret. When I first started 
these columns in SA, David Bristor 
had just started it and my contribu- 
tion was a major one. Now, I do 
not believe that it is. Also, Roger 
Hagan has now been assigned to a 
business section of this newsletter 
and I can send material to him for 
inclusion in his column. This I will 
certainly do, from time to time. 

Also, I am still very much available 
to anyone who needs some assistance 
with SPELLBINDER. You may call me 
at my office (415) 992-9200 at any 
time between 9:00 and 5:00 PST. If 
I am too busy, or if it is not 
convenient for you to call then, you 
ate welcome to call me at home 
(415-991-0155) in the evening or on 
weekends. Many of you have called 
and written ad you are certainly 
welcome to continue to do so. 

Word processing has become to this 
generation of business users what 
cotton gin first was to its users. It 
is a magnificient tool which can 
enhance the life of anvone who uses 
it. I am dedicated to the idea that it 
has unlimited potential. As a result, 
I will always be deep in this business 
ad what I know I will be happy to 
share with others. At least, those of 
you who are interested. 

Kindest regards and my very best 
wishes to all of you.9 

Steven Guralnick 

375 South Mayfair Ave., #205 

Daly City, CA 94015 

<« CLASSIFIED ADS »> 

$l/line $l/line 

FOR SALE: 32 K Sorcerer with Basic 
ROMPAC, 12" Leedex Monitor, System 
3 Utilities. For niOTe information 
contact or call: Bill Gathright, Route 
6, Jefferson City, MO 65101 (314) 
636-6477 



FOR SALE: 48K Sorcerer, Basic, Word 
Processor, Development Pac, Sanyo 9" 
Monitor, Dual Cassette, Programs wth 
hardware and software documenta- 
tion. $1200.00 or best offer. Contact: 
Don Hutchins, 609 Sixth & Pine 
Bldg., Seattle, WA 98101 (206) 624- 
9977 



35 



< < < M If:: {aJ i-> r c) i> ij c:; t i^ !:•: i... i::: a <:> ni: <:> > > > 

A <:> T R C) i^ T T A C; l< I:-: R 

ASTRO ATTACKER is sirtilap to the arcade gone colled "ASTRO BLASTER". This action qane for the Sorcerer is far superior 
to all other Sorcerer ganes because of its high resolution graphics, sound, variety and playability. Astro Fighter's 
graphics are extrewly advanced. The disploy is of the console inside your astro fighter craft. In your console 
uindow yoo see the ene«y ships placed against a background of continuously Hoving stars. Gauges also indicate the 
anount of fuel rewaining and the tenperature of your lazer cannons. If you fire too freguently you can overheat the 
lazers, or if you nove recklessly yoo nay run out of fuel. Your challenge is to survive and destroy the Spinners, the 
lazer Ships, the Rockets, the Plane Throwers, and the Heteor shower. Docking with the nother ship is crucial to 
survival as this restores your shield strength and fuel, and cools your lazer cannon. With each succeeding level of 
ploy, survival becenes wore difficult os the ene«y ships attack with greoter freguency and quickness. Superb sound too. 

i':> U \''> \li: R A <:> T- 1::.' R C) :i: X> <:5 

We now hove an orrongewent whereby we con bring you SUPER ASTEROIDS froH Systew Software at a price below what it would 
cost yoo to order it fron Australia. Asteroids indeed has snooth Hovewnt and real tine animation. It is an excellent 
progrofi nodeled after the populor arcade gone. We hove the progran in stock, so save tine and Honey by buying fron us. 

M <^ :^ tii: i< :i: i... i... ih: i^ 

Have you secretly wonted to wonder down the hollwoys of o naze in search of the exit? Now you con with this Machine 
longooge progran thot instontly shows the 3-D perspective view of the hallways. The progran includes a naze editor that 
is used to create your own nazes. The nozes con be soved ond loaded on cassette tape, I guess I should explain why it 
is called HAZE KILLER. Well, there is the catch of a hungry nonster rooning the naze in search of dinner . . .you! 

V:i: X ih: c:; — a - • <:> i< i--: t c: i-i 

EXEC-A-SKETCH is a powerful utility thot tronsforns the Sorcerer's display into a video sketchpad. Pictures ore easily 
drown ond con be internixed with text. Portions of the display con be noved to different locations. Conpleted sketches 
noy be saved on or recalled fron cassette. Screen inoges con be dunped on o Paper Tiger graphic printer. 

Hediun and fine point drawing nodes ore available for drawing pictures on the display. These nodes are best understood 
by envisioning use of on inaginory pen to draw on the screen. Drowing is occonplished by noving the blinking pen point. 
The pen con be raised fron the paper and noved without affecting the existing sketch. One end of the pen is the ink and 
the other is the eraser. In nediun point drawing node the screen is divided into 128 horizontal by 68 vertical pen 
positions. 15 of the Sorcerer's user-definoble graphic characters ore used for nediun point drawing. Fine point 
drawing node divides the screen into 512 horizontal by 240 vertical pen positions. 112 graphic characters are 
dynonicolly defined ond reused in fine point drawing. 

KJ U T 1^ A X T Y l"> If-: M T A I... I< 

The Votrox unit is a norvelous piece of hardware that gives your Sorcerer speech. We provide additional instructions 
to help you connect the device to your serial port and cause it to talk fron your Basic prograns. We hove prepared an 
excellent denonstrotion progran that you will enjoy. Using it is as sinple as: PRINT "I CAN SAY THIS SENTENCE". 



3 



3 



36 SORCERER'S APPRENTICE, March T, 1982 



A 1-^ 1^ ;i: M c: 



i_ 



V 



C 



T C) M $:> t3 \ T W A 1^ I:: 

9522 LINSIOCK, BOISE, IDAHO 83704 



^3 IV:. R KJ X (- {::; 



HOWARD ARRINGTON 
9522 LINSTOCK 
BOISE, IDAHO 83704 USA 
(208) 377-1938 

MUSIC PRODUCTS 

I ] MUSIC SYSTEM I 

I 1 PIANO PLAYER 

I ] MUSIC SYSTEM II 

{ ] JUKEBOX WITH BOARD 

] JUKEBOX NO BOARD 

J HNLANDIA FANTASIA 



Please pay in US dollars with 
a check drawn on a US bonk. 
Sorry - No credit cards. 
YOUR SORCERER SIZE ????? 



RETURN ADDRESS 



I 
i 

I ] 



$40, 
$15, 
$59, 
$40, 
$21, 
$10, 
$10, 
$10, 



BOOGIE & ELEANOR 

t ] STING & MAPLE RAG 

I ] 'JESU' & ODE TO JOY $10 

[ ] STRAUSS & HAYDN $10 

[ 1 MOZART RONDO $10 

{ I UILLM TELL & 60UREE $10 

{ I MOCKINGBIRD $ 5 



00 BMUSHEFF 
00 MP 

95 BMUSHEF 
00 MGSHEFF 
95 MGSEFF 
00 FF 
08 FF 
00 FF 
08 FF 
00 FF 
00 F 
00 FF 
08 F 



MACHINE LANGUAGE HELP 



GAMES - REFLEX 

[ I ASTRO ATTACKER 

I ] CHOMP 

I ] GALAXIANS 

[ 3 SPACE INVADERS 

[ ] CIRCUS 

[ ] MISSILE DEFENSE 

I 3 JAIL BREAKOUT 

I 3 SUPER ASTEROIDS 

BUSINESS HELP 

I 3 DATABASE SYSTEM II 
[ I CASSETTE FILES 
[ 1 SCREEN GENIE 

GRAPHICS CONTROL 



$21.95 
$19.95 
$19.95 
$17.95 
$17.95 
$17.95 
$ 7.95 
$32.95 



MGSJ 

MGSJ 

MGSJ 

BMGSJ 

MGSJ 

MGJ 

MGS 

MGS 



$29.95 MU 
$14.95 MU 
$14.95 BMU 



3 M.CODE TUTORIAL 
3 DISASSEMBLER 
3 DYBUG TOOL 

EDUCATIONAL 



$25.95 ME [ 1 SCREEN SYSTEM $25.95 BMU 

$17.95 MU [ 3 GRAPHICS PACKAGE I $25.95 BMU 

$14.95 MU I 1 GRAPHICS PACKAGE II $25.95 BMU 

I I EXEC-A-SKETCH $14.95 MUJ 

[ 3 CHARACTER GENERATOR $10.00 BU 



I 3 SORCERY BREWS MANUAL$16.95 E It (SENT BY 4TH CLASS BOOK RATE) 



it 



POSTAGE EXTRA 


[ 3 $3.00 


FOR IHESE ITEMS 


[ 3 $4.00 


AND CUSTOMERS; 


3 $5.00 




3 $3.00 




3 $7.00 




3 $9.00 




3 $32 



BREWS 1ST CLASS POSTAGE USA 

BREWS POSTAGE TO CANADA 

BREWS POSTAGE TO ALL OVERSEAS POINTS 

JOYSTICK POSTAGE TO CANADA 

JOYSTICK POSTAGE TO ALL OVERSEAS POINTS 

VOTRAX SHIPPED IN USA AND CANADA INSURED 

VOTRAX SHIPPED OVERSEAS INSURED 



GAMES 



STRATEGY 



3 CHESS 'BRUCE' 

3 SPACETREK 32K 

3 MILITARY ENCOUNTER 

3 MAZE KILLER 

3 RUBIK'S CUBES 

3 ARTILLERY 

3 OTHELLO 

3 CONCENTRATION 

3 MUSICAL HORSERACE 

3 BLACKJACK 

3 CUBIC 



$17.95 MG 
$14.95 BMGS 
$14.95 BMG 

$14.95 MG 
$10.00 MG 
$10.00 BG 
$ 7.95 MG 
$ 7.95 BG 
$7.95 BMGS 
$ 7.95 BG 
$ 7.95 BG 



UTILITIES 

3 SUPER-X EDITOR $21.95 MU 

3 EDITOR FOR BASIC $10.00 MU 

3 CROSS REFERENCE $14.95 MU 

3 QUICK EDITOR $10.00 MU 

HARDWARE ACCESSORIES 

3 2716 EPROM BURNER $59.95 MH 

3 JOYSTICK PAIR $39.95 BMUH « 

3 DOUBLE PORT C0MPLETE$24 . 95 H 

3 DOUBLE PORT BOARD $ 7.95 H 

3 MUSIC BOARD ONLY $21.95 H 

I VOTRAX TYPE-N-TALK $375.00 BH tt 



TOTAL $$ ENCLOSED 



UPGRADES of our products occur froft tine to tine as new features are added. Our policy is to provide you the iHproved 
version at the cost of the postage, packaqinq, tape and labor. We will provide upgrades at these prices only to those 
for whon we have a record of your previous purchase. 



We will send a free catalog 
to other Sorcerer owners if 
you will provide us their 
addresses. Thank you. 



3 $ 5.00 CHOMP with sound and joystick control. 

3 $ 5.00 INVADERS with sound and joystick control. 

3 $ 5.00 GALAXIANS with sound and joystick control. 

3 $ 6.00 DATABASE SYS II with both cassette and CP/M storage routines. 

3 $ 8.00 MUSIC II with CP/M storage routines IF you also already own PIANO PLAYER. 

3 $22.00 MUSIC II with CP/M storage routines IF you do not own PIANO PLAYER. 

3 $ 5.00 CASSETTE FILES with separate read ond write buffers for two recorders, 

All orders are in the return Mail within 3 days. Software is recorded at both 300 and 1200 baud and is guaranteed. We 
seek to have your approval and satisfaction. We will try to answer questions and be of service is everv possible wav, 
KEY: B-Basic M-Machine code U-Utiiity G-Gawe S-Sound J-Joystick or keyboard H-Hardware E-Education F-Music File 



SORCERER'S APPRENTICE, March 7, 1982 



37 



CAEAS 

Reviewed by Mike Patterson 



One of the mace important reasons 
for having a computer is to provide a 
method of keeping lists that are easy 
to maintain and won't leave scraps of 
paper laving all over the house. One 
way to ao Uiis is to write a dedicated 
program foe each list you want to 
keep. The odiet is to get a database 
management program. 

Such a program allows you to keep 
an unlimited number of lists, calloi 
files. Each file can have any number 
of items (records) up to the limit of 
either your memory size oc the array 
size of the program, whichever is 
smaller. The records will have a 
certain number of lines (fields). 
You specify the number and the title 
of eaoi field. Most programs have a 
limit of between 5 and 10 fields and 
a limit of arouna 6 characters in the 
title. 

Standard features of a database 
management program are to add, 
delete, sort, edit, and list records as 
well as to save and load the files to 
and from cassette or didc (not 
necessarily both). Most programs can 
also sum the numbers in a specified 
field, for example to find the amount 
you've spent at a certain store. 
Many programs have odier features 
and/or enhancements to those above. 

If you were to look over some of 
the ads in the magazines foe these 
programs, you may quickly conclude 
that they were intendeid solely for the 
Rockefellers. That's why it's a 
blessing to have someone like Howard 
Arrington around. At ^29.95, Arring- 
ton Software Service's CACIAS 2.0 is a 
bargain compared, at least, to those 
higb-pnced ads. I doubt that you 
could find as capable a program 
elsewhere at anything close to this 
price. 

CADAS is written by R.J.V. Staf- 
ford. It will handle is> to 7S0 
records of up to 9 fields with as 
many 56 characters each. It is written 
in machine language, so its sort and 
stmuning routines are fast. Its files 
can be saved eidier on cassette or 
CP/M disk, and you can specify die 
drive. The program is smpped on 
cassette, so it can be used with any 
CP/M and didc drive. These items 
alone ate worth the price to someone 
like me who prmously had a program 
that was written in BASIC, widi its S 
LOW sorting, and was limited to 
saving files on cassette, also S L O 
W. 

But R.J.V. threw in some more 
stuff. This program can MERGE 
separate files into one, format your 
listing with the REPORT command, 
specify the PRINTER driver you want, 
check the amount of memory SPACE 
left and the size of your file, and 
set TABs for your listing. When 
you're through, it will exit either to 
CP/M or the Monitor. The do- 
cumentation tdls you how to re-enter 
the program from the Monitor without 
losing the file data. 

With die DELETE, EDIT, LIST, 
REPC»T, and TOTAL (summing) 
commands, you can operate on ALL, 
any ONE, or a RANGE of files. Or 

38 



the program will search for a certain 
set of characters in a specified field 
to compare for a match or mismatch, 
partially or fully, all to your 
specifications. 

The file can also be SORTed with 
the fields having the order of 
precedence you specify. Foe example, 
a list of addresses could be sorted 
first by zip code, then by city, then 
by last name, etc. The program 
accepts commas, colons and quote 
marks as data, something my old 
program wouldn't do. 

The REPORT command allows the 
file listing to be formatted in a 
variety of ways. You can specify: the 
number of records or fields across 
the page, whether or not to print a 
gnren field, whether to print it on the 
same line, next line, or line after 
next, the number of lines between 
records, number of records per page, 
number ot carriage returns at the end 
of the page, and whether to stop at 
end of the page. In addition, a 
heading can be printed at the top of 
each page. Whew I 

CADAS is a very good program, but 
it does have some problems. The first 
command level will recognize lower 
case letters, but the odier commands 
won't. This is extremely frustrating, 
since I am constantly forgetting to 
press the shift lock, and consequently 
getting something I didn't want when 
the program defaults to a standard 
command. 

The LIST command will print the 
record number and die titles of the 
fields, but the REPORT command 
won't. The LIST command cannot be 
formatted like the REPCKT command. 
It prints only in one vertical column. 
So a choice has to be made. 

The SORT command apparently 
gifts precedence to upper case letters. 
Therefore, it will list all A's, B's, 
etc., then all a's, b's, etc. Also, it 
sorts only in ascending order. 

Although not a bug, it would also 
be nice if there was a command to 
allow the titles of the fields to be 
changed after the file is established, 
and to add new fields. It is 
maddening to get most of the way 
through typing in a long, new file, 
only to discover that there was 
another piece of information that 
needs to oe included. As it is now, 
the only answer is to start over, or 
to waste memory by adding extra 
fields to begin with. 

The above gripes are irritating, but 
they are easily overshadowed by the 
features that are offered, die price, 
and Howard Arrington's demonstrated 
willingness to help a customer with 
any problems concerning his pro- 
grams. I recommend CADAS highly. • 

PASCAL PORT 

by Daniel Conde 

Good newsl Ezidy Systems has 
announced a Pascal for the Sorcerer. 
It is MT Mictosjstcm" Pawal/MT 
version 3.0, costing about ^300.00. 

With this news, I would like to 
take a break from discussing features 
of Pascal, and devote more time to 
the techniques of translating Basic 
programs to Pascal. 

SORCERER'S APPRENTICE, March T, 1982 



Pascal is not as radically different 
from Basic as other languages like 
LISP and ^L, so a majority of Basic 
programs may be adapted to Pascal 
without major restructuring. Certain 
precautions, however, are necessary to 
make good translations and to take 
advantage of Pascal's features. 

First of all, Basic is a very 
permissive language, not requiring 
variables to be TYPED as integers, 
reals, etc. oc to be declared prior to 
their use. Some Basic's such as the 
Microsoft Disk Basic allows declara- 
tions by special declaration charac- 
ters, such as using '%' after a 
variable name to declare it as an 
integer (i.e. LIMIT %). It is analo- 
gous to the '^' used for strings. The 
DEF statements may be used to 
declare variables beginning with cer- 
tain letters to be of integer, string, 
etc. type. Thus when translating 
Basic programs to Pascal, it is useful 
to m^e a list of all variables used, 
along with their type declarations, 
eidier explicitely defined or derived 
from their in^licit use. 

Certain implicit declarations are 
easy to spot. For example, a loop 
index variable, such as 'COUNT' in 
FOR COUNT=l TO 20, is easy to 
recognize as an integer as long as 
the STEP value is also an integer 
and not a REAL TYPE. Much harder 
to recognize are variables that may be 
used as an integer in one part of the 
program, but used in assignments with 
real's in another. Careful consulta- 
tion with the Pascal manual regarding 
type conversions and mismatches are 
required. Strings may be tricky, since 
they may change their lengths 
dynamically. Most Pascals offer ex- 
tensions from the standard, such as 
strings, ^ich make translation easier, 
but restrict portability of the pro- 
gram, because most extensions are 
specific to a particular implementa- 
tion. After vou have made a list of 
all the variables in the Basic program 
along with your guess of the eventual 
Pascal type declarations, it is 
worthwhile to gtoup them according to 
similar functions. Foe example, your 
program may have this line: 

DIM S(12), P(12) 

Where the arrays may refer to SALES 
and PROFITS for the 12 months of 
the year. With Pascal, a single array 
of RECORDS, each with a SALES and 
PROFITS field may be desirable. 
With RECORDS being used, program 
maintenance will be easier, since 
changes, such as malcing die array 
size different, will require you to 
change only one declaration. 

Many of the changes, such as the 
RECORDS change in the above 
example, are not necessary for 
translation. Pascal supports GOTO's, 
so Basic -like Pascal programs are 
possible. It is best to make as many 
modifications to the Basic source file 
on paper as possible, concentrating 
more on the proper Pascal structure 
and worry about the fine details 
later. Once the proper structure for 
the Pascal version is made, the rest of 
the program can be written using the 
structure as a guide. Thus, before 
attempting a conversion from Basic to 
Pascal, it is helpful to be familiar 
with the various data types available 
in Pascal and how they may 
correspond to Basic types. 9 



) 



3 



c 



4th TIP 

by Tim Huang, Forth Editor 

The Scxeen Edit ox Patt 3 

One phenomenon which really fas- 
cinated me when I arrowed in this 
country was the vast variety of tools 
available. These ranged from the 
simple can opener to powered tools. 
A good percentage of these (e.g. the 
egg slicer) were designed for only one 
simple purpose. Simple but very 
effective (at least much faster than a 
piece of thread, with one end held in 
the mouth, the other end in one hand 
while another hand holds the egg). 
Nevertheless, both methods work. 

Most people in this country take 
these tools for granted and thus miss 
a very important philosophical point; 
mankind invents and aeates these 
tools to facilitate his work in 
fulfilling his needs. FORTH is also 
such a tool. We don't get a 
luxuriously furnished house, but a 
liveable shack along with the tools to 
convert it into a palace. 

In the last issue we discussed two 
of the most important of these tools, 
the D-chart and Case. We can now 
proceed to draw our blueprint. In 
this issue I'll discuss some desirable 
things in the Command mode, and in 
the next issue the Editing mode. 

In the beginning we don't have to 
cram the Command side with a lot of 
extra things. If we write this and 
any other part in a modular fashion, 
any changes can easily be accom- 
modated later. Modularity allows us 
to make the necessary changes within 
the module without tearing the whole 
program apart and rdbuilding again 
and again. I hc^e this concept will 
be clearer later. 

<XM-INST 
BEGIN 
KEV 
CASE 

09 OF TAB HSDCF (ctrl-I) 
13 CF ODPY ENXF (ctrl-S) 

10 CF PRINTER HOCF (ctrl-P) 

11 CF QJITTING 1 E^DCF (cttl-Q) 
BH-L 

EMXASE 
LNTIL ; 

The COM -INST is straightforward. 
It is nice to clear the saeen first 
and display the instruction messages. 
The TAB function can be implemented 
as a simple TAB (jump n characters 
from cursor position) or a more 
elaborate, typewriter -style variable 
TAB. 

A simple TAB can be constructed 
this way: 

08 VARIABLE TAB. (default Tab 
value, but changeable) 

: !TAB (n ) TAB. 1 ; (fot 

Tab changes) 

: TAB ( ) GET.# AB ; 

(change to new value) 

With these words in the Command 
mode, we laid the foundation for 
tabbing. When the Edit mode is in 
control, we can use it to move the 
cursor either n places from the 
current position or the next fixed 
column position (the 8th, 16th, 
24th,... ) 



Copy functions can be copied from 
fig -FORTH line Editor's COPY or 
others such as : 

1. Copying parts of screen A, parts 
of saeen B, ... to saeen X. 

2. Copying a screen from a screen 
file to another saeen file. (A 
screen file may contain a series 
of saeens) 

3. Combination of 1 and 2. 

As the copying functions become 
more elaborate, so does the com- 
plexity of the program. Just diink 
of the complexity required in a word- 
processing program and you will 
then appreciate these copy functions. 
Only with FORTH can you do this - 
-- start with very simple functions 
and later expand to very complicated 
ones. The PRINTER may contain the 
driver routine parameters all set up 
(right justitjcation, multiple column 
printing, etc.), or a simple TRIAD 
which will print 3 screens to a page. 

QUITTING is the way out of the 
Command mode, since the command 
mode is in fact a BEGIN..... UNTIL 
loop. If none of the abo«^e keys 
(function) were pressed, the CASE 
statement shotild be implemented in 
such a way as to give some sort of 
warning. This is the function of the 
BELL. The Sorcerer does not have a 
noise maker, so we have to settle for 
a silent warning, but I know someone 
will come up with a way to flash a 
warning on the saeen. 

We'll continue with the Editor in 
the next issue. Until then, may 
FORTH be with you.# 



RECONFIGURING UFEBOAT CP/M 

(Version 1.42 for Micropolis) 
by R.D. Haun, Jr. 



1. First FORMAT a blank disk on 
drn^e B. 

2. Start with a copy of the original 
Lifeboat Master CP/M disk. CP/M is 
configured ioc 22 K on this disk and 
there is a file called SORCUSER/kSM 
which needs to be modified to provide 
the I/O routines for the Sorcerer 
when the size of the CP/M configura- 
tion is changed. You can check the 
size of the CP/M and whether it is 
the Lifd>oat version by observing the 
sign-on message when CP/M is first 
booted up. L if da oat CP/M version 
1.42 will be configured 2K less than 
the amount of memory which it 
recpiires. Another version of CP/M, 
which is sold by Exidy, is designated 
as 1.42/3 when it signs on and it is 
configured for the size of memory 
which it requires. The instructions 
which follow apply only to the 
Lifd}oat 1.42 version. 

3. Use MOVECPM XX • followed by 
SAVE 40 CP/MXX.COM to create a 
file on the source disk which can 
later be loaded by DDT in the 
correct memory locations, (xx is the 
size of the configuration to be 
aeatcd, e.g. 30 if you want to aeate 
a 30 K configuration for use in 32 K 
of RAM). The DDT commands will be 
used to modify it as described below 
before it is written onto the new 
disk. 



4. ED SORCUSERj\SM followed by 
#A loads the SORCUSER file into the 
Editor buffer. 

5. The 24th line of the file is the 
one which needs to be changed. You 
what to change it from: 



to; 



MSIZE EQU 22 



MSIZE EQU XX 

Use the nC command to move the 
cursor n spaces to the desired point 
and then use the Ixx(cr) command to 
insert the desired size xx of the 
configuration. 

6. After you have checked the new 
file, use #W to write the new version 
of the file, and finally use E to get 
out of the Editor. 

7. Then do ASM SORCUSER.EFG to 
make a HEX file. (The values of e,f, 
and g should be as follows: 
e=desig nation of source drive, A in 
this case, f=designation of destination 
drive for HEX file, also A in this 
case. g=X if you only want to 
display the assembled file on the 
screen without storing it.) 

8. Now enter DDT CPMxx.COM to 
load the partially reconfigured CP/M 
file into DDT. 

9. Now while still in DDT enter: 

-ISORCUSER.HEX 

This prepares the SORCUSER I/O 
file to be loaded into the portion of 
memory which will overwrite the I/O 
routines for the change from 22 K to 
the new xxK configuration. 

10. While still in DDT enter either: 

-RC580 for a 24K configuration, OR 
-RBD80 for a 30K configuration, OR 
-RA580 for a 32K configuration. 

(Other configurations can be pro- 
duced by using other appropriate hex 
values in place of C580.) 

11. Type CONTROL- C to get out of 
DDT. 

12. Enter: 

SYSGEN 
and when prompted with: 

SOURCE DRIVE NAME (OR RE- 
TURN TO S KIP) 

press the RETURN key. 

This sets the reconfigtued CP/M to 
be used as the source for the final 
writing operation which is next 
carried out. 

13. Respond to DESTINATION DRIVE 
NAME with the name of the drive on 
which the new CP/M system is to be 
written, wiiich is B: in this case. 



REFERENCES: 

1. S-100 Microsystems, July/Aug 1980 
(Vol. 1, No, 4) page 32. 

2. Lifdboat CP/M on Micropolis 
Manual, especially CP/M on Exidy 
Sorcerer User's Notes, page 14, but 
also the sections on liie Editor, ASM, 
and DDT.« 



SORCERER'S APPRENTICE, March 1, 1982 



39 



RANDOM SEED FOR (RND) FUNCTION 

by Art Schneider 



You may be interested in a little Z80 Language BASIC utility 
returns a Random Seed for the RND function. Tlie RND requires a 



Subroutine that 
negative 'seed' to 
start a good sequence. The Z80 R (refresh) register can be used to provide that seed. 
Essentially the sub provides the action for the RANDOMIZE function of larger 
BASICS. The user instructions follow: 

1000 RB4 to call 'SEH)' Sub for RND 
1010 PCKE 260,99 : PCKE 261,0 : XX = USR(O) 
1020 SEED = -(PEEK(1)*128 + PEEK(2)*128 + PEEK(3)) 
10 30 SQ = RND(SEH)) : REM Rnd now seeded with Random 
1040 X = R]^D(1) : REM repeat this line as needed for 
random number sequence 

Prior to use in a BASIC program the routine must be loaded into memory starting 
0063H Hex per the following listing: 



i) 



•0063 

•0066 

•0068 

•0 06A 

•006D 

'0 06E 

•0070 

'0071 

•0073 

•0074 

•0076 

•00 79 

•007A 

•007C 

•007E 

'0080 

'0082 

'0084 

'0086 

'0087 

'0088 

'0089 



008A 
008D 
0090 
0093 
0094 
0096 
0097 
0098 
00 9A 
00 9B 



210100' 

1602 

0602 

CD7A00^ 

05 

2803 

4F 

18F7 

Bl 

2861 

CD7A00 ' 

C9 

HD5F 

2 8FC 

C601 

28F8 

C601 

28F4 

92 

77 

23 

C9 



2 10 OF 8 

llOOFC 

010004 

7E 

EEFF 

12 

13 

EDAl 

EO 

18F6 



0094 

0095 

0096 

0097 

0098 

0099 

0100 

0101 

0102 

0103 

0104 

0105 

0106 

0107 

0108 

010 9 

0110 

0111 

0112 

0113 

0114 

0115 

0116 

0117 

0118 

0119 

0120 

0121 

0122 

0123 

0124 

0125 

0126 

012 7 

0128 

0129 

0130 

0131 

0132 

0133 

0134 



******************** «**««*««««4,«**««««««4t««««4««^^i^^ 

♦ #8 2-R^D SEEDS FROI REFRESH (R) - OMIT , FF , FE * 

♦ PCKE 260, STARTS8 (RND Seeds in 1,2 & 3) ♦ 



STARTS 

RESTR8 
YY8 



XX8 



END8 
LOOPS 



LFDONE 



LD 

LD 

ID 

CALL 

DEC 

JR 
ID 

JR 
OR 

JR 

CALL 

RET 

ID 

JR 
AED 

JR 
AED 

JR 

SUB 

ID 

INC 

RET 



HL,RND1 

D,2 

B,2 

LOOP 8 

B 

Z,XX8-^ 

C,A 

YY8-^ 

C 

Z,START8 

LOOP 8 

A,R 

Z,L00P8-^ 
A,l 

Z,L0C:»>8-^ 
A,l 

Z,L00P8-^ 
D 

(HL),A 
HL 



AEDRESS FPR SEHDS 
FCR ORIG. TRIAL SEED 
FOR TWO SEEDS 
GET SEH) FROI R 

SEED COUNTER 

TO •OR' TEST 
STORE 1ST SEED 
GET 2ND SEED 
TEST FC» = SEED 
OMIT IF BOTH ARE= 
GET 3RD SEE) 
TO BASIC 

REFRESH TRIAL SEED 
CMIT 
= FF+1 ? 
OMIT FF 
= FE+2 ? 
OMIT FE 

ORIGINAL TRIAL SEED 
STORE SEED 
NEXT SCRE LOC. 



1 



* #9 REVERSE CHARACTER LQaj) inverse ASCII to graphic* 

* PCKE 260, NEG then 'print^ ASCII+128 ♦ 
******************************** ********^***ttt******** 



NEG 



LCOP9 



END9 



ID 

ID 

LD 

ID 

XOR 

LD 

INC 

CPI 

RET 

JR 



HL,0F800H ;ASCII RCM START 
DE,SGRAPH ;STD. GRAPHICS RAM 
BC,10 24 ;TDTAL GRAPHIC BYTES 
A, (HL) ;GET ASCII RON BITS 

OFFH ; REVERSE BITS IN RON 

(DE),A ; STORE IN GRAPHICS 

DE ;BLMP GRAPHICS POINTER 

;ADJ, OOLNTERS & TEST 
PO ;TO BASIC Oti PO TEST 

LOOP 9-^ ;GONT. REVERSE 



*****************************m*iti*****************m*** 



Art Schneider, 8 Melanic Ln., Matt, MA 02739 



J 



40 



SORCERER'S APPRENTICE, March 7, 1982 






c 



ASTKO ATTACKER 

Reviewed by Ralph LaFlamme 

Astto Attackex carries on the 
excellence that we have come to 
expect of Global Software Network 
programs (Arrington Software Ser- 
vice). This ^21.95 program is a 
take-off on the papular arcade game, 
Astxo Blastec. Its detailed graphics 
and sound rival that of CHOMP and 
its action, variety and intensity leave 
GMAXIANS behind in the dust. 

To start this game, you dock with 
the mother ship (very tricky). Later 
you must again dock to restore shield 
strengdi and fuel as well as to cool 
your lazer cannon. 

The display is that from the inside 
of your astro fighter looking out into 
the void of space as the backdrop of 
moving stats is broken by the advance 
of the various f occes that assault you. 
The challenge is to survive and 
destroy the Spinners, the Lazer Ships, 
the Rodcets, me Flame Throwers, and 
the Meteor shower. Each succeeding 
level of play becomes more difficult 
as the enemy ships attack with greater 
frequency and quickness. 

Your gauges ate also displayed so 
that you may constantly monitor 
your fuel level and the temperature of 
your lazer cannon. If you ate 
careless in your movements, you may 
run out fuel or if your fire too 
frequently, you'll overheat your can- 
nons. 

I did not receive this program in 
time to do it justice in its trials. I 
saw enough of it, however, to be 
reassured that here again is anodier 
Acrington winner. There will be a 
more extensive review in &e next 
issue. # 



GRAmiCS FOB THE MX80 

by Richard Nygord 

To have all 8 bits of data 
available for the Epson MX- 80 
printer, change the cable between the 
Epson MX- 80 and the Sorcerer 
parallel port as follows: 

1. Take the wire that currently 
connects to Pin 4 (output bit 7) of 
the Sorcerer parallel port and switch 
it to the parallel port's pin 3 
(output data available). 

2. Add a wire from pin 4 (Output bit 
7) of the parallel port to pin 9 
(DATA 8) of the Epson printer. 

Now you must relocate the printer 
driver as follows: 

a. Enter the Monitor 

b. MOve E993 E9B0 <cr> 

c. EN <cr> 

d. D3 FF Fl C9 / <cr> 

e. SEt 0=0 

You are now in business with a full 
8 bits for the Epson. You can now 
access the TRS-80 type graphics. 

NOTE: If the AUTO LINEFEED 
SWITCH in die Epson MX- 80 is set 
to OFF, re-enter the Monitor: EN 5 
and input /. # 



THE HAGAN SPREADSHEET Copyright c 1981 by Roger Hagan 
Associates, 1019 Belmont PI. E. , Seattle, WA 98102 USA 



COMMENTED SOURCE CODE CN THE ROMPAC BASIC VERSION OF THE HAGAN 
SPREADSHEET. TO CLEAR OUT COMMENTS, SEARCIH FOR *** AND DELETE 1 
LINE ( 200S/***//Dl/l/) . MAIN PROGRAM STARTS AT 905. 

Adjustments for machine RAM size are required; cf . line 6 note. 

The "OUT x,y" command is used as an equivalent for EXBASIC's CURSOR 
x,y command or Level II 's PRINT AT x,y in conjunction with a machine 
language kluge — see Poke Data section. 

Not all variables have same name as in disk version, since RomPac 
Basic recognizes only two letters. In this program, the following 
are significant variable names: 

BU = address ot Monitor command line buffer in MWA (Size dependent) 

J = Expand mode flag (2= double spacing) 

CC = Cursor column on screen (0-S3) 

CR = Cursor row on screen (0-29) 

C = Column on sheet (0-13) 

R = Row on sheet (1-40) 

SC = Starting column for a rewrite of the sheet 

SR = Starting row for a rewrite of the sheet 

CH = Row in which to place cursor after screen rewritten 

COLS = Number of columns in this sheets 

ROWS = Number of rows in this sheet 

REL = Number of relationships defined so far in this sheet 

CN(rel, stage) = Constant entered as part of relationship 

V(C,R) = Value in a cell in the sheet 

OC(rel) = Column for destination cell of a calculaticxi 

OW(rel) = Row for destination cell of a calculation 

CN$(n) = Column name 

RN$(n) = Row name 

FUNC$(rel, stage) = Name of a function (as a symbol, as "*") 

00$ (rel, stage) = Name of constant 

EX = Number of a rows to be excluded from addition 

SEC = Number of subtotal section in column to be added 

XC(n) = Row to be excluded from addition 

ERA (sec) = First row to be added 

LRA(sec) = Last row to be added 

DJ(rel) = Column of data to be the first operand 

DK(rel) = Row of data to be the first operand 

DC (rel, stage) = Column of data used with operator 

DR( rel, stage) = Row of data used with operator 

EI (rel, stage) = Entry or intermediate value flag 

ST (sec) = Subtotal for this section of column 

VA(n) = Array made from certain sheet parameters for saving 

P = print hard copy flag 

PN = Tab position 

IN$ = General input holder for conmands or data 

SN$ = Tave save sheet name 

*** *** «** «** »** *** *** *** *** *** *** *** *** *** *** *** 

CLEAR 3000:PRINT CHR$(12) 

1 BX$="The Hagan Spreadsheet cl981 by Roger Hagan Assoc. Seattle" 

2 T=0:GOSUB 210: REM Print the above in a box *** 

3 PRINT: PRINT 

*** Ian MacMillan's dollar formatter, used only in hard copy *** 
*** as a replacenent for Print Using *** 

4 DEFFNJ(D)=(X=0)-(ABS(D)<1)-LEN(STR$(INT(D))) 

5 FOR N=1T052:DT$=DT$+".":NEXT: REM Line of dots for graph *** 
*** 

*** Location of the Monitor's command line input buffer must be 
*** set for the size Sorcerer we use. Variable BU is set to 
*** suit the machine. This is used by tape save routine. *** 
*** There is another machine size adjustment needed at 13000 
*** 

6 BU=-16495:REM BF91H = -16495 for 48K. For 32K make this 

7 REM +32657 and change the 191s in the DATA statements to 127s. 

8 GOTO 905: REM Jump to initialization section *** 
*** 

*** Coninand Jump Table *** 

*** 

9 BX$= "ERRONEOUS ENTRY - ???":T=30:GOSUB 210:INPUT IN$ 

10 REM First entry points are for probable data 

100 IF IN$=""THEN RETURN 

110 IF ASC(IN$)<58 THEN V(C,R) =VAL (IN?) : RETURN 

114 IF IN$="" THEN IN$="W" 

115 REM A, B , C ,D, E , F , G , H, I, J 

120 ON ASC(IN$)-64 GOTO1070, 3100, 270, 9 ,625,14000,180, 2895,9, 200 
,22000,570,2030,600,9,12950,250,20000,30150,12000,9,30500,3200 
,160,9,9 

121 REM K,L, M , N, 0, P , Q, R , S , T , U , V , W 



(continued on next page) 



SORCERER'S APPRENTICE, March T, 1982 



41 



SOSCBSY BREWS 

Reviewed by Robert Hag on an 

"In ptomulgating yout esoteric 
cognitations, or articulating your 
KOexfidal sentimental sties and ami- 
cable, philosophical or psychological 
obsetvations, beware of platitudinous 
ponder oaity." Thus begins the for- 
ward to Howard Atrington's Sorcery 
Brews. Never fear, he follows that 
advice throughout his collection of 
useful and interesting tips and 
routines. Indeed, there are times 
when a little moce text might have 
been i^pceciated. Times whta he 
"falls into" a routine before ex- 
plaining exactly what he is trying to 
do. Thankfully, later comments usu- 
ally explain what's happening. 

In all, diere are 138 tips, hints, 
routines, and opinions. The selection 
includes material in Basic And in 
machine language, material on key- 
board, video, joystick, sound, printer, 
modem and cassette routines. There 
ace items dealing with the Basic, Word 
Processor, and Devlopement Pacs and 
with CP/M. 

You may have seen some of this 
material before, but you can't 
rcmcmbct where. Howard has collected 
a great many of those tips, once seen 
and often forgotten. He has also 
added a lot of original material; 
joystick and sound roiitines, and a 
Basic program Mrith madbine language 
subroutine to time Pine Wood Derby 
races. 

I have to give this book an A+. It 
is technically accurate and useful. 
There is something for every program- 
mer, beginner through expert. The 
only suggestion I have for Howard is 
to keq> collecting and publish a 
Volume II, III, etc. • 



CALL WAITING FIX 

by Doug Blair 

The "Call Waiting" feature avai- 
able on some home telephone lines 
may cause you to be disconnected if a 
second call arrives and beq>s while 
you are on-line with another compu- 
ter system. 



I have learned that you may 
this (--IF-- you also have "1 



avoid 
'Three- 
Way Calling") with the following 
procedure: 



1) Place a call to a number you 
know is busy or unattended oc to 
your own number. Place this call 
on hold. 

2) Then place a call to your host 
computer on your remaining line. 

Any incoming calls will be diverted 
to die busy signal and will not 
'BEEP' you off hock. People at Tdco 
rq>air board say that with new ESS 
central offkes dialing your own 
nimiber will not "time out". I have 
been using this technique to call 
CBBS and similar systems for some 
time and it worksl# 

42 



(SPREADSHEET continued from page 41) 

*** "X" Expand sheet display toggle *** 

160 IF J=2 THEN SZ=20:J=1:GOTO 2030 

170 IF J=l THEN SZ=10;J=2:GOTO 2030 
*** 

*** "G" Goto a specific cell *** 

*** 

180 OUT CC+12,CR+19: INPUT "Column, Row";NC,NR 

185 SC=NC:SR=NR 

192 CC=20 

195 C=SC:R=SR:CH=2-KJ-1:G0SUB 10000 :GOTO 2100 
*** 

*** "J" Jump to amortization calculation — *** 

*** 

*** First clear the lower third of the screen, position cursor 
*** 

200 G06UB 14000 :OUT 0,22:GOTO 30050 
*** 

*** Boxing subroutine 

*** 

*** Set T to column to start in, BX$ the words to be boxed. 
*** 

210 BX$>=CHR$(182)+BX$+CHR$(183) 

212 PRINT TAB(T)CHR$(186); 

215 FOR 1=2 TO LEN(BX$) : PRINT CHR$ (186) ;: NEXT: PRINT 

220 PRINT TAB(T)BX$ 

222 PRINT TAB(T)CHR$(17 9); 

225 FOR 1=2 TO LEN(BX$) : PRINT CHR$(179) ; :NEXT:PRINT 

230 RETURN 

*** 

*** "Q" Toggle to set "moves" to 2 cols not 4 

*** 

250 IF FG=0 THEN FG=1:G0T0 10215 

260 FG=0:GOTO 10215 
*** 

*** "C" Return cursor to next cell w/out rewrite 

*** 

270 GOTO 2100 
*** 

*** . Sheet calculation subroutine 

*** 

*** (result, destination, in form Value (Col, Row)) 

*** Format: V(OC(REL) ,OW(REL)) = 

*** V(DJ (RED , DK (RED )+V(DC(REL,STAGE),DR(REL, STAGE)) 

*** (1st operand) (operator) (second operand) 

300 Y=0:Z=0 

301 FOR A=l TO REL 

310 FOR B=l TO 5 ' :REM FACl will be second operand 

320 IF CN(A,B) <>0 THEN FAC1=CN(A,B) :GOTO 345 

330 FAC1=V(E>C(A,B)+C,DR(A,B)) 

345 Z=V(DJ(A)+C,DK(A)) :REM Z becomes first operand 

347 IF EI(A,B-1)=1 THEN Z=y :REM Z will carry intermediate 

360 IF FUNC$(A,B)="*" THEN 420 

370 IF FUNC$(A,B)="/" THEN 430 

380 IF FUNC$(A,B)="+" THEN 440 

390 IF FUNC$(A,B)="-" THEN 450 

410 INPUT"Redo the function entry carefully. ";FUNC$ (A, B) 

415 GOTO 360 

420 Y=Z*FAC1:G0T0 453 

430 Y=Z/FAC1:G0T0 453 

440 Y=Z+FAC1:G0T0 453 

450 Y=Z-FAC1:G0T0 453 

453 IF EI(A,B)=0 THEN V(OC(A)+C,OW(A) )=Y:G0T0 480 

460 NEXT B 

480 NEXT A 

*** 

*** Column addition subroutine 

*** 

500 V(C+1,STT(SEC))=0 

505 FOR R=FRA(SEC) TO LRA(SEC) 

510 FOR XE=*0 TO EX 

520 IF XC(XE)=R THEN 550 

530 NEXT XE 

540 V(C+1,STT(SEC))=V(C+1,STT(SEC))+V(C+1,R) 

550 NEXT R 

560 RETURN 
*** 

*** "L" Return to last previous column 

570 IF C=l THEN IN$="H":GOTO 120 

57 2 C=C~1 • R=l • CH=2+J— 1 

575 IF(SR>1)AND(CC>20)THENSR=1:CC=CC-10:GOSUB10000:RETURN 

580 IF CC=20 THEN SR=1:SC=SC-1:G0SUB 10000 :RETURN 

585 CC=CC-10 

590 RETURN 

*** 

(continued on page 44) 
SORCERER'S APPRENTICE, March 1, 1982 



D 



J 






ASTRONOMY PROGRAMS 

MARS - Distance and angular diam, of 
Mars for any date; date and 
details of next opposition fol- 
lowing any date. $10 

MVEN - Phase, distance and angular 
diam. of Mercury and Venus for 
any date and next elongation 
after any date. $10 

MERVE- Graphical display of Mercury 
and Venus relative to Sun for 
series of time intervals; distan- 
ces, etc. for any date. $10 

PRISE- Risings or settings of Mercury 
and Venus before or after the 
Sun for any location and date. 
$10 

RISES- Times of rising, transit, and 
settings for any planet, Sun, 
or Moon for any location and 
date. $10 

SSTAR- Dates, radiants, etc. of annual 
meteor showers and graphical 
display for selected month. $20 

(Overseas, add $2.00 per order for 

Airmail) 

SASE for details on these and other 
astro programs to: 

Eric Burgess. FJIJ\.S.,13361 Frati Lane, 
Sebastopol, CA 95472 



SORCERER REPAIRS 



*** 



** * 



** * 



Is your beloved Sorcerer down? 
Having too many CRC errors? Would 
you like more memory? Just want some 
help or advice? I am a professional 
technician, able to promptly and 
competently service the units below at 
reasonable rates. All repairs are fully 
guaranteed fcr 90 days! 

Exidy Sorcerer I & II 

Dot Matrix Printers 

Exidy Expansion Box 

Video Moniotrs 

Asoustic Modems 

All ROM Pacs 

Micropolis, Vista, Shugart 

& MPI Disk Drives 



*** 



*** 



*** 



Send all inquiries to me, or call after 
6:00 pm EST. I will be happy to 
answer all questions. 

Jack MacGrath 

70 Tercentennial Drive, 

P.O. Box 5 

Billerica, MA 01821 

Tel. (617) 667-8272 



m2 mentzer 
E electronics 

590 South Hill Boulevard, Daly City, California 94014 
(415) 584-3402 



c 



CP/M Catalog program, good for cataloguing your CP/M disks $ 75.00 

dBASE II Relational Database Management Program $595.00 

Exidy 1.1 Monitor ROMS $ 45.00 

SPELLBINDER Word Processor $395.00 

Now also for the Exidy 77 track 
soft sectored drives. 

SPELLCHECK Dictionary program to work with $2 95.00 

SPELLBINDER 

CP/M 2.2 For the Exidy with Micropolis hard sector $190.00 

drives only. (CP/M is a trade-mark 
of Digital Research) 

We have Godbout Electronics, and Morrow Designs hardware. 
Check with us for all your hardware needs. 

MASTER CARD and VISA on orders of $50.00 or more. 

Shipping will be added to all orders. 

California Sales Tax added for CA. residents 



SORCERER'S APPRENTICE, March 1, 1982 



43 



(SPREADSHEET continued from page 42) 



RANDOM I/O 



■"N" Adveince to next column 



*** 

*** 

600 IP O-COLS OR SR<1 THEN IN$«*H":GOTO 120 

605 MP»0:IP SROl IHQJ MF=1 

610 C-C+1:R-1 :CC-CX:+10 :CH=2-KI-1 :RH=0:SR=1 

f,5 It ^9*^ ™™ CC«20:SC»=SC+4:GOSUB 10000:GOTO 2100 
617 IP MP-1 Taw GOSUB 10000 
620 RETURN 
*** 

*** «g« Extend last value ent'd to all remaining columns— 

«S S^^rTi^fS^-S^"^"^^ "^ COLS:V{CE,R)=V(C,R):NEXT:CH=CH-J 
630 GOSDB 10000 

635 RETURN 



*** 
*** 
*** 



Pormula display subroutines 



??S H^^'ii^',?^^^-™^' FAC$-CO$(A,B)+STR$(CN(A,B)):RETDRN 
lU Uf^'^] *^^^ °C (A,B) ) +- . "+STO$ (DR(A,B) ) +^ ) " :RETURN 
730 PRINT A^ VCOCjA) CHR$(li",-OW{A) CHR$(1)- = V("S(A); 
735 PRINT CHR§(1)-,''dK(A) CHR${1) -) -FUNC$(A,B) FAC$; : RETURN 

— Plotting subroutines: connecting lines 



*** 
*** 

*** {In lines 850 and 895 the '+''null"' should be typed ' + 
*** Graphic 1' or •+ CHR${128)'. This non-printing character 
*;; is used in screen plot, replaced by a I in hard copy.} 

800 JD$-"" 

810 IFRD(N)-RC(N)-0THENJA$=CHR$(95) : JB$=JA$:JC$="":JD$="" : 

JE$«JA$: RETURN 
820 IFRD(N)-RC(N)»-1THENJA$=CHR$(95) : JB$«"/" :JC$="":JD$="": 

JE$«CaR$(23)+CHR$(95) :RETURN 
830 IPRD (N) -RC (N) — 2THENJA$=CHR$ (95) t JB$="/" : JC$="" : JD$="" : 

JE$»CHR$ ( 23 ) + V" :RETURN 
840 IFRD (N) -RC (N) — 3THENJA$= "/" : JB$«CHR$ ( 23 ) + "/" : JC$="" : 

JD?-*" t JE$»CHR$ ( 23 ) + "/" xRETURN 
850 IF RD(N)-RC(N)<-3TOENJA$»V":JB$'=CHR$(23)+V": JC$=CHR$( 23)+"" 

P0RX»lTOABS(RD(N)-RC(N)+4) : JD$=JD$+CHR$(23)+CHR$(1)+"":NEXT 
852 IFLEN(JD$)«3AND RD(N)-RC{N)=-4THENJD$="" 
855 IF RD(N)-RC(N)<-3THENJE$=CHR$(23)+CHR$(l)+"/":RETURN 
870 IFRD(N) -RC (N) =1THENJA$=CHR$ (95) : JB$=CHR$ ( 26) +"\" : JC$="" : 

JD$»"":JE$«CHR$(95) : RETURN 
880 IFRD(N)-RC(N)«2THENJA$=CHR$(95) ; JB$=CHR$(26)+"\":JC$="" : 

JD$»''" : JE$«CHR$ ( 26 ) +"\" :RETURN 
890 IFRD(N) -RC(N) «3THENJA$=:CHR$ ( 26) +"\": JB$=JA$: JC$="" : JD$="" : 

JE$'\7A$:RETURN 

895 IFRD(N)-RC(N)>3THENJA$=CHR$(26)+"\":JB$=JA$:JC$=CHR$(26)+" ": 
FORX-ITORD(N) -RC(N) -4:JD$=JD$+CHR$(26)+CHR$(1) + "":NEXT 

896 IFLEN(JD$)=3ANDRD(N)-RC(N)=4THENJD$="" 

897 IP RD(N)-RC(N)>3raENJE$=CHR$(26)+CHR$(l)+"\":RETURN 

*** . Start main program: Initialization 

905 DIM V(13,40),RN$(40),CN$(13),RC(13),RD(13) 

910 DIM OC(20),OW(20),DJ(20),DK(20),CN(20,5),CO$(20,5) 

911 DIM DC(20,5),DR(20,5),FRA(3),LRA(3),XC(11),VA(6) 
915 DIM FUNC$(20,5),EI(20,5),FUNC(20,5),STT(3) 

920 RN$ (0) »"" :CN$ (0) ="* :Q$="^ :F$="" :DM$="" 

921 REL»1:CR=2 
925 SZ»20:J«1 

930 FOR 1=0 TO 190:READ A:POKE I,A:NEXT 
*** Cursor addressing 

933 DATA 229,71,205,232,233,175,253,119,107,203,24 

934 DATA 31.203,24,31,253,119,104,253,112,105,58,63,1 
936 DATA 253,119,106,225,209,201 

*** Serial printer driver (Bytes 4-6 are video echo) 

940 DATA 197,245,245,205,27,224,62,128,211,254,241,205,18,224 
942 DATA 219,253,203,71,40.250,1,0,8,11,121,183,32,251,120 
945 DATA 183,32,247,241,193,201 

*** — — String save on • — (SE 0=tape out) 

950 DATA 17,18,224,253,115,63,253,114,64^201 

*** String save off (SE O=video) 

955 DATA 17,27,224,253,115,63,253,114,64,201 

*** String load on (SE I=serial in) 

960 DATA 17,15,224,253,115,65,253,114,66,201 

*** String load off (SE I=keyboard) 

965 DATA 17,24,224,253,115,65,253,114,66,201 

*** Paul Grimshaw's trick with the OUT parameter 

*** 

969 POKE 262,199 :REM Inst of out, "OUT" jumps to RST 0, so to 

970 REM SRIIJVR=30 STRSV0N=65 STRSVOFF=75 STRLDCN=85 STRLDOFF=95 
*** 



by Don Gottwald 

Bill Corse of P.O. Box 125, Nov 
Freedom, PA 17349 is looking for 
members in his area who are 
interested in investments. Even if 
fou don't have a Sorcerer but are 
into investing - he'd like to hear 
from you. 

Charles Boone is a contact person 
for the "Ezidy Sorcerer Gcbruikers 
Groep" (ESGG) which has several 
hindted members from Holland and 
Belgium. His address is: 
Stationsplein 26, B-9100 Lokeren, 
Belgium. ESGG has come up with a 
way to print the Ezidy graphics 
characters on a Microline-80 printer. 
Available are a Eprom with the Ezidy 
graphics characters, the Eprom ad- 
dresses with all relevant information, 
the output routine, schematic for the 
cable connections, a stmmiary of the 
possible character sets of die printer 
by means of jumper connections, and 
an instruction manual. The price 
quoted was about US ^21.00. 



44 



(continued in next issue) 

SORCERER'S APPRENTICE, \fafch 1, 1982 



Ken Grimes of QSUG has been 
dissecting BASIC and is interested in 
exchanging listings with other people 
who have disassembled parts of BASIC. 
You can contact Ken by writing to 
the editor of the Australian or 
European Sorcerer Users Groups. 

We are getting many requests for 
information on how to convert the 
Sorcerer screen to an 80 column by 
24 line display. According to a 
source at Ezidy Systems, a prototype 
board has been working on a Sorcerer 
Model II, but due to the complezity 
of retrofitting, it will not be made 
available to the general pxi>lic. If 
anyone knows of an inezpensive way 
to accomplish this, please let us know 
and we'll pass the information on via 
the Newsletter. There are several S- 
100 boards available in the ^400 - 
^500 price range, but thev require the 
keyboard hooked up to tnem and the 
Monitor must be eidier resident on 
the S-100 board oc the one in the 
Sorcerer must be replaced. 

Here is what some members are 
looking for: 

a. A graphics package that is 
compatible with the Sorcerer and 
CP/M. 

b. A controller board foe inezpensive 
8" Caldisk 110 disk drives - 
perha|>s without going through the 
S-100 box. Will share source for 
drives to interested parties. 

c. Several requests have come in for 
information on Income Taz pre- 
paration programs that do not 
requite an 80 by 24 screen, 56K 
or more of RAM or cursor 
addressing. If you know of any 
programs that will run on the 
Sorcerer, please call or write 
right away, before the Tax season 
ends. 

d. R.D. Haun asks if anyone knows 
how to modifv Ezidy CP/M 1.42/3 
from Micropolis Mod I to Mod II? 
By changing address 0123EH in 
MOVCPM from 47 H to «H and 
changing address 01B4H in FOR- 
MAT from 26 H to 4EH, he has 
accomplished most of the change. 
What does he need to modify to 
get CP/M to write the whole disk?© 



1 



1 



c 



SORCERER'S APFBENTICE 

P.O* Box 33 
Madison Heights, MI 48071 

!!! JOIN NOW !!! 

To become a 1982 member of the Soreerer's i^prentioe User's 
Group and receive Vol. IV of the SORCERER'S 
APPRENTICE Newsletter, return this completed application 
along with payment. 



PERSONAL: 



NAME: 



Title: Mr. Miss Mrs. Ms Dr. or 
First name: 



Middle initial: 
Last name: 



Business Name (if a business): 



ADDRESS: 



Number, Street and Apt. No. 



City: 



PHONE: 



State or Province: _ 

Zip/Postal code: 

Country: 

Home: ( ). 



Business: ( 

If you do NOT wish the 



above released, sign here: 



NETWORKS: 

Source ID; 



MicroNET ID: 



The following information will be held in confidaice: 

Which of the following do you have? 
(circle where applicable): 

SORCERER: 

Number of units (if more than one): 

Model: I or II 

RAM memory: 8K 16K 32K 48K >48K 

EXPANSION: 

Exidy S-100 Expansion Unit: Yes No 

Other expansion unit: 



Exidy expansion cable: Yes 

Cards used in expansion unit: 



No 



PRINTER: 

Type: 

DISK SYSTEM: 
Type: 

CP/M: 



Exidy 
Lifeboat 

Other DOS: 

BASIC: 



1.4 
1.4 



2.2 
Mentzer 



2.2 



MODEM: 

Type: 

PERIPHERALS : 



Age: 



Occupation : 



How do you rate yourself as a computerist? 
>HARDWARE: Beginnar Intermediate Expert 
>SOFTWARE: Beginner Intermediate Expert 
Is your interest: 

Hardware Software Both 
Is your application: 

Business Personal Both 

Use a separate sheet of paper, if you don't have enough 
room to comment below. 

PLEASE USE SEPARATE PAPER FOR TOUR QUESTIONS. 

EXIDY: 

If you have had any dealings with Exidy 
Systems, describe thdr nature and outcome: 



FEEDBACK: 



What types of software interest you most? 



List the columns or articles you like the most. 



List the columns or articles you like the least. 



What tc^ics/ articles would you most like covered? 



What comments have you about the Newsletter? 



BACK ISSUES: 

ARESCD Source (issues 1-5) 

S.U.N. Volune II 

Sorcerer's Apprentice Vol I (1-7) 

Sorcerer's Apprentice Vol II (1-5) 

Sorcerer's Appraitice Vol III (1-8) @ $12: 

Sorcerer's Apprentice Vol III @ $2.50 each: 

Overseas orders add $l/issue or $4/Vol: 

1982 miBQeSHIP - VtXUVIE IV: 

U.S.A. - Third Class postage @ $18: 
U.S.A. - First Class (in an envelope) @ $24: 
Canada & Mexico - First Class @ $24: 
All others - Airmail @ $32: 
Single issue - USA, Canada & Mexico @ $3: 
- All others airmail @ $4: 

TDHAL 



SOIDOUT 


soiD our 


sanarr 


SOLD our 


$ 


$ 


$ 



Make checks or money orders (only in US funds drawn on 
a US bank) payable to: SORCERHl'S APPRENTICE. 



SORCERER'S APPRENTICE, March T, 1982 



45 



SORCERER 
SOFTWARE 




IjjL 1 U Cassette Based Assembler and Program Development Package 

ZETU is a full and complete cassette based two pass Assember. If you are one of the many users unable to afford the expensive 
(and disappointing) DEVELOPMENT ROM PAC, then ZETU is for you! 

The ZETU package includes a comprehensive EDITOR and comes with a 20 page operating manual. You will find ZETU reliable 
and simple to use. 

Requires 16K ROM PAC: $99.00 

CASSETTE: $29.95 

KAolL/ 1 KHz-r KOL/EiOOCJK by Geoff Brown. Requires a disk drive CP/M and CP/M basic. 

Imagine writing your Basic programs without line numbers! 

In most big expensive BASIC systems, line numbers are not required. However, a program line may begin with a descriptive word 
so that it can be referenced by a GOTO or GOSUB statement using the same label. For example, instead of having to remember 
that a certam subroutine starts at line 4320, we now simply give the subroutine a name such as 'NUMBER' and write "GOSUB 
NUMBER' instead of 'GOSUB 4320'. 

BASIC PRE-PROCESSOR allows you to have this facility with your own disk BASIC! $24.95 

ARITHMETIC TUTORIAL by Peter Aird. Age 5-Adult. Requires 32K. 

Arithmetic simulates the solving of problems on paper by entering from the correct column and by allowing the entry of 'carries' 
and 'working out' to be entered on the screen. On completion, a full report card is issued showing which routines and levels were 
used by the student and the marks achieved. The student may 'quit' at any time or continue into extra problems and accumulate 
his score or perhaps improve his percentage result. 
Now you have the ideal excuse for having a computer at home! $24.95 

SPtrLLING TUTORIAL by Don Williams. Age 5-Adult. Requires 16K. 

How many hours have you spent drilling young children on spelling in preparation for tomorrows test? Now you can let your 
Sorcerer take over! 

Spelling tutorial comes with two modules. One for you and the other for the child. The first module asks you to type in the words 
and speak them into the microphone of your cassette recorder. The computer controls the recorder via the remote control jac. 
The second module asks the child to listen to the tape, hear the spoken word and type in the correct spelling! When the test is 
over, the correct spelling is given and a score sheet is printed. The child may continue with another test or leave the score sheet on 
the screen. 

Spelling tutorial has been written in such a way that even young children are able to load and operate the system without adult 
help. 

$19.95 



O. Age 15— Adult. Requires 16K. 



MORTGAGE AND LOAN ANALYSIS by aphi 

This program allows you to compare various mortgage amounts, interest rates and mortgage lives. The program calculates and 
displays monthly payments and total repayment of interest. Each mortgage amount will be calculated in combination with each 
mterest rate and mortgage life, which you have requested. This program may also be used to calculate other types of loans. You 
may enter any principal amount with any interest rate and calculate the payment and interest amounts for any specified length of 
time. 

$19.95 



PROGRAM 



Postage within Australia is $1 for initial item and 50c 

for each additional. Overseas $2 and plus $1 TOTAL 

I enclose, (Master Charge, Visa, Bankcard, 

(a) a cheque, money order or cash for the above amount, or American Express, Diners ciub) 

(b) My credit card, expiry date No 



PRICE 



My name and address: 
STREET: 



NAME: 



TOWN/CITY: POSTCODE 

POST THE ABOVE FORM TO: 



COUNTRY: 



SYSTEM SOFTWARE 
1 KENT STREET, BICTON, WESTERN AUSTRALL\ 6157 



46 



SORCERER'S APPRENTICE, March 7, 1982 



v^ 



c 



DISK NOTES 

by Bryan Lewis, CP/M Editoi 

This month I want to bring to 
your attention some good pti)lic 
domain software. Most of it comes 
from the CP/M User Group ot the 
SIG/M Grot^; some of them I wrote 
or revised for the Sorcerer. There's 
so much stuff available from the user 
groims that it's hard to keep ttadc of 
what's good and what works foe us. 
I've sent all of the programs to the 
Apprentice foe posting on the Bulletin 
Board. There's a lot of it, though; 
you might prefer to send a formatted 
disk to the Apprentice Disk Librarian, 
instead of using the phone. (See the 
ON-LINE column in this issue for 
details.) 

First four games, taken from the 
CP/M Grotu) Volume 48, which is a 
sampler of the BDS C language. 
(The COM files don't require C to 
run.) Thnr don't use a lot of 
graphics, but they're well written 
versions of some classics. I'm bor- 
rowing the comments from those on 
the disk by Ward Christensen. 

1. MM.COM: So you want to play 
a simple game of letter guessing, eh? 
Try tois one. But watch yoiu ego: it 
can be deflated. MastetMind is a 
"simple" game, that makes you think. 
The computer^ generates a random 
"word" consisting of 4 letters from 
A-F. You simply "guess" 4 letters 
at a time, and MM tells you how 
many ate ^hits" i.e. the right letter 
in the right spot, and how many are 
missa. Thus you deduce the missing 

Eattern. The game goes a bit slow, 
oweyer (at least at 2MHz), Why? 
MM is computing how many possibili- 
ties are left, based on die clues it 
has given you. When this number 
reaches "1", it says: "You should 
have it by now". It becomes a real 
challenge to see how few times you 
can keq> that message from coming 
out, and is a "real thrill" to "beat 
it" - especially a couple times in a 
row. However, having it "know" 
YOU should "know", but you 
"missed" catching on for, say 5 
turns, makes you feel Iflce a real 
dummy. 

2. OTHELLO.COM: Have you the 
patience to beat this one? 

3. STONE.COM: You get to speci- 
fy how "hard" the computer works to 
beat you, and if you let it work a 
while, it's nearly un -beatable. 

4. TTT.COM: Hmmm, what could 
be new in a Tic Tac Toe game? 
Well, brains, and wit for two things. 
Ex: it puts its "X", you put your 
"o", it thinks a while, and says "^I've 
got ya". If it thinks for a while, 
and after several pieces are on the 
board, doesn't say "I've got ya", 
then you MAY be on your way to a 
rare win, or more likely a "cat" 
game. Play it and see. 

5. TABIFY.COM. A non-game from 
the same disk. A nice utility to 
delete spaces from a file, inserting 
tabs where appropriate, based on the 
CP/M convention. This is handy for 
compacting a Spellbinder file, since 
Spellbinder expands all tabs to 
strings of 8 spaces. That can mean 
a significant expansion in the size of 



an ASM source file. (NOTE: You 
can also use Spellbinder's commands 
/1/2 to 'tabify*^ a file, see Applica- 
tion Notes in your manual. Sysop) 

6. UFE.COM and LIFE .DOC. This 
one came from Joseph R. Power; the 
assembler code was published in his 
Tsunami newsletter. I entered it, 
revised the shape of the little men, 
and saved it on disk. It's the old 
game of Life, first published in 
Scientific American in 1970. The 
Sorcerer allows full -screen editing 
for setting up the positions, and a 
lot higher speed than pencil and 
paper. See UFEJDOC for rules. 

7. SEARCH.COM is my utility to 
search through memory for an 
arbitrary sequence of bytes. After 
you run SEARCH, you will be asked 
to enter the sequence; enter hexadeci- 
mal values, up to 16 of them, with a 

auestion mark for any byte that you 
on't care about (a wild card). The 
source was published in the Apprentice 
of October 1980. This one is rea<hr 
to run, with a coi^le of bugs fixea. 
Note: this doesn't need disks to mn. 

8. ASCIIFY.WPM is a word proc- 
essing macro for Spellbinder. I wrote 
it so I could print out C programs. 
C uses a lot of characters that mean 
special things to Spellbinder, like 
curly braces and vertical lines. 
Hence a simple Print command won't 
work quite right. This macro goes 
through the text and enhances all 
those characters, so that Spellbinder 
doesn't recognize them as special. It 
will work for any file (C or not) 
that uses the reserved symbols. 

9. SURVEY.ASM and SURVEY.COM 
are a neat little program to report 
the usage of your system's assets. It 
will diq>lay how much space is used 
and left over on your disk, Which I/O 
ports are active, and how each 
kilobyte of your memory is used: 

RAM for the transient program area, 
RAM occupied by CP/M, ROM, or 
unused RAM -- it thinks the 
Sorcerer's video and graphics RAM ate 
unused. This kind of information 
might even be useful to you if you're 
a dealer, configuring software for 
many different machines. 

10. MSPEED1.COM and MSPEED2- 
.COM are the CP/M Group's SPEED - 
.COM, modified by me for Micropolii. 
MSPEEDl is for CP/M version 1.4, 
while MSPEED2 is for 2,2. But 
what's SPEED, did you say? It 
modifies CP/M's disk access routines, 
to buffer a whole trade at a time in 
memory, not just 128 or 256 bytes. 
If you're doing something that 
involves - a lot of didc activity, like 
assembling or coDq>iling, this will 
save you LOTS of time, since writing 
a whole track to disk is faster than 
several sector writes. I measured a 
factor of two speed-up, when doing 
assemblies. The disadvantage is a 
loss of memory: storing a tta(k 
from a Micropolis disk can eat up 4K. 
If you specify all the options 
(buffered seeks, reads, and writes), 
you can use up 13 K. That's not 
usually a serious loss when you're 
assembling or conf>iling, though. It 
sure is neat to gsre a DIR command 
and see an instant response without 
the disk clicking. (The directory is 
in memory I) 

To use it, just type MSPEEDl (or 

SORCERER'S APPRENTICE, Marc/i 1, 1982 



2), and you're set. For the rest of 
the instructions, read the two manu- 
als, SMAN.PRT and FMAN.PRT (Note: 
from SYSOP, these two manuals are 
provided as one file named MSPEED- 
.DOC). (Note: the first time you 
use MSPEED2, you may get a BAD 
SECTOR message (1 don't know 
why), but just press CTRL-B and 
you'll be okay.) 

11. MENU.COM and MENUASM 
are an automatic menu generation 
utility for CP/M. Just type MENU, 
and you'll get a nimibered table of 
the COM files on the disk. Just 
enter one of the numbers, and that 
file will be executed. This was 
written up in Creative Computing in 
December 1979, but I had to massage 
it to make it work on the Sorcerer. 
It will also create a menu of BASIC 
files, if you change a couple of 
options in MENUASM. 

Study the source code if you want 
to see how to poke commands into 
CP/M's command buffer for automatic 
execution. 

12. MCX5EM7.COM (and MOD EM 7- 
JDOC for instructions) is the latest 
and greatest of die CP/M modem 
programs. You can do everything 
that you could with PLINK or any of 
the other modem- like programs, but 
more easily. For example, you can 
capture incoming characters onto disk, 
without leaving the program or even 
leaving terminal mode; just type 
CTRL-Y while you're on line. 
Similarly, you can start sending a 
file from disk, just by pressing 
CTRL-T while you're on line. 

Other niceties: you can display the 
didc directory without leaving the 
program. You can send multiple files 
to anodiet computer, using a batch 
transmission mode, without having to 
sit and type in each new name. 

You don't have to modify the 
source code to use this one; I've 
already done it. It should run as is, 
on . a Sorcerer with a "fixed" serial 
port, i.e., one with a hardwired port, 
or Version 1.1 ROM's. You also 
don't have to use th% SETMCOEM 
and SETTAPE commands (see the 
December Apprentice, pp. 169-170); 
I've put the port initialization into 
the program. 

The revisions are for an acoustic 
modem on the Sorcerer's serial port. 
If you have a PMMI modem board 
(you lucky devil), then get the 
original program, which came confi- 
gured for the PMMI. It allows 
dialing, changing baud rates, and 
disconnecting, all from the keyboard. 
I've labelled that file M7PMMI.COM. 

If you want to see how I made the 
revisions, or just want to learn how 
the program works, look at MODEM7- 
ASM and MQDEM7.SET. 

Correction: one feature MODEM7 
doesn't have is the trigger character 
capability of EXLINK. I've never 
needed that feature, but Bob Hag em an 
has found it useful for sending 
bulletin board messages. (NOTE: A 
number of people have found a use 
for that feature. MiniCBBSs, RBBSs, 
and the Source work well with the 
trigger character option. Sysop.) • 



47 



Members of the Soioerer's Apprentice User's Group are entitled to 8 issues of the 
group »s Newsletter, the SORCERER'S APPRENTICE; the services of the library; access 
to its on-line CP/M based Computer Bulletin Board Service; other services as they 
become available. 

MEMBERSHIP RATES for 1982: USA - bulk postage - $18, 1st class postage in an 
envelop - $24; Canada & Mexico - $24; single issues $3; all olhers - air mail - 
$32, single issues $4. 



BACK ISSUES: 



ARESOO Source (issues 1-5) 
S.U.N. Volume I 
S.U.N. Volume II 
Sorcerer's Apprentice Vol 
Sorcerer's Apprentice Vol 
Sorcerer's Apprentice Vol 
S.A. Vol. Ill (per issue) 





SOLD OUT 




SOLD OUT 




SOLD OUT 


I 


SOLD OUT 


II 


SOLD OUT 


III (1-8) 


$ 12.00 




$ 2.50 



3 ^ 



orders for back issues add $4 per volume or $1 per issue to cover additional 
air mail postage and handling. 

Make checks or money orders (only in US funds drawn on a US bank) payable to: 
SORCERER'S APFRENTICE. 

Commeieial advertisers, please contact us for advertising rates. Non -commercial 
classified ads are accepted at the rate of $1 per 35 -column line or part-line. 

Newsworthy items may be submitted via the MiniCBBS on the Sorcerer -based RCPM at 
(313) 535-9186R (ringback), the SOURCE (TCF656), or MicroNET (70150,365), on 
Word Processor cassettes or CP/M Word Processor/ Ed tor files on Micropolis Mod II 
hard-sectored diskettes (any of these preferred) or hardcopy. Magnetic media 
returned upon request. Hardcopy will be returned if requested and accompanied by 
SASE. 

SEND ALL CORRESPONDENCE TO: 

SORCERER'S APPRENTICE 

P.O. Box 33 

Madison Heights, Michigan 48071 

U.SJ^ 

RETURN AND FCmWARDING POSTAGE GUARANTEED 



>^^ 









^