File: tag_modem.html

package info (click to toggle)
lg-issue32 2-2
  • links: PTS
  • area: main
  • in suites: potato
  • size: 2,320 kB
  • ctags: 142
  • sloc: makefile: 36; ansic: 25; sh: 4
file content (542 lines) | stat: -rw-r--r-- 23,237 bytes parent folder | download | duplicates (3)
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
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
<!--startcut ======================================================= -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html><head>
<META NAME="generator" CONTENT="lgazmail v1.1preB">
<TITLE>The Answer Guy 32: 
Fwd: ANOTHER MODEM PROB 
</TITLE> 
<!-- ORIGINAL SUBJECT:
Fwd: ANOTHER MODEM PROB 
JTD SUBTITLE:

-->
</head>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
ALINK="#FF0000">
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<H1 align="center"><A NAME="answer">
	<img src="../gx/dennis/qbubble.gif" alt="" border="0" align="middle">
	<a href="./lg_toc32.html">The Answer Guy</a>
	<img src="../gx/dennis/bbubble.gif" alt="" border="0" align="middle">
</A></H1> 
<BR>
<H4 align="center">By James T. Dennis,
	<a href="mailto:answerguy@ssc.com">answerguy@ssc.com</a>
	<BR>Starshine Technical Services, <A HREF="http://www.starshine.org/">http://www.starshine.org/</A> 
</H4>
<p><hr><p>
<!--endcut ========================================================= -->

