Annotation of cci/d/fpevent/run_code.lst, revision 1.1

1.1     ! root        1:    1  00000000                                  
        !             2:    2  00000000                                  /*     privileged registers constants (addresses)                      */
        !             3:    3  00000000                                  
        !             4:    4  00000000                                  
        !             5:    5  00000000                                  
        !             6:    6  00000000                                         .set    SBR,0                   /*system base register          */
        !             7:    7  00000000                                         .set    SLR,1                   /*system length reg             */
        !             8:    8  00000000                                         .set    P0BR,2                  /*p0 base reg                   */
        !             9:    9  00000000                                         .set    P0LR,3                  /*p0 length reg                 */
        !            10:   10  00000000                                         .set    P1BR,4                  /*p1 base reg                   */
        !            11:   11  00000000                                         .set    P1LR,5                  /*p1 length reg                 */
        !            12:   12  00000000                                         .set    P2BR,6                  /*p2 base reg                   */
        !            13:   13  00000000                                         .set    P2LR,7                  /*p2 length reg                 */
        !            14:   14  00000000                                         .set    IPL,8                   /*int priority level reg        */
        !            15:   15  00000000                                         .set    MME,9                   /*memory mgmt enable reg        */
        !            16:   16  00000000                                         .set    TBIA,10                 /*trans buf invalidate all      */
        !            17:   17  00000000                                                                         /*entries                       */
        !            18:   18  00000000                                         .set    TBIS,11                 /*trans buf invalidate single   */
        !            19:   19  00000000                                                                         /*entry                         */
        !            20:   20  00000000                                         .set    DCK,12                  /*data cache key                */
        !            21:   21  00000000                                         .set    CCK,13                  /*code cache key                */
        !            22:   22  00000000                                         .set    PCBB,14                 /*process control block base    */
        !            23:   23  00000000                                         .set    ISP,15                  /*interrupt stack pointer       */
        !            24:   24  00000000                                         .set    SIRR,16                 /*software int request reg      */
        !            25:   25  00000000                                         .set    SISR,17                 /*software int summary reg      */
        !            26:   26  00000000                                         .set    SCBB,18                 /*system control block base reg */
        !            27:   27  00000000                                         .set    KSP,19                  /*kernel stack pointer reg      */
        !            28:   28  00000000                                         .set    USP,20                  /*user stack pointer            */
        !            29:   29  00000000                                         .set    DCB,21                  /*CPU2 DCB                      */
        !            30:   30  00000000                                         .set    PACC,23                 /*purge (invalidate) all pages  */
        !            31:   31  00000000                                                                         /*of process in code cache      */
        !            32:   32  00000000                                         .set    P1DC,24                 /*purge one page of data cache  */
        !            33:   33  00000000                                         .set    PADC,25                 /*purge all the pages of        */
        !            34:   34  00000000                                                                         /*process in data cache         */
        !            35:   35  00000000                                         .set    HISR,26                 /* Hardware interrupt summary reg  */
        !            36:   36  00000000                                         .set    DCR,27                  /* Diagnostic control register  */
        !            37:   37  00000000                                         .set    PDCS,28                 /* Purge 1 data cache slot      */
        !            38:   38  00000000                                         
        !            39:   39  00000000                                  #
        !            40:   40  00000000                                   #TAHOE program status longword
        !            41:   41  00000000                                  #
        !            42:   42  00000000                                  
        !            43:   43  00000000                                         .set    PSL_C,0x00000001        /* carry bit                     */
        !            44:   44  00000000                                         .set    PSL_V,0x00000002        /* overflow bit                  */
        !            45:   45  00000000                                         .set    PSL_Z,0x00000004        /* zero bit                      */
        !            46:   46  00000000                                         .set    Z,0x00000004
        !            47:   47  00000000                                         .set    PSL_N,0x00000008        /* negative bit                  */
        !            48:   48  00000000                                         .set    PSL_T,0x00000010        /* trace enable bit              */
        !            49:   49  00000000                                         .set    PSL_I,0x00000020        /* integer overflow enable bit   */
        !            50:   50  00000000                                         .set    PSL_EN_OVFL,0x20        /* integer overflow enable bit   */
        !            51:   51  00000000                                         .set    PSL_EN_UNDFL,0x40       /* floating underflow enable     */
        !            52:   52  00000000                                         .set    PSL_DBL,0x80            /* dbl precision Accumulator bit */
        !            53:   53  00000000                                         .set    PSL_IPL,0x001f0000      /* interrupt priority level      */
        !            54:   54  00000000                                         .set    PSL_MOD,0x01000000      /* mode = 1 means user           */
        !            55:   55  00000000                                         .set    PSL_IS,0x04000000       /* interrupt stack               */
        !            56:   56  00000000                                         .set    PSL_TP,0x40000000       /* trace pending                 */
        !            57:   57  00000000                                  
        !            58:   58  00000000                                  #
        !            59:   59  00000000                                   # TAHOE page table entry
        !            60:   60  00000000                                   #/
        !            61:   61  00000000                                         .set    PG_V,0x8000000
        !            62:   62  00000000                                         .set    PG_PROT,0x78000000
        !            63:   63  00000000                                         .set    PG_M,0x04000000
        !            64:   64  00000000                                         .set    PG_USED,0x02000000
        !            65:   65  00000000                                         .set    PG_NC,0x01000000
        !            66:   66  00000000                                         .set    PG_PFNUM,0x003fffff
        !            67:   67  00000000                                  
        !            68:   68  00000000                                         .set    PG_NOACC,0
        !            69:   69  00000000                                         .set    PG_KR,0x40000000
        !            70:   70  00000000                                         .set    PG_KW,0x60000000
        !            71:   71  00000000                                         .set    PG_URKR,0x50000000
        !            72:   72  00000000                                         .set    PG_URKW,0x70000000
        !            73:   73  00000000                                         .set    PG_UW,0x78000000
        !            74:   74  00000000                                  
        !            75:   75  00000000                                   #*    PCB offsets & diagnostic extension to pcb                       */
        !            76:   76  00000000                                   #*    PCB is at pcb0                                                  */
        !            77:   77  00000000                                  
        !            78:   78  00000000                                  
        !            79:   79  00000000                                         .set    PCB_SIZE,        24     
        !            80:   80  00000000                                         .set    PCB_KSP,         0
        !            81:   81  00000000                                         .set    PCB_USP,         4
        !            82:   82  00000000                                         .set    PCB_R0,          8
        !            83:   83  00000000                                         .set    PCB_R1,          12
        !            84:   84  00000000                                         .set    PCB_R2,          16
        !            85:   85  00000000                                         .set    PCB_R3,          20
        !            86:   86  00000000                                         .set    PCB_R4,          24
        !            87:   87  00000000                                         .set    PCB_R5,          28
        !            88:   88  00000000                                         .set    PCB_R6,          32
        !            89:   89  00000000                                         .set    PCB_R7,          36
        !            90:   90  00000000                                         .set    PCB_R8,          40
        !            91:   91  00000000                                         .set    PCB_R9,          44
        !            92:   92  00000000                                         .set    PCB_R10,         48
        !            93:   93  00000000                                         .set    PCB_R11,         52
        !            94:   94  00000000                                         .set    PCB_R12,         56
        !            95:   95  00000000                                         .set    PCB_R13,         60
        !            96:   96  00000000                                         .set    PCB_PC,          64
        !            97:   97  00000000                                         .set    PCB_PSL,         68
        !            98:   98  00000000                                         .set    PCB_P0BR,        72
        !            99:   99  00000000                                         .set    PCB_P0LR,        76
        !           100:  100  00000000                                         .set    PCB_P1BR,        80
        !           101:  101  00000000                                         .set    PCB_P1LR,        84
        !           102:  102  00000000                                         .set    PCB_P2BR,        88
        !           103:  103  00000000                                         .set    PCB_P2LR,        92
        !           104:  104  00000000                                         .set    PCB_ACCM,        96
        !           105:  105  00000000                                         .set    PCB_ACCL,       100
        !           106:  106  00000000                                   #*
        !           107:  107  00000000                                   #     Diagnostic pcb extension
        !           108:  108  00000000                                   #/
        !           109:  109  00000000                                         .set    PCB_STAT,       104     /*process status,statistics,id,etc*/
        !           110:  110  00000000                                  
        !           111:  111  00000000                                  
        !           112:  112  00000000                                  
        !           113:  113  00000000                                   #*    fundamental constants                                           */
        !           114:  114  00000000                                  
        !           115:  115  00000000                                   #*
        !           116:  116  00000000                                   # fundamental constants of the implementation--
        !           117:  117  00000000                                   # cannot be changed easily.
        !           118:  118  00000000                                   #/
        !           119:  119  00000000                                  
        !           120:  120  00000000                                         .set    NBPG,1024
        !           121:  121  00000000                                         .set    PGOFSET,(NBPG-1)        /* byte offset into page */
        !           122:  122  00000000                                         .set    PGSHIFT,10              /* LOG2(NBPG) */
        !           123:  123  00000000                                         .set    HIGH,0x1f
        !           124:  124  00000000                                  
        !           125:  125  00000000                                  
        !           126:  126  00000000                                   #*    SCB offsets                                                     */
        !           127:  127  00000000                                   #*    SCB is at scb                                                   */
        !           128:  128  00000000                                  
        !           129:  129  00000000                                         .set    PFVEC,1*4               /*power fail                    */
        !           130:  130  00000000                                         .set    PRVEC,2*4               /*power restore                 */
        !           131:  131  00000000                                         .set    CLOCKVEC,7*4            /*hard clock vector             */
        !           132:  132  00000000                                         .set    CRVEC,0xa*4             /*console receive               */
        !           133:  133  00000000                                         .set    CXVEC,44                /*console transmit              */
        !           134:  134  00000000                                         .set    SIVEC1,0x1e*4           /*software int vec #1           */
        !           135:  135  00000000                                                                         /*for 2,3,..15, sub 4,8,.. 56   */
        !           136:  136  00000000                                                                         /*from SIVEC1                   */      
        !           137:  137  00000000                                         .set    BEVEC,0x20*4            /*bus error                     */      
        !           138:  138  00000000                                         .set    SYSVEC,0x2b*4           /*system call (kcall)           */
        !           139:  139  00000000                                         .set    PINSTVEC,0x2c*4         /*privileged instruction fault  */
        !           140:  140  00000000                                         .set    PRIVSVEC,0x2c*4         /*privileged instruction fault  */
        !           141:  141  00000000                                         .set    ROVEC,0x2d*4            /*reserved operand fault        */
        !           142:  142  00000000                                         .set    RAVEC,0x2e*4            /*reserved addressing fault     */
        !           143:  143  00000000                                         .set    PROTVEC,0x2f*4          /*access control violation      */
        !           144:  144  00000000                                         .set    TRANS,0x30              /*translation fault vector      */
        !           145:  145  00000000                                         .set    TRANSVEC,0x30*4         /*translation fault vector      */
        !           146:  146  00000000                                         .set    KSPVEC,0x31*4           /*kernel stack not valid vector */
        !           147:  147  00000000                                         .set    TRACEVEC,0x32*4         /*trace vector                  */
        !           148:  148  00000000                                         .set    BPTVEC,0x33*4           /*break point fault             */
        !           149:  149  00000000                                         .set    ARITHVEC,0x34*4         /*arithmetic trap               */
        !           150:  150  00000000                                         .set    ALIGNVEC,0x35*4         /*alignment vector              */      
        !           151:  151  00000000                                         .set    FPMVEC,0x37*4           /*fpp emulation vector          */
        !           152:  152  00000000                                         .set    IO14VEC,256             /*io vector, ipl #14            */
        !           153:  153  00000000                                         .set    IO15VEC,320             /*io vector, ipl #15            */
        !           154:  154  00000000                                         .set    IO16VEC,384             /*io vector, ipl #16            */
        !           155:  155  00000000                                         .set    IO17VEC,448             /*io vector, ipl #17            */
        !           156:  156  00000000                                  
        !           157:  157  00000000                                   #*    SPT (system page table) offsets                                 */
        !           158:  158  00000000                                   #*    SPT is at Sysmap                                                */
        !           159:  159  00000000                                  
        !           160:  160  00000000                                         .set    SCBPTE,8                /*system control block pte offset*/
        !           161:  161  00000000                                         .set    BUFPTE,12               /*buffer pte offset             */
        !           162:  162  00000000                                         .set    ISPTE,16                /*interrupt stack page 0        */
        !           163:  163  00000000                                         .set    IS1PTE,20               /*interrupt stack page 1        */
        !           164:  164  00000000                                         .set    SPTPTE,20               /*system page table page 1      */
        !           165:  165  00000000                                         .set    SPT1PTE,20              /*system page table page 2      */
        !           166:  166  00000000                                         .set    IOMAPPTE,24             /*io map                        */
        !           167:  167  00000000                                         .set    PCBPTE,28               /*process control blocks pte    */
        !           168:  168  00000000                                         .set    U0P0PTE,32              /*U0 p0pt pte                   */
        !           169:  169  00000000                                         .set    U0P1PTE,36              /*U0 p1pt pte                   */
        !           170:  170  00000000                                         .set    U0P2PTE,40              /*U0 p2pt pte                   */
        !           171:  171  00000000                                         .set    U1P0PTE,44
        !           172:  172  00000000                                         .set    U1P1PTE,48
        !           173:  173  00000000                                         .set    U1P2PTE,52
        !           174:  174  00000000                                         .set    U2P0PTE,56
        !           175:  175  00000000                                         .set    U2P1PTE,60
        !           176:  176  00000000                                         .set    U2P2PTE,64
        !           177:  177  00000000                                         .set    U3P0PTE,68
        !           178:  178  00000000                                         .set    U3P1PTE,72
        !           179:  179  00000000                                         .set    U3P2PTE,76
        !           180:  180  00000000                                         .set    U4P0PTE,80
        !           181:  181  00000000                                         .set    U4P1PTE,84
        !           182:  182  00000000                                         .set    U4P2PTE,88
        !           183:  183  00000000                                         .set    U5P0PTE,92
        !           184:  184  00000000                                         .set    U5P1PTE,96
        !           185:  185  00000000                                         .set    U5P2PTE,100
        !           186:  186  00000000                                         .set    U6P0PTE,104
        !           187:  187  00000000                                         .set    U6P1PTE,108
        !           188:  188  00000000                                         .set    U6P2PTE,112
        !           189:  189  00000000                                         .set    U7P0PTE,116             /*U7 p0pt pte                   */
        !           190:  190  00000000                                         .set    U7P1PTE,120             /*U7 p1pt pte                   */
        !           191:  191  00000000                                         .set    U7P2PTE,124             /*U7 p2pt pte                   */
        !           192:  192  00000000                                         .set    IOB0PTE,128             /*io buffer 0 pte               */
        !           193:  193  00000000                                         .set    IOB1PTE,132
        !           194:  194  00000000                                         .set    IOB2PTE,136
        !           195:  195  00000000                                         .set    IOB3PTE,140
        !           196:  196  00000000                                         .set    IOB4PTE,144
        !           197:  197  00000000                                         .set    IOB5PTE,148
        !           198:  198  00000000                                         .set    IOB6PTE,152
        !           199:  199  00000000                                         .set    IOB7PTE,156             /*io buffer 7 pte               */
        !           200:  200  00000000                                  
        !           201:  201  00000000                                  
        !           202:  202  00000000                                   #*    trap.h  4.6     81/03/03        */
        !           203:  203  00000000                                  
        !           204:  204  00000000                                   #*
        !           205:  205  00000000                                   #* Trap type values
        !           206:  206  00000000                                   #/
        !           207:  207  00000000                                  
        !           208:  208  00000000                                         .set    RESADFLT,0              /* reserved addressing fault */
        !           209:  209  00000000                                         .set    PRIVINFLT,1             /* privileged instruction fault */
        !           210:  210  00000000                                         .set    RESOPFLT,2              /* reserved operand fault */
        !           211:  211  00000000                                         .set    BPTFLT,3                /* bpt instruction fault */
        !           212:  212  00000000                                         .set    ALIGNFLT,4              /* alignment fault */
        !           213:  213  00000000                                         .set    SYSCALL,5               /* kcall instruction (syscall trap) */
        !           214:  214  00000000                                         .set    ARITHTRAP,6             /* arithmetic trap */
        !           215:  215  00000000                                         .set    PROTFLT,7               /* protection fault */
        !           216:  216  00000000                                         .set    TRCTRAP,8               /* trace trap */
        !           217:  217  00000000                                         .set    TRANSFLT,9              /* translation not valid fault */
        !           218:  218  00000000                                         .set    DONE,255
        !           219:  219  00000000                                  
        !           220:  220  00000000                                  #
        !           221:  221  00000000                                   #  Event codes
        !           222:  222  00000000                                  #
        !           223:  223  00000000                                         .set    RTCLOCK_CODE,7          /* real time clock event */
        !           224:  224  00000000                                         .set    RESOP_CODE,0x2d         /* reserved operand fault */
        !           225:  225  00000000                                         .set    RESAD_CODE,0x2e         /* reserved address fault */
        !           226:  226  00000000                                         .set    ARITH_CODE,0x34         /* arithmetic fault       */
        !           227:  227  00000000                                         .set    FPM_CODE,0x37           /* fpp emulation trap     */
        !           228:  228  00000000                                         .set    INTEGER_OVERFLOW,1      /* code for arith. fault  */
        !           229:  229  00000000                                  
        !           230:  230  00000000                                  #
        !           231:  231  00000000                                   #  Arithmetic Event types
        !           232:  232  00000000                                  #
        !           233:  233  00000000                                         .set    INT_OVFL_CODE,1         /* integer overflow     */
        !           234:  234  00000000                                         .set    INT_0_DIV_CODE,2        /* integer divide by 0  */
        !           235:  235  00000000                                         .set    FLT_0_DIV_CODE,3        /* floating divide by 0 */
        !           236:  236  00000000                                         .set    FLT_OVFL_CODE,4         /* floating overflow    */
        !           237:  237  00000000                                         .set    FLT_UNDFL_CODE,5        /* floating underflow   */
        !           238:  238  00000000                                  
        !           239:  239  00000000                                  #
        !           240:  240  00000000                                   #  Floating Point Instruction Op-Codes
        !           241:  241  00000000                                  #
        !           242:  242  00000000                                         .set  LDF_OP_CODE,0x06          /* sgl load acc. instr      */
        !           243:  243  00000000                                         .set  LDD_OP_CODE,0x07          /* dbl load acc. instr      */
        !           244:  244  00000000                                         .set  LNF_OP_CODE,0x16          /* sgl load-neg acc. instr  */
        !           245:  245  00000000                                         .set  LND_OP_CODE,0x17          /* dbl load-neg acc. instr  */
        !           246:  246  00000000                                         .set  STF_OP_CODE,0x26          /* sgl store acc. instr     */
        !           247:  247  00000000                                         .set  STD_OP_CODE,0x27          /* dbl store acc. instr     */
        !           248:  248  00000000                                         .set  CMPF_OP_CODE,0x36         /* sgl compare instr        */
        !           249:  249  00000000                                         .set  CMPD_OP_CODE,0x37         /* dbl compare instr        */
        !           250:  250  00000000                                         .set  CMPF2_OP_CODE,0x46        /* sgl compare 2 instr      */
        !           251:  251  00000000                                         .set  CMPD2_OP_CODE,0x47        /* dbl compare 2 instr      */
        !           252:  252  00000000                                         .set  TSTF_OP_CODE,0x56         /* sgl test acc. instr      */
        !           253:  253  00000000                                         .set  TSTD_OP_CODE,0x57         /* dbl test acc. instr      */
        !           254:  254  00000000                                         .set  PUSHD_OP_CODE,0x67        /* dbl push acc. instr      */
        !           255:  255  00000000                                         .set  CVLF_OP_CODE,0x76         /* convert int to sgl instr */
        !           256:  256  00000000                                         .set  CVLD_OP_CODE,0x77         /* convert int to dbl instr */
        !           257:  257  00000000                                         .set  CVFL_OP_CODE,0x86         /* convert sgl to int instr */
        !           258:  258  00000000                                         .set  CVDL_OP_CODE,0x87         /* convert dbl to int instr */
        !           259:  259  00000000                                         .set  LDFD_OP_CODE,0x97         /* load sgl to dbl instr    */
        !           260:  260  00000000                                         .set  CVDF_OP_CODE,0xa6         /* convert dbl to sgl instr */
        !           261:  261  00000000                                         .set  NEGF_OP_CODE,0xb6         /* negate sgl acc. instr    */
        !           262:  262  00000000                                         .set  NEGD_OP_CODE,0xb7         /* negate dbl acc. instr    */
        !           263:  263  00000000                                         .set  ADDF_OP_CODE,0xc6         /* sgl add instr            */
        !           264:  264  00000000                                         .set  ADDD_OP_CODE,0xc7         /* dbl add instr            */
        !           265:  265  00000000                                         .set  SUBF_OP_CODE,0xd6         /* sgl subtract instr       */
        !           266:  266  00000000                                         .set  SUBD_OP_CODE,0xd7         /* dbl subtract instr       */
        !           267:  267  00000000                                         .set  MULF_OP_CODE,0xe6         /* sgl multiply instr       */
        !           268:  268  00000000                                         .set  MULD_OP_CODE,0xe7         /* dbl multiply instr       */
        !           269:  269  00000000                                         .set  DIVF_OP_CODE,0xf6         /* sgl divide instr         */
        !           270:  270  00000000                                         .set  DIVD_OP_CODE,0xf7         /* dbl divide instr         */
        !           271:  271  00000000                                         .set  SINF_OP_CODE,0x05         /* sgl sine instr           */
        !           272:  272  00000000                                         .set  COSF_OP_CODE,0x15         /* sgl cosine instr         */
        !           273:  273  00000000                                         .set  ATANF_OP_CODE,0x25        /* sgl arc-tangent instr    */
        !           274:  274  00000000                                         .set  LOGF_OP_CODE,0x35         /* sgl natural log instr    */
        !           275:  275  00000000                                         .set  SQRTF_OP_CODE,0x45        /* sgl square root instr    */
        !           276:  276  00000000                                         .set  EXPF_OP_CODE,0x55         /* sgl "e to the x" instr   */
        !           277:  277  00000000                                         .set  MULL2_OP_CODE,0x4c        /* integer multiply - 2 ops */
        !           278:  278  00000000                                         .set  MULL3_OP_CODE,0x5c        /* integer multiply - 3 ops */
        !           279:  279  00000000                                  
        !           280:  280  00000000                                  
        !           281:  281  00000000                                  #
        !           282:  282  00000000                                   #  Addressing test constants - These must agree with "fpp_defs.h"
        !           283:  283  00000000                                  #
        !           284:  284  00000000                                         .set ADR_ABSOLUTE,1     /* absolute address                 */
        !           285:  285  00000000                                         .set ADR_LITERAL,2      /* literal -short immediate byte    */
        !           286:  286  00000000                                         .set ADR_IM_B,3         /* immediate byte                   */
        !           287:  287  00000000                                         .set ADR_IM_W,4         /* immediate word                   */
        !           288:  288  00000000                                         .set ADR_IM_L,5         /* immediate long-word              */
        !           289:  289  00000000                                         .set ADR_B_DSP,6        /* byte displ relative              */
        !           290:  290  00000000                                         .set ADR_W_DSP,7        /* word displ relative              */
        !           291:  291  00000000                                         .set ADR_L_DSP,8        /* long-word displ relative         */
        !           292:  292  00000000                                         .set ADR_B_DSP_DEF,9    /* byte displ relative deferred     */
        !           293:  293  00000000                                         .set ADR_W_DSP_DEF,10   /* word displ relative deferred     */
        !           294:  294  00000000                                         .set ADR_L_DSP_DEF,11   /* L-word displ relative deferred   */
        !           295:  295  00000000                                         .set ADR_REG,12         /* direct register                  */
        !           296:  296  00000000                                         .set ADR_REG_DEF,13     /* register deferred                */
        !           297:  297  00000000                                         .set ADR_FP_DEF,14      /* FP deferred                      */
        !           298:  298  00000000                                         .set ADR_SP_DEF,15      /* SP deferred                      */
        !           299:  299  00000000                                         .set ADR_PUSH,16        /* auto-decrement SP                */
        !           300:  300  00000000                                         .set ADR_POP,17         /* auto-increment SP                */
        !           301:  301  00000000                                         .set ADR_POP_DEF,18     /* auto-increment SP deferred       */
        !           302:  302  00000000                                         .set ADR_REG_B,19       /* register + byte displ            */
        !           303:  303  00000000                                         .set ADR_REG_W,20       /* register + word displ            */
        !           304:  304  00000000                                         .set ADR_REG_L,21       /* register + long-word displ       */
        !           305:  305  00000000                                         .set ADR_REG_B_DEF,22   /* register + byte displ deferred   */
        !           306:  306  00000000                                         .set ADR_REG_W_DEF,23   /* register + word displ deferred   */
        !           307:  307  00000000                                         .set ADR_REG_L_DEF,24   /* register + L-word displ deferred */
        !           308:  308  00000000                                         .set ADR_I_FP_DEF,25    /* indexed (frame pointer deferred) */
        !           309:  309  00000000                                         .set ADR_I_L,26         /* indexed (longword displacement)  */
        !           310:  310  00000000                                  
        !           311:  311  00000000                                  
        !           312:  312  00000000                                   #*************************************************************************
        !           313:  313  00000000                                  #
        !           314:  314  00000000                                   #     Stuff for the Demand Paging , Events, & Addressing Tests
        !           315:  315  00000000                                  #
        !           316:  316  00000000                                   #************************************************************************/
        !           317:  317  00000000                                         .set SGL,1                      /* sgl precision data           */
        !           318:  318  00000000                                         .set DBL,2                      /* dbl precision data           */
        !           319:  319  00000000                                         .set ENABLE_EVENTS,0x60         /* enable ovfl & undfl events   */
        !           320:  320  00000000                                         .set NONE,0                     /* no operand flag              */
        !           321:  321  00000000                                         .set LOAD,1                     /* read-the-operand flag        */
        !           322:  322  00000000                                         .set STORE,2                    /* store-the-operand flag       */
        !           323:  323  00000000                                  
        !           324:  324  00000000                                         .set NO_EVT_HLT,1               /* halt code: did not Get event  */
        !           325:  325  00000000                                         .set EVT_MSK_HLT,2              /* halt code: got masked event   */
        !           326:  326  00000000                                         .set BAD_PSL_HLT,3              /* halt code: wrong PSL value    */
        !           327:  327  00000000                                         .set PUSH_CNT_HLT,4             /* halt code: wrong # ops on stk */
        !           328:  328  00000000                                         .set PUSH_PSL_HLT,5             /* halt code: bad PSL on stack   */
        !           329:  329  00000000                                         .set PUSH_PC_HLT,6              /* halt code: bad PC on stack    */
        !           330:  330  00000000                                         .set BAD_REG_HLT,7              /* halt code: bad final register */
        !           331:  331  00000000                                         .set BAD_ACC_HLT,8              /* halt code: bad final Acc.     */
        !           332:  332  00000000                                  
        !           333:  333  00000000                                  #
        !           334:  334  00000000                                   # set DMP_PG_0 to the 1st empty page
        !           335:  335  00000000                                  #
        !           336:  336  00000000                                         .set DMP_PG_0,0x36000
        !           337:  337  00000000                                         .set DMP_PG_1,DMP_PG_0+0x400
        !           338:  338  00000000                                         .set DMP_PG_2,DMP_PG_1+0x400
        !           339:  339  00000000                                         .set DMP_PG_3,DMP_PG_2+0x400
        !           340:  340  00000000                                         .set DMP_PG_4,DMP_PG_3+0x400
        !           341:  341  00000000                                         .set DMP_PG_5,DMP_PG_4+0x400
        !           342:  342  00000000                                         .set DMP_PG_6,DMP_PG_5+0x400
        !           343:  343  00000000                                         .set DMP_PG_7,DMP_PG_6+0x400
        !           344:  344  00000000                                         .set DMP_PG_8,DMP_PG_7+0x400
        !           345:  345  00000000                                         .set DMP_PG_9,DMP_PG_8+0x400
        !           346:  346  00000000                                         .set DMP_PG_10,DMP_PG_9+0x400
        !           347:  347  00000000                                         .set DMP_PG_11,DMP_PG_10+0x400
        !           348:  348  00000000                                         .set DMP_PG_12,DMP_PG_11+0x400
        !           349:  349  00000000                                         .set DMP_PG_13,DMP_PG_12+0x400
        !           350:  350  00000000                                  
        !           351:  351  00000000                                  #
        !           352:  352  00000000                                   # test code space for the address / demand page tests
        !           353:  353  00000000                                  #
        !           354:  354  00000000                                         .set START_OF_CODE,DMP_PG_1-20  /* 1st addr of test-code space  */
        !           355:  355  00000000                                         .set CODE_BUF_SIZE,40           /* # bytes in test-code space   */
        !           356:  356  00000000                                         .set END_OF_CODE,START_OF_CODE+CODE_BUF_SIZE
        !           357:  357  00000000                                  
        !           358:  358  00000000                                  #
        !           359:  359  00000000                                   # data locations used by the event and demand page tests
        !           360:  360  00000000                                  #
        !           361:  361  00000000                                         .set _dmp_byte_op_1,DMP_PG_1+0x30       /* 'byte offset' data */
        !           362:  362  00000000                                         .set _dmp_byte_op_2,DMP_PG_1+0x50       /* 'byte offset' data */
        !           363:  363  00000000                                         .set _dmp_byte_op_3,DMP_PG_1+0x70       /* 'byte offset' data */
        !           364:  364  00000000                                         .set _dmp_op_1,DMP_PG_3-4               /* 1st data word      */
        !           365:  365  00000000                                         .set _dmp_op_1_ptr,DMP_PG_4+0x30        /* ptr to 1st data wd */
        !           366:  366  00000000                                         .set _dmp_op_2_ptr,DMP_PG_5+0x30        /* ptr to 2nd data wd */
        !           367:  367  00000000                                         .set _dmp_op_2,DMP_PG_7-4               /* 2nd data word      */
        !           368:  368  00000000                                         .set _dmp_op_3,DMP_PG_8                 /* 3rd data word      */
        !           369:  369  00000000                                         .set _dmp_op_3_ptr,DMP_PG_9+0x30        /* ptr to 3rd data wd */
        !           370:  370  00000000                                         .set _dmp_op_4,DMP_PG_10                /* 4th data (for pipes) */
        !           371:  371  00000000                                         .set _dmp_op_5,DMP_PG_11                /* 5th data (for pipes) */
        !           372:  372  00000000                                         .set _sp_minus,DMP_PG_13-4              /* SP for POPs        */
        !           373:  373  00000000                                         .set _sp_page,DMP_PG_13                 /* SP page boundary   */
        !           374:  374  00000000                                         .set _sp_plus,DMP_PG_13+4               /* SP for PUSHs       */
        !           375:  375  00000000                                  
        !           376:  376  00000000                                  
        !           377:  377  00000000                                   # ************************************************************************
        !           378:  378  00000000                                   # *
        !           379:  379  00000000                                   # *           "RUN THE TEST CODE" ROUTINE
        !           380:  380  00000000                                   # *
        !           381:  381  00000000                                   # *  The general template of the test code will be:
        !           382:  382  00000000                                   # *
        !           383:  383  00000000                                   # *      <op-code> [<addr-mode>] [<op.#1>] [<addr-mode>] [<op.#2>]
        !           384:  384  00000000                                   # *
        !           385:  385  00000000                                   # *  any unused bytes will be padded with NOPs. After the NOPs there will
        !           386:  386  00000000                                   # *  be a jump back to this routine. The jump will only be taken if there
        !           387:  387  00000000                                   # *  is no event generated by the test instruction.
        !           388:  388  00000000                                   # *
        !           389:  389  00000000                                   # *  The event handler will verify the event type and return to this code 
        !           390:  390  00000000                                   # *  through the "event_return" pointer.
        !           391:  391  00000000                                   # *  After the event, this routine will decide if the event should have
        !           392:  392  00000000                                   # *  been masked or not. If it wasn't masked then this code will call the
        !           393:  393  00000000                                   # *  routine to check the event results (reg's, PSL, etc.). The checking
        !           394:  394  00000000                                   # *  routine is called from here because after the event, this was the  
        !           395:  395  00000000                                   # *  last routine with the right frame pointer.
        !           396:  396  00000000                                   # *
        !           397:  397  00000000                                   # *  30-May-85  added: ACC = 0 for pipelined test #2
        !           398:  398  00000000                                   # *  10-Jul-85  pulled instruction cache hit parts
        !           399:  399  00000000                                   # ************************************************************************
        !           400:  400  00000000                                         .set    NOP_JMP,0x1010719f      /* jump to an absolute address */
        !           401:  401  00000000                                         .text
        !           402:  402  00000000                                         .align 1
        !           403:  403  00000000                                         .globl _run_code
        !           404:  404  00000000                                  _run_code:
        !           405:  405  00014FBC    0000                                 .word   0
        !           406:  406  00014FBE    ed 6d ef00000327                     moval   (r13),_rc_code_fp               /* save the frame pointer    */
        !           407:  407  00014FC5    ed 6e ef0000031c                     moval   (r14),_rc_code_sp               /* save the stack pointer    */
        !           408:  408  00014FCC    e9 ef00000293 ef00000319             movab   _loop_n_leave,return            /* exit for unexpected event */
        !           409:  409  00014FD7    fe 04 ef000002a4                     callf   $4,_fill_code_buff              /* stuff the code buffer     */
        !           410:  410  00014FDE    ed ef000001dd efffffffd3             moval   _evt_return,_event_return       /* set up event return addr  */
        !           411:  411  00014FE9                                  
        !           412:  412  00014FE9                                   #########################################################################
        !           413:  413  00014FE9                                   # Invalidate the instruction cache (error loop starts here)
        !           414:  414  00014FE9                                   #########################################################################
        !           415:  415  00014FE9                                  _shift_loop:
        !           416:  416  00014FE9    6d efffffffcd                        incl    _Codek                  /* Bump code cache key        */
        !           417:  417  00014FEF    1d efffffffc7 8900ff                 cmpl    _Codek,$255             /* Last key yet ?             */
        !           418:  418  00014FF8    91 0b                                jlss    1f
        !           419:  419  00014FFA    0d 01 efffffffbb                     movl    $1,_Codek               /* Reset Code key to 1        */
        !           420:  420  00015001    ad 01 17                             mtpr    $1,$PACC                /* Purge all code cache       */
        !           421:  421  00015004    10                                   nop
        !           422:  422  00015005                                  1:
        !           423:  423  00015005    ad efffffffb1 0d                     mtpr    _Codek,$CCK             /* Set new key                */
        !           424:  424  0001500C                                   
        !           425:  425  0001500C                                   #########################################################################
        !           426:  426  0001500C                                   # If the addressing mode is POP or deferred POP, push the data needed
        !           427:  427  0001500C                                   #########################################################################
        !           428:  428  0001500C    1d 89008e efffffffa7                 cmpl    $0x8e,_addr_code        /* POP SP addressing?        */
        !           429:  429  00015015    31 0b                                beql    1f
        !           430:  430  00015017    1d 89009e efffffff9c                 cmpl    $0x9e,_addr_code        /* POP SP deferred addr.?    */
        !           431:  431  00015020    21 15                                bneq    2f
        !           432:  432  00015022                                  1:
        !           433:  433  00015022    1d 01 efffffff93                     cmpl    $1,_no_ops              /* push 1 or 2 operands?     */
        !           434:  434  00015029    31 06                                beql    1f
        !           435:  435  0001502B    dd efffffff8b                        pushl   _sgl_value_10           /* push the 2nd data operand */
        !           436:  436  00015031                                  1:
        !           437:  437  00015031    dd efffffff85                        pushl   _sgl_value_9            /* push the data to be popped */
        !           438:  438  00015037                                   
        !           439:  439  00015037                                  2:
        !           440:  440  00015037                                   #########################################################################
        !           441:  441  00015037                                   # LOAD THE ACCUMULATOR AND THE REGISTERS  
        !           442:  442  00015037                                   # If this is pipelined test #2, load a zero into the accumulator
        !           443:  443  00015037                                   #########################################################################
        !           444:  444  00015037    ed 6e efffffff7e                     moval   (sp),_pre_event_sp      /* save the stack pointer      */
        !           445:  445  0001503E    1d 02 efffffff77                     cmpl    $2,_pipe_test
        !           446:  446  00015045    21 06                                bneq    1f
        !           447:  447  00015047    4d 50                                clrl    r0                      /* load the accumulator with   */
        !           448:  448  00015049    4d 51                                clrl    r1                      /*    zero for pipe test #2    */
        !           449:  449  0001504B    11 0e                                brb     2f
        !           450:  450  0001504D    0d efffffff69 50              1:     movl    _dbl_ld_acc,r0          /* if not pipe test #2, load   */
        !           451:  451  00015054    0d efffffff66 51                     movl    _dbl_ld_acc+4,r1        /*    the ACC with the data    */
        !           452:  452  0001505B                                  2:
        !           453:  453  0001505B    1d efffffff5b 02                     cmpl    _acc_ld_size,$DBL       /* load DBL or SGL ACC?        */
        !           454:  454  00015062    31 04                                beql    1f
        !           455:  455  00015064    06 50                                ldf     r0                      /* load the sgl accumulator    */
        !           456:  456  00015066    11 02                                brb     2f
        !           457:  457  00015068    07 50                         1:     ldd     r0                      /* load the dbl accumulator    */
        !           458:  458  0001506A                                  2:
        !           459:  459  0001506A    ab 893fff efffffff49                 loadr   $0x3fff,_load_regs      /* load regs 0 - 13 (FP)       */
        !           460:  460  00015073                                   
        !           461:  461  00015073                                   
        !           462:  462  00015073                                   #########################################################################
        !           463:  463  00015073                                   # ENABLE OR DISABLE THE EVENT, SET THE EVENT TYPE & EXECUTE THE TEST CODE
        !           464:  464  00015073                                   #########################################################################
        !           465:  465  00015073    8b 8860                              bispsw  $ENABLE_EVENTS          /* enable ovfl & undfl events  */
        !           466:  466  00015076    9b efffffff40                        bicpsw  _disable_mask           /* disable events as needed    */
        !           467:  467  0001507C    0d efffffff3a efffffff35             movl    _test_event,_exp_event  /* set the event expected flag */
        !           468:  468  00015087    cd efffffff2f                        movpsl  _init_psl               /* save PSL for error checking */
        !           469:  469  0001508D    71 ffffffff29                        jmp     *_code_addr             /* execute the test code       */
        !           470:  470  00015093    00                                   halt
        !           471:  471  00015094                                  
        !           472:  472  00015094                                  
        !           473:  473  00015094                                   ##########################################################################
        !           474:  474  00015094                                   # The only way here (knock on wood) is if we executed the test instruction
        !           475:  475  00015094                                   # without getting any events. If an event was expected, it is an error to 
        !           476:  476  00015094                                   # come here.
        !           477:  477  00015094                                   # - Save the PSL and check if the event was disabled.
        !           478:  478  00015094                                   ##########################################################################
        !           479:  479  00015094                                         .globl _rc_code_return
        !           480:  480  00015094                                  _rc_code_return:
        !           481:  481  00015094    cd efffffff22                        movpsl  _psl_val                /* save the final PSL      */
        !           482:  482  0001509A    4d efffffff1c                        clrl    _exp_event              /* no more events expected */
        !           483:  483  000150A0    3d 890080 efffffff13                 bitl    $PSL_DBL,_psl_val       /* check for DBL Acc.       */
        !           484:  484  000150A9    21 0e                                bneq    1f
        !           485:  485  000150AB    26 efffffff0b                        stf     _dbl_st_acc             /* save the accumulator    */
        !           486:  486  000150B1    4d efffffff09                        clrl    _dbl_st_acc+4
        !           487:  487  000150B7    11 06                                brb     2f
        !           488:  488  000150B9    27 effffffefd                 1:     std     _dbl_st_acc             /* save the accumulator    */
        !           489:  489  000150BF                                  2:
        !           490:  490  000150BF    5d effffffef7                        tstl    _evt_disabled           /* Was the event disabled? */
        !           491:  491  000150C5    21 06                                bneq    1f
        !           492:  492  000150C7    71 ef0000008d                        jmp     _rc_no_event            /*  No -event not disabled */
        !           493:  493  000150CD                                  1:
        !           494:  494  000150CD                                  
        !           495:  495  000150CD                                  
        !           496:  496  000150CD                                   ##########################################################################
        !           497:  497  000150CD                                   # The event was disabled so we're OK so far. Check the PSL flags
        !           498:  498  000150CD                                   ##########################################################################
        !           499:  499  000150CD    fe 04 effffffee8                     callf   $4,_bad_final_psl       /* check the final PSL     */
        !           500:  500  000150D4    5d 50                                tstl    r0                      /* was the PSL OK?         */
        !           501:  501  000150D6    21 06                                bneq    1f                      /*   -NO. handle the error */
        !           502:  502  000150D8    71 ef00000187                        jmp     _loop_n_leave           /*   -YES. exit (or loop)  */
        !           503:  503  000150DE                                  1:
        !           504:  504  000150DE    5d effffffed8                        tstl    _prt_error              /* print an error message? */
        !           505:  505  000150E4    31 4e                                beql    1f
        !           506:  506  000150E6    dd effffffed0                        pushl   _bad_psl_msg            /* "bad final PSL" message */
        !           507:  507  000150EC    fe 08 effffffec9                     callf   $8,_prt_evt_er_msg      /* print the error message */
        !           508:  508  000150F3    dd 8f00000338                        pushl   $_rc_f_psl_msg          /* "final PSL = "          */
        !           509:  509  000150F9    fe 08 effffffebc                     callf   $8,_writes
        !           510:  510  00015100    dd effffffeb6                        pushl   _psl_val
        !           511:  511  00015106    fe 08 effffffeaf                     callf   $8,_write32h
        !           512:  512  0001510D    dd 8f00000345                        pushl   $_rc_e_psl_msg          /* "expected PSL = "       */
        !           513:  513  00015113    fe 08 effffffea2                     callf   $8,_writes
        !           514:  514  0001511A    dd effffffe9c                        pushl   _exp_psl
        !           515:  515  00015120    fe 08 effffffe95                     callf   $8,_write32h
        !           516:  516  00015127    dd 8f00000359                        pushl   $_rc_newline            /* print a line feed       */
        !           517:  517  0001512D    fe 08 effffffe88                     callf   $8,_writec
        !           518:  518  00015134                                  1:
        !           519:  519  00015134    5d effffffe82                        tstl    _halt_flg               /* halt on error?          */
        !           520:  520  0001513A    31 09                                beql    1f
        !           521:  521  0001513C    dd 03                                pushl   $BAD_PSL_HLT
        !           522:  522  0001513E    fe 08 effffffe77                     callf   $8,_event_halt          /* set up regs and halt    */
        !           523:  523  00015145                                  1:
        !           524:  524  00015145    5d effffffe71                        tstl    _loop_on_err            /* loop on the error?      */
        !           525:  525  0001514B    31 07                                beql    1f
        !           526:  526  0001514D    0d 01 effffffe68                     movl    $1,_force_loop          /* set the Force Loop flag */
        !           527:  527  00015154                                  1:
        !           528:  528  00015154    71 ef0000010b                        jmp     _loop_n_leave           /* exit or loop            */
        !           529:  529  0001515A                                  
        !           530:  530  0001515A                                  
        !           531:  531  0001515A                                   ##########################################################################
        !           532:  532  0001515A                                   # BUMMER!!   WE SHOULD HAVE GOTTEN AN EVENT  
        !           533:  533  0001515A                                   ##########################################################################
        !           534:  534  0001515A                                  _rc_no_event:
        !           535:  535  0001515A    bb 893fff effffffe59                 storer  $0x3fff,_store_regs     /* store regs 0 - 13         */
        !           536:  536  00015163    0d ef00000183 5d                     movl    _rc_code_fp,fp          /* re-load the frame pointer */
        !           537:  537  0001516A    0d ef00000178 5e                     movl    _rc_code_sp,sp          /* re-load the stack pointer */
        !           538:  538  00015171    5d effffffe45                        tstl    _force_loop             /* Is "force_loop" set?      */
        !           539:  539  00015177    31 06                                beql    1f
        !           540:  540  00015179    71 effffffe6a                        jmp     _shift_loop             /* Yes - loop on the error   */
        !           541:  541  0001517F                                  1:
        !           542:  542  0001517F    6d effffffe37                        incl    _errcnt;                /* bump the error count      */
        !           543:  543  00015185    5d effffffe31                        tstl    _prt_error              /* print an error message?   */
        !           544:  544  0001518B    31 0d                                beql    1f
        !           545:  545  0001518D    dd effffffe29                        pushl   _no_evt_msg             /* "did not get event" msg   */
        !           546:  546  00015193    fe 08 effffffe22                     callf   $8,_prt_evt_er_msg      /* print the error message   */
        !           547:  547  0001519A                                  1:
        !           548:  548  0001519A    5d effffffe1c                        tstl    _halt_flg               /* halt on error?            */
        !           549:  549  000151A0    31 09                                beql    1f
        !           550:  550  000151A2    dd 01                                pushl   $NO_EVT_HLT
        !           551:  551  000151A4    fe 08 effffffe11                     callf   $8,_event_halt          /* halt with code of 1       */
        !           552:  552  000151AB                                  1:
        !           553:  553  000151AB    5d effffffe0b                        tstl    _loop_on_err            /* loop on the error?        */
        !           554:  554  000151B1    31 07                                beql    1f
        !           555:  555  000151B3    0d 01 effffffe02                     movl    $1,_force_loop          /* set the force_loop flag   */
        !           556:  556  000151BA                                  1:
        !           557:  557  000151BA    71 ef000000a5                        jmp     _loop_n_leave           /* loop on the error or exit */
        !           558:  558  000151C0    00                                   halt                            /* we should never get here  */
        !           559:  559  000151C1                                  
        !           560:  560  000151C1                                  
        !           561:  561  000151C1                                   ##########################################################################
        !           562:  562  000151C1                                   # The only way here (knock on wood) is if we got the correct event while
        !           563:  563  000151C1                                   # executing the instruction. 
        !           564:  564  000151C1                                   ##########################################################################
        !           565:  565  000151C1                                         .globl _evt_return
        !           566:  566  000151C1                                  _evt_return:
        !           567:  567  000151C1    4d effffffdf5                        clrl    _exp_event              /* no more events expected     */
        !           568:  568  000151C7    0d effffffdef effffffdea             movl    _post_evt_acc,_dbl_st_acc       /* save the accumulator */
        !           569:  569  000151D2    0d effffffde8 effffffde3             movl    _post_evt_acc+4,_dbl_st_acc+4
        !           570:  570  000151DD    0d ef00000109 5d                     movl    _rc_code_fp,fp          /* re-load the frame pointer  */
        !           571:  571  000151E4    0d ef000000fe 5e                     movl    _rc_code_sp,sp          /* re-load the stack pointer  */
        !           572:  572  000151EB    5d effffffdcb                        tstl    _force_loop             /* Is "force_loop" set?       */
        !           573:  573  000151F1    31 06                                beql    1f
        !           574:  574  000151F3    71 effffffdf0                        jmp     _shift_loop             /* then loop on the error     */
        !           575:  575  000151F9                                  
        !           576:  576  000151F9                                  1:
        !           577:  577  000151F9                                   ##########################################################################
        !           578:  578  000151F9                                   # NOW CHECK TO SEE IF THE EVENT WAS DISABLED WHEN IT OCCURRED
        !           579:  579  000151F9                                   ##########################################################################
        !           580:  580  000151F9    5d effffffdbd                        tstl    _evt_disabled           /* Was the interrupt disabled? */
        !           581:  581  000151FF    21 0d                                bneq    1f
        !           582:  582  00015201    fe 04 effffffdb4                     callf   $4,_chk_event           /*  No -verify the stack, etc. */
        !           583:  583  00015208    71 ef00000057                        jmp     _loop_n_leave           /* Exit ( or loop if error )   */
        !           584:  584  0001520E                                  
        !           585:  585  0001520E                                  1:
        !           586:  586  0001520E                                   ##########################################################################
        !           587:  587  0001520E                                   # BUMMER!! WE SHOULDN'T HAVE GOTTEN AN EVENT  
        !           588:  588  0001520E                                   ##########################################################################
        !           589:  589  0001520E    0d ef000000d8 5d                     movl    _rc_code_fp,fp          /* re-load the frame pointer  */
        !           590:  590  00015215    0d ef000000cd 5e                     movl    _rc_code_sp,sp          /* re-load the stack pointer  */
        !           591:  591  0001521C    5d effffffd9a                        tstl    _force_loop             /* Is "force_loop" set?       */
        !           592:  592  00015222    31 06                                beql    1f
        !           593:  593  00015224    71 effffffdbf                        jmp     _shift_loop             /* then loop on the error     */
        !           594:  594  0001522A                                  1:
        !           595:  595  0001522A    6d effffffd8c                        incl    _errcnt;                /* bump the error count      */
        !           596:  596  00015230    5d effffffd86                        tstl    _prt_error              /* print an error message?   */
        !           597:  597  00015236    31 0d                                beql    1f
        !           598:  598  00015238    dd effffffd7e                        pushl   _disbl_evt_msg          /* "event while disabled" msg */
        !           599:  599  0001523E    fe 08 effffffd77                     callf   $8,_prt_evt_er_msg      /* print the error message */
        !           600:  600  00015245                                  1:
        !           601:  601  00015245    5d effffffd71                        tstl    _halt_flg               /* halt on error?            */
        !           602:  602  0001524B    31 09                                beql    1f
        !           603:  603  0001524D    dd 02                                pushl   $EVT_MSK_HLT
        !           604:  604  0001524F    fe 08 effffffd66                     callf   $8,_event_halt          /* halt with code of 2       */
        !           605:  605  00015256                                  1:
        !           606:  606  00015256    5d effffffd60                        tstl    _loop_on_err            /* loop on the error?        */
        !           607:  607  0001525C    31 07                                beql    1f
        !           608:  608  0001525E    0d 01 effffffd57                     movl    $1,_force_loop          /* set the force_loop flag   */
        !           609:  609  00015265                                  
        !           610:  610  00015265                                  1:
        !           611:  611  00015265                                   #########################################################################
        !           612:  612  00015265                                   #     THIS IS THE EXIT FROM THIS ROUTINE
        !           613:  613  00015265                                   # LOOP IF THE FORCE LOOP FLAG IS SET, OTHERWISE EXIT
        !           614:  614  00015265                                   #########################################################################
        !           615:  615  00015265                                  _loop_n_leave:
        !           616:  616  00015265    0d ef00000081 5d                     movl    _rc_code_fp,fp          /* re-load the frame pointer */
        !           617:  617  0001526C    0d ef00000076 5e                     movl    _rc_code_sp,sp          /* re-load the stack pointer */
        !           618:  618  00015273    5d effffffd43                        tstl    _force_loop             /* Is "force_loop" set?      */
        !           619:  619  00015279    31 06                                beql    1f
        !           620:  620  0001527B    71 effffffd68                        jmp     _shift_loop             /* then loop on the error    */
        !           621:  621  00015281                                  1:
        !           622:  622  00015281    40                                   ret                             /* return */
        !           623:  623  00015282                                  
        !           624:  624  00015282                                  
        !           625:  625  00015282                                  
        !           626:  626  00015282                                  
        !           627:  627  00015282                                  
        !           628:  628  00015282                                  
        !           629:  629  00015282                                   # *************************************************************************
        !           630:  630  00015282                                   # *
        !           631:  631  00015282                                   # *                   FILL IN THE CODE BUFFER ROUTINE
        !           632:  632  00015282                                   # *
        !           633:  633  00015282                                   # *  Set up the instruction code sequence. After the instruction code, 
        !           634:  634  00015282                                   # *  put a jump back to "execute_code" and fill the rest of the code buffer 
        !           635:  635  00015282                                   # *  with NOPs.
        !           636:  636  00015282                                   # *
        !           637:  637  00015282                                   # *************************************************************************
        !           638:  638  00015282                                         .text
        !           639:  639  00015282                                         .align  1
        !           640:  640  00015282                                         .globl  _fill_code_buff
        !           641:  641  00015282                                  _fill_code_buff:
        !           642:  642  00015282    0000                                 .word   0
        !           643:  643  00015284    0d 8f000363ec 50                     movl    $START_OF_CODE,r0
        !           644:  644  0001528B    0d 50 effffffd2a                     movl    r0,_code_addr           /* save the starting address */
        !           645:  645  00015292    4d 51                                clrl    r1
        !           646:  646  00015294    09 e100000000 60              1:     movb    _inst_buf(r1),(r0)      /* move the code to the code buf */
        !           647:  647  0001529B    6d 50                                incl    r0
        !           648:  648  0001529D    2f 10 51 fff2                        aoblss  $16,r1,1b
        !           649:  649  000152A2                                   ########################################################################
        !           650:  650  000152A2                                   # After the instruction code, put a jump back to "_rc_code_return"
        !           651:  651  000152A2                                   ########################################################################
        !           652:  652  000152A2    0d 8f1010719f effffffd0f             movl    $NOP_JMP,_sgl_dummy1    /* "<nop><nop><jmp><abs addr>" */
        !           653:  653  000152AD    4d 51                                clrl    r1
        !           654:  654  000152AF    09 e100000000 60              1:     movb    _sgl_dummy1(r1),(r0)    /* move the code to the code buf */
        !           655:  655  000152B6    6d 50                                incl    r0
        !           656:  656  000152B8    2f 04 51 fff2                        aoblss  $4,r1,1b
        !           657:  657  000152BD                                    
        !           658:  658  000152BD    ed effffffdd1 effffffcf4             moval   _rc_code_return,_sgl_dummy1 /* jmp to 'ex_code_return' */
        !           659:  659  000152C8    4d 51                                clrl    r1
        !           660:  660  000152CA    09 e100000000 60              1:     movb    _sgl_dummy1(r1),(r0)    /* move the code to the code buf */
        !           661:  661  000152D1    6d 50                                incl    r0
        !           662:  662  000152D3    2f 04 51 fff2                        aoblss  $4,r1,1b
        !           663:  663  000152D8                                   
        !           664:  664  000152D8                                   ########################################################################
        !           665:  665  000152D8                                   # Fill the rest of the buffer with NOPs and return
        !           666:  666  000152D8                                   ########################################################################
        !           667:  667  000152D8    0d 10 51                             movl    $0x10,r1                /* 0x10 = NOP op-code         */
        !           668:  668  000152DB    09 51 60                      1:     movb    r1,(r0)                 /* put NOPs in the code space */
        !           669:  669  000152DE    3f 8f00036414 51 fff4                aobleq  $END_OF_CODE,r1,1b
        !           670:  670  000152E7    40                                   ret                             /* return */
        !           671:  671  000152E8                                  
        !           672:  672  000152E8                                  
        !           673:  673  000152E8                                  
        !           674:  674  000152E8                                   ########################################################################
        !           675:  675  000152E8                                   #     Variables
        !           676:  676  000152E8                                   ########################################################################
        !           677:  677  000152E8                                         .align 2
        !           678:  678  000152E8                                         .globl  _rc_code_sp
        !           679:  679  000152E8                                  _rc_code_sp:                           /* save stack pointer value here */
        !           680:  680  000152E8    00000000                             .long   0
        !           681:  681  000152EC                                         .globl  _rc_code_fp
        !           682:  682  000152EC                                  _rc_code_fp:                           /* save frame pointer value here */
        !           683:  683  000152EC    00000000                             .long   0
        !           684:  684  000152F0                                  
        !           685:  685  000152F0                                         .globl  return                  /* emergency indirect return addr */
        !           686:  686  000152F0                                  return:
        !           687:  687  000152F0    000002a9                             .long   _loop_n_leave           /* return to loop or leave */
        !           688:  688  000152F4                                  
        !           689:  689  000152F4                                   ########################################################################
        !           690:  690  000152F4                                   #     ERROR MESSAGES
        !           691:  691  000152F4                                   ########################################################################
        !           692:  692  000152F4                                  _rc_f_psl_msg:
        !           693:  693  000152F4    66696E616C2050534C203D200            .ascii  "final PSL = \0"
        !           694:                   0
        !           695:  694  00015301                                  _rc_e_psl_msg:
        !           696:  695  00015301    2C20202065787065637465642            .ascii  ",   expected PSL = \0"
        !           697:                   050534C203D2000
        !           698:  696  00015315                                  _rc_newline:
        !           699:  697  00015315    200A00                               .ascii  " \n\0"
        !           700:  697  0002A2D1    200A00                               .ascii  " \n\0"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.