.386p

;****************************************************************************
;
;   (C) Copyright MICROSOFT Corp. 1986-1991
;
;   This file is not normal source because it contains no code, all it has
;   is a binary table which tells EMM386 about which regions of memory
;   betweeen A000:0000 and EFFF:000F need to beexcluded from use by EMM386
;   for things like EMM mapping regions.
;
;   Adaptors on PS/2 machines are often programmable as to which regions
;   of address space ROM and/or RAM on the adaptor may occupy. This table
;   allows EMM386 to read the adaptor configuration and exclude the proper
;   regions. EMM386 is capable of correctly excluding some adaptors on
;   PS/2 machines by employing a memory search, but this causes problems
;   with many adaptors:
;
;       o Some adaptors don't actually start "occupying" the address space
;               they use until they are enabled by a piece of software. This
;               defeats the EMM386 scan because the region looks empty if
;               the adaptor is disabled when WIN386 is started.
;
;       o Some adaptors have a RAM area which is actually a memory mapped
;               control area. The EMM386 scan reads and writes as part of
;               its operation, this can alter the adaptor state and disturb
;               the operation of the adaptor (the IBM 3270 card is an example
;               of an adaptor like this, writing to certain adaptor memory
;               locations causes the 3270 adaptor to try to execute an adaptor
;               command).
;
;       o Some adaptors adress ranges are only partly ocupied at any given time
;               based on the current state of the adaptor.
;
;
;   This table tells EMM386 how to interpret the adaptor POS bytes to determine
;   what regions of address space the adaptor is occupying.
;
;   The memory regions which EMM386 cares about for this are typically between
;   page A0 and page FF. Note that the data structure allows the specification
;   of ANY page number between 0 and FFh though.
;
;   *******************************************************
;   *                                                     *
;   *  Above ability to spec any page in 0-FF range is    *
;   *  difference between table revs 0000h and 0001h      *
;   *                                                     *
;   *******************************************************
;
;   The spec of an adapter range is 4K granular, an adaptor occupies only
;   part of a given 4k page will excluded the entire 4k page.
;
;   The Table is formed like this:
;
;       pPOSCardTable   near pointer to supported options table
;           TotalOptions    dw      ?       ; Number of entries
;           TabelRev        dw      0       ; REV of table definition
;           OptionTables    db      ? DUP(?); Start of OptionStruc structures
;
;   TotalOptions indicates the size of the table. It is the count of how many
;   OptionStruc structures are in the file starting at OptionTables.
;
;   The current TableRev is 0001.
;
;   For each adaptor supported there is an OptionStruc which defines how to
;   exclude the region occupied by the adaptor. The values in these structures
;   are produced by interpreting the information in the @????.ADF file for
;   the adaptor:
;
;       OptionStruc struc
;               OptID       dw      ?       ; 16 bit adaptor ID
;               POS2Mask    db      ?       ; How to interpret POS byte 2
;               POS2Shft    db      ?
;               POS3Mask    db      ?       ; How to interpret POS byte 3
;               POS3Shft    db      ?
;               POS4Mask    db      ?       ; How to interpret POS byte 4
;               POS4Shft    db      ?
;               POS5Mask    db      ?       ; How to interpret POS byte 5
;               POS5Shft    db      ?
;               LookUpCnt   dw      ?       ; Number of entries following
;               LookUpTab   db      ? DUP(?); start of MemAddr Structures
;       OptionStruc ends
;
;       MemAddr struc
;               StartPg     db      ?       ; 0 based Physical page #
;                                           ;   of first 4k page occupied
;                                           ;   by adaptor.
;               PGLen       db      ?       ; Number of 4K pages occupied
;                                           ;   (May be 0).
;       MemAddr ends
;
;   This table describes how to convert the adaptor specific POS bytes
;   into the list of 4k pages to mark as used by this adaptor:
;
;     NOTE: In the following code the normal ">>" C operator IS NOT A SHR, IT
;           IS A ROR.
;
;     if(ThisOptionID == OptionStrPtr->OptID) {
;       LookUpPTR = &OptionStrPtr->LookUpTab; /* point at LookUpTab for adaptor */
;       PgPTR = pPgArray;
;       index  = (POS2Byte & OptionStrPtr->POS2Mask) >> OptionStrPtr->POS2Shft;
;       index |= (POS3Byte & OptionStrPtr->POS3Mask) >> OptionStrPtr->POS3Shft;
;       index |= (POS4Byte & OptionStrPtr->POS4Mask) >> OptionStrPtr->POS4Shft;
;       index |= (POS5Byte & OptionStrPtr->POS5Mask) >> OptionStrPtr->POS5Shft;
;       if(index < LookUpCnt) {
;          LookUpPTR += index;
;          PgPTR += LookUpPTR->StartPg;
;          for(i=0;i < LookUpPTR->PGLen;i++)
;                  *PgPtr++=1;
;       }
;     }
;
;   What is basically going on here is that the POSnMask and POSnShft values
;   specify a combonation of the POS byte bits which produce an index into
;   the LookUpTab MemAddr structure which specifies a region occupied by the
;   adaptor. NOTE THAT THE >> OPERATOR IS ROR NOT SHR!!!!!!! This allows for
;   more flexibility in bit movement.
;   The index variable IS A BYTE, therefore LookUpCnt could be 0FFh at most,
;   but typical values are <= 16. Try to be efficient in forming the index.
;   Don't waste space with lots of invalid entries.
;
;   POS bytes to be ignored are indicated by POSnMask = POSnShft = 0.
;
;   THE POS BYTES NUMBERS IN THIS FILE ARE DIFFERENT THAT THE POS BYTE NUMBERS
;   SPECIFIED IN THE .ADF FILE. THE DELTA IS 2. This is because the numbers in
;   this file are PHYSICAL POS byte numbers. The numbers in the ADF file are
;   logical. PHYSICAL POS bytes 0 and 1 are the adaptor ID POS bytes.
;
;       .ADF file POS   WIN386.PS2 POS
;         byte #           byte #
;     ==================================
;           0                2
;           1                3
;           2                4
;           3                5
;
;   Invalid entries in LookUpTab MemAddr structures should set
;     StartAddr = PGLen = 0.
;
;   NOTE to support adaptors with multiple discontiguous memory use
;   blocks, make more than one entry for the card ID
;
;   Note: Ported from win386 3.0 sources
;
;
;=============================================================================
;==
;==     Change Log:
;==
;==     DATE     TAG            Description
;==     -------- --------       --------------------------------------------
;==     01/21/91 M003           Added an entry for the IBM Artic Adapter
;==                             (@EFF0.ADF). This has been ssynched up from
;==                             the win386 project.
ifdef   DOSV

