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

⟦e9381cbbd⟧

    Length: 4768 (0x12a0)
    Notes: pts_type(SC)
    Names: »GRBUF.SC«

Derivation

└─⟦18bf30ff4⟧ Bits:30009692 Philips computer tape "600409"
    └─⟦this⟧ »BDKMON/GRBUF.SC« 
└─⟦71472ef1e⟧ Bits:30009661 Philips computer tape "600103"
    └─⟦this⟧ »BDKMON/GRBUF.SC« 

PTS(SC)

	IDENT  GRBUF 	REL=7.2  DATE=77-09-09 
			UPDATE   #0   77-09-09 
* 
******************************************************* 
* 
*   PHILIPS TERMINAL SYSTEM PTS 
* 
*   GRBUF = LKM-PROCESSOR FOR GET AND RELEASE 
* 
* 
*   LEVEL     #2  77-09-09
* 
*   RELEASE   #7  77-09-09
* 
******************************************************* 
* 
*    THIS MODULE CONTAINS LKM-PROCESSORS FOR GET AND
*    RELEASE BUFFER.
* 
*    GET BUFFER : 
*                NUMBER OF REQUIRED BUFFERS ARE GIVEN 
*                IN A7. BUFFER ADDRESS IS RETURNED IN A8. 
* 
*    RELEASE BUFFER:
*                BUFFER ADDRESS IS GIVEN IN A8. 
* 
	EJECT
* 
*********** 
* ENTRIES * 
*********** 
* 
* 
	ENTRY	GETBUF	GET BUFFER
	ENTRY	RELBUF	RELEASE BUFFER
* 
* 
************* 
* EXTERNALS * 
************* 
* 
* 
	EXTRN	TTB:SA	TERMINAL SAVE AREA
	EXTRN	TDISP	DISPATCHER 
	EXTRN	LKMQDI	QUEUE AND DISPATCH
	EXTRN	QTJOB	QUEUE AS TERMINAL JOB
	EXTRN	GBQUE	POINTER TO FIRST TTAB IN BUFFER QUEUE
* 
* 
	EJECT
* 
* 
GETBUF	EQU	*
	LDKL	A1,GBQUE	POINTER TO FIRST IN QUEUE
GET001	LDR*	A2,A1	GET TTAB-ADDRESS
	RF(Z)	GET005	NO IN QUEUE 
	LD	A3,TTB:SA,A2
	CW	A4,-2,A3	 
	RF(E)	GET030	SAME POOL 
	LDR	A1,A2
	RB	GET001	CHECK NEXT IN QUEUE
* 
GET005	CF	A15,GET	TRY TO ALLOCATE BUFFERS 
	LDR	A4,A4	 
	RF(NZ)	REL060	BUFFER HAS BEEN ALLOCATED
* 
* 
GET030	LDKL	A1,GBQUE	QUEUE REQUEST
GET040	LDR	A2,A1
	LDR*	A1,A1 
	RB(NZ)	GET040	NOT LAST IN CHAIN
	STR	A5,A2
	CMR	A5 
GET050	ABL	TDISP	DISPATCH 
	EJECT
* 
* 
* 
RELBUF	EQU	*
	SUKL	A8,2	BUFFER ADDRESS 
	LD	A1,2,A4	BUFFER UNIT 
	ADK	A1,2	ADD ONE WORD FOR CHAIN
	LDR*	A2,A8 
	XRK	A2,1 
REL010	LDR	A3,A8
	ADR	A3,A1
	STR	A3,A8	UPDATE CHAIN 
	LDR	A8,A3
	CWR	A3,A2	 
	RB(NE)	REL010	UPDATE NEXT CHAIN
* 
	LDR	A3,A5	SAVE TTAB-ADDRESS
	LDKL	A5,GBQUE	 
REL020	LDR	A2,A5	ADDRESS TO PREVIOUS BUFFER 
REL030	LDR*	A5,A2	BUFFER ADDRESS
	RF(Z)	REL050	END OF QUEUE
	LDR*	A6,A5	ADDRESS TO NEXT BUFFER
	LD	A1,TTB:SA,A5	GET DISPATCH ADDRESS 
	CW	A4,-2,A1
	RB(NE)	REL020	NOT SAME POOL
	STR	A2,A15 
	STR	A4,A15 
	STR	A6,A15 
	LD	A7,TTB:SA+14,A5 
* 
* 
	EJECT
* 
* 
* 
	CF	A15,GET	TRY TO ALLOCATE BUFFERS 
	LDR	A1,A4	 
	LDR*	A6,A15
	LDR*	A4,A15
	LDR*	A2,A15
	LDR	A1,A1
	RF(Z)	REL050	BUFFER NOT ALLOCATED
	CMR	A5	TAKE OUT OF QUEUE 
	STR	A6,A2	UPDATE CHAIN 
	CF	A15,QTJOB	QUEUE FOR DISPATCHING 
	RB	REL030	GET BUFFER TO NEXT IN QUEUE
* 
REL050	LDR	A5,A3	GET TTAB-ADDRESS 
REL060	ABL	LKMQDI	QUEUE AND DISPATCH
	EJECT
* 
* 
*   SUBROUTINE TO ALLOCATE BUFFERS TO REQUESTING PROGRAM
* 
* 
GET	LDK	A6,1
	LDR*	A4,A4	ADDRESS TO BUFFER-POOL
GET010	LDR	A8,A4	BUFFER ADDRESS 
	LDR	A2,A7
GET020	LDR	A1,A4	 
	LDR*	A4,A1	BUFFER POINTER
	RF(Z)	GET025	NO BUFFER FOUND 
	TM	A4,A6 
	RB(NZ)	GET010	BUFFER NOT FREE
	SUK	A2,1 
	RB(NZ)	GET020
	ANKL	A8,/FFFE
* 
* 
	ORK	A4,1	FREE BUFFER FOUND 
	STR	A4,A8	UPDATE BUFFER POINTER
	ADKL	A8,2	ADDRESS TO USER BUFFER 
	ST	A8,TTB:SA+16,A5	SAVE IT IN SAVE AREA
GET025	RTN	A15
* 
* 
	END

Full view