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

  1.  
  2. ; Listing6r.s    ZUSAMMENFASSUNG VON VERSCHIEDENEN LISTINGS AUS
  3. ;        DIESER LEKTION + MUSIK-ROUTINE
  4.  
  5.  
  6.     SECTION    CIPundCOP,CODE
  7.  
  8. Anfang:
  9.     move.l    4.w,a6        ; Execbase
  10.     jsr    -$78(a6)    ; Disable
  11.     lea    GfxName(PC),a1    ; Namen der Lib
  12.     jsr    -$198(a6)    ; OpenLibrary
  13.     move.l    d0,GfxBase    ;
  14.     move.l    d0,a6
  15.     move.l    $26(a6),OldCop    ; speichern die alte COP
  16.  
  17. ;    POINTEN AUF UNSERE BITPLANES
  18.  
  19.     MOVE.L    #BITPLANETEXT-2,d0    ; Adresse des Ziel-Bitplane in d0
  20.     LEA    BPLPOINTERS,A1        ; COP - Pointer
  21.     move.w    d0,6(a1)
  22.     swap    d0
  23.     move.w    d0,2(a1)
  24.  
  25.     MOVE.L    #BITPLANEMATRIX-2,d0    ; Adresse Ziel-Bitplane in d0,
  26.     LEA    BPLPOINTERS2,A1        ; COP - Pointer
  27.     move.w    d0,6(a1)
  28.     swap    d0
  29.     move.w    d0,2(a1)
  30.  
  31.     move.l    #COPPERLIST,$dff080    ; COP1LC - unsere COP
  32.     move.w    d0,$dff088        ; COPJMP1 - Starten unsere COP
  33.     move.w    #0,$dff1fc        ; FMODE - Deaktiviert das AGA
  34.     move.w    #$c00,$dff106        ; BPLCON3 - Deaktiviert das AGA
  35.  
  36.     bsr.w    Matrix3     ; Bringt ein Schachmuster auf Bitplane!
  37.  
  38.     bsr.w    mt_init     ; Initialisiert die Musikroutine
  39.  
  40. mouse:
  41.     cmpi.b    #$ff,$dff006    ; Sind wir auf Zeile 255?
  42.     bne.s    mouse
  43.  
  44.     bsr.w    PrintCharakter    ; Druckt Buchstaben für Buchstaben den Text
  45.     bsr.w    MEGAScroll    ; Scoll eines 640 Pixel breiten Bildes
  46.                 ; auf einem LowRes-Screen zu 320 Pixel
  47.     bsr.w    BOING        ; Läßt das Text-Bitplane "springen"
  48.     bsr.w    mt_music    ; Spielt eine Musik
  49.  
  50. Warte:
  51.     cmpi.b    #$ff,$dff006    ; Sind wir auf Zeile 255?
  52.     beq.s    Warte        
  53.  
  54.     btst    #6,$bfe001    ; linke Maustaste gedrückt?
  55.     bne.s    mouse
  56.  
  57.     bsr.w    mt_end
  58.  
  59.     move.l    OldCop(PC),$dff080    ; COP1LC - "Zeiger" auf die Orginal-COP
  60.     move.w    d0,$dff088        ; COPJMP1 - und starten sie
  61.  
  62.     move.l    4.w,a6
  63.     jsr    -$7e(a6)    ; Enable
  64.     move.l    GfxBase(PC),a1
  65.     jsr    -$19e(a6)    ; Closelibrary 
  66.     rts
  67.  
  68.  
  69. ; DATEN
  70.  
  71. GfxName:
  72.     dc.b    "graphics.library",0,0
  73.  
  74. GfxBase:
  75.     dc.l    0
  76.  
  77. OldCop:
  78.     dc.l    0
  79.  
  80. ;************************************************************************
  81. ;*    Druckt einen Charakter pro Frame auf einen Screnn von 640 Pixel *
  82. ;************************************************************************
  83.  
  84. PRINTCharakter:
  85.     MOVE.L    PointeText(PC),A0 ; Adresse des zu druckenden Textes in a0
  86.     MOVEQ    #0,D2        ; Lösche d2
  87.     MOVE.B    (A0)+,D2    ; Nächster Buchstaben in d2
  88.     CMP.B    #$ff,d2        ; Ende-Text Signal? ($FF)
  89.     beq.s    EndeTEXT    ; Wenn ja, raus, ohne was zu drucken
  90.     TST.B    d2        ; Ende-Zeile Signal? ($00)
  91.     bne.s    NichtEndeZeile    ; Wenn nicht, nimm keine neue (Text-)Zeile
  92.  
  93.     ADD.L    #80*7,PointeBitplane    ; NEUE TEXTZEILE
  94.     ADDQ.L    #1,PointeText        ; erster Buchstabe in der neuen Zeile
  95.                     ; (überspringen die NULL)
  96.     move.b    (a0)+,d2        ; erster Buchstabe in der neuen Zeile
  97.                     ; (überspringen die NULL)
  98.  
  99. NichtEndeZeile:
  100.     SUB.B    #$20,D2        ; ZÄHLE 32 VOM ASCII-WERT DES BUCHSTABEN WEG,
  101.                 ; SOMIT VERWANDELN WIR Z.B. DAS LEERZEICHEN
  102.                 ; (Das $20 entspricht), IN $00, DAS
  103.                 ; MALZEICHEN ($21) IN $01...
  104.     MULU.W    #8,D2        ; MULTIPLIZIERE DIE ERHALTENE ZAHL MIT 8,
  105.                 ; da die Charakter ja 8 Pixel hoch sind
  106.     MOVE.L    D2,A2
  107.     ADD.L    #FONT,A2    ; FINDE DEN GEWÜNSCHTEN BUCHSTEBEN IM FONT
  108.  
  109.     MOVE.L    PointeBitplane(PC),A3 ; Adresse des Ziel-Bitplane in a3
  110.  
  111.                 ; DRUCKE DEN BUCHSTABEN ZEILE FÜR ZEILE
  112.     MOVE.B    (A2)+,(A3)    ; Drucke Zeile 1 des Buchstaben
  113.     MOVE.B    (A2)+,80(A3)    ; Drucke Zeile 2  "    "
  114.     MOVE.B    (A2)+,80*2(A3)    ; Drucke Zeile 3  "    "
  115.     MOVE.B    (A2)+,80*3(A3)    ; Drucke Zeile 4  "    "
  116.     MOVE.B    (A2)+,80*4(A3)    ; Drucke Zeile 5  "    "
  117.     MOVE.B    (A2)+,80*5(A3)    ; Drucke Zeile 6  "    "
  118.     MOVE.B    (A2)+,80*6(A3)    ; Drucke Zeile 7  "    "
  119.     MOVE.B    (A2)+,80*7(A3)    ; Drucke Zeile 8  "    "
  120.  
  121.     ADDQ.L    #1,PointeBitplane ; 8 Bit weiter vor (NÄCHSTER BUCHSTABE)
  122.     ADDQ.L    #1,PointeText    ; nächster zu druckende Buchstabe
  123.  
  124. EndeTEXT:
  125.     RTS
  126.  
  127.  
  128. PointeText:
  129.     dc.l    TEXT
  130.  
  131. PointeBitplane:
  132.     dc.l    BITPLANETEXT
  133.  
  134.  
  135. TEXT:
  136.         dc.b    "          DIESES DEMO FASST DIE LEKTION "
  137.         dc.b    "6 ZUSAMMEN, ES ENTHAELT SEI ES          ",0
  138.         dc.b    "                                        "
  139.         dc.b    "                                        ",0
  140.         dc.b    "          DIE DRUCKROUTINE FUER 8X8 PIXE"
  141.         dc.b    "L GROSSE CHARAKTER, WIE AUCH            ",0
  142.         dc.b    "                                        "
  143.         dc.b    "                                        ",0
  144.         dc.b    "          DEN HORIZONTALEN SCROLL MIT DE"
  145.         dc.b    "M BPLCON1 ($dff102) UND DEN BIT-        ",0
  146.         dc.b    "                                        "
  147.         dc.b    "                                        ",0
  148.         dc.b    "          PLANEPOINTERS UND DIE VERWENDU"
  149.         dc.b    "NG EINER VORDEFINIERTEN TABELLE         ",0
  150.         dc.b    "                                        "
  151.         dc.b    "                                        ",0
  152.         dc.b    "          FUER DEN VERTIKALSCROLL DIESES"
  153.         dc.b    " TEXTES.                                ",0
  154.         dc.b    "                                        "
  155.         dc.b    "                                        ",0
  156.         dc.b    "          DAS PLAYFIELD, AUF DEM DIESER "
  157.         dc.b    "TEXT GEDRUCKT WIRD, IST SO GROSS        ",0
  158.         dc.b    "                                        "
  159.         dc.b    "                                        ",0
  160.         dc.b    "          WIE EIN HIRES-SCHIRM, ALSO 640"
  161.         dc.b    " PIXEL IN DER BREITE UND 256 IN         ",0
  162.         dc.b    "                                        "
  163.         dc.b    "                                        ",0
  164.         dc.b    "          DER HOEHE, ES WIRD SOWOHL VERT"
  165.         dc.b    "IKAL WIE AUCH HORIZONTAL GESCROLLT,     ",0
  166.         dc.b    "                                        "
  167.         dc.b    "                                        ",0
  168.         dc.b    "          WAEHREND DAS BITPLANE MIT DEM "
  169.         dc.b    "SCHACHMUSTER NUR HORIZONTAL HIN UND     ",0
  170.         dc.b    "                                        "
  171.         dc.b    "                                        ",0
  172.         dc.b    "          HER GESCROLLT WIRD. DER VERTIK"
  173.         dc.b    "ALSCROLL HAT EIN VARIABLES TEMPO,       ",0
  174.         dc.b    "                                        "
  175.         dc.b    "                                        ",0
  176.         dc.b    "          WEIL ER VON EINER TABELLE BEST"
  177.         dc.b    "IMMT WIRD, DER HORIZONTALE IST IMMER    ",0
  178.         dc.b    "                                        "
  179.         dc.b    "                                        ",0
  180.         dc.b    "          ZU 2 PIXEL PRO FOTOGRAMM (FRAM"
  181.         dc.b    "E).                                     ",$FF
  182.  
  183.     EVEN
  184.  
  185. ;************************************************************************
  186. ;*    Scroll von 320 Pixel nach Links und Rechts  (Listing6o.s)       *
  187. ;************************************************************************
  188.  
  189. ; Bemerkung: So modifizieren, daß auf das Bitplane MATRIX zugegriffen
  190. ; wird!
  191.  
  192.  
  193. MEGAScroll:
  194.     addq.w    #1,WieOft    ; Signalisieren einen weiteren Durchgang
  195.     cmp.w    #160,WieOft    ; Sind wir auf 320?
  196.     bne.S    BewegNochMal    ; Wenn nicht, scrolle noch weiter
  197.     BCHG.B    #1,RechtsLinks    ; Wenn wir aber auf 320 sind, wechsle Richtung
  198.     CLR.w    WieOft        ; und setze "WieOft" auf NULL
  199.     rts
  200.  
  201. BewegNochMal:
  202.     BTST    #1,RechtsLinks    ; Müssen wir rechts oder links gehen?
  203.     BEQ.S    GehLinks
  204.     bsr.s    Rechts        ; Scrollt ein Pixel nach Rechts
  205.     bsr.s    Rechts        ; Scrollt ein Pixel nach Rechts
  206.                 ; 2 Pixel pro Frame, also doppelte Geschwindigkeit
  207.     rts
  208.  
  209. GehLinks:
  210.     bsr.s    Links        ; Scrollt ein Pixel nach Links
  211.     bsr.s    Links        ; Scrollt ein Pixel nach Links
  212.                 ; Auch hier zwei mal, doppelte Geschwindigkeit
  213.     rts
  214.  
  215. ; Dieses Word zählt, wie oft wir Links bzw. Rechts gegangen sind.
  216.  
  217. WieOft:
  218.     DC.W    0
  219.  
  220. ; Wenn das Bit 1 von RechtsLinks auf NULL ist, dann scrollt die Routine
  221. ; nach links, wenn es auf EINS ist, dann nach rechts
  222.  
  223. RechtsLinks:
  224.     DC.W    0
  225.  
  226. ; Diese Routine scrollt ein Bitplane nach rechts, indem es auf das BPLCON1
  227. ; und den Bitplanepointers in der Copperlist einwirkt. MEINBPCON1 ist das 
  228. ; Byte des BPLCON1.
  229.  
  230. Rechts:
  231.     CMP.B    #$ff,MEINBPCON1 ; sind wir bei maximalen Scroll angelangt (15)?
  232.     BNE.s    CON1ADDA    ; wenn nicht, weiter um ein weiteres
  233.     LEA    BPLPOINTERS,A1    ; Mit diesen 4 Anweisungen holen wir aus der
  234.     move.w    2(a1),d0    ; Copperlist die Adresse, wohin das $dff0e0
  235.     swap    d0        ; gerade pointet und geben diesen Wert
  236.     move.w    6(a1),d0    ; in d0
  237.  
  238.     LEA    BPLPOINTERS2,A2 ; Take address from copperlist
  239.     move.w    2(a2),d1
  240.     swap    d1
  241.     move.w    6(a2),d1
  242.  
  243.     subq.l    #2,d0        ; pointet 16 Bit weiter nach hinten, das Bild
  244.                 ; scrollt um 16 Pixel nach Rechts
  245.  
  246.     subq.l    #2,d1        ; pointet 16 Bit weiter nach hinten...
  247.  
  248.     clr.b    MEINBPCON1 ; löscht den Hardwarescroll des BPLCON1 ($dff102)
  249.                ; denn wir haben 16 Pixel schon mit den Bitplane-
  250.                ; Pointers "übersprungen", wir müssen wieder bei
  251.                ; NULL beginnen, um mit dem $dff102 um jeweils
  252.                ; 1 Pixel nach rechts zu gehen.
  253.  
  254. ;    Pointen auf das Text-Bitplane
  255.  
  256.     move.w    d0,6(a1)  ; kopiert das niederw. Word der Adress des Plane
  257.     swap    d0      ; vertauscht die 2 Word von d0 (z.B.: 1234 > 3412)
  258.     move.w    d0,2(a1)  ; kopiert das höherw. Word der Adresse des Plane
  259.  
  260.  
  261. ;    Pointen auf das MATRIX-Bitplane
  262.  
  263.     move.w    d1,6(a2)  ; kopiert das niederw. Word der Adress des Plane
  264.     swap    d1      ; vertauscht die 2 Word von d1 (z.B.: 1234 > 3412)
  265.     move.w    d1,2(a2)  ; kopiert das höherw. Word der Adresse des Plane
  266.  
  267.     rts
  268.  
  269.  
  270. CON1ADDA:
  271.     add.b    #$11,MEINBPCON1 ; scrolle ein Pixel nach vorne
  272.     rts
  273.  
  274. ;    Routine, die nach Links scrollt, identisch mit der vorherigen:
  275.  
  276. LINKS:
  277.     TST.B    MEINBPCON1    ; sind wir bei minimalen Scroll angelangt (00)?
  278.     BNE.s    CON1SUBBA    ; wenn nicht, zurück um ein weiteres
  279.  
  280.     LEA    BPLPOINTERS,A1    ; Mit diesen 4 Anweisungen holen wir aus der
  281.     move.w    2(a1),d0    ; Copperlist die Adresse, wohin das $dff0e0
  282.     swap    d0        ; gerade pointet und geben diesen Wert
  283.     move.w    6(a1),d0    ; in d0
  284.  
  285.     LEA    BPLPOINTERS2,A2 ; Mit diesen 4 Anweisungen holen wir aus der
  286.     move.w    2(a2),d1    ; Copperlist die Adresse, wohin das $dff0e0
  287.     swap    d1        ; gerade pointet und geben diesen Wert
  288.     move.w    6(a2),d1    ; in d0
  289.     
  290.     addq.l    #2,d0        ; pointet 16 Bit weiter nach vorne, das Bild
  291.                 ; scrollt um 16 Pixel nach Links
  292.  
  293.     addq.l    #2,d1        ; pointet 16 Bit weiter nach vorne, das Bild
  294.                 ; scrollt um 16 Pixel nach Links
  295.  
  296.     move.b    #$FF,MEINBPCON1    ; Hardwarescroll auf 00 (BPLCON1, $dff102)
  297.  
  298. ;    Pointen auf das Text-Bitplane
  299.  
  300.     move.w    d0,6(a1) ; kopiert das niederw. Word der Adress des Plane
  301.     swap    d0     ; vertauscht die 2 Word von d0 (z.B.: 1234 > 3412)
  302.     move.w    d0,2(a1) ; kopiert das höherw. Word der Adresse des Plane
  303.  
  304. ;    Pointen auf das MATRIX-Bitplane
  305.  
  306.     move.w    d1,6(a2) ; kopiert das niederw. Word der Adress des Plane
  307.     swap    d1     ; vertauscht die 2 Word von d1 (z.B.: 1234 > 3412)
  308.     move.w    d1,2(a2) ; kopiert das höherw. Word der Adresse des Plane
  309.  
  310.     rts
  311.  
  312.  
  313. CON1SUBBA:
  314.     sub.b    #$11,MEINBPCON1 ; scrolle ein Pixel nach hinten
  315.     rts
  316.  
  317. ;************************************************************************
  318. ;*  Scrollt RAUF/RUNTER unter Verwendung einer Tabelle (Listing6m.s)    *
  319. ;************************************************************************
  320.  
  321.  
  322. BOING:
  323.     LEA    BPLPOINTERS,A1    ; Mit diesen 4 Anweisungen holen wir aus der
  324.     move.w    2(a1),d0    ; Copperlist die Adresse, wohin das $dff0e0
  325.     swap    d0        ; gerade pointet und geben diesen Wert
  326.     move.w    6(a1),d0    ; in d0
  327.  
  328.     ADDQ.L    #4,BOINGTABPOINT     ; Pointe auf das nächste Longword
  329.     MOVE.L    BOINGTABPOINT(PC),A0 ; Adresse, die im Long BOINGTABPOINT steht
  330.                      ; wird in a0 kopiert
  331.     CMP.L    #ENDEBOINGTAB-4,A0 ; Sind wir beim letzten Longword in der TAB?
  332.     BNE.S    NOBSTART2       ; noch nicht? dann fahr´ fort
  333.     MOVE.L    #BOINGTAB-4,BOINGTABPOINT ; Starte wieder beim ersten Long
  334. NOBSTART2:
  335.     MOVE.l    (A0),d1     ; kopiere das Long aus der Tabelle in d1
  336.  
  337.     sub.l    d1,d0        ; subtrahieren den Wert aud der Tabelle, somit
  338.                 ; scrollt das Bild rauf oder runter
  339.  
  340.     LEA    BPLPOINTERS,A1    ; Pointer in der COPPERLIST
  341.     MOVEQ    #1,D1        ; Anzahl der Bitplanes -1 (hier sind es 2)
  342.  
  343.  
  344. POINTBP2:
  345.     move.w    d0,6(a1)   ; kopiert das niederw. Word der Adress des Plane
  346.     swap    d0       ; vertauscht die 2 Word von d0 (z.B.: 1234 > 3412)
  347.     move.w    d0,2(a1)   ; kopiert das höherw. Word der Adresse des Plane
  348.     swap    d0       ; vertauscht die 2 Word von d0 (3412 > 1234)
  349.     ADD.L    #80*256,d0 ; + Länge Bitplane -> nächstes Bitplane
  350.     addq.w    #8,a1        ; zu den nächsten bplpointers in der Cop
  351. ;    dbra    d1,POINTBP2 ; Wiederhole D1 Mal POINTBP (D1=num of bitplanes)
  352.     rts
  353.  
  354.  
  355. BOINGTABPOINT:           ; Dieses Longword "POINTET" auf BOINGTAB, also
  356.     dc.l    BOINGTAB-4 ; enthält es die Adresse von BOINGTAB. Es wird
  357.                ; die Adresse des letzten gelesenen Long innerhalb
  358.                ; der Tab beinhalten.(hier beginnt es bei BOINGTAB-4
  359.                ; weil BOING mit einem  ADDQ.L #4,C.. beginnt
  360.                ; es gleicht somit diese Anweisung aus.
  361.  
  362. ;    Die Tabelle mit den "vorgerechneten" Rückprallwerten:
  363.  
  364. BOINGTAB:
  365.     dc.l    0,0,80,80,80,80,80,80,80,80,80        ; ganz Oben
  366.     dc.l    80,80,2*80,2*80
  367.     dc.l    2*80,2*80,2*80,2*80,2*80        ; beschleunigen
  368.     dc.l    3*80,3*80,3*80,3*80,3*80
  369.     dc.l    3*80,3*80,3*80,3*80,3*80
  370.     dc.l    2*80,2*80,2*80,2*80,2*80        ; bremsen
  371.     dc.l    2*80,2*80,80,80
  372.     dc.l    80,80,80,80,80,80,80,80,80,0,0,0,0,0,0,0  ; ganz Unten
  373.     dc.l    -80,-80,-80,-80,-80,-80,-80,-80,-80
  374.     dc.l    -80,-80,-2*80,-2*80
  375.     dc.l    -2*80,-2*80,-2*80,-2*80,-2*80
  376.     dc.l    -3*80,-3*80,-3*80,-3*80,-3*80          ; beschleunigen
  377.     dc.l    -3*80,-3*80,-3*80,-3*80,-3*80
  378.     dc.l    -2*80,-2*80,-2*80,-2*80,-2*80           ; bremsen
  379.     dc.l    -2*80,-2*80,-80,-80
  380.     dc.l    -80,-80,-80,-80,-80,-80,-80,-80,-80,0,0,0,0,0    ; ganz Oben
  381. ENDEBOINGTAB:
  382.  
  383. ;************************************************************************
  384. ;* Erstllt ein Schachbrett mit 16 Pixel großen Quadraten (Listing6q.s)  *
  385. ;************************************************************************
  386.  
  387. MATRIX3:
  388.     LEA    BITPLANEMATRIX,a0    ; Adresse Ziel-Bitplane
  389.  
  390.     MOVEQ    #8-1,d0        ; 8 Paare von 16 Pixel hohen Quadraten
  391.                 ; 8*2*4=256 totales Ausfüllen des Bildschirmes
  392. MachPaar3:
  393.     move.l    #(20*16)-1,d1    ; 10 Bytes um eine Zeile zu füllen
  394.                 ; 16 Zeilen zu füllen
  395. MachEins3:
  396.     move.l    #%11111111111111110000000000000000,(a0)+
  397.                     ; Länge eines Quadrates auf 1=16 Pixel
  398.                     ; Quadrate auf NULL = 16 Pixel
  399.     dbra    d1,MachEins3        ; mach 16 Zeilen #.#.#.#.#.#.#.#.#.#
  400.  
  401.     move.l    #(20*16)-1,d1    ; 10 Bytes um eine Zeile zu füllen
  402.                 ; 16 Zeilen zu füllen
  403. MachAndres3:
  404.  
  405.     move.l    #%00000000000000001111111111111111,(a0)+
  406.                 ; Länge eine auf NULL gesetzten Quadr.=16 Pixel
  407.                 ; Quadrat auf 1 = 16 Pixel
  408.     dbra    d1,MachAndres3    ; mach 8 Zeilen .#.#.#.#.#.#.#.#.#.
  409.  
  410.     DBRA    d0,MachPaar3    ; mach 8 Paare von Quadraten
  411.                 ; #.#.#.#.#.#.#.#.#.#
  412.     rts            ; .#.#.#.#.#.#.#.#.#.
  413.  
  414. ; **************************************************************************
  415. ; *        ROUTINE; DIE DIE MUSIK SPIELT (SOUNDTRACKER/PROTRACKER)       *
  416. ; **************************************************************************
  417.  
  418.     include "music.s"    ; Routine 100% funktionsfähig auf allen Amigas
  419.  
  420.  
  421.     SECTION GRAPHIC,DATA_C
  422.  
  423. COPPERLIST:
  424.     dc.w    $120,$0000,$122,$0000,$124,$0000,$126,$0000,$128,$0000 ; SPRITE
  425.     dc.w    $12a,$0000,$12c,$0000,$12e,$0000,$130,$0000,$132,$0000
  426.     dc.w    $134,$0000,$136,$0000,$138,$0000,$13a,$0000,$13c,$0000
  427.     dc.w    $13e,$0000
  428.  
  429.     dc.w    $8E,$2c81    ; DiwStrt (Register mit Normalwerten)
  430.     dc.w    $90,$2cc1    ; DiwStop
  431.     dc.w    $92,$0030    ; DdfStart (wegen Scroll modifiziert)
  432.     dc.w    $94,$00d0    ; DdfStop
  433.     dc.w    $102        ; BplCon1
  434.     dc.b    0        ; hochwertiges Byte des $dff102,nicht verwendet
  435. MEINBPCON1:
  436.     dc.b    0        ; niederwertiges Byte des $dff102, verwendet
  437.     dc.w    $104,0        ; BplCon2
  438.     dc.w    $108,40-2    ; Bpl1Mod ( 40 für ein Bild, das 640 breit ist,
  439.     dc.w    $10a,40-2    ; Bpl2Mod   -2 um das DDFSTART auszugleichen)
  440.  
  441.             ; 5432109876543210
  442.     dc.w    $100,%0010001000000000  ; Bits 13 an -
  443.  
  444. BPLPOINTERS:
  445.     dc.w $e0,$0000,$e2,$0000    ;erstes  Bitplane
  446. BPLPOINTERS2:
  447.     dc.w $e4,0,$e6,0        ; zweites Bitplane
  448.  
  449.     dc.w    $180,$113    ; color0 - DUNKLES QUADRAT
  450.     dc.w    $182,$bb5    ; color1 - SCHRIFTEN+dunkles Quadrat
  451.     dc.w    $184,$225    ; color2 - Helles Quadrat
  452.     dc.w    $186,$bb5    ; color3 - SCHRIFTEN+Helles Quadrat
  453.  
  454.     dc.w    $FFFF,$FFFE    ; Ende der Copperlist
  455.  
  456. ;    Der FONT, Charakter 8x8
  457.  
  458. FONT:
  459.     incbin    "metal.fnt"    ; Breiter Zeichensatz
  460. ;    incbin    "normal.fnt"    ; Ähnlich dem aus dem Kickstart 1.3
  461. ;    incbin    "nice.fnt"    ; Schmaler Zeichensatz
  462.  
  463. ; **************************************************************************
  464. ; *                PROTRACKER-MUSIKSTÜCK               *
  465. ; **************************************************************************
  466.  
  467. mt_data:
  468.     incbin    "mod.purple-shades"
  469.  
  470.  
  471.  
  472.     SECTION MEIPLANE,BSS_C
  473.  
  474.  
  475. BITPLANEMATRIX:
  476.     ds.b    80*256    ; ein Bitplane, 640x256 breit (wie Hires)
  477.  
  478.  
  479.     ds.b    80*100
  480. BITPLANETEXT:
  481.     ds.b    80*256    ; ein Bitplane 640x256
  482.  
  483.  
  484.     end
  485.  
  486. Manchmal ergeben einige nicht recht aufsehenerregende Routinen zusammen
  487. einen recht schönes Ergebnis...
  488.  
  489.