💾 Archived View for spam.works › mirrors › textfiles › apple › ADC › adv.890725 captured on 2023-06-16 at 21:09:28.

View Raw

More Information

-=-=-=-=-=-=-

AppleLink
APPLE II DEVELOPEMENT FORUM CONFERENCE LOG
July 25, 1989  10:00 p.m. eastern time
Topic:  Pascal and C Programming
Forum Leader:  Dave Sugar  (AFL Dyfet)

AFL Dyfet  Okay, LISTEN UP...we will be using PROTOCOL STARTING NOW
           :)....Good evening and
AFL Dyfet  welcome to the Apple II Development Forum.  Tonight's topic is
           Pascal and C,
Windrider5 what's does "expressing" mean?
Imcreator  I WANT 5.0
JimLaz     (CMS is suppossed to be working on a native SCSI driver for their
           card.
AFL Dyfet  and we ARE using PROTOCOL, which means we WILL get to everyone's
           QUESTION in
AFL Dyfet  turn.  Our first question this evening is from Windrider.  GA
           Windrider.
Windrider5  What does "expressing" mean?
Dave Lyons a lot of information is consolidated into one segment at the
           beginning of the
Dave Lyons load file so ExpressLoad can load the file faster.  Applications,
           DAs, setup
Dave Lyons files, tools, EXE files, & any other load files I missed can all
           be expressed.
Windrider5 does this work for program written in higher languages?
Dave Lyons (Stuff that ships on 5.0 already comes expressed.)  Oh, drivers
           too.  ga
Dave Lyons Yes, any S16 or EXE file can be expressed.  Any "load file".
Dave Lyons (ga)
AFL Dyfet  Some applications may not work after being expressed.  In
           particular, an
AFL Dyfet  application that calls the loader directly to bring it's own
           segments in will
AFL Dyfet  not work correctly.
Dave Lyons !
Dave Lyons Right, an application that loads its dynamic segments *by number*
           rather than
Dave Lyons name will not work after it's been expressed, when you try to run
           it under
Dave Lyons  *earlier* system software.  It *will* work under 5.0, since
           ExpressLoad knows
Dave Lyons how to translate pre-expressed segment numbers into new segment
           numbers; but
Dave Lyons for maximum compatibility we recommend applications load segments
           by *name*
Dave Lyons only, not number.  Another reason an application could break after
           being
Dave Lyons expressed is that it stores data (configuration choices, for
           example) into
Dave Lyons hard-coded places in the file.  That's a bad idea.  (A Good Idea
           is to request
Dave Lyons a Configuration filetype/auxtype assignment from Developer
           Technical Support.
Dave Lyons Mail stop is now 75-3T!)  ga
AFL Dyfet  I was not aware myself that the loader was revised for expressload
           support :)
AFL Dyfet  Okay, I see that our next question is from BillP.  GA Bill.
Dave Lyons It wasn't; ExpressLoad gets first whack at all Loader calls that
           are made,
Dave Lyons assuming that it's around.  ga
BillP      I have recently been working with a company doing Apple II
           development and they are using...
BillP      Aztec C....   is it used often?
BillP      In AII development that is.
BillP      ga
AFL Dyfet  Hmm...I used to putter around with Aztec C myself, but that was a
           long time
BillP      I assume that it is not the best environment but the only C
           available for 8 bits?   yes?
Windrider5 ?
AFL Floyd  !
AFL Dyfet  ago.  There is also Hyper C, but it could not genorate stand alone
           appl.
AFL Dyfet  easily.
AFL Dyfet   
AFL Dyfet   
AFA Gary J Hmmm...  It seems that Dave has a malfunction.  GA with your
           comment, Floyd.
AFL Floyd  From people I've talked to who have used it for // use, one must
           write your own std libraries since
AFL Floyd  the supplied ones stink.  Bill, you might want to send mail to
           WalkerA (Walker Archer of Quality
AFL Dyfet  Okay...I think I was frozen out...
AFL Floyd  computers) he has much experience with it.
AFL Floyd  ga
BillP      ok  kinda what I thought   thanks
AFL Dyfet  I can things commming in again!  Okay...I believe our next
           question is from
