Skip to main content
Home Documents ADB Powerkey Rebound.Md
Powerkey Rebound.Md

Powerkey Rebound.Md

ADB · MD
Filenamepowerkey_rebound.md
Size0.00 MB
Subsection tashnotes_adb / other
Downloads3
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# PowerKey Rebound!

This document contains experimentally-observed behavior of the ADB protocol of the Sophisticated Circuits PowerKey Rebound! (PKRB-M). It contains enough information to satisfactorally emulate the device, however, a few unknowns exist.

The Rebound!'s default address is 0x7 and its default handler ID is 0x87.

## ADB Registers

The Rebound! has eight registers that are accessed using ADB registers 1 and 2.  ADB register 1 controls which Rebound! register is reflected in ADB register 2 - Listen 2 will set the contents of the register, Talk 2 will read the contents of the register.

## Rebound! Registers

### Register 0

16 bits in length, purpose unknown, default value 0x0102.  Version 1.1 of the software does not read it.

### Register 1

16 bits in length, purpose unknown, default value 0x1000.  Version 1.1 of the software reads it when the extension is loaded.

### Register 2

32 bits in length, contains the serial number of the Rebound! dongle.  Version 1.1 of the software reads it when the extension is loaded.

### Registers 3-5

Register 3 is 16 bits in length and contains a counter which decrements by 1 once per second.  When it reaches 0, if register 5 is nonzero, register 5 is decremented, register 3 is set to the value in register 4, and the Mac is restarted by a Cmd-Ctrl-Reset keystroke emulated on the keyboard.  If register 5 is zero when register 3 decrements to zero, registers 3 and 5 remain at zero and the Mac is not restarted.

Version 1.1 of the software, by default, sets registers 3 and 4 to 0x11E (286) and register 5 to 1, then sets register 3 to 0x11E once per minute.

### Register 6

16 bits in length, purpose unknown, default value 0x0000.  Version 1.1 of the software does not read it.

### Register 7

16 bits in length, purpose unknown, default value 0x0000.  Version 1.1 of the software does not read it.
Home Documents ADB Device List.Md
Device List.Md

Device List.Md

ADB · MD
Filenamedevice_list.md
Size0.01 MB
Subsection tashnotes_adb
Downloads8
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# ADB Device List

This is an obviously-incomplete list of known ADB devices and their identifying information (default address and handler ID).

## License Dongles

Original Address 0x1

| Address | Handler ID | Make                 | Model Name    | Model Number | Description    |
| ------- | ---------- | -------------------- | ------------- | ------------ | -------------- |
| 0x1     | 0x34       | Rainbow Technologies | Sentinel Eve3 |              | License dongle |

## Encoded Devices

Original Address 0x2

| Handler ID    | Make  | Model Name                         | Model Number | Description |
| ------------- | ----- | ---------------------------------- | ------------ | ----------- |
| 0x01          | Apple | Keyboard                           | M0116        | Keyboard    |
| 0x02          | Apple | Extended Keyboard                  | M0115        | Keyboard    |
| 0x02          | Apple | Extended Keyboard II               | M3501        | Keyboard    |
| 0x02          | Apple | AppleDesign Keyboard               | M2980        | Keyboard    |
| 0x04[^5]      | Apple | Keyboard ISO                       | M0118[^6]    | Keyboard    |
| 0x05[^5]      | Apple | Extended Keyboard ISO              | M0115[^6]    | Keyboard    |
| 0x06[^5]      | Apple | Portable Keyboard                  | ?            | Keyboard    |
| 0x07[^5]      | Apple | Portable Keyboard ISO              | ?            | Keyboard    |
| 0x08          | Apple | Keyboard II                        | M0487        | Keyboard    |
| 0x09[^5]      | Apple | Keyboard II ISO                    | ?            | Keyboard    |
| 0x0A/0x0C[^5] | Apple | Powerbook 100/140/170 Keyboard     | ?            | Keyboard    |
| 0x0D[^5]      | Apple | Powerbook 100/140/170 Keyboard ISO | ?            | Keyboard    |
| 0x0E[^5]      | Apple | Adjustable Keyboard Keypad         | M1242[^6]    | Keypad      |
| 0x10[^5]      | Apple | Adjustable Keyboard                | M1242[^6]    | Keyboard    |
| 0x11[^5]      | Apple | Adjustable Keyboard ISO            | ?            | Keyboard    |
| 0x12[^6]      | Apple | Adjustable Keyboard JIS            | ?            | Keyboard    |
| 0x16[^6]      | Apple | Keyboard II JIS                    | M0487[^6]    | Keyboard    |

