Subversion Repositories Kolibri OS

Rev

Rev 551 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 551 Rev 625
1
;
1
;
2
;    ARP Status Monitor
2
;    ARP Status Monitor
3
;
3
;
4
;    Compile with FASM for Menuet
4
;    Compile with FASM for Menuet
5
;
5
;
6
;  This program displays the ARP table, and it's settings
6
;  This program displays the ARP table, and it's settings
7
   
7
   
8
use32
8
use32
9
   
9
   
10
                org     0x0
10
                org     0x0
11
   
11
   
12
                db      'MENUET00'              ; 8 byte id
12
                db      'MENUET00'              ; 8 byte id
13
                dd      38                      ; required os
13
                dd      38                      ; required os
14
                dd      START                   ; program start
14
                dd      START                   ; program start
15
                dd      I_END                   ; program image size
15
                dd      I_END                   ; program image size
16
                dd      0x100000                ; required amount of memory
16
                dd      0x100000                ; required amount of memory
17
                dd      0x00000000              ; reserved=no extended header
17
                dd      0x00000000              ; reserved=no extended header
18
   include 'lang.inc'
18
   include 'lang.inc'
19
   include '..\..\..\macros.inc'
19
   include '..\..\..\macros.inc'
-
 
20
   purge mov	; decrease kpack'ed size
20
   
21
   
21
START:                          ; start of execution
22
START:                          ; start of execution
22
    call draw_window            ; at first, draw the window
23
    call draw_window            ; at first, draw the window
23
   
24
   
24
still:
25
still:
25
    mov  eax,23                 ; wait here for event
26
    mov  eax,23                 ; wait here for event
26
    mov  ebx,200				; Time out after 2s
27
    mov  ebx,200				; Time out after 2s
27
    mcall
28
    mcall
28
   
29
   
29
    cmp  eax,1                  ; redraw request ?
30
    cmp  eax,1                  ; redraw request ?
30
    jz   red
31
    jz   red
31
    cmp  eax,2                  ; key in buffer ?
32
    cmp  eax,2                  ; key in buffer ?
32
    jz   key
33
    jz   key
33
    cmp  eax,3                  ; button in buffer ?
34
    cmp  eax,3                  ; button in buffer ?
34
    jz   button
35
    jz   button
35
   
36
   
36
	; read the stack status data, and write it to the screen buffer
37
	; read the stack status data, and write it to the screen buffer
37
 
38
 
38
	mov		eax, 53
39
	mov		eax, 53
39
	mov		ebx, 255
40
	mov		ebx, 255
40
	mov		ecx, 200
41
	mov		ecx, 200
41
	mcall
42
	mcall
42
 
43
 
43
	push    eax		
44
	push    eax		
44
	mov		ebx, text + 24
45
	mov		ebx, text + 24
45
	call	printhex
46
	call	printhex
46
 
47
 
47
	mov		eax, 53
48
	mov		eax, 53
48
	mov		ebx, 255
49
	mov		ebx, 255
49
	mov		ecx, 201
50
	mov		ecx, 201
50
	mcall
51
	mcall
51
		
52
		
52
	mov		ebx, text + 64
53
	mov		ebx, text + 64
53
	call	printhex
54
	call	printhex
54
	
55
	
55
	
56
	
56
	; Fill the table with blanks
57
	; Fill the table with blanks
57
	mov		edx, text + 160
58
	mov		edi, text + 160
58
doBlank:
59
doBlank:
59
	mov		esi, blank
60
	mov		esi, blank
60
	mov		edi, edx
-
 
61
	mov		ecx, 40
61
	mov		ecx, 40
62
	rep		movsb
62
	rep		movsb
63
	add		edx, 40
-
 
64
 
63
 
65
	cmp		edx, text + 560
64
	cmp		edi, text + 560
66
	jne		doBlank
65
	jne		doBlank
67
	
66
	
68
	pop		ecx					; The number of entries
67
	pop		ecx					; The number of entries
69
	
68
	
70
	mov		ebx, text+ 160	+1	; the position for the first IP address line
69
	mov		ebx, text+ 160	+1	; the position for the first IP address line
71
	
