home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src5.dms / in.adf / boot.S < prev    next >
Encoding:
Text File  |  1990-05-07  |  2.6 KB  |  183 lines

  1. execbase:        =    4
  2. findtask:        =    -294
  3. addport:        =    -354
  4. remport:        =    -360
  5. openlib:        =    -408
  6. closelib:        =    -414
  7. opendev:        =    -444
  8. closedev:        =    -450
  9. doio:        =    -456
  10.  
  11.  
  12. bootsector:    dc.b    'dos',0
  13.  
  14.         dc.l    0
  15.         dc.l    880
  16.  
  17.         bsr    demo
  18.         move.l    execbase,a6
  19.  
  20.         lea    dosname(pc),a1
  21.  
  22.         jsr    -96(a6)
  23.  
  24.         move.l    d0,a0
  25.         move.l    22(a0),a0
  26.         moveq    #0,d0
  27.         rts
  28. demo:        move.w    #$27ff,d0
  29.         lea    $11000,a0
  30. demo1:        move.b    #0,(a0)+
  31.         dbra    d0,demo1
  32.         move.w    #picturelength,d0
  33.  
  34.         lea    $11000,a0
  35.         lea    picture(pc),a1
  36. demo2:        move.b    (a1)+,(a0)+
  37.         dbra    d0,demo2
  38.         move.w    $dff01c,intena
  39.  
  40.         move.w    #$7fff,$dff09a
  41.  
  42.         move.w    $dff002,dmacon
  43.  
  44.         move.w    #$00ff,$dff096
  45.  
  46.         move.w    #$8100,$dff96
  47.         move.w    #100,d3
  48.         move.w    #20,d4
  49.         move.w    #2,d5
  50.         move.w    #2,d6
  51.         clr.w    d2
  52.  
  53. demo3:        btst    #0,$dff004
  54.         bne    demo3
  55.  
  56.         move.w    #$1000,$dff100
  57.         move.w    d3,$dff102
  58.  
  59.         move.w    #$0024,$dff104
  60.         move.l    #$00110000,$dff0e0
  61.         move.w    #$0000,$dff108
  62.         move.w    d3,d7
  63.         asr.w    #1,d7
  64.         add.w    #$30,d7
  65.         move.w    d7,$dff092
  66.         add.w    #$28,d7
  67.  
  68.         move.w    d7,$dff094
  69.         move.w    d4,d7
  70.         asl.w    #8,d7
  71.         add.w    #$3070,d7
  72.         move.w    d7,$dff8e
  73.         move.w    #$2bf0,$dff090
  74.  
  75.         move.w    #28,d0
  76.         move.w    d2,d1
  77.         lea    colortab(pc),a0
  78.  
  79. demo4:        cmp.b    $dff006,d0
  80.  
  81.         bne    demo4
  82.         move.w    (a0,d1),d7
  83.         move.w    d7,$dff180
  84.         asl.w    #4,d7
  85.         move.w    d7,$dff182
  86.         add.w    #2,d1
  87.         and.w    #$1f,d1
  88.         add.w    #1,d0
  89.         cmp.w    #312,d0
  90.  
  91.         bne    demo4
  92.         add.w    #2,d2
  93.         and.w    #$1f,d2
  94.         add.w    d5,d3
  95.         add.w    d6,d4
  96.         cmp.b    #0,d3
  97.  
  98.         bne    demo5
  99.         eor.w    #$ffff,d5
  100.         add.w    #$1,d5
  101. demo5:        move.w    d4,d7
  102.  
  103.         and    #127,d7
  104.         bne    demo6
  105.         eor.w    #$ffff,d6
  106.         add.w    #$1,d6
  107. demo6:        btst    #6,$bfe001
  108.  
  109.         bne    demo3
  110.  
  111.         move.w    dmacon,d0
  112.         or.w    #$8000,d0
  113.         move.w    #$0100,$dff096
  114.         move.w    d0,$dff096
  115.         move.w    intena,d0
  116.         or.w    #$8000,d0
  117.         move.w    d0,$dff09a
  118.         rts
  119. dosname:        dc.b    'dos.library',0
  120. intena:        dc.w    0
  121. dmacon:        dc.w    0
  122. colortab:        dc.w    0,2,4,6,8,10,12,14,15,14,12,10,8,4,2,0
  123. picture:        blk.b    1024,0
  124. picturelength1:    =    picture-bootsector
  125. picturelength:    =    1024-picturelength1
  126.  
  127. wboot:        lea    bootsector,a0
  128.  
  129.         move.l    #$ffffffff,d0
  130.  
  131.         move.l    #$ff,d1
  132.         clr.l    d2
  133. wbboot1:        sub.l    (a0)+,d0
  134.         subx.l    d2,d0
  135.         dbra    d1,bootsector+$4
  136.         move.l    execbase,a6
  137.         move.l    #0,a1
  138.         jsr    findtask(a6)
  139.         move.l    d0,wport+$10
  140.  
  141.         lea    wport,a1
  142.         jsr    addport(a6)
  143.         lea    wio,a1
  144.  
  145.         move.l    #0,d0
  146.  
  147.         clr.l    d1
  148.         lea    wtrdevice,a0
  149.         jsr    opendev(a6)
  150.         tst.l    d0
  151.  
  152.         bne    werror
  153.         lea    wio,a1
  154.         move.l    #wport,14(a1)
  155.  
  156.         move.w    #3,28(a1)
  157.  
  158.         move.l    #bootsector,40(a1)
  159.  
  160.         move.l    #2*512,36(a1)
  161.  
  162.         move.l    #0*512,44(a1)
  163.  
  164.         jsr    doio(a6)
  165.         move.w    #4,28(a1)
  166.  
  167.         jsr    doio(a6)
  168.         move.w    #9,28(a1)
  169.  
  170.         move.l    #0,36(a1)
  171.         jsr    doio(a6)
  172.         lea    wport,a1
  173.         jsr    remport(a6)
  174.         lea    wio,a1
  175.         jsr    closedev(a6)
  176.  
  177. werror:        rts
  178.  
  179. wtrdevice:    dc.b    'trackdisk.device',0
  180.         even
  181. wio:        blk.l    20,0
  182. wport:    blk.l    8,0
  183.