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
>^^
^