Disciple Fuse
Disciple Fuse
blown glass
stuck window
sticking door
6GraylingBarbie
bardab-docqaj-1rIpsy
Hi all,
I'm the guy wrote 'The Disciple PALs finally unveiled' and I found this thread by
accident while trying to figure out why the disciple isn't working on FUSE in 128K
mode.
What an interesting thread , and i was shocked to see my doc referenced.
First, the doc:
1) This was a direct reverse engineer of working PAL chips, put on a logic analyser
by Rudy Biesma, then turned into the equations manually by myself then jedec files
created.
2) All the findings & equations seem to correspond to known info about the disciple
(manual, Ramsoft guide and Rudy's disassembly)
3) The proof however was in real world testing - I repaired a broken disciple by
programming the PAL chips with the jedec files created and it works perfectly on a
128k +2 (grey).
4) There is a typo... N1 should be M1 throughout the doc, but I think you guys
worked that out already
Now, from my reading of this thread and the Rudy disassembly, it seems there is no
way the disciple should work on a 128K (at least no way it should initialise)...
but it does.
The code path just doesn't make sense on a 128K machine at reset time.
Let's change tact - the PlusD uses EXACTLY the same initialisation code, lands in
the same place in the ROM when it unpages itself at reset (location 52) and makes
no attempt (on reset at least) to figure out if it's a 1128K or 48K or 128k
spectrum or which spectrum rom is in.
How does that then work under FUSE ? It's very weird.
It's worth saying that the PlusD does have routines specific to 128K
paging/unpaging but they are only used when the COPY command finishes and the
machine resets after completion.
The PlusD TO_NEW routine essentially jumps to location #C7 on a 128k (reset routine
in the editor ROM) or #11B7 in 48K.
Relevant routines below, but as I said they are NOT called when the system resets.
Regarding the PALs, I suspect the equations are right, and the fact the code exists
in both the +d and Disciple to initialise them suggests that it should be used, so
I don't think this is a problem of paging in the interfaces at the wrong time. That
said, I can't see how it all should work on a 128, but it does. So this can't be a
disciple specific problem, can we trace the +D codepath in FUSE in 128K mode?? I'm
not sure how to do this myself.
It would be great to see Disciple working in 128K models... there are difference
between the interfaces that I've run into in converting a program to load from disc
(specifically the interface 1 hook code #32, which does a RET on the disciple, but
on the PlusD allows any ROM addresss to be called via DE register)
I know this is a horrible kludge, but can we not monitor location #52 on both
inrwefaces and if we have a 128K ROM paged in, simply jump to #00C7 after the OUT
instruction ?
Any thoughts ?
Alan