$SAVE NOLIST

/****************************************************************************/
/*                                                                          */
/*                                 DMA.LIT                                  */
/*                                                                          */
/*     LITERALS FOR 82258 (ADMA) AND 80186 (INTEGRATED) DMA CONTROLLERS     */
/*                                                                          */
/*                  LAST UPDATE: MARCH 10, 1988 (21:17:19)                  */
/*                                                                          */
/****************************************************************************/

DECLARE

/****************************************************************************/
/* REGISTER ADDRESSES FOR ADMA ON 186/XXX & 286/XXX PROCESSOR BOARDS AND    */
/* LITERALS FOR THE FIELDS IN THESE REGISTERS                               */
/****************************************************************************/

    /* GENERAL-PURPOSE REGISTERS */

    ADMA_GENERAL_COMMAND                    LITERALLY '00200H',
        ADMA_GCR_CHANNEL_COMMAND_MASK       LITERALLY '007H',
            ADMA_GCR_NOP                    LITERALLY '000H',
            ADMA_GCR_CONTINUE               LITERALLY '001H',
            ADMA_GCR_START_CH_FROM_MEM_SYS  LITERALLY '002H',
            ADMA_GCR_START_CH_FROM_IO_RES   LITERALLY '003H',
            ADMA_GCR_STOP_CH                LITERALLY '004H',
            ADMA_GCR_START_SUBCH            LITERALLY '005H',
            ADMA_GCR_STOP_SUBCH             LITERALLY '006H',
            ADMA_GCR_HALT                   LITERALLY '007H',
        ADMA_GCR_CLEAR_INTERRUPT            LITERALLY '008H',
        ADMA_GCR_APPLIES_TO_CH0             LITERALLY '010H',
        ADMA_GCR_APPLIES_TO_CH1             LITERALLY '020H',
        ADMA_GCR_APPLIES_TO_CH2             LITERALLY '040H',
        ADMA_GCR_APPLIES_TO_CH3             LITERALLY '080H',
    ADMA_GENERAL_STATUS                     LITERALLY '00204H',
        ADMA_GSR_CH0_STATUS_MASK            LITERALLY '00003H',
            ADMA_GSR_CH0_IDLE               LITERALLY '00000H',
            ADMA_GSR_CH0_IDLE_CMD_PENDING   LITERALLY '00001H',
            ADMA_GSR_CH0_PROCESSING_CMD     LITERALLY '00002H',
            ADMA_GSR_CH0_PERFORMING_DMA     LITERALLY '00003H',
        ADMA_GSR_CH0_INTERRUPT_PENDING      LITERALLY '00004H',
        ADMA_GSR_CH0_CONTROL_IN_SYS_MEM     LITERALLY '00008H',
        ADMA_GSR_CH1_STATUS_MASK            LITERALLY '00030H',
            ADMA_GSR_CH1_IDLE               LITERALLY '00000H',
            ADMA_GSR_CH1_IDLE_CMD_PENDING   LITERALLY '00010H',
            ADMA_GSR_CH1_PROCESSING_CMD     LITERALLY '00020H',
            ADMA_GSR_CH1_PERFORMING_DMA     LITERALLY '00030H',
        ADMA_GSR_CH1_INTERRUPT_PENDING      LITERALLY '00040H',
        ADMA_GSR_CH1_CONTROL_IN_SYS_MEM     LITERALLY '00080H',
        ADMA_GSR_CH2_STATUS_MASK            LITERALLY '00300H',
            ADMA_GSR_CH2_IDLE               LITERALLY '00000H',
            ADMA_GSR_CH2_IDLE_CMD_PENDING   LITERALLY '00100H',
            ADMA_GSR_CH2_PROCESSING_CMD     LITERALLY '00200H',
            ADMA_GSR_CH2_PERFORMING_DMA     LITERALLY '00300H',
        ADMA_GSR_CH2_INTERRUPT_PENDING      LITERALLY '00400H',
        ADMA_GSR_CH2_CONTROL_IN_SYS_MEM     LITERALLY '00800H',
        ADMA_GSR_CH3_STATUS_MASK            LITERALLY '03000H',
            ADMA_GSR_CH3_IDLE               LITERALLY '00000H',
            ADMA_GSR_CH3_IDLE_CMD_PENDING   LITERALLY '01000H',
            ADMA_GSR_CH3_PROCESSING_CMD     LITERALLY '02000H',
            ADMA_GSR_CH3_PERFORMING_DMA     LITERALLY '03000H',
        ADMA_GSR_CH3_INTERRUPT_PENDING      LITERALLY '04000H',
        ADMA_GSR_CH3_CONTROL_IN_SYS_MEM     LITERALLY '08000H',
    ADMA_GENERAL_MODE                       LITERALLY '00208H',
        ADMA_GMR_8_BIT_MEM_SYS_BUS          LITERALLY '00000H',
        ADMA_GMR_16_BIT_MEM_SYS_BUS         LITERALLY '00001H',
        ADMA_GMR_8_BIT_IO_RES_BUS           LITERALLY '00000H',
        ADMA_GMR_16_BIT_IO_RES_BUS          LITERALLY '00002H',
        ADMA_GMR_LOCAL_MODE                 LITERALLY '00000H',
        ADMA_GMR_REMOTE_MODE                LITERALLY '00004H',
        ADMA_GMR_CH3_NORMAL                 LITERALLY '00000H',
        ADMA_GMR_CH3_MULTIPLEXOR            LITERALLY '00008H',
        ADMA_GMR_CH0_TWO_CYCLE_TRANSFER     LITERALLY '00000H',
        ADMA_GMR_CH0_ONE_CYCLE_TRANSFER     LITERALLY '00010H',
        ADMA_GMR_CH1_TWO_CYCLE_TRANSFER     LITERALLY '00000H',
        ADMA_GMR_CH1_ONE_CYCLE_TRANSFER     LITERALLY '00020H',
        ADMA_GMR_CH2_TWO_CYCLE_TRANSFER     LITERALLY '00000H',
        ADMA_GMR_CH2_ONE_CYCLE_TRANSFER     LITERALLY '00040H',
        ADMA_GMR_CH3_TWO_CYCLE_TRANSFER     LITERALLY '00000H',
        ADMA_GMR_CH3_ONE_CYCLE_TRANSFER     LITERALLY '00080H',
        ADMA_GMR_PRIORITY_0123F             LITERALLY '00000H',
        ADMA_GMR_PRIORITY_012R3F            LITERALLY '00100H',
        ADMA_GMR_PRIORITY_01R23R            LITERALLY '00200H',
        ADMA_GMR_PRIORITY_0123R             LITERALLY '00300H',
        ADMA_GMR_CH0_INTERRUPT_ENABLED      LITERALLY '00000H',
        ADMA_GMR_CH0_INTERRUPT_DISABLED     LITERALLY '00400H',
        ADMA_GMR_CH1_INTERRUPT_ENABLED      LITERALLY '00000H',
        ADMA_GMR_CH1_INTERRUPT_DISABLED     LITERALLY '00800H',
        ADMA_GMR_CH2_INTERRUPT_ENABLED      LITERALLY '00000H',
        ADMA_GMR_CH2_INTERRUPT_DISABLED     LITERALLY '01000H',
        ADMA_GMR_CH3_INTERRUPT_ENABLED      LITERALLY '00000H',
        ADMA_GMR_CH3_INTERRUPT_DISABLED     LITERALLY '02000H',
        ADMA_GMR_EOD2_PIN_IS_EOD2           LITERALLY '00000H',
        ADMA_GMR_EOD2_PIN_IS_INTOUT         LITERALLY '04000H',
    ADMA_GENERAL_BURST                      LITERALLY '0020AH',
        ADMA_GBR_UNLIMITED_CYCLES           LITERALLY '000H',
    ADMA_GENERAL_DELAY                      LITERALLY '0020CH',
        ADMA_GDR_NO_MINIMUM_DELAY           LITERALLY '000H',

    /* MULTIPLEXOR REGISTERS */

    ADMA_SUBCHANNEL_CONTROL                 LITERALLY '00202H',
    ADMA_INTERRUPT_VECTOR                   LITERALLY '002D8H',
        ADMA_MIVR_VECTOR_MASK               LITERALLY '01FH',
        ADMA_MIVR_VECTOR_INVALID            LITERALLY '080H',
    ADMA_LAST_INTERRUPT_VECTOR              LITERALLY '002DAH',
    ADMA_TABLE_PTR_LOW                      LITERALLY '002F0H',
    ADMA_TABLE_PTR_HIGH                     LITERALLY '002F2H',

    /* CHANNEL REGISTER BLOCK START ADDRESSES */

    ADMA_CH0                                LITERALLY '00210H',
    ADMA_CH1                                LITERALLY '00250H',
    ADMA_CH2                                LITERALLY '00290H',
    ADMA_CH3                                LITERALLY '002D0H',

    /* CHANNEL REGISTER OFFSETS (FROM REGISTER BLOCK START ADDRESSES) */

    ADMA_CHANNEL_STATUS                     LITERALLY '00000H',
        ADMA_CSR_BYTE_COUNT_EXCEEDED        LITERALLY '001H',
        ADMA_CSR_EXTERNALLY_TERMINATED      LITERALLY '002H',
        ADMA_CSR_COMPARE_SUCCEEDED          LITERALLY '004H',
        ADMA_CSR_VERIFY_SUCCEEDED           LITERALLY '008H',
        ADMA_CSR_CH_IN_HALT_MODE            LITERALLY '010H',
        ADMA_CSR_CH_HALTED                  LITERALLY '020H',
        ADMA_CSR_FATAL_ERROR_OCCURRED       LITERALLY '040H',
        ADMA_CSR_MULTIPLEXOR_IDLE           LITERALLY '080H',
    ADMA_DATA_ASSEMBLY                      LITERALLY '00002H',
    ADMA_MASK                               LITERALLY '00004H',
    ADMA_COMPARE                            LITERALLY '00006H',
    ADMA_COMMAND_PTR_LOW                    LITERALLY '00010H',
    ADMA_COMMAND_PTR_HIGH                   LITERALLY '00012H',
    ADMA_SOURCE_PTR_LOW                     LITERALLY '00014H',
    ADMA_SOURCE_PTR_HIGH                    LITERALLY '00016H',
    ADMA_DEST_PTR_LOW                       LITERALLY '00018H',
    ADMA_DEST_PTR_HIGH                      LITERALLY '0001AH',
    ADMA_TRANSLATE_TABLE_PTR_LOW            LITERALLY '0001CH',
    ADMA_TRANSLATE_TABLE_PTR_HIGH           LITERALLY '0001EH',
    ADMA_LIST_PTR_LOW                       LITERALLY '00020H',
    ADMA_LIST_PTR_HIGH                      LITERALLY '00022H',
    ADMA_BYTE_COUNT_LOW                     LITERALLY '00028H',
    ADMA_BYTE_COUNT_HIGH                    LITERALLY '0002AH',
    ADMA_CHANNEL_COMMAND_LOW                LITERALLY '0002CH',
        ADMA_CCRL_SOURCE_IO_RES             LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_SOURCE_MEM_SYS            LITERALLY '00001H', /* TYPE 1 */
        ADMA_CCRL_LEAVE_SOURCE_PTR          LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_DEC_SOURCE_PTR            LITERALLY '00002H', /* TYPE 1 */
        ADMA_CCRL_INC_SOURCE_PTR            LITERALLY '00004H', /* TYPE 1 */
        ADMA_CCRL_NO_SOURCE_PTR             LITERALLY '00006H', /* TYPE 1 */
        ADMA_CCRL_SOURCE_ON_8_BIT_BUS       LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_SOURCE_ON_16_BIT_BUS      LITERALLY '00008H', /* TYPE 1 */
        ADMA_CCRL_DEST_IO_RES               LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_DEST_MEM_SYS              LITERALLY '00010H', /* TYPE 1 */
        ADMA_CCRL_LEAVE_DEST_PTR            LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_DEC_DEST_PTR              LITERALLY '00020H', /* TYPE 1 */
        ADMA_CCRL_INC_DEST_PTR              LITERALLY '00040H', /* TYPE 1 */
        ADMA_CCRL_NO_DEST_PTR               LITERALLY '00060H', /* TYPE 1 */
        ADMA_CCRL_DEST_ON_8_BIT_BUS         LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_DEST_ON_16_BIT_BUS        LITERALLY '00080H', /* TYPE 1 */
        ADMA_CCRL_NO_DATA_CHAINING          LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_LIST_CHAINING             LITERALLY '00100H', /* TYPE 1 */
        ADMA_CCRL_LINKED_LIST_CHAINING      LITERALLY '00200H', /* TYPE 1 */
        ADMA_CCRL_DEST_CHAINING             LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_SOURCE_CHAINING           LITERALLY '00400H', /* TYPE 1 */
        ADMA_CCRL_SYNC_TRANSFER             LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_UNSYNC_TRANSFER           LITERALLY '00400H', /* TYPE 1 */
        ADMA_CCRL_DISABLE_EOD_OUTPUT        LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_ENABLE_EOD_OUTPUT         LITERALLY '00800H', /* TYPE 1 */
        ADMA_CCRL_DISABLE_TERMINATE         LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_ENABLE_TERMINATE          LITERALLY '01000H', /* TYPE 1 */
        ADMA_CCRL_NO_CCRH                   LITERALLY '00000H', /* TYPE 1 */
        ADMA_CCRL_USE_CCRH                  LITERALLY '02000H', /* TYPE 1 */
        ADMA_CCRL_SOURCE_SYNC               LITERALLY '04000H', /* TYPE 1 */
        ADMA_CCRL_DEST_SYNC                 LITERALLY '08000H', /* TYPE 1 */
        ADMA_CCRL_RUN_FREE                  LITERALLY '0C000H', /* TYPE 1 */
        ADMA_CCRL_BYTE_WORD_MULTIPLEX       LITERALLY '04000H', /* TYPE 1 */
        ADMA_CCRL_SINGLE_TRANSFER           LITERALLY '08000H', /* TYPE 1 */
        ADMA_CCRL_BLOCK_MULTIPLEX           LITERALLY '0C000H', /* TYPE 1 */
        ADMA_CCRL_BYTE_COUNT_ZERO           LITERALLY '00001H', /* TYPE 2 */
        ADMA_CCRL_EXTERNAL_TERMINATION      LITERALLY '00002H', /* TYPE 2 */
        ADMA_CCRL_MATCH                     LITERALLY '00004H', /* TYPE 2 */
        ADMA_CCRL_VERIFY                    LITERALLY '00008H', /* TYPE 2 */
        ADMA_CCRL_STRAIGHT_COMPARE          LITERALLY '00000H', /* TYPE 2 */
        ADMA_CCRL_INVERT_BEFORE_COMPARE     LITERALLY '00010H', /* TYPE 2 */
        ADMA_CCRL_NO_INTERRUPT              LITERALLY '00000H', /* TYPE 2 */
        ADMA_CCRL_GENERATE_INTERRUPT        LITERALLY '00400H', /* TYPE 2 */
        ADMA_CCRL_NO_EOD_PULSE              LITERALLY '00000H', /* TYPE 2 */
        ADMA_CCRL_GENERATE_EOD_PULSE        LITERALLY '00800H', /* TYPE 2 */
        ADMA_CCRL_UNCONDITIONAL_STOP        LITERALLY '00000H', /* TYPE 2 */
        ADMA_CCRL_CONDITIONAL_STOP          LITERALLY '01000H', /* TYPE 2 */
        ADMA_CCRL_CONDITIONAL_RJUMP         LITERALLY '02000H', /* TYPE 2 */
        ADMA_CCRL_UNCONDITIONAL_RJUMP       LITERALLY '0200FH', /* TYPE 2 */
        ADMA_CCRL_CONDITIONAL_AJUMP         LITERALLY '03000H', /* TYPE 2 */
        ADMA_CCRL_UNCONDITIONAL_AJUMP       LITERALLY '0300FH', /* TYPE 2 */
    ADMA_CHANNEL_COMMAND_HIGH               LITERALLY '0002EH',
        ADMA_CCRH_DISABLE_MATCHING          LITERALLY '000H',   /* TYPE 1 */
        ADMA_CCRH_ENABLE_MISMATCH           LITERALLY '001H',   /* TYPE 1 */
        ADMA_CCRH_ENABLE_BYTE_MATCH         LITERALLY '002H',   /* TYPE 1 */
        ADMA_CCRH_ENABLE_WORD_MATCH         LITERALLY '003H',   /* TYPE 1 */
        ADMA_CCRH_NO_VERIFY                 LITERALLY '000H',   /* TYPE 1 */
        ADMA_CCRH_VERIFY                    LITERALLY '004H',   /* TYPE 1 */
        ADMA_CCRH_VERIFY_AND_HALT           LITERALLY '008H',   /* TYPE 1 */
        ADMA_CCRH_VERIFY_AND_SAVE           LITERALLY '00CH',   /* TYPE 1 */
        ADMA_CCRH_DISABLE_TRANSLATE         LITERALLY '000H',   /* TYPE 1 */
        ADMA_CCRH_ENABLE_TRANSLATE          LITERALLY '010H',   /* TYPE 1 */
        ADMA_CCRH_DISABLE_UPDATE            LITERALLY '000H',   /* TYPE 1 */
        ADMA_CCRH_ENABLE_UPDATE             LITERALLY '020H',   /* TYPE 1 */

