*
*  Source machine generated by GadToolsBox V2.0b
*  which is (c) Copyright 1991-1993 Jaba Development
*
*  GUI Designed by : zerocom
*

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_Gadget00                            EQU    0
GD_Gadget10                            EQU    1
GD_Gadget20                            EQU    2

EC_CNT    EQU    3


*****************************************************************************


	JUMPPTR	wb			;jump to wb in asm-one

start:
	movem.l	d1-a6,-(a7)
	move.l	4.w,a6
	sub.l	a1,a1
	jsr	-294(a6)		;FindTask
	move.l	d0,a4
	tst.l	172(a4)			;Cli oder WB
	bne.w	cli
	lea	92(a4),a0
	jsr	-384(a6)		;WaitPort
	lea	92(a4),a0
	jsr	-372(a6)		;GetMessage
	move.l	d0,message
	jsr	wb
	move.l	4.w,a6
	jsr	-132(a6)		;Forbid
	move.l	message(pc),a1
	jsr	-378(a6)		;ReplyMessage
	movem.l	(a7)+,d1-a6
	moveq	#0,d0
	rts

message:	dc.l	0

	dc.b	'$VER: ExecuteCommand V39.0 (27-01-97)',10
	dc.b	'© by Stefan Sommerfeld of ALiENDESiGN!',0
	even

wb:
	movem.l	d1-a6,-(a7)
cli:
	move.l	4.w,a6
	lea	dosname(pc),a1
	moveq	#37,d0
	jsr	-552(a6)			;Exec_OpenLibrary
	move.l	d0,dosbase
	lea	intname(pc),a1
	moveq	#37,d0
	jsr	-552(a6)			;Exec_OpenLibrary
	move.l	d0,intbase
	lea	gadname(pc),a1
	moveq	#37,d0
	jsr	-552(a6)			;Exec_OpenLibrary
	move.l	d0,gadbase

	move.l	message(pc),a2
	cmp.w	#0,a2
	beq.s	.nowbstart
	tst.l	28(a2)				;NumArgs
	beq.s	.nowbstart
	move.l	36(a2),a3			;ArgList
	move.l	dosbase(pc),a6
	moveq	#0,d1
	jsr	-126(a6)			;CurrentDir
	move.l	d0,oldcurrentdir
	cmp.l	#2,28(a2)			;NumArgs
	blt.s	.nowbstart
	move.l	8(a3),d1
	jsr	-126(a6)			;CurrentDir
	move.l	12(a3),str			;set the default string
.nowbstart:

	bsr.w	SetupScreen
	bsr.w	OpenECWindow

	move.l	intbase(pc),a6
	move.l	ECGadgets+2*4(pc),a0		;StringGadget
	move.l	ECWnd(pc),a1
	sub.l	a2,a2
	jsr	-462(a6)			;ActivateGadget

	move.l	ECWnd(pc),a2
	move.l	86(a2),a2			;WindowPort
wait:
	move.l	4.w,a6
	move.l	a2,a0
	jsr	-384(a6)			;WaitPort
wait2:
	move.l	4.w,a6
	move.l	a2,a0
	jsr	-372(a6)			;GetMsg
	tst.l	d0
	beq.s	wait
	move.l	d0,a3
	cmp.l	#$40,20(a3)			;CLASS: Gadgetup
	beq.s	gadgetup
wait3:
	move.l	a3,a1
	jsr	-378(a6)			;ReplyMsg
	bra.s	wait2
end:
	bsr.w	CloseECWindow
	bsr.w	CloseDownScreen

	move.l	message(pc),a2
	cmp.w	#0,a2
	beq.s	.nowbstart
	tst.l	28(a2)				;NumArgs
	beq.s	.nowbstart
	move.l	dosbase(pc),a6
	move.l	oldcurrentdir(pc),d1
	jsr	-126(a6)			;CurrentDir
.nowbstart:
	move.l	4.w,a6
	move.l	gadbase(pc),a1
	jsr	-414(a6)			;CloseLibrary
	move.l	intbase(pc),a1
	jsr	-414(a6)			;CloseLibrary
	move.l	dosbase(pc),a1
	jsr	-414(a6)			;CloseLibrary
	moveq	#0,d0
	movem.l	(a7)+,d1-a6
	rts

gadgetup:
	move.l	28(a3),a0			;IAddress = Gadget
	cmp.w	#0,a0
	beq.s	wait3
	move.w	38(a0),d0			;GadgetID
	cmp.w	#GD_Gadget10,d0
	beq.s	.cancel
	cmp.w	#GD_Gadget20,d0
	beq.s	.ok
	cmp.w	#GD_Gadget00,d0
	bne.s	wait3
