541 lines
26 KiB
Plaintext
541 lines
26 KiB
Plaintext
America Online
|
|
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
|
|
Tuesday, May 1, 1990 10:00 p.m. eastern time
|
|
Topic: Operating Systems
|
|
Forum Leader: AFL Dyfet
|
|
|
|
AFL Dyfet Good evening and welcome to the Apple II Development Forum.
|
|
Tonight our topic
|
|
AFL Dyfet is Operating Systems. We will be using PROTOCOL. This means that
|
|
if you have
|
|
AFL Dyfet a question to ask, enter a '?' on a line by itself, and if you
|
|
wish to comment
|
|
AFL Dyfet on the question being asked, enter a '!' on a line by itself. You
|
|
will each be
|
|
AFL Dyfet called in turn. I believe Keith had the first question....GA
|
|
Kieth...
|
|
KeithR4 No questions yet, GA
|
|
Coach101 I think Keith asked a question before the conference started about
|
|
what was meant by
|
|
Coach101 channels? If you are a certified developer you ave access to
|
|
AppleLink (Apple Edition) and can ask
|
|
Coach101 very detailed programming questions in an official manner (i.e.,
|
|
channels).
|
|
AFL Dyfet GA Keith...
|
|
KeithR4 Thanks for answering
|
|
KeithR4 ga
|
|
AFL Dyfet Okay, I believe Parik now has the floor...
|
|
AFA Parik has anyone here written a macro program? if so, whats the best
|
|
way to
|
|
AFA Parik intercept key-calls? ga
|
|
AFL Dyfet GA Keith...
|
|
KeithR4 What language and development system are you using Parik?
|
|
AFA Parik asm65816
|
|
KeithR4 Apw or Merlin?
|
|
AFA Parik orca :)
|
|
Coach101 PRIZM or EDIT
|
|
KeithR4 Sorry can't help you there. ga
|
|
AFA Parik rose (heh) ga, never mind
|
|
AFL Dyfet :) Okay, getting back to your question, I believe there is some
|
|
sample source
|
|
AFL Dyfet on how to steal keyboard interrupts from C...you may wish to start
|
|
by looking
|
|
AFL Dyfet at that.
|
|
AFA Parik ok! thanks
|
|
AFL Dyfet Okay, Coach now has the floor...GA Coach...
|
|
Coach101 My question has to deal with intermodule communication...
|
|
Coach101 Specifically, if you have a driver, a permanent init, and a Cdev
|
|
that comprise some variety
|
|
Coach101 of service support for an application program, how can the init,
|
|
driver, and Cdev communicate with
|
|
Coach101 each other. ga
|
|
AFL Dyfet My first thought is message center...GA Dave...
|
|
Dave Lyons Use MessageByName and MessageCenter to publish an
|
|
Dave Lyons address that the others can look up & then call. (Several of
|
|
your
|
|
Dave Lyons compenents can publish their own hooks, or invent your
|
|
Dave Lyons own variations. I'm using this approach in a
|
|
Dave Lyons not-quite-released-yet Nifty List, and it works well. Now, Matt
|
|
has another approach: (GA)
|
|
AFA JoeyS <drooling over the thought of a new NiftyList...>
|
|
Matt DTS Dave (and Dave)'s method is well and good, but if you really have
|
|
a GS/OS driver installed, it's not
|
|
Matt DTS necessary.
|
|
Matt DTS If you have a GS/OS driver (which, by the way, is absolutely the
|
|
most intelligent way to control
|
|
Matt DTS hardware), you make it so that the driver handles ALL the hardware
|
|
requests through DControl, DStatus,
|
|
Matt DTS DRead and DWrite calls. If you need to set default parameters
|
|
(for example, default color on a color
|
|
Matt DTS printer), use DControl. If you need to know if the printer's
|
|
online, use DStatus.
|
|
Matt DTS Drivers are present before CDevs and Inits are loaded. If the
|
|
driver doesn't find it's hardware, it
|
|
Matt DTS will be unloaded by the Device Manager.
|
|
Matt DTS So:
|
|
Matt DTS Get a unique Device ID from DTS for your driver, so you can find
|
|
it with a DInfo scan just like you ca
|
|
Matt DTS (can) currently find servers or SCSI hard disks. Have your
|
|
CDev/Init search for the driver and call
|
|
Matt DTS it to do all the work.
|
|
Matt DTS (If you want to use MessageByName to indicate that the driver's
|
|
there and what it's device number is,
|
|
Matt DTS that's dangerous - new drivers can be installed at any time so you
|
|
should search every time.)
|
|
Matt DTS It's simple and lets the driver do all the work, which is what you
|
|
really want anyway. GA.
|
|
Coach101 Matts approach is much closer to my requirement...
|
|
AFL Dyfet GA Dave...
|
|
Dave Lyons So, how does the CDev communicate with the permanent init part?
|
|
Dave Lyons (Or doesn't it need to anymore?)
|
|
Coach101 But, can I have drivers that have no hardware associated with
|
|
them? e.g., they do funny things
|
|
Coach101 with an existing driver (AppleTalk for example)?
|
|
Matt DTS No. Drivers deal with hardware, not other things (especially not
|
|
other drivers).
|
|
Matt DTS You can, however, write your own AppleTalk protocols and get them
|
|
loaded (if you like).
|
|
Coach101 But, I could have a device driver that talked to the AppleTalk
|
|
manager right?
|
|
Coach101 Wrong... Bad, dumb, studid idea!
|
|
Matt DTS You can have a device driver that makes AppleTalk calls ($E11004,
|
|
or whatever). You can't have a
|
|
Matt DTS device driver that makes calls to the AppleTalk drivers.
|
|
Andy Stein Burger Bill is writing a Hewlet-Packard driver at 300 DPI!
|
|
Matt DTS You can write a driver that communicates with the supervisory
|
|
drivers, but there isn't an AppleTalk
|
|
Matt DTS supervisory driver. (Protocol?)
|
|
Coach101 Thanks for the ideas, I will mull them all over and see what pans
|
|
out.. ga
|
|
AFL Dyfet Okay, I see that Marty is next...GA Marty...
|
|
AFL Marty One of the members of AOL is having some difficulty with his hard
|
|
drive....
|
|
AFL Marty and I said that I'd ask this question here tonight...
|
|
AFL Marty The member is using a SCSI hard drive with the DMS SCSI card
|
|
....
|
|
AFL Marty (DMA SCSI)...
|
|
A2GS DMA
|
|
AFL Marty (thank you)
|
|
Matt DTS (the GMTA SCSI card)
|
|
A2GS ABCD
|
|
AFL Marty and he is getting what sounds like the same unclaimed interrupts
|
|
errors...
|
|
AFL Marty that I've heard about before. He is using an internal modem...
|
|
AFL Dyfet Is he using the new SCSI drivers?
|
|
AFL Marty Is there some way to work around this problem?
|
|
AFL Marty Yes, he uses the new drivers.
|
|
AFL Dyfet GA Matt...
|
|
AFL Marty GA
|
|
Matt DTS 1) Using the new drivers is not enough. He must use the INSTALLER
|
|
that came with the card to install
|
|
Matt DTS the modified GS/OS required by the new drivers/manager.
|
|
Matt DTS 2) When using the new OS, >64K interrupts is not a fatal error.
|
|
It will still ask you to "restart"...
|
|
Matt DTS ...but if you press return, you'll be returned to the application
|
|
with no ill effects.
|
|
Matt DTS 3) (off-chance) When using the new drivers/managers with the OLD
|
|
SCSI Card (Rev. C), it's vital that
|
|
Matt DTS you have proper termination - one terminator on the first and last
|
|
device on the chain (or just one if
|
|
Matt DTS you have just one device). The old manager would let you get away
|
|
with bad termination; the new one
|
|
Matt DTS does not. Take it from someone who watched SCSI have a party on
|
|
his data.
|
|
Matt DTS GA.
|
|
AFL Marty Thanks for the info. GA
|
|
AFL Dyfet Okay, I see that Keith has the next question...GA Keith, you have
|
|
the floor
|
|
AFL Dyfet now.
|
|
KeithR4 Is there any Pascal sample source code for doing list controls?
|
|
AFL Dyfet GA Matt...
|
|
KeithR4 I'm using TML Pascal II and I can't seem to get a list control to
|
|
work at all.
|
|
KeithR4 ga
|
|
Matt DTS Do you mean lists or the new 5.0 Extended List Controls?
|
|
KeithR4 either
|
|
Matt DTS List Controls are easier than lists. We haven't released any
|
|
samples, but we will be within the next
|
|
KeithR4 I tried the normal lists first. Didn't try the extened. I nedd
|
|
to create it
|
|
KeithR4 on the fly ga
|
|
Matt DTS month or so. Some will also be in the final Toolbox Reference
|
|
Volume 3 from Addison-Wesley.
|
|
Matt DTS (GA)
|
|
AFL Dyfet GA Dave...
|
|
Dave Lyons Keith, do you want the list in a regular window, or inside a Modal
|
|
Dialog?
|
|
Dave Lyons And, question 2, what went wrong when you tried it?
|
|
KeithR4 In a regular window ga
|
|
KeithR4 When I selected an item all of the items became garbage
|
|
Dave Lyons Okay, so it showed up correctly to start with, but
|
|
Dave Lyons when it tried to redraw later, the item text was all screwed up,
|
|
right?
|
|
KeithR4 That's correct
|
|
Dave Lyons The strings for the items have to *stay* in memory where they were
|
|
when you fed them to the
|
|
Dave Lyons list manager...sounds like you made a *local* array of strings,
|
|
maybe, so they went away?
|
|
KeithR4 Do I need to do some handle locking?
|
|
Dave Lyons Are your strings in a handle?
|
|
KeithR4 Yes, they may have been local variales.
|
|
Dave Lyons (I mean, one you specifically allocated?) Or what?
|
|
KeithR4 No, they are not in a handle, should I allocate one?
|
|
Dave Lyons Locals sounds like a very good bet--make 'em global or otherwise
|
|
long-lived, and life will be good.
|
|
KeithR4 Thanks, done.
|
|
Dave Lyons (No, there's no special advantage to having 'em in a handle...you
|
|
still have to have them somewhere
|
|
Dave Lyons to put them in the handle anwyay....) ga
|
|
AFL Dyfet Okay, Parik has the next question...GA Parik...
|
|
AFA Parik will gs/os load cdas into special memory if bit 12 is not set in
|
|
the omf field
|
|
AFA Parik and will gs/os purge at least level 3 before running prodos 8?
|
|
ga
|
|
AFL Dyfet GA Matt
|
|
Matt DTS ExpressLoad (and perhaps the System Loader, not sure) always
|
|
attempts to load non-special memory
|
|
Matt DTS before using special memory. If no special memory is not set, it
|
|
will be allowed but not preferred.
|
|
Matt DTS 2) No. GS/OS asks for the P8 memory and if some stuff needs to be
|
|
purged to get it, it will be purged
|
|
Matt DTS to get it. It doesn't go around kicking out people's dormant data
|
|
for thrills.
|
|
Matt DTS (GA)
|
|
AFL Dyfet GA Dave...
|
|
Dave Lyons Checking, but I don't think CDAs (when loaded by the system) get
|
|
to use special memory even if
|
|
Dave Lyons no regular memory is available. That's the flag on InitialLoad,
|
|
right?
|
|
AFA Parik i allocate a direct page in my Cda and it must be left after cda
|
|
is exited. i
|
|
AFA Parik use $4115 as memory-bits, and it doesn't get purged before running
|
|
p8. :(
|
|
WinkieJim Would prevent using P8 programs if they were loaded into special
|
|
memory
|
|
Matt DTS The memory manager will purge your handle if it's in special
|
|
memory to get it for P8 - if it can.
|
|
AFA Parik ga, i just have a key for disposing DP memory inside program.
|
|
kinda messy.
|
|
Dave Lyons Ah, but it would
|
|
Matt DTS It can't purge locked blocks, for example.
|
|
Dave Lyons purge levels 3 and 2 first, before getting rid of his level-1
|
|
blocks in bank 0. Are you leaving
|
|
Dave Lyons that page there while not in your CDA on purpose, or are we just
|
|
trying to explain the results
|
|
Dave Lyons of a bug?
|
|
AFA Parik no, the page is used by a background interrupt.
|
|
Dave Lyons Hmmm....
|
|
AFA Parik (after exiting CDA). it uses Memory Attributees of block may be
|
|
moved or
|
|
AFA Parik purged, and purge level 01.
|
|
WinkieJim That's a no-no...I think
|
|
AFA Parik I've used the WHERE utility of Prosel-16, and the PURGE.MEM.
|
|
It'll get rid of
|
|
AFA Parik it. But gs/os won't! :(
|
|
Dave Lyons You need a way to shut that down nicely before P8 launches.
|
|
AFA Parik ga anyways, message-base discussion is better.
|
|
AFL Dyfet GA Winkie...
|
|
WinkieJim Is there any way you can have your interrupt routine allocate the
|
|
direct page
|
|
WinkieJim itself when it's called so you don;t keep the direct page all the
|
|
time?
|
|
AFA Parik good idea!
|
|
WinkieJim Just a suggestion gs
|
|
WinkieJim ga
|
|
Coach101 You cannot use the MemoryManager at interrupt time... Right?
|
|
AFA Parik wait, that won't work. the sound tool uses a direct page also and
|
|
is left on
|
|
AFA Parik :( ga
|
|
Matt DTS (Wrong.)
|
|
WinkieJim Sorry just a thought...
|
|
AFL Dyfet GA with your comment, A2...
|
|
WinkieJim (i usally just save a few bytes on the direct page and put them
|
|
back when i'm
|
|
WinkieJim done...I know: very dangerous.
|
|
A2GS Without offending Matt, :) can you have the sound tools generate
|
|
interrupts
|
|
A2GS which are vectored to your sound interrupt handling routine which
|
|
allocates
|
|
A2GS or rather sets the DP to your address?
|
|
A2GS Of course the problem then is resetting the DP.
|
|
AFA Parik yes, but the sound tools need a direct page!
|
|
AFA Parik i think i'll leave the sound tools off and try replacing $E1/002C.
|
|
ga with the
|
|
AFA Parik next q
|
|
A2GS Oh, I see...never mind I thought you meant that the sound tools
|
|
needs the DP
|
|
AFL Dyfet Okay, I believe Andy has the next question...GA Andy...
|
|
Andy Stein When I use System 5.0.2 with my Vulcan 40 Megabyte hard drive,
|
|
every once in a
|
|
A2GS during an interrupt. (A2GS<---SMACK)
|
|
Andy Stein while, I find all my files strewn about the directory, in no
|
|
particular order.
|
|
Andy Stein It seems to occur after I've booted a System disk that does not
|
|
have the Vulan
|
|
Andy Stein driver on it. Also, why won't some Prodos 8 and 16 programs run
|
|
properly on it
|
|
Andy Stein ?
|
|
Andy Stein ga
|
|
AFL Dyfet GA A2....
|
|
A2GS You probably have the FINDER info files on the same sys. Disk
|
|
which contains
|
|
A2GS your Vulcan Drivers and when you boot up another disk, the Finder
|
|
can't "FIND"
|
|
A2GS the files. I Think? :) GA
|
|
AFL Dyfet GA Matt...
|
|
Matt DTS Not probable. The Finder only stores info files for a volume on
|
|
that volume, not other volumes.
|
|
Andy Stein Even after, when I boot up with Vulcan, the files are still messed
|
|
up.
|
|
Matt DTS It doesn't, for example, put any information about your hard drive
|
|
on a floppy, or vice versa.
|
|
Matt DTS "strewn about in no particular order"
|
|
Matt DTS Lemme point out that files on ProDOS disks *aren't* in any
|
|
particular order. The Finder will always
|
|
Matt DTS sort them by some criteria, but other directory listers (ProSEL,
|
|
APW/ORCA, BASIC.SYSTEM) don't, so
|
|
Matt DTS they'll seem to be in some weird order. Is this what you're
|
|
seeing?
|
|
Matt DTS (ga)
|
|
AFL Dyfet GA Head...
|
|
Andy Stein I mean, the files aren't in the visual order that they were
|
|
originally in.
|
|
HeadCase Could it be you have the preferences set on one finders not to
|
|
save finder info?
|
|
Andy Stein For example, the AppleWorksGS is moved from the top to the bottom
|
|
left, the
|
|
Andy Stein Xenocide from the bottom to the middle.
|
|
Andy Stein (On the main directory.)
|
|
A2GS That's what the Finder files are used for (among other things)
|
|
AFL Dyfet Coach...
|
|
Coach101 Finder defaults come from the disk that you boot from....
|
|
Coach101 The placement of files on the desktop (if you drag
|
|
Coach101 files to the desktop) come from the device containing the
|
|
files....
|
|
Andy Stein Usually PD disks mess it up, like Bouncing Bluster, and that
|
|
Tertrisosas game.
|
|
Coach101 This can get very confusing if you boot from multiple disks into
|
|
the Finder...
|
|
Coach101 Could some combination of this be the difficulty?
|
|
Andy Stein Yes, Coach, that's exactly what I mean.
|
|
A2GS I know that...but it is possible (although far fetched,
|
|
admittedly) he may have
|
|
A2GS accidently copied the finder files to his sys. disk.
|
|
Andy Stein Some disks only run from their own version of the Finder, and not
|
|
my hard
|
|
Andy Stein disk's.
|
|
A2GS Only thing I can think of...that's why I'm so stubborn :)
|
|
sidley bye folks wierd stuff here...
|
|
AFL Dyfet Perhaps we can move this discussion into the message base...
|
|
Andy Stein I'm afraid to use Bouncing Bluster and Tertosisas, because evry
|
|
time, my
|
|
Andy Stein main directory gets messed up.
|
|
A2GS LOL Andy
|
|
AFL Dyfet Okay, I believe Scott has the next question...
|
|
AFL Scott Has anyone seen problems with self-modifying code on a GS with a
|
|
Transwarp?
|
|
A2GS But only while your using that app. under that SYS. disk, right?
|
|
Coach101 No, but since they hav a cache, it certianly could be a problem!
|
|
AFL Scott Reason I'm asking is that I'm working on a contract where the code
|
|
is
|
|
AFL Dyfet Scott, the Cache may be killing you (as Coach just said)...
|
|
AFL Scott heavily self-modifying and it appears to work on some TWGS's but
|
|
not on
|
|
AFL Scott others.
|
|
AFA Parik turn off interrupts before modifying?
|
|
AFL Dyfet GA Dave...
|
|
AFL Scott I'm aware of that, but one would think that the cache would see a
|
|
miss and
|
|
AFL Scott re-read.
|
|
Dave Lyons Before we jump off the deep end, isn't their cache write-through?
|
|
It's pre-fetching that would kill
|
|
Dave Lyons self-modifying code, and there's enough self-modifying code in the
|
|
Apple II world that
|
|
Dave Lyons I don't see how it can be a problem (I mean, everything would
|
|
break). Including all OS calls
|
|
AFL Dyfet Most self modifying code I have seen does have some distance
|
|
between the
|
|
AFL Dyfet instructions doing the modifying, and the modified
|
|
instruction...
|
|
AFL Dyfet Usually it's a jump address being co-erced further in, or some
|
|
games with an
|
|
AFL Dyfet absolute address being used as a pointer in a LDA/STA...
|
|
Coach101 Scott, you probably need to call AE and get some details on their
|
|
cache implementation.
|
|
Coach101 And let us know what they say!
|
|
AFL Dyfet Scott, also, are you modifying the NEXT instruction to be
|
|
executed, or
|
|
AFL Dyfet something further in the program that comes in later?
|
|
Coach101 I presume all the cards pass AE built-in diagnostics?
|
|
AFA Parik (someone should also tell Zip Chip @ AppleFest just in case)
|
|
AFL Dyfet Another tricky one may be branches...some cache systems try to
|
|
follow both
|
|
AFL Dyfet paths, just in case...
|
|
Coach101 And then there is DMA!
|
|
AFL Dyfet We lost Scott...
|
|
AFL Dyfet Well, without knowing the specific cercumstances, there isn't much
|
|
to speculate
|
|
AFL Dyfet on...A2 has the next question and the floor now...GA A2...
|
|
A2GS Where can I get info on writing decompression routines for the 3
|
|
(I believe)
|
|
A2GS standard $C0 filetypes.
|
|
A2GS ?
|
|
A2GS GA
|
|
AFL Dyfet GA Parik...
|
|
AFA Parik source code is provided in the adv library. i wrote a exe file
|
|
that will unpac
|
|
AFA Parik all three. look for dev util #1 source code. there are also
|
|
others. ga
|
|
A2GS Prefer text.
|
|
AFA Parik (a filetype technote details the exact format if you wish)
|
|
A2GS APW Shell file?
|
|
AFA Parik apw/orca/merlin/prosel
|
|
A2GS Thanx GA
|
|
AFL Dyfet Okay, I believe that Dave Lyons has the next question...GA
|
|
Dave...
|
|
Dave Lyons Oh, hi...wasn't paying
|
|
Dave Lyons attention. :) Anyway, as I was saying
|
|
Dave Lyons before I got so rudely kicked off my connection ("Login failure:
|
|
your account is already
|
|
Dave Lyons logged on."), uh,
|
|
A2GS Dave, just plug it into the wall and turn on the button on the
|
|
back. :)
|
|
Dave Lyons there is self-modifying code
|
|
Dave Lyons in the APW C library routines that make GS/OS calls, so if the
|
|
TWGS didn't deal with
|
|
Dave Lyons self-modifying code, I think we'd have noticed it already. ga
|
|
Coach101 It may have to do with the spacing between the
|
|
Coach101 modification and the modifier and how recently
|
|
Coach101 the modified element was cached....
|
|
AFL Dyfet Considering how many 'esoteric' coding practices have been used in
|
|
the history
|
|
AFL Dyfet of Apple II programming, I suspect you are correct, Dave :)...but
|
|
it would have
|
|
AFL Dyfet been helpful to know the exact circumstances he was working
|
|
with...
|
|
Dave Lyons FYI, the self-
|
|
Dave Lyons mod code in the library is STA blah, JSL $E100A8, blah(word).
|
|
It's very near-by in
|
|
Dave Lyons memory, but then it isn't actually fetched for a while. Hmmm.
|
|
AFL Dyfet Dave, that's near, but not as near as INC blah, LDA #blah, for
|
|
example :)
|
|
Dave Lyons (What? INC Blah+1, Blah: LDA #blarg ?)
|
|
AFL Dyfet Yes...
|
|
Dave Lyons Well, I have no TWGS here at home...somebody try it.
|
|
A2GS Why not just INC Blah ?
|
|
AFA Parik will try, brb
|
|
Dave Lyons (Because INC Blah would make the LDA # into a TAX. :)
|
|
A2GS Blah could be holding a number.
|
|
AFL Dyfet That would also be self modifying, A2 :)...
|
|
AFL Dyfet But it would be the LDA that is modified :)
|
|
A2GS Just the fact that the number at blah is incremented...means that
|
|
blah is being
|
|
A2GS modified.
|
|
A2GS blah doesn't have to be an op-code.
|
|
Dave Lyons Oh, I see what you're saying...I guess the idea
|
|
Dave Lyons is that if there's a problem with self-mod code, it's because of
|
|
the processor (or its close
|
|
Dave Lyons friends) fetching *instructions* ahead, but always doing a real
|
|
memory or cache access for data,
|
|
Dave Lyons since it *expects* that data changes. Yes?
|
|
AFL Dyfet Yes, basically, Dave...I've seen MUCH WORSE problems on heavily
|
|
cached RISC
|
|
AFL Dyfet machines, for example :)
|
|
A2GS couldn't be, otherwise there would be a potential problem with any
|
|
INC op.
|
|
AFL Dyfet Well, now that Scott is back, we may find out just what he was
|
|
modifying :)
|
|
AFL Scott Dave, I was wondering if you could explain your use of
|
|
Pre-Fetched.
|
|
AFL Scott (I'm sorry, I was bumped and the system wouldn't let me sign back
|
|
on until
|
|
AFL Scott the darn in use flag was cleared).
|
|
AFA Parik (it blew my motherboard! :) just kidding, worked fine)
|
|
Dave Lyons (Me, right?)
|
|
AFL Scott Right, Dave Lyons.
|
|
Dave Lyons What I was saying is that a write-through cache, like I believe
|
|
the TWGS has,
|
|
Dave Lyons doesn't present a problem, because all stores go
|
|
Dave Lyons to real memory & maybe also to the cache, but they never leave
|
|
outdated information in the
|
|
Dave Lyons cache. Pre-fetching, or pipelining (if I'm using the term
|
|
correctly) would be some
|
|
Dave Lyons additional storage where upcoming instructions are stored, but
|
|
which *isn't* updated on writes. THAT
|
|
Dave Lyons would be a problem, but as far as I know the TWGS does NOT
|
|
implement anything like that. (I
|
|
Dave Lyons hypothesize that if it *did*, life would be very bad for a lot of
|
|
existing Apple II software. But
|
|
Dave Lyons I could be wrong.)
|
|
Dave Lyons ga
|
|
AFL Dyfet While performing the write to real memory (for the write-through),
|
|
the TW may
|
|
AFL Dyfet still acknowledge CPU requests from memory pre-fetched, HOWEVER,
|
|
it may not
|
|
AFL Dyfet immediately update the cache memory as well, since that would
|
|
waste an extra
|
|
AFL Dyfet (7mhz) cycle...this is typical in many RISC caching systems...
|
|
Dave Lyons Can you suggest a test that would resolve the question?
|
|
Matt DTS I think I'm gonna take off. G'night, all.
|
|
AFL Scott Thanks, Dave and David. A test.. yeah.
|
|
AFL Dyfet Try the inc BLAH, blah: lda #0, and see if a TAX was executed
|
|
before a brk :)
|
|
AFL Scott And I've done it... it works on my machine but has problems on
|
|
others.
|
|
AFL Dyfet (in other words, LDX #0, LDA #1, INC BLAH blah: LDA #0,
|
|
BRK...:)
|
|
AFL Scott See, I have a problem with self modifying code in terms of
|
|
reliability and
|
|
AFL Scott maintainability in APPLICATIONS.
|
|
A2GS Are we still on blah?
|
|
AFL Dyfet (wwops, make that LDA #0, LDX #1 :)
|
|
Dave Lyons Scott, on the machines where it
|
|
Dave Lyons malfunctions, does disabling the TWGS solve the problem?
|
|
AFL Scott Yes and no... The problems seem to stem from timing. So, when the
|
|
machine is
|
|
AFL Scott in Slow, it works. This isn't acceptable to me... Additional
|
|
problems surface
|
|
AFL Scott when Sane calls are caught by the FPE init ( I haven't seen those
|
|
either).
|
|
Dave Lyons Is any of your code getting executed at interrupt time?
|
|
AFL Scott For the record, it's not MY code.... Explain interrupt time.
|
|
Dave Lyons Well, interrupt time is when an interrupt has come along (a
|
|
heartbeat
|
|
Dave Lyons interrupt, sound interrupt, or whatever), but has not yet returned
|
|
control to the code it
|
|
Dave Lyons interrupted. Self-mod code is very scary if you've got any of the
|
|
same code running in the foreground
|
|
Dave Lyons *and* getting called from inside an interrupt...it's very hard to
|
|
be reentrant
|
|
Dave Lyons that way.
|
|
A2GS In other words, are any interrupt handling routines vectored
|
|
toward your code?
|
|
A2GS I believe that's what DAVE is asking, right?
|
|
AFL Scott No, there are no interrupt routines in the code I'm working with.
|
|
Only thing
|
|
AFL Scott that happens is a DMA comes along from a hardware device but that
|
|
is way after
|
|
AFL Scott this code is called.
|
|
Dave Lyons Yes, Thank you, Paul, you've crystalized my thoughts exactly.
|
|
Dave Lyons :)
|
|
A2GS Paul??
|
|
A2GS :)
|
|
Dave Lyons (That's what Letterman sez to Paul all the time)
|
|
A2GS Remind me to listen to Sheaffers return comment :)
|
|
AFL Scott IE... there is no interrupting going on... The DMA call is
|
|
initiated with
|
|
AFL Scott a JSL to the ROM on the Board.
|
|
AFL Scott And I don't see that, either.. but that's what they do...
|
|
Dave Lyons Well Scott, something *weird* is going on in them thar
|
|
machines...hard to tell what it is from
|
|
Dave Lyons here. You've *never* seen a problem w/o a TWGS in there,
|
|
though?
|
|
A2GS What do you expect...it's an Apple :)
|
|
AFL Scott Never. In fact the company I
|
|
AFL Scott am doing this for is recommending pulling the TWGS, and I find
|
|
that
|
|
AFL Scott an unacceptable compromised.
|
|
AFL Scott -d.
|
|
AFL Scott I shouldn't have asked this here, though. I should ask AE.
|
|
AFL Scott Rather I shouldn't have gone this deep.
|