[comp.sources.amiga] v90i037: Xoper 2.2 - display and control system activity, Part02/04

Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) (02/01/90)

Submitted-by: Werner Guenther <G35%DHDURZ1.BITNET@CUNYVM.CUNY.EDU>
Posting-number: Volume 90, Issue 037
Archive-name: kernel/xoper-2.2/part02

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 2 (of 4)."
# Contents:  Xoper.a.ac
# Wrapped by tadguy@xanth on Wed Jan 31 22:31:32 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Xoper.a.ac' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Xoper.a.ac'\"
else
echo shar: Extracting \"'Xoper.a.ac'\" \(40356 characters\)
sed "s/^X//" >'Xoper.a.ac' <<'END_OF_FILE'
X	    beq     got_enter
X
X	    cmp.b   #27,0(a2,d3)        ;esc
X	    bne     799$
X	    tst.w   getanswer
X	    bne     100$
X	    clr.b   insmode
X	    clr.w   ibufferlen
X	    move.w  #200,curpos
X	    bsr     UpdateIArea
X	    clr.w   curpos
X	    tst.w   bottomin
X	    bne.s   700$
X	    move.w  #1,bottomin
X	    bsr     getcurpos
X	    cmp.b   #5,timerstate
X	    bne.s   765$
X	    bsr     starttimer
X765$	    bra     100$
X
X700$	    move.b  timerio+8,timerstate
X	    bsr     stoptimer
X	    move.w  edline(PC),d0
X	    move.l  firstline(PC),d4
X	    cmp.w   d4,d0
X	    bmi.s   701$
X	    move.w  d4,d5
X	    add.w   rows(PC),d5
X	    cmp.w   d5,d0
X	    bmi.s   702$
X701$	    move.w  rows(PC),d0
X	    lsr.w   #1,d0
X	    add.w   d4,d0
X702$	    move.l  numlines(PC),d3
X	    subq    #1,d3
X	    cmp.w   d3,d0
X	    ble.s   703$
X	    move.w  d3,d0
X703$	    move.w  d0,edline
X	    sub.w   d4,d0
X	    lsl.w   #3,d0
X	    add.w   #18,d0
X	    move.w  d0,cposy
X	    clr.w   bottomin
X	    tst.w   loffset
X	    beq.s   704$
X	    clr.w   loffset
X	    bsr     blastout
X704$	    bra     100$
X
X799$	    cmp.b   #8,0(a2,d3)         ;Backspace
X	    bne.s   114$
X	    tst.w   d4
X	    beq     102$
X	    bsr     delchar
X	    subq    #1,d4
X	    move.w  d4,curpos
X	    bra     102$
X
X114$	    cmp.b   #127,0(a2,d3)       ;del
X	    bne.s   150$
X178$	    cmp.w   ibufferlen(PC),d4
X	    bge     102$
X	    addq    #1,d4
X	    bsr     delchar
X	    bra     102$
X
X150$	    cmp.b   #9,0(a2,d3)         ;tab
X	    bne     197$
X	    move.w  cmdcompflag(PC),d0
X	    bpl.s   151$
X	    move.w  curpos(PC),cmdcomplen
X151$	    move.w  #1,cmdcompflag
X155$	    move.w  cmdcompnr(PC),d0
X	    bsr     getcmdptr
X	    move.l  d0,a0
X	    move.w  cmdcomplen(PC),d4
X	    lea     inputbuffer,a1
X	    subq    #1,d4
X152$	    tst.b   0(a0)
X	    beq.s   153$
X	    cmp.b   (a0)+,(a1)+
X	    bne.s   153$
X	    dbf     d4,152$
X	    move.l  d0,a1
X	    lea     inputbuffer,a0
X154$	    move.b  (a1)+,(a0)+
X	    dbeq.s  d4,154$
X	    neg.w   d4
X	    subq    #1,d4
X	    move.w  d4,curpos
X	    move.w  d4,ibufferlen
X	    add.w   #1,cmdcompnr
X	    cmp.w   #cmdnum,cmdcompnr
X	    beq.s   156$
X	    bra     100$
X153$	    move.w  cmdcompnr(PC),d0
X	    addq    #1,d0
X	    move.w  d0,cmdcompnr
X	    cmp.w   #cmdnum,d0
X	    bmi.s   155$
X156$	    clr.w   cmdcompnr
X	    bra     100$
X
X197$	    cmp.b   #3,0(a2,d3)         ;ctrl c
X	    bne.s   104$
X	    move.b  #1,cbreak
X
X104$	    tst.b   addlines
X	    bne     processnxtmsg
X	    cmp.b   #$18,0(a2,d3)       ;ctrl x
X	    bne.s   300$
X	    clr.w   ibufferlen
X	    clr.w   curpos
X	    bra     100$
X
X300$	    cmp.b   #$19,0(a2,d3)       ;ctrl y
X	    bne.s   106$
X	    move.w  curpos,ibufferlen
X	    bra     100$
X
X106$	    move.w  #$100,d5		;NumPad
X	    and.w   qualifier(PC),d5
X	    beq     105$
X	    move.l  firstline(PC),d5
X
X	    cmp.b   #'7',0(a2,d3)       ;'Home'
X	    bne.s   200$
X	    moveq   #0,d5
X199$	    move.l  d5,firstline
X	    bsr     blastout
X	    tst.w   bottomin
X	    bne.s   196$
X	    move.w  edline(PC),d0
X	    move.l  firstline(PC),d1
X	    cmp.w   d1,d0
X	    bmi.s   190$
X	    add.w   rows(PC),d1
X	    cmp.w   d1,d0
X	    bmi.s   192$
X190$	    clr.w   curpos
X	    clr.w   ibufferlen
X	    move.w  rows(PC),d0
X	    lsr.w   #1,d0
X	    ext.l   d0
X	    add.l   firstline(PC),d0
X	    cmp.l   numlines(PC),d0
X	    bmi.s   191$
X	    move.l  numlines(PC),d0
X	    subq    #1,d0
X191$	    move.w  d0,edline
X192$	    bsr     getcurpos
X	    bsr     UpdateIArea
X196$	    bra     100$
X
X200$	    cmp.b   #'8',0(a2,d3)       ;'up arrow'
X	    bne.s   201$
X	    tst     d5
X	    beq     100$
X	    subq    #1,d5
X	    bra.s   199$
X
X201$	    cmp.b   #'9',0(a2,d3)       ;'PgUp'
X	    bne.s   203$
X	    sub.w   rows(PC),d5
X	    bpl.s   199$
X	    moveq   #0,d5
X	    bra.s   199$
X
X203$	    cmp.b   #'1',0(a2,d3)       ;'End'
X	    bne.s   205$
X222$	    move.l  numlines(PC),d5
X	    sub.w   rows(PC),d5
X	    bpl     199$
X	    moveq   #0,d5
X204$	    bra     199$
X
X205$	    cmp.b   #'2',0(a2,d3)       ;'down arrow'
X	    bne.s   206$
X	    move.l  d5,d2
X	    add.w   rows(PC),d2
X	    cmp.l   numlines(PC),d2
X	    bge     100$
X	    addq    #1,d5
X	    bra     199$
X
X206$	    cmp.b   #'3',0(a2,d3)       ;'PgDn'
X	    bne.s   500$
X	    add.w   rows(PC),d5
X	    move.l  d5,d2
X	    add.w   rows(PC),d2
X	    cmp.l   numlines(PC),d2
X	    bge.s   222$
X	    bra     199$
X
X500$	    cmp.b   #'4',0(a2,d3)       ;left arrow
X	    bne.s   501$
X	    tst.w   bottomin
X	    beq     102$
X	    move.w  loffset(PC),d2
X	    sub.w   colms(PC),d2
X	    bpl.s   502$
X	    moveq   #0,d2
X502$	    move.w  d2,loffset
X	    bsr     blastout
X	    bra     100$
X
X501$	    cmp.b   #'6',0(a2,d3)       ;right arrow
X	    bne.s   170$
X	    tst.w   bottomin
X	    beq     102$
X	    move.w  loffset(PC),d2
X	    add.w   colms(PC),d2
X	    bra.s   502$
X
X170$	    cmp.b   #'0',0(a2,d3)       ;Ins
X	    bne.s   177$
X	    eor.b   #1,insmode
X	    bra.s   102$
X
X177$	    cmp.b   #'.',0(a2,d3)       ;Del
X	    beq     178$
X
X105$	    tst.w   bottomin
X	    bne.s   777$
X	    tst.w   curpos
X	    bne.s   777$
X	    movem.l d0-d1,-(a7)
X	    move.w  edline(PC),d0
X	    bsr     findline
X	    movem.l (a7)+,d0-d1
X	    tst.l   8(a5)
X	    beq     intuiend
X777$	    move.w  curpos(PC),d5
X	    ext.l   d5
X	    moveq   #79,d2
X	    cmp.w   d2,d5
X	    bge     102$
X	    tst.b   insmode
X	    beq.s   172$
X	    cmp.w   ibufferlen(PC),d5
X	    bmi.s   171$
X	    bra.s   173$
X172$	    sub     d5,d2
X	    lea     80(a1),a4
X	    lea     79(a1),a3
X103$	    move.b  -(a3),-(a4)
X	    dbf     d2,103$
X173$	    addq.w  #1,ibufferlen
X171$	    move.b  0(a2,d3),0(a1,d5)
X	    addq.w  #1,curpos
X102$	    subq    #1,d0
X	    addq    #1,d3
X	    bra     101$
X
X100$	    bsr     UpdateIArea
X	    bra     intuiend
X
Xgot_enter   bsr     puthist
Xgot_fkey    bsr     stoptimer
X	    clr.b   insmode
X	    lea     dummy,a1
X	    lea     inputbuffer,a2
X	    move.w  ibufferlen(PC),d2
X	    beq.s   2$
X	    tst.w   bottomin
X	    bne.s   5$
X	    movem.l a1-a2,-(a7)
X	    move.w  edline(PC),d0
X	    bsr     findline
X	    move.l  8(a5),d0
X	    bsr     gthex
X	    lea     hexarea(PC),a0
X	    lea     0(a2,d2),a1
X	    move.b  #' ',(a1)+
X	    move.b  #'$',(a1)+
X	    moveq   #8,d0
X	    CALL    CopyMem,_SysBase(PC)
X	    move.w  ibufferlen(PC),d2
X	    add.w   #10,d2
X	    move.w  d2,ibufferlen
X	    movem.l (a7)+,a1-a2
X5$	    subq    #1,d2
X1$	    move.b  (a2)+,(a1)+
X	    dbf     d2,1$
X2$	    move.b  #10,(a1)+
X	    move.w  ibufferlen(PC),d0
X	    ext.l   d0
X	    addq    #1,d0
X	    move.l  d0,-(a7)
X	    clr.w   ibufferlen
X	    tst.w   bottomin
X	    bne.s   4$
X	    move.w  #100,curpos
X	    bsr     UpdateIArea
X4$	    clr.w   curpos
X	    move.w  #1,bottomin
X	    bsr     getcurpos
X	    bsr     UpdateIArea
X	    move.l  (a7)+,d0
X	    move.w  d0,repeatlen
X	    clr.w   repeat
X	    clr.b   printed
X	    tst.w   getanswer
X	    beq.s   6$
X	    rts
X6$	    bsr     cli
X	    tst.b   printed
X	    bne.s   3$
X	    bsr     starttimer
X3$	    bra     intuiend
X
Xnotarawkey
X
Xintuiend    bsr.s   replyintui
X	    bra     nextimsg
Xprocessnxtmsg
X	    tst.b   addlines
X	    beq.s   1$
X	    rts
X1$	    bra     processmsgs
X
Xreplyintui  move.l  intuimsg(PC),d0
X	    beq.s   1$
X	    move.l  d0,a1
X	    CALL    ReplyMsg,_SysBase
X1$	    clr.l   intuimsg
X	    rts
X
X;put an input line into the history buffer
Xputhist     move.w  ibufferlen(PC),d5
X	    move.l  d5,d0
X	    cmp.w   minnumchars(PC),d0
X	    bcs     1$
X
X	    move.l  gothline(PC),d1
X	    beq.s   5$
X	    move.l  d1,a2
X	    cmp.w   8(a2),d5
X	    bne.s   5$
X	    lea     10(a2),a2
X	    lea     inputbuffer,a1
X	    subq    #1,d0
X6$	    cmp.b   (a2)+,(a1)+
X	    bne.s   5$
X	    dbf     d0,6$
X	    move.l  gothline,curhist
X	    bra.s   1$
X
X5$	    move.w  d5,d0
X	    ext.l   d0
X	    add     #10,d0
X	    move.l  #$10000,d1		 ;MEMF_CLEAR
X	    CALL    AllocMem,_SysBase(PC)
X	    tst.l   d0
X	    beq.s   1$
X	    move.l  d0,a0
X	    move.w  d5,8(a0)
X	    lea     10(a0),a2
X	    subq    #1,d5
X	    lea     inputbuffer,a1
X2$	    move.b  (a1)+,(a2)+
X	    dbf     d5,2$
X	    move.w  hnum(PC),d5
X	    cmp.w   maxhlines(PC),d5
X	    bmi.s   3$
X	    bsr     remhistline
X	    bra.s   4$
X3$	    addq    #1,d5
X	    move.w  d5,hnum
X4$	    move.l  d0,a1
X	    move.l  d0,curhist
X	    lea     history(PC),a0
X	    CALL    AddTail,_SysBase(PC)
X1$	    clr.l   gothline
X	    rts
X
X;copy a history line into the input buffer
Xcopyhistory lea     inputbuffer,a0
X	    move.w  8(a1),d3
X	    ext.l   d3
X	    move.w  d3,curpos
X	    move.w  d3,ibufferlen
X	    subq    #1,d3
X	    lea     10(a1),a1
X1$	    move.b  (a1)+,(a0)+
X	    dbf     d3,1$
X	    rts
X;remove one line from the history buffer
X;pointer to the line in A1, returns pointer to the next line in d1
Xremhistline move.l  d0,-(a7)
X	    lea     history(PC),a0
X	    move.l  0(a0),a5
X	    tst.l   0(a5)
X	    beq.s   1$
X	    CALL    RemHead,_SysBase(PC)
X	    move.l  a5,a1
X	    move.w  8(a1),d0
X	    add     #10,d0
X	    ext.l   d0
X	    CALL    FreeMem,_SysBase(PC)
X1$	    move.l  (a7)+,d0
X	    rts
X
X;kill all history lines
Xkillhistory bsr     remhistline
X	    move.l  history(PC),a0
X	    tst.l   0(a0)
X	    bne.s   killhistory
X2$	    clr.w   hnum
X	    clr.l   curhist
X	    rts
X;delete one char from the input line
Xdelchar     lea     inputbuffer,a3
X	    lea     0(a3,d4.w),a3
X	    lea     -1(a3),a4
X	    move    d4,d5
X1$	    cmp.w   #78,d5
X	    bge.s   2$
X	    move.b  (a3)+,(a4)+
X	    addq    #1,d5
X	    bra.s   1$
X2$	    subq.w  #1,ibufferlen
X	    rts
X
Xtestsig     move.l  tasksigs(PC),d0
X	    btst    d1,d0
X	    rts
X
X;get the position of the input area
Xiareapos    move.l  wnptr(PC),a0
X	    move.w  10(a0),d0
X	    subq    #4,d0
X	    move.w  d0,ipos
X	    rts
X
X;Update the current position of the input line
Xgetcurpos   tst.w   bottomin
X	    beq.s   1$
X	    move.w  ipos,cposy
X	    rts
X1$	    move.w  edline(PC),d3
X	    sub.l   firstline(PC),d3
X	    lsl     #3,d3
X	    add.w   #18,d3
X	    move.w  d3,cposy
X	    rts
X;refresh the input area
XUpdateIArea move.l  rastport(PC),a1
X	    move.l  #1,d0
X	    CALL    SetDrMd,gfxbase(PC)
X	    moveq   #6,d0
X	    move.w  cposy(PC),d1
X	    move.l  rastport(PC),a1
X	    CALL    Move,gfxbase(PC)
X	    lea     inputbuffer,a0
X	    move.w  ibufferlen(PC),d0
X	    ext.l   d0
X	    move.w  colms(PC),d1
X	    sub.w   bottomin(PC),d1
X	    cmp.w   d1,d0
X	    bmi.s   1$
X	    move.w  d1,d0
X1$	    move.w  d0,d2
X	    move.l  rastport(PC),a1
X	    CALL    Text,gfxbase(PC)
X
X	    tst.w   bottomin
X	    bne.s   3$
X	    move.w  edline(PC),d0
X	    bsr     findline
X	    move.w  12(a5),d3
X	    sub.w   d2,d3
X	    bmi.s   3$
X	    move.w  colms(PC),d1
X	    sub.w   d2,d1
X	    bmi.s   2$
X	    cmp.w   d1,d3
X	    ble.s   4$
X	    move.w  d1,d3
X4$	    move.w  d3,d0
X	    lea     14(a5,d2.w),a0
X	    move.l  rastport(PC),a1
X	    CALL    Text,gfxbase(PC)
X	    add.w   ibufferlen(PC),d3
X	    move.w  d3,d2
X
X3$	    move.w  colms(PC),d0
X	    sub.w   bottomin(PC),d0
X	    move.l  blanks(PC),a0
X	    ext.l   d0
X	    sub.w   d2,d0
X	    bmi.s   2$
X	    lea     0(a0,d2.w),a0
X	    move.l  rastport(PC),a1
X	    CALL    Text,gfxbase(PC)
X2$	    bsr     putcursor
X	    rts
X
Xclrcursor   moveq   #1,d7
X	    bra.s   ptc1
Xputcursor   moveq   #6,d7
Xptc1	    move.w  curpos(PC),d0
X	    move.w  colms(PC),d1
X	    subq    #1,d1
X	    sub.w   bottomin(PC),d1
X	    cmp.w   d0,d1
X	    bmi.s   1$
X	    move.l  rastport(PC),a1
X	    move.l  d7,d0
X	    CALL    SetDrMd,gfxbase(PC)
X	    move.w  cposy(PC),d1
X	    move.w  curpos(PC),d0
X	    lsl.w   #3,d0
X	    addq    #6,d0
X	    move.l  rastport(PC),a1
X	    CALL    Move,gfxbase(PC)
X	    lea     oneblank(PC),a0
X	    moveq   #1,d0
X	    move.l  rastport(PC),a1
X	    CALL    Text,gfxbase(PC)
X1$	    rts
X;rebuild the window from scratch
Xsetupscreen move.l  rastport(PC),a1
X	    moveq   #0,d0
X	    CALL    SetRast,gfxbase(PC)
X	    move.l  wnptr,a0
X	    CALL    RefreshWindowFrame,intuibase(PC)
X	    bsr     getwindowsize
X	    tst.w   bottomin
X	    bne.s   1$
X	    move.w  edline(PC),d0
X	    move.l  firstline(PC),d1
X	    move.w  rows(PC),d2
X	    move.w  d2,d4
X	    move.w  numlines(PC),d3
X	    add.w   d1,d2
X	    cmp.w   d2,d0
X	    bmi.s   2$
X	    lsr.w   #1,d4
X	    sub.w   d4,d0
X	    ext.l   d0
X	    move.l  d0,firstline
X2$	    bsr     tstfirstlin
X1$	    bsr     getcurpos
X	    bsr     putiline
X	    bsr     blastout
X	    bsr     UpdateIArea
X	    move.w  rows,currenty
X	    rts
X
Xputiline    move.l  rastport(PC),a1
X	    moveq   #1,d0
X	    CALL    SetAPen,gfxbase(PC)
X	    move.l  rastport(PC),a1
X	    moveq   #1,d0
X	    CALL    SetDrMd,gfxbase(PC)
X	    move.l  wnptr(PC),a5
X	    move.w  10(a5),d1
X	    sub.w   #12,d1
X	    moveq   #0,d0
X	    move.l  rastport(PC),a1
X	    CALL    Move,gfxbase(PC)
X	    move.w  8(a5),d0
X	    move.w  d1,-(a7)
X	    move.l  rastport(PC),a1
X	    CALL    Draw,gfxbase(PC)
X	    move.w  (a7)+,d1
X	    tst.b   ownscreen
X	    bne.s   1$
X	    move.w  8(a5),d0
X	    addq    #1,d1
X	    move.l  rastport(PC),a1
X	    CALL    Move,gfxbase(PC)
X	    sub.w   #16,d0
X	    move.w  d1,-(a7)
X	    move.l  rastport(PC),a1
X	    CALL    Draw,gfxbase(PC)
X	    move.w  (a7)+,d1
X	    move.w  8(a5),d0
X	    addq    #1,d1
X	    move.l  rastport(PC),a1
X	    CALL    Move,gfxbase(PC)
X	    sub.w   #16,d0
X	    move.l  rastport(PC),a1
X	    CALL    Draw,gfxbase(PC)
X1$	    rts
X
Xgetwindowsize
X	    bsr     freeblank
X	    move.l  wnptr(PC),a0
X	    move.w  10(a0),d0
X	    sub.w   #26,d0
X	    lsr.w   #3,d0
X	    move.w  d0,rows
X	    move.w  8(a0),d0
X	    sub.w   #12,d0
X	    lsr.w   #3,d0
X	    move.w  d0,colms
X	    ext.l   d0
X	    moveq   #0,d1
X	    move.l  d0,d6
X	    CALL    AllocMem,_SysBase(PC)
X	    move.l  d0,blanks
X	    move.l  d0,a0
X	    subq    #1,d6
X1$	    move.b  #' ',(a0)+
X	    dbf     d6,1$
X	    bsr     iareapos
X	    rts
X
Xreadline    move.b  #'n',inputbuffer
X	    tst.b   fromfile
X	    bne.s   1$
X	    move.l  #31000,firstline
X	    bsr     blastout
X	    move.w  #1,getanswer
X	    bsr     replyintui
X5$	    bsr     processmsgs
X	    move.w  d0,d5
X	    bsr     replyintui
X	    subq    #1,d5
X	    beq.s   5$
X	    ori.b   #$20,inputbuffer
X	    clr.w   getanswer
X	    bsr     RestoreOutput
X1$	    rts
X
XResumeOutput
X	    move.l  outchain(PC),d0
X	    move.l  d0,a1
X	    beq.s   2$
X	    move.l  numlines,oldnumlines
X	    move.l  firstline,oldfirstline
X4$	    tst.l   0(a1)
X	    beq.s   3$
X	    move.l  0(a1),a1
X	    bra.s   4$
X3$	    move.l  a1,lastprinted
X2$	    move.l  a1,oldpageend
X	    rts
X
XRestoreOutput
X	    move.l  oldpageend(PC),d3
X	    beq.s   1$
X	    move.l  oldnumlines(PC),numlines
X	    move.l  oldfirstline(PC),firstline
X	    move.l  oldlastprinted(PC),lastprinted
X	    move.l  d3,a1
X	    move.l  0(a1),a1
X	    bsr     killlines
X	    move.l  d3,a1
X	    clr.l   0(a1)
X	    bsr     blastout
X1$	    rts
X
Xaddline     movem.l d0-d6/a0-a3,-(a7)
X	    move.l  rastport(PC),a1
X	    moveq   #1,d0
X	    CALL    SetAPen,gfxbase(PC)
X	    move.l  rastport(PC),a1
X	    moveq   #1,d0
X	    CALL    SetDrMd,gfxbase(PC)
X	    move.w  currenty(PC),d6
X	    cmp.w   rows(PC),d6
X	    bmi.s   1$
X	    bsr     cls
X1$	    move.l  lastprinted(PC),a0
X	    move.w  colms(PC),d5
X	    move.w  12(a0),d3
X	    lea     14(a0),a0
X	    move.w  currenty(PC),d6
X	    move    d6,d7
X	    lsl     #3,d6
X	    add.w   #18,d6
X	    moveq   #0,d4
X	    bsr     blastline
X	    addq.w  #1,currenty
X	    move.l  #31000,firstline
X	    movem.l (a7)+,d0-d6/a0-a3
X	    rts
X
Xcls	    movem.l d0-d6/a0-a3,-(a7)
X	    move.l  rastport(PC),a1
X	    moveq   #1,d0
X	    CALL    SetAPen,gfxbase(PC)
X	    move.l  rastport(PC),a1
X	    moveq   #1,d0
X	    move.l  rastport(PC),a1
X	    CALL    SetDrMd,gfxbase(PC)
X	    move.w  colms(PC),d5
X	    clr.w   d2
X1$	    move.w  d2,d6
X	    move    d5,d7
X	    lsl     #3,d6
X	    add.w   #18,d6
X	    moveq   #0,d3
X	    move.l  blanks(PC),a0
X	    bsr     blastline
X	    addq    #1,d2
X	    cmp.w   rows(PC),d2
X	    bmi.s   1$
X	    clr.w   currenty
X	    movem.l (a7)+,d0-d6/a0-a3
X	    rts
X
Xcreatescreen moveq  #1,d1
X	    moveq   #80,d0
X	    lea     buffer,a0
X	    sub.l   a1,a1
X	    CALL    GetScreenData,intuibase(PC)
X	    move.w  buffer+76,nsviewmode
X	    move.l  buffer+12,nssize
X	    lea     newscreen(PC),a0
X	    CALL    OpenScreen,intuibase(PC)
X	    move.l  d0,screenptr
X	    move.l  d0,nwscreen
X	    move.w  #$f,nwtype
X	    beq.s   setupwindow
X	    tst.l   wnptr
X	    beq.s   1$
X	    move.l  wnptr(PC),a0
X	    move.l  4(a0),window_l
X	    move.l  8(a0),window_w
X	    CALL    CloseWindow,intuibase(PC)
X	    clr.l   intuimsg
X	    clr.l   wnptr
X1$	    clr.l   newwindow
X	    move.l  buffer+12,newwindow+4
X	    move.l  wnscrflags(PC),nwflgs
X	    move.l  wnscrflags+4(PC),nwflgs+4
X	    move.b  #1,ownscreen
X
Xsetupwindow tst.b   ownscreen
X	    bne.s   3$
X	    move.l  window_l(PC),newwindow
X	    move.l  window_w(PC),newwindow+4
X	    move.w  #1,nwtype
X	    move.l  wnnormflgs(PC),nwflgs
X	    move.l  wnnormflgs+4(PC),nwflgs+4
X3$	    lea     newwindow(PC),a0
X	    CALL    OpenWindow,intuibase(PC)
X	    move.l  d0,wnptr
X	    beq     exit
X	    move.l  d0,a0
X	    move.l  50(a0),rastport    ;wn->RPort
X	    move.l  86(a0),a1          ;wn->UserPort
X	    move.b  15(a1),d1          ;MsgPort->SigBit
X	    ext.w   d1
X	    move.w  d1,intuisig
X
X	    tst.b   iconifyon
X	    beq.s   1$
X	    tst.b   ownscreen
X	    bne.s   1$
X	    lea     iconifgad,a1
X	    moveq   #0,d0
X	    CALL    AddGadget,intuibase(PC)
X	    move.l  wnptr(PC),a0
X	    CALL    RefreshWindowFrame,intuibase(PC)
X
X1$	    lea     tattr(PC),a0
X	    CALL    OpenFont,gfxbase(PC)
X	    tst.l   d0
X	    beq.s   2$
X	    move.l  d0,a0
X	    move.l  rastport(PC),a1
X	    CALL    SetFont,gfxbase(PC)
X2$	    bsr     getwindowsize
X	    bsr     getcurpos
X
X	    bsr     putiline
X	    bsr     UpdateIArea
X	    bsr     starttimer
X	    bsr     showwhat
X	    rts
X
Xusescreen   tst.b   fromfile
X	    bne.s   1$
X	    tst.b   ownscreen
X	    bne.s   1$
X	    bsr     createscreen
X1$	    move.b  #1,ownscreen
X	    rts
X
Xusewindow   tst.b   fromfile
X	    beq.s   1$
X	    clr.b   ownscreen
X	    rts
X1$	    tst.b   ownscreen
X	    beq.s   2$
X	    move.l  wnptr(PC),d0
X	    beq.s   3$
X	    move.l  d0,a0
X	    CALL    CloseWindow,intuibase(PC)
X	    clr.l   wnptr
X	    clr.l   intuimsg
X3$	    move.l  screenptr(PC),d0
X	    beq.s   4$
X	    move.l  d0,a0
X	    CALL    CloseScreen,intuibase(PC)
X	    clr.l   screenptr
X	    clr.b   ownscreen
X4$	    bra     setupwindow
X2$	    rts
X
Xdchange     lea     dchead(PC),a0
X	    bsr     puthead
X	    lea     tdd(PC),a1
X	    move.l  _SysBase(PC),a0
X	    lea     350(a0),a0
X	    CALL    FindName,_SysBase(PC)
X	    tst.l   d0
X	    beq     R_T_S
X	    move.l  d0,a2
X	    lea     32(a2),a2
X	    moveq   #0,d5
X2$	    lea     4(a2),a2
X	    move.l  0(a2),d0
X	    beq     3$
X	    move.l  d0,a0
X	    lea     $18e(a0),a0
X	    CALL    Disable,_SysBase(PC)
X5$	    tst.l   0(a0)
X	    beq.s   6$
X	    move.l  0(a0),a0
X	    bra.s   5$
X6$	    lea     -4(a0),a5
X	    lea     buffer+100,a3
X9$	    move.l  0(a5),a5
X	    tst.l   0(a5)
X	    beq.s   11$
X	    move.l  a5,(a3)+
X	    bne.s   9$
X11$	    clr.l   (a3)+
X	    CALL    Enable,_SysBase(PC)
X	    lea     buffer+100,a3
X7$	    move.l  (a3)+,d0
X	    beq.s   3$
X	    move.l  d0,a5
X	    cmp.w   #20,28(a5)
X	    bne.s   7$
X	    move.l  40(a5),a4
X	    move.l  a4,d0
X	    move.l  d0,node
X	    bsr     hexan
X	    move.l  a4,d0
X	    beq.s   10$
X	    move.l  14(a4),d0
X	    bsr     hexan
X	    move.l  18(a4),d0
X	    bsr     hexan
X10$	    move.l  d5,d3
X	    or.b    #48,d3
X	    move.b  d3,tddrives+2
X	    move.l  #tddrives,d0
X	    bsr     putstr
X	    move.l  14(a5),d0
X	    beq.s   8$
X	    move.l  d0,a0
X	    move.l  16(a0),d0
X8$	    bsr     getaskname2
X	    bsr     newline
X	    bra.s   7$
X3$	    addq    #1,d5
X	    cmp.w   #4,d5
X	    bmi     2$
XR_T_S	    rts
X
X
XDATASTART   EQU     *
X
Xdosbase     dc.l    0
Xintuibase   dc.l    0
Xgfxbase     dc.l    0
Xcondev	    dc.l    0
Xparmtxt     dc.l    0
Xinfile	    dc.l    0
Xptr	    dc.l    0
Xoldidl	    dc.l    0
Xolddisp     dc.l    0
Xmysignal    dc.l    0
Xauxsig	    dc.l    0
Xtrapsignal  dc.l    0
Xiostatus    dc.l    -1
Xdevstatus   dc.l    -1
Xtasksigs    dc.l    0
Xcancelbit   dc.l    0
Xcancelbnum  dc.l    0
X_SysBase    dc.l    0
XInputMsg    dc.l    0
XInRequest   dc.l    0
Xstartmess   dc.l    0
Xsavedat     dc.l    0
Xwnptr	    dc.l    0
Xaliaslist   dc.l    0
Xscreenptr   dc.l    0
Xintuimsg    dc.l    0
Xmytask	    dc.l    0
Xwbmsg	    dc.l    0
Xpointer     dc.l    0
Xreplyport   dc.l    0
Xtimerport   dc.l    0
Xfinfoptr    dc.l    0
Xmyseg	    dc.l    0
Xdispatches  dc.l    0
Xmaxdisp     dc.l    0
Xdeltadisp   dc.l    0
Xwbaddr	    dc.l    0
Xnode	    dc.l    0
Xremembr     dc.l    0
Xremembr2    dc.l    0
Xcaptask     dc.l    0
Xsnoopport   dc.l    0
Xtasksnum    dc.l    0
Xblanks	    dc.l    0
Xhidestart   dc.l    0
Xdispnum     dc.l    0
Xiocount     dc.l    0
Xdummyinput  dc.l    0
Xrastport    dc.l    0
Xoutchain    dc.l    0
Xfirstline   dc.l    0
Xoldfirstline dc.l   0
Xtimeoutm    dc.l    0
Xnumlines    dc.l    0
Xoldnumlines dc.l    0
Xgothline    dc.l    0
Xlastprinted dc.l    0
Xoldlastprinted dc.l 0
Xoldpageend  dc.l    0
Xmaxlines    dc.l    500
Xrealstack   dc.l    0
X
X
Xwnnormflgs  dc.l    $646
X	    dc.l    $1104f
X
Xwnscrflags  dc.l    $600
X	    dc.l    $31948
X
Xfkeys	    dc.l    *+4
X	    dc.l    0
X	    dc.l    fkeys
X
Xhistory     dc.l    *+4
X	    dc.l    0
X	    dc.l    history
Xcurhist     dc.l    0
X
Xsecs	    dc.l    0
Xmics	    dc.l    0
Xtime10	    dc.l    0
X
Xtattr	    dc.l    fontname
X	    dc.w    8
X	    dc.w    0
X
Xstplist     dc.l    lh_tail
Xlh_tail     dc.l    0
X	    dc.l    stplist
X	    dc.b    1
X	    dc.b    0
X
XInInterrupt dc.l    0		;ln_Succ
X	    dc.l    0		;ln_Pred
X	    dc.b    2		;ln_Type
X	    dc.b    60		;ln_Pri
X	    dc.l    xopsleep	;ln_Name
X	    dc.l    0		;is_Data
X	    dc.l    Keyhandler	;is_Code()
X
XIOCounter   dc.l    0		;ln_Succ
X	    dc.l    0		;ln_Pred
X	    dc.b    2		;ln_Type
X	    dc.b    -1		;ln_Pri
X	    dc.l    IOcntname	;ln_Name
X	    dc.l    0		;is_Data
X	    dc.l    countio	;is_Code()
X
Xnewwindow   dc.w    0,0
X	    dc.w    500,100
X	    dc.b    0,1
Xnwflgs	    dc.l    $646
X	    dc.l    $1104f
Xwn_firstgad dc.l    0
X	    dc.l    0
X	    dc.l    windowname
Xnwscreen    dc.l    0
X	    dc.l    0
X	    dc.w    110,50
X	    dc.w    808,-1
Xnwtype	    dc.w    1
X
Xnewscreen   dc.w    0,0
Xnssize	    dc.w    0,0
X	    dc.w    1
X	    dc.b    0
X	    dc.b    1
Xnsviewmode  dc.w    0
X	    dc.w    $1f
X	    dc.l    0
X	    dc.l    windowname
X	    dc.l    0,0
X
Xexcpterror  dc.l    0
Xexcpttask   dc.l    0
Xexcptaddr   dc.l    0
Xexcptpc     dc.l    0
X
Xwindow_l    dc.w    0
Xwindow_t    dc.w    0
Xwindow_w    dc.w    550
Xwindow_h    dc.w    200
X
Xcolms	    dc.w    0
Xtimersig    dc.w    0
Xintuisig    dc.w    0
Xibufferlen  dc.w    0
Xcposy	    dc.w    0
Xcurpos	    dc.w    0
Xbottomin    dc.w    1
Xipos	    dc.w    0
Xhnum	    dc.w    0
Xminnumchars dc.w    2
Xmaxhlines   dc.w    10
Xqualifier   dc.w    0
Xrows	    dc.w    0
Xmaxllength  dc.w    0
Xloffset     dc.w    0
Xrepeat	    dc.w    0
Xrepeatlen   dc.w    0
Xedline	    dc.w    999
Xcmdptr	    dc.w    0
Xgetanswer   dc.w    0
Xcurrenty    dc.w    0
Xcmdcompnr   dc.w    0
Xcmdcomplen  dc.w    -1
Xcmdcompflag dc.w    0
X
Xbinarea     dc.b    '          ',0
X	    EVEN
Xminus	    dc.b    '  '
Xdecimal     dc.b    '    ',0
Xentries     dc.b    0
Xtimeout     dc.b    5
Xprocnum     dc.b    0
Xtimerstate  dc.b    0
Xrunning     dc.b    0
Xnewpri	    dc.b    0
Xtasktyp     dc.b    0
Xbackground  dc.b    0
Xbool	    dc.b    0
Xprinted     dc.b    0
Xcbreak	    dc.b    0
Xusageflag   dc.b    0
Xmnflag	    dc.b    1
Xtports	    dc.b    1
Xheadon	    dc.b    1
Xhideon	    dc.b    1
Xsorton	    dc.b    1
Xwanttraps   dc.b    0
Xaddlines    dc.b    0
Xeof	    dc.b    0
Xfromfile    dc.b    0
Xiconifyon   dc.b    1
Xgotguru     dc.b    0
Xownscreen   dc.b    0
Xinsmode     dc.b    0
Xcmdcli	    dc.b    1
Xparams	    dc.b    'tfdlrempisc'
Xparmnum     equ     *-params
X	    dc.b    0
Xt2header    dc.b    '   ID     STATE   SIGALLOC SIGWAIT  SIGRECVD    PC    TASKNAME',0
Xtheader     dc.b    '   ID     TYPE      STATE    PRI  CPUSE NUM TASKNAME',0
Xlheader     dc.b    '  NODE   CNT VER REV  FLAGS    ',0
Xlibnam	    dc.b    'LIBRARY NAME',0
Xdevnam	    dc.b    'DEVICE NAME',0
Xresnam	    dc.b    'RESOURCE NAME',0
Xmheader     dc.b    ' LOWER   UPPER      FREE ATTR  PRI HUNK NAME',0
Xcr	    dc.b    10,0
Xiheader     dc.b    '  NODE     DATA     CODE    PRI T S   TYPE     INTERRUPT NAME',0
Xinheader    dc.b    '  NODE     DATA     CODE    PRI NAME',0
Xrheader     dc.b    '  ADDR    PRI  FLAGS     VER   TYPE    RESIDENT NAME',0
Xpheader     dc.b    '  NODE   PORTNAME        FLAGS SIGBT NUM SIGTASK',0
Xhunkheader  dc.b    ' NUM  BCPL    DATA     LENGTH',0
Xddheader    dc.b    'DEVICE    HDS SECTORS  TRACKS BUFFERS STATE    HANDLER',0
Xcdheader    dc.b    'PROCESSNAME    CURRENT DIRECTORY',0
Xofheader    dc.b    '  LOCK   ACCESS  SIZE   PATH/FILENAME',0
Xscrheader   dc.b    'NUM   ADDR   TITLE',0
Xwnheader    dc.b    ' ADDR    OWNERTASK   TITLE',0
Xfohead	    dc.b    '  NODE   CNT  Y   X  TYPE  LO  HI NAME',0
Xkickhead    dc.b    'START    END      LENGTH',0
Xsnoophead   dc.b    'ACTION REQUIREMENTS        LENGTH   FROM    TO       CALLER',0
Xstackhead   dc.b    'SPLower     SIZE    USED TASKNAME',0
Xclicomhead  dc.b    '   ID    STATE    TYPE  MODE NUM PROCESSNAME      COMMAND',0
Xtiohead     dc.b    'IORQUEST  UNIT   SECS  REQUESTING TASK',0
Xdchead	    dc.b    '  NODE     DATA     CODE   UNIT TASK',0
Xalhead	    dc.b    'ALIAS NAME        COMMAND',0
Xtdd	    dc.b    'trackdisk.device',0
Xtddrives    dc.b    'DF : ',0
Xtimerunits  dc.b    'MicroHz ',0
X	    dc.b    'VBlank  ',0
Xaccess	    dc.b    ' Read  ',0
X	    dc.b    ' Write ',0
Xromfnt	    dc.b    'Rom  ',0
Xdiskfnt     dc.b    'Disk ',0
Xwbname	    dc.b    'Workbench',0
Xstatus	    dc.b    'Added    ',0
X	    dc.b    'Running  ',0
X	    dc.b    'Ready    ',0
X	    dc.b    'Waiting  ',0
X	    dc.b    'Exeption ',0
X	    dc.b    'Removed  ',0
X	    dc.b    'Frozen   ',0
X	    dc.b    'Frozen   ',0
Xtype	    dc.b    'Unknown   ',0
Xtasktype    dc.b    'Task      ',0
X	    dc.b    'Interrupt ',0
X	    dc.b    'Device    ',0
X	    dc.b    'Msgport   ',0
X	    dc.b    'Message   ',0
X	    dc.b    'Freemsg   ',0
X	    dc.b    'Replymsg  ',0
X	    dc.b    'Resource  ',0
X	    dc.b    'Library   ',0
X	    dc.b    'Memory    ',0
Xsoftinttype dc.b    'Softint   ',0
X	    dc.b    'Font      ',0
Xproctype    dc.b    'Process   ',0
X	    dc.b    'Semaphore ',0
Xmp_flags    dc.b    'Signal  ',0
X	    dc.b    'Softint ',0
X	    dc.b    'Ignore  ',0
Xwindowname  dc.b    'Xoper V2.2 (c) 1989 Werner G',$fc,'nther',0
Xnewname     dc.b    'Xoper',0
Xmemportname dc.b    'MemSnoop',0
Xxopcon	    dc.b    'XopPackets',0
Xxopsleep    dc.b    'Xop-A-A-x',0
XIOcntname   dc.b    'Xop-I/O-counter',0
X
Xcmdnum	    set      0
Xcommds	    ADDCMD  'time'
X	    ADDCMD  'taskpri'
X	    ADDCMD  'info'
X	    ADDCMD  'pri'
X	    ADDCMD  'flush'
X	    ADDCMD  'freeze'
X	    ADDCMD  'warm'
X	    ADDCMD  'signal'
X	    ADDCMD  'break'
X	    ADDCMD  'alert'
X	    ADDCMD  'lastalert'
X	    ADDCMD  'hold'
X	    ADDCMD  'exit'
X	    ADDCMD  'clear'
X	    ADDCMD  'cancel'
X	    ADDCMD  'taskports'
X	    ADDCMD  'hunks'
X	    ADDCMD  'devices'
X	    ADDCMD  'openlib'
X	    ADDCMD  'closelib'
X	    ADDCMD  'currentdir'
X	    ADDCMD  'cd'
X	    ADDCMD  'mypri'
X	    ADDCMD  'files'
X	    ADDCMD  'locks'
X	    ADDCMD  'unlock'
X	    ADDCMD  'screens'
X	    ADDCMD  'windows'
X	    ADDCMD  'closescreen'
X	    ADDCMD  'closewindow'
X	    ADDCMD  'fonts'
X	    ADDCMD  'windowfonts'
X	    ADDCMD  'lockdrive'
X	    ADDCMD  'freedrive'
X	    ADDCMD  'capture'
X	    ADDCMD  'clrcold'
X	    ADDCMD  'clrcool'
X	    ADDCMD  'clrwarm'
X	    ADDCMD  'snoop'
X	    ADDCMD  'usage'
X	    ADDCMD  'inputhandler'
X	    ADDCMD  'header'
X	    ADDCMD  'sort'
X	    ADDCMD  'hide'
X	    ADDCMD  'hidden'
X	    ADDCMD  'window'
X	    ADDCMD  'kill'
X	    ADDCMD  'iconifyoff'
X	    ADDCMD  'historylines'
X	    ADDCMD  'minimumchars'
X	    ADDCMD  'showhistory'
X	    ADDCMD  'repeat'
X	    ADDCMD  'remresident'
X	    ADDCMD  'saveoutput'
X	    ADDCMD  'killhistory'
X	    ADDCMD  'backdropicon'
X	    ADDCMD  'setfont'
X	    ADDCMD  'trapguru'
X	    ADDCMD  'outputlines'
X	    ADDCMD  'usescreen'
X	    ADDCMD  'usewindow'
X	    ADDCMD  'timerio'
X	    ADDCMD  'diskchange'
X	    ADDCMD  'alias'
X	    ADDCMD  'remnode'
X	    ADDCMD  'setfkey'
X	    ADDCMD  'clicmd'
Xhexarea     dc.b    '         ',0
Xhextab	    dc.b    '0123456789abcdef'
Xinfoh2	    dc.b    'Dispat/Sec:',0
Xinfoh1	    dc.b    'CPU:',0
Xinfoh3	    dc.b    'CPU activity: ',0
Xinfoh6	    dc.b    'Total:',0
Xinfoh4	    dc.b    '% ',0
Xinfoh7	    dc.b    'I/O Ints/Sec: ',0
Xcpu0	    dc.b    '68000',0
Xcpu1	    dc.b    '68010',0
Xcpu2	    dc.b    '68020',0
Xcpu3	    dc.b    '/68881',0
Xdevload     dc.b    'loaded   ',0
Xdevnload    dc.b    'unloaded ',0
Xinten	    dc.b    'E ',0
Xintdis	    dc.b    'D ',0
Xintserv     dc.b    'S ',0
Xinthand     dc.b    'H ',0
Xnotfile     dc.b    '--- ------- ------- ------- ',0
Xlongnix     dc.b    '-'
Xsmallnix    dc.b    '----'
Xnix	    dc.b    '--- ',0
Xnoinfo	    dc.b    'No Info on'
Xoneblank    dc.b    ' ',0
Xequal	    dc.b    '=  ',0
Xopenbrak    dc.b    '[ ',0
Xclosebrak   dc.b    ' ]',0
Xnamerr	    dc.b    'Unable to find ',0
Xfonterr     dc.b    "Can't open ",0
Xadrerr	    dc.b    'Address Error!',0
Xaliaserr    dc.b    'Single character alias names using "',0
Xaliaserr2   dc.b    '"',10,'are not allowed.',0
Xnoworkbench dc.b    "Workbench isn't active !",0
Xopenerr     dc.b    'Could not open file ',0
Xnoderr	    dc.b    "Can't find this Node. Continue anyway ? (Y/N)",0
Xlisterr     dc.b    'Unable to find ListHeader. Sort aborted.',0
Xwiwerr	    dc.b    'Script file only',0
Xgurutxt     dc.b    'Guru Meditation #',0
Xclrtxt	    dc.b    'Memory Hunks cleared.',0
Xcanerr0     dc.b    'Process is not a CLI-task',10
X	    dc.b    'Has it been started from Workbench ? (Y/N)',10,0
Xcanerr1     dc.b    'Process was created by CreateProc()',10
X	    dc.b    'Shall I UnLoad() ? (Y/N)',10,0
Xunloaderr   dc.b    "Arrrgh.. can't find segments, aborting",0
Xnoprocs     dc.b    'Not a Process.',0
Xnotload     dc.b    'No program loaded.',0
Xcliprocs    dc.b    'Cli-Process',0
Xprocloaded  dc.b    'Loaded as a command: ',0
Xsegloaded   dc.b    'Created by CreateProc()',0
Xcoldtxt     dc.b    'Cold Capture: ',0
Xcooltxt     dc.b    'Cool Capture: ',0
Xwarmtxt     dc.b    'Warm Capture: ',0
Xkicktxt     dc.b    'KickMem     : ',0
Xunset	    dc.b    'unset',0
Xintnames    dc.b    'Serial Out ',0
X	    dc.b    'Disk Block ',0
X	    dc.b    'SoftInt    ',0
X	    dc.b    'Ports      ',0
X	    dc.b    'Coper      ',0
X	    dc.b    'Vert.Blank ',0
X	    dc.b    'Blitter    ',0
X	    dc.b    'Audio Ch.0 ',0
X	    dc.b    'Audio Ch.1 ',0
X	    dc.b    'Audio Ch.2 ',0
X	    dc.b    'Audio Ch.3 ',0
X	    dc.b    'Serial In  ',0
X	    dc.b    'Disk Sync  ',0
X	    dc.b    'External   ',0
X	    dc.b    'SoftInt    ',0
X	    dc.b    'NMI        ',0
Xinttyp	    dc.b    0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1
Xfontname    dc.b    'topaz.font',0
Xdevicenam   dc.b    'input.device',0
Xtimernam    dc.b    'timer.device',0
Xmemlarg     dc.b    'LARGEST ',0
Xmemclr	    dc.b    'CLEAR ',0
Xmemfast     dc.b    'FAST ',0
Xmemchip     dc.b    'CHIP ',0
Xmempubl     dc.b    'PUBLIC ',0
Xfailed	    dc.b    'Failed !',0
Xallok	    dc.b    'ALLOC: ',0
Xfree	    dc.b    'FREE: ',0
Xbackg	    dc.b    'Bckg ',0
Xforeg	    dc.b    'Frgr ',0
Xscript	    dc.b    'Batch ',0
Xinteract    dc.b    'Intct ',0
Xstartupname dc.b    'S:Xoper.Startup',0
Xnameerr     dc.b    'Name or address is missing.',10
Xsynerr	    dc.b    'Syntax Error, type "?" for help',10,0
Xwberr	    dc.b    "Can't examine Workbench locks",0
Xdnotf	    dc.b    'Directory not found',0
Xnotdir	    dc.b    'Not a directory',0
Xnomount     dc.b    ' not mounted.',0
Xdishelp     dc.b    10,'Names are case sensitive and followed by a ":"',0
Xunlerr	    dc.b    'Lock not found',0
Xunl1	    dc.b    'Lock is on ',0
Xunltxt	    dc.b    'Old lock was: ',0
Xunltxt2     dc.b    'Unlock ? (Y/N)',10,0
Xscnofound   dc.b    'Screen not found.',0
Xwinnofound  dc.b    'Window not found.',0
Xstperr	    dc.b    'Task must be "READY" or "WAITING"',10,0
Xwaerr	    dc.b    'Task must be "FROZEN"',10,0
Xwhatsthis   dc.b    '???.?',0
Xtoomuch     dc.b    '??? ',0
Xtimenotset  dc.b    ' disabled.',0
Xwhattime    dc.b    'Refresh time in secs:',0
Xstoped	    dc.b    '<Break>',0
Xonscr	    dc.b    'On Screen: ',0
Xwhatnow     dc.b    'Kill, ignore (K/I)?',0
Xnoguru	    dc.b    'None found.',0
Xsoftfail    dc.b    'Software failure!',10,'Task: ',0
Xaddrserr    dc.b    'Bad aligned address was: ',0
Xprocount    dc.b    'PC: ',0
Xdiskfont    dc.b    'diskfont.library',0
Xusetxt	    dc.b    'USAGE: Xoper [T] [F] [L] [D] [R] [E] [M] [P] [I] [S] [C]',10
X	    dc.b    'OR     Xoper -b',10
X	    dc.b    'DISPLAY:',10
X	    dc.b    '[T]asks    [F]=taskflags [L]ibraries [D]evices    [R]esources',10
X	    dc.b    'r[E]sident [M]emory      [P]orts     [I]nterrupts [S]tack',10
X	    dc.b    '[C]litasks [Q]uit',10,10
X	    dc.b    'OTHER SYSTEM LISTS:',10
X	    dc.b    'Windows    Screens      Fonts       WindowFonts  CurrentDir',10
X	    dc.b    'Files      Locks        Devices     InputHandler Capture',10
X	    dc.b    'TimerIO    DiskChange',10,10
X	    dc.b    'COMMANDS:',10
X	    dc.b    'Time         <secs>',10
X	    dc.b    'Taskpri      <priority>  [processnum] <taskname>',10
X	    dc.b    'Mypri        <priority>',10
X	    dc.b    'Signal       <mask(hex)> [processnum] <taskname>',10
X	    dc.b    'Break        [processnum] <taskname>',10
X	    dc.b    'Freeze|Warm  [processnum] <taskname>',10
X	    dc.b    'Kill         [processnum] <taskname>',10
X	    dc.b    'Snoop        [processnum] <taskname>',10
X	    dc.b    'Hide         <taskname>',10
X	    dc.b    'Pri          <priority> <nodename>',10
X	    dc.b    'Info         <name>',10
X	    dc.b    'RemResident  <resident module name>',10
X	    dc.b    'Clear        <longword(hex)>',10
X	    dc.b    'Hunks        [processnum] <procname>',10
X	    dc.b    'CD           <directory> [processnum] <procname>',10
X	    dc.b    'UnLock       <lock>',10
X	    dc.b    'OpenLib    | Closelib <libraryname>',10
X	    dc.b    'CloseWindow| Closescreen <title>',10
X	    dc.b    'SetFont      [size] <fontname> <windowtitle>',10
X	    dc.b    'LockDrive  | Freedrive   <drivename:>',10
X	    dc.b    'Window       <leftedge topedge width height> (scriptfile only) ',10
X	    dc.b    'OutputLines  <maximum # of lines>',10
X	    dc.b    'HistoryLines <maximum # of lines>',10
X	    dc.b    'MinimumChars <minimum # of characters>',10
X	    dc.b    'SaveOutput   <filename>',10
X	    dc.b    'Repeat       <Command line>',10
X	    dc.b    'SetFKey      <number> <string>',10
X	    dc.b    'Alias        [<aliasname> <commandname>]',10,10
X	    dc.b    'COMMANDS WITHOUT PARAMETERS:',10
X	    dc.b    'Flush      LastAlert    ClrCool     ClrCold      ClrWarm',10
X	    dc.b    'TrapGuru',10,10
X	    dc.b    'OPTIONS:',10
X	    dc.b    'Sort       TaskPorts    Hidden      Usage        Header',10
X	    dc.b    'IconifyOff BackDropIcon ShowHistory KillHistory  UseScreen',10
X	    dc.b    'UseWindow  CLICmd',10
X	    dc.b    'Hold       Exit'
Xnull	    dc.b    0
X
X    IFD DEBUG
Xdosname     dc.b    'dos.library',0
Xintuiname   dc.b    'intuition.library',0
Xgfxname     dc.b    'graphics.library',0
Xconname     dc.b    'console.device',0
X	    EVEN
X    ENDC
X
X	    BSS     blabla
Xbuffer	    ds.b    2200
Xout	    ds.b    100
Xdummy	    ds.b    80
Xin	    ds.b    80
Xcputime     ds.b    1000
Xievent	    ds.b    32
Xoutevent    ds.b    20
Xinputbuffer ds.b    88
Xrepeatbuffer ds.b   81
X
Xmypacket    BSS     standardpacket
X
XLN_SUCC     ds.l    1
XLN_PRED     ds.l    1
XLN_TYPE     ds.b    1
XLN_PRI	    ds.b    1
XLN_NAME     ds.l    1
XMP_FLAGS    ds.b    1
XMP_SIGBIT   ds.b    1
XMP_SIGTASK  ds.l    1
XMN_SIZE     ds.w    1
XLH_HEAD     ds.l    1
XLH_TAIL     ds.l    1
XLH_TAILPRED ds.l    1
XLH_TYPE     ds.b    1
XLH_pad	    ds.b    1
Xdp_Link     ds.l    1
Xdp_Port     ds.l    1
Xdp_Type     ds.l    1
Xdp_Res1     ds.l    1
Xdp_Res2     ds.l    1
Xdp_Arg1     ds.l    1
Xdp_Arg2     ds.l    1
Xdp_Arg3     ds.l    1
Xdp_Arg4     ds.l    1
Xdp_Arg5     ds.l    1
Xdp_Arg6     ds.l    1
Xdp_Arg7     ds.l    1
X
Xtimerio     ds.b    40
X
X	    CODE ICONIFY,CHIP
X
Xiconify     lea     icnwindow,a0
X	    CALL    OpenWindow,intuibase
X	    move.l  d0,iconwindow
X
Xwaitforcall move.l  iconwindow,a0
X	    move.l  $56(a0),a0              ;wn->UserPort
X
X	    moveq   #0,d1
X	    move    d1,d0
X	    move.b  15(a0),d1               ;UserPort->SigBit
X	    bset    d1,d0
X	    move.l  d0,d6
X	    or.l    mysignal,d0
X	    or.l    trapsignal,d0
X	    CALL    Wait,_SysBase
X	    and.l   d0,d6
X	    bne.s   fromwindow
X	    move.l  mysignal,d1
X	    and.l   d0,d1
X	    bne     icondone
X	    and.l   trapsignal,d0
X	    beq.s   waitforcall
X	    move.b  #1,gotguru
X	    bra.s   icondone
X
Xfromwindow  move.l  iconwindow,a0
X	    move.l  $56(a0),a0              ;wn->UserPort
X	    CALL    GetMsg,_SysBase
X	    tst.l   d0
X	    beq.s   waitforcall
X	    move.l  d0,a1
X	    CALL    ReplyMsg,_SysBase
X
X	    move.l  iconwindow(PC),a0
X	    move.l  4(a0),d5
X	    cmp.l   icnwindow(PC),d5
X	    bne.s   1$
X	    lea     nsecs(PC),a0
X	    lea     nmics(PC),a1
X	    CALL    CurrentTime,intuibase
X	    movem.l osecs,d0-d3
X	    CALL    DoubleClick,intuibase
X	    tst.l   d0
X	    bne.s   icondone
X	    move.l  nsecs(PC),osecs
X	    move.l  nmics(PC),omics
X1$	    move.l  d5,icnwindow
X	    bra     waitforcall
X
Xicondone    move.l  iconwindow,a0
X	    move.l  4(a0),icnwindow         ;LeftEdge+TopEdge
X	    CALL    CloseWindow,intuibase
X	    rts
X
Xosecs	    dc.l    0
Xomics	    dc.l    0
Xnsecs	    dc.l    0
Xnmics	    dc.l    0
X
Xiconwindow  dc.l    0
Xicnwindow   dc.w    40,170,72,28
X	    dc.b    0,1
X	    dc.l    $20,$800
X	    dc.l    gadget,0,0,0,0
X	    dc.w    72,28,72,28
X	    dc.w    1
X
Xgadget	    dc.l    0
X	    dc.w    0,0,72,28,4,2,$20
X	    dc.l    image
X	    dc.l    0,0,0,0
X	    dc.w    0
X	    dc.l    0
X
Ximage	    dc.w    0,0,72,28,2
X	    dc.l    imagedata
X	    dc.b    3,0
X	    dc.l    0
X
Ximagedata   dc.w    $000F,$FFFF,$FFFF,$FFF8,$0000,$001F,$FFFF,$FFFF
X	    dc.w    $FFFC,$0000,$001F,$0000,$0000,$007C,$0000,$001F
X	    dc.w    $7FFF,$FFFF,$FF7C,$0000,$001F,$4A46,$0244,$557C
X	    dc.w    $0000,$001F,$5108,$D411,$817C,$0000,$001F,$7FFF
X	    dc.w    $FFFF,$FF7C,$0000,$001F,$0000,$0000,$007C,$0000
X	    dc.w    $001F,$30C0,$0000,$007C,$0000,$001F,$1980,$0000
X	    dc.w    $007C,$0000,$001F,$0F0F,$1F0F,$1F7C,$0000,$001F
X	    dc.w    $0619,$9999,$997C,$0000,$001F,$0F19,$999F,$987C
X	    dc.w    $0000,$001F,$1999,$9F18,$187C,$0000,$001F,$30CF
X	    dc.w    $180F,$187C,$0000,$001F,$0000,$1800,$007C,$0000
X	    dc.w    $001F,$0000,$0000,$007C,$0000,$001F,$FFFF,$FFFF
X	    dc.w    $FFFC,$0000,$000F,$FFFF,$FFFF,$FF18,$0000,$0000
X	    dc.w    $0000,$0000,$0000,$0000,$3FFF,$FFFF,$FFFF,$FFFF
X	    dc.w    $FC00,$FDFF,$FFFF,$FFFF,$FFFF,$FF00,$EBFF,$FFFF
X	    dc.w    $FFFF,$FFFF,$FF00,$F7FF,$FFFF,$FFFF,$F800,$0700
X	    dc.w    $FFFF,$FFFF,$FFFF,$FFFF,$FF00,$FFFF,$FFFF,$FFFF
X	    dc.w    $FFFF,$FF00,$FFFF,$FFFF,$FFFF,$FFFF,$FF00,$3FFF
X	    dc.w    $FFFF,$FFFF,$FFFF,$FC00,$0000,$0000,$0000,$0000
X	    dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$FFFF
X	    dc.w    $FFFF,$FF80,$0000,$0000,$FFFF,$FFFF,$FF80,$0000
X	    dc.w    $0000,$FFFF,$FFFF,$FF80,$0000,$0000,$FFFF,$FFFF
X	    dc.w    $FF80,$0000,$0000,$FFFF,$FFFF,$FF80,$0000,$0000
X	    dc.w    $FFFF,$FFFF,$FF80,$0000,$0000,$8000,$0000,$0080
X	    dc.w    $0000,$0000,$8000,$0000,$0080,$0000,$0000,$8000
X	    dc.w    $0000,$0080,$0000,$0000,$8000,$0000,$0080,$0000
X	    dc.w    $0000,$8000,$0000,$0080,$0000,$0000,$8000,$0000
X	    dc.w    $0080,$0000,$0000,$8000,$0000,$0080,$0000,$0000
X	    dc.w    $8000,$0000,$0080,$0000,$0000,$FFFF,$FFFF,$FF80
X	    dc.w    $0000,$0000,$0000,$0000,$00E0,$0000,$0000,$0000
X	    dc.w    $0000,$00E0,$0000,$0000,$1FFF,$FFFF,$F800,$0000
X	    dc.w    $0000,$0080,$0040,$0000,$0000,$0200,$0080,$0040
X	    dc.w    $0000,$0000,$1400,$0080,$0040,$003F,$0000,$0800
X	    dc.w    $0080,$0040,$07FF,$F800,$0000,$0080,$0040,$003F
X	    dc.w    $0000,$0000,$0080,$0040,$0000,$3800,$FFFF,$FFFF
X	    dc.w    $FFFF,$FFFF,$FE00,$0000,$0080,$0040,$0000,$0000
X
Xiconifgad   dc.l    0
X	    dc.w    -83,0
X	    dc.w    31,10
X	    dc.w    $14
X	    dc.w    $41
X	    dc.w    1
X	    dc.l    iconifimg
X	    dc.l    0
X	    dc.l    0
X	    dc.l    0
X	    dc.l    0
X	    dc.w    0
X	    dc.l    0
X
Xiconifimg   dc.w    0,0
X	    dc.w    31,10
X	    dc.w    2
X	    dc.l    iconifdata
X	    dc.b    $0003,$0000
X	    dc.l    0
X
Xiconifdata  dc.w    $7FFF,$FFFC,$601F,$FFFC,$6000,$000C,$607F,$FFCC
X	    dc.w    $6060,$00CC,$6067,$FCCC,$7E60,$00CC,$7E7F,$FFCC
X	    dc.w    $7E00,$000C,$7FFF,$FFFC,$0000,$0000,$1FE0,$0000
X	    dc.w    $1FFF,$FFF0,$1F80,$0030,$1F9F,$FF30,$1F98,$0330
X	    dc.w    $019F,$FF30,$0180,$0030,$01FF,$FFF0,$0000,$0000
X
X
X	    END
X
END_OF_FILE
if test 40356 -ne `wc -c <'Xoper.a.ac'`; then
    echo shar: \"'Xoper.a.ac'\" unpacked with wrong size!
fi
# end of 'Xoper.a.ac'
fi
echo shar: End of archive 2 \(of 4\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 3 4 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 4 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Submissions to comp.sources.amiga and comp.binaries.amiga should be sent to:
	amiga@cs.odu.edu	
or	amiga@xanth.cs.odu.edu	( obsolescent mailers may need this address )
or	...!uunet!xanth!amiga	( very obsolescent mailers need this address )

Comments, questions, and suggestions s should be addressed to ``amiga-request''
(only use ``amiga'' for submissions) at the above addresses.