T/CONST/ TS/DETPWDVC/ T+1 I/ DETPLWDVC = ?I 30000000;/// TS/EHIMPERROR/ I/ EHPASSYSERR = 1500;/// R/1900/10000/ TS/(* GENERAL VALUES/ I/ (* CDIAG PARAMETER VALUES *) EHCTMINOP = 0; EHCTHEXDUMP = 1; EHCTHLDUMP = 2; EHCTMACVALUES = 10; EHCTMINOPMAC = 10; EHCTHEXDUMPMAC = 11; EHCTHLDUMPMAC = 12; / TS/LOGCTDIAGTYPE/ R/4/5/ T/TYPE/ TS/EHDOCNMESSTYPE/ T+4 R/);/,// MAINPROGBLKMESS, CODEAREAMESS, PASSUPSWERRMESS);/ TS/EHCTDOCNMESSTYPE/ T+2 B/)/, ACTIVEPROCSMESS/ TS/CDIAGTYPE/ P+1 I/ CDIAGTYPE = EHCTMINOP..EHCTHLDUMPMAC;/// T/VAR/ TS/COMPILERSTACKBASEAD :/ I/ CTDIAGMESSTYPE : INTEGER;/// TC/SFL CTM INTERFACE/ TC/ICL9LPCTMLOG/ I/PROCEDURE ICL9LPCTMDUMP (SUBTYP, TYP, FRAMESDATA : INTEGER; AREASDR : LWVDESC; OPTIONS : INTEGER) ; EXTERN ; / TC/OPEH PROCEDURE/ TC/ICL9HEPROLOG/ I/PROCEDURE ICL9HERESET ; EXTERN ; / TC/FORWARD REFERENCES :- ****)/ TS/(* FROM FILE SECT/ I/ (* WITHIN FILE SECTION (FSTART) *) PROCEDURE ICL9LPWRITELINE (VAR FV : FVAR) ; FORWARD ; / T/PROCEDURE WRITESIGHEXWORD / TS/SIG :/ I/ LEFTDIG, RIGHTDIG : BYTE; / TS/SIG := SIG / PS/END;/ I/ LEFTDIG := B DIV 16; RIGHTDIG := B MOD 16; SIG := SIG OR (LEFTDIG <> 0); IF SIG THEN WRITE(F,HEXDIGITS[LEFTDIG]); SIG := SIG OR (RIGHTDIG <> 0); IF SIG OR (I=3) THEN WRITE(F,HEXDIGITS[RIGHTDIG]); / T/PROCEDURE EHDUMPAREA/ TS/WRITELN/ P+1 TS/WRITELN/ P+1 T/PROCEDURE EHWRITECTDOCNMESS/ TS/WRITESIGHEXWORD/ I/ WRITE(DIAGFP@,'X');/// T/PROCEDURE EHCTREPORT/ I/PROCEDURE EHGETVMDUMP (CONTTYPE, CONTSUBTYPE : POSINT); VAR HEAPDR : STRDESC; AREASDR : LWVDESC; AREAAD : ADDRESS; AREALEN : SGMTRNGB; BEGIN GIVEHEAPBASEANDSIZE(AREAAD,AREALEN); DEVARSETUP(HEAPDR,DETPBVC,AREALEN,AREAAD); DEVARSETUP(AREASDR,DETPLWDVC,1,ADDRESSOF(HEAPDR)); ICL9LPCTMDUMP(CONTSUBTYPE,CONTTYPE,16,AREASDR,0); END (* EHGETVMDUMP *); / B/EH/ / TS/STACKDESCENT/ I/ LOCALCDIAG : CDIAGTYPE; / TC/FAILUREHEAD/ I/ CTDIAGMESSTYPE := LOGCTSUMMARYTYPE;/// T+2 I/ IF CDIAG >= EHCTMACVALUES THEN BEGIN CTDIAGMESSTYPE := LOGCTSUMMARYTYPE; LOCALCDIAG := CDIAG - EHCTMACVALUES; END ELSE BEGIN CTDIAGMESSTYPE := LOGCTDIAGTYPE; LOCALCDIAG := CDIAG; END; / P+3 *4(D/ / G) D/ / B/);/:1/ G D/ / G I/ WRITELN(DIAGFP@);/// *11(D/ / G) I/ IF (LOCALCDIAG = EHCTHEXDUMP) OR (ERRORNO = EHSTACKCONTINGENCY) THEN EHGETVMDUMP(ERRORNO,SUBTYPE) ELSE BEGIN EHWRITECTDOCNMESS(ACTIVEPROCSMESS); WRITELN(DIAGFP@); / T+2 B/CD/LOCAL/ R/NULL/MINOP/ T/PROCEDURE EHWRITELINENO/ TS/WRITESIGHEXWORD/ I/ WRITE(DIAGFP@,'X');/// T/PROCEDURE EHWRITEBLOCKID/ TS/IF DIAGNAMETABLE/ B/DIAG/DIAGLINEMAP OR / TS/IF BLKKIND/ PC/(* EHWRITE/ I/ CASE BLKKIND OF PROGBLK : BLKKINDMESS := MAINPROGBLKMESS; PROCBLK : BLKKINDMESS := PROCEDUREMESS; FUNCBLK : BLKKINDMESS := FUNCTIONMESS; UNKNOWNBLK : BLKKINDMESS := CODEAREAMESS; END; EHWRITEDOCNMESS(BLKKINDMESS); IF BLKKIND IN [PROCBLK,FUNCBLK] THEN BEGIN WRITESIGALFA(DIAGFP@,BLKNAME); WRITE(DIAGFP@,' '); END; / T/FUNCTION ICL9LPPMPROCL/ TC/(* TXBFAD) OR THROWPAGE) THEN ICL9LPWRITELINE (FV) ; / D/THEN/ G I/ END/// T/PROCEDURE EDTXLNOUT/ TS/SCEDR/ I/ LENB : RCBFRNG;/// TS/IF LNBFLENB = 0/ PS/IF CCTTP <>/ I/ IF LNBFLENB + EDBFLENB > EDFDP@.EDMXRCLENB THEN LENB := EDFDP@.EDMXRCLENB - EDBFLENB ELSE LENB := LNBFLENB ; / D/ / G D/ / R/LNBFLENB/LENB/ *2(G D/ / D/LNBF/) G D/ / G D/ / D/LNBF/ G P+1 T/PROCEDURE STDSYSTXLNOUT/ T/ FUNCTION HNOPLINE/ P/ BEGIN/ G T./)/ T.+1 P.E TS/CASE/ PS/END (* CASE / I/ DEVARSETUP(TEXTDR,DETPBVC,LNBFLENB,LNBFAD); CASE KIND OF RTJRNL : ICL9LPCTMLOG(TEXTDR); CTJRNL : W := ICL9HNLOG(TEXTDR,LOGCTSUMMARYTYPE); CTDIAG : W := ICL9HNLOG(TEXTDR,CTDIAGMESSTYPE); RTDIAG : BEGIN W := -1; ICL9HEDIAGOUT(W,TEXTDR); END; CTLIST : BEGIN IF THROWPAGE THEN W := ICL9HNNEWPAGE; DEVARSETUP(TEXTDR,DETPBVC,LNBFLENB+2,LNBFAD-2); W := ICL9HNOUTPUTLINE(TEXTDR); IF W > 0 THEN W := ICL9HNOUTPUTLINE(TEXTDR); END; / T/PROCEDURE ICL9LPWRITELINE/ A/(/*/ B/)/*/ TS/OLDBUF/ I/ BFLENB : RCBFRNG;/// TS/IF TXFKIND/ I/ BFLENB := FV.CHAD - TXBFAD; IF BFLENB = 0 THEN BEGIN STOREBYTEAT(FUCRUPVCP@[UCSPACE],TXBFAD); BFLENB := 1; END; / T+2 T./FV./ P.E I/BFLENB,/ T+3 T./FV./ P.E I/BFLENB,/ E