Annotation of hatari/src/includes/acia.h, revision 1.1.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.