Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vaxc / opdefvax.mima
diff --git a/mim/development/mim/vaxc/opdefvax.mima b/mim/development/mim/vaxc/opdefvax.mima
new file mode 100644 (file)
index 0000000..8a33212
--- /dev/null
@@ -0,0 +1,389 @@
+
+<MSETG BITS-PER-FIELD 8>
+
+<MSETG FIELDS-PER-WORD 4>
+
+<MSETG FIELDS-PER-OP <* ,FIELDS-PER-WORD 3>>
+
+<MSETG WORDS-PER-OP 4>
+
+<MSETG INIT-SHIFT <- <* ,BITS-PER-FIELD ,FIELDS-PER-WORD> ,BITS-PER-FIELD>>
+
+<MSETG FIELD-MASK 255>
+
+#WORD *652130037*
+                   <GFCN \1aDEFOP ("VALUE" <UVECTOR [REST FIX]> STRING FIX "TUPLE" <TUPLE [REST FIX]>) STR4 CODE5>
+                   <MAKTUP MODES6 (WD18 0) (SHFT9:FIX 24) TEMP12 TEMP16 = MODES6>
+                   <INTGO>
+                   <FRAME '\1aMSETG>
+                   <FRAME '\1aLOOKUP>
+                   <PUSH "INST-">
+                   <PUSH STR4>
+                   <UBLOCK <TYPE-CODE STRING> 2 = WD18 (TYPE STRING)>
+                   <PUSH WD18>
+                   <GVAL 'OP-OBLIST = STACK>
+                   <CALL '\1aLOOKUP 2 = TEMP12>
+                   <TYPE? TEMP12 <TYPE-CODE FALSE> - BOOL11>
+                   <FRAME '\1aINSERT>
+                   <PUSH WD18>
+                   <DEAD WD18>
+                   <GVAL 'OP-OBLIST = STACK>
+                   <CALL '\1aINSERT 2 = TEMP12>
+BOOL11
+                   <PUSH TEMP12>
+                   <DEAD TEMP12>
+                   <PUSH CODE5>
+                   <CALL '\1aMSETG 2>
+                   <GVAL 'OP-VECTOR = TEMP12>
+                   <LSH CODE5 2 = TEMP16 (TYPE FIX)>
+                   <DEAD CODE5>
+                   <ADD TEMP16 1 = CODE5 (TYPE FIX)>
+                   <DEAD TEMP16>
+                   <FRAME '\1aSQUOZE>
+                   <PUSH STR4>
+                   <DEAD STR4>
+                   <CALL '\1aSQUOZE 1 = TEMP16>
+                   <PUTUU TEMP12 CODE5 TEMP16>
+                   <DEAD TEMP12 TEMP16>
+                   <LENUV MODES6 = TEMP16 (TYPE FIX)>
+                   <LSH TEMP16 SHFT9 = WD18 (TYPE FIX)>
+                   <DEAD TEMP16>
+                   <CHTYPE MODES6 <TYPE-CODE VECTOR> = TEMP16>
+                   <DEAD MODES6>
+                   <LOOP>
+MAP19
+                   <INTGO>
+                   <EMPUV? TEMP16 + MAPAP22>
+                   <NTHUV TEMP16 1 = MODES6>
+                   <SUB SHFT9 8 = SHFT9 (TYPE FIX)>
+                   <LSH MODES6 SHFT9 = MODES6 (TYPE FIX)>
+                   <OR WD18 MODES6 = WD18>
+                   <DEAD MODES6>
+                   <VEQUAL? SHFT9 0 - PHRASE30 (TYPE FIX)>
+                   <SET SHFT9 32 (TYPE FIX)>
+                   <ADD CODE5 1 = MODES6 (TYPE FIX)>
+                   <GVAL 'OP-VECTOR = TEMP12>
+                   <PUTUU TEMP12 MODES6 WD18>
+                   <DEAD TEMP12 MODES6 WD18>
+                   <SET WD18 0 (TYPE FIX)>
+                   <ADD CODE5 1 = CODE5 (TYPE FIX)>
+PHRASE30
+                   <RESTUV TEMP16 1 = TEMP16 (TYPE VECTOR)>
+                   <JUMP + MAP19>
+MAPAP22
+                   <ADD CODE5 1 = SHFT9 (TYPE FIX)>
+                   <DEAD CODE5>
+                   <GVAL 'OP-VECTOR = TEMP12>
+                   <PUTUU TEMP12 SHFT9 WD18>
+                   <DEAD SHFT9 WD18>
+                   <RETURN TEMP12>
+                   <DEAD TEMP12>
+                   <END \1aDEFOP>
+
+#WORD *3667656641*
+                   <GFCN \1aGET-INST-INFO ("VALUE" UVECTOR FIX) INST4>
+                   <TEMP TEMP5:UVECTOR TEMP6:FIX>
+                   <INTGO>
+                   <GVAL 'OP-VECTOR = TEMP5>
+                   <LSH INST4 2 = TEMP6 (TYPE FIX)>
+                   <DEAD INST4>
+                   <RESTUU TEMP5 TEMP6 = TEMP5 (TYPE UVECTOR)>
+                   <DEAD TEMP6>
+                   <RETURN TEMP5>
+                   <DEAD TEMP5>
+                   <END \1aGET-INST-INFO>
+
+#WORD *30340160550*
+                   <GFCN \1aGET-OP-INFO ("VALUE" FIX FIX <UVECTOR [4 FIX]>) FNUM4 OP-INF5>
+                   <TEMP WD6:FIX TEMP11:FIX>
+                   <INTGO>
+                   <LESS? FNUM4 8 + PHRASE8 (TYPE FIX)>
+                   <SUB FNUM4 9 = FNUM4 (TYPE FIX)>
+                   <NTHUU OP-INF5 4 = WD6 (TYPE FIX)>
+                   <DEAD OP-INF5>
+                   <JUMP + PHRASE10>
+PHRASE8
+                   <LESS? FNUM4 4 + PHRASE9 (TYPE FIX)>
+                   <SUB FNUM4 5 = FNUM4 (TYPE FIX)>
+                   <NTHUU OP-INF5 3 = WD6 (TYPE FIX)>
+                   <DEAD OP-INF5>
+                   <JUMP + PHRASE10>
+PHRASE9
+                   <NTHUU OP-INF5 2 = WD6 (TYPE FIX)>
+                   <DEAD OP-INF5>
+                   <ADD FNUM4 1 = FNUM4 (TYPE FIX)>
+PHRASE10
+                   <SUB FNUM4 4 = TEMP11 (TYPE FIX)>
+                   <DEAD FNUM4>
+                   <LSH TEMP11 3 = TEMP11 (TYPE FIX)>
+                   <LSH WD6 TEMP11 = TEMP11 (TYPE FIX)>
+                   <DEAD WD6>
+                   <AND TEMP11 #WORD *377* = TEMP11>
+                   <RETURN TEMP11>
+                   <DEAD TEMP11>
+                   <END \1aGET-OP-INFO>
+
+#WORD *15664200714*
+                   <GFCN \1aADDRESS-MODES ("VALUE" <OR ATOM FALSE SPLICE> STRING STRING) MODES4 SIZES5>
+                   <TEMP (MODEN6:FIX 0) (SIZEN7:FIX 0) TEMP14:STRING MODE19:CHARACTER TEMP26 SIZE31 TEMP35>
+                   <INTGO>
+                   <SET TEMP14 MODES4 (TYPE STRING)>
+                   <DEAD MODES4>
+                   <LOOP>
+MAP9
+                   <INTGO>
+                   <EMPUS? TEMP14 + MAPAP12>
+                   <NTHUS TEMP14 1 = MODE19>
+                   <SET SIZEN7 0 (TYPE FIX)>
+                   <SET TEMP26 SIZES5 (TYPE STRING)>
+                   <LOOP>
+MAP21
+                   <INTGO>
+                   <EMPUS? TEMP26 + MAPAP24>
+                   <NTHUS TEMP26 1 = SIZE31>
+                   <FRAME '\1aMSETG>
+                   <FRAME '\1aLOOKUP>
+                   <PUSH "OP-">
+                   <PUSH MODE19>
+                   <PUSH SIZE31>
+                   <DEAD SIZE31>
+                   <UBLOCK <TYPE-CODE STRING> 3 = SIZE31 (TYPE STRING)>
+                   <PUSH SIZE31>
+                   <GVAL 'OP-OBLIST = STACK>
+                   <CALL '\1aLOOKUP 2 = TEMP35>
+                   <TYPE? TEMP35 <TYPE-CODE FALSE> - BOOL34>
+                   <FRAME '\1aINSERT>
+                   <PUSH SIZE31>
+                   <DEAD SIZE31>
+                   <GVAL 'OP-OBLIST = STACK>
+                   <CALL '\1aINSERT 2 = TEMP35>
+BOOL34
+                   <PUSH TEMP35>
+                   <DEAD TEMP35>
+                   <LSH MODEN6 3 = TEMP35 (TYPE FIX)>
+                   <ADD TEMP35 SIZEN7 = STACK (TYPE FIX)>
+                   <DEAD TEMP35>
+                   <CALL '\1aMSETG 2>
+                   <ADD SIZEN7 1 = SIZEN7 (TYPE FIX)>
+                   <RESTUS TEMP26 1 = TEMP26 (TYPE STRING)>
+                   <JUMP + MAP21>
+MAPAP24
+                   <ADD MODEN6 1 = MODEN6 (TYPE FIX)>
+                   <RESTUS TEMP14 1 = TEMP14 (TYPE STRING)>
+                   <JUMP + MAP9>
+MAPAP12
+                   <SET SIZEN7 -1 (TYPE FIX)>
+                   <SET TEMP26 %<> (TYPE FALSE)>
+                   <SET TEMP14 SIZES5 (TYPE STRING)>
+                   <DEAD SIZES5>
+                   <LOOP>
+MAP40
+                   <INTGO>
+                   <EMPUS? TEMP14 + MAPAP43>
+                   <NTHUS TEMP14 1 = MODE19>
+                   <FRAME '\1aMSETG>
+                   <FRAME '\1aLOOKUP>
+                   <PUSH "SZ-">
+                   <PUSH MODE19>
+                   <DEAD MODE19>
+                   <UBLOCK <TYPE-CODE STRING> 2 = SIZE31 (TYPE STRING)>
+                   <PUSH SIZE31>
+                   <GVAL 'OP-OBLIST = STACK>
+                   <CALL '\1aLOOKUP 2 = TEMP26>
+                   <TYPE? TEMP26 <TYPE-CODE FALSE> - BOOL49>
+                   <FRAME '\1aINSERT>
+                   <PUSH SIZE31>
+                   <DEAD SIZE31>
+                   <GVAL 'OP-OBLIST = STACK>
+                   <CALL '\1aINSERT 2 = TEMP26>
+BOOL49
+                   <PUSH TEMP26>
+                   <DEAD TEMP26>
+                   <ADD SIZEN7 1 = SIZEN7 (TYPE FIX)>
+                   <PUSH SIZEN7>
+                   <CALL '\1aMSETG 2 = TEMP26>
+                   <RESTUS TEMP14 1 = TEMP14 (TYPE STRING)>
+                   <JUMP + MAP40>
+MAPAP43
+                   <RETURN TEMP26>
+                   <DEAD TEMP26>
+                   <END \1aADDRESS-MODES>
+
+<SETG OP-OBLIST <OBLIST? DEFOP>>
+
+#WORD *23007160617*
+                   <GFCN \1aINIT-OP-DEFS ("VALUE" <UVECTOR [REST FIX]>)>
+                   <TEMP TEMP4 TEMP5>
+                   <INTGO>
+                   <UUBLOCK <TYPE-CODE UVECTOR> 1024 = TEMP4>
+                   <SET TEMP5 TEMP4>
+                   <LOOP (TEMP5 VALUE LENGTH)>
+ISTR6
+                   <EMPUU? TEMP5 + ISTRE7>
+                   <PUTUU TEMP5 1 0>
+                   <RESTUU TEMP5 1 = TEMP5>
+                   <JUMP + ISTR6>
+ISTRE7
+                   <SETG 'OP-VECTOR TEMP4>
+                   <RETURN TEMP4>
+                   <DEAD TEMP4>
+                   <END \1aINIT-OP-DEFS>
+
+<GDECL (OP-VECTOR) <UVECTOR [REST FIX]>>
+
+<MSETG SQUOZE-MULF <* 40 40 40 40 40>>
+
+#WORD *5377466631*
+                   <GFCN \1aSQUOZE ("VALUE" FIX STRING) STR4>
+                   <TEMP (VAL5:FIX 0) (COUNT6:FIX 6) (TC8:FIX 0) (MULF9:FIX 102400000) C7:CHARACTER>
+                   <INTGO>
+                   <LOOP>
+AGAIN13
+                   <INTGO>
+                   <EMPUS? STR4 + BOOL16 (TYPE STRING)>
+                   <LESS? COUNT6 1 - PHRASE15 (TYPE FIX)>
+BOOL16
+                   <RETURN VAL5>
+                   <DEAD VAL5>
+PHRASE15
+                   <NTHUS STR4 1 = C7 (TYPE CHARACTER)>
+                   <CHTYPE C7 <TYPE-CODE FIX> = TC8>
+                   <RESTUS STR4 1 = STR4 (TYPE STRING)>
+                   <LESS? TC8 48 + PHRASE20 (TYPE FIX)>
+                   <GRTR? TC8 57 + PHRASE20 (TYPE FIX)>
+                   <SUB TC8 47 = TC8 (TYPE FIX)>
+                   <JUMP + PHRASE29>
+PHRASE20
+                   <LESS? TC8 65 + PHRASE22 (TYPE FIX)>
+                   <GRTR? TC8 90 + PHRASE22 (TYPE FIX)>
+                   <SUB TC8 54 = TC8 (TYPE FIX)>
+                   <JUMP + PHRASE29>
+PHRASE22
+                   <LESS? TC8 97 + PHRASE24 (TYPE FIX)>
+                   <GRTR? TC8 122 + PHRASE24 (TYPE FIX)>
+                   <SUB TC8 86 = TC8 (TYPE FIX)>
+                   <JUMP + PHRASE29>
+PHRASE24
+                   <VEQUAL? C7 !\. - PHRASE26>
+                   <SET TC8 37 (TYPE FIX)>
+                   <JUMP + PHRASE29>
+PHRASE26
+                   <VEQUAL? C7 !\$ - PHRASE27>
+                   <SET TC8 38 (TYPE FIX)>
+                   <JUMP + PHRASE29>
+PHRASE27
+                   <VEQUAL? C7 !\% - AGAIN13>
+                   <DEAD C7>
+                   <SET TC8 39 (TYPE FIX)>
+PHRASE29
+                   <SUB COUNT6 1 = COUNT6 (TYPE FIX)>
+                   <MUL TC8 MULF9 = TC8 (TYPE FIX)>
+                   <ADD TC8 VAL5 = VAL5 (TYPE FIX)>
+                   <DEAD TC8>
+                   <DIV MULF9 40 = MULF9 (TYPE FIX)>
+                   <JUMP + AGAIN13>
+                   <END \1aSQUOZE>
+
+<MSETG SQUOZE-DIVF <* 40 40 40 40 40>>
+
+#WORD *34675224432*
+                   <GFCN \1aPRINT-SQUOZE ("VALUE" ATOM FIX "OPTIONAL" CHANNEL) NUM6 OUTCHAN7>
+                   <OPT-DISPATCH 1 %<> OPT4 OPT5>
+OPT4
+                   <PUSH #T$UNBOUND 0>
+OPT5
+                   <TEMP TEMP3:LBIND TEMP11 (DIVF8:FIX 102400000) VAL17>
+                   <INTGO>
+                   <GETS 'BIND = TEMP3 (TYPE LBIND)>
+                   <TYPE? OUTCHAN7 <TYPE-CODE UNBOUND> - TAG9>
+                   <GEN-LVAL 'OUTCHAN = OUTCHAN7>
+TAG9
+                   <BBIND 'OUTCHAN 'CHANNEL 'FIX OUTCHAN7>
+                   <DEAD OUTCHAN7>
+                   <FIXBIND>
+                   <LOOP>
+AGAIN18
+                   <INTGO>
+                   <DIV NUM6 DIVF8 = TEMP11 (TYPE FIX)>
+                   <MOD TEMP11 40 = VAL17 (TYPE FIX)>
+                   <DEAD TEMP11>
+                   <LESS? NUM6 0 - PHRASE21 (TYPE FIX)>
+                   <GRTR? VAL17 0 - PHRASE21 (TYPE FIX)>
+                   <FRAME '\1a+>
+                   <PUSH VAL17>
+                   <DEAD VAL17>
+                   <PUSH 1>
+                   <CALL '\1a+ 2 = VAL17>
+                   <MUL VAL17 DIVF8 = TEMP11 (TYPE FIX)>
+                   <SUB NUM6 TEMP11 = NUM6 (TYPE FIX)>
+                   <DEAD TEMP11>
+PHRASE21
+                   <VEQUAL? VAL17 0 - PHRASE29 (TYPE FIX)>
+                   <SET TEMP11 'T (TYPE ATOM)>
+                   <JUMP + EXIT15>
+PHRASE29
+                   <GRTR? VAL17 10 - PHRASE32 (TYPE FIX)>
+                   <LESS? VAL17 37 - PHRASE32 (TYPE FIX)>
+                   <FRAME '\1aPRINC>
+                   <ADD VAL17 54 = TEMP11 (TYPE FIX)>
+                   <DEAD VAL17>
+                   <CHTYPE TEMP11 <TYPE-CODE CHARACTER> = STACK>
+                   <DEAD TEMP11>
+                   <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP11>
+                   <CALL '\1aPRINC 2>
+                   <JUMP + PHRASE49>
+PHRASE32
+                   <GRTR? VAL17 10 + PHRASE37 (TYPE FIX)>
+                   <FRAME '\1aPRINC>
+                   <ADD VAL17 47 = TEMP11 (TYPE FIX)>
+                   <DEAD VAL17>
+                   <CHTYPE TEMP11 <TYPE-CODE CHARACTER> = STACK>
+                   <DEAD TEMP11>
+                   <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP11>
+                   <CALL '\1aPRINC 2>
+                   <JUMP + PHRASE49>
+PHRASE37
+                   <VEQUAL? VAL17 37 - PHRASE41 (TYPE FIX)>
+                   <FRAME '\1aPRINC>
+                   <PUSH !\.>
+                   <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP11>
+                   <CALL '\1aPRINC 2>
+                   <JUMP + PHRASE49>
+PHRASE41
+                   <VEQUAL? VAL17 38 - PHRASE45 (TYPE FIX)>
+                   <FRAME '\1aPRINC>
+                   <PUSH !\$>
+                   <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP11>
+                   <CALL '\1aPRINC 2>
+                   <JUMP + PHRASE49>
+PHRASE45
+                   <VEQUAL? VAL17 39 - PHRASE49 (TYPE FIX)>
+                   <DEAD VAL17>
+                   <FRAME '\1aPRINC>
+                   <PUSH !\%>
+                   <NTHR 'OUTCHAN 2 = TEMP11 (RECORD-TYPE ATOM) (TYPE LBIND)>
+                   <NTHR TEMP11 1 = STACK (RECORD-TYPE LBIND)>
+                   <DEAD TEMP11>
+                   <CALL '\1aPRINC 2>
+PHRASE49
+                   <VEQUAL? DIVF8 1 - PHRASE54 (TYPE FIX)>
+                   <SET TEMP11 'T (TYPE ATOM)>
+                   <JUMP + EXIT15>
+PHRASE54
+                   <DIV DIVF8 40 = DIVF8 (TYPE FIX)>
+                   <JUMP + AGAIN18>
+EXIT15
+                   <UNBIND TEMP3>
+                   <DEAD TEMP3>
+                   <ADJ -9>
+                   <RETURN TEMP11>
+                   <DEAD TEMP11>
+                   <END \1aPRINT-SQUOZE>