Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ML: Annunciators

45 views
Skip to first unread message

Peter Geelhoed

unread,
Dec 15, 2001, 6:07:35 AM12/15/01
to
Hi

I have a question about the annunciators, for a Emacs utility
Carsten and I want to temporarily set the alarm annunciator.
The annunciator should be on after the code finishes.
I know that the left and right shift anns and the alpha ann can
be set with the SysRPL commands SetLeftAnn, SetAlphaAnn etc
I want to know how to do the same with the other annunciators.
I seem to remember an old 48 virus that turned them all on
permanently, so it should be possible.

Any suggestions?

--
This message was written with 100% recycled electrons

Pivo


Jonathan Busby

unread,
Dec 15, 2001, 3:42:59 PM12/15/01
to
On Sat, 15 Dec 2001 12:07:35 +0100, Peter Geelhoed
<p.f.ge...@student.tnw.tudelft.nl> wrote:

>Hi
>
>I have a question about the annunciators, for a Emacs utility
>Carsten and I want to temporarily set the alarm annunciator.
>The annunciator should be on after the code finishes.
>I know that the left and right shift anns and the alpha ann can
>be set with the SysRPL commands SetLeftAnn, SetAlphaAnn etc
>I want to know how to do the same with the other annunciators.
>I seem to remember an old 48 virus that turned them all on
>permanently, so it should be possible.
>
>Any suggestions?

Setting the alert annunciator is a little tricky owing to the fact
that whenever there is an interrupt the interrupt system will turn off
the alert annunciator if there are no low battery conditions or past
due alarms. The key to solving this problem is the last part of the
previous sentence : that is, we must fool the system into thinking
there is a past due alarm.

Here is the small code object that does the trick. It works on my
48GX-R. Hopefully I haven't made any mistakes with regard to the 49
ram addresses :). :

CODE

PASTDUE EQU #80EF2
ANNUNCIATORS EQU #80F00

** Set the past due alarm flag.
LC(5) PASTDUE
CD0EX
A=0 A
A=A+1 A
DAT0=A 1

** Make sure that the ram variable that reflects the "logical" state
** of the annunciators ( eg. the annunciators that the key handling
** system "knows" should be active because of the current shift
** plane. ) reflects the actual state. ( otherwise they will be turned
** off after the first interrupt or call to SHUTDN ( which is called
** indirectly via GetKeyOb ) . )
D0=(5) ANNUNCIATORS
A=A+CON A, 7
DAT0=A B

** Turn on the alert annunciator.
D0=(5) =ANNCTRL
DAT0=A 1

CD0EX
GOVLNG =Loop
ENDCODE


Here is the code object that undoes the work of the above :

CODE

PASTDUE EQU #80EF2
ANNUNCIATORS EQU #80F00

LC(5) PASTDUE
CD0EX
A=0 A
DAT0=A 1

D0=(5) ANNUNCIATORS
DAT0=A B

D0=(5) =ANNCTRL
DAT0=A 1

CD0EX
GOVLNG =Loop
ENDCODE


Hope this helps...

-------------------------------------------------------------------------------

Jonathan Busby - <j...@SNMAPOhouston.rr.com>

Remove the random permutation of "NOSPAM" from my e-mail address
before replying.

Peter Geelhoed

unread,
Dec 15, 2001, 4:42:39 PM12/15/01
to

Jonathan Busby schreef:

> >Any suggestions?


>
> Here is the small code object that does the trick.

Excellent! This is exactly what I was looking for
I couldn''t figure out how to tell the OS that it should't
turn off the annunciator

Thanks a bunch!

0 new messages