textfiles/apple/ADC/adv.900731

838 lines
39 KiB
Plaintext

America Online
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
Tuesday, July 31, 1990 10:00 p.m. eastern time
Topic: Open Discussion
Forum Leader: Dave Sugar (AFL Dyfet)
AFL Dyfet Tonight is an open topic night. We moved the debugging conference
to a future
AFL Dyfet date.
Andy Stein Do they talk about products in development for the Apple IIGS?
AFL Dyfet We cover software development here, Andy; how to program and use
the tools;
AFL Dyfet what languages and compilers are available, etc.
AFL Dyfet Perhaps, Andy, what you are looking for is the Apple II Hardware
Forum...??
Andy Stein Could beeee, AFL Dyfet...
Andy Stein Oops! That's a little out of my area. One question, though: What
is a good
Andy Stein Pascal program for the Apple IIGS, that takes advantage of the
GS's graphics,
Andy Stein sound, and speed?
AFA Gary J ORCA/Pascal
AFL Marty Orca's the only one supported, isn't it?
Andy Stein Is it fast and good?
AFL Scott ORCA/Pascal.. THE only Pascal for the GS!:)
Andy Stein I'm learning on Apple Pascal 1.3, now. The UCSD Pascal. Are they
similar?
AFL Scott ORCA/Pascal compiles to machine code. It's ISO standard with
extensions.
AFL Dyfet No...Orca Pascal works in the IIgs native environment (GS/OS), and
not a
AFL Dyfet UCSD one :).
Andy Stein Does that mean it runs as fast as an assembly language program?
AFL Scott No, it means that it generates machine code not P code.
Andy Stein Which Apple Pascal generates.
JeffreyH11 Although that would be somewhat faster than Apple Pascal, since
the P-Code
JeffreyH11 has to be interpreted by the P-machine.
AFL Dyfet That also depends on the quality of the Orca compiler. The P-Code
interpreter
AFL Dyfet is itself pretty optimized.
Andy Stein Is it any faster, then? Would assembly language be faster?
AFA Gary J Optimized assembly language is always faster.
AFL Scott There's that nasty word again... Optimized....:)
AFA JoeyS :) Scott
JeffreyH11 Yes, but it's also an 8-bit program, and doesn't have the
advantages of a
JeffreyH11 16-bit processor. wish this thing word-wrapped.
AFL Dyfet The code will also be larger, but then you dont have the UCSD
Pascal space
AFL Dyfet limitations. Also, Orca/Pascal code can be linked to assembler
routines for
AFL Dyfet speed, or to routines in other APW languages...
Andy Stein I wonder if one could use the new animation tools with it, when
they are released.
AFA Gary J That's probable, from what I hear, Andy.
AFA Gary J (Probable that you could use the new animation tools with
ORCA/Pascal)
Andy Stein Thanks for the help, guys. Gotta go, now!
JeffreyH11 It would be fastest if you gave up Pascal altogether and wrote in
pure
JeffreyH11 65C816 assembly!
JeffreyH11 :)
Andy Stein Isn't that complicated? :)
JeffreyH11 Not once you're used to it.
AFL Marty That's assuming you know assembly (or are inclined to want to
learn it).
AFL Dyfet You can get the best of both worlds by linking in short assembly
functions to
AFL Dyfet use from Pascal where speed is most critical.
AFA JoeyS Assembly?? It's detailed, but not overly difficult.
AFA Gary J It's actually very simple, in it's pure form, Joey. It's just
trying to
AFA Gary J write a program with it that's difficult :)
AFA Gary J (just kidding, of course)
AFA JoeyS LOL Gary... yeah, right. %)
Andy Stein Bye! Have a good chat! See ya later!
JeffreyH11 Bye, Andy
AFL Scott And if you're really interested in it, you can even write slow
code like me!:))
JeffreyH11 What makes it so long and boring is all the drudgery needed for
just 1 tool
JeffreyH11 call, as opposed to a single line in most high-level languages.
Didn't
JeffreyH11 someone write a macro library that let you do tool calls in one
line?
AFL Dyfet Jeff, that is what macros are for :)
AFL Marty Aren't there macros for that.
AFL Scott Jefferey, Merlin 16+ has that.
AFA JoeyS Oh, Supermacros?
AFA Gary J It IS simple, what is there, only something like 90 instructions
to learn?? :)
AFA JoeyS Something like that, plus 16 or so addressing modes. %)
AFL Scott Yup!:)
AFA Gary J Yes.
AFA Gary J (Don't forget the addressing modes, VERY important!)
AFL Marty So there you go then. :)
AFL Dyfet And one can create new macros as needed :)
JeffreyH11 255 possible combinations of instructions and addressing modes on
the 65C816,
JeffreyH11 not counting the non-instruction named after Bill Mensch
JeffreyH11 (which most assemblers don't recognize anyway)
AFL Marty non instruction?
AFA JoeyS WDM? Why wouldn't it be recognized? (not that I've tried
it...)
AFL Scott But it's there! It's a great instruction, too!:)
AFA JoeyS :) Scott, ack
AFL Marty You mean it doesn't do anything?
AFA JoeyS Nope, Marty!
JeffreyH11 Its not even in the manual for ORCA/M. Someone try it in Merlin
16+
AFL Marty Seems somehow appropriate.
AFL Marty :)
AFA JoeyS :)
JeffreyH11 Exactly. As opposed to NOP, which DOES nothing. :)
Dave Lyons WDM? That's reserved for future expansion.
JeffreyH11 Yup! But I don't think any assembler will recognize WDM as
anything but a
JeffreyH11 missing macro.
AFL Dyfet Another instruction that does nothing :)
JeffreyH11 No, WDM doesn't do anything; not even NOTHING.
Dave Lyons Ummm...gee, the Monitor and miniassembler recognize it, no?
AFA JoeyS "doesn't do nothing", Jeff? :)
JeffreyH11 Or anything else!!
Dave Lyons Doesn't do anything *now*...don't use it in your code, or you
might end up being sorry.
AFL Dyfet And let's not forget the 65816 COP interrupt :)
AFA JoeyS (why would anyone even TRY using WDM in their code, Dave? :)
Matt DTS Jeff would.
AFA JoeyS Now COP... that's another story. If you've got FREDA (an INIT
that traps
AFA JoeyS the COP vector), you can really speed up yer debugging.
Matt DTS FREDA lets you see almost as much as GSbug does.
DAGII I have GSbug 4.0. Is there a later version?
AFA JoeyS 4.0??? I thought we're only on 1.x...
DAGII My manual says 4.0B1
Dave Lyons The GSBug *disk* versions are different from the GSBug Debugger
versions.
Dave Lyons (The GSBug *disk* includes more than just the debugger.)
JeffreyH11 What's FREDA?
AFA JoeyS FREDA is an INIT file that traps the COP vector. Basically, with
FREDA
AFA JoeyS installed, you put a COP xx in your assembly code, and when the
system hits
AFA JoeyS that COP, you get a nifty window overlayed on the screen showing a
register
AFA JoeyS dump, stack dump, current PC, and some other little things. You
also have the
AFA JoeyS option to pop to the CDA menu from there if you so desire.
Nifty-keen.
AFL Dyfet CDA is not only Nifty-Keen, but also means Nifty-List :)
AFA JoeyS :) Dave
JeffreyH11 Does it work in text or desktop mode? And where can I get it?
AFA JoeyS Works in any GS/OS mode, though the status window always gets put
on the
AFA JoeyS text screen (it's done in an, ummm, interesting way; not sure how
he does it).
Matt DTS He watches the vertical counters for the right scan line, switches
to text mode, draws his stuff
Matt DTS and gets back to the right mode.
AFA JoeyS Interesting. Seems like an awful lot of trouble just to put 40
column text
AFA JoeyS on the 80 col screen (LOL)
Matt DTS Doesn't bug Richard any. :)
Dave Lyons "Draws his stuff"? No, it's there on the text screen the whole
time.
AFA JoeyS :)
JDavies1 What advantages does FREDA have over GSBug?
AFA JoeyS I dunno -- is it in ADV.SL?? Otherwise I'll upload it.
AFA Gary J No, it's not, Joey.
AFA JoeyS Okay, Gary, I'll upload it... errr, ASAP.
AFA Gary J I've got a question about _TLMountVolume.
JeffreyH11 Let's hear it!
AFA Gary J Has anyone tried it without having the Event Manager active? Do
the
AFA Gary J keypresses still work? (I would guess that the mouse pointer
doesn't work,
AFA Gary J since doesn't that require Event Manager in order to have
_InitCursor work?)
JeffreyH11 _InitCursor is a QuickDraw II call, not Event Manager. I know
_TLMountVolume
JeffreyH11 isn't supposed to require dialog manager, but it may require ROM
versions of
JeffreyH11 Event Mgr., Window Mgr., and Control Mgr. to be active. Matt?
AFA Gary J Yes, I know that _InitCursor is a QuickDraw call, but try it
without the
AFA Gary J Event Manager active sometime. No cursor (at least it doesn't
get updated).
JeffreyH11 Of course not; the Event Manager actually draws the cursor, but it
uses some
JeffreyH11 QD2 routine to do it.
AFA Gary J Yes. That's what I mean.
AFA Gary J But, what happens with TLMountVolume? That's my question.
JeffreyH11 I would imagine you'd have problems with using the mouse if the
Event Manager
JeffreyH11 wasn't active. I dunno about the keyboard; still waiting for
Matt.
AFA Gary J (I'm going to try it, but just wanted to plan ahead a little. I
haven't had
AFA Gary J a chance to try it yet).
Dave Lyons Okay, TLMountVolume should work fine with just QD started--Return
and ESC should still work.
AFA Gary J But no mouse, right?
Dave Lyons To get cursor tracking you need both QD and Event.
AFA Gary J That's what I thought. Return and ESC should work, eh? Good.
JeffreyH11 Really? Doesn't it use the control manager to create controls?
or does it
JeffreyH11 simulate the whole thing?
Matt DTS TLMountVolume is documented as requiring the Event Manager.
AFA Gary J Where is that documented? (I couldn't find it)
JeffreyH11 Yeah, Where?? I couldn't find it either. TL itself doesn't
require ANYTHING,
JeffreyH11 not even Memory Manager!!
Matt DTS I remember it from comments in the source to HodgePodge,
actually.
AFA Gary J Ah, it could be in HodgePodge. Hmmm. I'll have to put that on
my list of
AFA Gary J places to look things up :)
AFA Gary J Does it REQUIRE Event Manager for the keypresses too?
Dave Lyons Oops--I could be wrong. Just tried it, and it crashed. Maybe it
does need the Event Mgr to read
Dave Lyons the keys.
JeffreyH11 I quote "The Tool Locator does not depend on the presence of any
of the other
JeffreyH11 tool sets..." (TB Ref. Vol 2, page 24-3)
Matt DTS The "tool locator" doesn't. Some of the functions might.
Matt DTS For example, "Line Edit" doesn't depend on the Font Manager, but
LETextBox2 needs it for styled text.
JeffreyH11 OK; I'll agree to that.
AFA Gary J Oh well. I can make my own dialog box then. It might be just as
easy. (I've
AFA Gary J already done it on another routine.... just QuickDraw draws).
JeffreyH11 Might as well use the text screen and make it easy, the way the OS
does.
AFA Gary J I read it the way you did, Jeffrey, but I KNEW BETTER on the
Event Manager
AFA Gary J thingie and mouse for TLMountVolume.
Matt DTS TLMountVolume needs QuickDraw and the Event Manager, if memory
serves.
JeffreyH11 But, Matt, LETextBox2 is DOCUMENTED as needing FM for styled
text!
AFA Gary J It is confusing the way it's documented.
JeffreyH11 What if memory doesn't serve! QD2 and EM are ROM-based; they only
need 5
JeffreyH11 pages of DP space collectively.
JeffreyH11 No, its not confusing; its not DOCUMENTED!! (unless it's in the
Update in V3)
Dave Lyons 4 pages?
JeffreyH11 doesn't EM require a page? I'll have to look that one up
Dave Lyons Doesn't QD require 3?
Dave Lyons (Yes, EM needs 1)
AFA Gary J QD = 3
JeffreyH11 You're right; QD only needs 3; I just looked it up. Sorry.
JeffreyH11 OK then, 4 pages. How could memory NOT serve in a 16-bit app.
The code
JeffreyH11 itself won't reside in bank 0, will it?
Matt DTS I meant "if I remember properly". Calm down!
AFA JoeyS :-)
AFA Gary J :)
JeffreyH11 OK. sorry.
Matt DTS Geez, mon.
JeffreyH11 Sorry, Matt, but you weren't here at all last week!
AFA Gary J Have to make up for lost time, I guess :)
JeffreyH11 Hope you enjoyed your vacation.
Matt DTS HodgePodge specifically started up QuickDraw and the Event Manager
(which are ROM-based on all
Matt DTS systems) so that TLMountVolume could be called in case the system
disk wasn't online for the RAM-based
Matt DTS tools.
JeffreyH11 OK. Haven't looked at HodgePodge in ages.
AFA Gary J Thanks. You've cleared up my confusion. (Although I suspected
that this
AFA Gary J would be the answer).
JeffreyH11 You know, we haven't discussed debugging for the last 1/2 hour.
:)
AFL Dyfet No we havent, and if you examine 'hot shot', Jeff, you will see
why :)
Matt DTS I think TLMountVolume could be a nifty debugging aid. :)_
AFA Gary J Yes, it could, actually :)
Matt DTS "Would you like to crash now?" "OK/Cancel"
JeffreyH11 Ha!!!
AFA Gary J LOL@!
AFA JoeyS LOL
AFA Gary J :)
AFL Scott Other Button ----------->
JeffreyH11 "In how many minutes would you like to crash?" "OK/Now!/Cancel"
Matt DTS That would require AlertWindow.
JeffreyH11 True; sorry.
AFA JoeyS Hmmm, Jeff... wouldja set up a heartbeat task to count off the
time until your
AFA JoeyS requested crash time came along?
JeffreyH11 No; I'd set up a Run Queue task (might need the toolbox in order
to crash
JeffreyH11 (not to say that it's buggy, of course. :)
Doctor Why Crash-Alarm :)
AFA JoeyS CrashAlarm, the handy new DA for wives of late night programmers
who JUST DON'T
AFA JoeyS KNOW WHEN TO QUIT...
AFA Gary J I was trying to get away with using TLMountVolume as a cheap way
to do
AFA Gary J dialog messages without the DialogManager.
Matt DTS Why not use the Dialog Manager? It's good for that kind of
thing.
Dave Lyons Gary, you could use AlertWindow.
AFA Gary J Yes it is, Matt. But it gets in the way of my arcade game code
:)
Matt DTS Who's more important - the users or your code? :)
JeffreyH11 The code, of course!
Dave Lyons Who's more buggy? The users or his code?
AFA Gary J Well, the users are. That's why I chose to shut down the Event
Manager during
AFA Gary J the game play :)
JeffreyH11 The users
JDavies1 the user...
DAGII When is someone (like Apple,Inc. going to develope a speech
tool?
Matt DTS Someone did a few years ago, DAG.
DAGII If it was included on the system disk education programs could all
use it.
VCooper A company called "First Byte" publishes a set of speech tools for
the IIGS. TML used to sell them as
VCooper a "Speech Toolkit" until last year...
VCooper not sure where to find them though, Dag, drop me a note..
AFL Marty Last time I heard you had to be Donald Trump to afford the license
to
AFL Marty use those tools.
JeffreyH11 How come Apple didn't put a hardware interrupt switch on the GS
like there is
JeffreyH11 on the Mac?
Matt DTS Jeffrey: It raises the cost and doesn't significantly help most
people.
Matt DTS For example, it would help kids crash and have to reboot in the
classroom over the network.
Matt DTS Our educational customers love little additions like that. :)
JeffreyH11 Is there any way to make use of the ABORT pin that's available on
the memory
JeffreyH11 slot. (or is it HALT that's avail. there)
Dave Lyons What's wrong with Apple-Option-Ctrl-ESC? Works for me.
AFA JoeyS What's Apple/Option/Ctrl/ESC, Dave? (Option?)
JeffreyH11 Huh?? What's Apple-Option-Ctrl-Esc?
AFA Gary J That works good to get you into GSbug, most of the time.
Dave Lyons It's Apple-Ctrl-ESC with Option down. Whaddaya mean? And it gets
you into GSBug if it's in.
Matt DTS That key stroke combination enters the debugger, if you have the
GSBug init installed.
JeffreyH11 Yes, but not all of us have GSBug. Besides, a programmer's switch
could be
JeffreyH11 installed optionally, like it is on the mac.
Matt DTS And it would raise the cost of *every* system to help out a few
people.
Dave Lyons Jeff, what do you want this interrupt switch to DO? What do you
think it does on the Mac if you
Dave Lyons don't have a debugger installed??
A2GS Jeff, keep in mind, we have a Monitor!! The Mac doesn't!!!
JDavies1 isn't the mac debugger in ROM?
JeffreyH11 Actually, it pops up a modal dialog with nothing but a > sign and
hang up the
JeffreyH11 machine. :)
Dave Lyons WHAT Mac debugger?
Matt DTS The debugger in the mac ROM is not suitable for anything even
remotely useful.
Dave Lyons In the little modal dialog, which I guess in in the Mac ROM, you
can do about 2 things, not including
Dave Lyons dumping memory, I think.
Matt DTS You can type "g" to get out of it, but that's about the extent of
it.
JeffreyH11 A2GS, true! And with visit Monitor DA, we can go there anytime.
Dave Lyons I think you can also store into RAM, but you have to know where
and what--it doesn't dump.
JeffreyH11 Oh. Didn't know that.
AFA Gary J If Apple wants more Apple II users to migrate to the Mac, then
they need to
AFA Gary J put a monitor in it.
Matt DTS True, Gary.
JDavies1 and a mini assembler :)
AFA Gary J Yes !
JeffreyH11 Naw; most users think the monitor is their display. :)
AFA Gary J :)
Dave Lyons Jeff, the "monitor" *is* their display, but the "Monitor" is the
Monitor. :)
Matt DTS Why, in a recent survey of Apple's home and educational
customers...
Matt DTS ...I think the number one thing they wanted in a Macintosh was a
list of "peeks, pokes and calls."
Matt DTS :P
AFA Gary J LOL!
AFA Gary J Well, It would be what *I* would like :)
JeffreyH11 Now if Apple wants us DEVELOPERS to go to the Mac, all they need
to do is
JeffreyH11 add a symolic assembler and monitor in ROM.
JeffreyH11 HA HA
Matt DTS Oh, like ANYONE programs in 68000 code.
Dave Lyons Some people do...to read from a MacRecorder it's very handy.
JeffreyH11 OK then, a C compiler in ROM. And a good one, too.
A2GS Why not package a Logic Analyzer with every GS????
Matt DTS They should build in AppleSoft Pascal or something.
AFA JoeyS A-HEM! On a TOTALLY different subject: I just this week picked up
A-W's
AFA JoeyS version of Toolbox Ref 3. Great job, guys... :))
AFA Parik s16gsbug ain't compatible with init gsbug, right
Dave Lyons Right. Just use the Init version.
Matt DTS Don't launch the S16 version if the INIT is installed.
AFA Gary J The init version is MUCH better.
JeffreyH11 Where is GSBug available and how much?
AFA Gary J APDA
Dave Lyons GSBug is available from APDA, and it's completely available.
Except it's not the Cool version yet.
A2GS I think it about $35
AFA Gary J What is it, uh...it's $30.
JeffreyH11 Elaborate.
Dave Lyons To get the cool version already, you had to be at KansasFest.
It'll be Final Cool instead of Beta
Dave Lyons Cool in "a few months" from APDA.
AFA JoeyS Final Cool vs Beta Cool?
A2Evanglst Hey... dudes.. the II Infinitum Tee-shirts have Entered Beta... We
hope to have a release soon!!!
AFA JoeyS Do the T-shirts have bugs?? (now I'm not so certain I want
one...)
JeffreyH11 Who are the Beta testers?
A2GS Where can we get them when their available???
Matt DTS Dunno. I read in InfoWorld that you were thinking about not
releasing them and working on a
Matt DTS shirt that combined it with Macintoshes, instead.
Matt DTS "prevailing market conditions", or other such nonsense.
Doctor Why t-shirts = vaporwear! :)
A2GS BTW what are you testing the shirts for? Fleas?
AFA Parik are there human interface guidelines for shirts?
A2Evanglst We are considering not releasing them because of the Amount of
Piracy of Tee shirts in the Apple II
A2Evanglst world ;)
Dave Lyons Yes...consistency in shirts is IMPORTANT, or people will
strangulate themselves trying to put them on.
AFA JoeyS LOL
AFA Gary J :)
A2GS Put on some type of Copy Protection.
JeffreyH11 Tee shirt piracy?? Now this is getting rediculous. Can't you
come up with
JeffreyH11 some sort of copy protection ?? :)
A2Evanglst Human Interface guide lines for Teeshirts
A2Evanglst 1) must have 2 sleaves
A2Evanglst 2) must have a hole for the neck
A2GS 2:1 Intersleave!!
AFL Marty copy protection = permabond to skin
AFA Gary J ooohh. nooo.
A2Evanglst ROTFL!!!!!!!!
Matt DTS Tattoo shirts. There ya go.
JeffreyH11 I hope the release version is bug-free.
JeffreyH11 (I meant the shirts, not GSBug, about not being buggy. Although it
would be
JeffreyH11 a good idea for GSBug to be Bug-free itself. Unless you wanted to
use it to
JeffreyH11 debug itself. :)
Dave Lyons (Using GSBug to debug itself is tricky...I believe there's a
special version for that purpose,
Dave Lyons actually.)
AFA Parik what exactly is a "toolbreak"
Matt DTS A tool break causes you to enter GSbug whenever that particular
tool call is about to be executed.
Dave Lyons Parik, tool breaks work like this: SetTBrk _NewHandle, TBrkIn.
Then Resume the program and
AFA Parik so how do you set it
Dave Lyons when it hits a NewHandle it breaks into the debugger, where you
can look around and then
Matt DTS settbrk _toolname
Matt DTS settbrk #toolnum
Matt DTS tbrkin
Dave Lyons single-step to let the NewHandle execute (hit Space ones) and see
the result. Then you can keep
Dave Lyons tracking, or just Resume, or whatever. Lots of fun, and there are
OSBreaks too.
Matt DTS (also tbrkout, clrtbrk, clralltbrks)
AFA Parik so where do I type in "settrbk"?
Matt DTS Uh...on the command line?
AFA Gary J At the GSbug command line, right?
Dave Lyons In the debugger.
A2Evanglst 2 very good answers ;)
AFA Parik how do I get to it if its an INIT? (okokok, I didn't read the
dox)
Dave Lyons Apple-Option-Ctrl-ESC.
Matt DTS hold down "option" while entering the CDA menu.
A2Evanglst Parik.. you are starting to sound like a Mac user
A2Evanglst Not reading the manual
Dave Lyons (Didn't I mention that before?)
AFA Gary J yes
JeffreyH11 Yes, but out of context.
A2Evanglst Tsk tsk
Dave Lyons Hey, I know! Maybe we need an Interrupt switch on the GS! :-)
AFA JoeyS {S deja vu}
AFA Parik I was watching road runner, sorry
AFA Gary J Yeah, good idea!!
JeffreyH11 Good Idea!!
Dave Lyons oh, that's okay then
AFA Gary J :)
AFA JoeyS As in movie or as in Bugs Bunny, Parik?
AFA Parik as in wil e. coyote
A2Evanglst Great.... and I will get lots of calls at my dealership from
people who are wondering what
A2Evanglst the switch does...
Dave Lyons (Anybody tried \addcs in Big Brother 0.5?)
AFA Gary J Yes. It seems to work fine, Dave.
AFA Gary J (Tried it on my program, and it came up clean. Surprise!)
JeffreyH11 Haven't used Big Brother yet.
AFA JoeyS Uhhh, yup, Dave. Speaking of which...
Dave Lyons Found the problem then, Joey?
AFA JoeyS Problem? Nope -- I was a bit disappointed that it didn't tell me
which byte(s)
AFA JoeyS had changed. Still have to move blocks to free memory and V>erify
'em from
AFA JoeyS the monitor for that.
Matt DTS See, Dave? No one does it more than once!
Dave Lyons Well GEEZ Joey, it's a CHECKSUM...if you want to know which bytes
you can make another copy and
Dave Lyons Verify them (I'll probably actually add commands for that too, but
the checksum stuff isn't
Dave Lyons designed for that).
AFA JoeyS :)
AFA JoeyS But what's the problem?? Seems to work fine otherwise.
AFA JoeyS (BTW, =thanks= for adding \err -- I needed that! :)
Dave Lyons Anyway, if you use \addcs TWICE without reloading Big Brother,
you'll find it DOESN'T EXIST after
Dave Lyons the first time! It calls a Nifty List service routine with an
8-byte buffer when it needs a
Dave Lyons 16-byte buffer, so 8 bytes of 00s get slammed over the command
name. :-( Will release BB 0.6 (the
Dave Lyons problem is in the module, not in Nifty List).
JeffreyH11 I found \map and \rtype real useful, as well as the tool call
capability.
AFA Gary J Tool call capability is great!
AFA Parik is bb part of nifty list?
AFA JoeyS \map?? Oh, cool, I didn't even notice THAT one...
Dave Lyons BB = Big Brother = one of my two Nifty List Command Modules
(separate files). The other is Goodies.
Dave Lyons All the "\" commands are from command modules.
JeffreyH11 It's real great. I just did a 1>s0FFC\map 3>s and got a resource
map on the
JeffreyH11 printer for RunQ.
Dave Lyons 0ffc\map?? That's probably getting you the map for the *current*
ResourceApp, whatever
Dave Lyons that happens to be (it's getting an error calling
SetCurResourceApp($0ffc), but not
Dave Lyons complaining). What it *expects* is 1002\map or whatever, a user
id for somebody who has called
Dave Lyons ResourceStartUp.
JeffreyH11 No, $0FFF was the resource file ID for the application I wanted.
Matt DTS Jeffrey: It doesn't want a resource file ID, it wants a memory
manager ID.
JeffreyH11 Sorry, Dave; I thought it searched starting with a specific
resource file.
Dave Lyons (\map starts with the *current* file in the specified ID's search
path & works its way to the
Dave Lyons end of the path from there)
Doctor Why They defined their own resource type (rInteger) to store the
values of the
Doctor Why Cdev controls (ORCA/Pascal)
JeffreyH11 OK
JeffreyH11 Dave, I tried loading NL 3.0 from the new DA installer, and it
didn't work. It
JeffreyH11 got a bad User ID error loading NLIST.DATA unless it was installed
at boot
JeffreyH11 time.
Matt DTS What DA installer?
JeffreyH11 FONT.DA.2.0 in AUT.
Dave Lyons I use Matt's IR (Init Restarter) to load it all the time, and it
works great. OH! I know what's
Dave Lyons going on--I fixed the "bad user ID" problem in 3.1proto. That
happens if NL has not been "shut
Dave Lyons down" yet, which happens at DeskShutDown time (including during
boot). If you launch another
Dave Lyons app it'll work fine.
Dave Lyons That's actually a nasty feature of a DA installer--DAs should be
able to assume they will
Dave Lyons be shut down before they are opened!
Dave Lyons (It shows up in NL normally only if you break into NL during boot
*before* the system finishes
Dave Lyons loading all the DAs & calls DeskShutDown.)
JeffreyH11 Too bad Apple didn't define a startup routine for CDAs, to be
called at
JeffreyH11 DeskStartUp and/or at install time.
JeffreyH11 Maybe if DA installer called the DA's shutdown routine after
installing it?
AFA Parik ohohoh- someone asked me once, does P8CDA (the one by RW) load
expressed cdas?
Matt DTS Uh...Dave?
Dave Lyons "Install time" is when it should call the ShutDown routine for any
DA, CDA or NDA.
Matt DTS (Dave wrote P8CDA)
Dave Lyons No, P8CDA does notoad ExpressLoad-ed CDAs at the moment. I've
been thinking lately I should
Dave Lyons revise it, but I haven't done it yet.
Dave Lyons Yes, the installer could probably call the Init or ShutDown
routine directly. Sounds like a plan.
Dave Lyons Jeff, \map takes a Memory ID and shows the maps for *all* the
resource files in that ID's search
Dave Lyons path.
JeffreyH11 No, NDAs have an Init routine that's call at DeskStartup AND
DeskShutDown,
JeffreyH11 with different values. it should be called with a nonzero value
at install
JeffreyH11 time.
Dave Lyons Why does your CDA care about DeskStartUp time, Jeff?
JeffreyH11 What CDA?
Dave Lyons Jeff, I disagree: An NDA expects to be called with a ZERO the
first time its Init routine is
Dave Lyons called, becaues the system calls DeskShutDown (NOT StartUp!) at
boot time.
JeffreyH11 so? what's wrong with that?
Matt DTS As long as he didn't use an $8000 + range resource type, they're
OK.
Dave Lyons A CDA's shutdown routine, which gets called at DeskShutDown time,
should also be called right
Dave Lyons away by anything that installs it & isn't about to make
DeskShutDown get called (by quitting).
JeffreyH11 OK, Dave. Then it should call with 0 and then nonzero, because
NDAs expect to
JeffreyH11 have the Init routine called with nonzero before they are opened,
and
JeffreyH11 DeskStartUp has already been called when DA installer is
running.
Matt DTS Sure - the same reason you shouldn't be writing to your CDev file
to begin with.
Matt DTS On a network, you might not have access to write to the file.
Dave Lyons YES, okay, if you're already in a desktop app it should call the
Init(0) and then Init(1), good.
Dave Lyons (And then it has to get it added to the Apple menu.)
JeffreyH11 Matt, the same holds true for any App. that wants to write to its
resource
JeffreyH11 file.
Matt DTS True, but most apps shouldn't be writing to their own resource
file, but to the resource files of
Matt DTS documents.
JeffreyH11 By calling FixAppleMenu. but how do you get the ID of the Apple
Menu if you
JeffreyH11 aren't the application that created it?
Dave Lyons Good question.
Dave Lyons And how do you remove the old items first?
Matt DTS Tim Swihart knows how - he published it in a late Call -A.P.P.L.E.
(he used it in Two Apples).
Dave Lyons Answer--there's no supported way, but you could probably
DeleteMItem on everything from 1 to
JeffreyH11 I didn't know you had to; I thought FixAppleMenu did it for you.
JeffreyH11 You could search the menubar for a menu with a title of just a @
sign to find
JeffreyH11 the apple menu. but what if there's more than 1 apple menu?
Dave Lyons GetNumNDAs, and you could call GetMenuBar and examine the first
menu entry to find the title
Dave Lyons and the ID (that part of the structure is documented in the Menu
Mgr chapter).
Dave Lyons (I believe the title is actually a byte of $FF once it's actually
in the menu bar.)
Matt DTS The menu manager changes the "@" to an undocumented value,
Jeffrey. Try dumping the menu bar
Matt DTS in Nifty List to see it.
Dave Lyons If there's more than one Apple menu? I guess you won't be able to
update them all. You mean one
Dave Lyons in a DA, or what?
Coach101 If you installed it yourself with InstallNDA then you could remove
it with RemoveNDA, right?
JeffreyH11 Ok. Is there a supported way of finding the Apple menu?
JeffreyH11 no; I mean more than 1 menu with that title on the same menu bar.
Bad
JeffreyH11 practice, but somebody will do it. DA Installer doesn't update
DA's menu bars.
Dave Lyons Nope, no supported way. But you could patch FixAppleMenu & make a
note of the ID passed to
Dave Lyons the most recent call. That should be reasonably safe.
JeffreyH11 On Init(1), sure. That happens before FixAppleMEnu is called,
since it can't
JeffreyH11 be until DeskStartUp occurs.
Dave Lyons You could patch it earlier if you want--on Init(0) should be fine
too.
JeffreyH11 But what about a CDA?
Doctor Why A thought: the existing CDEV's provided on the System disk don't
have other
Doctor Why documents. Does this mean they won't work on a network?
JeffreyH11 Dr. Why: No, most of the CDEVs on the system disk do the same
thing as their
JeffreyH11 ROM (text control panel) counterparts - update Battery RAM.
JeffreyH11 The chooser-like ones update */SYSTEM/SYSTEM.SETUP/PRINTER.SETUP
and
Doctor Why Ahh yes. I should have thought of that. <embarrassed> :)
Dave Lyons Yeah, the choose-printer CDevs don't work too hot over the
network, especially if you don't have
Dave Lyons rights to write to the Printer.Setup file.
JeffreyH11 You really SHOULD have access to those files; I've never booted
from a network
JeffreyH11 before. It does present some problems.
Coach101 Bad bug there Dave :)
JeffreyH11 At least we can do it. Macs CAN'T boot from a network - they MUST
have a local
JeffreyH11 boot disk.
Dave Lyons Jeff, a *lot* of users could be booting from the same
Dave Lyons AppleShare server! Even if you do have access to your boot System
directory, a lot of other
Dave Lyons people do too!
Dave Lyons There *is* a way to find a place on the server where you can keep
user-specific config files--
Coach101 The trick is to move the printer setup files into the user's setup
directory on the server....
JeffreyH11 True. Maybe you just shouldn't boot from a server if there's more
than 1
JeffreyH11 printer available to you.
Dave Lyons that's with an AppleShare FST-specific call called GetUserPath.
It'll be something like
Dave Lyons :MyVolume:Users:Dave Lyons:Setup (you get to add the Setup part
yourself, by convention)
AFL Dyfet A little unixish there :)
JeffreyH11 What if I don't HAVE a user path?
Coach101 The @ prefix is preset to that though isnt it?
JeffreyH11 I thought that @ was the "long" version of *.
Dave Lyons If you don't have a user path, then you didn't boot over the
server! (Easy. :-)
Dave Lyons The "@" prefix is set to that for an *application*, if the app was
launched from the server and the
Dave Lyons user booted from the server.
JeffreyH11 OK. I haven't read info on how to set up a server so people can
boot from it.
Dave Lyons (Close?)
Dave Lyons "*" is jus the boot volume--it's long enough already.
Dave Lyons 9 is the long version of 1.
Coach101 Yeah, so CDevs, NDAs, Inits, etc have to fend for themselves?
Dave Lyons Yes, NDAs/etc have to call GetUserPath (I'm going to put that in a
technote, as I promised some
Dave Lyons people at KansasFest in the DAs/CDevs/Inits talk).
JeffreyH11 Oh yeah..
Dave Lyons So if you boot over the server but have a local disk & launch the
app from the local disk, then
Dave Lyons "@" is set just like prefix 9, to the directory the app is in.
JeffreyH11 So when can I get a copy of NL3.1? Will you send it if (oops,
WHEN) I send in
JeffreyH11 by $15?
Dave Lyons You can get 3.0 right now, from ADV or AUT libraries--3.1 is just
proto at the moment, and
Dave Lyons it'll be a while before it's stable. (But it will have history,
and probably a usable version of
Dave Lyons Big Brother, in a month or two.)
JeffreyH11 I have 3.0 now; D/Led it last week. You'll have my $15 soon.
JeffreyH11 If I write a NL external module that installs a Run Q task or does
something
JeffreyH11 crazy like intercept the ToolBox, can I use NL to search the
NL.DATA file
JeffreyH11 as long as I make sure my code doesn't get called recursively?
Dave Lyons What? Try that on me one more time. Sounds like a Yes, though.
You can be recursive if you want,
Dave Lyons too (Nifty List is pretty much prepared for it).
Dave Lyons You can make nlLookup service calls whenever you want...but if the
data file isn't there it won't
Dave Lyons load it for you (it'll just say Sorry, no data).
JeffreyH11 I want a NL module to patch the ToolBox vector so that when a tool
call is made
JeffreyH11 my routine can use NL to look up the parameters.
JeffreyH11 Is there a "NL Busy" routine or flag or error so that I don't run
into a
JeffreyH11 problem intercepting TB calls that NL makes?
Dave Lyons And do what? Display it on the screen? Sure, just keep a flag so
that you don't do any weird stuff
Dave Lyons for calls made *by Nifty List* because of your service call, or by
your own code. You'll have
Dave Lyons to watch out for tool calls that happen from inside interrupts
too, probably.
JeffreyH11 no; actually I want to write it to a file if GS/OS isn't busy.
JeffreyH11 I would keep a flag so that I would just pass through calls made
while my
JeffreyH11 code is already active.
Dave Lyons You'll have to keep your own flag to protect against the nl
service making tool calls--I don't
Dave Lyons keep one.
JeffreyH11 and I would just ignore the tool call if GS/OS is busy.
JeffreyH11 What if the user enters NL and does something, and that makes a
tool call,
JeffreyH11 which calls my code, which calls NL to try to look it up, and NL
is busy?
Dave Lyons Why? Are you going to write this stuff to disk?
JeffreyH11 Yes, I'm going to write the name of the call and the actual parms
for each
JeffreyH11 call made, but I need to know the # and size of parms for each
call.
Dave Lyons That should be okay, I think.
JeffreyH11 NL won't have a problem with being called when its already in the
middle of
JeffreyH11 somebody else's nlService??
Dave Lyons Hmmm...actually, you could probably break it if you trapped on the
Text Tools calls I'm making, if
Dave Lyons you try hard enough (calling the Service routine to look stuff up
*during* a Quote command's scrolling
Dave Lyons output might confuse the original lookup routine).
Dave Lyons I will be looking very carefully at issues
Dave Lyons like this for Big Brother, since I'll have to deal with these same
issues to be able to drop into
Dave Lyons Nifty List at any errant or interesting tool call.
JeffreyH11 OK. Let me know what you can do.
JeffreyH11 Is there a flag that says the user is IN NL?
Dave Lyons There is actually a count of how many times you're in the Nifty
List *command level*, but there's
Dave Lyons no flag for seeing if a service call is in progress. By and large
there's no problem
Dave Lyons calling them whenever you want, but I'm sure there are a few
reentrancy problems in there at the
Dave Lyons moment, since I wasn't thinking about reentrancy when I wrote most
of the code originally.
Dave Lyons (The nlInfo service gives yoy, among other things, the Busy
count.)
JeffreyH11 OK. Thanks, and wish me luck!
Dave Lyons Luck! To answer your question more directly, I'm sure it's no
problem to call nlLookup unless
Dave Lyons another nlLookup is already in progress, which is unlikely (I bet
it will never happen unless you
Dave Lyons trap on Text Tools calls & the user uses the Quote command). The
service dispatcher itself is
Dave Lyons perfectly reentrant (uses stack locals), but some of the services
wind up using static storage.
JeffreyH11 OK. I can use nlInfo to find out if the user has entered NL?
Dave Lyons Yup, nlInfo returns you a 0 busy count if they aren't in Nifty
List at all (but there *could*
Dave Lyons conceivably still be a nlLookup in progress).
JeffreyH11 Yeah, maybe -- probably only if I'm making it, though, and I won't
trap tool
JeffreyH11 calls made while I'm active.
JeffreyH11 Later. Thanks for the info; I'll let you know how it goes.
Dave Lyons Well, if somebody *else* (a DA or an App) is making an nlLookup
and an interrupt comes thru and makes
Dave Lyons a tool call, that'll do it. (Unlikely? Probably.)
JeffreyH11 Yeah, but who makes nlLookup calls???
Dave Lyons Nobody so far!
JeffreyH11 how about a flag that will tell you if a service routine is in
use, for future
JeffreyH11 versions of NL?
Dave Lyons (So you're safe for now, and I'll make sure it's nice and
reentrant for the next version anyway.)
JeffreyH11 Later.