| 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 | reset = 5 |
| 15 | / trap = 104400 |
| 16 | |
| 17 | PS = 177776 |
| 18 | |
| 19 | .globl _end |
| 20 | .globl _main, __rtt |
| 21 | .globl _edata |
| 22 | jmp start |
| 23 | |
| 24 | / |
| 25 | / trap vectors |
| 26 | / |
| 27 | trap;340 |
| 28 | trap;341 / illegal instruction |
| 29 | trap;342 / BPT |
| 30 | trap;343 / IOT |
| 31 | trap;344 / POWER FAIL |
| 32 | trap;345 / EMT |
| 33 | tvec: |
| 34 | start;346 / TRAP |
| 35 | .=400^. |
| 36 | .text |
| 37 | |
| 38 | |
| 39 | start: |
| 40 | mov $340,*$PS |
| 41 | mov $trap,tvec |
| 42 | / fix up stack segment clobbered by trap |
| 43 | mov $1400,*$KDSA6 |
| 44 | mov $157776,sp |
| 45 | mov $_edata,r0 |
| 46 | mov $_end,r1 |
| 47 | sub r0,r1 |
| 48 | inc r1 |
| 49 | clc |
| 50 | ror r1 |
| 51 | 1: |
| 52 | clr (r0)+ |
| 53 | sob r1,1b |
| 54 | jsr pc,_main |
| 55 | |
| 56 | / fix up stack to point at trap ps-pc pair |
| 57 | / so we can return to the bootstrap |
| 58 | __rtt: |
| 59 | clr *$KDSA6 |
| 60 | mov $140000,sp |
| 61 | rtt / we hope! |
| 62 | br . |
| 63 | |
| 64 | |
| 65 | .globl _trap |
| 66 | trap: |
| 67 | mov r0,-(sp) |
| 68 | mov r1,-(sp) |
| 69 | mov *$PS,-(sp) |
| 70 | jsr pc,_trap |
| 71 | tst (sp)+ |
| 72 | mov (sp)+,r1 |
| 73 | mov (sp)+,r0 |
| 74 | rtt |
| 75 | |
| 76 | KDSA6 = 172374 |