Amiga Gets A PS/2 Keyboard Port

Name any retrocomputer — Apple II, Sinclair, even TRS-80s — and you’ll find a community that’s deeply committed to keeping it alive and kicking. It’s hard to say which platform has the most rabid fans, but we’d guess Commodore is right up there, and the Amiga aficionados seem particularly devoted. Which is where this Amiga PS/2 mouse port comes from.

The Amiga was a machine that was so far ahead of its time that people just didn’t get it. It was a true multimedia machine before multimedia was even a thing, capable of sound and graphics that hold up pretty well to this day. From the looks of [jtsiomb]’s workstation, he’s still putting his Amiga to good use, albeit with an inconvenient amount of cable-swapping each time he needs to use it. The remedy this, [jtsiomb] put together an emulator that translates scancodes from an external PS/2 keyboard into Amiga keyboard signals. Embedded inside the Amiga case where it can intercept the internal keyboard connector, the emulator is an ATmega168 that does a brute-force translation by way of lookup tables. A switch on the back allows him to choose the internal keyboard or his PS/2 keyboard via a KVM switch.

Are Amigas really still relevant? As of two years ago, one was still running an HVAC system for a school. We’re not sure that’s a testament to the machine or more a case of bureaucratic inertia, but it’s pretty impressive either way.

[via r/electronics]

30 thoughts on “Amiga Gets A PS/2 Keyboard Port

  1. Emulate matrix keyboard of vintage computers using microcontrollers might be tricky. Depending on how much time you have between the a row pin change to the next reading of the columns, which can be fast as hundreds of nanoseconds (the time between two instructions). Some matrix keyboard emulators I have seen rely on the sequential reading of the matrix performed by BIOS, when you pre-load the column value for the next row, but this method fails in most of games which only read specific rows (where the cursor keys stand) instead of reading them all sequentially. A fail-proof keyboard matrix emulator shall either respond to a row change triggeded interrupt faster than the host microprocessor or interrupt the microprocessor (wait states) until it can get the column data ready.

    1. Having pondered a bit it should be trivial at least for the common 8 input – 8 output type of keyboards when using a cheap AVR microcontroller.

      read input
      temp=0

      for i = 0 to 7
      if input bit(i) is set
      temp=temp or keyboard_state[i]
      end
      end

      output temp

      Unrolled with skips it all adds up to ~20 clocks. At 20MHz the inner loop could have a response time of 1µs (but would be useless of course).

      Any working keyboard scanning routine have to wait for signals to stabilize but even if it didn’t the old state would still be “valid” until the new value is calculated.

      The keyboard state is 8 8 bit values and of course have to be updated from the real keyboard (reading, translating etc.) . I’d probably put the update routine just after outputting the new value.

      1. Worst case is a program that keeps a single row activated and do sparse readings, which is not rare to see in games. Then the time available to update the output can be two or three clock cycle times from the host computer.

        On the average case you have time from the end of the write instruction that activates a given row plus the beginning of the istruction that reads the keys pressed on that row.

        In numbers, for a Z80 running @3.58MHz with a wait state on each M1 cycle, AKA MSX computer, you have 698ns on the worst case and 3.77us on the average. (source: http://hotbit.blogspot.com.br/2012/02/adaptador-para-teclado-ps2-problemas.html)

        Another approach is to cascade shift registers with enable pin and internal latches (a 74*595 or a CD4094) like on this project (link: https://hackaday.io/project/6140-tek-ps2-to-matrix-keyboard-adapteremulator )

        cheers

  2. Thats nice, its not a new thing though is it?
    I’ve had a lyra ps2 keyboard adaptor on my amiga 2000 for years along with a scan doubling graphics card so it can sit on the kvm on my desk the same as the other computers. Theyre selling the 3rd gen of this now, the lyra3.
    I desoldered the din socket and soldered the adaptor right onto the motherboard and put in a ps2 port on the case to make it easier to live with long term and housed it all internally. I can think of loads of other enthusiasts who did the same, or who made their own adaptors some years ago.
    Next you’ll be covering the pegasos atx form factor ppc motherboards as some kind of revolution, although the micky ears cpld fix was quite interesting :)

    1. To be fair no.
      If one were to look on aminet there are projects dating back some 26 years for adding XT/AT keyboards to an amiga.
      But the lesson here is doing something that challenges you or that you feel is interesting enough that you want to give it a go.

      Hey, we’ve been to the moon already. Why go back ?

      1. Yeah I’m with that, I built my own plipbox from the polin AVR kit to get the A2000 networked, but equally I’d not expect to see such a well documented and time honoured solution featured on HaD. For 22e for the finished thing I decided it wasn’t worth the investment in time to make my own but there are many such projects on EAB and on aminet etc as you say.
        What I would be impressed would be if they covered the apollo accelerators, every time that has been mentioned in comments it gets quietly ignored. I figured its because its not commercial, but not open sourced. That project had so many detractors because gunnar gets up people’s noses from time to time, yet those people in bedrooms round the world pulled it off anyway.

        1. Not commercial? The only way to get to the Apollo core is by buying their accelerator cards _or_ buying rights to use the core (at least in the past). It have been obvious that the Apollo core was intended to be licensed to others. It have also been obvious that the performance claims of the page have been fantasies.

          The problem I have with Gunnar is that he is dishonest (even a liar) and a braggart.
          Running an old test program that doesn’t deliver the MIPS figures he want? It is badly coded, wrong and a lot of other crap. Anyone that is honest and know what they are talking about recognizes that MIPS figures are dependent on the code that runs.

          Running new code using new instructions (that aren’t documented and have in the past been changed a lot) designed for a specific purpose? Of course we can compare old processors running old code with that? And claim that shows the new core is X times faster? Or even in some cases extrapolating the performance increase for a specific set of tasks using new instructions designed for that set of tasks to everything else? Bull.

          Point out that some shoddy benchmark isn’t valid as their new core is running better code than the systems it is compared with (in some cases with their core running hand-optimized assembly and other un-optimized C code compiled with bad settings)? That’s trolling of course. If someone provides a properly compiled version that increases performance drastically they are lying _even_ if verification that using the same compiler, same options and same unchanged C code will give the performance the poster claims.

          Oh and the removal of posts that point out errors, the hatred for anyone that may point out that something isn’t kosher (even if they are enthusiastic about the accelerator cards/core/effort)? Disgusting.

          Removal of posts that show Gunnar lying or changing of some part that was once considered essential is also standard.


          But I have to mention Majsta which seeing that nobody designed or sold FPGA accelerator boards spent a lot of time, effort and money in order to learn FPGA design, PCB design, soldering, handling of 68k signals and quirks of the Amiga design in order to offer this to other Amiga enthusiasts for a good price (not for earning money). The level of respect I feel for him can’t really be expressed properly – he is a _real_ hacker!

  3. >”The Amiga was a machine that was so far ahead of its time that people just didn’t get it.”

    Actually, it was well behind its time. It was a sort of last hurrah of the sort of hack-engineering that went on with the early personal computers that were their own closed ecosystems.

    The time of monolithic powerful CPUs was coming, and the “multimedia computer” couldn’t be based on a clusterfuck of backwards and forwards incompatible chips that required special tricks and workarounds to do what they did anyways, because the computers needed to be cross-compatible so that the same code would perform the same on every machine. After all, you wanted to press a CD and slot it in the drive, and just push play.

    The first attempts at multimedia in the mid 90’s failed exactly because it needed esoteric hardware like an MPEG decoder card that most people didn’t have, because they cost a lot of money and didn’t really do much. Even when you had one, the “multimedia” was very limited: you could watch a short video clip, but the rest of the machine wasn’t powerful enough for you to do anything with it.

    In the same way, the Amiga was an 80’s arcade game machine shoehorned into a desktop computer, and that was its downfall because it could only do some things well, one at a time, when you tickled it just right. You could run a pretty demo that displayed some interesting antics which nevertheless couldn’t be used in practice in a game because it woudn’t work with the rest of it, or play some tracker music that sounds impressive for a machine of the era – but not actually good enough that anybody would use it for real production. Same thing with the graphics and desktop publishing – close but no cigar.

      1. It’s more complex than that.

        The Amiga chipset was a mish-mash design with one chip doing half the other chip’s job, all designed to work in lock-step with the CRT scanning beam as in Arcade machines. The chipset was sort-of the main machine and the CPU was there just for the control logic.

        But then when they made it into a desktop computer with a more powerful CPU, and to make that useful they added dedicated RAM for it and split the system in a partially overlapping scheme of busses, such that some parts could access some of the memory every other cycle except when one of the chips was blocking access etc. etc.

        It wasn’t done that way to add better graphics capabilities to the hardware, but because it was being designed as a game console to begin with, but with the video game market crash they did a 180 flip in business strategy and turned the machine into a siamese twin with a general purpose desktop computer – a machine that was essentially two different systems with two different philosophies and use cases, joined at the hip and sharing enough vital organs that the two could not be separated cleanly without killing one.

        1. Most likely the very original plan was that the Amiga chipset was to be connected to a cartridge with a simple CPU and ROM to control the chipset.

          The original chipset had the Agnus chip, which had the “copper” co-processor. The chipset could be viewed as a register-machine CPU cobbled together out of separate chips, that was controlled through the copper. It only lacked an ALU/FPU. In most of the demo effects, the CPU actually sat idle and just loaded new programs into copper at appropriate times, with all the math pre-computed in lookup tables for speed, acting as a sort of fancy game cartridge.

    1. I suppose if you want to be a Monday morning quarterback… but I got my Amiga 1000 in 1986 and compared to macs, apples, c64s, ataris and pcs, the Amiga was freaking mind blowing. I coded on that platform into the mid 90’s, I still have my 1000 and my 3000. Sure nostalgia colors my opinion, but really, I remember how we lusted after our Amigas. No pic or mac has ever impacted me like that machine did. I don’t know if you got to live through that time, it’s difficult to describe. But I’d agree the Amiga was way way way ahead of anything else. Way ahead. Way.

      1. I wasn’t impressed until WIn95 and a 400MHz processor with a Matrox accelerator card to notice a significant bump in WInTel responsiveness over my A2000, more than a decade after Amiga 1000 came out. The main flaw the Amiga had was in selecting Motorola – a company that seemingly went out of its way to screw over compatibility. They were suckered in by the overall smarter design of the 68000, just as several other computer companies of the time, little knowing that Moto’s dedication to performance also meant ignoring existing software. Unlike Apple with their solid line of school sales to buoy them, Commodore didn’t seem to have the money to keep up with the Motorola bucking bull cpu cycle. Even Apple finally bit the bullet and bailed on Moto. On top of that the CBM management crew lost their ever loving minds and couldn’t focus on either going into IBM compatibility or supporting Amiga and ended up choosing door number 3 and gutting the company for the cash.

      2. I imagine there’s a lot of historic “what if”.* Because the present state of hardware is pretty far ahead, even if the current OSes aren’t all that and a bag of chips.

        *We’ll never know if what we have would have been that much ahead if the Amiga had been a success, any more than we would be if Babbage’s Engine had been built.

    2. The Amiga was used for music production. It was used for desktop publishing, it was used for 3D modelling and it was very popular for video effects and mixing etc. It was a powerful system, in some cases people bought an Amiga in order to run Macintosh software as it was faster, cheaper etc.

      It was more than good enough – in many cases superior to systems designed later.

Leave a Reply to MegolCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.