POWERMATE SERIAL PORT DOCUMENTS.

     This bulletin describes the register addresses and pin a s- 
 signments for the Powermate Interface Board's RS232 Serial Ports, 
 connectors J3 and J4.  Both of the serial ports are provided by a 
 single integrated circuit, a Signetics 2681, which the manufac- 
 turer calls a DUART (DUal Asynchronous Receiver/Transmitter.  The 
 driver and receiver chips used are common 1488 and 1489 ICs.  All 
of the other currently available serial port products utilize the 
Signetics 2651, which is a single serial port IC.  The register 
addresses and bit assignments within the registers are different 
between the 2651 and the 2681.  Therefore, software written for 
the 2651 will not function with the 2681 without patching.  We 
provide already-patched overlays for the ZMP, IMP, and MEX com- 
munications programs so that the user will not have to patch 
those programs himself.

     However, for those users who wish to utilize some other com- 
munications package or would like to talk directly to the ports 
from programs they have written, the I/O address information is 
given below.  All addresses are in hexadecimal.  Bit assignments 
within registers are in accordance with the 1983 Signetics MOS 
Microprocessor Data Manual.
 
; 
; SIGNETICS 2681 DUART I/O PORT EQUATES 
; NOTE: Port A is Serial Port 2, Port B is Serial Port 1 
;
 
S2681 EQU 10H ;S2681 DUART BASE ADDRESS 
MRA EQU S2681 ;MODE REGISTERS 1A AND 2A 
SRA EQU S2681+1 ;STATUS REGISTER A 
CSRA EQU S2681+1 ;CLOCK SELECT REGISTER A 
CRA EQU S2681+2 ;COMMAND REGISTER A 
RHRA EQU S2681+3 ;RX HOLDING REGISTER A (RX DATA) 
THRA EQU S2681+3 ;TX HOLDING REGISTER A (TX DATA) 
IPCR EQU S2681+4 ;INPUT PORT CHANGE REGISTER 
ACR EQU S2681+4 ;AUXILIARY CONTROL REGISTER 
ISR EQU S2681+5 ;INTERRUPT STATUS REGISTER 
IMR EQU S2681+5 ;INTERRUPT MASK REGISTER 
CTU EQU S2681+6 ;COUNTER/TIMER UPPER 
CTUR EQU S2681+6 ;COUNTER/TIMER UPPER REGISTER 
CTL EQU S2681+7 ;COUNTER/TIMER LOWER 
CTLR EQU S2681+7 ;COUNTER/TIMER LOWER REGISTER 
MRB EQU S2681+8 ;MODE REGISTERS 1B AND 2B 
SRB EQU S2681+9 ;STATUS REGISTER B 
CSRB EQU S2681+9 ;CLOCK SELECT REGISTER B 
CRB EQU S2681+10 ;COMMAND REGISTER B 
RHRB EQU S2681+11 ;RX HOLDING REGISTER B (RX DATA) 
THRB EQU S2681+11 ;TX HOLDING REGISTER B (TX DATA) 
IP EQU S2681+13 ;INPUT PORT 
OPCR EQU S2681+13 ;OUTPUT PORT CONFIGURATION REGISTER 
STARTC EQU S2681+14 ;START COUNTER COMMAND PORT (READ) 
SOPB EQU S2681+14 ;SET OUTPUT PORT BITS COMMAND PORT 
STOPC EQU S2681+15 ;STOP COUNTER COMMAND PORT (READ) 
ROPB EQU S2681+15 ;RESET OUTPUT PORT BITS CMD PORT

An example of driver code for the ports is given below:
 
; 
; CONSOLE I/O ROUTINES FOR POWERMATE I/F BOARD SERIAL PORT 2 
;
 
CONSTAT:  IN A,(SRA) ;GET STATUS REGISTER A CONTENTS
          BIT 0,A ;SEE IF RXRDY (BIT 0 = 1)
          RET Z ;RETURN IF ZERO (NO CHARACTER)
          XOR A ;CHARACTER AVAILABLE, FLAG BY
          DEC A ; SETTING A REG TO -1 (0FFH)
          RET
 
CONIN:  IN A,(SRA) ;GET STATUS REGISTER A CONTENTS
          BIT 0,A ;SEE IF RXRDY (BIT 0 = 1)
          JR Z,CONIN1 ;NO CHAR, TRY AGAIN
          IN A,(RHRA) ;CHAR READY, GO GET IT
          AND 7FH ;MASK OUT PARITY BIT 
          RET
 
CONOUT:  IN A,(SRA) ;GET STATUS REGISTER A CONTENTS
          BIT 3,A ;SEE IF TXEMP (BIT 3 = 1)
          JR Z,CONOT1 ;NO, WAIT UNTIL CHARACTER(S) SENT
          LD A,C ;YES, GET CHARACTER INTO A
          OUT (THRA),A ;SEND IT 
          RET
 
; 
; PUNCH OUTPUT DRIVER ROUTINE FOR SERIAL PORT 1 
;
 
PUNOUT:  IN A,(SRB) ;GET STATUS REGISTER B CONTENTS
          BIT 3,A ;SEE IF TXEMP (BIT 3 = 1)
          JR Z,PUNOT1 ;NO, WAIT UNTIL CHARACTER(S) SENT
          LD A,C ;YES, GET CHARACTER INTO A
          OUT (THRB),A ;SEND IT 
          RET
 
; 
; READER INPUT DRIVER ROUTINE FOR SERIAL PORT 1 
;
 
RDRIN:  IN A,(SRB) ;GET STATUS REGISTER B CONTENTS
          BIT 0,A ;SEE IF RXRDY (BIT 0 = 1)
          JR Z,RDRIN ;NO CHAR, GO TRY AGAIN
          IN A,(RHRB) ;CHAR READY, GET IT
          AND 7FH ;MASK OUT PARITY BIT 
          RET

; 
; INITIALIZE ROUTINE AND VALUES FOR SERIAL I/O PORTS 
;
 
INIT:  LD HL,INITBL ;POINT AT START OF INIT TABLE 
IN1:  LD C,(HL) ;PUT BYTE INTO C
          LD A,C ;GET INTO A FOR TEST 
          INC A ;SEE IF -1 (0FFH)
          INC HL ;POINT AT NEXT BYTE
          RET Z ;FINISHED IF BYTE WAS A (-1)
          LD B,(HL) ;NOT FINISHED, BYTE WAS PORT NUMBER
                         ; GET BYTE COUNT BYTE INTO B FOR OTIR
          INC HL ;POINT AT FIRST BYTE TO OUTPUT
          OTIR ;OUTPUT UNTIL BYTE COUNT EXHAUSTED
          JR IN1 ;AND GO DO IT AGAIN
 
INITBL:  DB MRA ;MODE REGISTERS 1A & 2A ADDRESS
          DB 02 ;TWO BYTES TO SEND
          DB 13H ;TO MR1A - NO PARITY, 8 BITS/CHAR
          DB 07H ;TO MR2A - NO RTS/CTS CONT, 1 STOP BIT

          DB MRB ;MODE REGISTERS 1B & 2B ADDRESS
          DB 02 ;TWO BYTES TO SEND
          DB 13H ;TO MR1B - NO PARITY, 8 BITS/CHAR
          DB 07H ;TO MR2B - NO RTS/CTS CONT, 1 STOP BIT

          DB CSRA ;CLOCK SELECT REGISTER A ADDRESS
          DB 01H ;ONE BYTE TO SEND
          DB 0CCH ;TX/RX DATA RATE = 9600 BAUD

          DB CSRB ;CLOCK SELECT REGISTER B ADDRESS
          DB 01H ;ONE BYTE TO SEND
          DB 0CCH ;TX/RX DATA RATE = 9600 BAUD

          DB CRA ;COMMAND REGISTER A
          DB 01H ;ONE BYTE TO SEND
          DB 05H ;ENABLE TXA & RXA

          DB CRB ;COMMAND REGISTER B
          DB 01H ;ONE BYTE TO SEND
          DB 05H ;ENABLE TXB & RXB

          DB ACR ;AUXILIARY CONTROL REGISTER
          DB 01 ;ONE BYTE TO SEND
          DB 0F0H ;BRG SET 2, TIMER INPUT XTAL/16

          DB SOPB ;SET OUTPUT PORT BITS COMMAND ADDRESS
          DB 01 ;ONE BYTE TO SEND
          DB 0FFH ;SET ALL OUTPUT BITS

          DB -1 ;END OF INITIALIZE TABLE

 
The handshaking lines use the S2681's general purpose input and 
output ports and are assigned as follows:

 
Serial Port 2 (wired for direct connection of a terminal or a 
serial printer) -
 
Signal Line Name Bit Number Interface RS232
                                             Board Pin Pin 
-----------------------------------------------------------------
 
Data Terminal Ready Output Bit 2 J3 Pin 11 6 
Request to Send Output Bit 0 J3 Pin 9 5 
Carrier Detect Output Bit 4 J3 Pin 15 8 
Data Set Ready Input Bit 2 J3 Pin 14 20 
Clear to Send Input Bit 0 J3 Pin 7 4

 
Serial Port 1 (wired for direct connection of a modem) -
 
Signal Line Name Bit Number Interface RS232
                                             Board Pin Pin 
-----------------------------------------------------------------
 
Data Terminal Ready Output Bit 3 J4 Pin 14 20 
Request to Send Output Bit 1 J4 Pin 7 4 
Carrier Detect Input Bit 5 J4 Pin 15 8 
 Data Set Ready Input Bit 3 J4 Pin 11 6 
 Clear to Send Input Bit 1 J4 Pin 9 5
 
 
Name Bit Number Interface RS232
               
