Sorcerers_Apprentice_V4N4_Jun1982 Sorcerers Apprentice V4N4 Jun1982

User Manual: Pdf Sorcerers_Apprentice_V4N4_Jun1982

Open the PDF directly: View PDF PDF.
Page Count: 36

@
@
1
G
SIJ~[lE~E~~~
~(JJJ~ErlTI[lE
TM
PAGE
73
VOLUME
4
NUMBERS
4 & 5
June 1, & July 15,
1982
INTERNATIONAL COMPUTER USERS GROUP/NEWSLETTER
Copyright (C)
1982
by
Sorcerer's
Apprentice
-
All
rights
reserved
Price
$3.00
------------------------------------------------------------------------------
IN
THIS
ISSUE
-
BELLY
UP!
••••••••••••••••••
7 3
ODDS
&
ENDS
••••••••••••••••
7 4
PUBLIC
DOMAIN
-
#2
•••••••••
75
SOUND
EFFECTS
••••••••••••••
76
SB
LETTER
MACRO
••••••••••••
76
NEWS
FROM
THE
VALLEY
•••••••
77
RANDOM
EXPANSIONS
••••••••••
78
OFFICE
SORCERER
••••••••••••
80
SPREAD
SHEET
CONT'D
••••••••
81
'SWORD'
REVIEW
•••••••••••••
82
PRINT
'EM
WID
E
••••••••
83
CASSETTE
INDICATOR
LIGHT
••
083
VENEZUELAN
CONNECTION
••••••
84
EASY
TYPING
PRACTICE
•••••••
89
ON-LINE
••••••••••
0.0
•••••••
89
USEFUL
POKE
COMMANDS
•••••••
89
ESF
-
ADDITIONAL
INFO
••••••
90
ESF
-
OPERATING
TECHNIQUES
••
91
ROM
PAC
NOTEBOOK
-
#4
••••••
93
ROM
PAC
NOTEBOOK
-
#5
••••••
94
MAG
I C
SQUARE
S
••••••••••••••
9 5
REMOTE
CP/M
NOTES
••••••••••
95
T.O.S.C.A
••••••••••••••••••
96
PSEUDO
PRINT
USING
•••••••••
96
THE
MAKING
OF
'DUEL'
•••••••
97
TIPS
•••••••••••••••••••••••
91
MX-80
SUPER
INTERFACE
••••••
97
FINANCIAL
TABULATOR
•••••••
098
HARDWARE
NOTES
••••••••••••
103
GET
ML
ROUTINES
FROM
B-PAC.103
MERGE
••••
0 0
••
1 0 3
RELOCATED
W-PAC
MODS
••
0000105
RANDOM
I/O
••••
0
•••••••••••
106
4TH
TIP
•••••••••••••
00
••••
106
aSI
BBLLY
UP.
by
Don
Gottwald
Finally,
we have
the
correct
information
(we hope)
rqarding
the
status
of
Eddy
Systems,
Inc.
(ESI).
Mike
Mazzola
of Biotech
is
refernng
all
calls
regarding
ESI
to
Gary
Jensen
of
Challenge
Computer Corp.
I spoke
with
Gary Jensen
and
he
confirms
that
Exidy
Systems,
Inc.
is
out
of
buaines..
Challenge
Computers is
NOT
a replacement
for
ES
I,
nor
will
they support
the
Sorcerer
in
any
way.
For
any
questions you may have,
he
suggests you
contact
B.J.
Freeman
by
mail
at
P.O.
Box 70310,
Sunnyvale,
CA
94086, by
phone
at
(408)
738-0185
or
(408)
749-8871
or
via
the
SOURCE
at
TCD284.
Challenge
Computers
has
bought
some of
ESI's
inventory.
They are
currently
offering
Model
II's
with
48K
RAM
for _700. They
also
have some
single
Floppy
Disk
Systems
(FDS)
for
_600
and
add-on
units
for
_500.
No
S-100
Unit
is
required for these. A few
Standard
BASIC
Pac's
and Word Processor
Pac's
are
available,
as well
as
some
software.
If
you're
interested
in
any of these
items,
contact
Gary Jensen
at
Challenge
Computer
Corp.,
1225 Commerce Drive, Richardson,
TX 75081;
tel.
(214)
669-1101.
It
appears
that
ESI
could
not
generate
enough cashflow
to
support
the
products
they were
offering.
According
to
Gary, about 5000 Sorcerers were
sold
in
the
United
States,
versus 20,000
in
Europe. (Figures quoted by
ESI's
management
were
substantially
higher. They said
that
15,000 were
sold
in
the U.S., versus 30,000
in
Europe).
Compudata,
B.V. of
Holland
still
has
manufacturing
rights
to
the
Sorcerer
and
are
currently
producing them
for
the
European
market.
(We
will
investigate
the
possibility
of
support
from Compudat a
and
report
back
to
you).
Biotech owns
all
patents,
copyrights
and
manufacturing
licenses
to
the Sorcerer.
The
designer of
the
original
Sorcerer
is
reportedly
negotiating
with
Biotech for
the
manufacturing
rights.
We'll
keep
you
posted.
(continued
on
page
89)
ODDS
a:
BNDS
by
Ralph
LaFlamme,
Editor
Greeting.
after
a
long
absence from
. these pages. I
want
to
thank
Don
Gottwald
for
pitching
-in
so
well
with
the
last
issue. He
got
the
whole
thing
out
alone.
I
think
he did a
auper
jobl
I
must
apologize
to
a number of
you
for
my
lack
of
personal
contact
1n
lome
time.
That
1ncludes those of
you
who have tried
to
contact
me via
the
SOUR'CE
and
MicroNET.
If
you
have
had
file(s)
for
me
to
be
picked
up
off
these systems
in
the
I
ast
few
months,
please
contact
me
again
via
the
account
numbers shown
on
the
back
cover.
Hopefully,
I'll
be
better
able
to
return
your
inquiries.
I have been going
through
a good
deal
of
personal
upheavals
for
the
last
few
months.
I have
just
moved
from
Troy,
Michigan
to
the
Lafayette,
Louisiana
area.
This,
coupled with
problema
in
getting
articles
and
ads
1n
on
time,
and
various equipment
problems,
created a good
many
delays.
Out
apologies
for
this
and
thank
you
for
your p
adence.
Hopefully,
every-
thing
is
now
under
control.
I have been accepted
into
the
gr aeluate
progr
am
in
Computer Science
at
the
University of
Southwestern
Louisiana
located
in
Lafayette,
LA.
Consequently,
I have
to
give up
my
role
as Bditor
of
this
Newsletter.
We
are
in
need of a new
Bditor.
If
anyone
i.
interested
in
this
job,
please
contact
UI
by
mail
at
our
P.O.
boz,
or
by
phone.
Don
Gottwald
may be reached
at
(313)
286-92.65
and
I
at
(318)
856-4954.
Despite
all
the
headaches, I've
enjoyed
this
role
and
have enj oyed
talking
and
corresponding
with
you. I hope
that
you
give
the
new
Editor
as much
support
as you have given
me..
In
order
to
try
and
get
caught
up,
we
are
combining i.sues 4
and
5 1n
one.. You are
still
Jetting
an
eIJual
number of
articles
1n
this
combined
issue,
you're
just
not
getting
a
duplication
of covers, ada,
application
form,
etc.
A.s.
Marland
of
Boi.
Colombes,
FraDCe advises
that
Bob
Roth'.
Z-80
Relocator
program
found
in
issue
3.4,
had
an
additional
bug.
Address 504E
reada:
OC
(INC
C),
but
should
read:
03
(INC
Be).
This
,ets
the
length
right
when
dealing
With
block.
that
are a whole number of pages
long.
He
al.o
add.
that
the
new Monitor
1.1
retains
a bug
in
the
TBst
program.
OK
atill
means
there
is
a
zero
at
the
indicated
bit
location,
while
BAD
alill
mean.
there
is
a
one
with
no
indication
of
what
the
bits
ought
to
have
been.
Put
another
way,
the
bad
addtal
ia compared
with
00
during
print
out,
even
though
it
was
probably
compared with something
else
when
the
fault
was
actually
detected.
POP BC
(to
recover B), PUSH
bc
(to
put
C
back
on
the
stack)
need
to
be
in.erted
between E963
and
B9641
Bob Freeman advises
that
he
has
an
Bztended
Basic
Star
Trek
program
containing
5 modules
to
run
on
5
Sorcererl.
The
modules are
not
complete
but
are
far
enough
along
74
for someone
to
take
over
and
complete.
He
has
not
had
the time
to
do
this
himself
but
will
be
glad
to
provide
any
thoughts
he
has
to
any
interested
parties.
He used
the
Book,
Starship
Simulation,
by Dilithium
Press as
his
reference source. You
may
contact
him by phone
on
Weekends
(408)
749-8871
or via the
Source
at
TCD284.
Charles
Boone,
of
Lokeren,
Belgium,
advises us of
the
following
European
sources for items
available
for the
Sorcerer:
Light
Pen
This
pen
plugs
into
the
parallel
port,
comes
with
5
programs
to
teach
how
to
use
it
Wlth BASIC
and
ML-
programs and a demo
program.
This
1S
avail able from:
Gilbert
Oegema,
Florisdonk
10,
4707
Vm
Roosendaal,
The
N etherl
ands.
Gebr.
Van
Montfort,
Smedestraat
13,
6418
CR
Heerlen,
The
Nether-
lands,
has
the
following
five items
available:
1/0
Pac
This is
an
EPROM
Pac
with
24
I/O
lines,
it
has room for 2 EPROMs and
is
user
programmable.
BPROM
Progummer
This
EPROM
Progr ammer
plugs
into
the
I/O
Pac above via a
25-
pole
D-
connector.
This
includes
all
neces-
sary
software
which
can
be
put
into
the
1/0
Pac.
BPROM
Pac
This
can
be
used
to
plug
in
your own
software.
ROM
Pac Bua
Sy.tem
This
buffered
bus
system
allows
you
to
software
select
and
insert
anyone
'of
eight
possible
Pacs
without
having
to
turn
off
your
system.
BXPAN
Monitcn:
Bzpansion
Program
This
powerful debugger/disassembler
takes
the
ezisting
13
Monitor
com-
mands
and
expands
them
with
23
new
ones.
This
program
improves
the
old
ENTER,
MOVE
and
SET
commands
and
adds
others
such as
DA
(Dump
Ascii)
HE
(Hez
-calallation)
and
Breakpoint
manipul
ation
commands
(SR,
RB,
DR, OS,
DB,
CO,
ER,
and
EX).
Leo
Gielen, Zeishof 18, 6418
JJ
Heerlen, The
Netherlands,
has
the
following 3 items avail
able:
EPROM
Br_
This
inezpensive
eraser takes
about
45
minutes
to
do
its
thing
on
four
EPROMS
at
once.
Monitor
ROM
Version
1.lB
This
ROM
fues
all
known
bugs while
still
maintaining
the
1.0
jump-
addresses.
It
has
a switch
available
to
allow
switching back
and
forth
between Versions
1.0
and
1.18
if
you
should
so choose.
Game
Interface
I DA Converter
This
sys tem
cont
aJ.n~:
1)
A j
o~sti~
interface·
2)
MuslC
lDterface
whlCh
is
compatibie
with
Arrington's
st
andard;
3)
An
amplifier;.
4)
An
8-bit
DA
SORCERER'S
APPRENTICE
converter based on a
DA
chip,
not
a
cheap set of resistor s.
ERRATA:
In
issues
3.8,
it
was
erroneously
stated
that
the
Vista
disk
system uses
soft-sectored
disks.
We
are advised
that
it
should
have read
10
hard-sectored.
Wim
Plaat
at
Triangle
Systems
advises
that
their
Word Pac
Plus
program
will
not
be released. They
have
had
too
many
bugs
to
work
out.
Anyone
with
unresolved
complaints
about their order
for
this
program,
please
contact
Wim
direct.
Anyone
using
CP/M
2.xx
and
Spellbinder
have
probably
noted
occasional
problems
with
lost
files.
The
file
is
OK
long
when you go
to
load
the
file
later.
You
know
you
wrote
it
to
disk properly and
got
a
message back
as
to
how
many
characters
were saved. What
hap-
pened?
There
appears
to
be a bug
in
the
latest
version of
Spellbinder.
It
does
its
own
10
calls
rather
than
using
CP/M's
console
input
(CONIN),
output
(CONOUT)
routines.
Conse-
quently,
when
you
write a
file
to
disk,
it
does
not
flush
the
buffer,
to
transmit
the
balance
of
the
file
and
then
write
an
end of
file
mark.
To
prevent this
loss,
do a query
(Q
command) of the directory immediate-
lr
after
saving a
file.
This
will
f
ush
the
buffer
and close
the
file
properly.
This
has
been working
fine
for
me
now. I've
lost
some big files
by
not
realizing
this
I
Lexisoft
is
aware of the problem and is
rectifying
it.
We'll
let
you
know
about
updates from Lex
isoft
as
soon
as we hear something.
We
have several Members who are
Ham oper
ators.
If
any of
you
would
like
to
be
in
contact
with
other
Hams
flease
let
us
know
(include
your
'ca
1
sign).
We'll
publish
a
list
of such members.
After
trying
several
different
cas-
sette
recorders, Steven Smouse, of
Keene,
Tez
as
advises
that
he
hlKl
the
best
luck
with
using
the
Sound
Design
model #7636 recorder
using
DAK
Industries
tapes.
He
found
the
recorder
to
be
the
most
important
factor
in
being able
to
LOad
prorrams
from
tape
with
tape
quality
a c ose second.
Late
last
year
we
had
requested
information
on
your
dealings
with
Ezidy
Systems,
Inc.
We
were
interes-
ted
in
approaching ESI
with
your
problems
to
see
if
we
couldn't
help
to
lmpr
ove
the
service. Since they have
now gone
out
of
business,
there
is
no
more
point
to
this.
I would
like
to
thank
all
of you who
took
the time
to
respond
to
our request.
Hopefull
Y
l
just
writing
about
it
helped some 0
you
to
relieve yourselves
of
some
pent
up
frustr
ations.
There
were more
than
a few
of
youl
In
response
to
issue 3.6
article,
"Galaxians
Attackl",
Lenn
art
Mans-
son,
of S
multronstig
en,
Sweden
sends
along
the
scores of some of
his
fellow
students
achieved while
playing
this
game. Look
at
thesel.
Kadn
Kallmark
179440
Inge
Melin
140320
Anders
Kullberg
51980
June
1 & July
15.
1982
@
@
cc
C[
IN
THE
PUBLIC
DOMAIN
by Bruce Bl akeslee -CP/M & Micropolis Libr
arian
906 Crestwood Road -West
Westfield,
NJ
07090
(201)
233-3185
(Evenings)
This
installment
of
my
column
will
focus
on
the CP/M
User's Group volumes.
As
I
stated
last
issue, the CP/MUG
has
been
around
since
1977.
To
date,
it
has
produced
59
volumes of
public
domain
software.
This
is a
treasure
trove
of
useful
programs
and
tutorial
information
on
such topics
as
8080
and
Z80 assembly 1
anguage
progr
amming,
interpreter
and
compiler design and
development,
as
well
as
game
and
util
ity
progr
amming.
The
CP/MUG volumes are numbered
1-54
and
78-82.
Volumes 55
to
77 were
re-issues
of
early
SIG/M
User Group
volumes.
There
was
quite
a row
about
CP
/MUG
re-releasing
these volumes
without
the
authorization
of
S IG/M.
To
my
knowledge,
this
will
not
recur.
I
will
not
discuss volumes
55
to
77 as
part
of the CP/MUG as I
will
be
covering them
in
a
later
column
on
the
SIG/M volumes.
Because of space
limit
ations,
I
will
be
giving a very
general
overview of each volume. For a more
complete
catalog
of the CP/MUG
and
SIG/MUG volumes see the
end
of
this
column.
•••••••••••••••••••••••••••••••••
Not
at
ions
Us
ed
Bel
ow
1 = A volume
most
will
want
2 = Of
interest
fran
the
point
of
software
devel
opment.
3 = Of
limited
interest
•••••••••••••••••••••••••••••••••
Volume 1
•••••
Various
CP~
Utility
Progrmns
Volume 2
•••••
Lawrence
Livermore
Basic
and
0)
(2)
Volume
Volume
Volume
Volume
Volume
Volume
Vohme
Volume
3
4
5
6
7
8
9
10
•••••
Disk
Tiny
Basic.
Various
Bas
ic
E Games
(1)
Actor,
M..80
and
Fortran-80
Code
(2)
Basic
E COmpiler and
Progrmns
(1)
Ut
il
i
ti
es and Ganes
(1)
PIIDr
language
(1)
CP~
Utilities
(2)
Gener
al
Ledg
er
by Bud Shmnburg
er
(1)
Lawr
ence
Livermor
e
Bas
ic
(2)
interfaced
to
CP/M
Volume
11
.....
Disk
Tinybasic
and
Disk
Processor(2)
Technology
BASIC/5.
Volume
12
.....
Pilot
Interpreters
patched
for
(1)
Volume
Volume
Volume
Volume
Volume
CP/M.
13
•••••
BASIC-E/CBASIC and
MBASIC
Games
(1)
14
.....
CP~
Utilities
(2)
15
.....
Ut
il
i
ti
es and non-BASIC games
(2)
16.
....
As
sembi
eIS,
Ut
il
i
ti
es,
and
KlO\L
(1)
17
•••••
Utilities,
Denver
Tiny
BASIC
(2)
and
NCN-BASIC
gmnes.
Volume 18
.....
Math
Routines,
Moni
tors
and
(2)
Volume
Volume
Volume
Volume
G.Sl<\L
-toO CP
~
hook
up.
19
.....
Utilities
-
Hardware
specific
(2)
20
•••••
BASIC-E and
CBASIC
Programs
(1)
21
.....
Microsoft
Basic
Programs
-
Games
(1)
22
.....
Monstrous
Star
Trek
Ganes -
too
(1)
big
for
most
systems
but
can
be
cut
down.
Volume 23
.....
SIDIC
Compiler
(1)
Volume
24
.....
CP~
Utilities,
Macro
Libraries
(2)
Volume
Volume
Volume
Volume
and
RAlFCR.
25
•••••
Utilities,
CP~ S]DIC
26
•••••
MBASIC
and
KR1R.AN
Games
27
•••••
MBASIC
Ganes
28
.....
Bas
ic-E
Ut
il
it
ies
and Games
Including
a
Data
Base
System
and
and
ALaL
1
ike
1 anguag
e.
(1)
(
1)
(1)
(1)
Vol
ume
29
•••••
ASM
Ganes and Ut
il
i
ti
es and
CP
~
(2)
BASIC-E
Vl.4
Floating
Point
Volume
Volume
Vol
ume
Volune
Volume
Volune
Volume
Volume
Volume
Volume
Volume
Volume
Volume
Source.
30
•••••
CP/M
BASIC-E
Vl.4
PLM
Source
(2)
31
•••••
Tarbell
Basic
Manual and
Source
(2)
32
•••••
Tarbell
Basic
Source
(2)
n
.....
Search
and
Rescue
Programs
0)
34
•••••
SAM76
Language
(1)
35
•••••
FELIX -
Graphics
Animation
Sys.
(2)
36
•••••
Assemblers,
Editors,
and
Uti!.
'5
(2)
37
•••••
CBASlC
Programs
(1)
38
.....
Utilities
and FASf
(2)
39
•••••
Music
Programs
(1)
40
•••••
Disk
Cataloging
System
(1)
41
.....
Ham
Radio
Ctess
Progr
mns
(2)
42
.....
Dis
as sembI
eIS,
Ut
il it
ies
(1)
Volume
43
•••••
Osborne
CBASICZ
Accounts
Pal:able
and
Receivable
(BUlS)
Volume
44
•••••
Os
orne
General
Ledger
(BUGS)
Volume
45
•••••
Osborne
Payroll
w/cost
accntg.
Vohme
46
.....
CP~
Utilities
Volume 47
•••••
CP~
Utilit
ies
Volume
48
•••••
BDS-C
SaJqIl
er
Disk
Volume
49
•••••
Fortran
and RAlFCR
Progrmns
Volume
50
•••••
P
asc
al
Conp
il
er,
SPEID
Volume
51
•••••
Stage2
Macro
Processor
Volume 52
•••••
Utilities
Volume
53
•••••
BDS-C
Adventure
Volume 54
•••••
Xitan
Disk
Basic
Programs
••
Volume
55
-77
are
re-issues
of
SIG~
Disks
Volume
Volume
\a.lME
Volume
Volume
78
•••••
Utilities
79
.....
Modan Progrmns
for
Pl'&1I, and
Smart
Modem
80
•••••
Crananco
Structured
Basic
Prograns.
81
•••••
CP/M Ut
il
i
ties
82
•••••
North
Star
BIOS
routines
•••••••••••••••••••••••••••••••••
Disks
May
Be
Ordered
Fran
Me
At
The
Address
Above
_3.00/disk
-you
supply
the
media
FCIlMATIID.
_8.00/disk
- I
supply
the
media.
Please
include
a minimum
of
_1.50
Postage.
••••••••••••••••••••••••••••••••
(1)
(1)
(1)
(1)
(1)
(1)
(2)
(1)
(1)
(2 )
(1)
0)
(1)
(1)
0)
(1)
(2 )
I
realize
that
the
above
descriptions
are
scanty
at
best.
They
are
designed
to
give you a
brief
idea
of
available,
low
cost
softwate.
J
can
provide a
disk
with
a full
catalog.
I
will
also
provide
the
CP /MUG
and
SIG/M
programs
found
on
the above disks
at
the
costs
outlined
above.
There
are
now
59
CP{M disks
and
69
SIG/M disks
for
a
total
of 128.
That
is
a
ot
of
software.
Please
realize
that
much of
the
software
available
must
be
converted
to
the
Micropolis
disk
format
because
the
sector skew
is
different
from
standard
CP
/M
8",
single
density
disks.
Also,
there
are
often
machine
specific
routines
in
much of the
software
which must
be
changed
to
work
on
the
Sorcerer.
The
Monitor
calls
will
be
different,
the
video
is
found
in
a
different
area,
and
the screen
size
is
non-standard
just
to
mention
a few
of
the
problems.
For
me, however,
this
has
been
the
interesting
part.
With
the
ASM
files
to
work from, I have
learned
a
great
deal
about
my
machine
and
about
progr.amming.
Getting
one
of these
programs
to
run
is
a
real
JOY.
Don't
get
me
wrong.
Many of
the
programs
contained
in
the CP/M disks
will
run
without
modification.
Don't
~e
put
off
however,
at
having
to
rewrite something
to
make
lt
run.
It
is
a
great
way
to
learn
and
contribute.
If
you
are
like
me, you
will
struggle
at
first
just
to
make
the
programs
run.
At
first,
ignore
the
inelegance
or the
optimization
of
the
program.
After you have some
experience,
you
will
find
yourself
adding
conditional
IF
-
ENDIF
Jrogram
segments
so
those
who have a Sorcerer
can
easily
ter
the
program
for. themselves
a,!-d
stil~
leave .the
original
code
untouched.
Fmally,
you
will
begm
to
hnd
ways
to
make
the
pro¥rams
run
more
efficiently,
correct
bugs
you
and
others
dlscover,
and.
make
e~tentions.
to
.the
programs
to
provide
for
more
options.
It
s a
fasanatlng
task.
In
the
next
issue,
I
will
discuss
the
software
available
on
the
SIG/M
disks.
I
will
also
announce
the
first
volumes of
the
Sorcerer User
Group.
At
this
point,
I have 4 volumes
that
I
am
editing.
They
will
be
!Dad~
up of progr.ams
submitted
by
Sorcerer
users
and
will
lnclude
TIP
files,
BASIC Pac
files,
and
other
software
designed
to
run
on
the
Sorcerer.
I
mention
this
now because I
would
like
each of
you
to
begin
thinking
about
submitting.
programs
YOU
h~ve
written
to
the
SUG.
Anyone
who
submlts
programs
on
dl.sk
will
receive
in
return
one
disk of
software
of
your
chotee
free.
The
only
thing
I
request,
and
I
wil~
be
careful
ab~ut
this,
is
that
you submit
only
public
domun
software
whteh
you
have
written.
Do
not
submit
software
you have
purchased.
If
you
have
any
questions
I
would
love
to
talk
to
you.
can
be
reached
most
evenings
at
(201)
233-3185.
Call
me,
I love
to
chat
about
software
and
I
would
love
to
hear
what
you
are
doing
with
your
Sorcerer.G
June 1
11£
July
15,
1982
SORCERER'S APPRENTICE
75
SOUND
BPPBCTS
by Thom as
J.
Sweeney
Thia is for
all
of those who own a
Sorcerer', Voke and have any
kind
of
space game proJlram
•.
The following
.
routines
were or18inally designed with
Star
Trek
in
mind
but
can
be used
in
any of the space game.programs
whkh
have been devised
over
the years.
Phueu
POR
1=1
10
30
aJI'
255
,47
POR
J=1
10
15:NBX1' J
aJI'
255
,45
NBXl'
1
arr
2"
.2"
RB'ruRN
Red
Alert
POR
JJ=1
10
5
POR
1=25
10
45
arr
255,1:OUT
255,1+1
POR
J=1
10
10:NBX1' J
NBXI'
1
arr
255,255
POR
J=1
10
30lNEXT J
NIlXI'
JJ
RB'ruRN
lUioloO
Ret1Uo
Fire
REM
10=
#
OF
KLIl'IiQlS
POR
JJ=1
10
(10*2)
POR
1=50
10
25
STEP
-1
arr
255,1
NBXI'
I
arr
2"
,255
REM
RAMXM
DELAY
BB'lWBEN
SKJI'S
POR
J=1
10
(INT(RND(I)·500+5»
NIlXI' J
NBXI'
J
RB'ruRN
Photoo
Torpedo
POR
J=1
10
40
arr
2"
,50
NBXI'
J
POR
1=50
10
25
STBP
~1
arr
255,
I
lOUT
255,1+1
NIlXI' I
arr
2"
,2"
RB'ruRN
.'
«< CIASSIPIID
ADS
»>
_1/line
_1/line
===============================
FCIR
SAUlI
'18K
SOIICCI:U
II,
15" mcmhor,
D-Paq
Progumll Miaobame, 3
games
-
_1195.
NBWI
1 BWe Pac
_45,
1
Dev.
Pac
_65.
Writel
Steve
ClcuRh.
6444
W.
Pinecone
Dr.,
Michisan
City,
Ilf;
46360.
===============================
COIIPLBTB
LBTTBR
MACRO FOR
S.BLLBlHDBR
VBRSION
5.10
by
Daniel
Edward
Behmer
Ita a miuocomputer
consultant
who
does work
in
many
parts
of the
world, I find
that
my
SPELLBINDER
Word Processor
is
one of
my
most
frequeotly used pieces of computer
loftware.
It
is
not
unuaual for
me
to
lend out
ten
letters
a
day,
each
CJuite
iadividual
in
chsr acter.
There-
fore,
it
wu
absolutely necessary
that
I write a Macro
in
SPELLBINDER's
MSPBAK
language
t.o
take
care of
most of the tedious chores.
Included
at
the end
of
the Macro
yc;N
will find complete
instructions.
The
ule
of this Macro
hu
increased
my
own
letter
writing production by
100%
and I hope
that
you find
it
useful u
well.
76
LISTING
; A
COMPLETE
LETTER
MACRO
FOR
SPELLBINDER
Version
5.10
ISS
28
:%C
=
"1"
:%D
= "2"
:%4
= 2
:%5 =
$3
f
:%6
0=
$3
:%1 =
%6
-
%5
+ 1
t
:%3
U + U
:pr
"U/U3/"
:pr
"LETTER
WRITING
SYSTEM
MACRO
-
by
Daniel
Edward
Behmer
n
:pr
nU3/U3/"
:pr
nTYPE
(1)
FOR
FULL
SYSTEM:
***********************
#13/
n
:pr
n * *
113/
n
:pr
nAIl
space
&
Letter
Options
*
Note:
letter
must
*
#13/
n
:pr
nFi1e
Card
*
have
()
after
the
*
#13/
n
:pr
nEnve10pe
*
address.
*
#13/
n
:pr
nLetter
* *
U3/
n
:pr
nFi1e
Copy *
FULL
INSTRUCTIONS
*
113/
n
:pr
n *
AT
END
OF
THE
MACRO.*
113/
n
:pr
"TYPE
(2)
FOR
SHORT-CUT
TO:
*---------------------*
113/
n
:pr
n *
Options
set
at
*
U3/
n
:pr
"Envelope
*
initiation:
*
113/
n
:pr
"Letter
* *
113/
n
:pr
"File
Copy *
single
space
letter
*
113/
n
:pr
" *
space
not
expanded
*
#13/
n
:pr
"TYPE
(3)
FOR
SHORT-CUT
TO: *
your
name
only
on
*
113/"
:pr
n *
return
address
of
*
113/
n
:pr
"Letter
*
pre-printed
enve1ope*
113/
n
:pr
"File
Copy
* *
U3/"
:pr
"
***********************
113/
n
lin
"
YOUR
CHOICE? "
%E
:%F
=
"2n
Ion
%E%F
/
54
72
:pr
nU/n3/
n
lin
"Type
(1)
for
Single
space;
(2)
for
double
space
n
%C
:pr
"1131"
g
~,.
lin
"Type
(1)
for
expand
space;
(2)
for
regular
space
n
%D
~
:pr
nU3/
n
:pr
nType
(1)
for
your
full
name
and
address
on
envelope
113/
n
:pr
nType
(2)
for
your
first
name
only
on
pre-printed
113/"
.:in
n
envelope
---
n
%4
:pr
nU3/"
lin
"Type
(1)
to
file
card;
(2)
to
envelope;
(3)
to
letter
n
%A
:%B
= n2n
Ion
%AtB
/
54
72
:pr
"U3/
n
lin
nInsert
the
FILE
CARD,
then
(CR)n
%A
y 1 90
110
2 0 1 1
65
2 1 0 0
25
10
pU
bU
:pr
"U3/
n
lin
"Insert
the
ENVELOPE
in
the
Printer,
then
(CR)
n
%A
y 1 90
110
0 0 1 1 65 2 1 0 0 25
10
yt
0 2 0 0
12 12
7 3 3 0
pI/Dr.
Daniel
Edward
Behmer
;Insert
your
name
here
Ion
%4-2 /
64
/
pI/Suite
611
IOn
the
opposite
PL
lines
p1/5440
Cass
Avenue
;insert
your
return
address
pI/Detroit,
MI
48202
las
in
this
example
Ion
-1
65
3
pI
pI
pI
pI
yt
0 2 0 0
12 12
6 25 25 0
y 1 90
110
0 0 2 1
65
2 1 0 0 25
10
p%3
bU
Y 1 90
110
0 0
%C
1
65
%D
1 0 0 25
10
yt
0 2 0 0
12 12
7
10
10
0
f'F'Y
:pr
nU3/"
~
lin
nInsert
PAPER
for
letter,
then
(CR) n
%A
y 1 90
110
2 0
%C
1
65
%D
1 0 0 25
10
pa
ff
SORCERER'S
APPRENTICE
Jtme
1
at
July 15,
1982
@
t
:pr
njH3/"
:in
"To
print
a FILE
COPY,
(CR)
,
otherwise
(ESC)
to
END"
%A
pa
ff
t
***
INSTRUCTIONS
***
,
This
Macro was
written
for
Version
5.10
of
,SPELLBINDER.
If
you
are
using
an
older
version,
you
,must
change
the
(y)
and
the
(yt)
reformat
lines
since
,the
older
version
has
different
reformat
sequences.
, The
purpose
of
this
Macro
is
to
increase
the
pro-
,duction
of
correspondence
in
an
office
by
automating
,several
steps
which
are
part
of
an
effective
system:
,the
typing
of
the
name
and
address
on a
file
card
if
,desired,
the
typing
of
the
envelope
with
option
for
,full
return
address
or
one
line
for
pre-printed
envelopes,
,the
typing
of
the
letter
with
whatever
spacing
options
,have
been
chosen,
and
finally
typing
an
additional
copy
,for
the
files
if
desired.
,SPECIAL
DIRECTIONS:
,
You
should
insert
your
own
name
and
address
in
place
,of
mine
in
the
Macro.
If
you
have
only
a
three
line
,address,
replace
my
fourth
line
with
a npL".
,CAUTION:
the
lower
case
PL
(pI)
on
my
printer
makes no
,distinction
between
lower
case
L
and
the
numeral
(1).
,The
command on
those
lines
is
in
fact
PL
in
the
lower
,case.
DO
NOT
type
empty
carriage
returns
for
the
OPTIONS.
,You
must
type
in
the
number
of
the
option
you
desire.
,However,
when a
prompting
line
shows a (CR).
in
that
,case
only
an
empty
carriage
is
given
to
indicate
that
,you
are
ready
for
the
Macro
to
continue.
, I
use
a
NEC
Spinwriter
5510
as
a
printer.
On
the
left
,side
of
the
platen
is
an
impression
lever.
I move
that
,back
one
notch.
This
allows
me
to
safely
insert
either
,a
file
card
or
envelope
ON
TOP
of
my
tractor
fed
paper.
,Naturally,
just
before
doing
that
I
flip
the
paper
tension
,lever
on
the
right
to
ON
in
order
to
hold
the
card
or
,envelope.
Since
I
have
not
actually
disengaged
my
paper,
,it
is
a
simple
matter
to
right
things
again
and
continue
,on
with
the
printing
of
the
letter.
,
This
MACRO
automatically
counts
the
number
of
lines
in
,the
address.
Therefore,
it
MUST
have
a mark
(A)
on
the
,line
following
the
address.
Here
is
a
sample
letter
format:
Mr.
John
Brown
123 Main
Street
Cleveland.
OB
46121
A(
(Note
the
mark
and
the
CR
which
creates
a
spacel)
February
15,
1982
Dear
Mr. Brown:
Thank you
for
your
letter
of
last
week.
I
am
planning
to
visit
your
office
on
Saturday.
Sincerely
yours.
Your
Name
After
you
type
the
Macro
into
SPELLBINDER
using
the
EDIT
mode, you
save
it
on
your
'A'
drive
with
an
appropriate
name
such
as
'A:LET.WPM'
Please
note
that
the
extension
is
required.
When
you
want
to
use
the
Macro
at
the
beginning
of
a
writing
session,
use
the
COMMAND
'AD'
which
will
ask
you
the
file
name. At
that
point
the
Macro
automatically
initializes.
For
subsequent
use
once
it
is
in
the
buffer,
simply
use
the
COMMAND
'A'
to
initialize
the
Macro.
,
If
you
have
any
questions.
please
feel
free
to
write
;to
me
by
letter.
My
address
is
in
the
Macro.
My
Source
,address
is
TCT534.
Daniel
Edward
Behmer.
IWle
1 & July
15,
1982
SORCERER'S APPRENTICE
FROM
THE
VALLEY
by
Bob
Freeman
I have
just
spent
a wonderful day
going
to
the
different
little
hole-in-
the-wall
stores here
in
the
Santa
Clara
Valley.
Most of them
had
used
equipment of more or
less
the same
quantity
and
quality.
A
few
stood
out.
They had
parts
or
equipment
that
would
delight
the
Sorcerer user who has a low
budget,
plenty
of time
and
some
technical
background.
The
first
is
South
Valley
Electro-
nics,
Santa
Clara
California.
Out-
side of
Challenge
Computers
(the
company
into
which ESI was
absor-
bed)
South
valley
has
the
largest
suppiy
of
logic
boards,
cases,
and
printed
circuit
boards
(PCB)
in
the
USA.
They have
unpopulated
S-100
interface
cards
and
the
S-100
confi-
guration
PROM. These cards are
not
the
S-100
box
PCB,
but
looks
just
like
an
S-100
card.
The Sorcerer
connects
through
the
50
pin
buss
expansion
to
the
top
of
this
card.
The
card
can
occupy
any
slot
in
the
S-100
mother
board.
All the
inter-
facing I do
to
the
5-100
world
is
with
this
card.
A 12
slot
S-100
mother
board
and
power supply
can
be scraped
together
for
under
_125.
The
total
cost
would
be
under
_225.
The
second
place
of
importance
is
Anchor
Electronics,
Santa
Clara
Ca-
lifornia.
They are
the
sole
supplier
to
the
end
user of
California
Compu-
ting
S-100
bare
boards.
The
bare
board
runs
for
under
_50
and
boards
as
Kits
are
under
_200.
I
am
particularly
interested
in
the
soft-sectored
disk
controller
(CCS
24228) which
lets
me use use my
Exidy
software.
It
allows
anyone
who now has a Micropolis Quad
density
hard
sectored system
to
con-
vert
to
the
soft
sectored
and
use
the
same drives they have now.
It
does
require two drive boxes
and
a
program
that
allows
auto
transfer
sector by
sector.
I
can
provide
that
service
at
a
_5
copy fee + disk
cost
(unless
disks are provided).
this
controller's
many
options
make
it
great
I I
can
run
8"
and
5
1/4"
disks
at
the
same
time. Also, if desired,
it
will
auto
boot,
can
be
polled
or
interrupt
driven,
etc.,
etc.
In
the
future,
if
I
go
completely
S
-100,
I
can
run
most
of
my Sorcerer CP/M
programs,
with
little
modification.
I
had
to
change
the
special
74LS-
237
program
PROMs
and
the
Monitor
PROM
to
allow
it
to
work with
the
Sorcerer. I
will
be
glad
to
provide
the
program
listing
for
the
74LS237's
free
or
programed
PROMs
for
both
the
74LS237's
and
2716 for
under
_ 80.
The
best
part
of
this
controller
is
the
cost.
The
Bare
board
comes
with
excellent
documentation
and
costs
_49.95
plus
tax.
The
Kit
comes
with
the
board
and
all
parts
and
sockets
for
_184.
It
took
me
about
4
hours
to
solder
and
test
the
board.
The
total
additional
cost
would
be
under
_300,
the
cost of
one
drive.
Anchor
Electronics
also
has
Bare
Boards
for
32K
static
RAM
(uses
2114's)
priced
at
_44.95, 64K
drna-
mic
RAM
kits
for
_174
(inc
udes
200ns '1116's),
and
10
Kits
with
both
serial
and
parallel
ports
from
_165
to
_185.49
77
RANDOM BXPANSIONS
by Bob
J.
Freeman
The
following
was
precipitated
by
the
last
Random
I/O.column.
SYltem
aashes
can
and
usually
ate
cauled
by 7 .. LS2 .. 1
data
rud
chips
100ing
theit
pull
up
ability.
(see
ramapan.usr)
Word Processor Pac
failures
in
most
Cales
ate
due
to
the
BPROMS
becoming UNprogramed.
The
NBC 1500
and
2500 series
printer
I
will
print
bidirectionally
by
throwing switches. A
user
program
is
neceslaty
to
drive
the
bidirectional
feature
of
the
printer.
The
Eddy
PPRINT
program
will
drive
the
Word
Processor
Pac.
The
disadvantage
is
that
the
switch needs
to
be
thrown
back
to
use
the Sorcerer's
internal
printer
driver
for
patallel
printers.
Note
the
NEC
printers
tend
to
hang
up
when
firu
turned
on
or
when the Sorcerer
is
first
powered up.
This
can
be
overcome
by
adding a
2.2k
resistor
from
IC8H-20
to
IC8H-
3
(Sorcerer
I)
or
IC9H-20
to
IC9H-
3 (Sorcerer
II).
The
EXIDY disk
controller
cannot
read/write
hud
sectored disks.
It
is
designed
atound
the
Western
Digital
controller
chip 1793. The 01 series
of
the
WDC chip
hal
Jjrogramin
g
problems.
If
your
contr
ler
hangs
up
atart
by
replacing
the
1793
with
the
B02 series chip.
The
Sorcerer
CAN
be
run
at
.. mhz.
It
requires
the
following
timing
modifk
ationsl
1)
RAM
cycle time (may require
replacing
RAMs)
2)
RAM
RAS
to
CAS
hold
time.
3)
Double
the CPU
to
4.213MHZ
.. ) Use Z80A
chip.
5)
Replace
various
chips
that
may
not
meet
theit
specs.
6) Replace
the
BRUCE
PROM
if a
MMI
chip.
7)
If
uling
disk rewrite
the
disk
10
to
allow
double
the
wait
time
for
head
home command.
The
Hacker's
Manual
is
a
compila-
tion
of Tech
notes,
engineering
notes,
and
des_ign
chanBes I have made
to
my machines
and
I believe
will
work
With
others.
The
Manual
includes
the
switching power
supply
for
the
Sorcerer
II,
56K
dynamk
RAM,
using
the
new 64K
~"
·Real time clock,
and
programable
interrupt
controller,
and
many
more
things.
The
manual
ia _15
with
updates
at
least
once a
year
for
one
year.
I have a Sorcerer
II
working
at
4
mhz
with
lOft
and
hard
sectored
controllers.
I
don't
suggeat
this
change
be
done
by
anyone
who
cannot
manufacture
the
complete
timing
diagram
for
the Sorcerer. I
don't
guarantee
that
everyone
can
get
theit
Sorcerer
to
work Without a
lot
of
effort.
(See Hacker's
Manual
for
hardware
changes).
Keyboard
bounce
is
caused by
not
enough
tenlion
on
the
leaf
spring
in
the
key.
This
can
be
increased
by
bending
the
leaves towards each
other
with
care
not
to
crease
the
spring.
(See
Hacker'.
manual
for
suggested
method).
78
The
56K
RAM
change
should
only
be
done
by a
competent
technician.
It
requires a
lot
of
Oltting
and
jumpering
and
has
only
been tested
on
the Sorcerer
II.
If
there
is
anyone
wil1in~
to
offer their Sorcerer I machine for a
4-
6
month
period, I
will
do
the
modification
and
supply
the
parts
free. (Labor
is
_120
and
patts
ate
about
_90 as of
June
82).
The
switching power supply is
capable
of 5 amps
at
5
volts
with
an
operating
temperature
of 37 degrees Celsius, warm
to
the
touch.
There
ate
no
HOT
components.
The
power supply
can
be purchased 3 ways:
1)
Bate
board
with
schematic
(no
technkal
support)
-_35.
2)
Board
(not
an
old
power supply
board),
Patts,
schematics
and
technkal
support
(your
phone
calls)
-_100.
3)
Completed
board
with
watranty
-_195.
Is
there
a way of
using
more
than
56K (57344 bytes decimal) of
RAM
with
the
Sorcerer?
If
so,
how may
this
be accomplished?
The
Sorcerer
has
two
separate
RAM
blocks:
1)
program,
2)
display.
The
program
portion
can
be a maximum of 32K (33088 bytes decimal)
for
the Sorcerer
I
and
48K (49152 bytes decimal) for the Sorcerer
II
of
RAM
addressing. Both
Sorcerer I
and
II
have 3K
(3072
bytes decimal) of
RAM
addressing
for
the
display
portion
of RAM.
For
those
of
you
without
the
Sorcerer
Softwate
manual,
the
program
RAM
is free
for
any
non-ROM
Pac
program from address
OH
(0
decimal)
to
within
144 bytes
of
the
top
of RAM.
The
last
approximately
80H
(l44-decimal)
bytes
ate
used by
the
Monitor.
ROM
Pac
programs
use
the
lower memory
OH
to
1FFH
(0
to
512-
decimal) for
theit
work
atea
also.
The
disk
operating
program
uses
about
8k
(8129-decimal)
bytes of program
memory
at
the
top.
Exidy CP/M
(r)
and
Micropolis
MOOS
(r)
also
use the
Program memory from
OH
to
100H (0
to
256-decimal).
MOOS Operates from
OH
to
about 3200H
(0
to
36800
-decimal).
These
atea
not
avail able
to
the
user.
So
how does
one
get more memory? Well
IIII
For the Serious User
there
ate
two
alternatives.
This
first
is
using
magnetic
storage
the other is
to
increase
RAM.
Both
require modifying
present
softwate.
And
you
thought
there
was a
simple answer
...
fooled
youl
Testing
dynamic
RAM
can
be
long.
Here
are
some
hints
to
help you
gain
confidence.
On
Power
up
do a
"DU"
of
program
RAM.
For
example:
>DU
0 FF
<cr>
Addr
0000:
0010
:
0020
:
0030:
0040
:
0050:
0060
:
0070:
0080
:
0090:
OOAOI
OOBO:
OOCO:
OODO
:
OOEO:
OOFO:
o 1
00 FF
00
FF
00 FF
00
FF
00 FF
00
FF
00 FF
00
FF
00 FF
00 FF
00
FF
00 FF
00 FF
00
FF
00
FF
00
FF
2 3
00 FF
00 FF
00 FF
00
FF
00 FF
00
FF
00 FF
00
FF
00 FF
00 FF
00
FF
00
FF
00 FF
00
FF
00 FF
00 FF
4 5
00 FF
00 FF
00 FF
00 FF
00 FF
00 FF
00 FF
00 FF
00 FF
00 FF
00 FF
00
FF
00 FF
00 FF
00 FF
00 FF
6 7
00 FF
00 FF
00 FF
00
FF
00 FF
00
FF
00 FF
00 FF
00
FF
00
FF
00 FF
00 FF
00 FF
00
FF
00 FF
00 FF
8 9
ABC
D E F
00 FF 00 FF 00 FF 00 FF
00
FF
00
FF
00 FF
00
FF
00 FF 00 FF 00 FF 00 FF
00
FF
00
FF
00
FF
00
FF
00
FF
00 FF 00 FF 00 FF
00
FF
00
FF 00 FF
00
FF
00 FF 00 FF 00 FF 00 FF
00 FF 00
FF
00
FF
00
FF
00 FF 00 FF
00
FF 00 FF
00 FF
00
FF
00
FF
00
FF
00 FF 00 FF 00 FF 00 FF
00 FF 00 FF 00 FF
00
FF
00 FF 00 FF 00 FF 00 FF
00 FF 00 FF 00 FF
00
FF
00 FF 00 FF 00 FF 00 FF
00 FF 00 FF
00
FF 00 FF
This
is
the
dump
you
would see
if
you
had
Mostek 4116
RAM
chips.
The
key is
that
there
is
a
pattern
to
all
Dynamic RAM. Even
though
you may
not
see
this
ex
act
pattern,
tliere
should
be a
pattern.
For
ex
ample, a
pattern
like:
0000:
00
7F
00
OF
00
BE
02
FF 80
F8
OB
7C
00 7F 00 7F
could
indkate:
a)
A
bad
74LS241
data
buffer.
(IC
BC
or
IC
4D)
b)
Low power supply
voltages.
c) Possmly
bad
RAM
chip.
Testing
of
the
access speed, which
is
more
realistk
than
access time
can
be
done
by
using
the
TE
test.
The
TE
test
uses
many
calls
whkh
require
stack
PUSHes
and
POPs.
The
PUSH
and
POP
ate
the
fas.test
instruction
in
the
Z80
set.
Statt
by
letting
the
stack
in
the 16K
RAM
block
to
be
tested
for
speed, then
test
a 256
byte
block
of
RAM
in
the
same 16K
boundaty.
EXAMPLE:
ENO
>0000:
21
LL
HH
C3
06
EO/<cr>
>GO
0
The
LL
stands
for
lower 8
bits
of address
and
the
HH
stands
for
the
Higher 8
bits
of addr
esse
If
you
have
any
questions,
send
them
to
me via SOURCE
at
TC0284
or by
mail
at
P.O.
Box 70310,
Sunnyvale,
CA
94086.8
SORCERER'S
APPRENTICE
June
1 & July
15,
1982
C[
@
m
-
mentzer
I C
electronics
590 South Hill Boulevard. Daly City. California 94014
(415) 584-3402
***********************************
Exidy
1.1
Monitor
ROMS
2
only
S-100
10
cards,
populated
and
tested
1
only
used
Exidy
S-100
box
(Plus
Shipping)
CP/M
2.2
For
the
Exidy
with
Micropolis
hard
sector
drives
only.
(CP/M
is
a
trade-mark
of
Digital
Research)
CP/M
catalog
program,
good
for
cataloguing
your
CP/M
disks
dBASE
II
Relational
Database
Management
Program
SPELLBINDER
Word
Processor
Now
also
for
the
Exidy
77
track
soft
sectored
drives.
SPELLCHECK
Dictionary
program
to
work
with
SPELLBINDER
Some
Exidy
programs
on
tape.
call
for
listing.
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
* * * * * * * * * * * * * * * * * *
TERCENTENNIAL
TECHNICAL
Video
and
Data
Communications
Technical Services
* * * * * * * * * * * * * * * * * *
For
quality
Service
on
the
following equipment:
Exidy Sorcerer Computers -Expansion Interface &
Box
Radio Shack
•••
all
models -Zenith/Heath -Atari
Leedex, Sanyo, Electrohome.
•••••••
and
other brand monitors
Micropolis, Vista, Shugart, Percom,
MPI
•••
and other drives
Modems,
Dot Matrix Printers.
••••••••••••••••••
most
brands
Memory
upgradES and
new
Monitor 1.1
PROM's
available.
ServicES
available
on
most home
entertainment
electronics:
Solid
State
Television, foreign and
domEStic
brands.
Video Recorders---Video
Cameras--
-Video Monitors
Stereo Receivers---Audio Recorders---Rooord Changers
Video
Switchers---Time/Date
Generators---Video
Disc Systems
Video
GamES:
Atari and others.
$
45.00
$225.00
$350.00
$190.00
$
75.00
$595.00
$395.00
$295.00
For above
ServicES
(Tech. lic. #8228),
or
consultation,
call
or write:
Jack MacGrath
TERCENTENNIAL
TECHNICAL
P.O. Box 5
70
Tercentennial Drive
Billerica
MA
01821
Phone,
after
6:00
pm
EDT, (617)667-8272
(This
is
now
a
part
time businESs,
but
with YOUR help, I
hope
to
soon make
it
FULL time
and
render faster servICe!)
SORCERER'S
APPRENTICE
79
THB
OPPICB
SORCBRBR
by
Roger
Hagan
Application
Note:
Transferring
Program
Output
From
BASIC Programs
to
Word Processor
Since
I
am
particuiady
interested
in
relating
the Sorcerer's Word
Proceslor Pac
to
business uses, I
sell
a disk
full
of
utilities
and
techniques
called
"The
Word Processor Augmen-
ted",
whkh
il
an
conltant
evolution.
(Ownerl
can
eJ:change
old
editions
for new ones
free.)
A recent addition
to
that
disk is the following
technique for
capturing
thr
output
of
a
lrogram
in
BzBuic
u a screen,
an
placing
that
SCreen
into
the
Word Proceslor for incorpor
ation
into
a
teu,
II
well
u
further
dressing,
1 abell.!
etc.
The
system requires disk
capabilities
u shown here.
It
is
useful
when a
Buic
program draws a
complicated
SCreen
full
of
data,
such
al
my Spreadsheet program does, or a
graph,
al
ita
Viz-a-plot
module does.
The
technique
should
be applicable
to
anf
program, even ones
not
in
Buic,
10
long
u a method
of
triggering the
disk lave
without
affecting
the
screen
can
be
found,
and
the screen image is
made
of
Aleii symbols which the Word
Proceslor
will
accept.
Spellbinder
should
work u
well
u the Word
Proceslor Pac u the receiving system.
The
Buk:-to-WP
Truder
The
Bddy
Word Proceslor Pac is of
great
value
II
a
SCreen
editor,
and
is
the
euiest
way
to
dreas up 'program
:zut
to
be
printed.
ThlS
note
esla
one
method
to
interface
disk
Buk
program
output
with
the Word
Procalor
P
&Co
It
would apply u
well
to
a
disk-bued
word processor
like
Spellbinder.
It
will
also Ihow
bow
to
enter
a forbidden autocom-
mand
to
the
Word Processor
in
order
to
replace
non-Aleii
characters. (See
The Graphic
Fix
below.)
One
advantase
of a memory mapped
video
Ifatem
is
that
the screen
con-
tenta
at
any
momcot may be
treated
u
data
and
laved.
Thil
can
then
be
loaded
u a Word
Procalor
file
to
integtate
with other
tat.
This
is the
!lPproach I
take
with
SPRBADSHEET
in
Bzbuic.
There is now a "z"
command
to
lave
the
SCreen.
The
trick is
to
give
the
command
to
save
or
more
the
.creco
data
without
diatuming
the screen,
and
to
postpone
naming
the
file
until
after
the save
for the
lame
reuon.
In
gcoeral,
two
approacha
to
the
transfer
of screen
data
could
be
taken.
One
il
to
work with the Word
Proccalor Pac
in
place
and
move
the
Kreen
to
ita
work area,
then
load
the
WP
diak driver
program
which
loads
an·
initialized
work
atea
to
RAM
without
closing off
the
memory
file.
This
approach
amuhes
the
fiilt
16
r
aga
of
the
previoul program or
anguage
whkh
produced the
SCreen
image,
10
a
repair
version of the
prog_ram
(or
language)
must be
available
on
diak
to
reload
these
16
bottCID pages of the TPA
and
ezccute
a warm
start.
In
Bzbuic
a warm
.tart
is
Go
100 anyway, so
no
changes would have
to
be
made before
saving
16
pages of
Ezbuic
as, say,
EXBASA.COM.
This
method is
illus-
trated
at
the
end.
(See Direct Use).
80
Another approach would be
to
move
the
screen
RAM
into
the
TPA
and
save
it
under
CP/M. This means
the
Pac need
not
be
installed
while working with the
Basic
progum.
This
method is
illustrated
first.
It
is
not
necessary
to
cdt
Buic
to
save the screen. Since
we
may save
strings
of up
to
255 characters
with
Basic disk
I/O
routines,
we
need
only
fool Basic
into
thinking
that
the
screen area
of
RAM
is 8 consecutive
strings,
7 of 256 and 1 of
128
characters.
The
following code\ used
in
the
latest
verSlon of
my
SPREAD-
SHEET
program,
achieves
this.
The
ine
numbers
relate
only
to
that
program.
A.
The
main
program
initialization
must
include this:
912 EF=aH1A:FOR
I=OT07:SC_
(I)="":NEXT
This takes care
of
an
end-of-file
mark
on
the
tape
and
declaring
the
big
strings
so
that
VARPTR
can
find
them.
B.
At
the
time
of
the
call,
the
screen address values
must
be poked
into
the
variable
pointers
for size
and
location
of the SC_
strings,
and
then
the
strings
sent
to
disk. A temporary name is given
the
file
automatically
and changed after
the
file
is saved,
10
as
not
to
disturb
the
saeen,
since the
strings
are
sent
to
the
disk buffer
direcdy
from the screen
RAM.
700
FCR
1=0
10
6:V=VARP'IR(~(I»:PCKE
V,&HF'F:PCKE
V+l,&:H80:
PCKE
V+2,aHFO+I:NEXI':PCKE
V+3
,arH7F:
PCKE
V+4
,&:H80:P'CKE
V+5
,aHF7:
REM
NJN
~(0-7)
POINI'S
10
SClUlBII
RAM
IN
8 SI'RINiS
720
(PEN
''0''
,#1,
"SCREEN.WPF"
730
FCR
1=010
7:PRINI'
#l,~(I);:NElCI':PRINI'
#l,EF
740 ClCSE
#1
750 PRINI':lflPur
"NlIl1e
for
this
file";NA_
760
NA_=NA_+"
.WPF"
770
NIME
"SCREEN.WPF"
AS
NA_
780 PRINI':IflPur
"NCJW";I~:OOIO
114:RIlM
To
the
menu
choice
processor
C.
At
the end of the screen
display,
the
program is altered
to
provide for
one-
key
input
to
make a command choice. (ThlS is
not
essential
if
the cursor ends
up
somewhere other
than
at the bottom
of
the screen where a scroll could
lose
a
line
from screen
RAM,
since
it
will
be easy
to
remove the command from the screen
image once
it
is
ln
Word Processor.)
30790
amSCR
50
27
: PRINT
"Menu":
IN_=INPur_(I):OOIO
114:
REM
114
is
the
menu
choice
processor.
A
SAMPLE
SCREEN
WITH
GRAPHIC
FIX
lOI
DEC
JAN FEB
MAR
APR MAY JUoI
JUL
AUi
SBP ocr
4000
3839
3678
3517
3195
3034
2873
2712
2551
2390
2229
2068
1907
1746
.1585
1424
1263
1102
941
780
619
458
297
136
-25
•••••••••••••••••••••
4
___
4
___
4
___
4
___
4
___
4
___
4
•••••
/
/
4_4-1
............
/
......................................
.
4/
/
·
.......
1
.........................................
.
· . . . . .
..
.
........................................
.
· . . . . .
..
.
........................................
.
_9_9_9_9_9_9_9_9_9_9_9
9_1_4/
••••••••••••••••••••••••••••••••••••••••••••
Menu
1Wo
ezpense
factors:
4=rent
9=salaries.
(Clearly
it
would be easy
to
Bet rid of the
unwanted
"Menu" prompt above,
and
to
add
label.
and
a frame
if
desired.)
D.
THE
GRAPHIC
FIX
In
the
above eJ:ample,
the
SPRBADSHBET graphing module uses a Sorcerer
graphic character for the vertical
line
to
line
up
well
with the slashes. This must
be replaced by a vertical
line
from the
standard
Ascii set
to
be
handled
by a
printer
and
by the Word Processor. This
has
been done above.
When
this
chart
first
comes
on
screen, therefore,
an
unacceptable reverse video
square-O graphic is seen
in
place of the vertical
lines.
This must be removed with
a
search-and-replace.
But the graphic character
cannot
be entered
on
a command
line
--
no
reverse video
character
can
be,
including
underlined
lettersl
So the
command
line
must
be
entered from
the
Monitor,
and
the command
initiated
by a
Monitor
GO command,
as
shown
nezt.
SORCERER'S
APPRENTICE
June
1 & July 15,
1982
)
I n
This
Ascii
line,
n 100 S Iii
/I
(a)
.. ,
iI
represents
the
graphic
char
acter
to
be
replaced,
whose code
is
80H.
(The
code
for
underlined
space is 100H, 80
plus
20,
the
s,?ace
with
high
bit
set.)
Enter
the
l1ne
at
600H, WP's
command
line
buffer.
>EN 600
600:
31
30 30
53
2F
80
2F
7C
2F
mJl
XX>
CEE5
The
file
will
return
to
the
screen
with
~e
char acter
repl
aced.
Direct
UIC
The
lines
of
Basic above were
broulJht
in
from
the
program
by
loading
the
program
in
Exbasic
with
WP
Pac
in
place,
listing
the
desired
lines,
going
BYE
into
the
Monitor
and
commanding:
>MO
F080
F7FF
80F
>EN F8F
F8F:
031
>GO 0
A>DISKDRIV
This
brought
the
lines
to
the
editing
screen. They needed some
cleaning
up.
Very
often,
removing a
leading
space
at
the
top
drops
many
lines
into
alignment.
When they
were
clean,
the
rest
of
the
program
was
loaded
to
join
them
in
the
work
space
and
things
were
bloc-moved
into
place
and
resaved.
This
concludes
the
.DOC
file
on
the
Basic-to-WP
Transfer.
Next
is-
sue I
will
show how
to
merlJe
the
screens
to
create
long
-line
pnntouts
of
all
the
columns
in
a
broad
spreadsheet.
In
selling
word processing systems
to
writers,
I
find
them especially
interested
in
a method of
counting
the number
of
words
in
their
mmu~~~
~~
are
p~
~
~
word,
or
write
to
a specified
lenlJth
in
words.
It
happens
that
the
eas1est
utility
I've seen
to
do
it
is
literally
given away
as
an
extra
when
fou
purchase
Staley's
"SPELL"
spell1ng
checker
program.
It
is
a
separate
program
called
"FOG",
the
purpose of
which
is
to
show
both
word
count
and
what
proportion
is
"big
words".
With a
text
in
RAM.
one
exits
to
CPIM
and
types FOG.
and
in
a
second or two
1S
given
his
word
count
and
rel
ated
information.
The
Spell
program
itself
will
be
compared
to
SPELLCHECK
(Lexisoft's
SPELLGUARD)
in
my
next
column,
but
I
can
point
to
one
respect
in
which
it
is
unique
-
it
can
check a
Word Processor
text
in
RAM
as
well
as
one
on
disk.
so
short
letters
need
not
be
saved
first
to
be
checked.
However,
it
does require a
disk
system,
since
the
dictionary
files are
called
in
from disk with a series of disk
accesses. I
like
these two
progr
ams
enough
that
I
am
planning
to
market
a version of
the
"WP
Augmented" disk
that
includes
them. As you
will
see
nex t
issue,
there are
utilities
in
Spellcba:k
not
offered
in
Spell,
but
the
cost
is a
lot
higher
too
••
June
1 &
July
15,1982
==============================================================
THE
HAGAN
SPREADSHEET
Copyright c 1981 by Roger
Hagan
Associates.
1919 Belmont
Pl.
E.,
Seattle.
WA
98192
USA
(continued
from page
67
of
issue
4.3)
***
_____________
nLn
Move
left
one
(or
1/2)
4
col
sector
***
19599
IF
FG=l
THEN
11790
19593 SC=SC-4:IF SC<l
THEN
SC=l
10519
GOTO
10275
***
***
______________
nDn
Move
down
a
20
or
10
row
sector
---------
***
11099 IF
FG=l
THEN
11899
11993
SR=SR+SZ-1
11910
IF
SR+SZ-1>ROWS
THEN
SR=ROWS-SZ+1
11015
R=SR:CH=2+J-1
11929
GOSUB
10990
11039
GOTO
19215
***
***
_______________
nU
n
Move
up a
20
or
10
row
sector
---------
***
11500 IF
FG=l
THEN
11909
11593
SR=SR-SZ
11510 IF SR<l
THEN
SR=l
11520
GOTO
11915
11600 SC=SC+2:IF
SC+3>COLS
THEN
SC=COLS-3
11610
GOTO
19275
***
***
---------------
These
take
over
if
nXn
expand
mode
set
---
***
11709 SC=SC-2:IF SC<l
THEN
SC=l
11710
GOTO
10275
11890
SR=SR+INT(SZ/2):GOTO
11919
11999 SR=SR-INT(SZ/2):IF
SR<l
THEN
SR=l
11910
GOTO
11015
***
***
***
_______________
nTn
Tape
routine
called
for
---------------
12090
OUT
1,28
12991
FOR
1=1
TO
15:PRINT
CHR$(10):NEXT
12993
OUT
1,16
12095
PRINT:INPUT
nSave
or
Loadn;Q$
12097
IF
LEFT$(Q$,l)=nLn
THEN
12599
***
***
***
---------------
Tape
save
of
sheet
***
---
We
will
set
up a Monitor
save
of
the
entire
array
area
***
Basic
has
created
for
the
numeric
arrays.
***
12098
PRINT:PRINT:INPUT
nA
five-letter
name
for
this
sheetn;SN$
12019
PRINT:PRINTnTo
save
the
sheet
data
on
tape,
start
the
n;
12013
PRINT
nrecorder
and
~ress"
12020
INPUT
"RETURN,
or
'H
to
return
to
menu
instead.n;IN$
12939 IF
IN$="H"
THEN
120
12049
PRINT:PRINT"SAVING
DATA
••••
":
12950
VA(1)=ROWS:VA(2)=COLS:VA(3)=EX:VA(4)=SEC:VA(5)=REL
12955
DATA
83,65,32:
REM
"SA"
12957
DATA
76,79,32,49,32:
REM
"LO
1 n
12969
FOR
1=1
TO
REL:FORN=lT05:IF FUNC$(I,N)=""THEN12979
12965 FUNC(I,N)=ASC(FUNC$(I,N)):REM Convert
function
symbols
12070
NEXT
N:
REM
to
a numeric
array
12975
NEXT
I
12989
RESTORE
12955
12090
FORI=0T02:READ
A:POKE(BU+I),A:NEXT:REMnSA
"IN
CMD
LINE
12190
FOR
I=3T07:POKE
BU+I,ASC(MID$(SN$,I-2,1)):NEXT
12110
POKE
BU+8,32:POKEBU+13,32:POKE
BU+18,13
***
12129
REM
Now
SA
NAMEX
& 3
spes
are
in
cmd
line;
now
addresses
***
12130 POKE269,198:POKE261,99:DU=USR(0):REM
"ASCHEX
PUT
INn
***
***
---The
subroutine
at
108
(6CHex)
makes use
of
a Monitor
***
subroutine
at
EIE8H
to
convert
the
addresses
for
start
***
and end
of
array
area
into
the
four
bytes
Ascii
form
as
***
needed by
the
Monitor
command
line.
Then
the
Monitor's
***
SAve
command
processor
is
called
in
the
line
below.
***
12150 POKE260,56:POKE261,230:DU=USR(0):REM
"SAn
COMO
PRCSR
***
***
---------------
Call
StringSaveOn
after
spacing
tape
-----
***
***
***
***
for
***
---Note:
The
delays
are
to
allow
ample time
for
Basic'S
string
space
cleanup
operations
auring
loading.
in
case
string
space
is
nearly
full.
They
may
not
be
adequate
***
the
worst
possible
case.
(continued
on page 82)
SORCERER'S APPRENTICE
81
====
(SPREADSHEET
continued
from page
81)
12234
FOR
U=l
TO
201H'l:NEXT
12235
PRINT:PRINT"Column
and
row
names
•••
"
12240
POKE
260,186:POKE 261,0:DU=USR(0)
:REM
CMOTON
12244
POKE
260,65:POKE
261,0:DU=USR(0):REM
STRSVON
12247
FOR
U=l
TO
500:NEXT
12248
FOR
U=l
TO
100:NEXT
12250
PRINTnn:FOR
I?l
TO
COLS:IF
1=1
THEN
FOR
U=l
TO
200:NEXT
U
12255
FOR
U=l
TO
200:NEXT
12260
PRINT
CN$(I)
12275
NEXT
I
12277
FOR
U=l
TO
400:NEXT
12280
FOR
1=1
TO
ROWS:PRINT
RN$(I)
12290
FOR
U=l
TO
200:NEXT
U
12310
NEXT
I
12312
FOR
U=l
TO
200:NEXT
12318
FOR
1=1
TO
REL:FOR
N=l
TO
5:PRINT CO$(I,N)
12319
FOR
U=l
TO
50:NEXT
U
12320
NEXT
N
12325
FOR
U=l
TO
50:NEXT
12335
NEXT
I
12340
POKE
260,39:POKE 261,
224:DU=USR(0)
:REM
CMOTOFF
12345
POKE
260,75:POKE 261,00:DU=USR(0):
REM
STRSVOFF
12350 PRINT:PRINT"Tape
save
is
finished.
Menu
is
listening."
12360
INPUT
IN$
12370
GOTO
114
***
***
---------------
Tape
load
of
sheet
-----------------------
***
12500
PRINT:PRINT"To
load
data
from
tape.
press
RETURN
and
";
12503
PRINT
"start
tape,
or
press"
12510
PRINTnH
to
return
to
the
menu. ":INPUT
IN$
12520
IF
IN$="H
n
THEN
120
12525
IN$=Wft
12530 PRINT:PRINT"Loading
data
arrays
•••
"
12540
RESTORE
12057:
REM
Aim
data
pointer
at
nLO
1 "
12550
FORI=0T04:READA:POKE(BU+I),A:NEXT
12555
POKE
BU+9,13
12560
POKE260,151:POKE261,00:DU=USR(0):REM
PUT
LO
ADDR
IN
PLACE,
12580 POKE260,138:POKE261,231:DU=USR(0):REM
CALL
LO
CMD
PRCSR
12655 PRINT:PRINT"Placing
variables,
translating
functions
•••
n
***
***
--------Get
the
sheet
parameters
from
the
VAriables
array
***
12656
ROWS=VA(1):COLS=VA(2):EX=VA(3)
:SEC=VA(4):REL=VA(5)
12657 FORI=lTOREL:FORN=lT05:FUNC$(I,N)=CHR$(FUNC(I,N»:NEXT N
12658
NEXT
I
12659 PRINT:PRINT"Loading column and row names
•••
n
12660
POKE
260,186:POKE
261,0:DU=USR(0):REM
CMOTON
***
Above
in
both
routines
to
hold
baud
at
1200
for
Mon
1.0
12662
POKE
260,85:POKE 261,00:DU=USR(0):
REM
STRLDON
12665
INPUT
DM$
12680
FOR
1=1
TO
COLS
12690
INPUT
CN$(I)
12695
PRINT
"Col
ol
I "Of"
COLS
12705
PRINT
CN$(I)
12710
NEXT
12750
FOR
1=1
rro
ROWS
12755
INPUT
RN$
(I)
12760
PRINT"RoW,}
I
"of"
ROWS
12764
PRINT
RN$
(I)
12773
NEXT
12779
FOR
1=1
rro
REL:FOR
N=l
TO
5:INPUT CO$(I,N)
12780 PRINT"Constant
name
for
re1ation"I"stage
nN"of"REL"re1ations"
12782
PRINT
OO$(I,N)
12783
NEXT
N:NEXT
I
12784
POKE
260,39:POKE 261,
224:DU=USR(0)
:REM
CMOTOFF
12785
POKE
260,95:POKE 261,00:DU=USR(0):
REM
STRLDOFF
***
***
----
Trim
leading
1inefeed
off
the
strings
---------------
***
12788 FORI=lrroOOLS:CN$(I)=RIGHT$(CN$(I),LEN(CN$(I»-l):NEXT
12791 FORI=lTOROWS:RN$(I)=RIGHT$(RN$(I),LEN(RN$(I»-l):NEXT
12793
FORI=1rroREL:FORN=1T05
:IFLEN
(CO$
(I
,N»
=0THENl2795
1279400$(I,N)=RIGHT$(OO$(I,N),LEN(CO$(I,N»-1)
12795
NEXT
N
12797
NEXT
I
12800 PRINT:INPUT"Loading
completed.
Type
'M'
to
proceed.";IN$
12810
GOTO
114
***
***
---------------"P"
Turn
Printer
on
or
off
----------------
***
***
---
The poke
addresses
belOW
are
specific
to
a
48K
***
Sorcerer:
-16434,-16432,-16431.
For
32K
size
they
***
must
be,
in
the
order
below, 32718, 32720, 32721.
***
(7FCE,
7F00, 7F01)
***
12950
IF
p=0
THEN
p=1:GOTO
13000
(continued
on page
83)
82 SORCERER'S APPRENTICE
SWORD -Reviewed
by
Richard
Stone
would
like
to
tell
you
about
a
very
interesting
cassette-
based
Word
Processor
program
for
the
Sorcerer.
rece~tly
purchased
an
Epson
MX80
pnnter
for use
with
my
computer. After hooking
it
up
and
writing
some drivers for
it,
of
course
my
attention
shifted
to
word
proces-
sing.
Since for me
it
had
been a
disk system
OR
a
printer,
I
couldn't
use
any
of
the
wonderful
sounding
disk-based
programs
like
Spellbinder.
So,
after
some
looking
around,
I
found
I
had
these
options:
write
a
system for
myself;
get S
WORD
from
NortbAmerican
Software
(about.
~30);
get
VISI-WORD
from
Quality
Soft-
ware
(approx.
~60);
or
get
the
Word
Processing Pac
(~180?).
Being some-
what
lazy,
frugal
and
interested
in
seeinll
state
of
the
competition
(for
if
I
wrtte
my
own),
I decided
to
try
S WORD.
I'm
glact I did.
I
sent
in
my
check
and
waited.
In
their
ad,
they promised delivery
within
ten
days.
In
my
case,
it
took
a
little
bit
longer.
They were
so
apologetic
about
the
delay
that
they
gave me a free
surprise.
In
truth,
they were having
duplication
hardware
problems
which caused the
delay,
but
their
behavior showed they
really
care
for
their customers. When
it
did
arrive,
the
very
professional
packaging
job
was immediately evident. Many
companies have
not
yet
learned
that
the
packaging
is very
important
to
aid customer
confidence.
(If
the
packaging
is
amateurish,
what
about
the
contents?)
The
documen
tation
is
perhaps
the
best
I've seen
in
microcomputer
products.
There
is
an
introduction
section
which
tells
how
to
load
and
start
the
program,
then
there
are
good
(clear
and
understandable)
descriptions
of
how
to
use
the
various
functIons.
In
the
end, you
are
led
through
a I?,ractice session
on
a
sample
text
file,
also
included
on
the
cassette.
There
are
also
instructions
on
how
to
reconfigure
SWORD for a
custom system. As
an
ex ample of
what
SWORD
can
do,
the
whole
instruction
manual
was
written
with
SWORD, as was this
article.
The
program
can
input
or
edit
text,
save
or
load
tex t files
to/from
t ape,
print
the tex
t
on
the
printer
or
on
the
screen
(formatted
for
caW.
of
those),
or
change
the
output
environ-
ment
(more
on
this
later).
All
commands are
single
keystroke
res-
ponses'
usually
to
a
m~nu.
You
may
almost
forget
where
the
Return
key 18
located.
In
the
insert/edit
mode, you
type
continuously,
with
the
text
wrapping
around
to
the
nex t
line.
Graphic
characters
are used
to
tell
the
output
processor
when
to
indent
(left
or
both),
start
new
lines,
paragraphs,
pages,
Justify
right
and/or
left,
change
the
spacing,
center
or
right
adjust
lines.
Control
characters
tell
when
to
insert
or
delete
characters,
move
blocks
of
text,
or
move ahead or
back
in
the
file,
or move
the
cursor
(with
the
arrows).
The
commands are
consistent
(control
C or E does
the
same
thing
in
any
mode, which is
important
to
know).
There
is
an
interesting
feature
June
1 & July
15,
1982
cc
cc
)
called
the
environment.
This
has
separate
lists
of
output
parameters
for
the
video or
printer
outputs.
You
can
specify
the
widths of
the
margins
and
lines,
the
lengths
of
pages,
the
choice
of
page numbering or a special
page
header.
You
can
program
keys
to
have special ASCII codes, for easy
printer
control,
etc.
You
can
even
specify
the
driver address of
that
output
function.
All of
the
environ-
ment
p'arameters are saved
with
rour
text
files
on
tape,
so you
can
rec
aim
any
special features 1
ater.
SWORD comes
configured
for
the
Centronics
output
routine.
However,
there
is
space reserved
inside
SWORD
for
a custom driver. This allows
any
printer
to
be
used
with
this
program.
So, I
put
my
MX80
driver
in
this
space
and
changed
the
driver address
parameters,
and
saved
my
new
customized S
WORD
on
tape.
(There
are
instructions
for
all
of this
in
the
manual
I )
Now
LOGing
one
file
gets
me a
personalized
word processor.
S
WORD
can
be saved
on
disk
(starts
at
0100),
and
can
run
in
an
8K
machine.
I
am
impressed
and
happy with
this
product.
It
seems
to
have very
few
flaws.
I have found
only
one
bug
(if
you
forget
to
tell
it
where
to
move a
text
block
to,
it
will
loop
forever),
and
only
one
inconvenience
(there
should
be a
string
search
and
replace
command).
In
the
inser/edit
mode,
the
tex t
on
the
screen
is
very
dense, making
it
easy
to
get
lost.
I
thought
that
would
be
a
limiting
flaw,
yet
I
find
myself
writing
longer
and
longer
documents.
In
summary, I
think
SWORD is
an
excellent
product.
It
does a
lot
very
well,
with
few
problems,
and
at
a
low
price
too.
I recommend
it
to
anyone.
My
compliments
to
author
R.L.
Henne,
and
distributor
N orthAmerican
Software.O
PRINT
'BM
WID
E
It
is
possible
to
print
wider
than
the
63
character
width
allowed
with
the
Basic
ROM
Pac.
To
do
this,
simply
POKE
(322,xx)
where
xx
is
the
line
length.
The same
can
be achieved
in
MBasic by
POKE(l929,xx).0
TAPE
OPERATION
INDICATOR
LIGHT
by
David Cooke
Here
is
a
helpful
hint
that
I've
used
with
a
lot
of success
in
loading
and
saving
tapes.
Get a
small
5V
LED
from Radio
Shack
(about
_2
for
3)
and
wire
it
in
parallel
with
the
one
you
can
see
through
the
grill
in
back.
Next,
drill
a
small
hole
and
install
the
LED
just
behind
the
ESC key
in
the
dark
brown
overl ay.
This
will
give you
an
excelle~t
indicator
of
tape
operation
that
is
m ore
convenient
than
peering
through
the
grill.
After
watching
it
a
while,
you'll
be surprised how easy
it
is
to
tell
how
arrays
are
loading,
when
its
found
the
header, etc. Also,
the
FI
(FILE)
command
in
the
Monitor
does
the
same CRC check when
reading
a
file
as
when
it
is
loaded.
It
is
easy
to
verify a good CSAVE
without
dumping
your
program.O
June
1 &
July
15,
1982
(SPREADSHEET
continued
from page 82)
12969
IF
P=l
THEN
P=9:GOTO
13959
13999 IF LEFT$(Q$,l)=IY"THEN
FX=l
13995
OUT
9,28:INPUT
nIndent
19 from
present
marginn;Q$
13997
IF
FX=lTHEN
OUT9,28:PRINTTI$SPC(69-LEN(TI$»;:FX=9
13919
POKE
-16434,9:
REM
Baud 399
(BFCE)
13929
POKE
-16432,39:
REM
SE
0=39,
addr
of
SRLDVR.
For Cen,
13939
POKE
-16431,9:
REM
put
CENDRV
P9ffi
in
DATA
lines
949-5
***
with
two
leading
and
three
trai1~ng
zeros
to
match
length
***
of
serial
driver
and
placement
of
video
echo
bytes.
13935
IF
LEFT$(Q$,l)
<>
"Y"
THEN
13040
13038
PRINT
SPC(10)
CHR$(27)
"9n:
REM
ESC
9
sets
left
margin
***
(on
some
printers
like
Diablo
and CItoh)
13040
RETURN
***
---------------
Turn
printer
off
-------------------------
13959
POKE
-16432,249:
REM
SE
O=V
(E9F9,equ
E91B)
13060
POKE
-16431,233
13080
POKE
-16434,64:REM
BAUD
1290
13090
RETURN
***
***
***
***
***
***
_______________
nFn
Display
formulas
----------------------
---
Starts
with
clear
lower
screen
routine
used
also
by
amorization
program.
14000
OUT
0,20:FOR
1=1
TO
9:PRINT SPC(62) "
n:NEXT
14002
OUT
0,20:FORN=0T062:PRINTCHR$(184);:NEXT:PRINT
14003 IF IN$=nJ n
THEN
RETURN
14004
OUT
0,21
14005
FOR
A=l
TO
REL:B=l
:REM
A=RELi,
B=STAGE
14010
IFCN(A,B)=0ANDDC(A,B)=0ANDOC(A+1)=9ANDOC(A+2)=9THEN14259
***
***
***
***
If
not
constant
and no 2nd
operand
in
this
relation
and no
or
zero
column
address
for
next
two
results
then
stop.
14920
GOSUB
700
14040
GOSUB
730
14059 IF EI(A,B)=0
THEN
PRINT
n.":GOTO 14250
14055
FOR
B=2
TO
5
14060
IF
CN(A,B)=0
AND
DC(A,B)=0
THEN
14250
14070
GOSUB
700
14080
PRINT
FUNC$(A,B)
FAC$;
14090
IF
EI(A,B)=0
THEN
PRINT
".n:GOTO 14250
14100
NEXT
B
14250
NEXT
A
14255
IF
FRA(1)=0
THEN
PRINT:PRINTnNo
addition
specified.n:PRINT:GOTO 14360
1~260
PRINTnAdd
rowsn;
14270
FOR
8=1
TO
3
14280
IF
FRA(S)=0
THEN
14300
14290
PRINT
FRA(S)nton
LRA(8)
"onto
row
n
STT(S)
CHR$(l)n;n;
14300
NEXT
14310
PRINT:PRINT
nexc
1uding
n;
14320
IF
EX=0
THEN
PRINT
nnonen;:GOTO 14350
14330
FOR
8=1
TO
EX:PRINT
n,"XC(S)nNEXT
14350 PRINTn.n:PRINT:PRINT
14360 PRINTnReview
the
formulas.
If
any
derived
values
(left
of
=)";
14363
PRINT
n
are
used
n
14370
PRINT
"as
arguments
in
another
formula
(right
of
=),
n;
14373
PRINT
"the
relation
whichn
14380
PRINT
nderives
the
value
must
occur
ahead
of
that
n;
14383
PRINT
nwhich
uses
it.
(Menu)n
14390
INPUT
IN$
14400
GOTO
114
15000
REM
-------------------
Delete
a
formula
----------------
15005
PRINTCHR$(12)
15907 A=l
15010
INPUT"Nurnber
of
the
formula
to
be
de1eted
n
;DL
15020
FOR
I=DL
TO
REL
15023
IF
A=l
THEN
15030
15025
FOR
I=REL+1TODL+1
STEP-1
15030 OC(I)=OC(I+A):OW(I)=OW(I+A):DJ(I)=DJ(I+A):DK(I)=DK(I+A)
15040
FOR
N=l
TO
5:CN(I,N)=CN(I+A,N):CO$(I,N)=CO$(I+A,N)
15950 DC(I,N)=DC(I+A,N):DR(I,N)=DR(I+A,N) :
FUNC$
(I,N)
=FUNC$
(I+A,N)
15060 EI(I,N)=EI(I+A,N):NEXT
N:NEXT
I
15070
IF
A=lTHENREL=REL-1:GOTO
15085
15080
REL=REL+1
15085
GOTO
14000
16000
REM
-------------------
Insert
a
formula
----------------
16005
PRINT
CHR$(12)
16010
INPUT"At
what
number
will
te
list
be opened
for
insertionn;DL
16020
PRINT:PRINTnOn
seeing
formula
#nd1
n
repeated
as
#"DL+1
n,
command
'R
'
and"
16030 PRINTnspecify #nDLnfor
revision,
then
enter
the
Relationship
to
insert.
II
16040
A=:l:GOTO
15025
***
***
(continued
on page 84)
SORCERER'S APPRENTICE 83
(SPREADSHEET
continued
from page
83)
***
_______________
nRn
Define
relationships
section
----------
***
28888
IF
OC(REL)=8
THEN
28818
28885
REL=REL+l
28818 IF
P=8
THEN
PRINT
CHR$(12)
28812
O$="E"
28828 PRINTnRelationships
are
entered
in
the
form:"
28848
PRINT:PRINT
"Destination
value
at
(column,
row)
is
";
28843
PRINT
"the
result
of
Data
In
28858 PRINTn(column,
row)
affected
by
either
a Constant or
";
28853
PRINTnother Data,
via"
28868
PRINT"a
Function (* / + or
-).
If
the
result
of
this
n;
28863 PRINTncalculation
is"
28878
PRINTnan
Intermediate
element
rather
than
the
final
n;
28873 PRINT"Entr¥
for
then
28888 PRINT"dest1nation
position,
queries
will
prompt
";
28883 PRINT"the
next
constants,"
28898 PRINT"data, and
functions
needed
to
complete
the
n;
28893 PRINT"formula. n
28128
PRINT:PRINT"The
relationshi~s
are
numbered
as
you
";
28123 PRINTnenter them, and
to
be
28138
PRINT
"changed must be
called
by
number and
n;
28133 PRINT"re-entered
completely."
.
28148
PRINT:PRINT
a»~»~»~»~
Do
not
enter
straight
columnar
";
28143
PRINTnor
row
addition
in"
28158
PRINT
nthis
section.
Later
queries
will
offer
that
";
28153 PRINT"oftion.":PRINT
28168
PRINT
n Enter column, row' wants numbers
with
a n,
28161
PRINT"comma
between them.":PRINT
28163
PRINT
nDerived
values
used
as
arguments must be n;
28164 PRINT"derived
before
use.
n
28165
PRINT:PRINTnThis
will
be
Relationship
i"REL".n:PRINT
28168
O$="N"
28178
PRINT
"You
will
be.,asked column and
row
numbers
for
n;
28173 PRINTnthe
destination
n
28174
PRINT
"value and
all
the
argument
values.
You
may
now:"
28188
PRINT
n
Delete
a
relationship
formula,n
28181
PRINT
n
Insert
a formul,
reV1ew
the
Sheet,"
28182
PRINT
n
enter
Column
addition
parameters
onl¥,n
28183
PRINT"
pass
on
to
Enter
the
next
relationsh1p,n
28184
PRINT"
or
enter
the
NUMBER
of
a
relationship
to
n;
28185
INPUT"be
re-defined.
";0$
28193
IF
LEFT$(O$,l)="In
THEN
16885
28194 IF LEFT$(O$,l)=nS"
THEN
GOSUB
2838
28195
IF
LEFT$(O$,l)="Cn
THEN
GOTO
28528
28196
IF
LEFT$(O$,l)="D"
THEN
15885
28197
IF
O$a
n
THEN
O$="E"
28198 IF
ASC(O$)
<58
THEN
RH=REL:REL=VAL(0$):N=8
28199
PRINT:PRINT
'
28288 INPUT"Destination:
(enter
column,
row)
n;
OC(REL),
OW(REL)
28285
PRINT:CN
a
8:N=8
28218 INPUT"equals Data 1
(enter
column,
row)
n;OJ (REL),
DK
(REL)
28214
PRINT
28215
N=N+1
28238 INPUTnacted on br a
Constant,
or
other
Data (choose)
·;0$
28231
PRINT
28239 IF
O$="D"
THEN
CN(REL,N)=8:GOTO
28258:REM---Constant
fctr
28248 PRINTnConstant (express a
percentage
as
decimal:
18
as
l)n;
28241
INPUT
CN(REL,N):PRINT
28242
INPUT
"Name
of
constant";
CO$(REL,N)
28244
GO'l'O
28268:
REM
---
Data
factor
28258
PRINT
"Where
is
the
other
data
(enter
column,
row)
n;
28253
INPUT
DC(REL
N)
,DR(REL,N)
28268
PRINT:PRINT
'Enter
the
function
by which
the
latter
n;
28263
PRINT
"data
or
constant
acts
on"
28Z78
INPUT
"data
1.
*,
/ +,
or
-",FUNC$(REL,N)
28288
PRINT:INPUT
nls
result
the
Entry
or
an Intermediaten;O$
28488
IF
O$=nI"
THEN
EI(REL,N)=l:GOTO
28418
28485 EI(REL,N) =
8:GOTO
28458
.
28418
PRINT:PRINT
nThe
intermediate
value
in
the
destination
n;
28415
PRINT"
slot
is
now
to
ben:
GOTO
28215
28458
PRINT:PRINT
nTo
enter
more
relationships,
type
'M'.
n,
28453
PRINT"
~
define
co1umn
n
28468
PRINT
"addition,
t~
'C'.
To
return
to
";
28463
PRINT
"sheet,
type
S'.n
28478
PRINT"You
may
always
return
to
define
more
relationships.n
28472
IF
RH<>8
THEN
REL=RH:
M=8
28473 INPUT"
n;O$
28488
IF
0i-"M"
THEN
28888
28588 IF 0 ="S"
THEN
IN$="Hn:GOTO
128
28585
IF
0
a"·
THEN
114
28518
IF
O$<>nC"
THEN
PRINT
nRe-enter your choice.n:GOTO
28458
***
***
---------------
Column
addition
parameters
section
-------
***
28528
SEC=l:PRINT:PRINT
nThe
column
may
be
totaled
n;
28523
PRINT
n
entire1y,
with
defined
exceptions,"
(continued on page
85)
84
SORCERER'S
APPRENTICE
THE
VBNBZUBLAN
CONNECTION
by Roger
Pfeil
Thank
you very much
for
your
fine
Newsletter.
It
is
very
difficult
to
get
Sorcerer-related
information
here
in
Venezuel
a.
The
printer
-drivers
and
Data-save
routines,
which I
found
there,
have
eliminated
hours
of
headaches. I
just
wish I
had
had
all
this
information
available
right
after
I
bought
my Sorcerer
in
1979.
Let
me
just
share
some
of
my
own
findings
with
you,
which
might
be
useful
for
other
readers:
Serial
Iaterface
Cable
I
bought
both
my
parallel
and
serial
interface
cables
from EXIDY.
There
was
no
problem
with
the
parallel
cable:
I
plugged
it
into
the
computer
and
an
MX-80
printer,
pressed
the
, command of my
WP
Pac,
and
off
she
went.
Not
so
with
the
serial
cable:
Ag
ain
I
plugged
in
both
ends
connecting
the
Sorcerer
with
my Ander
son
-
Jacobson
printer
and
tried
the
print
command:
- - -
nothing
I
Thinking
back, I
am
thankful
that
neither
the
typewriter
nor
the
computer blew
up.
The
serial
cable
consists
of a
fl
at
25-wire
cable
and
a
printed
circuit
board
with
outlets
for
tape
saving
and
recording,
including
remote
con-
trois,
as
well
as a 25
pin
outlet
for
a
RS-232
device.
Pint
I
found
out
that
I
had
to
invert
wires
No.
2
and
3.
Still
nothing
I
Sccoudl,
checking
the
wire
connec-
tions
of the
Serial
Cable,
I
noticed
that
the
25-line
flat
cable,
which
comes
with
EXIDY's
Serial
Connec-
tion
had
been
placed
into
the
plug
inverted:
Pin
No.1 became
No.l3
at
the
other
end.
I opened
up
the
plug,
turned
the
flat
cable
over
and
inserted
it
ag
ain.
Now
the
printer
worked
with
the
WP
Pac,
but
not
with
BASIC
programs.
Thirdl"
for
some
reason
beyond
my
comprehension,
the
ODS
command
does
not
work
with
the
serial
port,
like
the
O=L
command
does
with
the
parallel
output.
I
would
expect
EXIDY
to
mention
this
fact
ill
their
Guided
Tour
of
'erloaal
Computins
and
provide a
Serial
Driver
in
this
Manual
for
the
Sorcerer.
Finally
I
found
the
information
in
the
Ter:hai-
cal
Manual,
but
still
had
to
modify
the
Machine
Language
program
to
include
a
delay,
which
took
me,
the
beginning
computerist,
many
other
hours
of
frustr
ating
work.
POIUtbly, I
hooked
up
my
two
tape
recorders
to
the
respective
outlets
on
the
l'rintcd
circuit
board
of
EXIDY's
Serial
Cable.
After
typing
CSAVE
and
RETURN, I or
rather
EXIDY
really
blew
it.
The
tape
recorder
quit
working
completely
(a
fuse
had
blown)
and
the
Sorcerer refused
to
SAVE
any
more
text
(the
transistor
of
the
Sorcerer's
Cassette
ou~ut
had
been
broken).
The
problem
IS
that
EXIDY
has
interconnected
all
Ground
and
Shield
wires
on
the
printed
board,
even
though
they
warn
in
the
Tcdmicd
Manual
(p.36):
"The
Mic
2
shield
must
be
completely
insulated
so
June
1
III
July
15,
1982
cc
cc-
@
that
it
cannot
possibly
touch
any
of
the
other
shields."
My
own problem
was simil
ar,
even
though
I was
working
only
with mike 1:
The
ground
of
the
motor
control
of
my
Sony
recorder
(TC-
860) is differen t
from
the
mike-shidd.
Shorting
the
two caused
the
trouble.
In
summation:
Do
not
waste
your
$98.-
on
a piece
of
equipment
that
is
so
poorly
done.
For
less
than
$20.-
a
friend
with
a
soldering
iron
could
fix
you a
better
cable
following
the
schematics
on
pages
35-36
of
the
Technical
Manual.
Graphka
With Word
Procasor
The
ca.Pability of the Sorcerer
~o
use
forelgn
letters
was
my
maln
reason
for
purchasing
this
computer,
since I
am
a Hebrew teacher
at
an
evangdical
Seminary. However,
the
WP
Pac
rdoads
the
graphil:s
area
even
if
it
is
entered
from
the
Monitor
with
a
warm-start
using
"PP"
or
"GO
C003".
One
way of avoiding
the
rdoad
is
to
re-enter
the
WP
through
the
back-
door.
I
am
using
the
end of
the
Y-
table
(DA70)
for
this
purpose:
Enter
the
Monitor
with
the X
Command.
Note
the
location
of
the
Shift-
Graphic
characters
by
punching
the
corresponding
keys.
Note:
The
letters
are
in
alphabetical,
not
in
QWERTY
order.
Load your
letters
into
the
corres-
ponding
location.
GO
DA70
Write your
letter,
backspace
and
underline.
The
graphic char acter
will
appear
on
the
screen
instead
of
the
black-on-white
letter.
This
procedure
will
only
display
graphic or
foreign
characters
on
the
screen.
The
output
to
the
printer
will
still
be
the
underlined
original
letter,
unless
a special
~rinter
-driver
is
used.
Perhaps somebody
could
devdop
such a driver.
It
would
have
to
take
a
letter
and
place
it
into
a
buffer.
Then
it
would
check
the
next
letter,
to
find
out
whether
it
is a
back-space.
If
it
is,
it
would
eliminate
the
backspace
and
the
following
underline
character
and
enter
the
first
letter
into
a special
subroutine,
whereby
it
would
enter
the
printer
into
a
dot
-gr
aphics mode
and
send
the
5x8
code for
the
foreign
letter
from a
look-up
table.
Has
anyone
done
anything
similar
to
this
yet?
RAM
Breakdown
The
other
day
my
Sorcerer
got
stuck
in
the
middle
of a
program.
No
more
input
from
the
keyboard.
I
switched
the
machine
off
and
on
ag
ain.
The
first
two
letters
of
the
sign-on
could
be
seen,
.then
eva;y-
thing
was
stuck
agun.
PreSSing
RES ET sometimes produced some
interesting
gr aphics.
Removing the BASIC Pac did
not
(continued
on
page
86)
June
1 & July
15,
1982
(SPREADSHEET
continued
from page
84)
2115311
PRINT
"or
divided
into
two
or
three
subtotals
which
";
211533
PRINT"may
or
may
not
be"
2115411
PRINT
"combined
via
a
'relationship'.
If
you
do
not
";
211543
PRINT"wish
to
divide
the"
2115511
PRINT
"column, you
will
call
it
all
'Section
1" and
";
211553
PRINT"~SS
the
remaining"
211555
PRINT
queries.
";
2115611
PRINT
'~hat
is
the
first
and
last
row
to
be added
in"
211565
FRA(SEC)=II
2115711
PRINT
nSection"SEC"?
(Enter
first,
last
row";
211573
PRINT"numbers.)
(You
may"
2115811
PRINT"exclude
selected
rows
next.
Pass
with
a comma.)n;
211581
INPUT
FRA(SEC).
LRA(SEC)
211583
IF
FRA(SEC)=II
THEN
21161111
211585
PRINT:INPUT
"On
which
row
will
total
appear";STT(SEC)
2115911
SEC=SEC+l:IF
SEC<4
THEN
2115611
21161111
EX=II:PRINT
2116111
PRINT
nHow
many
rows
altogether
will
you
exclude
from
";
20611
INPUT
naddition";EX
20615
IF
EX=0
THEN
20680
20620
PRINT:PRINT
nWhich
rows
are
to
be
excluded
from
";
20623 PRINT"column
addition?
(If"
2116311
PRINT
"none,
pass.)";
20640
FOR
1=1
TO
EX:
INPUT
XC(I):NEXT
20650
PRINT:PRINT
nyou
chose rows";:FOR
1=0
TO
EX
20653
PRINT
XC(I);:NEXT:PRINT"
OK?"
20660
INPUT
Q$
20670
IF
LEFT$(Q$,l)="N"
THEN
20600
20680 PRINT:PRINT"All columns
will
be
added.
There
is
no
";
20683 PRINTnprovision
for
non-A "
20690 PRINT"add columns.
Now
you
may
define
more
Relationships
20700 PRINT"or
make
any
other
menu
choice
including
Kalkulate."
20705
INPUT
IN$
20710
GOTO
114
***
***
---------------"K"
Kalculations
section
------------------
***
***
***
***
---
Each column
is
calculated
4
times,
with
section
addition
between
each
calCUlation.
22000 C=0:K=0:Q$="":REM
300=calculation,
500=addition
22010
OUT
1,29:PRINTn
Figuring
columnnC+ln
•••
n;:GOSUB
300
22110
SEC=l
22120 V(C+l,STT(SEC»=0
22130
GOSUB
500:REM
22150
GOSUB
300:REM
22160 SEC=2:IF STT(SEC)=0
THEN
22227
22165 V(C+l,STT(SEC»=0
22170
GOSUB
500:REM
22180
GOSUB
300:REM
22190 SEC=3:IF STT(SEC)=0
THEN
22227
22200 V(C+l,STT(SEC»=0
22210
GOSUB
500:REM
22220
GO
SUB
300:REM
22225
GOSUB
10000:0UT 1,27:REM
22227
IF
C+l=COLS
THEN
22250
22228
IF
K=l
THEN
22240
Add
first
section
Calculate
2nd time
Add
second
section
Calculate
3rd
time
Add
third
section
Calculate
4th
time
Write
sheet
w/
results
22230
INPUT
n do Next
col,
All
cols,
or
Stop";Q$
22235
IF
LEFT$(Q$,l)=nA"
THEN
K=l:Q$=nN
n
22240
IF
LEFT$(Q$,l)=nN"
THEN
C=C+l:GOTO
22010
22250
IN$=nMn:GOTO
120:REM
Write
the
sheet
with
move
options.
***
***
***
***
***
***
***
***
---------------"
n
Clear
out
all
values,
keep
sheet
------
----
This
is
not
given
a
command
letter
because
it
is
dangerous.
To
use
it,
one must
break
the
program
and Goto 30000.
It
is
used
to
save
a
blank
sheet
with
its
labels
and
formulas,
ready
for
re-use.
30000
FOR
1=1
TO
COLS:FOR
N=l
TO
ROWS:V(I,N)=0:NEXT
N
30003
NEXT
1:IN$=nn:GOTO 114
***
*** _______________ nJ"
Amortization
calculation
--------------
***
30050 INPUTnEnter amount, term
(months),
&
an.
interest.";Pl,MO,A
30060 A2=A/100/l2:P2=Pl*(A2*(1+A2)MO)/«(1+A2)MO)-l)
30070 IF(P2-(100*P2-INT(100*P2»)<.5THENP2=INT(100*P2)/100:GOT030090
30080 P2=(INT(100*P2)+l)/100
30090 PRINTnMonthly payment
is
$"P2n.":INPUT
IN$:GOTO
114
***
***
---------------"S"
Set
or
clear
row
totals
---------------
***
30150
IF
P=0
THEN
PRINT
CHR$(12)
30160
IF
TC<>0
THEN
30250
30200
INPUT
"Which column
is
for
row
totals";TC
30205
IF
TC>13
THEN
PRINT
nToo
high.
":GOTO
30200
(continued
on page
86)
SORCERER'S APPRENTICE 85
(SPREADSHEET
continued
from page
85)
38286 IF
TC>COLS+1
THEN
PRINT
"Too
high.n:GOTO 30200
38287
CD=COLS:IF
TC>COLS
THEN
COLS=COLS+1
38289
CN$(8)=CN$(TC):CN$(TC)=nROW
TOTAL
n
38218
FOR
R=l
TO
ROWS:V(8,R)=V(TC,R):V(TC,R)=0
38212
FOR
C=1
TO
TC-1:V(TC,R)
=V(TC,R)
+V(C,R)
:NEXT
C
38215
NEXT
R
38228
IN$=nM·:GOTO
114
***
---------------
Clear
the
totals
column,
restore
original
38258
CN$(TC)=CN$(8):FOR
R=l
TO
ROWS:V(TC,R)=V(8,R):NEXT
38255 IF
COLS<>CO
THEN
COLS=COLS-l
38268
TC=8:PRINT
38265 INPUT"Tota1s column
erased.
Do
you want a
row
totals
columnn
;Q$
38278 PRINT:IF LEFT$(Q$,l)="Y"
THEN
38288
38275
IN$="M":GOTO
120
***
***
-----------"V"
Plot
a graph
section
***
38588
IF
P=8
THEN
PRINTCHR$
(12)
38585 PRINT:INPUT"Print graph
when
donen;Q$
38518
PRINT
30520 PRINT"Tit1e
for
graph (appears
at
bottom,
68
ch.
max.)
":
INPU'l"l'I$
30540 PRINT:INPUT"P10t
how
many
rows (max.
6)
n;PA
38550
PRINT:PRINTaWhich
rows
r by number (use
n8
n ro
recall
them)n;
30560
FOR
1=1
~
PA:INPUTP(I}:IF
P(I)=8
THEN
IN$="M":GOTO
128
38570
NEXT
385888=V(1,P(1»:L=V(1,P(1»
38598
FOR
1=1
~
PA:FOR
N=l
~
COLS:IF
V(N,P(I»>H
THEN
H=V(N,P(I»
38688
IF
V(N,P(I»<L
THEN
L=V(N,P(I»
38618
NEXT
N
38628
NEXT
I .
38638 IN=INT«H-L)/25)+1
38648 L$="":PRINT:INPUTnConnecting
lines
n;L$
38658 IF
P=8
THEN
PRINTCHR$
(12)
30668
PRINT
TAB(18);
38665
FOR
1=1
~
13
38667 IFMID$(CN$(I),4,1)=,,)nTHENPRINTMID$(CN$(I),5,3)n
";:NEXT:GOTO
38688
38678 PRIN1MID$(CN$(I),4,3)n
n;:NEXT
38680
PRINT
38698
FOR
N=8
~
25:IF
N/5=INT(N/5)THENPRINTH-IN*N
TAB(18)DT$:GOTO
38718
38788
PRINTH-IN*N
30710
NEXT
387
28
PRINT:
PRINTTI$
38738
FOR
1=1
~
PA:FOR
N=l
~
COLS
38748 RC(N)=INT«(H-V(N,P(I»)/IN)+.5)+1:REM
••
1 IF
ROW
2 IS
TOP
38745 RD(N)=INT«(H-V(N+1,P(I»)/IN)+.5)+1
38750
OUT
N*4+6,RC(N):PRINTST.R$(P(I».
38757
NEXT
N:
IF LEFT$(L$,l)
=nNn
THEN
38768
38758
FORN=l~LS-
1:GOSUB888:OUTN*4+8,RC(N):PRINTJA$;JB$;JC$;JD$;JE$
30768 .
IFP(I»9TBENOOTN*4+6.RC(N):PRINTRIGHT$(STR$(P(I»,LEN(STR$(P(I»)-1)
38764
NEXT
N
38768
NEXT
I
38778
IF
LEFT$(Q$,l)=-yn
THEN
38888
38798
Q$="":OUT
58,27:INPUT"Menu";IN$:GO~
114
***
----
Before
printing,
cancel
video
echo
in
driver.
38882
IF
PEEK
(38)
=8
THEN
PRINT"
n;
:REM
ADJUST
PRINTOUT
***
If
skew observed on
printing
screen
dump
of
plot,
adjust
***
the
top
line
of
spaces.
Four
are
lost
with
some
printers.
*** Line 38882
senses
presence
of
Centronics
driver
and adds
***
spaces
to
compensate,
since
the
problem was observed on a
***
parallel
printer.
38885
FORI=-3968~-2849:IF
PEEK(I)=128
THEN
PRINT
nln;:NEXT
38818
PRINTCHR$(PEEK(I»l!NEXT:PRINT:
38828
POKE33
i28S:POKE34,27:POKE35,224
38840
GOSUB
2958:GOTO
38798
***
***
***
***
***
***
***
***
***
***
0008
8001
0002
86
For a
Centronics-type
parallel
printer,
alter
the
data
lines
as
follows:
948
DATA
8,8,245,285,27,224,254,18,48,28,245,219,255,283,
127
,32
942
DATA
258,241,246,128,211,255,238,127,211,255,246,128
945
DATA
211,255,241,281,8,8,8
If
printer
needs a
linefeed
sent
by
the
routine,
convert
seventh
thro~gh
tenth
bytes
to
zeroes.
E5
47
CD
E8 E9
DISASSEMBLY
OF
ZERO
PAGE
PUSH
HL
LD
B,A
CALL
E9E8
CURSOR
ADDRESSING
(concluded on page 87)
SORCERER'S
APPRENTICE
(VENEZUELAN
con
t'd
from
p.
85)
help
either.
Only
a
dash
showed up,
no
input
accepted. However,
the
WP
Pac
worked
almost
fine,
as
long
as I
did
not
go
into
the
Monitor.
Text
returned
from the H Command
changed
somewhat.
Since
I
could
not
go
into
the
Monitor
I
could
not
do
any
memory
test.
Fortunately,
I
had
just
received
a set of
RAM
Chips
for
a memory
expansion.
I
exchanged
the
chips
and
eureka
it
worked I
In
my
case,
some of
the
RAM
chips
in
the
upper
part
of
memory
had
broken
down.
Since
the
computer
could
not
ser up
its
stacks,
it
did
not
start
properly.
A
broken-down
RAM
chip
in
the
lower
part
of
the
memory
will
allow
the
Monitor
or
the
BASIC
Pac
to
start,
but
not
the
WP
Pac.
Since
the
RAMs
of
the
stack
are
used a
lot,
I
would
expect
them
to
break
down
first.
Have
an
ex
tra
set
of
RAMs
on
hand
(they
are
only
$16
now for
the
set).
If
your
computer
stops
working
like
mine,
try
exchang-
ing
your
RAM
chips,
8
at
a
time.
It
may save
you
an
expensive
repair
bill
and
some
valuable
tune
out.
Automatic
Paragraph
Composer
Copyright
1982: Roger
Pfeil
Apdo. 4713,
Maracay,
Venezuela
IThe
following
macro
will
automati-
cally
compose
letters
for
you
from
numbered
paragraphs.
2Type
Graphic-6
followed
by the
numbers
1
to
O.
lType
your
paragraph.
It
can
be
of
any
length,
limited
only
by
the
memory of
your
computer.
4Type
a
Graphic-9
followed
by a
RETURN
on
the
next
line.
5Repeat
procedure
from
No.1,
until
all
paragraphs
are
typed.
You
can
use
up
to
17
paragraphs,
coded
as
men
tioned
in
No.2.
6Add
the
following
line
after
the
Graphic-9
of
your
last
paragraph:
"Graphic-6
X
Graphic-6
-
(Dash)
Graphic-6
-
Graphic-6
-
Graphic-6
-
Graphic-9
RETURN"
(without
spaces,
as shown
in
the
last
paragraph
here).
Mfter
composing
all
paragraphs,
obtain
a
printout,
which
will
serve
for
your
reference.
Since
the
printer
ignores
the
Graphic-6
and
the
following
letter,
you have
to
write
in
the
number
of
the
paragraph
by
hand.
8Now
type
your
letterhead,
the
receiver
s
address,
and
an
initial
phrase,
anything
you
want
to
appear
before
the
main
body
of
the
letter
(See
ex
ample
below).
9Type
a
Graphic-6,
followed
by
Graphic-9,
followed
by
more
Graphic-6
with
the
numbers
or
letters
of
the
paragraphs
desired
for
the
first
letter.
The
order
of
the
paragraphs
is
not
important.
OAfter
some
line-feeds,
write
your
final
phrase
and
name.
You
may
also
add
some
person
al
words,
June 1 & July 15,
1982
) @
which
are
not
in
the
paragraphs,
before
or
after
the
main
body
of
tex
t
represented
by
the
codes
for
the
paragraphs.
Terminate
your
letter
with
a
Graphic-l
(Formfeed)
and
a
Graphic-8,
both
followed
by
RETURN.
Read
your
Macro
into
the
Computer.
Position
the
Cursor
at
the
beginning
of
the
Macro.
Give
the
A-
Command.
Switch
on
your
printer.
Now
type
an
Al
Comm
and
to
see
the
letter
composed
from
the
paragraphs
and
printed.
In
the
EDIT
mode
insert
a new
name
and
address
as
well
as new num
ber
s f
or
the
paragraphs
of
your
following
letter.
An
Al
Command
will
do
the
rest
for
you.
If
you
want
to
do
some
Reading
or
Writing
from
or
to
Tape,
first
take
the
Macro
out
of
its
buffer
with
the
AO
Command.
Otherwise,
you
will
lose
part
of
your
Macro.
x----
Sorcerer's
Apprentice
P.O.
BOl[ 33
Roger
Pfeil
Apdo.
4713
Maracay,
Aragua
Venezuela,
2101A
April
10,
1982
Madison
Heights,
MI
48071
Dear
Ralph,
t/
s/l/./hO/h/u
s/l/./u
t
5/2/
./ho/h/u
s/l/./u
t
s/3/./hO/h/u
s/3/./u
t
s/If/./ho/h/u
s/If/./u
t
s/5/./hO/h/u
s/5/./u
t
s/6/./ho/h/u
s/6/./u
t
s/7/./ho/h/u
s/7/./u
t
s/
8/.
/hO/h/u
s/8/./u
t
s/9/./hO/h/u
s/9/./u
t
s/O/./hO/h/u
s/O/./u
t
s/X/./U
p
t
s/X/.
/hO/hl/u
s/
/./d/dl/u
b7
June
1 & July 15,
1982
Sincerely
yours,
Roger
(SPREADSHEET
continued
from page
86)
0005:
AF
XOR
A
0006:
FD
77
6B
LD
(IY+6B),A
0009:
CB
18
RR
B
000B: 1F
RRA
000C:
CB
18
RR
B
000E: 1F
RRA
000F:
FD
77
68
LD
0012:
FD
70
69
LD
0015:
3A
3F
01
LD
0018:
FD
77
6A
LD
001B:
E1
pop
001C:
D1
pop
001D:
C9
RET
(IY+68) ,A
(IY+69)
,B
A,
(flJl3F)
(IY+6A)
,A
HL
DE
001E:
C5
PUSH
BC
001F:
F5
PUSH
AF
0020:
F5
PUSH
AF
0021:
CD
1B
E0
CALL
E01B
0024:
3E
80
LD
A,80
0026:
D3
FE
OUT
FE
0028:
F1
pop
AF
0029:
CD
12
E0
CALL
E012
002C:
DB
FD
IN
FD
002E:
CB
47
BIT 0,A
0030:
28
FA
JR Z,002C
0032:
01
00 08
LD
BC,0800
0035:
0B
DEC
BC
0036:
79
LD
A,C
0037:
B7
OR
A
0038:
20
FB
JR
NZ,
0035
003A:
78
LD
A,B
003B:
B7
OR
A
003C:
20
F7
JR NZ,0035
003E:
F1
pop
AF
003F:
C1
pop
Be
0040:
C9
RET
0041: 11 12
E0
LD
0044:
FD
73
3F
LD
0047:
FD
72
40
LD
004A:
C9
RET
004B:
11
1B
E0
LD
004E:
FD
73
3F
LD
0051:
FD
72
40
LD
0054:
C9
RET
0055:
11
0F
E0
LD
0058:
FD
73
41
LD
005B:
FD
72 42
LD
005E:
C9
RET
005F: 11 18
E0
LD
0062:
FD
73
41
LD
0065:
FD
72 42
LD
0068:
C9
RET
DE,E012
(IY+3F),E
(IY+40)
,D
DE.EelB
(IY+3F),E
(IY+40)
,D
DE,
EflJflJF
(IY+41),E
(IY+42)
,D
DE.Eel8
(IY+41),E
(IY+42)
,D
0069:
02
LD
(BC),A
006A:
03
INC
BC
006B:
C9
RET
006C:
D5
PUSH
DE
006D:
E5
PUSH
HL
006E:
F5
PUSH
AF
006F:
C5
PUSH
BC
0070:
FD
36
LD
(IY+3F),69
0074:
FD
36
LD
(IY+40)
,00
0078:
ED
5B
B9
01
LD
DE.
(01B9)
007C:
01
9A
BF
LD
BC.BF9A
007F:
CD
E8 E1
CALL
E1E8
0082:
03
INC
Be
0083:
ED
5B
SB
01
LD
DE,
(01BB)
0087:
CD
E8
E1
CALL
E1E8
008A:
FD
36
LD
(IY+3F) ,1B
008E:
FD
36
LD
(IY+40),E0
0092:
C1
pop
BC
0093:
F1
pop
AF
0094:
E1
pop
HL
0095:
D1
pop
DE
0096:
C9
RET
0097:
D5
PUSH
DE
0098:
E5
PUSH
HL
0099:
F5
PUSH
AF
009A:
C5
PUSH
BC
009B:
FD
36
LD
(IY+3F),69
009F:
FD
36
LD
(IY+40),00
00A3:
ED
5B
B9
01
LD
DE,
(01B9)
flJfIJA7:
flJ1
96
BF
LD
BC,BF96
00AA
CD
E8
E1
CALL
E1E8
00AD
FD
36
LD
(IY+3F),lB
flJfIJB1
FD
36
LD
(IY+40),EfIJ
flJfIJB5
C1
pop
BC
flJ0B6
F1
pop
AF
flJ0B7
E1
pop
HL
flJ0B8
D1
pop
DE
flJfIJB9
C9
RET
SORCERER'S APPRENTICE
SERIAL
DRIVER
(Centronics
driver
must
fit
in
same
space
with
••
VIDEO
ECHO
in
same
position)
STRSVON
(OUTTAPE)
STRSVOFF
(VIDEO)
STRLOON
(INTAPE)
STRLOOFF
(KEYBD)
RAMWRiter
;Subroutine
-
CSAVE*
substitute.
;P1aces
start
and end
address
of
;array
bloc
in
Monitor
command
;buffer
after
name,
for
SAve.
;Make
outaddr
eq Ramwriter
;
;DE
points
to
start
of
arrays
;BCpoints
to
part
of
cmd
line
;Ca11 Send
Ascii
Hex
of
2
bytes
;DE
points
to
end
of
arrays
;Ca1l
Send
Ascii
Hex
again
;Make
outaddr
eq Video
;Subroutine
-
CLOAD*
substitute.
;P1aces
start
-
arrays
address
lin
Monitor
command
line
buffer
;after
nLO
1n
for
a
LOad.
;Make
outaddr
eq Ramwriter
;DE
points
to
start
of
arrars
;BC
points
to
correct
posit10n
:in
command
1ine.Ca1l
Send
Ascii
;Make
outaddr
eq Video
;Note
that
BF9A
and
BF96
are
specific
to
a
48K
Sorcerer.
87
UI
:::»
"
o
..I
e
l-
e
()
UI
III
IE:
U.
88
ENSIGN
SOFTWARE
CHOMP
$19.95
is an absolute
must
for every game enthusiast.
It
is bet-
ter then the Pac-Man arcade game where you are being
chased through a maze
of
alleys by four Monsters who
will
eat you If they can catch
you_
DISASSEMBLER $17.95
Is a
ZOSO
machine language two-pass disassembler
whose
output
format is
directly
compatible with the
Development Pac. The
ZOSO
assembly language source
(Input
to
assembler)
listing
can be sent
to
Video,
Cassette
or
Printer. The cassette file produced is a
source file
for
the Editor/Assembler and can
be
read
directly
Into the
editor
of
the Development
Pac.
The
disassembler has a displacement
function
which allows
any program residing anywhere in memory
to
be decod-
ed, whether it Is at Its normal address
or
has been moved
to
be decoded.
PRODUCT
PRICE
OVERSEAS POSTAGE: ADD $3
NO POSTAGE CHARGE IN USA & CANADA
~
11i.'j
TOTALL...---i
ENCLOSE:
IIIiiiiII1
. -
(A) A CHECK IN U.S. DOLLARS DRAWN
ON
A U.S.
BANK, MONEY ORDER OR CASH FOR THE ABOVE
AMOUNT,
OR
(B) CREDIT CARD, EXPIRATION
DATI:..E
____
_
NUMBER:
....................................
.
. . . .
MAIL YOUR ORDER TO:
ENSIGN SOFTWARE
2312 N. COLE
RD.,
SUITE E
BOISE, IDAHO
83704
U.SA
PHONE: (208)
378-8086
HIGH
QUALITY
SOFWARE
AT
A
LOW
PRICE
SORCERER'S
APPRENTICE
ASTRO ATTACKER $21.95
CO)
is
similar
to
the arcade game called "ASTRO BLASTER".
This action game for the Sorcerer is far superior
to
all
other
Sorcerer games because of
its
high resolution
graphics, sound, variety and playability. Astro Attacker
graphics are extremely advanced. The display is of the
console inside your astro fighter craft. In your console
window you see the enemy ships placed against a
background
of
continuously moving stars. Gauges also
indicate the amount of fuel remaining and the
temperature
of
your lazer cannons.
If
you fire
too
fre-
quently you can overheat the lazers, or if you move
recklessly you may run out of fuel. Your challenge is to
survive and destroy the Spinners, the Lazer Ships, the
Rockets, the Flame Throwers, and the Meteor shower.
Docking with the mother ship is crucial
to
survival as
this
restores your shield strength and fuel, and cools
your lazer cannon. With each succeeding level of play,
survival becomes more
difficult
as
the enemy ships at-
tack
with
greater frequency and quickness. Superb
sound too.
ASTRO
ATTACKER
cl~~o
~!llIi/'
i
/
.j
,/
I
fJi.;,s
~
dod
~II.
i~:
~
.0 1'1 I
'!,-/
Co
Q
I .
SC[]RE:
0B753
HIGH:
0B753
DATABASE
SYSTEM /I $29.95
Is a RAM-based general purpose database system
for
handling alphanumeric data. It is written in Z-80 machine
language and
is
suitable
for
use in 32K
or
48K Sorcerer
microcomputers. Flies may be stored on cassette
or
on
disk
under the CP/M
1.4
or
later operating system. This
database is useable by both cassette based systems
and/or
disk
based systems.
Commands available in functional groupings are:
A:
File Definition: CREATE
B:
File Input/Output: LOAD, MERGE, SAVE
C:
File Alteration: ADD, DELETE, EDIT, SORT
0:
File Listing: LIST, REPORT, TOTAL
E:
System Parameters: PRINTER, SPACE, TABSET
F: Program Exit: CPM, MONITOR
Allowance is made for up
to
750 records
which
may con-
sist
of
1·9 fields. Each field is given a name by the user
when creating the database and this is used as an aid in
manipulating the file. The space available
for
record
storage is approximately 9K less than the available
RAM
in cassette mode and 14K less than CP/M system size in
disk
mode. A field may contain up
to
56 characters.
It
is
best
to
divide the record into small fields which are
useful
for
sorting and searching. For example, a file of
names and addresses, the fields could be:
NAME, STREET, CITY, and PHONE.
CG
The software is sent on cassette tape,
but
is easily
transfered to your CP/M disk. Use the
Monitor
)LO
command, boot your disk, and then type
A)
SAVE
27
OAT ABASE.COM.
(BELLY UPI
continued
from
page
73)
This
brings
us
to
a very
important
question.
Where
do
the
Sorcerer
owners
go
from
here?
Do
we
just
dump
the
system
we have
and
invest
in
something
new or
do
we
continue
to
try
to
make
the
best
of
the
situation?
The
answer
really
depends
on
what
you
are
using
your
system
for.
If
the
system
meets
your
immediate
and
short
term
future
needs.
hang
on
to
it.
because you
can't
get
enough
for
it
to
justify
the
purchase
of
a new system
with
equal
or
better
specifications.
If
the
system
does
not
meet
your
needs
then
upgrade
it
or
dump
itl
If
you
have
the
S-100
unit.
you
can
upgrade
your
system by
purcha-
sing
a
dumb
terminal
and
a new
S-
100
board
that
meets
your
specifica-
tions.
Dumb
terminals
are
quite
reasonable
in
price
(Televideo.
ADDS.
ADM
etc.).
Look
at
Priority
One's
Spring
1982
Engineering
Selection
Guide.
and
you'll
see
the
large
variety
of
S-100
boards
available.
most
of
which
will
work with
the
Sorcerer
without
modification.
With
a new
CPU.
Video
display.
and
Memory
card.
plus
an
inexpensive
terminal.
you
can
have
a new
system
with
a
lot
more
capability
than
you
now have.
The
price
will
prob
ably
be
less
than
a
$1000.
if
you
shop
carefully.
You
can
still
use
your
old
disk
system
and
printer.
Of
course.
if
you
want
to
upgrade
to
a 68000
microprocessor.
the
price
will
be
higher.
Priority
One
has
a MC
68000
CPU
card
avail
able
for
$1075
(page
3
of
the
Spring
guide).
The
expansion
and
upgrade
possibilities
of
an
S-100
system
are
virtually
endless.
With
the
Exidy
S-
100
unit.
or
any
S-100
unit
with
the
Exidy
S-100
card
(available
from
South
Valley
Electronics).
you'll
never
be
obsolete.
To
upgrade.
mere-
ly
buy a
new
S-100
card
(most
are
quite
reasonably
priced)
and
you've
got
a new
system.
Your
imagination
and
money
are
the
only
limitations.
So.
there
IS
really
no
need
to
give
up
the
Sorcerer.
Add
CP
1M
and
most
of
your
software
problems
are
solved.
If
you
are
contemplating
building
a
business
around
the
Sorcerer.
you
may
not
get
very
far.
For
all
practical
purposes.
unless
something
develops
wth
either
Compudat
a
or
the
licensing
deal
currently
under
negotiations.
the
Sorcerer
is
dead.
What
happens
to
the
users
group?
Well.
that
will
depend
upon
the
membership
at
large.
There
is
a
large
base
in
Europe
and
Australia.
but
not
in
the
United
States.
(Gary
Jensen
estimated
there
to
be
about
1000
active
users
In
the
U.S.)
To
continue
bringing
you
the
Newsletter
in
its
present
format.
we
will
need
100%
renewals
for
next
year
at
current
prices.
We
can
always
reduce
the
number
of
pages.
or
do
away
with
stapling.
three
ring
binder
holes.
use
lower
quality
paper
etc.
to
continue
the
Newsletter
for
fewer members.
We're
going
to
need
your
input
reg
arding
the
continuance
of
the
Newsletter
and
the
group.
Please
send
your
suggestions
and
comments
to
us
by
the
end
of
September.
so
we
may
plan
ahead
for
next
year.
In
the
meantime.
hold
on
to
your
Sorcerer.
it
is
still
a very good
computer!
We
still
have
expert
ser-
vice
avail
able
from
Jack
MacGrath
and
B.J.
Freeman.
There
is
a
lot
of
June 1 & July 15.
1982
software
available
from
Ensign
(Ar-
rington)
Software.
System
Software.
Dayspring
Computer
Enterprises
and
a
lot
of individual"
authors.
For
CPIM
users.
there
is
a
constantly
growing
library
of
software
available.O
EASY
TYPING
PRACTICE
by
Larry
Kobylarz
The
following
BASIC
program
allows
you
to
use
the
Sorcerer
for
typin~
practice.
Use
carriage
return
and
hne
feed
at
the
end
of
each
line.
Use
Control
H for
backspace.
Con-
trol
C
gets
you
out
of
the
program.
10
POKE
318.195:
POKE
320.224
20
A=INP(9):
IF
A=O
TIiel
20 IlI:II
30
PRINT
CHR$
(A)
;:
ooro 20
.,
ON-LINE
by
Robert
Hageman.
System
Operator
In
this
issue.
I
will
cover
mapping
operating
systems. moving
files
bet-
ween
different
systems
in
the
same
machine.
and
moving
ROM
Pac
Basic
files
from
tape
to
disk.
Mapping
An
Operating
System
1.
Clean
memory by
filling
it
with
all
one
value.
i.e.
all
nulls
or
all
FFs.
One
method
is
to
ENter
"00"
at
address 0000
and
MOve
0000
to
fill
all
memory
except
the
Monitor
work
area
(MWA).
In
a
52K
machine
the
move
command
is:
MO
0 CF7E
1.
2.
Boot
the
system
to
put
a
fresh
image
in
memory.
This
is
usually
a
GO
command.
as
in
GO
0000
to
boot
a
disk
controller
at
address
0000.
3.
Escape
to
the
Monitor.
Hitting
both
RESET
keys
will
work,
but
if
you
can
have
the
system
execute
code by a
jump
to
an
address.
try
to
enter
the
Monitor
at
E003.
4.
Dump
memory.
Don't
cheat.
start
at
0000
and
work
through
to
your
highest
RAM
address.
Note
ad-
dresses
for
the
following:
a.
Areas occupied by
the
system.
b.
Areas
unoccupied
by
the
system.
Try
to
be
specific.
If
possible.
locate
boot
loaders.
main
operating
system.
and
data
areas
used
by
the
system.
+++ +++ +++
Mewiog
FUca
Between
Different
Systems
10
The
Same
Machine
1.
Map
both
oper atinJ! systems
following
the
directions
given
above.
2.
Determine
the
"safe"
areas.
i.e.
those
areas
neither
system
uses
and
those
areas
each system leaves
untouched.
3.
Load
the
file
to
be
transferred
hom
the
source
system.
It
is
best
if
you
can
just
load
the
file
without
executing
it.
4.
Escape
to
the
Monitor.
SORCERER'S APPRENTICE
5.
MOve
the
file
to
a
"safe"
area
for
the
destination
system.
6.
Boot
the
destination
system.
Hopefully.
it
will
load
without
touching
your
file.
7.
Escape
to
the
Monitor
again.
8.
Move
the
file
to
a
suitable
location
for
this
system.
9.
Reenter
the
destination
system.
If
possible.
do
this
through
it's
warm
entry
point.
10.Save
the
file.
+++
+++
+++
Ballie
PlIC
FUcs
To
Disk
It
is
possible
to
get
the
Basic
ROM
Pac
to
write
an
ASCII
tape
of
the
Basic
program
in
memory.
This
tape
can
be
read
by
the
Monitor
serial
input
routine
from
CP
1M
using
PIP
to
put
the
file
on
disk.
1.
ENter
at
0000:
CD
12
EO
CD
IB
EO
C9.
2.
SEt
Output
=
O.
3.
Return
to
the
ROM
Pac
with
PP.
4.
Type
LIST.
5.
Start
the
recorder.
6.
Push
RETURN.
7.
After READY.
type
several
control-
Zs.
The
"Reader"
function
of
your CP
1M
BIOS
should
call
or
jump
to
the
Monitor
serial
input
routine
(like
CD
OF
EO
C9
or
C3
OF
EO).
8.
Boot
your
CP
1M.
9.
PIP
the
file
froiD
the
reader
to
disk:
PIP FILENAME.ASC=RDR:.
If
the
file
is
larger
than
16K. you
should
use
PIP's
block
move
option:
PIP
FILENAME.ASC
[B].
which
tells
PIP
to
buffer
the
input
until
it
receives a
control-S
or
control-Z.O
USEFUL
POKE
COMMANDS
by
William
Cohen
(Reprinted
from
the
May. 1980
issue
of
the
S.U.N.)
In
the
January
1980
issue
(S.U.N.
Vol
II.
page
6)
the
NEWVIDEO
program
caused a
jump
of a
line
at
every
line
feed.
The
same
operation
can
be
accomplished
much
easier
with
the
use
of
a BASIC POKE
command.
Below
are
listed
a few POKE
commands
which
I
found
which
might
be
of
interest
to
other
users.
1.
Double
space
printing
(same
as
NEW
VIDEO)
-
POKE
322.0
2.
Line
width
control-
for
BAS
IC
only-
POKE
322.xx
(where
xx
=
1,2.3.4
••••
64).
This
command
con-
trols
the
length
of
the
line.
It
will
be
limited
to
xx
length.
If
the
statement
is
longer
than
xx
char
acters
it
will
scroll
to
the
next
line.
3.
Printing
speed
control-
POKE
32719.xx.
The
larger
the
xx
the
slower
the
print
speed.
The
slow-
est
allowed
value
of
xx
is
255.
For
sK
memory use
S14
3
and
for
16K memory use
16635.0
89
-SORCBRBR
STRINGY
FLOPPY
Additional
Information
by
Alan
H.
Schmid
Issue 4.1 of the
Souerer'a
/tppren-
tke,
had
a review of the Ex
atron
Stringy
Floppy
(ESF)
modified by
ASP Mkrocomputers for use with
the
Sorcerer. This
.ame
issue carried
an
informadve
ad by ASP. I do
not
intend
to
duplkate
this
.ame
infor-
madon.
but
to
build
upon
it.
I have been using
the
ASP
ESF
for
eight
months.
The
controller
and
two ddves have seen
daily
use
supporting
my stock
option
tr
ading
bus1Dess.
Since
I
will
diccull "both
the
features
and
the
hult
••
and
will
probably
go
into
the
faults
in
the
greatest
detail.
it
should
be
stated
in
the
beginning
that
I
am
very pleased
with
the
ESF.
This
is
not
going
to
be
a
cru.ade
to
prove
that
the
ESF
is
better
than
a
pair
of
floppy
disks. However.
if
cmt
U a
factor.
the
ESF is a
valid
middle
ground
in
the
large
void
that
exuta
between
nuclio
cassettes
and
disks.
~
Shald
Consider the BSFt'
If
you
already
have
twO
disks. go
read
another
artu:lel
If
you have
only
one
disk.
then
save your money for a second. so you
can
euily
maintain
backup recorda.
If
you have 481( memory.
but
only
cllll8ettCII. you
cert
ainly
need either
dirks
Of
ESP.
If
you
have a Sorcerer I with
its
maximum fllCtory
internal
capacity of
32K,
plus
two cll88ettea
with
motor
controls.
you are a prime
candidate
for
BSP.
"
If
you have a
32IC
Sorcerer
I.
and
a
sinole
cosllette
without
motor
control,
you have a
small
current
iDVesbDen~
and
will
benefit
the
moat
from
the
tlSF.
If
you have
leu
than
32K,
the
ESF
will
work
well
with
your system.
and
WIll
,Practkally
none
C!f
the
computer's
preaoua
memory
capacity.
Now
that
we have
told
the
disk
owners where
to
go.
let'o
get
on
with
the
details.
ESP
Pcat1ll:es an4
Limitations
Pleas~
go
read
the
referenced
artkle
and
ad. I
want
to
spend our time
covering new
ground.
Concerning
SPEED.
The
ESF
op-
erates
at
approximately
9600 baUd
versea 1200
baud
or 300
baud
for
the
cusette.
To
illustrate
what
this
means
in
the
real
world.
I
ran
a
teat
of
loading
the SYSTEM 3
Toolkit
at
both
1200
baud
from
cassette
and
with
the
ESF.
TIME:
Sec.
TASK
Cass.
ESF
Rewind
15
Search
for
begin.
of
record
1
Load CClllp
let
e -
Total
el
apsed
75
6.8
90
The
ESF increase
in
transfer
rate
over
the
cassette
is
9600b/1200b,
a
factor
of eight. However,
the
system
increase
in
transfer
rate
is a
factor
of 11 when
the
time for human
button
pushing is
included
I
That
could
really
cut
into
your
day-
dreaming time!
Next
COST.
This
is
a trickier
sub~ect
than
speed, with many
subJective items.
The
best
I
can
do
is
make a
clear
case as I see
it,
with
enough
data
that
you may convert
it
to
your
case
and
point
of
view.
First
the
ground
rules:
Baseline System -Sorcerer I or
II
with 32K, 1 or 2
cassettes,
Stan-
dard
BASIC
and
Word Processing
Pacs.
Minimum user avail able
RAM,
28IC,
after
oper ating system
and
BAS
IC
loaded.
Minimum of 2 disks required so
backup disks
can
be
conveniently
made.
While
ESF
backups
do
not
require 2
drives
to
make backup records, I
will
specify 2
to
save
arguments.
Using, "Disk
Notes",
in
the
December, 1981
SA
for
cost
data,
the
best
one
could
do
would be _1200 for
two drives.
There
would
still
be
the
coot for
inaeasing
32IC
to
48IC
to
provide room for the disk operating
system
and
disk BASIC. Also. there
would
still
be
the
problem of
getting
the
Word Processor back
in
servke.
However.
let's
not
get
caught
up
in
details.
The
point
is
that
ESFs are
not
better
than
disks,
rather
the
ESF
is
a
valid
medium cost
alternativel
ESF
Costs:
Controller
and
drive
_339
Second
drive
157
WP
Driver
50
Total
_546
Note:
1.
List
prke
is
stated
in
Australian
dollars.
However,
at
writ-
ing
time1
USA
and
Australian
dollars
are
equal.
Note:
2.
I
personally
fed
the
second drive and the
WP
Driver
could
be
omitted from
the
system
(details
later).
RELIABILITY of
the
ESF
is
as
advertised I CSAVE
and
>SA
are
verified
automatically
after
recording.
While this
takes
additional
time, I
have never
lost
a record.
The
worst
that
has
happened is a
parity
error
on
loading
that
required a second
attempt,
or a head
cleaning.
While
reliability
of the
hardware
is
excellent,
there is a QUALITY
problem
with
the
wafers. A new wafer
18
certified
before
initial
use.
i.e.
test
data
are
first
recorded,
and
then read
over
the
entire
length
of
the
tape.
The
Certify
command does
this
once,
or a
Certify
Loop command
will
do
it
10
timea
in
succession. I have
found
that
in
a new
batch
of
waferst
approximately
10% will fail
the
certifkation.
These are
usually
the
longer
wafers,
35
and
50
foot
long.
Repeated
attempts
at
certification
will
allow a
few
marginal
wafers
to
pass,
but
the
remaining are
only
good for
obtaining
replacements from Ex
atron.
SORCERER'S
APPRENTICE
Once a wafer
has
been
initially
certified,
it
is
a
very
reliable
wafer.
The
initial
certification
failures
are a
significant
annoyance,
but
do
not
affect the system
reliability.
The
certification
problem seems
to
be
wafer
internal
friction
as
the
endless
loop
of
tape
spirals
inward
in
the wafer. rubbing upon
itself.
The
frktion
is
also
sensitive
to
tempera-
ture.
My
office
is
heated
by
wood
stove, and drops
as
low as
40
0F
in
the
winter.
After soaking
at
this
temperature some wafers may give
parity
errors
on
the
initial
read
attempts.
Warming
the
wafer
slight-
ly,
will
eliminate
this
problem. I
suspect
most
of you would
not
even
have this
situation,
but
mention
it
only
to
illustrate
how some wafers
are very sensitive
to
intern
al
frktion.
The
documentation
supplied with
the ESF
is
good.
It
is
particularly
clear
in
the
section concerning two
minor
modifications
to
the
printed
circuit
board,
and
the
insertion
of the
new Monitor ROMs. I
had
no
problems
with
the
modifications.
The
manual
details
the
changes
inc orp
or ated
in
the
Monitor ROMs. I
will
only
mention
four
that
I
find
affect
the
user.
1.
The
Monitor Work Area
(MWA)
has
been
extended
10 bytes further
downward
into
user
RAM.
2.
The
lOSE
T = n commands
to
set
the
baud
rate
are
like
the
Exidy
1.1
Monitor.and
therefore, the
reverse of
the
Exidy 1.0 Monitor
you
may have.
3.
The
keyboard debounce
routine
has
been improved. I used
to
be
rlagued with
double
8's
during
ong
inJ?Ut
sessions. This has
been
eliminated.
4.
My
printer
would
consistently
refuse
the
first
software
commands
of the day
to
print.
This
problem
has
been
diminated.
Now
for
the
"good/bad
news"
items. A program
is
included
wih
the
ESF
for saving
string
arrays.
How-
ever, the CSAVEo command
for
saving
numerkal
arrays
was
not
implemented
on
the
ESF.
Personally,
I
find
this
a
bad
tradeoff.
The
CSAVE* and
CLOAD
* are
still
av
ail able
in
the
cassette
mode.
There
are
ways
to
work around
this
limit
ation,
but
each
of you
should
evaluate
this
limitation
carefully
in
rel
ation
to
your use of
the
Sorcerer before you purchase.
Since
this is a
software
limitation,
a
solution
may
still
appear.
In
the
next
artkle,
I
will
explain
some ways around
the
CSAVEo
problem.
The
CSAVE* problem
illustrates
one
of the virtues of
the
ESF,
it
augments
rather
than
replaces the
cassette.
The
manual
explains
how
the
system "wakes
up"
in
the
ESF
mode.
One
can
transfer
to
cassette
with
the
Monitor command
lOSE
M=C"
and
back
to
the
ESF
with
"SE
M=S".
A
significant
exception
to
this
rule
is
not
documented. While
in
the
ESF
mode,
the
system
will
save or
load
data
to
cassette
at
300b.
For me
this
is
a
significant
June
1
tit
July
15,1982
@
cc
)
convenience.
On
a weekly
basis
I
spend
an
hour
doing
dat
a
input,
and
then
turn
the
computer
loose
to
generate
an
updated
20K numerical
array.
A
printout
is
made
for
review,
and
the
array
saved for
historical
purposes.
I
am
able
to
make
backup
records
on
the
ES F
during
dat
a
input,
and
1
ater
save
the
array
on
cassette
at
300b
without
having
to
remember
to
"SE
M=C".
The
ESF
uses very
little
of
the
Sorcerer's
RAM:
The
MWA
is
increased
by 10
bytes as
noted
above.
The
Word Processing
Driver,
if
used,
occupies
OH
to
2FFH.
The
ESF
control
ROM
uses
addresses B800H
to
BFFFH.
Therefore,
in
the
case
of
Sorcerers
with
'18K
of
RAM,
they
become effectively,
'16K
memories.
E
adier,
I
made
reference
to
only
minor
changes
being
required
in
a
progr
am
to
make
it
compatible
with
the
ESF.
There
are
basically
two:
I.
Since
the
Monitor
Work Area
has
been
extended
10
bytes
downward,
POKEs
into
the
MWA
must
have
their
addresses
changed.
For
ex-
ample,
with
a
UK
memory, POKEs
into
32720
at
32721
to
turn
a
printer
ON
or
OFF,
would
be
changed
to
32710
at
32711,
respectively.
2.
Any
program
references
to
CSAVEo
at
1200b may
only
be
done
if
the
Sorcerer
is
in
the
cassette
mode.
I
do
not
find
this
a
significant
limitation
since
the
Sorcerer
can-
not
reliably
save
data
at
1200b.
In
case' of
the
Word Processor Pac
with
the
ESF,
one
has
a choice,
both
acceptable.
If
one
loads
the
WP
Driver
program,
the
ESF
will
read
and
wnte
tex
t
to
the
ESF
using
the
standard
commands.
In
addition,
all
standard
cassette
operations
are
still
available.
The
one
change
is
that
the
ESF
files
are
numbered
rather
than
named.
The
files
are
loaded
in
the
same
manner
as
cassettes
under
motor
control,
i.e.
in
256
byte
blocks,
and
without
verification.
The
use
of
the
WP
Driver
would
be
desireable,
if
the
operator
was
not
familiar
with
Sorcerer
Monitor
com-
mands.
The
alternate
method of saving
WP
files
involves
the
use
of
the
Monitor
>SA
command.
It
has
the
advantages
of:
1.
Saving
a
larger
file
on
a given
size
wafer.
2.
Verifying
the
file
when saved.
3.
Not
requiring
the
WP
Driver
Pro-
gram.
I
will
cover
operational
details
in
the
next
article.
The
main
point
is
that
the
WP
Driver is
not
required
to
use
the
ES F
with
the
WP
Pac.
Finally,
here
is
the
approximate
capacity
for
the
available
wafer
tape
lengths:
June
I
&:
July
15,
1982
Wafer
:Bytes:>SA
Bytes:WP
Run
Time
Length:or
CSAVE
Driver
sec.
5
10
20
35
50
6000
12000
24000
42000
60000
2700
5400
10800
18000
27000
6.5
13
26
45
65
At
present,
the
ASP
ESF
controller
is
manufactured
by ASP
Micro-
computers
in
Austr
alia.
The
ES F
drives are
standard
drives m
anufac-
tured
by Ex
atron
in
Sunnyvale,
CA,
and
modified
by
ASP
in
Australia.
I
personally
appreciate
the
effort
that
AS
P
put
into
the
proj
ect,
so
that
there
is
a
mass
memory
option
that
filled
the
gap
between
cassettes
and
floppy
disks.
The
full
address for
ASP
is:
ASP Microcomputers
797
Dandenong
Road
East
Malvern 3145
Victoria,
Australia
SORCERER
STRINGY
FLOPPY
Opaating
Techniques
by
Al
an
H.
Schmid
In
the
previous
article,
I provided
information
concerning
the
Ex
atron
Stringy
Floppy
(ESF),
modified
by
ASP Microcomputers
to
operate
on
the
Sorcerer.
That
article
was
to
answer
the
questions
that
remain
after
a
typical
product
review,
but
before
one
is
prepared
to
make
a
buy
decision.
This
article
will
describe a few
oper
ating
techniques,
hopefully,
urg-
ing
others
to
submit new or unproved
ideas
for
our
mutual
use.
Saving
WP
Tat
W/Monitor
>SA
This
suggestion
came from
the
Melbourne
University,
Australia,
via
the
ASP Microcomputers,
"Stringy
Floppy
Newsletter".
Paul
Stuart,
of
ASP, deserves
thanks
for
passing
on
a
technique
that
allows
anyone
willing
to
use
the
Sorcerer
Monitor,
to
use
the
WP
Pac
and
the
ESF
without
purchasing
the
WP
Driver from ASP.
The
advantages
of
the
Monitor
>SA
method
are:
approximately
twice as
fast,
more
than
twice as much
text
per
wafer,
automatic
verification
of a
write,
and
no
patch
program
needed.
The
disadvantages
are:
writing
a
file
is
slightlr
more
complicated
l
incoming
tex
t
wil
not
automatica
ly
merge
with
existing
text
in
RAM
and
will
over
-write
it.
A method
to
overcome
this
is
included
below.
Saving
a
WP
File
1.
Exit
WP
Pac
to
Monitor:
Command
X.
2.
Dump addresses 074A
and
074B:
DU
074A 074B.
These
two
bytes
contain
the
end
of
text
address.
Note
that
074B
cont
ains
the
first
part
of
the
address
and
074A
the
second.
F or ex
ample,
if 074A
contains
IE
and
074B
contains
12,
the
end address
is
HIE.
3.
Set
the
auto
ex
ecution
address
to
the
warm
start
address
for
the
WP
Pac
(C003):
SE
X=C003.
(Note:
I have
not
found
the
above
step
necessary. )
SORCERER'S APPRENTICE
4.
Save
the
file
on
wafer
using
the
usual
Monitor
syntax:
SA
n
SOF
121E. 80F is the
starting
address
for
all
WP
fil
es.
Loading a
WP
Monitor
File
1.
Exit
WP
Pac
to
Monitor:
Command
X.
2.
Load
file
with
the
command LO
n,
where n is
the
file
number. The
file
will
load
and
then
return
control
to
the
WP
Pac
in
the
EDIT
mode.
Merging Two
WP
Monitor
Files
1.
Put
existing
text
into
holding
buffer
using
usual
WP
commands.
2.
Load
second
file
as
above.
3.
Restore
first
file
from
holding
buffer
by
moving
cursor
to
the
desired
location
and
unloading
buffer
using
command
U.
This
method of saving
text
takes
less
time
than
reading
the
instruc-
tions.
The
automatic
verification
of
the
text
is
an
important
feature.
In
my
previous
article,
I discussed
the
problem of
the
CSAVEo
command
not
being
implemented
on
the
ESF.
A
program
for
DATA
I/O
was
included
with
the
ES F
for
recording
string
arrays,
not
numerical
arrays.
This
did
not
fill
my need
to
store
large
(20
K)
numerical
arrays,
since
string
arrays
for
decimal numbers occupy
more memory.
Also,
the
program
must
be
enlarged
to
handle
the
conversion
to
decimals
and
back
to
strings
so
that
calculation
can
be
made.
Two
variations
of
the
Monitor
>SA
method described above
will
work with
BASIC
data.
The
difference
between
the
two
methods
is
the
starting
address of
the
SAVE. Again, I
heard
of
the
first
method
from
Paul
Stuart
of ASP Microcomputers.
The
following
BASIC memory
ad-
dresses are
significant
to
the
pro-
cedures:
BHiIN BASIC:
Work
Area
Program
Prog.
Variables
Arrays
IN)
BASIC:
Arrays
100
105
(lB7
at
lB8)
(lB9
at
lBA)
(lBB
at
lBC)
The
addresses
in
()
are
pointers
to
the
location
listed.
For
example,
the
BASIC Arrays
start
at
the
address
contained
in
(lB9
at
lBA),
and
end
at
the
address
cont
ained
in
(lBB
at
lBC).
In
normal
Z-80
fashion,
the
address
bytes
are
in
reverse
order.
Saving
Program
&:
Variables
In
One
Record
This
method
is
convenient
for
programs
with
data
that
are
periodi-
cally
updated,
or you
are
interrupted
during
a
computing
session,
and
want
to
I ater res
tart.
This
method is
not
convenient
91
during
program development,
since
the
~rogram
cannot
be
Changed
without
Clumping
the
variables
to
zero.
Also,
it
takes
more
tape
since
the
program
is
recorded every time.
Saving
a Program
with
Variables
1.
Edt
to
Monitor:
BYE.
Z. Dump addresses 0188
and
18C:
DU
0188
018C.
These two bytes
contain
the
end
of
arrays
address.
Note
that
018C
contains
the
first
part
of
the
address and
01BB
the
lIecond. P or
ex
ample,
if
0188
contains
IE
and
018C
contains
6Z, the end address
is
6Z1E.
3.
Save
the
file
on
wafer
using
the
usual
Monitor
syntax:
SA
n 100
6Z1E.
The
starting
address
is
100
80
that
all
program
counters
will
be
included
along
with
the
program
and
variables.
Loading
Program
with
Variables
1.
Edt
to
Monitor:
BYE.
Z. Load
file
with
the
command
LO
n,
where n in
the
file
number.
3.
Return
to
BASIC: PP.
Since
you
have
just
loaded
the
program
with
all
variables,
you
MUST
NOT
start
with a RUN or
RUN
nn.
This
would
result
in
all
variables
being dumped
to
zero.
You
must
also
enter
the
program
after
any
array
dimen-
sioning
statements
to
avoid
"RE-
DIMENSIONED
ARRAY"
error.
I per lIonally
start
all
program
menus
at
step
100.
It
is
then
automatic
with
me
to
restart
all
programs
with
GOTO
100.
If
a
program
revision
must
be made
the
arrays
will
first
have
to
be
sav;!
separately
using the method below,
and
later
merged
with
the
revisea
program.
Saving BASIC
Anays
The
advantage
of
this
method over
saving
the
program
and
all
variables
together
is
that
it
takes
less
tape,
and
allows
revision of the
program
after
arrays
are saved.
The
disadvantage
is
that
the
address
for
the
lltart
of
arrays
must
also
be
found
in
the
BASIC Work
Area,
and
the
reloaded
arrays
must
be
moved
to
the
correct
address
after
loading
to
complete
the
merger
with
the
program.
Saving Arrays
(Notel
This
method saves
all
arrays
if
there
are
more
than
one.)
1.
Exit
to
Monitor:
BYE.
Z. Dump addresses
0189
to
018C:
DU
0189
018C.
3.
Save
the
file
on
wafer
using
the
u~al
Monitor
syntax:
SA
n
(1BA
at
189)
(18C
at
188).
The
actual
save
will
use the address
for
the
beginning
and
end of
arrays
contained
in
the addresses shown
in
O.
92
Loading
at
Merging Arrays w
/Program
1.
RUN
the
program
to
reset
pointers.
Program
should
be stopped
after
arrays
are dimensioned.
Z.
Exit
to
Monitor:
BYE.
3.
Dump
pointers
to
beginning
of
array
area:
DU 189
18Ao
4.
Load
file
with
the
command LO
n,
where n
is
the
file
number.
Hold
down CONTROL C during
loading
so
that
the
file
header
prints
on
the
screen.
5.
Move
the
arrays
downward
in
memory
to
the
new
array
start
address:
>MO
(file
header
start
address)
(file
header
end
address)
(1BA
at
189).
6.
Return
to
BASIC: PP.
If
the
program
is
revised by adding
to
it
after
the
arrays
are saved
on
ESP,
a problem may
exist
if
the
program
has
grown
into
the
previous
array
area.
Por
minor
program
revi-
sions,
this
is
not
a prOblem. When
the
program
is
restarted
with
RUN
the
variables
are dumped
to
zero.
II
the
program
additions
use
less
memory
than
the
old
variable
area,
there
will
be room
to
load
the
arrays
and
move
them downward
to
merge
with
the
program.
Contrary
to
loading
from
cassette,
the
ESP
does
not
have provisions
to
load
Monitor files
to
a
diffttent
address
than
from
which
it
was saved.
Also, a
file
may
not
be
moved up
in
memory
unless
the
new
starting
address lies above
the
existing
ending
address.
Therefore,
there
is
not
sufficient
memory,
in
many
cases,
to
move
large
arrays
upward
in
memory,
after
loading
from
the
ESP.
If
you are worried about this
problem,
pad
your
program
with
some
dummy
statements
that
can
be
removed
if
the
program
needs
to
be
shortened
after
revision.
WARNING
The
next
section
is
a
det
ailed
description
of how
to
recover from
the
problem caused by extensive revision
of the
program
after
the
arrays
are
saved
on
the
ESP.
SKIP
TO
THE
"00000"
below
unless
you have need
of
this
det
ail.
If
you
get
trapped
after
the
arrays
have been saved:
1.
CSAVE
the
program
on
the
ESP.
Z.
Go
to
the
Monitor:
BYE.
3.
>LO
the
arrays
from
the
ESP.
4.
Set
memory
to
cassette:
SE
M=C.
5.
Save
the
arrays
on
cassette
using
above
method,
except
the
file
is
named
rather
than
numbered.
6.
SE
M =
S.
7.
Go
to
BASIC
and
reload
program
from
ESF.
This
is
necessary
since
its
back
end was
cut
off
by
the
array
load
in
Step
3.
8.
Do
steps
I,
Z, '" 3
in
basic method
above,
i.e.
RUN
program,
go
to
SORCERER'S
APPRENTICE
Monitor,
and
dump
pointers.
9.
SE
M =
C.
10.Using method described
on
page
Z6
of,
"A Guided
Tour
to
Personal
Computing"
, 1 oad the
arr
ay
s
higher
in
memory
than
they were
recorded.
11.SE M=S.
1Z.Finish
task
by
completing steps 5
'"
6
in
basic
method above, i.e.
.>MO
arrays
and
go
to
BASIC.
With a
little
planning,
you
will
never have
to
do
the
above,
but
here
it
is
just
in
case.
00000
The above procedures are crutches
to
get
around
the
lack
of a
CSAVEO
on
the
ESP.
They
cannot
be
done
under
prog~am
control,
since
they require
Monitor
commandS.
So
much for saving
arrays.
Now
for
some miscellaneous
tips
and
facts.
Do
your
program
development
using
the
ESF.
In
addition
to
the speed,
there
are other
advantages.
Use two
tapes
that
you
altemate
in
drive O.
Make a
CSAVE
about
every five
minutes.
A simple GRAPHIC 0
will
give a
one
stroke
CSAVE command.
Alternate
the
tapes
before each save.
The
ESF
will
default
to
file
#1
on
drive
o.
This
way a power f
allure
will
not
cost
you
more
than
5
minutes
work.
The
ESF
does
not
add a CRC
byte
to
the
end of
the
program.
Using
the
ESF
for
program
development does
not
pad
the
end of
the
program
with
accumulated
garbage
that
you have
to
1 aboriously
delete
if
memory gets
short.
You may
store
up
to
lZ7 files
on
a
wafer.
This
is
only
practical
if
the
files are added
sequentially,
and
an
earlier
file
never revised. Any
slow-
ing
of
the
drive
motor,
or
enlarging
of
the
file
I
will
cause the
beginning
of the
fo
lowing
file
to
be
over-
written.
There
is
a way
around
this
problem.
To
save
file
5,
the
ESF
searches
for
the
END of
file
4;
it
does
not
care
if
file
4
has
a
beginning.
Therefore,
separate
files
on
a
tape
with
dummy f.iles
tha~.
are
long
enough
to
cover minor
rev1S10ns
and
drive speed
variations.
A
typical
sequence
would
be:
#1
Program/#Z
Dummy
/#3
Program/
#4 Dummy/
•••••••
The
dummy
could
be
anything.
One
suggestion
would
be
to
(
>SA
n
o
IFF).
This
would
provide a
51Z
byte
buffer
between
programs.
While I have a
few
more goodies, I
will
end
this
article.
I'm sure some
of you have ideas
that
could
make
my
comments
look
naive. Please
do
so
by sending
short
items
to
the
Soa:uu's
Apprentice, showing
all
us
ESF
users
how
to
do
it
better.
I
will
even offer a
blank
un-certified
wafer
to
the
first
one
to
show how
to
save a numerical
array
under
program
control
••
June
1
'"
July
15, 1982
()
@
) @
ROM PAC
NOTBBOOK
iJ4
by
Iohn
de Rivaz
As
promi.ed
for
this
i.sue,
here
is
the
program
that
saves
the
entire
array
area
using
the
Monitor
routine.
If
an
error
is
found
on
loading,
instead
ot
just
stopping
in
the
usual
defeatest
manner,
the
routine
goes
on
to
load
the nel[ t
file.
Therefore,
if
you have saved two copies of a
file,
even
if
there
i.
an
error
on
loading
the
first
copy,
the
program
automati-
cally
tries
to
load
the
second. You
can
.ave
a.
many
copies as
you
wi.h
depending
on
the
rdiability
of
your
cauette
system.
This
routine
i.
used
to
.ave
arrays
in
RTL's
Stocks
and
.shares
Manage-
mcot
program,
which
is
under
test
at
the
time
of
writing.
Special features
of
the
program
include
inflation
linking
of
the
stocks,
to
show whether
tho.e
gaina
are for
real
or whether
they are
just
paper
gain..
This
will
give a graphic
demonstration
of
the
need
to
modify
law.
in
capital
tax
ation
to
adjust
the
COlt price
for
inflation
before
calculating
taxable
gain..
The
program
includes
printout
on
an
Epaon
MX80F/T
of
graphs of
share
performance
on
a time
axis
and
al.o
on
one
of
market
movements. A
frivolous
extra
is
a
routine
to
play
"tunes"
and
tones
baaed
on
a
company's
price
movemcots.
The
rou-
tines
used
to
generate
medium
resolution
graphics
and
to
print
them
with
the
MX80
will
be
given
in
future
articles
in
Sorcerer's
Apprcotice.
In
order
to
get
the
POKEs
for
BASIC,
load
in
the
machine code
with
the
Monitor,
and
then
get
BAS
IC
to
print
out
PEEKs of
the
required
memory. POKE 260,0.
In
order
to
record a
file,
POKE 261,0
and
call
A=USR(O).
To
load
a file, POKE
260,39
and
again
call
A=USR(O).
Before these
operations,
it
is
uoual
to
Print
a
line
tdling
the
operator
to
switch
his
machine
on
and
presl
any
key when he haa
done
so.
Thi.
progr
am
recorda every
single
numeric
array
present.
RTL
sdla
a program
called
STR which allO
loads
Itring
array.,
but
this
is
more complicated
and
time
consuming,
u every
single
string
haa
to
be
recorded
scparatdy.
An
alternative
method of saving
strings
il
used
in
the
program on
stock.
and
shares.
Each
string
is
split
up
into
groups
of
three
letters,
which are coded
into
siz
digit
numbers
and
saved
in
numeric
arrays.
The
strings
recorded require
only
ten
perccot
of
the
large
numeric
arrays
used,
so
this
method was considered
quicker
than
using
the
string
loading
program.
A
further
alternative
would
be
to
record
both
the
array
area
and
the
string
area.
As
a
footnote
to
the
last
article,
it
may be
noted
that
the
file
made
by
the
assembler
had
to
start
at
4000H
because
the
usembler
overwrote
it
if
it
started
at
3000H.
June
1 &
July
15,
1982
The
routine
uses code
taken
from
the
Monitor and modified
to
suit
the required
purpose.
EXIDY
Z-80
ASSEMBLER
ADDR
OBJECT
ST
>01B9
>81BB
>E1A2
>E65C
>E453
>E28A
>E2AF
'0000
'0004
'0007
'010A
'000D
'0010
'0014
'0018
'00lC
'0020
'0024
>E6DE
>8759
>E6A9
>E408
>ElBA
>E205
ED4BB901
115384
2ABB01
FD7150
FD7051
FD364741
FD364852
FD364952
FD364A41
FD364B59
C35CE6
'0027
CDA2E1
>E2DA
'002A
FD363D40
'002E 0601
, 0030
CD8AE2
'0033
CD5987
'0036
FDE5
'0038
DDE1
'003A 0610
'003C
CDDAE2
'003F
2843
, 0041
DD7757
'0044
DD23
'0046 10F4
'0048
FD4646
,
004B
CDDAE2
'004E
B8
'004F 2802
'0151 1826
'0053
CDDEE6
'0056
2AB901
'0059
FD5E5E
'005C
FD565F
'005F
'0062
'0065
'0067
'006A
'006C
'006D
'006E
CD59E7
CDA9E6
281D
CDDAE2
2818
77
23
10F7
'0070
FD4646
'0073
CDDAE2
'0076
B8
'0077
28E9
'0079
2108E4
'007C
CDBAE1
'007F
CD05E2
'0082
18A3
'0084
C3AFE2
ERRORS=0000
0001
0002
;ARRAY
LOAD
FOR
SHARE
PROGRAM
0003
ARRAY
BOU
01B9H
0004
END
BOU
01BSH
0005
GETIY
BOU
0E1A2H
0006
SAVE
BOU
0E65CH
0007
CARRET
BOU
0E453H
0008
CMOTON
BOU
0E28AH
0009
CMOTOF
BOU
0E2AFH
0010
;FINDS
GETIY
AND
LOADS
UP
0811
;MONlTOR
STACK
FOR
FIRST
8012
;SAVING
0013
LD
BC,(ARRAY)
0014
LD
DE.CARRET
0015
LD
BL,(END)
0016
LD
(IY+50H),C
0017
LD
(IY+51H),B
0018
LD
(IY+478),'A'
0019
LD
(IY+488),'R'
0020
LD
(IY+49HI'
'R'
0021
LD
(IY+4AH
,'A'
0022
LD
(IY+4BH
,'Y'
0023
JP
SAVE
0024
;here
to
load
array
0025
HEDPRT
EQU
0E6DEH
0026
TAPWT
BOU
08759B
0027
BLKADJ
BOU
0E6A98
0028
CRCMSG
BOU
0E408B
0029
MSGOUT
EQU
0E1BAH
0030
CRLF
BOU
0E2058
0031
COMAND
CALL
GETIY
0032
SERIN
BOU
0E2DAB
0033
LD
(IY+3DB)
,408
0034
LD
B,l
0035
CALL
CMOTON
0036
CALL
TAPWT
;modified
GETHED
0037
PUS8
IY
0038
pop
IX
0039
LD
B,10H
0040
GETHD1
CALL
SERIN
0041
JR
Z,LOAD10-$
0042
LD
(IX+57H)
,A
0043
INC
IX
0044
DJNZ
GETBD1-$
0045 LD B,(IY+46H)
;CRC
chkbit
0046
CALL
SERIN
0047
CP
B
0048
JR
Z,OONTIN-$
0049
JR
ERROR-$
0050
CONTIN
CALL
HEDPRT
0051 ;Tape
will
only
load
into
arra¥
area
0052
;set
by
BASIC,
not
area
specifled
by
0053
;the
header
on
the
tape.
0054
LD
HL,
(ARRAY)
0055
LD
E,
(IY+5EH)
0056
LD
D,(IY+5FH)
0057
;DE
now
> end
of
array
area
0058
;HL
now
>
start
of
array
area
0059
CALL
TAPWT
0060
LOAD8
CALL
BLKADJ
0061
JR
Z,LOAD18-$
8062
LOAD9
CALL
SERIN
0063
JR
Z,LOADl0-$
8864
LD
(HL)
,A
0065
INC
BL
0066
DJNZ
LOAD9-$
0067
;CRC
check -
load
next
if
error
0068
LD
B,(IY+46H)
;CRC
byte
0069
CALL
SERIN
0070
CP
B
0071 JR
Z,LOAD8-$
0072
ERROR
LD
HL,CRCMSG
0873
CALL
MSGOUT
007
4
CALL
CRLF
0075
STAGE1
JR
COMANO-$;next
if
error
007
6
LOAD10
JP
CMOTOF
ARRAY
CMOTOF
CONTIN
END
GETIY
LOAD8
SAVE
TAPWT
nB9
BLKADJ
E2AF
CMOTON
0053
CRCMSG
01BB
ERROR
E1A2
HEDPRT
0062
LOAD9
E65C
SERIN
E759
E6A9
CARRET
E28A
COMANO
E408
CRLF
0079
GETHD1
E6DE
LOAD10
0067
MSGOUT
E2DA
STAGE1
E453
0027
E205
003C
0084
ElBA
01')82
SORCERER'S APPRENTICE 93
.
«<
CLASSIPIBD ADS
>>>
$1/line
$l/line
=============================
POB BALBI 32K
Sorcerer
Model
I,
W /
BASIC
and Development
Pacs
cassette
. and monitor. Contact
AoL.
Cavalieri,
401 Bustleton Pike, Churchville,
PA
18966.
. .
=============================
ROM
PAC NOTBBOOK
#,
by
J
abn
de Rivaz
In
my
lilt
article,
I mentioned the
printing
of
gr aphs
on
the
MX80F
/T
from
Bllic,
a.
u.ed
in
RTL'.
stock.
and
.hare.
program -the
one
that
takes
inflation
into
account.
In
orda
to
genaate
graphics
that
are
.imilar
to
thoae
u.ed
In
the
MX80, a
abort
machine code program
is
u.ed.
This
is
a
talk
ellia
to
carry
out
in
machine code,
and
the
routine
can
be
POKEd
in,
u.ed,
and
the
.pace
then
u.ed
for
another
machine code
program
lata
on.
The
graphi:.
are
small
blob.
that
reduce
dle
rCiolution
of
each
puel
from the
Sorcaa's
8 z
8
to
the
TRS80'.
Zz).
The
fit
isn't
ez
act,
.0
the
middle ones
are
one
dot
amalia.
However
this
doesn't
show
in
the
printed
results.
These gr &pbic. are
al.o
u.ed
in
RTL'.
DRAWZ
program,
whiCh
enables
medium
resolution
graphic
pktures
to
be
drawn
on
the
screen
and
added
to
Buic
program.
without
re-typing
lou
of
POKB..
(DRAWl
i.
.smilar
but
hiah
resolution).
The
routine
work.
by
counting
up
in
register
B
and
then
tating
bits
to
determine whi:h
numbaa
are
to
be
loaded
into
the
graphic
defining
memory.
The
IX
regiata
points
to
the
graphic
defining
memory,
and
a
subroutine
"SBT"
is
called
each time
this is
to
be
let.
In
orda
to
print
the
screen
out
on
the
MX80F/T,
the
graphicl
characters
have
to
be
lI.iJned
new
codes.
In
addition,
a
line
1.
left
at
the
top
to
allow
non-printed
mes.ages
to
be
PUled
to
dle
opaator.
Bach
bit
of
scrCCD
memory is tested
in
turn.
If
it
contain.
a
byte
whoae
7th
bit
is
.et,
then
it
is
a
graphi:
not
a
.tandard
ASCII character. Therefore
it
haa
ZOH
subtracted
.0
II
to
comply
with
the
MX80'. graphic
.et,
and
is
lent
to
the
printa.
Ordinary
ASCII
char
acta.
are
printed
aa
usull.
The
program would
be
confu.ed
if
there
wae
any
other
graphics
apart
from
TRS80
puel.
on
the
screen,
.0
it
i.
left
up
to
the
opaator
to
ensure
this
does
not
take
place.
The
routine
al.o
in.erts
carriage
returns
at
the
end.
of
lines.
The
lrinta
driva
itself
is a
.tandar
one
which
prcwides
line
feed..
If
your
printer
i.
switched
to
auto
line
fced repl ace
lina
3Z-33 inclusive
with
NOPs.
With
care,
thae
routines
can
be
used
with
otha
printa.
whi:h
have
TRS80
type
pud
graDhics.
Thae
is,
of
courac,
the
~X80F
/TZ
high
resolution
plotting
feature
available
on
these
printer.,
but
the
Sorcerer
i.
limited
by
programablc
graphk
space
aa
to
how much bith
resolution
plotting
can
be
done
on
scrCCD,
and
these medium
resolution
programs
are
perfectly adequate
for
many
pUrPoaes.
Here is
the
printa
driva
routine
to
ttanafa
all
but
the
fir.t
line
from
the
screen:
94
EXIDY
Z-S0
ASSEMBLER
ADDR
OBJECT
ST
0001
0002
This
sets
up 6
pixel
graphics.
'1001 2lS0FE
'1113 111110
'1116
3EII
'1018
CB41
'IlIA
2802
'IOIC
3EFO
'OIIE
CB49
'Inl
2812
'on2
C61F
'1114
77
'0915
23
'0116
77
'1017
23
'1918 77
'1119
23
'lIlA
3EII
'I01C
CB51
'111E 2812
'1121 3EFI
'1122
CB59
'1124 2812
'1126
C61F
'1128
77
'1129
23
'112A
77
'112B
23
'112C
3EIO
'Ol2E
CB61
'1031 2812
'1132 3EFI
'1134
CB69
'1136 2812
'0138
C61F
'113A
77
'113B
23
'I03C
77
'1130
23
'113E
77
'113F
23
'1141
IC
'1141
79
'1142
FE41
'1144
C8
'1145
18BF
ERRORS=IIIO
0003
0004
0005
0""6
START
1107
IllS
0009
IllS
Xl
lOll
0112
1113
X2
0114
IllS
1016
1117
1118
In9
1120
1121
0122
1123
X3
1124
0125
1126
X4
IIV
1128
1129
1131
1131
1132
0033
1134
X5
1135
1136
1137
X6
113S
1139
IIU
1141
1142
1143
1144
1045
1146
1147
START
X3
X6
111116
Xl
1122
X4
113A
LD
LD
LD
BIT
JR
LD
BIT
JR
ADD
LD
INC
LD
INC
LD
INC
LD
BIT
JR
LD
BIT
JR
ADD
LD
INC
LD
INC
LD
BIT
JR
LD
BIT
JR
ADD
LD
INC
LD
INC
LD
INC
INC
LD
CP
RET
JR
OOIE
X2
1028
X5
HL,IFEIOH
BC,I
A,O
I,C
Z,X1-$
A,OFIH
1,C
Z,X2-$
A,OFH
(HLl,A
HL
(HLl,A
HL
(HLl,A
HL
A,O
2,C
Z,X3-$
A.IFOH
3,C
Z,X4-$
A,OFH
(HLl,A
HL
(HLl,A
HL
A.B
4,C
Z,X5-$
A.OFIH
5,C
Z,X6-$
A,IFH
(HLl,A
HL
(HLl,A
HL
(HLl,A
HL
C
A.C
64
Z
START-$
0914
1034
EXIDY
Z-80
ASSEMBLER
ADDR
OBJECT
ST
No.
>FICI
>F7FF
>E215
'1IC4
'IOC7
'IICA
'IICC
'OICE
'IICF
'1101
'1103
'1104
'0105
'1107
'1009
'IIDB
'OIOC
'lODE
'IIEI
'11E2
,
IOE4
21CIFO
llFFF7
IE21
1821
7E
CB7F
2891
91
F5
DBFE
CB77
28FA
F1
D3FF
FEID
211114
3EIA
lSEE
lee1
;
1112
;A
screen
printer
for
MX81FT
1013
;with
128 x
91
resolution.
The
0114
;Sorcerer's
special
graphics
must
lOIS
;a1ready
have been
set
up
to
get
the
1116
;correct
screen
image. and no
other
1117
,characters
with
bit
7
set
must be
1118
;present
on
screen.
1119 ,
1110
STOP
EQU
IFICIH
1111
;allows
for
a
top
message
not
to
be
BI12
;printed
out.
lel3
SBOT
EQU
0114
CRLF
EQU
IllS
ORG
lel6
LD
lel7
LD
IllS
LD
1119
JR
0121
START
LD
1121
BIT
1122
JR
111123
SUB
1124
OUT
PUSH
1025
PRINT
IN
1126
BIT
1027
JR
1128
FOP
1129
OUT
1131
CP
1131
JR
1032
LD
1033
JR
IF7FFH
OE205H
OC4H
HL,STOP
DE,SBOT
C,2IH
;MX80
CARRET-$
A,
(BL)
7,A
Z,OUT-$
C
AF
A,
(OFEHl
6,A
Z,PRINT-$
AF
(OFFH)
,A
IDH
NZ,NEXT-$
A,IAH
OUT-$
displacement
SORCERER'S
APPRENTICE
June
1
at
July
15,1982
c
@
) G
'00E6
23
0034
NEXT
INC
HL
'00E7
E5
0035
PUSH
HL
'00E8
ED52
0036
SBC
HL,DE
'00EA
E1
0037
pop
HL
'00EB
C8
0038
RET
Z
'00EC
10E0
0039
DJNZ
START-$
'00EE
3E00
0040
CARRET
LD
A,00H
'00F0
0641 0041
LD
B,650
'00F2
2B
0042
DEC
HL
'00F3
180F
0043
JR
OUT-$
ERRORS=0000
CARRET
00EE
CRLF
E205
NEXT
00E6
OUT
0004
PRINT
0005
SBOT
F7FF
START
00CE
STOP
F0C0
MAGIC SQUARB
by
Emiliano
De L
aurentiis
(This
article
is
reprinted
from
the
Oct/Nov,
1980 issue of the
S.U.N.)
What is a magic square? A magic square is a square
matrix
of odd numbered
sides, where each
cell
of the
matrix
holds
an
integer
from 1
to
n where n is the
number of.
cells
in
the
matrix.
Furthermore,
all
the
columns,
all
the rows,
and
all
the.
diagonals
must
add
to
the
s~me
number. An example of a
3:1:3
magic
square
is
presented. below.
The
.followlO,g
program
will
produce
any
nx
n magic
square.,
I present
it
here ~
an,illustration
of
the
algorithm
(called
a
production
system
10
the
program)
whlCh
will
produce such a square. The size
of
the magic
square you produce
is
only
limited by the
size
of your Sorcerer's memory.
3 x 3
MAGIC
S<PARE
8 1 6
15
3 5 7
15
4 9 2
15
--------
15 15
15
diagonal
s=15
PRCXiRAM
LISTING
1
REM
***
This
program
will
draw
any
size
magic
square
***
2
REM
*****
By
Emi1iano
De
Laurentiis
*****
3
REM
====================================================
4 PRINT CHR$(12)
5 INPUT
"Size
of
proposed
magic
square";M:OIM
C{M,M)
6 PRINT
CHR$(12):PRINT:PRINT
8 :
9
REM
N=No.
in
square;
X=Vertical
Axis;
Y=Horizontal
Axis
10
N=0:X=1:REM
Initialize
values
15
Y=INT{M/2+.5):REM
find
middle
position
of
co-ordinates
(l,Y)
16
REM
solution'
must
start
at
co-ordinates
(l,y)
where
Y
is
center
20 :
30
N=N+1:C(X,Y)=N:REM
set
value
N
at
position
X,Y
35
:
36
REM
==========PROOUCTION
SYSTEM
==========
40
IF
N=M*M
THEN
100
50
IF
X-I
< 1
AND
Y+1
> M
THEN
X=X+1:GOTO
30
60
IF
X-1<1
THEN
X=M:
Y=Y+1:
GOTO
30
70
IF
Y+1
> M
THEN
Y=1:X=X-1:GOTO
30
80
IF
C(X-1,Y+1)
<>
0
THEN
X=X+1:GOTO
30
90
X=X-1:Y=Y+1:GOTO
30
95
:
98
REM
print
matrix
99
:
100
FOR
A=l
TO
M:
FOR
B=l
TO
M
105
D=D+C(A,B)
106
IF
C(A,B)<100
THEN
PRINT"
";
107
IF
C(A,B)<10
THEN
PRINT"
";
110
PRINT
C(A,B);
"
";
120
NEXT
B:PRINT
"=";0:0=0:NEXT
A
125
:
126
FOR
1=1
TO
M*6:PRINT
"-";:NEXT
I:PRINT
127
:
130
FOR
B=l
TO
M:FOR
A=l
TO
M
140
D=D+C(A,B)
142
NEXT
A
145
IF
0<100
THEN
PRINT"
";
147
IF
0<10
THEN
PRINT"
";
150
PRINT
0;"
";:0=0:NEXT
B
155
PRINT
""
160
PRINT
170
FOR
A=l
TO
M:B=l
180
O=D+C(A,B)
190
B=B+l:
NEXT
A: PRINT
"DIAGONAL
'\'=";0;
191
PRINT"
";
192
0=0
193
FOR
A=l
TO
M:
B=M
194
D=D+C(A,B)96
B=B-l:
NEXT
A: PRINT
"DIAGONAL
'/'=";0
200
PRINT CHR$(17):RUN 5:REM
Go
home
and
start
run
at
line
5
210
REM
RUN
COMMAND
CLEARS
MEMORY>
220
END
lune 1 & luly
15,
1982
SORCERER'S APPRENTICE
NOTBS
FROM
RCPM-SORCBRER
by The Sysop
++++++
Eddy
CP
1M
Modification
Does
anyone
know how
to
modify
Exidy CP/M ver.
1.42/3
from Micro-
polis
Mod
I
to
Mod
II
operation?
So
far
I've
found
that
changing
address
0123EH
in
MOVCPM
from 47H
to
9BH
and
changing
address 0 IB4H
in
FORMAT
from 26H
to
4EH
accomv,-
lishes most
of
the change. I
still
need
to
modify something
to
get
CP/M
to
write
to
the whole disk.
R.D.
HAUN
++++++
Joystkk
Standard
Arrington's
standard,
described
in
the
January
Sorcerer's Apprentice
Newsletter
(3.1),
doesn't
permit
con-
current
operation
of
the
keyboard
and
joystick
#2.
Movemen
t while
firing is
also
pr
ohibited. I believe
this
should
be changed I Using the
keyboard
should
make
it
replace
only
joystick
#1,
leaving
#2
fully
func-
tional.
Since
the keypad is
on
the
right,
joystick #1
should
be
the
right
stick
and
#2
should
be
the
left
one.
I believe g
ames
have more realism if
the
"gun
II
doesn't
have
to
stop
while
it's
firing.
But,
Arrington's
standard
has
FIRE
and
LEFT/RIGHT
controls
sharing
the
same
pins;
they
can't
be
used together.
Since
games make
far
more use of
LEFT/RIGHT
than
they
do of UP/DOWN, the FIRE
button
should be moved
to
the
UP/DOWN
pinsl
Then, you
can
fire
on
invaders
as you keep
sliding
across
the
screen,
and
shoot asteroids as you swing your
ship
around.
G.
King
++++++
Monito,
Memory
Tat
Show
The
Monitor's
TEST
command
can
produce
an
interesting
display.
If
you
>TEST
screen
RAM,
you'll
see
the
patterns
it
uses.
To
get·
things
going,
type
in
these two
lines:
SE
0=E044
(
thi
s
tur
ns
off
screen
output)
TE
F080 F800 C
(this
runs
the
show
cont
inuously)
Impress
your
friends
with
the
next
best
thing
to
blinking
lightsl
G.
King
++++++
Soa:erer
Buil:
Converter
Bob,
what is needed
on
the
RCPM
is
an
interchange
of Sorcerer Basic
programs.
Would you agree? I've
got
a
nifty
CP/M program
that
converts
ASCII
Basic
to
Sorcerer
compacted Basic
and
vice-versa.
It's
great
for
working
with
your E -Basic
progr ams, Word Processor ere ated
programs,
etc. Is
this
something
that
would be good
to
have
on
your
system?
Dan
Conway
I
told
D
an
we
would
be
glad
to
have
his
program
on
the
system.
We
now have SORBAS.OBI,
and
DOC
on
drive A:.
SysoP.
95
(Editor's
Note:
In
his
article,
"Restoring
Lost
Link
Addresses",
found
in
issue 4.3, I ames
Canning
refers
to
the
'TOSCA'
.program found
in
the
May, 1980 issue of the
S.U.~
•.
Ssnce
many
!>f
you never subscribed
to
this
pub.hca~10n,.
and
b~ck-18SUes
are
no
l.onger avail able,
that
artICle
IS
bang
repnnted
below.
We
will
also
be
repnnting
other
articles,
that
may be of
interest
to
you.)
TAPB
OUTPUT
SCANNBR
by
Jim
Burns
(This
article
is
reprinted
from
the
May, 1980 issue of
the
S.U.N.)
The
following is a
relocatable
routine
that
acts
as
a
C&ssette image dump, byp assing
ezclusion
of headers,
CR
C
bytes,
etc.
and
which does
not
bomb
out
in
the middle of
the
tape
because
it
has
one
block
that
doesn't
CRC check
properly.
11
zz_
21
zz
yy
<D
8A
E2
<D
DA
E2
C8
77
23
E5
B7
ED 52
Bl
C8
18
F2
In
DE,wwzz
ID
HL,yyu
CALL
E28A
LOAD CALL
E2DA
RETZ
ID
(HL),A
INC
HL
PUSH
HL
CEA
SBC HL,DE
PCF
HL
RETZ
JR
l.CW)
;
finish
address
;uart
address
;
call
CM<J'lUI{
; c
all
INTAPE
;on
ESC, CNTRL-C,
etc.
;clears
carry
;fin
add=
strt
add
;l.CW)-$
in
some
assemblers
For
a more sophisticated version,
that
does
strip
headers
and
CRC bytes for
SAve
and
CSAVE
files
(not
CSAVE~
fila),
lee
the
nezt
listing
called,
"TOSCA"
(Tape
Out~t
Scau).
TOSCA
is
useful
for 10adinIJ BASIC, or machine
language
files
into
the
right
position
in
memory. For
BASIC
files
l you
will
have
to
manuall"
load
the end
addresl
of tile
file
(which
should
be
at
the end of three
consecutive zeroes which mark
the
EOF for
the
BASIC
proaram).
in
~emory
locations
187-188,
189-lBA,
and
188-
lBC.
Nme
tIlDes
out
of
ten,
the
header
information
in
front
of each BASIC
statement
will
be
intact
and
you
can
LIST
the
file
to
find
out
where
the
line
with the CRC
error
is,
and
correct
it
by
typing
in
the
line
correctly.
.
If
you
.get
the
line
.numbers
out
of sequence
(like
a 65404
In
the
middl~
of
the
100~'s),
rou
probably
will
be able
to
type
that
hne
over agasn With
the
correct
line
number.
However,
if
you
get
garbage
on
your
listing,
then
the
link
bytes have been damaged. These
arc
the
rirst
two bytes
af!er
the
zero
at
the end of each BASIC
statement.
The
third
and
fourth
bytes
after
the
zero
are
the
line
number
in
beL
If
they are damaged, you
will
have
to
trace
the
links
to
the
very
f~lIt
!>ne
at
01D5-01D6,
making
sure
they
point
to
the
nez
t
hnk
In
the
sequence,
that
each
is
preceded by a
zero,
and
that
no
other zeroes occur
in
the
core
area
occupied by
the
BASIC
file.
The
last
link.
points
to
the
00
00 00 BOF mark.
~or
more.
information
!>n
header
statements,
memory
pOinter
locations
and
funCtions,
and
tape
file
formats,
get
a copy
of
the,
"Software
Internals
Manual
for the
SoJarer",
put
out
by
Qaality
Software.
The
CSAVBo
format
is
not
ezplained
in
that
manual.
The
CSAVB·
format
iSI
four
D2H's
followed
by
the
core
~age
o~the
val.ur
i~
the.
array.
It
does
not
have any
1niorm!ltlon of
It
s c1imenslons,
block
length,
or name.
That
1~
!hr
~e
array has
.to
be
dimensioned
before
rou
CLOAD
It.
Since
the
tape
Image
contains
no
informatson
on
the
array'l
name,
the
first
array
you
position
to
on
the
tape,
will
be
loaded
into
the
array
specified
in
the CLOAD·
command. NOTB: Since
RUN
re-initializes
the
variable
space,
you
will
have
to
ule
GOTO
(line
number)
to
start
the
progum
(BASIC
doa
patch
it's
pointers
to
remember
it
made space
for
the
loaded
array).
Some
final
notes
on
the
two drivers:
NOTB
11
The
call
to
CMOTON is necessary even
if
you
don't
ule
motor
control
for your
cassette.
Ezidy's
procedure
at
the
end of
tape
handling,
or
errors
(at
least
In
the
Monitor),
is
to
call
CMOTOF.
One
of CMOTOF's
action.,
is
to
reset the
UART
to
300
baud
regardless of
the
SET
parameter.
CMOTON sets
the
UART
to
the
desired
baud
rate.
N~TE
2:
The
f~st
brte
dumped from
tape
using these
rouunes,
may.
be
shifted
eft
one
or two
bits,
as
the
UART
may
not
be
1n sync
yet.
Ez
ample:
The
first
D2H
(1101
0010),
in
~e.
first
array
I dumped, came out
MH
(1010
0100).
Th18
IS
the
same problem people have had with
the
s~ial
printer
driver
in
the,
"Technical
Manual".
It
works
fIDe for block
output
from
the
Sorcerer,
but
gets
out
of
sync
(sp.~adil:ally)
with
keyboard
input.
Ezidy software
only
verifies
that
part
of the
leaders
are
correct,
so
this
doesn't
cause any problems.
One
parting
question...
and
then
the
second
listing.
CLOADG
has
no
more etfect
that
CLOAD
in
my Sorcerer.
Is
anyone
using
CLOADG
for
autoload/execute?
And oh
yes, I appreciate
the
Monitor
listing
printed
in
the S.U.N.
I wrote a Z80 disassembler
in
BASIC,
but
alas,
no
printer
I
Even so, I
had
transclibed
the
video
output
for
the
first
lK
br
hand.
Along came
the
S.U.N. with the other 3K
to
p acate
my
weary
hand
and
brain.
1OSCA- A
Routine
to
Scan
Tape
Output
(06
nn
ID
B,
N)
;
optional
for
motor
control
Q)
SA
E2
CALL
E28A ;
call
ODI'CN
06 02 ID
B,2
;for
both
101
byte
hdrs
Q)
59
E7
CALL
E759 ;
call
HEADERCK
10
FB
D]NZ,-3
;
to
CALL
HEADERCK
21
zz
yy
11
zz
ww
Q)
DA
E2
C8
77
23
E5
B7
ED
52
El
C8
10 F2
Q)
DA
E2
18
ED
LOAD
In
HL,
yyzz
In
DE,
wwzz
CALL
E2DA
RETZ
ID(HL)
, A
INC
HL
PUSH
HL
aiA
SBC HL,
DE
PCF
HL
RET
Z
DJNZ
l.CW)
CALL
E2DA
JR
Lew)
;
start
address
;
finish
addr
es
s
;
call
INTAPE
; (ESC)
returns
call
er
;done
;load
256
bytes
;
d\DJDlY
CRC
re
ad
;
repeat
Jim
Burns,
2160
Matket
St.
Rm. 45
San
Flancisco,
CA,
94114.
PSEUDO
'PRINT
USING'
by Neil Barbu
to
The
routine
listed
below
is
one
that
I have used
to
overcome the SOIcerer's
lack
of
'PRINT USING'.
My
entry
routines are
usually
from cassette
but
I have
used keyboard
input
and
loops,
then
branch
hom
line
7190
to
a
columnar
printout.
5
REM
-
SAMPLE
ENTRY
ROUTINE
11iJ
LET
C=.25
21iJ
FOR
0=1
TO
11iJ
31iJ
LET
A=INT(11iJ1iJ*(Q*C)+.5)/11iJ1iJ
35
REM
-
NORMAL
PRINTOUT
41iJ
PRINT
A,
45
REM
-
FORMATTED
PRINTOUT
51iJ
GOSUB
71iJ1iJ1iJ
61iJ
NEXT
Q
71iJ
STOP
71iJ1iJ1iJ
REM
SUBROUTINE
-
FORMATTED
PRINTOUT
71iJ11iJ
LET
A$=STR$(A)
71iJ21iJ
LET
L=LEN(A$)
71iJ31iJ
IF
L=2
GOTO
7131iJ
71iJ41iJ
IF
MID$(A$,(L-1),1)=D.D
GOTO
711iJ1iJ
71iJ51iJ
IF
MID$(A$,(L-2),1)=D.D
GOTO
7171iJ
71iJ61iJ
GOTO
7l31iJ
7l1iJ1iJ
LET
B$=DIiJD
7l11iJ
GOTO
7l51iJ
7131iJ
LET
B$=D.IiJIiJ
D
7151iJ
LET
A$=A$+B$
7l71iJ
LET
L=LEN(A$)
7191iJ
PRINT
TAB(31iJ-L)1A$
7199 RETURN.
96
SORCERER'S
APPRENTICE
June 1 &
July
15,1982
I
@
The
Making
of,
nDUBL:
A
DOGFIGHT
IN
SPACB n
by Bill Boucher
In
response
to
Don
Gottwald's
review
of,
"DUEL:
A
Dogfight
In
Space"
, this
article
describes the
techniques I used
to
produce
the
high-
resolution
displ
ays
in
the
game.
From the
start,
I
wanted
to
write a
video game
that
would
fully
use
the
Sorcerer's
graphics
capabilities.
Re-
alistic
action,
and
an
overall
good
look
were
my
prime
considerations.
DUEL is a game for two
players,
where each
player
controls
a
space-
ship,
and
earns
points
by blowing
up
his
opponent's
ship.
The
players,
therefore,
do
not
compete Wlth the
machine,
but
with
each
other.
The
ships
can
rotate
right,
or
left
in
22
1/2
0 degree
increments,
accelerate
forward,
and
fire
missiles, with each
ship having up
to
five missiles
on
the
saeen
at
one
time. Because there is
no
gravity
or
friction,
once
your ship
is
moving, there are
only
two ways
to
stop
it;
you
can
apply
thrust
in
the
reverse
direction,
or
get
blown
up
by
your
opponent.
A ship
encountering
the
edge of
the
saeen
wraps
around
to
the
other
side. A
space-probe
traverses
the
saeen
at
random
intervals.
Crashing
into
it,
costs
a
player
five
points,
while
destroying
it,
earns
the
player
a
five-point
bonus.
The
adjustable
parameters
in
each
game,
rotate
speed, ship speed, missile
speed,
and
firing
rate,
can
change
the
nature
and
strategy
of
the
game.
For
instance,
with
fast
ships
and
slow missiles,
the
ships
can
out-
maneuver enemy missiles, which is
not
possible
with
an
opposite
set
up.
The
ships,
positioned
on
the
full
240 x
512
pixel
grid,
move
smoothly
and
realistically!
and
because
the
back-
ground
startield
remains
intact
as
the
ships
pass
over
it,
there
is
no
visual
evidence
of
the
char
acter
grid.
The
explosions
are
detailed,
and
animated
with
flying
debris.
Because
of
the
complexity
of
the
program,
it
would
be impractical
to
describe
the
workings
of
the
program
in
every
det
ail.
So,
instead
I
will
give a
general
description
of
the key
routines.
This,
I hope, may give
the
reader some programming ideas
to
pursue.
The
program
redefines
the
graphics
character
used
for
each ship every time
it
positions
a ship
on
the
screen,
thus
making
possible
the
preservation
of
the
background
stars,
and
the
bit
position
of
the
ship. Whenever
the
program
moves a ship
on
the
screen,
the
following
takes
place:
1.
From
the
desired
location
on
the
saeen,
the
progr
am
copies
into
memory a
portion
of
the
stadield
(a
3 x 3
block
of
the
characters).
2.
The
program
positions
the ship
image,
stored
as
a 2 x 2
block
of
char
acter
s,
within
the
3 x 3
starfield
block.
It
does
this
by
shifting
the
ship image
~tes
to
the
correct
bit
position
an
ORing
them
into
the
copy of
the
star
fiel
d.
3.
The
program
loads
the
resulting
image
into
the
correct
area of
the
user
-char
acter
set.
4.
The
progr
am
then
puts
the
redefined graphics
characters
onto
the
screen.
June
1
&:
July 15,
1982
With
this
technique,
the
location
of
the
ship
is
not
hindered
by
character
boundaries;
the
ship's
center
can
be
placed
on
anyone
of the 240 x 512
pixels
on
the
screen.
The
code
that
accomplishes this
task
is
the
heart
of
the
program.
It
demonstrated
to
me
how
software
can
squeeze
the
most
out
of
a given piece of hardware.
The
explosions
are accomplished
in
a
similar
way.
There
are two
nine-
frame
animated
explosions
in
the
game.
The
program successively ORs
the
nine
images of
the
explosion
into
the
starfield,
and
then
puts
them
on
the
saeen,
resulting
in
a
starfield
continually
preserved behind
the
explosion.
The
basic
construction
of
the
progr
am
is a big
loop
of sever
al
subroutines.
Each
function,
such
as
ship movement, missile advancement,
explosions,
etc.,
has
its
own
sub-
routine.
This,
however,
aeated
a
timing
problem because
the
time
to
complete
the
loop
varied
as
the
amount
of
subroutme
activity varied.
To
solve
this
problem,
the
program
uses
the
serial
·output
port
as
a
timer:
at
the
beginning
of
the
loop,
it
sends
a
byte
to
the
serial
output
port;
at
the
end,
it
waits
for
the
"transmit
buffer
empty"
bit
to
change
before
returning
to
the
start
of
the
loop.
Thus,
a
constant
loop
time of about 30
milliseconds
was
achieved.
As a
final
note,
I
want
to
thank
Dave Grigsby who provided some
important
assistance
in
the
creation
of
the
high-resolution
ship
position-
ing
routines,
solved
my
timing
problem,
and
developed
the
random-
number
generator
used
to
form
the
starfield.
Thanks
also
to
Ron
Julian
of
Dayspring
Computer
Enterprises
who conceived
the
game's
introduction.
TIPS
by
Kent
Regal
1.
TIP
-When
inputting
many
print
statements
in
a BASIC
program,
it
is
not
necessary
to
use
closing
quotation
marks
at
the
end
of
each
statement.
Closing
quotes
are needed
at
the end of
the
last
PRINT
statement
only.
Such as:
400
PRINT"Words
405
PRINT"
that
you
410
PRINT"want
to
print
415
PRINT"such
as
text
in
a
420
PRINT"program
that
needs
425
PRINT"multiple
lines
"
This
method saves
the
hassle
of
putting
in
the
extra
quotes
and
probably
saves
program
space
as
well.
2.
TIP
-
The
Exidy
Word Processor
instructions
for
the
command mode
commands imply
that
they are
to
be
lower case
letters.
The
com-
mands
can
be
in
either lower or
upper case
on
my
system.
3.
TIP
-With
all
due respect
to
Arkay Engravers,
Inc,
I've chosen
to
use
small
embossed
plastic
label
letters.
The
initials
I
us,
remind me
of
what
key does
what.
SORCERER'S APPRENTICE
4.
TIP
-When
using
random
num-
bers,
the
binary
string
(i.e.
I,
2,
4,
S,
16,
32, etc.) produces the
same random number sequence.
This
can
be a problem when
trying
to
get a
different
strings
of random numbers.
5. REQUEST -
I'd
like
to
obtain
SoA.
Volumes
1-
& 2
on
a
loan
basis
since these
are
now
out
of
print.
I would pay
postage
both
ways
and
guarantee
they would be
returned
in
the
same
condition
as
received, by sending them
in
a
heavy duty
mailer
envelope.
Kent
Regal,
P.O. Box 47S,
Marshall,
WI
53559.
A SUPBR
PRINTBR
INTBRFACB
by
Ernest
E.
Bergmann
I
shall
describe how I have
interfaced
the
Epson
MX-SO
printer
(any
Centronics
compatible
printer
could
have been
used).
The
software
should
be
of
particular
interest
because
it
can
be
installed
for
use
with
both
the
BASIC
and
Development
ROM
Pacs.
The
software
provides
facilities
to
turn
on/off
the
printing
of program
output,
to
stop
and
resume
the
program's
output,
to
type
the
current
contents
of
the
video
screen
(without
disturbing
the
display
or
the
program),
to
send
special
control
characters
to
the
printer
(but
not
to
the
program
I
),
and,
even,
to
jump
to
the
Monitor
at
will.
I
shall
divide
my
description
into
several
parts:
how
to
use
the
interface;
how
the
software
works;
the
wiring of
the
MX-SO
printer;
and,
making your own
cassette
of the
software.
Using
The
Interface
Turn
on
the
computer
and
printer
and
en
ter
the
Monitor.
If
no
ROM
Pac is
inserted,
you
will
be
in
the
Monitor
to
begin
with.
If
you are
in
BASIC, type: BYE.
If
you are
using
the
Development
Pac,
"execute"
E003.
From
the
Monitor,
issue the
command,
"LOG",
and
read
in
the
cassette
that
cont
ains
the
interf
ace
software.
Since
the
file
is
very
short
(less
than
one
"page"),
the
program
loads
in
only
a
few
seconds.
One
ill
back
again
in
the
Monitor
(but
indeed
the
interface
has
been
instal-
led).
If
you need
to
return
to
the
ROM
Pac, you
should
now use
the
Monitor
command,
"PP".
You
could
do
what
you did
before,
and
not
see
any
difference.
Listing
Use a
control-P
to
turn
the
printing
on/off
of
the
output
that
is
going
to
the
video screen.
For
ex ample, suppose you are
using
BASIC
and
want
to
print
the
listing
of
your
program.
Type:
LIST
<control-P>,
carriage
return
<CR>.
The
listing
that
appears
on
the
screen is
appearing
also
on
the
printer.
When
the
listing
is
complete,
you may wish
to
type
another
control-P
to
prevent
further
output
from going
to
the
97
prinecr-.
St_tina
a
Stappq
Prcaaing
the
key
combination,
con-
tro1-S,
will
Itap
output.
Your
pro-
gr
am wBI
relllllDe
activity
aa
800n as
another
key
is
struck
(or
another
contro1-S).
Thi.
feature
is a
great
conven~ce
even
without
a
pdnter;
it
sure
beats
having
to
keep
the
RUN/STOP
key
conuantly
pressed
to
freeze
a BASIC
programl
During
the
pause
generated
by
the
control-S,
you
can
u.e
other
features
of
the
interface
.oftware,
such
as
the
control-P
or
typing
the
current
screen,
aee below:
Screen
D_p
It
often
happens
that
I
want
to
record
on
paper
what
is
on
the
screen
as
aecuratay
a.
possible;
to
take
a
"snap
abot"
of
the
screen.
I need
to
type
a
contro1-T
which causes
the
character.
at
ea~
location
on
the
screen
to
be
ezamined
in
turn,
and
output
to
the
pdnter.
Of
couree,
graphic
characters
wUl
not
be
handled
properly
by
the
printer,
but
what
can
you
ezpect?
The
eqhth
bit,
is
not
sent,
to
preserve
compatibBity
with
C~ntronics
printer
I.
Graphic symbols .
are
not
atandardized
in
any
cue.
Bsidai
A
contro1-
A causes a
jump
to
the
Monitor
warm
entry
point
(OE003H).
~t
is
uleful
in
places
where
condw-
In,
to
aecute
the
program
would
be
panful.
For
ezample,
the
editor
in
the
Devel~ent
Pac
does
not
have a
"fast
ait
,
10
I
type
control-
A
and
then
isaue
the
"PP"
command
to
re-
enter
the
ROM
Pac.
Spcdal
CAdCII
There
are
quite
a few special
character
lequences
that
can
be
sent
to
the
MX-80
pdnter
to
achieve
Ipecial
effects
auch l1li
condensed,
apanded,
emphasized,
and
double
pnnted
letters.
Sequences
also
aist
to
control
vertical
(line)
BJ?acinJ.
These
sequences
are
detailed
In
the
operation
manual
for
the
printer.
Usually,
I
want
to
send
these
sequences
to
the
printer
but
not
to
the
program.
To
do
'0, I
type
a
contro1-E.
A
"blob"
should
appear
on
the
Icreen
as a
"prompt"
indicating
a'
re'edines'
for
InpUt
01
the
special
char
acter sequence
that
is
destined
for
the
printer
only.
Then
I
trvc
in
the
.equence·
it
can
be
zero
to
fIVe
characterl
in
length
and
may
include
anr
control
codes except
control-M
[a
carriage
retUrn]
or a
delete
[Ihift-RUB].
The
sequence
is
'CIlt
to
the
printer
when either a
carriage
return
is
keyed or five
characterl
have beco
CIltered.If
I
have
mistyped
the
lequence,
I
can
re-
do
it
before
it
is
lent
to
the
pdnter
by
lcqing
a
shift-RUB.
For
aample,
I
might
wish
to
type
a
listing
that
is
more
than
80
columnl
wide,
10
I choose
to
usc
condcosed
type
that
supports
lines
up
to
HZ
columns
wide. According
to
the
MX-80
manual,
the
printer
should
be
lent
a
contro1-0,
80
I
type
control-E..
control-O
and
return.
That
is
all
that
is neededl
98
Because
typing
"blind"
is
incon-
venient
and
error
prone,
I have
written
the
software
so
that
the
characters
that
are
to
be
sent
to
the
printer
are shown
on
the
screen
as
they are keyed
in.
Since
the
control
characters
are
usually
not
displayed,
all
control
codes are converted for
display
purposes
to
an
up
-arrow
(A)
and
a
printable
character.
Thus,
the
control-O
of
the
above ex ample
would
be
represented
on
the
screen
as
n.
Software
I
wrote
the
software
so
that
the
machine code
would
fit
ex ac.tly
in
manory
between
3B1i
and
OFFH
on
page
o.
The
soltware
uses
manory
also
from 33H
to
37H
1
inclusive,
as
a
buffer
that
is
used
tor
the
"special
codes",
described above.
This
choice
was
made
to
be
compatible
with
space
that
is
normally
not
utBized
in
the
Sorcerer
when
the
BASIC or
Develop-
ment
Pac is
in
use.
To
provide
so
much
function
in
so
little
space, I
needed
to
"squeeze"
the
code as much
as
possible;
readabBity
and
modulari-
ty
have
had
to
be compromised
somewhat.
For
the
software
to
be
useable,
two
routines,
CHIN
(character
in)
and
CHOUT
(character
out),
need
to
be
patched
into
the
Sorcerer's
I/O.
Although
this
could
be
achieved
by:
SET
I=8A
SET
0=65
I was
able
to
squeeze
in
the
routine,
IOINIT
(I/O
INITIALIZATION) ,
which achieves
the
lame
reaul
ts
automatically.
It
is a
commendable
feature
of
the
original
Sorcerer
software
to
provide
patch
points
for
the
I/O.
Any
software
that
is
written
for
the
Sorcerer
should
call
locations
OE009H
(RECEIVE)
and
OEOOCH
(SEND).
Such
software
then
has
its
I/O
automatically
patched
by
the
Sorcerer
Monitor
to
the
current
input
and
output
devices.
By
having
control
over
I/O,
we
can
use
all
the
"services
II
described above.
Let
us
see how
it
is
done:
CHIN
This
~aracter
input
routine
must
behave
In
a
manner
analogous
to
other
Sorcerer
input
routines.
If
no
character
is
available
yet,
it
should
retUrn
with
the
Z-flag
set.
If
a
character
is,
or
has
been,
received,
the
Z-flag
should
be
reset,
and
the
character
should
be
returned
in
the
A
register.
CHIN
beg~n8
by
calling
the
KEYBRD
routine
in
the
Monitor.
If
no
character
is
pressed
then
KEYBRD
retUrns
with
the
Z-flag
set
and
CHIN
returns
also
with
the
Z-flag
set.
But if a
char
acter is pressed,
KEYBRD
returns
it
in
the
A register
and
CHIN
proceeds
to
see if
the
character
might
be
one
of
the
special
(continued
on
page 99)
BIGHT
DIGIT
FINANCIAL
TABULATOR
by
Frank
Voss
Sorcerer's
ROM
Pac
BASIC, having
only
6
significant
figure
accuracy,
is
a severe
handicap
if
one
wants
to
utilize
it
for
financial
programming.
To
maintain
dollars
and
cents
accuracy,
the
maximum
value
that
can
be
accommodated
is
_9999.99.
Hardly
useful
for
many
purposes
in
these
times of
increasing
monetary
figures.
Through
the
use
of
some programming
techniques, I have been able
to
expand
the
range
of
financial
figures
that
can
be accommodated
to
8
significant
digits,
thus
permitting
the
maximum
amount
to
be
increased
to
_999999.99
with
full
dollars
and
cents
accur acy.
The
method
that
I've
used
to
achieve 8
digit
accuracy
for
financial
figures
is
as
follows:
a)
INPUT
of
an
amount
to
the
program
is
as
a
string
instead
of
a numerical
value.
[A_l
b)
The
A_
is
dollars
and
[0_
Ill.
C_l
sep ar ated
into
its
cents
components.
c)
The
0_
Ill.
C _
are
converted
to
their
value
amounts.
[0
Ill.
C]
d)
The
appropriate
mathanatical
functions
arc
performed.
e)
The
resultant
values are converted
back
t
string
functions.
[TO_
Ill.
TC_l
f)
The
TC
_
function
is
formatted
for
missing O's.
g)
The
final
assanbled
string
functions
are made
available
for
display
or
printing.
[TO_;".";TC_l
I've
prepared
2
programs
as
part
of
this
article.
1)
The
FINANCIAL TABULATOR
SUBROUTINE
is
for
individuals
who
would
like
to
write
a more
expanded
program.
2)
The
FINANCIAL TABULATOR is a
formatted,
working
program
that
may be used
with
a
printer.
(Output
to
Centronics
bus.)
The
programs
as
presented
here
will
add
and
subtract
amounts
and
yield
a
resultant
total.
Multiplication
and
division
of
financial
figures
can
be
done
using
the
same method
I've
outlined
above
and
is
left
to
be
done
by
the
reader.
--------------------------------
Iil
REM
1
REM
2
REM
3
REM
4
REM
5
REM
6
REM
7
REM
FINANCI~
TABULATOR
SUBROUTINE
Frank Voss 1982
Box
43
wyandotte,
MI.
48192
This
program
is
to
be used
as
a
subroutine
for
a
larger
tabulating
program.
It
permits
8
digit
accuracy
for
SORCERER'S APPRENTICE
June
1
Ill.
July 15,
1982
o
I \
\,b
@
8
REM
financial
data.
This
means
that
values
to
$999999.99
9
REM
can be accommodated
without
error.
Subtractions
are
19
REM
entered
as
a
negative
number.
The
total
is
obtained
11
REM
by
entering
T
for
the
amount.
12
REM
29
INPUT"
ENTER
AMOUNT",A$
:REM
Enter
AMOUNT
as
a
string
259IF LEFT$(A$,l)="T"
OR
LEFT$(A$,l)="t"
THEN
l5f1l
:REM
Do
Total
3f1l
LET
L=LEN(A$)
35
LET
D$=LEFT$(A$,L-3
:REM
Extract
dollars
from
string
4f1l
LET
C$=RIGHT$(A$,2)
:REM
Extract
cents
from
string
45
LET
D=VAL(D$):C=VAL(C$)
:REM
Convert
to
numerical
values
5f1l
IF
LEFT$(A$,l)="-"
THEN
C=-C
55
L=LEN
(D$)
6f1l
PRINTTAB
(4f1l-L)
"$n
,D$,"."
,C$
8f1l
LET
TD=TD+D:TC=TC+C
:REM
Do
mathematical
operations
85
IF
TC>99
THEN
TC=TC-lfllfll:TD=TD+l:GOTO
lfllfll
86
IF
TC<-99
THEN
TC=TC+lfllfll:TD=TD-l
87
IF
TC<fIl
AND
TD>fIl
THEN
TC=TC+lfllfll:TD=TD-l
88
IF
TC>fIl
AND
TS<fIl
THEN
TC=TC-lf1lfll:TD=TD+l
If1lfll
GOTO
2f1l
:REM
Loop
for
another
input
15f1l
LET
TD$=STR$(TD):LET
TC$=STR$(TC)
REM
Back
to
strings
16f1l
IF
TC=fIl
THEN
TC$="fIlfll"
:REM
Format
TC$
for
fillS
162
IF
TC>fIl
AND
TC<lf1l
THEN
TC$=nfll"+TC$
163
IF
TC<fIl
AND
TD=fIl
THEN
TD$=D-fIl"
165
LET
TC$=RIGHT$(TC$,2)
18f1l
PRINTTAB
(3f1l)
"-----------------":REM
Display
total
185
PRINT"
TOTAL
AMOUNT
=",
19f1l
L=LEN(TD$)
195
PRINTTAB(40-L)
,"$",TD$,".",TC$
2f1lfll
RETURN
:REM
BACK
TO
MAIN
PROGRAM
o
REM
FINANCIAL
TABULATOR
1
REM
2
REM
Frank Voss 1982
3
REM
Box
43
4
REM
Wyandotte, MI.48192
5
REM
6
REM
A
formatted,
working program
for
use
in
tabulating
7
REM
financial
figures
to
~999999.99
8
REM
Subtractions
are
entered
as
a
negative
number.
9
GOSUB
250
10
PRINTCHR$(17):PRINT
15
N=N+l
20
PRINTCHR$(17)
:PRINT
25
INPUT"
ENTER
AMOUNT"
,A$
26
IF
LEFT$(A$!l)="Tn
OR
LEFT$(A$,l)="tn
THEN
150
27
IF
LEN
(A$)
(j
THEN
GOTO
225
30
LET
L=LEN(A$)
35
LET.D$=LEFT$(A$,L-3):LET
C$=RIGHT$(A$,2)
4f1l
LET
D=VAL(D$l:C=VAL(C$)
45
IF
LEFT$(A$,
)="-"
THEN
C=-C
50
L=LEN
(D$)
6f1l
FOR
X=l
TO
N:PRINTCHR$(lfll),:NEXT
X
7f1l
POKE
M,147:POKE
M+l,233
:REM
Output
to
printer
71
PRINTTAB(25-L)
"$",D$,".",C$
72
POKE
M,27:POKE
M+l,224
:REM
Output
to
video
8f1l
LET
TD=TD+D:TC=TC+C
85
IF
TC>99
THEN
TC=TC-lf1lfll:TD=TD+l:GOTO
If1lfll
86
IF
TC<-99
THEN
TC=TC+lfllfll:TD=TO-l
87
IF
TC<0
AND
TO>0
THEN
TC=TC+lfllfll:TD=TD-l
88
IF
TC>fIl
AND
TO<0
THEN
TC=TC-lf1lfll:TD=TD+l
If1l0
PRINTCHR$(17):PRINT
105
PRINTTAB(3f1l)
n "
110
PRINTCHR$(17):PRINT
120
GOTO
15
150
LET
TO$=STR$(TD):LET
TC$=STR$(TC)
16f1l
IF
TC=O
THEN
TC$="0f1l"
162
IF
TC>0
AND
TC<10
THEN
TC$="0
n
+TC$
163
IF
TC<0
AND
TO=0
THEN
TO$=n-0"
165
LET
TC$=RIGHT$(TC$,2)
170
FOR
X=l
TO
N:PRINTCHR$(10)i:NEXT
X
175
POKE
M,147:POKE
M+l,233
:REM
Output
to
printer
180
PRINTTAB(17)"----------------"
185
PRINT"
TOTAL
AMOUNT
=
",
188
L=LEN(TO$)
19f1l
PRINTTAB(25-L,"$",TO$,".",TC$
195
PRINT:PRINT:PRINT
20f1l
POKE
M,27:POKE
M+l,224
:REM
Output
to
video
2f1l1
INPUT"
Press
RETURN
for
another
tabulatlon."Q$
205
TC=0:TD=0:N=2:GOTO
10
210
END
225
PRINTCHR$
(23)
,"
IMPROPER
ENTRY,
00
AGAIN
!"
23f1l
FOR
T=l
TO
5f1l0:NEXT
T
235
PRINTCHR$(23)
,TAB
(35) " "
24f1l
PRINTCHR$(23),:GOTO
20
25f1l
N=2
260
M=PEEK(-4f1l95)*256+PEEK(-4096)
27f1l
IF
M>32767
THEN
M=M-65536
275
M=M-47
280
RETURN
~
June 1 &
July
15,
1982
SORCERER'S APPRENTICE
(SUPER PRINTER
cont'd
from
p.
98)
"commands"
which
start
with
con-
trol-P,
control-T,
control-
A,
or
con
trol-E.
If
the
char acter
is
one
of
these
four
possibilities,
CHIN
returns
with
the
character
in
A
and
the
Z-
flag
reset.
Now
let
us
consider
what
happens
if
one
of
the
four
special
control
characters
had
been keyed as
four
special cases:
If
control-P
(printer
on/off)
is
pressed,
control
passes
to
the
code
labelled
CP.
CP
examines a two
byte
piece
of
memory
called
OPATCH
("output
patch")
that
should
contain
either
the
address
OEO
lBH (which
is
the
Monitor's
video
output
routine,
that
I have
named
NOLlST)
or the
address OE993H (which
is
the
Moni-
tor's
"Centronics
driver",
that
I have
named
LIST).
Whkhever address
is
found,
it
is
replaced
with
the
other
address
-at
OPATCH. Having switched
from
LIST
to
NOLlST,
or
vice
versa,
CP
returns
control
to
CHIN
to
get
the
next
character
(control-P
"does-
n't
count").
In
order
to
preserve
the
HL
register
pair,
it
was necessary
to
save
it
with
PUSH
HL;
the
correspon-
ding
POP HL
is
to
be
found
at
CHINMI
("CHIN-I).
If
a
control-T
had
been selected
(to
type
all
of
the
screent.
control
would have passed
to
CT.
::iince
this
code
has
the
potential
of messing up
both
the
BC
and
HL
register
pairs,
they
are
both
pushed
upon
entry
to
CT.
CT
ends
by
running
into
CHINM2
("CHIN-2")
whkh
pops
these
registers
and
becomes CHIN
to
fetch
another
character.
First,
CT
sends
a form feed
character
(you may
whkh
to
save
paper
by
substituting
a
carriase
return,
ODH,
here
at
location
75H),
to
the
printer
and
then
enters
a
pair
of
nested
loops.
The
innermost
loop
(lines
74-7),
reads
and
prints
64
consecutive memory
locations
(one
line)
of
the
screen
RAM.
The
outer
loop
(lines
73-80),
invokes
the
inner
loop
and
then
prints
a
carriage
return;
it
repeats
30
times,
the
number
of
lines
on
the
screen.
If
a
control-"
was
pressed,
CHIN
jumps
to
OE003H,
the
warm
reentry
point
of
the
Monitor.
Last,
if
a
control-E
is
pressed
(to
send
special
char
acter sequences
to
the
printer),
control
passes
to
CEo
First
CE saves
the
registers
that
would otherwise
be
messed up.
Then
(starting
at
CE1,
line
95),
a
"blob"
char acter
is
put
on
the
screen
to
prompt
the
user
to
enter
the
special
sequence. This sequence
will
be
placed
in
a
buffer
first
so
that
I
can
correct
an
error
before
it
reaches
the
printer.
The
address of
the
buffer
is
placed
in
HL.
B
contains
the
maximum
length
of
the
buffer
(which
is
5)
and
C
contains
an
ASCII
carriage
return.
At CC
(line
99)
a
loop
is
established
which
calls
KEYBRD
until
a
character
is
received.
Ignoring
for
the
moment
that
the
character
might
be
a
carriage
return
or
delete
(shift-RUB),
the
character
is
placed
into
the
buffer
(line
105).
Br
comparing
the
character
with
a
bank
(line
107),
CE determines
99
whecba:
or
not
the chaI
actu
is a
control
code.
If
not.
a jump is made
to
N CTRL which echoes
the
chaI
actu
to
the
video
display
and
loops
back
to
CC
(unles.
this
was
the
fifth
charactu
placed
in
the
buffu).
If
.
the
received chaI actcr
had
been a
control
code.
then
lines
109-113
are
carried
out;
a
I'"
is
then
echoed.
and
the
charactu
i.
supplciDented by 40H
which
convuts
the
control
code
to
a
printable
charactu.
If.
during
input.
a 7FH (RUB) is
encountered then a jump back
to
CE1
i.
puiormed
to
start
on
filling
BUFFER
allover
again.
If
a
CR
is
encountued
it
illdicates
that
we
finished
filhng
the
buffu
and
want
to
tranllDit
its
contents
to
the
printer
l
" a jump
to
FIN
(line
117)
accomp isbes
that.
A
u.eful
entr.Y
point,
that
is
used
by
the
above .0fCWaIe. is PRINT
(line
49).
whkh
is
the
routine
that
outputs
the
charactu
in
A
to
the
printer
only;
all
registers
are
preserved. No
IIUch
routine
niscs
in
the
Sorcuerls
Monitor
.oftware.
The
closest
.em-
blence
is
at
LIST
(OE993H):
E993 F5
PUSH
AF
E994
CD1BEO
CALL
OE01BH
;video
out
E997
Althou8h
one
can
call
LIST,
one
cannot
call
OE997H
IUCcellfully
in
order
to
drive
the
printu
uclu81Vely.
because the
.tack
level was
altued
at
08993H.
Too
bad
the
CALL
and
PUSH
instruction
had
not
been
intercha
n8edl
CHOUT
CHOUT
has
the
respon.ibility
of
outputtins
the
char acter
in
the
A
rqlltu
to
the
video
and.
if
in
the
nu.tins
nate".
should
drive
the
printer
II
well.
Furthu.
it
.hould
Check
the keyboard for a
control-S
(to
immobilize outpUt).
In
all
cases.
all
reguter.
must
be
preserved.
CHOUT
SCarts by
calling
CTRLS.
which does
not
.ave
the
accumulator
or
£118"
CTRLS has the spccific
task
of
scanning
the keyboard
and
holdin8
up
the
works whenevu a
control-S
is
.en.ed.
CTRLS
returns
almOlt
instantly.
if
no
control-S
is
prClled.
After
control
is
returned
from
CTRLS". a jump
(line
64)
to
LIST
(0899311)
or
to
NDLIST (OEOlBH).
uka
place..!.,
complccing
the
function
CHOUT.
"!"De
jump addres8
i.
at
(PATCH,
whkh
is
over-written
by
CP
(when a
control-P
is pressed)
alternatively
with
the
two possible
addres.es.
This mcchod known
as
nimproper codingn
i.
~osen
bccause
we need
to
con.erve memory space
at
all
COlt.
CTaLS
Obviousl". CTRLS (
line
130 )
should
be
dcacdbed
further.
I form a
control-S
by
first
prcaaing the CTRL
ker.
and
then.
the
S-key.
without
rclellin8
the
firn
key. CTRLS
outpUtS
first
a 3
to
the
keyboard
scannin8
port: (OFEH).
and
tests
bit:
Z from
that
.ame
port.
If
that
bit
is
.et
then
the
S-key
is
not
dcpres.ed
anJ
CTRLS rCCurn.
(line
135
).
Otherwise. a 0 is output
and
the
lime
bit
Z
i.
tested.
If
the
bit
is
set.
the
CTRL key
hllnlt
been depres.ed
and
100
ADOR
01234567
89AB
COEF
0030:
0040:
0050:
0060:
0070:
0080:
0090:
00A0:
00BI1J:
011JC0:
0000:
00EI1J:
00F0:
FF
19
97
36
C3
97
E9
E5
22
6B
00
18
80
F0
0E
IE
111J
F9
CD
40
28
C1
FE
14
3E
7F
CD
1B
B9
28
19
FE
3E
5E
CD
1B
0A
CD
1B
E0
00
18
F5
3E
OB
FE
E6
04
65
23
77
23
21
93
E9
3A
24
F5
CD
E3
3E
0C
CD
4F
00
00
20
F1
28
07
FE
IE
E0
21
33
00
7F
28
E9
77
E0
F1
CD
1B
40
21
33
00
03
03
FE
OB
C0
CD
18
E0
2A
00
F0
11 01
36
8A
23
77
C9
3E
00
F5
6B
00
BO
20
03
21
1B
E0
00
F1
C3
1B
E0 E5
C5
21
00
06
40
7E
23
CD
4F
00
C1
E1
CD
18
E0
C8
FE
10
CA
03
E0
FE
05
C0
E5
C5
01
00
05
CD
18
EI1J
28
FB
23
FE
20
30
11J9
C6
40
F5
E0
10
E0
79
CD
1B
E0
3E
70
B9
28
AC
7E
23
CD
4F
FE
E6
04
C0
3E
00
03
FE
28
FB
CD
8A
00
28
FB
C9
Oump
of
the
machine code
for
the
MX-80
printer
interface.
EXIOY
Z-80
ASSEMBLER
ADOR
OBJECT
ST
>007F
>11J11J33
>
0011J5
>0500
>I1JI1JI1JD
>E018
>0I1JFE
>000A
>000C
>E993
>E01B
>F080
>E003
>003B
003B
003E
0041
0042
0043
0045
0046
0047
0048
004A
004B
004C
8040
004F
0050
8053
0054
8057
005A
005B
0050
0060
0063
0065
0066
0069
006A
>086B
0060
006E
006F
2A00F0
1101FF
19
97
3665
23
77
23
368A
23
77
C9
3E00
F5
C397E9
E5
2193E9
3A6B00
BO
2003
2l1BE0
226B00
1824
F5
CDE300
F1
C31BE0
E5
C5
2188F0
0001
0082
0083
0804
0805
0806
0887
0008
.************************************
,
.*
*
,
,*
MX-80
INTERFACE
by
E.E.
BERGMANN
*
,*
May 24, 1981 *
.*
*
,
,************************************
0809
BLOB
0010
BUFFER
0011
BUFLEN
0012
BUFB
0813
CR
0814
KEYBRD
0015
KEYPRT
0016
LF
0017
FORMFD
0818 LIST
0019
OOLIST
0020
SCREEN
002l
WSTART
PSECT
Fl;lU
Fl;lU
Fl;lU
Fl;lU
Fl;lU
Fl;lU
Fl;lU
Fl;lU
Fl;lU
Fl;lU
Fl;lU
Fl;lU
Fl;lU
ASS
7FH
33H
5
508H
00H
0E018H
8FEH
8AH
0CH
0E993H
0E01BH
8F880H
0E003H
,RST6+3
,BUFLEN*100H
;VIDEO+MX80
;VIDEO
ONLY
;WARM
RESTART
8822
0823
0024
0025
USEFUL
ENTRY
POINTS:
8826
0027
8828
0029
0838 ,
0831 IOINIT
0032
0033
0834
0035
0036
8037
8038
0039
0849
0041
0042
0043
0044
0845
0046
0847 ,
0048
CRPR
0049
PRINT
8058
0051 ,
0052
CP
PUSH
0053
0054
0055
0856
0057
0058
STHL
0059
8060 ,
0061
CHOUT
0062
0063
0064
0865
OPATCH
0066
,
0867
CT
0068
8069
GLOBAL
CHOUT
GLOBAL
CHIN
GLOBAL
IOINIT
GLOBAL
PRINT
ORG
3BH
;AFTER
RST7
;WILL
PATCH
'!HE
I/O
WI'!H
;CHIN
AND
CHOUT
;
IN
'!HE
INTERESTS
OF
SPACE,
;IOINIT
DOES
NOT
SAVE
REGISTERS
LD
HL,(0F008H)
LD
DE,0FF92H+3FH
ADD
HL,DE
SUB
A
,PAGE
0
LD
(HL)
,CHOUT
INC
HL
LD
(HL)
,A
INC
HL
LD
(HL)
,CHIN
INC
HL
LD
(HL)
,A
RET
LD
PUSH
JP
A,CR
AF
LIST+4
;MX-80
ONLY
HL
LD
LD
CP
JR
LD
LD
JR
PUSH
CALL
POP
JP
Fl;lU
PUSH
PUSH
LD
;CTRL-P
HL,LIST
;TOOGLE
A,
(OPATCH)
L
NZ,STHL-$
HL,OOLIST
(OPATCH)
,
HL
CHINM1-$
AF
CTRLS
PRINT
AF
NOLIST
$-2
;
OVERWRITTEN
HL
;CTRL-T
BC
;TYPES
SCREEN
HL,SCREEN
SORCERER'S
APPRENTICE
JWIC
1 & July 15,
1982
()
f ,
" J
0072
0074
0076
0079
007B
007C
0070
0080
0082
0085
0086
0088
0089
008A
0080
008E
0090
0092
0094
0096
0098
009B
0090
009E
009F
00M
0M2
00AS
00A8
00AB
00AE
00B0
00Bl
00B3
00B5
00B7
00B8
00B9
0rilBB
0rilBO
0rilBF
0rilC0
00C2
00C5
00C6
0rilC9
00CB
00CC
ril0CF
0001
0004
0005
0008
0009
000A
000C
0000
ril00E
00El
>00E3
00E3
00E5
00E7
ril0E9
00EB
00EC
00EE
00Fril
rilrilF2
0rilF4
00F5
00F8
00FA
0rilFO
00FF
0EIE
3E0C
C04F00
0640
7E
23
C04F00
10F9
C04000
00
20Fl
Cl
El
CD18E0
C8
FE10
28Cl
FE14
2807
FEIE
CA03E0
FEril5
C0
E5
C5
3E7F
CDIBE0
213300
010005
CD18E0
28FB
B9
2819
FE7F
28E9
77
23
FE2ril
30ril9
C64ril
F5
3E5E
CDIBE0
Fl
CDIBE0
10Eril
79
CDIBE0
3E0A
CDIBE0
40
213300
7D
B9
28AC
7E
23
CD4Fril0
18F5
3E03
03FE
OBFE
E604
Cril
3E00
03FE
OBFE
E604
C0
CD18E0
28FB
C08Mril
28FB
C9
ERRORS=0000
BLOB
0137F
BUFLEN
131305
CEI
00M
CHINM2
0088
CR
0000
CTLI
0079
FIN
00CC
KEYBRD
E018
LIST
E993
NXPR
0008
SCREEN
F080
WT
00FA
JW1e
1 & July 15,
1982
0070
0071
0072
0073
CTLl
0074
CTL2
0075
0076
0077
0078
0079
0080
0081
CHINM2
0082
CHINMI
0083
CHIN
0084
0085
0086
0087
0088
0089
01390
0091
0092
0093
CE
0094
0095
CEI
0096
0097
0098
13099
CC
13100
0101
0102
0103
0104
0105
0106
0107
0108
13109
0110
13111
0112
0113
0114
NCTRL
0115
0116
0117
FIN
0118
13119
01213
0121
13122
NXPR
0123
13124
0125
0126
0127
0128
0129 ;
01313
CTRLS
0131
0132
0133
0134
13135
0136
13137
0138
13139
13140
0141
YES
ril142
ril143
WT
0144
0145
0146
BUFB
CC
CHIN
CHOUT
CRPR
CTL2
FORMFO
KEYPRT
NCTRL
OPATCH
STHL
YES
lINT]
[INT]
LO
LD
CALL
LO
LD
INC
CALL
DJNZ
CALL
OEC
JR
pop
POP
CALL
RET
CP
JR
CP
JR
CP
JP
CP
RET
PUSH
PUSH
LO
CALL
LD
LD
CALL
JR
CP
JR
CP
JR
LD
INC
CP
JR
ADO
PUSH
10
CALL
POP
CALL
DJNZ
LD
CALL
LD
CALL
10
LD
LD
CP
JR
LD
INC
CALL
JR
10
OUT
IN
ANO
RET
10
OUT
IN
AND
RET
CALL
JR
CALL
JR
RET
C,30 ;#LINES
INSCREEN
A,
FORMFO
PRINT
B,64
;#
CHARS/LINE
A,
(HL)
HL
PRINT
CTL2-$
CRPR
C
NZ,CTLl-$
BC
HL
KEYBRD
Z
10H
;CTRL-P?
A,CP-$
14H
;CTRL-T?
Z,CT-$
lEH
ieTRL-l?
Z,WSTART
5 iCTRL-E?
NZ
HL
BC
A,
BLOB
NOLIST
HL,BUFFER
BC,BUFB+CR
KEYBRD
Z,CC-$
C
Z,FIN-$
7FH
;REOO?
Z,CEl-$
(HL)
,A
HL
, ,
NC,NCTRL-$
A,4rilH
AF
A,'
I'
NOLIST
AF
NOLIST
CC-$
A,C
NOLIST
A,LF
NOLIST
C,L
;SAVE
POSITION
HL,BUFFER
A,L
C
;AT
OLO
POSITION?
Z,CHINM2-$
A,
(HL)
HL
PRINT
NXPR-$
iCHK
FOR
CTRL-S
A,3
iIF
SO
WAIT
(KEYPRT),A;ELSE
RETURN
A,
(KEYPRT)
4
NZ
A,ril
;CTRL?
(KEYPRT)LA
A,
(KEYPR'l')
4
NZ
KEYBRD
iWAIT
NOW
z,
YES-$
CHIN
Z,WT-$
;STILL
PAGE
0
050ril
BUFFER
0rilAB
CE
0ril8A
CHINMI
0ril65
CP
0040
CT
007B
CTRLS
0033
009E
0ril89
ril053
01360
00E3
003B
000A
ErillB
rilll4F
EIl03
ril00C
lOIN IT [INT]
ril0FE
LF
00C6
NOLIST
0ril6B
PRINT
[INT]
0060
WSTART
00F5
SORCERER'S APPRENTICE
a
return
is
made
(line
140).
Thus
if
a
con
trol-S
is
keyed,
the
point
I
abdled
YES
(line
141)
is
reached.
This
point
is a
loop
that
keeps
calling
KEYBRD
until
all
keys
are
rdeased.
Flow
continues
to
a
second
loop
labdled
WT
("wait").
The
progr
am
is immobilized
here,
until
a
character
that
is
passed
on
by
CHIN
is
received.
The
placement
of
CHIN
in
this
loop
enables
me
to
use
the
commands
activated
by
control-E,
_A,
-T,
and
_Po
MX-SO
Hardware Interface
The
Epson
MX- 80
printer
appears
to
be
a very
versatile
printer,
and
consequently,
more
confusing
to
connect.
I made up a
paralld
interface
cable
with
a
57-30360
(Amphenol or
Cinch)
plug
at
the
printer
end,
and
a
DB-25P
plug
at
the
computer
end,
for
the
paralld
interface
socket.
Between
the
plugs,
I
used a six
foot
length
of 12
conductor
cable
that
I
had
lying
around.
These
are
the
connections
I
chose
finally:
EXIDY MX-80
REMARKS
1,8,25
9,14,19-30
Ground
2 10 MX- 80 ack.
4 1
Exidy
data
str.
5 8 Bit 6
6 7
Bit
5
7 6
Bit
4
16 2 Bit 0
17 3 Bit 1
18 4 Bit 2
19 5 Bit 3
The
grounding
of
Exidy
pin
25
means
that
there
is never a flBUSY"
signal.
The
MX-80
pin
9
must
be
grounded,
because
the
printer
expects
an
8th
data
bit
(normally
a
zero),
whereas
the
Sorcerer
provides
only
7
dat
a
bits
with
its
Cen
tr
onics
inter-
face.
The
MX-80
pin
14
is
grounded
so
that
the
printer
will
line
feed
automatically
after
receiving a
car-
riage
return
character;
the
Sorcerer
driver
fil
ters
out
the
L F
char
acter.
The
Cusette
The
preferable
way,
of
course,
to
generate
the
machine
code,
is
to
start
with
the
assembly code
and
assemble
it.
Since
you may
not
have
the
patience
nor
the
assembler, I have
produced
a dump of
the
machine
code
that
can
be
entered
using
the
Monitor
command,
ENter.
After
entering
the
hex
values
into
the
memory
locations
3BH
through
OFFH,
issue
the
com-
mands:
SET
X=3B
SAVE MX80
3B
FF
Of
course,
your
cassette
recorder
should
be
set
up
to
record
the
saved
program.
While
you
are
at
it,
.why
not
record
the
progr
am
sever al
tunes
over.
That
way
you
are
less
likdy
to
"lose"
the
progr
am,
and
you
will
not
need
to
rewind
the
cassette
so
frequently.
Incidentally,
installing
motor
control
for
the
cassette
recoIder(s)
is
well
worth
the
effortl
The
recorded
cassette
can
be
used
with
a
simple
"LOG"
command.
This
printer
software
will
become
your
constant
companionl.O
101
.--------FOR
THE EXIDY
SORCERERTM-----.
I
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)
==
We
think you'll like it!
P.O.
BOX
1 91 0 E U G
ENE,
0
REG
0 N
97440
( 5 0
3)
689·7409
102
SORCERER'S
APPRENTICE
,.
,
, I
cc
@
HARDWARB
NOTBS
by
Russell Flew
Sevaal
issues back I wrote a
column
about
the
S-100
Box
and
its
signals.
I
mentioned
that
I was wodcing
on
genaating
the
PHANTOMI
signal
fOI
the
SOlcela.
I have
since
leceived
many
lequests
fOI
infolmation
on
how this
signal
might be used
to
expand
memory beyond 64k.
The best method I've
seen is an
imprcwemen
t
on
the
traditional paging
method. The technique
I'll
describe frees
\{I
the
most significant address
bit and therefore allows
each page
to
have a
full
64k of
RAM.
Since the
technique adds 8 bits
to
the
address bus,
\{I
to
256
pages can be addres-
sed.
Most
importantly,
the hardware is
tr
ana
-
parent
to
existing
soft-
ware.
zoo
CPIJ
two
instruction
codes
for
LD
A,(BC)
and
LD
(BC),A. Once
these
instructions
are fetched,
the
contents
of the LS273
page-regista
are added
to
the
Z-80's
16
bit
address bus
ex
tending
it
to
24
bits.
The
next
instruction
is
then
executed
at
the
newly defined page. When
MIl
goes
to
logic 0
at
the
next
Tl,
the
flip-flop
is cleared
and
the
program resumes
at
page 0
in
main
memory. This technique
does
still
confine
program memory
to
the
56K of
RAM
that
n
DEtrDBo
LD
IBC},
A
or
.,.cs.tIcllG
c~.
::::
/'
the
Sorcaer
has
at
page 0,
but
it
allows
ova
16 megabytes of
data
memory with very
little
hardware
ova-
head.
Design
considaa-
Let
me
state right
up
front
that this
is
no
min«
modification.
It
is
intended for the
ex
perienced computerist
with a strong hardware
background and the right
equipment.
It
involves at
least
8 additional chips
that
must
be
timed and
buffered correctly
so
as
not
to
interfere with the
Sorcerer's
n«mal
opera-
tion. I outline
it
here
as
a
"think
piece"
only.
A suitable modification
for the main logic board
and S-100 box would
still
have
to
be worked
out.
illT'
r.T,~
,_
~
Clur
LDA.(8CI
'--
__
-'-
__________
--'~
FIIP"IIOp
J.1""ructiOntMcl"l~-.l
"not
tions
that
should
be
kept
in
mind
include
the
need
to
pick-up
most of these
signals
inside
the Sorcerer.
While
the
S-100
box
has
the
free address
lines
to
ex
tend
the
addressing
to
24
bits,
those
8
addition
al
lines
will
have
to
be
carried
out
of
the
Sorcaa
on
anotha
flat
cable
and
buffaed
into
the
Expansion
Box. Also,
don't
for-
get
that
the
expansion
bus is
non-selected
wheneva
the
main
logic
board
is active.
I
........
G.toG.-1<CLS04
o.t..G,too.-74l.U7
a..
0
..
10
0.,-74827
Since the
mostslgnlflcantaddre.s
bills
not required
to
define local or main memory, this hardware
modlflcallon will permit the addressing
of
up
to
64
kbytes
by
the ZSO'sU·blt address (a). Only two Instrucllons
are required to address the enllre main memory, as shown
In
the timing diagram (b).
Diagram
reprinted
with
pamission
from
Blectronic
Design,
Vol.
29,
No. 20;
copyright
Hayden
Publishing
Co.,
Inc.,
1981.
1 hope this apploach
helps
some
of
you who
are
trying
to
add more
memory.
This
method
of
memory
paging
for
the
Sorcerer, seems
to
involve
the
least
chip
count
and
has
the
The
technique
centas
on
the
bit
pattan
of two
instructions,
and
the
MIl
cycle.
If
you
look
at
both
the
timing
diagram
and
the
schematic, you
will
see
that
when
the
clock,
MIl,
at
MREQI are
all
low,
the
flip-flop
will
be
set,
00000010
or
00001010
is
on
the
data
bus.
Evay
time
the
MIl
signal
is
logic
0, we know
that
an
instruction
is
being fetched.
The
two
binary
numbers
correspond
to
the
USING
ML
ROUTINBS
FROM
THB
BASIC
PAC
by
Bill Boucher
(This
article
is
reprinted
from
the
May, 1980 issue of
the
S.U.N.)
For those
of
us
into
machine
or assembly
language,
found
seva
al
useful
subroutines
in
BAS
IC.
A
routine
at
D015
will
output
to
the
screen
the
ASCII
string
starting
at
the
memory
location
specified
by
HL.
The
string
must
be
taminated
with
a 00.
Ex
ample
routine
calling
DO
15:
0000 21 07 00
SA"IHI
ID
0003
CD
15
J:X)
CALL
0006
C9
RET
0007
48
MSGI
"H"
0008
45
"E"
0009
4C
"L"
OOOA
4C
"L"
OOOB
4F
"a'
HL,M)Gl
J:X)
15
jSet
HL
to
string
;Call
output
subr.
;Start
of
string
OOOC
00
KP
;End
of
string
Anotha
routine
at
D7BB
convats
the 16
bit
numba
in
the
HL register
pair
to
decimal
and
outputs
it
to
the
screen.
Ex
ample
calling
the
routine
at
D7BB:
0000 21
01
01 DECDJI' ID
HL,010lH
;HL=257
decimal
0003 m
BB
OJ
CALL
D7BB
jConvert
&
displ.
0006
C9
RET
Bill
Boucher, 1740
California
St.
#7,
Mount ain View,
CA,
940400
distinct
advantage
existing
software.
of causing
the
least
disruption
to
This
concept was
originally
devdoped by Henrique Malvar
Department
of
Electrical
Engineaing,
University
of
Brazil
and
was
originally
discussed
in
Electronic
Design
magazine.
Our
thanks
to
him for
sharing
his ideas
••
MBRGB
by
James E. Cooper
Jr.
I wrote
the
following
routine,
to
be
able
to
use
programs
like
Tom
Bassett's
modification
of Devin
Trussel's
RENUMber
program
(SoA.
Vol.l,
No.5),
without
having
to
type
it
in
every time.
Since
I
only
had
8K
of
memory
at
first,
using
Tom's
MERGE
program
(in
BASIC),
plus
RENUM,
left
me
with
practically
no
room
for
my
own
programs.
The
whole
reason
for
using
named files
is
to
make
keeping
track
of them easy. With every
MERGE
program
on
whICh
I have
obtained
information,
unless
it
was
disk-based,
you
had
to
position
the
tape
at
the
beginning
of
the
file
to
be MERGED.
Last
but
not
least,
that
extra
typing
needed,
such as:
EN
1 B 7 <CR>
and
etc.
is
for the
birds.
So I came
up
with
my
own MERGE.
Loadins
Instructions:
From
BASIC: type
---
CLOADG MERGE, <CR>.
From
the
Monitor:
type
-
LOG
MERGE, <CR>.
MERGE
loads
from 10H
to
F3H,
and
sets
the
input
vector
to
101i,
the
same as
typing
SE
1=10
while
in
the
Monitor.
I chose
for
MERGE
to
load
at
10H because my
Sorcaa
likes
to
"chew
up"
the
first
few
bytes of memory when I
push
the
RESET
buttons.
Operating
Instructions:
I made this
part
as
simple as I
could
(mainly
because
I'm
lazy).
When you
load
MERGE,
it
takes
ova
with
its
keyboard
input
routine,
which
just
checks for three CTRL
June
1
&:
July
15,
1982
SORCERER'S
APPRENTICE
103
--
-~---~---------------------------
key ..
whkh
uen't
used for
anything,
and
returns
everything
el.e.
MERGE
looks
for
the
following keys:
CTRL-B
:
Disables
MERGE.
You must use
this
key before
you
run
any
program which POKEs
into
low
memory. Otherwlle,
strange
things
happen,
even-
tually
causing
BASIC
to
cruh
if you POKE
in
the
wrong place
•.
CTRL-R
: Recovers a program
after
you have typed NEW,
CLOAD, or
hit
RESET.
Thi.
works
only
if
your
program
hun't
been destroyed by random POKE.
or
.tack
overfiow.
NOTB:
If
you
want
to
MBRGE
something
to
a
program you've
loaded
from a tape, I suggest you
use CTRL-R
to
readjust
the
end-of-program
pointer
before you
MERGE
anything
to
it.
The
reuon
for
this
is
that
standud
BASIC adds a
byte
to
the end of a
pro~r
am
every time you
c;SAV~
it.
In
other words,
if
lou
save a program
fiVe
tunes,
the
lut
copy wil have four
eztra
bytes
at
the
end.
These
eztra
bytes keep
MBRGE
from working
correctiy.
CTRL-R
drops these
ez u a
bytes.
CTRL-B
:
Bztend.
the program
~
MERGBing. When you
press CTRL-B, there won t be any visible chanBe
ezcept
that
CTRL-B,
CTRL-R,
and
CTRL-E
will
five! ?SN BRRORS, u
if
MERGE
had never been
Ollded.
When
you press CTRL
-R,
the
screen
.hould
show a amall flicker, however brief,
but
no
other visible signs
that
it
worked. However, when
you press
CTRL-E,
you
will
see:
Unit
# , Name ? -
di~layed
on
the screen
(or
whatever your
input
dev~e
happens
to
be).
You now have several
opuons:
1)
Hit
<CR>.
The
defaults
take
over
and
MERGE
the
fir.t
program from
tape
drive
#1.
2)
TYPE:
1,
<CR>. Same effect u 1.
3)
TYPE:
2,
<CR>.
MERGEs
the
first
program
from
tape
drive
#2.
4)
TYPE:
1,
'file
name' <CR>.
This
will
MERGE
the
program
'file
name' from
tape
drive
#1.
EXAMPLE:
To
MERGE
PROG1
from drive
#1,
TYPE:. 1,
PROG1
<CR>
5)
TYPE:
2,
'file
name' <CR>. . Same
option
u
#4,
ezcept
it
uses
tat'e
drive #2.
If
you use a
filename,
you
must
Include
the
drive
unit
#1
After you
hit
<CR>,
MERGE
will
turn
on
the specified
(or
defaulted)
drive
unit.
Then,
if a
file
name
wu
given,
it
will
.earch
the
tape
for
the
correct
file
and
MERGE
it
with
the
program
in
memory. Otherwise,
it
will
simply
MBRGB
the
nezt
file
on
tape
to
the
program
in
memory.
MERGE
adjusts
ALL
pointers
in
memory,
so
there's
no
more worrying about
typing:
0
REM,
then
delete
line
0 -
then
uying
to
remember whether or
not
you already HAD a
line
O.
Caution.
I
.UI
that
MBRGE
will
recover
your
program
after
you
wah
RESET.
This
is Uue
oolf
if you give
input
control
&ac:k
to
MERGE.
You
can
do this
in
one
of three waysl
1)
Go
to
the
Monitor
and
SET
I = 10H,
the
stut
of
MERGE.
2)
Go
to
the
Monitor
and
type
GO
E7.
MERGE
will
.et
the
input
vector for you.
3)
From
BASIC
type
the
following
line
<substitute
numbers for the
n's):
POKE
nnnn,
16: POKE
nnnn+1,o
<CR>.
IMPORTANT:
the
above
must
be
on
one
line,
or your
Sorcerer
will
hang
up,
meaning
you
will
have
to
RESET
it
again.
For 8K, 'Dnnn = 8146
For
16K,
nnnn
= 16338
For 32K,
nnnn
= 32722
For
48K,
nnnn
= 16430
You
must
be
cueful
about the programs you merge.
MERGE
doesn't
cue
what
type
of
program you
tell
it
to
get,
.0
you
must
keep
uack,
or
you'll
wute
a
lot
of time
re-typing
destroyed programs.
Whatever program you merge MUST have
line
numbers
greater
than
those already
in
memory,
or
the merge
will
be
useless
and
will
use up precious memory.
CTRL-B
CTRL-R
CTRL-E
CCIIIIJIla.d
Summary
= Disable
MERGE
and
return
to
BASIC
= Recover program
and
reset
pointers
=
Eztend
program by MERGEing
Merging
with
unit
# and name.
Works
with
Monitor
Ver
1.0,
and
Standard
BASIC
Ver
1.0
(Other
vers
ions
of
Moni
tor
and
BASIC
not
tested
as
yet.)
Copyright
(C)
1981
by
J
au
Cooper
Jr.
Equates,
in
Alphabetical
order:
;
BLADJ
BPJ3N)
BPSIO
<NIME
<INV
~
QU.F
cnu.B
cnu.E
cnu.R
FClN)
GE'IH)
GBI'IY
IDPRI'
KEYID
KNIN
MJn::N
PRINI'
SKlPF
TZMIM
IQJ
~
EQJ
EQJ
EQJ
EQJ
IQJ
IQJ
EQJ
EQJ
IQJ
~
~
EQJ
EQJ
IQJ
CRG
START
EQJ
;
CALL
JR
CP
JR
CP
JR
CP
RET
RSETI
CALL
;
ID
ID
ID
RET
RECDV
ID
ID
ID
CPIR
ID
0IlCK
ID
CR
JR
10
INC
ID
EX
JR
PNI'R
EX
INC
JR
lm:.E
IQJ
CALL
ID
CALL
CALL
PUH
CALL
PCP
10
ID
CP
CALL
ID
CP
OC3ElH
187H
lD5H
OE264H
OE23m
om
<E205H
2H
5H
12H
OE4CA1i
<E7lJ1-1
CD1A2H
OE6DJH
OE011H
OEl3Ali
OE28AH
OElBAH
OE7341-1
OE7FBH
10H
-
KE\'ID
;BASIC
LINE
POINIER
ADJUIT
;
J3N)-<E-PRCGRAM
sn:RAGE
;BASIC
PIOiRAM
S1(RAGE
; FIN) FILE
NAME
IN
IN'tJr
;A~I1
10
HEX
IN
DE
;CARRIAGE
~
;SJ3N)
~
1HEN
LF
10
aJIPtJr
;<INIRCL-B
;<INIRCL-E
;<INIRCL-R
FClN)
MESSAGE
~GET
FILE
HEADER
FR<M
TAPE
;
FIN)
MVA,
pur
rr IN
IY
;PRINI' FILE
HEADER
;KEYBQAlI)
INPUT
;KNIla
INPtJr
;Q\SSElTE
MJ'I(R
eN
;KNlla
'SIN>LINE'
;SKlP FILE
eN
TAPE
;TAPE
10
MIM:RY
TRANSFER
Z,SI'ART-_
cnu.E
Z,MERGE-_
cnu.R
Z,RECDV-_
cnu.B
;KE\'
PRESSID?
;N:>, 1RY
AGAIN
; <INIRCL-E?
;
YES
,MERGE
;<INIRCL-R
;YES,
RE<IMlR
PRCGRAM
; <INIRCL-B?
NZ
GBI'IY
HI.,KEYID
(IY+41H),L
(IY+42H),H
A,O
HI.,BPSlO+4
Be,O
(BPSTRO)
,HL
A,H
L
Z,PNI'R-_
frL
(HL)
D,
(HL)
DE
,HI.
0IlCK-_
DE
,HI.
HL
SIt:BE-_
-
QU.F
HI.,MSi
PRINI'
GBI'IY
IY
KNIN
HI.
E,l
A,
(HL)
~
NZ,a:NV
B,E
~
;N:>,~
10
BASIC
;FIN)
lIWA
;KEYBQAlI)
INPUT
RClJfINE
;IDN BITE
;HI<H BYIE
;
INPUT
IS
N:lV
'KE\'ID'
;BITE
10
FIN)
;
VHERE
10
LCXJ(
;I.CXK
'TIL
lQ.N)
fX)
ITI
;SE<IN>
LINE
START
;PIOi
J3N)?
; YES,
RESIt:BE
POINIER
;POINr
10
NEXI'
LINE
;GETEID
IN
HI.
;
+1
BYI'E
;ADJUST
POINIERS
&
~
;SKlP A
LINE
;SI'ART
~
MESSAGE
;PRINI' rr
;NEID
pm
M:MN
; & LA1ER
;GET llirr # &
NAME,
;
IF
/tN'l
;MVA
IN
HI.
;CASSETIE
1
IS
DEFJU.LT
;
INPUT
;ANY?
;YES,
GET
DRIVE
#
IN
E
;OIHERWISE,
DRIVE
# 1
; IS
1H\T
ALL
1HE
INPUf?
104 SORCERER'S
APPRENTICE
June
1 &
July
15,
1982
o
@
TAP
IN
;
RE1PT
;
FSKIP
SEI'I
JR
PlSi
CALL
PCP
ID
DEC
DEC
PlSi
lD
PtB-I
EX
CR
PlSi
EX
PUSH
PUSH
CALL
CALL
PUii
CALL
ID
CR
JR
Pl&i
lD
CALL
CALL
PCP
PCP
PCP
PUSH
IR
JR
Pl&i
PCP
lD
lD
CP
INC
JR
DJNZ
JP
CALL
PCP
lD
ID
DEC
AID
ID
ID
ID
ID
PCP
IP
PUSH
CALL
PCP
JR
JQJ
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
DEFB
CALL
lD
ID
ID
RET
Z,NEKI'-_
Be
<NAME
Be
DE,(BPIN»
DE
DE
DE
HI.,RE1PT
HI.
AF,AF'
1
AF
AF,AF'
AF
AF
au.F
MJn:N
DE
G£IH)
A,(IY+50i)
A
Z,LQ\D-_
HI.
HI.,FClID
PRINI'
IDPRT
HI.
DE
AF
AF
Z,TAPIN-_
C,TAPIN-_
IY
IX
B,5
A,
(IX+471i)
(IX+57H)
IX
NZ,FSKIP-_
NLCXP-_
TZMIM
au.F
HI.
E,
(IY+5Bi)
D,
(IY+5Bi)
DE
HI. ,DE
(BPIN),HI.
(BPIN>+2)
,HI.
(BPIN)+4 ) ,HI.
HI., (BPSIO)
DE
BIADJ
DE
SKIPF
I DE
FLCXP-_
-
'u'
'n'
,
i'
't'
, ,
'#'
, ,
" ,
'N'
,
a'
'm'
,
e'
'?
'
, ,
o
GIITIY
HI.,SI'ARI'
(IY+41H) ,
(IY+42H),H
]WIe
1 & July 15,
1982
;
YES,
I'D
NAME
;<NAME
DESTRmS B
;GIIT
NAME
KR
FI
LE
;
IDMERGE
;GET
DRIVE #
BACK
;GIIT
IN)
CF
PIO:i
; &
SAVE
FeR
I.AlER
;RE'll..mI POINI'
FRCM
;
TAPE
L<ID
;SAVE
IT
; PlVIECf FlAGS
; lU5ET Z FlAG
;MEANS
-
IXN'T
A1JIO
EXEaJIE
~GE1'
FlAGS
BACK
; JlNK,
BUT
NECESSARY
;Z
MEAt<6
I'D
NAME
;SKIP
A
UNE
;SI'ART DESIRED TAPE DRIVE
;SAVE
LOID
AIDR
;GET
HEADER
FR04
TAPE
;0iECK
FILE
1YPE
;SET FlAGS
;SKI P
HEAOOR
PRINI'
;SAVE
FeR
I.AlER
;PRINI'S
"KlN)
-"
;IDINI'IFV
FILE
10
UiER
;
RES'It:RE
LOID
AIDR
;
NAME?
;SAVE
AG\IN
;N),
MERGE
1HIS
CNE
;PUI'
IY
;
IN
IX
;NAME
LlNiIH
;
aMP
ARE
INPUI'
;
10
NAME
WANI1D
;\\KNG
NAME,
SKIP
FILE
;OK
SO FAR, KEEP
a-mcKINi
;MATQ-l
-
MERGE
PIO:iRRof)
;SKIP
ANOIHER
LINE
;
FI
RSI' PIO:i
IN)
;GET # CF BYrES IN
2nd
;
PRaiRAM
;
-1
FeR
MEM:EY
A1DR
;
IN)
CF
MERGID
PIO:iRRof)
.
IN
HI.
;SI'ART CF
VARIABLES
; SI'ART CF
ARRA'~
;SI'ART CF
FREE
MEM:EY
;AIDR
CF
2nd
LINE
;ADIUSf
SI'ACK,
WE
;
\\tN
'T
RE'I1.:RN
;ADJUSf
UNE
POINTERS
AN)
;
RE'll..mI
10
BASIC
;<DMAID
LEVEL
;
SAVE
LQID
AIDR
;SKIP FILE
;
RES'It:RE
LOID
AIDR
;FILE
LCXP
;FHD
MNA
;BBlINNINi
OF
MERGE
;lJJN
BYI'E
;HIGi
BYI'E
;INPUI'
NQ'l
'Sf
ART
,
RBLOCATBD
W-PAC
MODIFICATION
by
Terry
L.
Calvert
This
is
a
short
modification
for
the
relocated
WP
program
that
allows
users
to
store
and
recall
text
on
cassette.
The
beauty
of
this
modific
ation
is
that
it
is
shorter
than
the
existing
READ
and
WRITE
commands
in
the
WP,
and
stores
teu
in
Exidy's
standard
program
format,
rather
than
the
WP
format.
To
use
the
modific
ation:
1)
Enter
the
new codes
at
the
addresses
shown.
(For
a
WP
at
8000H,
the
first
digit
would
be
'9').
2)
You
may
zero
out
the
rest
of
the
command
areas:
6BB9-6BFB
and
6C83-6CAD.
These
areas
can
now
be
used
for
other
commands,
additional
workspace,
or
left
blank.
3)
Only
Unit
#1
is
used
to
save
and
read
programs,
but
a
unit
no.
must
still
be
entered
after
the
f
rom~t.
This
can
be
changed
by
changing
these
ocaUons:
6C60:
21
BO
6C
6C6F:
21
BO
07
delete
the
'#/'
han
praDpt
points
to
beg
inning
storage
input
of
nane.
4)
Use
the
Wand
R
commands
in
the
WP
as
normal
and
enjoy
qukker
response
from
your
Sorcerer.
Credit
belongs
to
R.
Henne
for
pointing
out
the
use
of
the
AUTOLOAD
and
AUTOSAVE
routines
in
the
Monitor
in
his,
"Mini-Word
Processor",
in
the
Book.
of
Scm:uy,
Vol.
V.
6B9C:
6B9D:
6B9E:
6B9F:
6BA0:
6BA2:
6BA4:
6BA7:
6BAA:
6BAB:
6BAE:
6BB0:
6BB2:
6BB3:
6BB4:
6BBS:
6BB6:
6C36:
6C37:
6C38:
6C39:
6C3A:
6C3C:
6C3E:
6C41:
6C44:
6C48:
6C4C:
6C4F:
6C52:
6C55:
6C58:
6C59:
6C5A:
6C5D:
6C60:
6C63:
6C66:
6C69:
6C6C:
6C6F:
6C72:
6C75:
6C77:
6C78:
6C7A:
6C7C:
6C7D:
6C7E:
6C7F:
6C80:
6C83:
6C84:
F5
C5
D5
E5
DO
E5
FD
E5
CD
60
6C
21
78
6C
E5
21
F6
5D
06
02
3E
01
B8
F5
37
3F
C3
2D
E0
F5
C5
D5
E5
DD
E5
FD
E5
CD
60
6C
CD
A2
E1
FD
36
ED
5B
4A
07
01
00
07
FD
71
50
FD
70
51
21
78
6C
E5
C5
21
F6
5D
C3
2A
E0
21
AE
6C
CD
89
5C
21
B0
07
CD
77
SA
11
D8
7F
21
B2
07
01 05
00
ED
B0
C9
FD
E1
DD
E1
E1
D1
C1
F1
C3
1B
SF
00
00
PUSH
AF
PUSH
BC
PUSH
DE
PUSH
HL
PUSH
IX
PUSH
IY
CALL
6C60
LD
HL,6C78
PUSH
HL
LD
HL,5DF6
LD
B,02
LD
A,01
CP B
PUSH
AF
SCF
CCF
JP
E02D
PUSH
AF
PUSH
BC
PUSH
DE
PUSH
HL
PUSH
IX
PUSH
IY
CALL
6C60
CALL
ElA2
LD (IY+4D),D7
LD
DE,
(074A)
LD BC,0700
LD
(IY+50),C
LD
(IY+51),B
LD
HL,6C78
PUSH
HL
PUSH
BC
LD
HL,5DF6
JP
E02A
LD
HL,6CAE
CALL
5C89
LD
HL,07B0
CALL
5A77
LD
DE,7FD8
LD
HL,07B2
LD
BC,0005
LDIR
RET
FOP
IY
FOP
IX
FOP
HL
POP
DE
POP
BC
POP
AF
JP
5F1B
NOP
NOP
SORCERER'S APPRENTICE
105
III
HELP
III
SOJlCBRBR'S APPRENTICE
Needl:
ok
Artidal
'*
'*
AdftrtilcmClltl1
'*
'*
A NEW
EDITORI
'*
If
you
can
help
with
any of
the
above,
please
contact
us
at
P.O.
Box
33,
Madison
Heights,
MI,
U.S.A.,
or.
by
phone:
Don
Gottwald
(313)
286-9265;
01
new editor
only,
Ralph
LaFlamme
(318)
856-4954.
ASTROHOMY
PROGRAMS
lIARS -
Distance
and
angular
diam. of
Mars foz any
date;
date
and
details
of
nezt
opj)osition
fol-
lowing
any
date.
1110
MVBN -
Phase,
distance
and
angul
ar
diam.
of
Mercury
and
Venus foz
any
date
and
nezt
elongation
after
any
date.
jl10
MBItVB-
Graphkal
~lay
of Mercury
and
Venus
relative
to
Sun
for
aeries
of
time
intervals;
distan-
ces,
etc.
for
any
date.
jl10
PRlSB-
Rwngl
or
settings
of
Mercury
and Venus before or
after
the
Sun
for
any
location
and
date.
jl10
RlSBS-
Times of
rising,
transit,
and
settings
for
any
planet,
Sun,
01
Moon
for
any
location
and
date.
1110
SSTAIl-
Dates,
radiants,
etc.
of
annual
meteor shower.
and
graphkal
display
for selected
month.
1120
JSATS-
Displays
configurations
of
Jupiter's
satellites
for
any
date
and
time or I.cries of
dates
and
tima,
N or S
at
top.
1110
BCUP-
Givcs
date
and
magnitude
of
nezt
umbral
eclipse of Moon,
starting
any
year
and
continu-
ing
foz as
long
as requested.
1"
PLTTN-
AIlk
for
any
Ilanet
or
Sun
on
any
date
an
program selects
and
displays
a
star
map and
plotll
planet
plus
any others
and
Moon
if
in
same
region.
With or
without
RA
and
Dec
grid,
and
plots
a series for
.elected
time
intervals.
Identi-
fies
atara.
Indkates
phase
of
Moon.
"20
BADBC-
Gives
RA
and
DEC
for
planets,
any
date.
'15
1tADCM-
Giva
RA
and
DEC
for Moon,
any
date.
"10
SUPN-
Plots
stars,
planets,
Sun,
and
Moon visible above
norizon
at
any
time
and
date
in
Northern
or
Southern
Hemisphere
to
85
deg.
lat.
,,2'
BOOK
of
listings
of 20
lIIIJuonClllllical
progremo
with
photos
of screen
displays
'25
plus
'3.50
postage
and
handling
-(,7
overseas).
(A
self-addrcssed
envelope
for
details.
Available
for
Astrologers
also.)
(Overseas, add jl2 per order,
for
Airmail)
Brk
Burgess. F.R.A.S.,13361
Frati
Lane,
Sebastopol,
CA
95472
106
RANDOM
I/O
by
Don
Gottwald
Jack MacGrath of Tercen
tennial
Technkal
(see
his
ad elsewhere
in
this
issue) is
willing
to
provide Level
II
BASIC
on
cassette
or
Mkropolis
Mod
II
formatted
diskettes for
'3
plus
postage. Send him a
cassette
or
a FORMATTED disk
along
with a
money order or check
for
,3.
Don't
forget
to
include
postage.
C.
Rkhard
Stelling
of 1501
Dial
Court,
Springfield,
IL 62704,
is
looking
for
good
prkes
on
used
Mkropolis
Mod
II
driva.
He
also
needs CP/M
for
the
Vista
drive.
Computer
Dynamks,
105 S. Main
St.,
Greer,
SC
29651
(803)
877-7471,
is offering 5 Megabyte
Shugart
SA-
1002 Winchester
Hard
Disk
Drives for
only
,600.
Supposedly,
it
is
a
snap
to
interface
with
the
Western
Digital
WD1000-80
Controller,
whkh they
sell
for
,500.
Interfaca
are
avail-
able
for
the
S-100,
IBM.,
STD
Bus
and
others. CP/M mOl) is
also
available.
Call
or
write
(SASE) Bill
Star
at
COL
If
anyone
does
interface
the
Sorcerer
to
one
of
these
drives,
please
let
us
know so
we
can
publish
the
raults.
Kevin McCabe, a member of our
group,
has
co-authored
a
~ook
':In
Sorcerer
programs.
The
title
18,
"32BASIC
Programs
for the
Eddy
Sorcerer".
It
is
written
by Tom
Rugg, Phil
Feldman,
and
Kevin
McCabe,
and
is
published by Dilithium
Press.
It's
a vcry good reference book
for
beginners
and
experts
alike.
Highly
recommencled
for
your
library.
There
are
several
new
books on
the
Z-80
mkroprocC8sor
on
the
market.
If
you would
like
to
know more
about
the hardware aspects of the
Z-80,
and
how
it
relates
to
Assembly Language
.
programming,
try,
"Z-SO
llHrll
Ma-
nual",
by Joseph
J.
Carr,
(publish~
by
Reston; prsce
,10.95).
There 18
also,
"Z-SO
Microcomputer
Design
Pl[ojects", by William Barden
Jr.,
(Howard
Sams
Book;
prke
'13.95).
This
book
takes
you step by
step
through
the
construction
of a minimal
system using
the
Z-SO mkroprocessor.
In
addition
to
learning
about
the
Z-
80 hardware,
you'll
also
learn
how
to
program
in
Assembler.
There
are
many
proj
ecta
(most
under
,50.00)
listed
using
just
a Z-SO
and
a
few
other chips.
This
book,
although
not
specifkally
about
the
Sorcerer,
will
gready
aid
your
understanding
of
the
hardware
and
software
aspects
of
the
Sorcerer.
Have you
tried
the
game of
'DUEL'
yet? With
the
new version, you
do
not
have
to
'LO'
and
then 'GO
100',
you
can
just
'LOG'
it
and
it'll
be
ready for two
players
to
live
out
their
Starwars
fantasy.
The
gr aphics
in
this
game
really
are
astounding.
(See ad elsewhere
in
this
issue).
Have you been
getting
keybounce
lately?
Do
you
hit
a key and
no
letter
appears
on
the
screen? Both of
these problems may
be
due
to
dirty
key
contacts.
To
clean
them,
discon-
nect
the
power,
then
very
carefully,
pry
off
the
keycaps using a
small
screwdriver. With a
fine
burnishing
tool
(available
at
most
hobby
stores),
gently
burnish
the
contacts
while
holding
the
key down with a
SORCERER'S APPRENTICE
screwdriver.
(NOTE:
To
prevent
da-
mage
to
the
fingers
on
the
contacts,
make sure the screwdriver
only
touches
the
plastic
frame and
not
the
contacts
themselves). A
few
strokes
str
aight
up and down
should
do
it.
Do
not
twist the
contacts.
Replace
the
keycap and you should be back
in
business minus the
annoyances.
Newmar Computer
Supplies,
55
Salem
Street,
Lynnfield,
MA
01940,
tel.
(617)
245-7960{
has
some very
good
prkes
on a arge variety of
diskettes.
Call
or
write
Frank
Stout
f or the 1
atest
prkes.
Cary
Stewart,
529 S. Beachwood
Drive, Burbank,
CA
91506,
tel.
(213)
843-1101,
(editor of the Southern
California
Sorcerer User Group News-
letter
-SASE for
copy-)
is
organi-
zing
a group purchase
of
parts
for
blank
S
-100
cards
to
be purchased
from either
Bryan
Wagner or
South
Valley
Electronks.
Contact
him
if
you're
interested
in
partkipating.
A
preliminary
estimate
placa
the
cost
in
the
area
of
_50.
By
the
way,
South
Valley
Electro-
nics of
Santa
Clara,
CA
will
also
do
Exidy repairs.
See
pa~e
71
of
SA
Vol.
4,
issue #3 for
theu
address
and
telephone
number.
We
would
like
to
encouralle our
friends,
both
inside
and
outside
the
U.S.,
to
submit sources for
repairs,
puts
and other hardware
and
soft-
ware items
of
interest
to
Sorcerer
owners.
We
want
to
compile a
listing
of where members
can
obtain
servke and
supplia.
Dr.
William Mahaffey of P.O. Box
756,
Norfolk,
VA
23501,
wants
to
sell
his
new
and
untrieu
Austr
alian
Stringy
Floppy
with
Sorcerer
PROM
for
'175.
Write
to
him for
partku-
lars.
Allyn
H.
Fisher writes
that
his
experiences
paralleled
Erk
Zorawo-
wkz's
(see,
"The
Computer System
Evolution",
in
issue
4.3),
in
almost
ever
r
detail.
Allyn
has had a good
dea
of
trouble
with
his
Vista
V-200
drives. They have
only
worked about
two weeks out of the 20 months
that
he
has
had
them I He
thanks
J
adt
MacGrath for
his
help
in
getting
and
keeping
his
system
running
••
4th
TIP
by
Timothy
Huang
Managing FORTH(.COM) Files
As
many
of
you already
know,
the
FORTH
concept
is
very
different
hom
other
computer
languages
to
whkh
you have been exposed. I
think,
therefore,
that
it
is a good time
to
answer
one
reader's
question
about
how
to
use
my, "And So FORTH"
package.
As
I see
the
question,
it
should
be
re-phrased
to:
"How does
one
manage
FORTH
files?",
or "How
do
you use
FORTH?"
With other
languages,
such
as
BASIC, FORTRAN, or
PASCAL,
we
have
the
I anguage (either
Interpreter
or
Compiler),
various
utilities
(Edi-
tor,
Assembler, Debugger,
Linker/-
Loader,
etc.),
and
the
progr
ams.
There
are
clear
cut
differences
between them.
No
one
will
mistaken-
ly
use
the
utility
module
to
interpret
a
program.
No
one
can
mess up
the
June
1 & July
15,
1982
o
application
program(s)
or the
lan-
guage
with
which they were
written.
This,
however,
is
not
the
case
with
FORTH.
AB
a
matter
of
fact,
we
never use
FORTH
to
write
any
"program",
because
there
is
no
FORTH
program.
There is
no
clear
cut difference
between
FORTH
itself
or
its
exten-
sions
(Saeen
Editor,
Debugger, As-
sembler
and
applications).
All of
the
"tensions
are simply
layers
of
FORTH,
l"ust
like
the
onion·
adding
another
ayer while
its
growing.
Every time
we
write
something
with
FORTH,
we
are
not
writing
something
ezternal
or
foreign
to
FORTH
but
an
"tension
of
it.
Therefore, we
don't
write
"programs",
rather,
we
extend
FORTH.
But
for
most
of
you
who
still
possess
strong
residual
feelings
about the
traditional
sense of
"program",
I'm
willing"
to
make
the
fOllowing compromise:
A FORTH
"program"
is an
"tension
of
itself,
and
is
written
in
FOR TH.
With
this
modified
definition,
we
can
still
use
the
term
"program"
to
illustrate
our
points.
In
the
"And
So
FORTH"
package,
there are two FORTH
files.
The
first
is a
bare
bones
FORTH(.COM).
This
is the
kernel
portion.
The other is
the
eztended
BIGFORTH(.COM).
In
order
to
avoid
possible
confusion
between
the
two,
I'll
call
the
first
FORTH
and
the
second BIGFORTH.
The
current
version of FOR
TH
is
a
machine
executable
program
operating
under CP/M.
The
names
are
appen-
ded
with
the
memory
size
and
are
called
FORTH32K.COM
and
FORTH-
48K.COM.
This
file
should
be
kept
as
small
as
possible.
Anything which
is
not
absolutely
essential
should
be
left
out
to
avoid unnecessary over-
head.
You'll
see
the
reasons
for
this
later.
The
FORTH
files
are
each
about
8K
long.
Of
course they
can
be
trimmed
further,
if
necessary.
The
BIGFORTH
file
is
an
enl
arged
FOR
TH
file
whose memory size
is
indicated
as B48FORTH.COM
or
B32-
FORTH.COM.
On
top
of
the
FORTH
file
I added
(pre-compiled)
the
following
"programs":
(a)
Screen
Editor,
(b)
DIS-forther,
(c)
TRACEr,
and
(d)
misc. words.
BIGFORTH
is
primarily
intended
as
a development system
rather
than
a
final
"pro,ram".
AB
you
can
see,
those
additions
are
handy
tools
for
the
development of
final
application
program.,
but
have
nothing
to
do
with
whatever the
application
pro-
grams are.
The
Screen
Editor
enables
us
to
write
source
programs
(saeens),
and
after
LOADing
the
screens,
DIS-
forther
and
TRACEr
allow
us
to
debug, disassemble
the
compiled
words,
and
tr
ace
the
ex
ecution of the
program(s).
Other
utilities
can
be
added
as
needed.
Thr
Assembler is
one
good
candidate,
if
we
need
the
speed of
execution.
Thus,
we
can
have
many
versions of BIGFORTH,
each customized
for
a
particular
development requirement.
Unfortu-
nately,
due
to
the
short
sighted CP/M
file
naming
convention,
we
are
limited
to
only
8
characters
for
the
file
name. You may have
to
be
creative
to
maintain
separate
BIG-
FORTH
file
identities.
ABsuming
that
you
were commis-
sioned
to
write a Super Duper Word
June
1
at
July
15,
1982
Processor
progr
am"
here
is
how
you
could
use
the
'And
So
FORTH"
package:
1.
Boot
up
BIGFORTH
containing
the
Saeen
Editor.
2.
Type
in
the
Super Duper Word
Processor source
saeens
to
a new
disk, assuming
that
you have
already developed the source
program.
3.
LOAD
the
Super Duper Word
Processor
on
top
of
BIGFORTH.
While
the
source
is
compiling
any
typo
or
undefined
word
will
terminate
the
compilation
(load-
ing).
If
necessary, go back
to
the
Saeen
Editor
and
make
all
the
syntax
corrections.
4.
LOAD
the
source
again
on
top
of
BIGFORTH
and
try
to
execute
the Word Processor. You may
discover some
logic
bug..
Use the
TRACEr
and
DIS-forther
to
help
debug the
program.
Go
back
to
the
Screen
Editor
to
make
the
logic corrections or enhancement
modifications.
After
this
step
you
have a debugged version
01
the
Super Duper Word Processor.
5.
Now, you
can
boot
up the FORTH
file
and
then
LOAD
the
debugged
source program
on
top
of
it.
Remember,
the
Word Processor
"progr
am"
will
be
compiled
on
top of
the
bare
bones FORTH.
6.
Now,
to
save your new
aeation.
The
most
straight
forward
way is
to
adjust
the
boot-up
parameters
and
save
the
FORTH
plus
WP
by
LOADing
Saeen
40
(set
cold
start
parameters)
and
41
(provide
CP/M
SAVE
information)
from
the Screen
Disk
I.
You
can
now
create
a WORDPROC.COM
file
for CP/M.
7.
If
you ex amine
the
practice
des-
cribed
in
step
6,
you'll
see
that
your
product
contains
an
8K
FORTH overhead.
Since
the
Word
Processor
portion
may
only
con-
tain
4K,
you
wind
up with a
"program"
·three times as
long
as
the
application
alone.
Besides
being a
possible
copyright
in-
fringement
of
the
FORTH
pack-
age,
this
combination
also
gifts
someone a FORTH which a novice
ma},
then
unintentionally
get
all
fouled
up.
8.
One
intermediate
solution
to
this
dilemma
is
to
hide
the
FORTH
overhead
in
the
application
pro-
gram.
The
definition
and
usa,e
of
the
word
HIDE
is provided
In
Chapter
14 of nAnd So
FORTH".
By
doing
so,
the
danger
of
the
novice's messing
up
FORTH is
removed.
One
word of
caution,
however.
If
this
trick
is
not
usea
properly,
you
can
be
sealed
out
too.
The
system may
also
aash
without
warning.
9. Even
with
the
FORTH overhead
hidden
in
the
application
pro-
gram,
it
still
carries a
lot
of
unnecessary
dead weight.
This
is
the
reason
for
keeping
the
FORTH
file
as
small
as
possible.
Your dilemma is having the
convenience of as
many
words
available
as
possible
verses
the
size
of
the
final
overhead. A
compromise must be
found.
The
FORTH
file
contains
those words
that
I
thought
were
essential
for
general
applications
with
the
SORCERER'S APPRENTICE
Sorcerer. You may have a
dif-
ferent
requirement.
10.
The
ultimate
solution
is
to
strip
off
all
unnecessary
portions
from
the
total
program
packa~e.
The
name
fields
and
hnk
flClds of
all
words
can
be
removed as well
as
all
unused
FOR
TH
words.
Essentially,
what
you
have
left
in
this
OJItimized package are:
the
FORTH lOner (address)
interpre-
ter,
the
Word Processor words
and
some absolutely required
I/O
words.
The
outer (tell:
t)
inter-
preter
also
may
not
be needed.
Thus,
the
final
overhead
can
be
as
small
as
several hundred bytes
(such
as
the
one
used
in
the
Craig
language
translator).
With
this
approach, you can even
ROM
the package.
On
top
of
that,
if
anyone
tries
to
disassemble your
code, they
will
have a
lot
of
fun
trying
to
figure
out
ex
acdy
what's
going
on.
(Think
about
trying
to
disassemble a
bunch
of
routine
addresses I )
This
process
is
called
Meta-compiling,
Tar~et
Compiling,
or
Cross-Compiling.
It's
a more advanced subj ect,
and
we'll
not
worry about
it
now.
The
final
product of met
a-
compiling
could
no
longer
be
FORTH
but
a pure
application
program.
Of
CGUIse,
we
can
generate
a
better,
newer version
of FORTH or BIGFORTH
by
this
same process.
This
is
something
that
other
languages
cannot
dol
Some of
you
may aak, "Why use
FORTH
to
write
program(s)
in
the
first
place?
Why
not
use Assembly
language
or
somethin,
on
a lower
1 evel ? "
The
answer
IS
very simp Ie.
Since
FORTH is a very
high
level
language,
it
is
much easier
to
accomplish
the
job
f aster
than
with a
low level
language.
The
execution
speed
will
be
only
minimally
sacri-
ficed
(about
1-2
times
longer
than
pure assembly equivalent, while BASIC
programs
run
about
30-50
times
slower),
and
it
will
not
require other
run
time
utility
~rograms
to
execute.
By
contrast,
in
using
a
language
such
as BASIC, or even CBASIC, our
application
program
cannot
be
made
stand-alone.
We
always need some-
thing
else
to
run
the
program
(CP/M
to
run
a compiled BASIC program, a
BASIC
interpreter
to
run
an
interpre-
tive BASIC
~rogram,
CRUN
to
run
pro~r
ams
written
in
CBAS
IC).
In
addition,
these overhead
utilities
are
getting
bigger
and
bigger.
(The
Exidy
Extended
BASIC takes
up
20+K
of memory I With
that
kind
of
memory,
FORTH
can
handle
a
2-user
system
I).
FOR
TH
can
be
thought
of as a
user
expandable
high
level macro
assembler.
If
we
think
about
it,
our
familiar
Z80 CPU, was provided
with
a
fized
set of
instructions.
We
have
no
choice
but
to
accept
the
instruc-
tions
provided even
though
some of
them may
be
useless
to
us.
On
the
other
hand,
FOR
TH
is
a
virtual
language,
with a set of
instructions
which
can
be
"panded.
Assembly
language
is
very powerful,
but
a
pain
in
the
neck
to
use.
FORTH
over-
comes
the
pains
but
keeps
the
power
of a macro assembler. With
this
different
concept
of
programming,
we
can
understand
why
we
never write
FORTH
"programs"
in
the
traditional
sense.
We
don't
have
to.
We
just
expand
to
include
those desired
instructions
I
This
is
beau
tifull.
107
Members of the Soreerer's Apprentice User's Group are en
titled
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
post~e
-$18,
1st
class
postage
in
an
envelope -$24;
Canada
&:
Mexico -$24;
single
ISSUes
$3;
all
others -
air
mail -
$32,
single
issues $4.
BACK
ISSUES:
PJlOGBAMS:
Sorcerer's
Apprentice
Vol
III
(1-8)
S.A.
Vol.
III
(per
issue)
Personal
Accounts
Payable
SystEm
(PAPS)
(3
diskettes,
Micropolis
Moa
II
format)
$12.00
$
2.50
$50.00
Sorcerer
Telecommunications SystEm (STS) $30.00
(Tape
modEm
program
to
access
and
transfer
CP/M
programs. (See
issue
4.2,
p.
32)
ov.se.
orda's
for back issues add $4 per volume or $1 per issue
to
cover
additional
air
mail postage
and
handling.
Commereial advertisers, please
contact
us for advertising rates.
Non-eommaeial
classified
ads
are accepted
at
the
rate
of $1 per 35-column
line
or
part-line.
Make checks
o~
orders
(only
in
US
funds drawn
on
a
US
bank) payable
to:
SORCERER'S
TleE.
N~
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 cassetfes or CP/M
Word
Processor/Editor files
on
Micropohs
Mod
II
hard-
or
soft-
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
COBRESPONDENCE TO:
SORCERER'S APPRENTICE
P.O. Box 33
Madison Heights, Michigan 48071
U.S.A.
BULK
RATE
U.s.
POSTAGE
PAID
WYANDOTIE
MICHIGAN
48192
PERMIT
NO.
23
RETURN
AND
FCRWARDING
POSTAGE
GUARANTEED
®

Navigation menu