Re: control of 83 link port


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

Re: control of 83 link port



This has info on setting data lines high.  Hope it helps!
Grant Stockly
gussie@alaska.net

        TI83 LINK PORT
        --------------

        This brief look at the TI-83 link port shows how to access
        the port and use it for basic sending and receiving of bytes of
        data.

        The TI-83 link port uses 2 data lines, D0 & D1, for communicating.
        These data lines are accessed through the B-port of the Z80.
        The symbol BPORT is equated to the correct port value in
        the include file "TI83ASM.INC".

        Note :  THE DATA LINES ARE READ IN AS HIGH (1) WHEN NO
                ACTIVITY IS PRESENT ON THE DATA LINES.

                THE LOWER 2 BITS OF THE B-PORT, BITS 0 AND 1, ARE FOR
                WRITING TO THE DATA LINES.

                BITS 2 AND 3 OF THE B-PORT ARE FOR READING IN THE STATUS
                OF THE DATA LINES.


        Reading the data lines :


                IN      A,(BPORT)       ; READ THE VALUE OF THE B-PORT
                CP      0Ch             ; ANY DATA LINE GO LOW ?
                JR      Z,NO_ACTIVITY   ; IF READ 0Ch THEN NO LINES LOW

                CP      8               ; IS D0 PULLED LOW ?
                JR      Z,D0_LOW        ; YES, BIT 2 = 0 SO D0 IS LOW NOW
               ;
               ; ELSE BIT 3 WAS LOW (ACC=4), SO D1 IS LOW
               ;


        Writing to the data lines :

                There are symbols equated to the correct values
                to "OUT" to the B-PORT for controlling the
                status of the data lines.

                LD      A,D0LD1L
                OUT     (BPORT),A    ; is used for setting D0 low, D1 low

                LD      A,D0LD1H
                OUT     (BPORT),A    ; is used for setting D0 low, D1 high

                LD      A,D0HD1L
                OUT     (BPORT),A    ; is used for setting D0 high, D1 low

                LD      A,D0HD1H
                OUT     (BPORT),A    ; is used for setting D0 high, D1 high


        A few of the TI-83 system routines concerning the link port
        are availble for ASM use. These routines are accessed by making
        a call to the routine _IO_EXEC, with a value stored in the
        byte at ASM_IND_CALL (80C8h).

        _IO_EXEC = 51EFh

        D0LD1L      EQU              0C3h
        D0LD1H      EQU              0C1h
        D0HD1L      EQU              0C2h
        D0HD1H      EQU              0C0h
        BPORT       EQU              0



        ASM_IND_VALUE
        -------------

            19d         REC1STBYTE : This routine goes into idle
                                     or low power mode and waits for
                                     the data lines to change. Then
                                     reads a byte of data using the TI-83
                                     bit protocol. This only reads the 1st
                                     byte of data. The byte is returned
                                     in the accumlator.

            20d         REC1STBYTENC : The same as REC1STBYTE except
                                       that the cursor does not flash.
                                       The byte is returned in the
                                       accumulator.

            22d         RECABYTE     : This routine looks at the data
                                       lines for activity for about
                                       2 seconds and reads in a single
                                       byte of data. If no data is found
                                       an error will be generated.
                                       The byte is returned in the
                                       accumulator.

            11d         SENDABYTE    : This routine sends a byte of
                                       data across the data lines
                                       using the TI-83 bit protocol. If
                                       there is no response within about 2
                                       seconds an error is generated.
                                       The data to be sent needs to be in
                                       the accumulator.


>I need to set the output of the link port on the 83 to both lines high.
>I've tried using the routines for the 82, but this just causes the LCD to
>go blank and the calc to freeze.  Reading the lines works fine however.
>Anybody able to help me with this?
>---
>Andy Johnson


Follow-Ups: