[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Полные исходники уйдут чуть позже (мыло ёк ещё), а пока:
Есть-ли уверенность что базовый адрес 330?
Можно портвьювером поглядеть для уверенности.
На всякий пожарный вот пример автодетекта по основным адресам, работает железно:
Внимание на CHECKPRESENT
;****************************************************************************
LOAD PROC NEAR
LOAD_BEGIN: MOV DX,OFFSET MESS
MOV AH,09H
INT 21H
MOV SI,80H
LODSB
XOR CH,CH
INC AL
MOV CL,ALSLOOP: LODSB
CMP AL,'/'
JE PRSEARCH
LOOP SLOOP
JMP HELPOUTPRSEARCH: LODSB
OR AL,20H
CMP AL,'u'
JE UNINSTALL
CMP AL,'i'
JE INSTALL
LOOP PRSEARCHHELPOUT: MOV DX,OFFSET HELPMESS
STREXIT: MOV AH,09H
INT 21H
MOV AX,4C01H
INT 21H;****************************************************************************
UNINSTALL: CALL CHECKPRESENT
CMP PRESENT,FALSE
JNE UNINST00
MOV DX,OFFSET NOINSMESS
JMP STREXITUNINST00: MOV AX,352FH
INT 21H
ADD BX,02H
MOV AL,ES:[BX]
CMP AL,'S'
JNE UNINST01
INC BX
MOV AL,ES:[BX]
CMP AL,'S'
JNE UNINST01
INC BX
MOV AL,ES:[BX]
CMP AL,'D'
JNE UNINST01
PUSH DS
MOV AH,REQUEST_AH
MOV AL,GETSTATE_AL
INT 2FH
MOV AH,49H
INT 21H
JNC UNINST02
POP DSUNINST01: MOV DX,OFFSET ERRUNMESS
JMP STREXITUNINST02: MOV AX,252FH
INT 21H
POP DS
MOV DX,OFFSET UNINSMESS
MOV AH,09H
INT 21H
MOV AX,4C00H
INT 21H;****************************************************************************
INSTALL: CALL CHECKPRESENT
CMP PRESENT,FALSE
JE INST00
MOV DX,OFFSET ALREMESS
JMP STREXITINST00: CALL CHECKPORT
CMP BASE_PORT,0
JNE INST01
MOV DX,OFFSET ERRINIMESS
JMP STREXITINST01: PUSH DS
MOV AX,352FH
INT 21H
MOV WORD PTR SAVED_INT,BX
MOV AX,ES
MOV WORD PTR (SAVED_INT+2),AX
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET TSR_VECTOR
MOV AX,252FH
INT 21H
POP DS
MOV DX,OFFSET INSTMESS
MOV AH,09H
INT 21H
MOV DX,OFFSET ENDTSR
SHR DX,4
INC DX
MOV AX,3100H
INT 21H
ENDP;****************************************************************************
CHECKPRESENT PROC NEAR
MOV PRESENT,FALSE
MOV AH,REQUEST_AH
MOV AL,CHECK_AL
INT 2FH
CMP AH,ANSWER_AH
JNE CHKPRES00
MOV PRESENT,TRUECHKPRES00: RET
ENDP;****************************************************************************
CHECKPORT PROC NEAR
MOV BASE_PORT,330H
CALL CHKNUM
JC CHECKPORT00
RETCHECKPORT00: MOV BASE_PORT,300H
CALL CHKNUM
JC CHECKPORT01
RETCHECKPORT01: MOV BASE_PORT,320H
CALL CHKNUM
JC CHECKPORT02
RETCHECKPORT02: MOV BASE_PORT,310H
CALL CHKNUM
JNC CHECKPORT03
MOV BASE_PORT,0CHECKPORT03: RET
ENDP;****************************************************************************
CHKNUM PROC NEAR
MOV DX,BASE_PORT
INC DX
MOV AL,0FFH
OUT DX,ALMOV CX,1000H
TESTIN: IN AL,DX
TEST AL,80H
JNZ CHKNUM00
DEC DX
IN AL,DX
INC DX
LOOP TESTIN
STC
RETCHKNUM00: DEC DX
IN AL,DX
CMP AL,0FEH
JE CHKNUM01
STC
RETCHKNUM01: INC DX
MOV CX,1000HTESTOUT: IN AL,DX
TEST AL,40H
JZ CHKNUM02
LOOP TESTOUT
STC
RETCHKNUM02: MOV AL,0FFH
OUT DX,AL
MOV AL,3FH
OUT DX,AL
CLC
RET
ENDP;****************************************************************************
Удачи.
PS: А в uart-mode переводишь? Карта какая?
E-mail: info@telesys.ru