home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / ungepackte_daten / 1994 / 6 / 01 / mini-compiler / mini.ampk / Mini-Compiler / Demo / Scroll.Asm < prev    next >
Encoding:
Assembly Source File  |  1995-06-01  |  3.6 KB  |  195 lines

  1.     ; Dies ist das File für die externen Routinen der Demo
  2.     ; "ScrollMe.m"
  3.     
  4.     ; Wichtig : Die zu exportierenden Namen müssen groß 
  5.     ; geschrieben werden !
  6.  
  7.     Xdef    SCROLL
  8.     Xdef    SETFONT
  9.     Xdef    SETMODE
  10.     Xdef    SETCOLOR
  11.     Xdef    OPENWINDOW
  12.     Xdef    CLOSEWINDOW
  13.  
  14.     Xref    Intbase        ; IntuitionBase aus der Startup-Sequence
  15.  
  16. OPENWINDOW    Move.l    Intbase,a6    ; Intuitionbase
  17.         Move.l    #NewWindow,a0
  18.         jsr    -204(a6)    ; Fenster öffnen
  19.         Move.l    d0,4(a7)    ; Funktionsergebnis
  20.         Move.l    d0,a0
  21.         Move.l    $32(a0),Fenster    ; RastPort sichern
  22.  
  23.     ; Diskfont & GFX Library laden
  24.  
  25.         Move.l    4,a6
  26.         Move.l    #GFXName,a1
  27.         moveq    #0,d0
  28.         jsr    -552(a6)
  29.         Move.l    d0,GFXBase
  30.         Move.l    #Diskname,a1
  31.         moveq    #0,d0
  32.         jsr    -552(a6)
  33.         Move.l    d0,Diskbase
  34.  
  35.  
  36.  
  37.  
  38.  
  39.     ; Font Courier laden
  40.         
  41.         Move.l     d0,a6
  42.         Move.l    #Font,a0
  43.         jsr    -30(a6)
  44.         Move.l    d0,Fadr
  45.         Move.l    #Font1,a0
  46.         jsr    -30(a6)
  47.         Move.l    d0,Fadr1
  48.         Rts
  49.  
  50.  
  51. CLOSEWINDOW    Move.l    Intbase,a6    ; Fenster schließen
  52.         Move.l    4(a7),a0
  53.         jsr    -72(a6)
  54.         Move.l    GFXBase,a6
  55.         Move.l    Fadr,a1        ; Font schließen
  56.         jsr    -78(a6)
  57.         Move.l    4,a6        
  58.         Move.l    GFXBase,a1
  59.         jsr    -414(a6)
  60.         Move.l    Diskbase,a1
  61.         jsr    -414(a6)
  62.         RTS
  63.  
  64.     ; Hinweis zu der Varberechnung
  65.     ; Auf dem Stack (a7) liegt die RTS-Adresse
  66.     ; Es folgt 4(a7) die Adresse (!!) der  Boolean-Var
  67.     ; die in ScrollMe.m als VAR-Parameter bestimmt wurde
  68.     ; die wird negiert indem die Adresse geladen wird (1)
  69.     ; und der Wortinhalt (Boolean=2 Bytes lang) dieser 
  70.     ; Adresse mit NOT.W invertiert wird.
  71.  
  72.  
  73. SETFONT:    Move.l    GFXBase,a6
  74.         Move.l    Fadr,a0
  75.         Move.l    Fenster,a1    ; RastPort
  76.         Move.l    4(a7),a2
  77.         Not.w    (a2)
  78.         Move.w    (a2),d0        ; Bool'scher Wert (BIG)
  79.         Beq.s    Ok1
  80.         Move.l    Fadr1,a0
  81. Ok1        Jsr    -66(a6)        ; SetFont
  82.         Rts
  83.         
  84.  
  85.  
  86. SETMODE:    Move.l    GFXBase,a6
  87.         Moveq    #5,d0        ; Invers+Jam2
  88.         Move.l    Fenster,a1    ; RastPort
  89.         Move.l    4(a7),a2    
  90.         Not.w    (a2)
  91.         Move.w    (a2),d1        ; Bool'scher Wert (BIG)
  92.         Beq.s    Ok2
  93.         Moveq    #1,d0
  94. Ok2        Jsr    -354(a6)    ; SetDrMd
  95.         Rts
  96.  
  97. SETCOLOR:    Move.l    GFXBase,a6
  98.         Moveq    #2,d0        ; Invers+Jam2
  99.         Move.l    Fenster,a1    ; RastPort
  100.         Move.l    4(a7),a2
  101.         Not.w    (a2)
  102.         Move.w    (a2),d1        ; Bool'scher Wert (COLOR)
  103.         Beq.s    Ok3
  104.         Moveq    #1,d0
  105. Ok3        Jsr    -342(a6)    ; SetDrMd
  106.         Rts
  107.  
  108.     ; Eine einfache Scrollroutine, dient nur zur Demo
  109.     ; keine Feinabstimmung !!
  110.     ; Stack:    
  111.     ;    RTS.l Len.b 255 Zeichen
  112.  
  113.  
  114. SCROLL:        Move.l    GFXBase,a6
  115.  
  116.         Lea    4(a7),a4    ; Adresse Länge String
  117.         Moveq    #9,d7        ; Breitenzähler
  118.         Moveq    #0,d6        ; Zeichenzähler
  119.         Move.b    (a4)+,d6
  120.         beq.s    Ende
  121.  
  122. SLoop        Tst.l    d7        ; Zeichen komplett ?
  123.         Bne.s    Nein        ;
  124.         moveq    #28,d1        ; y pos
  125.         move.l    #384,d0        ; x
  126.         move.l    Fenster,a1
  127.         jsr    -240(a6)    
  128.  
  129.         Move.l    a4,a0        ; Adresse String
  130.         Moveq    #1,d0        ; 1 Zeichen
  131.         Move.l    Fenster,a1    ; Rport
  132.         jsr    -54(a6)
  133.         Move.l    d0,d7        ; Breite Zeichen setzen
  134.  
  135.         Move.l    a4,a0        ; Adresse String
  136.         addq.l    #1,a4        ; Ptr auf nächstes Zeichen
  137.         Moveq    #1,d0        ; 1 Zeichen
  138.         Move.l    Fenster,a1    ; Rport
  139.         jsr    -60(a6)
  140.         Subq.l    #1,d6        ; 1 Zeichen weniger
  141.         beq.s    Ende
  142.         Bra.s    SLoop
  143. Nein        Subq.l    #1,d7        ; Ein Weiteres Bit
  144.         Move.l    Fenster,a1    ; Rport
  145.         Moveq    #1,d0        ; 1 Pixel Links
  146.         Moveq    #0,d1        ; Kein Pixel hoch
  147.         Moveq    #3,d2        ; X1
  148.         Moveq    #12,d3        ; Y1
  149.         Move.l    #396,d4        ; X2
  150.         Moveq    #30,d5        ; y2
  151.         jsr    -396(a6)
  152.         bra.s    SLoop
  153. Ende        Rts
  154.  
  155.     ; Hier nun fix die NewWindow-Struktur
  156.  
  157. NewWindow    dc.w    120
  158.         dc.w    43
  159.         dc.w    400
  160.         dc.w    40
  161.         dc.b    0,1
  162.         dc.l    0,6,0,0
  163.         dc.l    Titel
  164.         dc.l    0        ; Screen
  165.         dc.l    0
  166.         dc.w    120
  167.         dc.w    43
  168.         dc.w    400
  169.         dc.w    40
  170.         dc.w    1
  171.  
  172. Font    dc.l    FName
  173.     dc.w    11
  174.     dc.w    0,2    ; Normal Style,Diskfont
  175.  
  176. Font1    dc.l    FRName
  177.     dc.w    12
  178.     dc.w    0,2    ; Normal Style,Diskfont
  179.  
  180.  
  181. FName    dc.b    "courier.font",0
  182. FRName    dc.b    "ruby.font",0
  183. Titel    dc.b    "Scroll-Fenster",0
  184.     ds.l    0    
  185. Diskname    dc.b    "diskfont.library",0
  186. GFXName        dc.b    "graphics.library",0
  187.     ds.l    0
  188.  
  189.  
  190. GFXBase        dc.l    0
  191. Diskbase    dc.l    0
  192. Fadr        dc.l    0
  193. Fadr1        dc.l    0
  194. Fenster        dc.l    0
  195.