Sei sulla pagina 1di 8

$SEGMENT %_SENSOR

$CHAREQU
* COPYRIGHT:(c) Kevin G. Rhoads & High Voltage Research Lab @ MIT - 1984, 85.
SUBROUTINE OPEPPU
IMPLICIT CHARACTER*123 (A-Z)
ENTRY OPEPAR
CHARACTER*18 SAVENM,PROGNM,MAINLN*54
CHARACTER*20 MESS(16:20),PPUMES(16:20)
CHARACTER*8 HEXOF,ERRHEX
INTEGER*4 GETSR,LENDB,HENDB,ERROR,DUMMY,PPUERR(0:5),PPUBIO(0:1,1:2)
INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR,PPIOCR(0:210)
INTEGER*4 DIBOSW,DIBOSB,DIBOUW,DIBOUB,DIBOPW,DIBOPB,IERR,OERR,INUM,ONUM
INTEGER*4 PPA00,PPA01,PPB00,PPB01,PPAW,PPBW,CTC00,CTC01,ADC00,ADC01,ADC02,ADC03
INTEGER*4 IDTCB4,ODTCB4,IBFFER,OBFFER,BYTES(0:2),I,JTRY
INTEGER*2 FPCKTA(100),FPKTA(100),P(100),DTCB2,ERR,RBYTE,RTERR,ERRO(2)
INTEGER*2 ASC,SCAN,KBF1,KBF2,ERR2,IDTCB2,ODTCB2,ONUMS(2),INUMS(2)
INTEGER*2 OBUF(0:127),IBUF(0:127),RBYTES(0:4),ATCHPP
INTEGER*1 IDTCB,IDTCBA(52),ODTCB,ODTCBA(52),BOBUF(0:255),BIBUF(0:255)
INTEGER*1 DTCB,DTCBA(50),TBYTE,ABYTE
LOGICAL*2 PAUSES,DOWORD,DOBYTE,STROBE,OSTROB,ISTEST,FIRST,OPERR
LOGICAL*1 ISTRY
EQUIVALENCE (DTCB,DTCBA(1),DTCB2)
EQUIVALENCE (RBYTE,RBYTES(2)),(BYTES(1),RBYTE),(ABYTE,BYTES(0)),(ERROR,ERRO(1)),(ERRO(2),ERR)
EQUIVALENCE (IDTCB2,IDTCBA(1),IDTCB,IDTCB4,PPIOCR(1)),(OERR,PPIOCR(190))
EQUIVALENCE (ODTCB2,ODTCBA(1),ODTCB,ODTCB4,PPIOCR(66)),(IERR,PPIOCR(189))
EQUIVALENCE (OBUF(0),BOBUF(0),OBFFER,PPIOCR(131)),(ONUM,ONUMS(1),PPIOCR(188))
EQUIVALENCE (IBUF(0),BIBUF(0),IBFFER,PPIOCR(159)),(INUM,INUMS(1),PPIOCR(187))
EQUIVALENCE (FPCKTA(1),FPKTA(1),P(1))
COMMON /PPBYTE/PPUBIO,/MESEND/LENDB,HENDB,/NAMEPR/PROGNM,MAINLN
COMMON /PPUERS/PPUERR,/FUNPKT/FPCKTA,/TST/ISTEST
COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
COMMON /SENSUN/PPA00,PPA01,PPB00,PPB01,PPAW,PPBW,CTC00,CTC01,ADC00,ADC01,ADC02,ADC03
COMMON /PPBUFS/PPIOCR,/PPUEMS/PPUMES,/PAWS/PAUSES,/DTCBS/DTCBA
SAVE /UNITS/,/NAMEPR/,/MESEND/,/TST/,/FUNPKT/,/DTCBS/,/PAWS/
EXTERNAL CRCLS,HEXOF,TRPSON,ATCHPP
SAVE
DATA OPERR/.FALSE./,ISTRY/.FALSE./
DATA DOWORD/.FALSE./,DOBYTE/.FALSE./
DATA DIBOSW/$85008500/,DIBOSB/$81008100/,DIBOUW/$C500C500/,DIBOUB/$C100C100/
DATA MESS(16)/'Device LOCKED'/,MESS(17)/'Device ALREADY OPEN'/,MESS(18)/'INVALID ERROR'/
DATA MESS(19)/'INVALID ERROR'/,MESS(20)/'Illegal open mode'/
*
ISTRY = .FALSE.
JTRY = 0
GOTO 999
ENTRY TRYPPU
JTRY = 0
ISTRY = .TRUE.
999 CONTINUE
JTRY = JTRY + 1
C DOBYTE = .TRUE.
DOBYTE = .FALSE.
ENTRY OPEWPP
ENTRY OPEPPW
DOWORD = .TRUE.
STROBE = .TRUE.
OSTROB = .TRUE.
FIRST = .TRUE.
1000 CONTINUE
IF (.NOT.FIRST) ISTRY = .TRUE.
OPEN (UNIT=34,FILE='#PPA00',FORM='BINARY',ACCESS='SEQUENTIAL',ERR=1100)
1100 CONTINUE
CALL SYSCLO(34,ERR)
DO 1 I = 16,20
PPUMES(I) = MESS(I)
1 CONTINUE
SAVENM = PROGNM
C PROGNM = 'UTILITY: OPEPPU'
IF (.NOT.DOWORD) GOTO 1001
DIBOPW = DIBOUW
IF (STROBE) DIBOPW = DIBOSW
PPAW = 34
DUMMY = 0
CALL SYSOPE(34,'#PPA00',1,DIBOPW,0,DUMMY,ERR)
C Read ONLY-------^ ^----FIXED LENGTH TRANSFERS
IF (ERR.NE.0) THEN
IF (ERR.GE.16.AND.ERR.LE.20) PRINT *,'PPA00(WORD) OPEN ERROR, CODE = ',ERR,' ',MESS(ERR)
I = ERR
ERRHEX = HEXOF(I)
IF (ERR.LT.16.OR.ERR.GT.20) PRINT *,'PPA00(WORD) OPEN ERROR, CODE = ',ERR,' = $',ERRHEX(5:8)
IF (ERR.EQ.$8500.OR.ERR.EQ.$8800.OR.ERR.EQ.$0011) THEN
IF (.NOT.FIRST) GOTO 1002
CLOSE(34,ERR=1003)
1003 CALL SYSCLO(34,ERR)
FIRST = .FALSE.
GOTO 1000
ENDIF
IF (ERR.EQ.-1.AND.(.NOT.OPERR)) THEN
OPERR = .TRUE.
CALL CLS
CALL GOTOXY(0,10)
PRINT *,'CANNOT CONNECT TO PAR CONTROLLER -- SENSOR.DRV WAS NOT ATTACHED'
PRINT *,' Attempting correction ... '
I = ATCHPP()
IF (I.EQ.0) GOTO 999
IF (ISTRY) GOTO 2991
PRINT *,' '
PRINT *,' '
PRINT *,' This couldn''t be corrected by the program. After reboot,'
PRINT *,' please type the command: SENSOR to the system. This '
PRINT *,' cause the SENSOR.DRV to be ATTACHed to the system. This'
PRINT *,' program can then be restarted.'
PRINT *,' '
PRINT *,' '
PRINT *,'STRIKE ANY KEY TO REBOOT'
1009 CALL GETKEY(ASC,SCAN,KBF1,KBF2,ERR2)
IF (ERR2.NE.0) GOTO 1009
IF (SCAN.NE.1) CALL REBOOT
ENDIF
ENDIF
2991 CONTINUE
OPEN (UNIT=34,FILE='#PPA00',FORM='BINARY',ACCESS='SEQUENTIAL',ERR=1110)
1110 CONTINUE
CALL SYSCLO(34,ERR)
CALL SYSOPE(34,'#PPA00',1,DIBOPW,0,DUMMY,ERR)
CALL TRAPSP
1002 CONTINUE
OPEN (UNIT=35,FILE='#PPB00',FORM='BINARY',ACCESS='SEQUENTIAL',ERR=1102)
1102 CONTINUE
CALL SYSCLO(35,ERR)
PPBW = 35
DUMMY = 0
DIBOPW = DIBOUW
IF (OSTROB) DIBOPW = DIBOSW
CALL SYSOPE(35,'#PPB00',0,DIBOPW,0,DUMMY,ERR)
C Write Only-------^ ^----FIXED LENGTH TRANSFER
IF (ERR.NE.0) THEN
IF (ERR.GE.16.AND.ERR.LE.20) PRINT *,'PPA00(WORD) OPEN ERROR, CODE = ',ERR,' ',MESS(ERR)
I = ERR
ERRHEX = HEXOF(I)
IF (ERR.LT.16.OR.ERR.GT.20) PRINT *,'PPA00(WORD) OPEN ERROR, CODE = ',ERR,' = $',ERRHEX(5:8)
ENDIF
OPEN (UNIT=35,FILE='#PPB00',FORM='BINARY',ACCESS='SEQUENTIAL',ERR=1112)
1112 CONTINUE
CALL SYSCLO(35,ERR)
CALL SYSOPE(35,'#PPB00',0,DIBOPW,0,DUMMY,ERR)
IDTCB4 = 0
ODTCB4 = 0
IF (.NOT.DOBYTE) RETURN
1001 CONTINUE
DIBOPB = DIBOUB
IF (STROBE) DIBOPB = DIBOSB
PPA00 = 30
PPUBIO(0,1) = -1
CALL SYSOPE(30,'#PPA00',1,DIBOPB,0,PPUBIO(0,1),ERR)
C Read ONLY-------^ ^----FIXED LENGTH TRANSFERS
IF (ERR.GE.16.AND.ERR.LE.20) PRINT *,'PPA00(BYTE) OPEN ERROR, CODE = ',ERR,' ',MESS(ERR)
IF (ERR.EQ.-1.AND.(.NOT.OPERR)) THEN
OPERR = .TRUE.
CALL CLS
CALL GOTOXY(0,10)
PRINT *,'CANNOT CONNECT TO PAR CONTROLLER -- SENSOR.DRV WAS NOT ATTACHED'
PRINT *,' Attempting correction ... '
I = ATCHPP()
IF (I.EQ.0) GOTO 1002
IF (ISTRY) GOTO 2992
PRINT *,' '
PRINT *,' '
PRINT *,' This couldn''t be corrected by the program. After reboot,'
PRINT *,' please type the command: SENSOR to the system. This '
PRINT *,' cause the SENSOR.DRV to be ATTACHed to the system. This'
PRINT *,' program can then be restarted.'
PRINT *,' '
PRINT *,' '
PRINT *,'STRIKE ANY KEY TO REBOOT'
1010 CALL GETKEY(ASC,SCAN,KBF1,KBF2,ERR2)
IF (ERR2.NE.0) GOTO 1010
IF (SCAN.NE.1) CALL REBOOT
ENDIF
2992 CONTINUE
PPA01 = 31
PPUBIO(1,1) = -1
CALL SYSOPE(31,'#PPA01',2,DIBOPB,0,PPUBIO(1,1),ERR)
IF (ERR.GE.16.AND.ERR.LE.20) PRINT *,'PPA01(BYTE) OPEN ERROR, CODE = ',ERR,' ',MESS(ERR)
PPB00 = 32
PPUBIO(0,2) = -1
CALL SYSOPE(32,'#PPB00',0,DIBOPB,0,PPUBIO(0,2),ERR)
C Write Only-------^ ^----FIXED LENGTH TRANSFERS
IF (ERR.GE.16.AND.ERR.LE.20) PRINT *,'PPB00(BYTE) OPEN ERROR, CODE = ',ERR,' ',MESS(ERR)
PPB01 = 33
PPUBIO(1,2) = -1
CALL SYSOPE(33,'#PPB01',0,DIBOPB,0,PPUBIO(1,2),ERR)
IF (ERR.GE.16.AND.ERR.LE.20) PRINT *,'PPB01(BYTE) OPEN ERROR, CODE = ',ERR,' ',MESS(ERR)
RETURN
ENTRY OPEBPP
DOBYTE = .TRUE.
STROBE = .TRUE.
GOTO 1000
ENTRY PPISOU
STROBE = .TRUE.
OSTROB = .FALSE.
DOBYTE = .FALSE.
DOWORD = .TRUE.
GOTO 1000
*-----------------
ENTRY CLOPPU
ENTRY CLOPAR
IF (.NOT.(DOBYTE.OR.DOWORD)) THEN
DOWORD = .TRUE.
DOBYTE = .TRUE.
ENDIF
IF (DOBYTE) THEN
CALL SYSCLO(30,ERR)
IF (ERR.NE.0) PRINT *,'CLOSE ERROR, PPA00(BYTE), CODE =',ERR
CALL SYSCLO(31,ERR)
IF (ERR.NE.0) PRINT *,'CLOSE ERROR, PPA01(BYTE), CODE =',ERR
CALL SYSCLO(32,ERR)
IF (ERR.NE.0) PRINT *,'CLOSE ERROR, PPB00(BYTE), CODE =',ERR
CALL SYSCLO(33,ERR)
IF (ERR.NE.0) PRINT *,'CLOSE ERROR, PPB01(BYTE), CODE =',ERR
ENDIF
IF (DOWORD) THEN
CALL SYSCLO(34,ERR)
IF (ERR.NE.0) PRINT *,'CLOSE ERROR, PPA00(WORD), CODE =',ERR
CALL SYSCLO(35,ERR)
IF (ERR.NE.0) PRINT *,'CLOSE ERROR, PPB00(WORD), CODE =',ERR
* RESET B PORTS TO READ ONLY ...
CALL SYSOPE(35,'#PPB00',1,DIBOPW,0,DUMMY,ERR)
CALL SYSCLO(35,ERR)
ENDIF
DOWORD = .FALSE.
DOBYTE = .FALSE.
RETURN
*----------------------------
ENTRY BRDA0(TBYTE,RTERR)
CALL BREAD(PPUBIO(0,1),RBYTE,ERR)
2000 CONTINUE
TBYTE = ABYTE
2001 CONTINUE
RTERR = ERR
RETURN
ENTRY BRDA1(TBYTE,RTERR)
CALL BREAD(PPUBIO(1,1),RBYTE,ERR)
GOTO 2000
ENTRY BRDB0(TBYTE,RTERR)
CALL BREAD(PPUBIO(0,2),RBYTE,ERR)
GOTO 2000
ENTRY BRDB1(TBYTE,RTERR)
CALL BREAD(PPUBIO(1,2),RBYTE,ERR)
GOTO 2000
*----------------------------
ENTRY BTSTA0(TBYTE,RTERR)
CALL BTEST(PPUBIO(0,1),RBYTE,ERR)
GOTO 2000
ENTRY BTSTA1(TBYTE,RTERR)
CALL BTEST(PPUBIO(1,1),RBYTE,ERR)
GOTO 2000
ENTRY BTSTB0(TBYTE,RTERR)
CALL BTEST(PPUBIO(0,2),RBYTE,ERR)
GOTO 2000
ENTRY BTSTB1(TBYTE,RTERR)
CALL BTEST(PPUBIO(1,2),RBYTE,ERR)
GOTO 2000
*----------------------------
ENTRY BWRA0(TBYTE,RTERR)
ABYTE = TBYTE
CALL BWRITE(PPUBIO(0,1),RBYTE,ERR)
GOTO 2001
ENTRY BWRA1(TBYTE,RTERR)
ABYTE = TBYTE
CALL BWRITE(PPUBIO(1,1),RBYTE,ERR)
GOTO 2001
ENTRY BWRB0(TBYTE,RTERR)
ABYTE = TBYTE
CALL BWRITE(PPUBIO(0,2),RBYTE,ERR)
GOTO 2001
ENTRY BWRB1(TBYTE,RTERR)
ABYTE = TBYTE
CALL BWRITE(PPUBIO(1,2),RBYTE,ERR)
GOTO 2001
*----------------------------
ENTRY RDPPWS
IF (INUM.LT.0.OR.INUM.GT.256) INUM = 2
CALL SREAD(PPAW,IBUF,INUM,0,0,0,ERROR)
IERR = ERROR
RETURN
ENTRY WTPPWS
IF (ONUM.LT.0.OR.ONUM.GT.256) ONUM = 2
CALL SWRITE(PPBW,OBUF,ONUM,0,0,0,ERROR)
OERR = ERROR
RETURN
*----------------------------
ENTRY RDPPWA
IF (INUM.LT.0.OR.INUM.GT.256) INUM = 2
CALL AREAD(IDTCB,PPAW,IBUF,INUM,0,0,0,ERROR)
IERR = ERROR
RETURN
ENTRY WTPPWA
IF (ONUM.LT.0.OR.ONUM.GT.256) ONUM = 2
CALL AWRITE(ODTCB,PPBW,OBUF,ONUM,0,0,0,ERROR)
OERR = ERROR
RETURN
*=============================
ENTRY TOGGLB
DIBOPW = DIBOUW
PPBW = 35
DUMMY = 0
2020 CONTINUE
* PRINT *,'TOGGLB: ABOUT TO CALL SYSCLO(35,ERR)'
CALL SYSCLO(35,ERR)
ERR = 0
* PRINT *,'TOGGLB: ABOUT TO CALL SYSOPE(35,''#PPB00'',1,DIBOPW,0,DUMMY,ERR) '
CALL SYSOPE(35,'#PPB00',1,DIBOPW,0,DUMMY,ERR)
C READ Only-------^ ^----FIXED LENGTH TRANSFER
IF (ERR.NE.0) THEN
IF (ERR.GE.16.AND.ERR.LE.20) PRINT *,'PPA00(WORD) OPEN ERROR, CODE = ',ERR,' ',MESS(ERR)
I = ERR
ERRHEX = HEXOF(I)
IF (ERR.LT.16.OR.ERR.GT.20) PRINT *,'PPA00(WORD) OPEN ERROR, CODE = ',ERR,' = $',ERRHEX(5:8)
IF (ERR.EQ.$8500.OR.ERR.EQ.$8800.OR.ERR.EQ.$0011) THEN
CLOSE(35,ERR=1023)
1023 CALL SYSCLO(35,ERR)
FIRST = .FALSE.
GOTO 2020
ENDIF
IF (ERR.EQ.-1.AND.(.NOT.OPERR)) THEN
OPERR = .TRUE.
CALL CLS
CALL GOTOXY(0,10)
PRINT *,'CANNOT CONNECT TO PAR CONTROLLER -- SENSOR.DRV WAS NOT ATTACHED'
PRINT *,' Attempting correction ...'
I = ATCHPP()
IF (I.EQ.0) GOTO 2020
PRINT *,' '
PRINT *,' '
PRINT *,' This couldn''t be corrected by the program. After reboot,'
PRINT *,' please type the command: SENSOR to the system. This '
PRINT *,' cause the SENSOR.DRV to be ATTACHed to the system. This'
PRINT *,' program can then be restarted.'
PRINT *,' '
PRINT *,' '
PRINT *,'STRIKE ANY KEY TO REBOOT'
1019 CALL GETKEY(ASC,SCAN,KBF1,KBF2,ERR2)
IF (ERR2.NE.0) GOTO 1019
IF (SCAN.NE.1) CALL REBOOT
ENDIF
ENDIF
* PRINT *,'TOGGLB: ABOUT TO CALL SYSCLO(35,ERR)'
CALL SYSCLO(35,ERR)
DIBOPW = DIBOUW
* PRINT *,'TOGGLB: ABOUT TO CALL SYSOPE(35,''#PPB00'',0,DIBOPW,0,DUMMY,ERR) '
CALL SYSOPE(35,'#PPB00',0,DIBOPW,0,DUMMY,ERR)
C Write Only-------^ ^----FIXED LENGTH TRANSFER
I = GETSR()
* PRINT *,'TOGGLB: SR = ',I
IF (I.GE.$2000) THEN
CALL WPOKE($F80542,0)
ELSE
CALL SWPOKE($F80542,0)
ENDIF
* PRINT *,'TOGGLB: ABOUT TO CALL SYSCLO(35,ERR)'
CALL SYSCLO(35,ERR)
DIBOPW = DIBOSW
* PRINT *,'TOGGLB: ABOUT TO CALL SYSOPE(35,''#PPB00'',0,DIBOPW,0,DUMMY,ERR) '
CALL SYSOPE(35,'#PPB00',0,DIBOPW,0,DUMMY,ERR)
C Write Only-------^ ^----FIXED LENGTH TRANSFER
RETURN
*=========================
ENTRY TOGGLA
ISTRY = .TRUE.
DIBOPW = DIBOUW
PPAW = 34
DUMMY = 0
2030 CONTINUE
CALL SYSCLO(34,ERR)
CALL SYSOPE(34,'#PPA00',0,DIBOPW,0,DUMMY,ERR)
C WRITE ONLY-------^ ^----FIXED LENGTH TRANSFERS
IF (ERR.NE.0) THEN
IF (ERR.GE.16.AND.ERR.LE.20) PRINT *,'PPA00(WORD) OPEN ERROR, CODE = ',ERR,' ',MESS(ERR)
I = ERR
ERRHEX = HEXOF(I)
IF (ERR.LT.16.OR.ERR.GT.20) PRINT *,'PPA00(WORD) OPEN ERROR, CODE = ',ERR,' = $',ERRHEX(5:8)
IF (ERR.EQ.$8500.OR.ERR.EQ.$8800.OR.ERR.EQ.$0011) THEN
CLOSE(34,ERR=1093)
1093 CALL SYSCLO(34,ERR)
FIRST = .FALSE.
GOTO 2030
ENDIF
IF (ERR.EQ.-1.AND.(.NOT.OPERR)) THEN
OPERR = .TRUE.
CALL CLS
CALL GOTOXY(0,10)
PRINT *,'CANNOT CONNECT TO PAR CONTROLLER -- SENSOR.DRV WAS NOT ATTACHED'
PRINT *,' Attempting correction ...'
I = ATCHPP()
IF (I.EQ.0) GOTO 2030
* PRINT *,' '
* PRINT *,' '
* PRINT *,' This cannot be corrected by the program. After reboot,'
* PRINT *,' please type the command: SENSOR to the system. This '
* PRINT *,' cause the SENSOR.DRV to be ATTACHed to the system. This'
* PRINT *,' program can then be restarted.'
* PRINT *,' '
* PRINT *,' '
* PRINT *,'STRIKE ANY KEY TO REBOOT'
*1099 CALL GETKEY(ASC,SCAN,KBF1,KBF2,ERR2)
* IF (ERR2.NE.0) GOTO 1099
* IF (SCAN.NE.1) CALL REBOOT
ENDIF
ENDIF
CALL SYSCLO(34,ERR)
I = GETSR()
IF (I.GE.$2000) THEN
CALL WPOKE($F80540,0)
ELSE
CALL SWPOKE($F80540,0)
ENDIF
DIBOPW = DIBOSW
CALL SYSOPE(34,'#PPA00',1,DIBOPW,0,DUMMY,ERR)
C Read ONLY-------^ ^----FIXED LENGTH TRANSFERS
RETURN
END
*----------------------------------------------------------------------
SUBROUTINE OPEADC
IMPLICIT CHARACTER*123 (A-Z)
* COPYRIGHT:(c) Kevin G. Rhoads & High Voltage Research Lab @ MIT - 1984.
CHARACTER*24 MESS(16:37),ADCMES(16:37)
CHARACTER*18 SAVENM,PROGNM,MAINLN*54
INTEGER*4 PPA00,PPA01,PPB00,PPB01,PPAW,PPBW,CTC00,CTC01,ADC00,ADC01,ADC02,ADC03
INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR,I
INTEGER*4 ERROR,DUMMY,ADCERR(0:3),GAIN,RATE,CHNL,BIAS
INTEGER*4 LENDB,HENDB,DIBOPT,DIBBIO(4),FIXVAR,LWORD,WORDS(0:1)
INTEGER*2 FPCKTA(100),FPKTA(100),P(100),ASC,SCAN,KBF1,KBF2,ERR2
INTEGER*1 DTCB,DTCBA(50)
LOGICAL*2 ADCOK(0:3),ISTEST,PAUSES
LOGICAL*1 ISTRY
EQUIVALENCE (FPCKTA(1),FPKTA(1),P(1)),(DTCB,DTCBA(1)),(LWORD,WORDS(0))
COMMON /SENSUN/PPA00,PPA01,PPB00,PPB01,PPAW,PPBW,CTC00,CTC01,ADC00,ADC01,ADC02,ADC03
COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
COMMON /FUNPKT/FPCKTA,/MESEND/LENDB,HENDB,/NAMEPR/PROGNM,MAINLN
COMMON /DTCBS/DTCBA,/ADCERS/ADCERR,/TST/ISTEST,/PAWS/PAUSES
COMMON /ADCEMS/ADCMES
SAVE /NAMEPR/,/MESEND/,/UNITS/,/FUNPKT/,/TST/,/DTCBS/,/PAWS/,/ADCMES/
EXTERNAL CRCLS
SAVE
DATA MESS(16)/'Device LOCKED'/,MESS(17)/'Device ALREADY OPEN'/,MESS(18)/'A/D Overrange'/
DATA MESS(19)/'INVALID ERROR'/,MESS(20)/'Illegal open mode'/,(MESS(I),I=21,32)/12*'UNKNOWN ERROR'/
DATA MESS(33)/'SET GAIN-DATA OVERRANGE'/,MESS(34)/'SET RATE-DATA OVERRANGE'/
DATA MESS(35)/'AVERAGING-DATA OVERRANGE'/,MESS(36)/'ALT CHAN-DATA OVERRANGE'/
DATA MESS(37)/'SUMMING-DATA OVERRANGE'/
*
ISTRY = .FALSE.
GOTO 999
ENTRY TRYADC
ISTRY = .TRUE.
999 CONTINUE
DO 2 I = 16,37
ADCMES(I) = MESS(I)
2 CONTINUE
ADC00 = 24
ADC01 = 25
ADC02 = 27
ADC03 = 28
DO 1 I = 0,3
ADCOK(I) = .FALSE.
1 CONTINUE
DUMMY = 0
CALL SYSOPE(24,'#ADC00',1,$8100,0,DUMMY,ERROR)
* ADC's are INPUT ONLY -------^ ^-- allow MULTIPLE OPEN's
ADCOK(0) = ERROR.EQ.0
ADCERR(0) = ERROR
IF (ERROR.EQ.-1) THEN
CALL CLS
CALL GOTOXY(0,10)
PRINT *,'CANNOT CONNECT TO PAR CONTROLLER -- SENSOR.DRV WAS NOT ATTACHED'
IF (ISTRY) GOTO 2991
PRINT *,' '
PRINT *,' '
PRINT *,' This cannot be corrected by the program. After reboot,'
PRINT *,' please type the command: SENSOR to the system. This '
PRINT *,' cause the SENSOR.DRV to be ATTACHed to the system. This'
PRINT *,' program can then be restarted.'
PRINT *,' '
PRINT *,' '
PRINT *,'STRIKE ANY KEY TO REBOOT'
1011 CALL GETKEY(ASC,SCAN,KBF1,KBF2,ERR2)
IF (ERR2.NE.0) GOTO 1011
IF (SCAN.NE.1) CALL REBOOT
ENDIF
2991 CONTINUE
DUMMY = 0
CALL SYSOPE(25,'#ADC01',1,$8100,0,DUMMY,ERROR)
ADCOK(1) = ERROR.EQ.0
ADCERR(1) = ERROR
DUMMY = 0
CALL SYSOPE(27,'#ADC02',1,$8100,0,DUMMY,ERROR)
ADCOK(2) = ERROR.EQ.0
ADCERR(2) = ERROR
DUMMY = 0
CALL SYSOPE(28,'#ADC03',1,$8100,0,DUMMY,ERROR)
ADCOK(3) = ERROR.EQ.0
ADCERR(3) = ERROR
DO 3 I = 0,3
IF (ADCOK(I)) GOTO 4
ERROR = ADCERR(I)
IF (ERROR.GE.16.AND.ERROR.LE.20) THEN
PRINT '(A,I2.2,A,A)','ERROR FOR ADC',I,' OPEN: ',MESS(ERROR)
ELSE
PRINT '(A,I2.2,A,A,I16)','ERROR FOR ADC',I,' OPEN: ','UNKNOWN ERROR = ',ERROR
ENDIF
4 CONTINUE
3 CONTINUE
P(1) = 1
P(2) = 0
P(3) = 3
P(4) = 0
P(5) = 5
P(6) = 0
P(7) = 6
P(8) = 0
P(9) = 0
LWORD = 33332
P(10) = 2
P(11) = WORDS(0)
P(12) = WORDS(1)
P(13) = 0
P(14) = 0
CALL SYSFUN(24,P(1),ERROR)
IF (ERROR.NE.0) PRINT *,'ADC00 INITIALIZATION ERROR, CODE =',ERROR
IF (ERROR.GE.16.AND.ERROR.LE.37) PRINT *,' ',MESS(ERROR)
CALL SYSFUN(25,P(1),ERROR)
IF (ERROR.NE.0) PRINT *,'ADC01 INITIALIZATION ERROR, CODE =',ERROR
IF (ERROR.GE.16.AND.ERROR.LE.37) PRINT *,' ',MESS(ERROR)
CALL SYSFUN(27,P(1),ERROR)
IF (ERROR.NE.0) PRINT *,'ADC02 INITIALIZATION ERROR, CODE =',ERROR
IF (ERROR.GE.16.AND.ERROR.LE.37) PRINT *,' ',MESS(ERROR)
CALL SYSFUN(28,P(1),ERROR)
IF (ERROR.NE.0) PRINT *,'ADC03 INITIALIZATION ERROR, CODE =',ERROR
IF (ERROR.GE.16.AND.ERROR.LE.37) PRINT *,' ',MESS(ERROR)
RETURN
*----------------------
ENTRY SADCBS(BIAS,CHNL)
P(1) = 6
LWORD = BIAS
GOTO 1001
*----------------------
ENTRY SADCGN(GAIN,CHNL)
P(1) = 1
P(2) = GAIN
P(3) = 0
GOTO 1000
*----------------------
ENTRY SADCRT(RATE,CHNL)
LWORD = RATE
P(1) = 2
1001 CONTINUE
P(2) = WORDS(0)
P(3) = WORDS(1)
P(4) = 0
1000 CONTINUE
IF (CHNL.LE.0.OR.CHNL.GT.3) THEN
CALL SYSFUN(24,P(1),ERROR)
IF (ERROR.NE.0) PRINT *,'ADC00 COMMAND ERROR, CODE =',ERROR
ENDIF
IF (CHNL.EQ.1.OR.CHNL.LT.0) THEN
CALL SYSFUN(25,P(1),ERROR)
IF (ERROR.NE.0) PRINT *,'ADC01 COMMAND ERROR, CODE =',ERROR
ENDIF
IF (CHNL.EQ.2.OR.CHNL.LT.0) THEN
CALL SYSFUN(27,P(1),ERROR)
IF (ERROR.NE.0) PRINT *,'ADC02 COMMAND ERROR, CODE =',ERROR
ENDIF
IF (CHNL.EQ.3.OR.CHNL.LT.0) THEN
CALL SYSFUN(28,P(1),ERROR)
IF (ERROR.NE.0) PRINT *,'ADC03 COMMAND ERROR, CODE =',ERROR
ENDIF
RETURN
*----------------------
ENTRY CLOADC
CALL SYSCLO(24,ERROR)
IF (ERROR.NE.0) PRINT '(A,I16)','ERROR FOR ADC00 CLOSE: UNKNOWN ERROR = ',ERROR
CALL SYSCLO(25,ERROR)
IF (ERROR.NE.0) PRINT '(A,I16)','ERROR FOR ADC01 CLOSE: UNKNOWN ERROR = ',ERROR
CALL SYSCLO(27,ERROR)
IF (ERROR.NE.0) PRINT '(A,I16)','ERROR FOR ADC02 CLOSE: UNKNOWN ERROR = ',ERROR
CALL SYSCLO(28,ERROR)
IF (ERROR.NE.0) PRINT '(A,I16)','ERROR FOR ADC03 CLOSE: UNKNOWN ERROR = ',ERROR
RETURN
END
*----------------------------------------------------------------------
SUBROUTINE TOGGL
IMPLICIT CHARACTER*123 (A-Z)
ENTRY TOGGLE
LOGICAL*2 ISOU
COMMON /STRBES/ISOU
1 CONTINUE
CALL CLOPPU
CLOSE (34,ERR=9988)
9988 CLOSE (35,ERR=9987)
9987 CONTINUE
C IF (ISOU) THEN
C CALL PPISOU
C ELSE
CALL TRYPPU
C ENDIF
C OPEN (UNIT=34,FILE='#PPA00',FORM='UNFORMATTED',ERR=9986)
C9986 CONTINUE
RETURN
ENTRY TOGGLP
CALL TOGGLA
CALL TOGGLB
GOTO 1
END

Potrebbero piacerti anche

  • 97758TMER001
    97758TMER001
    Documento45 pagine
    97758TMER001
    Gc
    Nessuna valutazione finora
  • Limbs0a1 00
    Limbs0a1 00
    Documento68 pagine
    Limbs0a1 00
    John Fredy Palacio G.
    Nessuna valutazione finora
  • th24 TH7
    th24 TH7
    Documento20 pagine
    th24 TH7
    Roberto Pesce
    Nessuna valutazione finora
  • Huffman
    Huffman
    Documento19 pagine
    Huffman
    antoninoxxx
    Nessuna valutazione finora
  • VCZD
    VCZD
    Documento8 pagine
    VCZD
    emanuel92
    Nessuna valutazione finora
  • PVI Aurora Desktop IT
    PVI Aurora Desktop IT
    Documento2 pagine
    PVI Aurora Desktop IT
    cesare.alceste
    Nessuna valutazione finora
  • CAM680 20 It
    CAM680 20 It
    Documento20 pagine
    CAM680 20 It
    Anonymous RcxX0Fc
    Nessuna valutazione finora