|
|
1.1 ! root 1: .globl _monitor ! 2: # ! 3: # For looping ! 4: # ! 5: .globl _forever ! 6: .globl _force_lp ! 7: # ! 8: # For messages ! 9: # ! 10: .globl _display ! 11: .globl _heading ! 12: .globl _op_mode /* 1 : Tahoe, 0 : CP */ ! 13: # ! 14: # Counters ! 15: # ! 16: .globl _cycle ! 17: .globl _prog_cnt ! 18: .globl _test_cnt ! 19: .globl _test_no ! 20: # ! 21: # Little monitor for instruction tests ! 22: # ! 23: .text ! 24: _monitor: ! 25: movl r0,_test_no /* Default to 0; runs all tests */ ! 26: movl r2,_cycle ! 27: clrl _prog_cnt ! 28: ! 29: andl3 $1,r1,_op_mode /* Who handle error messages */ ! 30: andl3 $2,r1,_forever /* Loop forever once got an error */ ! 31: clrl _force_lp /* Before exit each subtest, if this */ ! 32: clrl _scoplp ! 33: ! 34: andl3 $4,r1,_display ! 35: andl3 $8,r1,_heading ! 36: movl $0x80000,sp /* set stack */ ! 37: callf $4,_lp_init /* Init vars. for looping */ ! 38: /* clear run flags back to zero */ ! 39: clrl r2 /* may have been set by previous runs */ ! 40: 2: shal $1,r2,r0 ! 41: movl $0x00,_test_tbl[r0] /* clear run flags */ ! 42: aoblss $notests,r2,2b ! 43: ! 44: movl _test_no,r0 ! 45: bleq 1f /* Invalid test no; runs all tests */ ! 46: cmpl $notests,r0 ! 47: blss 1f ! 48: ! 49: decl r0 /* subtract 1 from entered test no. */ ! 50: movl r0,_test_no /* save corected test number */ ! 51: shal $1,r0,r0 ! 52: movl $0x10000,_test_tbl[r0] /* Set flag to run */ ! 53: nolp: brw start ! 54: # ! 55: # Runs all tests ! 56: # ! 57: 1: ! 58: clrl r2 ! 59: 2: shal $1,r2,r0 ! 60: movl $0x10000,_test_tbl[r0] /* Set run flag */ ! 61: aoblss $notests,r2,2b ! 62: clrl _test_no ! 63: # ! 64: # ! 65: # ! 66: .globl start ! 67: start: ! 68: movl _test_no,r0 ! 69: loop: movl tst_tbl[r0],r1 /* get address of test routine */ ! 70: cmpl r1,$0 /* No more ? */ ! 71: jeql end ! 72: movl $0x80000,sp # reset stack, in case changed by test ! 73: movl $0x80000,fp # and frame ! 74: ! 75: shal $1,_test_no,r0 ! 76: movl _test_tbl[r0],r0 # Get test flags ! 77: andl3 $1,r0,r2 # Is loop flag set ? ! 78: bneq j_tst ! 79: 1: ! 80: incl _test_no ! 81: ! 82: j_tst: ! 83: andl3 $0x10000,r0,r2 # Is run flag set ? ! 84: bneq 1f ! 85: jmp start ! 86: 1: ! 87: movl r1,soap ! 88: callf $4,_pr_hd ! 89: movl soap,r1 ! 90: jmp (r1) /* jump register deferred */ ! 91: end: ! 92: cmpl $0xffffffff,_cycle /* Loop forever if cycle = -1 */ ! 93: jeql skp ! 94: incl _prog_cnt ! 95: cmpl _prog_cnt,_cycle ! 96: bgeq 1f ! 97: skp: ! 98: clrl _test_no ! 99: brw start ! 100: 1: ! 101: movl $0xcafebabe,r0 /* R0 == cafe babe ; end of test */ ! 102: halt ! 103: # ! 104: # ! 105: .globl tfail ! 106: tfail: callf $4,_M_error ! 107: jmp start ! 108: errhlt: halt ! 109: # ! 110: # ! 111: filler: ! 112: .align 2 ! 113: soap: .long 0 ! 114: .globl return ! 115: return: ! 116: .long start /* return address if test passed */ ! 117: .globl badrtn ! 118: badrtn: ! 119: .long tfail /* return address if test failed */ ! 120: # ! 121:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.