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

⟦7c65e1f3b⟧

    Length: 14140 (0x373c)
    Notes: pts_type(SC)
    Names: »DMBUF.SC«

Derivation

└─⟦173d42e04⟧ Bits:30009663 Philips computer tape "600105"
    └─⟦this⟧ »TOSSWORK/DMBUF.SC« 

PTS(SC)

	IDENT DMBUF 	REL 10.0 80-03-14 870105041000

****************************************************
* 
*   PHILIPS TERMINAL SYSTEM  PTS
* 
*   DMBUF  = DATA MANAGEMENT BUFFER AREAS 
* 
* 
* 
* 
* 
* 
****************************************************
* 
*   ALLOCATE DISC BUFFERS FOR DMTASK
* 
*   A ROUTINE DMTGBU 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	DMTGBU	GET A BUFFER
	ENTRY	DMTRBU	RELEASE A BUFFER
	ENTRY	BLKMXL	MAXIMUM BLOCK SIZE
	ENTRY	CLRBUF	RELEASE ALL FREE BUFFERS
	ENTRY	DMI020	FROM DMINIT 
* 
	EXTRN	HALT 
	EXTRN	DMI010	SEE DMINIT
	EXTRN	CRNQUE,CRNEND,CRBUFL 
	EXTRN	FDBSTA 
	EXTRN	SCTFWT 
	EJECT
X:B	EQU	128 
BLKMXL	EQU	X:B	MAX BLOCK SIZE 
X:A	EQU	8	NUMBER OF DISC BUFFERS
QNBUF	EQU	X:A 
* 
* 
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
* 
**************
*   DMTGBU   *
**************
* 
*   ENTRY   DMTGBU   GET A DISC BUFFER
* 
*   INPUT   A1 = FILE NR
*           A2 = SECTOR NUMBER
*           A4 = SECT NR PART 2 
* 
*   OUTPUT  A3 = BUFFER ADDRESS 
*           SKIP RETURN (+2) IF SECTOR MUST BE READ INTO BUFFER AT A3 
*           A5 AND A7 WILL BE DESTROYED 
* 
*   USED REGS  A1-A5,A7 
* 
*   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
DMTGBU	EQU	*
	INH			INH
	LD	A3,CURBUF 
	LDK	A5,0 
DMT010	LDR*	A3,A3 
	ANKL	A3,/FFFE
	LDK	A7,1 
	CW	A1,BUFDMI,A3
	RF(NE)	DMT017	WRONG FILE 
	AN	A7,BUFLNK,A3
	RF(Z)	DMT015	FREE
	SLL	A7,1 
	SC	A7,BUFOR,A3	MARK DELAY
DMT015	EQU	*
	CW	A2,BUFSNR,A3
	RF(NE)	DMT020
	CW	A4,BUFSNR+2,A3
	RF(NE)	DMT020	WRONG SECT NR
	LDKL	A7,/100 
	ORS	A7,BUFOR,A3	MARK SAME SECT NR
	RF	DMT030
DMT017	AN	A7,BUFLNK,A3
	RF(NZ)	DMT041	USED 
DMT020	EQU	*
	LDK	A7,/01 
	AN	A7,BUFLNK,A3	STATUS IN BIT 15 
	RF(NZ)	DMT030	USED 
	IM	BUFOR,A3	MAKE OLDER 
	SC	A7,BUFOR,A3	CLEAR LEFT BYTE 
DMT030	EQU	*
	CW	A5,BUFOR,A3 
	RF(G)	DMT041	NOT OLDER 
	LD	A5,BUFOR,A3 
	ST	A3,NEWBUF 
DMT041	EQU	*
	CW	A3,CURBUF 
	RB(NE)	DMT010	MORE BUFFERS TO SERARCH
* 
*   A5 INDICATES IF BUFFER IS FOUND AND IF IT IS EMPTY
* 
	LD	A3,NEWBUF	CHOOSE THIS BUFFER
	ECR	A5,A5
	LDR	A5,A5
	RF(Z)	DMT042	NO BUFFER 
	ANK	A5,/3
	RF(Z)	DMT043	NO DATA 
	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
* 
	IM	4,A14 
	IM	4,A14	SKIP RETURN 
	ST	A1,BUFDMI,A3	DMIDENT, FC
	ST	A2,BUFSNR,A3	SECTOR NUMBER
	ST	A4,BUFSNR+2,A3
DMT050	EQU	*
	CM	BUFOR,A3	RESET OLD-COUNTER
DMT051	EQU	*	DELAY USE
	ST	A3,CURBUF 
	LDK	A7,/01 
	ORRS	A7,A3	SET STATUS USED  BIT 15 
	ENB			ENB
	RTN	A14
	EJECT
* 
**************
*   DMTRBU   *
**************
* 
*   ENTRY   DMTRBU   RELEASE A DISC BUFFER
* 
*   INPUT   A3 = BUFFER ADDRESS 
*           A2 IS DESTROYED 
* 
* 
DMTRBU	EQU	*
	LDKL	A2,/FFFE
	ANRS	A2,A3	SET OFF BIT 15
	RTN	A14
* 
* 
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
* 
*   THIS INITIALIZATION ROUTINE BELONGS TO DMINIT, BUT
*   IS OVERLAYED ON THE FIRST BLOCK BUFFER
* 
DMIFIN	EQU	*
	RORG	BUFAR 
* 
DMI020	EQU	*
* 
*   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 
	LDKL	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
	ABL	DMI010	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