|
Ah I see... intriguing idea :)
Rereading your original post it should have been quite clear what you wanted.
Unfortunately (as far as I know) Mario is right, there doesn't seem to be a
clean solution other than manipulating the return stack.
I've played around a bit and found the following
(examining h8300-primary-rcx.tcl/OCIAwedge helps a lot):
: MyISR
R> R@ SWAP >R \ get pointer to saved data stack
2 CELLS + @ \ get pointer to saved return stack
\ got R-Stack, now play with it ...
;
That way we can get to the original return stack.
(The original data stack is saved on the private R-stack; it (the orig.DS)
contains the following saved registers (top to bottom): rFWP, rFIP, rRSP )
I assume all that's left to do is manipulate the (original) R stack to
point to ABORT or COLD or something similar; I didn't succeed in this so far
though.
Maybe from the values in the return stack we can also conclude if pbForth was
sitting in the idle loop when the ISR was called; this approach would be quite
version-dependent however.
Greetings,
Alex
|
|
Message is in Reply To:
| | Re: Aborting from ISR
|
| Hi, (...) My questions were a bit ambiguous. I don't want to abort the routine running on the ISR; I want (from the ISR routine) to abort a currently running user routine - eg abort something started from the console. So, for example, if a program (...) (22 years ago, 15-Jul-02, to lugnet.robotics.rcx.pbforth)
|
10 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|