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

⟦7c847d050⟧

    Length: 11072 (0x2b40)
    Notes: pts_type(SC)
    Names: »DISC.SC«

Derivation

└─⟦48601905a⟧ Bits:30009668 Philips computer tape "600121"
    └─⟦this⟧ »S:DU/DISC.SC« 
└─⟦79fbed147⟧ Bits:30009697 Philips computer tape "600414"
    └─⟦this⟧ »S:DU/DISC.SC« 
└─⟦d2a299635⟧ Bits:30009698 Philips computer tape "600415"
    └─⟦this⟧ »S:DU/DISC.SC« 

PTS(SC)

 IDENT DISC PRR 1.0 79-06-19/AST
* 
**********************************************************
* 
*     THIS MODULE HANDLES ALL DISC IN- AND OUTPUT.
* 
*     AFTER EXECUTION, THE DATA-ITEM DEBINW4 WILL BE SET AS 
*     FOLLOWS:
*               0 = NO ERROR
*              20 = NO SYSTEMDISC IN SYSTEM 
*              21 = NO DISC IN SPECIFIED UNIT 
*              22 = DISC I/0-ERROR
*              23 = DISC NOT OPERABLE 
* 
*********************************************************** 
	DDUM	DDINIT
 PDIV 
	EXT	CHANFC 
 EXT WAIT 
 EXT RELEAS 
 EXT EMPTYT 
 EXT MASK 
 EXT DEPOOL 
 EXT GETIND 
 EXT DEDISC 
 EXT NOFFRE 
 EXT POOL 
 EXT ATTWB
 EXT RESTOR 
 ENTRY RDDS 
 ENTRY WRDS 
 ENTRY DISU 
 ENTRY OPCL 
 ENTRY COND 
 ENTRY WRFSP
 ENTRY REFSP

WEOF	EQU	3	CLOSE FILE 
	EJECT
OPCL PROC FUCO
 MOVE DEBINW4,W0
 IB FUCO		C 
		OPENSY		C 
		CLOSSY		C 
		OPENUS		C 
		CLOSUS
OPENSY
 TBF BOOLA1,GOON
 SWITCH 
 B OPENSY 
GOON
 SET SWITSY 
 BNZ OPENSY04 
 SET BOOLA1 
 CLEAR SWIT04 
			INCREASE DISC-COUNTER
 ADD FCOUNTER(W1),W1
			ALREADY ASSIGNED?
 CBG FCOUNTER(W1),W1,OPENSY04 
 CALL CHANFC,DISK,FILECODE(W1)
 MOVE STRG10A,=C'SYSFIL ' 
 MOVE JOBNAME,FVOLNAME(W1)
 ASSIGN DISK,0,DEBINW4,STRG10A,JOBNAME
 BOK OPENSY02 
OPENSY06
 DSC0 DISK,WEOF 
 CLEAR SWITSY 
 MOVE DEBINW4,W20 
 SUB FCOUNTER(W1),W1
 B OPENSY04 
OPENSY02
 MOVE LRUQUE,HEX00

 MOVE DKBIN1,W1 
DES1
 MOVE RPOOL(DKBIN1),=X'5800'
 ADD DKBIN1,W1
 CBNE DKBIN1,W21,DES1 
 PERF NOFFRE,DEBIN1,W1
 MOVE FNOOFREC(W1),DEBIN1 
 PERF DISU,W1,W1,SYSBUF 
 XCOPY F95PROC(W1),W0,W2,SYSBUF,W5
 XCOPY FRINF(W1),W0,W2,SYSBUF,W1
 PERF POOL
 BNOK OPENSY06
 MOVE FINDEXPO(W1),DKBIN1 
 PERF REFSP,W2,W1 
 BOK OPENSY07 
 MOVE DKBIN2,FINDEXPO(W1) 
 PERF DEPOOL,W6,DKBIN2,DKBIN2,STRG10A 
 B OPENSY06 
OPENSY07
			READ SYSTEM VARIABLES
 PERF DEDISC,W19
OPENSY04
 CLEAR BOOLA1 
 PERF COND	SET CONDITION-REG
	RET
CLOSSY
 TBF SWITSY,CLOSSY02
 CLEAR SWITSY 
 SUB FCOUNTER(W1),W1
 CBG FCOUNTER(W1),W0,CLOSSY02 
 PERF WRFSP,W1
 BNOK CLOSSY01
 PERF DISU,W1,W1,SYSBUF 
 BNOK CLOSSY01
 PERF DISU,W2,W1,SYSBUF 
 BNOK CLOSSY01
			RELEASE FREESPACE-POOL 
 MOVE DKBIN2,FINDEXPO(W1) 
 PERF DEPOOL,W6,DKBIN2,DKBIN2,STRG10A 
CLOSSY01
 CALL CHANFC,DISK,FILECODE(W1)
 DSC0 DISK,WEOF	CLOSE FILE
CLOSSY02
 PERF COND
	RET
OPENUS
 TBF BOOLA2,GOONN 
 SWITCH 
 B OPENUS 
OPENUS0E
 PERF DISU,W3,W1,RBUF 
 BERR OPENUS03
 PERF SETUSE
 BERR OPENUS03
 B OPENUS01 
