Text content (OCR)
Open-Apple
Releasing the power to everyone.
October 1987
Vol. 3, No.9
ISSN 0885-4017
newstand price: $2.00
photocopy charge per page: $0.15
Control-I(nterface) S(tandards)
Computers work best in an environment of standards and compatibility. If
all computers, interface cards, and printers were exactly the same, no one
would ever have a problem with mysterious line-breaks in the middle of a
master’s thesis.
On the other hand,-if everyone always adhered to standards, and the
standard for Apple il printers was based on the technology available the day
the Apple II was introduced, we would still be using 72-column, upper-case-
only teletype printers with our Apples. Printing graphics would be a dream,
printing in various character widths or proportional type impossible, and no
one would even consider using a computer to print a master’s thesis.
Progress dooms us to incompatibilities and to knowing far more about
how computers talk to printers than we really want to know. However, ifevery
computer and every printer spoke a different language, every human at every
keyboard would need to be an expert translator to get them to talk to each
other. To avoid this situation we have standards. The more detailed they are,
the better. The more discussed they are before they are finalized, the better,
‘The more we follow them, the better.
Better standards are needed in many, many areas of the kingdom.
This month we're going to examine just one tiny little area in detail to see
what's involved. This area is one we've discussed here several times in the
past—serial and parallel interface “firmware.” This is the stuff your software
talks towhen you tell itto printsomething on your printer or send something
through your modem. It’s built into your serial or parallel interface ‘cards,’ if
you have them, or into your serial “ports” ifyou're using a IIc or a IIgs.
There are a number of standards already in effect for serial and parallel
interface firmware. Some details of these standards have even been
published clearly and frequently enough for anyone to follow. Other details
become obvious as one works with interfaces. Other details are neither
obvious nor published (or have been published murkily), and it is in the
vicinity of these details that most incompatibilities arise.
At the most elementary level, the standards that must be followed
byall devices in Apple II slots are these, Each slot (except "slot 0") has 256
bytes of memory space that can be used for firmware, “Firmware” consists of
machine language instructions for the Apple's microprocessor that tell it
what to do to get the card to work. It's the same thing as “software,’ except
that it’s been permanently written into chips that are built into your interface
card or computer.
These 256 bytes, known as the “slot ROM space,’ appear in the address
range $Cs00 to $CsFF, where “s” is the slot number of the card, For example,
the 256 bytes for slot 1 are at $C100 to $C1FF. (The dollar sign indicates a
hexadecimal number, Hexadecimal numbers have 16 possible digits that go
from 0 to 9, followed by A through F. $0000 is the lowest possible four-digit
hexadecimal number, $FFFF is the highest. I'm using them here because
they're easier to remember in this context than their decimal equivalents.)
In addition to the 256 exclusive-use bytes devoted to each slot, there are
2,048 additional bytes, in the address range from $C800 to $CFFF, that all the
slots can share. This is known as the “expansion ROM space.” The usage
ules for this area are that whenever address $CFTF is used, all cards are to
tum off their $C800 memory. Whenever an address within a card's 256-byte
space is used, that card alone is to turn its $C800 memory on. Thus, a card
that wants to use its own $C800 memory merely needs to tickle $CFFF and
MP to the $C800 space. The JMP instruction itself, which will be in the 256-
byte space, will turn the card's $C800 space back on after the $CFFF tumedit,
and everyone else’, off.
In addition to space for firmware, each slot also has the exclusive use of 16
bytes for accessing hardware “registers” and “softswitches” and 8 bytes of
RAM memory for remembering things.
The 16 hardware bytes, known as "I/O space,” appear at $C080+s0 to
$C080+sF, where “s;” again, is the slot number. Thus, the I/O space for slot 1
is at $CO90-SCO9F.
The 8 bytes of RAM, which reside in an area known as the “screenholes”
(because this RAM is inside the range of memory used by the Apple display
screen), are at the following addresses —$478t8, $4F8+s, $578+s, $5F8+s,
$678+s, $6F8+s, $778+s, and $7F8+s.
These standards have existed since the first Apple Il. They are documented
in detail in each of Apple’s technical reference manuals. Even so, one detail of
even these elementary standards was broken by Apple's own Super Serial
Card. It is an unintentional bug, but it demonsirates how difficult it is for
developers to follow standards in every detail, even when they want to. More
on this later.
One of the first interface cards designed for the Apple Il was the
Parallel Printer Interface Card. The firmware for this card, which was written
by Steve Wozniak in 1977, used only the 256-byte slot ROM space,
The card was designed to be used with Integer Basic, from the Monitor, or
with assembly language. To tum the card on from Integer Basic, you entered
the PR#s command (where “s," again, indicates which slot the card isin). This
command changes a location known as the “output vector” so that when
anything is PRINTed, control of the computer will pass to the firmware on the
card rather than to the built-in “video” firmware.
After a PR#s, the Apple's microprocessor executes the first byte of firmware
on the card (at $Cs00) the next time Something is printed. Wozniak called
this the “default because starting at this address caused the card to
Teset itself to its “default” settings (it “initialized” itself). While setting the
defaults, the card also made an additional change to the output vector so
that succeeding calls to the card would go to byte $Cs02. Wozniak called this
the “normal entry." Later, this scheme of passing contri to firmware became
known as the “BASIC Firmware Protocol.”
Acharacter sent to the card was held until the printer was ready to accept it
‘Then itwas sent to the printer. After that it was sent to the video firmware. The
card automatically added a “linefeed’” (a control character that tellsa printer
to advance the paper one line) after each carriage return. Unlike typewriters,
“GARY AND SOME OF {HIS FRIENDS. WANTED TD BOB FOR APRES THIS YEAR.
I GUESS (T GANT HURT AS LONG AS THEYRE NOT RUGGED 1A.”
3.66 Open-Apple
many printers then (and now) used “carriage return’ as a signal to move to__
the left margin without advancing any paper. Thus, Wozniak’s card added
linefeeds so that what was being printed wouldn’t end up all on one line.
However, some printers then (and now) automatically advanced the paper
one line when they saw the carriage retum signal. These printers would print
double-spaced with the parallel card (advancing one line because of the
carriage return and another line because of Wozniak's linefeed) unless there
was some way to tell the card not to send linefeeds,
To accomplish this, Wozniak decided to make his card watch for an
“escape character” in the incoming character stream. If the card saw that
character, it would know that what followed was a command ‘it should
execute, rather than letters it was supposed to pass on to the printer. The
escape character the card was taught to watch for was control-I (interface?).
Anda control-l followed by a K told the card to stop sending {kill?) linefeeds.
Problem. Control-l is used by some printers as a “tab” command. If the
interface card thinks each controll is meant for it (and consequently refuses
to send it on to the printer), how do you get printer tabs to work? Wozniak
solved this problem by allowing you to change the control-I to any other ASCII
control-character by sending the new escape character right after the old
one. “Control-I controlA” for example, changed the escape character to
contro-A. “Control-A controH” or reinitializing the card (by using PR*s or
another means to restart at the $Cs00 entry point), changed it back again.
Problem. Lines sent to the printer broke at column 40, just as they did on
the screen, even though printers could handle wider lines. In order to get
longer lines to the printer, it was necessary to turn the video (also known as
“screen echo”) off. The command Wozniak decided to use for this was
“control-] nN,” where the small n was a decimal number that told the card
where you would like an automatic carriage return, since column 40 Isn’tit
Another command, “control! 1,” or reinitiallzing the card with PR#s, put
things back like they were—video on with line breaks at column 40.
Because it was first, Wozniak’s Parallel Printer Interface Card set a lot of
standards that have never been officially written down anywhere. But most
interface cards for the Apple Il have honored the “traditions” of Wozniak.
Examples of these traditions include using control-I as the escape character,
having the BASIC entry point of the card change the output vector to a
“normal entry point,” and using K, nN;and | as the kill linefeed, tum off video
and set line width, and tum on video and reset line width commands.
‘The next major standard-setting card to appear was Apple's Super
Serial Card. The firmware for this card was finished in January 1981. There
were some other serial cards from Apple before the Super Serial Card and
some shorHived interface-card standards (Pascal 1.0), but nothing memorable.
What made the Super Serial Card a big deal was thatit was the first card to
use what Apple calls the "Pascal 11 Firmware Protocol.” The name is
unfortunate. I've gotten on my soapbox before about how importantit is for
engineers to work as hard on the names they give things as on other aspects
of a device's design {August 1987, page 2.49-50). The only link between
Pascal and this interface is that Pascal was the first software to use it
However, because of the name, most programmers think of it as something
that’s useful only in a Pascal environment.
Although the two firmware interfaces used on the Apple II are known as
“the BASIC interface” and “the Pascal interface,’ and although Applesoft
uses the BASIC interface and Apple Pascal uses the Pascal interface,
programs written in assembly language can use either one, With the addition
of a small assembly language “driver,” an Applesoft program can use the
Pascal interface quite easily, and vice-versa, There is no unbreakable bond
between the two interfaces and the two languages. (I've heard rumors that
some Pascal firmware uses some of the same “zero-page” locations as
Applesoft, which would make the firmware incompatible with Applesoft
programs. | haven't yet found any, however, so T'll appeal to readers who have
encountered this to let me know the details.)
In order to make it as clear as possible that any software can use either
interface, here in Open-Apple | will refer to the “BASIC Interface” as the
“Basic Interface” and the “Pascal 11 Interface” as the “Advanced Interface.”
The manual that came with the Super Serial Card documented the
Advanced Firmware Protocol in great detail. (The Super Serial Cardis still in
production but its manual has been sanitized and no longer contains any of
this information. Nowadays you can find most of the advanced interface
documentation in the Ile and IIc technical reference manuals and the IIgs
firmware manual, but none of these includes all of the details found in the
1981 Super Serial Card manual.)
The Advanced Firmware Protocol provides a set of alternate “entry points”
to the interface card firmware. These entry points provide finer control over
Vol. 3, No.9
the card than the basic ($Cs00) entry point. There are three separate entry
points for initializing the firmware, for writing to the device, and for reading
what the device has sent to the Apple. In addition, a fourth entry point for
determining the “status” of the device (has it sent us a character? Is it ready
for us to send it another character?), a fifth entry point for controlling the
firmware, and a sixth entry point for determining whether the firmware's card
was the source of an interrupt were provided by the standard. We'll see how to
use these entry points in a moment.
The advanced standard also provides for “device identification.”
Four bytes are used to identify whata card is used for and whether it supports
the advanced standard. These bytes are:
Advanced Firmuare Device Identification Pratocal
hexadecinal cecinal
address value address value
Sto05 $38 49157 + (slot256) 56
30307516 45153 + (slotZ56] 24
SCs08 51 45163 + (s1ot*255) 1
Sts0C Sci 45184 + (s1ot¥255) (device signature byte)
The fourth of these locations is called the “device signature byte.” While I've
purposefully limited this article to serial and parallel 1/O firmware, the
Advanced Firmware Protocol is available for most Apple II character-oriented
devices. These include the 80-column screen firmware, the keyboard, and the
AppleTalk network, as well-as serial and parallel cards. Some third-party
clocks, speech and sound cards, and slot-resident modems may also
‘support this protocol. (The Apple IIgs clock and its sound chip, however, are
accessed through IIgs Tootbox routines rather than through slot-based
firmware protocols. This is because there just arent enough slots available —
each device requires a separate slot under the basic and advanced firmware
protocols.)
Incidentally, the other kind of device you'll find on an Apple Il is called a
block-oriented device. An example is a disk drive. On the Apple II, block-
oriented devices use a different firmware protocol, known as “Smartport’’
which was described in Open-Apple in January 1987, pages 2.89-93.
The first hex digit of the Advanced Firmware Protocol's device signature
byte identifies a device's class. Defined signatures are:
300 reserved 368 clock
$10 printer $70 ass storaga
$20 nouse or Jeystick $80 80-colunn card
330
340
350
serial or parallel 1/0
aden
suund/speech
$8@ network or bus Interface
$A@ othsr (none of the above)
$80-$FO reserved
‘The second hex digit is a “unique identifier for the card, assigned by Apple
Technical Support,’ according to the original Super Serial Card manual
(page 51). According to the technical reference manual for the Ile, it is a
“unique identifier for the card, used by some manufacturers for their cards”
(page 144), According to the IIc technical manual, it is “an identifier (not
necessarily unique)” (page 67).
‘The Super Serial Card's definition for this byte was a nice try, but obviously
the standard didn’t allow for enough possible combinations — there have
been far more than 16 manufacturers of "serial or parallel 1/0” cards during
the history of the Apple II. The IIc manual's comment reflects the truth of the
situation today.
According to the Super Serial Card manual, byte $CsFF is to hold the
“firmware revision-evel” (page 57), On the Super Serial Card, this byte holds
an $08, Apple has never revised the Super Serial Card firmware, so this is the
only value you'll find here on a true Super Serial Card.
However, Apple has produced several Super Serial Card clones, One was
built into the original Ilc, one into the 3.5 IIc (the Ic that supports 3.5 inch
disk drives), and one into the IIgs. (Actually, there are tayo Super Serial Card
clones built into-each IIc and Ilgs, one connected to port 1 and one
connected to port 2.)
According to the Advanced Firmware Device Identification Protocol, each
ofthese is a Super Serial Card, although, as we shall see later, there are many
subtle (and not so subtle) differences between the four versions. One of the
subtle differences is that Apple's IIc programmers forgot about the finnware
revision-level byte at $CsFF — both versions of the IIc have a $00 in that byte.
On the figs, on the other hand, a new IIgs protocol makes version numbers
two bytes long (but there’s a bit of confusion. among Apple’ s engineers about
how to implement them—see “Machine code version numbers” in this
month's letters section). The original IIgs ROMs have $00 $10 at $CLFE-FF
October 1987
and at $C2FEFF. This should be taken to mean version 10. The new ligs
ROMs have $10 $10 (version 1.1) at both locations. (A few bugs were fixed in
the serial firmware in the newer IIgs ROMs. The bugs had to do with status
calls, Applesoft tabbing, and buffering problems when baud, data format, or
parity were changed with buffering enabled.)
To my knowledge, Apple has never defined a way to tell its four (five if you
count both IIgs versions) “Super Serial Cards” apart. For most programmers
this is only part of the problem, as many other companies have developed
serial and parallel I/O devices that are subtly (or grossly) different from the
Super Serial Card “standard.” Until I hear of something better, I suggest you
use the following “signatures” for identifying serial and parallel 1/O cards that
follow the advanced protocol:
Signatures for identifying specific serial/parallal Firmware
A) SCs05=535; $Cs07-518; SCs03-521; SCe@0-33x {x can be anything)
8) 30600-80512 ‘SCsFE-FF
Super Serial Card 8 9497 98 85 27.86 CS 0B
Tle (original, port 1) «EA EE FE FBORAZCL —00 20
+ port 2) 11 13.1517 80.01 62 — 00 90
+ port 1) SEB Bd BB 0A AZ CL 00 0
+ port 2) 1113 15 17 vee Be 8
IIgs (1.0 ROM, ports 182) 45 46 47 45 00 1402 «00 18
Tigs (1.1 AON, ports 182) 45 46 47 402014 02 = 12.10
Obviously, it doesn’t take all eight bytes to tell Apple’s versions of the Super
Serial Card apart, but using all eight should allow us to tell any serial or
parallel 1/O card from any other. (Send us the values you find in these bytes
on your own third-party I/O cards and we'll document them ina future issue.
To avoid transcription errors, turn on your printer, enter the Monitor (CALL-
151), and type Cs00.Cs13—replacing the “s” with the slot number of your
card —and then CsFE.CsFF. Then type in everything you know about the type
of card, manufacturer, and version number and send us the piece of paper.)
CKKG553
Once you've confirmed that a card follows the advanced protocol,
it’s easy to use the advanced interface from assembly language. The
area at $CsOD-$Cs13 that we just used for a firmware “signature” is actually a
table of entry point addresses. For example, the value at $CsOD tells you the
entry point for the initialization routine. Looking at our table of signatures,
you'll see that the value in $CsOD on the Super Serial Card is $8E.
Consequently, the place to go to initialize that card, using its advanced
firmware, is $Cs8E. On the Ilgs, on the other hand, the initialization routine
starts at $Cs45, as can be seen in the signature (entry point table) for that
machine.
When calling the advanced firmware, you pass information to it (such asa
character you want sent to your printer) in the microprocessors registers. It
passes information back (such as a character that came in over your
modem) the same way. The following table shows which offset to use in the
table of entry point addresses and what is passed in the registers for each
advanced firmware function:
Advanced Firnuare Entry Polat Protecol
cad offset «= Areg =X reg | Yreg carry
Init $08@0.
on entry —- sts $30 _
on exit + arror code
Read — SLS0E
con entry - sts $50
on exit char read error code ~~~
Write SCs0F
char to write SCs ‘552
error code ==
ready for output?
an entry 500 sts 50
on exit error code ~--
has @ character been received?
on entry sot sos 500
on exit --- error code --- ON de¥
Open-Apple 3.67
More? = 8Csil
if value at $fs11=@, then follouing commands are also supported:
Control Sts12
Mouse
on entry mode cmd SE 550
on exit - error cade
Tigs “‘extended interface’’
end list adr low byte hi byte
on exit --
Iserrar
bank
Antrupe ssl
house
on entry - - -
on exit oa @sy ten
Ifyou are writing firmware that includes the advanced interface, you should
attempt to bring the A and Y registers back unchanged. If you are writing
software that uses the advanced interface, you should assume that those
registers come back looking ransacked. This maximizes the compatibility of
your firmware with other people's programs and vice-versa.
Ifyou are writing firmware that includes the advanced interface, you should
be very conservative in your use of zero-page memory. The advanced
interface on the Super Serial Card uses only byte $26 (for remembering $s0),
byte $27 (for remembering the input/output character), and bytes $2A, $2B,
and $35 (for temporary manipulations). None of these locations conflict with
Applesoft per se, although $26 and $27 are also used by Monitor routines
that display low-resolution graphics, The basic interface on the Super Serial
Card uses several additional zero-page locations to exchange information
with the Monitor—byte $24 (CH),.$28-$29 (BASL), $36-$57 (output hook),
$38-$39 (input hook), and $4E-$4F (random number seed).
Earlier in this article I mentioned that the Super Serial Card fails to
follow one of the details of the protocol for stot-based devices. That
detail is that the advanced interface does not tickle $CFFF before jumping to
routines in the expansion ROM space at $C800, This went unnoticed foryears
because the Super Serial Card was able to overpower other cards that still
had their expansion ROMs turned on. With the appearance of the 3,5 disk
conboller, however, the bug was revealed, Because of this, it is necessary to
tickle $CFFF yourselfjust before you use the advanced firmware on the Super
Serial Card (and it doesn't hurt to tickle it before using other cards as well).
Another subtle problem arises because the original protocol for slot based
devices has been slightly enhanced in the last few years, but news of this
enhancement never made it into the manuals or into the firmware that had
already been written. This enhancement is that any card that tums on its
expansion ROM space should store its slot number {in the form $Cs) in the
screenhole byte at $7F8 (known as MSLOT) before turning on the expansion
ROM, This is so that the operating system can know who owns the expansion
ROM space when an interrupt occurs. (As a result of an interrupt, the
operating system may have to use another card's expansion ROM; it must
then tum the executing program's ROM back on before returning from the
interrupt or the system will have a stroke and die.)
‘The Super Serial Card does use MSLOT, but not until afteritis executing in
the expansion ROM, so there is always a brief interval when an interrupt could
cause a fatal hemorrhage.
Asa result, programmers should be careful to take the following steps:
softuare suthors:
Just bsfore calling the advanced interface, do something 1ike this:
Loa 9922 character out or status request number
LOX slot.number in the form SCs
LOY siot.nurber in the fora $50
STK S9FO—(HSLOT)
STX SOFFF
INP (entry.point)
Firgware authors:
if you use tha expansion ROM, execute the following Instructions
in the elot ROM space before jumping to $C300 or beyond:
SIX S7FO—[NSLOT),
TX SCFFF
Tl include a longer assembly language example of how to use the
advanced firmware interface next month (or so).
In addition to problems with $CFFF and MSLOT, several detalls of the
Advanced Firmware Protocol were neglected in the Super Serial Card
manual. As a consequence, those details are not handled consistently by
Apple II firmware and their value has been lost.
3.68 Open-Apple
One missing detail was a list of possible error codes that could be
returned in the X register. | scanned pages and pages of Apple documen-
tation and found only one reference to this value. That was in the description
of the Apple video firmware in the ic technical reference manual (page 110).
It says that if the value in the A register is not $00 or $01 for a Status call, the
interface “retums with a 3 in the X register (IOResult=ILLEGAL OPERATION);
otherwise it retums with a 0 in the X register (1OResult=GOOD).’
The term IOResult smelled of Pascal, so | asked Dennis to see if he could
find anything pertinent to the X register in Apple's Pascal documentation. He
succeeded. “All drivers must pass back a completion code in the X register
corresponding to the table on page 280 of the 11 Apple II Apple Pascal
Operating System Reference Manual,’ according to a little ditty called the
“ATTACH-BIOS document for Apple II Pascal 11” dated January 12, 1980. The
table of completion results lists 18 codes, all of which are disk errors except
for $00, no error; $03, illegal operation; and $40, device error.
However, after studying the actual source code of the Super Serial Card
firmware (its in the original manual), I discovered that it can retum 16
additional X register error codes (between $20 and $2F) not mentioned in
either the Pascal or Super Serial Card manuals. The Read call and the has-a-
character-been-received Status call come back with a byte that looks like
this:
Meaning of Super Serial Card X Register Errors, by bit
e@eeecofp
® 1s an overall error indicator; if e+1 at least one other bit also = 1
Af col the carrier was lost during the last receive operation
Af o=1 (overrun) the Sppie isn’t collecting data fast enough
Af f= (Framing) not enough stop bits were raceived
if pel 2 parity error occurred
On the Super Serial Card, the Init call, the Write call, and the are-you-ready-
to-send Status call, on the other hand, always come. back with a zero, or “no
error,’ in the Xregister. The ILLEGAL OPERATION ertor talked about in the IIe
manual isn’t supported (if you give the Super Serial Card an odd number in
the A register on a Status call, itassumes you senta one; ifyou give itan even
number, it assumes you sent a zero),
Because of poor initial documentation of this aspect of the advanced
firmware protocol, all of its value has been lost. I doubt there are halfa-dozen
commercial programs that even look at.the X register after making an
advanced interface call. Even Apple’s own Super Serial Card clones on the IIc
and the IIgs don’t follow the X register aspect of the original Super Serial
Card. They support only the error on Status calls. All other functions retum a
zero in the X register, Interestingly, on bad status calls the IIc and IIgs serial
ports retum the $40 DEVICE ERROR code, rather than the $03 ILLEGAL
OPERATION code that the video firmware returns for this mistake:
Apple's mouse card, which appears to support the advanced firmware
interface, retums the $03 ILLEGAL OPERATION code in the X register for any
Init, Read, Write, or Status call. These calls do nothing to the mouse, which is
actually controlled by a number of other firmware entry points.
Even in the face of all these differences, | recommend that programmers
using the advanced interface check the X register for errors, particularly on
Init calls. If a non-zero value is retumed by an Init call you should treat the
interface as unusable.
Other missing details in the Super Serial Card documentation had
to do with the Control and Interrupt functions of the advanced
interface. The original Super Serial Card Manual only said that if byte $Cs1.
was zero, two optional entry points followed — the first for a “control routine”
and the second for an “interrupt handling routine.” Because of the lack of
Vol. 3, No.9
documentation, there is no uniformity whatsoever in how devices use these
entry points.
‘There are three devices I know of that use at least one of these functions.
One is the Appletalk firmware built into the Apple IIgs. It has an offset for the
Control function, but it has a zero in the offset for the interrupt function
(which has to mean there's nothing there —ifyou called thataddress you'd go
to $Cs00, the basic entry point), Apple's Ilgs firmware documentation
doesn't even smile in Appletalk’s direction, so | have have no idea what the
Appletalk Control function does or how it works.
The second device that uses the control entry point is Apple’s mouse. The
mouse is controlled by nine routines that can be found by looking in an offset
table just like the one that the advanced firmware interface has. The first two
bytes of this table purposefully overlap the Control and Interrupt offsets of
‘the advanced firmware interface. The Control offset points to a routine called
Setmouse, which tums the mouse hardware on and off and tells itwhat kinds
of interrupts it should generate. (This offset is not to be confused with
Initmouse, which sets defaults and synchronizes mouse interrupts with the
video's vertical blanking interval, and which, for reasons unknown, does not
use the Init entry point)
‘The Interrupt offset points to a routine called Servemouse, which puts a
zero in the microprocessor’s “carry” bit if the mouse has generated an
interruptsignal, An interrupt signalis kind oflike a scream inthe night Ittells
the microprocessor to immediately stop what it's doing and go to the aid ofa
device. But the only way the operating system can figure out where the scream
came front is to knock on the door of every device connected to the computer
until it finds one whimpering for attention. The Servemouse routine provides
an easy way for interrupt firmware to figure out if it's the mouse that's
squeaking.
‘The third device that uses the control entry point is the serial firmware on
the Apple ligs. Like Appletalk, this firmware has $00 in the interrupt entry
point
‘The control entry point in the IIgs serial firmware uses a completely new
scheme for passing data. Rather than using the registers for data, as in all
other advanced firmware calls, the ligs serial firmware uses the registers to
pass a pointer to the data. The low byte of this pointer goes in the A register,
the “high” byte in the X register, and the bank trumber in the Y register.
(Although the data for the command can be placed anywhere in IIgs memory,
the microprocessor should be in 6502 mode when you actually pass control
to the entry point This is always the case when using either the basic or the
advanced firmware interface.)
Your pointer is aimed at a “command list” The shortest command list
currently in use has four bytes, the longest ten. Each command list begins
with a one-byte parameter count, a one-byte command, and a two-byte space
for an error code to be retumed. Bytes after those four are used by the
firmware to pass information to you, or by you to pass information to the
firmware.
‘Two of the supported commands are for “mode” control, nine are for buffer
control (the IIgs serial ports can buffer both incoming and outgoingdataand
can do printer buffering), and seven are for hardware control. It's best toavoid
the hardware control commands unless absolutely necessary, since they will
change on any future Apple !! that uses a serial interface chip different from
the one in the Iigs.
One of the mode control commands, called GetModeBits, is for inquiring
about how a portis currently set up and the other, called SetModeBits, is for
making changes. Both have a parameter count of 3. The command code for
GetModeBits is 0 and for SetModeBits 1. Each uses an additional four bytes
for the “mode bit image.” Thus, the command tables for these commands
look like this:
GetNods3its
03
fr)
300 500
500 $00 890 $0
SetHodesite
503
501
500
500 $90 $00 $00
paraneter count
command
result code
node bit inege
The possible result codes currently supported, which you'll find in the first
of the result code bytes, are $00, no error; $01, bad call; and $02, bad
parameter count
The mode bit image controls such firmware functions as whether to adda
linefeed after carriage retums, whether to echo characters to the screen, and
other functions that can also be controlled with escape-character commands.
Next month we'll look at the IIgs mode-bit image, and at the subtle
differences between escape-character commands on Apple’s various Super
Serial Cards, in detail.
Apple's John Sculley is interviewed in the September
Playboy (page 51). Sculley’s comments are extremely
interesting, particularly his remarks about Apple asa
“third-wave” company. He says he regards himself
as the company's “Chief Listener.” Apple Is unlike the
typical American company, where decisions are
imposed from the top, Sculley says, and unlike the
traditional Japanese company, where ideas must
move up a hierarchy ina consensus-building process.
At Apple, according to Sculley, “ideas can occur
anywhere in the organization. ...top management is
not predetermining company strategies.” Add this
interview to your reading list.
It's pencil time, again. According to a letter Apple
‘sent to educators, ligs units that have serial numbers
beginning with the three digits 705 through 724
need new ROMs, but notnew video chips (September,
front page, second paragraph). In addition, we have
now heard reports of some copy-protected software
not working with the new Higs KOMs because of
illegal monkeying around by the copy protection
scheme, When buying software for the ligs, insist on
un-protected products.
The lady who owns the phone number we gave at
the end of last month's Printrix review “is pretty
upset and claims she is receiving hundreds of calls,”
according to the people at Data Transforms, whose
phone number ends with 1501, not 2502 (page 3.61).
The first letter published below points out an error
in the next to the last paragraph of my answer to
“IIgs programming subileties,” in last month's issue,
page 5,61-62.
Back in our August issue, at the very bottom of the
very last page, we printed a patch to increase the size
of the AppleWorks catalog buffer (page 2.56). Itreally
does allow you to catalog subdirectories with more
than 85 files in them. However, one of our testing
laboratories has discovered that it also prevents you
from loading any of them (ouch!). Put a big X over
that patch and write “doesn’t work” next to it. For a
Patch that does work, send us three good reasons to
have more than 85 files ina single subdirectory (also
include the box top from our September issue and a
stamped, self-addressed shipping pallet).
Finally, go way back to our November 1985
Special Printer Issue and tum to page L835. Replace
the second through the last paragraphs of the
section called “The data format,” with the following
(you'll have to write reat small):
When characters are sent serially, the signal on the
wire is kept ON (or 1 or MARK) when no characters
are being sent, A sudden transition to OFF (or 0, or
SPACE) is called a start bit and indicates to the
receiving device that a character is coming. After the
start bit come flve to eight data bits, represented by
MARK or SPACE voltage levels.
After the data bits, sometimes, is a parity bit. The
parity bit ls an optional, extra bit, Parity bits, if used,
can be odd, even, MARK, or SPACE. MARK parity
means the parity bit is always 1. SPACE parity means
it ls always 0. Odd and even parity mean the trans-
mitting device sets the parity bit to 1 or 0 in such a
way that the total number of 1 bits in the data,
Inctuding the parity bit Itself, will be either odd or
even, Parity can be used for error checking, but
rarely is. Inmost Apple I! applications, parity isset to
“none,” which means no parity bit is sent.
After the parity bit, the signal on the wire goes
back to ON in preparation for the start of the next
character, This part of the signal is said to consist of
one or more stop bits,
When no characters are being transmitted, the
serial line is kept ON, or full of stop bits. Under the RS-
252 standard, there isno requirement that characters
must appear at equal intervals. While the start, data,
and parity bits alt are represented by a certain
voltage level for a certain time period (the faster the
baud rate, the shorter the time period), stop “bits”
consist ofa certain voltage level for an uncertain time
period. For example, if your computer ls sending out
characters at a rate slightly slower than the baud
capacity of the interface, extra stop “bits”—even
fractional “bits”—can appear between characters.
This ability to support a variable time interval between
characters eams the RS-232 interface the adjective
asynchronous.
The term data format defines how many data bits
each character will have, whether the character will
include a parity bit (and if so, what kind of parity),
and the minimum number of stop bits between each
character. This minimum number is typically either
1, F1/2, or 2. For signalling purposes, one stop bit is
enough—when extra stop bits (or parts of stop bits)
are inserted it's either to give the receiving device
more time to process each character coming inorit’s
an attempt to solve timing problems in the sending
device.
For example, the default format of the Apple IIc’s
printer port is 8 data bits, no parity bits, and 2 stop
bits (or “8N2"); Every other Apple serial device
defaults to 81 A printer expecting just one stop bit
can receive data from a device sending two stop bits
with no difficulty — it just thinks the engine in the
sending device isn’t operating on all eight cylinders.
The additional stop bit from the sender stows things
down slightly. This is apparently exactly what was
expected from the 2 stop bits on the Iic’s port,
because the serial ports on early models of the fic
marched to the beat of a hasty drummer (see June
1985, page 1.47).
There are some nasty remarks about printer
documentation in the original that you might like to
keep, but the restis a reflection of my confusion. Boy
it feels good to finally understand how serial com-
munication works! My thanks go to chapter LL “The
Serial Interface Ports,” of Gary Little's Inside the
Apple lic.
TLShutDown does too
On page 3.62 of your September 1987 issue you
say that the IIgs toolbox command TLShutDown
does nothing at present. Not true! Under ProDOS 16,
‘TLShutDown calls the Bootinit functions of all installed
tools and unloads RAM-based tools (disconnects
them from the tool table and leaves their memory
purgable).
Incidentally, regarding the $400-byte stack/direct
Open-Apple 3.69
page block you mentioned in your response to the
‘same letter, there is no reason that a direct “page”
must be limited to 256 bytes on the Ilgs. While some
addressing modes allow access to only the first 256
bytes of a direct page, indexing from the direct page
with a 16-bit X or Y register allows you to access all of
bank 0, The actual allocation of the $400 bytes is up
to the application; if no direct page is needed, the
whole $400 can be used for astack; ifa different stack
area is being used, the whole $400 can be used for
direct-page storage. :
David A. Lyons
North Liberty, lowa
Machine code version numbers
Areyou sure that Line 500 of your Smartport reader
program in the January 1987 issue is correct (page
2.92)? The line reads 500 : : VERS = PEEK(807) +
PEEK(808)*256.
When | run the program, I get version 4096 for my
UniDisk 3.5. This seems high for the version number
of a year-old device. Even if the PEEKs are reversed, a
result of 16 would still be a little high.
Robert J. Schack
New York, NY.
I noticed the wetrd verston number results when 1
wrote the Smartport article, but didn’t know what to
do about them. Apple‘s Smartport documentation
said only that those two bytes were the version
number, but gave no information aboul how to
interpret them.
Recently | ran across the following paragraph on
page 28 of Michael Fischer's Apple gs Technical
Reference from Osbom McGrauHill. It refers to
toolbox version numbers, not firmware versions
numbers, but is still enlightening:
“Version numbers for each tool consist of a word
value. Bits 0-7 of the word contain the minor revision
number, beginning with zero. Bits 8-14 contain the
major revision number, beginning with one. Bit 15 is
set if the version is a prototype and is clear if the
version is a released version. Thus $90 is version 10
Prototype, $12 is version 12 official release, and so
on”
Notice that Fischer's description and his examples,
which he no doubé got from some Apple documenta-
tion somewhere, don't: match. According to his
description, ‘version 10 prototype” should be $8100.
“Version 1.2 official release” should be $0102.
If we throw away the low byte of the Smartport
version number and decipher the high byte as in
Fischer's examples, we get the results we expect,
version 10. Thus, to get January's Smartport program
to report the UniDisk version number “correctly,” we
should change tines 500 and 600 to:
500 : : VERSS = STRS{INT(PEEK(B9B)/16) 4°.” +
STRS(PEEK(B@3) - VAL (VERSS)*15)
600 change VERS ta VERSS
But I suspect Fischer's description is really the
way version numbers are supposed to be used on
the ligs (othenvise, why use two bytes and then
throw one away?), in which case the “correct”
corrections to the Smartport program would be:
500 : ; VERSS = STRS(PEEK(G08)) + “.7 +
STRS(PEEK(807))
600 change VERS to VERSS
This, of course, retums a version number of 16.0
for the UniDisk, which reflects a certain amount of
confusion at Apple about version number protocol.
3.70 Open-Apple
What PR# and IN# do
Please explain why PR#3 and 1N#3 tum on my 80-
column card at different times when I replace one
with the other in my STARTUP program. In immediate
mode both PR#3 and IN*3 tum on the 80-column
card immediately.
Dave Uherka
Grand Forks, ND
While common knowledge is that PR#3 “tums on
80-columns,” in fact, things are more complex than
that. What PR#3 and IN#3 really do is “redirect”
output or input to stot 3. The “80-column firmware”
lives in slot 3. However, you won't see an 80-column
display until you either PRINT something (after PR#)
or ask for some INPUT (after IN#), In immediate
mode, Applesoft immediatety prints something (a })
and thereafter asks you to input another command,
right after you type in either PR#3 or IN#3. Thus,
either PR#5 or IN#3 appears to take effect immedt-
ately. To get the same effect in your programs, you
must put a PRINT statement right after your PRINT
CHRS(4);"PR#5” or an INPUT statement right after
your PRINT CHRS(4);"IN#3”.
For a much more detailed description of how this
works, see Chapter 12 of the DOStatk Scrapbook,
“How the System Operates,” pages 81-91,
Disassembly lines
Does your remarkable ability (to me) to crack
object code without any available source code stern
from long experience or could you illustrate how you
doit?
Are the colons you sometimes use after a line
number in Applesoft program listings for indentation
purposes?
I'm not sure | understand the equivalence of port 1
on the ligs and the Super Serial Card. Can a “Super
Serial Card” choice be used for configuring older
programs? If it can, | presume Slot 1 should not be
used, Similarly, if slot 3 is the eighty-column pathway,
can it be used fora MIDI card?
Herbert M, Olnick
Mineral Bluff, Ga.
Ittakes some experience to get good at disassem-
bling machine ianquage instructions, but there are a
few tricks of the trade I can describe here. First, you
need a disassembler. This a piece of software that
‘Scans the values in a series of bytes and telis you
what they mean in assembly language. There is a
rudimentary disassembler buiit into every Apple H—
the Monitor's L(ist) command. More advanced disas-
semblers, which are available from most of the
companies that sell assemblers, will send the disas-
sembly toa file (rather than simply to the screen ora
printer), will create tists of the addresses referenced,
and will even plug in the names of built-in Apple I!
subroutines, softswitches, and zero-page locations
where it appears they are being used.
In most disassemblies you aren't concerned about
how the whole program works but just want to finda
specific area that's troubling you to ficit. You find the
area by scanning through the program looking for
embedded text messages, for accesses to certain
softswitches, zero-page locations, or Monitor sub-
routines. You can also figure out a lot by looking for
ProDOS MLI calls (JSK $BF00) and, on the ligs,
toolbox calls (JSL $E10000),
If this doesn't work, or if you really want to
disassemble the whole program, your next step is to
load the disassembly into a good word processor
and start chinking away. Whenever you find something
you can Identify—be it a zero-page location, a
subroutine, a message, or whatever —use the search
and replace capabllitles of the word processor to
change all references to that address to a name that
makes sense. As youproceed, the search and replace
procedure keeps adding clues to parts of the program
that originally made no sense at all. Gradually you
figure everything out (usually finding tots of litle
bugs and undocumented features of the program
along the way). The experience is very much like
working on a giant jigsaw puzzle.
The biggest disassembly I ever did was the portion
of DOS 3.3 from $9D00 to $B800 (the command
interpreter and the file manager). This is about 7,000
bytes of code. i had a copy of Beneath Apple DOS at
my side that | used asa hint book, It took six weeks of
daily work. When I was finished ! knew enough about
DOS, its features, and its bugs to write ProntoDOS,
Softatk’s “DOStaik” column, and the DOStatk
J think you'll find that many of the best assembly
language programmers spend a lot of time disas-
sembling other people's work, just as the best
writers spend a lot of time reading other people's
work. Of course, youdon t really need to disassemble
anything to “read” other people's work. Lots of
assembly language source code is around, particularly
in Apple's technical manuals. Apple has a tradition of
Publishing the source code to at least the Monitor in
all of its computer-specific technical references.
As you do more and more of this, you'll find that
different programmers have very different styles.
Some are ultra-organized. They have a place for
everything, everything in its place, and don't give a
beep how long It takes to execute. The DOS 3.3 file
manager is a good example of this kind of program-
ming. Others write code that ts extremely fast,
efficient, sensible, and elegant. Look at anything by
Steve Wozniak (the original Apple I! Monitor, DOS
5.3's RWTS routines) or Paul Lutus (Apple Writer) for
examples. Others write code that is impossibly
complicated, confused, crude, and full of bugs (the
unknown author of DOS 3,3’s APPEND patch, for
example).
If any of this interests you, | suggest you get a
copy of Don Lancaster's Enhancing Your Apple Ht,
Vol 1 ($15.50, Synergetics, Box 809, Thatcher AZ
85552 602-428-4073). Chapter 3 of that book is
called “Tearing into Machine-Language Code” and is
worth the price of admission. Lancaster demonstrates
what he calls the “tearing method” of disassembly.
This method is paper-based and gives you a better
view of a program's “big picture” than my word-
processor method. On the other hand, } end up with
completely commented. source code in a file that J
can modify and run through an assembler without
any additional typing.
| use extra colons in Applesoft listings simply to
make it clear what lines are inside loops. I'm surprised
thal none of our readers has ever complained that
Open-Apple’s program llstings don't look like the
ones Applesoft itself puts on your screen, Back in the
early days of the Apple If this was a big issue in the
letters-to-the-editor pages of Apple II magazines. I
guess it means you've all figured out that the
program tistings in Gpen-Apple are designed more
for easy reading and understanding than for easy
typing or speedy execution.
The “firmware” in port 1 of the ligs is functionally
equivalent to a Super Serial Card but the “hardware”
is not. Thus, whether a "Super Serial Card” configu-
Vol. 3, No.9
ration will work for any particular program depends
on whether the program accesses only the firmware
or whether it also tries to access the hardware.
Unfortunately, few programs document this kind of
stuff; your only recourse Is to try it and see what
happens. If a program won't work through the built-
in port, you can have a Super Sertal Card in slot 1,
change the slot 1 configuration via the control panel
Jrom “printer port” to “your card,” press open-apple/
control/reset, and use the Super Serial Card: Using
this technique, you can switch back and forth as
often as like without turning the computer off (turn it
offto insert the card in the first place, however, and to
change cable connections).
Slot 35 can be used in this same way, however,
whenever you set slot 3 to "your card” you lose the
abillty to use Appie’s 80-column firmware, which will
prevent many programs from working correctly.
But, for example, if your music software doesn’t use
Apple's 80-column firmware, a MIDI card might be a
good choice for that slot. You would have to enter the
control panel, change the slot 5 assignment, and
reboot before and after running your music software,
but you wouldn't have to give up some other slot.
Apple makes family grumpy
‘We just moved into a new house that has the TV
antenna directly above my Ile. When the Apple ison, it
‘causes video interference on channels 4 and 5.
Everything is grounded...I checked that on the
suggestion of our local dealer's service person. No
‘one locally can come up with a solution. As a result,
my family gets grumpy if [ use the computer when
they're watching NBC or CBS. Telling them PBS is
good for them hasn't helped. Do you have any hints?
Fred Olin
San Antonio, Texas
J haven't any hints. Somebody somewhere has
probably figured this out, however. Let's hope they
write us,
Logo llgs
In response to “Go, Logo, Go,’ in your September
issue, there is one version of Logo for the Apple that
has already been altered to take advantage of the igs
environment. That is Logo if, an upgrade of Apple
Logo II, available from Logo Computer Systems Inc
121 Mount Vernon St, Boston, MA 02108 800-321-
5646 617-742-2990. Several purchase options are
available, including single copies, lab packs, and site
licenses,
Your readers who are interested in Logo might like:
tojoin the Logo Exchange. We're a group of educators
interested in the use of Logo. Membership includes 2
subscription to our magazine. Queries can be sent to
the Logo Exchange, ICCE, University of Oregon, 1787
Agate St, Eugene OR 97403 503-686-4414. A year's
subscription is $24.95 for US. ICCE members, $5
additional for non-members, and $5 additional for
intemational subsciptions.
Tom Lough
Charlottesville, Va.
Hard feelings
The llgs chip upgrade you mention in your Septem-
ber issue is interesting. Apple Canada prides itselfon
being a separate entity from its mother company and
seems also to pride itself on always being a month or
two behind new developments “south of the border.”
In this age of lightning-fast communications, this
attitude causes a great deal of hard feetings. As of
October 1987
September 1, Apple Canada had no chip upgrade
policy. I'd be curious to know if a similar situation
exists in other countries.
Lome Walton
Maple Ridge, BC
LaserWriter possibilities
Ijust purchased a LaserWriter Plus to go along with
my IIgs. Despite what Apple says, you can get Apple
Writer 2.1 to printto the LaserMriter just fine. Youneed
Don Lancaster's patch to Apple Writer that allows the
program to use the new serial ports (see “The great
Tinaja Quest” in May 1987, page 3.51). Then connect
your IIgs to the LaserWriter via port 1 with a IIgs
Adapter Cable (#A9M0333, $29.95 retail) and a
DB25-male to DB25-male straight-through cable
(approximately $20 retail).
You need the second cable because the adapter
cable js less than a foot long, Don‘tusea null-modem
cable; a straight-through cable works just fine. Make
sure the LaserWriter is off and set the back panel
switch to “SPECIAL.” This tells the LaserWriter to
emulate a Diablo 630 printer, Tum your Laserliriter
on, let it warm up, and run Apple Writeras usual. The
Control Panel slot assignment for slot 1 should be
directed to the printer port. With this setup I've been
able to print anything Apple Writer can do, including
this letter.
Under this configuration, your LaserWriter is a very
expensive Diablo printer; you can’t reach the many
special fonts, etc. To do PostScript processing, you
can use the same cable and set the LaserWriter back
panel switch to "9600". Then you need software to
send the necessary PostScript commands, You can
also connect the Iigs (or a Ile) to the LaserWriter viaa
‘Super Serial Card and the appropriate cable. Or you
can connect the Ilgs via AppleTalk.
I can't get Apple Writer to work with the LaserWriter
via AppleTalk; why, [ don’t know, Is there any source
that disassembles and describes the AppleTalk
interface in the IIgs? AppleWorks does work with a
LaserMriter via AppleTalk as advertised, in which case
your LaserWriter is avery expensive ImageWriter.
Other programs will print to a LaserWriter connected
to port 1 (or 2) as long as they can print to a Diablo-
compatible printer and access the serial port or card.
Some old DOS 3.3 programs, like MultiPlan, work just
fine—1 suspect MultiPlan accesses the printer slot or
port without calling on any special firmware tricks.
Aquick note conceming the ViPspreadsheet for the
IIgs. I'm a spreadsheet junkie (1 own VisiCalc, Multiplan,
Practicalc, Supercaic 3a, AppleWorks and now VIP—
my favoriteis still, believe itor not, Multiplan, although
SuperCalc has the best business-type graph-
ics I've ever seen on an Apple). VIP is extensive and
could give Supercaicand AppleWorks arun except for
two problems: first, the output to printers is extremely
limited. You can only choose to print to an ImageWriter
or Epson printer, and then only through slots 1 or 2
(no LaserMriter, AppleTalk, pen-plotter or other printer
support—not even the trusty Apple DMP!). Second, If
you try to print toa non-recognized device, orifyou ty
something else the program doesn’t recognize, the
whole system crashes, with total loss of data. Talk
about being careful!
In November 1986 (page 2.79) you had a letter
asking how to convert files from Multiplan into
something that could be used by SuperCalc | have
written a program that will convert a Microsoft SYLK
file into the more common DIF file, which SuperCalc
can read. SYLK files and DIF files can only be used to
transfer data, not formulas. I'd be happy to let anyone
who sends me a disk and return postage have a copy
ofthe program.
Finally, how do you get an AppleSaft program to run.
under ProDOS 16? Howmuch memory can |access—
am | still Jimited to 48K minus ProDOS?
Steven R White, M.D.
411 N. Kensington Ave.
Lagrange Park, IL 60525
Anyone using a LaserWWriter, and especially those
using one with an Apple II, should read Don Lancas-
ter’s column in Computer Shopper religiously
($21/yr, P.O. Box F Titusville, FL 32781). Don has
reprints of past columns for sale, as well as all kinds
of Apple Writer goodies for making the LaserWriter
do things that Macintosh programs find impossible.
And he gives out free samples. (Don Lancaster,
‘Synergetics, Box 809, Thatcher, AZ 85552 602-428-
4073). You might also like to look into the National
Postscript Bulletin Board at 409-244-4704 (300/
1200 8N1).
Documentation on AppleTalk as it exists on the ligs
is non-existent as far as we know. The beta draft of
the Apple ligs Firmware Reference Manual docu-
mentsall the other stuff thal appears to be connected
to figs slots, but doesn’t breathe a word about
AppleTalk.
Applesoft runs under ProDOS 8 (with BASIC
.SYSTEM), never ProDOS 16. AppleSoft is structurally
limited to, and ideally suited for, a 48K program/
variable space. Apple has no plans to modify it for
the larger-memory available on the Iigs or for
ProDOS 16. 1 think they've made the right decision.
By refusing to make any modification to Applesoft,
Apple retains complete compatibility between older
programs and new machines. Applesoft remains a
universal language. Why can't we agree that-any
language that takes advantage of the eight-megabyte
memory space available on the ligs shouid be
written from scratch and not be based ona 10-year-
old language that uses line numbers and two-
character variable names?
ImageWriter II cleaning
How do | remove and clean my ImageWriter II
minted? Donald Bock
Hudson, Fla.
Himmm...the ImageWriter If Owner's Manual
doesn’t say in its section on maintenance (pages 63-
66).
Page 28 of the Imagewriter User's Manual (for
the original Imagewriter) has the essential procedure,
except that the mechanism that locks down the print
head is different on the ImageWriter il.
First, make sure the printer is tumed off. Remove
the ribbon. As you look at the II's print mechanism
from the front, youll see a white plastic latch along
the right side of the printhead that clamps it down.
Gently push this latch toward the power-button side
of the printer to clear the printhead and jiggle the
printhead straight upward. If you are right-handed,
you may find it easier to do this while standing
behind the machine. Be careful not to let the head hit
anything as it comes loose. The only cleaning
procedure mentioned is to “wipe” the type head
gently with a soft brush to clean away loose debris
left by the ribbon or paper. Then carefully replace the
head, reversing the above procedure.
Print heads are delicate and are not cheap; if you
have any doubts about safely removing and cleaning
yours let a technician do it for you.
Open-Apple
Super hi-res converter
I. doa lot of work in graphics, Traditionally this has
involved a lot of hi-res and double hi-res files on my
Ic. | used Dazzle Draw and was happy. But not any
more. Now I'm the proud owner of an Apple Iigs, and!
find myself with bushels full of Dazzle Draw format
double-high and MousePaint format standar¢-high
files that I'd like to convert to Super-320 mode, so
that | can modify and resave them as Deluxe Paint
pictures. Do you know of any utility that can do this, or
of a simple machine code modification | could make
to my old files to update them? It seems a waste to
abandon all that old work, and redrawing it would
take years, ©
3.71
James Waschuk
Saskatoon, SK
According to the July 1987 issue of Call -A.P.P.L.E.
(page 57), such a program is available in DL4 (Data
Library 4) of the download section of MAUG on
Compuserve. The program’s name is SHRConvert.
and it converts a number of types of graphics
formats to Super Hi-res format, including Apple II
single and double hi-res graphics, and Macintosh
and Atari ST graphics.
AppleWorks as copy machine
How abouta paich for AppleWorks that would allow
more than nine copies of something to be printed?
David L. Smith
Middlesboro, Ky.
Beagle Bros/Software Touch AppleWorks guru
Alan Bird provided us with the following:
Patch to change the maximum number af copies ta 255
(Applewiors 2.0 only)
POKE 768,255
ESAVE SEG.M1,7@0,L1,A765,836074
SSAVE SES.Mi,7500,L1,A7E,25185
BSAVE SEG.M1,1500,L1,A76B, 855895
3 for WP
3 For 0B
3 for 5
For other versions of AppleWorks, Alan suggested
searching the SEG.M1 fite for the byte sequence “A9
09-20 35 DO” and replacing the 09 with a larger
value, Dennis looked at AppleWorks L2 and L3 and
discovered the actual sequence you have to look for
in SEG.M1 is “A9 09 20 32 DO". This sequence occurs
four times; change the first three (as Alan did for 2.0):
Equivalent § parameters for Appleorks 1.2 and 1.3:
vi2 VA
34¢43 834253
e915. «BSUS
as7es5 857332
After the patch. you can enter any value from 1 to
255 coples directly,
Wire loose inside FILER
I've run into the same problem so many times I
don't understand why I've never seen it commented
in Open-Appte. | usually cannot copy a disk onto a
new unused disk with FILER Until something is
written on the new disk I geta NO DEVICE CONNECTED
error. If the disk is first formatted with FILER there is
no problem, but then time is wasted re-formatting at
the start of the copy.
Even a DOS 3.3formaited disk is acceptable as a
copy target, but nota clean one. Whyis this? Arelated
problem is that quite often AppleWorks 12 and 13
3.72 Open-Apple
will refuse to format a clean disk, with the same error
message. Are they too polite to defile a virgin, or
what?
Phil Albro
Cary NC.
T have a dim recollection from the early days of
ProDOS of this problem. The reason no one talks
about it is that no one uses FILER anymore. Copy I
Plus ($39.95, Central Point Software, 9700 SW
Capitol Highway, Suite 100, Portland, OR 97219,
503/244-5782) is a reasonable altemative that does
‘most of what FILER and CONVERT together can do,
and more, and better.
Another alternative is Glen Bredon’s ProSEL pack-
age, which has been recommended here many
times inthe past ($40 from Bredon at 521 State Road,
Princeton, NJ08540). It can’t convert DOS 5.3 files to
ProDOS, but it includes alt other disk utilities most
people can Imagine, plus a few more you'd never
think of. (Such as a scheduler that wlll run programs
for you, unattended, at the times you select. Early
Purchasers of ProSEL may be missing the scheduler
and a few other updates to the package. The latest
ProSEL version is always $5 for previous purchasers,
directly from Bredon.)
For AppleWorks, try changing to a different disk
drive for formatting. That seems to work sometimes.
Othenwise, it's wise to keep a few pre-formatted
disks around for emergencies.
is wntlen, edited, published, ang
© Copyright 1987 by
Tom Weishaar
Business Consultant Richard Barger
Technical Consultant Dennis Doms
Circulation Manager —_Sally Tally
Business Manager Sally Dwyer
Moat ght reserved. Al programs published in Open-Apple are
public domain and may be copied ard catrbuted witout earge.
Apple ute groups ard signiteant ctners ay repant ales rom
tme to time by specific written request. Requesis and other
editorial material, including letters to Uncle OOS, should be sent tc:
P.O. Box 7651
Overland Park, Kansas 66207 U.S.A.
Puplshed monthiy since January 1965. World-wide orices (mn US.
dollars; airmai delivery nciuded al no addilional enarge} $26 for 1
year, $44 for 2 years, $60 ‘or 3 years. Al single back issues aro
Currently available tor $2 each; bound, indexed editions ct Volume 1
‘and Volume 2are$14.95 each. Volumes end with the January issue,
an index for the prior volume is included withthe February issue.
Please send al subscriotion-related correspondence to:
Open-Apple
P.O. Box 6331
Syracuse, N.Y. 13217 U.S.A.
Open-Apple is avaiable on disk trom Speech Enterprises, P.O.
‘Box 7988, Houston, Texas 77270 (713-461-1666)
Unitke most commercial software, is sold in an
unprotected tormat for your convenience. You are encouraged to
Imkeack-up ache cope or easy 10-60 er ated copies ft
your own use without charge. You may also copy Open-Apple for
Sisrbtion to chers, The Staoutlon fe 8 13 core per fae er
ony diets
WARRANTY AND LIMITATION OF LIABILITY. | warrantthat most of
the information in Open-Apple 's useul and correct, although
Grivel and mistakes are included trom time to time, usually
unintentionally Ungat
180days of delivery
led subscribers may return issues within
fuliteund, Pleaseinclude a note trom your
firming that all archival copies have been
destroyed. The uruliled potion of any paid subscription willbe
relunded on request. MY LIAB|LITY FOR ERRORS AND OMISSIONS
|S LIMITED TO THIS PUBLICATION'S PURCHASE PRICE. In no
ase shall | or my contributors be liable for any incidental or
consequential damages, nor for any damages in excess ofthe fees
paid by 9 subscnber.
1SSN 0885-4017
Printed in the U.S.A.
Source Mail: 1CF238
CompuServe: 70120,202
Free help
Concerning August's letter about loading non-TXT
files into the AppleWorks word processor module
(“Another use for AppleWorks; page 3.55)—in a
perverse twist back in July I used this capability to
load Free Writer, Paul Lutus’ public domain word
processor, into AppleWorks. I used the OA-Delete
function to wipe out everything but the help screens
so I could print a hardcopy.
Clark Stiles
Grand Rapids, Mich,
Just don't use this technique to cheat on adventure
games.
More on OctoRAM
{reviewed the MDIdeas OctoRAM board mentioned
by Doug McClure (August, page 3.51). Look for my
review in the fall issue of Apple iI Buyers Guide. There
are eight SIMM sockets on the board. You can put in
either 256K or 1 megabyte SIMMs, but you can’t mix
them. Consequently, if you purchase a 1 meg board
with four 256K SIMMs (the way MDideas ships it), you
can upgrade the board to two megabytes, Ifyou want
to go higher, you have to get 1 meg SIMMs, and sell
your old SIMMs or let them gather dust in your junk
box. At the present the SIMMs are more expensive
than an equivalent number of standard memory
chips, making the OctoRAM somewhat more expensive
to expand and operate. Nevertheless, it's the only Ilgs
memory board which can be expanded to 8 Mbytes
on its main board.
The ESP ROM board is an extra cost option, but it
really isn’t ROM. It is a piggyback board with 64K of
static RAM. The board includes a rechargeable battery
that powers the RAM while the power is off. Extra RAM
packs are available which expand the ESP board up
from its standard 128K capacity up to 512K. You can
set the {Igs's control panel to boot the ESP board on
start up or you can access it like any other ProDOS
drive. Under normal circumstances, the static RAM
takes very little power and with the rechargeable
battery pack will last several years before losing data.
The ROMdisk is a good idea, and the static RAM with
battery backup makes it fairly easy to use. The
disadvantage to static RAM is that it's extremely
expensive and sensitive to static electricity. There's
One major feature on the ESP that | don’t like—it
attaches to the front of the OctoRAM board and
blocks slots 6 and 7 in your IIgs, the most important
slots.
Philip Chien
Earth News:
Titusville, Fla.
A tip from subscriber Peter Baum—If you buy an
OctoRAM and have friends with Macintoshes, pay
attention to see if they upgrade their Macs to 1 meg
SIMMs (which they must do to get more than 1
megabyte of RAM). if they do, you'll have found a
cheap source of 256K SIMMs, eight of which (2
megabytes worth) wilt fit in the OctoRAM,
The Universal Apple
Thave lived in Germany for over ten years and was a
manager of a local computer store for several years.
We sold Apple, IBM, Osborne, Tandy, Wang, Nixdorf,
and a few other brands. In regard to the letter
“Intemational Answers” in your August issue (page
3,53), let me assure you that there is no problem
using any Apple hardware in Europe and there is
Vol. 3, No.9
seldom a problem even with combinations of US.
and European Apple hardware.
Thave two Apple lle computers, a German version |
purchased less than one month after Apple introduced
Computers in Germany, and a standard American
version. The German machine was purchased with
German-version monitor, 80-column card, and Apple
DMP printer. The U.S. version was purchased with a
U.S. monitor, text card, and ImageWriter. The US.
version has worked perfectly in Germany for over two
years on a step-down transformer.
Ihave added numerous items to each computer as
the years have gone by, including mice, new drives, an
RGB monitor, numeric keypad, graphics tablet, daisy-
wheel printers, and a long list of other items. They all
work just fine no matter which version they are
hooked into, with the single exception of the U.S.
numeric keypad — it's cord is too short for the European
Apple II, which has the keypad connector located.a
little further toward the front of the motherboard. And
1am happy to say that | have not experienced any of
the screen flicker or weaving, caused by using a 60
Hertz Apple in a50 Hertz country, that you mentioned.
1 also know several other people using this type of
setup and have heard no complaints,
I don't recommend this for IBM users though. The
U.S, version IBM monitor, when used on 50 Hz with a
‘transformer, would wave and weave so much that my
customers would get seasick and tum green. That
made it real easy to sell Apples—one look at those
IBM monitors and anything else would look great
Here are a few other necessary details: travellers will
need a 300 watt transformer to correct the voltage to
what is needed for their system (U.S. systems need
110-120 volts, European systems need 220 volts). A
transformer of this size will power the computer, a
monitor, and two printers with room to spare. Remem-
ber to bring a multi-outlet dropcord from your native
country since most transformers only have one or
two outlets and this makes it very difficult to plug in
four or five items.
Cards that plug into slot 3 will notwork in European.
Apples since the auxiliary slot is located in front of
this slot and therefore any cards plugged into the
auxiliary slot will cover slot 3. | have yet to find any
software that will not run on either version computer.
Graphics programs, utility programs, word processors,
games, and even copy-protected stuff seem to run
Just fine (who cares).
Leave the war games at home though. West Germany
and several other European countries have banned
many of these games. Some of the programs include
F-15 Strike Eagle and a few other air simulators (not
SubLogic), several submarine simulators, Rambo
programs, karate programs, and some other programs.
that in their view glorify war or violence. Theoretically,
this applies to anyone bringing these games into the
county also. | say theoretically since nobody has
been arrested doing so yet.
And finally, getting your computer repaired is nota
problem. The service I have gotten in Ewope has
been excellent. However, the U.S. warranty is notvalid
outside the US,
Dwight Stewart
Leimen, West Germany
One item you don't mention that can't be mixed
and matched is the normal composite monitor.
Composite signals use different standards in different
countries, so computers and monitors should move
around the world as matched sets. We have a letter
froma subscriber in Kuwalt who mixed the two and
“smelled money burning.”