America Online
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
Tuesday, January 22, 1991  10:00 p.m. Eastern Time
Topic:  Programming in BASIC (and mostly other stuff)
Forum Leader:  Dave Sugar (AFL Dyfet)


Tenore     I have a question about AC/BASIC by absoft, does that qualify?
AFL Dyfet  Yes, I guess that qualifies just fine, Tenore :)....What is your
          question?
Tenore     I have a Prodos 16 version, I want to convert it for GSOS 5.0
Tenore     I have the conversion program but It sayes it's already patched
          but it wont
Tenore     work.  any idea?
AFL Dyfet  I have not personally worked with AC/BASIC, but I do recall that
          the older
AFL Dyfet  version had to be patched just to run under GS/OS.  I do not know
          if the
AFL Dyfet  patched/updated version will run on 5.0 or not, though.  Perhaps
          somebody that
AFL Dyfet  will be on later can answer that for you, or you can leave a
          message in the
AFL Dyfet  message base...
AFA Gary J E-mail Airship.  He lives by AC/BASIC.   He may show up later.
Tenore     I have talked to him he gave me the patch program
Tenore     Anyone have any good refrences for a IIGS basic compiler besides
          AC/BASIC/
AFL Dyfet  Well, Complete software is intending to re-release TML Basic (as
          Complete
AFL Dyfet  Basic) at some point in the future...
AFL Dyfet  There is also Micol Advanced Basic for the IIgs....
AFL Dyfet  Micol and AC/BASIC both presume their own way of handling
          graphics/the desktop,
AFL Dyfet  though Micol does allow you to access the IIgs native tools more
          easily....
Tenore     Anyone here use Micol?
AFL Dyfet  Do we have any other questions on Basic for tonight then?
ShanoJ     I've got a non BASIC question, when we're ready for them...
Tenore     Are we talking about Applesoft basic or just basic in general?
AFL Dyfet  Basic in general, including the A word :)
AFA Gary J :)
Tenore     Well I'll hold my questions till Airship gets here, if he does.
AFL Dyfet  Okay Tenore....anyone else??
AFL Dyfet  What was your question Jonah??
ShanoJ     Okay, here's my question, mainly for DaveL:
ShanoJ     In Twilight (a CDEV) I want to call _DrawMenuBar. However,
          whenever I my
ShanoJ     code gets control, IT is the a) active resource application and b)
          the active
ShanoJ     resource file. This means that if the host application's menu bar
          used
ShanoJ     resource ID's 1-5 for it's menu titles, Twilight's PString's 1-5
          are used to
ShanoJ     draw the title of the menu bar!! If I do something like a
          _CloseResourceFile
ShanoJ     on Twilight's resource fork, I get a Resource Manager $1E06
          (resNotFound)
ShanoJ     error. Any ideas what I should do here?!
Surak TFF  CDev's can't close their own resource files, can they?
Surak TFF  (legally, I mean)
ShanoJ     Sure, if they open them up again....
AFL Dyfet  GA Dave...:)
Dave Lyons Good point.  There's no way to determine what the "application's"
          resource app is,
Dave Lyons but here's a hack that ought to work:
Dave Lyons When you start up the Resource Manager, don't do it with your
          NDA's memory ID.  Allocate a different
Dave Lyons one with GetNewID($5000) and start up the resource manager with
          that, instead.
ShanoJ     Thing is, I DON'T start it up--the Control Panel does...
Dave Lyons This way the Desk Manager will be unable to switch Resource Apps
          when it gives control to your
Dave Lyons NDA, and if you pray real hard maybe it will always be the
          application! :-)
Dave Lyons Of course, this means you have to use Get/Set...SetCurResourceApp
          around uses of your
Dave Lyons own resource fork.  Sound good?
Dave Lyons Oh, you're a CDEV...
Dave Lyons How fun.
Dave Lyons Hmmm...
AFA Gary J :)
Surak TFF  (Aren't CDev's grand? :)
Dave Lyons Well, that's more interesting, isn't it?
Foreigner1 :>
Dave Lyons Actually, CDevs *are* pretty slick (very modular).
Surak TFF  LOL... Not quite what I meant... :)
Dave Lyons So far, though, nothing hits me on how you can make a DrawMenuBar
          work right....