;       M52-52AT        92-12-24        A. Togami       J5.02D        ;dbcs52at;
;       Internal Fix                                                  ;dbcs52at;
;               exclude Ethernet adapter RAM and XGA adapter RAM.     ;dbcs52at;

;       I61-52AT        93-07-28        A. Togami       J6.10         ;dbcs52at;
;       I63-52AT        94-02-02        A. Togami       J6.30         ;dbcs52at;
;       Maintenance (merged with J5.00 version)                       ;dbcs52at;

endif
;=============================================================================


include vdmseg.inc

LAST    SEGMENT
        assume cs:last

public  PS2DATA
PS2DATA Label   BYTE

ifdef   PS55                                                          ;dbcs52at;
        dw      19 + 4                                                ;dbcs52at;
else                                                                  ;dbcs52at;
        dw      19      ; Total options
endif                                                                 ;dbcs52at;
        dw      0001h   ; Table Rev
;
; AdapterName  "The IBM 3270 Connection Version A"
;
        dw      0E7FFH  ; ID of 3270 card V A
        db      0       ; Ignore all POS bytes
        db      0
        db      0
        db      0
        db      0
        db      0
        db      0
        db      0
        dw      1       ; One entry
        db      0CEh
        db      2
;
; AdapterName "The IBM 3270 Connection Version B"
;
        dw      0E1FFH  ; ID of 3270 card V B
        db      0       ; Ignore POS[2]
        db      0
        db      00011110B
        db      1
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[4]
        db      0
        dw      16      ; 16  entrys
        db      0       ; 0000 invalid
        db      0
        db      0       ; 0001 invalid
        db      0
        db      0       ; 0010 invalid
        db      0
        db      0       ; 0011 invalid
        db      0
        db      0       ; 0100 invalid
        db      0
        db      0CAh    ; 0101 0CA000h- 0CBFFFh
        db      2
        db      0CCh    ; 0110 0CC000h- 0CDFFFh
        db      2
        db      0CEh    ; 0111 0CE000h- 0CFFFFh
        db      2
        db      0D0h    ; 1000 0D0000h- 0D1FFFh
        db      2
        db      0D2h    ; 1001 0D2000h- 0D3FFFh
        db      2
        db      0D4h    ; 1010 0D4000h- 0D5FFFh
        db      2
        db      0D6h    ; 1011 0D6000h- 0D7FFFh
        db      2
        db      0D8h    ; 1100 0D8000h- 0D9FFFh
        db      2
        db      0DAh    ; 1101 0DA000h- 0DBFFFh
        db      2
        db      0DCh    ; 1110 0DC000h- 0DDFFFh
        db      2
        db      0DEh    ; 1111 0DE000h- 0DFFFFh
        db      2
;
; AdapterName  "Ungermann-Bass NICps/2 Ethernet LAN Adapter"
;
;  NOTE: THAT THIS ADAPTOR HAS 2 ENTRIES. One for RAM region, One for ROM
;        region.
;
        dw      0EFF5H  ; ID of UB net card RAM
        db      0       ; Ignore POS[2]
        db      0
        db      10000001B
        db      6
        db      0       ; Ignore POS[4]
        db      0
        db      00010010B
        db      1
        dw      13      ; 13 entrys (last three of normal 16 are invalid)
        db      0C0h    ; 0000  mem 0c0000h-0c7fffh
        db      8
        db      0C8h    ; 0001  mem 0c8000h-0cffffh
        db      8
        db      0       ; 0010 invalid
        db      0
        db      0       ; 0011 invalid
        db      0
        db      0D0h    ; 0100  mem 0d0000h-0d7fffh
        db      8
        db      0D8h    ; 0101  mem 0d8000h-0dffffh
        db      8
        db      0       ; 0110 invalid
        db      0
        db      0       ; 0111 invalid
        db      0
        db      0C0h    ; 1000  mem 0c0000h-0cffffh
        db      16
        db      0       ; 1001 invalid
        db      0
        db      0       ; 1010 invalid
        db      0
        db      0       ; 1011 invalid
        db      0
        db      0D0h    ; 1100  mem 0d0000h-0dffffh
        db      16
                ; NOTE 1110 is "valid" but specifies a range that
                ;    is outside V86 mode addressability.
                ; 1110  mem 0e10000h-0e1ffffh

        dw      0EFF5H  ; ID of UB net card ROM
        db      0       ; Ignore POS[2]
        db      0
        db      0       ; Ignore POS[3]
        db      0
        db      10000001B
        db      5
        db      00001100B
        db      2
        dw      12      ; 12 entrys (last 4 of normal 16 are invalid)
        db      0C0h    ; 0000 mem 0c0000h-0c3fffh
        db      4
        db      0C4h    ; 0001 mem 0c4000h-0c7fffh
        db      4
        db      0C8h    ; 0010 mem 0c8000h-0cbfffh
        db      4
        db      0CCh    ; 0011 mem 0cc000h-0cffffh
        db      4
        db      0       ; 0100 NOTE 0100 is "valid" but specifies a range that
        db      0       ;              is outside V86 mode addressability.
                        ;              mem 0E00000h-0E03fffh
        db      0       ; 0101 invalid
        db      0
        db      0       ; 0110 invalid
        db      0
        db      0       ; 0111 invalid
        db      0
        db      0D0h    ; 1000 mem 0d0000h-0d3fffh
        db      4
        db      0D4h    ; 1001 mem 0d4000h-0d7fffh
        db      4
        db      0D8h    ; 1010 mem 0d8000h-0dbfffh
        db      4
        db      0DCh    ; 1011 mem 0dc000h-0dffffh
        db      4
