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

⟦ce78632c9⟧

    Length: 11098 (0x2b5a)
    Notes: pts_type(SC)
    Names: »DBUOPR.SC«

Derivation

└─⟦35fda6e03⟧ Bits:30009701 Philips computer tape "BARCLAY"
    └─⟦this⟧ »DEMO6800/DBUOPR.SC« 
└─⟦e276fd206⟧ Bits:30009696 Philips computer tape "600413"
    └─⟦this⟧ »DEMO6800/DBUOPR.SC« 

PTS(SC)

         IDENT    DBUOPR                UPDATE OPERATOR 
	DDUM	DEMODD
	PDIV 
	EXPROC	EAIOPR
	EXPROC	EBZACC
	EXPROC	QEMOVE
	EXPROC	XBFMT 
	EXPROC	XEERR 
 EXPROC ZCRDD 
	EXPROC	ZDRWRD
	EXPROC	ZGREA 
	EXPROC	ZHWRID
	EXPROC	ZYRLNG
	EXPROC	MASK
	ENTRY	DBUOPR 
	ENTRY	SPAP06 
************************************************************************
* 
* UPDATE OPERATOR 
* 
************************************************************************
DBUOPR	PROC				
DB000					
	CBNE	YDSTATUS,=D'1',DB200			 
* *
* SYSTEM START PROGRESSING,*
*    READ ALL OPERATOR RECORDS AND RESET STATUS TO*
*    'OPERATOR NOT IN USE'*
* 
* START SEARCHING OF OPERATOR RECORDS BY READING THE SYSTEM RECORD
* AND THEN CONTINUE BY INDEXED READ NEXT. 
* 
	MOVE	ODOPRRNR,=D'1'
	MUL	ODOPRRNR,KDSHIFT	SYSTEM RECORD KEY 
	SET	SBNOCOPY	DON'T COPY RECORD TO UWB
	PERF	ZCRDD,ODOPRRNR,NDLRN1,KW1 
	TBT	SBCANCEL,DB900 
* 
* NOW SET NWRECLNG TO THE LENGTH OF AN OPERATOR RECORD
* 
	MOVE	ODOPRRNR,=D'10001'	ARBITRARY OPERATOR NUMBER
	MUL	ODOPRRNR,KDSHIFT	RECORD KEY
	PERF	ZYRLNG,ODOPRRNR	RECORD LENGTH IN NWRECLNG 
* 
* READ NEXT RECORD IN THE DATABASE AND CHECK WHETHER OR NOT IT IS 
* AN OPERATOR RECORD
* 
DB100 
	PERF	ZGREA	RELEASE EXCL ACCES
	MOVE	WW1,=W'132'	SET REQUESTED LENGTH		
	READ	.IXSEQ,DSDBS,FCBUFFER,WW1,KW1 
	BOK	DB110
	XSTAT	DSDBS,NWXSTAT
	MOVE	WW1,=X'5000'	EOF / KEY NOT FOUND
	CALL	MASK,NWXSTAT,WW1	CHECK BITS 
	BNOK	DB200	EOF / KEY NOT FOUND --> READY 
* DISK ERROR FOUND
	PERF	XEERR,=W'6',KW1	DISK ERROR
	B	DB900
* 
* COPY THE RECORD TO UWB: UOP. THE OPERATOR RECORD LENGTH IS IN NWRECLNG
* 
DB110 
	CALL	QEMOVE,ODOPRRNR,FCBUFFER,NWRECLNG 
	MOVE	IDNR1,ODOPRRNR
	DIV	IDNR1,KDSHIFT	TO GET OPERATOR NUMBER 
	CBL	IDNR1,=D'10001',DB100	TRY NEXT RECORD
	CBG	IDNR1,=D'19999',DB200	READY
* 
* NUMBER IS IN THE RANGE [10001,19999], 
* SO AN OPERATOR RECORD HAS BEEN FOUND, 
* SAVE LOGICAL RECORD NUMBER, UPDATE STATUS AND REWRITE RECORD
* 
	MOVE	ODSTATUS,=D'0'			
	PERF	ZDRWRD,ODOPRRNR,NDLRN1			
	TBT	SBCANCEL,DB900			
* READ THE NEXT OPERATOR RECORD*
* BECAUSE IRWRITE RESETS THE CURRENT RECORD NUMBER OF THE 
* INDEX-FILE TO ZERO, (AT LEAST IN RELEASE 3.2) 
* THE RECORD JUST REWRITTEN MUST BE READ AGAIN
	PERF	ZCRDD,ODOPRRNR,NDLRN1,KW1 
	TBT	SBCANCEL,DB900 
	B	DB100
* *
* UPDATE OPERATOR RECORDS DONE*
* *
DB200					
	MOVE	IDNR1,=X'FF'
	PERF	XBFMT,=W'16'	GET OPERATOR NUMBER		
	TBT	SBCANCEL,DB900			
**
* CHECKS HAVE BEEN PERFORMED AS FOLLOWS:*
*   IDNR1 CAN ONLY BE ZERO IF YDSTATUS = 1 (EXIT FROM OPERATOR INIT). 
*   IF IDNR1 IS NOT ZERO THEN IDNR1 IS IN RANGE [10001,19999] 
*      AND THE OPERATOR RECORD HAS BEEN READ OR A NEW OPERATOR
*      RECORD HAS BEEN INITIALISED IN THE UWB 
**
	CBE	IDNR1,=D'0',DB999	EXIT FROM OPERATOR INIT
DB300					
* 
* DISPLAY OPERATOR SPECIFICATION*
* 
	MOVE	IDNR1,=D'0'	INIT ZEROISE ACCUM. FIELD 
	PERF	XBFMT,=W'17'	OPERATOR SPECIFICATION		
	TBT	SBCANCEL,DB900			
	CBE	IDNR1,=D'1',DB400	ZEROISE ACCUMULATORS		
**
* DISPLAY OPERATOR ACCUMULATORS*
**
	PERF	XBFMT,=W'18'	OPERATOR ACCUMULATORS		
	TBT	SBCANCEL,DB900			
	B	DB500			
**
* ZEROISE ACCUMULATORS*
**
DB400					
	PERF	EBZACC			
DB500					
	MOVE	ODSTATUS,=D'1'	OPERATOR INITIALISED		
	PERF	ZHWRID,ODOPRRNR,NDLRN1	WRITE OPERATOR RECORD
	CBE	YDSTATUS,=D'1',DB200	NEXT OPERATOR IF SYSTEM START 
DB900					
DB999					
	RET				
	PEND				
************************************************************************
**
* CHECK OPERATOR IDENTIFICATION IN OPERATOR UPDATE*
**
************************************************************************
SPAP06	PROC	XWRET 
	PBIN	XWRET 
S06000					 
	MUL	IDNR1,=D'1'	REPRESENT ZERO UNIQUELY
	CBNE	IDNR1,=D'0',S06050
	CBE	YDSTATUS,=D'1',S06990	SYSTEM START EXIT
S06050
	CBL	IDNR1,=D'10001',S06400	RANGE ERROR		 
	CBG	IDNR1,=D'19999',S06400	RANGE ERROR		 
**
* OPERATOR IDENTIFICATION IS IN THE RIGHT RANGE*
**
	MOVE	ODOPRRNR,IDNR1	SAVE OPERATOR NUMBER 
	MUL	ODOPRRNR,KDSHIFT	SHIFT TO GET RECORDNUMBER		

Full view