Morentis   Greetings, and good evening.
AFL Dyfet  WindRider again.  GA Windrider...
Windrider5 I have some problems when I compact programs which I have written
           in APWC
Windrider5 Should compacting higher level programs be any problem?
Dave Lyons !
AFL Dyfet  GA Dave...
Dave Lyons Shouldn't be a problem--what is going wrong for you?  Compacts
           without error,
Dave Lyons but crashes, hangs, etc when you run the compacted application? 
           Or what?
Windrider5 my programs does not expect input into editlines in my dialogs
Windrider5 except that is 
Dave Lyons You type keys and the program behaves as if you didn't type any
           keys?  But
Dave Lyons no other noticable effects?
Windrider5 Yes
Dave Lyons Is there a blinking insertion point in the edit line item?
AFL Dyfet  <Scott: Received>
Windrider5 Yes
AFL Scott  <Thanks!>
Dave Lyons Can't think of anything directly related to the compacting that
           would cause
AFL Dyfet  <Get flash I sent?>
Dave Lyons that, Windrider.  Maybe something random is going on that just
           happens to let
AFL Scott  <Yep!>
AFL Scott  ?
Dave Lyons your program work most or all of the time when it's not compacted.
            If you can
Dave Lyons send me the object code by email, I'll take a look at it.  ga
Windrider5 thanks ga
AFL Dyfet  Hmm...Well, Dave is very good at tearing into object modules
           :)...I believe
AFL Dyfet  our next question is from Scott.  You have the floor now, Scott.
AFL Scott  I have a rather strange question concerning fread and fwrite using
           stdin and
AFL Scott  stdout as the stream qualifier... Are there known bugs in the
           shell that cause
AFL Scott  stdin and stdout to be messed up in such a way that causes a file
           to be written
AFL Scott  twice the size as required?
Dave Lyons !
AFL Dyfet  GA Dave...
Dave Lyons Are you trying to write single bytes?  Not sure if fwrite()
           supports writing
Dave Lyons odd lengths.  ga
AFL Scott  No, trying to write 1 unit of 200 bytes, Dave.
Coach101   !
AFL Dyfet  GA Coach...
Coach101   I looked at your code segments Scott, and the first thing I
           would
Coach101   do is put in printfs just in front of the fread and fwrite to
           verify
AFL Floyd  !
Coach101   the the "count" variables are not getting messed up.  You could
           possibly
AFL Scott  Done... still no go
Coach101   Drat....   Oh well.....  Sorry,  ga
AFL Dyfet  GA Floyd...
AFL Scott  No problem Coach, Thanks!:)
AFL Floyd  I uploaded two IDENTICAL source files to Scott.  THe only
           difference was one used stdin/stdout and
Ransomdawn ?
AFL Floyd  the other used regular file (fopen, fclose, etc).  The
           stdin/stdout one didn't work and the other
AFL Floyd  one did.  Most strange.
AFL Floyd  The fread and fwrite calls were identical except for the different
           stream.
AFL Floyd  fread(buf, cols, 1, stdin) vs fread (buf, cols, 1, in_file)
AFL Floyd  ga
AFL Dyfet  Thought: Perhaps stdin/stdout is handled through text tools and
           NOT via GS/OS!
AFL Scott  That's what I think I need to find out... if there are any known
           bugs in the
AFL Scott  piping/redirection stuff in the APW or ORCA shells.  Thanks!
AFL Dyfet  A good place to start is to see if you can do any seek calls on
           stdio, since
AFL Dyfet  you cannot, of course, through text tools itself...:)
AFL Scott  Thanks! GA
AFL Floyd  (testing that right now. :)
AFL Scott  Thanks Floyd!  It must be nice to have two computers!:))
AFL Dyfet  Basically, try writing 100 bytes to stdout, seek -50, and write
           again.  If it
AFL Dyfet  works, you get 150, if not, you get 200 :)
AFL Dyfet  Well, while floyd is tinkering, we can move onto the next
           question, unless
