VIC-20 User!

Started by xlar54, August 08, 2006, 09:51 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

xlar54

Hey, its party time! hehehe... today, Ive posted my 100th post and am now a "VIC-20" user!  lol... damn 23 column characters.... Do I get a free VIC-20? ;)

Blacklord

Quote from: xlar54Hey, its party time! hehehe... today, Ive posted my 100th post and am now a "VIC-20" user!  lol... damn 23 column characters.... Do I get a free VIC-20? ;)
Oh what the heck - here ya go -


xlar54

There's just something quaint about that white breadbox and black keys that brings a tear to me eye.......

Blacklord

Quote from: xlar54There's just something quaint about that white breadbox and black keys that brings a tear to me eye.......
Actually I prefer the older VIC's keyboard - squarer & more comfortable than the later models (& the breadbox 64's too).

Lance

OzOne

Quote from: xlar54Hey, its party time! hehehe... today, Ive posted my 100th post and am now a "VIC-20" user!  lol... damn 23 column characters.... Do I get a free VIC-20? ;)
I'm still a KIM-1 user; does that mean I win a KIM-1 ? :P

Rather have a KIM than a VIC. Hmmmm, funny, one's a female name, one's a male name - yep! rather have a Kim! :cool:

Blacklord

Quote from: OzOne
Quote from: xlar54Hey, its party time! hehehe... today, Ive posted my 100th post and am now a "VIC-20" user!  lol... damn 23 column characters.... Do I get a free VIC-20? ;)
I'm still a KIM-1 user; does that mean I win a KIM-1 ? :P
Sorry, if I had a spare KIM-1 I'd be keeping it for ME!

Lance

Brendon

Quote from: admin
Quote from: OzOne
Quote from: xlar54Hey, its party time! hehehe... today, Ive posted my 100th post and am now a "VIC-20" user!  lol... damn 23 column characters.... Do I get a free VIC-20? ;)
I'm still a KIM-1 user; does that mean I win a KIM-1 ? :P
Sorry, if I had a spare KIM-1 I'd be keeping it for ME!

Lance
Wasn't there some plans floating around so you could actually build a modern reproduction ? Is it still possible to do this ? Think i saw 'em about ten years ago.....


Brendon

OzOne

Quote from: BrendonWasn't there some plans floating around so you could actually build a modern reproduction ? Is it still possible to do this ? Think i saw 'em about ten years ago.....
Brendon
Yes, you're quite correct, this is shamelessly stolen from Ruud Baltissen's site :

In this article, Ruud Baltissen describes how you can make your own KIM-1 replica. Ruud improves on the original design and makes it much easier to construct by reducing the parts count using some modern chips not available at the time the original KIM-1 was sold.

Ruud's "KIM-2" retains full software compatibility with the original KIM-1 microcomputer. Schematics for both the original and the simplified version are included along with source code for the monitor ROM. Good luck and have fun building your own classic KIM-1!

What is the KIM-1?

If you don't know by now then stop and read my document about the KIM-1 first.

The Troublemaker: 6530

The only real hurdle to building a replica KIM-1 is an old I/O chip called the 6530. Anybody who is a little familiar with the hardware market can tell you that you can't find anywhere to buy the old 6530 anymore, and it is used twice in the original KIM-1. Happily enough there is another IC available which you could call its brother: the 6532.

The 6532 has 16 I/O-lines, an internal timer and 128 bytes of RAM onboard. It also has no internal mask-programmed ROM. But we (should) know by now that the internal ROM of the 6530 could be selected unindependently from the I/O. So for this project we'll use an external EPROM as replacement. The pinout of the 6532 is completely different but that should not be a problem. The next difference is the fact that the 6532 has a separate IRQ and PB7 line. As we will see, the functionality of both lines is the same as with the 6530. To create the same circumstances we only have to connect them together. The third difference is the availability of PB6 with a 6532. See it as a bonus as I haven't found any reason how it could jeopardize our project. The fourth difference is that it is possible to generate an interrupt depending the behaviour of PA7. But this is an option which is out of function by default after a reset.

