intvnut Posted February 24, 2018 Share Posted February 24, 2018 The "Computer III" engineering memo and the Keyboard Component service manual are there as separate pdfs. Which ones are you looking for? I'd love to find Keyboard schematics, even just for subsystems. The PSU schematic is in there, but that's about it. Quote Link to comment Share on other sites More sharing options...
intvnut Posted February 24, 2018 Share Posted February 24, 2018 (edited) (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. 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 February 25, 2018 by intvnut Quote Link to comment Share on other sites More sharing options...
JohnPCAE Posted February 25, 2018 Share Posted February 25, 2018 (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... Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted February 25, 2018 Share Posted February 25, 2018 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. 1 Quote Link to comment Share on other sites More sharing options...
decle Posted March 7, 2018 Share Posted March 7, 2018 (edited) 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? 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 March 7, 2018 by decle 7 Quote Link to comment Share on other sites More sharing options...
mr_me Posted March 8, 2018 Share Posted March 8, 2018 Very, very nice! Next is to make copies of "Conversational French" and "Jack LaLanne" tapes. That should be easier. Quote Link to comment Share on other sites More sharing options...
+Lathe26 Posted March 8, 2018 Share Posted March 8, 2018 Does it have a snow level? Seriously though, this is really cool. Any plans to offer pre-built cards? Quote Link to comment Share on other sites More sharing options...
Ron The Cat Posted March 9, 2018 Share Posted March 9, 2018 (edited) 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 March 9, 2018 by Ron The Cat Quote Link to comment Share on other sites More sharing options...
decle Posted March 17, 2018 Share Posted March 17, 2018 IT LIVES! MWA-HA-HA! For giggles we ran David Ahl's BASIC benchmark 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. 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. 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 6 Quote Link to comment Share on other sites More sharing options...
JohnPCAE Posted March 17, 2018 Share Posted March 17, 2018 IT LIVES! MWA-HA-HA! um..you sure that's a good idea? 2 Quote Link to comment Share on other sites More sharing options...
mr_me Posted March 17, 2018 Share Posted March 17, 2018 ... 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. 1 Quote Link to comment Share on other sites More sharing options...
JohnPCAE Posted March 18, 2018 Share Posted March 18, 2018 (edited) 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 Edited March 18, 2018 by JohnPCAE 1 Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted March 18, 2018 Share Posted March 18, 2018 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. 1 Quote Link to comment Share on other sites More sharing options...
decle Posted March 18, 2018 Share Posted March 18, 2018 ... 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: 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? 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. 1 Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted March 18, 2018 Share Posted March 18, 2018 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! Quote Link to comment Share on other sites More sharing options...
mr_me Posted March 18, 2018 Share Posted March 18, 2018 .... 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? mame.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. 1 Quote Link to comment Share on other sites More sharing options...
JohnPCAE Posted March 18, 2018 Share Posted March 18, 2018 decle, any chance you could post a better pic of the top and bottom of that board? It makes me curious... Quote Link to comment Share on other sites More sharing options...
Ron The Cat Posted March 19, 2018 Share Posted March 19, 2018 Fantastic work Decle, Ron's keyboard is a 'brick' that does Microsoft Mattel Basic 1980 Amazing to see BASIC appear in the KC menu listing for the first time once the board was plugged in. 1 Quote Link to comment Share on other sites More sharing options...
Ron The Cat Posted April 9, 2018 Share Posted April 9, 2018 Been doing some further research on the KC cassette deck We have identified both the motors that power the belts Motor 1: Manbuchi EG-501ED-ZF 2400rpm (Capstan motor) 1 Quote Link to comment Share on other sites More sharing options...
Ron The Cat Posted April 9, 2018 Share Posted April 9, 2018 (edited) 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. Edited April 9, 2018 by Ron The Cat 4 Quote Link to comment Share on other sites More sharing options...
Ron The Cat Posted April 9, 2018 Share Posted April 9, 2018 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 3 Quote Link to comment Share on other sites More sharing options...
mr_me Posted April 9, 2018 Share Posted April 9, 2018 I always appreciate photos like this. I generally assume that rubber belt might fail over time. What doesn't work in your case? 1 Quote Link to comment Share on other sites More sharing options...
+Lathe26 Posted April 9, 2018 Share Posted April 9, 2018 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)? Quote Link to comment Share on other sites More sharing options...
Ron The Cat Posted April 9, 2018 Share Posted April 9, 2018 (edited) 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 April 9, 2018 by Ron The Cat Quote Link to comment Share on other sites More sharing options...
+intvsteve Posted April 9, 2018 Share Posted April 9, 2018 That next-to-last photo of the tape mechanism... It's so cute! It looks like it's smiling at us! You need to give it a name. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.