Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0062/meta2c.met
There are 2 other files named meta2c.met in the archive. Click here to see a list.
00100 .SYNTAX META2
00200
00300 OUT1: "*" ( "L" .OUT("PUSHJ"-"P,%LEN")/
00400 .NUMBER .OUT("PUSHJ"-"P,%GEN") .OUT("DEC"-*)/
00500 .EMPTY .OUT("PUSHJ"-"P,%COPYI"))/
00600 "CL#" .OUT("PUSHJ"-"P,%CLEVL+1")/
00700 "C#" .OUT("PUSHJ"-"P,%BLOCK+1")/COMPUTE/
00800 "BL#" .OUT("PUSHJ"-"P,%BLEVL+1")/
00900 "B#" .OUT("PUSHJ"-"P,%BLOCK")/
01000 "S#" .OUT("PUSHJ"-"P,%SYMB")/
01100 "N#" .NUMBER .OUT("PUSHJ"-"P,%CALND") .OUT("DEC"-*)/
01200 "^(" .NUMBER %1 "," AREX ")" ^1 .OUT("PUSHJ"-"P,%GET") .OUT("DEC"-*)/
01300 "^" .NUMBER .OUT("PUSHJ"-"P,%POP") .OUT("DEC"-*)/
01400 ("+%(" .OUT("TLO"-"F,SCATEN") / "%(") .NUMBER %1 "," AREX ")" ^1
01500 .OUT("PUSHJ"-"P,%PUT") .OUT("DEC"-*)/
01600 ("+%" .OUT("TLO"-"F,SCATEN") / "%") .NUMBER
01700 .OUT("PUSHJ"-"P,%PUSH") .OUT("DEC"-*)/
01800 ("+#(" .OUT("TLO"-"F,SCATEN") / "#(") .NUMBER %1 "," AREX ")"
01900 .STRING %2^1 .OUT("PUSHJ"-"P,%PUT") .OUT("XWD"-"-1,^D"*)
02000 ^2 .OUT("ASCIZ"-*)/
02100 ("+#" .OUT("TLO"-"F,SCATEN") / "#") .NUMBER %1 .STRING %2^1
02200 .OUT("PUSHJ"-"P,%PUSH") .OUT("XWD"-"-1,^D"*) ^2 .OUT("ASCIZ"-*)/
02300 "-" .OUT("PUSHJ"-"P,%COPYL") .OUT("BYTE"-"(7) 011,0")/
02400 .STRING .OUT("PUSHJ"-"P,%COPYL") .OUT("ASCIZ"-*);
02500
02600 OUTPUT: ".OUT" "(" .OUT("PUSHJ"-"P,%COPYL") .OUT("BYTE"-"(7) 011,0")
02700 *OUT1 ")" .OUT("PUSHJ"-"P,%COPYL") .OUT("BYTE"-"(7) 015,012,0")/
02800 ".LABEL" ("(" *OUT1 ")" / OUT1 )
02900 .OUT("PUSHJ"-"P,%COPYL") .OUT("ASCIZ"-"/:/")/
03000 ".RESET" .OUT("PUSHJ"-"P,%SETRE")/
03100 ".N$*" .OUT("PUSHJ"-"P,%CPYDC")/
03200 ".N$S" .OUT("PUSHJ"-"P,%CPYDC+1")/
03300 ".*" .NUMBER .OUT("HLRZ"-"T,(P)") .OUT("ADDI"-"T,^D"*)
03400 .OUT("PUSH"-"P,T") .OUT("PUSHJ"-"P,%PUTNM")/
03500 ":" .ID %1 "[" .NUMBER "]" .OUT("PUSHJ"-"P,%MAKND")
03600 .OUT("XWD"-"^D"*^1","*)/
03700 ".TYPE" .STRING .OUT("PUSHJ"-"P,%TYPE") .OUT("ASCIZ"-*)/
03800 "^(" .NUMBER %1 "," AREX ")" ^1 .OUT("PUSHJ"-"P,%GET") .OUT("DEC"-*)/
03900 "^" .NUMBER .OUT("PUSHJ"-"P,%POP") .OUT("DEC"-*)/
04000 ("+%(" .OUT("TLO"-"F,SCATEN") / "%(") .NUMBER %1 "," AREX ")" ^1
04100 .OUT("PUSHJ"-"P,%PUT") .OUT("DEC"-*)/
04200 ("+%" .OUT("TLO"-"F,SCATEN") / "%") .NUMBER
04300 .OUT("PUSHJ"-"P,%PUSH") .OUT("DEC"-*)/
04400 ("+#(" .OUT("TLO"-"F,SCATEN") / "#(") .NUMBER %1 "," AREX ")"
04500 .STRING %2^1 .OUT("PUSHJ"-"P,%PUT") .OUT("XWD"-"-1,^D"*)
04600 ^2 .OUT("ASCIZ"-*)/
04700 ("+#" .OUT("TLO"-"F,SCATEN") / "#") .NUMBER %1 .STRING %2^1
04800 .OUT("PUSHJ"-"P,%PUSH") .OUT("XWD"-"-1,^D"*) ^2 .OUT("ASCIZ"-*)/
04900 ".BEGIN" .OUT("PUSHJ"-"P,%BEGIN")/
05000 ".END" .OUT("PUSHJ"-"P,%END")/ COMPUTE /
05100 ".SETSCAN" .OUT("PUSHJ"-"P,%SCAN") .OUT("DEC"-"0")/
05200 ".ENTER" .OUT("PUSHJ"-"P,%LOOK")
05300 (-"C" .OUT("DEC"-"-1") / .EMPTY .OUT("DEC"-"2"))/
05400 ".CLEAR" .NUMBER .OUT("PUSHJ"-"P,%CLEAR") .OUT("DEC"-*)/
05500 ".SET" .NUMBER .OUT("PUSHJ"-"P,%SET") .OUT("DEC"-*);
05600
05700 EX3: ".ID" .OUT("PUSHJ"-"P,%ID")/ IFSTUFF /
05800 ".TREE" .OUT("PUSHJ"-"P,%DMPTR")/
05900 ".N#" .NUMBER .OUT("PUSHJ"-"P,%CALND") .OUT("DEC"-*)/
06000 ".EMPTY" .OUT("TLO"-"F,SUCCES")/
06100 ".STRING" .OUT("PUSHJ"-"P,%STR")/
06200 ".NUMBER" .OUT("PUSHJ"-"P,%NUM")/
06300 ".CHECK" .NUMBER .OUT("PUSHJ"-"P,%CHECK") .OUT("DEC"-*)
06400 ("SET"/"CLEAR" .OUT("TLC"-"F,SUCCES"))/
06500 ".UNTIL" .STRING .OUT("PUSHJ"-"P,%UNTIL") .OUT("ASCIZ"-*)/
06600 "-.ID" .OUT("PUSHJ"-"P,%ID+1")/
06700 "-.STRING" .OUT("PUSHJ"-"P,%STR+1")/
06800 "-.NUMBER" .OUT("PUSHJ"-"P,%NUM+1")/
06900 "-" .STRING .OUT("PUSHJ"-"P,%TST+1") .OUT("ASCIZ"-*)/
07000 .ID .OUT("PUSHJ"-"P," *)/
07100 .STRING .OUT("PUSHJ"-"P,%TST") .OUT("ASCIZ"-*)/
07200 ".NODE" "(" .OUT("MOVE"-"T,%MARK") .OUT("TLO"-"F,SUCCES")
07300 .OUT("IF1"-"<"*2"=1>") .OUT("MOVE"-"T+1,1(T)") .OUT("CAIE"-"T+1,"*2)
07400 .OUT("TLZ"-"F,SUCCES") .OUT("JUMPGE"-"F,"*1) .OUT("ADD"-"T,1(T)")
07500 TSTITM *("," .OUT("JUMPGE"-"F,"*1) .OUT("IF1"-"<"*2"="*2"+1>")
07600 TSTITM) ")" .LABEL *1 /
07700 ".SCAN" .OUT("PUSHJ"-"P,%SCAN") .OUT("DEC"-"1")/
07800 ".LOOK" .OUT("PUSHJ"-"P,%LOOK")
07900 (-"C" .OUT("DEC"-"0") / .EMPTY .OUT("DEC"-"1"))/
08000 ".NOT" "(" .OUT("TLO"-"F,NDELET") EX3 ")"
08100 .OUT("TLC"-"F,SUCCES") .OUT("TLZ"-"F,BACKUP+NDELET")/
08200 ".PEEK" "(" .OUT("TLO"-"F,NDELET")
08300 (EX3 .OUT("JUMPGE"-"F," *1) / OUTPUT)
08400 *(EX3 .OUT("JUMPGE"-"F," *1) / OUTPUT)
08500 .LABEL *1 .OUT("TLZ"-"F,NDELET") ")"
08600 .OUT("TLNN"-"F,SUCCES") .OUT("TLZ"-"F,BACKUP")/
08700 "(" EX1 ")"/
08800 "*" .LABEL *1 EX3 .OUT("JUMPL"-"F," *1) .OUT("TLO"-"F,SUCCES");
08900
09000 EX2: (EX3 .OUT("JUMPGE"-"F," *1) / OUTPUT .OUT("TLO"-"F,SUCCES"))
09100 *(EX3 .OUT("JUMPGE"-"F,%ERROR") / OUTPUT ) .LABEL *1;
09200
09300 TSTITM: (.ID .OUT("SKIPLE"-"T+1,1(T)") .OUT("CAILE"-"T+1,777777")
09400 .OUT("JRST"-".+3") .OUT("MOVE"-"T+1,(T+1)") .OUT("CAIE"-"T+1,"*)
09500 .OUT("TLZ"-"F,SUCCES") ("(" .OUT("JUMPGE"-"F,"*1"+1") .OUT("PUSH"-"P,T")
09600 .OUT("MOVE"-"T,1(T)") .OUT("IF1"-"<"*2"=1>")
09700 .OUT("MOVE"-"T+1,1(T)") .OUT("CAIE"-"T+1,"*2)
09800 .OUT("TLZ"-"F,SUCCES") .OUT("JUMPGE"-"F,"*1) .OUT("ADD"-"T,1(T)")
09900 TSTITM *("," .OUT("JUMPGE"-"F,"*1) .OUT("IF1"-"<"*2"="*2"+1>")
10000 TSTITM) ")" .LABEL *1 .OUT("POP"-"P,T") /.EMPTY )/
10100 "*" .OUT("MOVE"-"T+1,1(T)") .OUT("TLNE"-"T+1,777777")
10200 .OUT("SOJA"-"T,.+3") .OUT("TLZ"-"F,SUCCES")/
10300 ("-" .NUMBER [*:=-*]/.NUMBER) .OUT("MOVE"-"T+1,[DEC "*"]")
10400 .OUT("CAME"-"T+1,1(T)") .OUT("TLZ"-"F,SUCCES")/ .EMPTY)
10500 .OUT("SOJ"-"T,");
10600
10700 EX1: EX2 *("/" .OUT("JUMPL"-"F," *1) EX2) .LABEL *1;
10800
10900 COMPUTE: "[" ( "*" ":=" AREX "]" .OUT("PUSHJ"-"P,%PUTNM")/
11000 "N$" ":=" AREX "]" .OUT("POP"-"P,T") .OUT("PUSH"-"STK1,T")/
11100 .ID %1 ("(" AREX ")" ":=" AREX "]"
11200 .OUT("POP"-"P,T") .OUT("POP"-"P,T+1") .OUT("MOVEM"-"T,"^1*"-1(T+1)")/
11300 ":=" AREX "]" .OUT("POP"-"P,"^1*)));
11400
11500 IFSTUFF: ".IF" "(" BOOLEX ")" .OUT("POP"-"P,T") .OUT("TLO"-"F,SUCCES")
11600 .OUT("JUMPN"-"T,.+2") .OUT("TLZ"-"F,SUCCES");
11700
11800 BOOLEX: BOOLTM *(".OR." BOOLTM .OUT("POP"-"P,T") .OUT("ORM"-"T,(P)"));
11900
12000 BOOLTM: BOOLPR *(".AND." BOOLPR .OUT("POP"-"P,T") .OUT("ANDM"-"T,(P)"));
12100
12200 BOOLPR: ".NOT." BOOLPR .OUT("SETCMM"-"(P)") / AREX REL AREX
12300 .OUT("POP"-"P,T+1") .OUT("POP"-"P,T") .OUT("PUSH"-"P,[0]")
12400 .OUT("CAM"^2*-"T,T+1") .OUT("SETCMM"-"(P)");
12500
12600 REL: ".EQ." #2"N" / ".NE." #2"E" / ".LT." #2"GE" /
12700 ".LE." #2"G" / ".GT." #2"LE" / ".GE." #2"L" ;
12800
12900 AREX: TERM *("+" TERM .OUT("POP"-"P,T") .OUT("ADDM"-"T,(P)")/
13000 "-" TERM .OUT("POP"-"P,T") .OUT("EXCH"-"T,(P)")
13100 .OUT("SUBM"-"T,(P)"));
13200
13300 TERM: PRIME *("*" PRIME .OUT("POP"-"P,T") .OUT("IMULM"-"T,(P)")/
13400 "/" PRIME .OUT("POP"-"P,T") .OUT("EXCH"-"T,(P)") .OUT("IDIVM"-"T,(P)")/
13500 "REM" PRIME .OUT("POP"-"P,T") .OUT("EXCH"-"T,(P)")
13600 .OUT("IDIV"-"T,(P)") .OUT("MOVEM"-"T+1,(P)"));
13700
13800 PRIME: .NUMBER .OUT("PUSH"-"P,[DEC "*"]")/
13900 "(" AREX ")" / "-" PRIME .OUT("MOVNS"-"(P)")/
14000 "*L" .OUT("PUSHJ"-"P,%XLEN")/
14100 "*" .OUT("PUSHJ"-"P,%GETNM")/
14200 "SL#" .NUMBER .OUT("PUSHJ"-"P,%LEVEL") .OUT("DEC"-*)/
14300 "S#" .OUT("PUSHJ"-"P,%XSYMB")/
14400 "CL#" .OUT("PUSHJ"-"P,%CLEVL")/
14500 "BL#" .OUT("PUSHJ"-"P,%BLEVL")/
14600 "B#" .OUT("PUSHJ"-"P,%XBLK")/
14700 "C#" .OUT("PUSHJ"-"P,%XBLK+1")/
14800 "N#" .NUMBER .OUT("PUSHJ"-"P,%CALND") .OUT("XWD"-"-1,^D"*)/
14900 .ID ("(" %1 AREX ")" .OUT("POP"-"P,T")
15000 .OUT("PUSH"-"P,"^1*"-1(T)") / .EMPTY .OUT("PUSH"-"P,"*));
15100
15200 DECLARE: ".INTEGER" ITEM *("," ITEM) ;
15300
15400 ITEM: .ID .LABEL * ("(" .NUMBER ")" .OUT("BLOCK"-*)/
15500 .EMPTY .OUT("BLOCK"-"1"));
15600
15700 COMMENT: ".COMMENT" .UNTIL ";" ;
15800
15900 ST: .ID ":" .LABEL * .OUT("HRLM"-"F,(P)") .OUT("ADDI"-"F,4")
16000 *EX1 ";" .OUT("POPJ"-"P,")/COMMENT;
16100
16200 META2: ".SYNTAX" .ID .OUT("TITLE"-*) SETUP
16300 .OUT("ENTRY"-"%MESS1") .LABEL "%MESS1" .OUT("ASCIZ"-"/"*": /") .OUT("BLOCK"-"20")
16400 .OUT("ENTRY"-"%MESS2") .LABEL "%MESS2" ("(" %1 .ID ")"
16500 .OUT("SIXBIT"-"/"*"/") ^1 / .OUT("SIXBIT"-"/MAC/"))
16600 .LABEL "%META2" .OUT("JSR"-"%RESET") .OUT("JSR"-"%RESET+2")
16700 .OUT("PUSHJ"-"P," *) .OUT("JUMPGE"-"F,%ERROR")
16800 .OUT("JRST"-"%FIN") *ST ".END" .OUT("END"-"%META2")/
16900 ".SUBSYNTAX" .ID .OUT("TITLE"-*) SETUP *ST ".END" .OUT("END");
17000
17100 SETUP: .OUT("EXTERN"-"%ID,%NUM,%STR,%GEN,%PUSH,%POP,%ERROR,%LEN")
17200 .OUT("EXTERN"-"%UNTIL,%TST,%COPYL,%COPYI,%TYPE,%RESET")
17300 .OUT("EXTERN"-"%BEGIN,%END,%BLOCK,%LIST,%LOOK,%SET,%CHECK")
17400 .OUT("EXTERN"-"%CLEAR,%SCAN,%GETNM,%PUTNM,%XLEN,%XBLK")
17500 .OUT("EXTERN"-"%GET,%PUT,%LEVEL,%SYMB,%XSYMB,%BLEVL,%FIN")
17600 .OUT("EXTERN"-"%CLEVL,%MAKND,%SETRE,%CPYDC,%CALND,%DMPTR,%MARK")
17700 .OUT("STK1="-"4")
17800 .OUT("P="-"17") .OUT("F="-"16") .OUT("SUCCES="-"400000")
17900 .OUT("NDELET="-"200000") .OUT("BACKUP="-"100000")
18000 .OUT("SCATEN="-"040000") .OUT("T="-"1") %3
18100 *(DECLARE/OUTSIDE/COMMENT) ^3;
18200
18300 OUTSIDE: ".INTERNAL" .ID .OUT("ENTRY"-*)
18400 *("," .ID .OUT("ENTRY"-*))/
18500 ".EXTERNAL" .ID .OUT("EXTERN"-*)
18600 *("," .ID .OUT("EXTERN"-*));
18700
18800 .END