<p><em>[We seem to be coming in at the middle of this thread, but I don't see
	where the previous might be found.  We'll have to make do with
	what's been quoted here,  Sorry, readers! -- Heather]</em></p>

<P> <hr width="40%" align="center"> <P>
<!--                          .............................          -->

<H3><img src="../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
	align="left" border="0">ANOTHER MODEM PROB </H3>
<p><strong>From CodeWaRi0r on 18 Aug 1998 </strong></p>
<!-- begin body -->

<em><font color="navy"
><p><strong 
>&gt; It sounds like a "winmodem."  (These are devices which don't
<br>&gt; support the standard AT command set and which require proprietary
<br>&gt; drivers in order to function.  Currently those drivers are only
<br>&gt; available for Windows --- I gather that some of them don't even
<br>&gt; work under Windows NT).
</strong></p>
<p><strong>&gt; The acid test for this is to try to use the modem under DOS (boot
<br>&gt; from DOS and try run a program like Telix).  If that also can't
<br>&gt; "see" the modem --- then it's not a real modem; it's a "winmodem."
</strong></p>
<p><strong>&gt; Although I've read rumors about an effort to reverse engineer the
<br>&gt; "Rockwell chipset" (RPI) --- which is the one commonly used in
<br>&gt; these "winmodems" --- I believe that you're only reliable recourse
<br>&gt; for now is to exchange this piece of junk with a real modem.
</strong></p>
</font></em>

<p><strong>nope.. im sure i dont have a winmodem. actually, I have to modems on
my computer .. one winmodem on COM1 and a regular modem by BOCA on
COM3.. ok..  just help me out with one more thing and ill be out of
your hair <IMG SRC="../gx/dennis/smily.gif" ALT=":)" height="24" width="20" align="middle"> ok..  ive established that i dont have a winmodem.. i
start up X. run the modem configurer (this program makes a link
between <tt>/dev/modem</tt> and <tt>cua2</tt>.. or so it says... i just select the COM
port and press ok and thats it.  Am i missing a step here?)
</strong></p>

<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>It could also be an IRQ conflict --- on a conventional
PC COM1 and COM3 share IRQ's with COM4 and COM2 
respectively.
</blockquote>
<blockquote>I don't know how you're sure that you don't have a winmodem
--- unless it's external, or you've been able to connect
to it under DOS or Linux with standard AT commands. 
</blockquote>
<blockquote>However, I'll assume for the moment that this is the case.
</blockquote>
<blockquote>I would leave X completely out of this for now.  I wouldn't
use any "modem configurator"  (that's just one more piece
of junk between me and the troubleshooting).
</blockquote>
<blockquote>One way to do this testing is to run minicom or C-Kermit
to connect to the modem,  Then you should be able to 
type AT commands directly to the modem and get responses
back.  Before you do this, look at the nodes under the
<tt>/dev/</tt> directory with the '<tt>ls -l</tt>' command. Make sure that
they look something like:
</blockquote>
<pre>lrwxrwxrwx   1 root     uucp            5 Jul 13 16:52 /dev/modem -&gt; ttyS2
crw-rw----   1 root     uucp       4,  64 Aug 18 15:17 /dev/ttyS0
crw-rw----   1 root     uucp       4,  65 Aug 18 15:17 /dev/ttyS1
crw-rw----   1 root     uucp       4,  66 Nov 30  1997 /dev/ttyS2
crw-rw----   1 root     uucp       4,  67 Nov 30  1997 /dev/ttyS3
</pre>
<blockquote>.... where the "modem" entry is a symlink to the appropriate
serial port (<tt>ttyS2</tt> for a normal PC's COM3).
</blockquote>
<blockquote>You should also make sure that the permissions on most
of your communications software are such that it is 
run by '<tt>root</tt>' (such as <tt>pppd</tt>) or is at least SGID 
'<tt>uucp</tt>' (you could chgrp all these to '<tt>modem</tt>', 
create a '<tt>modem</tt>' group, etc --- I use '<tt>uucp</tt>' since 
that is an older Unix convention).
</blockquote>
<blockquote>So, an '<tt>ls -l</tt>' of your <tt>minicom</tt>, 
<tt>kermit</tt>, <tt>uucico</tt>, <tt>pppd</tt>, <tt>chat</tt>,
should look something like this:
</blockquote>
<pre>-rwxr-sr-x   1 root     uucp       119280 Nov 30  1997 /usr/bin/minicom
-r-sr-sr-x   1 uucp     uucp       395148 Nov 30  1997 /usr/lib/uucp/uucico
-r-xr-sr-x   1 root     uucp       632609 Feb 10  1997 /usr/local/bin/kermit
-rwsr-x---   1 root	dialout	    83856 Nov 30  1997 /usr/sbin/pppd
-rwxr-xr-x   1 root     bin	    12224 Nov 30  1997 /usr/sbin/chat
</pre>
<blockquote>Note that <tt>minicom</tt>, <tt>uucico</tt> and <tt>kermit</tt> 
are SGID <tt>uucp</tt> --- they don't need higher privileges.  
<tt>uucico</tt> is the actual communications engine for the 
<tt>uucp</tt> suite --- it's normally only called by the <tt>uucp</tt> 
command, but it needs access to some directories (usually 
<tt>/var/spool/uucp*</tt> or <tt>/usr/spool/uucp*</tt>) to work properly.
So we make it SUID to the <tt>uucp</tt> user as well as SGID to the 
<tt>uucp</tt> group.
</blockquote>
<blockquote>You can ignore all of those details for <tt>pppd</tt> since 
it must be run as root (in order to set IP addresses and add routing
entries).  Here I've set it to be in the 'dialout' group
--- so that I can restrict who can execute this (thus
limiting who could try to use exploits on <tt>pppd</tt> to gain
'<tt>root</tt>' privileges).  This is a simple and far too uncommon
way to narrow the security holes on a system.
</blockquote>
<blockquote>Note that the '<tt>chat</tt>' program gets no special 
permissions.  It is invoked by pppd which is already running as 
'<tt>root</tt>' --- and thus, it needs no "extra" privileges.
</blockquote>

<strong><p><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>so i do that, and quit X.  I run chat with the following script
</p></strong>
<pre>TIMEOUT 5
"" ATZ
OK ATDT6161038
ABORT "NO CARRIER"
ABORT BUSY
ABORT "NO DIALTONE"
ABORT WAITING
TIMEOUT 45
CONNECT "" 
TIMEOUT 5
"ogin:" blah
"assword:" blah 
</pre>
<strong><p>i run chat 
</p></strong>
<strong><p>$<tt>chat -f /etc/ppp/chatscript</tt> (where i store the above script)
i see linux go:
</p></strong>

<strong><p><code>AT</code></p></strong>

<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>Aha!  That's your problem.  You aren't supposed to run '<tt>chat</tt>'  
directly.  You are supposed to run <tt>pppd</tt>, and let <EM>it</EM>
invoke the '<tt>chat</tt>'.  This is due to some technical internals
about how file descriptors are inherited.
</blockquote>
<blockquote>The '<tt>chat</tt>' program writes to its '<tt>stdout</tt>' 
file descriptor and expects input (modem responses) from it's '<tt>stdin</tt>'  
For that to work you have to provide it with suitable 
open standard files.  One way to do that would be to type:
</blockquote>

<blockquote><blockquote><code
	>chat -V  "" "ATZ" "OK" &lt; /dev/modem &gt; /dev/modem
</code></blockquote></blockquote>

<blockquote>... which engages in the simplest meaningful dialog that
I know of with a Hayes compatible modem.  It simply 
"waits for an empty string" (nothing), sends an <tt>ATZ</tt>, and
waits for an "<tt>OK</tt>"
</blockquote>
<blockquote>The <tt>-V</tt> switch here tells '<tt>chat</tt>' to 
"be versbose to '<tt>stderr</tt>' which will, in this case, by our 
console/terminal.
</blockquote>
<blockquote>On my system that command returns:
</blockquote>

<blockquote><blockquote><code>AT&amp;FS2=255
</code></blockquote></blockquote>

<blockquote>... and an exit value (errorlevel) of <tt>0</tt> (no-error).  
This isn't exactly the output I would expect from my interpretation
of the <tt>man</tt> page.  But it's close enough (it suggests that my
modem returns this string when it recieves an <tt>ATZ</tt> comment
--- which suggests that this modem is translated <tt>ATZ</tt> into
"AT&amp;F" (return to factory zettings), and setting the <rr>S2</tt>
register to 255).  
</blockquote>
<blockquote>If I issue the command:
</blockquote>

<blockquote><blockquote><code
	>chat -V  "" "ATZ" "OK" &lt; /dev/ttyS3 &gt; /dev/ttyS3
</code></blockquote></blockquote>

<blockquote>... (a serial line with no modem attached) I get no output
and a return error of <tt>3</tt>.
</blockquote>
<blockquote>In any event you need to let pppd start your '<tt>chat</tt>' 
command.  The way to do that is to provide <tt>pppd</tt> with a 
suitable "options" file.  
</blockquote>
<blockquote>In my case I have multiple PPP accounts (some with
customers, some with ISP's).  So I create an <tt>/etc/ppp/options</tt>
file that just consists of one line:
</blockquote>

<blockquote><blockquote><code>lock
</code></blockquote></blockquote> 

<blockquote>... and I create different supplemental options files
that contain the details specific to a given provider.
</blockquote>
<blockquote>For example one looks pretty much like:
</blockquote>
<pre>asyncmap 0
crtscts
defaultroute
mtu 296		mru 296
modem /dev/modem 57600
connect "/usr/sbin/chat -f /etc/ppp/options.myisp"
</pre>
<blockquote>I'll skip the first several lines (you can read the PPP-HOWTO
and/or the <tt>pppd</tt> man pages for details about those) and focus
on the last couple of lines.
</blockquote>
<blockquote>The modem directive tells pppd to use serial line settings
(ioctls?, stty) that's appropriate for a modem.  The other
option would be "local" (use a null modem cable or some
sort of network connection).  This has purely to do with
how the line is "conditioned" and how the handshaking
lines are handled.
</blockquote>
<blockquote>The <tt>/dev/modem</tt> parameter tells it which device 
to open (and thus what file descriptors to pass to the command
that will be invoked via the "<tt>connect</tt>" directive.
</blockquote>
<blockquote>The 57600 is simply the speed to which pppd should should
set the serial line (I presume this is also used at part
of an '<tt>stty</tt>' like function call).
</blockquote>
<blockquote>The last line is the "<tt>connect</tt>" directive.  It 
tells pppd what command to invoke to deal with the modem.
</blockquote>
<blockquote>So, you then invoke pppd with a command like the 
following:
</blockquote>

<blockquote><blockquote><code>pppd file /etc/ppp/options.myisp
</code></blockquote></blockquote>

<blockquote>... this processes the "global" options in /etc/ppp/options
and then the options that you've specifed with the file
directive.  
</blockquote>
<blockquote>Many examples I've see specify many of the options one
the command line.  For example it's pretty common to
see a command like:
</blockquote>

<blockquote>
<blockquote>
<code>pppd modem /dev/modem 57600 file /usr/local/etc/ppprc
</code></blockquote></blockquote>

<blockquote>... which should be reasonably comprehensible once you
understand that pppd basically interprets all its command line 
in the same way as it processes directives in it's options
files.  Carefully reading the '<tt>man</tt>' page should clarify
what order and precedence affect the processing of all of 
these directives and options.  For example, you have to be 
sure to avoid any conflicting options <tt>~/.ppprc</tt>  (just 
get rid of any such file unless you know what you're doing
with it).
</blockquote>
<blockquote>Another simple testing trick is to use 'minicom' to
dial the phone and establish your connection (log in).
Then use the "Quit without Resetting the Line" option
(using the [Ctrl]+[A], [Q] key sequence).  This should
dump you out of minicom and back to a shell prompt 
<EM>without</EM> disconnecting your modem.  (It is then possible
to invoke pppd on that line --- using an alternative version
of the ISP options file without any "connect" directive).
</blockquote>
<blockquote>That trick doesn't work with kermit --- it won't exit
without resetting the communications line.   From what
Frank de la Cruz tells me you can't use C-Kermit as a
replacement for 'chat' because of this.  Basically he
says it violates some programming standards to do this.
(I still don't understand that --- but it's not currently
a priority to me.  If someone understands it and wants
to explain --- write an article and send me a copy).
</blockquote>
<blockquote>but the modem doesnt respond... i know its weird.. but i just dont
think linux knows its there.. is the "linking" i do in X all that's
necessary? or am i missing something?
</blockquote>
<blockquote>The problem is that you haven't understood the PPP-HOWTO.
I can sympathize with that --- I spent quite a few hours
banging my head on it (at least an earlier version of it).
</blockquote>
<blockquote>However, try reading it again.
</blockquote>
<blockquote>There are several GUI and dialog driven frontends to 
configure your PPP connection for you.  I've never used
any of them (they didn't exist back when I was doing my
head banging).  In any event a search of the Linux Software
Map using Boutell's search page 
(<A HREF="http://www.boutell.com/lsm">http://www.boutell.com/lsm</A>)
on the term PPP will give a list of several of these and
a couple dozen related samples and utilities.  There are
<A HREF="http://www.kde.org/">KDE</A>, Motif, and Tk interfaces 
(among others).
</blockquote>
<blockquote>You could try a few of those to see if any of them	
works for you.  You should also be able to get your ISP
to help.  If they refuse to help with Linux/Unix ppp
technical support --- consider getting a new ISP.
</blockquote>

<strong><p><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>again sorry to bother u.
</p></strong>

<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>The question doesn't bother me.  No apologies are necessary
for that.  If I seemed grumpy, it's because I don't like
to see this sort of "hakkerboyz" text.  I don't think it's
cool and I do find it difficult to read.  It is only a bit
less offensive than GETTING MESSAGES IN ALL CAPS.
</blockquote>
<blockquote>People who won't take the time to use reasonable punctuation
and spelling in their questions cause me to wonder why I should 
take the time to answer them.   I'm sure that many don't even 
pause to wonder; they just hit the delete key and move on.
</blockquote>
<blockquote>I have no idea how old you are, or why you choose to write
this way.  Perhaps you have some very good reasons --- and 
perhaps you think I'm some sort of pedantic curmudgeon.
You're welcome to hold and share that opinion (and I'll even
agree with part of it).
</blockquote>
<blockquote>However, one of the few liberties I take in this column is
the opportunity to occasional jump up on my soapbox and
express my opinion.  The evidence is that some of my readers
find at least some of my tirades amusing, even (according
to some reports) "inspiring."   
</blockquote>
<blockquote>For those that don't like it --- I can only say "Well, I did
at least attempt to answer the question."  (I don't remember
of any occasion where I just flamed someone without answering
their question. I just won't say "RTFM" --- I'll at least
say which "FM" to "R").
</blockquote>
<blockquote>Anyway, I hope that the hint about how to invoke '<tt>chat</tt>'
helps.  If that doesn't work (and direct invocations
with the redirection as shown, and '<tt>minicom</tt>' tests) all
don't work, 
</blockquote>
<!-- end body -->