;
; AdapterName "Ungermann-Bass Net/One PSNIU LAN Adapter"
;
;  NOTE: THAT THIS ADAPTOR HAS 2 ENTRIES.
;
        dw      07012H  ; ID of UB net card shared RAM
        db      01000000b
        db      3
        db      00000111b
        db      0
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      16      ; 16 entrys
        db      0       ; 0000 invalid
        db      0
        db      0       ; 0001 invalid
        db      0
        db      0C8h    ; 0010 Mem 0C8000h-0CFFFFh
        db      8
        db      0       ; 0011 invalid
        db      0
        db      0       ; 0100 invalid
        db      0
        db      0       ; 0101 invalid
        db      0
        db      0D8h    ; 0110 Mem 0D8000h-0DFFFFh
        db      8
        db      0       ; 0111 invalid
        db      0
        db      0       ; 1000 invalid
        db      0
        db      0       ; 1001 invalid
        db      0
        db      0C8h    ; 1010 Mem 0C8000h-0CBFFFh
        db      4
        db      0CCh    ; 1011 Mem 0CC000h-0CFFFFh
        db      4
        db      0       ; 1100 invalid
        db      0
        db      0       ; 1101 invalid
        db      0
        db      0D8h    ; 1110 Mem 0D8000h-0DBFFFh
        db      4
        db      0DCh    ; 1111 Mem 0DC000h-0DFFFFh
        db      4

        dw      07012H  ; ID of UB net card Remote IPL and 3270 emulation
        db      00001100b
        db      7
        db      01110000b
        db      4
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      32      ; 32 entrys
        db      0       ; 00000 These 8 are 3270 disabled remote IPL disabled
        db      0       ;         In this case no additional space is used
        db      0       ; 00001
        db      0
        db      0       ; 00010
        db      0
        db      0       ; 00011
        db      0
        db      0       ; 00100
        db      0
        db      0       ; 00101
        db      0
        db      0       ; 00110
        db      0
        db      0       ; 00111
        db      0
        db      0CEh    ; 01000 These 8 are 3270 enabled remote IPL disabled
        db      2       ;       in this case 3270 window at CE000-CFFFF
        db      0CEh    ; 01001
        db      2       ;
        db      0CEh    ; 01010
        db      2       ;
        db      0CEh    ; 01011
        db      2
        db      0CEh    ; 01100
        db      2
        db      0CEh    ; 01101
        db      2
        db      0CEh    ; 01110
        db      2
        db      0CEh    ; 01111
        db      2
        db      0       ; 10000 Invalid These 8 are 3270 disabled remote IPL
        db      0       ;               enabled in this case RIPL window
        db      0       ; 10001 invalid address is set
        db      0
        db      0C8h    ; 10010 Mem 0C8000h-0C9FFFh
        db      2
        db      0CCh    ; 10011 Mem 0CC000h-0CDFFFh
        db      2
        db      0       ; 10100 invalid
        db      0
        db      0       ; 10101 invalid
        db      0
        db      0D8h    ; 10110 Mem 0D8000h-0D9FFFh
        db      2
        db      0DCh    ; 10111 Mem 0DC000h-0DDFFFh
        db      2
        db      0CCh    ; 11000 These 8 are 3270 enabled remote IPL enabled
        db      4       ;       In this case RIPL window fixed at CC000-CDFFF
        db      0CCh    ; 11001 3270 window fixed at CE000-CFFFF
        db      4
        db      0CCh    ; 11010
        db      4
        db      0CCh    ; 11011
        db      4
        db      0CCh    ; 11100
        db      4
        db      0CCh    ; 11101
        db      4
        db      0CCh    ; 11110
        db      4
        db      0CCh    ; 11111
        db      4
;
; AdapterName "IBM Token-Ring Network Adapter/A"
;
;  NOTE: THAT THIS ADAPTOR HAS 2 ENTRIES. One for RAM region, One for ROM
;        region.
;
        dw      0E000H  ; ID of IBM Token Ring card RAM
        db      00011100B
        db      2
        db      0       ; Ignore POS[3]-[5]
        db      0
        db      0
        db      0
        db      0
        db      0
        dw      8       ; 8 entrys
        db      0C0h    ; 000 MEM 0C0000h - 0C3FFFh
        db      4
        db      0C4h    ; 001 MEM 0C4000h - 0C7FFFh
        db      4
        db      0C8h    ; 010 MEM 0C8000h - 0CBFFFh
        db      4
        db      0CCh    ; 011 MEM 0CC000h - 0CFFFFh
        db      4
        db      0D0h    ; 100 MEM 0D0000h - 0D3FFFh
        db      4
        db      0D4h    ; 101 MEM 0D4000h - 0D7FFFh
        db      4
        db      0D8h    ; 110 MEM 0D8000h - 0DBFFFh
        db      4
        db      0DCh    ; 111 MEM 0DC000h - 0DFFFFh
        db      4

