custom    = $DFF000
bplcon0   = $100
bplcon1   = $102
bpl1mod   = $108
bpl2mod   = $10A
dffstrt   = $092
diwstrt   = $08E
color00   = $180
color01   = $182
dmacon    = $096
intena    = $09A
intreq    = $09C
intreqr   = $01E
bpl1pth   = $0E0
bpl2pth   = $0E4
execbase  = 4
allocmem  = -198
freemem   = -210

          movem.l d0-d7/a0-a6,-(a7)
          move.l execbase.s,a6      ;Bit-Plane anfordern
          move.l #1*40*200,d0       ;(Speicher)
          move.l #$10002,d1
          jsr allocmem(a6)
          move.l d0,Bpl1

          move.l Bpl1,a1             ;Bit-Plane in a1
          move.l #Test,a0            ;Text-Adresse in a0
          jsr text                   ;und Drucken


          lea custom,a6
          move.w #$00A0,dmacon(a6)       ;Playfield
          move.w #$1200,bplcon0(a6)      ;initialisieren
          move.w #$0000,bplcon1(a6)
          move.l #$003800D0,dffstrt(a6)
          move.l #$2C81F4C1,diwstrt(a6)
          move.w #$0000,bpl1mod(a6)
          move.w #$0000,color00(a6)
          move.w #$0FFF,color01(a6)
          move.w #$0020,intena(a6)
          move.w #$8350,dmacon(a6)
wait:     move.w intreqr(a6),d4      ;Vertical-Blank
          btst #$5,d4
          beq wait                   ;Nein, dann zu wait
          move.w #$0020,intreq(a6)   ;Ja, stoppen
          move.l Bpl1,bpl1pth(a6)    ;Bit-Planeadresse eintragen
          btst #6,$BFE001            ;Maustaste gedrückt
          beq end                    ;Ja, dann Ende
          bra wait
end:      move.w #$81F0,dmacon(a6)
          move.w #$8020,intena(a6)
          move.l execbase.s,a6
          move.l Bpl1,a1
          move.l #1*40*200,d0
          jsr freemem(a6)
          movem.l (a7)+,d0-d7/a0-a6
          rts


Bpl1:     dc.l 0
Test:     dc.b 'Hallo Assembler-Freaks!!',0
          even

          ;Text-Funktion mit dem Topaz.font im ROM
          ;a0: Adresse des auszudruckenden Textes
          ;a1: Adresse des Bitplanes
text:
          movem.l d1-d2/a0-a3,-(a7);Register retten
text1:    move.b (a0)+,d1     ;Buchstabe holen
          beq textende        ;0-Byte, dann Ende
          sub.b #$20,d1       ;richtige Adresse
          move.l #$FC90F4,a2  ;für den Buchstaben
          add.l d1,a2         ;berechnen
          moveq #7,d2         ;ein Buchstabe = 8 Pixel hoch
          move.l a1,a3        ;Bitplane kopieren
text2:    move.b (a2),(a3)    ;Teil des Buchstaben kopieren
          add.l #40,a3        ;nächste Zeile
          add.l #$C0,a2       ;nächsten Teil
          dbf d2,text2        ;8 mal
          addq.l #1,a1        ;8 Pixel weiter
          bra text1           ;Schleife machen
textende: movem.l (a7)+,d1-d2/a0-a3;Register holen
          rts







