o:
;move.l 4,a6               ;Zeiger auf Exec.library holen
;lea lib(pc),a1            ;Zeiger zum Text-Label
;jsr -408(a6)              ;Open Library  ->  intuition.library
;cmp.l #0,d0               ;Fehler ?
;beq fehler                ;Wenn ja -> Ende
;move.l d0,gfxbase
;move.l d0,a6              ;Zeiger auf intuition.lib nach a6
bsr pull
lea newscreen(pc),a0      ;Zeiger auf Newscreen Struktur nach a0
jsr -198(a6)              ;Screen oeffnen
cmp.l #0,d0               ;Fehler ?
beq fehler                ;Wenn ja -> Ende
move.l d0,screen          ;Zeiger auf Screen Structure speichern
move.l d0,screenw
st:
bra win1                       ;Ende
closes:
move.l screen,a0          ;Zeiger auf Screen Structure holen 
jsr -66(a6)               ;Screen schliessen
rts                       ;Ende
fehler:                   ;hier koennte eine Fehlerbehandlungs-
                          ;Routine stehen
rts                       ;Ende
screen:
dc.l 0                    ;hier wird der Zeiger auf den screen 
                          ;gespeichert

newscreen:                ;New Screen Structure
dc.w 0,0                  ;x,y positipon des screens.(x Posit-
                          ;ion wird ignoriert)
dc.w 320                  ;Breite
dc.w 200                  ;Hoehe
dc.w 5                    ;Anzahl Bitplanes
dc.b 0,1                  ;Farben fuer Menuebalken und Gadgets
dc.w $0000                ;Viewmode
dc.w $100f                ;Screentype
dc.l 0                    ;Zeiger auf Zeichensatz(nur wenn speziel)
dc.l 0                    ;Zeiger auf Title      (nur wenn erwuenscht)
dc.l 0                    ;Zeiger auf spez.Gadgets
dc.l 0                    ;Zeiger auf eigene Bitmap-Structur
lib:
dc.b 'intuition.library'
dc.b 0

;die openscreen routine uebergibt einen zeiger auf die screen
;struktur in D0.Diese wird beim Label Screen gespeichert.
;um mit dem screen zu arbeiten brauchen wir haupsaechlich
;den RASTPORT und den VIEWPORT.
;den rastport erhaelst du wenn du zum screenzeiger
;noch $54 dazuzaehlst.
;den viewport erhaelst du wenn du zum screenzeiger
;noch $2c dazuzaehlst.
;screenzeiger + $10 = Mauscoordinaten
;screenzeiger + $c0 = bitmapstructure (=Adresse des Screens)

;um den screen zu schliessen kannst du die close routine starten
;diese benoetigt den zeiger aufs intuition.library in a6 
;wenn du nach dem oeffnen kein anderes programm startest
;ist dieser noch in a6 entalten.
;weiter benoetigen wir noch den zeiger auf die screen struktur
;den wir beim label "screen" gespeichert haben

pull:
move.l 4,a6
lea gfxlib,a1
jsr -408(a6)
move.l d0,gfxbase
lea intlib(pc),a1            ;siehe screen
jsr -408(a6)
cmp.l #0,d0
beq fehler
move.l d0,intbase
move.l d0,a6
rts
win1:
lea newwindow(pc),a0
jsr -204(a6)
cmp.l #0,d0
beq fehler
move.l d0,window
move.l d0,a0
lea menu,a1
jsr -264(a6)                    ;Set menue Strip
getm:
move.l window,a1
move.l 50(a1),rastport		;Rastport von Window holen
move.l 86(a1),a0		;Msgport holen
move.l 4,a6
jsr -372(a6)                    ;GetMsg
cmp.l #0,d0
beq getm
move.l d0,msg
move.l d0,a0
move.l 20(a0),d0
cmp#$200,d0                ;Windowclose angeklickt?
beq close
cmp#$100,d0		   ;Menue gewaehlt ?
bne replymsg		   ;wenn nicht , Msg zurueck und wieder warten
move 24(a0),d0		   ;Menuenummer holen
cmp#$f800,d0		   ;Quit gewaehlt ?
beq close	
cmp#$f820,d0		   ;About gewaelt ?
beq about

replymsg:
move.l 4,a6
move.l msg,a1		   ;Nachricht (msg) zurueck
jsr -378(a6)		   ;Reply Msg und zurueck zur Hauptschleife
bra getm

about:
move.l gfxbase,a6
move.l rastport,a1
move.l #20,d0
move.l #20,d1
jsr -240(a6)                ;Move Rastport
move.l rastport,a1
lea abouttext,a0
move.l #33,d0
jsr -60(a6)                 ;Text(rastport,string,count)(A1,A0,d0)
move.l rastport,a1
move.l #20,d0
move.l #80,d1
jsr -240(a6)                ;Move Rastport
move.l rastport,a1
lea abouttext1,a0
move.l #33,d0
jsr -60(a6)                 ;Text(rastport,string,count)(A1,A0,d0)
move.l rastport,a1
move.l #160,d0
move.l #120,d1
move.l #70,d2
move.l #70,d3
jsr -180(a6)
move.l rastport,a1
move.l #160,d0
move.l #120,d1
move.l #60,d2
move.l #60,d3
jsr -180(a6)
move.l rastport,a1
move.l #160,d0
move.l #120,d1
move.l #50,d2
move.l #50,d3
jsr -180(a6)
move.l rastport,a1
move.l #160,d0
move.l #120,d1
move.l #40,d2
move.l #40,d3
jsr -180(a6)
move.l rastport,a1
move.l #160,d0
move.l #120,d1
move.l #30,d2
move.l #30,d3
jsr -180(a6)
move.l rastport,a1
move.l #160,d0
move.l #120,d1
move.l #20,d2
move.l #20,d3
jsr -180(a6)
move.l rastport,a1
move.l #160,d0
move.l #120,d1
move.l #75,d2
move.l #75,d3
jsr -180(a6)
move.l #160,pos1
move.l #200,pos2

circ1:
move.l #200,d7
circ2:
jsr circle
dbf d7,circ2


bra replymsg
rts

close:
move.l 4,a6
move.l msg,a1		  ;Nachricht zurueck
jsr -378(a6)              ;ReplyMsg
move.l intbase,a6
move.l window,a0
jsr -72(a6)		  ;Window schliessen
bsr closes
rts

;fehler:
;rts
rastport:
dc.l 0
msg:
dc.l 0
gfxbase:
dc.l 0
intbase:
dc.l 0
window:
dc.l 0
gfxlib:
dc.b 'graphics.library',0
intlib:
dc.b 'intuition.library'
dc.b 0
even
newwindow:
dc.w 10,10        ;start-position
dc.w 300,180     ;breite und hoehe
dc.b 0,1         ;farbe fuer menue und gadgets
dc.l $0300       ;IDCMP - Flags ($0300=Windowclose+Menuepick)
dc.l $0800       ;Aussehen des windows
dc.l 0           ;pointer zu speziellem gadget
dc.l 0           ;pointer zu user check mark (?)
dc.l 0           ;pointer zum title
screenw:
dc.l 0           ;pointer zum screen (wenn null dan A-Dos screen) 
dc.l 0           ;pointer zu superbitmap
dc.w 60,30       ;kleinste groesse
dc.w 300,180     ;groesste Groesse
dc.w $000f       ;screen type

menu:
dc.l 0
dc.w 0,0,$4a,0
dc.w 1
dc.l menuname
dc.l menuItem
dc.l 0
dc.l 0
menuname:
dc.b 'Project',0
menuItem:
dc.l Item2
dc.w 8,0,$53,9
dc.w $56
dc.l 0
dc.l ItemFill
dc.l 0
dc.b 'a',0
dc.l 0
dc.w 0
Itemfill:
dc.b 0,1
dc.b 1,0
dc.w 0
dc.w 1
dc.l 0
dc.l text
dc.l 0
text:
dc.b 'Quit',0
even
item2:
dc.l 0
dc.w 8,10,$53,9
dc.w $56
dc.l 0
dc.l it2
dc.l 0
dc.b 'e',0
dc.l 0
dc.w 0
it2:
dc.b 0,1
dc.b 1,0
dc.w 0
dc.w 1
dc.l 0
dc.l te2
dc.l 0
te2:
dc.b 'About',0

abouttext:
dc.b 'Pull-Down   © by Charly K in 1987 ',0
abouttext1:
dc.b 'made after a hard work  !!!!!!!!! ',0
circle:
move.l rastport,a1
addi.l #1,rad1
addi.l #1,rad2
addi.l #1,col
move.l pos1,d0
move.l pos2,d1
move.l rad1,d2
move.l rad2,d3
jsr -180(a6)
move.l col,$dff182
rts
rad1:
blk.l 1,0
rad2:
blk.l 1,0
col:
blk.l 1,0
pos1:
blk.l 1,0
pos2:
blk.l 1,0