ifndef  PS55                                                          ;dbcs52at;
        dw      0E000H  ; ID of IBM Token Ring card ROM
        db      0       ; Ignore POS[2]
        db      0
        db      0       ; Ignore POS[3]
        db      0
        db      00011110B
        db      1
        db      0       ; Ignore POS[5]
        db      0
        dw      16      ; 16 entrys
        db      0C0h    ; 0000 MEM 0C0000h - 0C1FFFh
        db      2
        db      0C2h    ; 0001 MEM 0C2000h - 0C3FFFh
        db      2
        db      0C4h    ; 0010 MEM 0C4000h - 0C5FFFh
        db      2
        db      0C6h    ; 0011 MEM 0C6000h - 0C7FFFh
        db      2
        db      0C8h    ; 0100 MEM 0C8000h - 0C9FFFh
        db      2
        db      0CAh    ; 0101 MEM 0CA000h - 0CBFFFh
        db      2
        db      0CCh    ; 0110 MEM 0CC000h - 0CDFFFh
        db      2
        db      0CEh    ; 0111 MEM 0CE000h - 0CFFFFh
        db      2
        db      0D0h    ; 1000 MEM 0D0000h - 0D1FFFh
        db      2
        db      0D2h    ; 1001 MEM 0D2000h - 0D3FFFh
        db      2
        db      0D4h    ; 1010 MEM 0D4000h - 0D5FFFh
        db      2
        db      0D6h    ; 1011 MEM 0D6000h - 0D7FFFh
        db      2
        db      0D8h    ; 1100 MEM 0D8000h - 0D9FFFh
        db      2
        db      0DAh    ; 1101 MEM 0DA000h - 0DBFFFh
        db      2
        db      0DCh    ; 1110 MEM 0DC000h - 0DDFFFh
        db      2
        db      0DEh    ; 1111 MEM 0DE000h - 0DFFFFh
        db      2
;
; AdapterName  "IBM Display Adapter 8514/A"
;
;  NOTE: that this adaptor IGNORES all the POS bytes. The 8514 adaptor memory
;       use locations are FIXED and cannot be changed.
;
;  C6800-C7FFF and CA000-CA7FF
;
;  Two entries, one for each block
;
        dw      0EF7FH  ; ID of IBM 8514/A adaptor C6800-C7FFF
        db      0       ; Ignore POS[2]
        db      0
        db      0       ; Ignore POS[3]
        db      0
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      1       ; 1 entry
        db      0C6h
        db      2

        dw      0EF7FH  ; ID of IBM 8514/A adaptor CA000-CA7FF
        db      0       ; Ignore POS[2]
        db      0
        db      0       ; Ignore POS[3]
        db      0
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      1       ; 1 entry
        db      0CAh
        db      1
endif                                                                 ;dbcs52at;
;
; AdapterName  "PC Network Adapter "
;
        dw      0EFEFh  ; ID of PC Network adaptor
        db      00001110b
        db      1
        db      0       ; Ignore POS[3]
        db      0
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      8       ; 8 entrys
        db      0       ; 000 invalid
        db      0
        db      0D0h    ; 001 mem 0D0000h - 0D7FFFh
        db      8
        db      0C8h    ; 010 mem 0C8000h - 0CFFFFh
        db      8
        db      0D8h    ; 011 mem 0D8000h - 0DFFFFh
        db      8
        db      0       ; 100 invalid
        db      0
        db      0D6h    ; 101 mem 0D6000h - 0D7FFFh
        db      2
        db      0CEh    ; 110 mem 0CE000h - 0CFFFFh
        db      2
        db      0DEh    ; 111 mem 0DE000h - 0DFFFFh
        db      2
;
; AdapterName  "3117 Scanner Adapter/A"
;
        dw      0F04FH  ; ID of 3117
        db      11110000b
        db      4
        db      0       ; Ignore POS[3]
        db      0
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      12      ; 12 entrys (last 4 of normal 16 are invalid)
        db      0DCh    ; 0000 mem 0DC000h - 0DDFFFh
        db      2
        db      0DEh    ; 0001 mem 0DE000h - 0DFFFFh
        db      2
        db      0D8h    ; 0010 mem 0D8000h - 0D9FFFh
        db      2
        db      0DAh    ; 0011 mem 0DA000h - 0DBFFFh
        db      2
        db      0D4h    ; 0100 mem 0D4000h - 0D5FFFh
        db      2
        db      0D6h    ; 0101 mem 0D6000h - 0D7FFFh
        db      2
        db      0D0h    ; 0110 mem 0D0000h - 0D1FFFh
        db      2
        db      0D2h    ; 0111 mem 0D2000h - 0D3FFFh
        db      2
        db      0CCh    ; 1000 mem 0CC000h - 0CEFFFh
        db      3
        db      0CEh    ; 1001 mem 0CE000h - 0CFFFFh
        db      2
        db      0C8h    ; 1010 mem 0C8000h - 0C9FFFh
        db      2
        db      0CAh    ; 1011 mem 0CA000h - 0CBFFFh
        db      2