ShanoJ     Ya.... I had a whole progression of calls worked out (GetNameGS,
          GetUserID,...)
ShanoJ     but it didn't work quite right... There's no way to assiciate a
          UserID with
ShanoJ     it's resource file ID's (if you're looking for things to add to
          the toolbox,
ShanoJ     that might be an awesome one... :)
Dave Lyons What do you want, exactly?  You can already SetCurResourceApp to a
          user ID & use
Dave Lyons GetCurResource file....  (True, that doesn't necessarily give you
          the whole search path.)
Dave Lyons In the case of window update routines, I hope to have the system
          take care of resource app
Dave Lyons switching so that DAs can let app windows update in the background
          if they want (behind modal NDA
Dave Lyons windows).
Dave Lyons I will investigate whether something similar can be done (in the
          system) for menu bars...but in
Dave Lyons general there's not a simple answer.
Dave Lyons (ga)
ShanoJ     So there's no easy way to find out what the 'next' file in the
          search path is?
ShanoJ     Grumble, grumble, complain.... :(
Dave Lyons Mmmm...I think the only way is to examine the resource map, at the
          moment.
Dave Lyons (That is, do a GetMapHandle & look at the record.)
Dave Lyons Would it be useful to be able to walk the resource search path?
ShanoJ     Ya, I think that would solve a LOT of my problems... I'm looking
          at the ref
ShanoJ     right now... Gimme a sec and I might figure it out all by
          meselfishness... :)
ShanoJ     Let Foreigner ask his ? and we can get back to me in a bit if I'm
          stuck... :)
Dave Lyons GetMapHandle only gives you the *current* resource file's map;
          doesn't
Dave Lyons help you find other folks' search paths.  done
AFL Dyfet  Okay, go ahead Foreigner...
Foreigner1 Alright, I feel like an idiot for questions like this, BUT...
Foreigner1 Using NewControl2, (in OrcaC1.1) I told it I wanted a pointer to
          an icon
Foreigner1 but, when I give it the address of the icon, it responds with a
          type conflict.
Foreigner1 What sort of type casting do I need to do??
AFL Dyfet  This sounds very familiar :)...GA Dave...
Dave Lyons You need to look at how NewControl2 is declared in the interface
          files (probably "Control.h"?) and
Dave Lyons model it after that.  If it's the parameter I'm thinking of, it's
          of type "Ref" (at least in the
Dave Lyons Pascal intefaces--I believe they're very similar).  Does that
          help?
Foreigner1 yep....  Going through the dispatcher when I looked at it..
Foreigner1 I don't think it is Ref
Foreigner1 Any clues Dave?
AFL Dyfet  What are you assigning it to?  You can always 'cheat' and re-cast
          it into
AFL Dyfet  a void pointer :)
Dave Lyons I'd have to see the declaration--I don't think I've got ORCA/C
          1.1....
Foreigner1 I'm typing something like this: NewControl2(windowPtr, 0,
          &item_Template);
Foreigner1 (Rez is in the mail, that's why I'm not using it yet :) )
Coach101   Are we talking about NewControl2's type?
Dave Lyons And then assigning that to a variable is giving you the type
          conflict?  (What Coach said.)
Foreigner1 No, the type conflict is at the &item_Template. (sorry bout
          that)
