INTEGER REGS(9),MASK(0:15),DATIME(9) LOGICAL*1 YN1,YN2 DATA MASK/"1,"3,"7,"17,"37,"77,"177,"377,"777,"1777,"3777,"7777, 1 "17777,"37777,"77777,"177777/ IFLD(NVALUE,NL,NR)=ISHFT(NVALUE,-NR).AND.MASK(NL-NR) LUN=5 WRITE(5,10000) 10000 FORMAT('$Read data from DNDISPLAY.DAT (Y/N) ? ') READ(5,10001)YN1 10001 FORMAT(A1) YN1=(YN1.NE.'Y').AND.(YN1.NE.'y') IF(YN1)GOTO10002 LUN=3 OPEN(UNIT=3,NAME='DNDISPLAY.DAT',TYPE='OLD',READONLY) 10002 WRITE(5,10003) 10003 FORMAT('$Append new data to DNDISPLAY.DAT (Y/N) ? ') READ(5,10001)YN2 YN2=(YN2.EQ.'Y').OR.(YN2.EQ.'y') OPEN(UNIT=4,NAME='DNDISPLAY.LST',TYPE='NEW') 1 IF(YN1)WRITE(5,6) 6 FORMAT('$Date and time of error? ') READ(LUN,7,END=99)DATIME 7 FORMAT(9A2) IF(YN1.AND.YN2)WRITE(3,7)DATIME DO 2 I=1,9 IF(YN1)WRITE(5,3)I 3 FORMAT('$REG',I1,'=') READ(LUN,4)REGS(I) 4 FORMAT(O6) IF(YN1.AND.YN2)WRITE(3,10004)REGS(I) 10004 FORMAT('000000',T1,O6) 2 CONTINUE WRITE(4,5)DATIME 5 FORMAT('1XYLOGICS DISK CONTROLLER REGISTER ANALYSIS'/ 1' STATUS CHECK OCCURRING ',9A2) WRITE(4,10)'CONTROL AND STATUS',REGS(1) 10 FORMAT(1X,A18,' = ',O6) WRITE(4,20)'ERROR SUMMARY ',IFLD(REGS(1),15,15) 20 FORMAT(5X,A16,' = ',O6) WRITE(4,20)'SEEK INHIBIT ',IFLD(REGS(1),14,14) WRITE(4,20)'MEMORY EXTENSION',IFLD(REGS(1),13,12) WRITE(4,20)'DSE ',IFLD(REGS(1),11,11) WRITE(4,20)'DSL ',IFLD(REGS(1),10,10) WRITE(4,20)'SV+ ',IFLD(REGS(1),9,9) WRITE(4,20)'SV- ',IFLD(REGS(1),8,8) WRITE(4,20)'FORMATTER READY ',IFLD(REGS(1),7,7) WRITE(4,20)'INTERRUPT ENABLE',IFLD(REGS(1),6,6) WRITE(4,20)'MULTI CPU REQ. ',IFLD(REGS(1),5,5) WRITE(4,20)'COMMAND ',IFLD(REGS(1),4,1) WRITE(4,20)'GO ',IFLD(REGS(1),0,0) WRITE(4,10)'UNIT SECTOR HEAD ',REGS(2) WRITE(4,20)'BIT 15 (=0) ',IFLD(REGS(2),15,15) WRITE(4,20)'BIT 14 (=0) ',IFLD(REGS(2),14,14) WRITE(4,20)'UNIT ',IFLD(REGS(2),13,12) WRITE(4,20)'HEAD ',IFLD(REGS(2),11,7) WRITE(4,20)'SECTOR ',IFLD(REGS(2),6,0) WRITE(4,10)'BUS ADDRESS ',REGS(3) WRITE(4,10)'WORD COUNT (2S C.)',REGS(4) WRITE(4,10)'CYLINDER ADDRESS ',REGS(5) WRITE(4,20)'BITS 15-10 (-0) ',IFLD(REGS(5),15,10) WRITE(4,20)'CYLINDER ADDRESS',IFLD(REGS(5),9,0) WRITE(4,10)'DISK STATUS ',REGS(6) WRITE(4,20)'DISK DRIVE READY',IFLD(REGS(6),15,15) WRITE(4,20)'DUAL PORT STATUS',IFLD(REGS(6),14,14) WRITE(4,20)'DISK WRITE PROT.',IFLD(REGS(6),13,13) WRITE(4,20)'STATUS CHANGE ',IFLD(REGS(6),12,12) WRITE(4,20)'DRIVE 3 SEEKING ',IFLD(REGS(6),11,11) WRITE(4,20)'DRIVE 2 SEEKING ',IFLD(REGS(6),10,10) WRITE(4,20)'DRIVE 1 SEEKING ',IFLD(REGS(6),9,9) WRITE(4,20)'DRIVE 0 SEEKING ',IFLD(REGS(6),8,8) WRITE(4,20)'SEEK DONE ',IFLD(REGS(6),7,7) WRITE(4,20)'DRIVE CONNECTED ',IFLD(REGS(6),6,6) WRITE(4,20)'DRIVE3 SEEK DONE',IFLD(REGS(6),5,5) WRITE(4,20)'DRIVE2 SEEK DONE',IFLD(REGS(6),4,4) WRITE(4,20)'DRIVE1 SEEK DONE',IFLD(REGS(6),3,3) WRITE(4,20)'DRIVE0 SEEK DONE',IFLD(REGS(6),2,2) WRITE(4,20)'SEEK ID ',IFLD(REGS(6),1,0) WRITE(4,10)'ERROR REGISTER ',REGS(7) WRITE(4,20)'BUS TIMEOUT ',IFLD(REGS(7),15,15) WRITE(4,20)'WRITE CHECK ERR.',IFLD(REGS(7),14,14) WRITE(4,20)'BAD SECTOR FLAG ',IFLD(REGS(7),13,13) WRITE(4,20)'DRIVE NOT READY ',IFLD(REGS(7),12,12) WRITE(4,20)'DRIVE FAULT ',IFLD(REGS(7),11,11) WRITE(4,20)'HARD SEEK ERROR ',IFLD(REGS(7),10,10) WRITE(4,20)'OPER. TIME OUT ',IFLD(REGS(7),9,9) WRITE(4,20)'CRC ERROR ',IFLD(REGS(7),8,8) WRITE(4,20)'DATA LATE ERROR ',IFLD(REGS(7),7,7) WRITE(4,20)'NONEXISTENT SEC.',IFLD(REGS(7),6,6) WRITE(4,20)'NONEXISTENT CYL.',IFLD(REGS(7),5,5) WRITE(4,20)'NONEXISTENT HEAD',IFLD(REGS(7),4,4) WRITE(4,20)'DISK OVERRUN ',IFLD(REGS(7),3,3) WRITE(4,20)'WRITE PROTECT ',IFLD(REGS(7),2,2) WRITE(4,20)'HEAD/SEC. COMP. ',IFLD(REGS(7),1,1) WRITE(4,20)'CYLINDER COMPARE',IFLD(REGS(7),0,0) WRITE(4,10)'UNUSED REGISTER 1 ',REGS(8) WRITE(4,10)'UNUSED REGISTER 2 ',REGS(9) GOTO1 99 IF(YN1)GOTO9999 YN1=.TRUE. CLOSE(UNIT=3) LUN=5 IF(YN2)OPEN(UNIT=3,NAME='DNDISPLAY.DAT',TYPE='OLD',ACCESS='APPEND') GOTO1 9999 IF(YN2)CLOSE(UNIT=3) CLOSE(UNIT=4) END