*
*  Source machine generated by GadToolsBox V2.0
*  which is (c) Copyright 1991-1993 Jaba Development
*
*  GUI Designed by : M.Meany, © MMSoftware.
*

    include 'exec/types.i'
    include 'intuition/intuition.i'
    include 'intuition/classes.i'
    include 'intuition/classusr.i'
    include 'intuition/imageclass.i'
    include 'intuition/gadgetclass.i'
    include 'libraries/gadtools.i'
    include 'graphics/displayinfo.i'
    include 'graphics/gfxbase.i'

    XREF    _GadToolsBase
    XREF    _IntuitionBase
    XREF    _GfxBase
    XREF    _SysBase

OpenScreenTagList    EQU    -612
OpenWindowTagList    EQU    -606
CloseScreen          EQU    -66
CloseWindow          EQU    -72
PrintIText           EQU    -216
LockPubScreen        EQU    -510
UnlockPubScreen      EQU    -516
SetMenuStrip         EQU    -264
ClearMenuStrip       EQU    -54
GetVisualInfoA       EQU    -126
FreeVisualInfo       EQU    -132
CreateContext        EQU    -114
CreateGadgetA        EQU    -30
GT_RefreshWindow     EQU    -84
FreeGadgets          EQU    -36
CreateMenusA         EQU    -48
LayoutMenusA         EQU    -66
FreeMenus            EQU    -54
OpenDiskFont         EQU    -30
CloseFont            EQU    -78
DrawBevelBoxA        EQU    -120
FreeClass            EQU    -714
NewObjectA           EQU    -636
DisposeObject        EQU    -642
TextLength           EQU    -54
CopyMem              EQU    -624
FindTagItem          EQU    -30
IntuiTextLength      EQU    -330
Forbid               EQU    -132
Permit               EQU    -138

GD_QuitGadg                            EQU    0
GD_LoadGadg                            EQU    1

Marks_CNT    EQU    2

    XDEF    Scr
    XDEF    VisualInfo
    XDEF    PubScreenName
    XDEF    MarksWnd
    XDEF    MarksGList
    XDEF    MarksGadgets
    XDEF    MarksLeft
    XDEF    MarksTop
    XDEF    MarksWidth
    XDEF    MarksHeight

Scr:
    DC.L    0
VisualInfo:
    DC.L    0
PubScreenName:
    DC.L    0
MarksWnd:
    DC.L    0
MarksGList:
    DC.L    0
MarksGadgets:
    DCB.L    2,0
BufNewGad:
    DC.W    0,0,0,0
    DC.L    0,0
    DC.W    0
    DC.L    0,0,0
TD:
    DC.L    TAG_DONE
MarksLeft:
    DC.W    0
MarksTop:
    DC.W    15
MarksWidth:
    DC.W    172
MarksHeight:
    DC.W    94

MarksGTypes:
    DC.W    BUTTON_KIND
    DC.W    BUTTON_KIND

MarksNGads:
    DC.W    54,64,61,16
    DC.L    QuitGadgText,0
    DC.W    GD_QuitGadg
    DC.L    PLACETEXT_IN,0,0
    DC.W    35,35,94,15
    DC.L    LoadGadgText,0
    DC.W    GD_LoadGadg
    DC.L    PLACETEXT_IN,0,0

MarksGTags:
    DC.L    TAG_DONE
    DC.L    TAG_DONE


QuitGadgText:
    DC.B    'Quit',0

LoadGadgText:
    DC.B    'Set Screen',0

    CNOP    0,2

    XDEF    topaz8

topaz8:
    DC.L    topazFName8
    DC.W    8
    DC.B    $00,$01

topazFName8:
    DC.B    'topaz.font',0
    CNOP    0,2

    XDEF    MarksWindowTags

MarksWindowTags:
MarksL:
    DC.L    WA_Left,0
MarksT:
    DC.L    WA_Top,0
MarksW:
    DC.L    WA_Width,0