;
; AdapterName  "High Speed Adapter/A"
;
        dw      0E04EH  ; ID of 3117
        db      11110000b
        db      4
        db      0       ; Ignore POS[3]
        db      0
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      12      ; 12 entrys (last 4 of normal 16 are invalid)
        db      0DEh    ; 0000 mem 0DE000h - 0DFFFFh
        db      2
        db      0DCh    ; 0001 mem 0DC000h - 0DDFFFh
        db      2
        db      0DAh    ; 0010 mem 0DA000h - 0DBFFFh
        db      2
        db      0D8h    ; 0011 mem 0D8000h - 0D9FFFh
        db      2
        db      0D6h    ; 0100 mem 0D6000h - 0D7FFFh
        db      2
        db      0D4h    ; 0101 mem 0D4000h - 0D5FFFh
        db      2
        db      0D2h    ; 0110 mem 0D2000h - 0D3FFFh
        db      2
        db      0D0h    ; 0111 mem 0D0000h - 0D1FFFh
        db      2
        db      0CEh    ; 1000 mem 0CE000h - 0CFFFFh
        db      2
        db      0CCh    ; 1001 mem 0CC000h - 0CDFFFh
        db      2
        db      0CAh    ; 1010 mem 0CA000h - 0CBFFFh
        db      2
        db      0C8h    ; 1011 mem 0C8000h - 0C9FFFh
        db      2
;
; AdapterName  "3119 Adapter/A"
;
ifdef   PS55                                                          ;dbcs52at;
        dw      0E04FH  ; ID of 3119                                  ;dbcs52at;
else                                                                  ;dbcs52at;
        dw      0E04EH  ; ID of 3117
endif                                                                 ;dbcs52at;
        db      11110000b
        db      4
        db      0       ; Ignore POS[3]
        db      0
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      12      ; 12 entrys (last 4 of normal 16 are invalid)
        db      0DEh    ; 0000 mem 0DE000h - 0DFFFFh
        db      2
        db      0DCh    ; 0001 mem 0DC000h - 0DDFFFh
        db      2
        db      0DAh    ; 0010 mem 0DA000h - 0DBFFFh
        db      2
        db      0D8h    ; 0011 mem 0D8000h - 0D9FFFh
        db      2
        db      0D6h    ; 0100 mem 0D6000h - 0D7FFFh
        db      2
        db      0D4h    ; 0101 mem 0D4000h - 0D5FFFh
        db      2
        db      0D2h    ; 0110 mem 0D2000h - 0D3FFFh
        db      2
        db      0D0h    ; 0111 mem 0D0000h - 0D1FFFh
        db      2
        db      0CEh    ; 1000 mem 0CE000h - 0CFFFFh
        db      2
        db      0CCh    ; 1001 mem 0CC000h - 0CDFFFh
        db      2
        db      0CAh    ; 1010 mem 0CA000h - 0CBFFFh
        db      2
        db      0C8h    ; 1011 mem 0C8000h - 0C9FFFh
        db      2
;
; AdapterName "3Com EtherLink/MC Ethernet Adapter"
;
        dw      06042h  ; ID
        db      00011000b
        db      3
        db      0       ; Ignore POS[3]
        db      0
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      4       ; 4 entrys
        db      0C0h    ; 00 pos[0]=XXX00XXXb  mem 0c0000h-0C5FFFh
        db      6
        db      0C8h    ; 01 pos[0]=XXX01XXXb  mem 0c8000h-0CDFFFh
        db      6
        db      0D0h    ; 10 pos[0]=XXX10XXXb  mem 0d0000h-0D5FFFh
        db      6
        db      0D8h    ; 11 pos[0]=XXX11XXXb  mem 0d8000h-0DDFFFh
        db      6
;
; AdapterName "ATTACHMATE - Advanced 3270 Adapter/2"
;
        dw      0677Fh  ; ID
        db      0       ; Ignore POS[2]
        db      0
        db      0       ; Ignore POS[3]
        db      0
        db      00011111B
        db      1
        db      0       ; Ignore POS[5]
        db      0
        dw      16      ; 16 entrys NOTE: The low bit is the "mem disabled"
                        ;    bit, by rotating by one, this bit is placed in
                        ;    the high bit. Thus any disabled settings are
                        ;    "out of range" and we correctly ignore them.
        db      0C0h    ; 0000 mem 0C0000h-0C1FFFh
        db      2
        db      0C2h    ; 0001 mem 0C2000h-0C3FFFh
        db      2
        db      0C4h    ; 0010 mem 0C4000h-0C5FFFh
        db      2
        db      0C6h    ; 0011 mem 0C6000h-0C7FFFh
        db      2
        db      0C8h    ; 0100 mem 0C8000h-0C9FFFh
        db      2
        db      0CAh    ; 0101 mem 0CA000h-0CBFFFh
        db      2
        db      0CCh    ; 0110 mem 0CC000h-0CDFFFh
        db      2
        db      0CEh    ; 0111 mem 0CE000h-0CFFFFh
        db      2
        db      0D0h    ; 1000 mem 0D0000h-0D1FFFh
        db      2
        db      0D2h    ; 1001 mem 0D2000h-0D3FFFh
        db      2
        db      0D4h    ; 1010 mem 0D4000h-0D5FFFh
        db      2
        db      0D6h    ; 1011 mem 0D6000h-0D7FFFh
        db      2
        db      0D8h    ; 1100 mem 0D8000h-0D9FFFh
        db      2
        db      0DAh    ; 1101 mem 0DA000h-0DBFFFh
        db      2
        db      0DCh    ; 1110 mem 0DC000h-0DDFFFh
        db      2
        db      0DEh    ; 1111 mem 0DE000h-0DFFFFh
        db      2
