Jump to content
IGNORED

Intellivision Keyboard Component pics


y-bot

Recommended Posts

(OK, I've spent the last ~1.5 hours trying to construct a post. I've been hit by multiple web browser crashes, lost drafts, and other frustrations as I try to draw in multiple primary sources. As a result, I'm severely curtailing the detail of this post to the essence.)

 

 

Also, I suspect the KC EXEC may be different between the Computer II and Computer III. The code which loads CRTC parameters in the dump we have (which I believe was from a Computer II) only has one parameter set:

.

;;=============================================================================
;;  Set up default communication channels (FIFOs, display window, 9927 regs)
;;-----------------------------------------------------------------------------
C926  A9 1E     LDA #$1E        ; \
C928  85 94     STA $94         ;  |
C92A  A9 C9     LDA #$C9        ;  |
C92C  85 95     STA $95         ;  |-- Block copy 12 bytes @ $C91E to $340
C92E  A9 00     LDA #$00        ;  |
C930  85 90     STA $90         ;  |
C932  20 63 C3  JSR $C363       ; /

C935  A2 0D     LDX #$0D        ; \
C937  8E 0A 03  STX $030A       ;  |
C93A  CA        DEX             ;  |-- Set up 12 byte FIFO at $308.
C93B  8E 08 03  STX $0308       ;  |   6502->CP1600 kbd input FIFO
C93E  8E 09 03  STX $0309       ; /
C941  A2 2B     LDX #$2B        ; \
C943  8E 17 03  STX $0317       ;  |   Set up 42 byte FIFO at $315.
C946  CA        DEX             ;  |-- This FIFO is used when displaying
C947  8E 15 03  STX $0315       ;  |   messages from the CP-1600 to 6502.
C94A  8E 16 03  STX $0316       ; /
C94D  20 F3 CA  JSR $CAF3       ; Set display parameter variables
C950  20 C1 C6  JSR $C6C1       ; Set saved top-of-window address.
C953  20 56 C8  JSR $C856       ; Clear the display
C956  AD CA 40  LDA $40CA       ; Strobe screen scan location reset
C959  A2 07     LDX #$07
C95B  BD 6A C9  LDA $C96A,X     ; \
C95E  9D BF 40  STA $40BF,X     ;  |__ Copy video parameters to display from
C961  CA        DEX             ;  |   table below.  9927 is at $40C0..$40CF
C962  D0 F7     BNE $C95B       ; /
C964  20 17 C9  JSR $C917       ; Clear column position.
C967  AD CE 40  LDA $40CE       ; Strobe 9927 timing chain start
C96A  60        RTS             ; Done!
;;=============================================================================

; Data from $C96B to $C989 (31 bytes)
C96B  .byte $38         ; Horiz character count = 56??
      .byte $25         ; HSync Width = 4, HSync Delay = 5 
      .byte $3A         ; Scans/Data Row = 7, Chars/Data Row = 4 
      .byte $97         ; Skew = 2, Data Rows/Frame = 23
      .byte $03         ; Scan lines/Frame = 3 ?
      .byte $44         ; Vertical Data Start = 70
      .byte $17         ; Last displayed data row = 23

.

 

For reference, this is how the CRTC maps into the KC memory map. Notice it has slightly different proposed values for the CRTC registers.

post-14113-0-27242000-1519516139_thumb.png

 

Also, here are the TMS9927 and SMC CRT5027 data sheets.

 

There are two PROMs on the KC motherboard that are of appropriate size to serve as "self-load PROMs" for the CRTC. The self-load location is marked as "Don't touch!" in the KC memory map image I linked above. Neither PROM has patterns that quite make sense as TMS9927 CRTC parameters, though, unless there's, erm, interesting wiring between the PROM and the CRTC.

 

(As noted above, I'd written a lot more analysis but kept getting my legs kicked out from under me by my browser. So, I give up for now.)

Edited by intvnut
Link to comment
Share on other sites

(This will quickly go OT -- apologies in advance)

 

I'm starting to think this is why the KC only output white text: when you push a pixel to white, it doesn't matter if your output timing isn't ***exactly*** synchronized with the color burst coming from the MC. The same holds true for any gray-scale signal you send, that would lighten the colors the MC is outputting. They wouldn't need to be precise to MCLK * 4 (14.31818MHz), which is what I'm having to do to get reproducible colors. While I can use a crystal to get that frequency easily, I still have to somehow slave it to MCLK. The reason is that if my crystal isn't ***exactly*** 4x the clock from the MC (which might itself differ from the ideal frequency by a small tolerance), you get horizontal screen jitter and colors that are hue-shifted. I'm experimenting with having SR1 supply the power to the crystal instead of just VCC, which should cause it to "reset" every frame. For a crystal with a tolerance of ±30ppm, it equates to a potential drift of up to ±0.5 a clock cycle per frame. This should be more than acceptable, but there are still two issues I'm looking at:

 

1. Startup time of the crystal after each SR1 "reset". It doesn't appear to be an issue in my testing, but I'm unsure of whether that will always be the case.

2. Time-delay from a crystal clock pulse to actual output to the cartridge pin. What really matters is the time at which the signal reaches the RF modulator. That is the time that must be synchronized with the clock signal driving the Inty's color chip. I'm still mulling what measures can be taken.

 

The good news is that between using a crystal and a much simplified timing design, my results are remarkably stable even on a breadboard. I can't wait to see what it looks like when my boards arrive...

Link to comment
Share on other sites

Wow, this is all fascinating! I can't wait to see what comes of it. Ever since I was a small child and saw it advertised on a magazine, I've wanted a Keyboard Component. It always looked like "the future" to me! :)

 

Should we ask Al for a specialised sub-forum for "Hardware Hacking" or something like that? First, I imagine that the vast majority of Intellivision enthusiasts talking about their latest eBay escapades and favourite video game boss levels, actually does not care about any of this. Second (and mostly because of the former), these kind of threads tend to get buried in the fluff and noise in the main channel and they're hard to find and keep track of.

 

What do you guys think?

 

-dZ.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Very nice that it can be emulated although nothing would beat Ron's paws on the KC with it.

Well, what do we have here?

 

post-46336-0-43101900-1520452706.png

 

Long lost Intellivision prototype....? No.

New fangled Intellivision mind powered VR system...? No.

First attempt at a simplified 2 chip Keyboard Component BASIC cartridge implementation, ready for testing.... Could be!

 

A massive hat tip to Joe and Frank who have been analysing and documenting the Intellivision KC cartridge port and BASIC cartridge. Kudos guys!

 

For those that are interested I will release the schematics for this once it has been tested and debugged.

 

@RonTheCat - looks like we might need to arrange another Italian meal :)

 

