Q1) What is a CoCo?
Q2) What models were there?
    a) What graphic modes were there?
    b) What was that replacement CPU thing?
Q3) Tell me about disk drives.
Q4) What is a multipack? (and a y-cable)
Q5) What is the wiring matrix for the keyboard?
Q6) How do I use the RS-232C i/o port?
Q7) What are the POKEs for the baud speed?
Q8) What is the pin-out for the cartridge slot?
    a) What is the pin-out of the cassette port?
    b) ...the joystick port?
    c) ...the RGB port?
Q9) Tell me about CoCo Emulators for the PC (DOS/Windows/Mac/etc.)
Q10) What kind of hardware is available? (accelerators, modems, printers, etc.)



Q1) What is a CoCo?
The name TRS Color Computer, known as CoCo by its owners, refers to a familiy of Motorola 6809-based personal computers made by Radio Shack and produced from 1981 (CoCo 1) until 1990 (CoCo 3). Each CoCo comes with a variation of Microsoft BASIC built-in its ROM. Differing from an Apple ][+, //e, or an IBM, CoCos comes with a variety of I/O ports built-in.  On the rear panel of the unit are connections for 2 analog Joysticks, Serial I/O (which can handle data transfer up to 9600 baud), cassette I/O, and TV/monitor output.   On the right side, there is a cartridge slot.  Cartridges that support various functions, contain games, or drive peripherals can be inserted.  Use of a multipack (or MPI) allowed multiple cartridges to be inserted.
Q2) What models were there?
The different CoCo models are as follows:

CoCo 1 - The first Color Computer, it was first sold in 1980 and originally had only Color BASIC, 4Kb of memory, 32-column  screen, and a chicklet keyboard.  It was based on a design originally from Motorola.  It used a .89MHz MC6809E.  A compact cassette recorder or Program Paks were used.  Later versions came with 16Kb/32Kb/64Kb and Extended Color BASIC.  Disk BASIC was the required environment to handle disk drives, and some third-parties created their own improved but compatible Disk Operating Systems (DOS).  By changing  memory chips, setting jumpers, and removing some capacitors,  the CoCo 1 memory could be expanded up to 64Kb, minimum to run OS-9 Level 1.

CoCo 2 - The Color Computer 2 is a refined -- but fully compatible --version of the original Color Computer.  The refinements consist mostly of a new, smaller case with a typewriter-looking keyboard and redesigned motherboard. Also, the later CoCo 2s wwere able to generate true lowercase letters (NOTE: later model CoCo 2s that said "Tandy" instead of TRS-80 had the lowercase) instead of "reverse video".  Besides that, it has the same 64Kb/32-column limitation of its antecessor.  This CoCo was in the same price range of machines as the Atari 8-bit series  and the Commodore 64.

CoCo 3 - The last Color Computer has quite a collection of improvements as compared to the previous machines:  true  80-column, higher resolution graphics, and more memory -- the barebones configuration comes with 128 Kb of RAM that can be expanded up to 512k through Tandy, but up to 2Mb from third-party vendors.  It was intended more as competition for Atari's ST series and the original Commodore Amiga.  The CoCo 3 can run OS-9 Level 2.  The CoCo 3 also allowed the famous speed-up poke (POKE 65497,0 and POKE 65496,0) to double the clock speed to 1.78 mhz.

