C FILE:BMCMN.FT C --------------- C C P. LEMKIN C NCI C BETHESDA, MD 20014 C C MARCH 29, 1977 C FEB 4, 1977 /ADD COMMENT AT ITMPSTK C JAN 20, 1977 C SEPT 30, 1976 C SEPT 20, 1976 C SEPT 19, 1976 C SEPT 15, 1976 C SEPT 11, 1976 C SEPT 1, 1976 C AUG 31, 1976 C AUG 17, 1976 C AUG 26, 1976 - LEMKIN C 18 JUNE 1976 C 14 JUNE 1976: CREATED FROM DDTCMN.FT, VERSION JAN 5, 1976 C C C C ****************************************** C * C O M M O N A R E A * C ****************************************** C *LSOF COMMON IBUF1,IBUF2,IBUF3,IBUF4 DIMENSION IBUF1(256),IBUF2(256),IBUF3(256),IBUF4(256) C IBUF1 - GENERAL PURPOSE I/O BUFFER #1 C IBUF2 - GENERAL PURPOSE I/O BUFFER #2 C IBUF3 - GENERAL PURPOSE I/O BUFFER #3 C IBUF4 - GENERAL PURPOSE I/O BUFFER #4 C C COMMON IPSTK,IPTOP,IP DIMENSION IPSTK(25) C IPSTK(IPTOP) - IS THE WORKING STACK C IPTOP - TOP OF THE IPSTK DURING PARSE C IP - CURRENT POINTER DURING DINTRP. C COMMON IOPSTK,IOPTOP DIMENSION IOPSTK(15) C IOPSTK(IOPTOP) - IS THE OPERATOR STACK FOR PARSING C IOPTOP - TOP OF THE IOPSTK C C COMMON ISWSTK,ISWTOP C C ***** NOTE: 2/2/77 - ITMPSTK[1:26] IS THE BMON2 Q-REGISTERS A:Z**** COMMON ITMPSTK,ITMPTOP DIMENSION ITMPSTK(26) C ITMPSTK(ITMPTOP) - TEMPORARY VARIABLE AND NUMBER C STACK USED FOR GARBAGE COLLECTION C IN DINTRP.FT. C ITMPTOP - TOP OF ITMPSTK. C C C COMMON IA,IB,IC,FA,FB,FC DIMENSION IA(2),IB(2),IC(2) C IA - LEFTMOST BINARY ARGUMENT IN "BINARG" C IB - RIGHTMOST BINARY ARGUMENT IN "BINARG" C IC - RESULT OF OPR(IA,IB) WHEN D.P. USED C FA - FLOATING POINT CONVERSION OF IA C FB - FLOATING POINT CONVERSION OF IB C FC - RESULT OF OPR(IA,IB). C C COMMON ICLK,JCLK,KCLK COMMON DDTGSTATUS C ICLK - LSW OF TRIPLE PRECISION 200 HZ CLOCK. C JCLK - MIDDLE WORD OF TRIPLE PRECISION 200 HZ CLOCK C KCLK - MSW OF TRIPLE PRECISION 200 HZ CLOCK. C DDTGSTATUS - 36 BIT STATUS REGISTER FOR DDTG C BIT C --- C 0 - "/" TURNS ON, "AGETLINE" TURNS OFF C DETERMINES ENTRY TO "GETLINE". C 1 - LOCATION IS OPENED (1 FOR ON). C 2 - DO NOT INTERPRET THE STACK (**PARSER C DEBUGGER**) (1 FOR ON). C 3 - ENABLE DEBUG PRINTOUTS (1 FOR ON) C 4 - DDTG IS TO BE STARTED AT REENTER ADDRESS C (1 FOR ON). C 5 - DISABLE ALL BREAKS EXCEPT "CR" IN GETLINE C 6 - SUBMITT DDTG COMMAND FROM 6-BIT C SPECIAL SEGMENT VIA DUSR. C 7 - EXECUTING CHAIN (VIA RDDTG.SV) COMMAND. C C COMMON KURPTR,MODGP DIMENSION KURPTR(2) C KURPTR - CURRENT DDTG DATA SPACE POINTR ADDRESS C MODGP - GETPUT FILE SPACE NAME, SET BY "FILESPEC" C C COMMON DEVICE,SDEVICE,IDEVICE,ISDEVICE COMMON FILE,SFILE,EXT,SEXT,ISVARLST,IFILTOP,ISVTOP DIMENSION SDEVICE(3),ISDEVICE(3),SFILE(3),SEXT(3),ISVARLST(5) C DEVICE - A4 DEVICE NAME FROM "FILESPEC" C SDEVICE - EXTENSION OF DEVICE C C IDEVICE - DEVICE NUMBER FROM "FILESPEC" C ISDEVICE - EXTENSION OF IDEVICE C C FILE - A6 FILE NAME FROM "FILESPEC" C SFILE - EXTENSION OF FILE C C EXT - A2 FILE EXTENSION FROM "FILESPEC" C SEXT - EXTENSION OF EXT C C ISVARLST - VARIABLE AND NUMBER LIST SET BY "FILESPEC" C IFILTOP - TOP OF DEVICE, IDEVICE, FILE AND EXT STACKS C ISVTOP - TOP OF ISVARLST STACK C C COMMON IOUTSPOOL, INSPOOL, LCNT C IOUTSPOOL - SPOOL OUTPUT TO MTA1: (0=OFF, 1=ON) C INSPOOL - SPOOL INPUT FROM "$EXECUTE " C (0=OFF, 1=ON) C LCNT - CURRENT LINE NUMBER OFOR $EX INPUT FILES. C C COMMON MODEN,MODED,MODEE,MODEP,MODSIX,MODSYM,MODET COMMON MODEC,MODBM,MODEM C MODEN - OCTAL (0), DECIMAL (+1), C BCD (-1). C MODED - DATA SPACE MODE C GPPOPR=1 C PM=2 C GR=3 C I1=4 C I2=5 C I3=6 C BM=7 C 8E=8 C 8EMRI=9 C MODEE - TTY ECHO (ON=0, OFF=1) C MODEP - 8E DATA SPACE PROTECT (0), C UNPROTECT (1). C MODSIX - SIXBIT PRINT SWITCH FOR OPEN (0N=1,0=OFF) C MODSYM - SYMBOLIC PRINT SWITCH FOR OPEN (0N=1,0=OFF) C MODET - SWITCH FOR THRESHOLD MODULES: C -1 FOR THRESHOLDS A AND B OF 1-D DETECTOR C 0 FOR THRESHOLDS B & C STANDARD DETECTOR C +1 FOR THRESHOLDS 3 & 4 DIGITIZER-DETECTOR C MODEC - SWITCH TO ASK FOR/PRINT COMMENT FIELDS IN C GETPUT FILES. C MODBM - BUFFER MEMORY NUMBER LOADED BY FILESPEC C AND USED IN GETPUT BM TRANSFERS. C MODEM - MANUAL STAGE CONTROL ENABLE C 0 - TO DISABLE C 1- TO ENABLE C C COMMON KODTN,KODTM,KBRK,KURBRK DIMENSION KODTN(4),KBRK(8,7) C KODTN - 1ST ODTSIM ARG C KODTM - 2ND ODTSIM ARG C KBRK - BREAK TABLE WHERE C KBRK[I,1:2] = BREAK ADDRESS C KBRK[I,3] = DATA SPACE OF BREAK (0 IF UNUSED) C KBRK[I,4:7] = CONTENTS OF BREAK ADDRESS C BEFORE BREAK. C PDP8E IN (*,5) AND C PM IN (*,4:7) C KURBRK - INDEX OF LAST BREAK POINT (FOR CONT). C C COMMON IERRNUM C IERRNUM - ERROR NUMBER FOR ERROR ROUTINE IN DDTG C IT IS SET IN VARIOUS PLACES WHICH C REPORT BACK TO DDTG. C C COMMON MDPDATA,MSLOW,MFAST COMMON MACTIVE,MTRWRD,MTHSPWD,MTRNUM,MTROP,MLOVAL,MHIVAL COMMON MVAL1,MVAL2 C DIMENSION MDPDATA(8,12) C NOTE: ALL POSITIONS ARE 24 BIT D.P. EAE VARIABLES, C WITH THE FOLLOWING FORMAT: C C FOR MOTOR NUMBER "*" (=1 THRU 12), C C MDPDATA (1,*)=LOWER LIMIT (LOW ORDER) C (2,*)=LOWER LIMIT (HIGH ORDER) C (3,*)=UPPER LIMIT (LOW ORDER) C (4,*)=UPPER LIMIT (HIGH ORDER) C (5,*)=DESIRED POSITION (LOW) C (6,*)=DESIRED POSITION (HIGH) C (7,*)=CURRENT POSTITION (LOW) C (8,*)=CURRENT POSITION (HIGH) C C NOTE:FIRST SUBSCRIPT ODD = LOW ORDER D.P. WORD C FIRST SUBSCRIPT EVEN = HIGH ORDER WORD C C C THE MOTORS ARE AS FOLLOWS: C C MTRNUM MOTOR C ------ ----- C 1 WAVELENGTH (ALIAS FREQUENCY) C 2 DENSITY (ALIAS INTENSITY) C 3 ZOOM C 4 Z (FOCUS) C 5 Y (STAGE) C 6 X (STAGE) C 7 THRESHOLD #1 C 8 THRESHOLD #2 C 9 SPARE 1 C 10 SPARE 2 C 11 NOT USED C 12 NOT USED C C DIMENSION MSLOW(12) DIMENSION MFAST(12) C C MSLOW(*) - THE SLOW (NORMAL) MOTOR SPEED FOR EACH OF C THE ABOVE MOTORS. C C MFAST(*) - THE FAST MOTOR RATE USED WHEN THE SPEED C BIT IS SET FOR THE GIVEN MOTOR. C C C MACTIVE - BITS (CORRESPONDING TO THE ABOVE TABLE) C WHICH ARE SET IN MOTORS AND MOVESTAGE C TO CAUSE THE CURRENT/DESIRE TO BE C COMPARED IN MVMTR. C C MTRWRD - THE + & - BIT PATTERN FOR MOTORS 1 THRU 6 C ABOVE REPRESENTING A POSITIVE OR NEGATIVE C MOVEMENT OF THE CONTROLLING SWITCH. IT IS C ASSEMBLED BY MANUAL AND IS USED BY MOTORS C TO CHANGE DESIRE. THE EVEN BITS (0,2,4,...10) C ARE THE + BITS (FOR MOTORS 1,2,...6), AND THE C ODD BITS (1,3,...11) ARE THE - BITS. C C MTHSPWD - SAME AS MTRWRD FOR MOTORS 7 THRU 12 C C MTRNUM - AN INDEX FROM 1 TO 12 CORRESPONDING TO THE C NUMBER OF THE MOTOR BEING TESTED. IT IS USED C BY MANUAL TO PASS THE MOTOR NUMBER TO MOTORS. C C MTROP - AN INDEX FROM 1 TO 4 CORRESPONDING TO THE C OPERATION TO BE PERFORMED BY MOTORS: C C MTROP OPERATION C ----- --------- C 1 ADD 1 TO DESIRE C 2 SUBTRACT 1 FROM DESIRE C 3 ADD "VALUE" TO DESIRE C 4 SET DESIRE TO "VALUE" C C MHIVAL - HI-ORDER WORD OF "VALUE" C MLOVAL - LO-ORDER WORD OF "VALUE" C C C MVAL1 - INITIAL VALUE OF FIRST THRESHOLD C MVLA2 - INITIAL VALUE OF SECOND THRESHOLD C C COMMON KOCT DIMENSION KOCT(8) C KOCT - D.P. OCTAL ARRAY USED FOR OCTAL I/O WITH C SUBROUTINE OCT.FT. C C COMMON CURSYM,IVAL,ITYPE,INDEX DIMENSION IVAL(2) C CURSYM - CURRENT A6 SYMBOL NAME C IVAL - D.P. SYMBOL'S VALUE C ITYPE - SYMBOL'S TYPE C INDEX - SYMBOL'S INDEX C C COMMON LINE,ITTYP,LINEPT DIMENSION LINE(80) C LINE(ITTYP) - GETLINE TTY INPUT LINE BUFFER C ITTYP - POINTER TO LAST CHAR IN LINE BUFFER C LINEPT - CURRENT POINTER TO LINE IN THE C DDTG "PARSE" SUBROUTINE. C C COMMON IX,IY,IZ,ICHAN,IX1,IY1,IX2,IY2 C IX - SUBROUTINE GETPUT/DOAUX X ARG C IY - SUBROUTINE GETPUT/DOAUX Y ARG C IZ - SUBROUTINE GETPUT/DOAUX Z ARG C ICHAN - SUBROUTINE "SAMPLE" CHANNEL NUMBER C IX1 - LOWER VECTOR X POINT. C IY1 - LOWER VECTOR Y POINT. C IX2 - UPPER VECTOR X POINT. C IY2 - UPPER VECTOR Y POINT. C C COMMON ICMPSYM C ICMPSYM - THE STARTING BLOCK # OF SYS:CMPSYM.DA C THE SYMBOL TABLE FILE. C C COMMON LSDUMP,LSNEW,LSMERGE COMMON LSSAVSYM,LSNOVEC,LSFILL COMMON LSUMSK,LSFREESTORE,LSPAL,LSHBYT,LSUFRM,LSUCLASS COMMON LSNUM DIMENSION LSMERGE(4) DIMENSION LSFREESTORE(2) DIMENSION LSFILL(3) DIMENSION LSUCLASS(2) DIMENSION LSNUM(2) C C LOGICAL DDTG SWITCHES C --------------------- C LSDUMP - 1 TO DUMP DATA. C C LSNEW - 0 TO USE OLD ADDRESS, C 1 TO USE NEW ADDRESS IN THE STACK. C C LSMERGE -0 FOR NO MERGE OF SYMBOL TABLE, C 1 FOR MERGING THE SYMBOL TABLE. C C LSCLSYM -0 FOR NOT CLEARING THE SYMTAB BEFORE MERGE C 1 FOR CLEARING THE SYMTAB BEFORE MERGE C C LSNO8E - 0 FOR LOADING OR STARTING THE 8E SPEC. SEG. C 1 FOR NOT LOADING OR STARTING THE 8E SPEC. SEG. C C LSRELOC -0 TO NOT RELOC PM SEGMENTS, C 1 TO RELOCATE PM SEGMENTS AT NUMBER IN STACK. C C LSFREESTORE[1:2] - FREESTORE POINTER (-1 IF NEEDS TO BE INITED) C C LSFILL - 0 TO NOT USE FILL MODE WITH POINT DATA, C 1 TO USE FILL MODE WITH POINT DATA C C LSFULRAS-0 TO USE A 256X256 WINDOW, C 1 TO USE A 1024X1024 WINDOW. C C LSUFILXY - 0 USE FRAME ANS SCALE (HP,VP) C 1 USE FILE (KX,KY) COORDINATES IN HEADER (11,12) C C LSUMSK - 0 TO NOT USE THE MASK REGISTER C 1 TO USE THE MASK REGISTER C C LSUDIC - 0 TO NOT USE THE DICOMED C 1 TO USE THE DICOMED C C LSALLBM -0 TO USE 8-BIT BM DATA C 1 TO USE 16-BIT BM DATA C C LSPAL - 0 TO NOT USE PAL8 "BN" FILE FORMAT C 1 TO USE PAL8 ".BN" FILE FORMAT C C LSHBYT - 0 TO USE LOW BM BYTE C 1 TO USE HIGH BM BYTE C C LSUFRM - 0 TO IGNORE 256X256 FRAME ON ACCEPTING (X,Y) DATA C 1 TO USE 256X256 FRAME ON ACCEPTING (X,Y) DATA C C LSUCLASS - 0 NOP C 1 - TO REQUEST CLASS KEY ON $GET AND PUT IN HEADER C C LSU256XY - 0 NOP C 1 - MAP (1024X1024) DATA TO (256,256) C C LSNUM[1:2] - A NUMBER IN THE SWITCH STACK (DEFAULT=0) C C COMMON KMODE,KFILTH,KNMBH,KNMBL,KPKND,KSUBTYPE,KDATA COMMON KINFO,K8BIT,KDATE,KX,KY C KMODE - DATA FILE SPACE MODE (0 IS PM,8E,GR) C KFILTH - DATA FILE SPACE LENGTH IN BLOCKS C (0 IF VARIABLE) C KNMBH - HIGH ORDER NUMBER OF DATA IN FILE C KNMBL - LOW ORDER NUMBER OF DATA IN FILE C KPKND - NUMERATOR/DENUMERATOR PACKING SWITCH C CODED NUM: LEFT 6-BIT, DENUM: RIGHT 6-BIT. C KSUBTYPE - SUBTYPE INDEX (1,2,...) SEE C MODE TABLE FOR MEANING. C KDATA - GRAY SCALE TYPE (0 = 8 BIT, 1= 10 BIT C 2= 16 BIT DATA) C KINFO - INFORMATION TYPE FIELDS (0 = Z DATA, C 1=XY DATA, 2=XYZ DATA, 3= (E,X) MASK REG DATA) C K8BIT - PACK/UNPACK SWITCH (0 = 8 BIT, 1 = 1 WORD) C KDATE - OS/8 DATE WORD WHEN FILE CREATED. C KX - HPR AT TIME OF DATA ACQUISITION C KY - VPR AT TIME OF DATA ACQUISITION C C COMMON LPTR,KWC C LPTR - POINTER TO DMPBUF, LODBUF SUBROUTINES C KWC - WORD COUNT FOR DMPBUF, LODBUF SUBROUTINES C C C COMMON MCURDET DIMENSION MCURDET(6) C MCURDET(*) - TEMPORARY ARRAY WHICH CONTAINS THE C CURRENT VALUES OF THE THREE QMT DETECTOR MODULES C (1-2) IS THE 1-D DETECTOR A AND B C (3-4) IS THE STD DETECTOR B AND C C (5-6) IS THE DIGITIZER DETECTOR A AND B C COMMON IMONR,IMONW DIMENSION IMONR(16),IMONW(16) C IMONR(*) - READ IOTS FOR MONITOR POLLING LOOP C IMONW(*) - WRITE IOTS FOR MONITOR POLLING LOOP C C COMMON IXPOSITION,IHSIZE,IYPOSITION,IVSIZE DIMENSION IXPOSITION(1) C IXPOSITION - WINDOW X POSITION C IHSIZE - WINDOW HORIZONTAL SIZE C IYPOSITION - WINDOW Y POSITION C IVSIZE - WINDOW VERTICAL SIZE C C COMMON DMIN,DMAX C DMIN - MIN VARIABLE C DMAX - MAX VARIABLE C C NOTE: ADDED AFTER DDTCMN.FT FOR BMON2..... C C COMMON IPSTA,IPSTB,LSAVE DIMENSION LSAVE(15,71) C LSAVE (COMMAND#,1:71) - SAVED COMMAND ARRAY C CONTAINS: C ICNUM(5),KDEVOUT(1),KOUTFILE(4), C KDEVIN(5),KINFILE(20),ISW(36) C NOTE: ONLY LSAVE(1:12,*) IS USED FOR COMMANDS. C LSAVE(13,1:8) IS USED TO SAVE BMiX C LSAVE(14,1:8) IS USED TO SAVE BMiY C LSAVE(15,1) IS THE LENS MAGNIFICATION C 1 = 10X C 2 = 25 X C 3 = 50 X OIL C 4 = 100X OIL C IPSTA - BM A STATUS C IPSTB - BM B STATUS C C COMMON MEM,IBYTE,IYLINE C MEM - POINTER TO BM NUMBERS 0 TO 7 C IBYTE - SW 0=LOW, 1=HIGH BM BYTE C IYLINE - LAST LINE IN TRIPLE LINE BUFFER INPUT RLINES. C COMMON I10,I11,I12,I13,I14,I15,I16,I17,I18 DIMENSION I10(1) C C COMMON IBM1,IBM2,JBM,IHGH1,IHGH2,JHGH,IMA,IMB COMMON SCALE,IDENOMINATOR,INUMERATOR C IBM1 - FIRST SOURCE BM NUMBER 0:7 C IBM2 - 2ND SOURCE BM NUMBER 0:7 C JBM - SINK BM NUMER 0:7 C IHGH1 - FIRST SOURCE HIGH BYTE SW C IHGH2 - 2ND SOURCE HIGH BYTE SW C JHGH - SINK HIGH BYTE SW C IMA - SOURCE GET/POST GROUP A C IMB - SOURCE GET/POST GROUP B C C COMMON MEMBACK,IBYBACK,IYBACK C MEMBACK - LAST MEMORY ACCESSED WITH RLINES C IBYBACK - LAST BYTE MODE WITH RLINES C IYBACK - LAST LINE # WITH RLINES C C C ADDED FOR USE WITH BCDSPEC.FT 8/26/76 C COMMON ICNUM,KDEVOUT,KOUTFILE,KDEVIN,KINFILE,ISW DIMENSION ICNUM(5),KOUTFILE(4),KDEVIN(5),KINFILE(20),ISW(36) COMMON MCD DIMENSION MCD(40) C C ADDED 9/15/76 COMMON IH DIMENSION IH(512) C IH - HISTOGRAM ARRAY (D.P.) C C ADDED 9/30/76 COMMON KX1,KX2,KY1,KY2 DIMENSION KX1(1) C KX1 - LOWER COMPUTING WINDOW LIMIT (1:256) C KX2 - UPPER COMPUTING WINDOW LIMIT (1:256) C KY1 - LOWER COMPUTING WINDOW LIMIT (1:256) C KY2 - UPPER COMPUTING WINDOW LIMIT (1:256) C C C C ADDED 1/20/77 COMMON IGENSYM DIMENSION IGENSYM(2) C IGENSYM(1) = 2 CHARACTER GENERATOR PREFIX NAME C IGENSYM(2) = 4 OCTAL DIGIT GENSYM NUMBER VALUE. C C C ADDED 3/29/77 COMMON IQREG DIMENSION IQREG(26) C IQREG(I) - HIGH ORDER Q-REGISTER PTR, LOW ORDER IS ITMPSTK(I). C *LSON