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

⟦5b1a0e528⟧

    Length: 14364 (0x381c)
    Notes: pts_type(SC)
    Names: »SDMBUF.SC«

Derivation

└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
    └─⟦this⟧ »TOSSWORK/SDMBUF.SC« 
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
    └─⟦this⟧ »TOSSWORK/SDMBUF.SC« 

PTS(SC)

	IDENT SDMBUF 	REL 11.0 81-01-26 870105041100 

****************************************************
* 
*   PHILIPS TERMINAL SYSTEM  PTS
* 
*   SDMBUF  = DATA MANAGEMENT BUFFER AREAS
* 
* 
* 
* 
* 
* 
****************************************************
* 
*   ALLOCATE DISC BUFFERS FOR DMTASK
* 
*   A ROUTINE SDMGBU TO GET A DISC BUFFER 
* 
*   BY MEANS OF CONDITIONAL ASSEMBLY QNBUF NUMBER OF BUFFERS WILL BE ALL
* 
*   MAX VALUE OF QNBUF IS 16
* 
* 
	EJECT
* 
*************** 
*   ENTRIES   * 
*************** 
* 
	ENTRY	CURBUF	CURRENT BUFFER POINTER
	ENTRY	BUFLNK	BUFFER LINK 
	ENTRY	BUFDMI	DMTASK IDENT
	ENTRY	BUFSNR	SECTOR NO 
	ENTRY	BUFOR	ORDER
	ENTRY	BUFSTA	DATA AREA START ADDRESS 
	ENTRY	SDMGBU	GET A BUFFER
	ENTRY	SDMRBU	RELEASE A BUFFER
	ENTRY	BLKMXL	MAXIMUM BLOCK SIZE
	ENTRY	CLRBUF	RELEASE ALL FREE BUFFERS
	ENTRY	SDMINI	INITIALIZATION ROUTINE
	ENTRY	SDMRLB 
	ENTRY	CRNQUE,CRBUFL
	ENTRY	CRNEND 
	ENTRY	MXIND
* 
	EXTRN	HALT 
	EXTRN	FDBSTA 
	EXTRN	SCTFWT 
	EXTRN	ECBBA
	EJECT
* 
*	CONDITIONAL ASSEMBLY
* 
X:A	EQU	8 
X:B	EQU	128 
QNBUF	EQU	X:A	NUMBER OF DISC BUFFERS
BLKMXL	EQU	X:B	MAX BLOCK SIZE 
CHECK	EQU	0 
* 
*   CRNBAR IS THE SIZE OF THE CRN BUFFER ARERA IN WORDS 
*   WHERE CRBUFL BYTES ARE USED FOR EACH BUFFER 
* 
X:C	EQU	90
CRNBAR	EQU	X:C	CURRENCY AREA
* 
*   MXSIZ IS THE SIZE OF THE MASTER INDEX AREA IN 
*   WORDS 
* 
X:D	EQU	0 
MXSIZ	EQU	X:D	MASTER INDEX AREA 
	IFF	MXSIZ=0	INDEXES
CRBUFL	EQU	12	SIZE CRN BUFFER 
	XIF
	IFT	MXSIZ=0	NO INDEXES 
CRBUFL	EQU	8
	XIF
	EJECT
* 
**************
*   SDMGBU   *
**************
* 
*   ENTRY   SDMGBU   GET A DISC BUFFER
* 
*   INPUT   A3 = FILE NR
*           A1 = SECTOR NUMBER
*           A2 = SECT NR PART 2 
* 
*   OUTPUT  A4 = BUFFER ADDRESS 
*	   A3=0 IF SECTOR IN MEMORY ELSE 1
*	   A5=USED
* 
* 
*   ALL BUFFERS ARE SEARCED.
*   ONE BUFFER IS SELECTED IN FOLLOWING PRIORITY :
* 
*   1. USED BUFFER IN REQ FILE ( DELAY) 
*   2. REQ FILE AND SECT NR 
*   3. OLDEST UNUSED
* 
*   IN BUFFER : 
*   BUFLNK= CYCL BUFF LINK. BIT 15= 1 WHEN USED 
*   BUFDMI= FILE NR 
*   BUFSNR= SECT NR 
*   BUFOR BIT 0-8= DELAY + SAME INDICATOR 
*   BUFOR BIT 9-15= BUFFER AGE
*   BUFSTA= BLOCK AREA
* 
* 
	EJECT
