textfiles/apple/ADC/adv.900424

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.)