|
|
| Line 1: |
Line 1: |
| How to build a RS232 - Interface for the CPC-Series! | | How to build a RS232 - Interface for the CPC-Series! |
| [[http://www.cpcwiki.eu/index.php/File:Rs232cpc.lzh]] ==================================================== | | [[link to file http://www.cpcwiki.eu/index.php/File:Rs232cpc.lzh]] ==================================================== |
| | |
| Okay, you have received the plan, how to construct a RS232 Interface for the
| |
| CPC. I hope you can read the numbers in the GIF-File. This README-File includes
| |
| more details about the RS232-Interface, how to connect the adress-bus with
| |
| the Interface and RS232.ASM contains an assembler routine to use the Interface
| |
| under BASIC.
| |
| | |
| I think, the best way to build the interface is to print the GIF file and
| |
| connect the components with each other.
| |
| | |
| First about the connection plan: You need a power supply that supports +9V,
| |
| -9V and 5V. Connect all pins. You have to
| |
| connect D0..D7 from the adressbus with the
| |
| Z80 STI. You have to connect D0 with pin 21,
| |
| D1 with pin 22, ..., D7 with pin 28. That's
| |
| all. Now you can plug in the interface in the
| |
| CPC. Switch the power on. If the CPC doesn't
| |
| work normal please switch the power off and
| |
| you have to watch for faults in the connection
| |
| of your interface :-(. If everything is ok then
| |
| you have to copy the assembler code and do the
| |
| next test.
| |
| | |
| WARRANTY: There is no warranty of any defects of your CPC!!! On my CPC every-
| |
| ========= thing works fine and I hope that you won't have any problems with
| |
| this RS232-Interface.
| |
| | |
| Second part: How to program the interface. (The assembler code is saved in
| |
| ============ RS232.ASM)
| |
|
| |
| | |
| Z80-STI: 50 to 19200 bps (5,6,7 or 8 bit, 1, 1 1/2, 2 stopb., all parity flags)
| |
| 24 registers,
| |
| use 16 registers (direct) with F8E0-F8EF,
| |
| the last 8 registers can be used indirect with a special register
| |
| | |
| The meaning and the adresses of the registers:
| |
| | |
| register 0, port adress F8E0:
| |
| This register transfers data from and to a indirect register.
| |
| | |
| register 1, port adress F8E1:
| |
| This register transfer the data from and to the I/O port of the chip. If you
| |
| use V24 you can request handshake signals from this port. In this interface
| |
| the following bits have this meaning:
| |
| | |
| Bit 0: DTR (Data Terminal Ready)
| |
| Bit 1: RTS (Ready to Send)
| |
| Bit 2: CTS (Clear to Send)
| |
| Bit 3: DSR (Data Set Ready)
| |
| Bit 4-7: not used
| |
| | |
| register 2-7, port adress F8E2-F8E7:
| |
| These registers are used by the interrupt handler. If you want to know
| |
| what you can do with this registers please write to Mostek for support.
| |
| | |
| register 8, port F8E8:
| |
| Bit 3-7 are used by the interrupt handler. With bit 0-2 you can choose the
| |
| indirect register.
| |
| | |
| register 9, port adress F8E9:
| |
| Controll register for timer A and B. You needn't to use the timer for a V24
| |
| interface.
| |
| | |
| register 10, port adress F8EA:
| |
| Timer B value
| |
| | |
| register 11, port adress F8EB:
| |
| Timer A value
| |
| | |
| register 12, port adress F8EC:
| |
| USART-register. Change the connect-parameters.
| |
| | |
| Bit 7 6 5 4 3 2 1 0
| |
| x x x x x x x 0
| |
| ^ ^ ^ ^ ^ ^ ^
| |
| | | | | | | 1=even
| |
| | | | | | | 0=odd
| |
| | | | | | 1=Parity on
| |
| | | | | | 0=Parity off
| |
| | | | Startbit Stopbit Format
| |
| | | | 0 0 = 0 0 synchron
| |
| | | | 0 1 = 1 1 asynchron
| |
| | | | 1 0 = 1 1 1/2 asynchron
| |
| | | | 1 1 = 1 2 asynchron
| |
| | 0 0 = 8 Bit
| |
| | 0 1 = 7 Bit
| |
| | 1 0 = 6 Bit
| |
| | 1 1 = 5 Bit
| |
| please always set on 0
| |
| | |
| register 13, port adress F8ED:
| |
| Receiver status. You need only the following bits:
| |
| | |
| Bit 0: Receiver-Enable, set to 1 if receiving is possible.
| |
| Bit 1: Memory full "1" or not "0". (If 8 Bits are received then the interface
| |
| send memory full).
| |
| | |
| register 14, port adress F8EE:
| |
| Sending status. Again you need only two bits:
| |
| | |
| Bit 0: Sending-Enable, must set to "1" if sending is allowed.
| |
| Bit 7: Memory full "1" or not "0". This bit can be used to ask if a word is
| |
| send or not.
| |
| | |
| register 15, port adress F8EF:
| |
| This is the send and receive register. Here you can get a word or send a word.
| |
| | |
| Indirect registers (Choose them with register 8):
| |
| =================================================
| |
| | |
| register 0: Not used.
| |
| | |
| register 1: Data for Timer D.
| |
| | |
| register 2: Data for Timer C.
| |
| | |
| register 3: Not used.
| |
| | |
| register 4: Not used.
| |
| | |
| register 5: Not used.
| |
| | |
| register 6: I/O-Port (receive or send). High means sending, low receiving.
| |
| | |
| register 7: Used for Timer C and D. Reset with "1".
| |
| | |
| | |
| For more exact informations please write to Mostek and ask for support for the
| |
| Z80-STI. You also can look at the assembler code.
| |
| | |
| | |
| About the assambler code:
| |
| =========================
| |
| | |
| The program RS232.ASM installs 2 new BASIC commands (|FORMAT, |RECORD, |SEND).
| |
| Here you can read the description about this new commands:
| |
| | |
| |FORMAT, number of bps, number of stop-bits, data bits, parity on/off, parity
| |
| even/odd
| |
| | |
| Number of bps: 0 = 50 bps
| |
| 1 = 75 bps
| |
| 2 = 110 bps
| |
| 3 = 150 bps
| |
| 4 = 300 bps
| |
| 5 = 600 bps
| |
| 6 = 1200 bps
| |
| 7 = 2400 bps
| |
| | |
| Number of stop bits: 1 = 1 stop bit
| |
| 0 = 2 stop bit
| |
| | |
| Data bits: 0 = 7 data bits
| |
| 1 = 8 data bits
| |
| | |
| Parity: 1 = even
| |
| 0 = odd
| |
| | |
| Parity: 1 = on
| |
| 0 = off
| |
| | |
| Normally, you use 8N1 for connection with BBS's you can initialise this with
| |
| |FORMAT, number of bps, 1, 1, 0, 1.
| |
| | |
| | |
| |RECORD, @a$
| |
| The incoming chars will be read in a string. Control codes will be send to the
| |
| string, too, because sometimes you need it for binary transmissions.
| |
| | |
| | |
| |SEND, @a$
| |
| The string is send until it ends, except you press ESC. The program will not
| |
| send CR or LF, so you can use this for binary transmission.
| |
| | |
| | |
| Last words:
| |
| ===========
| |
| | |
| This interface is described in the book "Maschinenspracheprogramm und Hardware-
| |
| erweiterungen fuer Schneider CPC's" from the IDEA Verlag. I hope that every-
| |
| thing is ok with the circuit plans and that you don't have a broken CPC when
| |
| you use it ;-).
| |
| | |
| Sorry for bad english. (Please help me to find my faults).
| |
| | |
| If something in my circuit plan is not ok please write to
| |
| | |
| Tim Riemann
| |
| Gartenweg 3
| |
| 35114 Haina-Kloster
| |
| Germany
| |
| eMail: TCS-Software@t-online.de
| |
| | |
| Third part: Used components:
| |
| ===========
| |
| | |
| 1 Z80-STI (or MK 3801-4)
| |
| 1 SN 75189
| |
| 1 SN 75188
| |
| 1 74 LS 30
| |
| 1 74 LS 138
| |
| 1 74 LS 20
| |
| 1 74 LS 04
| |
| 1 74 LS 32
| |
| 1 25pin SUB-D connector (male)
| |
| 1 connector for the expansion port
| |
| | |
| That's all!
| |
| | |
| [[Link title]]
| |