Annotation of hatari/src/includes/acia.h, revision 1.1

1.1     ! root        1: /*
        !             2:   Hatari - acia.h
        !             3: 
        !             4:   This file is distributed under the GNU General Public License, version 2 or at
        !             5:   your option any later version. Read the file gpl.txt for details.
        !             6: */
        !             7: 
        !             8: #ifndef HATARI_ACIA_H
        !             9: #define HATARI_ACIA_H
        !            10: 
        !            11: 
        !            12: typedef struct {
        !            13:        /* MC6850 internal registers */
        !            14:        Uint8           CR;                                     /* Control Register */
        !            15:        Uint8           SR;                                     /* Status Register */
        !            16:        Uint8           TDR;                                    /* Transmit Data Register */
        !            17:        Uint8           RDR;                                    /* Receive Data Register */
        !            18: 
        !            19:        Uint32          TX_Clock;                               /* 500 MHz on ST */
        !            20:        Uint32          RX_Clock;                               /* 500 MHz on ST */
        !            21:        int             Clock_Divider;                          /* 1, 16 or 64 */
        !            22: 
        !            23:        Uint8           FirstMasterReset;                       /* Set to 1 on first use, always 0 after 1st Master Reset */
        !            24:        Uint8           SR_Read;                                /* Set to 1 when SR is read and reset to 0 when RDR is read */
        !            25: 
        !            26:        int             TX_State;
        !            27:        Uint8           TSR;                                    /* Transmit Shift Register */
        !            28:        Uint8           TX_Size;                                /* How many data bits left to transmit in TSR (7/8 .. 0) */
        !            29:        Uint8           TX_Parity;                              /* Current parity bit value for transmit */
        !            30:        Uint8           TX_StopBits;                            /* How many stop bits left to transmit (1 or 2) */
        !            31:        Uint8           TX_EnableInt;                           /* When TDRE goes from 0 to 1 :  0=disable interrupt, 1=enable interrupt */
        !            32:        Uint8           TX_SendBrk;                             /* Send a break bit in idle state */
        !            33: 
        !            34:        int             RX_State;
        !            35:        Uint8           RSR;                                    /* Receive Shift Register */
        !            36:        Uint8           RX_Size;                                /* How many bits left to receive in RSR (7/8 .. 0) */
        !            37:        Uint8           RX_Parity;                              /* Current parity bit value for receive */
        !            38:        Uint8           RX_StopBits;                            /* How many stop bits left to receive (1 or 2) */
        !            39:        Uint8           RX_Overrun;                             /* Set to 1 if previous RDR was not read when RSR is full */ 
        !            40: 
        !            41:        /* Callback functions */
        !            42:        Uint8           (*Get_Line_RX) ( void );                /* Input  : RX */
        !            43:        void            (*Set_Line_TX) ( int val );             /* Output : TX */
        !            44:        void            (*Set_Line_IRQ) ( int val );            /* Output : IRQ */
        !            45: 
        !            46:        void            (*Set_Timers) ( void *pACIA );          /* Start timers to handle RX and TX bits at specified baud rate */
        !            47:        
        !            48:        Uint8           (*Get_Line_CTS) ( void );               /* Input  : Clear To Send (not connected in ST) */
        !            49:        Uint8           (*Get_Line_DCD) ( void );               /* Input  : Data Carrier Detect (not connected in ST) */
        !            50:        void            (*Set_Line_RTS) ( int val );            /* Output : Request To Send (not connected in ST) */
        !            51: 
        !            52:        /* Other variables */
        !            53:        char            ACIA_Name[ 10 ];                        /* IKBD or MIDI */
        !            54: 
        !            55: } ACIA_STRUCT;
        !            56: 
        !            57: 
        !            58: #define                ACIA_MAX_NB             2                       /* 2 ACIAs in the ST */
        !            59: 
        !            60: extern ACIA_STRUCT             ACIA_Array[ ACIA_MAX_NB ];
        !            61: extern ACIA_STRUCT             *pACIA_IKBD;
        !            62: extern ACIA_STRUCT             *pACIA_MIDI;
        !            63: 
        !            64: 
        !            65: 
        !            66: void   ACIA_Init ( ACIA_STRUCT *pAllACIA , Uint32 TX_Clock , Uint32 RX_Clock );
        !            67: void   ACIA_Reset ( ACIA_STRUCT *pAllACIA );
        !            68: void   ACIA_MemorySnapShot_Capture ( bool bSave );
        !            69: 
        !            70: void   ACIA_InterruptHandler_IKBD ( void );
        !            71: void   ACIA_InterruptHandler_MIDI ( void );
        !            72: 
        !            73: void   ACIA_AddWaitCycles ( void );
        !            74: 
        !            75: void   ACIA_IKBD_Read_SR ( void );
        !            76: void   ACIA_IKBD_Read_RDR ( void );
        !            77: void   ACIA_IKBD_Write_CR ( void );
        !            78: void   ACIA_IKBD_Write_TDR ( void );
        !            79: 
        !            80: 
        !            81: 
        !            82: #endif /* ifndef HATARI_ACIA_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.