;
; IBM Token-Ring Network 16/4 Adapter/A
;
;  NOTE: THAT THIS ADAPTOR HAS 2 ENTRIES. One for RAM region, One for ROM
;        region.
;
ifndef  PS55                                                          ;dbcs52at;
        dw      0E001h  ; ID ROM
        db      0       ; Ignore POS[2]
        db      0
        db      0       ; Ignore POS[3]
        db      0
        db      00011110B
        db      1
        db      0       ; Ignore POS[5]
        db      0
        dw      16      ; 16 entrys
        db      0C0h    ; 0000 MEM 0C0000h - 0C1FFFh
        db      2
        db      0C2h    ; 0001 MEM 0C2000h - 0C3FFFh
        db      2
        db      0C4h    ; 0010 MEM 0C4000h - 0C5FFFh
        db      2
        db      0C6h    ; 0011 MEM 0C6000h - 0C7FFFh
        db      2
        db      0C8h    ; 0100 MEM 0C8000h - 0C9FFFh
        db      2
        db      0CAh    ; 0101 MEM 0CA000h - 0CBFFFh
        db      2
        db      0CCh    ; 0110 MEM 0CC000h - 0CDFFFh
        db      2
        db      0CEh    ; 0111 MEM 0CE000h - 0CFFFFh
        db      2
        db      0D0h    ; 1000 MEM 0D0000h - 0D1FFFh
        db      2
        db      0D2h    ; 1001 MEM 0D2000h - 0D3FFFh
        db      2
        db      0D4h    ; 1010 MEM 0D4000h - 0D5FFFh
        db      2
        db      0D6h    ; 1011 MEM 0D6000h - 0D7FFFh
        db      2
        db      0D8h    ; 1100 MEM 0D8000h - 0D9FFFh
        db      2
        db      0DAh    ; 1101 MEM 0DA000h - 0DBFFFh
        db      2
        db      0DCh    ; 1110 MEM 0DC000h - 0DDFFFh
        db      2
        db      0DEh    ; 1111 MEM 0DE000h - 0DFFFFh
        db      2
endif                                                                 ;dbcs52at;

        dw      0E001h  ; ID RAM
        db      00011110b
        db      1
        db      00001100b
        db      6
        db      0       ; Ignore POS[4]
        db      0
        db      0       ; Ignore POS[5]
        db      0
        dw      57      ; 57 entrys (last 7 of normal 64 are invalid)
   ;8k RAM
        db      0C0h    ; 000000 MEM 0C0000h - 0C1FFFh
        db      2
        db      0C2h    ; 000001 MEM 0C2000h - 0C3FFFh
        db      2
        db      0C4h    ; 000010 MEM 0C4000h - 0C5FFFh
        db      2
        db      0C6h    ; 000011 MEM 0C6000h - 0C7FFFh
        db      2
        db      0C8h    ; 000100 MEM 0C8000h - 0C9FFFh
        db      2
        db      0CAh    ; 000101 MEM 0CA000h - 0CBFFFh
        db      2
        db      0CCh    ; 000110 MEM 0CC000h - 0CDFFFh
        db      2
        db      0CEh    ; 000111 MEM 0CE000h - 0CFFFFh
        db      2
        db      0D0h    ; 001000 MEM 0D0000h - 0D1FFFh
        db      2
        db      0D2h    ; 001001 MEM 0D2000h - 0D3FFFh
        db      2
        db      0D4h    ; 001010 MEM 0D4000h - 0D5FFFh
        db      2
        db      0D6h    ; 001011 MEM 0D6000h - 0D7FFFh
        db      2
        db      0D8h    ; 001100 MEM 0D8000h - 0D9FFFh
        db      2
        db      0DAh    ; 001101 MEM 0DA000h - 0DBFFFh
        db      2
        db      0DCh    ; 001110 MEM 0DC000h - 0DDFFFh
        db      2
        db      0DEh    ; 001111 MEM 0DE000h - 0DFFFFh
        db      2
   ;16k RAM
        db      0C0h    ; 010000 MEM 0C0000h - 0C3FFFh
        db      4
        db      0       ; 010001 Invalid
        db      0
        db      0C4h    ; 010010 MEM 0C4000h - 0C7FFFh
        db      4
        db      0       ; 010011 Invalid
        db      0
        db      0C8h    ; 010100 MEM 0C8000h - 0CBFFFh
        db      4
        db      0       ; 010101 Invalid
        db      0
        db      0CCh    ; 010110 MEM 0CC000h - 0CFFFFh
        db      4
        db      0       ; 010111 Invalid
        db      0
        db      0D0h    ; 011000 MEM 0D0000h - 0D3FFFh
        db      4
        db      0       ; 011001 Invalid
        db      0
        db      0D4h    ; 011010 MEM 0D4000h - 0D7FFFh
        db      4
        db      0       ; 011011 Invalid
        db      0
        db      0D8h    ; 011100 MEM 0D8000h - 0DBFFFh
        db      4
        db      0       ; 011101 Invalid
        db      0
        db      0DCh    ; 011110 MEM 0DC000h - 0DFFFFh
        db      4
        db      0       ; 011111 Invalid
        db      0
   ;32k RAM
        db      0C0h    ; 100000 MEM 0C0000h - 0C7FFFh
        db      8
        db      0       ; 100001 Invalid
        db      0
        db      0       ; 100010 Invalid
        db      0
        db      0       ; 100011 Invalid
        db      0
        db      0C8h    ; 100100 MEM 0C8000h - 0CFFFFh
        db      8
        db      0       ; 100101 Invalid
        db      0
        db      0       ; 100110 Invalid
        db      0
        db      0       ; 100111 Invalid
        db      0
        db      0D0h    ; 101000 MEM 0D0000h - 0D7FFFh
        db      8
        db      0       ; 101001 Invalid
        db      0
        db      0       ; 101010 Invalid
        db      0
        db      0       ; 101011 Invalid
        db      0
        db      0D8h    ; 101100 MEM 0D8000h - 0DFFFFh
        db      8
        db      0       ; 101101 Invalid
        db      0
        db      0       ; 101110 Invalid
        db      0
        db      0       ; 101111 Invalid
        db      0
   ;64k RAM
        db      0C0h    ; 110000 MEM 0C0000h - 0CFFFFh
        db      16
        db      0       ; 110001 Invalid
        db      0
        db      0       ; 110010 Invalid
        db      0
        db      0       ; 110011 Invalid
        db      0
        db      0       ; 110100 Invalid
        db      0
        db      0       ; 110101 Invalid
        db      0
        db      0       ; 110110 Invalid
        db      0
        db      0       ; 110111 Invalid
        db      0
        db      0D0h    ; 111000 MEM 0D0000h - 0DFFFFh
        db      16
;
; M003 - Start
; AdapterName "IBM Realtime Interface Co-processor Multiport/2 or X.25 /2"
;
        dw      0EFF0H  ; ID of 3270 card V A
        db      0       ; Ignore POS[2]
        db      0
        db      00001111B  ; Start addr
        db      0
        db      00000001B  ; > 1Meg memory select
        db      2
        db      00000011B  ; Size, 00 8K, 01 16K, 10 32K, 11 64k
        db      4
        dw      57      ; All high bit set entries are > 1Meg memory configs
                        ;  last 7 entries of normal 64 are invalid
     ;8K
        db      0C0h    ; 0000000 MEM 0C0000h - 0C1FFFh
        db      2
        db      0C2h    ; 0000001 MEM 0C2000h - 0C3FFFh
        db      2
        db      0C4h    ; 0000010 MEM 0C4000h - 0C5FFFh
        db      2
        db      0C6h    ; 0000011 MEM 0C6000h - 0C7FFFh
        db      2
        db      0C8h    ; 0000100 MEM 0C8000h - 0C9FFFh
        db      2
        db      0CAh    ; 0000101 MEM 0CA000h - 0CBFFFh
        db      2
        db      0CCh    ; 0000110 MEM 0CC000h - 0CDFFFh
        db      2
        db      0CEh    ; 0000111 MEM 0CE000h - 0CFFFFh
        db      2
        db      0D0h    ; 0001000 MEM 0D0000h - 0D1FFFh
        db      2
        db      0D2h    ; 0001001 MEM 0D2000h - 0D3FFFh
        db      2
        db      0D4h    ; 0001010 MEM 0D4000h - 0D5FFFh
        db      2
        db      0D6h    ; 0001011 MEM 0D6000h - 0D7FFFh
        db      2
        db      0D8h    ; 0001100 MEM 0D8000h - 0D9FFFh
        db      2
        db      0DAh    ; 0001101 MEM 0DA000h - 0DBFFFh
        db      2
        db      0DCh    ; 0001110 MEM 0DC000h - 0DDFFFh
        db      2
        db      0DEh    ; 0001111 MEM 0DE000h - 0DFFFFh
        db      2
     ;16K
        db      0C0h    ; 0010000 MEM 0C0000h - 0C3FFFh
        db      4
        db      0       ; 0010001 Invalid
        db      0
        db      0C4h    ; 0010010 MEM 0C4000h - 0C7FFFh
        db      4
        db      0       ; 0010011 Invalid
        db      0
        db      0C8h    ; 0010100 MEM 0C8000h - 0CBFFFh
        db      4
        db      0       ; 0010101 Invalid
        db      0
        db      0CCh    ; 0010110 MEM 0CC000h - 0CFFFFh
        db      4
        db      0       ; 0010111 Invalid
        db      0
        db      0D0h    ; 0011000 MEM 0D0000h - 0D3FFFh
        db      4
        db      0       ; 0011001 Invalid
        db      0
        db      0D4h    ; 0011010 MEM 0D4000h - 0D7FFFh
        db      4
        db      0       ; 0011011 Invalid
        db      0
        db      0D8h    ; 0011100 MEM 0D8000h - 0DBFFFh
        db      4
        db      0       ; 0011101 Invalid
        db      0
        db      0DCh    ; 0011110 MEM 0DC000h - 0DFFFFh
        db      4
        db      0       ; 0011111 Invalid
        db      0
    ;32K
        db      0C0h    ; 0100000 MEM 0C0000h - 0C7FFFh
        db      8
        db      0       ; 0100001 Invalid
        db      0
        db      0       ; 0100010 Invalid
        db      0
        db      0       ; 0100011 Invalid
        db      0
        db      0C8h    ; 0100100 MEM 0C8000h - 0CFFFFh
        db      8
        db      0       ; 0100101 Invalid
        db      0
        db      0       ; 0100110 Invalid
        db      0
        db      0       ; 0100111 Invalid
        db      0
        db      0D0h    ; 0101000 MEM 0D0000h - 0D7FFFh
        db      8
        db      0       ; 0101001 Invalid
        db      0
        db      0       ; 0101010 Invalid
        db      0
        db      0       ; 0101011 Invalid
        db      0
        db      0D8h    ; 0101100 MEM 0D8000h - 0DFFFFh
        db      8
        db      0       ; 0101101 Invalid
        db      0
        db      0       ; 0101110 Invalid
        db      0
        db      0       ; 0101111 Invalid
        db      0
    ;64K
        db      0C0h    ; 0110000 MEM 0C0000h - 0CFFFFh
        db      16
        db      0       ; 0110001 Invalid
        db      0
        db      0       ; 0110010 Invalid
        db      0
        db      0       ; 0110011 Invalid
        db      0
        db      0       ; 0110100 Invalid
        db      0
        db      0       ; 0110101 Invalid
        db      0
        db      0       ; 0110110 Invalid
        db      0
        db      0       ; 0110111 Invalid
        db      0
        db      0D0h    ; 0111000 MEM 0D0000h - 0DFFFFh
        db      16

