C C C FORTRAN SYMBOLIC DEBUGGING TOOL C C THIS IS A FIRST ATTEMP AT CREATING A FORTRAN C SYMBOLIC DEBUGGING TOOL (HENCE: SDT) FOR C TASKS THAT HAVE ALMOST NO EXCESS TASK SPACE C AND ARE OVERLAID TO THE HILT FOR PDP 11/70 C C 9/25/81 SCOTT ROBERT LEATHAM C BOEING COMPANY M/S 9W-31 C SEATTLE WASHINGTON U.S.A. C (206) 237-6363 C C C THE SYSTEM CONSISTS OF: C THE OBJECT TASK TO BE DEBUGGED. C THE LIMPIT MODULE WHICH IS LINKED WITH C THE OBJECT TASK. C THE DEBUG MODULE WHICH CREATES ALL THE C TABLES FILES AND USER PROMPTING. C DEBUG AND LIMPIT-OBJECT TASK COMMUNICATE C VIA SEND AND RECEIVE DATA DIRECTIVES, AND C TRADE OFF EXCUTION TIME WITH STOPS AND RESUMES C AUTOMATICALLY. C MOST OTHER INFORMATION IS TO BE FOUND IN SDT.DOC. C ANY QUESTIONS PLEASE CALL ME... C C SCOTT ROBERT LEATHAM (206)237-6363 C SEATTLE WASHINGTON U.S.A. C C COPYRIGHTED 1981 C C PROGRAM DEBUG C C C LUN ASSIGNMENTS: C 1-.PRG FILE C 2-.VRS FILE C 3-.CDE FILE C 4-.PST FILE (NOT USED MUCH) C 5- TERMINAL C 6- PRINTER C 7- TEMP OUTPUT FILE C 10-COMMAND FILE C 11 HISTORY FILE C INTEGER INTBUF(9),TASKNM(2),CURPC,UIC(5),PRODAT,PROADD,INFLG INTEGER TRAPTB(2,100),BEEFLG,TYPE3(3),SEGMNT(3),MODULE(3) INTEGER VARIAB(3) INTEGER IERR,ITERM,IDSW,ITASK(2) INTEGER RECDAT(9),SNDATA(7),SGTADD,SGTLNT,SEGTAB(5,200) INTEGER BRCODE,ERCODE,SEGNM(3),MODNM(3) INTEGER REGNO,RDATA1,PCDATA,ADDRES,NOSTEP,TRAPNO INTEGER NBYTE,RDATA2,TADDR,SEGDAT,DATA(4) INTEGER CSGNAM(3),CMOD(3) INTEGER SAVSEG(3),TSEG(3),TMOD(3),ICNT,TCODE(40) INTEGER CODE(40),TMOD2(3),TSEG2(3),FNC INTEGER PREBPT,IFIRST,AUTOFG,PRESEG(3),RSAUTO,EXITFG INTEGER TARLNE,TARFLG,TSLN,TMLN,EXIT1,EXIT2,EXDAT1,EXDAT2 BYTE REPLY(10),MAPFL(30),FSPECA(24) BYTE MESAGE(216),TARSEG(6),TARMOD(6) INTEGER*4 IREC1,IREC2,IREC3 INTEGER CMDTAB(7),QUETAB(8),AGIOCT(6),DEV,IOVLAY INTEGER AGASCI(3,6),IREG,ALBP1,ALBP2,ALBP1D,ALBP2D REAL REALS(2) COMMON /CMDS/CMDTAB,QUETAB,AGIOCT,AGASCI,IREG,FSPECA,FNC,CSGNAM, + CMOD,REALS COMMON /IONODE/TASKNM,ITERM,IDSW,RECDAT,ITASK COMMON /RECS/IREC1,IREC2,IREC3 COMMON /MESBUF/MESAGE COMMON /SEGS/SEGTAB,SGTLNT COMMON /TRAPS/TRAPTB COMMON /AUTO/ALBP2,EXIT1,EXIT2,IOVLAY EQUIVALENCE (INTBUF(3),CURPC),(CODE,CODE2) EQUIVALENCE (RECDAT(3),BRCODE,ERCODE,SNDATA) EQUIVALENCE (RECDAT(4),REGNO,RDATA1,PCDATA,ADDRES,NOSTEP,TRAPNO) EQUIVALENCE (RECDAT(5),NBYTE,RDATA2,TADDR,SEGDAT) EQUIVALENCE (RECDAT(6),DATA) DATA INFLG/.TRUE./ C C INIT THE TASK SEND AND REC. DATA DIRECTIVES C AND DATA FILES AND BREAK POINT TRAPS C FOR OBJECT TASK(TASK TO BE DEBUGGED) EXCUTION. C C C C CALL ERRSET(39,.TRUE.,.FALSE.,.TRUE.,.FALSE.,15) CALL ERRSET(29,.TRUE.,.FALSE.,.TRUE.,.FALSE.,15) CALL ERRSET(64,.TRUE.,.FALSE.,.TRUE.,.FALSE.,15) CALL ERRSET(34,.TRUE.,.FALSE.,.TRUE.,.FALSE.,15) CALL ERRSET(25,.TRUE.,.FALSE.,.TRUE.,.FALSE.,15) CALL VRECEV(,INTBUF,9,ITERM,,IDSW) CALL STRMOV(INTBUF(1),1,4,TASKNM,1) CALL TERDEF(A,J,UIC,I) CALL R50ASC(6,TASKNM,MAPFL) CALL STRMOV('.MAP',1,4,MAPFL,7) NC=10 CALL FSPEC(MAPFL,NC,UIC,I,A,J,1) CALL CLRBUF(RECDAT,9,1,9) C 30 CALL BEESET(BEEFLG) IF(BEEFLG.EQ..TRUE.)CALL CLEARS(1,1) IF(BEEFLG.EQ..TRUE.)CALL POSITN(1,1) TYPE 40 40 FORMAT('$CREATE NEW TABLE FILES(Y/N)?>') READ(5,50,END=1020)REPLY 50 FORMAT(10A) IF(REPLY(1).EQ.'Y')GOTO60 IF(REPLY(1).EQ.'N')GOTO70 GOTO30 60 CALL CKOVL(MAPFL,IOVLAY,IERR) IF(IERR.EQ..FALSE.)GOTO21 TYPE 22 22 FORMAT(' *** MAP FILE MUST BE A FULL MAP ***') BRCODE=0 ISEQ=2 CALL SNDREC(IERR,ISEQ) GOTO1050 21 CALL PST(MAPFL,IOVLAY) CALL PRG(MAPFL,IOVLAY) 70 CALL OPENS(MAPFL,SGTADD,SGTLNT,IERR) CALL GETCNT(EXIT1,EXDAT1) CALL GETCNT(EXIT2,EXDAT2) CALL SETRP(EXIT1) CALL SETRP(EXIT2) IF(IOVLAY.NE..TRUE.)GOTO80 SGTLNT=SGTLNT/12 CALL GETCNT(ALBP2,ALBP2D) CALL SETRP(ALBP2) CALL STABLE(SGTADD,1) 80 CALL INITSG(IOVLAY,IERR) CALL LOCATE(CURPC,IOVLAY,CSGNAM,CMOD,CODE,ILINE,ICNT,IERR) IF(IERR.EQ..FALSE.)CALL PUTBLK(MESAGE,216,1,216) C C PPPPPPPP RRRRRRRRRR OOOOOOOOOO MMMMM MMMMM PPPPPPPP TTTTTTTTTTT C PPP PP RRRR RRR OOO OOO MMMMMM MMMMM PPP PP TTTT C PPP PP RRRR RRR OOO OOO MM MMM MMMMM MM PPP PP TTTT C PPPPPPP RRRRRRRRRR OOO OOO MM MMM MMM MM PPPPPPPP TTTT C PPP RRRR RRR OOO OOO MM MMM MM PPP TTTT C PPP RRRR RR OOOOOOOOOO MM MM PPP TTTT C 90 CALL PROMPT(CODE,BEEFLG) CALL CLRBUF(SNDATA,7,1,7) CALL PUTBLK(MESAGE,216,1,216) GOTO(130,160,200,230,270,360,370,410,860, + 960,970,980,990,1020,390,1000),QUETAB(1) GOTO90 C C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXXXXXXXXX EA ADDRES [NO BYTES][Q2/Q3] C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 130 BRCODE=3 ADDRES=AGIOCT(1) NBYTE=AGIOCT(2) IF(NBYTE.LT.4.AND.QUETAB(3).EQ.2)NBYTE=4 IF(NBYTE.EQ.0)NBYTE=2 140 ISEQ=1 CALL SNDREC(IERR,ISEQ) IF(IERR.EQ..TRUE.)GOTO960 IF(QUETAB(3).EQ.5)QUETAB(3)=0 CALL OUTPUT(NBYTE,QUETAB(3),DATA,4,QUETAB(4)) GOTO90 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXXXX EXAMINE BY REGISTER 'ER REG [Q3]' C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 160 BRCODE=1 REGNO=IREG ISEQ=1 CALL SNDREC(IERR,ISEQ) IF(IERR.EQ..TRUE.)GOTO960 IF(QUETAB(3).EQ.2)GOTO180 IF(QUETAB(3).EQ.5)QUETAB(3)=0 170 I=2 CALL OUTPUT(I,QUETAB(3),DATA,1,QUETAB(4)) GOTO90 180 ENCODE(46,190,MESAGE) 190 FORMAT(' REAL NUMBER OUTPUT NOT ALLOWED FOR REGISTERS') QUETAB(3)=0 GOTO170 C C EEEEEEEEEE PPPPPPP C EEEEE PP PP C EEEEEEEEE PPPPPPPP C EEEEE PP C EEEEEEEEEE PP C 200 BRCODE=2 ISEQ=1 CALL SNDREC(IERR,ISEQ) IF(IERR.EQ..TRUE.)GOTO960 210 CURPC=PCDATA CALL LOCATE(CURPC,IOVLAY,CSGNAM,CMOD,CODE,ILINE,ICNT,IERR) ENCODE(33,220,MESAGE(144))CURPC 220 FORMAT(' CURRENT PROGRAM COUNTER= ',O6) GOTO90 C C EEEEEEEEE SSSSSSSS C EEEE SSS C EEEEEEEE SSSSSSS C EEEE SSS C EEEEEEEEE SSSSSSSS C 230 BRCODE=3 CALL STRMOV(AGASCI(1,1),1,6,VARIAB,1) CALL STRMOV(AGASCI(1,3),1,6,MODULE,1) CALL STRMOV(AGASCI(1,4),1,6,SEGMNT,1) CALL LOCSYM(VARIAB,MODULE,SEGMNT,CMOD,CSGNAM, + IADD,ITYP,ISIZE,IERR) IF(IERR.EQ..TRUE.)GOTO250 ADDRES=IADD+AGIOCT(2) IF(ISIZE.GT.8)ISIZE=8 NBYTE=ISIZE IF(QUETAB(3).GT.0)GOTO140 QUETAB(3)=ITYP GOTO140 250 ENCODE(48,260,MESAGE)VARIAB 260 FORMAT(' ERROR-VARIABLE: ',3A2,' NOT FOUND IN TABLES****') GOTO90 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXXXXX CA START [NBYTE][DATA][/Q2] C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 270 BRCODE=5 ISEQ=2 NBYTE=AGIOCT(2) IS=3 IS2=3 IF(NBYTE.EQ.0)GOTO340 ADDRES=AGIOCT(1) 280 GOTO(290,300,310,310,290),QUETAB(3) 290 IF(QUETAB(5).EQ.5)QUETAB(3)=0 CALL STRMOV(AGIOCT(IS2),1,NBYTE,DATA,1) GOTO320 300 CALL STRMOV(REALS,1,NBYTE,DATA,1) GOTO320 310 CALL INPUT(NBYTE,QUETAB(3),DATA,AGASCI,IS) 320 CALL SNDREC(IERR,ISEQ) IF(IERR.EQ..TRUE.)GOTO960 GOTO90 340 ENCODE(28,350,MESAGE) 350 FORMAT(' *ILLEGAL NO. OF BYTES GIVEN*') GOTO90 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXXXXX CR REG NEWDATA[/Q2] NO REALS NO RADIX50 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 360 BRCODE=4 ISEQ=2 REGNO=IREG GOTO(362,362,365,365),QUETAB(3) 362 CALL STRMOV(AGIOCT(2),1,2,DATA,1) GOTO367 365 I=2 CALL INPUT(I,QUETAB(3),DATA,AGASCI,I) 367 CALL SNDREC(IERR,ISEQ) IF(IERR.EQ..TRUE.)GOTO960 GOTO90 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXXXX CS VAR [NEWDATA][STARTBYTE][MODULE][SEGMENT][/Q2] C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 370 BRCODE=5 ISEQ=2 CALL STRMOV(AGASCI(1,1),1,6,VARIAB,1) CALL STRMOV(AGASCI(1,4),1,6,MODULE,1) CALL STRMOV(AGASCI(1,5),1,6,SEGMNT,1) CALL LOCSYM(VARIAB,MODULE,SEGMNT,CMOD,CSGNAM, + IADD,ITYP,ISIZE,IERR) IF(IERR.EQ..TRUE.)GOTO250 ADDRES=IADD+AGIOCT(3) NBYTE=2 IF(QUETAB(3).EQ.2)NBYTE=4 IS=1 IF(QUETAB(3).GE.3)IS=2 IS2=2 IF(QUETAB(3).GT.0)GOTO280 QUETAB(3)=ITYP GOTO280 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXXXXXXX CP NUMBER [MODULE][SEGMENT][/O=OCTAL ADDRES] C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 390 IF(QUETAB(3).EQ.5)GOTO391 ILINE=AGIOCT(1) CALL STRMOV(AGASCI(1,2),1,6,MODULE,1) CALL STRMOV(AGASCI(1,3),1,6,SEGMNT,1) IF(LTEQGT(' ',SEGMNT,0).EQ.0)CALL STRMOV + (CSGNAM,1,6,SEGMNT,1) IF(LTEQGT(' ',MODULE,0).EQ.0)CALL STRMOV + (CMOD,1,6,MODULE,1) CALL LOCODE(ILINE,MODULE,SEGMNT,ADDRES,IERR,IOVLAY) IF(IERR.EQ..TRUE.)GOTO90 GOTO392 391 ADDRES=AGIOCT(1) 392 BRCODE=7 ISEQ=2 CALL SNDREC(IERR,ISEQ) GOTO200 C C PR [MS] [LINE] [MOD] [SEG][/Q1] C 410 TARFLG=.FALSE. IF(CMDTAB(1).GE.2)TARFLG=.TRUE. MAXSTP=AGIOCT(1) IF(MAXSTP.EQ.0)MAXSTP=1 IF(TARFLG.EQ..FALSE.)GOTO415 TARLNE=AGIOCT(2) IFIRST=.FALSE. IF(TARLNE.EQ.0)IFIRST=.TRUE. CALL STRMOV(AGASCI(1,3),1,6,TARMOD,1) CALL STRMOV(AGASCI(1,4),1,6,TARSEG,1) IF(LTEQGT(' ',TARMOD,0).EQ.0) + CALL STRMOV(CMOD,1,6,TARMOD,1) IF(LTEQGT(' ',TARSEG,0).EQ.0) + CALL STRMOV(CSGNAM,1,6,TARSEG,1) TSLN=LTEQGT(TARSEG,' ',1)-1 TMLN=LTEQGT(TARMOD,' ',1)-1 415 DO 460 I=1,MAXSTP CALL PUTBLK(MESAGE,216,1,216) 425 CALL OBJGO(AUTOFG,EXITFG,CURPC,IERR,ERCODE) IF(IERR.EQ..TRUE.)GOTO840 IF(AUTOFG.EQ..TRUE.)GOTO470 IF(EXITFG.EQ..TRUE.)GOTO852 CALL LOCATE(CURPC,IOVLAY,CSGNAM,CMOD,CODE,ILINE,ICNT,IERR) IF(IERR.EQ..TRUE.)GOTO90 IF(RSAUTO.EQ..TRUE.)GOTO427 420 IF(PREBPT.GT.0)CALL SETRP(PREBPT) GOTO440 427 RSAUTO=.FALSE. CALL SETRP(ALBP2) DO 428 ICK=1,SGTLNT IF(LTEQGT(PRESEG,SEGTAB(1,ICK),0).EQ.0 + .AND.SEGTAB(4,ICK).EQ.1 + .AND.SEGTAB(5,ICK).EQ.1)GOTO420 428 CONTINUE 440 CALL STRMOV(CSGNAM,1,6,PRESEG,1) PREBPT=CURPC CALL RESTOR(CURPC,ICNT) IF(TARFLG.EQ..FALSE.)GOTO454 IF(LTEQGT(CMOD,TARMOD,TMLN).GE.1.AND. + LTEQGT(CSGNAM,TARSEG,TSLN).GE.1)GOTO445 GOTO454 445 IF(IFIRST.EQ..FALSE..AND.ILINE.NE.TARLNE)GOTO454 CALL PUTBLK(MESAGE,216,1,216) ENCODE(30,450,MESAGE(1)) 450 FORMAT(' *TARGET ENCOUNTERED!!!!!!!!*') GOTO90 454 IF(QUETAB(2).EQ.1.OR.MAXSTP.LE.I)GOTO460 IF(BEEFLG.EQ..TRUE.)CALL POSITN(2,1) TYPE 456,CSGNAM,CMOD 456 FORMAT(1X,3A2,1X,3A2) IF(BEEFLG.EQ..TRUE.)CALL POSITN(6,1) TYPE 455,(CODE(ICK),ICK=1,36) 455 FORMAT(1X,36A2) IF(BEEFLG.EQ..TRUE.)CALL POSITN(24,1) 460 CONTINUE GOTO90 470 CALL STABLE(SGTADD,0) CALL INITSG(IOVLAY,IERR) IF(IERR.EQ..TRUE.)GOTO90 RSAUTO=.TRUE. CALL RESTOR(ALBP2,ALBP2D) GOTO425 840 ENCODE(50,850,MESAGE)ERCODE,CURPC 850 FORMAT(' OTHER TRAP ENCOUNTERED TRAP. NUMBER:',I2,' PC=',O6) ENCODE(62,851,MESAGE(74)) 851 FORMAT(' 1=ODD ADDRESS',' 2=SEGMENT FAULT',' 4=IOT INSTR.', + ' 5=RESEREVED INSTR.') ENCODE(74,855,MESAGE(146)) 855 FORMAT(' 6=NON-IAS EMT', + ' 7=TRAP INSTR.',' 8=FLOATING POINT ERROR', + ' 9=MEMORY PARITY ERROR') GOTO90 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXXXXX ST TRAPNO [NO] C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 860 IF(AGIOCT(1).LT.0.OR.AGIOCT(1).GT.100)GOTO940 IF(AGIOCT(1).EQ.0)GOTO920 IF(AGIOCT(2).EQ.0)GOTO890 IF(TRAPTB(1,AGIOCT(1)).EQ.0)GOTO870 BRCODE=5 NBYTE=2 ADDRES=TRAPTB(1,AGIOCT(1)) DATA(1)=TRAPTB(2,AGIOCT(1)) ISEQ=2 CALL SNDREC(IERR,ISEQ) 870 TRAPTB(1,AGIOCT(1))=AGIOCT(2) CALL GETCNT(AGIOCT(2),ICNT) TRAPTB(2,AGIOCT(1))=ICNT 880 CALL SETRP(AGIOCT(2)) GOTO90 890 BRCODE=5 NBYTE=2 ADDRES=TRAPTB(1,AGIOCT(1)) DATA(1)=TRAPTB(2,AGIOCT(1)) IF(DATA(1).EQ.0)GOTO900 ISEQ=2 TRAPTB(1,AGIOCT(1))=0 TRAPTB(2,AGIOCT(1))=0 GOTO880 900 ENCODE(46,910,MESAGE)AGIOCT(1) 910 FORMAT(' TRAP NO. ',I5,' NOT CLEARED. RE: WAS NOT SET.') GOTO90 920 BRCODE=5 ISEQ=2 NBYTE=2 DO 930 I=1,100 IF(TRAPTB(1,I).EQ.0)GOTO930 ADDRES=TRAPTB(1,I) DATA(1)=TRAPTB(2,I) CALL SNDREC(IERR,ISEQ) TRAPTB(1,I)=0 TRAPTB(2,I)=0 930 CONTINUE GOTO90 940 ENCODE(24,950,MESAGE)AGIOCT(1) 950 FORMAT(' ILLEGAL TRAP NO.: ',I5) GOTO90 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXX FOLLOW A COMMAND FILE FF [FSPEC] C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 960 LUN=10 I=7 965 CALL FILIO(LUN,QUETAB(I),FSPECA,FNC,IERR) IF(IERR.EQ..TRUE.)ENCODE(55,967,MESAGE)FSPECA 967 FORMAT(' *OPEN ERROR; FILE:',24A1,',NOT FOUND *') GOTO90 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXX KEEP HISTORY FILE HF [FSPEC] C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 970 LUN=11 I=8 GOTO965 C C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXX DUMP TABLES DT [TYPE] [MODULE] [SEGMENT] [IDENT] C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 980 CALL STRMOV(AGASCI(1,1),1,6,TYPE3,1) CALL STRMOV(AGASCI(1,2),1,6,MODULE,1) CALL STRMOV(AGASCI(1,3),1,6,SEGMNT,1) CALL STRMOV(AGASCI(1,4),1,6,VARIAB,1) IF(LTEQGT(' ',MODULE,0).EQ.0) + CALL STRMOV(CMOD,1,6,MODULE,1) IF(LTEQGT(' ',SEGMNT,0).EQ.0) + CALL STRMOV(CSGNAM,1,6,SEGMNT,1) CALL DMPTAB(TYPE3,MODULE,SEGMNT,VARIAB,QUETAB(4)) GOTO90 C C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXX HELP ONE LINERS(WITH NO PUNCH LINE) HE [COMMAND] C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 990 CALL HELP(AGASCI(1,1),QUETAB(4)) GOTO90 C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXXXXX SEGMENTS IN MEMORY: SE.GMENTS C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 1000 IF(BEEFLG.EQ..TRUE.)CALL POSITN(24,1) TYPE 1002 1002 FORMAT(' SEGMENTS IN MEMORY'/, + ' SEGNO. SEGMENT NAME ' + ' -----------------------------') DO 1003 I=1,SGTLNT IF(SEGTAB(4,I).GT.0)TYPE 1004,I,(SEGTAB(J,I),J=1,3) 1004 FORMAT(I5,1X,3A2) 1003 CONTINUE GOTO90 C C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX C XXXXXXXXX TASK TERMINATION C XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 1020 BRCODE=0 ISEQ=2 CALL SNDREC(IERR,ISEQ) 852 CALL RESTOR(EXIT1,EXDAT1) CALL RESTOR(EXIT2,EXDAT2) BRCODE=0 CALL SNDREC(IERR,ISEQ) IF(BEEFLG.EQ..TRUE.)CALL POSITN(24,1) TYPE 853 853 FORMAT(' **** OBJECT TASK EXITING ****') IF(BEEFLG.EQ..TRUE.)CALL POSITN(24,1) 1040 CLOSE(UNIT=1) CLOSE(UNIT=2) CLOSE(UNIT=3) CLOSE(UNIT=4) CLOSE(UNIT=7) IF(QUETAB(7).GT.0)CLOSE(UNIT=10) IF(QUETAB(8).GT.0)CLOSE(UNIT=11) 1050 IF(BEEFLG.EQ..TRUE.)CALL POSITN(24,1) TYPE 1030 1030 FORMAT(' STOPPED ') END