MarksH:
    DC.L    WA_Height,0
    DC.L    WA_IDCMP,BUTTONIDCMP!IDCMP_CLOSEWINDOW!IDCMP_REFRESHWINDOW
    DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE!WFLG_RMBTRAP
MarksWG:
    DC.L    WA_Gadgets,0
    DC.L    WA_Title,MarksWTitle
    DC.L    WA_ScreenTitle,MarksSTitle
MarksSC:
    DC.L    WA_PubScreen,0
    DC.L    TAG_DONE

MarksWTitle:
    DC.B    'Screen Mode',0
    CNOP    0,2

MarksSTitle:
    DC.B    'Programmed and © by M.Meany, MMSoftware.',0
    CNOP    0,2

    XDEF    MarksText0

MarksText0:
    DC.B    1,0
    DC.B    RP_JAM1
    DC.B    0
    DC.W    25,5
    DC.L    topaz8
    DC.L    MarksIText0
    DC.L    MarksText1

MarksText1:
    DC.B    1,0
    DC.B    RP_JAM1
    DC.B    0
    DC.W    16,15
    DC.L    topaz8
    DC.L    MarksIText1
    DC.L    0

MarksIText0:
    DC.B    'Use asl.library',0

MarksIText1:
    DC.B    'ScreenModeRequest',0

    CNOP    0,2

    XDEF    SetupScreen

SetupScreen
    movem.l d1-d3/a0-a2/a6,-(sp)
    move.l  _IntuitionBase,a6
    move.l  PubScreenName,a0
    jsr     LockPubScreen(a6)
    move.l  d0,Scr
    tst.l   d0
    beq     SError
    move.l  Scr,a0
    move.l  _GadToolsBase,a6
    lea.l   TD,a1
    jsr     GetVisualInfoA(a6)
    move.l  d0,VisualInfo
    tst.l   d0
    beq     VError
    moveq   #0,d0
SDone:
    movem.l (sp)+,d1-d3/a0-a2/a6
    rts
SError:
    moveq   #1,d0
    bra.s   SDone
VError:
    moveq   #2,d0
    bra.s   SDone

    XDEF    CloseDownScreen

CloseDownScreen:
    movem.l d0-d1/a0-a1/a6,-(sp)
    move.l  _GadToolsBase,a6
    move.l  VisualInfo,a0
    cmpa.l  #0,a0
    beq.s   NoVis
    jsr     FreeVisualInfo(a6)
    move.l  #0,VisualInfo
NoVis:
    move.l  _IntuitionBase,a6
    suba.l  a0,a0
    move.l  Scr,a1
    cmpa.l  #0,a1
    beq.s   NoScr
    jsr     UnlockPubScreen(a6)
    move.l  #0,Scr
NoScr:
    movem.l (sp)+,d0-d1/a0-a1/a6
    rts

    XDEF    MarksRender

MarksRender:
    movem.l d0-d5/a0-a2/a6,-(sp)
    move.l  MarksWnd,a0
    move.b  wd_BorderLeft(a0),d4
    ext.w   d4
    move.b  wd_BorderTop(a0),d5
    ext.w   d5
    move.l  _IntuitionBase,a6
    move.l  MarksWnd,a0
    move.l  wd_RPort(a0),a0
    lea.l   MarksText0,a1
    move.l  d4,d0
    move.l  d5,d1
    jsr     PrintIText(a6)
    movem.l (sp)+,d0-d5/a0-a2/a6
    rts

    XDEF    OpenMarksWindow

OpenMarksWindow:
    movem.l d1-d4/a0-a4/a6,-(sp)
    move.l  Scr,a0
    moveq   #0,d3
    moveq   #0,d2
    move.b  sc_WBorLeft(a0),d2
    move.l  sc_Font(a0),a1
    move.w  ta_YSize(a1),d3
    addq.w  #1,d3
    add.b   sc_WBorTop(a0),d3
    move.l  _GadToolsBase,a6
    lea.l   MarksGList,a0
    jsr     CreateContext(a6)
    move.l  d0,a3
    tst.l   d0
    beq     MarksCError
    movem.w d2-d3,-(sp)
    moveq   #0,d3
    lea.l   MarksGTags,a4