GOONN 
 SET SWITUS 
 BNZ OPENUS0C 
 SET BOOLA2 
 CLEAR SWIT01 
 ADD FCOUNTER(FILINDUS),W1
 CBG FCOUNTER(FILINDUS),W1,OPENUS0E 
 CALL CHANFC,DISK,FILECODE(FILINDUS)
 MOVE STRG10A,=C'PTS-DE ' 
 MOVE STR6A,FVOLNAME(FILINDUS)
 ASSIGN DISK,0,DEBINW4,STRG10A,STR6A
 BNOK OPENUS02
 PERF NOFFRE,DEBIN1,FILINDUS
 BOK OPENUS0D 
 SET SWIT01 
OPENUS0D
 MOVE FNOOFREC(FILINDUS),DEBIN1 
 PERF DISU,W3,W1,RBUF 
 BERR OPENUS02
OPENUS0A
 XCOPY F95PROC(FILINDUS),W0,W2,RBUF,W5
			GET FILESTATUS 
 MOVE DKBIN1,W0 
 XCOPY DKBIN1,W1,W1,RBUF,W0 
 XCOPY FRINF(FILINDUS),W0,W2,RBUF,W1
			FILE CLOSED? 
 CBE DKBIN1,W0,USCLS
 SET SWIT01 
USCLS 
 XCOPY RBUF,W0,W1,W7,W1 
 PERF DISU,W4,W1,RBUF 
 BOK OPENUS0B 
 SET SWIT01 
OPENUS0B
 PERF SETUSE
 BERR OPENUS02
 MOVE DKBIN3,W1 
 MOVE DKBIN2,W1 
 PERF DEPOOL,W2,DKBIN3,DKBIN2,STRG10A 
 BNOK OPENUS02
 MOVE FINDEXPO(FILINDUS),DKBIN3 
 PERF REFSP,W2,FILINDUS 
 PERF RELEAS
 BOK OPENUS01 
 MOVE DKBIN1,FINDEXPO(FILINDUS) 
 PERF DEPOOL,W6,DKBIN1,DKBIN2,STRG10A 
OPENUS02
 DSC0 DISK,WEOF 
 MOVE DEBINW4,W21 
OPENUS03
 CLEAR SWITUS 
 SUB FCOUNTER(FILINDUS),W1
 B OPENUS0C 
OPENUS01
 TBF SWIT01,OPENUS0C
 MOVE DEBINW4,=W'-2'
OPENUS0C
 CLEAR BOOLA2 
 PERF COND
	RET
CLOSUS
 TBF SWITUS,CLOSUS01
 CLEAR SWITUS 
 SUB FCOUNTER(FILINDUS),W1
 BP CLOSUS01
 PERF WRFSP,FILINDUS
 PERF RELEAS
 BNOK CLOSUS02
 MOVE DKBIN1,FINDEXPO(FILINDUS) 
 PERF DEPOOL,W6,DKBIN1,DKBIN2,STRG10A 
 PERF DISU,W3,W1,RBUF 
 BNOK CLOSUS02
 XCOPY RBUF,W0,W1,W0,W1 
 PERF DISU,W4,W1,RBUF 
 BNOK CLOSUS02
 CALL CHANFC,DISK,FILECODE(FILINDUS)
CLOSUS02
	DSC0	DISK,WEOF 
CLOSUS01
 PERF COND
	RET
	PEND 
SETUSE PROC 
 XCOPY SECLEN,W0,W2,RBUF,W9 
 CBNE SECLEN,W0,SETCOP
 MOVE SECLEN,=W'399'
SETCOP
 XCOPY DKBIN1,W0,W2,RBUF,W7 
 CBNE DKBIN1,W0,SETNOZ
 MOVE DKBIN1,W1 
SETNOZ
 MUL DKBIN1,SECLEN
 CALL GETIND,RBUF,DKBIN2,DKBIN3 
 CBNG DKBIN1,DKBIN2,SETOKA
 MOVE DEBINW4,W22 
 MOVE BCD13A,=D'0'
 B SETRET 
SETOKA MOVE USELEN,DKBIN1 
 SUB DKBIN1,W15 
 MOVE MAXOCC,DKBIN1 
SETRET
 PERF COND
 RET
 PEND 
	EJECT
DISU PROC FUZ,RECNO,BUF 
 IB FUZ		C
		READSY		C 
		WRITSY		C 
		READUS		C 
		WRITUS
READSY
	CALL	CHANFC,DISK,FILECODE(W1)
 MOVE DKBIN1,SYSLEN 
	RREAD	.NEA,DISK,BUF,DKBIN1,RECNO 
 BOK READSY01 
	PERF	DKER
 TBT NEWVOL,READSY
READSY01
 CBNE DEBINW4,W0,ROUT 
 CALL EMPTYT,SYSBUF 
 BZ ROUT
 MOVE DEBINW4,=W'30'
ROUT
 PERF COND
	RET
WRITSY
	CALL	CHANFC,DISK,FILECODE(W1)
	RWRITE	DISK,BUF,RECNO
 BOK WRITSY01 
	PERF	DKER
 TBT NEWVOL,WRITSY