AFL Dyfet  What do you have item_Template typed as?
Dave Lyons And how is NewControl2 declared in Control.h?
JWankerl   There should be no conflict there, the calls aren't prototyped!
Dave Lyons Oh!  So how is item_Template declared?
Foreigner1 extern pascal CtlRecHndl  NewControl2 () (inline(0x3110,
          dispatcher);
Coach101   Wait one.....
Coach101   If there is no prototyping why how can there be a
Coach101   complaint on the NecCXontrol2 function invocation line
Coach101   at the &Itemrec parameter?
Foreigner1 Item_template is a standard item template (IconButtonTemplate)
AFL Dyfet  If there is no prototyping then maranda prototype rules take
          effect in an ANSI
AFL Dyfet  compiler.  Generally, everything is presumed to be of type int
          until otherwise
AFL Dyfet  proven....
Foreigner1 (didn't know that!)
Coach101   No.....    Otherwise you could not compile old
Foreigner1 I tend to get two errors saying the same.  I think one is what I
          am assigning
Foreigner1 it to, the other must be in that statement...
Coach101   C code with an ANS compiler!!!
Dave Lyons (So what?  "&" still makes a pointer, which should be fine.)
          Again, how is item_template declared?
AFL Dyfet  If the function is declaired first, then that declaration is used
          to presume
AFL Dyfet  the prototype, Coach, but in an ANSI standard compiler, by
          default, if the
Dave Lyons WHAT'S THE OTHER ERROR?  It could be the "real" one.
Foreigner1 IconButtonTemplate item_template
AFL Dyfet  function is used before called, its presumed at that point to be
          passing ints,
AFL Dyfet  and when declaired later, will have a type mismatch with the
          maranda prototype.
Foreigner1 They are the same-> type conflicts...
Foreigner1 Orca C tends to grumble at all type conversions...
JWankerl   Just curious, what is type of the variable you are assigning the
          result of
JWankerl   NewControl2 to?
Coach101   The function has a type of INT, but are you sure about the type of
          the arguments/parameters?
Foreigner1 That is one of the type conflicts, (in retrospect)
Foreigner1 The more I think about it, I think I may be able to fix it.  I
          think I'll go
Foreigner1 try, and then come back on if I can't.  Sound good?
AFL Dyfet  Orca C really needs warning level options, so you can stand back
          and ignore
AFL Dyfet  some of the innocious type casting errors when your initially
          writing something
AFL Dyfet  until you are ready to clean-up and finalize the code.  At least
          that's the way
AFL Dyfet  I tend to work :).
Foreigner1 Thanks all!! (again...) (ga!!))
JWankerl   What?  You mean your code doesn't work on the first try?  ;-)
AFA Gary J :)
Foreigner1 (Yeah... RIGHT!)
Foreigner1 :>
AFL Dyfet  Type casting control for pointers is more critical in model'd
          systems, where
AFL Dyfet  they can very in size in the same program :)...But then maybe I
          should just be
AFL Dyfet  cast back into the void :)
AFL Dyfet  Go ahead Joe....
JWankerl   With the LGetPathname2 call... what is the fileNum parameter?
AFL Dyfet  GA MAtt
Matt DTS   To my knowledge, the file number is for some kind of Loader
          support for multiple files under the same
Matt DTS   user ID, with the file number referring to the order in which they
          were InitialLoaded.
Matt DTS   This doesn't happen very often, and I have no idea whether it
          works or not.  Usually "1" is the only
Matt DTS   fileNum you'll ever need.  GA.
JWankerl   So right now it really doesn't mean much, right?
Matt DTS   Already answered.  GA>
JWankerl   Thanx.
Dave Lyons (Wasn't watching.  Yeah, use 1.)
AFA Gary J :)
SPW        hello. What is the topic tonight?
AFL Dyfet  Basic programming, actually :)
SPW        :) oh, can I ask a question off the subject?
AFL Dyfet  That's okay SPW :)
SPW        ok- what I need to know is if anyone here knows if ProTERM Special
          Emulation
SPW        is Copyrighted. Since it is an extension of Datamedia 1500 it
          doesn't seem
SPW        ;like it should be...
AFL Dyfet  Definitely off subject, SPW :)...I do not believe it is....I
          recently wrote a
AFL Dyfet  termcap for it on my UNIX box :)
SPW        I need to know if I should have legal permission before releasing
          a ProTERM
SPW        compatible term program
Dave Lyons (*Can* you copyright a protocol??)
SPW        good question....
SPW        is ANSI copyrighted?
AFL Dyfet  Okay, do we have any more questions for tonight?
AFA Gary J Dave, I thought of a good module for Nifty List.  The TaskMask
          CDA gave me the
