America Online
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
Tuesday, February 19, 1991  10:00 p.m. Eastern Time
Topic:  Pascal and C Programming
Forum Leader:  Dave Sugar (AFL Dyfet)


AFL DannyH are we talking C and Pascal tonight?
AFA Gary J Yep.  C and Pascal
WinkieJim  Oh, great the two languages I don't know :) :)
AFA Gary J :)
AFL DannyH I'm struggling to learn assembly, next is either Pascal or
          C.....
Coach101   infidel :)
WinkieJim  Actualy I'm learning pascal
WinkieJim  slowly
WinkieJim  (i.e. whenever I get time to)
WinkieJim  Well, after I learn Pascal, I'm going to learn C, (again when I
          have time)
WinkieJim  I sould be done by the year 2000
AFL Dyfet  :)

AFL DannyH I'm leaning toward C, any comments on which one is best?
Coach101   I think C has a much richer future as a programming language than
          PASCAL...
MDW Flyer  How do GS Pascals compare to that available for the Mac?
MDW Flyer  I've seen several texts for learning Pascal on the Mac.
AFL DannyH I'm thinking of getting ByteWorks' C and their lesson plan too
AFL DannyH how portable will be the code in Byteworks' C to go to the Mac
MDW Flyer  and vice/versa
Coach101   Portability....
Coach101   Is more a question of how one interfaces with the user and the
          file system.
Coach101   If you use the C stuff..   very portable
Coach101   If you use native mode stuff (toolbox, etc.) then
Coach101   you will have to do considerable design work to achieve a high
          degree of portability.  ga
WinkieJim  But, Mac and GS toolboxes are similar enough to make converting
          either
WinkieJim  programs to the other a simpler task than many think
JWankerl   There are enough differences between toolboxes to give you
          headaches forever.
AFL Dyfet  Converting between the Mac and GS can be both trivial and
          frustrating :)....
Coach101   I agree Winkie, but one must do a lot of upfront research to avoid
          doing things that are not
Coach101   reasonably done on *both* platforms....
AFL Dyfet  One place that always gets you when you least expect it is Endians
          (which byte
AFL Dyfet  is first)...
AFA Gary J :)
WinkieJim  I didn't say it wasn't hard...just eaisier than say translating a
          IBM program
WinkieJim  to mac or visa versa
Coach101   Yeah....   VAX and IIgs....  A pair of machines unlike the rest of
          the world.....
MDW Flyer  Sounds like whats needed is source pre-processing.
JWankerl   Can I take my IIGS programs and run them directly on a VAX?  ;-)
AFL Dyfet  If you use stdio only, maybe...
AFL Dyfet  At least for compiling :)
AFA Gary J :)
JWankerl   Even my assembler programs that support the Desktop (TM)?  :-)
AFL DannyH I have found out to my dismay that writing hardware drivers is a
          lot more
AFL DannyH difficult than I ever imagined
Coach101   Ah Danny, drivers are fun...   They sure make you pay homage to
          GsBug also...
Coach101   A Q for the Apple types: Has anyone published a set of guidelines
          on toolbox commonality between the
Coach101   IIgs and Mac?
AFA Gary J Good question, Coach
WinkieJim  I don't know of one coach...the GS toolbox refs do mention some
          differences
WinkieJim  between the two here and there...
MDW Flyer  Could be new ground for some budding author/programmer.
Coach101   But, is there a market for a "Transportable Apple Interface"
          subroutine set for the IIgs & Mac?
Dave Lyons C. K. Haun did a nonzero amount of work in this area...Matt, is
          his stuff in a presentable state
Dave Lyons these days?
Matt DTS   I don't know the status of CK's stuff.
WinkieJim  Well, it could be usefull...WOuld have to be in MPW for best use
          though...
AFA Gary J I don't know that the language, or programming environment is the
          issue, it's the
AFA Gary J raw toolbox calls that need to be compared.
MDW Flyer  Anyone yet using the CTI release of the old TML Pascal II?
AFL DannyH I bought TML Pascal and quikly put it away along with my Jeeves
          Desktop and
