home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 4: Demo 1 / almathera_demo1.bin / sourcecode / german / blitter.s < prev    next >
Text File  |  1995-03-17  |  6KB  |  368 lines

  1. BitPlane1=$50000    ;Adresse Bitplane 1
  2. bitplane2=$52000
  3. bitplane3=$54000
  4. bitplane4=$56000
  5. bitplane5=$58000
  6. Exec=4            ;Basisadresse Execbase
  7. Permit=-138        ;Stop Multitasking
  8. Forbid=-132        ;Start Multitasking
  9. OpenLibrary=-408    
  10. CloseLibrary=-414
  11. InitRastPort=-198
  12. InitBitMap=-390
  13. bltcon0=$dff040
  14. bltcon1=$dff042
  15. bltafwm=$dff044
  16. bltalwm=$dff046
  17. bltcpth=$dff048
  18. bltcptl=$dff04a
  19. bltbpth=$dff04c
  20. bltbptl=$dff04e
  21. bltapth=$dff050
  22. bltaptl=$dff052
  23. bltdpth=$dff054
  24. bltdptl=$dff056
  25. bltsize=$dff058
  26. bltcmod=$dff060
  27. bltbmod=$dff062
  28. bltamod=$dff064
  29. bltdmod=$dff066
  30. bltadat=$dff074
  31. bltbdat=$dff072
  32. bltcdat=$dff070
  33.  
  34. start:
  35.     jsr setup    ;Initialisiert die Bitmaps und
  36.     jsr setcopper
  37.  
  38.     move.l #$40000,a0
  39.     move #8000,d0
  40. l1:    move.b #$ff,(a0)+
  41.     sub #1,d0
  42.     bne l1
  43.  
  44.     move.l #bitplane1,a0
  45.     move.l #$60000,a1
  46.     move #8000,d0
  47. l2:    move.b (a0)+,(a1)+
  48.     sub #1,d0
  49.     bne l2
  50.  
  51.     move.l #bitplane1,a2
  52.  
  53. ok:    move.l a2,a1
  54. ok2:    move.l #$40000,a0
  55.     move.w #8,d0
  56.     move.w #32,d1
  57.     jsr blit
  58.     move.w $dff00c,d0
  59.     btst #1,d0
  60.     bne rechts
  61.     btst #0,d0
  62.     bne runter
  63.     btst #9,d0
  64.     bne links
  65.     btst #8,d0
  66.     bne hoch
  67. ok1:    jsr wait
  68.     jmp ok
  69.  
  70. rechts:    
  71.     jsr pause2
  72.     move.l #1,d6
  73.     jsr addieren
  74.     bra ok
  75.  
  76. hoch:
  77.     jsr pause
  78.     move.l #-40,d6
  79.     jsr addieren
  80.     bra ok
  81.  
  82. runter:
  83.     jsr pause
  84.     move.l #40,d6
  85.     jsr addieren
  86.     bra ok
  87.  
  88. links:
  89.     jsr pause2
  90.     move.l #-1,d6
  91.     jsr addieren
  92.     bra ok
  93.  
  94. addieren:
  95.     move.l a2,a1
  96.     move.l #$60000,a0
  97.     move.w #8,d0
  98.     move.w #32,d1
  99.     jsr blit
  100.     add.l d6,a2
  101.     rts
  102.  
  103. pause:    move.l #1000,d0
  104. p1:    dbf d0,p1
  105.     rts
  106.  
  107. pause2:    move.l #5000,d0
  108. p2:    dbf d0,p2
  109.     rts
  110.  
  111. blit:
  112.     jsr waitblt
  113.     move.l a1,bltdpth
  114.     move.l a0,bltapth
  115.     rol.w #6,d1
  116.     add.w d0,d1
  117.     mulu #2,d0
  118.     move.w #40,d3
  119.     sub.w d0,d3
  120.     move.w d3,bltamod
  121.     move.w d3,bltdmod
  122.     move.w #%0000100111110000,bltcon0
  123.     clr.w bltcon1
  124.     move.w d1,bltsize
  125.     rts
  126.  
  127. waitblt:    
  128.     btst #14,$dff002
  129.     bne waitblt
  130.     rts        
  131.  
  132. wait:
  133.     andi.b    #64,$bfe001    ;Bit 7 (linke Maustaste)
  134.     beq ende
  135.     rts
  136. ende:    move.l copptr,a0
  137.     move.l    oldcop,(a0)    ;Alte Copperliste wieder bereit-
  138.     move.l exec,a6
  139.     move.l    GfxBase,a1    ;stellen und Gfxlibrary
  140.     jsr    CloseLibrary(a6);schliessen
  141.     move.l dos_base,a1
  142.     jsr closelibrary(a6)
  143.     jsr    Permit(a6)    ;Multitasking wieder zulassen
  144.     ILLEGAL            ;Rueckkehr zum SEKA
  145.     rts            ;ende
  146.  
  147. setup:
  148.     move.l    Exec,a6        ;Exebase-Adresse nach a6
  149.     jsr    permit(a6)    ;Stop Multitasking
  150.  
  151.     move.l exec,a6
  152.     lea.l dosname,a1
  153.     jsr Openlibrary(a6)
  154.     move.l d0,dos_base
  155.  
  156.     lea    GrName,a1    ;Gfxname nach a1
  157.     jsr    OpenLibrary(a6)    ;Gfxlibrary oeffnen
  158.     move.l    d0,GfxBase    ;Basisadresse buffern
  159.     move.l    d0,a6
  160.     add.l    #$32,d0
  161.     move.l    d0,copptr
  162.  
  163.     lea    BitMap,a0    ;Bitmapstruktur nach a0
  164.     moveq    #5,d0        ;Tiefe (5 Bitplanes)
  165.     move.l    #320,d1        ;320 Pixel nach x
  166.     move.l    #200,d2        ;200 Pixel nach y
  167.     jsr    InitBitMap(a6)    ;Bitmap Initialisieren
  168.     lea    RastPort,a1    ;erhaltenen Rastport nach a1
  169.     jsr    InitRastPort(a6);Rastport initialisieren    
  170.     move.l    #BitMap,R_BitMap
  171.  
  172.  
  173.     move.l    #BitPlane1,d0    ;Adresse Bitplane nach d0
  174.     move.l    d0,Plane1    ;Adresse auch nach Plane1
  175.     move.l    d0,a0        ;und nach Adressregister a0
  176.     move.w    d0,lo1        ;sowie in Copperliste speichern
  177.     swap    d0        ;Hi-Nibble isolieren und eben-
  178.     move.w    d0,hi1        ;falls nach Copperliste
  179.     move.l    #8000,d0    ;8000 Bytes fuer Bitplane bele-
  180.     move.b    #$00,d1        ;gen
  181. cl1:    move.b    d1,(a0)+
  182.     dbf    d0,cl1
  183.  
  184.     move.l    #BitPlane2,d0
  185.     move.l d0,Plane2
  186.     move.l d0,a0
  187.     move.w d0,lo2
  188.     swap d0
  189.     move.w d0,hi2
  190.     move.l #8000,d0
  191.     move.b #$00,d1
  192. cl2:    move.b d1,(a0)+
  193.     dbf d0,cl2
  194.  
  195.     move.l    #BitPlane3,d0
  196.     move.l    d0,Plane3
  197.     move.l    d0,a0
  198.     move.w    d0,lo3
  199.     swap    d0
  200.     move.w    d0,hi3
  201.     move.l    #8000,d0
  202.     move.b    #$00,d1
  203. cl3:    move.b    d1,(a0)+
  204.     dbf    d0,cl3
  205.  
  206.     move.l    #BitPlane4,d0
  207.     move.l    d0,Plane4
  208.     move.l    d0,a0
  209.     move.w    d0,lo4
  210.     swap    d0
  211.     move.w    d0,hi4
  212.     move.l    #8000,d0
  213.     move.b    #$00,d1
  214. cl4:    move.b    d1,(a0)+
  215.     dbf    d0,cl4
  216.  
  217.     move.l    #BitPlane5,d0
  218.     move.l    d0,Plane5
  219.     move.l    d0,a0
  220.     move.w    d0,lo5
  221.     swap    d0
  222.     move.w    d0,hi5
  223.     move.l    #8000,d0
  224.     move.b    #$00,d1
  225. cl5:    move.b    d1,(a0)+
  226.     dbf    d0,cl5
  227.     rts
  228.  
  229. setcopper:
  230.     move.l    copptr,a0    ;Adresse der Copperliste nach a0
  231.     move.l    (a0),oldcop    ;Alte Liste zwischenspeichern
  232.     move.l    #Copper,(a0)    ;Neue Liste fue Copper
  233.     rts
  234.  
  235.  
  236. Copper:
  237.     DC.W    $0180
  238. co0:    dc.w    $0000
  239.     DC.W    $0182
  240. co1:    dc.w    $0fff
  241.     DC.W    $0184
  242. co2:    dc.w    $000f
  243.     DC.W    $0186    
  244. co3:    dc.w    $0f00
  245.     DC.W    $0188
  246. co4:    dc.w    $000f
  247.     DC.W    $018a
  248. co5:    dc.w    $0f0f
  249.     DC.W    $018c
  250. co6:    dc.w    $00ff
  251.     DC.W    $018e
  252. co7:    dc.w    $f0ff
  253.     DC.W    $0190
  254. co8:    dc.w    $0620
  255.     DC.W    $0192
  256. co9:    dc.w    $0e50
  257.     DC.W    $0194
  258. co10:    dc.w    $09f1
  259.     DC.W    $0196    
  260. co11:    dc.w    $0eb0
  261.     dc.w    $0198
  262. co12:    dc.w    $055f
  263.     dc.w    $019a
  264. co13:    dc.w    $092f
  265.     dc.w    $019c
  266. co14:    dc.w    $00f8
  267.     dc.w    $019e
  268. co15:    dc.w    $0ccc
  269.     dc.w    $01a0
  270. co16:    dc.w    $0000        
  271.     dc.w    $01a2
  272. co17:    dc.w    $0d22
  273.     dc.w    $01a4
  274. co18:    dc.w    $0000
  275.     dc.w    $01a6
  276. co19:    dc.w    $0fca
  277.     dc.w    $01a8
  278. co20:    dc.w    $0444    
  279.     dc.w    $01aa
  280. co21:    dc.w    $0555
  281.     dc.w    $01ac
  282. co22:    dc.w    $0666
  283.     dc.w    $01ae
  284. co23:    dc.w    $0777
  285.     dc.w    $01b0
  286. co24:    dc.w    $0888
  287.     dc.w    $01b2
  288. co25:    dc.w    $0999
  289.     dc.w    $01b4
  290. co26:    dc.w    $0aaa
  291.     dc.w    $01b6
  292. co27:    dc.w    $0bbb
  293.     dc.w    $01b8
  294. co28:    dc.w    $0ccc
  295.     dc.w    $01ba
  296. co29:    dc.w    $0ddd
  297.     dc.w    $01bc
  298. co30:    dc.w    $0eee
  299.     dc.w    $01be
  300. co31:    dc.w    $0fff
  301.     DC.W    $00e0
  302. hi1:    DC.W    $0002
  303.     DC.W    $00e2
  304. lo1:    DC.W    $1000
  305.     DC.W    $00e4
  306. hi2:    DC.W    $0002
  307.     DC.W    $00e6
  308. lo2:    DC.W    $1000
  309.     DC.W    $00e8
  310. hi3:    DC.W    $0002
  311.     DC.W    $00ea
  312. lo3:    DC.W    $1000
  313.     DC.W    $00ec
  314. hi4:    DC.W    $0002
  315.     DC.W    $00ee
  316. lo4:    DC.W    $1000
  317.     DC.W    $00f0
  318. hi5:    DC.W    $0002
  319.     DC.W    $00f2
  320. lo5:    DC.W    $1000
  321.     DC.W    $0100,%0101000000000000
  322.     DC.W    $0102
  323. delay:    DC.W    $00
  324.     DC.W    $0108,0
  325.     DC.W    $010a,0
  326.     DC.W    $0092,$0038
  327.     DC.W    $0094,$00d0
  328.     DC.W    $008e,$3681
  329.     DC.W    $0090,$fdc1
  330.     DC.W    $ffff,$fffe
  331.  
  332.  
  333.  
  334. BitMap:
  335. BytesPerRow:     blk.w 1,0
  336. Bytes:        blk.w 1,0
  337. Flags:         blk.b 1,0
  338. Depth:         blk.b 1,0
  339. Pad:          blk.w 1,0
  340. Plane1:        blk.l 1,0
  341. Plane2:        blk.l 1,0
  342. Plane3:        blk.l 1,0
  343. Plane4:        blk.l 1,0
  344. Plane5:        blk.l 1,0
  345. Planes:        blk.l 1,0
  346.  
  347. RastPort:
  348.         blk.l 1,0
  349. R_BitMap:    blk.l 1,0
  350.         blk.b 2+4+4+4+8,0
  351.         blk.b 4,0
  352. cp_x:        blk.w 1,0
  353. cp_y:        blk.w 1,0
  354.            blk.b 8+22+[7*2]+[2*4]+8,0
  355.         blk.w 6,0
  356. even
  357. GrName:        DC.B 'graphics.library',0
  358. Dosname:    DC.B 'dos.library',0
  359. even
  360.  
  361. copptr:        blk.l 1,0
  362. oldcop:        blk.l 1,0
  363. GfxBase:    blk.l 1,0
  364. Dos_base:    blk.l 1,0
  365. x:        blk.w 1,0
  366.  
  367.  
  368.