-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathLIO.ASM
258 lines (230 loc) · 8.36 KB
/
LIO.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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
ORG 0
USE16
CPU 8086
FIXCS equ 2eh
segment .liotable start=0x0000
start dw 0x11, 0x0000
dw 0xa0, lio_a0
dw 0xa1, lio_a1
dw 0xa2, lio_a2
dw 0xa3, lio_a3
dw 0xa4, lio_a4
dw 0xa5, lio_a5
dw 0xa6, lio_a6
dw 0xa7, lio_a7
dw 0xa8, lio_a8
dw 0xa9, lio_a9
dw 0xaa, lio_aa
dw 0xab, lio_ab
dw 0xac, lio_ac
dw 0xad, gput2
dw 0xae, lio_ae
dw 0xaf, lio_af
dw 0xce, lio_ce
segment .liocall start=0x0050
align 4
lio_a0: nop
sti
jmp short lio_wait
align 4
lio_a1: nop
sti
jmp short lio_wait
align 4
lio_a2: nop
sti
jmp short lio_wait
align 4
lio_a3: nop
sti
jmp short lio_wait
align 4
lio_a4: nop
sti
jmp short lio_wait
align 4
lio_a5: nop
sti
jmp short lio_wait
align 4
lio_a6: nop
sti
jmp short lio_wait
align 4
lio_a7: nop
sti
jmp short lio_wait
align 4
lio_a8: nop
sti
jmp short lio_wait
align 4
lio_a9: nop
sti
jmp short lio_wait
align 4
lio_aa: nop
sti
jmp short lio_wait
align 4
lio_ab: nop
sti
jmp short lio_wait
align 4
lio_ac: nop
sti
jmp short lio_wait
align 4
lio_ad: nop
sti
jmp short lio_wait
align 4
lio_ae: nop
sti
jmp short lio_wait
align 4
lio_af: nop
sti
jmp short lio_wait
align 4
lio_ce: nop
sti
jmp short lio_wait
align 4
lio_wait: nop
iret
segment .liomain start=0x00a0
liofont db 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00
db 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00
db 0x00, 0x60, 0xda, 0x0c, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x30, 0x48, 0x48, 0x30, 0x00
db 0x7c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40
db 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04
db 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x7c, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30
db 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x10, 0x10, 0x3c, 0x60, 0x24, 0x28, 0x1c
db 0x32, 0x52, 0x42, 0x40, 0x62, 0x3c, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x78, 0x16
db 0x1c, 0x2c, 0x4a, 0x5a, 0x52, 0x30, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x22
db 0x22, 0x22, 0x42, 0x42, 0x40, 0x28, 0x10, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x04, 0x00
db 0x1c, 0x62, 0x02, 0x02, 0x02, 0x04, 0x08, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x1e
db 0x22, 0x42, 0x04, 0x08, 0x08, 0x1a, 0x24, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x1c, 0x6a
db 0x08, 0x1c, 0x2a, 0x2a, 0x2a, 0x2a, 0x10, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x2e
db 0x32, 0x66, 0x20, 0x10, 0x10, 0x10, 0x08, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x5c
db 0x6a, 0x6a, 0x4a, 0x0a, 0x0c, 0x08, 0x08, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x08
db 0x08, 0x3c, 0x4c, 0x4a, 0x4a, 0x4a, 0x30, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x62
db 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x18, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7e
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x20, 0x78, 0x2e, 0x20, 0x1c, 0x36
db 0x52, 0x52, 0x4a, 0x5a, 0x32, 0x02, 0x00, 0x00
db 0x00, 0x00, 0x20, 0x24, 0x24, 0x42, 0x42, 0x42
db 0x42, 0x40, 0x40, 0x40, 0x40, 0x28, 0x10, 0x00
db 0x00, 0x00, 0x38, 0x04, 0x00, 0x00, 0x3c, 0x42
db 0x02, 0x02, 0x02, 0x02, 0x04, 0x0c, 0x08, 0x00
db 0x00, 0x00, 0x10, 0x08, 0x1c, 0x26, 0x42, 0x02
db 0x04, 0x04, 0x08, 0x08, 0x10, 0x1a, 0x24, 0x00
db 0x00, 0x10, 0x16, 0x1c, 0x6a, 0x0a, 0x08, 0x1c
db 0x2a, 0x2a, 0x4a, 0x4a, 0x6a, 0x32, 0x00, 0x00
db 0x00, 0x00, 0x02, 0x12, 0x3a, 0x54, 0x14, 0x22
db 0x22, 0x22, 0x22, 0x22, 0x04, 0x04, 0x00, 0x00
db 0x00, 0x10, 0x10, 0x3e, 0x68, 0x08, 0x06, 0x7c
db 0x04, 0x1c, 0x20, 0x40, 0x42, 0x26, 0x18, 0x00
db 0x00, 0x00, 0x06, 0x08, 0x10, 0x20, 0x20, 0x40
db 0x40, 0x40, 0x60, 0x30, 0x18, 0x0e, 0x00, 0x00
db 0x00, 0x00, 0x04, 0x24, 0x24, 0x4e, 0x54, 0x44
db 0x44, 0x44, 0x44, 0x44, 0x4c, 0x28, 0x00, 0x00
db 0x00, 0x00, 0x3c, 0x62, 0x02, 0x02, 0x00, 0x00
db 0x00, 0x20, 0x40, 0x40, 0x62, 0x3e, 0x00, 0x00
db 0x00, 0x10, 0x10, 0x10, 0x3e, 0x48, 0x08, 0x18
db 0x20, 0x40, 0x40, 0x40, 0x62, 0x3e, 0x00, 0x00
db 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40
db 0x40, 0x40, 0x40, 0x40, 0x40, 0x64, 0x38, 0x00
db 0x00, 0x10, 0x10, 0x7e, 0x48, 0x08, 0x3c, 0x2c
db 0x4a, 0x4a, 0x52, 0x32, 0x04, 0x04, 0x08, 0x00
db 0x00, 0x00, 0x00, 0x24, 0x24, 0x7e, 0x25, 0x24
db 0x44, 0x48, 0x40, 0x40, 0x20, 0x32, 0x0c, 0x00
db 0x00, 0x00, 0x38, 0x44, 0x08, 0x30, 0x22, 0x4c
db 0x30, 0x20, 0x40, 0x40, 0x42, 0x26, 0x18, 0x00
db 0x00, 0x10, 0x10, 0x78, 0x20, 0x2c, 0x22, 0x22
db 0x40, 0x40, 0x40, 0x40, 0x60, 0x72, 0x5c, 0x00
db 0x00, 0x10, 0x10, 0x10, 0x7e, 0x20, 0x20, 0x2c
db 0x32, 0x62, 0x02, 0x02, 0x02, 0x0c, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x3c, 0x62, 0x42, 0x02, 0x02
db 0x02, 0x02, 0x02, 0x02, 0x04, 0x0c, 0x10, 0x00
db 0x00, 0x00, 0x00, 0x7e, 0x0c, 0x08, 0x10, 0x20
db 0x40, 0x40, 0x40, 0x60, 0x22, 0x1e, 0x00, 0x00
db 0x00, 0x00, 0x10, 0x10, 0x1c, 0x12, 0x20, 0x40
db 0x40, 0x40, 0x40, 0x40, 0x22, 0x3e, 0x00, 0x00
db 0x00, 0x00, 0x10, 0x10, 0x7c, 0x22, 0x22, 0x40
db 0x44, 0x5c, 0x14, 0x24, 0x24, 0x1c, 0x0a, 0x00
db 0x00, 0x00, 0x0e, 0x1a, 0x40, 0x40, 0x40, 0x40
db 0x40, 0x40, 0x40, 0x50, 0x50, 0x32, 0x0c, 0x00
db 0x00, 0x00, 0x08, 0x08, 0x1c, 0x2c, 0x6a, 0x6a
db 0x2a, 0x72, 0x56, 0x56, 0x2a, 0x0a, 0x04, 0x00
db 0x00, 0x00, 0x20, 0x20, 0x24, 0x6a, 0x32, 0x22
db 0x24, 0x24, 0x6c, 0x6a, 0x2a, 0x26, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x1c, 0x34, 0x2a, 0x4a, 0x4a
db 0x4a, 0x4a, 0x4a, 0x4a, 0x32, 0x04, 0x00, 0x00
db 0x00, 0x08, 0x08, 0x04, 0x5e, 0x64, 0x44, 0x4c
db 0x54, 0x56, 0x66, 0x64, 0x64, 0x1c, 0x00, 0x00
db 0x00, 0x00, 0x60, 0x30, 0x10, 0x24, 0x26, 0x26
db 0x44, 0x44, 0x44, 0x44, 0x2c, 0x38, 0x10, 0x00
db 0x00, 0x00, 0x3c, 0x04, 0x04, 0x08, 0x08, 0x10
db 0x12, 0x4a, 0x4a, 0x4a, 0x0a, 0x30, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x18, 0x34, 0x24, 0x44
db 0x42, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00
db 0x00, 0x04, 0x1e, 0x44, 0x44, 0x44, 0x44, 0x5e
db 0x44, 0x4c, 0x54, 0x56, 0x56, 0x18, 0x00, 0x00
db 0x00, 0x10, 0x10, 0x3e, 0x48, 0x08, 0x0e, 0x3c
db 0x48, 0x18, 0x2c, 0x4a, 0x4a, 0x2a, 0x30, 0x00
db 0x00, 0x30, 0x10, 0x08, 0x08, 0x0a, 0x3a, 0x4e
db 0x4e, 0x4a, 0x4b, 0x52, 0x24, 0x04, 0x04, 0x00
db 0x00, 0x04, 0x04, 0x7e, 0x04, 0x08, 0x3a, 0x2a
db 0x48, 0x50, 0x50, 0x72, 0x2a, 0x0e, 0x04, 0x00
db 0x00, 0x00, 0x08, 0x48, 0x5c, 0x2a, 0x2a, 0x6a
db 0x6a, 0x4a, 0x52, 0x52, 0x72, 0x04, 0x00, 0x00
db 0x00, 0x00, 0x08, 0x10, 0x7c, 0x12, 0x10, 0x10
db 0x7c, 0x24, 0x20, 0x20, 0x22, 0x26, 0x18, 0x00
db 0x00, 0x00, 0x00, 0x44, 0x44, 0x5c, 0x22, 0x62
db 0x22, 0x22, 0x12, 0x10, 0x10, 0x08, 0x08, 0x00
db 0x00, 0x00, 0x08, 0x5c, 0x6a, 0x6a, 0x4a, 0x4a
db 0x4a, 0x4a, 0x4a, 0x0c, 0x08, 0x08, 0x00, 0x00
db 0x00, 0x08, 0x08, 0x0e, 0x08, 0x08, 0x08, 0x3c
db 0x6c, 0x4a, 0x4a, 0x4a, 0x48, 0x30, 0x00, 0x00
db 0x00, 0x00, 0x18, 0x04, 0x20, 0x20, 0x40, 0x44
db 0x5e, 0x62, 0x02, 0x02, 0x02, 0x02, 0x04, 0x00
db 0x00, 0x00, 0x00, 0x22, 0x42, 0x42, 0x42, 0x42
db 0x42, 0x42, 0x52, 0x22, 0x06, 0x04, 0x00, 0x00
db 0x00, 0x00, 0x3c, 0x4c, 0x08, 0x10, 0x2c, 0x36
db 0x42, 0x42, 0x1a, 0x26, 0x22, 0x24, 0x18, 0x00
db 0x00, 0x00, 0x20, 0x20, 0x26, 0x6a, 0x72, 0x32
db 0x22, 0x24, 0x64, 0x64, 0x24, 0x22, 0x00, 0x00
db 0x00, 0x00, 0x3c, 0x44, 0x08, 0x10, 0x3c, 0x22
db 0x42, 0x42, 0x02, 0x02, 0x02, 0x04, 0x0c, 0x00
db 0x00, 0x00, 0x10, 0x10, 0x10, 0x7c, 0x32, 0x12
db 0x32, 0x22, 0x62, 0x62, 0x22, 0x24, 0x00, 0x00
db 0x00, 0x00, 0x10, 0x10, 0x30, 0x20, 0x20, 0x28
db 0x34, 0x34, 0x24, 0x24, 0x24, 0x46, 0x44, 0x00
db 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x10, 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00
db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
gput2: jmp lio_ad
ends