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

  1. dmacon=        $96
  2. vposr=        $4
  3. cop1lc=        $80
  4. cop2lc=        $84
  5. copjmp1=    $88
  6. bplcon0=    $100
  7. bplcon1=    $102
  8. bplcon2=    $104
  9. bpl1pth=    $0e0
  10. bpl1ptl=    $0e2
  11. bpl1mod=    $108
  12. bpl2mod=    $10a
  13. diwstrt=    $08e
  14. diwstop=    $090
  15. ddfstrt=    $092
  16. ddfstop=    $094
  17. openlibrary=    -30-522
  18. forbid=        -30-102
  19. permit=        -30-108
  20. allocmem=    -30-168
  21. freemem=    -30-180
  22. startlist=    38
  23. execbase=    4
  24. numplanes=    3
  25. planewith=    40
  26. planehigh=    224
  27. planesize=    planewith*planehigh
  28. allocsize=    planesize*numplanes
  29. CLsize=        7000            ;(numpln*8)+4
  30. chip=        2
  31. clear=        chip+$10000
  32.  
  33. ccount:        dc.w    0,1
  34. picplanes:    dc.w    3
  35. picwith:    dc.w    36
  36. pichigh:    dc.w    132
  37. lineofset:    dc.w    0
  38. picadr:        dc.l    0        ;sourc. adress
  39. showadr:    dc.l    0        ;dest. adress
  40. picsize:    dc.l    0
  41. highofset:    dc.l    0
  42. piccy:        blk.b    14272    ;Størrelse på bildet.
  43.  
  44. ;Bildet kan bli tegnet med hvilket som helst tegneprogram
  45. ;som lagrer bildene som IFF filer (DP II er fint).
  46. ;Bruk IFF CONVERTOR, og LOAD inn IFF filen,
  47. ;save den igjen som BITPLANES.
  48. ;PS...Paletten skal ligge til slutt i den nye fila.
  49. ;Legg størrelsen på BITPLANE fila inn under PICCY
  50. ;Assembler dette programmet, skriv så RI.
  51. ;FILENAME = navnet på tegningen.
  52. ;BEGIN    = piccy
  53. ;END      = [RETURN]
  54. ;Start programmet med J START
  55.  
  56. piccyend:
  57.     even
  58.  
  59. start:
  60.     jsr    initialize
  61.     move.l    #piccy,picadr
  62.     move.l    planeadr,showadr
  63.     add.l    #402,showadr
  64.     jsr    showpic
  65.     jsr    setcolors
  66. s1:    btst    #6,$bfe001
  67.     beq    stop
  68.     jsr    waitvblank    ;vent til vblank interupt
  69.     jsr    newcopper    ;scroll fargene i copperlista
  70.     jmp    s1
  71. stop:    jsr    shut_down
  72.     rts
  73.  
  74. setcolors:
  75.     move.l    #piccyend,a0
  76.     sub.l    #16,a0        ;2^(ant.planes+1)
  77.     move.l    #$dff180,a1
  78.     move.l    #15,d0
  79. sc1:    move    (a0)+,(a1)+
  80.     dbf    d0,sc1
  81.     rts    
  82.  
  83. newcopper:
  84.     move.l    cladr,a0
  85.     add.l    #30,a0
  86.     move.l    a0,a1
  87.     add.l    #8,a1
  88.     move    (a0),d0
  89.     move.l    #$cc,d1
  90. nc1:    move    (a1),(a0)
  91.     add.l    #8,a1
  92.     add.l    #8,a0
  93.     dbf    d1,nc1
  94.     move    d0,(a0)
  95.     rts
  96.     
  97. waitvblank:                ;wait for vblank
  98.     move.l    $dff004,d0
  99.     and.l    #$0001ff00,d0
  100.     cmp.l    #$00001000,d0
  101.     bne.s    waitvblank
  102.     rts
  103.  
  104. showpic:
  105.     clr.l    d0
  106.     move    #planewith,d0
  107.     muls    pichigh,d0
  108.     move.l    d0,picsize
  109.     move.l    #planesize,highofset
  110.     move.l    picsize,d0
  111.     sub.l    d0,highofset
  112.     sub    #1,picplanes
  113.     sub    #1,picwith
  114.     sub    #1,pichigh
  115.     move    #planewith,lineofset
  116.     move    picwith,d0
  117.     add    #1,d0
  118.     sub    d0,lineofset
  119.     move.l    showadr,a0
  120.     move.l    picadr,a1
  121.     move    picwith,d0
  122.     move    pichigh,d1
  123.     move    picplanes,d2
  124. sp1:    move.b    (a1)+,(a0)+
  125.     dbf    d0,sp1    
  126.     move    picwith,d0
  127.     add    lineofset,a0
  128.     dbf    d1,sp1
  129.     move    pichigh,d1
  130.     add.l    highofset,a0
  131.     dbf    d2,sp1
  132.     rts
  133.  
  134.  
  135. initialize:
  136.     move.l    execbase,a6
  137.     move.l    #allocsize,d0
  138.     move.l    #clear,d1
  139.     jsr    allocmem(a6)        ;alloc mem for bplane
  140.     move.l    d0,planeadr
  141.     move.l    #clsize,d0
  142.     moveq    #chip,d1
  143.     jsr    allocmem(a6)        ;alloc mem for CL
  144.     move.l    d0,CLadr
  145.                     ;Make the CopperList
  146.     move.l    #numplanes,d4        ;no of bitplanes -1
  147.     sub.l    #1,d4
  148.     move.l    d0,a0
  149.     move.l    planeadr,d1
  150.     move.w    #bpl1pth,d3
  151. mCL:    move.w    d3,(a0)+
  152.     addq.w    #2,d3
  153.     swap    d1
  154.     move.w    d1,(a0)+
  155.     move.w    d3,(a0)+
  156.     addq.w    #2,d3
  157.     swap     d1
  158.     move.w    d1,(a0)+
  159.     add.l    #planesize,d1
  160.     dbf    d4,mCL
  161.  
  162.     lea    ccount,a1
  163.     move.l    #$30,d0            ;start pos
  164. loop:    move    2(a1),d1
  165.     add    d1,(a1)
  166.     cmp    #$000f,(a1)
  167.     bne    nomax
  168.     move    #-1,2(a1)
  169. nomax:    cmp    #$0000,(a1)
  170.     bne    nomin
  171.     move    #1,2(a1)
  172. nomin:    move.b    d0,(a0)+
  173.     move.b    #$0f,(a0)+
  174.     move    #$fffe,(a0)+
  175.     move    #$0180,(a0)+
  176.     move    (a1),(a0)+
  177.     add.l    #1,d0
  178.     cmp.l    #$ff,d0
  179.     bne    loop
  180.  
  181.     move.l    #$fffffffe,(a0)
  182.  
  183.     jsr    forbid(a6)        ;DMA&tasksw off
  184.     lea    $dff000,a5
  185.     move.w    #$01e0,dmacon(a5)
  186.     move.l    CLadr,cop1lc(a5)    ;init CL
  187.     clr.w    copjmp1(a5)
  188.     move.w    #$3081,diwstrt(a5)    ;init PlayField
  189.     move.w    #$10c1,diwstop(a5)
  190.     move.w    #$0038,ddfstrt(a5)
  191.     move.w    #$00d0,ddfstop(a5)
  192.     move.w    #%0011000000000000,bplcon0(a5)    ;12-14=bplanes
  193.     clr.w    bplcon1(a5)
  194.     clr.w    bplcon2(a5)
  195.     move.w    #0,bpl1mod(a5)
  196.     move.w    #0,bpl2mod(a5)
  197.     move.w    #$8180,dmacon(a5)
  198.     rts
  199.  
  200. shut_down:
  201.     move.l    #grname,a1
  202.     clr.l    d0
  203.     jsr    openlibrary(a6)
  204.     move.l    d0,a4
  205.     move.l    startlist(a4),cop1lc(a5)
  206.     clr    copjmp1(a5)
  207.     move.w    #$83e0,dmacon(a5)
  208.     jsr    permit(a6)
  209.     move.l    CLadr,a1
  210.     move.l    #CLsize,d0
  211.     jsr    freemem(a6)
  212.     move.l    planeadr,a1
  213.     move.l    #allocsize,d0
  214.     jsr    freemem(a6)
  215.     rts
  216.  
  217. CLadr:        dc.l    0
  218. planeadr:    dc.l    0
  219. test:        dc.l    0
  220. GRname:        dc.b    'graphics.library',0
  221.