summaryrefslogtreecommitdiff
path: root/v4.0/src/MAPPER/KBDGSTAT.ASM
blob: 078fd5da323da28c354138a91f51a83b088224a6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
;0
page 80,132
;
title CP/DOS KbdGetStatus
;
	.sall
	.xlist
	include kbd.inc
	.list

kbddata segment word public 'kbddata'

		public	KbdBitMask
KbdBitMask	dw	CookedModeOn or EchoOn

		public	KbdTurnAroundCharacter
KbdTurnAroundCharacter	dw	0dh

		public	KbdInterimCharFlags
KbdInterimCharFlags	dw	0

kbddata ends

kbdxxx	segment byte public 'kbd'
	assume	cs:kbdxxx,ds:nothing,es:nothing,ss:nothing
;
; ************************************************************************* *
; *
; *	 MODULE:  kbdGetStatus
; *
; *	 CALLING SEQUENCE:
; *
; *
; *************************************************************************

	public kbdgetstatus

str	struc
old_bp	dw	?
return	dd	?
handle	dw	?      ; kbd handle
data	dd	?      ; data area pointer
str	ends

kbdgetstatus	proc	far

	Enter	KbdGetStatus		; push registers

	les	di,[bp].data		; setup area where status is
					; returned
	mov	ax,seg kbddata
	mov	ds,ax
	assume	ds:kbddata

	mov	ax,KbdBitMask			 ; save kbd bit mask in
	mov	es:[di].Bit_Mask,ax		 ; return data area

	mov	ax,KbdTurnAroundCharacter	 ; save turn around character
	mov	es:[di].Turn_Around_Char,ax

	mov	ax,KbdInterimCharFlags		 ; save interim character flag
	mov	es:[di].Interim_Char_Flags,ax

	mov	ah,2
	int	16h				 ; get kbd shift status

	xor	ah,ah
	mov	es:[di].Status_Shift_State,ax	 ; save it in return data
						 ; area
	Mexit					 ; restore registers

	ret	size str - 6			 ; return

kbdgetstatus	endp
kbdxxx	ends
	end