MarksGL:
    move.l  _SysBase,a6
    lea.l   MarksNGads,a0
    move.l  d3,d0
    mulu    #gng_SIZEOF,d0
    add.l   d0,a0
    lea.l   BufNewGad,a1
    moveq   #gng_SIZEOF,d0
    jsr     CopyMem(a6)
    lea.l   BufNewGad,a0
    move.l  VisualInfo,gng_VisualInfo(a0)
    move.l  #topaz8,gng_TextAttr(a0)
    move.w  gng_LeftEdge(a0),d0
    add.w   (sp),d0
    move.w  d0,gng_LeftEdge(a0)
    move.w  gng_TopEdge(a0),d0
    add.w   2(sp),d0
    move.w  d0,gng_TopEdge(a0)
    move.l  _GadToolsBase,a6
    lea.l   MarksGTypes,a0
    moveq   #0,d0
    move.l  d3,d1
    asl.l   #1,d1
    add.l   d1,a0
    move.w  (a0),d0
    move.l  a3,a0
    lea.l   BufNewGad,a1
    move.l  a4,a2
    jsr     CreateGadgetA(a6)
    tst.l   d0
    bne.s    MarksCOK
    movem.w (sp)+,d2-d3
    bra     MarksCError
MarksCOK:
    move.l  d0,a3
    move.l  d3,d0
    asl.l   #2,d0
    lea.l   MarksGadgets,a0
    add.l   d0,a0
    move.l  a3,(a0)
MarksTL:
    tst.l   (a4)
    beq.s   MarksDN
    addq.w  #8,a4
    bra.s   MarksTL
MarksDN:
    addq.w  #4,a4
    addq.w  #1,d3
    cmp.w   #Marks_CNT,d3
    bmi     MarksGL
    movem.w (sp)+,d2-d3
    move.l  MarksGList,MarksWG+4
    move.l  Scr,MarksSC+4
    moveq   #0,d0
    move.w  MarksLeft,d0
    move.l  d0,MarksL+4
    move.w  MarksTop,d0
    move.l  d0,MarksT+4
    move.w  MarksWidth,d0
    move.l  d0,MarksW+4
    move.w  MarksHeight,d0
    add.w   d3,d0
    move.l  d0,MarksH+4
    move.l  _IntuitionBase,a6
    suba.l  a0,a0
    lea.l   MarksWindowTags,a1
    jsr     OpenWindowTagList(a6)
    move.l  d0,MarksWnd
    tst.l   d0
    beq     MarksWError
    move.l  _GadToolsBase,a6
    move.l  MarksWnd,a0
    suba.l  a1,a1
    jsr     GT_RefreshWindow(a6)
    bsr     MarksRender
    moveq   #0,d0
MarksDone:
    movem.l (sp)+,d1-d4/a0-a4/a6
    rts
MarksCError:
    moveq   #1,d0
    bra.s   MarksDone
MarksGError:
    moveq   #2,d0
    bra.s   MarksDone
MarksWError:
    moveq   #4,d0
    bra.s   MarksDone

    XDEF    CloseMarksWindow

CloseMarksWindow:
    movem.l d0-d1/a0-a2/a6,-(sp)
    move.l  _IntuitionBase,a6
    move.l  MarksWnd,a0
    cmpa.l  #0,a0
    beq     MarksNWnd
    jsr     CloseWindow(a6)
    move.l  #0,MarksWnd
MarksNWnd:
    move.l  _GadToolsBase,a6
    move.l  MarksGList,a0
    cmpa.l  #0,a0
    beq     MarksNGad
    jsr     FreeGadgets(a6)
    move.l  #0,MarksGList
MarksNGad:
    movem.l (sp)+,d0-d1/a0-a2/a6
    rts