## Relative Pointing Devices

Original Address 0x3

| Handler ID   | Make            | Model Name      | Model Number | Description                 |
| ------------ | --------------- | --------------- | ------------ | --------------------------- |
| 0x01         | Apple           | Mouse           | A9M0031      | Mouse                       |
| 0x23         | Advanced Gravis | MouseStick GMPU |              | 3-button joystick interface |
| 0x23[^4]     | Advanced Gravis | MouseStick II   |              | 5-button joystick           |
| 0x32[^3][^7] | Kensington      | Turbo Mouse     | 64210        | Trackball 4-button device   |

## Absolute Pointing Devices

Original Address 0x4

| Handler ID | Make  | Model Name              | Model Number | Description     |
| ---------- | ----- | ----------------------- | ------------ | --------------- |
| 0x3A[^3]   | Wacom | ArtZ 6x8 / Digitizer II | UD-0608-A    | Graphics tablet |

## Low-Speed Serial Devices

Original Address 0x5

| Handler ID | Make           | Model Name   | Model Number | Description     |
| ---------- | -------------- | ------------ | ------------ | --------------- |
| 0x36[^1]   | Global Village | TelePort ADB | A300         | 2400-baud modem |

## Other Devices

Original Address 0x7

| Handler ID | Make                   | Model Name            | Model Number | Description                                 |
| ---------- | ---------------------- | --------------------- | ------------ | ------------------------------------------- |
| 0x02[^8]   | Apple                  | Adjustable Keyboard   | M1242        | Media keys device of AAK                    |
| 0x22       | Sophisticated Circuits | PowerKey              | PK-1         | Relay-controlled power strip                |
| 0x35[^7]   | Neotech                | Colour Adapter Module |              | Module for Neotech Image Grabber NuBus card |
| 0x41       | JLCooper Electronics   | Media Control Station | 300007       | Jog dial and media control device           |
| 0x79[^2]   | LaCie                  | FM Radio              | ?            | FM radio                                    |
| 0x7A[^10]  | BeeHive Technologies   | ADB I/O               |              | Analog and digital I/O interface            |
| 0x87       | Sophisticated Circuits | PowerKey Rebound!     | PKRB-M       | Watchdog timer                              |

