This commit is contained in:
gferg 2000-12-11 15:15:51 +00:00
parent 477f43fac2
commit 552afeb041
9 changed files with 471 additions and 326 deletions

View File

@ -1,5 +1,7 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
<!ENTITY version "0.6a">
<!ENTITY s-intro "<link linkend=s-intro>Introduction</link>">
<!ENTITY s-doyou "<link linkend=s-doyou>Do you need assembly?</link>">
<!ENTITY s-assem "<link linkend=s-assem>Assemblers</link>">
@ -26,7 +28,7 @@
<surname>Boldyshev</surname>
<affiliation>
<orgname>
<ulink url="http://linuxassembly.org/">
<ulink url="http://linuxassembly.org">
Linux Assembly<anchor id="konst"></ulink>
</orgname>
<address>
@ -62,7 +64,8 @@ under the terms of the GNU Free Documentation License, Version 1.1;
with no Invariant Sections, with no Front-Cover Texts, and no Back-Cover texts.
</para></legalnotice>
<releaseinfo>Version 0.6</releaseinfo>
<releaseinfo>Version &version;</releaseinfo>
<edition>&version;</edition>
<pubdate role="cvs">$Date$</pubdate>
<abstract>
@ -219,7 +222,7 @@ and no more
I (<link linkend="fare">Fare</link>) had been looking for some time
for a serious hacker to replace me as maintainer of this document,
and am pleased to announce
<link linkend="fare">Konstantin</link> as my worthy successor.
<link linkend="konst">Konstantin</link> as my worthy successor.
</para></note>
</simplesect>
@ -637,10 +640,14 @@ notably Linux, *BSD, VSTa, OS/2, *DOS, Win*, etc.
<para>
The original GCC site is the GNU FTP site
<ulink url="ftp://prep.ai.mit.edu/pub/gnu/gcc/"></ulink>
<ulink url="ftp://prep.ai.mit.edu/pub/gnu/gcc/">
ftp://prep.ai.mit.edu/pub/gnu/gcc/
</ulink>
together with all released application software from the GNU project.
Linux-configured and pre-compiled versions can be found in
<ulink url="ftp://metalab.unc.edu/pub/Linux/GCC/"></ulink>
<ulink url="ftp://metalab.unc.edu/pub/Linux/GCC/">
ftp://metalab.unc.edu/pub/Linux/GCC/
</ulink>
There are a lot of FTP mirrors of both sites
everywhere around the world, as well as CD-ROM copies.
</para>
@ -648,7 +655,7 @@ everywhere around the world, as well as CD-ROM copies.
<para>
GCC development has split into two branches some time ago (GCC 2.8 and EGCS),
but they merged back, and current GCC webpage is
<ulink url="http://gcc.gnu.org"></ulink>.
<ulink url="http://gcc.gnu.org">http://gcc.gnu.org</ulink>.
</para>
<para>
@ -673,7 +680,9 @@ There is also an OS/2 port of GCC called EMX;
it works under DOS too,
and includes lots of unix-emulation library routines.
Look around the following site:
<ulink url="ftp://ftp-os2.cdrom.com/pub/os2/emx09c/"></ulink>.
<ulink url="ftp://ftp-os2.cdrom.com/pub/os2/emx09c/">
ftp://ftp-os2.cdrom.com/pub/os2/emx09c
</ulink>.
</para>
</section>
@ -715,8 +724,10 @@ specifically about assembly, but it's down.
Its data have nonetheless been recovered on the
<link linkend="p-djgpp">DJGPP site</link>,
that contains a mine of other useful information:
<ulink url="http://www.delorie.com/djgpp/doc/brennan/"></ulink>, and in the
<ulink url="http://www.castle.net/~avly/djasm.html">DJGPP Quick ASM Programming Guide</ulink>.
<ulink url="http://www.delorie.com/djgpp/doc/brennan/">
http://www.delorie.com/djgpp/doc/brennan/</ulink>, and in the
<ulink url="http://www.castle.net/~avly/djasm.html">
DJGPP Quick ASM Programming Guide</ulink>.
</para>
<para>
@ -892,7 +903,9 @@ in a package named binutils.
<para>
The latest version is available from HJLu at
<ulink url="ftp://ftp.varesearch.com/pub/support/hjl/binutils/"></ulink>.
<ulink url="ftp://ftp.varesearch.com/pub/support/hjl/binutils/">
ftp://ftp.varesearch.com/pub/support/hjl/binutils/
</ulink>.
</para>
</section>
@ -1081,8 +1094,8 @@ to eventually support all known syntaxes and object formats.
<title>Where to find NASM</title>
<para>
<ulink url="http://www.cryogen.com/nasm/"></ulink>,
<ulink url="http://nasm.rm-f.net"></ulink>
<ulink url="http://www.cryogen.com/nasm/">http://www.cryogen.com/nasm/</ulink>,
<ulink url="http://nasm.rm-f.net">http://nasm.rm-f.net</ulink>
</para>
<para>
@ -1122,13 +1135,12 @@ NASM can be used as a backend for the free LCC compiler
Unless you're using BCC as a 16-bit compiler
(which is out of scope of this 32-bit HOWTO),
you should definitely use NASM instead of say AS86 or MASM,
because it is actively supported online,
and runs on all platforms.
because it runs on all platforms.
</para>
<para>
Note: NASM also comes with a disassembler, NDISASM.
</para>
<note><para>
NASM comes with a disassembler, NDISASM.
</para></note>
<para>
Its hand-written parser makes it much faster than GAS,
@ -1153,69 +1165,47 @@ some of the are capable of performing conversion in both directions.
<para>
AS86 is a 80x86 assembler, both 16-bit and 32-bit,
part of Bruce Evans' C Compiler (BCC).
with integrated macro support.
It has mostly Intel-syntax, though it differs slightly as for addressing modes.
</para>
<section><title>Where to get AS86</title>
<para>
A completely outdated version of AS86 is distributed by HJLu
just to compile the Linux kernel,
in a package named bin86 (current version 0.4),
available in any Linux GCC repository.
Current version is 0.15.4, it can be found at
<ulink url="http://www.cix.co.uk/~mayday/">
http://www.cix.co.uk/~mayday/</ulink>, in bin86 package with linker (ld86),
or as separate archive.
</para>
<note><para>
A completely outdated version 0.4 of AS86 is distributed by HJLu
just to compile the Linux kernel versions prior to 2.4,
in a package named bin86, available in any Linux GCC repository.
But I advise no one to use it for anything else but compiling Linux.
This version supports only a hacked minix object file format,
which is not supported by the GNU binutils or anything,
and it has a few bugs in 32-bit mode,
so you really should better keep it only for compiling Linux.
</para>
</para></note>
</section>
<section><title>Where to find docs</title>
<para>
The most recent versions by <link linkend="bde">Bruce Evans</link>
are published together with the FreeBSD distribution.
Well, they were: I could not find the sources from distribution 2.1 on :(
Hence, I put the sources at my place:
<ulink url="http://www.tunes.org/~fare/files/asm/bcc-95.3.12.src.tgz"></ulink>
</para>
<para>
The Linux/8086 (aka ELKS) project is somehow maintaining bcc
(though I don't think they included the 32-bit patches).
See around <ulink url="http://www.linux.org.uk/ELKS-Home/"></ulink>
(or <ulink url="http://www.elks.ecs.soton.ac.uk"></ulink>)
and <ulink url="ftp://linux.mit.edu/pub/linux/ELKS/"></ulink>.
I haven't followed these developments,
and would appreciate a reader contributing on this topic.
</para>
<para>
Among other things, these more recent versions, unlike HJLu's,
support Linux a.out format,
so you can link you code to Linux programs, and/or use the usual
tools from the GNU binutils package to manipulate your data.
This version can co-exist without any harm with the previous one
(see according question below).
</para>
<para>
BCC from 12 march 1995 and earlier version has a misfeature
that makes all segment pushing/popping 16-bit,
which is quite annoying when programming in 32-bit mode.
I wrote a patch at a time when the TUNES Project used as86:
<ulink url="http://www.tunes.org/~fare/files/asm/as86.bcc.patch.gz"></ulink>.
Bruce Evans accepted this patch,
but since as far as I know he hasn't published a new release of bcc,
the ones to ask about integrating it (if not done yet)
are the ELKS developers.
See the man page and as.doc from the source package.
When in doubt, the sources themselves are often a good docs:
they aren't very well commented, but the programming style is straightforward.
You might try to see how as86 is used in ELKS, LILO, or Tunes 0.0.0.25...
</para>
</section>
<section><title>How to invoke the assembler?</title>
<section><title>Using AS86 with BCC</title>
<para>
Here's the GNU Makefile entry for using bcc
Here's the GNU Makefile entry for using BCC
to transform <filename>.s</filename> asm
into both a.out <filename>.o</filename> object
and <filename>.l</filename> listing:
@ -1231,63 +1221,12 @@ Remove the <literal>%.l</literal>,
<literal>-A-l</literal>, and <literal>-A$*.l</literal>,
if you don't want any listing.
If you want something else than a.out,
you can see the docs of bcc about the other supported formats,
you can examine BCC docs about the other supported formats,
and/or use the objcopy utility from the GNU binutils package.
</para>
</section>
<section><title>Where to find docs</title>
<para>
The docs are what is included in the bcc package.
I salvaged the man pages that used to be available from the FreeBSD site at
<ulink url="http://www.tunes.org/~fare/files/asm/bcc-95.3.12.src.tgz"></ulink>.
Maybe ELKS developers know better.
When in doubt, the sources themselves are often a good docs:
it's not very well commented, but the programming style is straightforward.
You might try to see how as86 is used in ELKS or Tunes 0.0.0.25...
</para>
</section>
<section><title>Macro support</title>
<para>
AS86 has some simple macro support, but I couldn't find docs.
Now the sources are very straightforward,
so if you're interested, you should understand them easily.
If you need more than the basics, you should use an external filter
(see below).
</para>
</section>
<section><title>What if I can't compile Linux anymore with this new version?</title>
<para>
Linus is buried alive in mail,
and since HJLu (official bin86 maintainer)
chose to write hacks around an obsolete version of as86
instead of building clean code around the latest version,
I don't think my patch for compiling Linux with a modern as86
has any chance to be accepted if resubmitted.
Now, this shouldn't matter: just keep your as86 from the bin86 package
in <filename>/usr/bin/</filename>, and let bcc install the good as86 as
<filename>/usr/local/libexec/i386/bcc/as</filename>
where it should be. You never need explicitly call this "good" as86,
because bcc does everything right, including conversion to Linux a.out,
when invoked with the right options;
so assemble files exclusively with bcc as a frontend, not directly with as86.
</para>
<para>
Since GAS now supports 16-bit code, and NASM looks promising,
maybe Linux will get rid of AS86, anyway? Who knows!
</para>
</section>
</section>
<section id="p-other">
@ -1315,7 +1254,8 @@ however, the only supported input and output contexts is Win32For itself
(no dumping of <filename>.obj</filename> file,
but you could add that feature yourself, of course).
Find it at
<ulink url="ftp://ftp.forth.org/pub/Forth/Compilers/native/windows/Win32For/"></ulink>.
<ulink url="ftp://ftp.forth.org/pub/Forth/Compilers/native/windows/Win32For/">
ftp://ftp.forth.org/pub/Forth/Compilers/native/windows/Win32For/</ulink>.
</para>
</section>
@ -1330,7 +1270,8 @@ using a table that defines the compilation process.
</para>
<para>
It is available from <ulink url="http://www.penguin.cz/~niki/tdasm/"></ulink>.
It is available from <ulink url="http://www.penguin.cz/~niki/tdasm/">
http://www.penguin.cz/~niki/tdasm/</ulink>.
</para>
</section>
@ -1642,7 +1583,8 @@ There is a project, using the programming language Icon
(with an experimental ML version),
to build a basis for producing assembly-manipulating code.
See around
<ulink url="http://www.eecs.harvard.edu/~nr/toolkit/"></ulink>
<ulink url="http://www.eecs.harvard.edu/~nr/toolkit/">
http://www.eecs.harvard.edu/~nr/toolkit/</ulink>
</para>
</section>
@ -2070,7 +2012,8 @@ If you have some more precise information on that,
you'll be most welcome.
Anyway, good places to look for more information are the Linux kernel sources,
DOSEMU sources (and other programs in the
<ulink URL="ftp://tsx-11.mit.edu/pub/linux/ALPHA/dosemu/">DOSEMU repository</ulink>),
<ulink URL="ftp://tsx-11.mit.edu/pub/linux/ALPHA/dosemu/">
DOSEMU repository</ulink>),
and sources for various low-level programs under Linux...
(perhaps GGI if it supports VESA).
</para>
@ -2142,7 +2085,8 @@ into the real-mode or vm86 handler).
Docs about DPMI (and much more) can be found on
<ulink url="ftp://x2ftp.oulu.fi/pub/msdos/programming/"></ulink>
(again, the original x2ftp site is closing (no more?), so use a
<ulink url="ftp://ftp.lip6.fr/pub/pc/x2ftp/README.mirror_sites">mirror site</ulink>).
<ulink url="ftp://ftp.lip6.fr/pub/pc/x2ftp/README.mirror_sites">
mirror site</ulink>).
</para>
<para>
@ -2217,7 +2161,8 @@ and calling conventions.
The main place where to find reliable information about that all,
is source code of existing OSes and bootloaders.
Lots of pointers are on the following webpage:
<ulink url="http://www.tunes.org/Review/OSes.html"></ulink>
<ulink url="http://www.tunes.org/Review/OSes.html">
http://www.tunes.org/Review/OSes.html</ulink>
</para>
</section>
@ -2455,7 +2400,8 @@ Your main resource for Linux/UNIX assembly programming material is:
</para>
<blockquote><para>
<ulink url="http://linuxassembly.org/resources.html"></ulink>
<ulink url="http://linuxassembly.org/resources.html">
http://linuxassembly.org/resources.html</ulink>
</para></blockquote>
<para>
@ -2521,7 +2467,8 @@ List address is <email>linux-assembly@egroups.com</email>.
<para>
List archives are available at
<ulink url="http://www.egroups.com/list/linux-assembly/"></ulink>.
<ulink url="http://www.egroups.com/group/linux-assembly/">
http://www.egroups.com/group/linux-assembly/</ulink>.
</para>
</simplesect>
@ -2814,6 +2761,15 @@ that need not to be repeatedly mentioned every time.
<para><revhistory>
<revision>
<revnumber>0.6a</revnumber><date>10 Dec 2000</date><authorinitials>konst</authorinitials>
<revremark>
Remade section on AS86 (thanks to Holluby Istvan for pointing out
obsolete information).
Fixed several URLs that can be incorrectly rendered from sgml to html.
</revremark>
</revision>
<revision>
<revnumber>0.6</revnumber><date>11 Nov 2000</date><authorinitials>konst</authorinitials>
<revremark>
@ -3157,7 +3113,7 @@ This version of the document is endorsed by
<para>
Modifications (including translations) must remove this appendix
according to the license agreement included below.
according to the <link linkend="a-gfdl">license agreement</link>.
</para>
<para><literal>

