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

  1. BitPlane1=$50000    ;Adresse Bitplane 1
  2. BitPlane2=$54000    ;Adresse Bitplane 2
  3. BitPlane3=$58000    ;Adresse Bitplane 3
  4. BitPlane4=$5c000    ;Adresse Bitplane 4
  5. BitPlane5=$60000    ;Adresse BItplane 5
  6. Exec=4            ;Basisadresse Execbase
  7. Permit=-138        ;Stop Multitasking
  8. Open= -30
  9. Close= -30 -6
  10. Read= -30 -12
  11. Forbid=-132        ;Start Multitasking
  12. OpenLibrary=-408    
  13. CloseLibrary=-414
  14. InitRastPort=-198
  15. InitBitMap=-390
  16. SetRast= -30 -204
  17. Move= -30 -210
  18. Draw= -30 -216
  19. Text= -30 -30
  20. RectFill= -30 -276
  21. ScrollRaster= -30 -366
  22. WritePixel= -30 -294
  23. SetAPen= -30 -312
  24. WaitTOF= -30 -240
  25.  
  26. start:
  27.     jsr setup    ;Initialisiert die Bitmaps und
  28.             ;oeffnet benoetigte Libraries
  29. initirq:
  30.     move.w #$4000,$dff09a 
  31.     move.l $6c,Oldirq 
  32.     move.l #Neuirq,$6c
  33.         move.w #$c000,$dff09a 
  34.     jmp grafik
  35.  
  36. Neuirq: 
  37.     movem.l d0-d2/a0-a1,-(a7)
  38.         move SR,-(sp)
  39.         move.w $dff01e,d0   
  40.         btst #5,d0 
  41.         bne.s makeirq
  42.         bra  Endirq 
  43.  
  44. Makeirq:
  45.     nop
  46.  
  47. Endirq:
  48.     move (sp)+,SR
  49.         movem.l (sp)+,d0-d2/a0-a1
  50.         DC.W $4ef9
  51. Oldirq: DC.L $0000
  52.  
  53. grafik:
  54.  
  55.     jsr setcopper
  56.     move.l gfxbase,a6
  57.     lea rastport,a1
  58.     move.l #1,d0
  59.     jsr setapen(a6)
  60. init:    move.l #text1,a2
  61.     move.l #len1-text1,d7
  62.     sub #1,d7    
  63.     move.b #1,dauer
  64.  
  65. l2:
  66.     sub.b #1,dauer
  67.     bne no
  68.     move.b #3,dauer
  69.     eor.b #2,$bfe001
  70. no:    jsr set1
  71.     move.l a2,a0
  72.     move.l gfxbase,a6
  73.     lea rastport,a1
  74.     move.l #2,d0
  75.     jsr setapen(a6)
  76.     move.w #1,d0
  77.     jsr text(a6)
  78.     jsr set2
  79.     move.l a2,a0
  80.     move.l gfxbase,a6
  81.     move.w #3,d0
  82.     jsr setapen(a6)
  83.     lea rastport,a1
  84.     move.w #1,d0
  85.     jsr text(a6)
  86.     jsr scroll
  87.     add.l #1,a2
  88.     jsr wait
  89.     dbra d7,l2
  90.     jmp init
  91.  
  92. scroll:
  93.     move #4,d6
  94. l1:    move.l gfxbase,a6
  95.     jsr waittof(a6)
  96.     lea rastport,a1
  97.     move.w #2,d0
  98.     move.w #0,d1
  99.     move.w #0,d2
  100.     move.w #180,d3
  101.     move.w #330,d4
  102.     move.w #187,d5
  103.     jsr scrollraster(a6)
  104.     move.l gfxbase,a6
  105.     lea rastport,a1
  106.     move.w #3,d0
  107.     move.w #0,d1
  108.     move.w #0,d2
  109.     move.w #191,d3
  110.     move.w #330,d4
  111.     move.w #200,d5
  112.     jsr scrollraster(a6)
  113.     dbra d6,l1
  114.     rts
  115.  
  116. set1:    move.l gfxbase,a6
  117.     lea rastport,a1
  118.     move.l #321,d0
  119.     move.l #197,d1
  120.     jsr move(a6)
  121.     rts
  122.  
  123. set2:    move.l gfxbase,a6
  124.     lea rastport,a1
  125.     move.l #321,d0
  126.     move.l #186,d1
  127.     jsr move(a6)
  128.     rts
  129.  
  130. wait:
  131.     andi.b    #64,$bfe001    ;Bit 7 (linke Maustaste)
  132.     beq stop
  133.     rts
  134. stop:
  135.     move.w #$4000,$dff09a
  136.     move.l oldirq,$6c
  137.     move.w #$c000,$dff09a
  138.     move.l    oldcop,(a0)    ;Alte Copperliste wieder bereit-
  139.     move.l exec,a6
  140.     move.l    GfxBase,a1    ;stellen und Gfxlibrary
  141.     jsr    CloseLibrary(a6);schliessen
  142.     move.l dos_base,a1
  143.     jsr closelibrary(a6)
  144.     jsr    Permit(a6)    ;Multitasking wieder zulassen
  145.     ILLEGAL            ;Rueckkehr zum SEKA
  146.     rts            ;ende
  147.  
  148. open_file:
  149.     move.l dos_base,a6
  150.     move.l #filename,d1
  151.     move.l #1005,d2
  152.     jsr Open(a6)
  153.     beq wait
  154.     move.l d0,bif
  155.     rts
  156.  
  157. load:
  158.     move.l dos_base,a6
  159.     move.l bif,d1
  160.     jsr Read(a6)
  161.     rts
  162.  
  163. close_file:
  164.     move.l dos_base,a6
  165.     move.l bif,d1
  166.     jsr Close(a6)
  167.     rts
  168.  
  169. setup:
  170.     move.l    Exec,a6        ;Exebase-Adresse nach a6
  171.     jsr    Forbid(a6)    ;Stop Multitasking
  172.  
  173.     move.l exec,a6
  174.     lea.l dosname,a1
  175.     jsr Openlibrary(a6)
  176.     move.l d0,dos_base
  177.  
  178.     lea    GrName,a1    ;Gfxname nach a1
  179.     jsr    OpenLibrary(a6)    ;Gfxlibrary oeffnen
  180.     move.l    d0,GfxBase    ;Basisadresse buffern
  181.     move.l    d0,a6
  182.     add.l    #$32,d0
  183.     move.l    d0,copptr
  184.  
  185. ; ---- Setup the BitMap
  186.  
  187.     lea    BitMap,a0    ;Bitmapstruktur nach a0
  188.     moveq    #5,d0        ;Tiefe (5 Bitplanes)
  189.     move.l    #640,d1        ;320 Pixel nach x
  190.     move.l    #200,d2        ;200 Pixel nach y
  191.     jsr    InitBitMap(a6)    ;Bitmap Initialisieren
  192.     lea    RastPort,a1    ;erhaltenen Rastport nach a1
  193.     jsr    InitRastPort(a6);Rastport initialisieren    
  194.     move.l    #BitMap,R_BitMap
  195.  
  196.  
  197.     move.l    #BitPlane1,d0    ;Adresse Bitplane nach d0
  198.     move.l    d0,Plane1    ;Adresse auch nach Plane1
  199.     move.l    d0,a0        ;und nach Adressregister a0
  200.     move.w    d0,lo1        ;sowie in Copperliste speichern
  201.     swap    d0        ;Hi-Nibble isolieren und eben-
  202.     move.w    d0,hi1        ;falls nach Copperliste
  203.     move.l    #16000,d0    ;8000 Bytes fuer Bitplane bele-
  204.     move.b    #$00,d1        ;gen
  205. cl1:    move.b    d1,(a0)+
  206.     dbf    d0,cl1
  207.  
  208.     move.l    #BitPlane2,d0
  209.     move.l d0,Plane2
  210.     move.l d0,a0
  211.     move.w d0,lo2
  212.     swap d0
  213.     move.w d0,hi2
  214.     move.l #16000,d0
  215.     move.b #$00,d1
  216. cl2:    move.b d1,(a0)+
  217.     dbf d0,cl2
  218.  
  219.     move.l    #BitPlane3,d0
  220.     move.l    d0,Plane3
  221.     move.l    d0,a0
  222.     move.w    d0,lo3
  223.     swap    d0
  224.     move.w    d0,hi3
  225.     move.l    #16000,d0
  226.     move.b    #$00,d1
  227. cl3:    move.b    d1,(a0)+
  228.     dbf    d0,cl3
  229.  
  230.     move.l    #BitPlane4,d0
  231.     move.l    d0,Plane4
  232.     move.l    d0,a0
  233.     move.w    d0,lo4
  234.     swap    d0
  235.     move.w    d0,hi4
  236.     move.l    #16000,d0
  237.     move.b    #$00,d1
  238. cl4:    move.b    d1,(a0)+
  239.     dbf    d0,cl4
  240.  
  241.     move.l    #BitPlane5,d0
  242.     move.l    d0,Plane5
  243.     move.l    d0,a0
  244.     move.w    d0,lo5
  245.     swap    d0
  246.     move.w    d0,hi5
  247.     move.l    #16000,d0
  248.     move.b    #$00,d1
  249. cl5:    move.b    d1,(a0)+
  250.     dbf    d0,cl5
  251.     rts
  252.  
  253. setcopper:
  254.     move.l    copptr,a0    ;Adresse der Copperliste nach a0
  255.     move.l    (a0),oldcop    ;Alte Liste zwischenspeichern
  256.     move.l    #Copper,(a0)    ;Neue Liste fue Copper
  257.     rts
  258.     
  259.  
  260.  
  261. Copper:
  262.     DC.W    $0180
  263. co0:    dc.w    $0000
  264.     DC.W    $0182
  265. co1:    dc.w    $0fff
  266.     DC.W    $0184
  267. co2:    dc.w    $000f
  268.     DC.W    $0186    
  269. co3:    dc.w    $0f00
  270.     DC.W    $0188
  271. co4:    dc.w    $000f
  272.     DC.W    $018a
  273. co5:    dc.w    $0f0f
  274.     DC.W    $018c
  275. co6:    dc.w    $00ff
  276.     DC.W    $018e
  277. co7:    dc.w    $f0ff
  278.     DC.W    $0190
  279. co8:    dc.w    $0620
  280.     DC.W    $0192
  281. co9:    dc.w    $0e50
  282.     DC.W    $0194
  283. co10:    dc.w    $09f1
  284.     DC.W    $0196    
  285. co11:    dc.w    $0eb0
  286.     dc.w    $0198
  287. co12:    dc.w    $055f
  288.     dc.w    $019a
  289. co13:    dc.w    $092f
  290.     dc.w    $019c
  291. co14:    dc.w    $00f8
  292.     dc.w    $019e
  293. co15:    dc.w    $0ccc
  294.     dc.w    $01a0
  295. co16:    dc.w    $0000        
  296.     dc.w    $01a2
  297. co17:    dc.w    $0d22
  298.     dc.w    $01a4
  299. co18:    dc.w    $0000
  300.     dc.w    $01a6
  301. co19:    dc.w    $0fca
  302.     dc.w    $01a8
  303. co20:    dc.w    $0444    
  304.     dc.w    $01aa
  305. co21:    dc.w    $0555
  306.     dc.w    $01ac
  307. co22:    dc.w    $0666
  308.     dc.w    $01ae
  309. co23:    dc.w    $0777
  310.     dc.w    $01b0
  311. co24:    dc.w    $0888
  312.     dc.w    $01b2
  313. co25:    dc.w    $0999
  314.     dc.w    $01b4
  315. co26:    dc.w    $0aaa
  316.     dc.w    $01b6
  317. co27:    dc.w    $0bbb
  318.     dc.w    $01b8
  319. co28:    dc.w    $0ccc
  320.     dc.w    $01ba
  321. co29:    dc.w    $0ddd
  322.     dc.w    $01bc
  323. co30:    dc.w    $0eee
  324.     dc.w    $01be
  325. co31:    dc.w    $0fff
  326.     DC.W    $00e0
  327. hi1:    DC.W    $0002
  328.     DC.W    $00e2
  329. lo1:    DC.W    $1000
  330.     DC.W    $00e4
  331. hi2:    DC.W    $0002
  332.     DC.W    $00e6
  333. lo2:    DC.W    $1000
  334.     DC.W    $00e8
  335. hi3:    DC.W    $0002
  336.     DC.W    $00ea
  337. lo3:    DC.W    $1000
  338.     DC.W    $00ec
  339. hi4:    DC.W    $0002
  340.     DC.W    $00ee
  341. lo4:    DC.W    $1000
  342.     DC.W    $00f0
  343. hi5:    DC.W    $0002
  344.     DC.W    $00f2
  345. lo5:    DC.W    $1000
  346.     DC.W    $0100,%0101000000000000
  347.     DC.W    $0102
  348. delay:    DC.W    $ff
  349.     DC.W    $0108,38
  350.     DC.W    $010a,38
  351.     DC.W    $0092,$0030
  352.     DC.W    $0094,$00d0
  353.     DC.W    $008e,$3681
  354.     DC.W    $0090,$fdc1
  355.     DC.W    $ffff,$fffe
  356.  
  357. ;----- Hier beginnt die Bitmap-Struktur -----
  358.  
  359.  
  360. BitMap:
  361. BytesPerRow:     blk.w 1,0
  362. Bytes:        blk.w 1,0
  363. Flags:         blk.b 1,0
  364. Depth:         blk.b 1,0
  365. Pad:          blk.w 1,0
  366. Plane1:        blk.l 1,0
  367. Plane2:        blk.l 1,0
  368. Plane3:        blk.l 1,0
  369. Plane4:        blk.l 1,0
  370. Plane5:        blk.l 1,0
  371. Planes:        blk.l 1,0
  372.  
  373.  
  374. ;----- Hier beginnt die Rasterport-Struktur -----
  375.  
  376. RastPort:
  377.         blk.l 1,0
  378. R_BitMap:    blk.l 1,0
  379.         blk.b 2+4+4+4+8,0
  380.         blk.b 4,0
  381. cp_x:        blk.w 1,0
  382. cp_y:        blk.w 1,0
  383.            blk.b 8+22+[7*2]+[2*4]+8,0
  384.         blk.w 6,0
  385. even
  386. filename:    DC.B 'df1:lightlogo.lo5',0
  387. GrName:        DC.B 'graphics.library',0
  388. Dosname:    DC.B 'dos.library',0
  389. even
  390.  
  391. copptr:        blk.l 1,0
  392. oldcop:        blk.l 1,0
  393. GfxBase:    blk.l 1,0
  394. Dos_base:    blk.l 1,0
  395. bif:        blk.l 1,0
  396. disk_buf:    blk.l 1,0
  397. col_buf:    dc.w  64,0
  398.  
  399. align 4
  400.  
  401. text1:    
  402.  
  403. dc.b '           '
  404. dc.b 'Hi there from THE BLADE RUNNERS in 2012... '
  405. dc.b 'Greetings to HEADBANGER, ERROR-SOFT, IRATA, '
  406. dc.b 'LIGHT-CIRCLE and RADWAR (Hi Markus!)... '
  407. dc.b 'This scroll-demo is written in 68000 Assembler '
  408. dc.b 'with full Copper and Interrupt control !!! '
  409. dc.b 'Look for flashing POWER-LAMP !!! '
  410. dc.b 'As soon as possible coming TBR Intro-Disk 1...        '
  411.  
  412. len1:    equ *
  413.  
  414. dauer:    dc.b 1,0
  415.