home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / standalone / M.s < prev    next >
Encoding:
Text File  |  1998-02-03  |  2.0 KB  |  167 lines

  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
  166.  
  167.