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