October 10, 2001
On 2001-11-03 03:17, Donan Fear wrote:
On 2001-11-03 03:05, Fiskpinnen wrote:
Dos kan göra mycket.
Själva DOS gör inget förutom att hålla reda på filer och starta program. Sen att DOS-program kan göra mycket har inget med saken att göra.
Jag sitter med Windows98 på min dator bara för att nästan alla spel och program kräver det, Linux har jag inte provat.
Jag tycker att DOS är bra som ett komplement till, i mitt fall då, Windows. I DOS kan man göra saker utan att få en massa jobbiga Windows skydds- eller undantagsfel.
May 24, 2001
Jag har inte sagt att DOS är dåligt eller nåt. Det enda DOS gör är att den lägger lite filsystemsfunktioner vid vissa adresser så du kan öppna filer och sånt. Ingen multitasking, ingen minneshantering, inget som lägger sig i.
Som sagt, det är väldigt svårkrashat när den inte gör nåt egentligen.
Du kör Windows på DOS förresten, inte tvärtom.
"Wow linux är så bra, blablablablabla!" Ähh.. lägg av!
Linux är ett 32-bitars operativsystem, och precis som i alla andra 32-bitars operativsystem kan du inte anropa hårdvaran direkt, utan får gå via drivrutiner, och så håller den på och multitaskar och gör annat dumt i bakgrunden.
Som sagt, DOS är stabilare och man har total frihet när man programmerar.
October 10, 2001
On 2001-11-04 12:49, Donan Fear wrote:
Du kör Windows på DOS förresten, inte tvärtom.
Jodå, det vet jag.
Jag kanske uttryckte mig luddigt bara.
_________________
Hade jag haft en bra dator skulle jag ha skrutit om den här.
[ Detta Inlägg ändrades av: Quaero den 2001-11-04 14:17 ]
August 29, 2001
Tar tillfället i akt, och "snuttar"(såg quaeros sig) in min musAPI...
Här kommer den:
Mouse Function Calls
Complete set of interrupt functions and subfunctions.
Most of this information is retrieved from the shareware utility "HelpPC",
by David Jurgens (CIS 71270,2422).
Collected and uploaded to CIS/MSLANG by:
Ernest Vogelsinger, CIS PPN 100015,551.
03/04/93
----------------------------------------------------------------------
INT 33 - Mouse Function Calls
For more information see the following topics:
INT 33,0 Mouse Reset/Get Mouse Installed Flag
INT 33,1 Show Mouse Cursor
INT 33,2 Hide Mouse Cursor
INT 33,3 Get Mouse Position and Button Status
INT 33,4 Set Mouse Cursor Position
INT 33,5 Get Mouse Button Press Information
INT 33,6 Get Mouse Button Release Information
INT 33,7 Set Mouse Horizontal Min/Max Position
INT 33,8 Set Mouse Vertical Min/Max Position
INT 33,9 Set Mouse Graphics Cursor
INT 33,A Set Mouse Text Cursor
INT 33,B Read Mouse Motion Counters
INT 33,C Set Mouse User Defined Subroutine and Input Mask
INT 33,D Mouse Light Pen Emulation On
INT 33,E Mouse Light Pen Emulation Off
INT 33,F Set Mouse Mickey Pixel Ratio
INT 33,10 Mouse Conditional OFF
INT 33,13 Set Mouse Double Speed Threshold
INT 33,14 Swap interrupt subroutines
INT 33,15 Get mouse driver state and memory requirements
INT 33,16 Save mouse driver state
INT 33,17 Restore mouse driver state
INT 33,18 Set alternate subroutine call mask and address
INT 33,19 Get user alternate interrupt address
INT 33,1A Set mouse sensitivity
INT 33,1B Get mouse sensitivity
INT 33,1C Set mouse interrupt rate (InPort only)
INT 33,1D Set mouse CRT page
INT 33,1E Get mouse CRT page
INT 33,1F Disable mouse driver
INT 33,20 Enable mouse driver
INT 33,21 Reset mouse software
INT 33,22 Set language for messages
INT 33,23 Get language number
INT 33,24 Get driver version, mouse type & IRQ number
- function is specified in AX
- a mickey is 1/200 inches
- for additional information see your vendor documentation
- function number occupies all of AX rather than AH
Mouse functions can be broken down into the following classes:
Mouse Driver Control / Feedback Functions
INT 33,0 Mouse Reset/Get Mouse Installed Flag
INT 33,15 Get Mouse Driver State and Memory Requirements
INT 33,16 Save Mouse Driver State
INT 33,17 Restore Mouse Driver State
INT 33,1C Set Mouse Interrupt Rate (InPort only)
INT 33,1F Disable Mouse Driver
INT 33,20 Enable Mouse Driver
INT 33,21 Reset Mouse Software
INT 33,24 Get Driver Version, Mouse Type & IRQ Number
Mouse Cursor Control Functions
INT 33,1 Show Mouse Cursor
INT 33,2 Hide Mouse Cursor
INT 33,4 Set Mouse Cursor Position
INT 33,7 Set Mouse Horizontal Min/Max Position
INT 33,8 Set Mouse Vertical Min/Max Position
INT 33,9 Set Mouse Graphics Cursor
INT 33,A Set Mouse Text Cursor
INT 33,F Set Mouse Mickey Pixel Ratio
INT 33,10 Mouse Conditional OFF
INT 33,13 Set Mouse Double Speed Threshold
INT 33,1A Set Mouse Sensitivity
INT 33,1B Get Mouse Sensitivity
Mouse Button and Position Feedback Functions
INT 33,3 Get Mouse Position and Button Status
INT 33,5 Get Mouse Button Press Information
INT 33,6 Get Mouse Button Release Information
INT 33,B Read Mouse Motion Counters
Video Control and Feedback Functions
INT 33,1D Set Mouse CRT Page
INT 33,1E Get Mouse CRT Page
Mouse Interrupt Setup Functions
INT 33,C Set Mouse User Defined Subroutine and Input Mask
INT 33,14 Swap Interrupt Subroutines
Alternate Mouse Interrupt Setup Functions
INT 33,18 Set Alternate Subroutine Call Mask and Address
INT 33,19 Get User Alternate Interrupt Address
Light Pen Emulation Functions
INT 33,D Mouse Light Pen Emulation On
INT 33,E Mouse Light Pen Emulation Off
International Language Support Functions
INT 33,22 Set Language for Messages
INT 33,23 Get Language Number
INT 33,0 - Mouse Reset/Get Mouse Installed Flag
AX = 00
on return:
AX = 0000 mouse driver not installed
FFFF mouse driver installed
BX = number of buttons
- resets mouse to default driver values:
. mouse is positioned to screen center
. mouse cursor is reset and hidden
. no interrupts are enabled (mask = 0)
. double speed threshold set to 64 mickeys per second
. horizontal mickey to pixel ratio (8 to
. vertical mickey to pixel ratio (16 to
. max width and height are set to maximum for video mode
INT 33,1 - Show Mouse Cursor
AX = 01
returns nothing
- increments the cursor flag; the cursor is displayed if flag
is zero; default flag value is -1
INT 33,2 - Hide Mouse Cursor
AX = 02
returns nothing
- decrements cursor flag; hides cursor if flag is not zero
INT 33,3 - Get Mouse Position and Button Status
AX = 03
on return:
CX = horizontal (X) position (0..639)
DX = vertical (Y) position (0..199)
BX = button status:
³F-8³7³6³5³4³3³2³1³0³ Button Status
³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄ left button (1 = pressed)
³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ right button (1 = pressed)
ÀÄÄÁÄÁÄÁÄÁÄÁÄÁÄÄÄÄÄÄ unused
- values returned in CX, DX are the same regardless of video mode
INT 33,4 - Set Mouse Cursor Position
AX = 4
CX = horizontal position
DX = vertical position
returns nothing
- default cursor position is at the screen center
- the position must be within the range of the current video mode
- the position may be rounded to fit screen mode resolution
INT 33,5 - Get Mouse Button Press Information
AX = 5
BX = 0 left button
1 right button
on return:
BX = count of button presses (0-32767), set to zero after call
CX = horizontal position at last press
DX = vertical position at last press
AX = status:
³F-8³7³6³5³4³3³2³1³0³ Button Status
³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄ left button (1 = pressed)
³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ right button (1 = pressed)
ÀÄÄÁÄÁÄÁÄÁÄÁÄÁÄÄÄÄÄÄ unused
INT 33,6 - Get Mouse Button Release Information
AX = 6
BX = 0 left button
1 right button
on return:
BX = count of button releases (0-32767), set to zero after call
CX = horizontal position at last release
DX = vertical position at last release
AX = status
³F-8³7³6³5³4³3³2³1³0³ Button status
³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄ left button (1 = pressed)
³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ right button (1 = pressed)
ÀÄÄÁÄÁÄÁÄÁÄÁÄÁÄÄÄÄÄÄ unused
INT 33,7 - Set Mouse Horizontal Min/Max Position
AX = 7
CX = minimum horizontal position
DX = maximum horizontal position
returns nothing
- restricts mouse horizontal movement to window
- if min value is greater than max value they are swapped
INT 33,8 - Set Mouse Vertical Min/Max Position
AX = 8
CX = minimum vertical position
DX = maximum vertical position
returns nothing
- restricts mouse vertical movement to window
- if min value is greater than max value they are swapped
INT 33,9 - Set Mouse Graphics Cursor
AX = 9
BX = horizontal hot spot (-16 to 16)
CX = vertical hot spot (-16 to 16)
ES:DX = pointer to screen and cursor masks (16 byte bitmap)
returns nothing
- screen mask is AND'ed to screen Cursor Mask is XOR'ed
- bytes 0-7 form the screen mask bitmap
- bytes 8-F form the cursor mask bitmap
INT 33,A - Set Mouse Text Cursor
AX = 0A
BX = 00 software cursor
01 hardware cursor
CX = start of screen mask or hardware cursor scan line
DX = end of screen mask or hardware cursor scan line
returns nothing
INT 33,B - Read Mouse Motion Counters
AX = 0B
on return:
CX = horizontal mickey count (-32768 to 32767)
DX = vertical mickey count (-32768 to 32767)
- count values are 1/200 inch intervals (1/200 in. = 1 mickey)
INT 33,C - Set Mouse User Defined Subroutine and Input Mask
AX = 0C
ES:DX = far pointer to user interrupt
CX = user interrupt mask:
³F-5³4³3³2³1³0³ user interrupt mask in CX
³ ³ ³ ³ ³ ÀÄÄÄ cursor position changed
³ ³ ³ ³ ÀÄÄÄÄ left button pressed
³ ³ ³ ÀÄÄÄÄÄ left button released
³ ³ ÀÄÄÄÄÄÄ right button pressed
³ ÀÄÄÄÄÄÄÄ right button released
ÀÄÄÄÄÄÄÄÄÄ unused
returns nothing
- routine at ES:DX is called if an event occurs and the
corresponding bit specified in user mask is set
- routine at ES:DX receives parameters in the following
registers:
AX = condition mask causing call
CX = horizontal cursor position
DX = vertical cursor position
DI = horizontal counts
SI = vertical counts
DS = mouse driver data segment
BX = button state:
³F-2³1³0³
³ ³ ÀÄÄÄ left button (1 = pressed)
³ ÀÄÄÄÄ right button (1 = pressed)
ÀÄÄÄÄÄÄ unused
- initial call mask and user routine should be restore on exit
from user program
- user program may need to set DS to its own segment
- user routine should return via RETF instead of IRET
- see INT 33,14
INT 33,D - Mouse Light Pen Emulation On
AX = 0D
returns nothing
- turns on light pen emulation; the light pen is considered
down when both buttons are down; when both buttons are
up the pen is considered off screen
- see INT 33,E
INT 33,E - Mouse Light Pen Emulation Off
AX = 0E
returns nothing
- disables light pen emulation
- see INT 33,D
INT 33,F - Set Mouse Mickey Pixel Ratio
AX = 0F
CX = horizontal ratio (1..32767, default
DX = vertical ratio (1..32767, default 16)
returns nothing
- sets the ratio between physical cursor movement (mickeys) and
screen coordinate changes
- CX and DX must be unsigned (high bit must be 0)
INT 33,10 - Mouse Conditional OFF
AX = 10h
CX = upper X screen coordinate
DX = upper Y screen coordinate
SI = lower X screen coordinate
DI = lower Y screen coordinate
returns nothing
- defines screen region for updating in which the mouse is hidden
if found these coordinates (INT 33,1 must be used to turn cursor
on again)
- see INT 33,1
INT 33,13 - Set Mouse Double Speed Threshold
AX = 13h
DX = threshold speed (mickeys per second, default 64)
returns nothing
- cursor speed is doubled when the cursor moves across the screen
at the threshold speed
INT 33,14 - Swap Interrupt Subroutines
AX = 14h
ES:DX = far pointer to user routine
CX = user interrupt mask:
³F-8³7³6³5³4³3³2³1³0³ user interrupt mask in CX
³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄ cursor position changed
³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄ left button pressed
³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ left button released
³ ³ ³ ³ ³ ÀÄÄÄÄÄÄ right button pressed
³ ³ ³ ³ ÀÄÄÄÄÄÄÄ right button released
ÀÄÄÁÄÁÄÁÄÄÄÄÄÄÄÄ unused
on return:
CX = previous user interrupt mask
ES:DX = far pointer to previous user interrupt
- routine at ES:DX is called if an event occurs and the
corresponding bit specified in user mask is set
- routine at ES:DX receives parameters in the following
registers:
AX = condition mask causing call
CX = horizontal cursor position
DX = vertical cursor position
DI = horizontal counts
SI = vertical counts
DS = mouse driver data segment
BX = button state:
³F-2³1³0³
³ ³ ÀÄÄÄ left button (1 = pressed)
³ ÀÄÄÄÄ right button (1 = pressed)
ÀÄÄÄÄÄÄ unused
- initial call mask and user routine should be restore on exit
from user program
- user program may need to set DS to its own segment
- see INT 33,C
INT 33,15 - Get Mouse Driver State and Memory Requirements
AX = 15h
on return
BX = buffer size need to hold current mouse state
- used before mouse functions 16h and 17h to determine memory
needed to save mouse state before giving up control of mouse
to another program
INT 33,16 - Save Mouse Driver State
AX = 16h
ES:DX = far pointer to mouse state save buffer
returns nothing
- used to save mouse information before relinquishing control
to another programs mouse handler
- see INT 33,15 INT 33,17
INT 33,17 - Restore Mouse Driver State
AX = 17h
ES:DX = far pointer to mouse state save buffer
returns nothing
- used to restore mouse information after regaining control
from another programs mouse handler
- see INT 33,15 INT 33,16
INT 33,18 - Set alternate subroutine call mask and address
AX = 18h
DX = offset to function
CX = user interrupt mask:
³F-8³7³6³5³4³3³2³1³0³ user interrupt mask in CX
³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄ alt key pressed during event
³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄ ctrl key pressed during event
³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ shift key pressed during event
³ ³ ³ ³ ³ ÀÄÄÄÄÄÄ right button up event
³ ³ ³ ³ ÀÄÄÄÄÄÄÄ right button down event
³ ³ ³ ÀÄÄÄÄÄÄÄÄ left button up event
³ ³ ÀÄÄÄÄÄÄÄÄÄ left button down event
³ ÀÄÄÄÄÄÄÄÄÄÄ cursor moved
ÀÄÄÄÄÄÄÄÄÄÄÄÄ unused
- entire mask is set to zero when INT 33,0 is called
- up to three handlers may be defined with this call
- mask should be cleared before program exit
- when handler is called it receives parameters in the following
registers:
AX = condition mask causing call
CX = horizontal cursor position
DX = vertical cursor position
DI = horizontal counts
SI = vertical counts
DS = mouse driver data segment
BX = button state:
³F-2³1³0³
³ ³ ÀÄÄÄ left button (1 = pressed)
³ ÀÄÄÄÄ right button (1 = pressed)
ÀÄÄÄÄÄÄ unused
INT 33,19 - Get User Alternate Interrupt Address
AX = 19h
CX = user interrupt call mask (see below)
on return:
BX:DX = user interrupt vector
CX = user interrupt call mask or zero if not found
³F-8³7³6³5³4³3³2³1³0³ user interrupt mask in CX
³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄ alt key pressed during event
³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄ ctrl key pressed during event
³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄ shift key pressed during event
³ ³ ³ ³ ³ ÀÄÄÄÄÄÄ right button up event
³ ³ ³ ³ ÀÄÄÄÄÄÄÄ right button down event
³ ³ ³ ÀÄÄÄÄÄÄÄÄ left button up event
³ ³ ÀÄÄÄÄÄÄÄÄÄ left button down event
³ ÀÄÄÄÄÄÄÄÄÄÄ cursor moved
ÀÄÄÄÄÄÄÄÄÄÄÄÄ unused
- returns vector to function defined by INT 33,18
- searches the event handlers defined by INT 33,18 for a routine
with a call mask matching CX
INT 33,1A - Set Mouse Sensitivity
AX = 1A
BX = horizontal coordinates per pixel (ó 100)
CX = vertical coordinates per pixel (ó 100)
DX = double speed threshold
returns nothing
- sets mouse sensitivity by setting the ratio of the mouse
coordinates per screen pixel
- provides same results as calls to both INT 33,F and INT 33,13
- these values are not reset by INT 33,0
INT 33,1B - Get Mouse Sensitivity
AX = 1B
on return:
BX = horizontal coordinates per pixel (ó 100)
CX = vertical coordinates per pixel (ó 100)
DX = double speed threshold
- returns mouse sensitivity information as the number of mouse
coordinates per screen pixel
INT 33,1C - Set Mouse Interrupt Rate (InPort only)
AX = 1C
BX = rate code
= 0 no interrupts
= 1 30 interrupts per second
= 2 50 interrupts per second
= 3 100 interrupts per second
= 4 200 interrupts per second
- work with the InPort mouse only
- sets the rate the mouse status is polled by the mouse driver
- faster rates provide better resolution but take away CPU time
- values in BX > 4 can cause unpredicatable results
INT 33,1D - Set Mouse CRT Page
AX = 1D
BX = CRT page number
returns nothing
- sets the CRT page which the mouse cursor is displayed
- see VIDEO PAGES
INT 33,1E - Get Mouse CRT Page
AX = 1E
on return:
BX = CRT page number cursor is displayed on
- see VIDEO PAGES
INT 33,1F - Disable Mouse Driver
AX = 1F
on return:
AX = 001F if successful
FFFF if error
ES:BX = previous INT 33 vector
- restores vectors for INT 10 and INT 71 (8088/86) or INT 74 (286+)
- INT 33 interrupt vector (software) is not affected
- use of the vector returned in ES:BX to restore the previous INT 33
vector can cause problems since it contains the value of INT 33
before the driver was installed; any other hooks into INT 33 set
after driver installation will not receive service
INT 33,20 - Enable Mouse Driver
AX = 20h
returns nothing
- reinstalls the mouse drivers interrupt vectors for INT 10 and
INT 71 (8088/86) and INT 74 (286/386)
- see INT 33,1F
INT 33,21 - Reset Mouse Software
AX = 21h
on return:
AX = 0021 mouse driver not installed
FFFF mouse driver installed
BX = 2 mouse driver installed
- similar to INT 33,0 but does not reset the mouse hardware or
display variables
- both AX and BX must be correct for successful reset
- interrupt routines set through INT 33,18 are preserved
- resets the mouse to the following defaults:
. mouse is positioned to screen center
. mouse cursor is reset and hidden
. no interrupts are enabled (mask = 0)
. double speed threshold set to 64 mickeys per second
. horizontal mickey to pixel ratio (8 to
. vertical mickey to pixel ratio (16 to
. max width and height are set to maximum for video mode
INT 33,22 - Set Language for Messages
AX = 22h
BX = language number (with /L switch value):
= 0 English n/a
= 1 French F
= 2 Dutch NL
= 3 German D
= 4 Swedish S
= 5 Finnish SF
= 6 Spanish E
= 7 Portuguese P
= 8 Italian I
returns nothing
- only works with international version of the mouse driver
- see INT 33,23
INT 33,23 - Get Language Number
AX = 23h
on return:
BX = language number (with /L switch value):
= 0 English n/a
= 1 French F
= 2 Dutch NL
= 3 German D
= 4 Swedish S
= 5 Finnish SF
= 6 Spanish E
= 7 Portuguese P
= 8 Italian I
- only works with international version of the mouse driver
- returns English (0) if not international version
- see INT 33,22
INT 33,24 - Get Driver Version, Mouse Type & IRQ Number
AX = 24h
on return:
BH = major version (see below)
BL = minor version (see below)
CH = mouse type:
= 1 bus mouse
= 2 serial mouse
= 3 InPort mouse
= 4 PS/2 mouse
= 5 Hewlett Packard mouse
CL = IRQ number:
= 0 PS/2
= 2 IRQ 2
= 5 IRQ 5
= 7 IRQ 7
- version 6.1 would be represented as BH = 06h, BL = 10h
2 Guest(s)