Winter 91 - A2 Q&A
APPLE II Q & A
APPLE II DEVEOPER TECHNICAL SUPPORT
QThe Apple IIGS® GS/OS Reference, page 43, alludes to
"an enhanced ProDOS ® 8 QUIT call, which contains a pathname to an application to be
launched." However, I find no mention of this enhancement in the ProDOS 8 Technical
Reference. How do I use this call?
AThe enhanced ProDOS 8 QUIT call allows you to quit to another application if GS/OS or ProDOS
16 has been booted. The enhanced ProDOS 8 QUIT call requires either of the following four-count
parameter blocks:
Standard
dc.b $00 ;quit type
;normal
dc.w $0000 ;null
dc.b $00 ;null
dc.w $0000 ;null
Extended
dc.b $EE ;quit type
;enhanced
dc.w path ;addr of
;launch
;pathname
dc.b $00 ;reserved
dc.w $0000 ;reserved
path str 'myprog.sys16'
GS/OS patches ProDOS 8 to get control on a QUIT and launches the next program if the quit type is
$EE. The code to do this is not part of ProDOS 8; it doesn't fit in the kernel, and it can't go in the "quit
code" because program selectors swap that out. The enhanced Quit call, therefore, works only when
GS/OS has been booted.
QWhat's the difference between Apple II GS System Software versions 5.0.3 and 5.0.4?
AApple IIGS System 5.0.4 includes the following changes:
- TOOL.SETUP for System Software 3.2 in May 1987 changed
QDStartUp to make the cursor image handle safe and has now been
changed for ROM 03 as well.
- QuickDraw Auxiliary no longer returns bogus errors for SeedFill and
CalcMask in pure 640 mode, and a low-level stack imbalance has been
corrected.
- The ImageWriter® and ImageWriter LQ drivers now spool to the User Path if
the system was booted over AppleShare®. A bug concerning memory
allocation has been fixed, and the drivers now check errors more robustly.
- The SCSI Manager no longer resets the SCSI bus when the Manager is
started.
- The AppleShare FST now saves and restores the correct QuickDraw direct
page locations when shielding the cursor to draw the AppleShare arrows.
QWhat do I need to get started with
MPW IIGS?
AMPW IIGS is a set of tools and languages that creates Apple II and Apple IIGS programs and object
code under the Macintosh MPW development environment. The system requirements for MPW are
detailed inAPDAlog® in the MPW product description. In addition to MPW and
a system suitable for it, you need the MPW IIGS Tools package, which contains necessary development
tools like the linker and other useful tools such as the resource compiler, object module dumper, and
ProDOS file duplicator. You will also need the MPW IIGS language of your choice--currently
assembly, C, or Pascal.
QIf a task in the Heartbeat Interrupt Task queue has not yet been executed (the tick counter
has not yet reached zero), is it possible to store a zero into the TaskCnt
field to keep the
system from ever executing the task?
AThis will work fine. If you know where the count word is, then you can set it to zero to prevent
yourself from being called. The system does not keep this information in a separate buffer; it checks
the value in the queue header each pass through the Heartbeat queue,so if you were at 200 one pass, and
then 0 the next, the system will not be bothered because it does not remember the previous value. And
because the task is not executed unless the system itself decrements the count to zero, storing a zero
into theTaskCnt
field is a fine way to prevent a task from executing.
QCan run queue tasks remove themselves?
AYes, run queue tasks can call Desk Manager RemoveFromRunQ
on themselves without difficulty.
QCan QuickDraw II Auxiliary's CopyPixels
call scale pixel images beyond maxWidth
?
ANo, but you can use the QuickDraw II SetBufDims
call to increase the size of the QuickDraw
buffer to beyond what was specified for the maxWidth
variable in the QDStartUp
routine.
QHow do I port my Macintosh HyperCard ® stack to run with HyperCard II GS?
AYou can use HyperMover TM, which is available on AppleLink ® on developer CDs.
HyperMover allows HyperCard 1.2.5 stacks from the Macintosh to run with little or no
modification on the Apple II GS with HyperCard IIGS. HyperMover consists of two stacks, one for
the Macintosh and one for the Apple II GS. HyperMover for the Macintosh creates a folder
containing files that describe the stack you wish to convert to the II GS. This folder and the files it
contains are then transferred to the II GS via Apple File Exchange or an AppleTalk network.
HyperMover for the IIGS then rebuilds a stack as close as possible to the original stack using the files
contained in this folder. The most noticeable difference between the original and the rebuilt stack
will be in the graphics. Because the II GS and the Macintosh have such different sized screen displays,
the graphics and objects of the rebuilt stack must be scaled to fit the II GS screen, resulting in some
loss of detail.
HyperMover contains several features designed to make the rebuilt stack as useful and as close to the
original stack as possible. It can create scaled representations of Macintosh pictures, convert Macintosh
sounds to IIGS sounds and Macintosh icons to IIGS icons, and transfer all HyperCard objects including
backgrounds, cards, buttons, and fields and their attributes. However, because HyperMover is a stack,
it cannot convert XCMD/XFCNs and cannot fix scripts that need specific Macintosh screen
coordinates to function.
QIs HyperTalk the same in HyperCard II GS as in Macintosh HyperCard?
AGenerally, HyperTalk® on the Apple II GS is the same as HyperCard 1.2.5 HyperTalk on the
Macintosh, but the HyperTalk on the Apple II GS has an extended command set to support the
features available in the Apple II GS environment. New commands are included for setting color
properties
of objects, painting properties, and printing. A new property for buttons called the family property
also has
been added.
QDoes HyperCard IIGS provide for extending the HyperTalk language?
AYes. External commands and functions, which are usually referred to as XCMDs and XFCNs, or
externals as a general group, are functionally identical in the Macintosh HyperTalk and Apple IIGS
HyperTalk software environments. XCMDs and XFCNs provide for extensions to the existing
HyperTalk language and are called using the same methods as those for Macintosh HyperTalk.
Modifications have to be made, however, to move existing source code for Macintosh externals into the
Apple IIGS environment. HyperTalk callback procedures and interfaces for the Apple IIGSdiffer
slightly from Macintosh HyperTalk.
Kudos to our readers who care enough to ask us terrific and well thought out questions. The answers to these puzzles have
been supplied courtesy of our teams of technical gurus; our thanks to all. Special thanks to Matt Deatherage, C. K. Haun,
Jim Luther, Eric Soldan, Dan Strnad, and Tim Swihart for the material in this Q & A column. *
Have more questions? Need more answers? Take a look at the new developer technical library on AppleLink (updated
weekly) or the Q & A stack on each Developer CD
Series disc. *