
Сообщение от
DrPass
Чтобы показывало наличие СОМ-портов, нужно прописать флаги в BIOS Equipment Word, что они установлены.
Не думаю. checkit не смотрит туда, по крайней мере для LPT. Так как LPT в моем B108 оно определяет, в то время как BIOS ничего о LPT не знает. Скопипастил детект из PX-XT BIOS:
Код:
.model tiny
.code
.startup
.8086
xor di, di ; COM port(s) at 40:00 (hex)
mov dx,offset msg_com1
mov ah,9
int 21h
@@com_1:
mov dx, 3FBh ; COM #1 line control reg.
mov al, 00011010b ; 7 bits, even parity
out dx, al ; Reset COM #1 line cont. reg
mov al, 11111111b ; noise pattern
out 0C0h, al ; Write pattern on data buss
in al, dx ; read result from COM #1
cmp al, 00011010b ; Check if serial port exists
jnz @@com_2 ; skip if no COM #1 port
;;; mov word ptr di, 3F8h ; Else save port # in BDA
mov dx, offset found
mov ah,9
int 21h
inc di ; potential COM #2 port
inc di ; is at 40:02 (hex)
jmp at1
@@com_2:
mov dx, offset not_found
mov ah,9
int 21h
at1:
mov dx,offset msg_com1
mov ah,9
int 21h
mov dx, 2FBh ; COM #2 line control reg
mov al, 00011010b ; 7 bits, even parity
out dx, al ; Reset COM #2 line cont. reg
mov al, 11111111b ; noise pattern
out 0C0h, al ; Write pattern on data bus
in al, dx ; read results from COM #2
cmp al, 00011010b ; Check if serial port exists
jnz @@com_done ; skip if no COM #2 port
;;; mov word ptr di, 2F8h ; Else save port # in BDA
mov dx, offset found
mov ah,9
int 21h
inc di ; total number of serial
inc di ; interfaces times two
jmp done
@@com_done:
mov dx, offset not_found
mov ah,9
int 21h
mov ax, di ; Get serial interface count
;;; or [ds:11h], al ; equipment flag
done:
int 20h
msg_com1 db 'COM1 at 0x3F8: $'
msg_com2 db 'COM2 at 0x2F8: $'
found db 'found',13,10,'$'
not_found db 'not found',13,10,'$'
END
Итог: not found