AFA Gary J idea.  There ought to be a way to have Nifty list tell you bit
          meanings, for
AFA Gary J things like event masks, and that sort of thing.
JWankerl   Ya know, with a little work, I could modify my Templates module to
          do that.
Dave Lyons Go for it, Joe!  (I was just playing with it, finally.  Cool
          beans!)
ShanoJ     Dave: put a command into NiftyList to turn the SHR screen on, but
          leave
ShanoJ     NiftyList active. That way if you do something like
          _RefreshDesktop(0) you can
ShanoJ     actually see it working. (It took me forever to find out that
          _HideMenuBar
ShanoJ     resets all of the SCB's, but that would have made it EASY!)
Matt DTS   Jonah:  It already has that in 3.0.  Try pressing Ctrl-T at the
          command line.
Dave Lyons ShanoJ, you can always hit Ctrl-T right before you hit Return to
          execute your command, then
Dave Lyons hit Ctrl-T again (that's what I usually do).
ShanoJ     Duhhh... It probably says that in the docs, huh? (ducking from
          Matt's swing. :)
ShanoJ     Okay, how 'bout an extension to Goodies that shows you the handles
          allocated by
ShanoJ     \getmem. I often forget to write them down and then loose them...
          :(
Dave Lyons ShanoJ, if you can remember the auxiliary ID it uses, you can get
          them with 5x00i...just a sec.
Dave Lyons 5500.  Although you may get a few other things, too--
Dave Lyons like Joe's Templates file. :)   The \getmem doesn't attempt to
          keep a list of them right now, and
Dave Lyons it would be a little weird if it did--what if you passed one to a
          tool and the tool disposed of it?
Dave Lyons \getmem would have no way of knowing (at least once the handle got
          re-allocated), so it could kill it
Dave Lyons by accident if it tried to clean up.
ShanoJ     Well, a \findmem could just use the MemID it's using to look for
          all handles
ShanoJ     with that ID... Then again, it'd probably be easier for me to just
          remember to
ShanoJ     write 'em down, huh? :)
Dave Lyons (I *do* need some sort of variables, though, to let you keep track
          of misc. info like that.)
Dave Lyons (I don't like having to write things down.  Distracting & slow.)
AFA Gary J Same here
JWankerl   Hey Dave, any idea when we'll be able to pull up a NL command
          history? ;-)
Dave Lyons Like in 3.1?  Oh, I haven't uploaded that have I?  Shame on
          me....
AFA Gary J Yes, shame on you :)
JWankerl   Thanks for teasing me... :-)
AFA Gary J :)
Dave Lyons Problem was right after I finished that, I got inspired to make
          the text output go fast (a couple
Dave Lyons people complained) & now it _really_ flies.  On a TransWarp
          machine you really can't tell what's
Dave Lyons scrolling by on a ;h dump....
Dave Lyons (I wrote some simple blast-to-the-text-screen routines & use those
          instead of the Text Tools
Dave Lyons now!)
JWankerl   So... my first question still stands (sort of)... when will I be
          able to get it
AFA Gary J Neato.  Is 3.1 firm?
Dave Lyons Firm?  Sure, but I'm about ready to give y'all 3.2 instead.  Has
          been stable for a few days now--
Dave Lyons hopefully no embarassing bugs.
AFA Gary J Sure, I'll take 3.2 instead :)
Dave Lyons Hmmm...how 'bout tomorrow night?  Will upload it then....
JWankerl   Sounds good to me.
AFA Gary J Great, Dave :)
Matt DTS   3.2 is really neat, actually, even if Dave did write it.
AFA Gary J :D
AFA Gary J I can tell Matt appreciates it, as he answers Nifty List questions
          faster than
AFA Gary J Dave does :)
ShanoJ     What'd happen if I went into NL now and did a Ctl-T?
ShanoJ     Nothing good, I assume?
Dave Lyons I think that's in 3.0, ShanoJ...doesn't it work?
Matt DTS   You'd see the SHR screen, which if you're using the GS version of
          AOL is probably the sign-on screen.
