Annotation of cci/d/ether/init.x, revision 1.1.1.1

1.1       root        1: 
                      2: /*     init.s                                                          */
                      3: 
                      4: 
                      5: /*     This file is a diagnostic version of locore.s.                  */
                      6: /*     It contains the following:                                      */
                      7: /*     *system data area = scb, dump buffer, interrupt stack,          */
                      8: /*     *system page table,user page tables,pcbs,iomap, & io buffers.   */
                      9: /*                                                                     */
                     10: /*     *system code = interrupt vectors, initialization of system data,*/
                     11: /*     *memory size calculation,initialization of SPT, zeroing of      */
                     12: /*     *unused memory, & loading of SBR & SLR.                         */
                     13: /*     *                                                               */
                     14: /*     *at the end of this code, you are ready to go to virtual mode.  */
                     15: /*     * --- GOOD LUCK!                                                */
                     16: 
                     17: 
                     18: #include       "conf.h"
                     19: /*     privileged registers addresses  */
                     20: #include       "prvreg.h"
                     21:        
                     22: /*     program status long word definition     */
                     23: #include       "psl.h" 
                     24: 
                     25: /*     page table entry definition             */
                     26: #include       "pte.h"
                     27:        
                     28: /*     process control block offsets   */
                     29: #include       "pcboffset.h"   
                     30: 
                     31: /*     fundamental constants for globl use     */
                     32: #include       "const.h"       
                     33: 
                     34: /*     system control block offsets*/
                     35: #include       "scboffset.h"
                     36: /*     SPT offsets                             */
                     37: #include       "sptoffset.h"
                     38: 
                     39: /*     trap numbers*/
                     40: #include       "trap.h"        
                     41: 
                     42: 
                     43: #define V_TRAP         0
                     44: #define V_SYSCALL      4
                     45: 
                     46:        .set    HIGH,0x1f       /*mask for disabling all interrupts     */
                     47:        .set    MCKVEC,4        /*scb offset for machinecheck vector    */
                     48:        .set    NISP,2          /*no. of interrupt stack pages          */
                     49:        .set    DONE,255        /*user process done code                */
                     50: 
                     51:        .text
                     52: 
                     53: #include "pstorage.s"          /* PROCESSOR STORAGE AREA               */
                     54: 
                     55:        .globl  _Entry
                     56: _Entry:
                     57:        jmp     start
                     58:        .space  (1024-6)
                     59: 
                     60: 
                     61: 
                     62: /*             globl dump buffer to be used for communication          */
                     63: /*             between tests & interrupt handlers, & other misc.       */
                     64: /*             purposes.                                               */
                     65:                                
                     66:                                /*physical page 3                       */
                     67: 
                     68:        .set    NLWU,32         /*no. of longwords already used         */
                     69:                                /*this must be changed when you define  */
                     70:                                /*additional variables below before     */
                     71:                                /*_dbuf                                 */
                     72:        .globl  _restart
                     73: _restart:
                     74:        .space  4               /*contains restart address for restarting*/
                     75:                                /*after power is restored (loaded by    */
                     76:                                /*power fail interrupt handler & used by*/
                     77:                                /*CPU 2                                 */      
                     78: /*     ******************      */
                     79:        .globl  _cyconf         /*  address : 0xc04                     */
                     80: _cyconf:                       /*  Cypher configuration pointer : 0xc06  */
                     81:        .space  4
                     82:        .space  4
                     83: /*     ******************      */
                     84: 
                     85:        .globl  _lastadd
                     86: _lastadd:
                     87:        .space  4               /*address of the last long word         */
                     88: 
                     89:        .globl  _unused
                     90: _unused:
                     91:        .space  4               /*first unused page in system space     */
                     92: 
                     93:        .globl  _ctlblk
                     94: _ctlblk:
                     95:        .long   0               /* pointer to SCB */
                     96: 
                     97:        .globl  _savvec0        /*save vectors area                     */
                     98: _savvec0:
                     99:        .space  4
                    100: 
                    101:        .globl  _savvec1        /*save vectors area                     */
                    102: _savvec1:
                    103:        .space  4
                    104: 
                    105:        .globl  _savvec2        /*save vectors area                     */
                    106: _savvec2:
                    107:        .space  4
                    108: 
                    109:        .globl  _savvec3        /*save vectors area                     */
                    110: _savvec3:
                    111:        .space  4
                    112: 
                    113:        .globl  _savvec4        /*save vectors area                     */
                    114: _savvec4:
                    115:        .space  4
                    116: 
                    117:        .globl  _savvec5        /*save vectors area                     */
                    118: _savvec5:
                    119:        .space  4
                    120:        .globl  _savvec6        /*save vectors area                     */
                    121: _savvec6:
                    122:        .space  4
                    123:        .globl  _savvec7        /*save vectors area                     */
                    124: _savvec7:
                    125:        .space  4
                    126: 
                    127:        .globl  _savvec8        /*save vectors area                     */
                    128: _savvec8:
                    129:        .space  4
                    130: 
                    131:        .globl  _dbuf           /*dump buffer left out of 1K            */
                    132:        .globl  _r_no
                    133: _r_no:
                    134:        .long   0
                    135:        .globl  _pt_base
                    136: _pt_base:
                    137:        .long   0
                    138:        .globl  _saved_psl
                    139: _saved_psl:
                    140:        .long   0
                    141:        .globl  _saved_sp
                    142: _saved_sp:
                    143:        .long   0
                    144:        .globl  _saved_fp
                    145: _saved_fp:
                    146:        .long   0
                    147:        .globl  _p_ptr
                    148: _p_ptr:
                    149:        .long   0
                    150:        .globl  _ret_adr
                    151: _ret_adr:
                    152:        .long   0
                    153:        .globl  _exp_par0
                    154: _exp_par0:
                    155:        .long   0
                    156:        .globl  _exp_par1
                    157: _exp_par1:
                    158:        .long   0
                    159:        .globl  _exp_par2
                    160: _exp_par2:
                    161:        .long   0
                    162:        .globl  _exp_par3
                    163: _exp_par3:
                    164:        .long   0
                    165:        .globl  _act_par0
                    166: _act_par0:
                    167:        .long   0
                    168:        .globl  _act_par1
                    169: _act_par1:
                    170:        .long   0
                    171: 
                    172:        .globl  _IOpage
                    173: _IOpage:
                    174:        .long   0               /* Pointer 64K I/O pages */
                    175: #
                    176: #
                    177: #
                    178:        .globl  _proc_no
                    179: _proc_no:
                    180:        .long   0
                    181: 
                    182:        .globl  _clk_cnt
                    183: _clk_cnt:
                    184:        .long   0
                    185: _dbuf:
                    186:        .set    NN, (_dbuf - _restart)
                    187:        .space  1024 - NN
                    188: edbuf:
                    189: 
                    190: 
                    191:        .globl  _intstack       /* Interrupt stack                      */
                    192: _intstack:                     /* Physical pages 4 & 5                 */
                    193:        .space  NISP*NBPG
                    194: eintstack:
                    195: 
                    196: 
                    197:        .set    SYSPTSIZE,512   /* No. of entries in SPT                */
                    198:  
                    199: /*
                    200:        System Page Table -- physical page 6 & 7
                    201: */ 
                    202:        .align  2
                    203:        .globl  _Sysmap
                    204: _Sysmap:
                    205:        .space  SYSPTSIZE*4     /* 512 max pages allowed for system     */
                    206: eSysmap:
                    207:        .globl  _Syssize
                    208:        .set    _Syssize,(eSysmap-_Sysmap)/4    /* should be SYSPTSIZE  */
                    209:        
                    210:        .globl  _iomap          /* Physical page 8      */
                    211: _iomap:        .space  1024            /* IOMAP - unused       */
                    212:        .globl  _eiomap
                    213: _eiomap:
                    214: 
                    215:        .globl  _pcb0           /* Physical page 9      */
                    216: _pcb0: .space  128             /*process control block 0               */
                    217:        .globl  _pcb1
                    218: _pcb1: .space 128              /*process control block 1               */
                    219:        .globl  _pcb2
                    220: _pcb2: .space 128              /*process control block 2               */
                    221:        .globl  _pcb3
                    222: _pcb3: .space 128              /*process control block 3               */
                    223:        .globl  _pcb4
                    224: _pcb4: .space 128              /*process control block 4               */
                    225:        .globl  _pcb5
                    226: _pcb5: .space 128              /*process control block 5               */
                    227:        .globl  _pcb6
                    228: _pcb6: .space 128              /*process control block 6               */
                    229:        .globl  _pcb7
                    230: _pcb7: .space 128              /*process control block 7               */
                    231: 
                    232: /*
                    233:        *user #0 page tables -- P0PT, P1PT, P2PT                        
                    234:        *physical memory     --  page10, 11, & 12  respectively
                    235: */
                    236:        .align  2
                    237:        .globl  _u0p0pt
                    238: _u0p0pt:
                    239:        .space  1024            /*255 max pages for user #0 text        */
                    240:        .globl  _u0p1pt
                    241: _u0p1pt:       
                    242:        .space  1024            /*255 max pages for user #0 data        */
                    243:        .globl  _u0p2pt
                    244: _u0p2pt:       
                    245:        .space  1020            /*255 max pages for user #0 stack       */
                    246: eu0p2pt:
                    247:        .space  4
                    248: 
                    249: /*
                    250:        *user #1 page tables -- P0PT, P1PT, P2PT                        
                    251:        *physical memory     --  page13 ,14, & 15  respectively
                    252: */
                    253:        .align  2
                    254:        .globl  _u1p0pt
                    255: _u1p0pt:
                    256:        .space  1024            /*255 max pages for user #1 text        */
                    257:        .globl  _u1p1pt
                    258: _u1p1pt:       
                    259:        .space  1024            /*255 max pages for user #1 data        */
                    260:        .globl  _u1p2pt
                    261: _u1p2pt:       
                    262:        .space  1020            /*255 max pages for user #1 stack       */
                    263: eu1p2pt:
                    264:        .space  4
                    265: 
                    266: 
                    267: /*
                    268:        *user #2 page tables -- P0PT, P1PT, P2PT                        
                    269:        *physical memory     --  page 16, 17 , & 18  respectively
                    270: */
                    271:        .align  2
                    272:        .globl  _u2p0pt
                    273: _u2p0pt:
                    274:        .space  1024            /*255 max pages for user #2 text        */
                    275:        .globl  _u2p1pt
                    276: _u2p1pt:       
                    277:        .space  1024            /*255 max pages for user #2 data        */
                    278:        .globl  _u2p2pt
                    279: _u2p2pt:       
                    280:        .space  1020            /*255 max pages for user #2 stack       */
                    281: eu2p2pt:
                    282:        .space  4
                    283: 
                    284: 
                    285: /*
                    286:        *user #3 page tables -- P0PT, P1PT, P2PT                        
                    287:        *physical memory     --  page 19, 20 , & 21  respectively
                    288: */
                    289:        .align  2
                    290:        .globl  _u3p0pt
                    291: _u3p0pt:
                    292:        .space  1024            /*255 max pages for user #3 text        */
                    293:        .globl  _u3p1pt
                    294: _u3p1pt:       
                    295:        .space  1024            /*255 max pages for user #3 data        */
                    296:        .globl  _u3p2pt
                    297: _u3p2pt:       
                    298:        .space  1020            /*255 max pages for user #3 stack       */
                    299: eu3p2pt:
                    300:        .space  4
                    301: 
                    302: /*
                    303:        *user #4 thru 6 page tables
                    304:        *physical memory -- pages 22 thru 30
                    305: */
                    306:        .globl  _u4p0pt
                    307: _u4p0pt:
                    308:        .space  (9*NBPG) - 4
                    309: eu6p2pt:
                    310:        .space  4
                    311: 
                    312: /*
                    313:        *user #7 page tables -- P0PT, P1PT, P2PT                        
                    314:        *physical memory     --  page 31, 32 , & 33  respectively
                    315: */
                    316:        .align  2
                    317:        .globl  _u7p0pt
                    318: _u7p0pt:
                    319:        .space  1024            /*255 max pages for user #7 text        */
                    320:        .globl  _u7p1pt
                    321: _u7p1pt:       
                    322:        .space  1024            /*255 max pages for user #7 data        */
                    323:        .globl  _u7p2pt
                    324: _u7p2pt:       
                    325:        .space  1020            /*255 max pages for user #7 stack       */
                    326: eu7p2pt:
                    327:        .space  4
                    328: 
                    329:        .globl  _Ksp0           /* Page used for Kernel stack of user0 */
                    330: _Ksp0: .space  1020
                    331: _Eksp0:        .long   0
                    332: 
                    333:        .globl  _Ksp1           /* Page used for Kernel stack of user1 */
                    334: _Ksp1: .space  1020
                    335: _Eksp1:        .long   0
                    336: 
                    337:        .globl  _Ksp2           /* Page used for Kernel stack of user2 */
                    338: _Ksp2: .space  1020
                    339: _Eksp2:        .long   0
                    340: 
                    341:        .globl  _Ksp3           /* Page used for Kernel stack of user3 */
                    342: _Ksp3: .space  1020
                    343: _Eksp3:        .long   0
                    344: 
                    345:        .globl  _Ksp4           /* Page used for Kernel stack of user4 */
                    346: _Ksp4: .space  1020
                    347: _Eksp4:        .long   0
                    348: 
                    349:        .globl  _Ksp5           /* Page used for Kernel stack of user5 */
                    350: _Ksp5: .space  1020
                    351: _Eksp5:        .long   0
                    352: 
                    353:        .globl  _Ksp6           /* Page used for Kernel stack of user6 */
                    354: _Ksp6: .space  1020
                    355: _Eksp6:        .long   0
                    356: #
                    357: #      I/O buffers
                    358: #
                    359:        .globl  _iob0
                    360: _iob0: .space  1024
                    361:        .globl  _iob1
                    362: _iob1: .space  1024
                    363:        .globl  _iob2
                    364: _iob2: .space  1024
                    365:        .globl  _iob3
                    366: _iob3: .space  1024
                    367:        .globl  _iob4
                    368: _iob4: .space  1024
                    369:        .globl  _iob5
                    370: _iob5: .space  1024
                    371: 
                    372: esysdata:
                    373: 
                    374: #include "scblock.s"           /* SYSTEM CONTROL BLOCK                 */
                    375: 
                    376: 
                    377: 
                    378: 
                    379: 
                    380: 
                    381: #include       "evthandlers.s" /*event handlers                        */
                    382: 
                    383: #define        ACBL(_n1,_n2,_n3,_n4) \
                    384: addl2  _n2,_n3;\
                    385: cmpl   _n3,_n1;\
                    386: bleq   _n4;
                    387: 
                    388: 
                    389: 
                    390: /*
                    391:        *INITIALIZATION CODE
                    392:        *
                    393:        * MME off; mode = k; IPL = 31; IS = 1
                    394:        *
                    395: */
                    396: 
                    397:        .globl  start
                    398: start:
                    399:        mtpr    $0x1f,$IPL      /* Set IPL to HIGH */
                    400:        mtpr    $0,$MME         /* Disable MME */
                    401:        movab   _scb,r1
                    402:        andl3   $0x000003ff, r1, r0
                    403:        tstl    r0              /* does scb addr starts at pg boundary? */
                    404:        beql    1f
                    405:        movl    $0xffffffff,r0  /* scb address misaligned error */
                    406:        halt                    /* halt immediately             */
                    407: 1:
                    408:        mtpr    r1, $SCBB       /* Set SCBB  */
                    409: 
                    410:        movpsl  r1
                    411:        andl2   $0x001f0000,r1          /* Mask out flags               */
                    412:        cmpl    r1,$0x001f0000          /* modes = K & IPL = 31?        */
                    413:        beql    1f
                    414: 2:     movl    $0xeeeeeeee,r0
                    415:        movl    $0x041f0000,r2
                    416:        halt                    /* PSL not initialized as expected      */
                    417: 1:
                    418:        movl    $_intstack+NISP*NBPG,r0
                    419:        andl2   $0x3fffffff,r0          /* Mask out bit 30,31 */
                    420:        mtpr    r0,$ISP                 /* init. ISP            */
                    421:        movl    r0,sp                   /* in case we get exception     */
                    422:        movab   (sp),fp                 /* Initialize FP                */
                    423: #
                    424: #      Clear system data area all the way upto system code
                    425: #      this includes dump buffer,interrupt stack,spt,iomap,pcbs,user 
                    426: #      page tables, & io buffer area.
                    427: #
                    428: 3:     
                    429:        movab   esysdata,r7
                    430:        movab   _restart,r6
                    431: 1:     clrl    (r6)
                    432:        ACBL(r7,$4,r6,1b)
                    433: #
                    434: #      Initialize System Page Table
                    435: #
                    436: 5:
                    437:        clrl    r2
                    438:        movab   _Ksp6,r1        /* R1 = Last address in Kernel stack area */
                    439:        andl2   $0x3fffffff,r1  /* Mask out bit 30,31   */
                    440:        shar    $PGSHIFT,r1,r1  /* Get page no. of last page of Kstacks  */
                    441: 1:
                    442:        movl    r2,r11                  /* Donot want to use orl3 */
                    443:        orl2    $PG_V|PG_KW,r11
                    444:        orl2    r11,_Sysmap[r2]
                    445:        aobleq  r1,r2,1b
                    446: 
                    447:        movab   esysdata,r1     /* R1 = Last address in system data area */
                    448:        andl2   $0x3fffffff,r1  /* Mask out bit 30,31   */
                    449:        shar    $PGSHIFT,r1,r1  /* Get page no. of last system data addr  */
                    450: 1:
                    451:        movl    r2,r11                  /* Donot want to use orl3 */
                    452:        orl2    $PG_V|PG_KW|PG_NC,r11   /* Set I/O buffers non cachable */
                    453:        orl2    r11,_Sysmap[r2]
                    454:        aoblss  r1,r2,1b
                    455: #
                    456: #      Map system text area 1 to 1, Kernel read/write.
                    457: #      For this to work, the label _etext must exist at the end 
                    458: #      of system code; Add in 4 more pages for data area used in C
                    459: #
                    460:        movab   _end + (NBPG-1),r1      /* Map text+data 1 to 1; Kernel R/W */
                    461:        andl3   $0x3ffffc00,r1,_IOpage
                    462:        addl2   $64*(1024),r1
                    463:        andl2   $0x3fffffff,r1
                    464:        shar    $PGSHIFT,r1,r1
                    465: 1:
                    466:        movl    r2,r11
                    467:        orl2    $PG_V|PG_KW|PG_NC,r11   /* Kernel Read/Write, non_cachable */
                    468:        orl2    r11,_Sysmap[r2]
                    469:        aoblss  r1,r2,1b
                    470: #
                    471: #      Map from here (1st unused page) to page 512 :
                    472: #         * invalid,no access, & virtual = physical
                    473: #
                    474:        movl    r2,_unused      /* Save first unused physical page no   */
                    475:        movl    $LSP+1,r1
                    476: 1:     movl    r2,_Sysmap[r2]
                    477:        aoblss  r1,r2,1b
                    478: 
                    479: sysrdy:
                    480:        movab   _Sysmap,r0
                    481:        mtpr    r0,$SBR                 /* Set SYSTEM BASE REG */
                    482:        mtpr    $_Syssize,$SLR
                    483:        orl2    $0xc0000000,r0
                    484:        mtpr    r0,$P0BR                /* Set P0BR */
                    485:        mtpr    $_Syssize,$P0LR
                    486: 
                    487:        movl    $CLOCK,r0               /* clock handler entry  */
                    488:        movab   _Xclock,_scb[r0]        /* clk hndlr address    */
                    489: 
                    490:        movl    $BUSER,r0
                    491:        movab   _Buser,_scb[r0]         /* Set bus error handler */
                    492: 
                    493:        clrl    _bturn
                    494:        clrl    _bell
                    495:        clrl    _btime
                    496:        mtpr    $1,$IPL                 /* Allow clock interrupt */
                    497: #
                    498: #      Probe for VEIUs
                    499: #
                    500:        clrl    _veius
                    501:        callf   $4,_chk_veiu_adr
                    502:        movl    r0,_veius
                    503: 
                    504:        .globl  _ready
                    505: _ready:
                    506:        clrl    _proc_no
                    507:        mtpr    $1,$PACC
                    508:        mtpr    $1,$PADC
                    509:        mtpr    $1,$TBIA
                    510:        mtpr    $1,$CCK                 /* Set Code Cache Key = 1 */
                    511:        mtpr    $1,$DCK                 /* Set Data Cache Key = 1 */
                    512:        mtpr    $1,$MME                 /* Enable MME */
                    513:        jmp     *$1f
                    514: 1:
                    515:        movab   _pcb0,r0
                    516:        movab   _Eksp0,(r0)             /* Set PCB0_KSP */
                    517:        mfpr    $P0BR,PCB_P0BR(r0)      /* Set PCB0_P0BR */
                    518:        mfpr    $P0LR,PCB_P0LR(r0)      /* Set PCB0_P0LR */
                    519:        mtpr    r0,$PCBB                /* Init PCBB to PCB_0 */
                    520:        ldpctx                          /* Just to switch to Kernel stack */
                    521:        mtpr    $1,$IPL                 /* Drop IPL to 1 */
                    522:        movl    (sp)+,r12               /* Pop unnecessary PC,PSL */
                    523:        movl    (sp)+,r11
                    524: #
                    525: 1:     clrl    _Multi
                    526: #
                    527: #      VEIUs Test
                    528: #
                    529:        tstl    _veius          /* Any VEIUs to test ?  */
                    530:        beql    1f
                    531:        callf   $4,_init_veiu_vec /* Set up interrupt handlers for VEIUs */
                    532:        callf   $4,_veiu        /* VEIU test            */
                    533: #
                    534: #
                    535: 1:
                    536:        movl    $0xcafebabe,r0
                    537:        halt
                    538: #
                    539: #      Real time clock Handler
                    540: #
                    541:        .align  2
                    542:        .globl  _Xclock
                    543: _Xclock:
                    544:        rei
                    545: 
                    546: #
                    547: #      Bus error handler
                    548: #
                    549:        .align  2
                    550:        .globl  _Buser
                    551: _Buser:
                    552:        movab   (sp),-(sp)              /* Push pointer to error parameter */
                    553:        callf   $8,_buserror
                    554:        incl    _Berr
                    555:        movl    (sp)+,r0
                    556:        movl    (sp)+,r0
                    557:        movl    $0xeeeeeeee, r0
                    558:        rei
                    559: 
                    560: #
                    561: # badaddr(addr, len)
                    562: #      see if access addr with a len type instruction causes a machine check
                    563: #      len is length of access (1=byte, 2=short, 4=long)
                    564: #      r0 = 0 means good(exists); r0 =1 means does not exist.
                    565: #
                    566:        .globl  _badaddr
                    567: _badaddr:
                    568:        .word   0x1c    # Keep r4,r3,r2
                    569:        mfpr    $IPL,r1
                    570:        mtpr    $HIGH,$IPL
                    571:        movl    _scb+BEVEC,r2
                    572:        movl    4(fp),r3
                    573:        movl    8(fp),r4
                    574:        movab   9f,_scb+BEVEC
                    575:        bbc     $0,r4,1f 
                    576:        tstb    (r3)
                    577: 1:     bbc     $1,r4,1f
                    578:        tstw    (r3)
                    579: 1:     bbc     $2,r4,1f
                    580:        tstl    (r3)
                    581: 1:     clrl    r0                      # made it w/o machine checks
                    582: 2:     movl    r2,_scb+BEVEC
                    583:        mtpr    r1,$IPL
                    584:        ret
                    585: 
                    586:        .align  2
                    587: 9:                     # Here we catch buss error (if it comes)
                    588:        andl3   4(sp),$0x7,r0   # check ERRCD
                    589:        cmpl    r0,$1           # check APE
                    590:        jneq    1f
                    591:        halt                    # Address parity error !!!
                    592: 1:     cmpl    r0,$5           # check VBE
                    593:        jneq    1f
                    594:        halt                    # Versabus error
                    595: 1:
                    596:        movl    $1,r0           # Anything else = bad address
                    597:        movab   8(sp),sp        # discard buss error trash
                    598:        movab   2b,(sp)         # new program counter on stack.
                    599:        rei
                    600: #
                    601: #
                    602: #
                    603:        .align  2
                    604: _bell: .long   0
                    605: _bturn: .long  0
                    606: _btime: .long  0
                    607:        .globl  _Multi
                    608: _Multi:  .long 0
                    609:        .globl  _Berr
                    610: _Berr: .long   0
                    611:        .globl  _IOinit
                    612: _IOinit: .long 0
                    613:        .globl  _tape_ON
                    614: _tape_ON:
                    615:        .long   1
                    616:        .globl  _vioc_ON
                    617: _vioc_ON:
                    618:        .long   1
                    619:        .globl  _vddc_ON
                    620: _vddc_ON:
                    621:        .long   1
                    622:        .globl  _viocs
                    623: _viocs:
                    624:        .long   0
                    625:        .globl  _veius
                    626: _veius:
                    627:        .long   0
                    628: 

unix.superglobalmegacorp.com

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