[^1]: Also known to use default address 0x7.
[^2]: [Source](https://vintagegeek.wordpress.com/2021/01/03/lacie-fm-radio-tuner-for-system-7-0-to-os9-macintosh-w-adb-port/#comment-1107)
[^3]: Also emulates a standard mouse on address 0x3.
[^4]: Initially has handler ID 0x01.
[^5]: [Source](https://github.com/elliotnunn/boot3/blob/f5582f37d04819abec51525ade1e021858a914e1/OS/Keyboard/Kbd.r)
[^6]: [Source](https://github.com/tmk/tmk_keyboard/wiki/Apple-Desktop-Bus#keyboard-handler-id)
[^7]: Source Jockelill on 68kMLA
[^8]: Source Velociraptors on 68kMLA
[^10]: [Source](https://web.archive.org/web/19980501032801/http://www.bzzzzzz.com:80/BeeHive/ADB_IO/Downloads/ADB_IO_manual.pdf)
Home Documents ADB Global Village A300.Md
Global Village A300.Md

Global Village A300.Md

ADB · MD
Filenameglobal_village_a300.md
Size0.01 MB
Subsection tashnotes_adb / modem
Downloads4
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# Global Village A300 ADB Modem Protocol

This document contains experimentally-observed behavior of the Global Village A300 modem's ADB protocol.  It contains enough information to satisfactorally emulate the serial port, however, many unknowns exist.

The modem's default address may be 0x5 (observed on firmware 1.5) or 0x7 (observed on firmware 1.4) and its default handler ID is 0x36.

Consistent with ADB standards, register 0 is the primary communications channel with the modem.

## Talk 0

A Talk 0 command will read status information or data received by the serial port.  If no payload is received, there is no data or status to receive.  If received, the payload is always eight bytes in length, and the eighth byte determines the meaning of the payload:

| 8th Byte  | Meaning                                                                                                                      |
| --------- | ---------------------------------------------------------------------------------------------------------------------------- |
| 0x00-0x7F | Payload contains 8 bytes received by serial port in 1st through 8th bytes                                                    |
| 0x80      | Payload contains no data                                                                                                     |
| 0x81      | Payload contains 1 byte received by serial port in 1st byte, 2nd through 7th are invalid                                     |
| 0x82      | Payload contains 2 bytes received by serial port in 1st through 2nd bytes, 3rd through 7th are invalid                       |
| 0x83      | Payload contains 3 bytes received by serial port in 1st through 3rd bytes, 4th through 7th are invalid                       |
| 0x84      | Payload contains 4 bytes received by serial port in 1st through 4th bytes, 5th through 7th are invalid                       |
| 0x85      | Payload contains 5 bytes received by serial port in 1st through 5th bytes, 6th through 7th are invalid                       |
| 0x86      | Payload contains 6 bytes received by serial port in 1st through 6th bytes, 7th is invalid                                    |
| 0x87      | Payload contains 7 bytes received by serial port in 1st through 7th bytes                                                    |
| 0x88      | Modem-to-Mac status A in 1st through 5th bytes, 6th and 7th are invalid                                                      |
| 0x89      | Modem-to-Mac status B in 1st byte, 2nd through 7th are invalid                                                               |
| 0x8A-0x8F | Undetermined                                                                                                                 |
| 0x90-0x9F | Same as 0x80-0x8F but requests the Mac to hold off sending Listen 0 commands until a payload ending in 0x80-0x8F is received |
| 0xA0-0xFF | Payload contains 8 bytes received by serial port in 1st through 8th bytes                                                    |

The byte 0x95 is treated specially by the driver; in order to reflect the reception of a single 0x95 byte, the device must send two 0x95 bytes in a row.  They do not have to be in the same ADB payload.

### Modem-to-Mac Status A

Default state (with driver installed) appears to be 0xF0 0x01 0x00 0x30 0x0C.  First four bytes are the same as Talk 1, second byte may be the same as second byte of Listen 1.

| Bit (big endian) | Meaning                                                                          |
| ---------------- | -------------------------------------------------------------------------------- |
| 39-38            | Undetermined                                                                     |
| 37               | OH (off-hook) indicator, active low                                              |
| 36-35            | Undetermined                                                                     |
| 34               | CD (carrier detect) indicator, active high                                       |
| 33               | Undetermined                                                                     |
| 32               | AA (auto answer) indicator, active high                                          |
| 31-26            | Undetermined                                                                     |
| 25               | Modem on?                                                                        |
| 24               | Modem driver installed?                                                          |
| 23-16            | Undetermined                                                                     |
| 15-8             | Baud rate display (on when CD is on); 0x80 = 300, 0x60 = 1200, 0x30/other = 2400 |
| 7-0              | Undetermined                                                                     |

36-34 change when connection is being established, 36 active low and 35-34 active high.

### Modem-to-Mac Status B

| Bit | Meaning                                         |
| --- | ----------------------------------------------- |
| 7-4 | Undetermined                                    |
| 3-0 | Baud rate of established connection (see below) |

| Bits 3-0 | Baud Rate |
| -------- | --------- |
| 0x8      | 2400      |
| 0x7      | 1200      |
| 0x6      | 300       |

Other values are undetermined.

## Listen 0

Listen 0 will write data to be sent by the serial port.  The payload must always be eight bytes in length, with the eighth byte determining the meaning of the payload:

| 8th Byte  | Meaning                                                                                                  |
| --------- | -------------------------------------------------------------------------------------------------------- |
| 0x00-0x7F | Payload contains 8 bytes to be sent to serial port in 1st through 8th bytes                              |
| 0x80      | Undetermined                                                                                             |
| 0x81      | Payload contains 1 byte to be sent to serial port in 1st byte, 2nd through 7th are invalid               |
| 0x82      | Payload contains 2 bytes to be sent to serial port in 1st through 2nd bytes, 3rd through 7th are invalid |
| 0x83      | Payload contains 3 bytes to be sent to serial port in 1st through 3rd bytes, 4th through 7th are invalid |
| 0x84      | Payload contains 4 bytes to be sent to serial port in 1st through 4th bytes, 5th through 7th are invalid |
| 0x85      | Payload contains 5 bytes to be sent to serial port in 1st through 5th bytes, 6th through 7th are invalid |
| 0x86      | Payload contains 6 bytes to be sent to serial port in 1st through 6th bytes, 7th is invalid              |
| 0x87      | Payload contains 7 bytes to be sent to serial port in 1st through 7th bytes                              |
| 0x88-0x9F | Undetermined                                                                                             |
| 0xA0-0xFF | Payload contains 8 bytes to be sent to serial port in 1st through 8th bytes                              |

## Talk 1

Payload is the same as the first four bytes of Modem-to-Mac Status A.  Post-reset state is 0xF0000000.

## Listen 1

Payload appears always to be two bytes in length.  Second byte may be the same as second byte of Modem-to-Mac Status A.

| Bits (big endian) | Meaning                 |
| ----------------- | ----------------------- |
| 15-2              | Undetermined            |
| 1                 | Modem on?               |
| 0                 | Modem driver installed? |

## Talk 2

Payload appears always to be six bytes in length.  Appears to communicate the information given by the driver's 'about' box:

| Bits (big endian) | Example Value | Meaning                                                                       |
| ----------------- | ------------- | ----------------------------------------------------------------------------- |
| 47-44             | 0x1           | Firmware major revision (0-9)                                                 |
| 43-40             | 0x4           | Firmware minor revision (0-9)                                                 |
| 39-16             | 0x019F8E      | ID number (shown as decimal)                                                  |
| 15-10             | 0b011001      | Undetermined                                                                  |
| 9-0               | 0x03A         | Manufacture date, expressed as number of weeks since Sunday, 31 December 1989 |

Example values are from a modem where the control panel displayed "Firmware 1.4, Made 1991-02-10, ID 106382".

## Listen 2

Payload appears always to be four bytes in length.

| Bits (big endian) | Meaning                                                           |
| ----------------- | ----------------------------------------------------------------- |
| 31-15             | Undetermined                                                      |
| 14                | Break (active high; set and then clear to send a break character) |
| 13-0              | Undetermined                                                      |
Home Documents ADB Aak Media Keys.Md
Aak Media Keys.Md

Aak Media Keys.Md

ADB · MD
Filenameaak_media_keys.md
Size0.00 MB
Subsection tashnotes_adb / keyboard
Downloads8
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# Apple Adjustable Keyboard Media Keys

The Apple Adjustable Keyboard appears as two devices:

| Original Address | Handler ID | Function         |
| ---------------- | ---------- | ---------------- |
| 0x2              | 0x10       | Keyboard         |
| 0x7              | 0x02       | Media Key Device |

## Media Key Device

### Talk 0

Talk 0 behaves the same way as on a standard keyboard: it reports key events as bytes with the MSB set for a key release and clear for a key press, and scan codes in the lower seven bits.  It reports a maximum of two such event bytes per Talk 0 request.  If it has only one event to report, the event byte is followed by an 0xFF byte; if it has no events to report, no reply is given.

The scan codes used by the media key device are as follows:

| Key      | Code |
| -------- | ---- |
| Volume ↑ | 0x03 |
| Volume ↓ | 0x02 |
| Mute     | 0x01 |
| Mic      | 0x00 |

### Talk 1

Talk 1 appears to always return 0xFF02.

### Talk 2

Talk 2 appears to always return 0xFFFF.

### System Software Support

Native support for the Volume Up/Down and Mute keys (but not the Mic key) was added with System 7.1 System Update 3.0[^1].  An extension called Record Button[^2] exists to provide support for the Mic key.

## Thanks

*Thanks to Velociraptors and treellama on #68kmla for their help in compiling and verifying this information!*

[^1]: <https://obsolete.macfixer.com/vintage-software/notes/System_Update_3.0_1.4MB.html>
[^2]: <http://www.geocities.ws/ddurant/ext.html>
Home Documents ADB Exceptional Event.Md
Exceptional Event.Md

Exceptional Event.Md

ADB · MD
Filenameexceptional_event.md
Size0.00 MB
Subsection tashnotes_adb / keyboard
Downloads4
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# Exceptional Event Handling in ADB Keyboards

## Documentation

Little is documented of the "Exceptional Event" bit (bit 14) in ADB except that it is specified to be set to 1 if not used[^1] and that it is set to 1 if the reset/power key has been pressed on the ADB keyboard and 0 if no exceptional event has occurred[^2].

[^1]: Apple Guide to the Macintosh Family Hardware, Second Edition, page 322
[^2]: Apple IIgs Hardware Reference, page 144

## Observations

On some models of ADB keyboard, the Exceptional Event bit is set to 1 by default and only set to 0 _while the reset/power key is held down_; it does not latch the event, so if a Talk 3 command is not issued while the key is being held, the Macintosh will not see the exceptional event.

| Model Name                 | Model Number | Clears Exceptional Event Bit  |
| -------------------------- | ------------ | ----------------------------- |
| Apple Keyboard             | M0116        | While reset/power key is held |
| Apple Extended Keyboard    | M0115        | While reset/power key is held |
| Apple Extended Keyboard II | M3501        | While reset/power key is held |
| Apple Keyboard II          | M0487        | While reset/power key is held |
| AppleDesign Keyboard       | M2980        | Never                         |
Home Documents ADB Jlc Media Control Station.Md
Jlc Media Control Station.Md

Jlc Media Control Station.Md

ADB · MD
Filenamejlc_media_control_station.md
Size0.01 MB
Subsection tashnotes_adb / other
Downloads4
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# JLCooper Media Control Station

This document contains experimentally-observed behavior of the JLCooper Media Control Station. It contains enough information to program the device, however, some unknowns exist.

The device's default address is 0x7 and its default handler ID is 0x41, though much of the effect of using its controls is given as responses to Talk 0 commands on addresses 0x2 and 0x3, which are assumed to represent the keyboard and mouse, respectively.

## Selecting Banks

This is done with Listen 2 with the following payloads:

| Payload   | Bank Selected  |
| --------- | -------------- |
| 0x80 0x00 | Default bank 0 |
| 0xA0 0x00 | Default bank 1 |
| 0xC0 0x00 | Custom bank 0  |
| 0xE0 0x00 | Custom bank 1  |

Custom banks are stored in non-volatile memory.  Custom Bank 0 is selected on startup regardless of the last selected bank.

### Default Bank 0

Default Bank 0 contains idiosyncratic codes, most of which are read through Talk 0 commands on the MCS's own address.

### Default Bank 1

Default Bank 1 assigns the jog wheel to horizontal mouse movement and assigns the buttons as such:

| Button   | No Modifier | Shift    | Option    | Both            |
| -------- | ----------- | -------- | --------- | --------------- |
| (<<)     | F1          | Shift+F1 | Option+F1 | Shift+Option+F1 |
| (>>)     | F2          | Shift+F2 | Option+F2 | Shift+Option+F2 |
| (Stop)   | F3          | Shift+F3 | Option+F3 | Shift+Option+F3 |
| (Play)   | F4          | Shift+F4 | Option+F4 | Shift+Option+F4 |
| (Record) | F5          | Shift+F5 | Option+F5 | Shift+Option+F5 |

## Custom Banks

### Reading

When a custom bank is selected, 12 successive Talk 2 commands will read out the contents of the custom bank, four bytes at a time.

### Writing

Writing a custom bank is done with Listen 2 commands of five bytes each.  The first byte controls where the next four are to be written:

| Bit | Description                         |
| --- | ----------------------------------- |
| 7   | Always 0                            |
| 6   | Number of custom bank to be written |
| 5:0 | Offset within bank (multiple of 4)  |

### Memory Layout

| Offset | +0                           | +1                           | +2                           | +3                           |
| ------ | ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- |
| 0x00   | (<<) Modifier                | (<<) Key Code                | (>>) Modifier                | (>>) Key Code                |
| 0x04   | (Stop) Modifier              | (Stop) Key Code              | (Play) Modifier              | (Play) Key Code              |
| 0x08   | (Record) Modifier            | (Record) Key Code            | Shift+(<<) Modifier          | Shift+(<<) Key Code          |
| 0x0C   | Shift+(>>) Modifier          | Shift+(>>) Key Code          | Shift+(Stop) Modifier        | Shift+(Stop) Key Code        |
| 0x10   | Shift+(Play) Modifier        | Shift+(Play) Key Code        | Shift+(Record) Modifier      | Shift+(Record) Key Code      |
| 0x14   | Option+(<<) Modifier         | Option+(<<) Key Code         | Option+(>>) Modifier         | Option+(>>) Key Code         |
| 0x18   | Option+(Stop) Modifier       | Option+(Stop) Key Code       | Option+(Play) Modifier       | Option+(Play) Key Code       |
| 0x1C   | Option+(Record) Modifier     | Option+(Record) Key Code     | Shift+Option+(<<) Modifier   | Shift+Option+(<<) Key Code   |
| 0x20   | Shift+Option+(>>) Modifier   | Shift+Option+(>>) Key Code   | Shift+Option+(Stop) Modifier | Shift+Option+(Stop) Key Code |
| 0x24   | Shift+Option+(Play) Modifier | Shift+Option+(Play) Key Code | Ignored                      | Ignored                      |
| 0x28   | Always 0x00                  | Jog Wheel Mode               | Always 0x00                  | Shift+Jog Wheel Mode         |
| 0x2C   | Always 0x00                  | Option+Jog Wheel Mode        | Always 0x00                  | Option+Shift+Jog Wheel Mode  |

### Modifier Key Bitmap

| Bit | Description  |
| --- | ------------ |
| 7:6 | Undetermined |
| 5   | Mouse button |
| 4   | Control      |
| 3   | Option       |
| 2   | Undetermined |
| 1   | Shift        |
| 0   | Command      |

### Jog Wheel Modes

| Mode | Description                                                                                                |
| ---- | ---------------------------------------------------------------------------------------------------------- |
| 0x00 | Jog wheel moves mouse horizontally                                                                         |
| 0x01 | Jog wheel moves mouse vertically                                                                           |
| 0x02 | Jog wheel presses 4 on numeric keypad when turned anticlockwise, + on numeric keypad when turned clockwise |
| 0x03 | Jog wheel moves mouse horizontally while holding down command key                                          |
| 0x05 | Talk 0 produces 0x3F 0xFF 0xFF when turned anticlockwise, 0x3F 0x00 0x01 when turned clockwise             |
| 0x06 | Talk 0 produces 0x3F plus 16-bit relative numbers (negative for anticlockwise, positive for clockwise)     |
| 0x07 | Jog wheel in apparent shuttle mode, behavior not understood                                                |
| 0x08 | Jog wheel presses left arrow when turned anticlockwise, right arrow when turned clockwise                  |
Home Documents ADB Gravis Mousestick Ii.Md
Gravis Mousestick Ii.Md

Gravis Mousestick Ii.Md

ADB · MD
Filenamegravis_mousestick_ii.md
Size0.00 MB
Subsection tashnotes_adb / mouse
Downloads4
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# Gravis MouseStick II

The Gravis MouseStick II first appears with address 0x3 and handler ID 0x01, but the Gravis cdev changes the handler ID to 0x23 when it loads, which enables the following output formats.

## Talk 0

| Byte    | Description                                      |
| ------- | ------------------------------------------------ |
| 1st-2nd | Mouse movement data                              |
| 3rd-4th | Joystick X position (2's complement, big endian) |
| 5th-6th | Joystick Y position (2's complement, big endian) |
| 7th     | Joystick buttons                                 |

### Mouse Movement Data

| Bit  | Description                                                             |
| ---- | ----------------------------------------------------------------------- |
| 15   | Mouse button status (0 = down, 1 = up)                                  |
| 14-8 | Mouse Y movement counts (2's complement, negative up, positive down)    |
| 7    | Always 1                                                                |
| 6-0  | Mouse X movement counts (2's complement, negative left, positive right) |

### Joystick Buttons

0 = down, 1 = up

| Bit | Description                |
| --- | -------------------------- |
| 7-5 | Always 1                   |
| 4   | Right button atop joystick |
| 3   | Left button atop joystick  |
| 2   | Trigger button             |
| 1   | Bottom circular button     |
| 0   | Top circular button        |

## Talk 1

This may be an identifier of the type of Gravis joystick, allowing different joysticks to be represented by the 0x23 handler ID.

| Byte | Value Returned By MouseStick II |
| ---- | ------------------------------- |
| 1st  | 0x03                            |
| 2nd  | 0x00                            |
Home Documents ADB Powerkey.Md
Powerkey.Md

Powerkey.Md

ADB · MD
Filenamepowerkey.md
Size0.00 MB
Subsection tashnotes_adb / other
Downloads4
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
# PowerKey

This document contains experimentally-observed behavior of the ADB protocol of the Sophisticated Circuits PowerKey Classic (PK-1). It contains enough information to satisfactorally emulate the device, however, a few unknowns exist.

The PowerKey's default address is 0x7 and its default handler ID is 0x22.

## Register 0

Register 0 is a 16-bit register.  Its upper byte can be written by the host using a Listen 0 command, however its lower byte is read-only and its value in the Listen 0 command will be ignored.  Register 0 can only be read when its bit 8 is set, otherwise Talk 0 produces no reply.

| Bit  | Description                                                                                          |
| ---- | ---------------------------------------------------------------------------------------------------- |
| 15:9 | Undetermined, appears to always be set to 0                                                          |
| 8    | If set, Talk 0 returns the contents of register 0; if clear, it returns nothing                      |
| 7    | If set, relay is closed and outlets are powered; if clear, relay is open and outlets are not powered |
| 6    | If set, relay was last closed as a result of register 1 overflowing                                  |
| 5    | If set, relay was last closed as a result of the power key being pressed on the keyboard             |
| 4:2  | Undetermined, appears to always be set to 0                                                          |
| 1:0  | Undetermined, appears to always be set to 1                                                          |

## Registers 1 and 2

Registers 1 and 2 are both readable (with Talk) and writable (with Listen) 32-bit timers which increment 60 times per second when their high byte is nonzero.  When register 1 overflows from 0xFFFFFFFF to 0, if the relay was open, it closes and sets bits 7 and 6 of register 0.  When register 2 overflows from 0xFFFFFFFF to 0, if the relay was closed, it opens and clears bits 7, 6, and 5 of register 0.

## Register 3

The Exceptional Event bit is always set.  The Service Request Enable bit is always clear.

## Device Information

The software always appears to report the PowerKey Classic as having a serial number of 0 and a firmware revision of 1.4.  No register on the device appears to contain this information.
Home Documents ADB Url.Txt
Url.Txt

Url.Txt

ADB · TXT
Filenameurl.txt
Size0.00 MB
Subsection tashnotes_adb
Downloads4
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Contents
https://github.com/lampmerchant/tashnotes
Subscribe to tashnotes_adb
mp.ls