home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / mdec / tboot.s < prev    next >
Encoding:
Text File  |  1975-06-26  |  2.6 KB  |  257 lines

  1. / tape boot program to load and transfer
  2. / to a 'tp' entry
  3.  
  4. / entry is made by jsr pc,*$0
  5. / so return can be rts pc
  6. / jsr pc,(r5) is putc
  7. / jsr pc,2(r5) is getc
  8. / jsr pc,4(r5) is mesg
  9.  
  10. core = 24.
  11. .mt. = 0
  12. .. = [core*2048.]-512.
  13. start:
  14.     mov    $..,sp
  15.     mov    $name,r4
  16.     mov    sp,r1
  17.     cmp    pc,r1
  18.     bhis    2f
  19.     clr    r0
  20.     cmp    (r0),$407
  21.     bne    1f
  22.     mov    $20,r0
  23. 1:
  24.     mov    (r0)+,(r1)+
  25.     cmp    r1,$end
  26.     blo    1b
  27.     jmp    (sp)
  28.  
  29. 2:
  30.     jsr    pc,rew
  31.     mov    $tvec,r5
  32.     mov    $'=,r0
  33.     jsr    pc,(r5)
  34. 2:
  35.     mov    r4,r1
  36. 1:
  37.     jsr    pc,2(r5)
  38.     cmp    r0,$'\n
  39.     beq    1f
  40.     cmp    r0,$'@
  41.     beq    2b
  42.     movb    r0,(r1)+
  43.     cmp    r0,$'#
  44.     bne    1b
  45.     sub    $2,r1
  46.     cmp    r1,r4
  47.     blo    2b
  48.     br    1b
  49. 1:
  50.     clrb    (r1)
  51.     cmp    r1,r4
  52.     blos    start
  53.     mov    $1,tapa
  54.     mov    $-6144.,wc
  55.     jsr    pc,taper
  56.     clr    r1
  57. 1:
  58.     mov    r1,r2
  59.     mov    r4,r0
  60. 2:
  61.     cmpb    (r0)+,(r1)
  62.     bne    2f
  63.     tstb    (r1)+
  64.     bne    2b
  65.     br    1f
  66. 2:
  67.     mov    r2,r1
  68.     add    $64.,r1
  69.     cmp    r1,$12288.
  70.     blo    1b
  71.     jsr    pc,rew
  72.     br    start
  73. 1:
  74.     mov    44.(r2),tapa
  75.     mov    38.(r2),r0
  76.     inc    r0
  77.     clc
  78.     ror    r0
  79.     neg    r0
  80.     mov    r0,wc
  81.     clr    r0
  82. 1:
  83.     clr    (r0)+
  84.     cmp    r0,sp
  85.     blo    1b
  86.     jsr    pc,taper
  87.     jsr    pc,rew
  88.     clr    r0
  89.     cmp    (r0),$407        / unix a.out?
  90.     bne    2f
  91. 1:
  92.     mov    20(r0),(r0)+
  93.     cmp    r0,sp
  94.     blo    1b
  95. 2:
  96.     jsr    pc,*$0
  97.     br    start
  98.  
  99. .if .mt.
  100. mts = 172520
  101. mtc = 172522
  102. mtbrc = 172524
  103. mtcma = 172526
  104.  
  105. taper:
  106.     clr    mtma
  107.     cmp    mtapa,tapa
  108.     beq    1f
  109.     bhi    2f
  110.     jsr    pc,rrec
  111.     br    taper
  112. 2:
  113.     jsr    pc,rew
  114.     br    taper
  115. 1:
  116.     mov    wc,r1
  117. 1:
  118.     jsr    pc,rrec
  119.     add    $256.,r1
  120.     bmi    1b
  121.     rts    pc
  122.  
  123. rrec:
  124.     bit    $2,*$mts
  125.     bne    rrec
  126.     tstb    *$mtc
  127.     bge    rrec
  128.     mov    $-512.,*$mtbrc
  129.     mov    mtma,*$mtcma
  130.     mov    $60003,*$mtc
  131. 1:
  132.     tstb    *$mtc
  133.     bge    1b
  134.     tst    *$mtc
  135.     bge    1f
  136.     mov    $-1,*$mtbrc
  137.     mov    $60013,*$mtc
  138.     br    rrec
  139. 1:
  140.     add    $512.,mtma
  141.     inc    mtapa
  142.     rts    pc
  143.  
  144. rew:
  145.     mov    $60017,*$mtc
  146.     clr    mtapa
  147.     rts    pc
  148. .endif
  149.  
  150. .if .mt.-1
  151. tcdt = 177350
  152. tccm = 177342
  153. taper:
  154.     mov    $tcdt,r0
  155.     mov    $tccm,r1
  156. for:
  157.     mov    $3,(r1)            / rbn for
  158. 1:
  159.     tstb    (r1)
  160.     bge    1b
  161.     tst    (r1)
  162.     blt    rev
  163.     cmp    tapa,(r0)
  164.     beq    rd
  165.     bgt    for
  166.  
  167. rev:
  168.     mov    $4003,(r1)        / rbn bac
  169. 1:
  170.     tstb    (r1)
  171.     bge    1b
  172.     tst    (r1)
  173.     blt    for
  174.     mov    (r0),r2
  175.     add    $5,r2
  176.     cmp    tapa,r2
  177.     blt    rev
  178.     br    for
  179.  
  180. rd:
  181.     clr    -(r0)                / bus addr
  182.     mov    wc,-(r0)            / wc
  183.     mov    $5,-(r0)            / read
  184. 1:
  185.     tstb    (r1)
  186.     bge    1b
  187.     tst    (r1)
  188.     blt    taper
  189.     rts    pc
  190.  
  191. rew:
  192.     mov    $4003,tccm
  193.     rts    pc
  194. .endif
  195.  
  196. tvec:
  197.     br    putc
  198.     br    getc
  199.     br    mesg
  200.  
  201. tks = 177560
  202. tkb = 177562
  203. getc:
  204.     mov    $tks,r0
  205.     inc    (r0)
  206. 1:
  207.     tstb    (r0)
  208.     bge    1b
  209.     mov    tkb,r0
  210.     bic    $!177,r0
  211.     cmp    r0,$'A
  212.     blo    1f
  213.     cmp    r0,$'Z
  214.     bhi    1f
  215.     add    $40,r0
  216. 1:
  217.     cmp    r0,$'\r
  218.     bne    putc
  219.     mov    $'\n,r0
  220.  
  221. tps = 177564
  222. tpb = 177566
  223. putc:
  224.     tstb    tps
  225.     bge    putc
  226.     cmp    r0,$'\n
  227.     bne    1f
  228.     mov    $'\r,r0
  229.     jsr    pc,(r5)
  230.     mov    $'\n+200,r0
  231.     jsr    pc,(r5)
  232.     clr    r0
  233.     jsr    pc,(r5)
  234.     mov    $'\n,r0
  235.     rts    pc
  236. 1:
  237.     mov    r0,tpb
  238.     rts    pc
  239.  
  240. mesg:
  241.     movb    *(sp),r0
  242.     beq    1f
  243.     jsr    pc,(r5)
  244.     inc    (sp)
  245.     br    mesg
  246. 1:
  247.     add    $2,(sp)
  248.     bic    $1,(sp)
  249.     rts    pc
  250.  
  251. end:
  252. tapa:    .=.+2
  253. mtapa:    .=.+2
  254. mtma:    .=.+2
  255. wc:    .=.+2
  256. name:    .=.+32.
  257.