AFL Dyfet  somebody else wishes to make a comment here.
AFL Dyfet  Okay, RansomDawn, you now have the floor, GA.
Ransomdawn As a relative programming newcomer, I am wondering what
           differences...
Ransomdawn ..may exist in the graphics power of pascal versus C?
AFL Dyfet  In both cases, it's entirely a matter of the support routines and
           libraries
AFL Dyfet  provided with the product, and not the language itself, which
           dictates the
AFL Dyfet  quality and level of graphics support.
AFL Dyfet  There is no part of either Pascal or C, in of itself, that
           specifies any
AFL Dyfet  graphics capabilities.  I hope that was clear...
AFL Scott  !
AFL Dyfet  GA Scott.
AFL Scott  You'll find out that most graphics text books use Pascal as the
           language of
AFL Scott  choice.. Foley, Van Dam, and other titles... But there is no
           difference as
AFL Scott  Dave said...  Pascal is chosen for text books because it's easier
           to read.  
Pest II    ?
AFL Dyfet  In the case of the IIgs, both languages have support added to take
           advantage
AFL Scott  The power is all depending on the implementation.  GA
AFL Dyfet  of quickdraw.  It's entirely a matter of which language you find
           easier to
Ransomdawn O.k. Thanks 
AFL Dyfet  write in.  Okay, I believe our next question is from Pest.  GA
           Pest.
Pest II    I heard recently that the 2 devices per slot limitation in Apple
           II's was
Pest II    tied to the hardware...is this true even for the GS??
Dave Lyons !
AFL Dyfet  GA Dave...
Dave Lyons Two devices per slot is a limitation of ProDOS 8, not of the
           hardware.  GS/OS
Dave Lyons lets you have plenty of devices (and therefore volumes) per slot,
           although
Dave Lyons there are still some hardware limitations (you can't *actually*
           daisy-chain
Dave Lyons 127 drives off the SmartPort connector without melting something),
           and
Dave Lyons individual drivers may limit the number of devices they manage. 
           You can
Dave Lyons have 32 partitions off of one slot with the SCSI.MANAGER in 5.0. 
           ga
Pest II    but does a SCSI chain work, and does a CD ROM under GS/OS need the
           funny
Pest II    partitioning?
Pest II    or can it be seen as one volume
Dave Lyons A CD ROM daisy-chained after my hard drive works just fine, with
           no special
Dave Lyons fiddling.  ProDOS partitions are still limited to 32 Megs, of
           course, but if
Dave Lyons you have an ISO 9660 / High Sierra CD, the ISO 9660 / High Sierra
           FST can read
Dave Lyons it with no problem.
AFL Dyfet  Okay, are there any additional comments?  Floyd, any news?
Pest II    !BTW: AApple Direct owned up to their CD SCSI error...thanx, ga
Dave Lyons (ga)
AFL Floyd  Checking now.  I had a phone call.
AFL Dyfet  Okay, feel free to fill up that question que while we're
           waiting.
AFA Gary J <wait wait....>
AFA Parik  ?
MrJayDee   What's the topic du jour???
AFL Dyfet  GA Parik, you have the floor now...
AFA Parik  will deleting CDEVS and CDEVS.INIT have any awful effects upon
           5.0?
AFL Dyfet  Yes, you will be told to sit in a corner and repeat "I will buy an
           IBM" 500
AFL Dyfet  times if you do that :)
AFA Parik  also - EXPRESS *can* be used in orca or apw v1.0.2, right?  or 2.0
           ONLY?
