home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaDemoCD1.iso / DEMOS / ?-NamelessIssue1.DMS / ?-NamelessIssue1.adf / COMPUTER / beispiel1.asm < prev    next >
Encoding:
Assembly Source File  |  1978-03-11  |  5.9 KB  |  232 lines

  1. ;© by SSC-Software; Coder: Ulf Zschuckelt; Date: 23.12.91
  2. ;CodeX-Assembler
  3.  
  4. ;---------------------------
  5. ; Offset
  6. ;---------------------------
  7.  
  8. openscreen:   equ -$C6            ;Intuition Funktion
  9. closescreen:  equ -$42
  10. openwindow:   equ -$CC
  11. closewindow:  equ -$48
  12. printitext:   equ -$d8
  13.  
  14. rport:        equ 50              ;PastPort eines Windows
  15.  
  16. drawellipse:  equ -180            ;Graphics Funktion
  17.  
  18. ;--------------------------
  19. ;Hauptprogramm
  20. ;--------------------------
  21.  
  22. ;***** Screen öffnen *****
  23.  
  24.  bsr  openlibs                    ;Libraries öffnen
  25.   bsr.s abbruch                   ;Fehler -> Abbruch
  26.  bsr  screenoeffnen               ;Open Screen
  27.   bsr.s abbruch                   ;Fehler -> Abbruch
  28. ;
  29. ;--------
  30. ; GRAFIK
  31. ;--------
  32. ;
  33.  
  34. ;***** Window öffnen *****
  35.  
  36.  bsr  windowoeffnen               ;OpenWindow
  37.  
  38. ;Rastport für Window
  39.  move.l  window(pc),a3            ;Window Pointer
  40.  move.l  rport(a3),a3             ;RastPort des Windows nach a3
  41.  move.l  a3,a0                    ;RastPort nach a0
  42.  
  43. ;***** Text in das Window ausgeben *****
  44.  
  45.  lea text1(pc),a1                 ;Text Struktur
  46.  moveq #0,d0                      ;Left Offset
  47.  moveq #0,d1                      ;Top Offset
  48.  move.l intuitionbase(pc),a6      ;Vector Base
  49.  jsr  printitext(a6)              ;Text über Intuition ausgeben
  50.  
  51. ;***** Grafik im Window *****
  52.  
  53. ;1.Kreis
  54.  move.l  gfxbase(pc),a6           ;Vector Base Grafics
  55.  move.w  #255,d2                  ;2*Breit = Höhe
  56.  move.w  #107,d3
  57.  
  58. kreisschleife1:
  59.  move.w #320,d0                   ;x
  60.  move.w #128,d1                   ;y
  61.  
  62.  move.l  a3,a1                    ;RastPort
  63.  jsr  drawellipse(a6)             ;Kreiszeichnen
  64.  
  65.   subq  #8,d2                     ;Durchmesser -8 (X-Richtung)
  66.  bcc   kreisschleife1             ;wenn kein Übertrag (also >0)
  67.  
  68.  move.w #255,d2                   ;2*Breite = Höhe
  69.  move.w #107,d3
  70.  
  71. kreisschleife2:
  72.  move.w #320,d0                   ;x
  73.  move.w #128,d1                   ;y
  74.  
  75.  move.l  a3,a1                    ;RastPort
  76.  jsr  drawellipse(a6)             ;Kreis zeichnen
  77.  
  78.   subq  #4,d3                     ;Durchmesser -4 (Y-Richtung)
  79.  bcc  kreisschleife2              ;wenn kein Übertrag (also >0)
  80.  
  81. ;***** Click *****
  82.  
  83.  bsr mausclick                    ;auf Mausclick warten
  84.  
  85. ;***** Window schließen *****
  86.  
  87.  bsr  windowschliessen            ;ggf. Window schließen
  88.  
  89. abbruch1:
  90.  bsr  screenschliessen            ;geöffneten Screen schließen
  91.  
  92. abbruch:
  93.  bsr  closelibs                   ;Libraries schließen
  94.  moveq #0,d0                      ;ok
  95.  rts
  96.  
  97. ;----------------------------
  98. ; ENDE HAUPTPRPOGRAMM
  99. ;----------------------------
  100.  
  101. ;***** Screen schließen *****
  102.  
  103. screenschliessen:
  104.  move.l intuitionbase(pc),a6      ;Vector Base Intuition
  105.  move.l screen(pc),d0             ;Pointer auf Screen Struktur
  106.  move.l d0,a0                     ;-> a0
  107.   beq.s keinscroffen              ;nicht geöffnet ->
  108.  jsr  closescreen(a6)             ;Screen wieder schließen
  109.  
  110. keinscroffen:
  111.  rts
  112.  
  113. ; ***** ein Screen öffnen *****
  114.  
  115. screenoeffnen:
  116.  move.l intuitionbase(pc),a6      ;Vector Base Intuition
  117.  lea  newscreen(pc),a0            ;Struktur zur Screen Definition
  118.  jsr  openscreen(a6)              ;Screen(a6)
  119.  move.l d0,screen                 ;Pointer retten
  120.  rts
  121.  
  122. ; ***** ein Window öffnen *****
  123.  
  124. windowoeffnen:
  125.  move.l screen(pc),scr            ;Pointer auf Screen Struktur
  126.  move.l intuitionbase(pc),a6      ;Vector Base I.
  127.  lea  newwindow(pc),a0            ;Struktur zur Window Definition
  128.  jsr  openwindow(a6)              ;Window öffnen
  129.  move.l d0,window                 ;Pointer retten
  130.  rts
  131.  
  132. ; ***** Versuch, Window wieder zu schließen *****
  133.  
  134. windowschliessen:
  135.  move.l intuitionbase(pc),a6      ;Vector Base
  136.  move.l  window(pc),d0            ;Window Pointer
  137.  move.l  d0,a0                    ;-> a0
  138.   beq.s  windownichtoffen         ;nicht göffnet -> nicht schließen
  139.  jsr  closewindow(a6)             ;Window schließen
  140.  
  141. windownichtoffen:
  142.  rts
  143.  
  144. ; ***** Mausclick *****
  145.  
  146. mausclick:
  147.  btst #6,$bfe001                  ;6. Bit von $bfe001 = Mausklick
  148.  bne.s mausclick                  ;wenn <> 0 dann Maus gedrückt
  149.  rts
  150.  
  151. ;-------------------------
  152. ;---- ENDE ---------------
  153. ;-------------------------
  154.  
  155. ;--------------------------
  156. ; Library Manager einbinden
  157. ;--------------------------
  158.  
  159.  include "LibMan.asm"
  160.  
  161.  
  162. ;-------------------------
  163. ; DATENBEREICH
  164. ;-------------------------
  165. newscreen:
  166.  dc.w  0,0          ;Position Screen (nicht benutzt
  167.  dc.w  640,256      ;Breite,Höhe
  168.  dc.w  2            ;Tiefe (-> Farben)
  169.  dc.b  2,3          ;Farbnummer Stift, Hintergrund
  170.  dc.w  $8000        ;Hi-Res
  171.  dc.w  15           ;Typ: Custrom Screen
  172.  dc.l  0            ;Pointer auf Textstruktur
  173.  dc.l  screentitle  ;Pointer Name des Screens
  174.  dc.l  0,0          ; Ptr auf Gadgets, Bitmap
  175.  
  176. screentitle:
  177.  dc.b  "©1991 SSC-Software/Autor: Ulf Zschuckelt",0  ;Name des Screens
  178.  even
  179.  
  180. screen: dc.l  0
  181.  
  182. newwindow:
  183.  dc.w  0,0          ;x,y Position des Windows
  184.  dc.w  640,256      ;Breite,Höhe
  185.  dc.b  0,1          ;Schrift,Hintergrund
  186.  dc.l  $200         ;IDCMP Flags: Schließ Symbol mitteilen
  187.  dc.l  $1006        ;alle System Gadgets aktiv
  188. ets
  189.  dc.l  0,0          ;Gad get,FirstMark
  190.  dc.l  windowtitle  ;Pointer auf Name des Windows (kein Name)
  191.  even
  192.  
  193. scr:
  194.  dc.l  0            ;Pointer auf Screen Struktur
  195.  dc.l  0            ;keine eigene Bitmap
  196.  dc.w  640,256      ;minimale Breite,Höhe
  197.  dc.w  640,256      ;maximale Breite,Höhe
  198.  dc.w  15           ;Screen Type: Custom Screen
  199.  even
  200.  
  201. window:
  202.  dc.l  0            ;Pointer auf WindowStructure
  203.  
  204. windowtitle:
  205.  dc.b  "Grafik",0   ;Name des Windows
  206.  even
  207.  
  208. text1:              ;Text 1.Bild
  209.  dc.b 1,3           ;Vordergrund, Hintergrund
  210.  dc.b 0,0           ;Zeichenmodus: JAM1, Pad
  211.  dc.w 10,12         ;Position x,y
  212.  dc.l 0             ;Zeichensatz:default
  213.  dc.l zeichenkette1 ;Pointer auf String
  214.  dc.l text2         ;Text weiter
  215. zeichenkette1:
  216.  dc.b "Grafik mit DrawEllipse (ohne Blitter)",0
  217.  even
  218.  
  219. text2:
  220.  dc.b 1,3
  221.  dc.b 0,0
  222.  dc.w 400,240
  223.  dc.l 0
  224.  dc.l zeichenkette2
  225.  dc.l 0             ;kein weiterer Text
  226. zeichenkette2:
  227.  dc.b "Ende mit Mausclick !!!",0
  228.  even
  229.  
  230.  end                       ;Ende des Programms
  231.  
  232.