Brand new used C-64 PC

From: Doug Coward <mranalog_at_home.com>
Date: Fri Mar 17 02:30:36 2000

The C64 Serial _PORT_
    The C64 Kernal does have routines that implement a serial port
    using certain pins on the C64 User Port. But if you don't mind
    writing your own driver then theoretically speaking all you
    need to implement a bidirectional serial port is two bits on a
    port with the capability of defining one as input and the other
    as output (the input bit should be capable of generating an
    interrupt), and a ground reference. And if you want RS-232C
    signal levels (many computers and other serial devices are
    just fine with TTL level signals) you need to add a RS-232
    driver and receiver to the interface. Back then that meant
    the 1488 and 1489. Today you have the ADM202,MAX202 and the
    LT1181.
      There is a problem with the C64 RS-232 Kernal routines. It
    turns out that the time they take to process one bit plus the
    timer value for one 1200 baud bit time was slightly more than
    one 1200 baud bit time. By the 8th bit, the timer interrupt is
    happening more than 1/2 bit time late, missing a bit. This is why
    in the early days (before 1985) people had to set the serial
    port speed to 1210 baud in order to receive reliably at 1200
    baud. And of course you really needed two stop bit time to
    to prepare for the next byte. I really believe that our group
    wrote the first serial driver to allow the C64 to run full
    speed at 1200 baud.
     If you don't need interrupt driven serial routines, we use
    to do our software development on the Stratus and then download
    to the C64s in our offices using a serial cable that plugged into
    one of the joystick ports. Software in the C64 would bit-bang
    the joystick port at 9600 baud (with the screen blanked).

The C64 Serial _BUS_
    All fast serial disk software for the C64 can actually be
    traced back to those clever C64 users in Germany, they did it
    first. I reverse engineered the Epyx cartridge about 1985.
    Yes, bits were transfered two at a time with another line used
    to to signal "ready to receive a byte". I do remember that the
    intrabyte transfer time for two bits was 10 clock cycles. That
    doesn't include any of the byte setup time. We were loading
    just over 50K in less than 15 seconds.
     The real trick to fast disk routines without blanking the screen
    was knowing not ask for a byte to be transfered from the disk
    when the video chip was drawing every 8th scan line. In the C64,
    the video chip causes a DMA at the end of every 8th scan line
    to access video ram and get the information for the next 8 lines.
    This tristates the 6510 for 40 clock cycles and no instructions
    can be executed.
 Just my $.02
 --Doug
====================================================
Doug Coward dcoward_at_pressstart.com (work)
Sr. Software Eng. mranalog_at_home.com (home)
Press Start Inc. http://www.pressstart.com
Sunnyvale,CA

Curator
Analog Computer Museum and History Center
http://www.best.com/~dcoward/analog
====================================================
Received on Fri Mar 17 2000 - 02:30:36 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:33:05 BST