;--------------------------------------------------------
;intel 8253 init
;--------------------------------------------------------
;8253 init t0 timer
;-----------------------------
_8253_init:
nop
mov al,00110111b
; mov al,00110110b;工作方式设置
mov dx,303h
out dx,al
mov dx,300h;低字节
mov al,00h
;mov al,40h
out dx,al
mov al,40h;高字节
;mov al,9ch
out dx,al
;-----------------------------
;8253 init t1 timer
;-----------------------------
mov al,01110111b
mov dx,303h
out dx,al
mov dx,301h
mov al,00h
out dx,al
mov al,01h
out dx,al
;-----------------------------
;8253 init t2 timer
;-----------------------------
mov al,10110111b
mov dx,303h
out dx,al
mov dx,302h
mov al,00h
out dx,al
mov al,01h
out dx,al
ret
;-----------------------------------------------------
;init 8259 code
;-----------------------------------------------------
init8259 :
nop
mov dx,port_8259_0
mov al,17h
out dx,al
mov dx,port_8259_1
;mov al,00h
mov al,08h ;中断号 08h-0fH
out dx,al
mov al,0fh
out dx,al
;mov al,0feh
mov al,0f0h
out dx,al
; push es
; mov ax,0
; mov es,ax
; mov di,00h
; mov es:[di],offset ISR_8259
; add di,2
; mov es:[di],cs
; pop es
push es
xor ax,ax
mov es,ax
; mov al,00h
; xor ah,ah
; shl ax,1
; shl ax,1
mov ax,20h
mov si,ax
mov ax,nmi_isr
mov [es:si],ax
inc si
inc si
mov bx,cs
mov [es:si],bx
mov ax,24h ;09H interrupt vector
mov si,ax
mov ax,nmi_isr
mov [es:si],ax
inc si
inc si
mov bx,cs
mov [es:si],bx
pop es
nop
sti
ret