diff --git a/noyau/souris.asm b/noyau/souris.asm deleted file mode 100644 index ab8b210..0000000 --- a/noyau/souris.asm +++ /dev/null @@ -1,327 +0,0 @@ -.model tiny -.486 -smart -.code -org 0h -start: -jmp tsr -drv db 'MOUSE',0 -Tsr: -cli -cmp ax,1234h -jne nomore -mov ax,4321h -jmp itsok -nomore: -push bx ax -mov ah,4 -mov bh,0 -int 50h -mov bl,al -pop ax -cmp byte ptr cs:isact,1 -je nottest -mov cs:isact,1 -and bl,10000b -cmp bl,16 -jae react -mov bl,ah -xor bh,bh -shl bx,1 -mov bx,cs:[bx].tables -mov cs:current,bx -pop bx -call cs:current -itsok: -jnc noerror -push bp -mov bp,sp -or byte ptr [bp+6],1b -pop bp -mov ax,cs -shl eax,16 -mov ax,cs:current -jmp endofint -noerror: -push bp -mov bp,sp -and byte ptr [bp+6],0FEh -pop bp -endofint: -mov cs:isact,0 -sti -iret -nottest: -pop bx -jmp endofint -current dw 0 -tables dw cmdmouse - dw cmdmouse2 - dw detectmouse - dw getmouse - dw getmousescreen - dw configmouse - -isact db 0 - -;Envoie une commande AL … la souris via controleur clavier -cmdmouse: - push ax -videbuff1: - in al, 64h - and al, 10b - jne videbuff1 - mov al, 00d4h - out 64h, al -videbuff2: - in al, 64h - and al, 10b - jne videbuff2 - pop ax - out 60h, al - in al, 60h - ret - -;Envoie une commande2 AL … la souris via controleur clavier carry=nomouse -cmdmouse2: - push ax -videbuff21: - in al, 64h - and al, 10b - jne videbuff21 - mov al, 0060h - out 64h, al -videbuff22: - in al, 64h - and al, 10b - jne videbuff22 - pop ax - out 60h, al - in al, 60h - ret - -Detectmouse: - push ax cx - mov al, 0a8h ;AUX enable - out 64h, al - mov al, 0f3h ;Set sample - call cmdmouse - mov al, 100 ;Set sample - call cmdmouse - mov al, 0e8h ;Set resolution - call cmdmouse - mov al, 01 ;Set resolution - call cmdmouse - mov al, 0e7h ;Set scale 2:1 - call cmdmouse - mov al, 0f4h ;Enable device - call cmdmouse - mov al, 47h ;Interruption ON - call cmdmouse2 - mov cx, 1024 -testmouse: - in al, 60h ;Lecture du port de donn‚es - cmp al, 250 ;Test si il y a une souris - je okmouse - dec cx - jnz testmouse - stc - jmp endoftest -okmouse: - clc -endoftest: - pop cx ax - ret - -;envoie en bx,cx les coordonn‚es et en dl les boutons -getmouse: -mov bx,cs:rx -mov cx,cs:ry -mov dl,cs:button -sub dl,8 -and dl,0Fh -clc -ret - -;envoie en di les coordonn‚es ecran et en dl les boutons -getmousescreen: -mov di,cs:xy -mov dl,cs:button -sub dl,8 -and dl,0Fh -clc -ret - - -;configure la rapidit‚ dans cl et dans ah,al sphŠre x et y -Configmouse: -mov cs:speed,cl -mov cs:spherex,ah -mov cs:spherey,al -ret - -Button db 0 -rx dw 0 -ry dw 0 -VX db 0 -VY db 0 -X dw 7FFFh -Y dw 7FFFh -speed db 6 -spherex db 0 -spherey db 0 -count db 0 -error db 0 -xy dw 0 -old db 0 -;Gestionnaire de souris PS/2 -react: - push ax bx cx dx di ds es - push cs - pop ds - in al, 60h - cmp error, 1 - je gest1 - cmp count, 1 - je gest1 - cmp count, 2 - je gest2 - cmp count, 3 - je gest3 - -gest1: - mov count, 2 - mov Button, al - and al, 00001000b - cmp al, 8 - je gest1end - mov error, 1 - jmp gest1end2 -gest1end: - mov error, 0 -gest1end2: - mov count, 2 - jmp endgest -gest2: - mov count, 3 - mov VX, al - jmp endgest -gest3: - mov count, 1 - mov VY, al - jmp endgest -endgest: - cmp error,1 - je errormouse - push cs - pop es - mov di,offset infos - mov ah,34 - int 47h - mov cl,speed - movsx bx,VY - shl bx,cl - cmp spherey,0 - jne nolimity - xor ah,ah - mov al,[di] - cmp byte ptr [di+7],4 - jbe text4 - shl ax,3 -text4: - dec ax - cmp bx,0 - jg decy - cmp ry,ax - jae noaddy - jmp nolimity -decy: - cmp ry,0 - je noaddy -nolimity: - sub y,bx -noaddy: - movsx bx,VX - shl bx,cl - cmp spherex,0 - jne nolimitx - xor ah,ah - mov al,[di+1] - cmp byte ptr [di+7],4 - jbe text5 - shl ax,3 -text5: - dec ax - cmp bx,0 - jl decx - cmp rx,ax - jae noaddx - jmp nolimitx -decx: - cmp rx,0 - je noaddx -nolimitx: - add x,bx -noaddx: - mov ax,x - mov bx,0FFFFh - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text1 - shl cx,3 -text1: - mul cx - div bx - mov rx,ax - mov ax,y - xor ch,ch - mov cl,[di] - cmp byte ptr [di+7],4 - jbe text2 - shl cx,3 -text2: - mul cx - div bx - mov ry,ax - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text3 - shl cx,3 -text3: - mul cx - add ax,rx - cmp byte ptr [di+7],4 - mov di,ax - jbe textpoint - mov ax,0A000h - mov es,ax - jmp graphpoint -textpoint: - mov ax,0B800h - mov es,ax - shl di,1 - inc di -graphpoint: - mov bx,xy - cmp byte ptr es:[bx],070h - jne waschanged - mov al,old - mov byte ptr es:[bx],al -waschanged: - mov xy,di - mov al,es:[di] - mov old,al - mov byte ptr es:[di],070h - mov al, 20h - out 0a0h, al - out 20h, al -errormouse: - pop es ds di dx cx bx ax - mov cs:isact,0 - pop bx - iret - infos db 40 dup (0) - -end start