*LVOs definieren
*---------------

_OpenLibrary=-552
_CloseLibrary=-414
_OpenScreen=-198
_CloseScreen=-66
_ScreenMove=-162
_OpenWindow=-204
_Move=-240
_Text=-60
_Opendevice=-444
_Open=-30
_Close=-36
_Read=-42
_Write=-48
_PolyDraw=-336
_Draw=-246
_Flood=-330
_SetFont=-66
_SetSoftStyle=-90
_SetAPen=-342
_SetBPen=-348
_OpenDiskFont=-30
_MoveSprite=-426
_Translate=-30
_RectFill=-306
_LAPixel=-318
_Delay=-198
_Input=-54
_WaitForChar=-204
_Wait=-318
_GetMsg=-372
_ReplyMsg=-378
_AddFont=-480
_SPAsin=-114
_SPSin=-36
_Forbid=-132
_Permit=-138
_ChangeSprite=-420
_FreeSprite=-414
_GetSprite=-408
_MovSprite=-426_LoadRGB4=-192
_SetRGB4=-288
_SetTaskPri=-300
_OwnBlitter=-456
_DisownBlitter=-462
_Execute=-222

*Macros definieren
*-----------------

CALLGRAF: macro %\nam       move.l  Gfxbase(pc),a6
       jsr     \nam(a6)
       endm

CALLEXEC: macro %\nam       move.l  4,a6
       jsr     \nam(a6)
       endm

CALLINT: macro %\nam       move.l  Intbase(pc),a6
       jsr     \nam(a6)
       endm

CALLDOS: macro %\nam
       move.l  Dosbase(pc),a6
       jsr     \nam(a6)
       endm

****************************************************************************
*      CDIR            (c) by Silicon Generation written by Andreas Uhl    *
*      Neuer CLI- Befehl: CD'd ins angegebene Directory und zeigt es an    *
*      (DIR und CD müssen im c-Directory sein)                             *
****************************************************************************

main   subq.l  #1,d0
       beq     nopar
       move.l  d0,d1
search cmp.b   #" ",(a0)+
       subq.l  #1,d1
       bne     ypar
       dbra    d0,search
       bra     nopar

ypar   lea     cdtext(pc),a1
       subq.l  #1,a0
       subq.l  #1,d1
loop1  move.b  (a0)+,(a1)+
       dbra    d1,loop1

nopar  clr.l   d0
       lea     dosname(pc),a1
       CALLEXEC _OpenLibrary
       tst.l   d0
       beq     fini
       move.l  d0,dosbase

       move.l  #cdstring,d1
       clr.l   d2
       clr.l   d3
       CALLDOS _Execute

       move.l  #dirstring,d1
       clr.l   d2
       clr.l   d3
       CALLDOS _Execute

       lea     cdtext(pc),a0
       moveq   #99,d0
loop2  clr.b   (a0)+
       dbra    d0,loop2

       move.l  dosbase(pc),a1
       CALLEXEC _CloseLibrary

fini   rts

dosbase:
       dc.l    0

 align.w
dosname dc.b "dos.library",0
 align.w
       dc.b    0
cdstring:
       dc.b    "cd "
cdtext ds.b    101,0

 align.w
dirstring:
       dc.b    "dir",0

 end
