find_icon_pos:
 movem.l  a5/a6,-(sp)
 subq.l   #8,sp
 move.l   a0,a6

 clr.l    (a0)+               ; GRECT mit je 72 Pixel aussen
 move.l   #$00480048,(a0)

 move.w   scr_h,d0
 sub.w    g_h(a6),d0
 sub.w    #16,d0;             ; wegen Appline
 move.w   d0,g_y(a6)          ; Beginne Suche am unteren Rand
fip_yloop:
 move.w   scr_w,d0
 sub.w    g_w(a6),d0
 move.w   d0,g_x(a6)          ; Beginne Suche nach freiem Platz rechts
 
fip_xloop:
* Durchsuche Fensterliste
 lea      whdlx,a5
fip_hloop:
 move.w   (a5)+,d0
 bmi.b    fip_hloop
 beq.b    fip_ende            ; Listenende, alles OK !
 bsr      whdl_to_wnd
 beq.b    fip_ende            ; ???
 btst     #WSTAT_ICONIFIED_B,w_state+1(a0)
 beq.b    fip_hloop           ; Fenster nicht ikonifiziert
 lea      w_curr(a0),a0       ; Fensterausmasse
 move.l   g_x(a6),(sp)
 move.l   g_w(a6),g_w(sp)
 lea      (sp),a1
 jsr      grects_intersect    ; liegt da das Fenster ?
 beq.b    fip_hloop           ; nein, naechstes Fenster
* der Platz ist schon belegt
 move.w   g_w(a6),d0
 sub.w    d0,g_x(a6)          ; einen Platz weiter nach links
 add.w    g_x(a6),d0          ; rechter Rand
 cmp.w    #0,d0               ; links vom Bildschirm ?
 bge.b    fip_xloop           ; nein, weitermachen
 move.w   g_h(a6),d0
 sub.w    d0,g_y(a6)          ; einen Platz weiter nach oben
 move.w   g_y(a6),d1
 cmp.w    desk_g+g_y,d1       ; ueber Bildschirm ?
 bcc.b    fip_yloop           ; nein, weitermachen
* alle Plaetze belegt
 move.l   desk_g+g_x,g_x(a6)  ; Default: links oben
fip_ende:
 addq.l   #8,sp
 movem.l  (sp)+,a5/a6
 rts
