home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src6.dms / in.adf / DMZ.LZH / PRG10.2 < prev    next >
Encoding:
Text File  |  1999-10-02  |  4.6 KB  |  222 lines

  1. OPENLIB:    EQU    -408
  2. ALLOCMEM:    EQU    -198
  3. FREEMEM:    EQU    -210
  4. MEMF_CHIP:    EQU    $10002
  5.  
  6. BEGIN:        MOVEM.L    D0-D7/A0-A6,-(SP)
  7.         MOVE.L    $4.W,A6
  8.         MOVE.L    #COPSIZE+PICSIZE,D0
  9.         MOVE.L    #MEMF_CHIP,D1
  10.         JSR    ALLOCMEM(A6)        ; Allokera copper &
  11.         MOVE.L    D0,NEWCOPPER        ; bitplan i ChipMem
  12.         BEQ.L    ALLOCERROR        ; Error?
  13.         ADD.L    #COPSIZE,D0
  14.         MOVE.L    D0,BPPTR        ; Pekare till BPL1
  15.  
  16. INITBP:        MOVE.L    D0,D7            ; Ställ in alla
  17.         SWAP    D7            ; bitplanspekare
  18.         MOVE.W    D7,BP1H
  19.         SWAP    D7
  20.         MOVE.W    D7,BP1L
  21.  
  22.         ADD.L    #BPSIZE,D7
  23.         SWAP    D7
  24.         MOVE.W    D7,BP2H
  25.         SWAP    D7
  26.         MOVE.W    D7,BP2L
  27.  
  28.         ADD.L    #BPSIZE,D7
  29.         SWAP    D7
  30.         MOVE.W    D7,BP3H
  31.         SWAP    D7
  32.         MOVE.W    D7,BP3L
  33.  
  34.         ADD.L    #BPSIZE,D7
  35.         SWAP    D7
  36.         MOVE.W    D7,BP4H
  37.         SWAP    D7
  38.         MOVE.W    D7,BP4L
  39.  
  40.         ADD.L    #BPSIZE,D7
  41.         SWAP    D7
  42.         MOVE.W    D7,BP5H
  43.         SWAP    D7
  44.         MOVE.W    D7,BP5L
  45.  
  46.         LEA.L    PIC+[5*BPSIZE],A0
  47.         LEA.L    COLORS+2(PC),A1
  48.         MOVEQ    #31,D7
  49. INITCOLORS:    MOVE.W    (A0)+,(A1)        ; Ställ in 32 färger
  50.         ADDQ.L    #4,A1
  51.         DBF    D7,INITCOLORS
  52.  
  53.         LEA.L    SCROLL(PC),A0
  54.         MOVE.L    #$2C07FFFE,D0
  55.         MOVE.W    #199,D7
  56. INITSCROLL:    MOVE.L    D0,(A0)+        ; Initiera WAIT- och
  57.         MOVE.L    #$01020000,(A0)+    ; MOVE-instruktioner
  58.         ADD.L    #$01000000,D0        ; Nästa rad
  59.         DBF    D7,INITSCROLL
  60.  
  61.         MOVE.L    NEWCOPPER(PC),A0
  62.         LEA.L    COPPERLIST(PC),A1
  63.         MOVE.W    #COPSIZE+PICSIZE-1,D7
  64. MOVETOCHIP:    MOVE.B    (A1)+,(A0)+        ; Flytta copper och
  65.         DBF    D7,MOVETOCHIP        ; bitplan till ChipMem
  66.  
  67.         LEA.L    GFXNAME(PC),A1
  68.         JSR    OPENLIB(A6)        ; Öppna gfx
  69.         TST.L    D0
  70.         BEQ.L    GFXERROR        ; Error?
  71.         MOVE.L    D0,A0
  72.         MOVE.L    $26(A0),OLDCOPPER    ; Spar gammal copper
  73.         MOVE.W    #$4000,$DFF09A        ; Stäng av irq
  74. DISABLE:    TST.B    $DFF006            ; Vänta på rad 0
  75.         BNE.S    DISABLE
  76.         MOVE.W    $DFF002,DMABITS        ; Spar gammal DMA
  77.         BSET    #7,DMABITS
  78.         MOVE.W    #$7FFF,$DFF096        ; Stäng av all DMA
  79.         MOVE.W    #$8380,$DFF096        ; Sätt på bitplan+cop
  80.  
  81.         MOVE.L    NEWCOPPER(PC),A5
  82.         MOVE.L    A5,$DFF080        ; Vår copperlista
  83.  
  84. MAIN:        BTST    #6,$BFE001
  85.         BEQ.S    EXIT
  86.  
  87.         BSR.S    SYNC
  88.  
  89.         LEA.L    SCROLLTAB(PC),A0
  90.         LEA.L    SCROLLOFFS(A5),A1
  91.         MOVE.W    SCROLLVALUE(PC),D0
  92.         ADDQ.W    #2,SCROLLVALUE        ; Öka scroll-index
  93.         MOVE.W    #199,D7
  94. MOVESCROLL:    AND.W    #63,D0
  95.         MOVE.W    (A0,D0.W),6(A1)        ; Läs in scroll-värden
  96.         ADDQ.L    #8,A1
  97.         ADDQ.W    #2,D0
  98.         DBF    D7,MOVESCROLL
  99.  
  100.         BRA.S    MAIN
  101.  
  102. SYNC:        CMP.B    #$FF,$DFF006        ; Vänta på rad $FF
  103.         BNE.S    SYNC
  104. NEXTLINE:    CMP.B    #$FF,$DFF006        ; Vänta på nästa rad
  105.         BEQ.S    NEXTLINE
  106.         RTS
  107.  
  108. EXIT:        BSR.S    SYNC
  109.         SUBQ.B    #1,HMARG(A5)        ; Minska Hmarg
  110.         ADDQ.B    #1,VMARG(A5)        ; Öka Vmarg
  111.         BNE.S    EXIT
  112.         SUBQ.B    #1,VMARG(A5)
  113.  
  114. SQUEEZE:    BSR.S    SYNC
  115.         ADDQ.B    #1,TMARG(A5)        ; Minska vertikalt
  116.         CMP.B    #$F4,TMARG(A5)
  117.         BNE.S    SQUEEZE
  118.  
  119.         MOVE.L    OLDCOPPER(PC),$DFF080    ; Återställ copper
  120.         MOVE.W    DMABITS(PC),$DFF096    ; Återställ DMA
  121.         MOVE.W    #$C000,$DFF09A        ; Sätt på irq
  122. GFXERROR:    MOVE.L    NEWCOPPER(PC),A1
  123.         MOVE.L    #COPSIZE+PICSIZE,D0
  124.         JSR    FREEMEM(A6)        ; Deallokera
  125. ALLOCERROR:    MOVEM.L    (SP)+,D0-D7/A0-A6
  126.         RTS
  127.  
  128.  
  129. SCROLLVALUE:    DC.W    0
  130. SCROLLTAB:    DC.W    $88,$99,$BB,$CC,$DD,$EE,$EE,$FF
  131.         DC.W    $FF,$FF,$EE,$EE,$DD,$CC,$BB,$99
  132.         DC.W    $88,$77,$55,$44,$33,$22,$22,$11
  133.         DC.W    $11,$11,$22,$22,$33,$44,$55,$77
  134. OLDCOPPER:    DC.L    0
  135. NEWCOPPER:    DC.L    0
  136. BPPTR:        DC.L    0
  137. DMABITS:    DC.W    0
  138. GFXNAME:    DC.B    'graphics.library',0
  139. EVEN
  140.  
  141. COPPERLIST:    DC.W    $008E,$2CB1        ; Rad $2C, kol. $B1
  142.         DC.W    $0090,$F491        ; Rad $F4, kol. $91
  143.         DC.W    $0092,$0048        ; Vmarg = $48
  144.         DC.W    $0094,$00C0        ; Hmarg = $C0
  145.         DC.W    $0100,$5000        ; 5 bitplan, LORES
  146.         DC.W    $0104,$0000        ; Normal prioritet
  147.         DC.W    $0108,$0008        ; Udda modulo = 8
  148.         DC.W    $010A,$0008        ; Jämn modulo = 8
  149.  
  150.         DC.W    $00E0            ; Bitplanspekare
  151. BP1H:        DC.W    $0000            ; för bitplan 1
  152.         DC.W    $00E2
  153. BP1L:        DC.W    $0000
  154.  
  155.         DC.W    $00E4            ; Bitplanspekare
  156. BP2H:        DC.W    $0000            ; för bitplan 2
  157.         DC.W    $00E6
  158. BP2L:        DC.W    $0000
  159.  
  160.         DC.W    $00E8            ; osv
  161. BP3H:        DC.W    $0000
  162.         DC.W    $00EA
  163. BP3L:        DC.W    $0000
  164.  
  165.         DC.W    $00EC
  166. BP4H:        DC.W    $0000
  167.         DC.W    $00EE
  168. BP4L:        DC.W    $0000
  169.  
  170.         DC.W    $00F0
  171. BP5H:        DC.W    $0000
  172.         DC.W    $00F2
  173. BP5L:        DC.W    $0000
  174.  
  175. COLORS:        DC.W    $0180,$0000        ; Färgtabell
  176.         DC.W    $0182,$0000        ; för alla 32 färger
  177.         DC.W    $0184,$0000
  178.         DC.W    $0186,$0000
  179.         DC.W    $0188,$0000
  180.         DC.W    $018A,$0000
  181.         DC.W    $018C,$0000
  182.         DC.W    $018E,$0000
  183.         DC.W    $0190,$0000
  184.         DC.W    $0192,$0000
  185.         DC.W    $0194,$0000
  186.         DC.W    $0196,$0000
  187.         DC.W    $0198,$0000
  188.         DC.W    $019A,$0000
  189.         DC.W    $019C,$0000
  190.         DC.W    $019E,$0000
  191.         DC.W    $01A0,$0000
  192.         DC.W    $01A2,$0000
  193.         DC.W    $01A4,$0000
  194.         DC.W    $01A6,$0000
  195.         DC.W    $01A8,$0000
  196.         DC.W    $01AA,$0000
  197.         DC.W    $01AC,$0000
  198.         DC.W    $01AE,$0000
  199.         DC.W    $01B0,$0000
  200.         DC.W    $01B2,$0000
  201.         DC.W    $01B4,$0000
  202.         DC.W    $01B6,$0000
  203.         DC.W    $01B8,$0000
  204.         DC.W    $01BA,$0000
  205.         DC.W    $01BC,$0000
  206.         DC.W    $01BE,$0000
  207.  
  208. SCROLL:        BLK.W    200*4            ; Reservera minne för
  209.                         ; scroll-lista
  210.         DC.W    $FFFF,$FFFE        ; Slut på copperlistan
  211. COPEND:
  212. COPSIZE:    EQU    COPEND-COPPERLIST
  213. SCROLLOFFS:    EQU    SCROLL-COPPERLIST
  214. HMARG:        EQU    7
  215. VMARG:        EQU    3
  216. TMARG:        EQU    2
  217. BPSIZE:        EQU    320/8*200
  218. PICSIZE:    EQU    5*BPSIZE+64
  219.  
  220. PIC:        BLK.B    PICSIZE,0        ; Reservera minne för
  221.                         ; 5 bitplans bild
  222.