And for everyone who, like me, was born in the 70s, nostalgia time... ;)

 

Edited by decle
  • Like 7
Link to comment
Share on other sites

Wow Decle , that is simply amazing

 

Email me to let me know some dates you are free for a test drive of the new board and more importantly your Italian meal :)

Does not look like the cassette repair guy in North London is too interested in the work so looks like the KC is not going anywhere soon. No real rush i suppose.

 

Wish we were a bit closer to emulating the KC software , especially Jack LaLanne ... seems the goal landing a man on the moon in the 60's was easier ...

Edited by Ron The Cat
Link to comment
Share on other sites

  • 2 weeks later...

IT LIVES! MWA-HA-HA! :evil:

 

post-46336-0-79711700-1521311191.jpg

 

post-46336-0-09087500-1521311189.jpg

 

post-46336-0-50555200-1521311190.jpg

 

For giggles we ran David Ahl's BASIC benchmark

 

post-46336-0-83015400-1521311187.jpg

 

Run time was 62 seconds. Pretty respectable for a 0.89MHz 6502, that puts it about half way down the list of machines (see below), in the company of some reasonable business machines and well ahead of its contemporaries like the C64 and Apple II. This performance does seem to come at the cost of some floating point accuracy, although it is about the same as some other machines with MS Basic like the TRS-80 Model II and Aquarius. It should be noted that if you try to replicate this in MAME you will get a time of about 30 seconds, I think it runs the 6502 at twice its real clock speed.

 

post-3403-0-47897300-1382822429.jpg

 

Does it have a snow level?

 

Seriously though, this is really cool. Any plans to offer pre-built cards?

 

As you can see there is screen interference, but I'm not sure you can call it snow ;)

 

I have no plans for further boards, my thing is R&D, I leave production to others. However, for those that might be interested here is the schematic of the circuit implemented, along with an Eagle file. Obviously you use it at your own (and your keyboard component's) risk.

 

post-46336-0-86671200-1521312166_thumb.png

 

eagleSchematic.txt - rename this basicBoard.sch

 

As already noted this is a simplified design that only supports 8K ROMs (the Mattel boards support up to 12K). The up side it that it only uses two chips, which makes manufacturing easier.

 

I'd like to thank RonTheCat for allowing me to play with his wonderful toy once again, for his kind hospitality and the excellent Italian lunch (this BASIC cartridge clone is brought to you by the power of bruschetta and tagiatelle bolognese). And also JoeZ and FrankP whose work made this possible.

 

 

Cheers

 

decle

 

 

  • Like 6
Link to comment
Share on other sites

...

 

Run time was 62 seconds. Pretty respectable for a 0.89MHz 6502, that puts it about half way down the list of machines (see below), in the company of some reasonable business machines and well ahead of its contemporaries like the C64 and Apple II. This performance does seem to come at the cost of some floating point accuracy, although it is about the same as some other machines with MS Basic like the TRS-80 Model II and Aquarius. ...

 

 

You cheated a little with that basic test : ) . Multiplication a*a is quicker than exponent a^2. On the keyboard component use # for exponent; I get a time of 1:40 in mame.

 

