Annotation of ntddk/src/video/miniport/wdvga/i386/wdhard.asm, revision 1.1

1.1     ! root        1:         title  "Wd Hard.asm"
        !             2: ;++
        !             3: ;
        !             4: ; Copyright (c) 1992  Microsoft Corporation
        !             5: ; Copyright (c) 1993  Western Digital Corporation
        !             6: ;
        !             7: ; Module Name:
        !             8: ;
        !             9: ;     vgahard.asm
        !            10: ;
        !            11: ; Abstract:
        !            12: ;
        !            13: ;     This module implements the baning code for the WD90Cxx.
        !            14: ;
        !            15: ; Environment:
        !            16: ;
        !            17: ;    Kernel mode only.
        !            18: ;
        !            19: ; Author:
        !            20: ;
        !            21: ;    Chung-I Chiang, Harold Huang      Western Digital Corporation
        !            22: ;
        !            23: ; Revision History:
        !            24: ;
        !            25: ;
        !            26: ;--
        !            27: 
        !            28: .386p
        !            29:         .xlist
        !            30: include callconv.inc                    ; calling convention macros
        !            31:         .list
        !            32: 
        !            33: ;---------------------------------------
        !            34: ;
        !            35: ; Western Digital banking control port.
        !            36: ;
        !            37: 
        !            38: SEGMENT_SELECT_PORT equ     03ceh      ;banking control here
        !            39: SEQ_ADDRESS_PORT equ        03C4h      ;Sequencer Address register
        !            40: WD_PR0A          equ        09h
        !            41: WD_PR0B          equ        0Ah
        !            42: IND_MEMORY_MODE  equ        04h        ;Memory Mode register index in Sequencer
        !            43: CHAIN4_MASK      equ        08h        ;Chain4 bit in Memory Mode register
        !            44: 
        !            45: 
        !            46: _TEXT   SEGMENT DWORD USE32 PUBLIC 'CODE'
        !            47:         ASSUME  CS:FLAT, DS:FLAT, ES:FLAT, SS:NOTHING, FS:NOTHING, GS:NOTHING
        !            48: 
        !            49:         page ,132
        !            50:         subttl  "Bank Switching Stub"
        !            51: 
        !            52: ;
        !            53: ;    Bank switching code. This is a 1-64K-read/1-64K-write bank adapter
        !            54: ;    (VideoBanked1R1W).
        !            55: ;
        !            56: ;    Input:
        !            57: ;          EAX = desired read bank mapping
        !            58: ;          EDX = desired write bank mapping
        !            59: ;
        !            60: ;    Note: values must be correct, with no stray bits set; no error
        !            61: ;       checking is performed.
        !            62: ;
        !            63:        public _BankSwitchStart
        !            64:        public _BankSwitchEnd
        !            65: 
        !            66:         align 4
        !            67: 
        !            68: _BankSwitchStart proc ;start of bank switch code
        !            69: 
        !            70:        push    ebx                     
        !            71:        push    eax
        !            72:        push    edx
        !            73:        mov     dx,SEGMENT_SELECT_PORT
        !            74:        in      al,dx
        !            75:        mov     ebx,eax         ;must save 3CE current index
        !            76:        pop     edx
        !            77:        pop     eax
        !            78: 
        !            79:        push    edx
        !            80:        shl     eax,12                  ;read bank in PRO0A
        !            81:        mov     al,WD_PR0A
        !            82:        mov     dx,SEGMENT_SELECT_PORT
        !            83:        out     dx,ax
        !            84:        pop     edx
        !            85: 
        !            86:        mov     eax,edx
        !            87:        shl     eax,12                  ;write bank in PRO0B
        !            88:        mov     al,WD_PR0B
        !            89:        mov     dx,SEGMENT_SELECT_PORT
        !            90:        out     dx,ax
        !            91: 
        !            92:        mov     eax,ebx                 ;restore 3CE index
        !            93:        mov     dx,SEGMENT_SELECT_PORT
        !            94:        out     dx,al
        !            95:        pop     ebx
        !            96: 
        !            97:         ret           ; This should be a fatal error ...
        !            98: 
        !            99: _BankSwitchEnd:
        !           100: 
        !           101: _BankSwitchStart endp
        !           102: 
        !           103: _TEXT   ends
        !           104:         end
        !           105: 
        !           106: 
        !           107: 

unix.superglobalmegacorp.com

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