/****************************************************************************/
/* STRUCTURES FOR ADMA CHANNEL PROGRAMS                                     */
/****************************************************************************/

    /* CHANNEL PROGRAM FIELDS FOR (TYPE 1) DMA COMMANDS */

    ADMA_DMA_CMD_FIELDS                     LITERALLY
       'DMA_COMMAND                         WORD_16,
        SOURCE_PTR                          WORD_32,
        DEST_PTR                            WORD_32,
        BYTE_COUNT                          WORD_32,
        STATUS                              WORD_16',

    /* CHANNEL PROGRAM FIELDS FOR (TYPE 1) DMA COMMAND EXTENSIONS */

    ADMA_DMA_CMDX_FIELDS                    LITERALLY
       'DMA_COMMAND_EXTENSION               WORD_16,
        MASK                                WORD_16,
        TRANSLATE_PTR                       WORD_32',

    /* CHANNEL PROGRAM FIELDS FOR (TYPE 1) DMA COMMAND STATUS EXTENSIONS */

    ADMA_DMA_CMDSX_FIELDS                   LITERALLY
       'LAST_SOURCE_PTR                     WORD_32,
        LAST_DEST_PTR                       WORD_32,
        LAST_BYTE_COUNT                     WORD_32',

    /* CHANNEL PROGRAM FIELDS FOR (TYPE 2) STOP COMMAND */

    ADMA_STOP_CMD_FIELDS                    LITERALLY
       'STOP_COMMAND                        WORD_16,
        STOP_DATA_1                         WORD_16,
        STOP_DATA_2                         WORD_16',

    /* CHANNEL PROGRAM FIELDS FOR (TYPE 2) RELATIVE JUMP COMMANDS */

    ADMA_RJUMP_CMD_FIELDS                   LITERALLY
       'RJUMP_COMMAND                       WORD_16,
        RJUMP_OFFSET                        WORD_16,
        RJUMP_FILLER                        WORD_16',

    /* CHANNEL PROGRAM FIELDS FOR (TYPE 2) ABSOLUTE JUMP COMMANDS */

    ADMA_AJUMP_CMD_FIELDS                   LITERALLY
       'AJUMP_COMMAND                       WORD_16,
        AJUMP_LOCATION                      WORD_32',

    /* BASIC CHANNEL PROGRAM (DMA, STOP) STRUCTURE */

    ADMA_BASIC_PROGRAM_DESCR                LITERALLY 'STRUCTURE(
        ADMA_DMA_CMD_FIELDS,
        ADMA_STOP_CMD_FIELDS )',

