838 lines
39 KiB
Plaintext
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.
|