WRITSY01
 PERF COND
	RET
READUS
	CALL	CHANFC,DISK,FILECODE(FILINDUS)
 MOVE DKBIN1,SECLEN 
	RREAD	.NEA,DISK,BUF,DKBIN1,RECNO 
 BOK READUS01 
	PERF	DKER
 TBT NEWVOL,READUS
READUS01
 PERF COND
	RET
WRITUS
	CALL	CHANFC,DISK,FILECODE(FILINDUS)
	RWRITE	DISK,BUF,RECNO
 BOK WRITUS01 
	PERF	DKER
 TBT NEWVOL,WRITUS
WRITUS01
 PERF COND
	RET
	PEND 
 EJECT
* 
*   SUBROUTINE RDDS AND WRDS: READ AND WRITE D/E-RECORDS WITH A LENGTH O
*   MORE DATASECTORS ON DISC. THE LENGTH OF THE D/E-RECORD IS GIVEN BY '
*   'USELEN' IS SET AFTER FILE-ASSIGNMENT FOR RESP. TASK DEPENDING ON A 
*   FIRST RECORD OF THE USERFILE. 
* 
RDDS PROC RNR 
 MOVE FLIND(W20),BIN13
 MOVE BIN13,W3
RDDS02
 MOVE FLIND(W21),BIN14
 MOVE FLIND(W22),USELEN 
 MOVE BIN14,RNR 
RDDS01
 PERF DISU,BIN13,BIN14,RBUF 
 BERR READY 
 SUB FLIND(W22),SECLEN
 BNP READY
 CALL ATTWB,RBUF,SECLEN,W10 
 ADD BIN14,W1 
 B RDDS01 
READY 
 CALL RESTOR,W0,W4,PWBDB4 
 MOVE BIN13,FLIND(W20)
 MOVE BIN14,FLIND(W21)
 PERF COND
 RET
 PEND 
* 
WRDS PROC RNR 
 MOVE FLIND(W20),BIN13
 MOVE BIN13,W4
 B RDDS02 
 PEND 
	EJECT
************************************************************
* 
*     SUBROUTINE DKER 
* 
*     PURPOSE:   SPECIFIES DISK-ERROR 
* 
*     CHANGED ITEMS:  DKBIN1,DKBIN2,DEBINW4 
* 
************************************************************
* 
DKER	PROC 
	CLEAR	NEWVOL 
	XSTAT	DISK,DKBIN1
	MOVE BCD13A,DKBIN1 
 MOVE DKBIN2,=X'8022' 
 CALL MASK,DKBIN1,DKBIN2
 BZ DKER10
 MOVE DEBINW4,W22 I/O-ERROR 
 RET
DKER10
 MOVE DKBIN2,=X'800'
 CALL MASK,DKBIN1,DKBIN2
 BZ DKER20
 MOVE DEBINW4,=W'30' NO DATA
 RET
DKER20
 MOVE DKBIN2,W128 
 CALL MASK,DKBIN1,DKBIN2
 BZ DKER30
 SET NEWVOL NEW VOLUME LOADED 
 RET
DKER30
 MOVE DKBIN2,W1 
 CALL MASK,DKBIN1,DKBIN2
 BZ DKER40
 MOVE DEBINW4,=W'23' DISC NOT OPERABLE
DKER40
 RET
	PEND 
 EJECT
* 
*   SET CONDITION-REGISTER
* 
COND PROC 
 CBL DEBINW4,W0,CON1
 CBE DEBINW4,W0,CON0
 CMP W1,W2
 RET
CON1
 CMP W2,W1
 RET
CON0
 CMP W1,W1
 RET
 PEND 
* 
*   WRITE FREESPACE-RECORD
* 
WRFSP PROC MAX
 PERF WAIT
 MOVE DKBIN1,FINDEXPO(MAX)
 COPY SYSBUF,W0,W10,RPOOL(DKBIN1),W9
 COPY SYSBUF,W10,W188,BPOOL(DKBIN1),W0
 MOVE DKBIN1,FFSNR(MAX) 
 CALL CHANFC,DISK,FILECODE(MAX) 
 RWRITE DISK,SYSBUF,DKBIN1
 BNERR WRFRET 
 PERF DKER
WRFRET
 PERF COND
 RET
 PEND 
* 
* 
* 
REFSP PROC FSRNR,FIND 
 PERF WAIT
 CALL CHANFC,DISK,FILECODE(FIND)
REFS01
 MOVE DKBIN1,SYSLEN 
 RREAD .NEA,DISK,SYSBUF,DKBIN1,FSRNR
 BNERR REFCOP 
 PERF DKER
 TBT NEWVOL,REFS01
REFCOP
 MOVE DKBIN1,FINDEXPO(FIND) 
 MOVE FFSNR(FIND),FSRNR 
 COPY RPOOL(DKBIN1),W9,W10,SYSBUF,W0
 COPY BPOOL(DKBIN1),W0,W188,SYSBUF,W10
REFEND
 PERF COND
 RET
 PEND 
	END

Full view