SDMGBU	EQU	*
	STR	A7,A14	SAVE A7 
	INH			INH
	LD	A4,CURBUF 
	LDK	A5,0 
DMT010	LDR*	A4,A4 
	ANKL	A4,/FFFE
	LDK	A7,1 
	CW	A3,BUFDMI,A4
	RF(NE)	DMT017	WRONG FILE 
	AN	A7,BUFLNK,A4
	RF(Z)	DMT015	FREE
	SLL	A7,1 
	SC	A7,BUFOR,A4	MARK DELAY
DMT015	EQU	*
	CW	A1,BUFSNR,A4
	RF(NE)	DMT020
	CW	A2,BUFSNR+2,A4
	RF(NE)	DMT020	WRONG SECT NR
	LDKL	A7,/100 
	ORS	A7,BUFOR,A4	MARK SAME SECT NR
	RF	DMT030
DMT017	AN	A7,BUFLNK,A4
	RF(NZ)	DMT041	USED 
DMT020	EQU	*
	LDK	A7,/01 
	AN	A7,BUFLNK,A4	STATUS IN BIT 15 
	RF(NZ)	DMT030	USED 
	IM	BUFOR,A4	MAKE OLDER 
	SC	A7,BUFOR,A4	CLEAR LEFT BYTE 
DMT030	EQU	*
	CW	A5,BUFOR,A4 
	RF(G)	DMT041	NOT OLDER 
	LD	A5,BUFOR,A4 
	ST	A4,NEWBUF 
DMT041	EQU	*
	CW	A4,CURBUF 
	RB(NE)	DMT010	MORE BUFFERS TO SERARCH
* 
*   A5 INDICATES IF BUFFER IS FOUND AND IF IT IS EMPTY
* 
	LD	A4,NEWBUF	CHOOSE THIS BUFFER
	ECR	A5,A5
	LDR	A5,A5
	RF(Z)	DMT042	NO BUFFER 
	ANK	A5,/3
	RF(Z)	DMT043	NO DATA 
	LDK	A3,0	INDICATE DATA IN BUFFER 
	ANK	A5,/2
	RF(NZ)	DMT051	DELAY
	RF	DMT050	FREE SECTOR FOUND
DMT042	EQU	*
	LDK	A1,3	LAMP 10 AND 11
	CF	A15,HALT	NO MORE BUFFERS
DMT043	EQU	*
* 
*   SET CURBUF AND BUFFER HEADER WORDS
* 
	ST	A3,BUFDMI,A4	DMIDENT,FC 
	ST	A1,BUFSNR,A4	SECTOR NUMBER
	ST	A2,BUFSNR+2,A4
	LDK	A3,1	INDICATE BUFFER MUST BE READ
DMT050	EQU	*
	CM	BUFOR,A4	RESET OLD-COUNTER
DMT051	EQU	*	DELAY USE
	ST	A4,CURBUF 
	LDK	A7,/01 
	ORRS	A7,A4	SET STATUS USED  BIT 15 
	LDR*	A7,A14	SAVED REGISTER 
	ENB			ENB
	RTN	A14
	EJECT
* 
**************
*   SDMRLB   *
**************
* 
*	ENTRY: A8=ECB ADDRESS 
* 
*	EXIT : A8=NOT CHANGED 
*	       A4=BLOCK BUFFER ADDRESS
*	       A2=USED
* 
SDMRLB	EQU	*
	LD	A4,ECBBA,A8 
	SUK	A4,BUFSTA
* 
**************
*   SDMRBU   *
**************
* 
*   ENTRY   SDMRBU   RELEASE A DISC BUFFER
* 
*   INPUT   A4 = BUFFER ADDRESS 
*           A2 IS DESTROYED 
* 
* 
SDMRBU	EQU	*
	IFT	CHECK=1
	LD	A2,CURBUF 
