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.