[Coco] Color BASIC BREAK CHECK RAM hook ($17c)
Christopher R. Hawks
chawks at dls.net
Sat Jun 18 16:21:40 EDT 2022
On Sat, 18 Jun 2022 14:48:01 -0400
Arthur Flexser via Coco <coco at maltedmedia.com> wrote:
> Looks to me like what's being bypassed isn't what you intend.
>
> Your code does the INC $400, then the regular break check processing
> (JMP SAVEDVEC), which ends in an RTS, taking you back to the LEAS 2,S
> that you patched in.. Then you purge the next deeper RTS from the
> stack, bypassing some entirely different ROM code. If you wanted it
> to INC $400 and then return immediately, bypassing normal break key
> processing, you should just put an RTS after the INC $400 and not
> bother saving the old vector.
>
> Art.
>
> On Sat, Jun 18, 2022 at 12:43 PM Allen Huffman via Coco <
> coco at maltedmedia.com> wrote:
>
> > > On Jun 17, 2022, at 12:00 AM, Arthur Flexser via Coco <
> > coco at maltedmedia.com> wrote:
> > >
> > > Did you change RVEC from $167 to the break key hook? Your
> > > listing shows
> > it
> > > as $167 still.
> > >
> > > Art
> >
> >
> > Oops - looks like I pasted the same thing twice. Here is my
> > NOBREAK.ASM attempt. If it’s something super obvious like that, I’d
> > be quite happy.
> >
> >
> > * lwasm nobreak.asm -fbasic -onobreak.bas --map
> >
> > RVEC11 equ $17f break check RAM hook
> >
> > org $3f00
> >
> > init
> > lda RVEC11 get op code
> > sta savedrvec save it
> > ldx RVEC11+1 get address
> > stx savedrvec+1 save it
> >
> > lda #$7e op code for JMP
> > sta RVEC11 store it in RAM hook
> > ldx #newcode address of new code
> > stx RVEC11+1 store it in RAM hook
> >
> > rts done
> >
> > newcode
> > inc $400 inc top left byte of 32-col screen
> > savedrvec rmb 3 call regular RAM hook
> > leas $02,S remove PC from stack
> > rts return back, skipping.
> >
> >
> > --
> > Allen Huffman - PO Box 7634 - Urbandale IA 50323 - 515-999-0227
> > (vmail/TXT only)
> > http://www.subethasoftware.com -
> > https://www.facebook.com/subethasoftware
> >
> >
> >
> > --
> > Coco mailing list
> > Coco at maltedmedia.com
> > https://pairlist5.pair.net/mailman/listinfo/coco
> >
>
I have to differ, Art. If the saved vector starts with JMP, the
code will NOT come back to the LEAS 2,s. JMP does not save a return
address on the stack. So the code will RTS back to the code that called
JSR $017f (and placed a return address on the stack).
Allen's code needs to change the JMP to a JSR. (And do the right
thing if DECB is missing, $17f contains an RTS.)
Christopher R. Hawks
HAWKSoft
--
"The leader of Jamestown was "John Smith" (not his real name), under
whose direction the colony engaged in a number of activities, primarily
related to starving. -- Dave Barry, "Dave Barry Slept
Here" ----------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
More information about the Coco
mailing list