;---------------------------------------------------------- ; ;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