479 lines
20 KiB
Plaintext
479 lines
20 KiB
Plaintext
AppleLink
|
|
APPLE II DEVELOPMENT FORUM
|
|
June 6, 1989 10:00 p.m. Eastern Time
|
|
Topic: Assembly Language
|
|
Forum Leader: Dave Sugar (AFL Dyfet)
|
|
|
|
A2GS Has anybody accessed the DOC directly through the softswitches?
|
|
AFA Gary J Hi Matt.
|
|
Coach101 Good evening Matt
|
|
AFA Parik (I have A2GS, time saved vs. using tools is VERY minimal. only
|
|
recommended if
|
|
AFA Parik you find your program going s l o w with sound.
|
|
A2GS I don,t have any problem playing things directly through it,
|
|
but...
|
|
A GibberFC A2GS... don't fool with the softswitches... if you want future
|
|
compatibility
|
|
A GibberFC sometimes apple will pull a fast one and change them...expecting
|
|
you to have
|
|
A GibberFC made tool calls instead.
|
|
Richbourne Hi guys, I have a pretty weird situation, can you people help me?
|
|
:)
|
|
AFA Gary J Hmmm... Dyfet isn't around, and it's time to start....
|
|
A GibberFC I don't know.. what type of weird situation is it.....;)
|
|
A2GS I get this nagging FATAL SYSTEM error- Unclaimed sound
|
|
Interrupt...
|
|
Richbourne Well... (this is partly from Lets Discuss) I consider myself
|
|
proficient at.....
|
|
A2GS and I know that in the first place I turned off all of the
|
|
Oscillators...
|
|
Richbourne ATARI BASIC (was published numerous times), and dabbed a little in
|
|
Atari's
|
|
Richbourne machine language, but never got into it. I also dabbed a little
|
|
into Apple
|
|
A2GS Interrupts just to avoid this kind of error,Why is it happening
|
|
anyways?
|
|
AFA Gary J Wait just a second, Richbourne. Let's start this forum formally
|
|
and we'll take
|
|
Richbourne II machine language (Lisa assembler! In 1989!), but those attempts
|
|
to get into
|
|
AFA Gary J your question first.
|
|
AE PhilM Hi Matt!
|
|
Richbourne Whew! I should get a macro program! :)
|
|
A GibberFC Hi Phil!!! what is up??
|
|
AFA Gary J :)
|
|
AFA Gary J Welcome to the Apple II Developer's Forum. Tonight's topic is
|
|
assembly
|
|
AE PhilM Hi Gibber, Vulcan...that's up! Looking real good!
|
|
AFA Gary J language.
|
|
AFA Gary J We'll be using forum protocol starting *NOW*, which means...
|
|
A2GS I realize I'm taking a chance on future compatibility by using the
|
|
softswitches
|
|
A2GS but, hey, that's life! :-)
|
|
AFA Gary J If you have a question, type a question mark (?) followed by a
|
|
return.
|
|
AFA Gary J If you have a comment on the current topic, type an explanation
|
|
point (!),
|
|
AFA Gary J followed by a return.
|
|
A2GS ?
|
|
ASEMBLER13 ?
|
|
AFA Gary J Richbourne has the first question....(which he has already
|
|
partially asked)
|
|
A GibberFC be bak
|
|
AFA Gary J Can you continue where you left off?
|
|
Richbourne ...continuing.... so how can I make a smooth transition from
|
|
Atari/Applesoft...
|
|
Richbourne to GS development-level assembly?
|
|
AFA Gary J Q = Richbourne, A2GS, ASEMBLER13
|
|
Coach101 !
|
|
JSchober (Yo!)
|
|
AFA Gary J GA Coach.
|
|
Richbourne :: all ears ::
|
|
Coach101 The list of books that were provided in the Lets Discuss section
|
|
would
|
|
Coach101 be a very good start. I would get one of the "machine language"
|
|
books
|
|
Richbourne oh yeah... I was going to mention... I HAVE Apple IIgs Technical
|
|
Reference,
|
|
Coach101 to learn the machine architecture and then proceed to the Apple
|
|
Richbourne but it doesn't start you anywhere.
|
|
AE PhilM !
|
|
Coach101 publication (via APDA) with HodgePodge implemented in "C", Pascal,
|
|
and
|
|
Coach101 assembler.
|
|
Coach101 Beyond that, given the size of the II-GS (memory that is) I
|
|
would
|
|
Coach101 strongly consider using either Pascal or C instead of assembler
|
|
(except
|
|
Coach101 in those time critical spots you may find). GA
|
|
AFL Marty AE PhilM ... GA
|
|
AE PhilM You need to get several books: Tool Box Ref 1&2, Firmware Ref
|
|
Manual, Hardware
|
|
AFL Marty Q: Richbourne (Phil), A2GS, ASSEMBLER13
|
|
AE PhilM Ref Manual, GS/OS Ref Manual 1&2, and Assembler or Pascal or C
|
|
books...if you
|
|
AE PhilM want to get serious...also sign up to be a developer and get the
|
|
Tech Notes.
|
|
AFA Gary J You can also get the tech notes online, here.
|
|
AFA Parik (sell your house, its the first step)
|
|
AFL Marty Done Phil?
|
|
AE PhilM That should give you all you need...(for a while)
|
|
AE PhilM Done
|
|
PsychoPunk ?
|
|
AFL Marty A2GS Go ahead
|
|
AFA Gary J Anything else, Rich?
|
|
A2GS I'm accessing the DOC directly through the softswitches (risky
|
|
business)...
|
|
AFL Marty q+ punk
|
|
AFL Marty Q= A2GS, ASSEMBLER13, PsychoPunk
|
|
MAILMAN60 How do you sign up to be a developer?
|
|
A2GS and I know I've turned off the Oscillators interrupts, why do I
|
|
get (after a
|
|
A GibberFC bak
|
|
A2GS while) a FATAL SYSTEM error- Unclaimed sound interrupts?
|
|
AFA Gary J Q = A2GS, ASSEMBLER13, PsychoPunk, MAILMAN60
|
|
AFA Parik !
|
|
Dave Lyons !
|
|
AFA Parik (ga Dave :
|
|
Dave Lyons Sounds like you *haven't* successfully turned off the sound
|
|
interrupt, to me. Are you using the
|
|
Dave Lyons sound tools or dealing with the hardware directly?
|
|
A2GS Hardware directly
|
|
Dave Lyons Hmmm...I've never done that myself. If you have turned on the
|
|
interrupt
|
|
AFA Parik !
|
|
Dave Lyons temporarily, on purpose, you should install a routine to handle
|
|
the
|
|
Dave Lyons interrupt--do you?
|
|
Dave Lyons (SetVector would be needed here.)
|
|
A2GS I never turn on the sound interrupts, so I never put in an
|
|
Interrupt Handler.
|
|
AFA Gary J Q = A2GS (Dave, Parik), ASSEMBLER13, PsychoPunk, MAILMAN60
|
|
AFA Parik i use the DOC directly sucessfully, leave me email and we'll work
|
|
it out. You
|
|
Dave Lyons I'm confused. You "successfully turned off the oscillators
|
|
interrupts" but never turned them on?
|
|
AE PhilM !
|
|
AFA Parik still need to replace the IRQ.SOUND ($E1002C) with your own
|
|
routine.
|
|
AFA Parik ga
|
|
A2GS I left the interrupts off while the sound continuously plays.
|
|
AFL Dyfet Okay. GA Phil.
|
|
AE PhilM I wrote Sonic Blaster and I can probably help you...send me a
|
|
flash if you
|
|
AE PhilM want to go into a private room and hack this one out.
|
|
A2GS Why Parik? the interrupts are never being produced?
|
|
AFA Parik (phil would help you better :-)
|
|
Dave Lyons (*I'm* done...dunno about everybody else)
|
|
AE PhilM Done
|
|
AFL Dyfet Okay, any other comments?
|
|
AFA Parik done
|
|
AFA Gary J Q = ASSEMBLER13, PsychoPunk, MAILMAN60
|
|
AFL Dyfet I believe we then turn to our next question, From Assembler. GA
|
|
Assembler.
|
|
Nuzz ?
|
|
A2GS done, thanks..
|
|
ASEMBLER13 Could somebody write a program which splits the screen in half so
|
|
1 program
|
|
ASEMBLER13 could be on top and another on the bottom?????
|
|
Dave Lyons !
|
|
JSchober !
|
|
AFL Dyfet GA Dave
|
|
Dave Lyons Only if the programs are polite enough to follow whatever rules
|
|
you
|
|
Dave Lyons laid down for them. Many programs store directly to the screen
|
|
memory,
|
|
AFA Gary J Q = ASSEMBLER13 (Dave, Joe), PsychoPunk, MAILMAN60, Nuzz
|
|
Dave Lyons and the hardware just displays whatever is there. I read
|
|
something
|
|
Dave Lyons interesting that came with Byte this month about a
|
|
Dave Lyons patented method of dealing with this sort of thing on a competing
|
|
brand of
|
|
Dave Lyons blueish computers, and I don't know how well it would apply here.
|
|
Apparently
|
|
Dave Lyons the idea is to *notice* that an application stored a character
|
|
Dave Lyons directly to the screen, and take it off & hide it somewhere
|
|
before
|
|
Dave Lyons the hardware actually manages to display it on the screen. I
|
|
don't see how to
|
|
Coach101 !
|
|
Dave Lyons apply this to the Apple II. (ga)
|
|
AFL Dyfet Okay, GA Joe.
|
|
JSchober There's a program out for the enhanced //e and //c with mouse card
|
|
(doesn't
|
|
JSchober seem to work on the GS) called SHARE, that does loosely what you
|
|
ask -- let's
|
|
JSchober you run 2 binary files under P8 simultaneously, so long as they
|
|
don't compete
|
|
AFA Gary J Q = ASSEMBLER13 (Joe, Coach), PsychoPunk, MAILMAN60, Nuzz
|
|
JSchober for memory. Although the screen control isn't as you desire,
|
|
since it's based
|
|
JSchober on an interrupt scheme of some sort, you could probably patch the
|
|
code to ...
|
|
JSchober toggle text screen windows (33..36 or whatever in the Z-page)
|
|
every time it
|
|
JSchober switched the PC and whatever else it switches. Just a thought;
|
|
I've never
|
|
JSchober tried it. GA...
|
|
AFL Dyfet Okay, GA Coach.
|
|
Coach101 Or, in the future as 5.0 catches on and we start to see Text
|
|
AFA Parik 641236984
|
|
Coach101 applications that use the Console driver, you could capture the
|
|
JSchober (same to you, Parik)
|
|
AFA Parik (sorry)
|
|
Coach101 console driver calls (with a custom driver maybe) and then map
|
|
the
|
|
Matt DTS !
|
|
Coach101 programs calls into a "virtual" screen with some sort of
|
|
scrolling.
|
|
Coach101 Could be real cute. Of course you still have to consider the
|
|
basic
|
|
AFA Gary J Q = ASSEMBLER13 (Coach, Matt), PsychoPunk, MAILMAN60, Nuzz
|
|
Coach101 horsepower of the II-GS in a "multi-taksing" environment. GA
|
|
AFL Dyfet I see Matt wishes to add something. GA Matt.
|
|
Matt DTS Actually, 5.0 provides limited capabilities for standard input,
|
|
output and
|
|
Matt DTS error using the Console Driver, as well as adding console driver
|
|
traps for
|
|
Matt DTS better control of such things. GA.
|
|
AFL Dyfet Hmm. Sounds interesting. Any other comments?
|
|
AFL Dyfet Will this mean the end of shells that patch the GS/OS service
|
|
vector for I/O
|
|
AFL Dyfet handling, Matt?
|
|
AFL Dyfet (redirection=handling)
|
|
HMT !
|
|
AFL Dyfet GA HMT.
|
|
Matt DTS If you mean the $E100A8 vectors, perhaps. *Most* applications
|
|
will not need
|
|
HMT still here
|
|
Matt DTS to patch that any longer, but there will be exceptions.
|
|
Matt DTS (Things like APW which use $01xx calls to that vector, for
|
|
example.) GA
|
|
AFL Dyfet It seems the need for some of the $01xx functions will be
|
|
eliminated in 5.0.
|
|
AFL Dyfet In any case, GA HMT.
|
|
Matt DTS That won't stop the old shell from making the calls. (GA)
|
|
HMT Just Watchibg trying to see what I can lern!
|
|
MarcSSSi !
|
|
AFL Dyfet Okay. Well, that's one of the reasons we're here :). Ga Marc.
|
|
AFA Gary J Q = ASSEMBLER13 (MarcSSSi), PsychoPunk, MAILMAN60, Nuzz
|
|
MarcSSSi The existing APW/Orca shell calls exceed simple redirection query
|
|
so it seems
|
|
MarcSSSi obvious that continued support into 5.0 and beyond is required for
|
|
compatabilit
|
|
MarcSSSi y!
|
|
Matt DTS ! (I think I'm gonna have to explain this...)
|
|
MarcSSSi ga
|
|
AFL Dyfet I didn't mean to sidetrack into this issue, but since we have, GA
|
|
Matt.
|
|
Matt DTS (neither did I) What it is, is this:
|
|
Matt DTS Before launching a program ($B3/$B5), GS/OS sets prefixes 10: 11:
|
|
and 12:
|
|
AFA Gary J Q = ASSEMBLER13 (Matt), PsychoPunk, MAILMAN60, Nuzz
|
|
Matt DTS to .CONSOLE (requiring this device exists and is the Console
|
|
Driver). A
|
|
Matt DTS controlling program can set those prefixes to different devices or
|
|
files and
|
|
Matt DTS control redirection that way (for example, setting 11: for output
|
|
to something
|
|
Matt DTS like ":MYDISK:SPOOL.FILE".) 10 is input, 11 is output, 12 is
|
|
error.
|
|
Matt DTS This gets a lot more complicated when you get into the subtle
|
|
issues of it,
|
|
Matt DTS but that's the gist of it. It's not overly complicated, but it
|
|
will work,
|
|
Matt DTS since programs written for 5.0 can simply "open 10:" for input,
|
|
"open 11:" for
|
|
Matt DTS standard output (and 12 for error). This is really easy from
|
|
higher-level
|
|
Matt DTS languages. GA.
|
|
AFL Dyfet Hmm...I see a few subtle problems with that in unusual situations
|
|
as apposed to
|
|
AFL Dyfet the more standard use of passing stdin/stdout/stderr handles, but
|
|
I will bring
|
|
AFL Dyfet this up with you in mail sometime. Now, I believe the next
|
|
question is from
|
|
AFL Dyfet Psychopunk. GA Psychopunk.
|
|
ASEMBLER13 OK Thanks Alot :-)
|
|
PsychoPunk I've got problems making programs to be used in auxilary memory.
|
|
PsychoPunk I load it in normal memory, and move it to aux, but it crashes.
|
|
PsychoPunk The program works fine in norm but is really screwed up in aux.
|
|
Matt DTS ! (since Dave's not responding)
|
|
AFL Dyfet GA Matt.
|
|
PsychoPunk Also, if it does happen to work, the final rts will crash.
|
|
Matt DTS How does it crash, exactly? Any more details at this point would
|
|
"hep".
|
|
Matt DTS "Final RTS" = this program ends with an RTS?
|
|
PsychoPunk something like 6000- X=65 A=64 Y=53 etc...
|
|
PsychoPunk Yes.
|
|
Dave Lyons !
|
|
Matt DTS Which is supposed to return you to BASIC, I suppose? (getting
|
|
warm?)
|
|
AFA Gary J Q = PsychoPunk (Matt, Dave), MAILMAN60, Nuzz
|
|
Dave Lyons Do the locations $0100 and $0101 mean anything to you, PP? (If
|
|
not, somebody's going
|
|
PsychoPunk I supposed if it was executed from monitor, it would return to
|
|
monitor?
|
|
Dave Lyons to have to explain them.)
|
|
Matt DTS Ah. Diagnosis complete. Dr. Lyons will now issue a
|
|
prescription.
|
|
PsychoPunk I think they're used to check if under aux or norm?
|
|
PsychoPunk (Am I close?)
|
|
Dave Lyons Me? Ack. Well, the general idea is that you keep the stack
|
|
pointer for the
|
|
Dave Lyons non-active memory bank in one of those locations, but I don't
|
|
Dave Lyons have the details right in front of me. Are you twiddling the
|
|
$C0xx switches
|
|
Dave Lyons directly, or are you using the AUXMOVE and XFER entries into the
|
|
$C3xx space? (I
|
|
Dave Lyons think those take care of the stack switching automatically.)
|
|
Dave Lyons BTW, you definitely need to switch back to main memory somehow or
|
|
other
|
|
Dave Lyons before you can return to the monitor or whoever executed you.
|
|
Coach101 !
|
|
Dave Lyons (I suppose I should be more careful: you need to return the
|
|
environment to how it was
|
|
Dave Lyons before you return, especially the stack.)
|
|
Dave Lyons (done for now)
|
|
AFL Dyfet Feel free to jump in here at this point, Coach.
|
|
PsychoPunk Okay. Also, what happens if one tried to issue prodos cmds from
|
|
aux?
|
|
Coach101 The II-E and II-C technical reference manuals (one or both)
|
|
Matt DTS Horribly, nasty things that we don't want to talk about.
|
|
Dave Lyons Ack! Very bad, I think.
|
|
Coach101 contain a pretty detailed explanation of how to make use of
|
|
Coach101 the aux mem bank for either data or program. All of what Dave
|
|
Matt DTS (some will tell you MLI calls from aux work in certain instances,
|
|
but I
|
|
Coach101 was saying is explained in those books (in excruciating detail).
|
|
Coach101 ga
|
|
Matt DTS wouldn't bet other people's disks on that.)
|
|
AFL Dyfet The best way to call the MLI from aux memory is to setup an
|
|
interface routine
|
|
AFL Dyfet that switches back to standard memory before calling the real MLI
|
|
and then
|
|
AFL Dyfet sets auxmem active again for the return.
|
|
Matt DTS In other words, the actual call to the MLI is in main memory.
|
|
AE PhilM !
|
|
PsychoPunk Hmmm. Helpful! Well, I'm done.
|
|
AFL Dyfet GA Phil.
|
|
AE PhilM Dyfet, that is a good idea for some calls but it gets a little
|
|
complicated
|
|
AE PhilM when you are passing pointers to data areas that you want to pass
|
|
or return
|
|
AE PhilM stuff too.
|
|
AE PhilM Then you need to copy all that stuff over manually...get's real
|
|
messy.
|
|
PsychoPunk done
|
|
AE PhilM done
|
|
AFL Dyfet You can solve that with a little more smarts in the interface
|
|
routine, to
|
|
AFL Dyfet recognize and automatically move data around for read/write calls,
|
|
etc. I
|
|
AFL Dyfet never said it would be easy :).
|
|
PsychoPunk (looks hard!)
|
|
AE PhilM A lot more smarts :))
|
|
AFL Dyfet Well, any other comments?
|
|
PsychoPunk done
|
|
AFL Dyfet Okay, Mailman left before his question was called. I believe the
|
|
next
|
|
AFL Dyfet question is from Nuzz. GA Nuzz.
|
|
HMT
|
|
Nuzz I want to set the rPage and rPaper fields on the Gs print mgr. I
|
|
tried using
|
|
Nuzz iVres * inches I want for rPage, and adding a few to rPaper, but I
|
|
get a
|
|
Matt DTS !
|
|
AFA Gary J Q = Nuzz
|
|
Nuzz scrunched up picture when I copy in my bit map
|
|
Nuzz any suggestions.GA
|
|
AFL Dyfet GA Matt.
|
|
Matt DTS Didn't we send you an answer to this?
|
|
Nuzz Not as of yet
|
|
Matt DTS Ack! Send another one in for tomorrow asking for your answer.
|
|
Matt DTS Be indignant and insulting so we feel at home.
|
|
Matt DTS GA.
|
|
JSchober :)
|
|
Nuzz I could never be that. You all helped too much
|
|
AE PhilM LOL
|
|
AFL Dyfet Okay, do we have any other questions for tonight?
|
|
AE PhilM ?
|
|
HMT ?
|
|
Nuzz I'll ask for an answer in the morning. Thanks GA
|
|
AFL Dyfet GA Phil
|
|
AE PhilM Can we talk a little about the data structures used to maintain
|
|
the cache block
|
|
AE PhilM s in the cache manager?
|
|
Matt DTS No. Those are OS internal structures, subject to change at
|
|
strange times.
|
|
AE PhilM It looks like it is a linked list and is giving me preformance
|
|
degradation on
|
|
AE PhilM my Vulcan native mode driver.
|
|
Matt DTS Drivers should only access the cache through the system service
|
|
calls.
|
|
Dave Lyons So decrease the cache size. :-)
|
|
Matt DTS Your driver has the ultimate authority on caching. If caching is
|
|
slower than
|
|
AE PhilM I do! And they are slow.
|
|
Matt DTS not caching, then refuse the request to cache the blocks.
|
|
AE PhilM On the 100Meg Vulcan, the cache manager slows me down...I guess
|
|
it's best not
|
|
AE PhilM to use it.
|
|
Matt DTS The FSTs will not cache the blocks after you return them - they
|
|
ask you to
|
|
Matt DTS do it instead.
|
|
AE PhilM Should have used a hashing technique...oh well a recommendation
|
|
then.
|
|
Coach101 !
|
|
AFL Dyfet GA Coach.
|
|
AFA Gary J Q = Phil (Matt, Coach), HMT
|
|
AE PhilM I know, Matt....but CacheFindBlock it terribly inefficient...you
|
|
really should
|
|
Matt DTS (I'm not getting into the internal structures - I'm just saying
|
|
that if you
|
|
AE PhilM take a look at it for next rev.
|
|
Coach101 Just wanted to second AE's recommendation. Cache is a
|
|
performance
|
|
Matt DTS don't wanna cache, you don't have to)
|
|
Coach101 option, and I think if it has a sluggishness problem it should
|
|
Coach101 be addressed in future releases and not pushed back on the
|
|
AE PhilM Yes, and not a very good implementation at that! The cache
|
|
manager should be
|
|
AE PhilM optimized for preformance!!!
|
|
Coach101 device driver/manufacturer. GA
|
|
AE PhilM done
|
|
AFL Dyfet Anything more?
|
|
AFL Dyfet Okay, I believe the next question is from HMT. GA HMT.
|
|
HMT OK since uzz opened the printer can of worms, I have a ? about
|
|
Imagewriter II
|
|
HMT when it get to the end of the carriage it gives a carriage return
|
|
but not a lin
|
|
HMT feed has anything ewver been done about this?.
|
|
HMT GA
|
|
AFL Dyfet Hi Jim. Anyone wish to comment on this?
|
|
Matt DTS Do you have the switches set to tell it put a line feed after a
|
|
CR?
|
|
Dave Lyons !
|
|
Dave Lyons There is a code you can send to the serial port firmware that
|
|
tells it
|
|
Coach101 Switch Sw1-8...
|
|
HMT I have a question into Apple ab out this via APL, PE but haven't
|
|
heard
|
|
Dave Lyons to insert linefeeds. I think it's Ctrl-I LE...it's in the
|
|
Firmware Reference for the GS.
|
|
Matt DTS Or you can set your control panel to do that on a IIgs.
|
|
Jump Long You can also write your application so it doesn't print past the
|
|
end of the
|
|
AFA Gary J Q = HMT (Dave)
|
|
Jump Long carriage :)
|
|
JimMensch how bout trying ctrl-i80N ctl-iC
|
|
JimMensch that works with most apple interfaces (including IIgs and super
|
|
serial card)
|
|
|
|
HMT Sorry I cant agree. This is only used when thewre isn,t a
|
|
program around
|
|
HMT guiding the printer
|
|
Matt DTS HMT: The printer or the interface is configured incorrectly.
|
|
Jump Long type "PR#1", then type the keystrokes. The IWII will stay in that
|
|
mode until
|
|
HMT I GUESS I'M NOT EXPRESSING MYSELF VERY WQELL
|
|
Jump Long you reset it.
|
|
Matt DTS You're either going to have to change some dip-switch settings or
|
|
change the
|
|
Matt DTS Control Panel settings.
|
|
HMT ok TNKS
|
|
Jump Long or make a small BASIC program out of it to set up your printer
|
|
whenever you
|
|
Matt DTS There should be two "packages" of eight little switches each.
|
|
Jump Long want to print some program listings.
|
|
Matt DTS Take the left-most group of eight switches and look at the
|
|
right-most switch
|
|
Matt DTS within that group. Flip it the other way and try printing
|
|
again.
|
|
AFL Dyfet I've had a GS with an ImageWriter II for several years, and have
|
|
not had any
|
|
AFL Dyfet problem printing with it when configured correctly, so I know it
|
|
does work :).
|
|
AFL Dyfet I guess we have reached the end of this chat. Protocol disengaged
|
|
:)
|