home *** CD-ROM | disk | FTP | other *** search
- / Startup code for two-stage bootstrap
-
- / non-UNIX instructions
- mfpi = 6500^tst
- stst = 170300^tst
- mtpi = 6600^tst
- mfpd = 106500^tst
- mtpd = 106600^tst
- spl = 230
- ldfps = 170100^tst
- stfps = 170200^tst
- wait = 1
- rtt = 6
- halt = 0
- reset = 5
- trap = 104400
-
- .globl _end
- .globl _main
- start:
- reset
- mov $340,PS
- mov $140100,sp
-
- / set kernel I+D to physical 0 and IO page
- clr r1
- mov $77406,r2
- mov $KISA0,r3
- mov $KISD0,r4
- jsr pc,setseg
- mov $IO,-(r3)
- clr r1
- mov $KDSA0,r3
- mov $KDSD0,r4
- jsr pc,setseg
- mov $IO,-(r3)
-
- / set user I+D to physical 64K (words) and IO page
- mov $4000,r1
- mov $UISA0,r3
- mov $UISD0,r4
- jsr pc,setseg
- mov $IO,-(r3)
- mov $4000,r1
- mov $UDSA0,r3
- mov $UDSD0,r4
- jsr pc,setseg
- mov $IO,-(r3)
-
- / enable map
- mov $65,SSR3 / 22-bit map
- bit $20,SSR3
- beq 1f
- mov $3,MSCR
- 1:
- mov $30340,PS
- inc SSR0
-
-
- / copy program to user I space
- mov $_end,r0
- asr r0
- clr r1
- 1:
- mov (r1),-(sp)
- mtpi (r1)+
- sob r0,1b
-
-
- / continue execution in user space copy
- mov $140004,sp
- clr *$KDSA6
- mov $140340,-(sp)
- mov $user,-(sp)
- rtt
- user:
- mov $_end+512.,sp
- mov sp,r5
-
- jsr pc,_main
-
- trap
-
- br user
-
- setseg:
- mov $8,r0
- 1:
- mov r1,(r3)+
- add $200,r1
- mov r2,(r4)+
- sob r0,1b
- rts pc
-
- .globl _setseg
- _setseg:
- mov 2(sp),r1
- mov r2,-(sp)
- mov r3,-(sp)
- mov r4,-(sp)
- mov $77406,r2
- mov $KISA0,r3
- mov $KISD0,r4
- jsr pc,setseg
- mov (sp)+,r4
- mov (sp)+,r3
- mov (sp)+,r2
- rts pc
-
- / clrseg(addr,count)
- .globl _clrseg
- _clrseg:
- mov 4(sp),r0
- beq 2f
- asr r0
- bic $!77777,r0
- mov 2(sp),r1
- 1:
- clr -(sp)
- mtpi (r1)+
- sob r0,1b
- 2:
- rts pc
-
-
- / mtpi(word,addr)
- .globl _mtpi
- _mtpi:
- mov 4(sp),r0
- mov 2(sp),-(sp)
- mtpi (r0)+
- rts pc
-
- .globl __rtt
- __rtt:
- halt
-
- PS = 177776
- SSR0 = 177572
- SSR1 = 177574
- SSR2 = 177576
- SSR3 = 172516
- KISA0 = 172340
- KISA1 = 172342
- KISA7 = 172356
- KISD0 = 172300
- KISD7 = 172316
- KDSA0 = 172360
- KDSA6 = 172374
- KDSA7 = 172376
- KDSD0 = 172320
- KDSD5 = 172332
- SISA0 = 172240
- SISA1 = 172242
- SISD0 = 172200
- SISD1 = 172202
- UISA0 = 177640
- UISD0 = 177600
- UDSA0 = 177660
- UDSD0 = 177620
- MSCR = 017777746 / 11/70 memory control register
- IO = 177600
- SWR = 177570
-
- .data
-
-