AY-5-3600-PRO

68 posts / 0 new
Last post
S.Elliott's picture
Offline
Last seen: 6 hours 36 min ago
Joined: Jun 23 2022 - 16:26
Posts: 79
Please pardon a little repetition...

Ah then, time to flash back to my challenge in comment 41.

The Applesoft program is supposed to read keystrokes and print the ASCII code associated with each one.

10 GET A$

20 PRINT A$, ASC(A$)

30 GOTO 10

So, the original challenge was to figure out how to cause an ILLEGAL QUANTITY ERROR when running the program.

 

  • It's actually a bug in Applesoft's GET handler, not an error in line 20.
  • On an Apple ][ or Apple ][ Plus the error occurs when you press SHIFT+CTRL+P.
  • On an Apple //e the error occurs with SHIFT+CONTROL+2 or just CONTROL+2.

 

But here's the fun sequel...

The Coleco Adam computer uses SmartBASIC, a derivative of Applesoft.  A member of the Apple II Enthusiasts group on Facebook tried the program on his Adam and found he could cause SYNTAX ERROR by pressing Ctrl+D.  AFAIK, that's unique to SmartBASIC...not reproducible on an original Apple II.

Offline
Last seen: 5 hours 39 min ago
Joined: Feb 27 2021 - 18:59
Posts: 275
Nitpick, referenced to published source

Book excerpt from 2007:

S.Elliott's picture
Offline
Last seen: 6 hours 36 min ago
Joined: Jun 23 2022 - 16:26
Posts: 79
Cross-checked KR9600 from AliExpress
CVT wrote:

The third time is the charm! Got a perfectly working KR9600-PRO for $6 shipping included!

Not sure if they have 27,700 more, but here is the link again: https://www.aliexpress.com/item/4000830397007.html

Out of sheer curiosity, I bought a KR9600-PRO from that link.  And it arrived yesterday...with 7 bent pins and a lot of blemishes.  It sure looks like it has gone through the mangle!

 

It wouldn't fit directly into my Apple //e because the pins were splayed too widely, so I used a spare 40-pin socket to carefully fix the pins one-by-one.  (Ignore the wires, they're left over from this socket's previous application.)

After straightening those pins, it worked perfectly in my 1983 Apple //e.  Including autorepeat, n-key rollover, and the AKO/AKD function.

 

No doubt these AliExpress chips are recycled from old equipment.  It's even possible it was pulled from another Apple //e, based on its 1992 manufacture date, but it seems more likely that it was pulled from something else that just happened to use the same part.

 

It also exhibits the same "bug" that AKD is not debounced.  Just like the originals.

CVT
CVT's picture
Offline
Last seen: 1 hour 39 min ago
Joined: Aug 9 2022 - 00:48
Posts: 327
Wow, this one has taken more

Wow, this one has taken more abuse than the one I got! How do I reproduce this bug? I want to see if mine has it too. (Most likely it does.)

 

Otherwise yes, the KR9600-PRO is a generic chip and it is used in other devices as well. So far I have found two, which means that there are many more:

 

1: https://www.ebay.com/itm/123873021615

 

2: https://maraindustrial.com/cart/circuit-boards/heidelberg-web-systems-pca5347051-keyboard-encoder-board-new-no-box.html

Offline
Last seen: 2 hours 39 min ago
Joined: Jul 5 2018 - 09:44
Posts: 1558
What else would be programmed

What else would be programmed for the right keyswitch matrix besides one salvaged from an e-waste recycled //e?  That one has the characteristic little dot on it you see on chips in Platinum //e although it is kind of worn off.  Ones in earlier //e usually seem to have two dots.  I'm thinking that ones with no dots or some other symbol on there may not work.

 

Offline
Last seen: 2 hours 39 min ago
Joined: Jul 5 2018 - 09:44
Posts: 1558
CVT wrote:Wow, this one has
CVT wrote:

Wow, this one has taken more abuse than the one I got! How do I reproduce this bug? I want to see if mine has it too. (Most likely it does.)

 

Otherwise yes, the KR9600-PRO is a generic chip and it is used in other devices as well. So far I have found two, which means that there are many more:

 

1: https

 

If would be interesting to know if either of those will actually work in a //e.  The one on eBay obviously would be too expensive to buy just to find out.  I'm suspicious that these were made/programmed for decoding something else and would have the same issue you ran into with that ][+ controller, that it wold never really give proper or acceptable operation even with a custom encoder ROM because the matrix wouldn't have keys at the right places.

 

CVT
CVT's picture
Offline
Last seen: 1 hour 39 min ago
Joined: Aug 9 2022 - 00:48
Posts: 327
softwarejanitor wrote:If
softwarejanitor wrote:
If would be interesting to know if either of those will actually work in a //e.
...

 

They will work. All the encoder chips that end on -PRO are internally programmed exactly the same way. This is what makes them generic and allows an external EPROM chip to be used for mapping. The non-generic ones (like the one for the Apple II+ and the Apple III) are all programmed differently, they don't need an external EPROM and they don't have the -PRO suffix.

Offline
Last seen: 2 hours 39 min ago
Joined: Jul 5 2018 - 09:44
Posts: 1558
CVT wrote:softwarejanitor
CVT wrote:
softwarejanitor wrote:
If would be interesting to know if either of those will actually work in a //e.
...

 

They will work. All the encoder chips that end on -PRO are internally programmed exactly the same way. This is what makes them generic. The non-generic ones (like the one for the Apple II+

Oh, that's interesting. I was under the impression they all had to be factory programmed for a certain matrix.

 

 

 

CVT
CVT's picture
Offline
Last seen: 1 hour 39 min ago
Joined: Aug 9 2022 - 00:48
Posts: 327
I was under the same

I was under the same impression when I first started learning about this, but it turned out to be incorrect. Basically the PRO picked one full matrix mapping, standardized it and documented it in the datasheet, so it can be easily remapped externally.

Offline
Last seen: 1 week 18 hours ago
Joined: Jan 1 2021 - 09:56
Posts: 13
CVT wrote:I was under the
CVT wrote:

I was under the same impression when I first started learning about this, but it turned out to be incorrect. Basically the PRO picked one full matrix mapping, standardized it and documented it in the datasheet, so it can be easily remapped externally.

The KR9600-PRO is the original part that was used, and was available as the "programmable" version used in the Apple IIc and IIe, where the KR9600 was preprogrammed at the chip fab with a specific row/column matrix that meant you had to design your keyboard to match their matrix. Standard Microsystems made this chip, along with a whole host of other really useful peripheral interface chips (everything from character and CRT timing generators up through UARTs and baud rate generators). General Instrument often bought up whole ecosystems of intellectual property when semiconductor fabs either went under or changed focus (as SMC would) and then started reproducing their designs with a GI part number. That's why the KR9600-PRO and the AY-5-3600-PRO are exactly the same part, and honestly, it's one of the only reasons we still have some of these really useful old chips. 

Another good example is the YM2149 PSG -- GI originally made this part as the AY-3-8910, which Yamaha then later licensed as the PSG in the MSX line of game consoles. 

Three other interesting tidbits:

  • General Instrument is likely the company that made your cable TV box in the 1980s and 1990s. 
  • SMC is still around today as a subsidiary of Microchip, which, oddly enough, is a spinoff of...guess who...General Instrument.
  • GI created the PIC1650, an NMOS microcontroller. The CMOS version of this same chip is the foundation of today's PIC microcontroller family.
CVT
CVT's picture
Offline
Last seen: 1 hour 39 min ago
Joined: Aug 9 2022 - 00:48
Posts: 327
Exactly, what makes the -PRO

Exactly. What makes the -PRO externally programmable (using an external EPROM) is that it was internally programmed at the factory with one particular full matrix and this matrix was documented in the datasheet. Then the external EPROM connects to the output of the encoder and acts like a lookup table.

MacFly's picture
Online
Last seen: 10 min 3 sec ago
Joined: Nov 7 2019 - 13:49
Posts: 262
CVT wrote:They will work. All
CVT wrote:

They will work. All the encoder chips that end on -PRO are internally programmed exactly the same way.

 

Indeed, you are right: the KR9600 datasheet actually clearly states that. The KR9600 is a custom part, but the KR9600-PRO is a standardized variant with fixed programming. The datasheet lists the complete matrix and describes the -PRO's fixed options. There were also two further standardized variants (KR9600-STD, KR9602-012) which were programmed differently - but sold with a different part number accordingly. So a KR9600-PRO should always have the same functionality - except for defects and fakes. That is really good news. How did we (and everyone else) even miss that before...

S.Elliott's picture
Offline
Last seen: 6 hours 36 min ago
Joined: Jun 23 2022 - 16:26
Posts: 79
MacFly wrote:So a KR9600-PRO
MacFly wrote:
So a KR9600-PRO should always have the same functionality - except for defects and fakes. That is really good news.

 

Not quite the same.  SMC's part uses a single +5 volt power supply, while GI needs -12 volts at pin 27 for its PROM.

At least according to the sheets:

  • AY-3600-5-PRO, pin 27 is -12 volts
  • KR9600-PRO, pin 27 is a soft CAPS LOCK option.

The Apple //e and //c schematics show -12 volts connected to pin 27.  The Apple //e certainly works with a KR9600-PRO installed, probably because it doesn't actually need the CAPS LOCK feature.  My Apple //e came from the factory with a KR9600-PRO, so the -12 volts at pin 27 either doesn't harm the chip...or only harms the soft CAPS LOCK feature that isn't used by the Apple //e or //c.

[EDIT: oopsie, I was looking at the KR9601 in the same data sheet.  The KR9600 shows pin 27 as "not connected"]

S.Elliott's picture
Offline
Last seen: 6 hours 36 min ago
Joined: Jun 23 2022 - 16:26
Posts: 79
Correction
S.Elliott wrote:
MacFly wrote:
So a KR9600-PRO should always have the same functionality - except for defects and fakes. That is really good news.

 

Not quite the same.  SMC's part uses a single +5 volt power supply, while GI needs -12 volts at pin 27 for its PROM.

Oopsie, correction...the parts are different, but the SMC part has "no connection" at pin 27. 

GI's part still needs -12 volts at pin 27, according to its data sheet.

 

So they aren't totally interchangeable, but both should work because an Apple //e or Apple //c does provide -12 volts at pin 27.  The SMC version apparently just ignores that pin, and the GI part gets -12 volts for its PROM.

S.Elliott's picture
Offline
Last seen: 6 hours 36 min ago
Joined: Jun 23 2022 - 16:26
Posts: 79
KR9600 TESTER is attached to a blogpost
CVT wrote:

Wow, this one has taken more abuse than the one I got! How do I reproduce this bug? I want to see if mine has it too. (Most likely it does.)

Okay, I included a program  KR9600 TESTER  (and EDASM source) in my old Prince Of Persia pre-boot disk.  The disk image and instructions are in a blogpost here.

Last week I uploaded a YouTube video here that demonstrates how the bug manifests itself in the game.  If you have a copy of the game, you should be able to reproduce it for yourself by moving releasing all keys and then tapping the keys  J K L K  as shown in the video to attempt the actions turn-left, duck, turn-right, duck.  If your encoder has the bug then you will notice keys occasionally trigger the wrong actions.

If you have an original copy of Prince Of Persia, then you can use that pre-boot disk to fix it via a software patch.  (It does not modify the disk.)

CVT
CVT's picture
Offline
Last seen: 1 hour 39 min ago
Joined: Aug 9 2022 - 00:48
Posts: 327
Great write-up! Mine has the

Great write-up! Mine has the bug too. I guess it would not be too hard to add a permanent rising edge 10-millisecond delay to the AKD line externally.

S.Elliott's picture
Offline
Last seen: 6 hours 36 min ago
Joined: Jun 23 2022 - 16:26
Posts: 79
...or just add a pair of NOR gates
CVT wrote:

Great write-up! Mine has the bug too. I guess it would not be too hard to add a permanent rising edge 10-millisecond delay to the AKD line externally.

In 1989 I devised this ugly-looking circuit, just so I could play Prince Of Persia on my parent's Apple //e.  My parents didn't own a joystick, and my own Apple ][ Plus couldn't play the game at all, so I used a pair of 40-pin sockets to insert a 7402 NOR gate between the keyboard decoder and the motherboard.  This solves the problem by using two NOR gates to gate pin 5 (AKO/AKD) against pin 16 (Data Ready), so AKD can't rise until a key is decoded, but once AKD rises it can remain high until it falls on its own. (ie: all keys released)

 

BTW, that's the same 40-pin socket pictured in comment #54 earlier.

All told, I know of 6 ways to work around the keyboard issue in Prince Of Persia:

  • Use a joystick to play Prince Of Persia, not the keyboard.
  • Switch to an Apple IIgs.  It doesn't have this issue.
  • Use 40-pin sockets to gate pin-5 as illustrated above.
  • Replace the KR9600-PRO or AY-5-3600-PRO with the JCM-1 Universal Keyboard Decoder.
  • Use a pre-boot patch, like the PoPABoL disk attached to my blogpost.
  • Use a Prince Of Persia replica that has a software bug fix built-in.

 

It would probably be easy to use Watson to apply the fix to any of the Prince Of Persia cracks, but I haven't attempted that.  I plan to blogpost the details of the bug itself, my software patch, and a reverse-engineering of Jordan Mechner's apparent effort to fix it himself...without success.

Pages

Log in or register to post comments