home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / assembler-kurs / listings2 / listing6q.s < prev    next >
Text File  |  1977-12-31  |  6KB  |  229 lines

  1.  
  2. ; Listing6q.s    BRINGT EINIGE VERSCHIEDENE SCHACHMUSTER AUF DEN
  3. ;        BILDSCHIRM - LINKE - RECHTE - LINKE MAUSTASTE
  4. ;        ABWECHSELND, UM DIE MUSTER ZU SEHEN
  5.  
  6.  
  7.     SECTION    CIPundCOP,CODE
  8.  
  9. Anfang:
  10.     move.l    4.w,a6        ; Execbase
  11.     jsr    -$78(a6)    ; Disable
  12.     lea    GfxName(PC),a1    ; Namen der Lib
  13.     jsr    -$198(a6)    ; OpenLibrary
  14.     move.l    d0,GfxBase    ;
  15.     move.l    d0,a6
  16.     move.l    $26(a6),OldCop    ; speichern die alte COP
  17.  
  18. ;    POINTEN AUF UNSERE BITPLANES
  19.  
  20.     MOVE.L    #BITPLANE,d0
  21.     LEA    BPLPOINTERS,A1    ; COP - Pointer
  22.     move.w    d0,6(a1)
  23.     swap    d0        
  24.     move.w    d0,2(a1)    
  25.  
  26.     move.l    #COPPERLIST,$dff080    ; COP1LC - unsere COP
  27.     move.w    d0,$dff088        ; COPJMP1 - Starten unsere COP
  28.     move.w    #0,$dff1fc        ; FMODE - Deaktiviert das AGA
  29.     move.w    #$c00,$dff106        ; BPLCON3 - Deaktiviert das AGA
  30.  
  31.     bsr.s    MATRIX1
  32.  
  33. mouse:
  34.     btst    #6,$bfe001    ; Linke Maustaste?
  35.     bne.s    mouse
  36.  
  37.     bsr.w    MATRIX2
  38.  
  39. mouse2:
  40.     btst    #2,$dff016    ; Rechte Maustaste?
  41.     bne.s    mouse2
  42.  
  43.     bsr.w    MATRIX3
  44.  
  45. mouse3:
  46.     btst    #6,$bfe001    ; Linke Maustaste?
  47.     bne.s    mouse3
  48.  
  49.     bsr.w    MATRIX4
  50. mouse4:
  51.     btst    #2,$dff016    ; Rechte Maustaste?
  52.     bne.s    mouse4
  53.  
  54.     move.l    OldCop(PC),$dff080    ; Pointen auf die System-Cop
  55.     move.w    d0,$dff088        ; Starten die alte Cop
  56.  
  57.     move.l    4.w,a6
  58.     jsr    -$7e(a6)    ; Enable
  59.     move.l    gfxbase(PC),a1
  60.     jsr    -$19e(a6)    ; Closelibrary
  61.     rts
  62.  
  63.  
  64. ; DATEN
  65.  
  66. GfxName:
  67.     dc.b    "graphics.library",0,0
  68.  
  69. GfxBase:
  70.     dc.l    0
  71.  
  72. OldCop:
  73.     dc.l    0
  74.  
  75. ; diese Routine erzeugt ein Schachbrett mit 8x8 Pixel großen Quadraten
  76.  
  77. MATRIX1:
  78.     LEA    BITPLANE,a0    ; Adresse Ziel-Bitplane
  79.  
  80.     MOVEQ    #16-1,d0    ; 16 Paare von 8 Pixel hohen Quadraten
  81.                 ; 16*2*8=256 totales Ausfüllen des Bildschirmes
  82. MachPaar:
  83.     move.l    #(20*8)-1,d1    ; 20 Words um eine Zeile zu füllen
  84.                 ; 8 Zeilen zu füllen
  85. MachEins:
  86.     move.w    #%1111111100000000,(a0)+ ; Länge eines Quadrates auf 1=8 Pixel
  87.                      ; Quadrate auf NULL = 8 Pixel
  88.     dbra    d1,MachEins         ; mach 8 Zeilen #.#.#.#.#.#.#.#.#.#
  89.  
  90.     move.l    #(20*8)-1,d1    ; 20 Words um 1 Zeile zu füllen
  91.                 ; 8 Zeilen zu füllen
  92. MachAndres:
  93.     move.w    #%0000000011111111,(a0)+ ; Länge von auf NULL gesetzten Quad= 8
  94.                      ; Quadrat auf 1 = 8 Pixel
  95.     dbra    d1,MachAndres         ; mach 8 Zeilen #.#.#.#.#.#.#.#.#.
  96.  
  97.     DBRA    d0,MachPaar        ; Mach 16 Paare Quadrate
  98.                     ; #.#.#.#.#.#.#.#.#.#
  99.     rts                ; .#.#.#.#.#.#.#.#.#.
  100.  
  101. ; Diese Routine erzeugt ein Schachbrett mit 4 Pixel Seitenkante pro Quadrat
  102.  
  103. MATRIX2:
  104.     LEA    BITPLANE,a0    ; Adresse Ziel-Bitplane
  105.  
  106.     MOVEQ    #32-1,d0    ; 32 Paare von 4 Pixel hohen Quadraten
  107.                 ; 32*2*4=256 totales Ausfüllen des Bildschirmes
  108. MachPaar2:
  109.     move.l    #(40*4)-1,d1    ; 40 Bytes um eine Zeile zu füllen
  110.                 ; 4 Zeilen zu füllen
  111. MachEins2:
  112.     move.b    #%11110000,(a0)+    ; Länge eines Quadrates auf 1 = 4 Pixel
  113.                     ; Quadrate auf NULL = 4 Pixel
  114.     dbra    d1,MachEins2        ; mach 4 Zeilen #.#.#.#.#.#.#.#.#.#
  115.  
  116.     move.l    #(40*4)-1,d1    ; 40 Bytes um eine Zeile zu füllen
  117.                 ; 4 Zeilen zu füllen
  118. MachAndres2:
  119.     move.b    #%00001111,(a0)+ ; Länge eine auf NULL gesetzten Quadrat = 4 Pixel
  120.                  ; Quadrat auf 1 = 4 Pixel
  121.     dbra    d1,MachAndres2     ; mach 8 Zeilen .#.#.#.#.#.#.#.#.#.
  122.  
  123.     DBRA    d0,MachPaar2        ; mach 32 Paare von Quadraten
  124.                     ; #.#.#.#.#.#.#.#.#.#
  125.     rts                ; .#.#.#.#.#.#.#.#.#.
  126.  
  127. ; Diese Routine macht ein Schachbrett mit Quadraten zu 16 Pixel
  128.  
  129.  
  130. MATRIX3:
  131.     LEA    BITPLANE,a0    ; Adresse Ziel-Bitplane
  132.  
  133.     MOVEQ    #8-1,d0     ; 8 Paare von 16 Pixel hohen Quadraten
  134.                 ; 8*2*4=256 totales Ausfüllen des Bildschirmes
  135. MachPaar3:
  136.     move.l    #(10*16)-1,d1    ; 10 Bytes um eine Zeile zu füllen
  137.                 ; 16 Zeilen zu füllen
  138. MachEins3:
  139.     move.l    #%11111111111111110000000000000000,(a0)+
  140.                 ; Länge eines Quadrates auf 1 = 16 Pixel
  141.                 ; Quadrate auf NULL = 16 Pixel
  142.     dbra    d1,MachEins3    ; mach 16 Zeilen #.#.#.#.#.#.#.#.#.#
  143.  
  144.     move.l    #(10*16)-1,d1    ; 10 Bytes um eine Zeile zu füllen
  145.                 ; 16 Zeilen zu füllen
  146. MachAndres3:
  147.  
  148.     move.l    #%00000000000000001111111111111111,(a0)+
  149.                 ; Länge eine auf NULL gesetzten Quadr.=16 Pixel
  150.                 ; Quadrat auf 1 = 16 Pixel
  151.     dbra    d1,MachAndres3    ; mach 8 Zeilen .#.#.#.#.#.#.#.#.#.
  152.  
  153.     DBRA    d0,MachPaar3        ; mach 8 Paare von Quadraten
  154.                     ; #.#.#.#.#.#.#.#.#.#
  155.     rts                ; .#.#.#.#.#.#.#.#.#.
  156.  
  157.  
  158.     ; MATRIX Modell:"Fantasie"
  159.  
  160. MATRIX4:
  161.     LEA    BITPLANE,a0    ; Adresse Ziel-Bitplane in a0
  162.  
  163.     MOVEQ    #8-1,d0     ; 8 Paare von 16 Pixel hohen Quadraten
  164.              ; 8*2*16=256 totales Ausfüllen des Bildschirmes
  165. MachPaar4:
  166.     move.l    #(10*16)-1,d1    ; 10 Longwords um eine Zeile zu füllen
  167.                 ; 16 Zeilen zu füllen
  168. MachEins4:
  169.     move.l    #%11111000000000011111000000000000,(a0)+ 
  170.                     ; Länge Quadrat auf 1 = 4 Pixel
  171.                     ; Quadrat auf 0 = 12 Pixel
  172.     dbra    d1,MachEins4        ; mach 16 Zeilen #.#.#.#.#.#.#.#.#.#
  173.  
  174.     move.l    #(10*16)-1,d1    ; 10 Longwords um eine Zeile zu füllen
  175.                 ; 16 Zeilen zu füllen
  176. MachAndres4:
  177.     move.l    #%00000000000011111000000000011111,(a0)+
  178.                     ; Länge Quadrat auf 0 = 12
  179.                     ; Quadrat auf 1 = 4 Pixel
  180.     dbra    d1,MachAndres4        ; mach    8 Zeilen .#.#.#.#.#.#.#.#.#.
  181.  
  182.     DBRA    d0,MachPaar4        ; Mach 8 Paare von Quadraten
  183.                     ; #.#.#.#.#.#.#.#.#.#
  184.     rts                ; .#.#.#.#.#.#.#.#.#.
  185.  
  186.  
  187.  
  188.     SECTION GRAPHIC,DATA_C
  189.  
  190. COPPERLIST:
  191.     dc.w    $120,$0000,$122,$0000,$124,$0000,$126,$0000,$128,$0000 ; SPRITE
  192.     dc.w    $12a,$0000,$12c,$0000,$12e,$0000,$130,$0000,$132,$0000
  193.     dc.w    $134,$0000,$136,$0000,$138,$0000,$13a,$0000,$13c,$0000
  194.     dc.w    $13e,$0000
  195.  
  196.     dc.w    $8E,$2c81    ; DiwStrt (Register mit Normalwerten)
  197.     dc.w    $90,$2cc1    ; DiwStop
  198.     dc.w    $92,$0038    ; DdfStart
  199.     dc.w    $94,$00d0    ; DdfStop
  200.     dc.w    $102,0        ; BplCon1
  201.     dc.w    $104,0        ; BplCon2
  202.     dc.w    $108,0        ; Bpl1Mod
  203.     dc.w    $10a,0        ; Bpl2Mod
  204.  
  205.             ; 5432109876543210
  206.     dc.w    $100,%0001001000000000  ; Bit 12 an - 1 Bitplane Lowres
  207.  
  208. BPLPOINTERS:
  209.     dc.w $e0,$0000,$e2,$0000    ;erstes  Bitplane
  210.  
  211.     dc.w    $0180,$000    ; Color0 - Hintergrund
  212.     dc.w    $0182,$19a    ; Color1 - Schrift
  213.  
  214.     dc.w    $FFFF,$FFFE    ; Ende der Copperlist
  215.  
  216.  
  217.     SECTION MEIPLANE,BSS_C    ; Die SECTION BSS können nur aus NULLEN
  218.                 ; bestehen!!! Man verwendet das DS.B um zu
  219.                 ; definieren, wieviele Nullen die Section
  220.                 ; enthalten soll
  221.  
  222. BITPLANE:
  223.     ds.b    40*256    ; ein Bitplane, 320x256 LowRes
  224.  
  225.     end
  226.  
  227. If you need a geometric background, you can do it with a routine!
  228.  
  229.