forked from oe5hpm/openBCM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
d_mouse.asm
312 lines (136 loc) · 2.7 KB
/
d_mouse.asm
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
;
; BayCom(R) Packet-Radio fuer IBM PC
;
; OpenBayCom-Mailbox
;
; Assembler-Teil
;
;
;
;
;
; Routinen fr Maus-Ansteuerung
;
.model large
public _mausinit,_mausein,_mausaus,_mausistda,_maussetz
public _mauszeile,_mausspalte,_mausknopf,_mausrechts
.code
_mausda dw 0
_mausinit proc far
push bp
mov bp,sp
mov ax,0h ; Reset Maustreiber
int 33h
cmp ax,0ffffh
jne initfail
mov ax,0ah
mov bx,0
mov cx,0ffffh
mov dx,07700h
int 33h
mov ax,4 ; ins Eck positionieren
mov cx,(79*8)
mov dx,0
int 33h
mov ax,1 ; Mauscursor anzeigen
mov cs:_mausda,ax
int 33h
mov ax,8
mov dx,[bp+6] ; 1. Parameter am Stack holen (proc far)
mov cl,3
shl dx,cl
mov cx,1
int 33h
mov ax,7
mov dx,[bp+8]
mov cl,3
shl dx,cl
mov cx,1
int 33h
mov ax,1
pop bp
retf
initfail: mov ax,0
mov cs:_mausda,ax
pop bp
retf
_mausinit endp
_maussetz proc far
cmp cs:_mausda,0
jz nixsetz
push bp
mov bp,sp
mov cx,[bp+6] ; 1. Parameter am Stack holen (proc far)
mov cl,3
shl cx,cl
mov dx,[bp+8] ; 2. Parameter am Stack holen (proc far)
mov cl,3
shl dx,cl
mov ax,4
int 33h
pop bp
nixsetz: retf
_maussetz endp
_mausknopf proc far
mov ax,cs:_mausda
or ax,ax
jz keinknopf
mov ax,3
int 33h
mov ax,bx
and ax,1
keinknopf: retf
_mausknopf endp
_mausrechts proc far
mov ax,cs:_mausda
or ax,ax
jz keinknopf
mov ax,3
int 33h
mov ax,bx
and ax,2
keinrechts: retf
_mausrechts endp
_mauszeile proc far
mov ax,cs:_mausda
or ax,ax
jz nixzeile
mov ax,3
int 33h
mov ax,dx
mov cl,3
shr ax,cl
nixzeile: retf
_mauszeile endp
_mausspalte proc far
mov ax,cs:_mausda
or ax,ax
jz nixspalte
mov ax,3
int 33h
mov ax,cx
mov cl,3
shr ax,cl
nixspalte: retf
_mausspalte endp
_mausein proc far
cmp cs:_mausda,2
jnz nixein
mov ax,1
mov cs:_mausda,ax
int 33h
nixein: retf
_mausein endp
_mausaus proc far
cmp cs:_mausda,1
jnz nixaus
mov ax,2
mov cs:_mausda,ax
int 33h
nixaus: retf
_mausaus endp
_mausistda proc far
mov ax,cs:_mausda
retf
_mausistda endp
end