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

  1.     jmp    start
  2.  
  3. dmacon=        $96
  4. vposr=        $4
  5. cop1lc=        $80
  6. cop2lc=        $84
  7. copjmp1=    $88
  8. bplcon0=    $100
  9. bplcon1=    $102
  10. bplcon2=    $104
  11. bpl1pth=    $0e0
  12. bpl1ptl=    $0e2
  13. bpl1mod=    $108
  14. bpl2mod=    $10a
  15. diwstrt=    $08e
  16. diwstop=    $090
  17. ddfstrt=    $092
  18. ddfstop=    $094
  19. openlibrary=    -30-522
  20. forbid=        -30-102
  21. permit=        -30-108
  22. allocmem=    -30-168
  23. freemem=    -30-180
  24. startlist=    38
  25. execbase=    4
  26. planesize=    40*225
  27. planewith=    40
  28. CLsize=        15*4
  29. chip=        2
  30. clear=        chip+$10000
  31.  
  32. CLadr:        dc.l    0
  33. planeadr:    dc.l    0
  34. test:        dc.l    0
  35. counter:    dc.b    1,1,15
  36. ccount:        dc.b    1,1,1,15
  37. GRname:        dc.b    'graphics.library',0
  38. piccy:        blk.b    268
  39. hscount:    dc.b    5
  40. vscount:    dc.b    1
  41.     even
  42.  
  43. start:
  44.     jsr    initialize
  45.     move.l    planeadr,a0
  46.     lea    piccy,a1
  47.     add.l    #2013,a0        ;positioning
  48.     move.l    #263,d0            ;# of data in pic
  49.     move.l    #11,d1            ;# bytes/line
  50. s1:    move.b    (a1)+,(a0)+
  51.     dbf    d1,s2
  52.     move.l    #11,d1            ; ----||----
  53.     add.l    #28,a0            ; with-(b./l.)
  54. s2:    dbf    d0,s1
  55. loop:    btst    #6,$bfe001
  56.     beq    stop
  57.     jsr    waitvblank
  58.     sub.b    #1,hscount
  59.     cmp.b    #0,hscount
  60.     bne    hsend
  61.     move.b    #3,hscount
  62. t:    lea    counter,a0
  63.     move.b    (a0),d0
  64.     add.b    d0,1(a0)
  65.     move.b    1(a0),d0
  66.     cmp.b    2(a0),d0
  67.     bne    nomax
  68.     move.b    #-1,(a0)
  69. nomax:    cmp.b    #0,d0
  70.     bne    nomin
  71.     move.b    #1,(a0)
  72. nomin:    clr.l    d0
  73.     move.b    1(a0),d0
  74.     move    d0,$dff102
  75.  
  76. hsend:    sub.b    #1,vscount        ;vscroll starts here
  77.     cmp.b    #0,vscount
  78.     bne    loop
  79.     lea    ccount,a0
  80.     move.b    1(a0),d0
  81.     add.b    d0,(a0)
  82.     move.b    (a0),d0
  83.     cmp.b    3(a0),d0
  84.     bne    nmaxpc
  85.     move.b    #-1,1(a0)
  86. nmaxpc:    cmp.b    #1,d0            ;minpc ?
  87.     bne    nminpc
  88.     move.b    #1,1(a0)
  89.     move.b    2(a0),d0
  90.     cmp.b    #1,d0
  91.     bne    npdp
  92.     move.b    #-1,2(a0)
  93.     jmp    nminpc
  94. npdp:    cmp.b    #-1,d0
  95.     bne    nminpc
  96.     move.b    #1,2(a0)
  97. nminpc:    move.b    (a0),d0
  98.     cmp.b    #7,d0
  99.     ble    nb
  100.     move.b    #7,d0
  101. nb:    move.b    #8,d1
  102.     sub.b    d0,d1
  103.     move.b    d1,vscount
  104.     move.l    CLadr,a1
  105.     move.b    2(a0),d0
  106.     sub.b    d0,08(a1)
  107.     sub.b    d0,16(a1)
  108.     add.b    d0,24(a1)
  109.     add.b    d0,32(a1)
  110. vsend:
  111.  
  112.     jmp    loop
  113. stop:    jsr    shut_down
  114.     rts
  115.  
  116. waitvblank:                ;wait for vblank
  117.     move.l    $dff004,d0
  118.     and.l    #$0001ff00,d0
  119.     cmp.l    #$00001000,d0
  120.     bne.s    waitvblank
  121.     rts
  122.  
  123. initialize:
  124.     move.l    execbase,a6
  125.     move.l    #planesize,d0
  126.     move.l    #clear,d1
  127.     jsr    allocmem(a6)        ;alloc mem for bplane
  128.     move.l    d0,planeadr
  129.     moveq    #clsize,d0
  130.     moveq    #chip,d1
  131.     jsr    allocmem(a6)        ;alloc mem for CL
  132.     move.l    d0,CLadr
  133.  
  134.     move.l    d0,a0            ;Make the CopperList
  135.     move.l    planeadr,d1
  136.     move    #$00e2,(a0)+
  137.     move    d1,(a0)+
  138.     swap    d1
  139.     move    #$00e0,(a0)+
  140.     move    d1,(a0)+
  141.     move.l    #$600ffffe,(a0)+
  142.     move.l    #$01800803,(a0)+
  143.     move.l    #$610ffffe,(a0)+
  144.     move.l    #$01800f06,(a0)+
  145.     move.l    #$790ffffe,(a0)+
  146.     move.l    #$01800803,(a0)+
  147.     move.l    #$7a0ffffe,(a0)+
  148.     move.l    #$01800000,(a0)+
  149.     move.l    #$fffffffe,(a0)
  150.  
  151.     jsr    forbid(a6)        ;DMA&tasksw off
  152.     lea    $dff000,a5
  153.     move.w    #$01e0,dmacon(a5)
  154.     move.l    CLadr,cop1lc(a5)    ;init CL
  155.     clr.w    copjmp1(a5)
  156.     move.w    #$3081,diwstrt(a5)    ;init PlayField
  157.     move.w    #$10c1,diwstop(a5)
  158.     move.w    #$0038,ddfstrt(a5)
  159.     move.w    #$00d0,ddfstop(a5)
  160.     move.w    #%0001000000000000,bplcon0(a5)
  161.     clr.w    bplcon1(a5)
  162.     clr.w    bplcon2(a5)
  163.     move.w    #0,bpl1mod(a5)
  164.     move.w    #0,bpl2mod(a5)
  165.     move.w    #$8180,dmacon(a5)
  166.     rts
  167.  
  168. shut_down:
  169.     move.l    #grname,a1
  170.     clr.l    d0
  171.     jsr    openlibrary(a6)
  172.     move.l    d0,a4
  173.     move.l    startlist(a4),cop1lc(a5)
  174.     clr    copjmp1(a5)
  175.     move.w    #$83e0,dmacon(a5)
  176.     jsr    permit(a6)
  177.     move.l    CLadr,a1
  178.     moveq    #CLsize,d0
  179.     jsr    freemem(a6)
  180.     move.l    planeadr,a1
  181.     move.l    #planesize,d0
  182.     jsr    freemem(a6)
  183.     rts
  184.