ASMB,R,B,L,C HED 12604B DSI DEVICE SUBROUTINE TO RTE DRIVER DVR40 NAM 12604,7 09601-16011 REV. A * ENT DSI *********************************************************** * * ERS: 09601-16011-1 * LISTING: 09601-16011-2 * SOURCE TAPE: 09601-18011 * RELOC. TAPE: 09601-16011 * *********************************************************** * * D. BOLIERE 3 APRIL 74 * B. PARRISH 22 AUG 74 REV A (1.1) * * *****EXTERNAL UTILITY ROUTINES USED***** * * ***SATISFIED BY RTE SYSTEM*** EXT EXEC * ***SATISFIED BY DEV. SUBR LIBRARY*** EXT CONV,ERROR,ERRCD * ***SATISFIED BY FLOATING PT. RELOCATABLE LIB.*** EXT FLOAT,.DST,.ENTR * *** SATISFIED BY INSTRUMENT TAPE CONSTANTS *** EXT #DSIT,#ERRU * * *****CONFIGURATION INFORMATION***** * * ENTRY FOR BASIC BRANCH AND MNEMONIC TABLE GENERATOR: * * DSI(I,I,R,R),SUB=DSI * * *****ENTRY FORMAT AND FUNCTION***** * * DSI(LU,N,V,F) * * U = DSI CARD UNIT NO. (A NEG UNIT# CAUSES NO ENCODE * WHEN USED WITH DVR40 P/N 29100-60041) * N = NUMBER OF DIGITS TO BE CONVERTED (0,6,7,8) * V = * IF N=0, SECOND WORD READ IN BCD FORMAT * N#0, VALUE OF SIX MOST SIGNIFICANT DATA DIGITS * F = * IF N=0, FIRST WORD READ IN BCD FORMAT * N=6, FUNCTION DIGIT * N=7 OR 8, LEAST SIGNIFICANT DATA DIGITS * * *****DSI ERROR MESSAGES***** * * ERROR 1: PARAMETER ERROR * *********************************************************** SKP * * PROGRAM MAINFLOW * UNIT NOP NDIG NOP VALU NOP FUNC NOP * DSI NOP ***ENTRY*** JSB .ENTR FETCH PARAM ADDRESSES DEF UNIT CLA STA ERRCD CLEAR ERROR CODE STA ERCNT CLEAR ERROR COUNT STA FLG7 CLEAR 7 DIGIT FLAG STA ENCFG CLEAR ENCODE FLAG LDB UNIT,I SSB JSB NENC NEG UNIT# - CH SIGN & SET ENCFG=-1 SZB,RSS JMP ERR1 ZERO UNIT NUMBER, ERROR JSB GETLU GET LOGICAL UNIT # CMA,INA SSA,RSS LOG UNIT =< 0 ? JMP ERR1 YES. PARM ERROR! JSB EXEC NO. READ FROM DEVICE DEF *+5 DEF .1 DEF LUN DEF LSD DEF .3 * BCD0 LDA NDIG,I FETCH NUM OF DIGITS TO CONVERT SZA =0: BCD OUTPUT? JMP DIGT6 NO. NEXT CHECK LDA MSD YES. SAVE 2ND BCD WORD JSB FLOAT JSB .DST DEF VALU,I LDA LSD SAVE 1ST BCD WORD JSB FLOAT JSB .DST DEF FUNC,I JMP DSI,I ****BCD OUTPUT EXIT**** * DIGT6 CMA,INA SET UP CTR FOR NO. OF DIGITS ADA .5 STA NDIGI LDA MSD LDB LSD ISZ NDIGI 6 DIGITS? JMP DIGT7 NO. NEXT CHECK ALF,ALF YES. FUNC TO BITS 0-3 AND B17 MASK AND STORE FUNC STA FTEMP JMP FINIS * DIGT7 ISZ NDIGI 7 DIGITS? JMP DIGT8 NO. NEXT CHECK RRR 4 YES. SET UP 6 DATA DIGITS ISZ FLG7 SET FLG7 TO 1 JMP CONT DIGT8 ISZ NDIGI 8 DIGITS? JMP ERR1 NO. PARM ERR! RRR 8 YES. SET UP 6 DATA DIGITS CONT STB LSD STORE 4 LS DATA DIGITS CLB CPB FLG7 8 DIGITS? RRL 4 SHIFT 2 OVF DIGITS INTO B RRL 4 SHIFT 1 OVF DIGIT INTO B STB FTEMP STORE OVF DIGIT(S) ALF,ALF GET 2 MS DATA DIG IN BITS 0-7 CLB,INB CPB FLG7 7 DIGITS? ALF YES. AND B377 MASK OFF 2 MS DATA DIGITS ADA B400 SET FUNC CODE TO 1 FOR CONV STA MSD STORE 2 MS DIGITS & FUNC * FINIS JSB CONV CONV DIGITS TO REAL DEF *+2 DEF LSD JSB .DST DEF VALU,I STORE CONVERTED VALUE IN 'V' LDB B400 LDA FTEMP LOAD FUNC/1 OR 2 OVF DIGITS JSB .DST DEF LSD JSB CONV CONV TO REAL DEF *+2 DEF LSD JSB .DST STORE IN 'F' DEF FUNC,I JMP DSI,I ****CONVERSION EXIT**** SKP * * GET LOGICAL UNIT NUMBER FROM TABLE * GETLU NOP ENTER WITH UNIT # IN B REG LDA CTABL SSA,RSS I BIT SET? JMP *+4 NO AND M7777 YES - MASK ADDRESS LDA 0,I GET CONTENTS JMP *-4 CHECK AGAIN ADA 1 ADD UNIT NUMBER CMA,INA CMA SUBTRACT 1 LDA 0,I GET UNIT # STA LUN STORE IT. JMP GETLU,I RETURN NENC NOP NO ENCODE CMB,INB MAKE UNIT # POSITIVE CLA CMA STA ENCFG ENCODE FLAG = -1 JMP NENC,I * * ERROR REPORTING * ERR1 ISZ ERCNT JSB ERROR DEF *+5 DEF ERCNT DEF ERMNC DEF #ERRU DEF DSI JMP DSI,I SKP * * CONSTANTS * .1 DEC 1 .3 DEC 3 .5 DEC 5 B17 OCT 17 B377 OCT 377 B400 OCT 400 M7777 OCT 77777 ERMNC DEC 3 ASC 2,DSI CTABL DEF #DSIT * * STORAGE * ERCNT NOP ERROR COUNT LUN NOP LOGICAL UNIT NO. * OUTPUT BUFFER ** LSD NOP DATA BUFFER MSD NOP ENCFG NOP ENCODE FLAG * END OUTPUT BUFFER ** FLG7 NOP 7 DIGIT FLAG NDIGI NOP NO. OF RTN DIGITS FTEMP NOP TEMP FUNC * END