-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChatModule.asm
More file actions
152 lines (123 loc) · 3.42 KB
/
ChatModule.asm
File metadata and controls
152 lines (123 loc) · 3.42 KB
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
include mymacros.inc
;Author:Sayed Kotb
;Date:10-10-2017
;This program calcultes grades curving
;---------------------------
.MODEL SMALL
.STACK 64
.DATA
ToBeSent db ?,'$'
ToBeReceived db '$','$'
Divider db '--------------------------------------------------------------------------------$'
row1 db 0
col1 db 0
row2 db 13
col2 db 0
from1 dw 0
to1 dw 0B4fh
from2 dw 0D00h
to2 dw 184Fh
ApplyNewLine db 0Dh
GoodByeMessage db 'Goodbye, we wish that you have enjoyed your time!$'
.code
MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX
portinitialization
CLEAR_SCREEN_UP
MOVECURSOR 0,0
MOVECURSOR 12,0
ShowMessage Divider
MOVECURSOR 0,0
chat:
mov ToBeReceived,'$'
mov ah,1
int 16h
jnz Se
jmp Re
Se:
mov ah,00
int 16h
cmp ah,1ch
je enter
cmp al,27
je escape
mov ToBeSent,al
MOVECURSOR row1,col1
ShowMessage ToBeSent
send ToBeSent
inc col1
cmp col1,80
je ResetCol1
BackCol1:
jmp Re
enter:
mov col1,0
inc row1
cmp row1,12
je ResetRow1Enter
BackRow1Enter:
MOVECURSOR row1,col1
send ApplyNewLine
Re:
receive ToBeReceived
cmp ToBeReceived,'$'
je chat
cmp ToBeReceived, 0Dh
je Enter2
MOVECURSOR row2,col2
ShowMessage ToBeReceived
inc col2
cmp col2,80
je ResetCol2
BackCol2:
jmp chat
Enter2:
mov col2,0
inc row2
cmp row2,24
je ResetEnter2
BackEnter2:
MOVECURSOR row2,col2
jmp chat
ResetEnter2:
scroll from2,to2
MOVECURSOR 12,0
ShowMessage Divider
mov row2,23
jmp BackEnter2
ResetCol1:
mov col1,0
inc row1
cmp row1,12
je ResetRow1
BackRow1:
jmp BackCol1
ResetCol2:
mov col2,0
inc row2
cmp row2,24
je ResetRow2
BackRow2:
jmp BackCol2
ResetRow1:
scroll from1,to1
mov row1,11
jmp BackRow1
ResetRow2:
scroll from2,to2
MOVECURSOR 12,0
ShowMessage Divider
mov row2,23
jmp BackRow2
ResetRow1Enter:
scroll from1,to1
mov row1,11
jmp BackRow1Enter
escape:
CLEAR_SCREEN_UP
MOVECURSOR 0,0
ShowMessage GoodByeMessage
hlt
MAIN ENDP
END MAIN