|
|
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: /* privileged registers addresses */ ! 19: #include "prvreg.h" ! 20: ! 21: /* program status long word definition */ ! 22: #include "psl.h" ! 23: ! 24: /* page table entry definition */ ! 25: #include "pte.h" ! 26: ! 27: /* process control block offsets */ ! 28: #include "pcboffset.h" ! 29: ! 30: /* fundamental constants for globl use */ ! 31: #include "const.h" ! 32: ! 33: /* system control block offsets*/ ! 34: #include "scboffset.h" ! 35: /* SPT offsets */ ! 36: #include "sptoffset.h" ! 37: ! 38: /* trap numbers*/ ! 39: #include "trap.h" ! 40: ! 41: ! 42: #define V_TRAP 0 ! 43: #define V_SYSCALL 4 ! 44: ! 45: .set HIGH,0x1f /*mask for disabling all interrupts */ ! 46: .set MCKVEC,4 /*scb offset for machinecheck vector */ ! 47: .set NISP,2 /*no. of interrupt stack pages */ ! 48: .set DONE,255 /*user process done code */ ! 49: ! 50: .text ! 51: ! 52: #include "pstorage.s" /* PROCESSOR STORAGE AREA */ ! 53: ! 54: .globl _Entry ! 55: _Entry: ! 56: jmp start ! 57: .space (1024-6) ! 58: ! 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,41 /*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: .globl _maxmem ! 79: _maxmem: ! 80: .space 4 /*memory size in no of bytes */ ! 81: ! 82: .globl _maxpages ! 83: _maxpages: ! 84: .space 4 /*memory size in no. of physical pages */ ! 85: ! 86: .globl _lastadd ! 87: _lastadd: ! 88: .space 4 /*address of the last long word */ ! 89: ! 90: .globl _unused ! 91: _unused: ! 92: .space 4 /*first unused page in system space */ ! 93: ! 94: .globl _ctlblk ! 95: _ctlblk: ! 96: .long 0 /* pointer to SCB */ ! 97: ! 98: .globl _savvec0 /*save vectors area */ ! 99: _savvec0: ! 100: .space 4 ! 101: ! 102: .globl _savvec1 /*save vectors area */ ! 103: _savvec1: ! 104: .space 4 ! 105: ! 106: .globl _savvec2 /*save vectors area */ ! 107: _savvec2: ! 108: .space 4 ! 109: ! 110: .globl _savvec3 /*save vectors area */ ! 111: _savvec3: ! 112: .space 4 ! 113: ! 114: .globl _savvec4 /*save vectors area */ ! 115: _savvec4: ! 116: .space 4 ! 117: ! 118: .globl _savvec5 /*save vectors area */ ! 119: _savvec5: ! 120: .space 4 ! 121: .globl _savvec6 /*save vectors area */ ! 122: _savvec6: ! 123: .space 4 ! 124: .globl _savvec7 /*save vectors area */ ! 125: _savvec7: ! 126: .space 4 ! 127: ! 128: .globl _savvec8 /*save vectors area */ ! 129: _savvec8: ! 130: .space 4 ! 131: ! 132: .globl badrtn ! 133: badrtn: ! 134: .long 0 ! 135: ! 136: .long 0 ! 137: ! 138: .globl _dbuf /*dump buffer left out of 1K */ ! 139: .globl _r_no ! 140: _r_no: ! 141: .long 0 ! 142: .globl _pt_base ! 143: _pt_base: ! 144: .long 0 ! 145: .globl _saved_psl ! 146: _saved_psl: ! 147: .long 0 ! 148: .globl _saved_sp ! 149: _saved_sp: ! 150: .long 0 ! 151: .globl _saved_fp ! 152: _saved_fp: ! 153: .long 0 ! 154: .globl _p_ptr ! 155: _p_ptr: ! 156: .long 0 ! 157: .globl _ret_adr ! 158: _ret_adr: ! 159: .long 0 ! 160: .globl _exp_par0 ! 161: _exp_par0: ! 162: .long 0 ! 163: .globl _exp_par1 ! 164: _exp_par1: ! 165: .long 0 ! 166: .globl _exp_par2 ! 167: _exp_par2: ! 168: .long 0 ! 169: .globl _exp_par3 ! 170: _exp_par3: ! 171: .long 0 ! 172: .globl _act_par0 ! 173: _act_par0: ! 174: .long 0 ! 175: .globl _act_par1 ! 176: _act_par1: ! 177: .long 0 ! 178: .globl _act_par2 ! 179: _act_par2: ! 180: .long 0 ! 181: .globl _act_par3 ! 182: _act_par3: ! 183: .long 0 ! 184: .long 0 ! 185: .globl _clk_cnt ! 186: _clk_cnt: ! 187: .long 0 /* Clock int. count */ ! 188: .globl _loop_flg ! 189: _loop_flg: ! 190: .long 0 ! 191: .globl _errcnt ! 192: _errcnt: ! 193: .long 0 ! 194: .globl _cycle ! 195: _cycle: ! 196: .long 0 ! 197: .globl _hlt_flg ! 198: _hlt_flg: ! 199: .long 0 ! 200: .long 0 ! 201: .globl _endprog ! 202: _endprog: ! 203: .long 0 ! 204: .globl _nonstop ! 205: _nonstop: ! 206: .long 0 ! 207: _dbuf: ! 208: .space NBPG - (NLWU *4) ! 209: edbuf: ! 210: ! 211: ! 212: .globl _intstack /* Interrupt stack */ ! 213: _intstack: /* Physical pages 4 & 5 */ ! 214: .space NISP*NBPG ! 215: eintstack: ! 216: ! 217: ! 218: .set SYSPTSIZE,512 /* No. of entries in SPT */ ! 219: ! 220: /* ! 221: System Page Table -- physical page 6 & 7 ! 222: */ ! 223: .align 2 ! 224: .globl _Sysmap ! 225: _Sysmap: ! 226: .space SYSPTSIZE*4 /* 512 max pages allowed for system */ ! 227: eSysmap: ! 228: .globl _Syssize ! 229: .set _Syssize,(eSysmap-_Sysmap)/4 /* should be SYSPTSIZE */ ! 230: ! 231: .globl _iomap /* Physical page 8 */ ! 232: _iomap: .space 1024 /* IOMAP - unused */ ! 233: .globl _eiomap ! 234: _eiomap: ! 235: ! 236: .globl _pcb0 /* Physical page 9 */ ! 237: _pcb0: .space 128 /*process control block 0 */ ! 238: .globl _pcb1 ! 239: _pcb1: .space 128 /*process control block 1 */ ! 240: .globl _pcb2 ! 241: _pcb2: .space 128 /*process control block 2 */ ! 242: .globl _pcb3 ! 243: _pcb3: .space 128 /*process control block 3 */ ! 244: .globl _pcb4 ! 245: _pcb4: .space 128 /*process control block 4 */ ! 246: .globl _pcb5 ! 247: _pcb5: .space 128 /*process control block 5 */ ! 248: .globl _pcb6 ! 249: _pcb6: .space 128 /*process control block 6 */ ! 250: .globl _pcb7 ! 251: _pcb7: .space 128 /*process control block 7 */ ! 252: ! 253: /* ! 254: *user #0 page tables -- P0PT, P1PT, P2PT ! 255: *physical memory -- page10, 11, & 12 respectively ! 256: */ ! 257: .align 2 ! 258: .globl _u0p0pt ! 259: _u0p0pt: ! 260: .space 1024 /*255 max pages for user #0 text */ ! 261: .globl _u0p1pt ! 262: _u0p1pt: ! 263: .space 1024 /*255 max pages for user #0 data */ ! 264: .globl _u0p2pt ! 265: _u0p2pt: ! 266: .space 1020 /*255 max pages for user #0 stack */ ! 267: eu0p2pt: ! 268: .space 4 ! 269: ! 270: /* ! 271: *user #1 page tables -- P0PT, P1PT, P2PT ! 272: *physical memory -- page13 ,14, & 15 respectively ! 273: */ ! 274: .align 2 ! 275: .globl _u1p0pt ! 276: _u1p0pt: ! 277: .space 1024 /*255 max pages for user #1 text */ ! 278: .globl _u1p1pt ! 279: _u1p1pt: ! 280: .space 1024 /*255 max pages for user #1 data */ ! 281: .globl _u1p2pt ! 282: _u1p2pt: ! 283: .space 1020 /*255 max pages for user #1 stack */ ! 284: eu1p2pt: ! 285: .space 4 ! 286: ! 287: ! 288: /* ! 289: *user #2 page tables -- P0PT, P1PT, P2PT ! 290: *physical memory -- page 16, 17 , & 18 respectively ! 291: */ ! 292: .align 2 ! 293: .globl _u2p0pt ! 294: _u2p0pt: ! 295: .space 1024 /*255 max pages for user #2 text */ ! 296: .globl _u2p1pt ! 297: _u2p1pt: ! 298: .space 1024 /*255 max pages for user #2 data */ ! 299: .globl _u2p2pt ! 300: _u2p2pt: ! 301: .space 1020 /*255 max pages for user #2 stack */ ! 302: eu2p2pt: ! 303: .space 4 ! 304: ! 305: ! 306: /* ! 307: *user #3 page tables -- P0PT, P1PT, P2PT ! 308: *physical memory -- page 19, 20 , & 21 respectively ! 309: */ ! 310: .align 2 ! 311: .globl _u3p0pt ! 312: _u3p0pt: ! 313: .space 1024 /*255 max pages for user #3 text */ ! 314: .globl _u3p1pt ! 315: _u3p1pt: ! 316: .space 1024 /*255 max pages for user #3 data */ ! 317: .globl _u3p2pt ! 318: _u3p2pt: ! 319: .space 1020 /*255 max pages for user #3 stack */ ! 320: eu3p2pt: ! 321: .space 4 ! 322: ! 323: /* ! 324: *user #4 thru 6 page tables ! 325: *physical memory -- pages 22 thru 30 ! 326: */ ! 327: .globl _u4p0pt ! 328: _u4p0pt: ! 329: .space (9*NBPG) - 4 ! 330: eu6p2pt: ! 331: .space 4 ! 332: ! 333: /* ! 334: *user #7 page tables -- P0PT, P1PT, P2PT ! 335: *physical memory -- page 31, 32 , & 33 respectively ! 336: */ ! 337: .align 2 ! 338: .globl _u7p0pt ! 339: _u7p0pt: ! 340: .space 1024 /*255 max pages for user #7 text */ ! 341: .globl _u7p1pt ! 342: _u7p1pt: ! 343: .space 1024 /*255 max pages for user #7 data */ ! 344: .globl _u7p2pt ! 345: _u7p2pt: ! 346: .space 1020 /*255 max pages for user #7 stack */ ! 347: eu7p2pt: ! 348: .space 4 ! 349: ! 350: .globl _iob0 /*io buffer 0 */ ! 351: _iob0: .space 1024 ! 352: .globl _iob1 /*io buffer 1 */ ! 353: _iob1: .space 1024 ! 354: .globl _iob2 /*io buffer 2 */ ! 355: _iob2: .space 1024 ! 356: .globl _iob3 /*io buffer 3 */ ! 357: _iob3: .space 1024 ! 358: .globl _iob4 /*io buffer 4 */ ! 359: _iob4: .space 1024 ! 360: .globl _iob5 /*io buffer 5 */ ! 361: _iob5: .space 1024 ! 362: .globl _iob6 /*io buffer 6 */ ! 363: _iob6: .space 1024 ! 364: esysdata: ! 365: ! 366: #include "scblock.s" /* SYSTEM CONTROL BLOCK */ ! 367: ! 368: #include "evthandlers.s" /*event handlers */ ! 369: ! 370: #define ACBL(_n1,_n2,_n3,_n4) \ ! 371: addl2 _n2,_n3;\ ! 372: cmpl _n3,_n1;\ ! 373: bleq _n4; ! 374: ! 375: .set MEMUNIT,64*1024 ! 376: .set MAXPHYSMEM,32*1024*1024-1 ! 377: .set ERRCD,0x7 ! 378: .set APE,0x1 ! 379: .set DCE,0x3 ! 380: .set VTO,0x4 ! 381: ! 382: ! 383: ! 384: /* ! 385: *INITIALIZATION CODE ! 386: * ! 387: * MME off; mode = k; IPL = 31; IS = 1 ! 388: * ! 389: */ ! 390: ! 391: .globl start ! 392: start: ! 393: mtpr $0,$MME /* Disable MME */ ! 394: andl3 $4,r11,_ss1 /* messages sense switch */ ! 395: movl r0,_test_no /* save test number */ ! 396: movl r1,_OPTIONS /* save option bits */ ! 397: clrl _nonstop ! 398: movl r2,_count /* save cycle count */ ! 399: cmpl $0xffffffff,r2 /* Is count == -1 */ ! 400: bneq 1f ! 401: movl $1,_nonstop /* Yes : NONSTOP */ ! 402: 1: ! 403: cmpl $0x0,r2 /* Is count == 0 */ ! 404: bneq 1f ! 405: movl $1,_count /* Yes : set default count to 1 */ ! 406: 1: ! 407: movab _scb,r0 ! 408: andl2 $0x3ffffc00,r0 ! 409: mtpr r0,$SCBB /* Set SCBB */ ! 410: mtpr $0x1f,$IPL /* Set IPL to HIGH */ ! 411: ! 412: movpsl r1 ! 413: andl2 $0xffffff00,r1 /* Mask out flags */ ! 414: cmpl r1,$0x041f0000 /*IS on,modes =k & IPL = 31? */ ! 415: beql 1f ! 416: 2: movl $1,r0 ! 417: movl $0x041f0000,r2 ! 418: halt /* PSL not initialized as expected */ ! 419: /* ! 420: # Mask out bit 30,31 of SCB vectors ! 421: # Will turm them back on when ready to go virtual in ! 422: # system space ! 423: */ ! 424: 1: ! 425: clrl _clk_cnt ! 426: movl $7,r0 /* R0 : Vector no. of clock int. */ ! 427: movab _Hardclk,_scb[r0] /* New vector for clock */ ! 428: ! 429: movl $_intstack+NISP*NBPG,r0 ! 430: andl2 $0x3fffffff,r0 /* Mask out bit 30,31 */ ! 431: mtpr r0,$ISP /* init. ISP */ ! 432: movl r0,sp /* in case we get exception */ ! 433: movab (sp),fp /* Initialize FP */ ! 434: /* ! 435: Clear system data area all the way upto system code ! 436: this includes dump buffer,interrupt stack,spt,iomap,pcbs,user ! 437: page tables, & io buffer area. ! 438: */ ! 439: 3: ! 440: movab esysdata,r7 ! 441: movab _restart,r6 ! 442: 1: clrl (r6) ! 443: ACBL(r7,$4,r6,1b) ! 444: /* ! 445: Count memory ! 446: */ ! 447: clrl r3 ! 448: movl _scb+BEVEC,r12 ! 449: movab 9f,_scb+BEVEC /* new interrupt handler */ ! 450: 1: tstl (r3) ! 451: clrl r0 /* allow 100ns delay */ ! 452: addl2 $MEMUNIT,r3 ! 453: cmpl r3,$MAXPHYSMEM /* excess max memory size? */ ! 454: bleq 1b ! 455: 2: ! 456: subl3 $4,r3,_maxmem ! 457: movl r12,_scb+BEVEC /* restore interrupt handler */ ! 458: jmp _ready ! 459: ! 460: .align 2 ! 461: 9: andl3 4(sp),$ERRCD,r0 /* Here's where we get the bus err */ ! 462: cmpl r0,$APE /* data parity error */ ! 463: bneq 1f ! 464: halt ! 465: 1: cmpl r0,$VTO /* versabus Error */ ! 466: bneq 1f ! 467: halt ! 468: 1: movab 8(sp),sp ! 469: movab 2b,(sp) ! 470: mtpr $1,$TBIA /* Purge all */ ! 471: mtpr $1,$PADC /* Purge all data cache */ ! 472: rei ! 473: ! 474: .globl _ready ! 475: _ready: ! 476: mtpr $64,$DCR /* Enable fault */ ! 477: andl3 $0x3ffffc00,$_end+NBPG-1,_endprog ! 478: ! 479: callf $4,_monitor ! 480: mtpr $2,$27 /* Disable Data cache */ ! 481: clrl _cycle ! 482: clrl _errcnt ! 483: 2: ! 484: movl $1,_test_no ! 485: bitl $1,_tstmsk ! 486: beql 1f ! 487: callf $4,_stest1 ! 488: 1: ! 489: incl _test_no ! 490: bitl $2,_tstmsk ! 491: beql 1f ! 492: callf $4,_stest2 ! 493: 1: ! 494: incl _test_no ! 495: bitl $4,_tstmsk ! 496: beql 1f ! 497: callf $4,_stest3 ! 498: 1: ! 499: mtpr $0x1e,$IPL /* Set IPL to a low value*/ ! 500: callf $4,_i_ecc /* Init. memory + ECC */ ! 501: incl _test_no ! 502: bitl $8,_tstmsk ! 503: beql 1f ! 504: callf $4,_subtest4 ! 505: 1: ! 506: incl _test_no ! 507: bitl $16,_tstmsk ! 508: beql 1f ! 509: callf $4,_subtest5 ! 510: 1: ! 511: incl _test_no ! 512: bitl $32,_tstmsk ! 513: beql 1f ! 514: callf $4,_subtest6 ! 515: 1: ! 516: pushl $endmsg /* Write cycle count */ ! 517: mtpr $0x1f,$IPL /* Set IPL to a high value*/ ! 518: bitl $8,_OPTIONS /* print message ? */ ! 519: beql 1f ! 520: callf $8,_writes ! 521: incl _cycle ! 522: pushl _cycle ! 523: callf $8,_writed ! 524: 1: ! 525: tstl _nonstop /* Is loop forever ? */ ! 526: beql 4f ! 527: jmp 2b /* Yes : Jump back */ ! 528: 4: ! 529: decl _count ! 530: tstl _count /* Is count == 0 ? */ ! 531: beql 1f ! 532: jmp 2b /* No : Continue */ ! 533: 1: ! 534: bitl $8,_OPTIONS /* suppress message ? */ ! 535: beql 1f ! 536: pushl $emsg ! 537: callf $8,_writes ! 538: pushl _cycle ! 539: callf $8,_writed ! 540: pushl $ermsg ! 541: callf $8,_writes ! 542: pushl _errcnt ! 543: callf $8,_writed ! 544: pushl $ermsg1 ! 545: callf $8,_writes ! 546: 1: ! 547: movl $0xCAFEBABE,r0 ! 548: halt ! 549: # ! 550: # ! 551: # *********************************** ! 552: # * Routine to test an ECC location * ! 553: # * ecccor(addr) : Read from this * ! 554: # * addr. ECC correction is enable. * ! 555: # * Return in R0 : * ! 556: # * 0 = Didnot get Buser * ! 557: # * -1 = Got DCE * ! 558: # * -2 = Unexpected Buser * ! 559: # *********************************** ! 560: # ! 561: .align 2 ! 562: .globl _ecccor ! 563: _ecccor: .word 0x1ffe ! 564: movl _scb+BEVEC,_savvec2 /* Save bus error vector */ ! 565: movab 9f,_scb+BEVEC /* Set new vector */ ! 566: movl 4(fp),r1 /* get test address */ ! 567: movl $0x3,0xffffb000 /* Turn ON ECC detection,correction */ ! 568: movl 0xffffb000,r0 ! 569: movl (r1),*8(fp) /* Read data */ ! 570: movl $2,r0 /* timeout value*/ ! 571: 1: ! 572: decl r0 ! 573: bgtr 1b ! 574: ! 575: clrl r0 /* indicate timeout */ ! 576: movl $0x80,0xffffb000 /* Turn OFF ECC detection */ ! 577: movl _savvec2,_scb+BEVEC ! 578: ret ! 579: # ! 580: # ! 581: # *********************************** ! 582: # * Routine to test an ECC location * ! 583: # * eccloc(addr) : Read from this * ! 584: # * addr. ECC detection is enable. * ! 585: # * Return in R0 : * ! 586: # * 0 = Didnot get Buser * ! 587: # * -1 = Got DCE * ! 588: # * -2 = Unexpected Buser * ! 589: # *********************************** ! 590: # ! 591: .align 2 ! 592: .globl _eccloc ! 593: _eccloc: .word 0x1ffe ! 594: movl _scb+BEVEC,_savvec2 /* Save bus error vector */ ! 595: movab 9f,_scb+BEVEC /* Set new vector */ ! 596: movl 4(fp),r2 /* get test address */ ! 597: movl $0x1,0xffffb000 /* Turn ON ECC detection */ ! 598: movl 0xffffb000,r0 ! 599: movl (r2),r1 /* Read data */ ! 600: movl $4,r0 /* timeout value*/ ! 601: 1: decl r0 ! 602: bgtr 1b ! 603: ! 604: movl 0xffffb000,_ber1 /* Read MCR */ ! 605: movl 0xffffb008,_ber3 /* Read MCBR */ ! 606: movl r1,_ber2 /* Data read */ ! 607: ! 608: clrl r0 /* indicate timeout */ ! 609: # ! 610: # Return after Bus error ! 611: # ! 612: 2: ! 613: movl $0xc0,0xffffb000 /* Turn OFF ECC, clear error */ ! 614: movl _savvec2,_scb+BEVEC ! 615: ret ! 616: # ! 617: # ********************* ! 618: # * Bus Error handler * ! 619: # ********************* ! 620: # ! 621: .align 2 ! 622: 9: ! 623: movl $0xc0,0xffffb000 /* Turn OFF ECC detection */ ! 624: andl3 4(sp),$ERRCD,r0 /* Here's where we get the bus err */ ! 625: movl (sp),_tmp_mcbr /* save current MCBR */ ! 626: movl 4(sp),_tmp_mear /* save current MEAR */ ! 627: cmpl r0,$DCE /* Data Check error ? */ ! 628: beql 3f ! 629: movl $-2,r0 /* indicate wrong Buser */ ! 630: brw 4f ! 631: 3: ! 632: movl $-1,r0 /* Indicate got a DCE */ ! 633: 4: movab 8(sp),sp ! 634: movab 2b,(sp) ! 635: movl _tmp_mcbr,_ber1 ! 636: movl _tmp_mear,_ber2 ! 637: rei ! 638: ! 639: .align 2 ! 640: .globl _ber1 ! 641: _ber1: .long 0 /* Bus error Parameter no. 1 */ ! 642: .globl _ber2 ! 643: _ber2: .long 0 /* Bus error Parameter no. 1 */ ! 644: .globl _ber3 ! 645: _ber3: .long 0 ! 646: # ! 647: # ********************* ! 648: # ! 649: .align 2 ! 650: .globl _Hardclk ! 651: _Hardclk: ! 652: incl _clk_cnt ! 653: rei ! 654: ! 655: .align 2 ! 656: .globl _tstmsk ! 657: _tstmsk: .long 0 /* tests to run */ ! 658: .globl _ss1 ! 659: _ss1: .long 0 /* If 1 then donot print heading messages */ ! 660: .globl _prt_flg ! 661: _prt_flg: .long 0 /* print enable */ ! 662: ! 663: .globl _OPTIONS ! 664: .globl _test_no ! 665: _test_no: .long 0 ! 666: .globl _count ! 667: _count: .long 0 ! 668: .globl _diagmode ! 669: _diagmode: .long 0 ! 670: .globl _tmp_mcbr ! 671: _tmp_mcbr: .long 0 ! 672: .globl _tmp_mear ! 673: _tmp_mear: .long 0 ! 674: .globl err1 ! 675: err1: ! 676: .ascii "\nRegisters : \0" ! 677: .globl err2 ! 678: err2: ! 679: .ascii " \0" ! 680: .globl err3 ! 681: err3: ! 682: .ascii "\n \0" ! 683: .globl err4 ! 684: err4: ! 685: .ascii "\n\0" ! 686: .globl e_type ! 687: e_type: ! 688: .ascii "\n** Unexpected exception type : \0" ! 689: .globl par_0 ! 690: par_0: ! 691: .ascii "** Par 0 : \0" ! 692: .globl par_1 ! 693: par_1: ! 694: .ascii "** Par 1 : \0" ! 695: .globl par_pc ! 696: par_pc: ! 697: .ascii "** PC : \0" ! 698: .globl par_psl ! 699: par_psl: ! 700: .ascii "** PSL : \0" ! 701: .align 2 ! 702: Gregs: .space 60 /* Space to save general registers */ ! 703: .align 2 ! 704: .globl _Errmsg ! 705: _Errmsg: ! 706: .long 0 /* Pointer to error message */ ! 707: .data 1 ! 708: endmsg: .ascii "\nEnd Cycle = \0" ! 709: emsg: .ascii "\nCycles Completed = \0" ! 710: ermsg: .ascii "\nError Count = \0" ! 711: ermsg1: .ascii "\nTest Complete \n\0"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.