America Online APPLE II DEVELOPMENT FORUM CONFERENCE LOG Tuesday, May 15, 1990 10:00 p.m. eastern time Topic: Beginners Night Special Guest: Ron Lichty (Co-author of the book "Programming the Apple IIGS in Assembly Language" Forum Leader: Dave Sugar (AFL Dyfet) AFL Dyfet Okay, everyone, good evening and welcome to the Apple II AFL Dyfet Development Conference (Excellant work, Parik!). Tonight is beginners AFL Dyfet night here. This is an opertunity for those new to programming to AFL Dyfet get expert advice. I would like to start tonights conference by turning over AFL Dyfet the floor briefly to Ron Lichty, Co-author of "Programming the Apple IIgs in AFL Dyfet Assembly Language", who has an announcement to make...Ga Ron... RonLichty Thanks, David. RonLichty As you know, Programming the Apple IIGS in Assembly Language has been RonLichty called "a must for would-be Apple IIGS programmers". RonLichty Using the APW or ORCA/M assembler, the reader develops, RonLichty in stages a Hello, World program -- from an 8-line program RonLichty that prints on the text screen to a full-blown desktop application with RonLichty menu bar, dialogs, icons, and multiple, sizeable, scrollable windows. RonLichty Plus it includes the reference section from our earlier book RonLichty that everyone likes so much. RonLichty And we've had a disk out in APW and ORCA/M assembly all along. RonLichty Cecil Fretwell announced here a few weeks ago RonLichty that he had converted Hello, World into C for both RonLichty APW and ORCA versions of C. RonLichty His disk contains a cross-reference file that line-numbers the entire final RonLichty C csource code and cross-references its functions and variables RonLichty in addition to providing source and compiles at all the points RonLichty the other disk does. RonLichty Now Ken Kashmarek, author of SoftSwitch, has translated Hello, World RonLichty for Merlin 16+ assembler. The result is two different versions of the RonLichty final program to compare. Ken converted the first version by hand, RonLichty line by line, from the book; he used the new Merlin supermacros, RonLichty which whorten the source file considerably, and added a couple inline macros RonLichty to make the programming easier, but left off the comment lines. RonLichty He created the second by running the Merlin 16+ Converter routine on the RonLichty original program listing, so it includes all comment lines, RonLichty but does not use the supermacros. RonLichty Anyway, all are available from me by mail. RonLichty If you can't find the book in a bookstore, it is too. RonLichty The book: $32; APW/ORCA/M disk $20; C disk $20; Merlin disk $10. RonLichty From Ron Lichty, P.O. Box 27262, San Francisco, CA 94127 RonLichty (U.S. funds only, and CA tax for CA residents please). RonLichty Also, there's an errata RonLichty of the two bugs, the error in the text, and the olne serious typo that RonLichty have been found in the book just by sending a self-addressed, stamped RonLichty envelope to the same address. RonLichty Whew. RonLichty ga RonLichty Oh, can I add RonLichty for those who don't know, that I've returned to engineering RonLichty from product marketing -- I'm working on the Apple IIGS Finder RonLichty at Apple these days. ga AFA Parik ()()()()()()()()()() *yipee*!!! A2GS Yay!! AFL Dyfet Thank you, Ron...that is a long brief intro :)...Go ahead Parik... AFA Parik real quickly; how did you determine the # of cycles in your 1st 65816 book ron? AFA Parik for each opcode that is. ga RonLichty Let me think back that far... A2GS He used a stopwatch naturally. :) RonLichty We had several sources, most of them wrong in at least some areas. RonLichty We had the data sheet from Western Design, RonLichty a set of by-addressing-mode cycle descriptions from Western Design, RonLichty a similar kind of look from insiders at Apple, RonLichty a reference card from GTE (different errors from the Western Design ones) RonLichty and I think at least one other source. AFA Parik ok. just checking if logic analyzer was used. thanks! ga (done) RonLichty We did not have any way, ourselves, to prove one thing or another, RonLichty if I remember correctly, RonLichty but just puzzled out all the data until it made sense. RonLichty ga AFL Dyfet Go ahead A2... A2GS Are the correct cycle timings available from WD? RonLichty I would use the ones from our book. RonLichty As far as I know, we got them all right. RonLichty ga RonLichty Thanks. AFA Parik what is the picture on your 1st book? the motherboard? RonLichty That's the mask of the chip itself. RonLichty I have one blown up to poster size. RonLichty It's really beautiful. RonLichty When Hayden RonLichty was publishing ORCA/M assembler, they did full-color RonLichty separations and printed the posters. ga AFL Dyfet Go ahead Scott... AFL Scott How do you like being back in Engineering? RonLichty It was really hard, at first. I had to get used to RonLichty not earning a living talking to people, both online and on the phone! RonLichty And the Finder code is, as you might imagine, a bit complex. RonLichty But I have always liked solving a good problem, so I'm happy. ga AFL Dyfet (an honest living, Engineering :)... Go ahead, Wind... AFL Dyfet While we're waiting on Windrider, Go ahead Floyd.... AFL Floyd Hi, Ron. I don't know if you are aware of it or not, but there are a few AFL Floyd Finder patches floating around that allow folders on the desktop and allow AFL Floyd the default quit dialog to be changed. I hope you and Jim and the other AFL Floyd Finder gurus consider changing the Finder to allow stuff like this. ga RonLichty I've seen several patches. But would like to see the ones RonLichty you've just listed--don't think I've seen those. Michael515 Are the patches in AUT Floyd? RonLichty We're always looking to our users for input on how we can improve RonLichty things. AFL Floyd Look in the "IIGS Utilities/Finder Patches" topic of the Utilties forum, AFL Floyd keyword AUT. (blatant plug) ;) AFL Floyd Oh, one more thing...put back "Remove" in the menu for quick deleting. ;) AFL Floyd ga RonLichty Thanks for the information on that. RonLichty What if "Remove" moved the file to the trash instead of deleting it? AFL Floyd That is even better, Ron! ga AFL Dyfet Go ahead, Windrider... Windrider5 I have been programming the IIgs using C for a couple of years Windrider5 Do you think it is worth it to learn assembly language? RonLichty Should you learn assembly? Well, RonLichty that really depends on what you want to get out of programming. RonLichty I like assembly because it lets me get right down into the processor RonLichty and listen to the gates open and close. AFA Gary J :) RonLichty When I write in assembly, I know exactly what's going on with the machine. RonLichty And my code is a lot shorter and a lot faster. RonLichty It takes longer to write than C, though given C's propensity RonLichty for null pointers and it's write-only nature, RonLichty I'm not sure assembly is a lot more dangerous than C to write in. RonLichty You can certainly do things like floating point a lot easier in C. Windrider5 write-only nature? RonLichty I personally didn't find learning assembly hard. RonLichty I do get annoyed by the addressing modes that show up only RonLichty with certain instructions. Coach101 Amen! RonLichty But the 65816 is a kludge built on the kludge of the 6502 :) RonLichty And I think there are a lot of us who find its quirks rather winning! AFL Dyfet On the other hand, it's more balanced than the 8086 instruction set :) RonLichty By C's write-only nature, I mean RonLichty that while C is easy to write because you type so few characters, Dave Lyons <-- doesn't find C particularly write-only RonLichty reading the code you wrote last week in C can be as hard as reading RonLichty assembly you wrote last week. Especially if you do what many RonLichty good programmers do and succumb to the clarion call of terseness RonLichty that C offers. I think it may be possible to write an entire program RonLichty in a single C statement. And all too many C programmers try to do it! RonLichty Let me add that I agree with you, David, that RonLichty I'd much rather have a 65xx processor than an 8086 family processor. RonLichty I've written code generators for compilers for both. RonLichty The 8086, with its banks built on 16-byte boundaries, is an ugly kludge RonLichty (as opposed to the 6502, which (I suspect entirely by chance) turned RonLichty out to be a nice kludge). A2GS Somewhat similar to the drawbacks on the 68000! RonLichty Also, have you ever tried to decipher the structure of RonLichty opcodes on the 8086? AFL Dyfet :) RonLichty They are based on two bits here and three bits there and AFL Dyfet Up to 7 byte sequences :) RonLichty prebytes and post bytes and... Yuck!!!!! RonLichty ga AFL Dyfet Okay, Go ahead Coach... Coach101 As to learning assembly, Coach101 Unless you are into writing device drivers or some other, rather internal, parts of the IIgs Coach101 environment, you can do everything from C (and with Orca-C, no little interface glue in assembler) Coach101 So, you will learn a lot about how machines really work by writing in assembler, but it is not Coach101 required in order to write most things for this system. As to "Write Only C"... Coach101 Ron, I think it is not the language but the programmer. The same terseness and lack of comments will Coach101 render an assembly program even more unreadable. My personal hatred is the race to see how much Coach101 code (as opposed to loop control) a C programmer can kram into a "for" statement.... On processors... Coach101 I think the 8086 was designed by a hardware "weenie" and the 68xxx (which I think is the best a AFL Dyfet And let's not forget while loops controlled by nested trinaries :)... Coach101 architecture available) by a software architect :) Coach101 Done.... ga RonLichty I'd have to agree with most of that RonLichty I was really comparing C with Pascal regarding it's RonLichty write-only nature. RonLichty I think of C as a language you can twist into a moebius strip or RonLichty maybe a Klein (sp?) bottle. RonLichty C can be as straight-forward as Pascal, but bad RonLichty programming practice often twists it otherwise. :)_ RonLichty I would also suggest RonLichty assembly as the language to use on the IIGS for animation RonLichty and in some situations for tight loops. RonLichty Code that has to run fast, so is optimized in the midst RonLichty of a C or Pascal program by translating that code RonLichty into assembly. RonLichty Most commercial programs RonLichty I know tend to be written in C or Pascal with RonLichty lots of drops into assembly when necessary RonLichty (though, of course, there are many commercial programs RonLichty written in assembly entirely on the II and IIGS). RonLichty We wrote the IIGS Sales Demo program in assembly RonLichty in part to optimize for speed and in part because that's all there was! ga AFL Dyfet One should consider that unix is written in C (for good or bad :)...A good C AFL Dyfet compiler will allow you to mix assembly code fairly easily when you need it, AFL Dyfet and can be used to write fairly easy to maintain code...(or can be abused :)... AFL Dyfet I believe Floyd had a comment...GA Floyd... AFL Floyd In reference to terseness, it is very helpful to make sure one's variable, AFL Floyd constants and function names are as descriptive as possible. Doing this in AFL Floyd my code almost makes it self-documenting.. I prefer C for a high-level AFL Floyd language, but my C code isn't very terse. It looks more like Pascal (which AFL Floyd used to be my favorite high-level language.) ga AFL Dyfet I prefer C because I find less road-blocks between me and what I am trying to AFL Dyfet do than in Pascal, where the compiler carefully controls what you can and AFL Dyfet cannot do...I often prefer to focus on trying to get the job done, and not on AFL Dyfet how the program should be made to look. AFL Dyfet Go ahead Floyd... AFL Floyd Even though I prefer C I think Pascal is the best first language to learn. ga AFL Dyfet I tend to agree, since Pascal does force the person to think and methodize what AFL Dyfet they are doing...Okay, I believe that SSSi has the next question....GA SSSi... SSSi Ron: hope we will see some resources attached to the Finder someday soon? As SSSi far as languages are concerned, I've used them all, but SSSi find that I am able to control the "vertical and horizontal" SSSi alot better in Assembly. Pascal is great for a beginning, but SSSi doesn't allow alot of the flexibility that I get from C. C is great too, SSSi but I spend alot of time in the debugger (my fault), and I find SSSi that what I see is what I get. I really do think that a programming SSSi language is a presonal kind of thing, something SSSi that each programmer has to try and decide for one's self. GA AFL Dyfet Go ahead Coach... Coach101 If one is programming for personal enjoyment, then the language is a personal choice.... Coach101 If one is programming for a living, assembly is just NOT a choice anymore. Find the high level Coach101 language you like best and use that with drops into assembler as needed for speed or system Coach101 interfacing. ga AFL Dyfet Okay, I believe that A2 has the next question...GA A2... A2GS Ron, I realize (of course) that you can't vomment on unreleased products, but.. AFL Floyd (Please, no vomiting!) ;) A2GS any possibility of getting a Mac FST in a future SYS. Disk? GA (1 more Q to A2GS follow, after) A2GS Ooops :) RonLichty You're absolutely right, A2. I cannot comment on unreleased products! ga AFL Dyfet Okay, Go ahead with 2nd question A2... AFA Gary J :) A2GS Any news on the '832? (your closer to WD then I am :) RonLichty No, I don't have any news on the '832. RonLichty Bill hasn't been keeping me apprised of his progress RonLichty ga A2GS one comment.... A2GS About languages, you knew it was coming... A2GS I think for pleasure use, any High level language that makes the programmer A2GS happy should be used, but on a professional side who is writing a program A2GS that the general public will have to use, he/she should use Assembly for A2GS quality reasons, or for know other reason then to offer the best speed] A2GS available to the program on the machine. A2GS GA A2GS know = no AFL Dyfet Okay, GA Dave... Dave Lyons On the other hand, if you choose a very *small* amount of the code to put in Dave Lyons assembly, leaving the rest in some high-level language, you can usually get all the speed Dave Lyons that the user is going to notice. Also, for applications Dave Lyons that spend most of their time inside toolbox calls anyway, it doesn't make that much different Dave Lyons what language the app was in. I don't have *strong* Dave Lyons preferences for any particular language...have written in Assembly, Pascal, and C, with a Dave Lyons preference for C over Pascal if I've got a good working implementation. Dave Lyons What *does* bug me is when I talk to Dave Lyons somebody who has written an application Dave Lyons in assembly & done something in a shabby way because Dave Lyons they didn't bother inventing a complex enough data structure, which would have been easier in Dave Lyons Pascal or C. (OTOH, I've seen people use fixed-sized arrays in high-level langauges, too, Dave Lyons for no good reason.) ga A2GS <---Not bothering to argue, his points make sense :) AFL Dyfet Thank you Dave...Okay, I believe the next question is from Doctor Why...GA. Doctor Why This is off the topic, but..... I have a cursor defined as a resource and would Doctor Why like to use it in an ORCA/Pascal program. The ? is how? AFL Dyfet Go ahead, Dave... Dave Lyons Make your resource "fixed", and call LoadResource to get it into memory. Dereference the handle Dave Lyons and feed it to SetCursor, with any necessary type-casting. For example, Dave Lyons CursorPtr myCursor; myCursor = (CursorPtr) (*LoadResource(rCursor,1L)); ... Dave Lyons SetCursor(myCursor); (course, you should check for an error on LoadResource) You may want to Dave Lyons mark the resource "preload" in addition to "fixed". ga Doctor Why Thanks, I'll give it a try. SSSi Yup! Also, make sure the current resource is your application or NDA! GA Dave Lyons (the current resource *app*, eh?) AFL Dyfet :) SSSi :) AFL Dyfet Okay, any further comments or questions for tonight? AFL Dyfet Okay, I would like to thank Ron Lichty for stopping by tonight... A2GS Thanx Ron! AFA Gary J Yes, thanks for stopping by, Ron. A2GS Ron, Any more books in the works?? RonLichty No. I'm still trying to recover from the last one. :) A2GS Are the tech note(s) for writing an FST available? A2GS yes/no/maybe? AFL Dyfet A2, there are no tech notes for writing FST's because Apple has reserved the AFL Dyfet sole right to itself for tampering with the OS... AFA Gary J Never, A2 Dave Lyons A2GS, your question is misleading by using the word "the" in front Dave Lyons of "tech notes for writing an FST", because there aren't any...the policy has been, and continues Dave Lyons to be, that Apple doesn't support 3rd-parties writing FSTs. There are some decent reasons Dave Lyons for this, that I won't repeat here unless somebody really wants them, given the current FST design. A2GS That what I thought :( AFL Dyfet To put it simply, FST's are DANGEROUS, and subject to failure on future OS AFL Dyfet releases... Dave Lyons Yes, definitely. AFL Dyfet They are not streight forward, and there is no clearly/cleanly defined AFL Dyfet interface for them in GS/OS... A2GS Well, if their written in the same form (design) as the already written FST's.. Dave Lyons Right, they *look* like the same kind of thing Device Drivers are, but they aren't. A2GS there shouldn't be any hazards, providing they are bugless. A2GS which is a BIG provision of course. Dave Lyons The catch is that Apple reserves the right to make changes in the way the OS works that *require* Dave Lyons changes to *all* FSTs. Dave Lyons It doesn't have to be a big change, either. A2GS I take it that the FST's do low-level work? AFL Dyfet Very Dave Lyons Yes, and fairly high-level work *too*. For many GS/OS calls, GS/OS does little more than pass Dave Lyons the call along to the appropriate FST. AFL Dyfet FST's call the undocumented and volitile internal GS/OS micro service call AFL Dyfet block as well for certain management operations. Dave Lyons True. (the "system service" vectors at 1FCxx) AFL Dyfet One option I would like to see in Finder is a preference to disable exploding AFL Dyfet windows... A2GS On a serious note, Ron, I would like to see a "Coomand Window" option in which A2GS you would be able to TYPE commands in for those which are not available or A2GS incapable of being reproduced on a totally mouse based system. A2GS Any possibility?? Dave Lyons What commands are incapable of being reproduced on a totally mouse-based system? A2GS Filename search for one. A2GS And about a million more which are avaible under UNIX (which I generally hate) A2GS but have never used. Coach101 How about a "trainable" Finder (like the documentaion said would work)? Dave Lyons (Find File does it without having a command window!) AFL Dyfet (And to disable visual window closing when launching an app...just shut it AFL Dyfet down, clear the screen, and bring it in)...:) Dave Lyons Dyfet, it already doesn't visibly erase the windows, *except* for clipboard and trash. A2GS What about "Delete block of files on Device which fall under certain conditions A2GS " Dave Lyons What about "select files based on name, mod-date, etc" and then do any allowed Dave Lyons operations on them, including dragging to the trash? Coach101 The things I want most in Finder are: Coach101 1) Be able to put Folders on the desktop AFL Dyfet Yes! Coach101 2) Allow Finder to create Finder.Data files on servers. I hate having the location a function Coach101 of what was last done a Mac! Coach101 I am not sure if this is there in IIgs FInder, but A2GS Dave, generally, a command window will allow practically limitless expansion Coach101 how about being able to copy a file from folder to folder (as opposed to *move*) A2GS instead of having to deal with mile-long pop-menus or PDM's. Dave Lyons I'm not talking about long menus--just one item that would give you a dialog letting you specify Dave Lyons properties of files, and then just *select* the files. That way you could build on the knowledge Dave Lyons the user already has--once they discovered Select Files..., they could use it with all the Dave Lyons things they already know how to do (like drag-to-trash). A2GS A little bit limiting...but basically is the same as my request...any comment A2GS Ron?? Dave Lyons Coach, I guess we're missing that feature (copy to another location on the same volume, without Dave Lyons using Duplicate & having to rename the copy later). On the Mac finder it's just option-drag. Dave Lyons Problems w/ my idea: does this mean you can have things selected in several windows at once? Can A2GS Don't quite follow coach's prob. could you explain it again? Dave Lyons you have things selected that aren't in open windows? A2GS Coach? Coach101 I know.... Ever forget your on a IIgs when you copied a file? RonLichty I'm listening. But not doing any promising, of course. :) Coach101 If you drag a file between folders on the same voluem, Finder deletes the file from the source Coach101 folder and places the file in the destination folder. That is a MOVE and not a COPY... Dave Lyons (Well, it just CHANGE_PATHs it.) AFL Dyfet I would suggest that if people have serious comments about improvements for the AFL Dyfet Finder, that we start a message topic for it... Coach101 On a Mac if you do the same thing but hold the OPTION key down, you get two copies of the file Coach101 One in the soruce folder and one in the destination folder.. OK? A2GS Oh... A2GS Ok. Dave Lyons ok A2GS A way of duplicating a file, in other words. Coach101 Dave, I know, but its easier to expalin as copy and delete :) A2GS Thanx for coming Ron and returning back to GS developing :) RonLichty please ABSOLUTELY feel free to email them to me.