C PROGRAM GETDEVICE.FT C -------------- C C FUNCTION GETDEVICE(IDEVICE) C C C C C C P.LEMKIN C NATIONAL INSTUTUTES OF HEALTH C BETHESDA, MD 20014 C C C SEPT 14, 1976 C C PURPOSE C ------- C MAP THE DEVICE NUMBER IDEVNUM INTO THE 4 CHARACTE C 6-BIT (2A2) DEVICE NAME. FIRST SET UP THE C ASSOCIATIVE NAME SPACE BY INQUIRING THE NAMES OF ALL C POSSIBLE DEVICES AND THEN ASSOCIATING THEM WITH THE C CORRESPONDING NUMBER. THEN DEVICES WHICH DON'T EXIST C HAVE VALUE 0 ELSE THE REAL DEVICE NUMBER. THEN SEARCH C THE ASSOC TABLE FOR IDEVNUM AND REPORT BACK THE ASCII C STRING IN DEVICE. C C RETURN THE NULL DEVICE IF NOT FOUND. C C S OPDEF TADI 1400 S OPDEF DCAI 3400 C DIMENSION NUMBER(33) C C C C [GD.1] LOCK THE USR IN CORE SINCE DO LOTS OF INQUIRES JDEVICE=IDEVICE GETDEVICE=0.0 S CPAGE 4 S 6212 S JMS 7700 /USR S 10 /USRIN C C C [GD.2] SETUP THE DNAME TABLE POINTER OF DEVICE NAMES S CLA CMA S TAD PDNTAB S DCA 11 C C C C [GD.3] DO INQUIRE ON EACH OF THE 32 DEVICE NAMES C IF NOT FOUND THEN NUMBER(I)<==0 ELSE DEV #; DO 1850 I=1,32 IA=0 S TAD I 11 /GET THE 1ST 2 CHARS S DCA IQ1 S TAD I 11 /GET THE 2ND 2 CHARACTERS S DCA IQ1# C S CPAGE 11 S 6212 /CIF 10 S JMS 200 /USR IN CORE S 12 /INQUIRE S IQ1, 0 S 0 /WILL CONTAIN THE DEVICE NUMBER IF EXISTS S 0 S JMP \1850 /WILL BE ZERO C S TAD IQ1# /DEVICE NUMBER S DCA \IA 1850 NUMBER(I)=IA C C C [GD.4] RELEASE THE USR S CPAGE 4 S 6212 S JMS 200 S 11 /USROUT C C C [GD.5] NOW MATCH IDEVNUM WITH NUMBER[1:32]. S CLA CMA /RESET THE POINTER S TAD PDNTAB S DCA 11 C DO 100 I=1,32 C C COPY THE DEV NAME IN CASE MATCH IN PTR S TAD I 11 S DCA \GETDEVICE S TAD I 11 S DCA \GETDEVICE# C S CLA CMA S TAD \I S TAD PNUMBER S DCA 20 S TADI 20 S CIA S TAD \JDEVICE /IN FIELD 1 S SNA CLA S JMP \1800 /FOUND ONE RETURN WITH IT IN GETDEVICE. 100 CONTINUE C WRITE(1,200)JDEVICE 200 FORMAT('ILLEGAL GETDEV#',I5) GETDEVICE=0.0 1800 RETURN C C C C C C ****POINTERS**** S PNUMBER, \NUMBER S PDNTAB, DNTAB /POINTER C C C CPAGE 110 S PAGE S DNTAB, BLOCK 0 /DEVICE NAME TABLE C S 0424 /DEVICE DTA1 S 0161 S 0424 /DEVICE DTA2 S 0162 S 0424 /DEVICE DTA3 S 0163 S 0424 /DEVICE DTA4 S 0164 S 0424 /DEVICE DTA5 S 0165 S 0424 /DEVICE DTA6 S 0166 S 0424 /DEVICE DTA7 S 0167 S 0424 /DEVICE DTA0 S 0160 S 2331 /DEVICE SYS S 2300 S 0423 /DEVICE DSK S 1300 S 2424 /DEVICE TTY S 3100 S 2024 /DEVICE PTP S 2000 S 1524 /DEVICE MTA0 S 0160 S 1524 /DEVICE MTA1 S 0161 S 1420 /DEVICE LPT S 2400 S 0423 /DEVICE DSKA S 1301 S 0423 /DEVICE DSKB S 1302 S 0423 /DEVICE DSKC S 1303 S 0423 /DEVICE DSKD S 1304 S 0423 /DEVICE DSKE S 1305 S 0423 /DEVICE DSKF S 1306 S 0423 /DEVICE DSKG S 1307 S 0423 /DEVICE DSKH S 1310 S 1023 /DEVICE HSP S 2000 S 2213 /DEVICE RKA0 S 0160 S 2213 /DEVICE RKB0 S 0260 S 2213 /DEVICE RKA1 S 0161 S 2213 /DEVICE RKB1 S 0261 S 2213 /DEVICE RKA2 S 0162 S 2213 /DEVICE RKB2 S 0262 S 2213 /DEVICE RKA3 S 0163 S 2213 /DEVICE RKB3 S 0263 C C END