70
	
72
	xor		edx, edx			; edx is index into the ARP table
71
	xor		edx, edx			; edx is index into the ARP table
73
 
72
 
74
	cmp		ecx, 10
73
	cmp		ecx, 10
75
	jle		show_entries
74
	jle		show_entries
76
	mov		ecx, 10
75
	mov		ecx, 10
77
	
76
	
78
	
77
	
79
; The following code is not very efficient; Sorry about that.
78
; The following code is not very efficient; Sorry about that.
80
; ARPSTAT is a debugging tool, so I didn't want to put much effort in
79
; ARPSTAT is a debugging tool, so I didn't want to put much effort in
81
show_entries:
80
show_entries:
82
	; Ecx now holds the number of entries to populate.
81
	; Ecx now holds the number of entries to populate.
83
	; Ebx holds the place to put the data
82
	; Ebx holds the place to put the data
84
	; edx is a counter
83
	; edx is a counter
85
	cmp		ecx, 0
84
	cmp		ecx, 0
86
	je		red
85
	je		red
87
	
86
	
88
	push	ecx
87
	push	ecx
89
	push	edx
88
	push	edx
90
	push	ebx
89
	push	ebx
91
	
90
	
92
 
91
 
93
	; select the arp table entry (in edx)
92
	; select the arp table entry (in edx)
94
	mov		eax, 53
93
	mov		eax, 53
95
	mov		ebx, 255
94
	mov		ebx, 255
96
	mov		ecx, 202
95
	mov		ecx, 202
97
	mcall
96
	mcall
98
	
97
	
99
	; Read the IP address
98
	; Read the IP address
100
	mov		eax, 53
99
	mov		eax, 53
101
	mov		ebx, 255
100
	mov		ebx, 255
102
	mov		ecx, 203
101
	mov		ecx, 203
103
	mcall
102
	mcall
104
	
103
	
105
	; IP in eax. Get the address to put it back 
104
	; IP in eax. Get the address to put it back 
106
	pop		ebx
105
	pop		ebx
107
	push		ebx
106
	push		ebx
108
	
107
	
109
	call		writeDecimal			; Extract 1 byte from eax, store it in string	
108
	call		writeDecimal			; Extract 1 byte from eax, store it in string	
110
	add		ebx, 4
109
	add		ebx, 4
111
	shr		eax, 8
110
	shr		eax, 8
112
	call		writeDecimal			; Extract 1 byte from eax, store it in string	
111
	call		writeDecimal			; Extract 1 byte from eax, store it in string	
113
	add		ebx, 4
112
	add		ebx, 4
114
	shr		eax, 8
113
	shr		eax, 8
115
	call		writeDecimal			; Extract 1 byte from eax, store it in string	
114
	call		writeDecimal			; Extract 1 byte from eax, store it in string	
116
	add		ebx, 4
115
	add		ebx, 4
117
	shr		eax, 8
116
	shr		eax, 8
118
	call		writeDecimal			; Extract 1 byte from eax, store it in string	
117
	call		writeDecimal			; Extract 1 byte from eax, store it in string	
119
 
118
 
120
	add		ebx, 4
119
	add		ebx, 4
121
	
120
	
122
	; Now display the 6 byte MAC
121
	; Now display the 6 byte MAC
123
	push		ebx
122
	push		ebx
124
	mov		eax, 53
123
	mov		eax, 53
125
	mov		ebx, 255
124
	mov		ebx, 255
126
	mov		ecx, 204
125
	mov		ecx, 204
127
	mcall
126
	mcall
128
	pop		ebx
127
	pop		ebx
129
		
128
		
130
	mov		ecx, eax
129
	mov		ecx, eax
131
 
130
 
132
	shr		eax, 4
131
	shr		eax, 4
133
	and		eax, 0x0f
132
	and		eax, 0x0f
134
	mov		al, [eax + hextable]
133
	mov		al, [eax + hextable]
135
	mov		[ebx], al
134
	mov		[ebx], al
136
	inc		ebx
135
	inc		ebx
137
	mov		eax, ecx
136
	mov		eax, ecx
138
	and		eax, 0x0f
137
	and		eax, 0x0f
