ASMB,R,L,C HED "KYBRD" ROUTINE TO CHECK IF LU IS A TERMINAL 4-78 (DLB) NAM KYBRD,6 PRE-REL 780509 (DLB) RTE-IV ENT KYBRD EXT .ENTP,$RNTB,.XLA,$LIBR,$LIBX SPC 1 A EQU 0 B EQU 1 EQTA EQU 1650B DRT EQU 1652B LUMAX EQU 1653B SPC 1 * PURPOSE: * THIS ROUTINE CHECKS IF THE GIVEN LU IS AN INTERACTIVE DEVICE * AND IT IS UP AND THEORITICALLY OPERABLE. * * CALLED: * * JSB KYBRD JSB KYBRD * DEF *+2 DEF *+3 * DEF LU DEF LU * DEF LULOK * * WHERE: * * LU = LOGICAL UNIT NUMBER TO TEST (MAY INCLUDE CONWD BITS) * LULOK = OPTIONAL PARAMETER THAT PASSES BACK THE LU LOCK * OVERRIDE WORD THAT MAY BE PASSED IN THE EXEC CALL. * * EXIT: * A-REG = 6 BIT LU >> PASSED LU IS A TERMINAL THAT IS NOT DOWN * E-REG = 0 >> LU IS OK * ERRORS: * A-REG = -2 >> THE LU OR EQT IS DOWN * A-REG = -1 >> THE PASSED LU IS NOT A LEGAL TERMINAL * E-REG = 1 >> ERROR SPC 1 ICNWD NOP LOGICAL UNIT TO TEST RNUMB DEF DFCLU RETURNED LU-LOCK PUSHTHRU KYBRD NOP ENTRY POINT JSB $LIBR MAKE PRIVLEDGE TO AVOID REAL NOP TIME CHANGES TO TABLES JSB .ENTP GET PARAMETER ADDRESSES DEF ICNWD LDA ICNWD,I GET THE LOGICAL UNIT NUMBER AND O77 MASK OFF CONTROL BITS STA ICNWD SAVE FOR EXIT LDB LUMAX GET HIGHEST LU NUMBER CMB,CLE NEGATE - 1 ADB A CHECK IF < HIGHEST + 1 CMA,INA SET E-REG IF LU = 0 CMA,SEZ CHECK IF 0>LU->LUMAX JMP LUERR YES, IGNORE ADA DRT TO CHECK IF LEGAL TERMINAL DEVICE STA DFCLU SAVE THE ADDRESS OF THE LU ENTRY ADA LUMAX AND INDEX INTO 2ND HALF OF TABLE LDA A,I TO GET UP/DOWN BIT SSA CHECK IF LU IS UP? JMP DNERR NO LU IS DOWN--FORGET IT LDA DFCLU,I GET THE LU ENTRY AND O77 GET THE EQT ENTRY CMA,INA,SZA,RSS CHECK IF EQT = 0? JMP LUERR YES, IGNORE CMA SUBTRACT ONE MPY D15 INDEX INTO THE EQT TABLE ADA EQTA ADD IN START ADDRESS ADA O4 BUMP EQUIPMENT STATUS/TYPE CODE LDA A,I AND GET THE VALUE RAL,CLE,ELA POSITION DOWN BIT TO E-REG CLB,SEZ CHECK IF EQT IS DOWN? JMP DNERR YES, EQT DOWN--FORGET IT LSL 6 PUT EQUIPMENT TYPE CODE IN B-REG LDA DFCLU,I GET THE SUBCH/LOCK/EQT# AGAIN AND OM4K MASK TO JUST SUBCHANNEL BITS CPB O5 CHECK IF DRIVER TYPE IS 05? LDB A YES, SUBCHANNEL BITS MUST = 0 SZB NO, IS DRIVER = DV.00? JMP LUERR NOT LEGAL DRIVER/SUBCHANNEL XOR DFCLU,I NOW GET LOCK/EQT# BITS LSL 10 PUT LOCK BITS IN B-REG STB RNUMB,I SAVE FOR LATER CLE,SZB,RSS CHECK IF ANY? JMP KYBR1 NO, LEAVE AT ZERO LDA DRNTB RTE-III GENERATOR SOMEHOW LOST RSS ITS ACT IN THE DSD PROCESS LDA A,I GET NEXT LEVEL RAL,CLE,SLA,ERA CHECK AND STRIP INDIRECT BIT JMP *-2 SET, STRIP TO NEXT LEVEL ADB A INDEX INTO TABLE JSB .XLA AND GET THE CONTENTS DEF B,I AND O377 MASK TO JUST LO BITS ALF,CLE,ALF AND POSITION IOR RNUMB,I MERGE IN LOCK FLAG BITS STA RNUMB,I AND SAVE FOR I/O PUSH THRU KYBR1 LDA ICNWD EXIT OK A-REG = LU KYBR2 LDB DFTMP GET A DEF TO LOCAL TEMP STB RNUMB SAVE FOR NEXT CALLER JSB $LIBX NOW EXIT DEF KYBRD SPC 1 LUERR CLA,RSS EXIT A-REG = -1 DNERR CLA,INA EXIT A-REG = -2 CMA,CCE JMP KYBR2 AND EXIT O377 OCT 377 O4 OCT 4 O5 OCT 5 D15 DEC 15 O77 OCT 77 OM4K OCT -4000 DFTMP DEF DFCLU USE INPLACE OF RNUMB DFCLU NOP ADDRESS OF LU INTO THE DRT DRNTB DEF $RNTB+0 DIRECT ADDRESS OF RESOURCE NUMB TABLE END