I'm really happy the cartridge worked.

  • Like 1
Link to comment
Share on other sites

I threw this together based on your schematic. I had to make one change though: I flipped the pins going to the pin header so it matched the picture of your test cart -- the pins that go to the top of the edge card connector and those that go to the bottom. Only you would be able to verify that this is correct, though. I dont have a KBC, but hopefully this will be useful to someone. I tried to be conscious of noise suppression techniques, so both sides have a ground plane with generous vias to facilitate keeping them in equilibrium. Also, all traces have ground traces between them to try to limit crosstalk.

KBC_cart.zip

post-7945-0-74184600-1521374888.png

Edited by JohnPCAE
  • Like 1
Link to comment
Share on other sites

I've read this thread with excitement and interest, but I have one question. Just so us software (i.e., non-hardware) guys can follow, the actual feat achieved here is the creation of a cartridge PC board that is compatible with the Keyboard Component? Or is there more to it than that?

 

-dZ.

  • Like 1
Link to comment
Share on other sites

... the actual feat achieved here is the creation of a cartridge PC board that is compatible with the Keyboard Component? Or is there more to it than that?

 

Nope, that is pretty much it. RonTheCat has a KC, but he has no software. The tape deck is broken for the moment (go figure), so a clone BASIC cartridge means it is a little bit less of a brick. The main problem with producing one was the 6502 cartidge port was not documented, but JoeZ and FrankP have fixed that (details to follow in due course). And of course it is always nice when you plug some hacked up homebrew into a $2000+ piece of hardware and you are still friends at the end of the day ;)

 

I threw this together based on your schematic. I had to make one change though: I flipped the pins going to the pin header so it matched the picture of your test cart -- the pins that go to the top of the edge card connector and those that go to the bottom. Only you would be able to verify that this is correct, though. I dont have a KBC, but hopefully this will be useful to someone. I tried to be conscious of noise suppression techniques, so both sides have a ground plane with generous vias to facilitate keeping them in equilibrium. Also, all traces have ground traces between them to try to limit crosstalk.

 

That is cool, thanks. I think it should work. We followed the Mattel convention to have the pins closest to the KC be odd as can be seen here:

 

post-46336-0-24958700-1521378481.jpg

 

You cheated a little with that basic test : ) . Multiplication a*a is quicker than exponent a^2. On the keyboard component use # for exponent; I get a time of 1:40 in mame.

 

I'm really happy the cartridge worked.

 

Cheers, we did not know that # was the exponentiation operator and did not have a manual :(. We did try ** with predictable "?SN Err" results and the KC does not have a ^ key which is the normal exponentiation operator in MS Basic I think, so we had to fall back on vanilla multiplication. How did you find out about #?

 

Running through MAME 0.189 I get a run time of ~46 secs when using #, which I think would suggest a real world run time of ~92 secs, a nearly 50% hit on the time using multiplication. Despite this it looks as though the KC might still be faster than the C64 and Apple II. I'm as surprised as anyone by this. Perhaps RonTheCat could check this on his KC when he next has it out?

 

post-46336-0-50032700-1521378736.png

 

This result seems to agree well with Popular Computing result for the 1MHz Ohio Scientific (OSI) Challenger 1P at 80secs (80secs / 0.89MHz * 1Mhz = 89.88secs), which has the only other 8K / "6 digit" / 32 bit FP version of 6502 MS BASIC:

 

https://www.pagetable.com/?p=46

 

Using # also hits floating point accuracy further, as expected. The result now lines up exactly with the OSI result from the Popular Computing listing of 0.32959. The fact that KC BASIC only uses 32 bit FP numbers rather than the 40 bits of most the larger MS Extended BASICs explains the poor absolute accuracy performance.

 

So I think this should be consistent and goes to show the sensitivity of benchmark results.

  • Like 1
Link to comment
Share on other sites

 

Nope, that is pretty much it. RonTheCat has a KC, but he has no software. The tape deck is broken for the moment (go figure), so a clone BASIC cartridge means it is a little bit less of a brick. The main problem with producing one was the 6502 cartidge port was not documented, but JoeZ and FrankP have fixed that (details to follow in due course). And of course it is always nice when you plug some hacked up homebrew into a $2000+ piece of hardware and you are still friends at the end of the day ;)

 

That is awesome indeed! :) Great work, everyone! :thumbsup:

Link to comment
Share on other sites

 

....

 

Cheers, we did not know that # was the exponentiation operator and did not have a manual :(. We did try ** with predictable "?SN Err" results and the KC does not have a ^ key which is the normal exponentiation operator in MS Basic I think, so we had to fall back on vanilla multiplication. How did you find out about #?

 

Running through MAME 0.189 I get a run time of ~46 secs when using #, which I think would suggest a real world run time of ~92 secs, a nearly 50% hit on the time using multiplication. Despite this it looks as though the KC might still be faster than the C64 and Apple II. I'm as surprised as anyone by this. Perhaps RonTheCat could check this on his KC when he next has it out?

 

attachicon.gifmame.png

 

This result seems to agree well with Popular Computing result for the 1MHz Ohio Scientific (OSI) Challenger 1P at 80secs (80secs / 0.89MHz * 1Mhz = 89.88secs), which has the only other 8K / "6 digit" / 32 bit FP version of 6502 MS BASIC:

 

https://www.pagetable.com/?p=46

 

Using # also hits floating point accuracy further, as expected. The result now lines up exactly with the OSI result from the Popular Computing listing of 0.32959. The fact that KC BASIC only uses 32 bit FP numbers rather than the 40 bits of most the larger MS Extended BASICs explains the poor absolute accuracy performance.

 

So I think this should be consistent and goes to show the sensitivity of benchmark results.

You can find the "Introduction to BASIC" guide at the usual places including here. http://intellivisionbrasil.com.br/Jogos_Basic.htm

 

I was using mame v0.188 and I found out it runs incredibly slow. I tried again using mame v0.195 and got a time of 47s. By the way mame has a handy paste text from clipboard feature using shift-scrollLock. It is slow and does screw up a few characters for the KC emulator.

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

KC motor 2

 

So much harder to identify but found it.

 

Vector Research Nippon Audio Motor NAM-5CA 12v

 

Vector was small tape deck maker in Chatsworth California which went out of business in the mid 80s

 

According to papaintellivision the cassette deck was British but I do wonder why an obscure motor from vector research was used. Of course the word 'Nippon' on it make me believe it was made in Japan for Vector.

Maybe the cassette deck ended up being supplied by Vector instead.

post-62351-0-14268900-1523254961_thumb.jpg

Edited by Ron The Cat
  • Like 4
Link to comment
Share on other sites

Some more KC tape deck 'porn' ...viewer discretion advised

 

Decle with no doubt do a more in-depth analysis at some point

 

Believe that the photo #2 is the solenoid that ejects the cassette.

 

Photo #6 shows the solenoid mechanism for moving the heads forward

 

post-62351-0-67599200-1523255239_thumb.jpg

post-62351-0-15982200-1523255253_thumb.jpg

post-62351-0-86959400-1523255310_thumb.jpg

post-62351-0-34624800-1523255365_thumb.jpg

post-62351-0-74248900-1523255427_thumb.jpg

post-62351-0-84190300-1523255478_thumb.jpg

post-62351-0-80698400-1523255700_thumb.jpg

  • Like 3
Link to comment
Share on other sites

Awesome photos and thanks for sharing! These are the first close-up photos I've seen of the tape mechanism.

 

Is there only the 1 belt or are there other belts hidden deeper inside? Is replacing the 1 belt as easy as it looks (i.e. remove the 3 screws for the panel to access the large pulley)?

Link to comment
Share on other sites

I always appreciate photos like this. I generally assume that rubber belt might fail over time. What doesn't work in your case?

 

Decle could probably explain this way better but here goes:

 

The solenoid actuated door mechanism does not fire when the eject command is typed in so have to use a credit card to manually activate a switch to eject the cassette tray

The solenoid that moves the head and pinch roller forward does not move when playback commences or clean command is used - we do not actually have a tape but you can hold a trigger down that tricks it into thinking one is loaded.

 

These seem on face of it some sort of electronics connection problem which Decle is going to take a look at in the very near future.

The right swindle spins when use clean command so we know there is some life in the unit.

 

The main belt that is very visible in the photos is in fact in very good condition. There is an inner one that is further inside the unit which I will let Decle deal with as it a little tricky to get to.

 

The unit was stored by its previous owner in a garage in cananda for 30 years until it got shipped to the UK in November - maybe belts die more in more hotter climates ?

One side of the KC box was chewed on by Canadian squirrels which thank goodness did not get to KC

 

We have a little black mush around the each of the swindles , maybe a rubber surround or something - we thought it was belt related but will not know for sure until look at the very inner belt.

 

We are ordering a mix bag of belts just in case - from the looks of it there are just 2 belts to deal with in the unit driven by 2 separate motors

Edited by Ron The Cat
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...