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

⟦2ccb8c785⟧

    Length: 10972 (0x2adc)
    Notes: pts_type(SC)
    Names: »DMBUF.SC«

Derivation

└─⟦781e933ac⟧ Bits:30009686 Philips computer tape "600310"
    └─⟦this⟧ »M:92T1/DMBUF.SC« 

PTS(SC)

	IDENT DMBUF 	REL 9.2 79-11-16  870105040920

* 
****************************************************
* 
*   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
* 
*   AT LEAST TWO BUFFERS PER DISC DRIVE MUST BE ALLOCATED 
* 
	EJECT
* 
*************** 
*   ENTRIES   * 
*************** 
* 
	ENTRY	CURBUF	CURRENT BUFFER POINTER
	ENTRY	BUFLNK	BUFFER LINK 
	ENTRY	BUFDMI	DMTASK IDENT
	ENTRY	BUFFC	FILE CODE
	ENTRY	BUFSNR	SECTOR NO 
	ENTRY	BUFOR	ORDER
	ENTRY	BUFSTA	DATA AREA START ADDRESS 
	ENTRY	DMTGBU	GET A BUFFER
	ENTRY	DMTRBU	RELEASE A BUFFER
	ENTRY	CLRBUF	RELEASE ALL FREE BUFFERS
* 
	EXTRN	HALT 
	EJECT
X:A	EQU	8	NUMBER OF DISC BUFFERS
QNBUF	EQU	00002 
* 
* 
CURBUF	DATA	BUF1
NEWBUF	DATA	0 
* 
* 
BUFLNK	EQU	0
BUF1	DATA	BUF2	BUFFER LINK   STATUS IN BIT 15 
BUFDMI	EQU	*-BUF1	DMI 
BUFFC	EQU	BUFDMI+1	FILE CODE
	DATA	0	DMI, FC 
BUFSNR	EQU	*-BUF1	SECTOR NO 
	DATA	0 
BUFOR	EQU	*-BUF1	LRU-WORD 
	DATA	0	BUFFER STATUS,DM ORDER
BUFSTA	EQU	*-BUF1	DATA BUFFER START 
	RES	205
* 
* 
	IFT	QNBUF=1
BUF2	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
BUF2	DATA	BUF3
	DATA	0,0,0 
	RES	205
	XIF
* 
* 
	IFT	QNBUF=2
BUF3	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
BUF3	DATA	BUF4
	DATA	0,0,0 
	RES	205
	XIF
* 
* 
	IFT	QNBUF=3
BUF4	EQU	BUF1 
	XIF
* 
* 
	IFF	QNBUF=1
	IFF	QNBUF=2
	IFF	QNBUF=3
BUF4	DATA	BUF5
	DATA	0,0,0 
	RES 205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	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 
	RES	205
	XIF
	EJECT
* 
**************
*   DMTGBU   *
**************
* 
*   ENTRY   DMTGBU   GET A DISC BUFFER
* 
*   INPUT   A1 = DMTASK IDENT IN LEFT HALF AND VOLUME FILE CODE IN RIGHT
*           A2 = SECTOR NUMBER
* 
*   OUTPUT  A3 = BUFFER ADDRESS 
*           SKIP RETURN (+2) IF SECTOR MUST BE READ INTO BUFFER AT A3 
*           A5 AND A7 WILL BE DESTROYED 
* 
*           CURBUF, BUFDMI, -FC AND -SNR WILL BE SET
*           STATUS USED ( BIT 15 IN BUFLNK ) WILL BE SET
* 
*   AT FIRST ALL BUFFERS ARE CHECKED TO FIND OUT IF THE SECTOR
*   SEARCHED FOR IS ALREADY PRESENT IN ANY FREE BUFFER. 
*   IF THIS SECTOR IS NOT FOUND A FREE SECTOR MUS BE FOUND AND IN 
* 
* 
* 
DMTGBU	EQU	*
	INH			INH
* 
*   CHECK IF THIS SECTOR IS FOUND IN ANY BUFFER 
* 
	LD	A3,CURBUF 
	LDK	A5,0 
DMT010	LDR*	A3,A3 
	ANKL	A3,/FFFE
	CW	A1,BUFDMI,A3
	RF(NE)	DMT020	WRONG VOLUME 
	CW	A2,BUFSNR,A3
	RF(E)	DMT050	SAME SECTOR NO
DMT020	EQU	*
	LDK	A7,/01 
	AN	A7,BUFLNK,A3	STATUS IN BIT 15 
	RF(NZ)	DMT041	USED 
	IM	BUFOR,A3	MAKE OLDER 
	RF(P)	DMT030 
	LDK	A7,/FF 
	ST	A7,BUFOR,A3 
DMT030	EQU	*
	CW	A5,BUFOR,A3 
	RF(NL)	DMT041	NOT OLDER
	LD	A5,BUFOR,A3 
	ST	A3,NEWBUF 
DMT041	EQU	*
	CW	A3,CURBUF 
	RB(NE)	DMT010	MORE BUFFERS TO SERARCH
	LDR	A5,A5
	RF(NZ)	DMT043	BUFFER FOUND 
	LDK	A1,3	LAMP 10 AND 11
	CF	A15,HALT	NO MORE BUFFERS
DMT043	LD	A3,NEWBUF 
* 
*   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
DMT050	EQU	*
	CM	BUFOR,A3	RESET OLD-COUNTER
	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 
	RTN	A14
	END

Full view