Google
 

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) %%%