AFL DannyH Pinpoint products
MDW Flyer  Where are the Mac toolbox calls referenced.  Any concise source
          like the GS's?
AFL Dyfet  Inside Macintosh is somewhat concise :)
Coach101   Mac calls are in Inside Macintosh (volumes I -> n)
AFA Gary J n^2
WinkieJim  MDW, five volumes, plus a few more references...
Coach101   If you do not like toolbox III refering you to toolbox I or II,
          you will really have fun with
Coach101   the inside Macintosh series...  A lot more updating has gone on in
          that arena...
AFL Dyfet  Inside Macintosh currently viey's with VMS for manual shelf space
          hogging :)
MDW Flyer  Total poundage looks about the same, so set up a group to do a
          comparison.!
Coach101   Whow....  Inside Mac, looseleaf edition, is only two 3" D-ring
          binders.  VMS is an order of
Coach101   magnitude worse than that (maybe in cost also)
MDW Flyer  Tackle each related group, set up ground rules for comparitive
          analysis.
Coach101   By the way, I find the descriptions, organization, and detail in
          the IIgs ToolBox series much better
Coach101   than the comparable Macintosh documentation.  Kudos to the authros
          and reviewers !!!
Matt DTS   (Just out of curiosity, does this have anything to do with Pascal
          or C?)
MDW Flyer  Who's really interested.  Sounds like a fair case for
          KansasFest.
WinkieJim  Matt, no trying to get this chat back onto the topic! :)
AFL Dyfet  :(
AFL Dyfet  :)
AFA Gary J It started out on C/Pascal :)
AFL Dyfet  Okay, do we have any more Pascal and C questions for tonight?
MDW Flyer  Wasn't there a training - class on Pascal last year sometime on
          AO?
Coach101   I have one, but I doubt that there is an answer to it so I wont
          ask it.
Coach101   I so hate to stump Matt
WinkieJim  Only prob I have is with vol 3, they should have noted what
          toolset version is
WinkieJim  required for each new call...
Dave Lyons WinkineJim, good point--but see GS Technical Note #100 for the
          up-to-date version list (I recommend
Dave Lyons always requiring the latest versions, not just the earliest
          version that has all the calls you need).

AFL DannyH does Apple support Pascal anymore? any version?
Matt DTS   MPW IIgs Pascal, version 1.0 is a supported APDA product.
AFL Scott  Who's been following the Todd Whitesel "I've got more ideas on
          compilers
AFL Scott  that work better than anyone" thread on comp.sys.apple2?
AFL Scott  And, what are your thoughts on the current state of IIGS
          compilers?
AFL Dyfet  Go ahead Coach...
JWankerl   Scott:  I discard those messages - not much fun reading to me.
Coach101   I have not, but given the material in his "enhanced IIgs" thread
          of months ago, I do not think he
Coach101   has his feet on solid ground (technical or business).  ga
AFL Dyfet  Having not seen the threads in question, I will withhold comment
          :)
AFL Scott  I'm done... I just wanted to hear some ideas on what people
          thought could be
AFL Scott  better.  Personally, I think Orca/C is pretty good. :)
Coach101   As to the state of IIgs compilers...   I believe both APW C and
          ByteWorks C to be viable, usable
Coach101   productive, and quality products.
SteveSand  I know I got here late, I paid complete technology some money and
          haven't ...
SteveSand  ...heard much any news?
SteveB     Vince and his crew are busy at work on CP 2.0! They haven't had
          much time
SteveB     to come on and do any supporting lately :)
AFL Dyfet  Okay, Joker has the floor now...Go ahead Joker...
AFC Joker  Just got my A2-Central today, with ads for their Summer
          conference.
AFC Joker  Since they're offering Pascal and C colleges at the same time,
AFC Joker  which would be better for me, a programming neophyte, to take up
          first?
MDW Flyer  Pascal.
AFL Dyfet  Go ahead Coach...
AFC Joker  Why?
Coach101   Disclaimer...  THis is personal opinion and opinions on languages
          are "religous" in  nature
