home *** CD-ROM | disk | FTP | other *** search
- ;----------------------------------------------------------
- ;
- ;BSTAM Driver for the Morrow Decision I or MULTI/IO board
- ; ( This routine will work with BSTAM through V4.6)
- ; written by: Robert E. A. Adams, WA9ZMO 25-Dec-82
- ;
- ; NOTE: To locate the GROUP address use DDT to see
- ; the second and third bytes of CONIN. In my system
- ; it was '3A E3' or '0E33AH'.
- ;
- ;----------------------------------------------------------
- ;
- FALSE EQU 0
- TRUE EQU NOT FALSE
- INITIAL EQU TRUE ;TRUE FOR PORT/BAUD INITIALIZATION
- ;FALSE IF NO INITILIALIZATION REQ'D
- ;----------------------------------------------------------
- ;
- BEGIN ORG 103H
- INITIL JMP INITIU ;UART INITIALIZATION ENTRY POINT
- INSPORT JMP INSPRU ;STATUS PORT READ ENTRY POINT
- ERRSET JMP ERRSTU ;UART ERROR RESET ENTRY POINT
- INPORT JMP INPRTU ;READ DATA PORT ENTRY POINT
- OUTPORT JMP OUTPRU ;WRITE DATA PORT ENTRY POINT
- DUART JMP DUARTU ;DUMMY ROUTINE
- DUARTU EQU $
- RET ;DO A RETURN HERE UNLESS YOU WISH
- ;TO ADD AN ADDITIONAL ROUTINE
- ;
- ;----------------------------------------------------------
- GROUP EQU 0E33AH ;YOU WILL HAVE TO CHECK YOUR BIOS
- ;FOR YOUR VALUE
- DEVICE EQU 2 ;SERIAL PORT P2 SPECIFIED HERE
- PORT EQU 48H ;ADDRESS OF DECISION & MULTI/IO
- ;
- ;----------------------------------------------------------
- ;
- PREPARE EQU $
- PUSH H ;THIS ROUTINE INFORMS THE PIC
- PUSH PSW ;AS TO WHICH 8250 PORT YOU ARE
- LDA GROUP ;ABOUT TO I/O... IT MUST BE
- ORI DEVICE ;CALLED EACH TIME YOU DO AN 'IN'
- OUT PORT+7 ;OR AN 'OUT'
- POP PSW ;
- POP H ;
- RET ;RETURN TO THE ROUTINE
- ;
- ;----------------------------------------------------------
- ;PORT INITIALIZATION ROUTINE
- ;
- INITIU EQU $
- CALL SIGNON
-
- IF INITIAL
- ;
- ;BAUD RATE DIVISORS FOR 8250'S
- ;
- B110 EQU 1047
- B300 EQU 384
- B600 EQU 192
- B1200 EQU 96
- B2400 EQU 48
- B4800 EQU 24
- B9600 EQU 12
- ;
- PUSH H ! PUSH D ! PUSH B
- LXI H,B300 ;GET BAUD RATE
- LDA GROUP
- ORI DEVICE
- OUT PORT+7
- MVI A,83H
- OUT PORT+3
- MOV A,L
- OUT PORT+0
- MOV A,H
- OUT PORT+1
- MVI A,3
- OUT PORT+3
- OUT PORT+4
- POP B ! POP D ! POP H
- ENDIF ;INITIAL
- ;
- RET ;RETURN TO BSTAM
- ;
- ;----------------------------------------------------------
- ; STATUS INPUT ROUTINE
- ;
- INSPRU EQU $
- CALL PREPARE ;INFORM THE PIC
- IN PORT+5
- ANI 21H
- PUSH B
- RLC
- MOV B,A
- RLC
- RLC
- ORA B
- POP B
- ANI 3
- ORI 4
- RET ;RETURN TO BSTAM
- ;
- ;----------------------------------------------------------
- ;ERROR RESET ROUTINE
- ;
- ERRSTU EQU $
- CALL PREPARE ;INFORM THE PIC
- RET ;RETURN TO BSTAM
- ;
- ;----------------------------------------------------------
- ;INPUT ROUTINE
- ;
- INPRTU EQU $
- CALL PREPARE ;INFORM THE PIC
- IN PORT+0 ;GET DATA FROM PORT
- RET ;RETURN TO BSTAM
- ;
- ;----------------------------------------------------------
- ;OUTPUT ROUTINE
- ;
- OUTPRU EQU $
- CALL PREPARE ;INFORM THE PIC
- OUT PORT+0 ;SEND DATA TO REMOTE CPU
- RET ;RETURN TO BSTAM
- ;
- ;----------------------------------------------------------
- MESSGE: DB 13,10,10
- DB 'Version for Morrow Decision or Multi/IO'
- DB 13,10
- DB 'Serial Port P2 25-Dec-82 by Robb Adams'
- DB 13,10,7,'$'
- ;
- SIGNON: PUSH B ! PUSH D ! PUSH H
- LXI D,MESSGE
- MVI C,9
- CALL 0005 ;ANOUNCE VERSION TO USER
- POP H ! POP D ! POP B
- RET ;RETURN TO BSTAM
- ;
- ;----------------------------------------------------------
- END BEGIN