557 lines
26 KiB
Plaintext
557 lines
26 KiB
Plaintext
America Online
|
|
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
|
|
Tuesday, August 14, 1990 10:00 p.m. eastern time
|
|
Topic: Assembly Language Programming
|
|
Forum Leader: Gary Jacobson (AFA Gary J)
|
|
|
|
AFA Gary J Welcome to the Apple II Development Forum.
|
|
AFA Gary J Tonights' topic is Assembly Language Programming.
|
|
AFA Gary J Ok. That's official enough. :)
|
|
AFA Gary J Let's get on with it (heh heh).
|
|
PeterK75 8-bit machines?
|
|
AFA Gary J For 8 or 16 bit, Peter. As long as it's Apple II.
|
|
Dave Lyons My turn?
|
|
AFA Gary J Uh, lets let John announce his t-shirts first.
|
|
AFA Gary J GA, John.
|
|
A2Evanglst II Infinitum has been growing into a more and more formal
|
|
Organization in the
|
|
A2Evanglst last few months.
|
|
A2Evanglst Jerry and I have been discussing what we wanted the future of II
|
|
Infinitum to
|
|
A2Evanglst be. It sees that the organization main purpose is to evangelize
|
|
the Apple II
|
|
A2Evanglst and make it known that the computer is by no means dead.
|
|
A2Evanglst There is talk of a II Infinitum Newsletter, which will highlight
|
|
companies
|
|
A2Evanglst that are doing Apple II development and it will direct mail
|
|
campaigns and
|
|
A2Evanglst try to apply pressure to companies that aren't doing Apple II
|
|
Development.
|
|
A2Evanglst To help with the money of such a project, Jerry and I have decided
|
|
that one
|
|
A2Evanglst of the biggest and best Evangelical tools (learned from Apple) is
|
|
Teeshirts
|
|
A2Evanglst We are in the process of printing up II Infinitum Teeshirts.
|
|
These teeshirts
|
|
A2Evanglst will be sold to help raise money to let II Infinitum be self
|
|
supporting.
|
|
A2Evanglst Ordering Info and Size Information is in Across the boards or if
|
|
you wish you
|
|
A2Evanglst can leave me email and I will send you the information to your
|
|
Screen Address
|
|
A2Evanglst The Teeshirts will be selling for 10.00 and 2.50 S&H
|
|
A2Evanglst and there are breaks for quantity orders.
|
|
A2Evanglst There is also other stuff that will be available but at this time
|
|
we are
|
|
A2Evanglst doing just buttons and Teeshirts :)
|
|
A2Evanglst There is online ordering available at my Screen address...
|
|
A2Evanglst Thanks for your Attention and II Infinitum :)
|
|
A2Evanglst ga
|
|
AFA Gary J Thanks, John. I'm glad to see some organization behind this
|
|
Apple II push.
|
|
AFA Gary J The t-shirts sound neat.
|
|
|
|
AFA Gary J Ok, Before we get on to our questions this evening, Dave Lyons
|
|
has an announce-
|
|
AFA Gary J ment to make.
|
|
AFA Gary J GA Dave (then we'll get our questions )
|
|
Dave Lyons Good news! Speaking of the Apple II not being dead, I recently
|
|
accepted a job in Apple II
|
|
Dave Lyons System Software, working on the GS Toolbox. This is effective
|
|
August 27, and I'm enthusiastic
|
|
Dave Lyons about it. Don't everybody instant-message me your toolbox ideas,
|
|
but feel free to email & post in
|
|
Dave Lyons Let's Discuss under the GS Toolbox folder! ga
|
|
RMY Congrats Dave :)
|
|
A2GS Congratulations DAVE!!!
|
|
A2Evanglst Great!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
!!!!!
|
|
AFL Floyd Wow! Great news, Dave.
|
|
AFA Gary J Great!!
|
|
A2Evanglst !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
PeterK75 Congrats!
|
|
A2Evanglst ())()()()()()()()()()()()()()()()()]
|
|
Nuzz WTG Dave
|
|
A2Evanglst <----- very Happy !!!!!
|
|
Matt DTS (He would have taken a job spit-shining Mac power supplies to not
|
|
sit next to me anymore.)
|
|
AFA Gary J (I was wondering about Tool 42, Nifty Tool?)
|
|
A2Evanglst Gary, Isn't that the tool that makes your IIgs go into Debugging
|
|
Tangents???
|
|
Nagendra nice to hear that dave
|
|
AFL Floyd I guess you're going to show Jim M. how it's done, huh? ;)
|
|
Dave Lyons :)
|
|
AFL Scott Whoa!!!!!! GREAT!!!
|
|
AFA Gary J That's great, Dave. Good news for all of us.
|
|
A2Evanglst But does this mean that we don't get to see your name on Tech
|
|
Notes anymore???
|
|
Dave Lyons John, not necessarily...I can still do some technotes by remote
|
|
control....
|
|
Matt DTS (Don't tempt me to comment on how he wrote the ones he's already
|
|
done...)
|
|
JeffreyH11 He'll be fixing the bugs now, instead of telling us how to get
|
|
around them. :)
|
|
A2Evanglst <grin>
|
|
Dave Lyons (Well, JH, you'll probably still get workarounds first, and then
|
|
solutions. We can't crank out
|
|
Dave Lyons new system disks every weekend, unfortuantely.)
|
|
JeffreyH11 I'll settle for every month.
|
|
Nagendra me too
|
|
|
|
AFA Gary J Ok, Let's use Protocol starting now, and get to our assembly
|
|
language questions
|
|
AFA Gary J for this evening. I'll keep track of the queue and call on you
|
|
in turn.
|
|
PeterK75 Uh...how's Protocol work?
|
|
AFA Gary J Protocol: If you have a question, type a "?" on a line by
|
|
itself
|
|
AFA Gary J if you have a comment on the current topic, type a "!" on a line
|
|
by itself.
|
|
|
|
AFA Gary J Ok, A2GS has our first question this evening. GA A2
|
|
A2GS If you run an Application for example through your sys. disk and
|
|
the app uses
|
|
A2GS the SFO toolset, when you actually are in the app. and you select
|
|
something
|
|
A2GS which uses the SFOT, for some reasons the system (GS) hangs with
|
|
an open
|
|
A2GS dialog window and seems to be in LA-LA land, why? (BTW this
|
|
happens only if
|
|
A2GS you take out your sys. disk before pulling up the Dialog and
|
|
replacing it with
|
|
A2GS another volume)
|
|
A2GS GA
|
|
AFA Gary J GA, Jeffrey
|
|
JeffreyH11 I recall Andy Nicholas mentioning this problem in the docs for
|
|
Shrinkit-GS. It
|
|
JeffreyH11 seems that if you try to do a SFO call and it can't find prefix 0
|
|
online, the
|
|
JeffreyH11 OS hangs. Perhaps that's one of the fixes that Dave can work on.
|
|
:) GA
|
|
A2GS (Didn't read them)
|
|
A2GS Dave?? Is this a bug or what? Is there a fix?
|
|
AFA Gary J GA, Dave (he already has a fix?)
|
|
Dave Lyons I believe this one is already cleared up for the next version of
|
|
the system software, without
|
|
Dave Lyons my help. ga
|
|
A2GS Yeah, wait for 6.0 :)
|
|
A2GS So the only way to get around it now is to leave prefix 0
|
|
online?
|
|
AFA Gary J GA, Dave
|
|
A2GS (till the Dialog is up, that is)
|
|
Dave Lyons Ummm...if it's the problem I'm thinking of, you could do it two
|
|
ways:
|
|
Dave Lyons leave the prefix-0 disk online until the dialog is up (yes) or
|
|
have your app zero out the Standard
|
|
Dave Lyons File direct-page space after you allocate it but before you call
|
|
SFStartUp. ga
|
|
A2GS Thanx, I'll try it
|
|
AFA Gary J GA, Jeffrey
|
|
JeffreyH11 Is it a problem with GS/OS or with SFO?
|
|
Dave Lyons (It's a Standard File problem, not an OS problem.)
|
|
AFA Gary J Ok, Nagendra has the next question. GA Nagendra
|
|
Nagendra ok I'm not sure if this is the right place to ask, but is there a
|
|
way for
|
|
Nagendra incorporating assembly lang into TML II code?
|
|
AFA Gary J Of course this is the right place to ask. :) (But having
|
|
ORCA/Pascal and not
|
|
AFA Gary J TML, I don't know) But Dave does. GA Dave :)
|
|
Dave Lyons It can be done, but it's a pain. In the
|
|
Dave Lyons ADV source code libraries you'll find a CallByPtr module I
|
|
uploaded a while ago that demonstrates
|
|
Dave Lyons building an assembly routine (for calling other assembly routines)
|
|
using INLINE procedures. You
|
|
Dave Lyons get to build it one byte at a time that way. It's a task for the
|
|
determined & experienced assembly
|
|
Dave Lyons programmer. ga
|
|
AFA Gary J Thanks, Dave. Any follow up question, Nagendra?
|
|
Nagendra ok like testing your code somewhere else and then entering the
|
|
code as a string
|
|
Nagendra and then calling a toolcall to that string?
|
|
Nagendra another question
|
|
Nagendra in a technote for fastgraphics someone said to move the stack
|
|
Nagendra onto the graphic display and then just push stuff onto the
|
|
stack.
|
|
Nagendra exactly how do you move the stack around?
|
|
AFA Gary J Are you talking about Apple's Tech Note #70?
|
|
Nagendra I think so
|
|
AFA Gary J (Or the other one by DYA Jim?)
|
|
A2GS Do you know the procedure for putting the stack into bank $01,
|
|
first of all...
|
|
Nagendra no
|
|
A2GS to move the stack around just use a LDA #stack ADRS, TCS
|
|
A2GS you could also use LDX,TXS....you should turn off interrupts when
|
|
your using
|
|
A2GS the stack for fast moving or you'll get garbage on your graphics
|
|
screen which
|
|
A2GS is actually the return address' and other info pushed onto the
|
|
stack when an
|
|
A2GS interrupt occurs and is being handled...to put the stack into bank
|
|
$01 from
|
|
A2GS it's usual location in bank $00, you can either flip softswitch
|
|
$c019 or you
|
|
A2GS can produce the same effect by (I think) clearing (or is it
|
|
setting, I forget)
|
|
A2GS the hi-bit in $c068.
|
|
AFA Gary J GA, Jeffrey
|
|
JeffreyH11 and avoid using JSR, push, pop, etc.
|
|
JeffreyH11 $C009, not $C019 (I just looked it up). WARNING!! if this
|
|
functions the
|
|
JeffreyH11 way the 8-bit Apple II manuals say it does, it affects only pages
|
|
0,1, and
|
|
JeffreyH11 $D0 and up. This doesn't include the graphics area. Also, in
|
|
order for any
|
|
JeffreyH11 of this to work, I/O shadowing for SHR must be enabled, or your
|
|
writes to
|
|
JeffreyH11 bank $1 will be ignored by the video hardware.
|
|
A2GS oops, sorry
|
|
Dave Lyons (Then that's not the softswitch you want!)
|
|
AFA Gary J All the methods I've seen have used $C068.
|
|
A2GS I've seen $c009 used, but I always use $c068
|
|
A2GS Shadowing is controlled by $c035
|
|
AFA Gary J GA, Matt
|
|
Matt DTS The confusion is the term "moving the stack" onto the screen.
|
|
Matt DTS You can flip old 8-bit style softswitches that make the emulation
|
|
mode stack read from bank one
|
|
Matt DTS instead of bank zero, but that's not relevant here.
|
|
Matt DTS What you want to do is flip softswitches so that the auxiliary
|
|
(bank one) 48K is mapped into the main
|
|
Matt DTS (bank zero) 48K. Then all accesses to bank zero will actually get
|
|
memory in bank one.
|
|
Matt DTS Then you change the *native* stack pointer to be in bank zero
|
|
between $2000 and $9FFF.
|
|
Matt DTS When it touches the stack, it really hits bank one, and the
|
|
hardware shadowing makes it go to bank $E1
|
|
Matt DTS instead. Hence "screen onto the stack." GA.
|
|
AFA Gary J Thanks, Matt. Anything else, Nagendra? (If not, we'll move on
|
|
to Peter's question)
|
|
Nagendra nope GA.
|
|
AFA Gary J OK, GA Peter
|
|
PeterK75 Back to 8-bits - In Prodos 8, I'm trying to input lines from a
|
|
text file with the MLI, using NEWLINE
|
|
PeterK75 and READ. I know it's not an empty file, but it gives me an EOF
|
|
error on the first read.
|
|
PeterK75 Anything?
|
|
AFA Gary J GA Dave
|
|
Dave Lyons Peter, what value are you passing for request-count? You might
|
|
get an
|
|
Dave Lyons EOF error if you ask to read 0 bytes.
|
|
PeterK75 Nope, $FF
|
|
Dave Lyons Hmmm. I tried it & couldn't get an error anyway. Can you send a
|
|
small test case (executable
|
|
Dave Lyons code)? I'm pretty much stumped.
|
|
PeterK75 Uploading code might be hard - I'm using a Mac to access AOL!
|
|
Dave Lyons Don't you have Apple File Exchange?
|
|
Dave Lyons I'm using a Mac too.
|
|
Matt DTS (So am I - it leaves the GS free for important stuff.)
|
|
Matt DTS The P8 Tech Ref says that the EOF error will be returned if and
|
|
only if zero bytes were transferred.
|
|
Dave Lyons What's your enable mask & newline character?
|
|
PeterK75 Enable mask=$7F; Newline char = $0D.
|
|
AFA Gary J GA, Jeffrey
|
|
JeffreyH11 Exploring Apple GS/OS and PRoDOS 8 says the same thing.
|
|
JeffreyH11 There shouldn't be a problem unless it really read 0 characters.
|
|
Matt DTS Uh...is there actual data in the file, or does it have an EOF of
|
|
zero?
|
|
PeterK75 I checked the buffer - no characters in there.
|
|
PeterK75 And the file can be read with other programs.
|
|
JeffreyH11 Did you check for errors on the OPEN call?
|
|
PeterK75 Yup
|
|
Dave Lyons Error on Open would almost certainly get you an invalid reference
|
|
number error ($43) on the Read,
|
|
Dave Lyons unless you happened to have a valid number for some -other- file
|
|
in the parameter block.
|
|
JeffreyH11 Dave: agreed.
|
|
JeffreyH11 Matt or Dave - doesn't P8 automatically read in the first 1K on
|
|
OPEN?
|
|
Dave Lyons Jeff, doesn't matter. It may internally, but there's no problem.
|
|
I've been playing with it in
|
|
Dave Lyons the exerciser, even, and it's working great.
|
|
Matt DTS It reads the index block into half of the buffer, but I don't know
|
|
if it puts a data block in the
|
|
Matt DTS other half until something's read or not.
|
|
Matt DTS (This is why Dave and I use Macs for conferences. :)
|
|
Dave Lyons What -is- the file's EOF? (For ex, what's ENDFILE when you
|
|
CATALOG it in BASIC.SYSTEM?)
|
|
Dave Lyons What version of P8 are you using, BTW?
|
|
PeterK75 Version 1.8, and I'd have to check the EOF
|
|
Dave Lyons Hmmm...I vote that it's empty. :-)
|
|
PeterK75 No, I put it there and checked it repeatedly myself.
|
|
Dave Lyons And it's definitely the first READ call, and you didn't do any
|
|
SET_MARKs?
|
|
JeffreyH11 Use the "Show Catalog" command on the FILE menu, and tell us the
|
|
number before
|
|
JeffreyH11 the "R"
|
|
PeterK75 I did a SET_MARK to 0 before the READ.
|
|
PeterK75 But that had no errors.
|
|
Dave Lyons Do you have any other files open?
|
|
PeterK75 Yes.
|
|
Dave Lyons Hmmm...my second vote is the Read accidentally has the reference
|
|
number of some -other- file, which
|
|
Dave Lyons has its mark at the EOF already.
|
|
PeterK75 It shouldn't be - I set the parameters and then call the READ all
|
|
in a separate subroutine.
|
|
A2GS Must be a P8 bug :)
|
|
PeterK75 Wonderful.
|
|
Dave Lyons Well...I'm out of guesses without seeing it fry in front of me.
|
|
If you don't get unstuck, send me
|
|
Dave Lyons some code. I -don't- think it's a P8 bug. Davex works too well,
|
|
with lots of open files. ga
|
|
A2GS Does it do any NEWLINE calls though? :)
|
|
Dave Lyons I think I use NewLine a couple of places--would have to check.
|
|
JeffreyH11 I bet it does -- in pg and type, at least.
|
|
AFA Gary J Peter: Why don't you either upload some code to Dave, or post
|
|
some code in
|
|
AFA Gary J "Let's Discuss..." and we'll all take a stab at it.
|
|
PeterK75 OK - I'll get it up tomorrow evening. Next... GA.
|
|
|
|
PeterK75 Well, I hate to interrupt - But I found my bug.
|
|
Dave Lyons (Peter, what was the problem?)
|
|
AFA Gary J Where was it, Peter?
|
|
PeterK75 1 out of many, many lines of code disappeared - the one telling
|
|
OPEN where its parms were. Oh well.
|
|
PeterK75 Sorry about that. GA.
|
|
Dave Lyons :) thought it would be something like that....
|
|
|
|
AFA Gary J Ok, RMY has the next question. GA RMY
|
|
RMY Thanks....
|
|
RMY Having a problem with QDStartup with shadowing and fast port
|
|
aware...
|
|
RMY I am using Micol Advanced Basic with assembly language library
|
|
routines...
|
|
RMY I have patched the Micol library to start QD with fastport aware
|
|
and
|
|
RMY shadowing
|
|
Dave Lyons What's the problem?
|
|
RMY My first call to QD prints a message on the SHR screen using
|
|
DrawString
|
|
RMY There is some garbage on the screen on the same line as the font
|
|
RMY after that, all QD functions work ok
|
|
AFA Gary J GA, Matt
|
|
Matt DTS Fastport aware has some responsibilities that go with it, aside
|
|
from just speeding things up.
|
|
Matt DTS When you set the FP-aware bit, you're telling QD that you're not
|
|
going to go messing with items in
|
|
Matt DTS a grafPort without using QuickDraw calls. How do you know that
|
|
other routines in the Micol library
|
|
Matt DTS aren't doing that?
|
|
RMY Compiler author advises that the call I am using is a simple
|
|
call
|
|
RMY to DrawString
|
|
RMY This gets executed right after the QDStartup call
|
|
Dave Lyons QDStartUp on ROM 1 in System 5.0.2 and earlier does not correctly
|
|
clear the bank-$01 copy of the
|
|
Dave Lyons screen. You can do a ClearScreen(0) to work around it. Funny,
|
|
this never seems to have made it into
|
|
Dave Lyons GS Technical Note #72, QuickDraw Quirks. Oops. The problem will
|
|
likely go away in the future
|
|
Dave Lyons anyway, and it's not a problem on ROM 3 in the first place.
|
|
JeffreyH11 Maybe you can do that on the next version of system.
|
|
Dave Lyons (BTW, I'd be surprised if Micol was fiddling with the grafport
|
|
directly.)
|
|
RMY I tried a call to Clearscreen after QDStartup but before
|
|
DrawString but
|
|
RMY no help...
|
|
Matt DTS I would too, but it's better to find out directly. Are you sure
|
|
Micol's library (not your code, but
|
|
Matt DTS the library code Micol uses to start up the tools) isn't modifying
|
|
any grafPort fields directly?
|
|
Matt DTS (and if so, how do you know?)
|
|
RMY I have discussed the QDStartup with Steve, the compiler author. I
|
|
am a
|
|
RMY active beta tester...
|
|
Dave Lyons Matt, this doesn't sound like a fastPort problem. It sounds like
|
|
a shadowing problem--the bank 1
|
|
Dave Lyons screen hasn't been cleared to anything yet.
|
|
Dave Lyons Although, I don't know why the ClearScreen(0) wouldn't work, if
|
|
the problem is what I think it is.
|
|
RMY The problem specifically is a small artifact on the screen in
|
|
RMY front of the first letter of the message that i printed
|
|
RMY correction drew on the SHR screen...
|
|
Matt DTS How can it be a shadowing problem if he called ClearScreen? Maybe
|
|
QD didn't get the text mode set
|
|
Matt DTS correctly because of fastPort anomalies.
|
|
Dave Lyons RMY, I have a suggstion. Are you using Shadowing *and* FastPort?
|
|
Try them separately and see which
|
|
Dave Lyons one is causing problems.
|
|
RMY Will do. I believe the problem is with shadowing if I remember
|
|
correctly
|
|
RMY as I already tried that idea.
|
|
Dave Lyons Try passing something Weird to ClearScreen, just to make sure it's
|
|
working.
|
|
RMY Dave, that is a great idea!
|
|
RMY I will try that.
|
|
Matt DTS What did you pass to ClearScreen? It doesn't take a color number
|
|
like you might think.
|
|
Matt DTS (for example, ClearScreen($DDDD) clears it to the standard
|
|
dithered-blue pattern)
|
|
RMY I have tried passing only $0000
|
|
RMY This problem is in the MAB Codemaster Library demo which I
|
|
uploaded
|
|
RMY to the development lib a while back. I am now embarrased because
|
|
it
|
|
RMY looks like a MAB bug to whoever downloads it. I should not have
|
|
RMY patched the lib for the upload...
|
|
RMY Thanks for the suggestions. GA
|
|
AFA Gary J RMY, give Matt's suggestion a try and let us know what happens.
|
|
AFA Gary J Let's move on to Jeffrey's question.. GA Jeffrey
|
|
JeffreyH11 2 things...
|
|
JeffreyH11 1.) is it possible to tell, under P8, whether a given volume is
|
|
AppleShare or
|
|
JeffreyH11 local?
|
|
AFA Gary J GA Dave
|
|
Dave Lyons Yes. One way is to do a READ_BLOCK on it & see if you get error
|
|
$88 or not. (That's the recommended
|
|
Dave Lyons way these days, isn't it Matt?) ga
|
|
Matt DTS That's the recommended way to see if the boot volume is
|
|
AppleShare.
|
|
Matt DTS The recommended way to identify any volume involves an AppleShare
|
|
call that tells you a lot more.
|
|
AFA Gary J That only works for the boot volume?
|
|
Matt DTS It's only guaranteed for the boot volume. We prefer people use
|
|
other methods for identification.
|
|
Matt DTS It's all detailed in P8 TN #21, Identifying Stuff. GA.
|
|
JeffreyH11 I just want to know if it is AppleShare or not, without
|
|
neccessarily knowing
|
|
JeffreyH11 if there's an AppleShare card in the system.
|
|
AFA Gary J Next question, Jeffrey?
|
|
JeffreyH11 Second, (OK, there's more than 2)... I'm writing a routine that
|
|
intercepts
|
|
JeffreyH11 P8 MLI calls before they get to the MLI. Only problem is,
|
|
sometimes my
|
|
JeffreyH11 routine makes several MLI calls itself. I need to be able to do
|
|
all this
|
|
JeffreyH11 without fear of being called while already active, and without
|
|
fear of not
|
|
JeffreyH11 calling an interrupt routine that patches CMDADR. Only I don't
|
|
want any
|
|
JeffreyH11 interrupt routines to slip past my intercept, and I can't disable
|
|
interrupts
|
|
JeffreyH11 because it would kill AppleTalk. (wouldn't it?). Can you
|
|
help??
|
|
Dave Lyons Hmmmmm.
|
|
Dave Lyons I think it can work.
|
|
JeffreyH11 Thought you'd say that :) The real fun thing is I have to do it
|
|
within a week,
|
|
JeffreyH11 AND write the GS/OS version (which will be much easier).
|
|
Dave Lyons What you have to do is (1) be re-entrant, so you can deal with
|
|
interrupt-time calls
|
|
Dave Lyons to yourself without screwing up the call you were setting up. So
|
|
keep variables on the stack, or
|
|
Dave Lyons preserve their old values onto the stack before using them.
|
|
Patching CMDADR only happens when
|
|
Dave Lyons the caller notices that the MLIACTV flag is already set. Just
|
|
don't fiddle with it, and you're okay.
|
|
Dave Lyons Oh, and (2) call the Real P8 vector when you make your own calls,
|
|
instead of calling BF00.
|
|
JeffreyH11 where can I get more info on that? I have Gary Little's book
|
|
(which I keep
|
|
JeffreyH11 mentioning), which has a disassembly of page $BF, but the
|
|
subroutines there
|
|
JeffreyH11 aren't guaranteed.
|
|
Dave Lyons The GS/OS version of your utility?
|
|
JeffreyH11 GS/OS will be easy, because of the way the busy state is handled
|
|
by the OS and
|
|
JeffreyH11 by interrupt routines.
|
|
Dave Lyons I don't think you need more info than is documented--just patch
|
|
out BF00. By the "real"
|
|
Dave Lyons P8 vector I only meant the "old" contents of BF00-2.
|
|
JeffreyH11 Now, here comes the fun part... where can I safely put my code so
|
|
it won't
|
|
JeffreyH11 interfere with any system program. It has to work with ANYTHING,
|
|
and survive
|
|
JeffreyH11 between launches.
|
|
Dave Lyons Jeffrey, there's no such place. Have fun. :)
|
|
JeffreyH11 How much free space is there in $Dx bank 2? (in the current P8).
|
|
JeffreyH11 I know it will break future versions, but I will have to check the
|
|
version
|
|
JeffreyH11 # before installing anyway.
|
|
Dave Lyons Extremely little free space. I don't know exactly how much or
|
|
where, but I've been told there's only
|
|
Dave Lyons a couple dozen bytes free in P8, scattered around.
|
|
Dave Lyons Why will you have to check the version?
|
|
JeffreyH11 I was under the impression that there was some free space above
|
|
the Quit code.
|
|
Dave Lyons You should be able to patch out $BF00 after fetching the old JMP
|
|
from there, staying pretty
|
|
Dave Lyons compatible with everything.
|
|
Dave Lyons (Not that I know of.)
|
|
JeffreyH11 I am patching P8 so it will install my code at boot time.
|
|
JeffreyH11 Unless I can put it in ATINIT, which will screw up AppleTalk.
|
|
Dave Lyons Oh. Why don't you make it a .SYSTEM file that you put first, & it
|
|
searches for the *next* .SYSTEM
|
|
Dave Lyons file? Works well for P8CDA.SYSTEM and others.
|
|
JeffreyH11 Because it has to be installed when P8 is launched by GS/OS to run
|
|
a 8-bit
|
|
JeffreyH11 program. This is something that has to ALWAYS be active once you
|
|
boot with
|
|
JeffreyH11 it, until restart.
|
|
AFA Gary J Interesting problem.
|
|
JeffreyH11 When P8 searches a volume for a file, where does it store the
|
|
directory
|
|
JeffreyH11 blocks?
|
|
Dave Lyons Hmmm. Okay, you can also chain into OS_VECTOR at $E100BC (I think
|
|
that's the right address). That's
|
|
Dave Lyons what AppleTalk uses to keep itself chained into $BF00. Actually,
|
|
you want to be in there *before*
|
|
Dave Lyons AppleTalk, so that you'll get to chain into BF00 -after-
|
|
AppleTalk. Hmmm.
|
|
Dave Lyons JH, I believe it stores the directory blocks somewhere in $Dxxx.
|
|
Why?
|
|
JeffreyH11 Because I think I can use some of that space for loading blocks
|
|
from disk when
|
|
JeffreyH11 I need to. There's a couple places where I need to read a block
|
|
from disk to
|
|
JeffreyH11 do something.
|
|
Dave Lyons Ick. If you do -anything- like that, please check KVERSION and
|
|
*refuse to load* if it's a higher
|
|
Dave Lyons version of P8 than the utility knows about. It's still icky. I
|
|
don't know whether P8 has any
|
|
Dave Lyons "smarts" about those buffers (it might know what block is in
|
|
there, some of the time).
|
|
JeffreyH11 Don't worry; I will. And, I'll save what was in there first. The
|
|
other
|
|
JeffreyH11 possibility is to put all my code in an area outside banks 0 and
|
|
1, loaded when
|
|
JeffreyH11 the Init loads at GS/OS boot time. Where can I get docs on
|
|
OS_VECTOR?
|
|
Dave Lyons Good question...
|
|
Dave Lyons it was in some release notes once upon a time. I
|
|
Dave Lyons believe it's E1/00AC (not BC...sorry). It gets called on OS
|
|
switches. When you're done, jump to
|
|
Dave Lyons the value that used to be in there. (It holds an RTL initially &
|
|
a long JMP once somebody is
|
|
Dave Lyons patching it. So just copy the 4 bytes & fall into the old copy of
|
|
them.)
|
|
JeffreyH11 It gets called AFTER P8 loads, but BEFORE an application is
|
|
started?
|
|
Dave Lyons Yes, I believe it's just what you want. I know AppleTalk uses it
|
|
to grab $BF00, so it seems like
|
|
Dave Lyons it must be right.
|
|
JeffreyH11 OK. Then all I have to do is be reentrant.
|
|
Dave Lyons Sounds like it.
|
|
JeffreyH11 is an interrupt routine ALWAYS called in emulation mode?
|
|
Dave Lyons Nope. GS interrupt routines are always called in native mode,
|
|
8-bit registers, with stack in
|
|
Dave Lyons page 1. But yes, it's Native, not emulation.
|
|
JeffreyH11 So if my code is somewhere in bank 2 or up, and a P8 interrupt
|
|
routine is
|
|
JeffreyH11 called, the 65816, the firmware, and P8 will take care of the
|
|
interrupt code?
|
|
Dave Lyons I don't understand the question. As long as you're never trying
|
|
to execute in emulation mode outside
|
|
Dave Lyons bank 0, there should be no problem. (If you're ever outside bank
|
|
0 in emulation mode, you have to
|
|
Dave Lyons have interrupts disabled, or the system will die. An emulation
|
|
interrupt doesn't save K, so you
|
|
Dave Lyons get lost.)
|
|
JeffreyH11 OK. Final question - is it true that P8 can be called from within
|
|
its own
|
|
JeffreyH11 address space (main memory $D0 - $FF) without problems?
|
|
Dave Lyons It's certainly not guaranteed, but it's probably true.
|
|
JeffreyH11 OK. Great; thanks for the help. Now maybe I'll be able to do
|
|
this
|
|
JeffreyH11 successfully. Wish me luck!
|
|
Dave Lyons Luck!
|
|
|