--- np2/romimage/DIPSW.X86 2003/12/10 12:48:08 1.1 +++ np2/romimage/DIPSW.X86 2004/02/07 08:01:28 1.3 @@ -30,8 +30,9 @@ check_p1: shr bl, 1 ; --------------------------------------------------------------------------- -INIT_DIPSW: mov word ptr ds:[DIPSW_1], 0ce7ch - mov byte ptr ds:[DIPSW_3], 05eh +INIT_DIPSW: mov byte ptr ds:[DIPSW_1], 01111100b + mov byte ptr ds:[DIPSW_2], 11000110b + mov byte ptr ds:[DIPSW_3], 11011110b ret @@ -41,19 +42,18 @@ INIT_DIPSW: mov word ptr ds:[DIPSW_1], GET_DIPSW: mov dx, 841eh in al, dx - and al, 0bch - xor al, 004h + and al, 11111100b + or al, 00000010b call xchgbits mov ds:[DIPSW_1], al inc dh in al, dx - and al, 0afh + and al, 11101111b call xchgbits mov ds:[DIPSW_2], al inc dh in al, dx - and al, 03fh - xor al, 008h + and al, 01111111b call xchgbits mov ds:[DIPSW_3], al inc dh @@ -61,66 +61,65 @@ GET_DIPSW: mov dx, 841eh test al, 20h je short sw25ed or byte ptr ds:[DIPSW_2], 08h -sw25ed: - mov dh, 08eh +sw25ed: mov dh, 08eh in al, dx test al, 10h je sw38ed or byte ptr ds:[DIPSW_3], 01h -sw38ed: - ret +sw38ed: ret SET_DIPSW: mov dx, 841eh - mov al, ds:[DIPSW_1] call xchgbits - xor al, 4 - and al, 0bch + and al, 11111100b + mov ah, al + in al, dx + and al, 00000010b ; soundbios + or al, ah call check_p jne short putdipsw1 - or al, 01h + or al, 00000001b putdipsw1: out dx, al inc dh mov al, ds:[DIPSW_2] call xchgbits - and al, 0afh + and al, 11101111b call check_p jne short putdipsw2 - or al, 10h + or al, 00010000b putdipsw2: out dx, al inc dh mov al, ds:[DIPSW_3] call xchgbits - and al, 03fh - xor al, 008h + and al, 01111111b call check_p jne short putdipsw3 - or al, 80h + or al, 10000000b putdipsw3: out dx, al inc dh in al, dx - and al, 05fh + and al, 01011111b test byte ptr ds:[DIPSW_2], 08h je short sw25on - or al, 20h + or al, 00100000b sw25on: call check_p jne putdipsw25 - or al, 80h + or al, 10000000b putdipsw25: out dx, al mov dh, 08eh in al, dx - and al, 6fh + and al, 01101111b test byte ptr ds:[DIPSW_3], 1 je short sw38on - or al, 10h + or al, 00010000b sw38on: call check_p jne putdipsw38 - or al, 80h + or al, 10000000b putdipsw38: out dx, al ret