SDMR10	EQU	*
	CWR	A2,A4
	RF(E)	SDMR20 
	LDR*	A2,A2 
	ANKL	A2,/FFFE
	CW	A2,CURBUF 
	RB(NE)	SDMR10
	LDR	A2,A2
SDMR20	EQU	*
	XIF
	LDKL	A2,/FFFE
	ANRS	A2,A4	SET OFF BIT 15
	RTN	A14
	EJECT
**************
*   CLRBUF   *
**************

*	A2,A3 = DESTROYED 

CLRBUF	EQU	*	CLEAR ALL FREE BUFFERS 
	INH
	LD	A3,CURBUF 
DMT700	LDR*	A3,A3 
	ANKL	A3,/FFFE
	LDK	A2,1 
	AN	A2,BUFLNK,A3
	RF(NZ)	DMT750	USED 
	CM	BUFDMI,A3	REMOVE
DMT750	CW	A3,CURBUF 
	RB(NE)	DMT700	MORE BUFFERS 
	ENB
	RTN	A14
	EJECT
* 
* 
CURBUF	DATA	BUF1
NEWBUF	DATA	0 
* 
* 
BUFLNK	EQU	0
BUF1	DATA	BUF2	BUFFER LINK   STATUS IN BIT 15 
BUFDMI	EQU	*-BUF1	DMI 
	DATA	0 
BUFSNR	EQU	*-BUF1	SECTOR NO 
	DATA	0 
	DATA	0 
BUFOR	EQU	*-BUF1	LRU-WORD 
	DATA	0	BUFFER STATUS,DM ORDER
BUFSTA	EQU	*-BUF1	DATA BUFFER START 
BUFAR	EQU	* 
	RES	BLKMXL 
* 
* 
	IFT	QNBUF=1
BUF2	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
BUF2	DATA	BUF3
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
* 
* 
	IFT	QNBUF=2
BUF3	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
BUF3	DATA	BUF4
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
* 
* 
	IFT	QNBUF=3
BUF4	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
BUF4	DATA	BUF5
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
* 
* 
	IFT	QNBUF=4
BUF5	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
BUF5	DATA	BUF6
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
* 
* 
	IFT	QNBUF=5
BUF6	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
BUF6	DATA	BUF7
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
* 
* 
	IFT	QNBUF=6
BUF7	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
BUF7	DATA	BUF8
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
* 
* 
	IFT	QNBUF=7
BUF8	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
	IFF	QNBUF=7
BUF8	DATA	BUF9
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
* 
* 
	IFT	QNBUF=8
BUF9	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
	IFF	QNBUF=7
	IFF	QNBUF=8
BUF9	DATA	BUF10 
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
* 
* 
	IFT	QNBUF=9
BUF10	EQU	BUF1
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
	IFF	QNBUF=7
	IFF	QNBUF=8
	IFF	QNBUF=9
BUF10	DATA	BUF11
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
	IFT	QNBUF=10 
BUF11	EQU	BUF1
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
	IFF	QNBUF=7
	IFF	QNBUF=8
	IFF	QNBUF=9
	IFF	QNBUF=10 
BUF11	DATA	BUF12
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
	IFT	QNBUF=11 
BUF12	EQU	BUF1
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
	IFF	QNBUF=7
	IFF	QNBUF=8
	IFF	QNBUF=9
	IFF	QNBUF=10 
	IFF	QNBUF=11 
BUF12	DATA	BUF13
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
	IFT	QNBUF=12 
BUF13	EQU	BUF1
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
	IFF	QNBUF=7
	IFF	QNBUF=8
	IFF	QNBUF=9
	IFF	QNBUF=10 
	IFF	QNBUF=11 
	IFF	QNBUF=12 
BUF13	DATA	BUF14
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
	IFT	QNBUF=13 
BUF14	EQU	BUF1
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
	IFF	QNBUF=7
	IFF	QNBUF=8
	IFF	QNBUF=9
	IFF	QNBUF=10 
	IFF	QNBUF=11 
	IFF	QNBUF=12 
	IFF	QNBUF=13 
