Re: A86: Port info
[Prev][Next][Index][Thread]
Re: A86: Port info
At 10:29 PM 10/8/97 -0400, you wrote:
>Hello,
> I need some help. Could someone explain how to use the ports in asm?
>More specificly what is the port address and what would I put in for
>xxxx to make both lines active and both lines inactive. Do i need to
>load this information to a register first?
>ld A, xxxx
>ld C, port address
>out (C), A
>
>Or could I just use
>Out (port address), xxxx
>
>Any help would be appreciated.
> -Michael
>P.S. A radio link would be really cool :)
>
>
the link port is port 7, so usually just two lines is the maximum, like so...
ld a,$C0
out (7),a
However, much work has already been done on this, in a few files for the 85.
I'll include a text file that's helpful, I don't want to begin to explain it
/-----------------\
| TI-85 LINK info |
| Port 7 |
\-----------------/
by
Branislav Bozgai
bozgai@svf.stuba.sk
1995
Connector:
---------- _____
Jack 2.5mm stereo | | - GND (Ground)
|_|
|_| - W (White wire)
|_| - R (Red wire)
Electrical performance:
-----------------------
All data are transmitted in binary form - logical '1' or '0'
1 = 5V (4.9V)
0 = 0V
but TI-85 uses 'negative logic' that means: 0 (0V) = active signal
1 (5V) = not active
So when you turn your calculator ON you can measure between W and GND 5V
(also between R and GND 5V) that means everything is in quiet state.
Programming:
------------
Sending:
If you want to make some wire active: OUT(7),$E8 ; W=0, R=1 1
OUT(7),$D4 ; W=1, R=0 2
OUT(7),$FC ; W=0, R=0 0
To deactivate signals: OUT(7),$C0 ; W=1, R=1 3
In assembly (e.g. if I want to make W active): LD A,$E8
OUT (7),A
You can use other numbers to out (but may cause abnormal operation,
I think that I can explain how it works) but TI's system is using only
those above.
Note: Don't forget to out $C0 at the end of transmittion otherwise
both sending and receiving calculators slow down.
TI is using $FC to signalise an error.
Reading: IN A,(7)
AND 3 ; upper bits are not important
CP 3
JR Z, Nothig_is_active ; W=1, R=1
CP 2
JR Z, R_is_active ; W=1, R=0
CP 1
JR Z, W_is_active ; W=0, R=1
CP 0
JR Z, W_and_R_are_active ; W=0, R=0
$C0 = 192 = %11000000
$D4 = 212 = %11010100
$E8 = 232 = %11101000
$FC = 252 = %11111100
All routines related to link port are in ROM page 5.
In TALK I'm using ROM_send_byte and ROM_read_byte routines.
ROM_send_byte is at address: $643B = LD C,A
to $647C = RET
Input: A - byte to send
Destroys: DE, BC, HL
ROM_read_byte is at address: $6559 = LD B,$08
to $65CB = JR $6603
Output: A - received byte
Destroys: DE, BC, HL
But I'm mot calling this routines directly because they both call
function $0A87 (which is error handler I think) which cause crash.
Can somebody help with that?
I've modified them slightly replaced JP to JR and JP $0A87 to RET.
*********************************************************************
There were questions on calc-ti about where can people get from
Dan Eble's ZShell and other asm progs.
So I'm running anonymous FTP server at address:
ftp.svf.stuba.sk
There is directory ti and there you'll find everything you want.
Feel free to upload anything you want into ti/incoming.
I'll move it into readable area within a week.
NOTE:If you can't get connection, the server may be down so please
try later (we are trying to keep it in work non-stop but we have
some problems)
Any comments or questions to this file mail to: bozgai@svf.stuba.sk
or copy to /dev/null :)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Alan Bailey mailto:bailela@charlie.cns.iit.edu
IRC:Abalone Web:http://www.iit.edu/~bailela/
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Follow-Ups:
References: