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

  1. BitPlane2=$56000    ;Adresse Bitplane 1
  2. bitplane4=$58000
  3. bitplane6=$5a000
  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.     sub.w #1,delay
  64.     cmp.w #$00ef,delay
  65.     bne endirq
  66.  
  67.     add.w #2,lo1
  68.     add.w #2,lo3
  69.     add.w #2,lo5
  70.     move.w #$00ff,delay
  71.     sub.w #1,flag
  72.     bne endirq
  73.     move.w #10,flag
  74.     move.w adr1,lo1
  75.     move.w adr3,lo3
  76.     move.w adr5,lo5
  77.  
  78. Endirq:
  79.     move (sp)+,SR
  80.         movem.l (sp)+,d0-d2/a0-a1
  81.         DC.W $4ef9
  82. OldVector: DC.L $0000
  83.  
  84. grafik:
  85.     move.l #bitplane1,a0
  86.     move.l #bitplane3,a1
  87.     move.l #bitplane5,a2
  88.     move #200,d0
  89. l1:    move #20,d1
  90. l2:    move.l #$ffffffff,(a0)+
  91.     move.l #$ffffffff,(a1)+
  92.     move.l #$f000000f,(a2)+
  93.     sub #1,d1
  94.     bne l2
  95.     sub #1,d0
  96.     bne l1
  97.  
  98.     jsr initirq
  99.  
  100. ok:
  101.     jsr wait
  102.     bra ok
  103.  
  104. wait:
  105.     andi.b    #64,$bfe001    ;Bit 7 (linke Maustaste)
  106.     beq ende
  107.     rts
  108. ende:    jsr stop
  109.     move.l copptr,a0
  110.     move.l    oldcop,(a0)    ;Alte Copperliste wieder bereit-
  111.     move.l exec,a6
  112.     move.l    GfxBase,a1    ;stellen und Gfxlibrary
  113.     jsr    CloseLibrary(a6);schliessen
  114.     move.l dos_base,a1
  115.     jsr closelibrary(a6)
  116.     jsr    Permit(a6)    ;Multitasking wieder zulassen
  117.     ILLEGAL            ;Rueckkehr zum SEKA
  118.     rts            ;ende
  119.  
  120. setup:
  121.     move.l    Exec,a6        ;Exebase-Adresse nach a6
  122.     jsr    permit(a6)    ;Stop Multitasking
  123.  
  124.     move.l exec,a6
  125.     lea.l dosname,a1
  126.     jsr Openlibrary(a6)
  127.     move.l d0,dos_base
  128.  
  129.     lea    GrName,a1    ;Gfxname nach a1
  130.     jsr    OpenLibrary(a6)    ;Gfxlibrary oeffnen
  131.     move.l    d0,GfxBase    ;Basisadresse buffern
  132.     move.l    d0,a6
  133.     add.l    #$32,d0
  134.     move.l    d0,copptr
  135.  
  136.     lea    BitMap,a0    ;Bitmapstruktur nach a0
  137.     moveq    #6,d0        ;Tiefe (5 Bitplanes)
  138.     move.l    #320,d1        ;320 Pixel nach x
  139.     move.l    #200,d2        ;200 Pixel nach y
  140.     jsr    InitBitMap(a6)    ;Bitmap Initialisieren
  141.     lea    RastPort,a1    ;erhaltenen Rastport nach a1
  142.     jsr    InitRastPort(a6);Rastport initialisieren    
  143.     move.l    #BitMap,R_BitMap
  144.  
  145.  
  146.     move.l    #BitPlane1,d0    ;Adresse Bitplane nach d0
  147.     move.l    d0,Plane1    ;Adresse auch nach Plane1
  148.     move.l    d0,a0        ;und nach Adressregister a0
  149.     move.w    d0,lo1        ;sowie in Copperliste speichern
  150.     swap    d0        ;Hi-Nibble isolieren und eben-
  151.     move.w    d0,hi1        ;falls nach Copperliste
  152.     move.l    #16000,d0    ;8000 Bytes fuer Bitplane bele-
  153.     move.b    #$00,d1        ;gen
  154. cl1:    move.b    d1,(a0)+
  155.     dbf    d0,cl1
  156.  
  157.     move.l    #BitPlane2,d0
  158.     move.l d0,Plane2
  159.     move.l d0,a0
  160.     move.w d0,lo2
  161.     swap d0
  162.     move.w d0,hi2
  163.     move.l #16000,d0
  164.     move.b #$00,d1
  165. cl2:    move.b d1,(a0)+
  166.     dbf d0,cl2
  167.  
  168.     move.l    #BitPlane3,d0
  169.     move.l    d0,Plane3
  170.     move.l    d0,a0
  171.     move.w    d0,lo3
  172.     swap    d0
  173.     move.w    d0,hi3
  174.     move.l    #16000,d0
  175.     move.b    #$00,d1
  176. cl3:    move.b    d1,(a0)+
  177.     dbf    d0,cl3
  178.  
  179.     move.l    #BitPlane4,d0
  180.     move.l    d0,Plane4
  181.     move.l    d0,a0
  182.     move.w    d0,lo4
  183.     swap    d0
  184.     move.w    d0,hi4
  185.     move.l    #16000,d0
  186.     move.b    #$00,d1
  187. cl4:    move.b    d1,(a0)+
  188.     dbf    d0,cl4
  189.  
  190.     move.l    #BitPlane5,d0
  191.     move.l    d0,Plane5
  192.     move.l    d0,a0
  193.     move.w    d0,lo5
  194.     swap    d0
  195.     move.w    d0,hi5
  196.     move.l    #16000,d0
  197.     move.b    #$00,d1
  198. cl5:    move.b    d1,(a0)+
  199.     dbf    d0,cl5
  200.  
  201.     move.l #bitplane6,d0
  202.     move.l d0,plane6
  203.     move.l d0,a0
  204.     move.w d0,lo6
  205.     swap d0
  206.     move.w d0,hi6
  207.     move.l #16000,d0
  208. cl6:    clr.b (a0)+
  209.     dbf d0,cl6
  210.     rts
  211.  
  212. setcopper:
  213.     move.l    copptr,a0    ;Adresse der Copperliste nach a0
  214.     move.l    (a0),oldcop    ;Alte Liste zwischenspeichern
  215.     move.l    #Copper,(a0)    ;Neue Liste fue Copper
  216.     rts
  217.  
  218.  
  219. Copper:
  220.     DC.W    $0180
  221. co0:    dc.w    $0000
  222.     DC.W    $0182
  223. co1:    dc.w    $0fff
  224.     DC.W    $0184
  225. co2:    dc.w    $000f
  226.     DC.W    $0186    
  227. co3:    dc.w    $0f00
  228.     DC.W    $0188
  229. co4:    dc.w    $000f
  230.     DC.W    $018a
  231. co5:    dc.w    $0f0f
  232.     DC.W    $018c
  233. co6:    dc.w    $00ff
  234.     DC.W    $018e
  235. co7:    dc.w    $f0ff
  236.     DC.W    $0190
  237. co8:    dc.w    $0620
  238.     DC.W    $0192
  239. co9:    dc.w    $0e50
  240.     DC.W    $0194
  241. co10:    dc.w    $09f1
  242.     DC.W    $0196    
  243. co11:    dc.w    $0eb0
  244.     dc.w    $0198
  245. co12:    dc.w    $055f
  246.     dc.w    $019a
  247. co13:    dc.w    $092f
  248.     dc.w    $019c
  249. co14:    dc.w    $00f8
  250.     dc.w    $019e
  251. co15:    dc.w    $0ccc
  252.     dc.w    $01a0
  253. co16:    dc.w    $0000        
  254.     dc.w    $01a2
  255. co17:    dc.w    $0d22
  256.     dc.w    $01a4
  257. co18:    dc.w    $0000
  258.     dc.w    $01a6
  259. co19:    dc.w    $0fca
  260.     dc.w    $01a8
  261. co20:    dc.w    $0444    
  262.     dc.w    $01aa
  263. co21:    dc.w    $0555
  264.     dc.w    $01ac
  265. co22:    dc.w    $0666
  266.     dc.w    $01ae
  267. co23:    dc.w    $0777
  268.     dc.w    $01b0
  269. co24:    dc.w    $0888
  270.     dc.w    $01b2
  271. co25:    dc.w    $0999
  272.     dc.w    $01b4
  273. co26:    dc.w    $0aaa
  274.     dc.w    $01b6
  275. co27:    dc.w    $0bbb
  276.     dc.w    $01b8
  277. co28:    dc.w    $0ccc
  278.     dc.w    $01ba
  279. co29:    dc.w    $0ddd
  280.     dc.w    $01bc
  281. co30:    dc.w    $0eee
  282.     dc.w    $01be
  283. co31:    dc.w    $0fff
  284.     DC.W    $00e0
  285. hi1:    DC.W    $0002
  286.     DC.W    $00e2
  287. lo1:    DC.W    $1000
  288.     DC.W    $00e4
  289. hi2:    DC.W    $0002
  290.     DC.W    $00e6
  291. lo2:    DC.W    $1000
  292.     DC.W    $00e8
  293. hi3:    DC.W    $0002
  294.     DC.W    $00ea
  295. lo3:    DC.W    $1000
  296.     DC.W    $00ec
  297. hi4:    DC.W    $0002
  298.     DC.W    $00ee
  299. lo4:    DC.W    $1000
  300.     DC.W    $00f0
  301. hi5:    DC.W    $0002
  302.     DC.W    $00f2
  303. lo5:    DC.W    $1000
  304.     dc.w    $00f4
  305. hi6:    dc.w    $1000
  306.     dc.w    $00f6
  307. lo6:    dc.w    $1000
  308.     DC.W    $0100,%0110010000000000
  309.     DC.W    $0102
  310. delay:    DC.W    $ff
  311.     DC.W    $0108,38
  312.     DC.W    $010a,38
  313.     DC.W    $0092,$0030
  314.     DC.W    $0094,$00d0
  315.     DC.W    $008e,$3681
  316.     DC.W    $0090,$fdc1
  317.     DC.W    $ffff,$fffe
  318.  
  319.  
  320.  
  321. BitMap:
  322. BytesPerRow:     blk.w 1,0
  323. Bytes:        blk.w 1,0
  324. Flags:         blk.b 1,0
  325. Depth:         blk.b 1,0
  326. Pad:          blk.w 1,0
  327. Plane1:        blk.l 1,0
  328. Plane2:        blk.l 1,0
  329. Plane3:        blk.l 1,0
  330. Plane4:        blk.l 1,0
  331. Plane5:        blk.l 1,0
  332. Plane6:        blk.l 1,0
  333. Planes:        blk.l 1,0
  334.  
  335. RastPort:
  336.         blk.l 1,0
  337. R_BitMap:    blk.l 1,0
  338.         blk.b 2+4+4+4+8,0
  339.         blk.b 4,0
  340. cp_x:        blk.w 1,0
  341. cp_y:        blk.w 1,0
  342.            blk.b 8+22+[7*2]+[2*4]+8,0
  343.         blk.w 6,0
  344. even
  345. GrName:        DC.B 'graphics.library',0
  346. Dosname:    DC.B 'dos.library',0
  347. even
  348.  
  349. copptr:        blk.l 1,0
  350. oldcop:        blk.l 1,0
  351. GfxBase:    blk.l 1,0
  352. Dos_base:    blk.l 1,0
  353. x:        blk.w 1,0
  354. flag:        blk.w 1,0
  355. adr1:        blk.w 1,0
  356. adr3:        blk.w 1,0
  357. adr5:        blk.w 1,0
  358.