Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| boards:ecb:cassette_intf:start [2019/12/08 01:03] – Revision from 2019-12-08 | boards:ecb:cassette_intf:start [2026/06/15 12:19] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| /* Imported from Wayback Machine | /* Imported from Wayback Machine | ||
| - | | + | |
| - | | + | |
| | | ||
| */ | */ | ||
| Line 17: | Line 17: | ||
| ROMWBW CP/M BIOS support. | ROMWBW CP/M BIOS support. | ||
| - | 16550 UART may be used as a serial port. | + | 16550 UART may be used as a serial port with RS232 level voltages. |
| Kansas City Standard audio encoding. | Kansas City Standard audio encoding. | ||
| + | |||
| + | ===== Acknowledgments ===== | ||
| + | |||
| + | The ECB-Cassette was [[n8vem-gg-archive: | ||
| {{[[lib: | {{[[lib: | ||
| - | ===== Acknowledgments | + | ====== Hardware Documentation ====== |
| - | The ECB-Cassette | + | ^Connector^Description |
| + | |SW1 |TX-RX Loopback | ||
| + | |SW2 |RTS-CTS Connect | ||
| + | |JP1 |AUX - High level cassette output | ||
| + | |JP2 |MIKE - Low level cassette output. |N/A |to cassette | ||
| + | |JP3 |CASSETTE MONITOR OUT |N/A |from cassette | ||
| + | |K1 | ||
| + | |K2 | ||
| + | |K3 | ||
| + | |K4 | ||
| + | |K5 | ||
| + | |P1 |Port Address Select | ||
| + | |P3 | ||
| + | |P5 |Baud rate clock mode selector | ||
| + | |LED D4 | ||
| + | |LED D1 | ||
| - | ===== Hardware Documentation ===== | + | \\ |
| - | The ECB-Cassette | + | ===== Cassette |
| - | When you connect this interface | + | The ECB-Cassette card incorporates an RS-232 serial port that is connected |
| - | Example boot output of ECB-Cassette discovery. | + | Example boot output of ECB-Cassette discovery: |
| <code code> | <code code> | ||
| Line 44: | Line 63: | ||
| </ | </ | ||
| - | The MONITOR input (JP3) must be connected | + | CP/M console redirection is used to save and load files using the CP/M RDR: & PUN: device. The system appears as a punch card machine with which it sends and receives ASCII characters. As console redirection interprets some characters as special commands, binary files cannot be saved or loaded with this method. To overcome this limitation files must be converting |
| - | The switches | + | Depending |
| - | The jumper P5 must be connected on 1-3 and 2-4 for the operation with the cassette. | + | <code code> |
| + | B>stat dev: | ||
| + | CON: is TTY: | ||
| + | RDR: is PTR: | ||
| + | PUN: is PTP: | ||
| + | LST: is LPT: | ||
| + | </ | ||
| - | Current Version: Rev 1a | + | The available devices that can selected can also be seen using the STAT command: |
| - | Board: [[https://www.retrobrewcomputers.org/lib/exe/ | + | <code code> |
| + | B>stat val: | ||
| + | Temp R/B>stat val: | ||
| + | Temp R/O Disk: d:=R/O | ||
| + | Set Indicator: d:filename.typ $R/O $R/W $SYS $DIR | ||
| + | Disk Status | ||
| + | User Status | ||
| + | Iobyte Assign: | ||
| + | CON: = TTY: CRT: BAT: UC1: | ||
| + | RDR: = TTY: PTR: UR1: UR2: | ||
| + | PUN: = TTY: PTP: UP1: UP2: | ||
| + | LST: = TTY: CRT: LPT: UL1: | ||
| + | </ | ||
| - | Schematic: [[https:// | + | For your system you will need to determine which IObyte device has been assigned to the Cassette Interface. Then you can reassign the RDR: and PUN: device to them. |
| - | Gerbers: [[https:// | + | Example of reassigning RDR: to UR1: and PUN: to UP1: |
| - | Kicad: [[https:// | + | <code code> |
| + | B>stat rdr:=ur1: | ||
| + | B>stat pun:=up1: | ||
| + | B>stat dev: | ||
| + | CON: is TTY: | ||
| + | RDR: is UR1: | ||
| + | PUN: is UP1: | ||
| + | LST: is LPT: | ||
| + | </ | ||
| - | Note: The pdf, gerber and Kicad board files represent | + | To change |
| - | ===== Build Information ===== | + | <code code> |
| + | B>mode com1: | ||
| - | ==== Additional Circuit Documentation ==== | + | COM1: 600,N,8,1 |
| + | </ | ||
| - | [[https:// | + | <code code> |
| + | B>mode com1:300,n,8,1 | ||
| - | [[https:// | + | COM1: 300,N,8,1 |
| + | </code> | ||
| - | [[https:// | + | ===== Board configuration ===== |
| - | ==== BOM ==== | + | If switch SW1 is installed then it should be set so TX-RX loopback is off, switch should be in the down position. SW1 & SW2 do not need to be installed for cassette or serial operation. |
| - | [[https:// | + | Set the reset configuration to match the rest of your system. Typically new systems use Kontron so K5 should be jumpered 1-2. This setting must match all the other boards |
| - | ==== Usage Notes ==== | + | Set the port address of the board to 80h, jumper P1 3-4: |
| + | |||
| + | Set the baudout-rclk selector mode jumpers P5 so 1-3 and 2-4 are jumpered. | ||
| + | |||
| + | Set C2 and R11 to match the desired baud rate: | ||
| + | |||
| + | 300 baud C2=0.01uF, R11=10K | ||
| + | |||
| + | 600 baud C2 =0.005uF, R11=5.1K | ||
| + | |||
| + | Note that the naming convention of the connectors can be a bit confusing. | ||
| + | |||
| + | JP1 & JP2 are outputs from the board and an input on the cassette recorder. One of these lines is used for saving to tape. | ||
| + | |||
| + | JP3 is an input to the board from the cassette player and is used for loading from tape. | ||
| + | |||
| + | //Connect the saving/ | ||
| + | |||
| + | If your cassette has a //line in// socket then normally you would connect JP1 (AUX) to the //line in// socket. If your cassette has //a microphone input// socket, typically you would connect JP2 (MIKE) to this socket. Either way, only JP1 or JP2 should be connected to your cassette recorder input. | ||
| + | |||
| + | If your cassette recorder only has a microphone input and you are finding that the recorded volume is too low or you have to turn up the cassette volume very high, then you may have to connect JP1 (AUX) which has the higher signal output to the microphone input. | ||
| + | |||
| + | //Connect the loading/ | ||
| + | |||
| + | Connect the Earphone line to the to JP3. | ||
| + | |||
| + | {{[[lib: | ||
| + | |||
| + | ====== Saving and Loading files ====== | ||
| + | |||
| + | Due to the lack of specific software for the ECB Cassette to load and save files, CP/M redirection facilities are used. This requires all files to be converted to a text format and in our case the HEX file format is used. The UNLOAD.COM program is used to save a text HEX version of a file. To convert the HEX format file back to binary, the LOAD.COM program is used. This utility can be downloaded below in the files list (CASSUTIL.ZIP).. There are no hardware limitations in regard to saving and loading binary data. The limitation is due to the lack of software that directly communicates with the ECB-Cassette UART. | ||
| + | |||
| + | // | ||
| + | |||
| + | '' | ||
| + | '' | ||
| + | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| - | '' | ||
| \\ | \\ | ||
| - | '' | + | '' |
| - | '' | + | '' |
| - | '' | + | '' |
| - | '' | + | |
| + | // | ||
| + | |||
| + | '' | ||
| + | '' | ||
| + | '' | ||
| \\ | \\ | ||
| - | '' | + | '' |
| - | '' | + | '' |
| - | '' | + | '' |
| - | '' | + | |
| + | '' | ||
| \\ | \\ | ||
| - | '' | + | '' |
| - | '' | + | \\ |
| - | '' | + | '' |
| - | '' | + | '' |
| + | '' | ||
| + | |||
| + | \\ | ||
| + | '' | ||
| \\ | \\ | ||
| - | '' | ||
| [[http:// | [[http:// | ||
| - | ==== Video Demonstrations ==== | + | ====== Serial Mode ====== |
| + | |||
| + | The ECB-Cassette card can be configured to operate as a serial card. The default setting for the card is for 300 baud operation and the MODE command should be used to change the baud rate to a suitable speed. | ||
| + | |||
| + | Using MODE without any parameters will list the current com: port assignment settings: | ||
| + | |||
| + | <code code> | ||
| + | B>mode | ||
| + | COM0: 38400, | ||
| + | COM1: 300,N,8,1 | ||
| + | </ | ||
| + | |||
| + | To change COM1: to 9600 baud use: | ||
| + | |||
| + | <code code> | ||
| + | B>mode com1: | ||
| + | |||
| + | COM1: 9600, | ||
| + | </ | ||
| + | |||
| + | //Hardware settings// | ||
| + | |||
| + | K1, K2, K3 and K4 configure the flow control signals. | ||
| + | |||
| + | K3 & K4 select which signals are used from the the serial header P3. | ||
| + | |||
| + | K3 & K4 jumpers are designed to select either of two configurations - DSR & DTR signals are used or RTS & CTS signals are used for flow control. | ||
| + | |||
| + | K1 & K2 select which of the chosen DSR/DTR or RTS/CTS from K3/K4 get routed to which UART DSR, CTS, DTR and RTS pins. | ||
| + | |||
| + | Typical setting are for RTS/CTS flow control | ||
| + | |||
| + | Jumper K1 2-3 | ||
| + | |||
| + | Jumper K2 2-3 | ||
| + | |||
| + | Jumper K3 1-2 | ||
| + | |||
| + | Jumper K4 1-2 | ||
| + | |||
| + | If SW1 is installed then it can be used to override flow control settings by connecting RTS and CTS. Usually it is unused and should be set to the unconnected setting i.e. switch down. | ||
| + | |||
| + | Set the reset configuration to match the rest of your system. Typically new systems use Kontron so K5 should be jumpered 1-2. This setting must match all the other boards in your system. | ||
| + | |||
| + | Set the port address of the board to 80h, jumper P1 3-4: | ||
| + | |||
| + | If another port setting is required then a custom build of ROMWBW is requires. Update the uart.asm source as shown below | ||
| + | |||
| + | <code code> | ||
| + | #IF (UARTCAS) | ||
| + | ; CASSETTE INTERFACE SERIAL PORT | ||
| + | .DB 0 ; DEVICE NUMBER (UPDATED DURING INIT) | ||
| + | .DB 0 ; UART TYPE | ||
| + | .DB $80 ; IO PORT BASE (RBR, THR) <<< | ||
| + | .DB $80 + UART_LSR ; LINE STATUS PORT (LSR) <<< | ||
| + | .DW UARTCASSPD | ||
| + | .FILL 2,$FF ; FILLER | ||
| + | #ENDIF | ||
| + | </ | ||
| + | |||
| + | The default cassette or serial speed can also be changed by adding the following change to your customer configuration file. Other speed options are listed in the std.asm file but generally take the form SER_XXX_8N1. | ||
| + | |||
| + | <code code> | ||
| + | UARTCASSPD | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | Set the baud rate selector mode jumpers P5 to 1-2. This reconfigures the UART transmit and receive clock to use the crystal derived source. | ||
| + | |||
| + | ====== Board manufacturing and design files ====== | ||
| + | |||
| + | Current Version: Rev 1a - includes a jumper for the Kontron\N8VEM reset configuration. | ||
| + | |||
| + | Board: [[https:// | ||
| + | |||
| + | Schematic: [[https:// | ||
| + | |||
| + | Gerbers: [[https:// | ||
| + | |||
| + | Kicad: [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | ====== Errata and modifications ====== | ||
| + | |||
| + | //Chip select correction// | ||
| + | |||
| + | The M1 signal is currently not used to qualify the UART chip select. This is not currently know to cause any issues with this board but may be implemented on future designs. | ||
| + | |||
| + | Pin lift method - no modification to PCB | ||
| + | |||
| + | Remove IC2 74LS682 from its socket. Lift pin 17 and 18 and reinstall in the socket. | ||
| + | |||
| + | Connect lifted pin 18 to pin 20 on IC2 the 74LS682 chip. | ||
| + | |||
| + | Connect pin 7 U4 to lifted pin 17 on the 74LS682 chip. | ||
| + | |||
| + | //Cassette cable sockets// | ||
| + | |||
| + | JP1, JP2, JP3 headers can be inconvenient for connecting to a cassette recorder. A variety of 3.5mm sockets are available and can be attached to the spare area of the pcb to make connection and disconnection quick and easy. An example of this approach is shown below: | ||
| + | |||
| + | PCB is drilled for contacts to penetrate to the solder side. | ||
| + | |||
| + | Remove locating lugs from socket. | ||
| + | |||
| + | Sockets are attached to PCB with glue. | ||
| + | |||
| + | Sockets are connected by running wires to the jumpers on the solder side of the PCB. | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | //Relay driver for cassette start and stop// | ||
| + | |||
| + | Some cassette players support a remote start and stop controller. The following is a circuit suggestion for implementing a relay driven remote controller to suit these units. A spare user output OUT1 on the 16550 UART is used for this purpose. The output of this pin can be driven by software control using the UART Modem Control Register bit 2. | ||
| + | |||
| + | {{[[lib: | ||
| + | |||
| + | //Save/Load selection switch// | ||
| + | |||
| + | A front panel switch can be installed to select between save and load by connecting a DPDT switch to P5. | ||
| + | |||
| + | {{[[lib: | ||
| + | |||
| + | // | ||
| + | |||
| + | In order to have the capability of selecting different baud rates, provision needs to be made for making R11 and C2 interchangeable. The method demonstrated by the designer is to use machine pin sockets, with the components soldered in position. | ||
| + | |||
| + | For R11 use two four pin sockets. Removed or cut short the center two pins on the socket to be soldered into the PCB. | ||
| + | |||
| + | For C2 use two 3 pin sockets. Removed or cut short the center pin on the socket to be soldered into the PCB. | ||
| + | |||
| + | Solder the resister and capacitor to the “header” socket. | ||
| + | |||
| + | Splay out the pins on the header sockets slightly for a firm fit when plugged in. | ||
| + | |||
| + | {{[[lib: | ||
| + | |||
| + | ====== Additional Circuit Documentation ====== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | [[n8vem-gg-archive: | ||
| + | |||
| + | ====== Troubleshooting ====== | ||
| + | |||
| + | It is helpful to be able to output a stream of characters to the ECB-Cassette for testing. The CSTSO utility from the CASSUTIL archive can be used: | ||
| + | |||
| + | <code code> | ||
| + | B> | ||
| + | USAGE: CSTSO x y.z | ||
| + | |||
| + | x = ROMWBW unit number (0-9) | ||
| + | y = Character to output | ||
| + | * used if none given | ||
| + | z = Add control character Z | ||
| + | |||
| + | Example: | ||
| + | |||
| + | CSTSO 0 #.Z | ||
| + | |||
| + | Will output a stream of #'s to ROMWBW character device 0, appended with a Ctrl-Z character. | ||
| + | </ | ||
| + | |||
| + | For example, the following shows a string of characters output the the console device CIO 0. | ||
| + | |||
| + | <code code> | ||
| + | B> | ||
| + | ###################################################################################### | ||
| + | |||
| + | ###################################################################################### | ||
| + | |||
| + | ###################################################################################### | ||
| + | |||
| + | ###################################################################################### | ||
| + | |||
| + | ###################################################################################### | ||
| + | |||
| + | ###################################################################################### | ||
| + | </ | ||
| + | |||
| + | Change the unit number to match that of your ECB-Cassette board. This information is listed at boot. i.e. UART1: is the ECB-Cassette and assigned as CIO 2. So //cstso 2 #.Z// would be used to output to the cassette. The z parameter allows a control character to be appended at the end, typically Ctrl-Z, which is useful to exit redirected input to the console. Press a key at any time to exit the program. | ||
| + | |||
| + | <code code> | ||
| + | Unit Device | ||
| + | ---------- | ||
| + | Char 0 UF0: RS-232 | ||
| + | Char 1 UART0: | ||
| + | Char 2 UART1: | ||
| + | </ | ||
| + | |||
| + | — | ||
| + | |||
| + | Initial recording and playback testing can be done by connecting the ECB-Cassette board to a computer' | ||
| + | |||
| + | Correct tape input operation can be confirmed by connecting a TTL serial to usb converter to the data output circuit. | ||
| + | |||
| + | Connect pin 9 of U1 to RXD of the USB- TTL converter | ||
| + | |||
| + | Connect ground from board to GND on USB-TTL converter. | ||
| + | |||
| + | Set correct baud rate and flow control off in a terminal program and monitor. | ||
| + | |||
| + | Faulty voltage conversion operation can be confirmed by bypassing Q5 and U6 the Max232. | ||
| + | |||
| + | Remove U6 | ||
| + | |||
| + | Connect pin 9 of U1 to Pin 10 (SIN) of U5 UART. | ||
| + | |||
| + | This connects the TTL level output to the TTL level input if the UART. | ||
| + | |||
| + | ====== Video Demonstrations | ||
| Below are two videos demonstrating operation of the Cassette Interface: | Below are two videos demonstrating operation of the Cassette Interface: | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| - | ==== Software ==== | + | ===== Software |
| [[boards: | [[boards: | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| ===== Photo Gallery ===== | ===== Photo Gallery ===== | ||
| Line 136: | Line 436: | ||
| \\ | \\ | ||
| - | |||
| - | ===== Build Information ===== | ||
| ===== File List ===== | ===== File List ===== | ||
| Line 145: | Line 443: | ||
| Filesize | Filesize | ||
| Last modified | Last modified | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 5.2 MiB | 5.2 MiB | ||
| 2016/07/06 14:49 | 2016/07/06 14:49 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 324.1 KiB | 324.1 KiB | ||
| 2019/06/10 00:11 | 2019/06/10 00:11 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https://retrobrewcomputers.org/ |
| + | 234.0 KiB | ||
| + | 2020/01/25 07:28 | ||
| + | [[https:// | ||
| + | 140.0 KiB | ||
| + | 2020/01/25 09:08 | ||
| + | [[https:// | ||
| + | 58.2 KiB | ||
| + | 2020/01/26 00:54 | ||
| + | [[https://retrobrewcomputers.org/ | ||
| 2.3 KiB | 2.3 KiB | ||
| 2016/07/06 14:49 | 2016/07/06 14:49 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 1.1 MiB | 1.1 MiB | ||
| 2019/05/31 17:16 | 2019/05/31 17:16 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 221.1 KiB | 221.1 KiB | ||
| 2019/06/04 01:54 | 2019/06/04 01:54 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| - | 221.1 KiB | + | |
| - | 2019/06/03 18:20 | + | |
| - | [[https:// | + | |
| - | 221.1 KiB | + | |
| - | 2019/06/03 18:22 | + | |
| - | [[https:// | + | |
| 9.5 KiB | 9.5 KiB | ||
| 2019/06/02 12:18 | 2019/06/02 12:18 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https://retrobrewcomputers.org/ |
| - | 1.1 MiB | + | 763.5 KiB |
| - | 2019/05/31 17:13 | + | 2020/01/25 05:43 |
| - | [[https://www.retrobrewcomputers.org/ | + | [[https://retrobrewcomputers.org/ |
| + | 99.1 KiB | ||
| + | 2020/01/25 21:12 | ||
| + | [[https://retrobrewcomputers.org/ | ||
| + | 3.7 KiB | ||
| + | 2020/01/31 06:33 | ||
| + | [[https://retrobrewcomputers.org/ | ||
| 728.8 KiB | 728.8 KiB | ||
| 2016/07/06 21:23 | 2016/07/06 21:23 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 51.1 KiB | 51.1 KiB | ||
| 2016/07/06 21:23 | 2016/07/06 21:23 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 161.2 KiB | 161.2 KiB | ||
| 2016/07/06 21:23 | 2016/07/06 21:23 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 631.0 KiB | 631.0 KiB | ||
| 2019/06/02 12:17 | 2019/06/02 12:17 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 429.9 KiB | 429.9 KiB | ||
| 2019/05/25 08:59 | 2019/05/25 08:59 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 244.9 KiB | 244.9 KiB | ||
| 2019/06/02 12:19 | 2019/06/02 12:19 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 178.7 KiB | 178.7 KiB | ||
| 2019/06/02 12:16 | 2019/06/02 12:16 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| - | 845.0 KiB | + | |
| - | 2016/07/06 14:49 | + | |
| - | [[https:// | + | |
| 7.9 MiB | 7.9 MiB | ||
| 2016/07/06 14:50 | 2016/07/06 14:50 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 11.8 KiB | 11.8 KiB | ||
| 2016/07/06 14:49 | 2016/07/06 14:49 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| - | 2.9 MiB | + | |
| - | 2016/07/06 14:49 | + | |
| - | [[https:// | + | |
| 3.1 MiB | 3.1 MiB | ||
| 2019/05/31 18:39 | 2019/05/31 18:39 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 399.0 B | 399.0 B | ||
| 2016/07/06 14:49 | 2016/07/06 14:49 | ||
| - | [[https://www.retrobrewcomputers.org/ | + | [[https:// |
| 39.4 KiB | 39.4 KiB | ||
| 2016/07/06 14:49 | 2016/07/06 14:49 | ||
