; ;BSTAM 4.6 UHSIO4.ASM NORTH STAR HSIO-4 ; ;Modification written by Robb Adams (WA9ZMO/8) ;6354 North Twelth Street, Kalamazoo, MI 49009 ; ;10-Oct-82 This version will adapt the North Star ;HSIO-4 I/O Board to BSTAM. The user need only make ;three modifications if desired; ; ; BOARD ADDR - PORT ADDR - BAUD RATE ; ;---------------------------------------------------------- BEGIN ORG 103H INITIL JMP INITIU ;INITIALATION ENTRY POINT INSPORT JMP INSPRU ;STATUS PORT READ ENTRY POINT ERRSET JMP ERRSTU ;ERROR RESET ENTRY POINT INPORT JMP INPRTU ;READ DATA PORT ENTRY POINT OUTPORT JMP OUTPRU ;WRITE DATA PORT ENTRY POINT DUART JMP DUARTU DUARTU RET ;---------------------------------------------------------- BDOS EQU 05H ; CR EQU 0AH ;CARRIAGE RETURN LF EQU 0DH ;LINE FEED ;---------------------------------------------------------- PA EQU 00H ;PORT A PB EQU 04H ;PORT B PC EQU 08H ;PORT C PD EQU 0CH ;PORT D ;---------------------------------------------------------- B19200 EQU 00H ;-- BAUD RATES FOLLOW -- B9600 EQU 01H B4800 EQU 02H B2400 EQU 03H B1200 EQU 04H B600 EQU 05H B300 EQU 06H B110 EQU 07H ;---------------------------------------------------------- BAS EQU 10H ;<- CHANGE BOARD ADDRESS HERE PAD EQU PD ;<- CHANGE PORT ADDRESS HERE BAUD EQU B300 ;<- CHANGE BAUD RATE HERE ;---------------------------------------------------------- PORT EQU BAS+PAD ;ADDRESS OF CHOSEN PORT STATPT EQU PORT+3 ;STATUS PORT DATAPT EQU PORT+2 ;DATA PORT INTRPT EQU PORT+1 ;INTERRUPT PORT BAUDPT EQU PORT+0 ;BAUD PORT ;---------------------------------------------------------- MI EQU 4EH ;1 STOP,8 DATA CI EQU 37H ;ERROR RESET AND CHIP ENABLE ERSET EQU 37H ;ERROR RESET AND CHIP ENABLE ;---------------------------------------------------------- INITIU EQU $ ;THIS IS THE UART/USART INITIALATION ROUTINE. ; ;TO BE COMPATIBLE WITH MOST BSTAM USERS USE FOLLOWING ;INITIALATION GUIDE LINES: ; ;1. USE 1 STOP BIT (OPTIONAL - 2) ;2. USE 8 DATA BITS (MUST) ;3. USE 1 START BIT (MUST) ;4. USE 16X FOR CLOCK RATE (MUST) ;5. USE ASYNCHRONOUS MODE ONLY (MUST) MVI A,B300 ;<- CHANGE BAUD RATE HERE OUT BAUDPT CALL SIGN MVI A,03H CALL NOOP CALL NOOP MVI A,040H ;RESET 8251 CALL NOOP MVI A,MI ;SEND MODE COMMAND CALL NOOP MVI A,CI ;ENABLE AND RESET ERRORS (FE,OE,PE) CALL NOOP IN DATAPT ;CLEAR BUFFER IN DATAPT ;... TWICE RET ;RETURN TO BSTAM NOOP: OUT STATPT NOP ! NOP ! NOP NOP ! NOP ! NOP RET INSPRU EQU $ ;THIS IS THE STATUS READ PORT ROUTINE. ;WHEN EXITING THIS ROUTINE BSTAM EXPECTS IN REGISTER A ;THE FOLLOWING BITS TO BE SET IF NEEDED: ; ;1. 02 BIT SET IF RECEIVER READY ;2. 01 BIT SET IF TRANSMITTER READY IN STATPT ;FROM 8251 STATUS PORT RET ;RETURN TO BSTAM ERRSTU EQU $ ;THIS IS THE ERROR RESET FOR UART/USART ROUTINE. ;YOUR UART/USART MAY NOT NEED TO BE RESET IF FRAMING, ;OVERRUN, OR PARITY ERROR IS FOUND. IF THIS IS YOUR ;CASE, JUST DO A RETURN. MVI A,ERSET ;RESET ERRORS OUT STATPT ;TO STATUS PORT RET ;RETURN TO BSTAM INPRTU EQU $ ;THIS IS THE READ DATA PORT ROUTINE. IN DATAPT ;GET DATA FROM PORT RET ;RETURN TO BSTAM OUTPRU EQU $ ;THIS IS THE WRITE DATA PORT ROUTINE. OUT DATAPT ;SEND DATA TO REMOTE CPU RET ;RETURN TO BSTAM MSGE: DB CR,LF,CR,LF DB 'Version: North Star HSIO-4 11-Oct-82' DB CR,LF DB 'Baud: 300 Port: D by Robb Adams' DB CR,LF,LF,'$' SIGN: PUSH B ! PUSH D ! PUSH H LXI D,MSGE MVI C,9 CALL BDOS POP H ! POP D ! POP B RET END BEGIN