139
	mov		al, [eax + hextable]
138
	mov		al, [eax + hextable]
140
	mov		[ebx], al
139
	mov		[ebx], al
141
	inc		ebx
140
	inc		ebx
142
	mov		eax, ecx
141
	mov		eax, ecx
143
	shr		eax, 12
142
	shr		eax, 12
144
	and		eax, 0x0f
143
	and		eax, 0x0f
145
	mov		al, [eax + hextable]
144
	mov		al, [eax + hextable]
146
	mov		[ebx], al
145
	mov		[ebx], al
147
	inc		ebx
146
	inc		ebx
148
	mov		eax, ecx
147
	mov		eax, ecx
149
	shr		eax, 8
148
	shr		eax, 8
150
	and		eax, 0x0f
149
	and		eax, 0x0f
151
	mov		al, [eax + hextable]
150
	mov		al, [eax + hextable]
152
	mov		[ebx], al
151
	mov		[ebx], al
153
	inc		ebx
152
	inc		ebx
154
	mov		eax, ecx
153
	mov		eax, ecx
155
	shr		eax, 20
154
	shr		eax, 20
156
	and		eax, 0x0f
155
	and		eax, 0x0f
157
	mov		al, [eax + hextable]
156
	mov		al, [eax + hextable]
158
	mov		[ebx], al
157
	mov		[ebx], al
159
	inc		ebx
158
	inc		ebx
160
	mov		eax, ecx
159
	mov		eax, ecx
161
	shr		eax, 16
160
	shr		eax, 16
162
	and		eax, 0x0f
161
	and		eax, 0x0f
163
	mov		al, [eax + hextable]
162
	mov		al, [eax + hextable]
164
	mov		[ebx], al
163
	mov		[ebx], al
165
	inc		ebx
164
	inc		ebx
166
	mov		eax, ecx
165
	mov		eax, ecx
167
	shr		eax, 28
166
	shr		eax, 28
168
	mov		al, [eax + hextable]
167
	mov		al, [eax + hextable]
169
	mov		[ebx], al
168
	mov		[ebx], al
170
	inc		ebx
169
	inc		ebx
171
	mov		eax, ecx
170
	mov		eax, ecx
172
	shr		eax, 24
171
	shr		eax, 24
173
	and		eax, 0x0f
172
	and		eax, 0x0f
174
	mov		al, [eax + hextable]
173
	mov		al, [eax + hextable]
175
	mov		[ebx], al
174
	mov		[ebx], al
176
	inc		ebx
175
	inc		ebx
177
 
176
 
178
	push		ebx
177
	push		ebx
179
	mov		eax, 53
178
	mov		eax, 53
180
	mov		ebx, 255
179
	mov		ebx, 255
181
	mov		ecx, 205
180
	mov		ecx, 205
182
	mcall
181
	mcall
183
	pop		ebx
182
	pop		ebx
184
	
183
	
185
	mov		ecx, eax
184
	mov		ecx, eax
186
 
185
 
187
	shr		eax, 4
186
	shr		eax, 4
188
	and		eax, 0x0f
187
	and		eax, 0x0f
189
	mov		al, [eax + hextable]
188
	mov		al, [eax + hextable]
190
	mov		[ebx], al
189
	mov		[ebx], al
191
	inc		ebx
190
	inc		ebx
192
	mov		eax, ecx
191
	mov		eax, ecx
193
	and		eax, 0x0f
192
	and		eax, 0x0f
194
	mov		al, [eax + hextable]
193
	mov		al, [eax + hextable]
195
	mov		[ebx], al
194
	mov		[ebx], al
196
	inc		ebx
195
	inc		ebx
197
	mov		eax, ecx
196
	mov		eax, ecx
198
	shr		eax, 12
197
	shr		eax, 12
199
	and		eax, 0x0f
198
	and		eax, 0x0f
200
	mov		al, [eax + hextable]
199
	mov		al, [eax + hextable]
201
	mov		[ebx], al
200
	mov		[ebx], al
202
	inc		ebx
201
	inc		ebx
203
	mov		eax, ecx
202
	mov		eax, ecx
204
	shr		eax, 8
