]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/MAPPER/KBDGSTAT.ASM

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / MAPPER / KBDGSTAT.ASM
1 ;\ f\e0
2 page 80,132
3 ;
4 title CP/DOS KbdGetStatus
5 ;
6 .sall
7 .xlist
8 include kbd.inc
9 .list
10
11 kbddata segment word public 'kbddata'
12
13 public KbdBitMask
14 KbdBitMask dw CookedModeOn or EchoOn
15
16 public KbdTurnAroundCharacter
17 KbdTurnAroundCharacter dw 0dh
18
19 public KbdInterimCharFlags
20 KbdInterimCharFlags dw 0
21
22 kbddata ends
23
24 kbdxxx segment byte public 'kbd'
25 assume cs:kbdxxx,ds:nothing,es:nothing,ss:nothing
26 ;
27 ; ************************************************************************* *
28 ; *
29 ; * MODULE: kbdGetStatus
30 ; *
31 ; * CALLING SEQUENCE:
32 ; *
33 ; *
34 ; *************************************************************************
35
36 public kbdgetstatus
37
38 str struc
39 old_bp dw ?
40 return dd ?
41 handle dw ? ; kbd handle
42 data dd ? ; data area pointer
43 str ends
44
45 kbdgetstatus proc far
46
47 Enter KbdGetStatus ; push registers
48
49 les di,[bp].data ; setup area where status is
50 ; returned
51 mov ax,seg kbddata
52 mov ds,ax
53 assume ds:kbddata
54
55 mov ax,KbdBitMask ; save kbd bit mask in
56 mov es:[di].Bit_Mask,ax ; return data area
57
58 mov ax,KbdTurnAroundCharacter ; save turn around character
59 mov es:[di].Turn_Around_Char,ax
60
61 mov ax,KbdInterimCharFlags ; save interim character flag
62 mov es:[di].Interim_Char_Flags,ax
63
64 mov ah,2
65 int 16h ; get kbd shift status
66
67 xor ah,ah
68 mov es:[di].Status_Shift_State,ax ; save it in return data
69 ; area
70 Mexit ; restore registers
71
72 ret size str - 6 ; return
73
74 kbdgetstatus endp
75 kbdxxx ends
76 end