View File

@ -16,8 +16,8 @@
<revhistory>
<revision>
<revnumber>v4.28</revnumber>
<date>November 20, 2000</date>
<revnumber>v4.29</revnumber>
<date>December 8, 2000</date>
<authorinitials>vv</authorinitials>
<revremark>
Many updates.
@ -184,7 +184,7 @@ newsgroup such as comp.os.linux.setup or comp.os.linux.networking.
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect2 id="mediaone">
<title id="mediaone.title">AT T (formerly MediaOne)</title>
<title id="mediaone.title">ATT (formerly MediaOne)</title>
<para>
MediaOne Express is a Internet cable service provided by MediaOne. The
@ -230,8 +230,27 @@ long as you give something.
</para>
<para>
Information about MediaOne Service can be found at
<ulink url="http://www.mediaone.com">http://www.mediaone.com</ulink>.
Notes from Seattle, Washington area
</para>
<para>
You have to supply the -h option to dhcpcd if you want to get your service
running. "windowsidentification" is the one ATT provides you
and is REQUIRED for it to work. it ends in a "-a". For example
</para>
<programlisting>
dhcpd -h {windowsidentification -->'cXXXXXX-a'} eth0
</programlisting>
<para>
Alternatively if you would like to use pump check out the notes of user in
<link linkend=athomemobile>Mobile, Alabama</link>.
</para>
<para>
Information about ATT Broadband can be found at
<ulink url="http://www.broadband.att.com">http://www.broadband.att.com</ulink>.
</para>
</sect2>
@ -498,7 +517,7 @@ words "router", "firewall", or "Linux".
</sect3>
<sect3>
<sect3 id=athomemobile>
<title>Notes from Mobile, Alabama R. Jason Valentine <email>miracle@procyon.com</email>:
</title>
@ -536,7 +555,7 @@ and change it to
-----------------------------------------------------------------
if [ -n "$PUMP" ]; then
echo -n "Determining IP information for $DEVICE..."
if /sbin/pump -i $DEVICE -h hostname; then
if /sbin/pump -i $DEVICE -h YOURHOSTNAME; then
echo " done."
else
echo " failed."
@ -547,7 +566,7 @@ if [ -n "$PUMP" ]; then
</programlisting>
<para>
Where hostname is the computer name (cc123456-a - or whatever yours may
Where YOURHOSTNAME is the computer name (cc123456-a - or whatever yours may
be.)
</para>
</sect3>
@ -1113,86 +1132,7 @@ url="http://www.telekabel.at/">http://www.telekabel.at/</ulink>.
</sect2>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect2>
<title>Tebecai, Netherlands</title>
<para>
According to Frodo Looijaard:
</para>
<para>
Tebecai is yet another provider which uses a LANcity cable modem
connected to a 10BaseT ethernet card. DHCP is used for configuration
(see the <ulink url="http://www.oswg.org/oswg-nightly/DHCP.html">
DHCP mini-HOWTO</ulink>).
</para>
<para>
Tebecai has become part of Chello Internet starting january 1, 2000.
Except for some different server names, nothing much has changed.
</para>
</sect2>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect2 id="a2000">
<title id="a2000.title">A2000, Netherlands</title>
<para>
This information is provided by Johan List
<email>J.A.List@speed.A2000.nl</email>:
</para>
<para>
Basically the way to go is the same as with Tebecai. A2000 provides
cable internet access by means of a LANCity cable modem, connected to an
10BaseT ethernet card. This also works well for the "Vortex/Boomerang"
cards by 3COM (I've got a 3COM Boomerang Fast Etherlink XL 10/100Mb TX
Ethernet Adapter), providing you compile the Vortex/Boomerang drivers.
(See the Linux Ethernet-HOWTO)
</para>
<para>
Setting up access can be done with DHCP (See the DHCP-Mini-HOWTO). A
Dutch guide to setting up Internet access for A2000 is available at
<ulink
url="http://agvk.a2000.nl/antwoorden/linux/">
http://agvk.a2000.nl/antwoorden/linux/</ulink>.
</para>
<para>
Contrary to Tebecai, your IP-number *is* visible from the Internet, so
take your precautions regarding security and safety when setting up a
Linux machine using A2000 Internet access!!
</para>
<para>
Update on January 23rd
</para>
<para>
Since 1 january 2000, A2000 has become a part of Chello Internet
(http://www.chello.nl).
At least until october 2000 the current settings can be used, but a
couple of URL's have changed.
</para>
<para>
Since the old situation is probably going to change permanently this
year (new domain names for news server, email/POP3 server, FTP server
and so on) it's probably a wise idea to keep the new settings in mind,
which can be found at:
<ulink url="http://noordholland.coax.nl/instellingen.html">
http://noordholland.coax.nl/instellingen.html</ulink>.
</para>
</sect2>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect2>
<title>Shaw Cable, Canada</title>
<para>
@ -1894,20 +1834,35 @@ CyberCable's web site is at
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->
<sect2>
<title>StjärnTV, Stockholm Sweden</title>
<title>Chello (UPC) Stockholm, Sweden (formerly StjärnTV)</title>
<para>
This information is provided by Fredrik Staxaeng
<email>fstx@algorithmica.se</email>:
This information is provided by
<email>dinky@chello.se</email>:
</para>
<para>
StjärnTV sells a Bay Networks Versalar Cable Modem 100, and they
include a NetGear ethernet card in the initial fee. Just set your
interface to <ulink
url="http://www.oswg.org/oswg-nightly/DHCP.html">DHCP</ulink>. Info
about their service is available at <ulink
url="http://www.starport.se">http://www.starport.se</ulink>.
UPC are providing their customers with SURFboard SB31000 Cable Modems, and
if needed a NetGear Network card(ISA or PCI) can be purchased for an additional 300
swedish crows.
</para>
<para>
They offer 2 different services:
Chello: 1 IP 512kbit downstream 128 upstream
Chello Maestero: 4 IPs, 640kbit downstream, 128kbit upstream
</para>
<para>
<ulink url="http://www.oswg.org/oswg-nightly/DHCP.html">DHCP</ulink>
is used to configure the network interface (dhcpcd).
</para>
<para>
More info about their services can be found at
<ulink url="http://www.upc.se">http://www.chello.se/</ulink> and
<ulink url="http://www.upc.se">http://www.upc.se/</ulink>.
</para>
</sect2>
@ -1937,20 +1892,83 @@ url="http://www.gci.net">http://www.gci.net</ulink>.
<title>Saturn Communication NZ Ltd, New Zealand</title>
<para>
This information is provided by Nigel Win
<email>nigelwin@the.net.nz</email>:
<email>nigelwin@the.net.nz</email> and David Sims
<email>david.sims@paradise.net.nz</email>:
</para>
<para>
The installation of Saturn Cable Modem connection is simple as
installation of a NIC. They will only install and support the
Windows Machines but Linux user will have no problem. They provide
a static ip address for each connection along with class B Net mask
255.255.0.0 , DNS Servers and Gateway address to use. If you are
on a Redhat box, open the control-panel and open network
configuration and simply enter the detail information provided
by Saturn. For other linux distributions user should read NET-3-HOWTO.
This was tested on Debian 2.1 (Slink) Using Kernel 2.0.34
and 2.2.17
</para>
<para>
First of all you need to get the following information to
fill in the gaps
</para>
<para>
IPADDR -> This is the IP Address Saturn have given you
eg IPADDR=203.79.92.214
</para>
<para>
NETWORK -> This is the first 3 Decimal places of your IP
Address and then 0 at the end
eg NETWORK=203.79.92.0
</para>
<para>
BROADCAST -> This is the first 3 Decimal places of your IP
Address and then 255 at the end
eg BROADCAST=203.79.92.255
</para>
<para>
GATEWAY -> This is the first 3 Decimal places of your IP
Address and then 1 at the end
eg GATEWAY=203.79.92.1
</para>
<para>
Edit the file /etc/init.d/network and put this in to setup
your cable modem.
</para>
<programlisting>
#! /bin/sh
ifconfig lo 127.0.0.1
route add -net 127.0.0.0
IPADDR=
NETMASK=255.255.255.0
NETWORK=
BROADCAST=
GATEWAY=
ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast
${BROADCAST}
route add -net ${NETWORK}
[ "${GATEWAY}" ] && route add default gw ${GATEWAY} metric 1
</programlisting>
<para>
This is what my /etc/init.d/network file would look like
</para>
<programlisting>
#! /bin/sh
ifconfig lo 127.0.0.1
route add -net 127.0.0.0
IPADDR=203.79.92.214
NETMASK=255.255.255.0
NETWORK=203.79.92.0
BROADCAST=203.79.92.255
GATEWAY=203.79.92.1
ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast
${BROADCAST}
route add -net ${NETWORK}
[ "${GATEWAY}" ] && route add default gw ${GATEWAY} metric
1
</programlisting>
<para>
They use Com21 Cable Modem <ulink
url="http://www.com21.com">http://www.com21.com</ulink> and
@ -3043,12 +3061,23 @@ You feed dhcpcd this information and everything should run perfectly
<command>dhcpcd -H CO3012345-A eth1</command>.
</para>
<para>
Alternatively if you would like to use pump check out the notes of user in
<link linkend=athomemobile>Mobile, Alabama</link>.
</para>
<para>
A word of warning though, Optus are very strict on running servers on
their network, so before you connect linux up to Optus @Home, firewall
your computer or disable running daemons.
</para>
<para>
Optus supplies a SurfBoard SB3100 cable modem and a network card. Don't say
you've already got a NIC as they will insist you use it and not give you the
freebie. I got an SMC EZ-10 PCMCIA card.
</para>
</sect2>
<!-- S e c t i o n - - - - - - - - - - - - - - - B r e a k e r -->

View File

@ -1,7 +1,7 @@
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article>
<artheader>
<articleinfo>
<title>The Linux Mail User HOWTO</title>
<author>
@ -17,7 +17,7 @@
</affiliation>
</author>
<pubdate role="cvs">$Date$</pubdate>
<releaseinfo>This is version 3.0</releaseinfo>
<releaseinfo>This is version 3.1</releaseinfo>
<copyright>
<year>2000</year>
<holder role="mailto:esr@thyrsus.com">Eric S. Raymond</holder>
@ -30,6 +30,14 @@
</legalnotice>
<revhistory>
<revision>
<revnumber>3.1</revnumber>
<date>8 December 2000</date>
<authorinitials>esr</authorinitials>
<revremark>
Mention Mailman.
</revremark>
</revision>
<revision>
<revnumber>3.0</revnumber>
<date>12 August 2000</date>
@ -56,7 +64,7 @@ sites.</para>
<para>For information on configuring and administering mail, see the
Mail Administrator HOWTO.</para>
</abstract>
</artheader>
</articleinfo>
<sect1><title>Introduction</title>
@ -328,7 +336,7 @@ reachable until a given date.</para>
<para>There is no one standard vacation program that is in universal use.
There are two good reasons for this: one, that such a program is
very easy to write as a shellscript of filter rule (see below); and
very easy to write as a shellscript or filter rule (see below); and
two, that vacation programs interact badly with mailing lists.</para>
<para>You should temporarily unsubscribe from all mailing lists you are on
@ -407,8 +415,13 @@ mailbox for later reference.</para>
<para>The most important mailing-list managers to know about are majordomo,
listserv, listproc, and smartlist; majordomo is the most popular by a
considerable margin. There is a rather comprehensive <ulink url="http://www.catalog.com/vivian/mailing-list-software.html">list</ulink> of
such packages on the Web.</para>
considerable margin. Recently, <ulink
url="http://www.gnu.org/software/mailman/mailman.html">mailman</ulink>, a
list manager with a rather nice Web-based signon/signoff/administration
interface, has become very popular and may be in the pricess of obsolescing
the older programs. There is a rather comprehensive <ulink
url="http://www.catalog.com/vivian/mailing-list-software.html">list</ulink>
of such packages on the Web.</para>
<para>For more about mailing list managers, consult the resources at
the <ulink

View File

@ -42,7 +42,7 @@ C++ Programming HOW-TO
<author>Al Dev (Alavoor Vasudevan)
<htmlurl url="mailto:alavoor@yahoo.com"
name="alavoor@yahoo.com">
<date>v24.0, 05 Dec 2000
<date>v25.0, 09 Dec 2000
<abstract>
This document discusses methods to avoid memory problems in C++ and
also will help you to program properly in C++ language.
@ -484,26 +484,62 @@ For example to convert integer to string do -
-->
<sect> Renaming the String class
<p>
If you want to rename the String class, just in case you do not like the name
or if there is a conflict with another name class with same name 'String'. You
can use this technique, in all the files where you do include String.h, insert
these lines:
<sect1> Case 1: Simple rename
<p>
If you do not like the String class name then you
can use <bf>"typedef"</bf> to rename the String class.
In all the files where you do include String.h, insert these lines:
<code>
// If you do not like the class name String, then you can rename using typedef
typedef String StringSomethingElseIwant;
// Your remaing code may be like this ....
int main()
{
StringSomethingElseIwant aa_renstr;
aa_renstr = "I renamed the String Class using typedef";
.......etc...
}
</code>
See the
<url url="http://www.angelfire.com/nv/aldev/cpphowto/example_String.cpp"
name="example_String.cpp">.
<!--
*******************************************
************ End of Section ***************
*******************************************
-->
<sect1> Case 2: Resolve conflict
<p>
If there is a conflict with another class-name having the same name, and
you want to use both this class and conflicting class then you use this
technique -
in all the files where you do include String.h, insert these lines:
<code>
#define String String_somethingelse_which_I_want
#include "String.h"
#undef String
#include "ConflictingString.h" // This also has String class...
// All your code goes here...
main()
{
String_somethingelse_which_I_want aa;
String bb; // This string class from conflicting string class
aa = " some sample string";
bb = " another string abraka-dabraka";
.......
}
</code>
The pre-processor will replace all literals of String to "String_somethingelse_which_I_want"
and immdiately undefines String
The pre-processor will replace all literals of String
to "String_somethingelse_which_I_want" and immdiately undefines String.
After undef the conflicting string class header file is included which
defines the "String" class.
<!--
*******************************************
************ End of Section ***************
@ -554,35 +590,36 @@ as much as possible.
To make
<bf>delete</bf>
command even more cleaner, make a Zap() command. Define
a zap() or delete9() command like this:
command even more cleaner, make a Zap() inline function. Define
a zap() function like this:
<code>
/*
** Use do while to make it robust and bullet-proof macro.
** Note: But not using do while works for some C++ pre-processors ..
#define zap(x) do { {assert(x != NULL);} delete(x); x = NULL; } while (0)
#define delete9(x) do { {assert(x != NULL);} delete(x); x = NULL; } while (0)
*/
// Put a assert to check if x is NULL, this is to catch
// program "logic" errors early. Even though delete works
// fine with NULL by using assert you are actually catching
// "bad code" very early
#define zap(x) { {assert(x != NULL);} delete(x); x = NULL; }
#define delete9(x) { {assert(x != NULL);} delete(x); x = NULL; }
// Defining Zap using templates
template <class T>
inline void zap(T& x) {
assert(x != NULL);
delete x;
x = NULL;
}
template <class T*>
inline void zap(T*& x) {
assert(x != NULL);
delete x;
x = NULL;
}
// For delete array
#define zap_(x) { {assert(x != NULL);} delete [] (x); x = 0; }
#define delete_(x) { {assert(x != NULL);} delete [] (x); x = 0; }
</code>
Make sure that your C++ pre-processor is putting the surrounding brackets
for delete. If it does not then use the do - while loop.
Use -E option with GNU C++ to generate only the pre-processed file
and view the output file to verify.
Test using this -
<code>
bash$ g++ -E example_String.cpp > preprocess.out
bash$ vi preprocess.out
template <class T>
inline void zaparr(T& x) {
assert(x != NULL);
delete [] x;
x = NULL;
}
</code>
The zap() command will delete the pointer and set it NULL.
@ -597,7 +634,9 @@ program will not crash. For example -
zap(pLastname);
zap(pJobDescription);
//delete9(pFirstname); // you can use either zap or delete9
int *iiarray = new int[10];
zaparr(iiarray);
</code>
There is nothing magical about this, it just saves
@ -622,6 +661,10 @@ and my_free() functions.
<bf>WARNING :</bf> Do not use free() to free memory allocated with 'new'
or 'delete' to free memory allocated with malloc. If you do, then
results will be unpredictable.
See the zap examples in
<url url="http://www.angelfire.com/nv/aldev/cpphowto/example_String.cpp"
name="example_String.cpp">.
<!--
*******************************************
************ End of Section ***************

View File

@ -6,7 +6,7 @@
<title>FBB Packet-radio BBS mini-HOWTO
<author>Miroslav "Misko" Skoric, YT7MPB,
<tt/m.skoric@eunet.yu/
<date>v1.6, 30 November 2000
<date>v1.7, 08 December 2000
<abstract>
<nidx>linux windows nt amateur packet radio</nidx>
This mini-HOWTO covers the installation and use of
@ -737,62 +737,74 @@ to the existing two: X11 LinFBB and WinFBB!</em>
<sect1>How to install an "upgrade" to daemon version of LinFBB
<p>
<em>Notice: Well, the main trouble I discovered with this daemon
was the absence of Protus c_filter protection. As I told you
<em>Notice: Well, the main trouble I have discovered with 7.01f
daemon was the absence of Protus c_filter protection. As I told you
before, Protus is a "third-party" product, so it might have
some problems with the compatibility to LinFBB itself. Anyway,
it is also possible that a daemon version of LinFBB has some
minor requirements over some files locations.</em>
special requirements over some "third-party" software.</em>
<p>
<itemize>
<item>So, it looked to me that my version of Protus was newer
than the version of daemon LinFBB I was using. Beside
that, some hams as well as F6FBB himself, suggested me
to upgrade. The "problem" I have found was that I am
<item>I also noticed that my version of Protus was <em>newer</em>
than the version of daemon LinFBB I had at first. Beside
that, some hams, as well as F6FBB himself, have suggested me
to upgrade LinFBB. I have also found a "problem" that I am
still new in compiling Linux software, so, I'd rather
look for some new pre-compiled packages.
look for pre-compiled packages to install easily.
<p>
<item>Jose, HI8GN, has offered daemon LinFBB v7.02g as a
<tt>.rpm</tt> package (18. September 2000). I got it
from his site:
<url url="http://hi8gn.dynip.com/indice.html" name=
"http://hi8gn.dynip.com/indice.html">. When I tried
to install it above the previous daemon LinFBB, it
complained about some existing old files.
"http://hi8gn.dynip.com/indice.html">. But, when I tried
to install it <em>over</em> the previous version 7.01f, it
complained about some existing LinFBB files.
<p>
<item>Then I had to de-install the existing installation, but
some main config files have remained as <tt>.rpmsave</tt>
files. It is good because you may use them to update
your new-installed config files. So I did.
<item>Then I had to de-install the old package, after what
some config files remained as <tt>.rpmsave</tt>
files. It was nice, so I could use them to update my
new-installed config files.
<p>
<item>The installation of Jose's package was performed
without problems, but daemon was not likely to run
as I expected. I have decided to copy new <tt>xfbbd</tt>
and some other executables from this package and
*remove* it in order to install back the previous
version of LinFBB - that worked ok.
<item>Btw, the installation of Jose's package was performed
without problems, but the new daemon was not likely to run
as I expected, although I tried to configure it as best
as I could. So, I have decided to make copies of new
<tt>xfbbd</tt> and <tt>xfbbC</tt> from 7.02g package and
*de-install* the rest of its <tt>.rpm</tt>, in order to
install the previous version of LinFBB once again - the
version that I was satisfied with.
<p>
<item>So far - so good. The "old" version was installed and
tested again one more time. Then, I just copied the
previously saved executables from the new package,
over the "old" executables. After some more minor config
adaptations, the new daemon LinFBB v7.02g has come
in place and function. Comments...?
<item>So far - so good. The "old" 7.01f version was installed again
and tested one more time to be sure it was ok. Then, I just
copied the previously saved executables from the new package,
over the "old" executables. In a couple of minutes, the new
daemon LinFBB v7.02g has come in place and function. Comments...?
<p>
<item>Well, its daemon looks for some more directories
than the older version, mostly regarding <tt>7plus</tt>
operations. Next, its xfbbC console client looks better
than the previous version. But, I still miss the
functional X11 client that I have found out of
order. I hope it will be fixed soon. Finally, Protus
c_filter utility is active too.
<item>Well, the new daemon is likely to check for some more directories
than the older version (mostly regarding <tt>7plus</tt>
operations). Next, its <tt>xfbbC</tt> console client looks better
than the previous version. But, I still miss
<tt>xfbbX</tt> client, that I have found not functional.
I hope it will be fixed soon. Finally, Protus
<tt>c_filter</tt> utility is active too.
<p>
<item>An interesting question might be: is that now a really upgraded
LinFBB daemon or not? Actually, I haven't changed the "old"
script <tt>xfbbd.sh</tt> with the new one, because during the
first tests with the new one I was getting lots of error messages.
Looks that the directory structure was a bit complicated for me
to set properly within the new version of <tt>xfbbd.sh</tt>.
In addition, there are still some mysterious messages telling
that <tt>m_filter</tt> has not been found or something like that.
The next tasks are to solve these issues.
</itemize>

View File

@ -2,7 +2,7 @@
<article>
<title>Large Disk HOWTO
<author>Andries Brouwer, <tt/aeb@cwi.nl/
<date>v2.2r, 16 June 2000
<date>v2.2s, 9 December 2000
<abstract>
@ -1138,6 +1138,7 @@ and in such cases booting may be impossible, even when the disk
is removed from the CMOS settings.
See also <htmlurl name="the BIOS 33.8 GB limit"
url="http://www.storage.ibm.com/techsup/hddtech/bios338gb.htm">.
<p>
Therefore, large IBM and Maxtor disks come with a jumper
that make the disk appear as a 33.8 GB disk.
For example, the IBM Deskstar 37.5 GB (DPTA-353750) with 73261440 sectors
@ -1149,10 +1150,11 @@ Similar things hold for recent large Maxtor disks.
With the jumper present, both the geometry (16383/16/63) and the size
(66055248) are conventional and give no information about the actual size.
Moreover, attempts to access sector 66055248 and above yield I/O errors.
However, the actual size can be found and made accessible using the
READ NATIVE MAX ADDRESS and SET MAX ADDRESS commands.
However, on Maxtor drives the actual size can be found and made accessible
using the READ NATIVE MAX ADDRESS and SET MAX ADDRESS commands.
Presumably this is what MaxBlast/EZ-Drive does. Now there is also
a small Linux utility for this.
a small Linux utility <htmlurl url="setmax.c" name="setmax.c"> for this,
and also a kernel patch has been published.
<p>
Early large Maxtor disks have an additional detail: the J46 jumper
for these 34-40 GB disks changes the geometry from 16383/16/63
@ -1162,6 +1164,24 @@ will hang at boot time. For this case Maxtor provides a utility
<htmlurl url="http://www.maxtor.com/technology/technotes/20012.html"
name="JUMPON.EXE"> that upgrades the firmware to make J46 behave as
described above.
<p>
On recent Maxtor drives the call <tt>setmax -d 0 /dev/hdX</tt> will
give you max capacity again. However, on slightly older drives a
firmware bug does not allow you to use <tt>-d 0</tt>, and
<tt>setmax -d 255 /dev/hdX</tt> returns you to almost full capacity.
<p>
For IBM things are worse: the jumper really clips capacity
and there is no software way to get it back. The solution is
not to use the jumper but use <tt>setmax -m 66055248 /dev/hdX</tt>
to software-clip the disk. ("How?" you say - "I cannot boot!".
IBM gives the tip: <it>If a system with Award BIOS hangs during drive
detection: Reboot the system and hold the F4 key to bypass autodetection
of the drive(s).</it> If this doesn't help, find a different computer,
connect the drive to it, and run <tt>setmax</tt> there. After doing this
you go back to the first machine and are in the same situation as
with jumpered Maxtor disks: booting works, and after getting past
the BIOS either a patched kernel or a <tt>setmax -d 0</tt>
gets you full capacity.
<sect>
The Linux 65535 cylinder limit
@ -1404,4 +1424,3 @@ On the other hand, this filesystem can have at most 1024000 files
(more than enough), against 4096000 (too much) earlier.
</article>

View File

@ -45,7 +45,7 @@ PHP HOW-TO
" name="
alavoor@yahoo.com
">
<date>v12.0, 04 Dec 2000
<date>v13.0, 09 Dec 2000
<abstract>
This document tells you howto develop PHP programs and also to migrate all the
Windows 95 GUI applications to powerful PHP + HTML + DHTML + XML + Java applets + Javascript.
@ -538,7 +538,11 @@ psql> INSERT INTO users VALUES (
Notice the password looks a bit wierd, <bf>5f4dcc3b5aa765d61d8327deb882cf99</bf>. This
is the MD5 hash of the the word "password", I won't go into details here, but the important thing to note is that it's a one-way algorithm and it always produces a 32 character string.
That's it, we have a users table to track our users, and one administrative account so we can try logging in and out of the system.
That's it, we have a users table to track our users, and one administrative account
so we can try logging in and out of the system using the example tar file
(download the example tar file from
<url url="http://www.devshed.com/Server_Side/PHP/Commerce1">
).
<!--
*******************************************
************ End of Section ***************

View File

@ -42,7 +42,7 @@ Covers PostgreSQL Version 6.5.3
<author>Al Dev (Alavoor Vasudevan)
<htmlurl url="mailto:alavoor@yahoo.com"
name="alavoor@yahoo.com">
<date>v39.0, 04 Dec 2000
<date>v40.0, 09 Dec 2000
<abstract>
This document is a "practical guide" to very quickly setup a SQL Database
engine and
@ -2053,6 +2053,8 @@ and look for PerlQt-1.06-1.i386.rpm
<item> Perl Database Interfaces : <url url="http://reference.perl.com/query.cgi?database">
<item> Perl to "C" translator : <url url="http://www.perl.com/CPAN-local/modules/by-module/B/">
and look for Compiler-a3.tar.gz
<item> Compile Perl to to executable. Perl2Exe is a command line utility for converting
perl scripts to executable files <url url="http://www.indigostar.com/perl2exe.htm">
<item> Bourne shell to Perl translator : <url url="http://www.perl.com/CPAN/authors/id/MERLYN/sh2perl-0.02.tar.gz">
<item> awk to Perl a2p and sed to Perl s2p is included with the PERl distribution.
<item> See also the newsgroups for PERL at comp.lang.perl.*
@ -2241,6 +2243,7 @@ You will need the Win32::ODBC module.
services, please see :
<itemize>
<item> Support <url url="http://www.perlclinic.com">
<item> Support <url url="http://www.perldirect.com">
<item> Training <url url="http://www.westlake.com/training">
</itemize>
<!--
@ -2705,16 +2708,13 @@ Perl based Application Servers like SmartWorker, WIRM, Velocigen,
Enhydra(Java) and Zope(Python) and commercial Web-Application-Servers are IBM Websphere,
BEA Weblogic.
It is recommeded that you use secure web server like Apache + mod_ssl + OpenSSL.
See Redhat StrongHold secure server at <url url="http://www.c2.net/products/sh3">.
Web Application Servers can be classified according to the
programming language which they support.
You must choose a Web Application server based on the
programming language which you like the most. I recommend Perl language
as it is most widely used and runs much faster than Java.
Perl language has a very long life just like "C" language, and Perl will be
in use for <bf>thousands of years</bf> in the future! Perl runs <bf>10 times</bf>
faster than Java and sometimes faster than even "C".
Java is a very complex system with virtual machine and interpreter which makes
it extremely slow, unstable and unreliable. Perl is very simple, fast and object oriented.
programming language which <bf>you like the most</bf>.
Classifications of Web Application servers are:
<itemize>
@ -2733,8 +2733,24 @@ Classifications of Web Application servers are:
-->
<sect1> PERL Web Application Servers <label id="perlserv">
<p>
Perl language has a very long life just like "C" language, and Perl will be
in use for <bf>a long time </bf> in the future! Perl runs <bf>3 times</bf>
faster than Java for some operations (but Java runs faster than perl
for some operations).
Java is a very complex system with virtual machine and interpreter which makes
it extremely slow, unstable and unreliable. Perl is very simple, fast and object oriented.
Also Perl programs can be easily compiled for even better performance. Use
Perl2Exe which is a command line utility for converting
perl scripts to executable files <url url="http://www.indigostar.com/perl2exe.htm">
The following Web Applicaiton servers are available for PERL
<itemize>
<item> Mason <url url="http://www.masonhq.com"> is a powerful Perl-based web
site development and delivery
engine. With Mason you can embed Perl code in your
HTML and construct pages from shared, reusable components.
<p>
<item> BingoX <url url="http://opensource.cnation.com/projects/BingoX">
is an open source, object oriented
Web Application Framework written in
@ -2775,11 +2791,6 @@ adapt their content and presentation to multiple classes of
end-users.
Visit <url url="http://www.wirm.org">
<p>
<item> Mason <url url="http://www.masonhq.com"> is a powerful Perl-based web
site development and delivery
engine. With Mason you can embed Perl code in your
HTML and construct pages from shared, reusable components.
<p>
<item> EmbPerl <url url="http://perl.apache.org/embperl">
Embperl gives you the power to embed Perl code in your HTML documents. Using Perl
means being able to use a very elaborate programming language, which is widely
@ -2883,7 +2894,7 @@ without needing to reprogram other parts
*******************************************
-->
<sect1> Lutris Corp "Enhydra Enterprise" <label id="Enhydra">
<sect1> Lutris Corp "Enhydra Enterprise" (Java) <label id="Enhydra">
<p>
Enhydra supports PostgreSQL database.
Enhydra is a immensely popular Java/XML/J2EE Web-Application-Server
@ -2908,7 +2919,7 @@ See also Enterprise Java HOWTO at
*******************************************
-->
<sect1> Zope <label id="Zope">
<sect1> Zope (Python) <label id="Zope">
<p>
Python is becoming immensely popular "pure" object-oriented scripting language.
Zope is a Web-Application server and provides interfaces to PostgreSQL.
@ -2920,7 +2931,7 @@ Python is at <url url="http://www.python.org">
*******************************************
-->
<sect1> OpenACS <label id="OpenACS">
<sect1> OpenACS (Tcl Language) <label id="OpenACS">
<p>
OpenACS (Open ArsDigita Community System)
<url url="http://openacs.org">
@ -3389,6 +3400,64 @@ such as Oracle, Sybase, DB2, Informix, MySQL, Postgresql, or similar.
************ End of Section ***************
*******************************************
-->
<sect1> Zeos Client
<p>
"Zeos" a program products for development and administration of the
database applications, with use
OpenSource SQL-servers - MySQL, PostgreSQL and InterBase
<url url="http://www.zeos.dn.ua/eng/index.html">
<!--
*******************************************
************ End of Section ***************
*******************************************
-->
<sect1> Report Writer in Java
<p>
Generic Report Writer is a menu-driven report writer. It is
not a drag-and-drop interface.
Works with PostgreSQL, MySQL, and Access. It probably
will work on any other database for which you have a
Type 4 JDBC version 1 driver. It is at
<url url="http://www.geocities.com/SiliconValley/Ridge/4280/GenericReportWriter/grwhome.html">
<!--
*******************************************
************ End of Section ***************
*******************************************
<chapt>Database Design Tool - Entity Relation Diagram Tool
-->
<sect>Database Design Tool - Entity Relation Diagram Tool
<p>
"DeZign for databases" (<url url="http://www.heraut.demon.nl/dezign/index.html">)
is a database development tool using
an entity relationship diagram. It visually supports the lay out of
the entities and relationships and automatically generates
SQL-schemas for most leading databases.
"DeZign for databases" supports the logical and physical data-level from a
single specification achieved by using automatic foreign key migration at
design-time. Multiple display options include entity/primary
key/attributes inclusive foreign keys/attributes exclusive foreign keys.
"DeZign for databases" also supports domains (user defined datatypes).
Reports generated by DeZign can be used for conveying complex designs
in simplified format to managers at various management levels. You can
generate reports, datadictionaries and databases by one simple click. The
following databases are supported: Oracle, Interbase, IBM DB2, Sybase,
MS Access (95/97/200), MS SQL Server, Paradox, dBase, Informix,
SQL-Anywhere, MySQL and PostgreSQL.
Heraut "DeZign for databases" is at (<url url="http://www.heraut.demon.nl">)
<!--
*******************************************
************ End of Section ***************
*******************************************

View File

@ -46,7 +46,7 @@ Vi Improved with syntax color highlighting
"name="
alavoor@yahoo.com
">
<date>v14.0, 16 Aug 2000
<date>v15.0, 09 Dec 2000
<abstract>
This document is a guide to quickly setting up the Vim color editor on Linux or Unix systems. The information here will improve the productivity of programmers because the
Vim editor supports syntax color highlighting and bold fonts, improving the
@ -157,8 +157,8 @@ type -
<code>
apt-get install vim vim-rt
</code>
It will download the latest version of vim, install it, configure it, and
erase the .deb file it downloaded. The first package listed is vim, the standard editor, compiled
It will download the latest version of vim, install it, configure it.
The first package listed is vim, the standard editor, compiled
with X11 support, vim-rt is the vim runtime, it holds all the syntax and help files.
<p>
<!--