AFA Gary J :)
SteveB     :)
AFC Joker  acknowledged...:)
Coach101   I think you will find that PASCAL is an easier environment for the
          learning experience...
WinkieJim  Blasphemer!
Coach101   But, I think you will find that C provides a more viable long term
          platform.  ga
AFL Dyfet  Go ahead Flyer...
MDW Flyer  Coachs' point is well put.  But C forces to many Coloquiel aspects
          into learnin
MDW Flyer  Pascal provides a better basis to learn  "Learn" programming &
          enjoy it.
AFC Joker  Sounds like I'd be better off in the Pascal college, then.
MDW Flyer  You can experience the agnonnnnny of defeat anywhere along the
          learning curve
MDW Flyer  with either language.  But the benefit of some english like
          commonality
MDW Flyer  will provide for a more productive learning curve.  Move to 'C'
          down the road
MDW Flyer  for some greater flexibility in tools later.  Done.  Off the
          soapbox.
AFL Dyfet  GA Wind...
Windrider5 One thing to remember... learning to program in C or Pascal is one
          thing, but
Windrider5 learning to program using the IIgs toolbox is
Windrider5 perhaps a bit more difficult
Windrider5 ga
AFC Joker  Thanks, all for your input. :))
AFL Dyfet  GA Danny
AFL DannyH I have been looking for a discontinued product by Apple
          Computer.....
AFL DannyH Instant Pascal... I understand that this product is
AFL DannyH not good for programming but....
AFL DannyH it is one hell of a tutorial for...
AFL DannyH a beginning Pascal learner....
AFL DannyH any comments? ga
AFC Joker  Sounds like a question, Danny.....:))))))))
AFL DannyH goes along with Tracy's question on learning
AFL Dyfet  I reviewed Instant Pascal a long time ago...it was really only
          suitable as a
AFL Dyfet  tutorial system, but it performed that role very well.  It had a
          bunch of
AFL Dyfet  hand holding features to help the novice user...
AFL Dyfet  Unfortunately, I do not believe it is available any longer...
AFL Dyfet  It ran on a 128K IIe or IIc....
AFL Dyfet  Under ProDOS...
AFC Joker  Danny, I know a guy who =used= to have IP, but he
AFC Joker  "graduated" to a Mac, and sold most of his Apple II stuff.
AFC Joker  I'll drop him an email on the local BBS to see if he still has it.
WinkieJim  Joker, some people concider that being left back a grade :)
AFA Gary J (total dropout)
AFC Joker  No kidding. :)
AFL Dyfet  Okay, I guess Coach has been held up in Queue :)...GA :)
Coach101   One additional thought, as you learn the language and toolbox, you
          will find that the language or the
Coach101   toolbox will require you to do things in a manner that may seem
          unnatural to you.  The best advice
Coach101   is to resist all temptation to fight and just go along with the
          flow of the environment.  In the
Coach101   end you will be much farther ahead...  done.
AFC Joker  Thx, Coach. :)
AFL Dyfet  Okay, go ahead, Jonah...
ShanoJ     Okay, just a quick question: I finally figured out how to write a
          Twilight
ShanoJ     blanker in C. To link it, however, you have to delete the .ROOT
          file output by
ShanoJ     the compiler (ORCA/C). Is this a Bad Thing that my children's
          children will
ShanoJ     regret me having done, or should I not worry about it?
AFL Dyfet  Go ahead Matt...
Matt DTS   Don't worry about it, as long as it's really a dummy procedure
          (make sure you're not throwing away
Matt DTS   something you need!).  Mike Westerfield's own library source
          includes a dummy procedure first in
Matt DTS   every file so he can safely ignore the .ROOT files.  GA>
ShanoJ     Okey doke, just wanted to be sure before I told people that was
          the way to do
ShanoJ     it... Thanks a lot!
AFL Dyfet  Okay, do we have any other questions for tonight??
AFL Dyfet  Go ahead Coach..
Coach101   Does anyone know if either APW C or Orca C has a provision for
          intercepting an I/O call and passing
