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

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