home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
modcomp
/
posusl.
< prev
next >
Wrap
Text File
|
1987-01-25
|
7KB
|
169 lines
PGM POSUSL
INT POSUSL
*
* SUBROUTINE POSUSL (FILNUM,MEMBER,FOUND)
*
* ****************************************************************
*
* KERMIT for the MODCOMP MAXIV operating system
*
* Compliments of:
*
* SETPOINT, Inc.
* 10245 Brecksville Rd.
* Brecksville, Ohio 44141
*
*
* KERMIT is a copyrighted protocol of Columbia Univ. The authors
* of this version hereby grant permission to copy this software
* provided that it is not used for an explicitly commercial
* purpose and that proper credit be given. SETPOINT, Inc. makes
* no warranty whatsoever regarding the accuracy of this package
* and will assume no liability resulting from it's use.
*
* ****************************************************************
*
* Abstract: Position a FORTRAN file to a SED directory entry.
*
* MODIFICATION HISTORY
*
* BY DATE REASON PROGRAMS AFFECTED
*
* ****************************************************************
*
* Author: Rick Burke Version: A.0 Date: Aug-86
*
* Calling Parameters:
*
* FILNUM - Integer FORTRAN file number to be positioned
* If FILNUM < 1600 then it is assumed to be an
* integer FORTRAN logical unit number. If it
* is >= 1600 it is assumed to be the CAN code
* of the logical device name.
*
* MEMBER - 8 character member name
*
* FOUND - Logical status for position,
* .TRUE. = Successful
* .FALSE. = Error condition
*
* ****************************************************************
*
* Messages generated by this module : None
*
* ****************************************************************
*
* Subroutines called directly : None
*
* ****************************************************************
*
* Files referenced : None
*
* ****************************************************************
*
* Local variable definitions :
*
* ATTACH - Name of an attached USL directory
* POSUFT - UFT assigned to logical file containing
* requested entry
* BUFFER - Sector-sized file buffer
*
* ****************************************************************
*
* Commons referenced : None
*
* ****************************************************************
*
* (*$END.DOCUMENT*)
*
* ****************************************************************
*
* Code starts here :
*
POSUSL TRR,1,8 SAVE LINKKAGE
ADX,8,8 GENERATE RETURN ADDRESS
ABR,8,15 *
LDS,2,0 CHECK ARGUMENT COUNT
SBR,2,14 *
SBRB,2,15 BADARG *
LDS,9,3 GET "FOUND" ADDRESS
LDS,3,1 GET FILE NUMBER
LDX,3,3 *
HNS,FILNAM CHECK FILE NUMBER OR NAME
CRI,3 #0640 CHECK FILE NUMBER / NAME
HGE,FILNAM *
REX,#3A CONVERT TO ASCII
LLD,2,8 REPOSIION
REX,#37 CONVERT TO CAN CODE
DFC RETURN ERROR - BAD NUMBER
FILNAM STM,3 POSUFT+1 PLACE IN UFT
LDS,2,2 GET MEMBER NAME ADDRESS
LFX,2,2 GET MEMBER NAME
REX,#37 CAN BYTES 1-3
DFC ERROR *
XOR,3,4 SWAP R3 & R4
XOR,4,3 *
XOR,3,4 *
LLD,2,8 POSITION BYTES 4-6
REX,#37 CAN BYTES 4-6
DFC ERROR *
TRR,2,5 GET BYTES 7-8
TRR,5,3 HOLD BYTES 4-6 IN R5
LBR,3,2 LAST BYTE IS SPACE
REX,#37 CAN BYTES 7-8
DFC ERROR *
TRR,6,3 MOVE BYTES 7-8 TO R6
LDI,2 POSUFT LOAD UFT
ZRR,3 AND RESET IT
STM,3,2 5 *
STM,3 ATTACH AND RESET ATTACHED FILE
REX,2 REWIND INPUT FILE
REX,0 READ FIRST RECORD
DFC BUFFER *
DFC 256 *
LDM,3 BUFFER LOAD FIRST WORD
ABRB,3,15 ERROR CHECK DIRECTORY PRESENT
LDM,3 BUFFER+2 GET # ENTRIES PER SECTOR
NXSCTR LDI,1 BUFFER LOAD BUFFER ADDRESS
TRR,8,3 NUMBER OF ENTRIES PER SECTOR
NXNTRY LFS,12,2 LOAD ENTRY NAME
TRR,2,12 CHECK END OF LIST
ABRB,2,15 MORE *
ERROR GMR,2,15 RETURN FOUND = .FALSE.
RETURN STX,2,9 *
BRX,10 *
MORE CRI,12 #FEFE CHECK FILE ENTRY
HZR,CKNAME *
STM,13 ATTACH SAVE FILE ENTRY FILE NAME
HOP,NOTIT AND KEEP CHECKING
CKNAME CRRT,4,12 CHECK NAME = MEMBER WANTED
HZR,NOTIT *
LDS,5,8 LOAD SECTOR ADDRESS OF ENTRY
LDM,2 ATTACH CHECK USL FILE
HZS,POSIT *
STM,2 $+5 NO - ATTACHED FILE
LDI,2 POSUFT ASSIGN TO THE ATTACHED FILE
REX,#A *
DFC $$ *
POSIT LDI,2 POSUFT POSITION THE FILE
STM,5,2 3 SET THE RECORD POSITION
REX,5 ADVANCE RECORD
REX,4 BACKSPACE RECORD
ZRR,2 SET FOUND = .TRUE.
HOP,RETURN *
NOTIT ADI,1 9 POINT TO NEXT ENTRY
SBRB,8,15 NXNTRY CHECK MORE ENTRIES
LDM,2 BUFFER+1 LOAD NEXT SECTOR ADDRESS
STM,2 POSUFT+3 NEXT SECTOR TO READ
LDI,2 POSUFT READ NEXT SECTOR
REX,0 *
DFC BUFFER *
DFC 256 *
BRU NXSCTR GO SEARCH NEXT DIRECTORY SECTOR
BADARG REX,#13 ABORT
DFC @ARG REASON = "ARG"
ATTACH DFC $$
POSUFT DFC 0,$$,#A400,0,0,0
BUFFER RES 128
END