Coach101   control to a custom routine to do the actual work?  Sort of like a
          "handler pointer" in the _FILE str
Coach101   ga
Matt DTS   Define "I/O call".
Coach101   read() write() ioctl() fcntl() etc.
Matt DTS   To my knowledge, the only way to intercept these is to write your
          own standard library.  GA.
AFL Dyfet  If you mean stdio, you could redirect access to
          stdin/stdout/stderr by directly
AFL Dyfet  manipulating the text tools, as those handles are routed through
          them and NOT
AFL Dyfet  GS/OS.  Other than that, you could patch/trap the GS/OS call
          vector itself :),
AFL Dyfet  but I really find it hard to imagine an application where
          something that
AFL Dyfet  extreme would be needed...
Coach101   What I am getting at is adding things like socket() to the system.
           I have seen implementations where
Coach101   the _FILE structure had a pointer, which if non-nil the standard C
          routines would pre-process and then
Coach101   pass to the pointer'd routine to do the rest of the work.  It
          makes adding extensions to the C I/O
Coach101   system a little easier.  ga
Matt DTS   If something like that were present in APW or ORCA/C, I'm sure
          you'd know about it, Coach.  :)
Matt DTS   (GA)
AFA Gary J :)
AFL Dyfet  :)...
WinkieJim  Don't drool David...
Coach101   Cmon guys....   They were desperate for Qs  :)
SteveB     LOL Jim! ;)
AFL Dyfet  Okay, Go ahead Jonah :)
ShanoJ     Okay, I got some source from someone where in his TStartup record
          he has the
ShanoJ     shadowing and fast port bits OFF (in the QD mode word). Then he
          calls
ShanoJ     SetMasterSCB($C000) to turn 'em ON. Is that a cool thing to do?
          When I took a
ShanoJ     list with NL, $012000 wasn't allocated to anyone, so shadowing
          wasn't really on
ShanoJ     (even though the application thought it was)...
Dave Lyons Doesn't help!  Currently you have to pass Shadow and Fastport bits
          to QDStartUp if you want to
Dave Lyons use them.
Matt DTS   (Dave <> protocol)
AFL Dyfet  Go ahead Matt...
Matt DTS   Currently, QD assumes shadowing is on and properly started if the
          proper bit is set in the SHADOW
Matt DTS   register - it doesn't use the Master SCB for that purpose.  So the
          code you speak of..
Matt DTS   ...is really only fooling the programmer into thinking he's using
          features he's not using.
Matt DTS   (if he later directly manipulates shadowed memory, he could crash
          the system, too.  Uncool.)  GA.
ShanoJ     And Twilight... :)
ShanoJ     (fooling Twilight, that is...)
ShanoJ     Okay, if I OpenPort when the master SCB has been set to $C000,
          will I get a
ShanoJ     pointer to $E12000 as I should (because shadowing isn't really on)
          or will QD
ShanoJ     tell me the screen is in bank $01?
AFL Dyfet  Okay, go ahead, Dave...
Dave Lyons Today you get a pointer based on the bit in the $E0C035 shadow
          register, like Matt said.  This is
Dave Lyons -not- guaranteed!  Nobody should be trying to change the
          shadow/fastport bits by calling
Dave Lyons SetMasterSCB.  ga
ShanoJ     So I should just use OpenPort to find the screen and tell him to
          change his
ShanoJ     program? Cool. :)
Dave Lyons Sounds like a plan.
AFL Dyfet  Okay, go ahead Winkie...
Matt DTS   Tell him to change his program anyway.  No one said he could do
          that.  :)
WinkieJim  I'd tell him to change his program...he made the mistake...
WinkieJim  BTW anyone who has never broken one of Apple's Guidelines please
          standup... :)