Dave Lyons In previous versions, it would have put a "^T" on your command
          line (which doesn't help a lot).
JWankerl   Yep, ya see the main open-apple-D screen.
AFA Gary J Yep
ShanoJ     Oh ya, I'm using the 8bit version (big difference...:)
AFA Gary J Yeah, that would make a difference.
AFA Gary J I finally got the new Device Driver Reference (yesterday).  Good
          stuff.
SPW        anyone know for sure if CirTech is going to release it's MAC
          emulator?
Matt DTS   About CirTech:
Matt DTS   After getting to within two weeks of their scheduled ship date
          when no one in the world had
Matt DTS   even seen evaluation, pre-pre-release units, and they still said
          they'd ship in two weeks...
Matt DTS   ...they announced the product was cancelled because Apple didn't
          market the Apple II enough.
Matt DTS   (It just seems awfully convenient to me.)
SPW        &%^&$#^#!!!! That is why Apple ][ users would buy it!!
ShanoJ     Anyone know about a Nintendo emulator for the GS? Now THAT would
          boost sales!:)
AFL Dyfet  ::choke::
AFA Gary J I'd much prefer a IIGS enhancer.
AFA Gary J (Speed/graphics)
ShanoJ     Ya, there's a thought...a IIgs emulator for the GS! Just what we
          need! :)
AFA Gary J Otherwise, I'm very happy with the IIGS the way it is.
ShanoJ     (BTW, I know you didn't was emulator...I'm just goofing off
          again... :)
AFA Gary J Yes, exactly, Jonah :)
AFL Dyfet  I'm holding out for a virtual reality interface and cyberspace
          :)
AFA Gary J Is there a way to set the modem port to non-buffered without
          accessing the
AFA Gary J firmware?  (via device drivers).  I want to be able to wait for a
          character
AFA Gary J from the serial port, rather than having it there for me
          already.
Matt DTS   No:  buffering is handled by the firmware.
AFA Gary J That's what I thought.  So, it would be better for me to use
          firmware rather
AFA Gary J than Devices, for my application, I guess.
AFA Gary J (If I have to use firmware for one part, I might as well use it
          for the rest)
AFL Dyfet  You can install your own buffer handler through the firmware....
SPW        ohhhh- I just thought of something I need help with.....
SPW        If I need to write a CDA that 'intercepts' characters coming out
          and in a seral
SPW        port what locations do I neeed to check (in Assembly)
SPW        ??
Matt DTS   You have a rather simplistic idea of how the serial firmware
          works.  :)
AFL Dyfet  You can only really reliably intercept activity with an interrupt
          handler,
AFL Dyfet  otherwise it might be gone before you get there....and reading
          input ports when
AFL Dyfet  no characters are yet processed can be bad for the UART/incomming
          data :)
Matt DTS   You need to read the Serial I/O chapter in the Firmware Reference
          and the Technical Notes.
ShanoJ     READ YOUR TECH NOTES!!! :)
AFA Gary J Yes.  (Firware Reference describes the operation rather well,
          IMO)
AFA Gary J Firware?  sheesh.  I need to learn how to type :)
SPW        what if the program running with the CDA puts in its own interrupt
          handlers?
AFL Dyfet  The firmware does allow one to insert their own handler for the
          IIgs serial
AFL Dyfet  ports....
AFL Dyfet  This sounds like what you wish to do, as your handler will be
          called when
AFL Dyfet  incomming data appears, or when ready to send...
SPW        hmm...maybe I could read the address of the current interrupt
          handler and
SPW        change it to my handler which jumps to the original one when
          finished..?
AFL Dyfet  But again, you should read the Firmware reference manual :)
SPW        yea yea- I know- the reference manuals :)
SPW        they come in handy
AFA Gary J they go out handy too :)
ShanoJ     I just got new TB Refs! It's really nice to have them all in ONE
          piece! :)
AFA Gary J You could have just hole punched you're old set, Jonah :)
SPW        I just told Addison Wesley mine were falling apart and they sent
          me new ones
SPW        :)
ShanoJ     Yuppers, me too! Didn't even want the old ones back....
AFA Gary J AW is good about that.