Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0068/omod.imc
There are 2 other files named omod.imc in the archive. Click here to see a list.
CALL ME OMOD10;
#THIS IS FILE OMOD.I10 - FORMATS .REL FILE FOR IMP10 COMPILER.#
BHEAD IS COMMON;
SUBR IASSEM(N) IS (CHAN_OPENOUT();
OUTPUT(CHAN); BP_(BHEAD AND 777777B)+2;
[BP]_4000001B; [BP+1]_0; [BP+2]_[BP+5]_RADI50(N);
[BP+3]_6000001B; [BP+4]_0; SK_6);
SUBR OUTBLK(NIL) IS (BHEAD[1]_(BHEAD AND 777777B)+SK+1;
OUTPUT(CHAN); BP_(BHEAD AND 777777B)+2);
SUBR HISEG(N) IS ([BP+SK]_3000001B; [BP+SK+1]_200000000000B;
[BP+SK+2]_400000B+N LS 18; SK_SK+3);
SUBR STADR(N) IS ([BP+SK]_7000001B; [BP+SK+1]_200000000000B;
[BP+SK+2]_N; SK_SK+3);
SUBR STCODE(N) IS (SB_0; AD_N);
SUBR PUTS(N,A) IS (#FUDGE TO PUT TYPE 2 BLOCKS LAST#
FNIT=0=>(FRELOT(SSS,'SYMBS',200,0); NSSS_0; FNIT_1);
FADD(SSS,NSSS,N OR A LS 18);
DPROP('COM',N));
SUBR PUTFUDG(N,A) IS (
SB=0 => (SB_040000000000B; SA_SK; [BP+SA]_2000000B;
[BP+SA+1]_0; SK_SK+2);
(FOO_DPROP('COM',N))=1 => (F_60B; V_A+400000000000B)
ELSE (V_A; FOO=2=>F_4 ELSE F_10B);
RN_RADI50(N); [BP+SK]_RN+(F LS 30); [BP+SK+1]_V;
[BP+SA]_[BP+SA]+2; [BP+SA+1]_[BP+SA+1]+SB;
(SK_SK+2)>123 => (OUTBLK(0); SB_SK_0) ELSE SB_SB RS 4;
FOO);
SUBR PUT(V,R) IS (
SB=0 => (SB_040000000000B; SA_SK; [BP+SA]_1000001B;
[BP+SA+1]_200000000000B; [BP+SA+2]_AD; SK_SK+3);
[BP+SK]_V; R=>[BP+SA+1]_[BP+SA+1] OR SB;
[BP+SA]_[BP+SA]+1; AD_AD+1;
(SK_SK+1)>123 => (OUTBLK(0); SB_SK_0) ELSE SB_SB RS 2;
AD);
SUBR EASSEM(N1,N2) IS (
SB_0; NSSS=>((J_FREE(SSS+I); PUTFUDG(J AND 777777B,J RS 18))
FOR I TO NSSS-1);
N2 => ([BP+SK]_5000002B; [BP+SK+1]_240000000000B;
[BP+SK+2]_N1; [BP+SK+3]_N2; SK_SK+4)
ELSE ([BP+SK]_5000001B; [BP+SK+1]_200000000000B;
[BP+SK+2]_N1; SK_SK+3);
OUTBLK(0); CLOSE(CHAN,0); 0) %%%