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