There were also some companies that manufactured CoCo clones:

  • Dragon  64       -  CoCo 1 clone made by Tano. Had seperate parallel I/O.
  • TDP System 100    -  CoCo 1 clone made by Tandy and sold outside RS
  • Fujitsu  FM-7     -  Had Microsoft Basic and used Level I OS-9 and FLEX
  • MC-10 "Baby CoCo" -  made by Tandy-Radio Shack using an MC6803
  • Q2a) What graphic modes were there?
    The CoCo 2 was capable of uppercase only on a 32x16 screen with 8 colors.  To show lowercase, the CoCo 2 used inverse video.  Later versions of the CoCo 2 showed real lower-case.  In this "text" mode, there were also 64 x 32 "pixels" that could be set using the SET command, or drawn with CHR$.  The CoCo 2 also had a maximum resolution of 256 x 192 with 2 colors.  But by alternating light and dark lines, false or "artifact" colors could be made, mainly red and blue.  Maximum colors in the CoCo 2 was 8 total.  Here are all the possible graphic resolutions:  32x16x8, 64x32x8, 128x96x2, 128x96x4, 128x192x2, 128x192x4, and 256x192x2. 

    Various software fixes were developed to improve the text screen.  Telewriter 64 used the hi-res graphics screen, and drew each letter on the screen as the user typed.  Machine-language made it very quick!  Early on, RAINBOW (I think), featured a program called Screen51, which, once loaded and EXECed, would show all the text on the hi-res screen.  The advantage was that you could now mix graphics and text.  The disadvantage was that the 51 columns were very squished together.  But hey, you had 51 columns and true lowercase!

    There were also various "semigraphics" modes, available only to assembly language, including some that allowed text on the top half, and graphics on the bottom.  Robert Gault has a little info about one of the semigraphics modes called Semigraphics24.

    The CoCo 3 supported all the standard CoCO 2 graphic modes, plus added:  a 40 column and 80 column screen with true lower case, underline, and blink; 320x192x4, 320x192x16, 640x192x2, and 640x192x4.  The semigraphics modes of the CoCo 2 were done away with.  A special RAM based character set was also available with commands to put text onto the graphic screens.

    The new CoCo 3 supported a total of 64 colors, any 16 could be active.  This made using color very flexible, but a little confusing.  For example, if the HCOLOR was set to 3, and a line was drawn, the line would be color 3.  Color 3 could have been any of the 64 available.  By using the PALETTE command, the user could assign the 64 colors to the 16 "slots".  If color 45 was assigned to slot 3, the line above would have been color 45.  Unfortunately, the colors shown on an RGB monitor were different than on a composite monitor.  Various software tricks exist to show more than 16 at a time.

    There were also programs and POKEs to obtain 320x200x16 and 320x200x225 (and 640x200 and 640x225).  In addition, horizontal and vertical scrolling was possible through the hardware.  POKEing to certain locations caused the entire screen to scroll at a pixel level left, right, up and/or down.  Page-flipping could also be done extremely quickly simply by telling the CoCo that the data in RAM for the graphics was somewhere else.  This would be immediately mapped into the video screen.

    The video output was also used to generate interrupts.  There were two on all CoCos, and I think that the CoCo 3 had one more. The two common ones were the vertical interrupt every 1/60th of a second (commonly called the IRQ), and a fast interrupt, or FIRQ, connected to the horizontal sync pulse (approx. 63 microseconds, I think).

    Q2b) What about that replacement CPU?
    The replacement CPU was one of the biggest pieces of news to come out in the early 1990s.  The Hitachi 63B09E chip is fully compatible with the original 68B09E.  Added advantages were that it ran cooler, some internal operations were faster, and there were extra registers in the CPU. 

    The 6309 had two modes; "6809" and "native".  When powered up, it defaulted to 6809-mode.  This made it completely compatible with the original 6809 from Motorola, even down to the number of clock cycles to execute internal instructions.  When sent a certain string, it would switch to native-mode.  Under RS-DOS, users could expect perhaps a 15% speed boost.  However, since the timing of certain instructions was shortened, disk operation, printer, and cassette use was affected and unreliable.  Due to the nature of OS/9, though, speed increases of 30% to 50% were possible, and disk operation was normal.  The additional increases were due to patches in the OS that took advantage of the additional registers, etc.  Burke and Burke released PowerBoost, a software set of patches to OS/9, that gave the additional speed.

    The downside of all this was that the original 6809 was soldered to the motherboard.  To replace it, it would be cut out, each of the 40 pins desoldered, a socket installed, and then the 6309 was plugged into the socket.

    Another OS, called NitrOS9 was also updated for use with the 6309.  More will be covered in the FAQ-Software link, but you can visit the NitrOS9 page for info.

    Q3) Tell me about disk drives.
    The CoCo disk standard disk system from Radio Shack consisted of a single vertical, later horizontal, 5.25 inch single-sided, 35 track drive.  A second drive could be added inside the case.  The drive unit containing a power supply (and optional fan) was connected to a Disk Controller by an approx. 2 foot ribbon cable.  Some cables were bundled into a thick round case.  The Controller plugged into the side of the CoCo, and contained the Disk Operating System, or DOS.  The standard DOS that came from the Shack is usually known as RS-DOS.  However, many vendors provided enhanced support for double- sided drives, 40 and 80 tracks, wildcard directories, etc.  Versions included A-DOS, J-DOS, MK-DOS, and DR-DOS.  A-DOS was very popular due to its ability to handle different sized drives.  Many of the later Shack drives were actually 40 track drives, but under RS-DOS, only 35 were accessable. Jump to the Software FAQ and read about DOS versions.

    A typical single-sided disk contained 68 granules.  Each granule was a little more than 2k, so a single disk could hold approx. 156k.  The CoCo supported up to 4 drives.  Through software and various versions of DOS you could have either 4 singled sided disks, or 2 double-sided, with the second side of each disk being assigned another drive number.  I may be wrong, but third-party vendors may have supported "true" double-sided drives, in which both sides are assigned and accessed with one drive designation.  The CoCo used drive 0 as the prmiary drive, and drives 1,2, and 3 as the additional ones. 

    It's interesting to note that many people started using "flippies".  By notching a single-sided disk, you could flip it over and save more on the other side.  But because the disk platter was spinning the opposite direction relative to the first side, these "flippy" disks could not be read in a double-sided drive!  Many people also issued warning that the flip-side was not certified for data, that by spinning it backwards the heads would wear out, etc. etc.

    The very first disk controller required both 12 volts and 5 volts from the CoCo, but CoCo 2 and CoCo 3 did not provide the 12 voltes on the cartridge slot, so unless you had a 12 volt adaptor hot-wired into the original controller, it couldn't be used with the newer CoCos.

    Amdek of Illinois sold the AMDISK system which used 3 inch "micro-floppies", which could hold 312k each.  RAINBOW 1983 shows a rather cool looking AMDISK hooked to a CoCo 1, and a headline that says "624k" and a footnote saying that the extra 312k can "be accessed by manually flipping the media over".  Not sure what sort of DOS was required to access the 312k.  Further info in RAINBOW indicates the system came with a controller, and two drives, each holding 156k, so 156k x 2 drives x flipping each one = 624k  Since each disk actually holds the same as a regular 5.25" disk, it's likely that regular RS-DOS could be used. 

    Q4) What is a multipack?
    The multipak is a device that allows the CoCo to use of up to 4 paks at a time.  It is normally used by people who have multiple devices that need to be used simultaneously, such as OS-9 users.
    A possible combination is as follows:

       1 RS-232 Pak
       2 Orchestra-90 Pak
       3 Speech & Sound Pak
       4 floppy drive controller pak.  <-floppy controller ALWAYS in slot 4

    There are 2 ways to access a given slot.  One is with the switches and the second is by storing values in control memory locations.

    Multipacks had to be "patched" with a small chip (known as a PAL chip) to work correctly with a CoCo 3, due to memory map problems.

    Multipacks (or MPIs) were the recommended way of connecting multiple cartridges.  Some people had success with y-cables.  A y-cable plugged into the cartridge slot and provided two short ribbon cables, each with a female-slot connector.  Two deviced could be then connected, usually a disk drive, and something else.  Triple -y-cables were also made.  However, since the y-cables made the CoCo bus just a little longer, the operation of the CoCo was sometimes unreliable.

    Q5) What is the wiring matrix for the keyboard?
                    Color Computer Keyboard Array

        Pin 1 --- @ --- A --- B --- C --- D --- E --- F --- G
                  |     |     |     |     |     |     |     |
        Pin 2 --- H --- I --- J --- K --- L --- M --- N --- O
                  |     |     |     |     |     |     |     |
        Pin 3 nc  |     |     |     |     |     |     |     |
                  |     |     |     |     |     |     |     |
        Pin 4 --- P --- Q --- R --- S --- T --- U --- V --- W
                  |     |     |     |     |     |     |     |
        Pin 5 --- X --- Y --- Z -- UP -- DWN - LFT - RGT - SPACE
                  |     |     |     |     |     |     |     |
        Pin 6 --- 0 -- 1! -- 2" -- 3# -- 4$ -- 5% -- 6& -- 7'
                  |     |     |     |     |     |     |     |
        Pin 7 -- 8( -- 9) -- :* -- ;+ -- ,< -- -= -- .> -- /?
                  |     |     |     |     |     |     |     |
        Pin 8 -- ENT - CLR - BRK - ALT - CTL - F1 -- F2 - SHIFT
                  |     |     |     |     |     |    |     |
                  |     |     |     |     |     |     |     |
        Pin 9 -----     |     |     |     |     |     |     |
                        |     |     |     |     |     |     |
        Pin 10 ----------     |     |     |     |     |     |
                              |     |     |     |     |     |
        Pin 11 ----------------     |     |     |     |     |
                                    |     |     |     |     |
        Pin 12 ----------------------     |     |     |     |
                                          |     |     |     |
        Pin 13 ----------------------------     |     |     |
                                                |     |     |
        Pin 14 ----------------------------------     |     |
                                                      |     |
        Pin 15 ----------------------------------------     |
                                                            |
        Pin 16 ----------------------------------------------
     CoCo 2 keyboard is identical, except no CTL, F1, F2, or ALT.

    Q6) How do I use the RS-232C i/o port (a.k.a. "bit-banger")?
    If you are in RSDOS, you can connect a modem to the CoCo serial port, rather than through a separate RS-232 Pack.  The nice thing in this setting is that you can have a modem and a floppy drive controller connected to the CoCo without needing a Multipak.  As far as I know, the fastest you can go using the CoCo serial port is 9600 baud (using Twilight Term).  Speeds of up to 19,200 were available using an RS-232 Pack. Under OS-9, it does at 300 baud and sorta-sorta at 1200 (there was a CoCo OS9 BBS ran by Tim Johns at 1200 baud through the bitbanger) and the improved 1200 baud bitbanger driver reportedly does it better, though slowing things down.

    List of Materials for a CoCo RS-232C to true-RS-232 cable for a modem:
       1   DIN-4 connector, male
       1   DB-25 connector, male (though here it depends on your  modem)
       6ft of 4-wire cable (ideally you get a shielded cable with 3 wires inside;  If you can get such cable, connect the GND pin in the pinout below to be the shield)

    Q7) What are the POKEs for the baud speed?
    These POKEs set the baud speed for the modem and/or printer.
    For example for baud rate on COLOR COMPUTER enter at command line:
    POKE 150,X - where "X" is one of the following poke numbers:
    POKE#     BAUD RATE
     180         300
      87         600
      41        1200
      18        2400
       7        4800
       1        9600
    For the MC-10 "Baby CoCo", the command is:
    POKE 16932,X  - where "X" is one of the following:
    POKE#     BAUD RATE
     241         300
     118         600
      57        1200
      26        2400
      10        4800
       9        9600
    Q8) What is the pin-out for the cartridge slot?
    A nifty project in RAINBOW connected a toggle switch between the HALT line and ground.  By activating the switch, the CPU would finish its current instruction, then stop completely.  This became a nice pause feature during games, since the entire state of the CPU stayed the same.

    Also, by covering pin 8 on the cartridge, ROM-packs could be inserted without them starting up.  It is EXTREMELY DANGEROUS to insert a ROM-Pack with the CoCo switched on.

        Color Computer 1, 2, & 3 Cartridge Connector Definitions

    ------------------------------------------------------------
    | PIN | SIGNAL NAME | DESCRIPTION                          |
    |-----|-------------|--------------------------------------|
    |  1  |   N.C.      | (-12 VDC on CoCo 1 and 2)            |
    |  2  |   N.C.      | (+12 VDC on CoCo 1 and 2)            |
    |  3  |   HALT*     | Halt input to the CPU                |
    |  4  |   NMI*      | Non-Maskable Interrupt to the CPU    |
    |  5  |   RESET*    | Main Reset and Power-up Clear        |
    |     |             |                                      |
    |  6  |   E CLOCK   | Main CPU Clock                       |
    |  7  |   Q CLOCK   | Clock which leads E by 90 degrees    |
    |  8  |   CART*     | Rom-Pak Detection Interrupt          |
    |  9  |   +5 VDC    | +5 Volts DC (300 mA)                 |
    | 10  |   DATA 0    | CPU Data Bus - Bit 0                 |
    |     |             |                                      |
    | 11  |   DATA 1    | CPU Data Bus - Bit 1                 |
    | 12  |   DATA 2    | CPU Data Bus - Bit 2                 |
    | 13  |   DATA 3    | CPU Data Bus - Bit 3                 |
    | 14  |   DATA 4    | CPU Data Bus - Bit 4                 |
    | 15  |   DATA 5    | CPU Data Bus - Bit 5                 |
    |     |             |                                      |
    | 16  |   DATA 6    | CPU Data Bus - Bit 6                 |
    | 17  |   DATA 7    | CPU Data Bus - Bit 7                 |
    | 18  |   R/W*      | CPU Read/Write Signal                |
    | 19  |   ADDR 0    | CPU Address Bus - Bit 0              |
    | 20  |   ADDR 1    | CPU Address Bus - Bit 1              |
    |     |             |                                      |
    | 21  |   ADDR 2    | CPU Address Bus - Bit 2              |
    | 22  |   ADDR 3    | CPU Address Bus - Bit 3              |
    | 23  |   ADDR 4    | CPU Address Bus - Bit 4              |
    | 24  |   ADDR 5    | CPU Address Bus - Bit 5              |
    | 25  |   ADDR 6    | CPU Address Bus - Bit 6              |
    |     |             |                                      |
    | 26  |   ADDR 7    | CPU Address Bus - Bit 7              |
    | 27  |   ADDR 8    | CPU Address Bus - Bit 8              |
    | 28  |   ADDR 9    | CPU Address Bus - Bit 9              |
    | 29  |   ADDR 10   | CPU Address Bus - Bit 10             |
    | 30  |   ADDR 11   | CPU Address Bus - Bit 11             |
    |     |             |                                      |
    | 31  |   ADDR 12   | CPU Address Bus - Bit 12             |
    | 32  |   CTS*      | Cartridge (ROM) Select Signal        |
    | 33  |   GROUND    | Signal Ground                        |
    | 34  |   GROUND    | Signal Ground                        |
    | 35  |   SND       | Cartridge Sound Input                |
    |     |             |                                      |
    | 36  |   SCS*      | Spare Cartridge (DISK) Select Signal |
    | 37  |   ADDR 13   | CPU Address Bus - Bit 13             |
    | 38  |   ADDR 14   | CPU Address Bus - Bit 14             |
    | 39  |   ADDR 15   | CPU Address Bus - Bit 15             |
    | 40  |   SLENB*    | Input to Disable Internal Devices    |
    ------------------------------------------------------------
    * are LOW (0 volts) to activate

    Q8a & b) What is the pin-out for the cassette and joystick ports?
    Q8c) What is the pin-out of the RGB connector on the bottom of the CoCo 3?

    Pin 6 is missing on the connector (for polarity) and pin 10 is no connection.
    Q9) Tell me about CoCo Emulators for the PC (DOS/Windows/Mac/etc.)
    With the advent of powerful 80xxx and Pentium-level computers, emulators have appeared for almost every "older" computer.  There are several emulators for the CoCo.  One of the most popular is Jeff Vavasour's CoCo 3 Emulator.  It almost fully implements a CoCo 3 on a DOS or Windows machine.  DX/4-100 is recommended (or better!)  His emulator features ability to read CoCo disks (and write them) software duplicated interrupts, external sound on SB, full graphic support, debug utilities, speed controls, high-res joystick and mouse support, and a port program to move files between the MS-DOS and CoCo environment.  You can also visit the TR-80 page for links to other emulators.  As of March, 1999, rumors were around that a Windows-based DirectX CoCo Emulator by Russ LeBang was under development.  This is exciting news.  The current emulators require too much processing time to emulate the CoCo GIME chip, which was capable of page-flipping, hardware scrolling, etc.  Whereas the current emulators cannot do these features fast enough to look like a real CoCo, perhaps a native Windows DirectX application will.  A PowerPC version is also in the works.
    Q10) What kind of hardware is available?
    Dozens of hardware add-ons/peripherals were created for the CoCo. 

    Clock/Chip Accelerators:

    The safest way (in my opinion) to gain speed is to install a 6309 chip, and then run OS/9.  Even under RS-DOS, a 10%-15% increase could be achieved with patches to the OS.

    Another possible way is to replace the crystal on the CoCo motherboard.  This will increase the pulses going to the CPU which is externally driven, and rated up to 2 mhz continuous operation.  However, this crystal also drives the printer, cassette, and serial ports, plus disk drive operation, and video out.  All of those would be messed up.

    A clever and unique way which is gaining popularity was developed by John Kowalski, a.k.a. Sockmaster.  He attached a custom-built circuit to the 6809.  It detected whether the CPU needed to access the system bus (which it must do for memory, disk, video, etc.).  If the CPU did not- that is, the CPU was busy executing some internal instructions- the circuit would insert an extra clock pulse to the CPU between the regular ones.  If the CPU needed to access the bus, no extra cycles were inserted, and normal speed operation took place.  This increased the CoCo speed by approx. 25%- 40% but kept video, disk, printer, etc. working normally.

    Memory/Disks:
    The standard CoCo 3 came with 128k, and could be expanded to 512k.  Kits were manufactured for 1 meg, although only OS-9 could really make use of this memory.  I think 2 megs was also available under OS-9.  With 512, or 1 meg, the CoCo 3 could have 1 or 2 RAMDisks.  When the CoCo 2 came out, there were bubble-memory kits for extra RAM, and/or RAMDrives in a cartridge.  Recently, a kit has been developed that uses a 1 meg SIMM chip.
    Printers:
    Radio Shack offered several DMP Dot Matrix printers.  Most had dual serial and Centronics interfaces.  Some vendors offered Serial-to Parallel converters (EG Blue Streak Ultima) that would allow the CoCo to hook up to any standard printer with a Centronics parallel interface.  Epson-FX and SX printers wer also popular, as was the Radio Shack CGP-115, or Color Graphics Printer.  Work was attempted at creating drivers for laser and inkjet printers. 
    Monitors:
    The CoCo 1 and 2 had RF converters inside them.  They would be hooked to the antenna inputs of a TV or VCR.  The signal was sent on channel 3 or 4.  For the CoCo 3, Radio Shack offered the CM-3 and CM-8 for the CoCo.  (The CoCo 3 featured the RF converter, a composite video and audio out, and a special analog-RGB port underneath).  The CM-3 produced a rather poor image, but the CM-8 was quite acceptable.  The Magnavox 8CM515 was a popular non-Tandy monitor with even sharper resolution.  It also had the option of switching to composite for those weird artifact colors on the original CoCo 2.  TV and composite outputs were satisfactory for images, and standard 32 column and 40 column text, but 80 column was unreadable without a good monitor.

    Many other monitors that accept analog RGB, plus separate VSYNC and HSYNC pulses could also work.  Some othe rmonitors, though, require a mixed SYNC pulse, or an inverted one, and conversion kits were available.

    There was also a Word Pak for the old CoCo 1 and 2.  Its output goes to a monocrome monitor.  Word Pak RS/80 allows having 80 x 24 text under RSDOS and OS-9.

    Other vendors also made kits to create better quality composite output on the CoCo 1 and 2, and/or lowercase using an external character ROM chip.

    Modems:
    Many external modems worked perfectly with the CoCo 2 and 3.  As far as cartridge modems go, the Direct Connect Modem Pak was a 300 baud modem designed for the CoCo.  The modem pak does have a communications program built in its ROM, but it's not that sophisticated.  For those of you who do not stand the built-in communications program, there are several PD terminal packages that may suit your needs, as well as some VERY NICE commercial ones.  Marty Goodman, MD, also published a way to modify a DC Modem Pack and make it an RS-232 pack, capable of 19,200 baud.

    For a CoCo 3, there are V-TERM for RSDOS and KBCom and DeskMate 3 for OS-9.  If you can get files from listserv, there is a PD version of KBCom on it. The commercial version is said to be much better but I have never seen it.  If you decide on V-TERM, Rick's Computer Enterprises may be able to sell you a copy.  Jump to the Software FAQ and read about other communication software.

    Miscellaneous:
    Other popular add-ons included the joysticks, deluxe self-centering joysticks, a mouse, an x-pad, dozens of utility and game program packs, video digitizers, hard-drive interfaces, real-time clocks, etc.

    A hi-res joystick adaptor was developed.  It plugged into the serial port and joystick port.  A regular CoCo joystick/mouse was then plugged into the adaptor.  This boosted the resolution of the joystick from 64x64, to 640x640 (I think).

    Exciting recent (Feb. 1999) news includes the possibility of a cartridge with an IDE interface, real-time clock, parallel port, and "speed doubler" for the CoCo 3.

     ---July, 1999
    This FAQ is being archived and maintained by
    theother_bob@yahoo.com
    Hosting by WebRing.