AFA Parik  :P
Dave Lyons !
AFL Dyfet  GA Dave...
AFA Parik  (I still can't figure out why most of the programs i express don't
           work  :((
Dave Lyons Yes: you won't be able to use the CDevs.  :-)    But if you don't
           want to use
Dave Lyons them, that's okay.  ga
AFL Floyd  (fseek doesn't work with STDOUT!)
AFL Dyfet  Just as I suspected...the stdio library is gimmied up to work with
           text tools.
AFL Scott  !
Coach101   I wonder about its behaviour under Apw 2.0?
AFL Floyd  I wrote out 200 bytes, seeked to 50 bytes from the beginning and
           wrote out 200 again.  Got 400 bytes
AFL Floyd  written to the file.
AFL Dyfet  GA Scott...
JSchober   (sheesh!)
AFL Scott  I wonder if this relates to the fact that all the descriptions in
           the text
AFL Scott  tools say "Characters", and I'm trying to use functions written to
           handle 
AFL Scott  binary streams?  This doesn't make sense tho, since text in a
           computer is
AFL Scott  binary.
AFL Dyfet  But text tools really only knows about text...it may strip the hi
           bits or do
AFL Dyfet  other horrible things...:)
AFL Scott  Oh boy!  Looks like it's time to use other means... and forget
           about pipes
AFL Scott  and redirection.  
AFL Scott  Thanks Floyd, you've been very helpful!  Now I owe you more than I
           did before!
AFL Scott  :)
AFL Scott  Thanks!  Done
AFL Floyd  (I'll send ya a bill ;)
AFA Gary J :)
AFL Scott  (LOL!:)
AFL Dyfet  You may want to send a letter to Mike Westerfield on this matter
           for further
AFL Dyfet  comments, especially in regards to what orca/c may be doing...
AFL Scott  ?
AFL Floyd  My test was with Orca/C.
AFL Floyd  It's the shell, not the language.
Coach101   !
AFL Dyfet  GA Coach...
AFL Floyd  (Oh, sorry, I didn't know protocol was still in effect)
Coach101   From an architectural point of view, does it really make sense
Pest II    ?
Coach101   for seek to work on the STDOUT stream?  Given the *standard* use
           of
Coach101   pipes seeking on the output seems a somewhat non-standard?
Coach101   ga
Dave Lyons !
AFL Dyfet  GA Dave...
Dave Lyons No, I don't think it makes much sense.  STDOUT could be the
           console or printer;
Dave Lyons on a system with concurrent processes it could be a pipe to
           another process
Dave Lyons that could munch your output before you fseek() back to "retract"
           it.  Doesn't
Dave Lyons make sense except for a file.  ga
AFL Floyd  !
AFL Dyfet  I'll let Floyd jump in..GA Floyd...
AFL Floyd  That's not the point, the original test case didn't use fseek,
           just standard fread and fwrite and
AFL Floyd  it didn't work correctly with stdin/stdout, but worked fine with
           regular file. ga
Coach101   OK, I got confused as to why we were testing with fseek...  Why
           were we
Coach101   testing with fseek?
AFL Dyfet  Okay, we did drift from the original issue...part of why fseek was
           used was
AFL Floyd  To see if maybe the shell was using the text tools instead of
           operating system.
AFL Dyfet  to determine if stdio was handled by different routines than
           'normal' file I/O.
AFL Floyd  (Sorry, I'll sit on my hands. ;)
AFL Dyfet  Or, as Floyd summed up.  Since stdin/stdout is a handle, it SHOULD
           support
AFL Dyfet  fseek when stdin/stdout is pointing to a file, for consistancy
           with the rest of
AFL Dyfet  the standard file library, in my opinion.
AFL Floyd  !
AFL Dyfet  GA Floyd.
AFL Floyd  fseek, fread, fwrite, etc. are supposed to work with all STREAMS,
           whether they are stdin, or other.
AFL Floyd  ga
Coach101   !
AFL Dyfet  GA Coach...
Coach101   But, that would be impossible in a multi-tasking system where
           you
Coach101   were piping to another process that, as Dave pointed out, could
           eat
Coach101   your output (i.e., process it) before you *recalled* it.  I think
           that
Coach101   if you intend to support piping of your output you had better
           not
Coach101   use fseek on stdout.  ga
AFL Dyfet  Any stream, and NOT just stdin/stdout, can be pointed to a pipe,
           virtual
AFL Scott  (Gary kill my question an put me in for a comment!:))
AFL Dyfet  circut, or device, coach...however, when it's pointing to a file
           it will seek,
AFA Gary J :)
AFL Dyfet  and stdin/stdout are just streams, like any other file stream, or
           should be,
AFL Dyfet  in my opinion.
Dave Lyons (Off to the msg base...flash me if I'm needed!)
Coach101   !
AFL Dyfet  The great debate continues :)...GA Coach.
AFL Scott  Basically what we are dealing with in this case is not a proper
           handling of
AFL Floyd  !!!
AFL Scott  stream data, period.
Coach101   Ok, but if we have a strict implementation that allows fseek at
           all
Coach101   times irregardles of where the output *might* go, then we
           preclude
Coach101   any overlapped processing by cooperating tasks in a
           multi-tasking
AFL Scott  Wait.. change that to improper handling of stream data... Sorry to
           butt in.. :)
Coach101   environment.  My basic point is that if your program wants to
           support
Coach101   piping of an output stream it has to be prepared for certian
           things
Coach101   not functioning the same as with a file.    ga
AFL Dyfet  fseek should return an error if the stream is not seakable...but
           again, I feel
AFL Dyfet  stdin/stdout are supposed to be 'standard' file streams in their
           behavior.
Coach101   Agreed on the error that should be returned.  And agreed that what
           we
Coach101   have found here is a bug.  My whole point was on an architectural
           ground
AFL Scott  This really is not a good situation.  It is restricting _any_
           program working
Coach101   and not on what had happened Scott.  .....  Geez Scott you are a
           trouble maker
AFL Scott  on stream data to working with TEXT only.  Not good, at all!
AFL Dyfet  Yes, Scott, you are :)
AFL Floyd  I just tested the same thing with THINK C on the Mac and it
           properly seeks with stdout.  BTW, the
