T/CONST/ TS/STARTOFGLOBALSPACE/ R/6/8/ TS/GLOBALLNBDESCOFFSET/ P+1 T+1 P-2 T+1 P+1 I/ JLKSUPPORTLINKOFFSET = 6 ;/// T/TYPE/ TS/COUNTERADDRRANGE/ I/ KINDOFBLOCK = (PROGBLOCK, PROCBLOCK, FUNCBLOCK, UNKNOWNBLOCK);/// T/PROCEDURE MAPTHISBLOCK (/ TS/BEGIN/ I/ VAR BLOCKKIND : KINDOFBLOCK; I, NAMELENGTH : 0..ALFALENGTH; / TS/IF/ D/ AND REQD[DUMP]/ TS/BEGIN/ PS/END (* MAPTHISBLOCK/ I$ BEGIN PUTMAPBYTE(0); PUTMAPBYTE(0); IF REQD[DUMP] THEN BEGIN PUTMAPBYTE(BLOCK@.SERIAL DIV 256); PUTMAPBYTE(BLOCK@.SERIAL MOD 256); END ELSE WITH BLOCK@ DO BEGIN IF KLASS=PROG THEN BLOCKKIND:=PROGBLOCK ELSE IF KLASS=PROC THEN BLOCKKIND:=PROCBLOCK ELSE IF KLASS=FUNC THEN BLOCKKIND:=FUNCBLOCK ELSE (* SHOULD NEVER HAPPEN *) BLOCKKIND:=UNKNOWNBLOCK; PUTMAPBYTE(ORD(BLOCKKIND)); IF NAME[1]=BLANK THEN NAMELENGTH:=0 ELSE BEGIN NAMELENGTH:=ALFALENGTH; WHILE NAME[NAMELENGTH]=BLANK DO NAMELENGTH:=NAMELENGTH-1; END; PUTMAPBYTE(NAMELENGTH); FOR I:=1 TO NAMELENGTH DO PUTMAPBYTE( ORD(NAME[I]) ); END ; END; $ TS/END (* MAPTHISLINE *)/ T+1 I$ PROCEDURE NEWCODEDELTAINMAP; VAR CODEDELTA: BYTE; BEGIN CODEDELTA:=NEXTINS-PREVINS; PREVINS:=NEXTINS; PUTMAPBYTE(CODEDELTA DIV 256); PUTMAPBYTE(CODEDELTA MOD 256); END (* NEWCODEDELTAINMAP *); (* N.B. :- *) (* THE FOLLOWING THREE PROCEDURES SHOULD ALWAYS BE CALLED AS A TRIO *) (* IN IMMEDIATE SEQUENCE, I.E. WITH NO CALLS TO OTHER "MAP" PROCEDURES *) (* INTERVENING. *) PROCEDURE STARTMAPFORJLKTASK; BEGIN IF CODEISTOBEGENERATED AND REQD[LINEMAP] THEN BEGIN PUTMAPBYTE(0); PUTMAPBYTE(1); NEWCODEDELTAINMAP; END; END (* STARTMAPFORJLKTASK *); PROCEDURE MAPFENCEFORJLKTASK; BEGIN IF CODEISTOBEGENERATED AND REQD[LINEMAP] THEN BEGIN NEWCODEDELTAINMAP; END; END (* MAPFENCEFORJLKTASK *); PROCEDURE ENDMAPFORJLKTASK; BEGIN IF CODEISTOBEGENERATED AND REQD[LINEMAP] THEN BEGIN NEWCODEDELTAINMAP; END; END (* ENDMAPFORJLKTASK *); $ T/PROCEDURE CLOSESUPPORTTASKCONTROL ;/ TS/IF USEEXTERNALCALL/ I$ STARTMAPFORJLKTASK; PINS(STSF,XNB,UNMODIFIED,JLKSUPPORTLINKOFFSET); MAPFENCEFORJLKTASK; $ TS/PINS (J, TOS/ T+1 I$ ENDMAPFORJLKTASK;$$$ T/PROCEDURE READNEXTLINE ;/ TS/(*NOTECODEOFFSET(/ P+1 T/PROCEDURE INITLISTING ;/ I//// TELE