
        XDEF    _VertBServer
        XREF    _IntuitionBase
        XREF    _RetinaBase
        XREF    _mainsig
        XREF    _maintask

* Entered with:       A0 == scratch (execpt for highest pri vertb server)
*  D0 == scratch      A1 == is_Data
*  D1 == scratch      A5 == vector to interrupt code (scratch)
*                     A6 == scratch
*
    section code

_VertBServer:
        move.l _IntuitionBase,a0
        move.l $3c(a0),d0
        move.l d0,a0
        move.l $16(a0),d0
        bne    Retrn
        move.l $1A(a0),d0
        bne    Retrn
        move.w $0c(a0),d0
        cmpi.w #$280,d0
        bne    Retrn
        move.w $0e(a0),d0
        cmpi.w #$c8,d0
        bne    Retrn
        move.w $14(a0),d0
        cmpi.w #$21f,d0
        beq    Skip
Retrn:
        move.l #0,Flag
        moveq.l #0,d0
        rts

Skip:
        cmp.l  #0,Flag
        bne    EndNoFlag
        move.l _RetinaBase,a0
        move.l $42(a0),d0
        move.l d0,a6

Loop:
        move.l a6,a0
        move.l (a0),d0
        beq    EndSetFlag
        move.l d0,a6
        move.l $0a(a0),d0
        bne    Loop
        move.w $0e(a0),d0
        cmpi.w #$280,d0
        bne    Loop
        move.w $10(a0),d0
        cmpi.w #$1e0,d0
        bne    Loop
        move.w $30(a0),d0
        cmpi.w #$08,d0
        bne    Loop
        
        move.l a0,d0
        move.l d0,(a1)
        move.l _maintask,a1
        move.l _mainsig,d0
        move.l $04,a6
        jsr    -$0144(a6)

EndSetFlag:
        move.l #1,Flag

EndNoFlag:
        moveq.l #0,d0
        rts
        
Flag:   DC.L   0
        END