The last and major difference however lays in the way the registers are selected:

funtion:        RS:  A6:  A5:  A4:  A3:  A2:  A1:  A0:  R/W:

RAM              0    x    x    x    x    x    x    x    x

DRA              1    x    x    x    x    0    0    0    x     A
DDRA             1    x    x    x    x    0    0    1    x     B
DRB              1    x    x    x    x    0    1    0    x     C
DDRB             1    x    x    x    x    0    1    1    x     D

PA7, IRQ off,
      neg edge   1    x    x    0    x    1    0    0    0     F
PA7, IRQ off,
      pos edge   1    x    x    0    x    1    0    1    0     G
PA7, IRQ on,
      neg edge   1    x    x    0    x    1    1    0    0     H
PA7, IRQ on,
      pos edge   1    x    x    0    x    1    1    1    0     I

read interrupt
       flag      1    x    x    x    x    1    x    1    1     E

read timer,
       IRQ off   1    x    x    x    0    1    x    0    1     J
read timer,
       IRQ on    1    x    x    x    1    1    x    0    1     K

Clock / 1,  
       IRQ off   1    x    x    1    0    1    0    0    0     L
Clock / 8,  
       IRQ off   1    x    x    1    0    1    0    1    0     M
Clock / 64,
       IRQ off   1    x    x    1    0    1    1    0    0     N
Clock / 1024,
       IRQ off   1    x    x    1    0    1    1    1    0     O

Clock / 1,
       IRQ on    1    x    x    1    1    1    0    0    0     P
Clock / 8,
       IRQ on    1    x    x    1    1    1    0    1    0     R
Clock / 64,
       IRQ on    1    x    x    1    1    1    1    0    0     S
Clock / 1024,
       IRQ on    1    x    x    1    1    1    1    1    0     T

As we can see, the last 16 registers equal the 16 of the 6530. So now we have to develop some logic which will do the following:

    * The 6532 is only visible within a range of 128 bytes
    * The first 16 bytes represent register 16 to 31
    * The next 48 bytes are mirrors of the first 16
    * The last 64 bytes apear as RAM

Conclusion:

    * Input A6 won't be used and can be tied to GND
    * Input A4 is connected to addressline A4 of the 6502 via an invertor.
    * An 74LS138/74LS08 construction or equivalent enables the RS- and CS-lines at the right moment.

ROM and RAM

Here we have another problem. The original KIM-1 only has 2K of ROM. While it is possible to buy a 2K EPROM (the 2716), it is more expensive and much less available than the popular 2764, an 8K device. The same problem applies to the RAM. We will use the 8K parts and simply tie the upper address lines to GND to make them act like the 2K versions.

On the new schematic the EPROM and SRAM are wired up to act just like the original KIM-1 memories. However, it would be quite simple to use the upper portions of these chips we have disabled to expand the memory of your replica KIM-1. You can do this by OR-wiring the CS-line with more Kx-outputs of the main 74145. Don't forget to wire up the address lines also! In case of the EPROM we can tie switches to the surplus address lines and have the advantage of a switchable multi-KERNEL system.

Source Codes of the ROM

You can compile your own monitor ROM based on my commented source code. You can browse it online or download it as a text file: kim-src.asm. It should be 100% okay.

Schematics of the New KIM-1

Available here as a GIF file: kim-rb.gif. You can compare it to my schematic of the original KIM-1: kim.gif.

These are major differences between the two:

    * Replacement of the 6530s by 6532s.
    * Replacement of the 6108 RAM-ICs by one 6264 or equivalent 8K*8 SRAM.
    * Adding an EPROM.
    * Adding a 74LS138 to decode the RAM and I/O of the 6532s.
    * Combining K6 and K7 to one line, dropping the resistor for K6.
    * Adding jumpers to enable combining other K-lines as well.

I didn't change things which are more or less obvious like replacing the clock circuit by an oscillator module or replacing all different TTL-ICs by LS or HCT types.