ASMB,R,L,B,C HED 6128C/6129C/6130C/6131C/6933B DVS DEV. SUBR. TO DVR70 NAM LKDVS,7 ENT DCVSL,DCVSH,DCVRS,DCVCL * ******************************************************* * * PRODUCT: 29100-16001 * ERS: A-29100-16001-1 * LISTING: A-29100-16001-2 * SOURCE: 29100-18001 * RELOC: 29100-16001 * ******************************************************* * * W PARRISH JULY 15, 1974 REV A (8.1) * * * *** UTILITY ROUTINES *** EXT IFIX,.ENTR,ERROR,ERRCD EXT ..FCM,.FSB,.FMP,.FDV,EXEC * * * *** SUBROUTINE OPTIONS *** * EXT #DCVU LOGICAL UNIT # OF DVS'S EXT #ERRU ERROR LOGICAL UNIT # EXT #DCVT * #DCVT IS THE STARTING ADDRESS * OF AN 8-WORD, DVS SUBSYSTEM CONFIGURATION TABLE * FOR POWER SUPPLIES 1 TO 8 CONTAINING * THE DECIMAL INTEGER REPRESENTATION OF * THE POWER SUPPLY TYPE. USE 0 FOR * UNASSIGNED POWER SUPPLIES. * EXAMPLE:IN A 5 POWER SUPPLY SUBSYSTEM, * UNIT #1 =6933, * UNIT #2 =6128 * UNIT #3 =6131 * UNIT #4 =6130 * UNIT #5 =6129 * * THE SYSTEM CONFIGURATION TABLE WOULD BE : * * ENT #DCVT * #DCVT DEC 6933 * DVS # 1 IS A 6933 * DEC 6128 * DVS # 2 IS A 6128 * DEC 6131 * DVS # 3 IS A 6131 * DEC 6130 * DVS # 4 IS A 6130 * DEC 6129 * DVS # 5 IS A 6129 * NOP * DVS # 6, * NOP * 7, * NOP * 8 DO NOT EXIST SKP * *** ENTRY FORMATS AND FUNCTIONS*** * * CALL DCVSH(IU,V,CL) SET DVS TO HIGH RANGE. * * CALL DCVSL(IU,V,CL) SET DVS TO LOW RANGE. * * WHERE: IU = UNIT NUMBER (INTEGER) * V = DESIRED VOLTAGE (FL.PT) * C = CURRENT LIMIT (FL.PT) * * * CALL DCVRS(IAV,ISTAT,LATCH,HSTRY) DVS READ STATUS * * WHERE : IAV = AVAILABILITY OF SUBSYSTEM * ISTAT = CURRENT LATCH STATUS FOR SUBSYSTEM * LATCH=CURRENT LATCH STATUS WORD FOR DVS'S * HSTRY=LATCH STATUS HISTORY WORD FOR DVS'S * * * CALL DCVCL CLEAR DVS SUBSYSTEM * * INITIALIZE CURRENT LATCH HISTORY TO 0 * PREVENT INTERRUPTS FROM DVS'S * * ********************************************************************* SKP * * ENTRY TO SET POWER SUPPLY TO HIGH RANGE * * TABLE OF CALL PARAMETER ADDRESSES AUNIT BSS 1 UNIT # (INTEGER) AV BSS 1 VOLTAGE (FL.PT.) ACL BSS 1 CURRENT LIMIT(FL.PT.) * DCVSH NOP ENTRY PT. FOR HIGH V RANGE JSB .ENTR FILL PARAMETER ADRS TABLE DEF AUNIT JSB GTABL GET FIRST ADDRESS OF DVS TABLE CLA STA WORD1+1 SELECT LOW V RESOLUTION LDA A50 V LIMIT ADDRESS LDB LRMFA SELECT V*200 SLENT STB MFACT V MULTIPLYING FACTOR * * LOOK UP DVS TYPE IN EXTERNAL TABLE * LDB FIRST GET ADDRESS BEFORE TABLE ADB AUNIT,I GET ADDRESS OF ENTRY LDB 1,I GET DVS TYPE SZB,RSS JMP ERR1 UNIT NUMBER NOT ASSIGNED CPA A16 LOW V-RANGE ? JMP STALM YES CPB .6128 NO,VERIFY DVS IS NOT 6128/6133 JMP ERR1 NO HIGH V-RANGE ON 6128 CPB .6933 JMP ERR1 NO HIGH V-RANGE ON 6133 CPB .6131 IF 6131, ADA .2 LIMIT IS 100 V STALM STA LIMIT LDA M8 - NO. OF ENTRIES CPB .6131 IN I-LIMIT TABLE ADA .2 (2 LESS FOR 6131) STA CLISZ * * DETERMINE APPLICABLE CURRENT LIMIT TABLE * LDA A.1 ADDRESS OF 1.0 CPB .6129 ADA .2 ADDRESS OF 5.0 CPB .6128 ADA .6 ADDRESS OF 12.5 CPB .6933 ADA .4 ADDRESS OF 15.0 STA DIVFA ADRS OF I-LIMIT DIVIDER * * PROCESS VOLTAGE PARAMETER & SET UP OUTPUT WORD1 * DLD AV,I STA VSIGN SAVE VOLTAGE SIGN SSA TAKE ABSOLUTE JSB ..FCM VALUE OF V STA VOLT STB VOLT+1 JSB .FSB DOES V EXCEED LIMIT ? LIMIT NOP PRESET WITH ADRS OF 16/50/100 SSA,RSS JMP ERR1 V REQUESTED > MAX ALLOWED LDA VOLT LDB VOLT+1 JSB .FMP MFACT NOP PRESET WITH ADRS OF 200/2000 JSB IFIX INTEGERIZE LDB VSIGN SSB NEGATIVE VOLTAGE ? CMA,INA YES- TAKE 2'S COMPLEMENT STA WORD1 SET UP OUTPUT WORD1 * * PROCESS CURRENT LIMIT * DLD ACL,I JSB .FDV DIVFA NOP STUFFED WITH ADRS OF 1/5/15 JSB IFIX INTEGERIZE SSA JMP ERR1 CURRENT LIMIT IS NEGATIVE CMA,INA STA SAVEA CLA LDB CLADD INITIALIZE POINTER TO STB TEMPA CURRENT LIMIT TABLE ENTRIES CLTBL LDB SAVEA GET NEXT CL TABLE VALUE ADB TEMPA,I SSB,RSS JMP CLFND CL FOUND INA ISZ TEMPA ISZ CLISZ PRESET TO -8 OR -6 JMP CLTBL JMP ERR1 CL > ALLOWABLE MAX * * FORMAT OUTPUT WORD1+1 * CLFND ALF,RAR LINE UP CL BITS IOR WORD1+1 BRING IN RESOLUTION BIT LDB M9 ADB AUNIT,I VERIFY VALIDITY OF UNIT # SSB,RSS JMP ERR1 UNIT # > 8 ADB .8 SSB JMP ERR1 UNIT # < 1 ADA 1 FORMAT STA WORD1+1 DVS ADDRESS SKP * * OUTPUT DATA BY CALLING DVR70 THRU THE REAL TIME EXECUTIVE * JSB EXEC CALL RTE DEF *+5 DEF .2 WRITE REQUEST DEF LUDVS LU OF DVS SUBSYSTEM DEF WORD1 OUTPUT BUFFER DEF .2 BUFFER LENGTH JMP DCVSH,I *** NORMAL EXIT *** SKP * * ENTRY TO SET POWER SUPPLY TO LOW RANGE * * TABLE OF CALL PARAMETER ADDRESSES BUNIT BSS 1 UNIT # (INTEGER) BV BSS 1 VOLTAGE(FL.PT.) BCL BSS 1 CURRENT LIMIT(FT.PT.) * DCVSL NOP ENTRY PT. FOR LOW V-RANGE JSB .ENTR FILL PARAMETER ADRS TABLE DEF BUNIT JSB GTABL GET FIRST ADDRESS OF DVS TABLE * * MOVE PRMTR ADRS & RETURN ADRS TO TABLE FOR DCVSH * LDA BUNIT STA AUNIT LDA BV STA AV LDA BCL STA ACL LDA DCVSL STA DCVSH * * CHOOSE HIGH V RESOLUTION & LOW V LIMIT * LDA B100 STA WORD1+1 LDB HRMFA SELECT V*2000 LDA A16 VOLTAGE LIMIT = 16.383 V JMP SLENT GO & EXECUTE DCVSH CODE SKP * * ERROR PROCESSING * ERR1 JSB ERROR PRINT ERROR MESSAGE ON SYS. TTY DEF *+5 DEF ONE DEF A479E DEF #ERRU DEF DCVSH JMP DCVSH,I * * GET FIRST ADDRESS OF DVS TABLE (CHAIN THROUGH INDIRECTS) * GTABL NOP CLA STA ERRCD CLEAR ERROR FLAG! LDA CTABL SSA,RSS JMP *+4 AND M7777 LDA 0,I JMP *-4 CMA,INA NOTE THAT FIRST IS ACTUALLY THE ADDRESS CMA BEFORE THE START OF THE TABLE. STA FIRST JMP GTABL,I M7777 OCT 77777 SKP * * ENTRY TO SET ALL DVS'S TO ZERO, * PREVENT INTERRUPTS & ERASE CURRENT LATCH HISTORY * DCVCL NOP * JSB .ENTR DEF DCVCL JSB GTABL GET FIRST ADDRESS OF DVS TABLE * SET ALL DVS'S IN SUBSYSTEM TO 0 VOLTS LDB B77 WILL BE BUMPED TO B100 FOR 1ST DVS STB ZERO+1 LDA FIRST STA WORD1 NEXT ISZ WORD1 ADDRESS OF DVS TYPE LDB WORD1,I SZB,RSS IS THIS THE LAST DVS JMP CLEAR ISZ ZERO+1 INCREMENT DVS SUBCHANNEL ADDRESS LDA ZERO+1 IS THIS CPA B110 THE 9TH DVS? JMP CLEAR YES * PROGRAM DVS'S TO 0 VOLTS JSB EXEC DEF *+5 DEF .2 DEF LUDVS DEF ZERO DEF .2 JMP NEXT * CLEAR STATUS WORDS & PREVENT INTERRUPTS FROM DVS CLEAR JSB EXEC DEF *+3 DEF .3 CONTROL REQUEST DEF LUDVS JMP DCVCL,I RETURN SKP * * ENTRY TO RETURN DVS STATUS INFORMATION * * TABLE OF RETURNED CALL PARAMETER ADDRESSES IAV BSS 1 ISTAT BSS 1 LATCH BSS 1 HSTRY BSS 1 * DCVRS NOP JSB .ENTR DEF IAV CLA STA ERRCD CLEAR ERROR FLAG * GET STATUS FROM WORD 5 OF DVS EQT JSB EXEC DEF *+4 DEF .13 STATUS REQUEST DEF LUDVS LU OF DVS SUBSYSTEM DEF ISTAT,I * GET AVAILABILITY BITS INTO LOWER 2 BITS OF IAV LDA ISTAT,I GET BITS 14 & 15 RAL,RAL AND .3 STA IAV,I SZA IF DVS SYSTEM IS NOT READY, RETURN JMP DCVRS,I WITH ONLY AVAILABILITY STATUS * GET HARDWARE STATUS WORD & HISTORY FROM DVS CARD JSB EXEC DEF *+5 DEF ONE READ CALL DEF LUDVS LU OF DVS SUBSYSTEM DEF STAT READ BUFFER DEF .2 BUFFER LENGTH * GET STATUS FROM WORD 5 OF DVS EQT JSB EXEC DEF *+4 DEF .13 STATUS REQUEST DEF LUDVS LU OF DVS SUBSYSTEM DEF ISTAT,I * RETURN STATUS LDA ISTAT,I AND .3 STA ISTAT,I LDA STAT AND B377 MASK OFF LOWER 8 BITS STA LATCH,I RETURN LATCH STATUS LDA STAT+1 AND B377 MASK OFF LOWER 8 BITS STA HSTRY,I RETURN LATCH HISTORY JMP DCVRS,I RETURN!! SKP * * CONSTANTS * .16 DEC 16.383502 VOLTAGE LIMIT TABLE .50 DEC 50.00001,100.00001 .1 DEC 1.,5.,15.,12.5 *** THE FOLLOWING CONSTANTS MUST NOT BE REARRANGED * IE. DEC 20,50,70,100,200,500,700,1000 *** CLMT DEC 20 CURRENT LIMIT TABLE DEC 50 DEC 70 DEC 100 DEC 200 DEC 500 DEC 700 DEC 1000 *** *** THE ABOVE CONSTANTS MUST NOT BE REARRANGED * IE. DEC 20,50,70,100,200,500,700,1000 * CLADD DEF CLMT ADDR OF FIRST ENTRY IN CURR TBL HRMFA DEF HRMF ADDRESS OF HGH RES MULT FACT HRMF DEC 2000.002 HGH RES MULT FACT LRMFA DEF LRMF ADDRESS OF LOW RES MULT FACT LRMF DEC 200. LOW RES MULT FACT A.1 DEF .1 A50 DEF .50 A16 DEF .16 ONE DEC 1 .2 DEC 2 .3 DEC 3 .4 DEC 4 .6 DEC 6 .8 DEC 8 .13 DEC 13 B77 OCT 77 B100 OCT 100 B110 OCT 110 B377 OCT 377 LOWER 8 BITS M8 DEC -8 M9 DEC -9 .6128 DEC 6128 .6129 DEC 6129 .6131 DEC 6131 .6933 DEC 6933 ZERO DEC 0.0 WORD1 BSS 2 OUTPUT BUFFER * * EQUATED STORAGE * SAVEA EQU MFACT TEMPA EQU DIVFA VSIGN EQU BUNIT CLISZ EQU DCVCL ISZ FOR CURRENT LIMIT TABLE VOLT EQU BV NCNT EQU ISTAT LUDVS EQU #DCVU STAT EQU WORD1 * DEFINE ERROR PRINTOUT MNEMONIC A479E DEC 3 ASC 2,DCV FIRST BSS 1 CTABL DEF #DCVT * * END OF DRIVER LINK * END