203
	shr		eax, 8
205
	and		eax, 0x0f
204
	and		eax, 0x0f
206
	mov		al, [eax + hextable]
205
	mov		al, [eax + hextable]
207
	mov		[ebx], al
206
	mov		[ebx], al
208
 
207
 
209
	; Now display the stat field
208
	; Now display the stat field
210
	inc		ebx
209
	inc		ebx
211
	inc		ebx
210
	inc		ebx
212
	push		ebx
211
	push		ebx
213
	mov		eax, 53
212
	mov		eax, 53
214
	mov		ebx, 255
213
	mov		ebx, 255
215
	mov		ecx, 206
214
	mov		ecx, 206
216
	mcall
215
	mcall
217
	pop		ebx
216
	pop		ebx
218
	
217
	
219
	mov		ecx, eax
218
	mov		ecx, eax
220
 
219
 
221
	shr		eax, 4
220
	shr		eax, 4
222
	and		eax, 0x0f
221
	and		eax, 0x0f
223
	mov		al, [eax + hextable]
222
	mov		al, [eax + hextable]
224
	mov		[ebx], al
223
	mov		[ebx], al
225
	inc		ebx
224
	inc		ebx
226
	mov		eax, ecx
225
	mov		eax, ecx
227
	and		eax, 0x0f
226
	and		eax, 0x0f
228
	mov		al, [eax + hextable]
227
	mov		al, [eax + hextable]
229
	mov		[ebx], al
228
	mov		[ebx], al
230
	inc		ebx
229
	inc		ebx
231
	mov		eax, ecx
230
	mov		eax, ecx
232
	shr		eax, 12
231
	shr		eax, 12
233
	and		eax, 0x0f
232
	and		eax, 0x0f
234
	mov		al, [eax + hextable]
233
	mov		al, [eax + hextable]
235
	mov		[ebx], al
234
	mov		[ebx], al
236
	inc		ebx
235
	inc		ebx
237
	mov		eax, ecx
236
	mov		eax, ecx
238
	shr		eax, 8
237
	shr		eax, 8
239
	and		eax, 0x0f
238
	and		eax, 0x0f
240
	mov		al, [eax + hextable]
239
	mov		al, [eax + hextable]
241
	mov		[ebx], al
240
	mov		[ebx], al
242
	
241
	
243
	; Now display the TTL field (this is intel word format)
242
	; Now display the TTL field (this is intel word format)
244
	inc		ebx
243
	inc		ebx
245
	inc		ebx
244
	inc		ebx
246
	push		ebx
245
	push		ebx
247
	mov		eax, 53
246
	mov		eax, 53
248
	mov		ebx, 255
247
	mov		ebx, 255
249
	mov		ecx, 207
248
	mov		ecx, 207
250
	mcall
249
	mcall
251
	pop		ebx
250
	pop		ebx
252
	
251
	
253
	mov		ecx, eax
252
	mov		ecx, eax
254
 
253
 
255
	shr		eax, 12
254
	shr		eax, 12
256
	and		eax, 0x0f
255
	and		eax, 0x0f
257
	mov		al, [eax + hextable]
256
	mov		al, [eax + hextable]
258
	mov		[ebx], al
257
	mov		[ebx], al
259
	inc		ebx
258
	inc		ebx
260
	mov		eax, ecx
259
	mov		eax, ecx
261
	shr		eax, 8
260
	shr		eax, 8
262
	and		eax, 0x0f
261
	and		eax, 0x0f
263
	mov		al, [eax + hextable]
262
	mov		al, [eax + hextable]
264
	mov		[ebx], al
263
	mov		[ebx], al
265
	inc		ebx
264
	inc		ebx
266
	mov		eax, ecx
265
	mov		eax, ecx
267
	shr		eax, 4
266
	shr		eax, 4
268
	and		eax, 0x0f
267
	and		eax, 0x0f
269
	mov		al, [eax + hextable]
268
	mov		al, [eax + hextable]
270
	mov		[ebx], al
269
	mov		[ebx], al
271
	inc		ebx
270
	inc		ebx
272
	mov		eax, ecx
271
	mov		eax, ecx
