America Online APPLE II DEVELOPMENT FORUM CONFERENCE LOG Tuesday, October 30, 1990 10:00 p.m. Eastern Time Topic: Open Topic Forum Leader: Gary Jacobson (AFA Gary J) AFA Gary J Ok. Let me start this conference officially.... AFA Gary J Good evening, and welcome to the Apple II Development Forum. Tonight is AFA Gary J an open topic, so feel free to bring up any development related question you'd AFA Gary J like. Let's don't use protocol just yet, unless things get out of hand. ShanoJ Dave, I think I found a bug in NiftyList. :( Dave Lyons :( What? ShanoJ Not a big one, though. :) If you type something like ?~s, it'll give you the ShanoJ description of the '~' commands, and then execute an 's' command, rather than ShanoJ give the description of the ~s command, which I would have expected... Dave Lyons Well...it's a feature. Dave Lyons Yeah, the Help ("?" or "=") only eats one character, except for the "\" command. The Dave Lyons parsing for stuff like "~" and ";" and "_" and ">" is inside the command itself. I suppose I Dave Lyons should mention that in the docs, though. (Stuff like "?_NewHandle..." should be really Dave Lyons insteresting... :) ) AFA Gary J :) ShanoJ Oh, okay, that's kinda what I thought. :) ShanoJ BTW Dave, thanks again for the suggestion of saving the value of $E0C000 and ShanoJ seeing if ANY of it changes. I stuck that into Twilight and it works REALLY ShanoJ well! :) Dave Lyons (good!) Dave Lyons BTW, I've got a minimally-working version of "Nifty List NDA" (needs some more tweaking before Dave Lyons it's presentable, but the concept definitely works). ShanoJ Hey, that's pretty awesome! I think I'll probably stick to the CDA, though... ShanoJ I find for development stuff I prefer having the separation between the ShanoJ application and the debugging utils. Can't wait to see it, though!! Dave Lyons Yeah, I'll keep using the CDA most of the time too, but when you want to play with the toolbox and Dave Lyons see the results on the screen, an NDA version is cool. Also, you get cut/copy/paste editing in Dave Lyons the NDA, so you can scroll around and even have little scripts you load off disk or whatever (it Dave Lyons executes as commands whatever text you select before pressing Enter, just like MPW). ShanoJ Ya, that sounds really awesome! I wish I had the skill to do parsing like you ShanoJ do in NL. Stuff like that is still beyond me. :( Dave Lyons Which part of the parsing is hard? Doing "expressions" is a little fun, but mostly it Dave Lyons goes left-to-right and calls a command subroutine for each different letter. It's built on top of Dave Lyons two routines: get-the-next-character and get-the-same-character, with the convention that Dave Lyons when you get called you're already "at" the first un-parsed character (this is just how Applesoft Dave Lyons works, only it's getting "tokens" which can be characters or whole reserved words). ShanoJ Ya, mentally I can comprehend what you're doing, but how to actually CODE ShanoJ something like that... Especially expressions like: ShanoJ _Call1(_Subcall1(_SubCall1a), _Subcall2(_Subcall2a(_Subcall2b))) WinkieJim Looks simple to me :) Dave Lyons It's not as bad as it seems--you're really just parsing _call1(blah1,blah2), so you parse Dave Lyons "_call1" and look for a "(". Then you call the *same* routine you're already in to parse the Dave Lyons first sub-expression; then you check whether you're at a "," or a ")" (otherwise it's an error). If Dave Lyons you're at a ")" you're done, and if you're at a "," you munch it and parse another sub-expression, and Dave Lyons that's about it. Dave Lyons The trick is to save the right stuff on the stack (or something equivalent) when you call yourself Dave Lyons recursively). Dave Lyons (The other trick is to invent good data structures--then you "just" have to Dave Lyons write the code that uses them.) ShanoJ Ya, I had to write a recursive quicksort in assembly the other day, and it was ShanoJ NOT fun.... :( Dave Lyons Not even after it worked? :) ShanoJ What makes you think it worked?! :) Actually, it does blow the pants off of ShanoJ my old bubble sort routine (right, Scott?! :), so I guess it was worth it. ShanoJ Biggest problem was that if and only if the array was already sorted it would ShanoJ overflow the stack. Took mbout two days to figure that out... :( Dave Lyons Is that a stable sort? (That is, do "tied" items stay in their original order?) ShanoJ You mean if there's three 3's in a row will they still be in the same relative ShanoJ positions after it's done sorting? Dave Lyons (Jonah, yes--that's what I meant by a stable sort.) ShanoJ (Hmm, tell you the ruth I don't know. I wouldn't think so, though.... How do ShanoJ you test something like that? Uh, probably I could figure it out if I thought ShanoJ about it... :) Dave Lyons (Yeah, you'd generally want to prove it rather than test it--just wondering.) Surak TFF Question: I am trying to play a sound from inside a CDEV. I have the Snd Tools Surak TFF started up, (after checking to see if they were ALREADY started of course), and Surak TFF I go to make my _FFStartSound call, when, right after the _FFStartSound call, Surak TFF I get an error $0012.... I can't find this error listed in any book, anywhere. Surak TFF And I am using the same procedure for playing a sound which worked perfectly Surak TFF in another part of the same program... Dave Lyons Surak, sounds very strange. $0012 doesn't mean anything to me offhand. Are you setting the Dave Lyons Bank register in your CDev? Are you sure you're allocating direct-page space properly and Dave Lyons successfully starting up the Sound Tools? Surak TFF Yes, there was no error on _SoundStartUp, and as far as DP space, the rest of Surak TFF the CDev seems to work right :) A strange thing is, if I take out the error Surak TFF check after the _FFStartSound call, the sound doesn't play, but the machine Surak TFF doesn't hang or crash either - it just doesn't do anything with the sound at Surak TFF all. Surak TFF (So it's probably not that invalid data is in the parameter block, as far as Surak TFF I can figure)... Dave Lyons Ah--does your "error check" consist of calling SysFailMgr with the returned error code? Surak TFF Well, basically... Surak TFF (that will, of course, be changed when the program is finished :) Dave Lyons I've got a feeling the $0012 you got was supposed to be a $0812 (I remember at least one Sound Dave Lyons Tools bug like that, where it was failing to stick on the tool number). I belive $0812 means you Dave Lyons haven't started up the Sound Tools (even if SoundStartUp didn't return an error, something Dave Lyons could have gone wrong--like maybe you somehow passed zero for the direct-page address). Surak TFF $0812 is Sound Tools Not Started. But how can I start them up, if SoundStartUp Surak TFF doesn't do it? Dave Lyons Check the values that are really getting passed--have it display the direct-page value Dave Lyons and see if it's valid! Maybe your NewHandle failed, or maybe you're not dereferencing the Dave Lyons handle properly. Surak TFF Well, I used the Memory Manager to get a $100 byte page-aligned locked block in Surak TFF bank 0, dereferenced the handle, and then passed the low word of the pointer I Surak TFF got to the tools.... Dave Lyons Sounds right, but one of those steps isn't happening right. ShanoJ Dan, why not pop into NiftyList after you THINK you've started the sound tools ShanoJ and see if they're actually started? Surak TFF THe problem with that, Jonah, is that it happens so fast I have no way of tell- Surak TFF ing when they are started before the system "fails" :( Surak TFF (I could put in a BRK or something)... ShanoJ Why not put a brk 00 into the code and THEN pop into NL! :) WinkieJim <---lives on BRKs :) ShanoJ BRK's rule, especially with GSBug INIT installed!! :) WinkieJim <---has a basket full of BRKs next to my desk :) Nuzz I BRK for animals ShanoJ Really Mike? I only BRK for bugs.... :) Nuzz But my bugs are REAL animals to find WinkieJim I see a bumper sticker taking form here...:) WinkieJim I BRK for bugs! ShanoJ Do you think anyone would understand a bumper sticker like that?! LOL :) AFA Gary J (Winkie: You'd sure find out who knows anything about 6502's with a bumper AFA Gary J sticker like that :) ShanoJ Dave, are there any plans to create new official scrap types? I would think a ShanoJ sound scrap would be particularly suited to the GS... Dave Lyons Jonah, a Sound scrap sounds cool to me...we should pound out an exact spec. Surak TFF (A sound scrap is a good idea.... It'd be quite useful) Surak TFF Well, the routine I used in the same program to get DP for Standard File was Surak TFF copied EXACTLY (cut and paste) for this, and it works for SF.... Very strange.. Dave Lyons Obviously something is different in the environment--cut and paste doesn't guarantee it's Dave Lyons going to work in a different program. Do you have the B and D registers set up when you use this Dave Lyons re-used code? WinkieJim Are you checking for an error from the NewHandle call? Surak TFF Well, it is in the SAME program.... :) And the B/D registers are set up Surak TFF by the CDEV before the CDEV jumps to the various routines it has... Surak TFF (and yes, I am checking for a NewHandle error :) WinkieJim Does your CDev set it's own Direct Page? Surak TFF Yes, it does, Jim... Surak TFF It is probably just a simple mistake I made somewhere (it happens often enough, Surak TFF anyway), it was just the $0012 error that threw me... WinkieJim Hmmm, I've a NDA that I've worked on and I found that if I set the direct WinkieJim page that some tools calls behaved wierdly unless I restore the direct page WinkieJim that was active when I got control ... WinkieJim might want to to try restoring the original DP before calling tools... Surak TFF Well, I haven't had any problems with the direct page before.... I could check Surak TFF that out, but first I could see if the sound tools are actually getting Surak TFF started.... Surak TFF (though I won't really know what to do if they're not :( ) Surak TFF (except check for typos ;) Dave Lyons Nah, no tools require a special D value when you call them--and they don't change it on you Dave Lyons either. But you do need to put B and D back before you return control to the system from your CDev. Surak TFF Oh, yes, the CDev does do that... Dave Lyons Surak, are you using $C015 for the attributes of your direct-page handle? ShanoJ Can you open a window from a CDEV with a NewWindow2 call? Probably not because ShanoJ it's an NDA, right? Surak TFF Yes, $C015 attributes..... Dave Lyons You can, but it has to stay modal--there's currently no way for an NDA to have more than Dave Lyons one modeless window. ShanoJ Hmm.... That has some interesting possibilities... :) AFA Parik would fakemodaldialog work? Dave Lyons Yes, you should be able to use fakeModalDialog fine, as long as you *don't* let it update Dave Lyons background windows or open NDAs from within the modal window. Dave Lyons (The restriction on updating is because it would call Application content-draw routines without Dave Lyons setting the ResourceApp correctly.) ShanoJ Okay, color me stupid but what's fakeModalDialog? Surak TFF Good question, Jonah... Sounds familiar but I can't place it... :) Dave Lyons Do you want that, Matt? Matt DTS FakeModalDialog is a tool provided in the latest round of Sample Code from DTS. Matt DTS It allows you to implement modal dialog boxes without using the Dialog Manager. This means you Matt DTS can use all the facilities of System 5.0, including extended controls and windows. ShanoJ Ah, I KNEW I'd seen it somewhere! Thanks for coloring me stupid, Matt! :) Matt DTS You create the window, tell FMD to treat it as a Modal Dialog and it does the rest. Matt DTS (It can also deal with "movable modal dialogs", a new interface component.) Matt DTS Partners, Associates and KFest attendees got a manual on the tools; it's not otherwise available at Matt DTS this point. If you REALLY DESPERATELY need it, send me some US Mail with your address and appropriate Matt DTS groveling, and I'll forward it to the Take Pity committee. Matt DTS (GA) WinkieJim BRIBE? WinkieJim :) ShanoJ Okay, thanks Matt!! ShanoJ How does Glen Bredon do those's Text/SHR 'screens' for ProSEL? AFA Parik overscan ShanoJ No, I mean how does he shadow the text screen to the SHR screen? Guess he ShanoJ 'just' loads the characters from the text screen and draws them back to the SHR ShanoJ screen? Sure s QUICK. AFA Parik or his COUT prints to both shr & text if shr active (otherwise only text) AFA Gary J Probably that, Parik. A2GS Personally, I think he uses the heimlich menuevar. AFA Parik anyone know what "My Word" is? Heard its a word-processor by (!) gary little Matt DTS It's a WP based on TextEdit that reads "Teach", AppleWorks WP and text files. It's included on the Matt DTS latest Developer CD ("Night of the Living Disc") so we could ship some online docs for things like Matt DTS Universal Access with styles in them. AFA Parik is it on the Prodos partition? Matt DTS Yes, it's in the "Utilites" folder if I recall. Matt DTS (the icon points to it so you can use DIcEd to find out from the ICONS folder) ShanoJ (Where'd the name "Teach" come from?) ShanoJ Any word on the release of 5.0.3? Is that why Platinum Paint is no longer being ShanoJ distributed? Matt DTS 5.0.3 is Golden Master and is available to Partners and Associates on AppleLink right now. Matt DTS It will get to the general public in a few weeks, after developers have a chance to make sure it works Matt DTS with their software before they get flooded with phone calls. AFA Parik is the CD-version golden-master? (hi joey) A2GS Correct me if I'm wrong...was Hypercard GS released on the Dev. CD? AFA JoeyS (woo) ShanoJ "Golden Master"? WinkieJim Shano, Golden Master is one step before the public gets it. Matt DTS No, the CD version is *NOT* Golden Master. For your usage purposes, the only thing that changed is Matt DTS the LaserWriter driver. However, as always, you may not ship anything other than what Software Matt DTS Licensing sends you. ShanoJ (Thanks, Jim) WinkieJim (Unless it goes backwards :) :) AFA Parik ok. great! no lw here :) Nuzz I licensed 5.0.2, does that mean that I can ship 5.0.3 or do I need another one Nuzz for that Matt DTS Your license covers 5.0.x, Mike, but you have to wait for the disks from Licensing. Matt DTS Further information is on AppleLink in the AIIDTS folder, along with the 5.0.3 package itself. Matt DTS (further licensing information) A2GS BTW...I'm not sure if this falls within Non-Dis., but Matt, have you started A2GS work on 6.0? Matt DTS We haven't announced any 6.0 project, A2. A2GS ok, thanx AFA JoeyS So what's after 5.0.3, then?? :) AFA JoeyS (preparing to dodge pies) WinkieJim 5.0.4 WinkieJim :) AFA Parik a big vacation I imagine AFA JoeyS Oh, thank you... :-) Nuzz Why did I expect that answer :) AFA Gary J :) AFA JoeyS WinkieJim or m aybe 5.0.3.1 AFL Scott I got a question... why are control def procs so fast! I've got beta testers AFL Scott complaining of scrollbar ping pong!:) AFL Scott I had to put a delay in just to slow it down...:) Dave Lyons Is your delay based on the tick count, Scott? AFL Scott Yessir!:) Dave Lyons Good! Yeah, Mac people had the same problem. Scroll bars that worked just great on a Mac Plus Dave Lyons sometimes went a little too fast on a IIfx. :) Tognazini claims in an Apple Direct article that Dave Lyons Inside Mac told folks from the beginning to max their scrolling speed by the tick count, but nobody Dave Lyons I know has found evidence of this.... :) AFL Scott LOL!:) That's a good one!:) Seriously, though.... AFL Scott Hey, BTW, the access to control actions procedures is really clean using Windows instead of Dialogs.. AFL Scott It was a problem that I never in my life anticipated. People on unaccelerated GS' AFL Scott were complaining... I knew I did it right then. I truly love the new way to do it. It's nicer AFL Scott to operate using part codes instead of messages. A2GS How does one remove a device (ex. 5.25 drive) from the active device list, I A2GS would assume it involves deavtivating the appropriate DIB, right? AFA JoeyS Under P8 or GS/OS, A2GS? Dave Lyons Nope, you can never remove a device from the device list. Dave Lyons (Except by rebooting, of course.) Matt DTS You can add new ones, but you can't remove ones that are there without rebooting the system. Dave Lyons (These answers are for GS/OS, by the way.) A2GS under GS/OS... A2GS You can add a DIB, but not remove it? Matt DTS Yes. Dave Lyons A2GS, Yes. It makes sense, too--what if a program got the device number from somewhere and Dave Lyons decided to do some operations with it later--it wouldn't be good if some other device was Dave Lyons there then. A2GS What about making a Driver Shutdown call? Matt DTS 1) You can't make a driver shutdown call. Matt DTS 2) That still doesn't stop the problem of other people trying to use the device. AFL Scott I have another question... What is the apple preferred way to handle a preference selection... AFL Scott Currently, I'm just opening up a "Modal" window and getting the selections, then writing them to disk. AFL Scott Creation is another story. If no file is found, I ask the user if creation is desired, if not, I just AFL Scott use defaults and don't tell them... is that ok? Matt DTS That's fine, but some preferences are best represented by "checked' menu items. Matt DTS As for creation, you don't have to ask permission to create a preferences file. Just don't complain Matt DTS if there's an error. (And be sure to get an auxtype from DTS before shipping.) AFA Gary J :) AFL Scott OK, Matt, will do! Where is the _proper_ place to put a preference file? In the system folder as on AFL Scott Macs? Dave Lyons (BTW, I think you *should* warn the user if you're unable to save their non-default preferences.) Dave Lyons 9/blahblah.config is the best place. There's Dave Lyons even a technote that says so. Matt DTS No, "@:blahblah" is the best place if you're an application. (Shame, shame, Dave. You even wrote Matt DTS that note.)( AFL Scott Ok... Thanks!:) AFA Gary J Which note is that? AFA Gary J (Do you know off hand?) Matt DTS (GS/OS #11, "Using the @ prefix." I think.) AFA Gary J (Ah, ok. looking) Dave Lyons (That's what I meant. Sorry, I hurt my elbow.) AFA JoeyS :) AFL Scott Nice article on printer drivers, Matt!:) Matt DTS Thank you. It was written on no sleep, but they wouldn't let me print that. Matt DTS (I love being a martyr.) AFA Gary J :) Dave Lyons Matt, aren't Martyrs supposed to die? Paladin13 I got a question Paladin13 if you use a loop with Gettick as a time delay will that work with accelerator Paladin13 boards too Dave Lyons Yes. There are always 60 ticks per second, no matter what accelerators are around. Matt DTS Only if you base your loop on the tick count. :) Dave Lyons (Or maybe it's 50 in Europe, but it still doesn't depend on the system speed.) Paladin13 Great thats how I wrote all my delay stuff A2GS try basing your ticks on Scan Line interrupts :) Paladin13 I was hoping the accelerators wouldn't throw it off :) AFA Gary J Find someone with a Transwarp to beta test for you. Paladin13 Why A2GS? A2GS Should speed things up immensly :) Paladin13 Actually I was thinking of purchasing it I know someone who is dumping his for Paladin13 $200 A2GS only kidding...stick with what works...60 ticks per sec.