📄 pcic.asm
字号:
; *
; ***********************************************************************
; * Intel Confidential *
; * Copyright (C) Intel Corporation 1994-97 *
; * All Rights Reserved. *
; ***********************************************************************
; ***********************************************************************
; INTEL OEM SOFTWARE LICENSE AGREEMENT
;
; BY USING THIS SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS
; AGREEMENT. DO NOT USE THE SOFTWARE UNTIL YOU HAVE CAREFULLY READ AND AGREED
; TO THE FOLLOWING TERMS AND CONDITIONS. IF YOU DO NOT AGREE TO THE TERMS OF
; THIS AGREEMENT, PROMPTLY RETURN THE SOFTWARE PACKAGE AND ANY ACCOMPANYING
; ITEMS. YOU MUST BE AN ORIGINAL EQUIPMENT MANUFACTURER ("OEM") SYSTEM
; DEVELOPER TO ACQUIRE ANY RIGHTS IN THE SOFTWARE UNDER THIS LICENSE AGREEMENT.
;
; LICENSE: Intel Corporation ("Intel") grants you the non-exclusive and
; royalty-free right to use the enclosed software program ("Software") in
; source code form on the terms set forth below. You will not use, copy,
; modify, rent, sell or transfer the Software or any portion thereof, except
; as provided in this Agreement.
;
; OEM System Developers may:
;
; 1. Copy the Software for support, backup or archival purposes;
; 2. Install or distribute the Software in object code form only;
; 3. Modify and/or use Software source code that Intel directly ships to you
; as an OEM;
; 4. Allow authorized contractors ("Subcontractors") engaged by You for the
; sole purpose of product development work to have access to the Software
; solely for that purpose. Subcontractors do NOT acquire any of the OEM
; rights to the Software provided in this Agreement;
; 5. Install, use, modify, distribute, and/or make or have made derivative
; works based on the Software ("Derivatives") subject to the terms and
; conditions in this Agreement.
;
; RESTRICTIONS:
; YOU WILL NOT:
;
; 1. Copy, disclose or distribute the Software, in whole or in part, except
; as provided for in this Agreement;
; 2. Remove or modify the "Compatibility" module, if any, in the Software or
; in any Derivative work,
; 3. Decompile or reverse engineer any Software delivered in object code form.
;
; TRANSFER: Except as provided above, you may not transfer or disclose the
; Software to another party .
;
; OWNERSHIP AND COPYRIGHT OF SOFTWARE: Title to the Software and all copies
; thereof remain with Intel. The Software is copyrighted and is protected by
; United States and international copyright laws. You will not remove the
; copyright notice from the Software. You agree to prevent any unauthorized
; copying of the Software.
;
; DERIVATIVE WORK: You will not be required to provide Intel with a copy of the
; source or object code for any Derivatives created by You. You are authorized
; to use, market, sell, and/or distribute Derivatives, other than any source
; code for the Software, at your own risk and expense. Title to Derivatives,
; other than the portion of the Derivative consisting of any of the Software,
; shall remain with you.
;
; CONFIDENTIALITY: You will maintain the confidentiality of the source code for
; the Software with at least the same degree of care that you use to protect
; your own confidential and proprietary information, but with no less than a
; reasonable degree under the circumstances. Disclosure will only be made to
; Your employees on a need-to-know basis. Subject to the licenses granted
; hereunder, You agree to maintain the Software source code and all other
; proprietary information relating to the Software in confidence and shall not
; disclose to others any such source code or other Intel proprietary information
; relating to the Software. Any Subcontractors to whom you disclose the source
; code for the Software must sign a written confidentiality agreement which
; contains terms regarding the Software no less restrictive than those set forth
; in this Agreement.
;
; DUAL MEDIA SOFTWARE: If the Software package contains multiple media, you
; may only use the medium appropriate for your system.
;
; WARRANTY: The Software is provided "AS IS". Intel warrants that the media on
; which the Software is furnished will be free from defects in material and
; workmanship for a period of one (1) year from the date of purchase. Upon
; return of such defective media, Intel's entire liability and your exclusive
; remedy shall be the replacement of the Software.
;
; THE ABOVE WARRANTIES ARE THE ONLY WARRANTIES OF ANY KIND GIVEN BY INTEL UNDER
; THIS AGREEMENT. INTEL SPECIFICALLY DISCLAIMS ANY OTHER WARRANTIES, EXPRESS OR
; IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT OR FITNESS
; FOR ANY PARTICULAR PURPOSE.
;
; LIMITATION OF LIABILITY: NEITHER INTEL NOR ITS VENDORS OR AGENTS SHALL BE
; LIABLE FOR ANY LOSS OF PROFITS, LOSS OF USE, LOSS OF DATA, INTERRUPTION OF
; BUSINESS, NOR FOR INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF
; ANY KIND WHETHER UNDER THIS AGREEMENT OR OTHERWISE, EVEN IF ADVISED OF THE
; POSSIBILITY OF SUCH DAMAGES.
;
; TERMINATION OF THIS LICENSE: Intel reserves the right to conduct or have
; conducted audits to verify your compliance with this Agreement. Intel may
; terminate this Agreement at any time if you are in breach of any of its terms
; and conditions. Upon termination, you will immediately destroy, and certify
; in writing the destruction of, the Software or return all copies of the
; Software and documentation to Intel.
;
; U.S. GOVERNMENT RESTRICTED RIGHTS: The Software and documentation were
; developed at private expense and are provided with "RESTRICTED RIGHTS".
; Use, duplication or disclosure by the Government is subject to restrictions
; as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its successor.
;
; EXPORT LAWS: You agree that the distribution and export/re-export of the
; Software is in compliance with the laws, regulations, orders or other
; restrictions of the U.S. Export Administration Regulations.
;
; APPLICABLE LAW: This Agreement is governed by the laws of the State of
; Delaware and the United States, including patent and copyright laws. Any
; claim arising out of this Agreement will be brought in Santa Clara County,
; California.
;*************************************************************************
;
;---------------------------------------------------------------;
; Socket-specific definitions. ;
;---------------------------------------------------------------;
SocketRegisterPort equ 3E0h
StatusRegister equ 01h
PowerRegister equ 02h
ControlRegister equ 03h
WindowRegister equ 06h
StartLowRegister equ 10h
StartHighRegister equ 11h
StopLowRegister equ 12h
StopHighRegister equ 13h
MemoryLowRegister equ 14h
MemoryHighRegister equ 15h
PowerRegister0V equ 40h
PowerRegister5V equ 0F5h
PowerRegister12V equ 0FAh
Power5VRequest equ 5d
Power12VRequest equ 12d
ControlRegisterReset equ 40h
StatusRegisterReady equ 20h
StartHighRegister16bit equ 80h
StopHighRegisterNoWait equ 00h
MemoryWindowAddress equ 0D0h
MemoryWindowMask equ 3FFFh
WindowRegisterDecode12 equ 20h
WindowRegisterEnable0 equ 1h
;---------------------------------------------------------------;
; Timer definitions. ;
;---------------------------------------------------------------;
PowerUpDelay equ 0FFFh
ResetDelay equ 0FFFFh
;---------------------------------------------------------------;
; Return codes. ;
;---------------------------------------------------------------;
ErrorNone equ 00h
ErrorParam equ 03h
;---------------------------------------------------------------;
; This is the structure of the packet sent to the ;
; _FlashDevCompatCheck routine. ;
;---------------------------------------------------------------;
FTLTable STRUC
MediaSize dd ? ; size, in bytes, of the card
MediaBlockSize dd ? ; size, in bytes, of a block pair
MediaBlocks dw ? ; number of blocks on card
MediaType db ? ; WP, suspend capability, memory type
FTLTable ENDS
;---------------------------------------------------------------;
; Structures for low/high byte/word control. ;
;---------------------------------------------------------------;
WordSplit STRUC
Lo dw ?
Hi dw ?
WordSplit ENDS
;---------------------------------------------------------------;
; Code Segment, comes first. ;
;---------------------------------------------------------------;
group DGROUP _DATA, _BSS
_TEXT segment byte public 'CODE'
;---------------------------------------------------------------;
; The window is defined here with the following attributes: ;
; location = address D000h ;
; size = 4KB ;
;---------------------------------------------------------------;
_TEXT ends
;---------------------------------------------------------------;
; Data Segment, comes second. Just one item in here, to track ;
; the window-mapped address of the card. This way, we only have;
; to execute the memory mapping sequence if we need to change ;
; the address (it can be a costly effort as far as performance).;
;---------------------------------------------------------------;
PUBLIC _WindowBaseAddress,_WindowMask
_DATA segment word public 'DATA'
_WindowBaseAddress dw 0D000h
_WindowMask dw 0FFFh
LastWindowAddress dw 0FFFFh
_DATA ends
_BSS segment word public 'BSS'
_BSS ends
;---------------------------------------------------------------;
; Back to the Code Segment. All of this code will precede the ;
; data above. ;
;---------------------------------------------------------------;
_TEXT segment byte public 'CODE'
assume cs:_TEXT,ds:DGROUP
;****************************************************************************
;* _PowerDownSocket
;*
;* FUNCTION:
;* Bring socket Vcc and Vpp voltages down to 0. Called by the application
;* layer.
;*
;* INPUTS:
;* None
;*
;* GLOBALS:
;* None
;*
;* FORMAT:
;* void _PowerDownSocket(VOID)
;*
;* RETURNS:
;* None
;****************************************************************************
_PowerDownSocket proc near
push bp
mov bp,sp
;---------------------------------------------------------------;
; Always a good idea to shut off interrupts when dealing with ;
; a dual-port controller. If this code ever becomes ;
; re-enterable, we could select a register and then lose ;
; control before setting that register's value. Not important ;
; otherwise. ;
;---------------------------------------------------------------;
;cli
;---------------------------------------------------------------;
; Select the power control register and set 0V Vcc/Vpp. ;
;---------------------------------------------------------------;
mov dx, SocketRegisterPort
mov al, PowerRegister
out dx, al
inc dx
mov al, PowerRegister0V
out dx, al
;sti
pop bp
ret
_PowerDownSocket endp
;****************************************************************************
;* _PowerUpSocket
;*
;* FUNCTION:
;* Bring socket power up to requested level, providing necessary delay
;* in order to guarantee power level upon return. Called by the application
;* layer.
;*
;* INPUTS:
;* VoltageLevel
;* ( Power12VRequest | Power5VRequest )
;*
;* GLOBALS:
;* None
;*
;* FORMAT:
;* void _PowerUpSocket(int VoltageLevel)
;*
;* RETURNS:
;* None
;****************************************************************************
_PowerUpSocket proc near
push bp
mov bp,sp
;---------------------------------------------------------------;
; Single parameter to this routine, the voltage value requested.;
;---------------------------------------------------------------;
mov bx, WORD PTR [bp+6]
;---------------------------------------------------------------;
; Power up either 12V for write/erase, or 5V for read. ;
;---------------------------------------------------------------;
;cli
mov dx, SocketRegisterPort
mov al, PowerRegister
out dx, al
cmp bx, Power12VRequest
jne short PowerUpSocket5V
PowerUpSocket12V:
mov al, PowerRegister12V
jmp short PowerUpSocketNow
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -