Hot answers tagged

60

As Wilson points out in his answer, it has to do with how the CIA chips interact with the keyboard and the joystick ports, and the confusion that can arise trying to determine where input is being received from. Compute!'s Mapping the Commodore 64 has an excellent write-up here explaining how the "Complex Interface Adapter" (CIA#1) deals with scanning the ...


56

SCSI, I think, is a serial interface. No, it isn't. SCSI das defined as a parallel interface for high speed data transfer. Though there are modern incarnations using serial transfer, while being compatible on a logical level, which might add confusion. A standard serial port on PCs used a 9-pin DSub connector where a parallel port used a 25-pin connector. ...


24

Because of the way that the joystick port 1 is mapped to the same hardware as the keyboard, from the software's point of view it's impossible to tell if you're wiggling the joystick or typing something on the keyboard. So many games used port 2 instead.


24

Early Wang basic computers used a backplane keyboard with an enormous bespoke parallel interface to the detached style keyboard device. Wang's 2200 and 2600 BASIC-only minicomputers were available with the 2215 BASIC keyword KBD, the 2222 alphanumeric typewriter KBD, and the 2223 upper/lower case BASIC keyword KBD. None of these keyboards contained a key ...


23

Of the variants produced in a relatively large series - let me remind you about the keyboard connection on the Commodore 128D - it was connected using a 25-pin interface, 23 lines of which directly represented the matrix of keys.


14

The documentation for IBM's original Game Control Adapter has some details that will be of use. Even though you're using a SoundBlaster card instead, it should still be compatible with the IBM original. While the documentation doesn't specify maximum currents for any pins, it does have a logic diagram: It can be seen that on the original gameport, the ...


11

The two consoles do have different controller ports. The NES Classic Edition is not directly compatible with original NES controllers, but it does work with the Wii Classic Controller. The original NES uses a 7-pin connector: The NES Classic Edition does not:


9

Trying to get more into the specifics of the BBC connection, there is a substantial hint in the user guide: However only 5 bits of the [user] port, and CB1, CB2 are used: This leaves bits 1,3 and 4 available for other uses. Which is backed up by the schematic provided by Simon Inns in the doco for SmallyMouse2; comparing that to the user port's pinout ...


9

Then why did SCSI require so many pins? Differential signaling. The original standard was actually a 25-pin system using an 8-bit parallel signal going in one direction only. There was a separate parity pin, and lots of signal pins for things like device select and flow control. But in many respects it was similar to the DB-25 printer cable, just faster. ...


8

Early micro/home computer used parallel keyboards. These were (usually) called 'ASCII' Keyboards. A good example is the Apple II, which implements a protocol almost exact like you imagined - sans interrupt that is. A key press was presented as 7 data bits with ASCII like encoding plus a flag at bit 7 indicating a key press, cleared whenever the port was read....


8

The Sinclair QL also had two RS232C ports which used an unusual combination of a ASIC (ZX8302) and Intel 8049 to provide two physical ports (with non standard connectors) but could not be used independently. The two ports were nominally for printer and modem use, but during development the built in modem of the QL was dropped, but the case retained the ...


6

back in the (x386) days I was using GAME port as an ADC for home made scanner and other self build HW. As it is usual during development there is occasional set back like short circuit etc. The GAME Ports I was using was always GoldStar chip powered IDE/ports ISA card (they where very common) and a short circuit on the analog pins always burn up +5V power ...


6

In addition to what already was stated, namely: ... how the CIA (Complex Interface Adapter) maps JoyStick - or in general, any - input: The signals a (digital) JoyStick delivers, come in via Pins 1 to 4 (Up, Down, Left, Right) and additionally Pins 6 and 9 for the buttons (Left, Right) - the equivalent values are represented on the charmap by e.g.: SPACE ...


6

The original IBM PC and AT designs allocated 10 bits for I/O addressing, and only decoded address lines A0-A9 for on-board I/O devices. However there was no physical limitation to 10 bits, so a card could use A10-A19 so long as it didn't clash with the aliases of 10 bits cards or motherboard devices. So yes, the game-port card has aliases at 601h etc., ...


6

For a keyboard that includes a shift key to be useful, either the CPU must poll it often enough to observe the state of the shift key whenever another key is pushed, or the keyboard must capture enough information without CPU intervention to know whether a keystroke represents a shifted or unshifted character. In systems that use the former approach, there's ...


4

The LINC (Laboratory Instrument Computer), the first computer I programmed in 1965, had a one-key rollover. When a key was pressed on its Soroban Engineering keyboard, a solenoid locked that key down and all the other keys up, sending a signal to the computer. Whatever computer program was running could then take its time (sometimes a sizable fraction of a ...


4

The NES with its multitap accessory is a potential answer, if you'll accept some logic in the accessory. NES controllers use a 1-bit serial protocol. The host strobes to begin a transfer, causing the joypad to load its current state into a shift register, and the host then clocks in 8 bits, each representing one of the 8 inputs. It's actually the CPU that ...


4

There is no official specs for game port current limit. Some adapters may have resistors, ferrite beads or fuses for current limiting, but usually a short circuit still fries something (except for a polyfuse). I'd say 100mA is a safe limit in any case. The original adapter has 1k pull ups on buttons, so for all four buttons simultaneously pressed, it adds up ...


4

I don't know the specific details, but in general the mouse uses standard quadrature encoders so for each axis you get two data pins that output movement data. While several ways to decode the quadrature data for each edge to achieve maximum resolution, the hardware uses a simplest possible approach with the PIO chip. Basically a pulse on one pin can be used ...


4

A second bite of the cherry: amongst others, the WD177x family are popular floppy controllers that were used in or with a variety of 8-bit machines including the MSX, the Acorn Electron and later models of the BBC Micro, the Oric and the TRS-80. They are serial controllers because floppy drives provide a single data line, which the controller monitors for ...


3

In the Commodore 16/116/Plus-4, the Cassette connector and the serial (floppy and printer) port are both implemented via the CPU's single built-in I/O port which can be accessed by code at addresses $0000/$0001 (the same port that is used for the bank switching logic in the C64). Most lines of the two interfaces use separate bits of that one 8-bit port, but ...


3

The Sinclair ZX81 had a single Uncommitted Logic Array (ULA) chip that controlled both the screen and the cassette port. Consequently, accessing the cassette (loading or saving) would cause stripes to appear on the screen. It also controlled the keyboard, causing the screen to flicker at each keypress, but the keyboard was built-in and so it doesn't count ...


3

Not exactly a parallel interface, but the TRS-80 (models 1, 3 and 4) had a memory mapped keyboard! 8 address lines were matrixed to 8 data lines by the keys (and some diodes). The keyboard scan routine would start by looking at 0x38FF and if it got back 0x00 then no keys were pressed. If non-zero it would check 0x3801, 0x3802, 0x3804, up to 0x3880 and check ...


3

The Commodore 64 used a single CIA for both the keyboard and joystick (or paddles). This made reading both the keyboard and the joystick at the same time a bit of challenge, see this answer for details (complete with schematics). As for an explanation of "why", I guess the answer is always "to save parts and make it cheaper".


2

The IBM 1130 used a keyboard mechanism from a keypunch. It constructed a 12 bit code for each key press mechanically, in parallel. The code was the sparse character code used on punched cards. The keyboard driver translated this to 8-bit EBCDIC. When computers were built from discrete transistors (or even vacuum tubes), serial interfaces were rare unless the ...


2

My first computer was a Big board by Fregusion. It ran CP/M and had a parallel keyboard as one of three console options (The others being a rs232 keyboard or a rs232 console). Since it was a kit It did not come with a keyboard (or power supply, crt, floppy drives, etc.) but expected ascii (or eight bit, one keyboard had a binary key which was wired to a 8x ...


1

I think the canonical example from the 16-bit era is the two ports on the Macintosh provided by a single Zilog 8530 and able to be used for serial, printer, modem, and AppleTalk networking based on user configuration. Of course this was influenced by the modem and printer port on the 8-bit Apple //c, but those ports relied on 2 independent 6551 UARTs. In ...


1

The design of the C64 hardware makes it somewhat complex to properly disambiguate joystick and keyboard inputs. The routines in the ROM for scanning the keyboard and joystick don't address all of this complexity, but they do allow better disambiguation of joystick port 2 than 1, so developers who use that routine (or a similar one) can improve joystick/...


Only top voted, non community-wiki answers of a minimum length are eligible