WinkieJim  ga
ShanoJ     <-- never broke a single rule. Always checks for errors. :)
Matt DTS   <standing>
Matt DTS   <ducking>
AFL Marty  <standing>
Matt DTS   <running>
WinkieJim  Sit down matt :) :)
AFL Marty  I don't program.  Does that matter? :)
SteveB     ::standing, but quickly sitting down::  ;)
A2Evanglst NOT EVEN MOVING ;)
AFL Dyfet  ::hoping nobody notices me not stand:: :)
Dave Lyons (Anyone who has coded in circles to accomodate people who did
          Weird stuff....)
WinkieJim  Ok, point made :) ga

AFL Dyfet  Okay, Winkie has the next question...GA Winkie :)
WinkieJim  Hows this for breaking the rules:
WinkieJim  Assuming I can handle sending the proper keyboard hits and mouse
          movements to
WinkieJim  the program running, how much trouble would it cause if I had a
          CDA or a
WinkieJim  other memory resident code put up a
WinkieJim  menu bar and handle taskemaster behind a programs back?
WinkieJim  BTW I can't rewrite the actual program...
Matt DTS   I'm not touching that one...
AFL Dyfet  GA Dave...
WinkieJim  I'm trying to allow NDAs to be used at a Sys16 program that
          doesn't allow them
WinkieJim  at a certain point in the program.
AFL Dyfet  Hmmm....
Dave Lyons WJ, you want the user to enter the CDA menu, choose your CDA, and
          get a Desktop?
WinkieJim  Something like that...
Dave Lyons And this is only when the application was *not* already using the
          desktop tools?
WinkieJim  Right, none of the desktop toolsets
Dave Lyons Hmmm...pretty sure it won't work anyway:
Dave Lyons for example, on ROM 1 you normally can't move the cursor while
          you're in the CDA menu, if the tools
Dave Lyons were already started up.  That might not be a problem if you're
          starting it yourself--not sure.
Dave Lyons The next step: Is the Desk Manager sufficiently re-entrant to be
          happy with you for making
Dave Lyons NDA-related calls while inside the CDA menu.  Maybe.
Dave Lyons Gee, I've almost convinced myself it could work, now--but you're
          still in the realm of
Dave Lyons Unsupported Weirdness Which Might Work. :)
Dave Lyons (ga?)
WinkieJim  Ok, basicaly wanted to see what some other people thought of the
          possibility
WinkieJim  I'll let you know how much of my hard disk is wiped out but my
          trying :)
AFL Dyfet  :)
AFL Dyfet  Okay, I guess Scott's been waiting patiently for awhile now...Go
          ahead Scott :)
AFL Scott  How about using SetMasterSCB to change a Ports mode - Is that
          legal/guaranteed?
Dave Lyons Does it even work?  I don't think so!  SetMasterSCB
Dave Lyons has no effect on any port's locInfo SCB word.
AFL Scott  Ok... That's right... sorry... I made a boo boo.  Then what good
          is
AFL Scott  that tool call?
Dave Lyons Scott, good question...it may affect any newly opened or init-ed
          ports; it -could- be used for
Dave Lyons enabling and disabling special features later, but that doesn't
          work right now.
AFL Scott  Ok, just wondering... I seem to have used it somewhere involved
          with printing
AFL Scott  but I can't recall with certainty since I _know_ I passed a port
          during
AFL Scott  printing... and did create that port with a different locinfo
          record.  Done..
AFL Scott  GA.
ShanoJ     What's the difference between the returned value from GetMasterSCB
          and
ShanoJ     GetStandardSCB? I THINK that GetStandardSCB gives you the SCB that
          QD was
ShanoJ     started with, but I'm not sure... Am I close? :)
Dave Lyons GetStandardSCB always returns $0000 as of 5.0.4 on ROM 1 (I just
          looked).  Not too useful, eh?
AFA Gary J :)
ShanoJ     Uhh... Is there any point to the call, or should I just forget
          about it and
ShanoJ     move on to bigger and better things? :)
Dave Lyons I think it's pretty pointless.
AFA Gary J Does it return a $0002 on a ROM 03?
AFA Gary J (Then it would be useful)  :)
ShanoJ     Okey doke--that makes things easier... :)
AFA Gary J One less tool call to worry about :)