|
|
| 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]]
| + | |