]>
wirehaze git hosting - MS-DOS.git/blob - v4.0/src/MAPPER/KBDSSTAT.ASM
4 title CP
/DOS KbdSetStatus
8 include kbd
.inc ; kbd set status data structure
11 kbddata
segment word public 'kbddata'
14 extrn KbdTurnAroundCharacter
:word
15 extrn KbdInterimCharFlags
:word
21 kbdxxx
segment byte public 'kbd'
22 assume
cs:kbdxxx
,ds:nothing
,es:nothing
,ss:nothing
24 ; ************************************************************************* *
26 ; * MODULE: kbdsetStatus
31 ; * PUSH@ DWORD data ; kbd data structure
32 ; * PUSH WORD handle ; kbd handle
40 ; *************************************************************************
47 handle dw ?
; kbd handle
48 data dd ?
; kbd data strructure pointer
53 Enter KbdSetStatus
; save registers
55 les di,[bp].data ; set up kbd data structure
60 mov ax,es:[di].Bit_Mask
; get bit mask
63 test ax,040h ; define turnaround character ??
64 jz CheckInterimFlags
; jump if not
66 mov bx,es:[di].Turn_Around_Char
; else, save turnaround character
67 mov KbdTurnAroundCharacter
,bx
70 test ax,020h ; check for interim character flag ??
71 jz CheckShiftState
; if not jump
73 mov bx,es:[di].Interim_Char_Flags
; save interim character flag
74 mov KbdInterimCharFlags
,bx
77 test ax,010h ; check for shift state ??
78 jz CheckCookedOn
; jump if not
80 push ds ; setup for shift state
85 mov bx,es:[di].Status_Shift_State
; save shift state data
91 CheckCookedOn: ; check for cooked mode ??
95 and KbdBitMask
,not RawModeOn
; setup cooked mode status
96 or KbdBitMask
,CookedModeOn
99 test ax,004h ; check for raw mdoe ??
102 and KbdBitMask
,not CookedModeOn
; setup for raw mode
103 or KbdBitMask
,RawModeOn
106 test ax,002h ; check for echo on
107 jz CheckEchoOn
; branch if so
109 and KbdBitMask
,not EchoOn
; else setup echo off
110 or KbdBitMask
,EchoOff
116 and KbdBitMask
,not EchoOff
; setup echo on
120 Mexit
; pop registers
122 ret size
str - 6 ; return