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 Windrider5 Yes AFL Scott Dave Lyons Can't think of anything directly related to the compacting that would cause AFL Dyfet Dave Lyons that, Windrider. Maybe something random is going on that just happens to let AFL Scott 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 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