273
	and		eax, 0x0f
272
	and		eax, 0x0f
274
	mov		al, [eax + hextable]
273
	mov		al, [eax + hextable]
275
	mov		[ebx], al
274
	mov		[ebx], al
276
 
275
 
277
	
276
	
278
	pop		ebx
277
	pop		ebx
279
	add		ebx, 40
278
	add		ebx, 40
280
	pop		edx
279
	pop		edx
281
	inc		edx
280
	inc		edx
282
	pop		ecx
281
	pop		ecx
283
	dec		ecx
282
	dec		ecx
284
	jmp		show_entries
283
	jmp		show_entries
285
 
284
 
286
red:                          	; redraw
285
red:                          	; redraw
287
    call draw_window
286
    call draw_window
288
    jmp  still
287
    jmp  still
289
   
288
   
290
key:                          	; Keys are not valid at this part of the
289
key:                          	; Keys are not valid at this part of the
291
    mov  eax,2                  ; loop. Just read it and ignore
290
    mov  eax,2                  ; loop. Just read it and ignore
292
    mcall
291
    mcall
293
    jmp  still
292
    jmp  still
294
   
293
   
295
button:                       	; button
294
button:                       	; button
296
    mov  eax,17                 ; get id
295
    mov  eax,17                 ; get id
297
    mcall
296
    mcall
298
   
297
   
299
    cmp  ah,1                   ; button id=1 ?
298
    cmp  ah,1                   ; button id=1 ?
300
    jnz  still
299
    jnz  still
301
 
300
 
302
    mov  eax,0xffffffff         ; close this program
301
    mov  eax,0xffffffff         ; close this program
303
    mcall
302
    mcall
304
 
-
 
305
    jmp  still
-
 
306
 
-
 
307
 
303
 
308
 
304
 
309
writeDecimal:
305
writeDecimal:
310
	pusha
306
	pusha
311
	and	eax, 0xff
307
	and	eax, 0xff
312
	mov	ecx, eax
-
 
313
	mov	dl, 100
308
	mov	dl, 100
314
	div	dl
309
	div	dl
315
	mov	cl, ah
310
	movzx	ecx, ah
316
	add	al, '0'
311
	add	al, '0'
317
	mov	[ebx], al
312
	mov	[ebx], al
318
	inc	ebx
313
	inc	ebx
319
	mov	eax, ecx
314
	mov	eax, ecx
320
	mov	dl, 10
315
	mov	dl, 10
321
	div	dl
316
	div	dl
322
	mov	cl, ah
-
 
323
	add	al, '0'
317
	add	ax, '00'
324
	mov	[ebx], al
-
 
325
	inc	ebx
-
 
326
	mov	al, ah
-
 
327
	add	al, '0'
-
 
328
	mov	[ebx], al
318
	mov	[ebx], ax
329
	popa
319
	popa
330
	ret
320
	ret
331
   
321
   
332
   
322
   
333
;   *********************************************
323
;   *********************************************
334
;   *******  WINDOW DEFINITIONS AND DRAW ********
324
;   *******  WINDOW DEFINITIONS AND DRAW ********
335
;   *********************************************
325
;   *********************************************
336
   
326
   
337
   
327
   
338
draw_window:
328
draw_window:
339
   
329
   
340
    mov  eax,12                    ; function 12:tell os about windowdraw
330
    mov  eax,12                    ; function 12:tell os about windowdraw
341
    mov  ebx,1                     ; 1, start of draw
331
    mov  ebx,1                     ; 1, start of draw
342
    mcall
332
    mcall
343
   
333
   
344
                                   ; DRAW WINDOW
334
                                   ; DRAW WINDOW
345
    mov  eax,0                     ; function 0 : define and draw window
335
    mov  eax,0                     ; function 0 : define and draw window
346
    mov  ebx,100*65536+280         ; [x start] *65536 + [x size]
336
    mov  ebx,100*65536+280         ; [x start] *65536 + [x size]
347
    mov  ecx,100*65536+270         ; [y start] *65536 + [y size]
337
    mov  ecx,100*65536+270         ; [y start] *65536 + [y size]