;
; M003 - End
;

ifdef   PS55                                                          ;dbcs52at;

; IBM Token-Ring Network Adapter/A (MMIO only)
        dw      0E000h
        db      000h, 000h, 000h, 000h, 01eh, 001h, 000h, 000h
        dw      00010h
                db      0c1h, 001h, 0c3h, 001h, 0c5h, 001h, 0c7h, 001h
                db      0c9h, 001h, 0cbh, 001h, 0cdh, 001h, 0cfh, 001h
                db      0d1h, 001h, 0d3h, 001h, 0d5h, 001h, 0d7h, 001h
                db      0d9h, 001h, 0dbh, 001h, 0ddh, 001h, 0dfh, 001h

; IBM Token-Ring Network 16/4 Adapter/A (MMIO only)
        dw      0E001h
        db      000h, 000h, 000h, 000h, 01eh, 001h, 000h, 000h
        dw      00010h
                db      0c1h, 001h, 0c3h, 001h, 0c5h, 001h, 0c7h, 001h
                db      0c9h, 001h, 0cbh, 001h, 0cdh, 001h, 0cfh, 001h
                db      0d1h, 001h, 0d3h, 001h, 0d5h, 001h, 0d7h, 001h
                db      0d9h, 001h, 0dbh, 001h, 0ddh, 001h, 0dfh, 001h

; IBM PS/2 Adapter/A for Ethernet Networks (SRAM only)
        dw      0EFD4h
        db      000h, 000h, 01fh, 000h, 000h, 000h, 000h, 000h
        dw      00020h
                db      0c0h, 002h, 0c2h, 002h, 0c4h, 002h, 0c6h, 002h
                db      0c8h, 002h, 0cah, 002h, 0cch, 002h, 0ceh, 002h
                db      0d0h, 002h, 0d2h, 002h, 0d4h, 002h, 0d6h, 002h
                db      0d8h, 002h, 0dah, 002h, 0dch, 002h, 0deh, 002h
                db      0c0h, 004h, 0c2h, 004h, 0c4h, 004h, 0c6h, 004h
                db      0c8h, 004h, 0cah, 004h, 0cch, 004h, 0ceh, 004h
                db      0d0h, 004h, 0d2h, 004h, 0d4h, 004h, 0d6h, 004h
                db      0d8h, 004h, 0dah, 004h, 0dch, 004h, 000h, 000h

; IBM PS/2 Adapter/A for Ethernet Networks (SRAM only)
        dw      0EFD5h
        db      000h, 000h, 01fh, 000h, 000h, 000h, 000h, 000h
        dw      00020h
                db      0c0h, 002h, 0c2h, 002h, 0c4h, 002h, 0c6h, 002h
                db      0c8h, 002h, 0cah, 002h, 0cch, 002h, 0ceh, 002h
                db      0d0h, 002h, 0d2h, 002h, 0d4h, 002h, 0d6h, 002h
                db      0d8h, 002h, 0dah, 002h, 0dch, 002h, 0deh, 002h
                db      0c0h, 004h, 0c2h, 004h, 0c4h, 004h, 0c6h, 004h
                db      0c8h, 004h, 0cah, 004h, 0cch, 004h, 0ceh, 004h
                db      0d0h, 004h, 0d2h, 004h, 0d4h, 004h, 0d6h, 004h
                db      0d8h, 004h, 0dah, 004h, 0dch, 004h, 000h, 000h

; IBM ISDN Adapter
        dw      0EFE0h
        db      000h, 000h, 00fh, 000h, 000h, 000h, 000h, 000h
        dw      00010h
                db      0c0h, 002h, 0c2h, 002h, 0c4h, 002h, 0c6h, 002h
                db      0c8h, 002h, 0cah, 002h, 0cch, 002h, 0ceh, 002h
                db      0d0h, 002h, 0d2h, 002h, 0d4h, 002h, 0d6h, 002h
                db      0d8h, 002h, 0dah, 002h, 0dch, 002h, 0deh, 002h

; IBM PS/2 Adapter/A for Ethernet Networks (SRAM only)
        dw      0EFE5h
        db      000h, 000h, 01ch, 002h, 000h, 000h, 000h, 000h
        dw      00008h
                db      0c0h, 004h, 0c4h, 004h, 0c8h, 004h, 0cch, 004h
                db      0d0h, 004h, 0d4h, 004h, 0d8h, 004h, 0dch, 004h

; XGA Display Adapter/A (MMIO only)
        dw      08FDBh
        db      0f0h, 004h, 000h, 000h, 000h, 000h, 000h, 000h
        dw      00010h
                db      0c1h, 001h, 0c3h, 001h, 0c5h, 001h, 0c7h, 001h
                db      0c9h, 001h, 0cbh, 001h, 0cdh, 001h, 0cfh, 001h
                db      0d1h, 001h, 0d3h, 001h, 0d5h, 001h, 0d7h, 001h
                db      0d9h, 001h, 0dbh, 001h, 0ddh, 001h, 0dfh, 001h

; XGA-2 Display Adapter/A (MMIO only)
        dw      08FDAh
        db      0f0h, 004h, 000h, 000h, 000h, 000h, 000h, 000h
        dw      00010h
                db      0c1h, 001h, 0c3h, 001h, 0c5h, 001h, 0c7h, 001h
                db      0c9h, 001h, 0cbh, 001h, 0cdh, 001h, 0cfh, 001h
                db      0d1h, 001h, 0d3h, 001h, 0d5h, 001h, 0d7h, 001h
                db      0d9h, 001h, 0dbh, 001h, 0ddh, 001h, 0dfh, 001h

endif                                                                 ;dbcs52at;

LAST ENDS
     END