BUF14	DATA	BUF15
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
	IFT	QNBUF=14 
BUF15	EQU	BUF1
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
	IFF	QNBUF=7
	IFF	QNBUF=8
	IFF	QNBUF=9
	IFF	QNBUF=10 
	IFF	QNBUF=11 
	IFF	QNBUF=12 
	IFF	QNBUF=13 
	IFF	QNBUF=14 
BUF15	DATA	BUF16
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
	IFT	QNBUF=15 
BUF16	EQU	BUF1
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
	IFF	QNBUF=4
	IFF	QNBUF=5
	IFF	QNBUF=6
	IFF	QNBUF=7
	IFF	QNBUF=8
	IFF	QNBUF=9
	IFF	QNBUF=10 
	IFF	QNBUF=11 
	IFF	QNBUF=12 
	IFF	QNBUF=13 
	IFF	QNBUF=14 
	IFF	QNBUF=15 
BUF16	DATA	BUF1 
	DATA	0,0,0,0 
	RES	BLKMXL 
	XIF
	EJECT
* 
CRNQUE	DATA	0	CRN LINK ROOT 
	IFF	CRNBAR=0 
	RES	CRNBAR 
	XIF
	IFT	CRNBAR=0 
	RES	6	DEFAULT
	XIF
CRNEND	EQU	*
MXIND	DATA	MXINDE-*	LENGTH INDEX INDEX
	DATA	MXAR	MASTER INDEX ADDR
	DATA	MXSIZ	MASTER INDEX SIEZE
	IFF	MXSIZ=0
	DATA	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
	DATA	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 
	XIF
MXINDE	EQU	*	END INDEX INDEX
	DATA	0,0	SIGNIFICANT ZEROES AFTER INDEXINDEX 
MXAR	EQU	*
	RES	MXSIZ
	EJECT
* 
*   THIS INITIALIZATION ROUTINE BELONGS TO SDMINI, BUT
*   IS OVERLAYED ON THE FIRST BLOCK BUFFER
* 
DMIFIN	EQU	*
	RORG	BUFAR 
* 
SDMINI	EQU	*	INITIALIZATION ENTRY 
* 
*   INITIALIZE SYSTEM FWT 
* 
	LD	A3,SCTFWT	ADDR FIRST FWT
	ST	A3,FDBSTA	QUEUE FIRST FOR EVER
* 
*   CHAIN CRN BUFFERS 
* 
	LDKL	A3,CRNQUE+2 
	ST	A3,CRNQUE 
	LDK	A2,CRBUFL
	LDKL	A6,CRNEND 
	CF	A15,DMIN30
* 
*   CLEAR USE BIT AND BUFFER HEADER WORDS IN DM BUFFERS 
* 
	LDKL	A2,/FFFE
	LD	A3,CURBUF 
DMIN50	LDR*	A3,A3 
	ANRS	A2,A3	CLEAR USE BIT 
	CM	BUFDMI,A3 
	CM	BUFSNR,A3 
	CM	BUFSNR+2,A3 
	CM	BUFOR,A3
	CW	A3,CURBUF 
	RB(NE)	DMIN50
	RTN	A15	RETURN 
	EJECT
* 
* 
*  IN; A2 = LENGTH
*       A3= LINK ROOT 
*       A6= AREA END ADDR 
DMIN30	LDR	A4,A3
	ADR	A4,A2
* 
*   DIV W. 2 FOR 16 K LIMIT 
* 
	LDR	A5,A4
	SRL	A5,1 
	LDR	A1,A6
	SRL	A1,1 
	CWR	A5,A1
	RF(G)	DMIN40	END OF FDB AREA 
	STR	A4,A3	CHAIN
	LDR	A3,A4
	RB	DMIN30
DMIN40	EQU	*
	SUR	A3,A2
	CMR	A3	END OF FDB CHAIN
	ADKL	A15,4 
	ABR*	A15 
	RORG	DMIFIN
* 
* 
* 
	END

Full view