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

  1. BitPlane1=$50000    ;Adresse Bitplane 1
  2. BitPlane2=$52000    ;Adresse Bitplane 2
  3. BitPlane3=$54000    ;Adresse Bitplane 3
  4. BitPlane4=$56000    ;Adresse Bitplane 4
  5. BitPlane5=$58000    ;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.  
  25. start:
  26.     jsr setup    ;Initialisiert die Bitmaps und
  27.             ;oeffnet benoetigte Libraries
  28.  
  29. grafik:
  30.     move.l #Bitplane1,a1
  31.     move.l #Bitplane2,a2
  32.     move.l #Bitplane3,a3
  33.     move.l #Bitplane4,a4
  34.     move.l #Bitplane5,a5
  35.     move.l #pic_buf+64,a0
  36.     move #4,d1
  37. l0:    move #4000,d0
  38. l1:    move.w (a0),(a1)
  39.     add.w #2,a0
  40.     add.w #2,a1
  41.     sub #1,d0
  42.     bne l1
  43.     add #192,a1
  44.     sub #1,d1
  45.     bne l0
  46.         
  47.     move.l #pic_buf,a0
  48.     move.l #co0,a1
  49.     move #32,d1
  50. w2:    move.w (a0),(a1)+
  51.     add.w #2,a0
  52.     add.w #2,a1
  53.     sub #1,d1
  54.     bne w2
  55.     
  56.     
  57.  
  58.  
  59.     jsr setcopper
  60.     
  61.  
  62. wait:
  63.     andi.b    #64,$bfe001    ;Bit 7 (linke Maustaste)
  64.     bne wait
  65.  
  66.     move.l    oldcop,(a0)    ;Alte Copperliste wieder bereit-
  67.     move.l exec,a6
  68.     move.l    GfxBase,a1    ;stellen und Gfxlibrary
  69.     jsr    CloseLibrary(a6);schliessen
  70.     move.l dos_base,a1
  71.     jsr closelibrary(a6)
  72.  
  73.     jsr    Permit(a6)    ;Multitasking wieder zulassen
  74.     ILLEGAL            ;Rueckkehr zum SEKA
  75.     clr.l    d0        ;Register loeschen
  76.     rts            ;ende
  77.  
  78. open_file:
  79.     move.l dos_base,a6
  80.     move.l #filename,d1
  81.     move.l #1005,d2
  82.     jsr Open(a6)
  83.     beq wait
  84.     move.l d0,bif
  85.     rts
  86.  
  87. load:
  88.     move.l dos_base,a6
  89.     move.l bif,d1
  90.     jsr Read(a6)
  91.     rts
  92.  
  93. close_file:
  94.     move.l dos_base,a6
  95.     move.l bif,d1
  96.     jsr Close(a6)
  97.     rts
  98.  
  99. setup:
  100.     move.l    Exec,a6        ;Exebase-Adresse nach a6
  101.     jsr    Forbid(a6)    ;Stop Multitasking
  102.  
  103.     move.l exec,a6
  104.     lea.l dosname,a1
  105.     jsr Openlibrary(a6)
  106.     move.l d0,dos_base
  107.  
  108.     lea    GrName,a1    ;Gfxname nach a1
  109.     jsr    OpenLibrary(a6)    ;Gfxlibrary oeffnen
  110.     move.l    d0,GfxBase    ;Basisadresse buffern
  111.     move.l    d0,a6
  112.     add.l    #$32,d0
  113.     move.l    d0,copptr
  114.  
  115. ; ---- Setup the BitMap
  116.  
  117.     lea    BitMap,a0    ;Bitmapstruktur nach a0
  118.     moveq    #5,d0        ;Tiefe (5 Bitplanes)
  119.     move.l    #320,d1        ;320 Pixel nach x
  120.     move.l    #200,d2        ;200 Pixel nach y
  121.     jsr    InitBitMap(a6)    ;Bitmap Initialisieren
  122.     lea    RastPort,a1    ;erhaltenen Rastport nach a1
  123.     jsr    InitRastPort(a6);Rastport initialisieren    
  124.     move.l    #BitMap,R_BitMap
  125.  
  126.  
  127.     move.l    #BitPlane1,d0    ;Adresse Bitplane nach d0
  128.     move.l    d0,Plane1    ;Adresse auch nach Plane1
  129.     move.l    d0,a0        ;und nach Adressregister a0
  130.     move.w    d0,lo1        ;sowie in Copperliste speichern
  131.     swap    d0        ;Hi-Nibble isolieren und eben-
  132.     move.w    d0,hi1        ;falls nach Copperliste
  133.     move.l    #8000,d0    ;8000 Bytes fuer Bitplane bele-
  134.     move.b    #$00,d1        ;gen
  135. cl1:    move.b    d1,(a0)+
  136.     dbf    d0,cl1
  137.  
  138.     move.l    #BitPlane2,d0
  139.     move.l d0,Plane2
  140.     move.l d0,a0
  141.     move.w d0,lo2
  142.     swap d0
  143.     move.w d0,hi2
  144.     move.l #8000,d0
  145.     move.b #$00,d1
  146. cl2:    move.b d1,(a0)+
  147.     dbf d0,cl2
  148.  
  149.     move.l    #BitPlane3,d0
  150.     move.l    d0,Plane3
  151.     move.l    d0,a0
  152.     move.w    d0,lo3
  153.     swap    d0
  154.     move.w    d0,hi3
  155.     move.l    #8000,d0
  156.     move.b    #$00,d1
  157. cl3:    move.b    d1,(a0)+
  158.     dbf    d0,cl3
  159.  
  160.     move.l    #BitPlane4,d0
  161.     move.l    d0,Plane4
  162.     move.l    d0,a0
  163.     move.w    d0,lo4
  164.     swap    d0
  165.     move.w    d0,hi4
  166.     move.l    #8000,d0
  167.     move.b    #$00,d1
  168. cl4:    move.b    d1,(a0)+
  169.     dbf    d0,cl4
  170.  
  171.     move.l    #BitPlane5,d0
  172.     move.l    d0,Plane5
  173.     move.l    d0,a0
  174.     move.w    d0,lo5
  175.     swap    d0
  176.     move.w    d0,hi5
  177.     move.l    #8000,d0
  178.     move.b    #$00,d1
  179. cl5:    move.b    d1,(a0)+
  180.     dbf    d0,cl5
  181.     rts
  182.  
  183. setcopper:
  184.     move.l    copptr,a0    ;Adresse der Copperliste nach a0
  185.     move.l    (a0),oldcop    ;Alte Liste zwischenspeichern
  186.     move.l    #Copper,(a0)    ;Neue Liste fue Copper
  187.     rts
  188.     
  189.  
  190. ;----- Hier beginnt die neue Copperliste -----
  191. ;Angaben muessen immer als WORD (.W) uebergeben werden
  192. ;Die Angaben geschehen immer Paarweise, wobei der
  193. ;erste Wert die Adresse ($DFFxxx) und der zweite Wert
  194. ;der Wert sein muss, der an diese Adresse geschrieben
  195. ;werden soll (DC.W $0180,$000 zum Beispiel schreibt
  196. ;an Adresse $DFF0180 den Wert $000).
  197.  
  198. Copper:
  199.     DC.W    $0180
  200. co0:    dc.w    $005a
  201.     DC.W    $0182
  202. co1:    dc.w    $0fff
  203.     DC.W    $0184
  204. co2:    dc.w    $0002
  205.     DC.W    $0186    
  206. co3:    dc.w    $0f80
  207.     DC.W    $0188
  208. co4:    dc.w    $000f
  209.     DC.W    $018a
  210. co5:    dc.w    $0f0f
  211.     DC.W    $018c
  212. co6:    dc.w    $00ff
  213.     DC.W    $018e
  214. co7:    dc.w    $f0ff
  215.     DC.W    $0190
  216. co8:    dc.w    $0620
  217.     DC.W    $0192
  218. co9:    dc.w    $0e50
  219.     DC.W    $0194
  220. co10:    dc.w    $09f1
  221.     DC.W    $0196    
  222. co11:    dc.w    $0eb0
  223.     dc.w    $0198
  224. co12:    dc.w    $055f
  225.     dc.w    $019a
  226. co13:    dc.w    $092f
  227.     dc.w    $019c
  228. co14:    dc.w    $00f8
  229.     dc.w    $019e
  230. co15:    dc.w    $0ccc
  231.     dc.w    $01a0
  232. co16:    dc.w    $0000        
  233.     dc.w    $01a2
  234. co17:    dc.w    $0d22
  235.     dc.w    $01a4
  236. co18:    dc.w    $0000
  237.     dc.w    $01a6
  238. co19:    dc.w    $0fca
  239.     dc.w    $01a8
  240. co20:    dc.w    $0444    
  241.     dc.w    $01aa
  242. co21:    dc.w    $0555
  243.     dc.w    $01ac
  244. co22:    dc.w    $0666
  245.     dc.w    $01ae
  246. co23:    dc.w    $0777
  247.     dc.w    $01b0
  248. co24:    dc.w    $0888
  249.     dc.w    $01b2
  250. co25:    dc.w    $0999
  251.     dc.w    $01b4
  252. co26:    dc.w    $0aaa
  253.     dc.w    $01b6
  254. co27:    dc.w    $0bbb
  255.     dc.w    $01b8
  256. co28:    dc.w    $0ccc
  257.     dc.w    $01ba
  258. co29:    dc.w    $0ddd
  259.     dc.w    $01bc
  260. co30:    dc.w    $0eee
  261.     dc.w    $01be
  262. co31:    dc.w    $0fff
  263.     DC.W    $00e0
  264. hi1:    DC.W    $0002
  265.     DC.W    $00e2
  266. lo1:    DC.W    $1000
  267.     DC.W    $00e4
  268. hi2:    DC.W    $0002
  269.     DC.W    $00e6
  270. lo2:    DC.W    $1000
  271.     DC.W    $00e8
  272. hi3:    DC.W    $0002
  273.     DC.W    $00ea
  274. lo3:    DC.W    $1000
  275.     DC.W    $00ec
  276. hi4:    DC.W    $0002
  277.     DC.W    $00ee
  278. lo4:    DC.W    $1000
  279.     DC.W    $00f0
  280. hi5:    DC.W    $0002
  281.     DC.W    $00f2
  282. lo5:    DC.W    $1000
  283.     DC.W    $0100,%0101000000000000
  284.     DC.W    $0102
  285. delay:    DC.W    %0000
  286.     DC.W    $0108,0
  287.     DC.W    $010a,0
  288.     DC.W    $0092,$0038
  289.     DC.W    $0094,$00d0
  290.     DC.W    $008e,$3681
  291.     DC.W    $0090,$fdc1
  292.     DC.W    $ffff,$fffe
  293.  
  294. ;----- Hier beginnt die Bitmap-Struktur -----
  295.  
  296.  
  297. BitMap:
  298. BytesPerRow:     blk.w 1,0
  299. Bytes:        blk.w 1,0
  300. Flags:         blk.b 1,0
  301. Depth:         blk.b 1,0
  302. Pad:          blk.w 1,0
  303. Plane1:        blk.l 1,0
  304. Plane2:        blk.l 1,0
  305. Plane3:        blk.l 1,0
  306. Plane4:        blk.l 1,0
  307. Plane5:        blk.l 1,0
  308. Planes:        blk.l 1,0
  309.  
  310.  
  311. ;----- Hier beginnt die Rasterport-Struktur -----
  312.  
  313. RastPort:
  314.         blk.l 1,0
  315. R_BitMap:    blk.l 1,0
  316.         blk.b 2+4+4+4+8,0
  317.         blk.b 4,0
  318. cp_x:        blk.w 1,0
  319. cp_y:        blk.w 1,0
  320.            blk.b 8+22+[7*2]+[2*4]+8,0
  321.         blk.w 6,0
  322. even
  323. filename:    DC.B 'tbr-pic',0
  324. GrName:        DC.B 'graphics.library',0
  325. Dosname:    DC.B 'dos.library',0
  326. even
  327.  
  328. copptr:        blk.l 1,0
  329. oldcop:        blk.l 1,0
  330. GfxBase:    blk.l 1,0
  331. Dos_base:    blk.l 1,0
  332. bif:        blk.l 1,0
  333. disk_buf:    blk.l 1,0
  334. buffer1:    blk.l 25,0
  335. pic_buf:    blk.l 10016,0
  336.