348
    mov  edx,0x14224466            ; color of work area RRGGBB
338
    mov  edx,0x14224466            ; color of work area RRGGBB
349
    mov  edi,title                 ; WINDOW LABEL
339
    mov  edi,title                 ; WINDOW LABEL
350
    mcall
340
    mcall
351
   
341
   
352
                                   
342
                                   
353
   	; Re-draw the screen text
343
   	; Re-draw the screen text
354
    cld
344
    cld
355
    mov  eax,4
345
    mov  eax,4
356
    mov  ebx,25*65536+35           ; draw info text with function 4
346
    mov  ebx,25*65536+35           ; draw info text with function 4
357
    mov  ecx,0xffffff
347
    mov  ecx,0xffffff
358
    mov  edx,text
348
    mov  edx,text
359
    mov  esi,40
349
    mov  esi,40
360
  newline:
350
  newline:
361
    mcall
351
    mcall
362
    add  ebx,16
352
    add  ebx,16
363
    add  edx,40
353
    add  edx,esi
364
    cmp  [edx],byte 'x'
354
    cmp  [edx],byte 'x'
365
    jnz  newline
355
    jnz  newline
366
   
356
   
367
   
357
   
368
    mov  eax,12                    ; function 12:tell os about windowdraw
358
    mov  eax,12                    ; function 12:tell os about windowdraw
369
    mov  ebx,2                     ; 2, end of draw
359
    mov  ebx,2                     ; 2, end of draw
370
    mcall
360
    mcall
371
   
361
   
372
    ret
362
    ret
373
 
363
 
374
; Taken from PS.ASM  
364
; Taken from PS.ASM  
375
printhex:
365
printhex:
376
; number in eax
366
; number in eax
377
; print to ebx
367
; print to ebx
378
; xlat from hextable
368
; xlat from hextable
379
 pusha
369
 pusha
380
 mov esi, ebx
370
 mov esi, ebx
381
 add esi, 8
371
 add esi, 8
382
 mov ebx, hextable
372
 mov ebx, hextable
383
 mov ecx, 8
373
 mov ecx, 8
384
phex_loop:
374
phex_loop:
385
 mov edx, eax
375
 mov edx, eax
386
 and eax, 15
376
 and eax, 15
387
 xlatb
377
 xlatb
388
 mov [esi], al
378
 mov [esi], al
389
 mov eax, edx
379
 mov eax, edx
390
 shr eax, 4
380
 shr eax, 4
391
 dec esi
381
 dec esi
392
 loop phex_loop
382
 loop phex_loop
393
 popa
383
 popa
394
 ret
384
 ret
395
 
385
 
396
   
386
   
397
; DATA AREA
387
; DATA AREA
398
   
388
   
399
text:
389
text:
400
    db ' Number of ARP entries: xxxxxxxx        '
390
    db ' Number of ARP entries: xxxxxxxx        '
401
    db ' Maximum # of entries : xxxxxxxx        '
391
    db ' Maximum # of entries : xxxxxxxx        '
402
    db '                                        '
392
    db '                                        '
403
    db ' IP Address      MAC          Stat TTL  '
393
    db ' IP Address      MAC          Stat TTL  '
404
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
394
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
405
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
395
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
406
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
396
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
407
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
397
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
408
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
398
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
409
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
399
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
410
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
400
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
411
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
401
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
412
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
402
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
413
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
403
    db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
414
    db 'x <- END MARKER, DONT DELETE            '
404
    db 'x' ; <- END MARKER, DONT DELETE
415
 
405
 
416
 
406
 
417
blank:
407
blank:
418
 	  db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
408
 	  db ' xxx.xxx.xxx.xxx xxxxxxxxxxxx xxxx xxxx '
419
 
409
 
420
 
410
 
421
title    db   'ARP Table ( First 10 Entries )',0
411
title    db   'ARP Table ( First 10 Entries )',0
422
   
412
   
423
hextable db '0123456789ABCDEF'
413
hextable db '0123456789ABCDEF'
424
 
414
 
425
 
415
 
426
I_END:
416
I_END:
427
-
 
428
-
 
429
-
 
430
-
 
431
-
 
432
-