Re: A83: Time on TI-83


[Prev][Next][Index][Thread]

Re: A83: Time on TI-83




I have messed around with such an idea, and you can probably do it with
minimal power.  Basically, when you press [2nd]+[ON] to turn off the calc,
it does this:

ld a, 1
out (3), a
ei
halt
ld a, 11
out (3), a

What that does exactly, is turn off the LCD by writing a 1 to port 3.  Then
it enables interrupts and goes into "halt" mode.  When the Z80 is in "halt"
it will not execute further until an interrupt happens.  As we all know, the
only key on the keypad with an interrupt is the ON key.  Upon pressing [ON],
a interrupt occurs, so the Z80 moves to the next instruction which is to
turn back on the LCD (by writing an 11 to port 3)

It seems weird, but when you turn your calc off, the calc isn't really off.
The RAM is kept alive because of the batteries and the Z80 is still alive,
but just in halt.  The only thing that really happened is the LCD is off.
This shows how much the LCD sucks battery power because you can probably
have your calculator off for a year and it would still work next time you
turned it on.  This means that the Z80 and RAM use very very little battery
power.

I haven't messed with it too much, but I have tried to do other things
besides a halt after turning off the LCD.  For instance, I wrote a 1 to port
3 and then started drawing on the screen, then i went into halt (so it waits
for the [ON] key).  I followed up with a write of 11 to port 3 (to turn the
screen back on) and then BUFCOPY.  So basically, the new rendering I was
looking at was created when the calc was off.

One thing I haven't figured out is how come no other interrupts can trigger
the screen.  What about the 200 times a second timer interrupt?  That
doesn't skip over the halt, which means it probably isn't even running.
I've tried using GETKEY, WAITKEY, READKEY all when the calc is off and it
just turned it back on.  I think I remember even doing direct input and it
still turned on the calc when I wrote to the keypad port (although someone
may want to correct me on that).

Anyways, a good way to implement a clock would be to shut off the LCD, then
just sit in a loop counting.  When the user presses [ON], turn the LCD back
on.  I don't know how to detect the ON key, but I know it can be done.

-Justin Karneges [Infiniti]

>Also, how would you implement *time* on a calcuator? Surally
>it would need to know what day it was! An internal clock
>operating inside some low-power mode using the APD counter?
>
>Quized,
>
>Bill J Ellis
>
>----------------
>Bill James Ellis
>Heriot-Watt University
>
>B.J.Ellis@hw.ac.uk
>http://www.cee.hw.ac.uk/~ceebje/
>