The Osborne I's uart is memory mapped in bank 2 at locations 02A00H and 02A01H. The traditional way of getting at the port was to have some assembly language code located above 04000H. This code normally takes the form of: DI OUT 00H To change back you have used the following: OUT 01H EI The uart is mapped with 02A00H as the status/control word and 02A01H as the data word. So to write some data to the data port of the uart, the following code would have been used: DI OUT 00H STA 02A01H OUT 01H EI This is the new method that uses code that is already in the BIOS and the ROM. What you have to do is set up somthing like the following code: ;Output a control word to the 6850 chip CTLPOUT: MOV C,A ;Put the character in C LXI D,013CH JMP SWITCH ;Input the status of the 6850 chip STATUS: LXI D,0181H CALL SWITCH RET ;The status will be in A ;Output a charater to the 232 port DTLPOUT: MOV C,A ;Put the charater in C LXI D,010FH JMP SWITCH ;Input a character from the 232 port DTLPIN: LXI D,0115H CALL SWITCH RET ;The character will be in A SWITCH: LDA SWITCH1+2 ORA A RZ ;Nont installed yet SWITCH1: JMP 0036H ;The 00 is replaced by INIT ;END OF CODE The code should be installed with the following code: INIT: LDA 0002H ;High order bit of the BIOS addr STA SWITCH1+2 RET ;END OF CODE When using this method of getting to the 6850 chip, you should always call the STATUS routine before calling DTLPIN because DTLPIN will wait for a character and if there is no character for a while, the program will be locked up. The code that is used to mask off and check the status bits is still the best way of checking for Ready-for-the-next-character and Character-is- waiting. The data words are the usual ascii characters. The data for the control word is in the first chart. The status word definitions are in the second chart. In the following charts, CR0 is the least significant bit and CR7 is the most significant bit. CR7 FUNCTION X Is not used on the Osborne. CR6 CR5 FUNCTION 0 0 Enables the internal modem port on the Osborne. 0 1 Not used on the Osborne. 1 0 This is the normal setting. 1 1 Transmits a BREAK level on the data output. CR4 CR3 CR2 FUNCTION 0 0 0 7 Bits, Even parity, 2 Stop bits 0 0 1 7 Bits, Odd parity, 2 Stop bits 0 1 0 7 Bits, Even parity, 1 Stop bit 0 1 1 7 Bits, Odd parity, 1 Stop bit 1 0 0 8 Bits, No parity, 2 Stop bits 1 0 1 8 Bits, No parity, 1 Stop bit 1 1 0 8 Bits, Even parity, 1 Stop bit 1 1 1 8 Bits, Odd parity, 1 Stop bit CR1 CR0 FUNCTION 0 0 19,200 Baud 0 1 1200 Baud 1 0 300 Baud 1 1 Master Reset A Master Reset (03H) must be written to the uart before a new setting is sent and as the first thing written to the uart after the program starts. The 19,200 baud setting does not seem to work on the Osborne I. CR0 0 Data not available 1 Data available CR1 0 Not ready for new data 1 Ready for new data CR2 0 Carrier present 1 Carrier lost CR3 0 Clear to send (hooked to the CTS line) 1 Not clear to send CR4 0 No framing error 1 Framing error CR5 0 No overrun error 1 Overrun error CR6 0 No parity error 1 Parity error CR7 X Not used on the Osborne I I hope that this code modification will make it easier for you to install a term program on your system.