.ok:
	move.l	dosbase(pc),a6
	move.l	ECGadgets+2*4(pc),a0		;StringGadget
	move.l	34(a0),a0
	cmp.w	#0,a0
	beq.s	.cancel
	move.l	(a0),d4
	beq.s	.cancel
	move.l	d4,a0
	tst.b	(a0)
	beq.s	.cancel

	move.l	#nilname,d1
	move.l	#1005,d2
	jsr	-30(a6)				;Open
	move.l	d0,d3
	move.l	#conname,d1
	move.l	#1006,d2
	jsr	-30(a6)				;Open
	clr.l	-(a7)
	move.l	d0,-(a7)
	pea	$80000022			;Output
	move.l	d3,-(a7)
	pea	$80000021			;Input
	pea	1.w
	pea	$80000023			;SYS_ASync
	move.l	a7,d2
	move.l	d4,d1
	jsr	-606(a6)			;SystemTaglist
	lea	7*4(a7),a7
.cancel:
	move.l	4.w,a6
	move.l	a3,a1
	jsr	-378(a6)			;ReplyMsg
	bra.w	end


intbase:	dc.l	0
gadbase:	dc.l	0
dosbase:	dc.l	0
oldcurrentdir:	dc.l	0

intname:	dc.b	'intuition.library',0
gadname:	dc.b	'gadtools.library',0,0
dosname:	dc.b	'dos.library',0

nilname:	dc.b	'NIL:',0
conname:	dc.b	'CON:0/11//150/Scalos Output Window/AUTO/WAIT',0
	cnop	0,4

;------------------- Gadtoolsbox generated source --------------------------

Scr:
    DC.L    0
VisualInfo:
    DC.L    0
PubScreenName:
    DC.L    WBName
WBName:
    DC.B    'Workbench',0
    CNOP  0,2
ECWnd:
    DC.L    0
ECGList:
    DC.L    0
ECGadgets:
    DCB.L    3,0
BufNewGad:
    DC.W    0,0,0,0
    DC.L    0,0
    DC.W    0
    DC.L    0,0,0
TD:
    DC.L    $00000000
ECLeft:
    DC.W    20
ECTop:
    DC.W    20
ECWidth:
    DC.W    460
ECHeight:
    DC.W    51

ECGTypes:
    DC.W    1
    DC.W    1
    DC.W    12

ECNGads:
    DC.W    13,32,86,14
    DC.L    Gadget00Text,0
    DC.W    GD_Gadget00
    DC.L    $0010,0,0
    DC.W    352,32,86,14
    DC.L    Gadget10Text,0
    DC.W    GD_Gadget10
    DC.L    $0010,0,0
    DC.W    110,13,328,15
    DC.L    Gadget20Text,0
    DC.W    GD_Gadget20
    DC.L    $0021,0,0

ECGTags:
    DC.L    $00000000
    DC.L    $00000000
    DC.L    $8008002E,256
    DC.L    $8008002D
str:	DC.L	$00000000    
    DC.L    $00000000


Gadget00Text:
    DC.B    'Ok',0

Gadget10Text:
    DC.B    'Cancel',0

Gadget20Text:
    DC.B    'Command:',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    ECWindowTags

ECWindowTags:
ECL:
    DC.L    $80000064,0
ECT:
    DC.L    $80000065,0
ECW:
    DC.L    $80000066,0
ECH:
    DC.L    $80000067,0
    DC.L    $8000006A,$00000040
    DC.L    $8000006B,$00011006
ECWG:
    DC.L    $8000006C,0
    DC.L    $8000006E,ECWTitle
    DC.L    $00000000

ECWTitle:
    DC.B    'Execute a File',0
    CNOP    0,2

    XDEF    ECText0

ECText0:
    DC.B    1,0
    DC.B    $00
    DC.B    0
    DC.W    5,2
    DC.L    topaz8
    DC.L    ECIText0
    DC.L    0

ECIText0:
    DC.B    'Enter Command and its Arguments:',0

    CNOP    0,2

SetupScreen:
    movem.l d1-d3/a0-a2/a6,-(sp)
    move.l  intbase,a6
    move.l  PubScreenName,a0
    jsr     LockPubScreen(a6)
    move.l  d0,Scr
    tst.l   d0
    beq     SError
    move.l  Scr,a0
    move.l  gadbase,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

CloseDownScreen:
    movem.l d0-d1/a0-a1/a6,-(sp)
    move.l  gadbase,a6
    move.l  VisualInfo,a0
    cmpa.l  #0,a0
    beq.s   NoVis
    jsr     FreeVisualInfo(a6)
    move.l  #0,VisualInfo
NoVis:
    move.l  intbase,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

ECRender:
    movem.l d0-d5/a0-a2/a6,-(sp)
    move.l  ECWnd,a0
    move.b  54(a0),d4
    ext.w   d4
    move.b  55(a0),d5
    ext.w   d5
    move.l  intbase,a6
    move.l  ECWnd,a0
    move.l  50(a0),a0
    lea.l   ECText0,a1
    move.l  d4,d0
    move.l  d5,d1
    jsr     PrintIText(a6)
    movem.l (sp)+,d0-d5/a0-a2/a6
    rts

OpenECWindow:
    movem.l d1-d4/a0-a4/a6,-(sp)
    move.l  Scr,a0
    moveq   #0,d3
    moveq   #0,d2
    move.b  36(a0),d2
    move.l  40(a0),a1
    move.w  4(a1),d3
    addq.w  #1,d3
    add.b   35(a0),d0
    ext.w   d0
    add.w   d0,d3
    move.l  gadbase,a6
    lea.l   ECGList,a0
    jsr     CreateContext(a6)
    move.l  d0,a3
    tst.l   d0
    beq     ECCError
    movem.w d2-d3,-(sp)
    moveq   #0,d3
    lea.l   ECGTags,a4
ECGL:
    move.l  4.w,a6
    lea.l   ECNGads,a0
    move.l  d3,d0
    mulu    #30,d0
    add.l   d0,a0
    lea.l   BufNewGad,a1
    moveq   #30,d0
    jsr     CopyMem(a6)
    lea.l   BufNewGad,a0
    move.l  VisualInfo,22(a0)
    move.l  #topaz8,12(a0)
    move.w  (a0),d0
    add.w   (sp),d0
    move.w  d0,(a0)
    move.w  2(a0),d0
    add.w   2(sp),d0
    move.w  d0,2(a0)
    move.l  gadbase,a6
    lea.l   ECGTypes,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    ECCOK
    movem.w (sp)+,d2-d3
    bra     ECGError
ECCOK:
    move.l  d0,a3
    move.l  d3,d0
    asl.l   #2,d0
    lea.l   ECGadgets,a0
    add.l   d0,a0
    move.l  a3,(a0)
ECTL:
    tst.l   (a4)
    beq.s   ECDN
    addq.w  #8,a4
    bra.s   ECTL
ECDN:
    addq.w  #4,a4
    addq.w  #1,d3
    cmp.w   #EC_CNT,d3
    bmi     ECGL
    movem.w (sp)+,d2-d3
    move.l  ECGList,ECWG+4
    moveq   #0,d0
    move.w  ECLeft,d0
    move.l  d0,ECL+4
    move.w  ECTop,d0
    move.l  d0,ECT+4
    move.w  ECWidth,d0
    move.l  d0,ECW+4
    move.w  ECHeight,d0
    add.w   d3,d0
    move.l  d0,ECH+4
    move.l  intbase,a6
    suba.l  a0,a0
    lea.l   ECWindowTags,a1
    jsr     OpenWindowTagList(a6)
    move.l  d0,ECWnd
    tst.l   d0
    beq     ECWError
    move.l  gadbase,a6
    move.l  ECWnd,a0
    suba.l  a1,a1
    jsr     GT_RefreshWindow(a6)
    jsr     ECRender
    moveq   #0,d0
ECDone:
    movem.l (sp)+,d1-d4/a0-a4/a6
    rts
ECCError:
    moveq   #1,d0
    bra.s   ECDone
ECGError:
    moveq   #2,d0
    bra.s   ECDone
ECWError:
    moveq   #4,d0
    bra.s   ECDone

CloseECWindow:
    movem.l d0-d1/a0-a2/a6,-(sp)
    move.l  intbase,a6
    move.l  ECWnd,a0
    cmpa.l  #0,a0
    beq     ECNWnd
    jsr     CloseWindow(a6)
    move.l  #0,ECWnd
ECNWnd:
    move.l  gadbase,a6
    move.l  ECGList,a0
    cmpa.l  #0,a0
    beq     ECNGad
    jsr     FreeGadgets(a6)
    move.l  #0,ECGList
ECNGad:
    movem.l (sp)+,d0-d1/a0-a2/a6
    rts