/****************************************************************************/
/* REGISTER ADDRESSES FOR 80186 (INTEGRATED) DMA CONTROLLER AND LITERALS    */
/* FOR THE FIELDS IN THE COMMAND REGISTER                                   */
/****************************************************************************/

    DMA_CH0_SOURCE_PTR_LOW                  LITERALLY '0FFC0H',
    DMA_CH0_SOURCE_PTR_HIGH                 LITERALLY '0FFC2H',
    DMA_CH0_DEST_PTR_LOW                    LITERALLY '0FFC4H',
    DMA_CH0_DEST_PTR_HIGH                   LITERALLY '0FFC6H',
    DMA_CH0_TRANSFER_COUNT                  LITERALLY '0FFC8H',
    DMA_CH0_COMMAND                         LITERALLY '0FFCAH',

    DMA_CH1_SOURCE_PTR_LOW                  LITERALLY '0FFD0H',
    DMA_CH1_SOURCE_PTR_HIGH                 LITERALLY '0FFD2H',
    DMA_CH1_DEST_PTR_LOW                    LITERALLY '0FFD4H',
    DMA_CH1_DEST_PTR_HIGH                   LITERALLY '0FFD6H',
    DMA_CH1_TRANSFER_COUNT                  LITERALLY '0FFD8H',
    DMA_CH1_COMMAND                         LITERALLY '0FFDAH',

    DMA_TRANSFER_BYTES                      LITERALLY '00000H',
    DMA_TRANSFER_WORDS                      LITERALLY '00001H',
    DMA_STOP_CHANNEL                        LITERALLY '00000H',
    DMA_START_CHANNEL                       LITERALLY '00002H',
    DMA_LEAVE_STOP_BIT                      LITERALLY '00000H',
    DMA_CHANGE_STOP_BIT                     LITERALLY '00004H',
    DMA_DISABLE_TIMER_2_REQUESTS            LITERALLY '00000H',
    DMA_ENABLE_TIMER_2_REQUESTS             LITERALLY '00010H',
    DMA_LOW_PRIORITY_CHANNEL                LITERALLY '00000H',
    DMA_HIGH_PRIORITY_CHANNEL               LITERALLY '00020H',
    DMA_NO_SYNCHRONIZATION                  LITERALLY '00000H',
    DMA_SOURCE_SYNCHRONIZATION              LITERALLY '00040H',
    DMA_DEST_SYNCHRONIZATION                LITERALLY '00080H',
    DMA_DISABLE_CPU_INTERRUPTS              LITERALLY '00000H',
    DMA_ENABLE_CPU_INTERRUPTS               LITERALLY '00100H',
    DMA_IGNORE_TRANSFER_COUNT               LITERALLY '00000H',
    DMA_STOP_ON_TRANSFER_COUNT              LITERALLY '00200H',
    DMA_INCREMENT_SOURCE_PTR                LITERALLY '00400H',
    DMA_DECREMENT_SOURCE_PTR                LITERALLY '00800H',
    DMA_CONSTANT_SOURCE_PTR                 LITERALLY '00C00H',
    DMA_SOURCE_PTR_IN_IO_SPACE              LITERALLY '00000H',
    DMA_SOURCE_PTR_IN_MEMORY                LITERALLY '01000H',
    DMA_INCREMENT_DEST_PTR                  LITERALLY '02000H',
    DMA_DECREMENT_DEST_PTR                  LITERALLY '04000H',
    DMA_CONSTANT_DEST_PTR                   LITERALLY '06000H',
    DMA_DEST_PTR_IN_IO_SPACE                LITERALLY '00000H',
    DMA_DEST_PTR_IN_MEMORY                  LITERALLY '08000H';

$RESTORE
