home *** CD-ROM | disk | FTP | other *** search
- ; Dies ist das File für die externen Routinen der Demo
- ; "ScrollMe.m"
-
- ; Wichtig : Die zu exportierenden Namen müssen groß
- ; geschrieben werden !
-
- Xdef SCROLL
- Xdef SETFONT
- Xdef SETMODE
- Xdef SETCOLOR
- Xdef OPENWINDOW
- Xdef CLOSEWINDOW
-
- Xref Intbase ; IntuitionBase aus der Startup-Sequence
-
- OPENWINDOW Move.l Intbase,a6 ; Intuitionbase
- Move.l #NewWindow,a0
- jsr -204(a6) ; Fenster öffnen
- Move.l d0,4(a7) ; Funktionsergebnis
- Move.l d0,a0
- Move.l $32(a0),Fenster ; RastPort sichern
-
- ; Diskfont & GFX Library laden
-
- Move.l 4,a6
- Move.l #GFXName,a1
- moveq #0,d0
- jsr -552(a6)
- Move.l d0,GFXBase
- Move.l #Diskname,a1
- moveq #0,d0
- jsr -552(a6)
- Move.l d0,Diskbase
-
-
-
-
-
- ; Font Courier laden
-
- Move.l d0,a6
- Move.l #Font,a0
- jsr -30(a6)
- Move.l d0,Fadr
- Move.l #Font1,a0
- jsr -30(a6)
- Move.l d0,Fadr1
- Rts
-
-
- CLOSEWINDOW Move.l Intbase,a6 ; Fenster schließen
- Move.l 4(a7),a0
- jsr -72(a6)
- Move.l GFXBase,a6
- Move.l Fadr,a1 ; Font schließen
- jsr -78(a6)
- Move.l 4,a6
- Move.l GFXBase,a1
- jsr -414(a6)
- Move.l Diskbase,a1
- jsr -414(a6)
- RTS
-
- ; Hinweis zu der Varberechnung
- ; Auf dem Stack (a7) liegt die RTS-Adresse
- ; Es folgt 4(a7) die Adresse (!!) der Boolean-Var
- ; die in ScrollMe.m als VAR-Parameter bestimmt wurde
- ; die wird negiert indem die Adresse geladen wird (1)
- ; und der Wortinhalt (Boolean=2 Bytes lang) dieser
- ; Adresse mit NOT.W invertiert wird.
-
-
- SETFONT: Move.l GFXBase,a6
- Move.l Fadr,a0
- Move.l Fenster,a1 ; RastPort
- Move.l 4(a7),a2
- Not.w (a2)
- Move.w (a2),d0 ; Bool'scher Wert (BIG)
- Beq.s Ok1
- Move.l Fadr1,a0
- Ok1 Jsr -66(a6) ; SetFont
- Rts
-
-
-
- SETMODE: Move.l GFXBase,a6
- Moveq #5,d0 ; Invers+Jam2
- Move.l Fenster,a1 ; RastPort
- Move.l 4(a7),a2
- Not.w (a2)
- Move.w (a2),d1 ; Bool'scher Wert (BIG)
- Beq.s Ok2
- Moveq #1,d0
- Ok2 Jsr -354(a6) ; SetDrMd
- Rts
-
- SETCOLOR: Move.l GFXBase,a6
- Moveq #2,d0 ; Invers+Jam2
- Move.l Fenster,a1 ; RastPort
- Move.l 4(a7),a2
- Not.w (a2)
- Move.w (a2),d1 ; Bool'scher Wert (COLOR)
- Beq.s Ok3
- Moveq #1,d0
- Ok3 Jsr -342(a6) ; SetDrMd
- Rts
-
- ; Eine einfache Scrollroutine, dient nur zur Demo
- ; keine Feinabstimmung !!
- ; Stack:
- ; RTS.l Len.b 255 Zeichen
-
-
- SCROLL: Move.l GFXBase,a6
-
- Lea 4(a7),a4 ; Adresse Länge String
- Moveq #9,d7 ; Breitenzähler
- Moveq #0,d6 ; Zeichenzähler
- Move.b (a4)+,d6
- beq.s Ende
-
- SLoop Tst.l d7 ; Zeichen komplett ?
- Bne.s Nein ;
- moveq #28,d1 ; y pos
- move.l #384,d0 ; x
- move.l Fenster,a1
- jsr -240(a6)
-
- Move.l a4,a0 ; Adresse String
- Moveq #1,d0 ; 1 Zeichen
- Move.l Fenster,a1 ; Rport
- jsr -54(a6)
- Move.l d0,d7 ; Breite Zeichen setzen
-
- Move.l a4,a0 ; Adresse String
- addq.l #1,a4 ; Ptr auf nächstes Zeichen
- Moveq #1,d0 ; 1 Zeichen
- Move.l Fenster,a1 ; Rport
- jsr -60(a6)
- Subq.l #1,d6 ; 1 Zeichen weniger
- beq.s Ende
- Bra.s SLoop
- Nein Subq.l #1,d7 ; Ein Weiteres Bit
- Move.l Fenster,a1 ; Rport
- Moveq #1,d0 ; 1 Pixel Links
- Moveq #0,d1 ; Kein Pixel hoch
- Moveq #3,d2 ; X1
- Moveq #12,d3 ; Y1
- Move.l #396,d4 ; X2
- Moveq #30,d5 ; y2
- jsr -396(a6)
- bra.s SLoop
- Ende Rts
-
- ; Hier nun fix die NewWindow-Struktur
-
- NewWindow dc.w 120
- dc.w 43
- dc.w 400
- dc.w 40
- dc.b 0,1
- dc.l 0,6,0,0
- dc.l Titel
- dc.l 0 ; Screen
- dc.l 0
- dc.w 120
- dc.w 43
- dc.w 400
- dc.w 40
- dc.w 1
-
- Font dc.l FName
- dc.w 11
- dc.w 0,2 ; Normal Style,Diskfont
-
- Font1 dc.l FRName
- dc.w 12
- dc.w 0,2 ; Normal Style,Diskfont
-
-
- FName dc.b "courier.font",0
- FRName dc.b "ruby.font",0
- Titel dc.b "Scroll-Fenster",0
- ds.l 0
- Diskname dc.b "diskfont.library",0
- GFXName dc.b "graphics.library",0
- ds.l 0
-
-
- GFXBase dc.l 0
- Diskbase dc.l 0
- Fadr dc.l 0
- Fadr1 dc.l 0
- Fenster dc.l 0
-