home *** CD-ROM | disk | FTP | other *** search
- ; UIMS.ASM ver 1.0
- ; adapted by Keith Petersen, W8SDZ
- ; (revised 3/14/81)
- ;
- ;USER AREA FOR BSTAM VER 4.3 FOR USE WITH THE
- ;INDUSTRIAL MICROSYSTEMS SERIAL PRINTER PORT
- ;
- LSTSTAT EQU 12H ;STATUS PORT
- LSTDAT EQU 13H ;DATA PORT
- ;
- CR EQU 0DH ;CARRIAGE RETURN
- LF EQU 0AH ;LINE FEED
- ;
- ; IF YOU WISH TO USE OTHER REGISTERS SUCH AS HL,BC,DE
- ; (NOT INCLUDING SP REGISTER). BE SURE TO PUSH BSTAM'S
- ; REGISTERS ON TO STACK AND POP THEM BACK OFF BEFORE
- ; RETURNING TO BSTAM. THERE IS AMPLE ROOM TO PUSH ALL
- ; REGISTERS ONTO BSTAM'S STACK, PLUS ROOM FOR 10 LEVELS
- ; OF CALLS. THERE ARE 300 BYTES OF USER SPACE AVAILABLE
- ; TO YOU. THE JUMPS CODED AT THE BEGINNING OF THIS PROGRAM
- ; CANNOT BE MOVED IN ANY WAY.
- ;
- BEGIN ORG 103H
- INITIL JMP INITIU ;UART/USART INITIALIZATION ENTRY POINT
- INSPORT JMP INSPRU ;STATUS PORT READ ENTRY POINT
- ERRSET JMP ERRSTU ;UART/USART ERROR RESET ENTRY POINT
- INPORT JMP INPRTU ;READ DATA PORT ENTRY POINT
- OUTPORT JMP OUTPRU ;WRITE DATA PORT ENTRY POINT
- ;
- ;
- INITIU EQU $
- ;
- ; THIS IS THE UART/USART INITIALIZATION ROUTINE.
- ; TO BE COMPATIBLE WITH MOST BSTAM USERS USE FOLLOWING
- ; INITIALIZATION 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)
- ;
- CALL SIGNON ;TELL USER WHAT'S IMPLEMENTED
- IN LSTDAT ;CLEAR DATA FROM INPUT PORT
- IN LSTDAT ;MAKE SURE IT'S CLEAR
- 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. 20 BIT SET IF FRAMING ERROR
- ; 2. 10 BIT SET IF OVERRUN ERROR
- ; 3. 08 BIT SET IF PARITY ERROR
- ; 4. 04 BIT SET IF TRANSMITTER EMPTY
- ; IF YOUR UART/USART DOES NOT HAVE TRANSMITTER
- ; EMPTY FEATURE, THEN ALLWAYS SET THIS BIT ON.
- ; 5. 02 BIT SET IF RECEIVER READY
- ; 6. 01 BIT SET IF TRANSMITTER READY
- ; 7. DO NOT SET THE 80 BIT OR 40 BIT
- ;
- IN LSTSTAT ;GET STATUS BITS FROM IMS STATUS PORT
- RLC ;MOVE INTO PLACE FOR BSTAM
- ANI 6 ;REMOVE UNWANTED BITS
- ORI 1 ;OR-IN BOGUS TRANS READY BIT
- 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.
- ;
- IN LSTDAT ;CLEAR DATA FROM INPUT PORT
- IN LSTDAT ;MAKE SURE IT'S CLEAR
- RET ;RETURN TO BSTAM
- ;
- ;
- INPRTU EQU $
- ;
- ; THIS IS THE READ DATA PORT ROUTINE.
- ; BEFORE THIS ROUTINE IS ENTERED THE 02 BIT OF
- ; STATUS READ ROUTINE MUST HAVE BEEN SET.
- ; DO NOT CLEAR THE 80 BIT FROM THE DATA INPUT PORT.
- ; RETURN WITH REGISTER A LOADED WITH INPUT DATA.
- ;
- IN LSTDAT ;GET DATA FROM PORT
- RET ;RETURN TO BSTAM
- ;
- ;
- OUTPRU EQU $
- ;
- ; THIS IS THE WRITE DATA PORT ROUTINE.
- ; BEFORE THIS ROUTINE IS ENTERED THE 04 BIT AND 01 BIT
- ; OF STATUS READ MUST BE SET.
- ; DO NOT CLEAR THE 80 BIT FROM THE DATA OUTPUT PORT.
- ; REGISTER A CONTAINS THE OUTPUT DATA.
- ;
- OUT LSTDAT ;SEND DATA TO REMOTE CPU
- RET ;RETURN TO BSTAM
- ;
- ;
- MESSGE: DB CR,LF,CR,LF
- DB 'INDUSTRIAL MICROSYSTEMS SERIAL PRINTER PORT '
- DB '- ver 1.0',CR,LF,'$'
- ;
- ;
- SIGNON: PUSH B
- PUSH D
- PUSH H
- LXI D,MESSGE
- MVI C,9
- CALL 5 ;ANNOUNCE VERSION TO USER
- POP H
- POP D
- POP B
- RET
- ;
- END BEGIN