textfiles/apple/ADC/adv.900515

495 lines
24 KiB
Plaintext

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.