- Introduction
- The User Interface
- The Left Sliding Menu Layout
- System Recovery
- Software Update
- Activation Key
- BIOS Mode
The MSD-MATRIX WEB1 system enables web-compatible browsers23 to interface with MSD4 devices, providing control, monitoring, and software maintenance capabilities.
This is open-source software. If you are interested in contributing, please contact me5.
Please visit the web application for instruction1. Upon connection the Matrix screen is presented.
From the Matrix screen all internal routings can be controlled.
Display of the menu depends on the width of the browser window.
| Connect Page |
|---|
| Click to Connect |
| Main Menu |
|---|
| Preset Select |
| Application Select |
| Utility Menu |
| About Menu |
| Preset Select |
|---|
| Preset 1 |
| Preset 2 |
| Preset 3 |
| Preset 4 |
| Preset 5 |
| Preset 6 |
| Preset 7 |
| Preset 8 |
| Rename |
| Mark Default |
| Exit |
| Application Select |
|---|
| Exit |
| Utility Menu |
|---|
| Disconnect |
| Keyboard |
| Exit |
| Keyboard |
|---|
| KEY 1 |
| KEY 2 |
| KEY 3 |
| KEY 4 |
| KEY 5 |
| KEY 6 |
| KEY 7 |
| KEY 8 |
| Exit |
| About Menu |
|---|
| Software Update |
| Purchase License |
| Exit |
If the software is broken causing the unit to cycle the reset cyclus or frozen during power-up a complete reprogramming is required. When power is applied hold the leftmost key in order to force the unit in BIOS mode. It is possible to release the key and still remain in the BIOS mode but that could take a couple of attempts in order to be successfull. Alternaltively hold the key while reprogramming the unit.
The BIOS Mode provides a restricted set of low-level commands for:
- Serial communication
- Flash memory access
- Basic system settings
As the last stage in a system power-up cycle the leftmost key is checked and if engaged the main program loading is halted displaying the BIOS template.
The interface uses an physical RS232 serial connection configured at:
- 9600 baud rate
- 8 data bits
- No parity
- 1 stop bit (9600,8,N,1)
Alternatively, a USB serial dongle can be used.
The protocol was developed in 1980 for the serial control of the NTP Audio Matrix 512 system for the BBC at Broadcasting House. It was later implemented in the MSD600M (from software version 5), with additional functionality.
- Commands & responses start with a dot (.)
- Messages terminate with carriage return (\r)
- An optional message field, beginning with an asterisk (*), can be appended to the command echoed in the response.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|
| . | Command | ID | X | , | Y | cr | ||||
| . | Command | ID | X | , | Y | ID | X | , | Y | cr |
Command S and C are handled identical and multiple crosspoint can be set in one command as shown in line two of the below table. Upto ten commands is possible in one string.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|
| . | S | ID | X1 | , | Y1 | cr | ||||
| . | S | ID | X1 | , | Y1 | ID | X2 | , | Y2 | cr |
Example 1:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
|---|---|---|---|---|---|---|---|
| Command | . | S | A | 32 | , | 52 | cr |
| Response | . | A | A | 32 | , | 52 | cr |
Example 2:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
|---|---|---|---|---|---|---|---|
| Command | . | S | A | 32 | , | 99 | cr |
| Response | . | N | A | 32 | , | 99 | cr |
The command routes source 52 to output 32, with the MSD acknowledging. A negative acknowledgment ('N' in field 2) indicates out-of-range commands or an illegal identifier.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|
| . | I | ID | X | , | - | cr |
| . | I | ID | - | , | Y | cr |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|
| . | L | ID | X | , | - | cr |
The message field starting with '*' can be attached to any command and response. In a multi-control environment, it helps filter responses effectively. Example:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|
| Command | . | S | A | 32 | , | 52 | * | MY MESSAGE | cr |
| Response | . | A | A | 32 | , | 52 | * | MY MESSAGE | cr |
A low-level protocol has been implemented to access the internal FLASH memory and DSP resources.
All control sequences begin with a two-character break sequence:
- '¦m' (hexadecimal: <0xA6><0x6D>) synchronizes the MSD protocol state machine
- Upon entering Idle State, the MSD returns:
- ACK (<0x05>) if successful
- NACK (<0x04>) if unsuccessful
- If unsuccessful, additional breaks must be sent (up to 5 retries).
- Maximum response time: 15ms
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Command 1 | <0xA6> | |
| 2 | Command 2 | <0xAD> | |
| 3 | Response | <0x05> |
Upon successful execution, the MSD remains in IDLE State, ready for the next command.
Commands assume the MSD is in IDLE state (after break). Commands available in BIOS mode are marked with "*".
| HEX | Function | Available in BIOS Mode? |
|---|---|---|
| <0x00> | Write_BDMA_address | Yes |
| <0x01> | WriteBDMA | Yes |
| <0x04> | WriteProgramLine | No |
| <0x0A> | ToggleProtectFlag | No |
| <0x0E> | Restart | Yes |
| <0x0F> | WriteKeyboard | No |
| <0x10> | ReadBDMAaddr | No |
| <0x11> | ReadBDMA | Yes |
| <0x12> | ReadRAMbytes | No |
| <0x13> | ReadProgramLine | No |
| <0x14> | CatchReadVar | No |
| <0x1A> | ReadProtectFlag | No |
Program of the DSP BDMA setup registers.
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Write Comand | <0x00> | |
| 2 | Response | <0x05> | |
| 3 | BDMA external address | LSB | |
| 4 | BDMA external address | MSB | |
| 5 | BDMA external address | HSB | |
| 6 | Response | <0x05> | |
| 7 | Stays in IDLE State |
Write data to the DSP external FLASH or RAM memory.
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Comand | <0x01> | |
| 2 | Response | <0x05> | |
| 3 | Bytes to transmit | 0xXX | |
| 4 | Data | BYTE | |
| 5 | Data | BYTE | |
| .. | Data | BYTE | |
| n | Checksum | BYTE | |
| Stays in IDLE State |
This function write a program line into the internal 24 bits DSP memory. The address is set with the WriteBDMAaddr. Handle with care!!
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Comand | <0x04> | |
| 2 | Response | <0x05> | |
| 3 | Program Memory | LSB | |
| 4 | Program Memory | MSB | |
| 5 | Program Memory | HSB | |
| 6 | Stays in IDLE State |
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Restart | <0x0E> |
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Comand | <0x0F> | |
| 2 | Response | <0x05> | |
| 3 | Key Number | No | |
| 4 | Response | <0x05> |
Read back of the DSP BDMA setup registers.
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Comand | <0x10> | |
| 2 | Response | <0x05> | |
| 3 | BDMA external address | LSB | |
| 4 | BDMA external address | MSB | |
| 5 | BDMA external address | PAGE | |
| 6 | Checksum | BYTE | |
| 7 | Stays in IDLE State |
This function return data from the DSP external byte wide FLASH or RAM memory.
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Comand | <0x11> | |
| 2 | Response | <0x05> | |
| 3 | Bytes to receive | 0xXX | |
| 4 | Data | BYTE | |
| 5 | Data | BYTE | |
| .. | Data | BYTE | |
| n | Checksum | BYTE | |
| Stays in IDLE State |
This function return data from the on chip 16 bit wide DSP memory. The address is set with the WriteBDMAaddr command and the maximum bytes to read are 128.
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Comand | <0x12> | |
| 2 | Response | <0x05> | |
| 3 | Bytes to receive | 0xXX | |
| 4 | Data 1 | MSB | |
| 5 | Data 1 | LSB | |
| .. | Data 2 | BYTE | |
| n | Checksum | BYTE | |
| Stays in IDLE State |
This function return one 32 bits wide memory cell from the DSP Program memory.
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Comand | <0x12> | |
| 2 | Response | <0x05> | |
| 3 | Bytes to receive | 0xXX | |
| 4 | Data 1 | LSB | |
| 5 | Data 2 | . | |
| 6 | Data 3 | . | |
| 7 | Data 4 | MSB | |
| 8 | Checksum | BYTE | |
| 9 | Stays in IDLE State |
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Comand | <0x14> | |
| 2 | Response | <0x05> |
| Step | Function | TX | RX |
|---|---|---|---|
| 1 | Comand | <0x1F> | |
| 2 | Response | <0x05> |
The msd-load.exe code can be compiled using Borland's Turbo Pascal and TurboPower's libraries.
1.0 Basic Matrix functionality MSD600M++
Footnotes
-
Link to the application (https://msd.hansens.dk) ↩ ↩2
-
Web Serial API (https://wicg.github.io/serial/) ↩
-
Serial Port Documentation (https://developer.mozilla.org/en-US/docs/Web/API/SerialPort) ↩
-
DK-Audio website (https://hansens.dk/pages/documentation) ↩
-
Contact: Karsten Hervoe Hansen kh@hansens.dk ↩