AFL Floyd  original test code that didn't work with the GS shell worked fine
           on the Mac.
Pest II    -?
AFL Dyfet  Floyd, you will find that unix and MS-DOS will do so correctly
           also :)
Coach101   Three computers Floyd!!!!
AFL Floyd  No, MultiFinder. ;)
AFL Dyfet  Sorry if we lost your question in this debate, Pest...
Pest II    that's OK
AFL Dyfet  There are a number of script interpreters written in unix, with
           the idea that
AFL Scott  I like being a trouble maker on occasion!  It makes me feel good
           that I'm not
AFL Scott  the one who's crazy!:)
AFL Dyfet  goto branching can be done by seeking on stdin when it's
           redirected from a
AFL Dyfet  file...these, I see, will also fail to work.
Pest II    and they call me the Pest!?...:)
AFL Dyfet  AFL Pest :)
Coach101   fseek on stdin is a totally different issue!  I have not problems
           there.
Pest II    that has a nice ring to it...
AFA Gary J I don't think Scott want's to change his name to that  :)  It
           goes without
AFA Gary J saying  :)
AFA Gary J (heheh)
AFL Scott  LOL!
Coach101   :)
AFL Dyfet  But coach, you can't have it one way on one side of the pipe and
           another on
AFL Dyfet  the other :):)
Coach101   Not true.  The problem with fseeking on the output side is that it
           prohibits 
AFL Floyd  (I'm outta here.  Later peoples!)
Coach101   multiporcessing.  Fseeking on the input side does not carry such a
           penalty.
JSchober   (night Floyd!)
Coach101   On System-V Unix systems the piped to process will kick off
           before
AFA Gary J Goodnight, Floyd
Coach101   completion of the piping process!    e.g.,  ls -l | pg  
Coach101   ga
AFL Dyfet  Let's table this to the message board, coach, before we scare the
           rest away :)
AFA Gary J I think we ARE the rest :)
Coach101   Fine....  
Pest II    I'm scared :)
AFL Dyfet  By the way, Pest, what was your question?
Coach101   Your supposed to show respect and awe Pest :)
AFL Scott  I can finally get some sleep!:)
Pest II    nothing really...hardly as exciting as fseek and piping...or even
           dogcows
AFL Scott  ps -ef|grep -i sleep