;***************************************************************************;
;                                                                           ;
;                                   PATH                                    ;
;                 Displays AMOS/L search patch for command                  ;
;                                                                           ;
;***************************************************************************;
;Copyright (C) 1986 by UltraSoft.  All Rights Reserved.
;
;Written by: David Pallmann
;
;Edit History:
;1.0 16-May-86 created. /DFP

       VMAJOR=1
       VMINOR=0

       SEARCH  SYS
       SEARCH  SYSSYM

       MEM=A5
       JCB=A4
       COUNT=D5

       .OFINI
       .OFDEF  FILE,D.DDB
       .OFSIZ  MEMSIZ

START:  PHDR    -1,PV$RSM,PH$REE!PH$REU
       GETIMP  MEMSIZ,MEM

CMDLIN: BYP
       LIN
       BNE     GETFIL

HELP:   TYPECR  PATH displays the search pattern AMOS uses for a command
       TYPECR  Usage: .PATH command
       CRLF
       EXIT

GETFIL: FSPEC   FILE(MEM),<   >
       INIT    FILE(MEM)

INIT:   JOBIDX  JCB
       CLR     COUNT

RESLIT: MOVW    #[RES],FILE+D.DEV(MEM)
       CLRW    FILE+D.DRV(MEM)
       MOVW    #[LIT],FILE+D.EXT(MEM)
       CALL    SEARCH

MEMLIT: MOVW    #[MEM],FILE+D.DEV(MEM)
       CALL    SEARCH

SYSLIT: MOVW    #[DSK],FILE+D.DEV(MEM)
       MOVW    #1_8.+4,FILE+D.PPN(MEM)
       CALL    SEARCH

RESCMD: MOVW    #[RES],FILE+D.DEV(MEM)
       MOVW    #[CMD],FILE+D.EXT(MEM)
       CLRW    FILE+D.PPN(MEM)
       CALL    SEARCH

MEMCMD: MOVW    #[MEM],FILE+D.DEV(MEM)
       CALL    SEARCH

CMDCMD: MOVW    #[DSK],FILE+D.DEV(MEM)
       CLRW    FILE+D.DRV(MEM)
       MOVW    #2_8.+2,FILE+D.PPN(MEM)
       CALL    SEARCH

USRLIT: CLRW    FILE+D.DEV(MEM)
       SETW    FILE+D.DRV(MEM)
       MOVW    #[LIT],FILE+D.EXT(MEM)
       CLRW    FILE+D.PPN(MEM)
       CALL    SEARCH

USRCMD: MOVW    #[CMD],FILE+D.EXT(MEM)
       CALL    SEARCH

PUBLIT: MOVW    #[LIT],FILE+D.EXT(MEM)
       MOVB    JOBUSR+1(JCB),FILE+D.PPN+1(MEM)
       CALL    SEARCH

PUBCMD: MOVW    #[CMD],FILE+D.EXT(MEM)
       CALL    SEARCH

MEMDO:  MOVW    #[MEM],FILE+D.DEV(MEM)
       CLRW    FILE+D.DRV(MEM)
       MOVW    #[DO ],FILE+D.EXT(MEM)
       CLRW    FILE+D.PPN(MEM)
       CALL    SEARCH

USRDO:  CLRW    FILE+D.DEV(MEM)
       SETW    FILE+D.DRV(MEM)
       CLRW    FILE+D.PPN(MEM)
       CALL    SEARCH

PUBDO:  MOVB    JOBUSR+1(JCB),FILE+D.PPN+1(MEM)
       CALL    SEARCH

CMDDO:  MOVW    #[DSK],FILE+D.DEV(MEM)
       CLRW    FILE+D.DRV(MEM)
       MOVW    #2_8.+2,FILE+D.PPN(MEM)
       CALL    SEARCH

TOTAL:  TST     COUNT
       BNE     EXIT
       TYPECR  %Command not found in standard locations
       CRLF

EXIT:   EXIT

SEARCH: CMMW    FILE+D.DEV(MEM),#[RES]
       BNE     10$
       SRCH    FILE+D.FIL(MEM),A0
       BNE     40$
       CMP     A0,MEMBAS
       BLT     30$
10$:    CMMW    FILE+D.DEV(MEM),#[MEM]
       BNE     20$
       SRCH    FILE+D.FIL(MEM),A0
       BNE     40$
       CMP     A0,MEMBAS
       BLT     40$
20$:    LOOKUP  FILE(MEM)
       BNE     40$
30$:    PFILE   FILE(MEM)
       CRLF
       INCW    COUNT
40$:    RTN

       END