Trailing-Edge
-
PDP-10 Archives
-
decuslib20-03
-
decus/20-0078/util/simatr.sim
There is 1 other file named simatr.sim in the archive. Click here to see a list.
00050 OPTIONS(/-Q/-D/-I/-A/P:"Display of attribute files");
00100 BEGIN
00150 EXTERNAL INTEGER PROCEDURE bitfield,input,andint,rdx50,imax,
00200 absadr,storebyte,wildsix,match6,sxrx50,sixbit,xcalli;
00250 EXTERNAL REF(Infile)PROCEDURE findinfile;
00300 EXTERNAL REF(Printfile) PROCEDURE findprintfile;
00350 EXTERNAL REF(Directfile) PROCEDURE finddirectfile;
00400 EXTERNAL TEXT PROCEDURE conc,idrx50,idsixbit,litenbokstav,inline,
00450 checkextension,scanto,tsub,compress,rest,upcase,octal;
00500 EXTERNAL CHARACTER PROCEDURE fetchar,findtrigger;
00510 EXTERNAL BOOLEAN PROCEDURE dotypeout;
00550 EXTERNAL PROCEDURE abort,depchar,exit;
00600 EXTERNAL CLASS atrstr, dirhnd;
00650 atrstr CLASS atrdisplay;
00700 BEGIN
00750 BOOLEAN pending_semicolon, pending_new_line, atr_open;
00800 CHARACTER delimiter;
00850 REF(Printfile)displayfile;
00900 INTEGER rlimit, level, indentation_step, base_indentation;
00950 REF(zde)next_zde;
01000 TEXT endtext,begintext,switchtext,entrytext,statement_marker;
01050 TEXT protectedtext,innertext;
01100 CHARACTER null;
01150 INTEGER i;
01200 TEXT t,u;
01250 TEXT ARRAY zhetype[0:13];
01300 TEXT ARRAY typecode[0:9];
01350 TEXT ARRAY kindcode[0:4];
01400 TEXT ARRAY modecode[0:7];
01450 TEXT ARRAY mfocode[0:5];
01500
01550 PROCEDURE atrclose;
01600 INSPECT atrfile DO IF atr_open THEN
01650 BEGIN Close; atr_open:= FALSE;
01700 END;
01750
01800 REF(zde) PROCEDURE zdeload(zdetyp); INTEGER zdetyp;
01850 INSPECT
01900 (IF zdetyp=qzqu THEN NEW zqud ELSE
01950 (IF zdetyp=qzhb THEN NEW zhbd ELSE
02000 (IF zdetyp=qzhe THEN NEW zhed ELSE
02050 (IF zdetyp=-1 THEN NEW zebd ELSE
02100 (IF zdetyp=-2 THEN NEW zheqquachd ELSE NONE)))))
02150 DO BEGIN load; zdeload:- THIS zde END;
02200
02250 PROCEDURE Setpos(i); INTEGER i;
02300 INSPECT displayfile DO Setpos(i);
02350
02400 PROCEDURE Putint(i,n); INTEGER i,n;
02450 BEGIN TEXT t;
02500 t:- Blanks(n); t.Putint(i); putitem(null,t);
02550 END putint;
02600
02650 !;! PROCEDURE putimage; !;! INSPECT displayfile DO Outimage;
02700
02750 PROCEDURE blanklines(n); INTEGER n;
02800 INSPECT displayfile DO
02850 BEGIN
02900 Outimage; pending_new_line:= FALSE;
02950 IF n>0 THEN Eject(Line+n);
03000 END;
03050
03100 PROCEDURE puttext(t); TEXT t; putitem(null,t);
03150
03200 PROCEDURE putitem(c,t); TEXT t; CHARACTER c;
03250 INSPECT displayfile DO
03300 BEGIN INTEGER i;
03350 i := 1 + (level-1) * indentation_step + base_indentation;
03400 IF i <= 0 THEN i:= 1;
03450 IF pending_semicolon THEN
03500 BEGIN Outchar(';'); pending_semicolon:= FALSE END;
03550 IF pending_new_line OR
03600 Pos > rlimit OR Pos <= i OR Length-Pos<t.Length+3 THEN
03650 BEGIN
03700 IF NOT (Letter(c) OR Digit(c) OR c=' ' OR c=null) THEN
03750 BEGIN Outchar(c); c:= null END;
03800 IF Pos > i THEN
03850 BEGIN
03900 IF Image.Strip =/= NOTEXT THEN Outimage;
03950 IF c=' ' THEN c:= null;
04000 END; pending_new_line:= FALSE;
04050 Setpos(i);
04100 END ELSE IF fetchar(Image,Pos-1)=';' THEN Setpos(Pos+1);
04150 IF NOT(c = null OR (c=' ' AND Pos <= i)) THEN Outchar(c);
04200 IF t =/= NOTEXT THEN
04250 BEGIN IF c=';' THEN Outchar(' '); Outtext(t) END;
04300 END putitem;
04350
04400 PROCEDURE new_line; pending_new_line:= TRUE;
04450
04500 PROCEDURE putsemicolon; pending_semicolon:= TRUE;