1: / Startup code for two-stage bootstrap 2: 3: / non-UNIX instructions 4: mfpi = 6500^tst 5: stst = 170300^tst 6: mtpi = 6600^tst 7: mfpd = 106500^tst 8: mtpd = 106600^tst 9: spl = 230 10: ldfps = 170100^tst 11: stfps = 170200^tst 12: wait = 1 13: rtt = 6 14: halt = 0 15: reset = 5 16: trap = 104400 17: 18: .globl _end 19: .globl _main 20: start: 21: reset 22: mov $340,PS 23: mov $140100,sp 24: 25: / set kernel I+D to physical 0 and IO page 26: clr r1 27: mov $77406,r2 28: mov $KISA0,r3 29: mov $KISD0,r4 30: jsr pc,setseg 31: mov $IO,-(r3) 32: clr r1 33: mov $KDSA0,r3 34: mov $KDSD0,r4 35: jsr pc,setseg 36: mov $IO,-(r3) 37: 38: / set user I+D to physical 64K (words) and IO page 39: mov $4000,r1 40: mov $UISA0,r3 41: mov $UISD0,r4 42: jsr pc,setseg 43: mov $IO,-(r3) 44: mov $4000,r1 45: mov $UDSA0,r3 46: mov $UDSD0,r4 47: jsr pc,setseg 48: mov $IO,-(r3) 49: 50: / enable map 51: mov $65,SSR3 / 22-bit map 52: bit $20,SSR3 53: beq 1f 54: mov $3,MSCR 55: 1: 56: mov $30340,PS 57: inc SSR0 58: 59: 60: / copy program to user I space 61: mov $_end,r0 62: asr r0 63: clr r1 64: 1: 65: mov (r1),-(sp) 66: mtpi (r1)+ 67: sob r0,1b 68: 69: 70: / continue execution in user space copy 71: mov $140004,sp 72: clr *$KDSA6 73: mov $140340,-(sp) 74: mov $user,-(sp) 75: rtt 76: user: 77: mov $_end+512.,sp 78: mov sp,r5 79: 80: jsr pc,_main 81: 82: trap 83: 84: br user 85: 86: setseg: 87: mov $8,r0 88: 1: 89: mov r1,(r3)+ 90: add $200,r1 91: mov r2,(r4)+ 92: sob r0,1b 93: rts pc 94: 95: .globl _setseg 96: _setseg: 97: mov 2(sp),r1 98: mov r2,-(sp) 99: mov r3,-(sp) 100: mov r4,-(sp) 101: mov $77406,r2 102: mov $KISA0,r3 103: mov $KISD0,r4 104: jsr pc,setseg 105: mov (sp)+,r4 106: mov (sp)+,r3 107: mov (sp)+,r2 108: rts pc 109: 110: / clrseg(addr,count) 111: .globl _clrseg 112: _clrseg: 113: mov 4(sp),r0 114: beq 2f 115: asr r0 116: bic $!77777,r0 117: mov 2(sp),r1 118: 1: 119: clr -(sp) 120: mtpi (r1)+ 121: sob r0,1b 122: 2: 123: rts pc 124: 125: 126: / mtpi(word,addr) 127: .globl _mtpi 128: _mtpi: 129: mov 4(sp),r0 130: mov 2(sp),-(sp) 131: mtpi (r0)+ 132: rts pc 133: 134: .globl __rtt 135: __rtt: 136: halt 137: 138: PS = 177776 139: SSR0 = 177572 140: SSR1 = 177574 141: SSR2 = 177576 142: SSR3 = 172516 143: KISA0 = 172340 144: KISA1 = 172342 145: KISA7 = 172356 146: KISD0 = 172300 147: KISD7 = 172316 148: KDSA0 = 172360 149: KDSA6 = 172374 150: KDSA7 = 172376 151: KDSD0 = 172320 152: KDSD5 = 172332 153: SISA0 = 172240 154: SISA1 = 172242 155: SISD0 = 172200 156: SISD1 = 172202 157: UISA0 = 177640 158: UISD0 = 177600 159: UDSA0 = 177660 160: UDSD0 = 177620 161: MSCR = 017777746 / 11/70 memory control register 162: IO = 177600 163: SWR = 177570 164: 165: .data