421 lines
20 KiB
Plaintext
421 lines
20 KiB
Plaintext
America Online
|
|
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
|
|
Tuesday, April 24, 1990 10:00 p.m. edt
|
|
Topic: Apple IIGS Toolbox Programming
|
|
Forum Leader: Dave Sugar (AFL Dyfet)
|
|
|
|
|
|
AFL Dyfet Okay, all sillyness aside, welcome to the Apple II Development
|
|
Forum. Tonight
|
|
AFL Dyfet our topic is the Apple IIgs toolsets, which should mean plenty of
|
|
questions for
|
|
AFL Dyfet Dave L to answer :)...We will be using PROTOCOL tonight starting
|
|
now, so if you
|
|
AFL Dyfet have a question on tonight's topic, enter a '?' on a line by
|
|
itself, and if you
|
|
AFL Dyfet wish to comment, enter a '!' on a line by itself. You will each
|
|
be called in
|
|
AFL Dyfet turn...the floor is now open for questions...
|
|
AFL Dyfet Okay, Coach, you have the floor now...GA...
|
|
Coach101 In one of folders here a question was posted regarding the
|
|
existence of
|
|
Coach101 a call/toolset/whatever that would do the "little red
|
|
thermometer"
|
|
Coach101 operation. A comment was made that it was a GS/OS call. Is there
|
|
such
|
|
Coach101 a call? and, how do you use it, if it exists, ?
|
|
Coach101 ga
|
|
AFL Dyfet GA Dave...
|
|
Dave Lyons There's no direct support for it in the system, as far as I know.
|
|
The Finder happens
|
|
Dave Lyons to implement its little red bars as custom controls, and if
|
|
somebody wants to write one,
|
|
Dave Lyons it would make a really good example of a custom control. ga
|
|
Coach101 Thanks, and while I have the floor,
|
|
Coach101 Matt, many thanks for the excellent article on caching and how
|
|
its
|
|
Coach101 done by GS/OS in the latest DEVELOP magaizine. () () ()
|
|
Coach101 done
|
|
AFA Gary J (yeah Matt!!)
|
|
Matt DTS <bow>
|
|
AFL Dyfet GA Scott, (good work, Matt!)...
|
|
AFL Scott Why custom controls, Dave? One would think that a user item would
|
|
be enough
|
|
AFL Scott correct?
|
|
AFL Dyfet GA Matt...
|
|
Matt DTS User items are just fine as long as you're using the Dialog
|
|
Manager for everything.
|
|
Matt DTS If you're not, a custom control is the easiest way to go about
|
|
such things. GA.
|
|
AFL Dyfet GA Gary...
|
|
AFA Gary J Can someone tell me what is the latest version of GSBug? APDA
|
|
Catalog says
|
|
AFA Gary J it's 4.0b1. The developers were sent 5.0d4, and the acutal GSBug
|
|
Init shows
|
|
AFA Gary J 1.3d17. I'm confused :)
|
|
AFA Gary J GA
|
|
AFL Dyfet GA Matt...
|
|
Matt DTS The version number of the *disk* bumped up to 5.0 from 4.0 when
|
|
the system software did.
|
|
Matt DTS The version of the debugger itself is still in the 1.3 range as
|
|
released through APDA. GA.
|
|
AFA Gary J So the latest DISK version is 5.0d4?
|
|
AFA Gary J (If so, then why is APDA listed as 4.0b1?)
|
|
AFA Gary J GA
|
|
AFL Dyfet Perhaps slightly out of date :)?
|
|
AFA Gary J Like a year off? :)
|
|
AFL Dyfet Or maybe they are distributing with 4.0 for some other
|
|
unfathomable reason...
|
|
AFL Dyfet maybe an editing error??
|
|
AFA Gary J Probably the latter. Thanks. GA
|
|
Matt DTS I think a newer version will be forthcoming from APDA soon that
|
|
will end all the confusion.
|
|
Coach101 I do not think APDA ever updated their debugging package
|
|
Coach101 to 5.0 stuff.
|
|
Matt DTS The change in disk numbering to 5.0 never made it to APDA, as that
|
|
package was never updated.
|
|
Matt DTS <GA>
|
|
AFA Gary J Thanks. That explains it.
|
|
AFL Dyfet Okay...do we have any other questions for tonight?
|
|
AFL Dyfet GA Bytemaster, you have the floor now...
|
|
Bytemaster I'M NEW . Can somebody tell me what error $0003 in SysFailManager
|
|
is?
|
|
AFL Dyfet GA Dave, I knew you'd be first :)
|
|
Dave Lyons The SysFailMgr toolbox call can be called with any number from
|
|
0-FFFF and any string, so you can't
|
|
Dave Lyons tell what it is just from the number. (A lot of errors codes come
|
|
directly from
|
|
Dave Lyons tool errors, but 3 isn't one of them.) So, what we need to know
|
|
is
|
|
Dave Lyons what program was tring to start up/etc when you got the error?
|
|
Was there any message there besides
|
|
Dave Lyons the generic "Fatal system error"?
|
|
Bytemaster Yes. I got it after executing a quit call (all tools shut down)
|
|
It says UNABLE
|
|
Bytemaster TO LOAD NECESSARY TOOLS
|
|
Dave Lyons Okay, that was the Finder calling SysFailMgr
|
|
Dave Lyons when it had trouble starting up all the toolsets it wants. That
|
|
means the program you were quitting
|
|
Dave Lyons did not properly shut down all the toolsets it was using. ga
|
|
Bytemaster Im unsure of the quit call paramaters
|
|
AFL Dyfet You need to call shutdown on whatever tools you started in your
|
|
application
|
|
Bytemaster I have i4'0' i2'0' ga
|
|
Dave Lyons Bytemaster,
|
|
Dave Lyons it's not the Quit parameters that are wrong. For example, if your
|
|
program starts up
|
|
Dave Lyons QuickDraw (using QDStartUp), you need to shut it down *before* you
|
|
quit, using QDShutDown; same goes
|
|
Dave Lyons for all the other toolsets that you use. What language are you
|
|
using?
|
|
Dave Lyons (Duh, you're using
|
|
Dave Lyons APW Assembly...remind me to pay attention to your
|
|
Dave Lyons "i4"s :-)
|
|
AFA Gary J (Could be ORCA/M :)
|
|
Bytemaster orca/m
|
|
Dave Lyons I was just wondering if you were using ORCA/Pascal or something,
|
|
where you had some stuff
|
|
Dave Lyons provided for you like StartDesk/etc that would confuse matters
|
|
more, but never mind.
|
|
Dave Lyons You could possibly
|
|
Dave Lyons be shutting things down in the wrong order, too--there's a
|
|
technical note on starting
|
|
Dave Lyons and shutting down toolsets, w/ recommended orders.
|
|
Matt DTS (IIgs TN #12, by the way.)_
|
|
Dave Lyons Oh, and HeadCase points out that I should tell you to use
|
|
StartUpTools and ShutDownTools, where are
|
|
Dave Lyons new with System Software 5.0 & documented in Toolbox Reference 3
|
|
(at APDA).
|
|
Dave Lyons ga
|
|
Dave Lyons (StartUpTools & ShutDownTools take care of the details (like
|
|
order) for you, making life simple.)
|
|
Bytemaster Thanks I thought I shut all down but I'll recheck all GA
|
|
AFL Dyfet Okay, DL Davies is next and has the floor now...
|
|
DL Davies This is for those with experience using LinkIIGS. The manual
|
|
states that you...
|
|
DL Davies can use wildcards in the script. EX: -lseg:code MAIN1 data/=
|
|
DL Davies instead I have to do this....
|
|
DL Davies -lseg:code MAIN1 data/data.root data/data.a
|
|
DL Davies Any simple way to get around this....ALSO.......
|
|
DL Davies what does everyone think of ZapLink, better or worse than
|
|
LinkIIGS...GA
|
|
AFL Dyfet GA Coach...
|
|
Coach101 I do not have an answer to your -lseg problem... sorry... the
|
|
Coach101 manual sure implies what you did should work. On the ZapLink
|
|
comment,
|
|
Coach101 the specifications I have seen for ZapLink indicate that it will
|
|
not
|
|
Coach101 handle all of the cases that LinkIIgs handles. I like a very
|
|
"robust"
|
|
Coach101 linker so I will stick with LinkIIgs.. ga
|
|
DL Davies Yes, I noticed! You can't specifly segment types (code, data,
|
|
etc.)
|
|
Coach101 or RTLs, which I play with..
|
|
DL Davies :)
|
|
AFL Dyfet RTL's? Hmm...KRAM, Coach?? :)
|
|
Coach101 Yep... 50% converted to assembler/RTL
|
|
AFL Dyfet Hmm...I have a network email program just looking for something
|
|
like that :)
|
|
AFA JoeyS (network email?? <eyes glaze over>)
|
|
Coach101 Has Joey had a tetanus shot?
|
|
AFL Dyfet Yes, with gateways, Joey :)...
|
|
AFA JoeyS :)
|
|
DL Davies Oh...if we are on the subject of networks....
|
|
DL Davies I have a little TALK program I wrote that splits the screen in
|
|
two
|
|
DL Davies and lets you talk to another person on the network. DONE! GA
|
|
AFL Dyfet Hmm...Okay, Coach has the next question...GA Coach...
|
|
Coach101 First a correction, Dave informs me that ZapLink does work with
|
|
RTLs
|
|
Coach101 so I must have mis-read the specs on ZapLink. Sorry Mike!
|
|
Dave Lyons Oops! Hey,
|
|
Coach101 ga
|
|
Dave Lyons I wasn't talking about Run-Time Libraries...I was only talking
|
|
about opcode $6B, RTL, the kind that
|
|
Dave Lyons goes with JSL! ga
|
|
DL Davies :) hehehee
|
|
AFA Gary J :)
|
|
Coach101 Pass the wet rag, my face is covered with EGG :)
|
|
Coach101 I owe you one Lyons :)
|
|
Coach101 My question is, suprisingly, sort of network oriented. If I have
|
|
a
|
|
Coach101 code module that is not part of the running application (for
|
|
example, an
|
|
Coach101 Init, Driver, etc.), and that code wishes to, asychronously, put
|
|
up
|
|
Coach101 a message to the user (kind of like "oops, your server went
|
|
away"), what
|
|
Coach101 precautions do I need to take to assure that I do not mess up
|
|
the
|
|
Coach101 running applications context, windows, etc. ga
|
|
Dave Lyons Very good question...first, you should probably use the Scheduler
|
|
to make your code get called
|
|
Dave Lyons when the BUSY flag is 0 (this way it's safe to make QuickDraw
|
|
calls). 'course, then you
|
|
Dave Lyons have other cases to deal with, like text-based apps that never
|
|
call
|
|
Dave Lyons INCBUSY and DECBUSY...your task could sit there forever waiting to
|
|
execute.
|
|
Dave Lyons GS/OS provides Signals, which may be useful--write to DTS if you
|
|
want more info on that, since I
|
|
Dave Lyons don't have it in my head.
|
|
Dave Lyons You'll want to preserve
|
|
Dave Lyons the bitmap under your window, probably, in case you're running
|
|
under an app that doesn't know how
|
|
Dave Lyons to update all its windows. (If they haven't even started up the
|
|
window mgr, you might just use
|
|
Dave Lyons a text alert, like GS/OS does for the Format/Erase dialogs). The
|
|
Tool Locator has two calls that
|
|
Dave Lyons should be really handy for you: SaveTextState and
|
|
RestoreTextState. ga
|
|
Matt DTS And it gets even worse - if you use a Window Manager call while
|
|
the application is in the middle
|
|
Matt DTS of an update event, the Window Manager will eat the application's
|
|
VisRgn and UpdateRgn for lunch.
|
|
Matt DTS (This is a problem currently in the OS, as is discussed in a TN -
|
|
if you need a disk, the OS may
|
|
Matt DTS put up an alert window while your update region nad vis region are
|
|
swapped - bad news since that
|
|
Matt DTS adds more to the update region, which is really the VisRgn, which
|
|
is really a pain.) GA.
|
|
Dave Lyons Ack! Good point. I was going to say that TaskMaster almost
|
|
certainly keeps the BUSY flag
|
|
Dave Lyons incremented around the BeginUpdate, call the contDraw routine,
|
|
EndUpdate calls, but that's no
|
|
Dave Lyons help at all if an app or DA calls BeginUpdate and EndUpdate
|
|
separately. Ick. Also,
|
|
Dave Lyons if your code is getting called by a completion routine or
|
|
interrupt routine, *don't* put it in
|
|
Dave Lyons a dynamic segment. Two reasons: (1) What Matt said, since the OS
|
|
will put up a window to ask
|
|
Dave Lyons for the disk if it's not online. (2) The Loader isn't reentrant,
|
|
so you'll toast things if you
|
|
Dave Lyons happen to interrupt a Loader call already in progress. ga
|
|
Coach101 Ok, thats a lot to digest....
|
|
Coach101 I think I remember reading the TN and saying to myself "thats a
|
|
lot to
|
|
Coach101 ask of an application" and then thinking "Apple will fix this
|
|
someday
|
|
Coach101 I hope, I hope" :)
|
|
Dave Lyons Which part, Coach?
|
|
Dave Lyons (Oh...VisRgn stuff...got it.)
|
|
Coach101 My code is memory resident so loader is no concern. The
|
|
scheduler, adn
|
|
Coach101 praying that the application is using Taskmaster seems to be the
|
|
only
|
|
Coach101 reasonable approach for the moment. (of course, GS/OS console
|
|
driver
|
|
Coach101 if text screen is up). Thanks for the info ga.
|
|
AFL Dyfet GA Cecil...
|
|
CecilFret Thanks. I suppose it was a screwy way to learn C but at age 53
|
|
had to start...
|
|
CecilFret somewhere. I took on Lichty and Eyes book and converted their
|
|
code to C....
|
|
CecilFret Needless to say, it took a while. So I have a disk available with
|
|
all the c>>
|
|
CecilFret c code. Next, I took on Sandy Mossberg's series in Call
|
|
-A.P.P.L.E. In his
|
|
CecilFret code and my c code we both call OsShutdownGs with a shutflag of
|
|
2...
|
|
CecilFret That is the power down call. THe thing crashes. As I was sitting
|
|
here
|
|
CecilFret waiting I noticed neither Sandy nor I shut down the tools we have
|
|
started.
|
|
CecilFret we only did a DeskShutDown. Could this be the problem, not
|
|
shuttin down the
|
|
CecilFret tools??????? GA
|
|
AFL Dyfet GA Dave...
|
|
Dave Lyons You should be okay not shutting down the tools, since I don't
|
|
think the Finder shuts much down
|
|
Dave Lyons before it calls OSShutDown either. Once upon a time,
|
|
Dave Lyons there was a problem where it would mess up if you had the Window
|
|
Manager started up but had *no*
|
|
Dave Lyons open windows (even an invisible one would save you). I believe
|
|
that was fixed in 5.0, tho. Any
|
|
Dave Lyons ideas, Matt? ga
|
|
Dave Lyons Well, what sort of crash is it? Is the address
|
|
Dave Lyons in any of your GS/OS drivers, for ex?
|
|
Matt DTS That was fixed in 5.0. I watched Steve fix it.
|
|
Matt DTS I just did it from the Monitor and it worked fine for me from in
|
|
the middle of the Finder.
|
|
Matt DTS Sorry, Cecil. GA.
|
|
Dave Lyons Cecil, can you successfully shut down your system from the
|
|
Finder?
|
|
CecilFret Ok, first of all I am using ProSel, not the finder. Second, I am
|
|
using a
|
|
CecilFret dialog box from which I tell user to to a warm start or a Power
|
|
down.
|
|
Dave Lyons (If not, then you've got mismatched versions of drivers or
|
|
FSTs.)
|
|
CecilFret I am in 80 column mode at the time. The message comes back fine
|
|
about
|
|
CecilFret do you wish to restart, The restart button is there. When I click
|
|
itI get
|
|
CecilFret the dreaded bong and have to three finger salute.
|
|
CecilFret ga
|
|
Matt DTS You're in 80-column text mode with the desktop tools started?
|
|
CecilFret No, hirez Matt, sorry.
|
|
CecilFret No window open
|
|
Dave Lyons Is there anything on the screen w/ the Bong, Cecil?
|
|
CecilFret ga
|
|
Dave Lyons (I like hex numbers.)
|
|
CecilFret No, dave. Just the button
|
|
CecilFret No hex, no code, just bong
|
|
Dave Lyons Very weird. You didn't turn off text-page shadowing, did you?
|
|
CecilFret not that I know of. Like I said i do a destshutdown and that's
|
|
it.
|
|
CecilFret the screen goes blank and I get the message, etc.
|
|
CecilFret ga
|
|
Dave Lyons Wait!
|
|
Matt DTS (we're waiting)
|
|
Dave Lyons Why are you doing a DeskShutDown if you aren't supporting New Desk
|
|
Accessories?
|
|
Dave Lyons (But Darn...that's not going to cause his problem. DeskStartUp
|
|
would cause problems, but shutdown
|
|
CecilFret My About box shows control panel plus aobut who did it. ga...
|
|
Dave Lyons should be fine, since the system keeps doing that anyway [during
|
|
Quit & at boot time].) Hmmm.
|
|
Matt DTS When does this dialog show up, Cecil?
|
|
CecilFret wait!
|
|
Matt DTS (and is it a text dialog or desktop dialog? I'm still confused on
|
|
this.)
|
|
Matt DTS (we'
|
|
Matt DTS (we're waiting)
|
|
CecilFret I am trying to find the right magazine. I thought it was winter
|
|
quarterly.
|
|
CecilFret The dial shows up as a result of pulling down a menu item. ga
|
|
Dave Lyons In *regular* hi-res, right? No QD or Menu Mgr or anything.
|
|
CecilFret Running QD. Plain vanilla. Just like Hodgepodge
|
|
CecilFret ga
|
|
Matt DTS HodgePodge uses all the tools, Cecil. now are you or are you not
|
|
using SUPER Hi-Res and the desktop
|
|
Matt DTS tools?
|
|
CecilFret Hmm. Not sure. On shaky grounds right now. I open it 640. ga
|
|
Matt DTS <ay caramba>
|
|
CecilFret The code is in the Winter Quarterly of Call -A>P.P.L.E. ga
|
|
Matt DTS It crashes in Sandy's version also?
|
|
CecilFret that is a big 10-4 Matt. BTW, we are calling modaldialog with a
|
|
filter. ga
|
|
Matt DTS Do you close the dialog before calling OSShutDown?
|
|
Dave Lyons (Cecil, 320x200 and 640x200 are *both* Super-Hires. Ya confused
|
|
me by saying "hirez" [280x192].)
|
|
Dave Lyons (Does that matter?)
|
|
CecilFret Looking!
|
|
CecilFret The answer is no, Matt ga
|
|
Matt DTS (It might - the Dialog Manager might get confused by the Window
|
|
Manager messing with the desktop
|
|
Matt DTS behind its back.)
|
|
Dave Lyons Matt, bring up a modal dialog in the Finder & try OSShutDown with
|
|
it up.
|
|
Dave Lyons I don't see how it's going to get confused, considering the Dialog
|
|
Manager is never going
|
|
Dave Lyons to get control of the machine again.
|
|
Matt DTS Where does the Finder use the _ModalDialog tool call?
|
|
Dave Lyons Matt, the Finder uses ModalDialog when you click the About...
|
|
button in my Memory Bar NDA.
|
|
Dave Lyons (Should be an okay test, no?)
|
|
CecilFret I think you have givenme some ideas. I will try both shutting
|
|
down the
|
|
CecilFret tools and closing the dialog box. Enough for me for now ok?
|
|
Thanks guys ga
|
|
Dave Lyons Cecil, be sure to check that your machine shuts down successfully
|
|
from the Finder--it could be
|
|
Dave Lyons that your system is installed Weird.
|
|
Matt DTS It works just fine with a Modal Dialog in front. Reboots with no
|
|
message.
|
|
Matt DTS More importantly - make sure your system shuts down from Finder
|
|
*after* your program's been run.
|
|
CecilFret Hmmm. REloaded with 5.02 after a disk crash...ga
|
|
Matt DTS You might be trashing memory in the OS. I believe C was designed
|
|
to facilitate this.
|
|
Dave Lyons Eh?
|
|
CecilFret AMEN!!!!!!!!!!!!!!!!!!!!!!!!!! and wipe control panel stuff!!!!!
|
|
ga
|
|
Micol Sys C was designed to facilitate trashing memory in the OS?
|
|
CecilFret Needless to say I trashed a lot with C. Darned pointers!!!! ga
|
|
Dave Lyons I don't think anyone who has intentionally done a
|
|
DisposeAll($3000) is allowed to take whacks like
|
|
Dave Lyons that at C. :-)
|
|
Coach101 :0
|
|
Coach101 :)
|
|
Matt DTS But I did it from assembly, where at least I could see what was
|
|
happening. <nyah>
|
|
CecilFret Thanks guys. It is late in Iowa
|
|
AFL Dyfet All we need is memory protection...and virtual memory, while we're
|
|
at it, and
|
|
AFA Gary J hehe
|
|
AFL Dyfet C behaves fine :)
|
|
Matt DTS "It's morning in America..."
|
|
CecilFret Phooey to you AFL DYfet
|
|
CecilFret I could learn to hate C yesterday. ga
|
|
Dave Lyons Matt, can you say "asm { brk 0 };" ? I knew you could. :)
|
|
Tamira :)
|
|
Matt DTS Yeah, to see what's going on you have to use the inline assembler.
|
|
Reinforces my point.
|
|
Dave Lyons Okay, FINE. Here's how to BRK without using inline assembly.
|
|
Dave Lyons blah() { int x=0; *((void *)&x)(); }; And then you adjust S and
|
|
step from the RTL address. :)
|
|
AFA JoeyS You're sick, Dave. :)
|
|
Matt DTS And you call that readable. Take some pills, Lyons.
|
|
AFL Dyfet Matt, you can always #define Dave's mess into a simple BRK :)
|
|
Dave Lyons #define I_WISH_TO_BRK_HERE asm { brk 0 }; No prob.
|
|
Matt DTS Yeah, at least I didn't write a P8 shell that uses illegal
|
|
filetypes and steps on reserved memory.
|
|
Matt DTS <nyah>
|
|
Dave Lyons Feature war! My shell doesn't step on reserved memory out of the
|
|
box, but you can write your
|
|
Matt DTS <dave and dave are trying to figure out which one of them I'm
|
|
talking about>
|
|
Dave Lyons own command to do it! :-)
|
|
Micol Sys Don't you just love the friendly spirit of co-operation between
|
|
Apple employees
|
|
Tamira lol
|
|
AFL Dyfet Actually, other than $300, I found a nice chunk that AppleWorks
|
|
overlays in the
|
|
AFA JoeyS LOL Ron :D
|
|
AFL Dyfet banked ramcard around $d100-$d400 :)
|
|
Matt DTS We know AppleWorks does it too. We pick on them just as much as
|
|
we do you.
|
|
Dave Lyons (Matt, be sure to point you that you haven't writen a shell that
|
|
steps on reserved memory.)
|