<P> <hr width="40%" align="center"> <P>
<!--                          .............................          -->

<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>More on Grammar</H3>
<p><strong>From CodeWaRi0r on 18 Aug 1998 </strong></p>
<!-- begin body -->

<strong><p>BTW: I apologize for my sloppy spelling and grammer... it's just the
internet talk that does that to you <IMG SRC="../gx/dennis/smily.gif" ALT=":)" height="24" width="20" align="middle"> Despite my erronious writing
(I'm sure I spelled that wrong.. LoL), I'm an accompilshed
programmer in C\C++ (including Window's MFC and UNIX), Visual Basic,
Perl, and Assembly languages
</p></strong>


<blockquote><img src="../gx/dennis/bbub.gif" height="28" width="50" 
	alt="(!)" border="0"
>Thanks.  I knew you <EM>could</EM> do it.  I do recognize that
particular style of writing as a symptom of too much time 
in "chat lounges" (or in IRC depending on your preferences).  
</blockquote>
<blockquote>However, it is still difficult to read --- and it still
does say something about the relative importance you
place on a given communication. (Certainly you wouldn't
expect a resume' to be taken seriously if it was written
in this style).
</blockquote>
<blockquote>Incidentally the word is normally rendered as "erroneously."
</blockquote>
<blockquote>If you are an emacs user you can "quick check" a word using
the <tt>M-$</tt> key binding.  Since I use '<tt>viper</tt>' mode, which 
makes it irritating to get at the <tt>[Esc]</tt> for use as <tt>[Meta]</tt>
 I add the following binding to my <tt>.emacs</tt> file:
</blockquote>

<blockquote><blockquote><code>(global-set-key '[f3 ?$] 'ispell-word)
<br>(global-set-key '[f3 ?%] 'ispell-buffer)
</code></blockquote></blockquote>

<blockquote>... which means that the two key sequence: <tt>[F3], [$]</tt>
will check the word at point and <tt>[F3], [%]</tt> will check
the whole buffer.
</blockquote>
<blockquote>(I suspect that vim also has some features for running
<tt>ispell</tt> --- though I've never used any of the IMprovements
of that editor).
</blockquote>
<blockquote>The fact that using emacs (<tt>xemacs</tt>, actually) 
gives me '<tt>ispell</tt>' in all of my editing (including in my 
favorite mail reader, <tt>mh-e</tt>, and my preferred newsreader, 
<tt>Gnus</tt>) is one of the reasons why I use it.  
</blockquote>
<blockquote>I personally despise the default emacs key bindings (which I
think are designed to torture the pinky until you're ready to
chop it off).  So, I use <tt>viper-mode</tt> (a '<tt>vi</tt>' 
emulation package) for the majority of my editing --- and I 
supplement it with a fairly long list of custom binding, most of 
which start with <tt>[F3]</tt> (the first available function key 
that had nothing assigned to it --- <tt>[F1]</tt> was used as a 
"Help" prefix and [F2] had some weird two column mode function 
bound to it).
</blockquote>
<blockquote>So, I switch buffers with <tt>[F3] [b]</tt> and bring up a 
"buffer menu" with <tt>[F3] [B]</tt> (capitalized).  I bring up 
the '<tt>emacs</tt>' calendar package with <tt>[F3] [C]</tt> (capitalized)
and a "shell-mode" buffer with <tt>[F3] [c]</tt> (lower case ---
for "command").  I check my diary (appointment list) with
<tt>[F3] [D]</tt> (capitalized), and bring up "dired" (file-manager
buffers) with <tt>[F3] [d]</tt> (uncapitalized).  I "unsplit" my
display with <tt>[F3] [1]</tt> and split it vertically with
<tt>[F3] [2]</tt> or horizontally with <tt>[F3] [4]</tt>.  (The experienced
'<tt>emacs</tt>' buff may note that most of these are functions
that are normally accessed via <tt>C-x</tt> keybindings; a prefix 
that I find truly abominable).
</blockquote>
<blockquote>But ... I'm rambling.  Some day maybe I'll write an
article on how I use '<tt>xemacs</tt>' --- it may be amusing 
to some.
</blockquote>
<!-- end body -->

<!--startcut =======================================================  -->
<P> <hr> <P>
<H5 align="center"><a href="http://www.linuxgazette.com/ssc.copying.html"
	>Copyright &copy;</a> 1998, James T. Dennis <BR>
Published in <I>Linux Gazette</I> Issue 32 September 1998</H5>
<P> <hr> <P>

<!--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<table width="98%"><tr valign="center" align="center">
<td rowspan="3"><A HREF="../lg_answer32.html"><IMG
        SRC="../gx/dennis/answernew.gif"
        ALT="[ Answer Guy Index ]"></A></td>
  <td><A HREF="tag_phreak.html">phreak</A>
  <td><A HREF="tag_abandon.html">abandon</A>
  <td><A HREF="tag_javaterm.html">javaterm</A>
  <td><A HREF="tag_BBS.html">BBS</A>
  <td><A HREF="tag_flaws.html">flaws</A>
  <td><A HREF="tag_doslinux.html">doslinux</A>
  <td><A HREF="tag_resume.html">resume</A>

</tr><tr valign="center" align="center">
  <td><A HREF="tag_softwindows.html">softwindows</A>
  <td><A HREF="tag_convert.html">convert</A>
  <td><A HREF="tag_apache.html">apache</A>
  <td><A HREF="tag_emulate.html">emulate</A>
  <td><A HREF="tag_database.html">database</A>
  <td><A HREF="tag_distrib.html">distrib</A>
  <td><A HREF="tag_proxy.html">proxy</A>

</tr><tr valign="center" align="center">
  <td><A HREF="tag_disable.html">disable</A>
  <td><A HREF="tag_DVI.html">DVI</A>
  <td><A HREF="tag_superblock.html">superblock</A>
  <td><A HREF="tag_serial.html">serial</A>
  <td><A HREF="tag_permission.html">permission</A>
  <td><A HREF="tag_detach.html">detach</A>
  <td><A HREF="tag_cdr.html">cdr</A>

</tr><tr valign="center" align="center">
  <td><A HREF="tag_rs422.html">rs422</A>
  <td><A HREF="tag_modem.html">modem</A>
  <td><A HREF="tag_notfound.html">notfound</A>
  <td><A HREF="tag_tuning.html">tuning</A>
  <td><A HREF="tag_libc5.html">libc5</A>
  <td><A HREF="tag_startup.html">startup</A>
  <td><A HREF="tag_clock.html">clock</A>
  <td><A HREF="tag_ping.html">ping</A>

</tr><tr valign="center" align="center">
  <td><A HREF="tag_accounts.html">accounts</A>
  <td><A HREF="tag_lilo.html">lilo</A>
  <td><A HREF="tag_NDS.html">NDS</A>
  <td><A HREF="tag_95slow.html">95slow</A>
  <td><A HREF="tag_nonlinux.html">nonlinux</A>
  <td><A HREF="tag_progenv.html">progenv</A>
  <td><A HREF="tag_cluster.html">cluster</A>
  <td><A HREF="tag_ftpd.html">ftpd</A>

</tr></table>
<P> <hr> <P>
<!--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-->
<A HREF="./lg_toc32.html"><IMG SRC="../gx/indexnew.gif"
        ALT="[ Table Of Contents ]"></A>
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
        ALT="[ Front Page ]"></A>
<A HREF="lg_bytes32.html"><IMG SRC="../gx/back2.gif"
        ALT="[ Previous Section ]"></A>
<A HREF="./stemen.html"><IMG SRC="../gx/fwd.gif"
        ALT="[ Next Section ]"></A>
<!--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-->
</body>
</html>
<!--endcut ========================================================= -->