;*************************** AMUS Program Label ******************************
; Filename: DEVICE.M68                                      Date: 10/16/89
; Category: SUB          Hash Code: 524-035-610-365      Version:
; Initials:              Name: JALAL RAISSI
; Company:                                         Telephone #:
; Related Files: XCALL.M68[100,133]
; Min. Op. Sys.:                               Expertise Level: BEG
; Special: Must get a copy of XCALL.M68 for this to work
; Description: Get a list of devices on current system
;
;
;*****************************************************************************
;DEVICE.M68
;
; Author..............  Jalal Raissi
; Last Date Modified..  06/23/87
; Reason for Change...  Write Up
;
; Purpose.............  Gives a list of all mounted devices on the system.
;
;       XCALL DEVICE,DEVICES(1),MOUNTED
;
; Where:
;       MAP1 DEVICES(20),S,6
;       MAP1 MOUNTED,B,1
;

       SEARCH  SYS
       SEARCH  SYSSYM
       SEARCH  TRM
       COPY    XCALL

VMAJOR=1.
VMINOR=1.
VSUB=0.
VEDIT=0.
VWHO=0.

DEFINE  DEPACK  ADDR
       IF      NB,ADDR,LEA A1,ADDR
       MOV     XC.AD1(A3),A2
       ADD     D2,A2
       UNPACK
       ENDM

DEFINE  BITW    SRC,DST
       MOVW    DST,D7
       ANDW    SRC,D7
       ENDM

       .OFINI
       .OFDEF  DV.LNK,4                ;link to next device entry
       .OFDEF  DV.FLG,2                ;flags--.
               DV$LOG=10               ; logical unit
               DV$SHR=1000             ; shareable device
               DV$MNT=10000            ; mounted
       .OFDEF  DV.DEV,2                ;device code RAD50
       .OFDEF  DV.DRV,2                ;drive number RAD50
       .OFSIZ  DV.SIZ

       OBJNAM  .SBR

       PHDR    -1,PV$RSM,PH$REE!PH$REU

       JOBIDX
       CLR     D5
       MOVW    JOBTYP(A6),D5
       ANDW    #^CJ.HEX,JOBTYP(A6)

       CMPW    XC.ARG(A3),#2
       JNE     ERROR

       CMPW    XC.TY1(A3),#XC$STR
       JNE     ERROR
       CMP     XC.SZ1(A3),#6
       JNE     ERROR

       CMPW    XC.TY2(A3),#XC$BIN
       JNE     ERROR
       CMP     XC.SZ2(A3),#1
       JNE     ERROR

       CLR     D2
       CLR     D4

       MOV     DEVTBL,A4               ;point A4 to first DEVTBL entry
LOOP:
       BITW    #DV$MNT,DV.FLG(A4)      ;is device mounted?
       BEQ     NO                      ; no
       DEPACK  DV.DEV(A4)
       CLR     D1
       MOVW    DV.DRV(A4),D1
       DCVT    0,OT$MEM
       MOVB    #58.,@A2                ; :
       INC     D4
NO:
       MOV     DV.LNK(A4),D0           ;get link to next device entry
       BEQ     ENDOFF                  ;branch on zero (end of table)
       MOV     D0,A4                   ;set new address into A4
       ADD     #6,D2
       BR      LOOP                    ;and continue processing
ENDOFF:
       ADD     D2,A2
       CLR     @A2
       MOV     XC.AD2(A3),A2
       MOVB    D4,@A2
       JOBIDX
       MOVW    D5,JOBTYP(A6)
       RTN
ERROR:
       TYPECR  ?Parameter Error in DEVICE.SBR
       RTN

       END