DataMuseum.dk

Presents historical artifacts from the history of:

Philips Data Systems

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Philips Data Systems

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦bd488a6d7⟧

    Length: 10228 (0x27f4)
    Notes: pts_type(SC)
    Names: »UDM.SC«

Derivation

└─⟦cd4bbebb4⟧ Bits:30009680 Philips computer tape "600221"
    └─⟦this⟧ »ATM6601/UDM.SC« 
    └─⟦this⟧ »BEBATM/UDM.SC« 

PTS(SC)

 IDENT UDM 830330 NIJO
* 
************************************************************************
* 
*        THE FUNCTION OF THESE ROUTINES IS TO PROVIDE AN
*        INTERFACE BETWEEN THE UTILITY PACKAGE AND THE
*        FILE MANAGEMENT INTERFACE. 
* 
************************************************************************
* 
*        THE CALLS TO THESE ROUTINES HAVE THE FOLLOWING FORMATS :-
* 
*        PERF    OPEN,<FILIND>,<STATUS> 
*        PERF    CLOSE,<FILIND> 
*        PERF    READ,<FILIND>,<BUF>,<RECNO>,<STATUS> 
*        PERF    WRITDK <FILIND>,<BUF>,<RECNO>,<STATUS> 
* 
* 
*        WHERE: 
* 
*                <FILIND>      IS A BINARY DATA ITEM WHICH IS USED
*                              AS A POINTER TO AN ENTRY IN THE
*                              TABLE 'DSFTABLE'. THIS TABLE CONTAINS
*                              THE FILE NAME, THE VOLUME NAME, THE
*                              FILE NUMBER ASSIGNED WHEN THE FILE 
*                              OPENED AND THE FILE RECORD LENGTH. 
* 
*                <STATUS>      IS A BINARY DATA ITEM WHICH WILL 
*                              CONTAIN THE RETURN CODE AFTER THE
*                              REQUEST. 
* 
*                <BUF>         IS A STRING DATA ITEM CONTAINING THE 
*                              DATA TO BE READ/WRITEN FROM/TO THE FILE. 
* 
*                <RECNO>       IS A BINARY DATA ITEM CONTAINING THE 
*                              FILE RECORD NUMBER TO BE ACCESSED. 
* 
* 
*        THE CREDIT CONDITION REGISTER WILL BE SET TO ZERO IF THE 
*        REQUEST WAS SUCCESSFUL AND TWO IF NOT. 
*        THE CREDIT CONDITION REGISTER WILL BE SET TO ONE IF A
*        DELETED RECORD IS READ.
* 
************************************************************************
* 
	EJECT
 DDUM DDIV
	PDIV 
* 
* 
***      ENTRY POINTS 
* 
	ENTRY	OPEN 
	ENTRY	CLOSE
	ENTRY	READ 
* 
***      EXTERNAL REFERENCES
* 
	EXT	FMOPEN 
	EXT	FMCLOS 
	EXT	FMREAD 
	EXT	FMRFPB 
	EXT	COPY4
* 
	EJECT
* 
OPEN PROC FILIND,ST 
 PBIN FILIND,ST 
************************************************************************
* 
*        THIS ROUTINE OPENS A DISK FILE FOR ACCESS BY ANY TASK
*        THE FILE NAME AND VOLUME NAME ARE EXTRACTED FROM THE 
*        TABLE 'DSFTABLE' TO FORM A FILE PARAMETER BLOCK. THE 
*        FILE MANAGEMENT ROUTINES ASSIGN A FILE NUMBER TO THE 
*        FILE AND THIS IS STORED IN THE TABLE 'DSFTABLE' ON 
*        SUCCESSFUL COMPLETION OF THE OPEN
* 
************************************************************************
* 
	COPY	FILE,COB0,COB8,DSFTABLE(FILIND),COB0	  :GET FILE NAME 
	COPY	VOLUME,COB0,COB6,DSFTABLE(FILIND),COB8	 :GET VOLUME NAME
	MOVE	DKSTAT,=C' '
	EDIT	FMBUF,FMTFPB	SET UP FILE PARAMETER BLOCK
	CALL	FMOPEN,WKBIN1,FMBUF,ST	  :OPEN FILE 
	BNOK	OPENERR	OPEN SUCCESSFUL ? 
	CALL	COPY4,WKBIN2,COB0,COB1,WKBIN1,COB3	     COPY FILE NO. 
	CALL	FMRFPB,WKBIN1,FMBUF,ST
	BNOK	OPENERR 
	CALL	COPY4,WKBIN2,COB1,COB3,FMBUF,COB1 
	XCOPY	DSFTABLE(FILIND),COB14,COB2,WKBIN2,COB0	  RECOPY IT
	CMP	COB0,COB0	SET CR = 0 
	RET		RETURN TO APPLICATION 
OPENERR 
	CMP	COB0,COB1	SET CR = 2 
	RET		RETURN TO APPLICATION 
	PEND 
	EJECT
CLOSE	PROC	FILIND 
	PBIN	FILIND
* 
************************************************************************
* 
*        THIS ROUTINE CLOSES A FILE.
*        PARAMETERS AS FOR OPEN.
* 
************************************************************************
* 
	COPY	FILE,COB0,COB8,DSFTABLE(FILIND),COB0	   :GET FILE NAME
	COPY	VOLUME,COB0,COB6,DSFTABLE(FILIND),COB8	 :GET VOLUME NAME
	MOVE	DKSTAT,=C' '
	MOVE	WKBIN1,COB0	ZERO WKBIN1 
 MOVE BIN7,=W'28' 
	CALL	COPY4,WKBIN1,COB3,COB1,DSFTABLE(FILIND),BIN7
	EDIT	FMBUF,FMTFPB	SET UP FILE PARAMETER BLOCK
	CALL	FMCLOS,WKBIN1,FMBUF,WKBIN2	CLOSE FILE 
	XCOPY	WKBIN1,COB0,COB2,DSFTABLE(FILIND),COB14
	CALL	COPY4,WKBIN1,COB0,COB1,COB0,COB3
	XCOPY	DSFTABLE(FILIND),COB14,COB2,WKBIN1,COB0
	MOVE	WKBIN1,COB0 
LOOP	ADD	WKBIN1,COB1
	CBG	WKBIN1,NOFILS,END
	COPY	WKSTR6,COB0,COB6,DSFTABLE(WKBIN1),COB8	GET VOLUME NAME
	CBNE	WKSTR6,VOLUME,LOOP	THIS VOLUME ?
	XCOPY	WKBIN2,COB0,COB2,DSFTABLE(WKBIN1),COB14	YES
	MOVE	WKB1,COB0 
	CALL	COPY4,WKB1,COB3,COB1,WKBIN2,COB0	 GET FILE NUMBER 
 CBNE WKB1,COB0,LOOP FILE STILL OPEN
END 
	RET		RETURN
	PEND 
	EJECT
* 
READ	PROC	FILIND,BUF,REC.NO,ST
	PBIN	FILIND,REC.NO,ST
	PSTRG	BUF
* 
************************************************************************
* 
*        THIS ROUTINE READS A RECORD FROM A DISK FILE 
* 
************************************************************************
* 
	PERF	GETBLK,FILIND,REC.NO,ST	  GET DISK SECTOR 
	B	RDERR
	MOVE	BUF,=C' ' 
	MOVE	WKBIN1,RECLEN	SET UP RECORD LENGTH
	COPY	BUF,COB0,WKBIN1,FMBUF,WKBIN2	COPY DATA
	ADD	WKBIN2,WKBIN1
	MOVE	DKSTAT,=X'00' 
	COPY	DKSTAT,COB0,COB1,FMBUF,WKBIN2	  GET RECORD STATUS CODE
	CBNE	DKSTAT,=X'00000000',NOTMT	EMPTY RECORD? 
	MOVE	BUF,=C' '	YES 
	CMP	COB1,COB0	SET CR = 1 
	RET		RETURN TO APPLICATION 
NOTMT 
	CMP	COB0,COB0	SET CR = 0 
	RET		RETURN TO APPLICATION 
RDERR 
	CMP	COB0,COB1	SET CR = 2 
	RET		RETURN TO APPLICATION 
	PEND 
	EJECT
* 
GETBLK	PROC	FILIND,REC.NO,ST
	PBIN	FILIND,REC.NO,ST
* 
************************************************************************
* 
*        THIS ROUTINE READS THE SECTOR CONTAINING THE RECORD POINTED
*        TO BY REC.NO FROM THE FILE POINTED TO BY FILIND. 
* 
************************************************************************
* 
	XCOPY	WKBIN1,COB0,COB2,DSFTABLE(FILIND),COB14
	MOVE	RECLEN,COB0 
	MOVE	FN,COB0 
	CALL	COPY4,RECLEN,COB1,COB3,WKBIN1,COB1
	ADD	RECLEN,COB1	ALLOW FOR RECORD STATUS BYTE 
	CALL	COPY4,FN,COB3,COB1,WKBIN1,COB0
	MOVE	WKBIN4,=W'256'
	MOVE	WKBIN3,RECLEN 
	DIV	WKBIN4,WKBIN3
	MOVE	WKBIN3,REC.NO 
	SUB	WKBIN3,=W'1'	COUNT FROM ZERO 
	DIV	WKBIN3,WKBIN4
	MOVE	SECTNO,WKBIN3 
	ADD	SECTNO,COB1	SECTNO = SECTOR TO BE READ 
	MUL	WKBIN3,WKBIN4
	MOVE	WKBIN1,WKBIN3 
	MOVE	WKBIN2,REC.NO 
	SUB	WKBIN2,COB1	COUNT FROM ZERO
	SUB	WKBIN2,WKBIN1	WKBIN2 = RECORD NO IN BLOCK
	MUL	WKBIN2,RECLEN
	MOVE	LENGTH,=W'256'
	SUB	RECLEN,COB1
	CALL	FMREAD,FN,FMBUF,LENGTH,SECTNO,ST
	BNOK	GETERR
	RET	2
GETERR
	RET		RETURN
* 
	PEND 
* 
	EJECT
* 
************************************************************************
* 
*        FORMATS
* 
************************************************************************
* 
FMTFPB	FRMT 
	FXCOPY	DKSTAT
	FXCOPY	=X'00000000'
	FCOPY	FILE 
	FXCOPY	=X'0000'
	FCOPY	VOLUME 
	FXCOPY	=X'00000000'
	FILLR	' ',30 
	FXCOPY	=X'00000000000000'
	FXCOPY	=X'0000000000'
	FILLR	' ',9
	FXCOPY	=X'00'
	FMEND
* 
	END

Full view