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

⟦c2e930b89⟧

    Length: 20434 (0x4fd2)
    Notes: pts_type(SC)
    Names: »SYSLBA.SC«

Derivation

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

PTS(SC)

	IDENT SYSLBA 	REL 11.0 81-01-26 870105041100 


******************************************************* 
*                                                     * 
*            PHILIPS TERMINAL SYSTEM  PTS             * 
*                                                     * 
*        SYSLBA - BASIC CONFIGURATION PROGRAM         * 
*                                                     * 
******************************************************* 
	EJECT
* 
*  EXTERNAL SUBOUTINES
* 
	EXTRN	ACTOT	ACTIVATE TASK
	EXTRN	GETAPP	GET APPLICATION CONTROL BLOCK 
	EXTRN	INBIMA	INITIATE ALLOCATION BIT MAP 
	EXTRN	MMENT	GET FIRST FREE MMU ENTRY 
	EXTRN	MOVE	MOVE DATA IN MEMORY 
	EXTRN	MOVING	ALLOCATE AREA IN LOGICAL MEMORY 
	EXTRN	MOVMMT	MOVE MMU TABLE
	EXTRN	RETUR8	RESTORE 8 REGISTERS FROM STACK
	EXTRN	SAVE8	SAVE 8 REGISTERS ON STACK
* 
*  SYSTEM CONTROL TABLE EXTERNALS 
* 
	EXTRN	SCTSFA	START OF FREE AREA
	EXTRN	SCTEFA	END OF FREE AREA
* 
*  DISPLACEMENT IN APPLICATION CONTROL BLOCK
* 
	EXTRN	ACBIOE	INTERPRETER ERROR ENTRY 
	EXTRN	ACBNPE	NUMBER OF PAGE ENTRIES
	EXTRN	ACBMMC	DISPL. TO COMMON PART ENTRY 
	EXTRN	ACBLAC	LOGICAL ADDRESS TO COMM0N PART
* 
*  TTAB DISPLACEMENT EXTERNALS
* 
	EXTRN	TTB:AM	ALLOCATION BIT MAP
	EXTRN	TTB:MT	MMU TABLE 
	EXTRN	TTB:CB	CURRENT SEGMENT BASE POINTER
	EXTRN	TTB:AP	APPLICATION CONTROL BLOCK POINTER 
	EXTRN	TTB:SA	DISPATCH ADDRESS
	EJECT
* 
*  EXTERNAL LABELS
* 
	EXTRN	REL	RELOCATION ROUTINE ENTRY 
	EXTRN	STKMOV	STACK-RESIDENT MOVE-ROUTINE 
	EXTRN	STKCOM	COMMON SCRATCH-PAD BASE 
	EXTRN	STKEND	LOCAL SCRATCH-PAD BASE
* 
*  SAVE AND WORK AREA ENTRIES 
* 
	EXTRN	MMTAB	MMU WORK TABLE DISPLACEMENT
	EXTRN	TABBE	MMU WORK TABLE ADDRESS 
	EXTRN	MMEND	MMU WORK TABLE END 
	EXTRN	MMDDIV	2ND MMU WORK TABLE DISPLACEMENT 
	EXTRN	MMBEG	TTAB WORK TABLE DISPLACEMENT 
	EXTRN	INIEND	END OF SYSINI 
	EJECT
* 
*  CONDITIONAL ASSEMBLY 
* 


MMUPAG	EQU	0	0=NO MMU 
	EJECT
***************************************** 
*                                       * 
*  COMMON DISPLACEMENTS AND CONSTANTS   * 
*                                       * 
***************************************** 

APLTAB	EQU	12	ADDRESS TO APPL. CONTROL TABLE
APPLNO	EQU	18	APPLICATION NUMBER
BUFSIZ	EQU	14	TEMPORARY BUFFER SIZE 
CONLEN	EQU	0	LENGTH OF CONFIGURATION DATA 
CONSTA	EQU	2	START OF CONFIGURATION DATA
DATEND	EQU	34	END OF DDIV PROTOTYPE 
DYNSTA	EQU	52	START OF DYNTAB:S 
FSTADR	EQU	20	1ST FREE ADDRESS WHEN ALLOCATING BUFFER 
FSTPAG	EQU	22	1ST FREE PAGE (PHYSICAL)
FYSPAG	EQU	24	LAST PHYSICAL PAGE NUMBER 
LSTADR	EQU	26	LAST ADDRESS WHEN BUILDING DATA PART
MAPLEN	EQU	30	LENGTH OF AREA TO MAP 
MMFROM	EQU	36	2ND MMU TABLE WORK AREA 
MMTO	EQU	38	1:ST MMU TABLE WORK AREA
M:REL	EQU	16	RELOCATION CONSTANT
SYSBUF	EQU	28	START OF TEMPORARY BUFFER 
SWBFSA	EQU	4	SWB-FILE START ADDRESS 
SWBFSE	EQU	8	SWB-FILE END ADDRESS 
TTAB	EQU	32	WORK AREA FOR MMU TABLE 
TOTSGM	EQU	46	TOTAL NUMBER OF SEGMENTS
SWBFLG	EQU	48	SWAPPABLE WORK BLOCK FLAG 
COM01	EQU	40	COMMON WORK AREA 1 
COM02	EQU	42	COMMON WORK AREA 2 
COM03	EQU	44	COMMON WORK AREA 3 
COM04	EQU	50	COMMON WORK AREA 4 
DCBLK	EQU	54	START OF DC CONF. DATA 
	EJECT
******************************* 
*  SCRATCH-PAD DISPLACEMENTS  * 
******************************* 
SAVAPP	EQU	0	SAVE AREA FOR APPLICATION TABLE
LIMUS	EQU	12	SAVE AREA FOR UPPER LIMIT
COMSTA	EQU	14	START OF COMMON PART
COMLEN	EQU	16	LENGTH OF COMMON
* 
*  CONSTANTS
* 


MMULEN	EQU	32	LENGTH OF MMU TABLE 
T:ATID	EQU	-4	TID IN T:A
TTBTID	EQU	2	TID IN TTAB
APPLEN	EQU	10	APPLICATION TABLE LENGTH
STKUSD	EQU	12	DISPLACEMENT TO STACK USED
PBSSIZ	EQU	100	USER AREA SIZE EXCL. STACK 
	EJECT
******************************************* 
*  DISPLACEMENT IN APPLICATION TABLE     *
******************************************

INTPA	EQU	0 
INTPE	EQU	2 
STKSIZ	EQU	4
I:EXIT	EQU	6
I:RSTE	EQU	8

***************************************************************** 
*  CALL-FORMAT, PERFORMS:  CFR      A14,A13                     * 
*                          DATA     [REL-ADDRESS]               * 
*                                                               * 
***************************************************************** 
CALL	FORM	16=/F697,16 
	EJECT
SYSLBA	EQU	*
* 
*  CHECK IF THERE IS A BASIC APPLICATION PRESENT
* 


	LDKL	A1,'BA'	LOAD IDENTIFICATION CHARACTERS
	CM	STKCOM+APPLNO	CLEAR APPLICATION COUNTER 
	CALL	GETAPP	ANY BASIC APPLICATION? 
	RF(NZ)	SYA100	YES
	LDKL	A1,LBAEND	END OF SYSLBA 
	AD	A1,STKCOM+M:REL	RELOCATE
	ABR	A1 
SYA100	EQU	*
	LDR	A10,A1	SAVE ACB ADDRESS
	LD	A2,ACBLAC,A10	GET LOGICAL ADDRRESS TO COMMON PART 
	IFT	MMUPAG=0 
	LDR*	A2,A2	GET APPTAB ADDRESS
	LD	A1,I:RSTE,A2	GET INTERPRETER ERROR ENTRY
	XIF
	IFF	MMUPAG=0 
	LDK	A3,0	END OF LOGICAL MEMORY 
	SUR	A3,A2	COMPUTE LENGTH OF COMMON PART
	ADKL	A3,/1000	INCLUDE ONE ENTRY FOR PAGING 
	ST	A3,STKEND+COMLEN	SAVE LENGTH OF COMMON PART 
	LD*	A1,ACBMMC,A10	GET TTAB ADDRESS 
	TL	TTB:MT,A1	LOAD MMU REGISTERS
	ELR	A2,A2	GET ADDRESS TO APPLICATION TABLE 
	EL	A1,I:RSTE,A2	GET INTERPRETER ERROR ENTRY
	XIF
	ST	A1,ACBIOE,A10	STORE INTERPRETER ERROR ENTRY 
	ST	A2,ACBLAC,A10	STORE LOGICAL ADDRESS TO COMMON PART
	SUK	A2,10	RESERVE 5 WORDS FOR DEBUGGER 
	ST	A2,STKCOM+LSTADR	STORE END OF FREE AREA 
	ST	A2,STKEND+COMSTA	SAVE START OF COMMON PART
	EJECT
	LDKL	A1,PART2	GET ADDRESS TO PART 2 OF SYSLBA
	AD	A1,STKCOM+M:REL	RELOCATE
	LD	A7,SCTSFA	GET START OF FREE AREA
	LDR	A2,A7	SAVE 
	SUR	A2,A1	COMPUTE DISPLACEMENT 
	ADS	A2,STKCOM+M:REL	COMPUTE NEW RELOCATION CONSTANT
	LDKL	A2,INIEND	END OF SYSINI 
	AD	A2,STKCOM+CONLEN	ADD LENGTH OF CONFIGURATION DATA 
	AD	A2,STKCOM+M:REL	RELOCATE
	LDR	A5,A2	SAVE 
	IFF	MMUPAG=0 
	ANKL	A2,/F000	ISOLATE PHYSICAL PAGE ADDRESS
	SRL	A2,2 
	ST	A2,STKCOM+FSTPAG	SAVE 
	LDKL	A4,MMDDIV	ADDRESS TO 2ND MMU WORK TABLE 
	ADR	A4,A13	RELOCATE
	LDK	A3,16	NUMBER OF MMU TABLE ENTRIES
SYA150	STR	A2,A4	STORE PHYSICAL PAGE ADDRESS
	ADK	A4,2	UPDATE ENTRY POINTER
	ADKL	A2,/400	INCREMENT PHYSICAL PAGE ADDRESS 
	SUK	A3,1	MORE ENTRIES LEFT?
	RB(NZ)	SYA150	YES
	EJECT
* 
*  SAVE MMU WORK TABLE ADDRESSES
* 


	ANKL	A5,/FFF	ISOLATE DISPLACEMENT
	XIF
	ST	A5,STKEND+LIMUS	SAVE UPPER LIMIT ADDRESS
	ST	A5,STKCOM+FSTADR	THIS ADDRESS IS USED IN MOVING 
* 
*  MOVE CONFIGURATION PROGRAM(S)
* 

	LDR	A2,A7	GET TO-ADDRESS 
	ADKL	A7,START2	START OF EXECUTION IN PART 2
	LDKL	A3,INIEND	END OF SYSINI 
	SUKL	A3,PART2	COMPUTE LENGTH OF PROGRAMS 
	ABL	STKMOV	JUMP TO STACK-RESIDENT ROUTINE
	EJECT
PART2	EQU	* 


* 
*  PROCEDURE DESCRIPTOR BLOCK 
* 


PROCDR	DATA	'BASIC'	PROCEDURE NAME
	DATA	0		 
	DATA	6 


* 
*  SUBROUTINES USED IN PART 2 
* 


	IFT	MMUPAG=1 
	EJECT
************************************************************* 
*                                                           * 
*        INUEMT - INIT NOT USED ENTRIES IN MMU TABLE        * 
*        ===========================================        * 
*                                                           * 
*  REFERENCED IN: SYSLDB                                    * 
*                                                           * 
*  ENTRY: A3 - MMU TABLE ADDRESS                            * 
*                                                           * 
*  EXIT:                                                    * 
*                                                           * 
*  WORK REGISTERS: A1,A2,A9                                 * 
*                                                           * 
*  SUBROUTINES:                                             * 
*                                                           * 
************************************************************* 
INUEMT	EQU	*
	LDR	A2,A3	GET MMU TABLE ADDRESS
	LDR	A9,A2	GET TTAB ADDRESS 
	ADKL	A9,MMULEN	END OF MMU TABLE
	SUK	A2,2 
INUE10	ADK	A2,2	NEXT ENTRY
	CWR	A2,A9	END OF MMU TABLE?
	RF(E)	INUE99	YES!
	LDR*	A1,A2	GET CONTENT IN MMU TABLE ENTRY
	RB(NZ)	INUE10	NOT UNUSED MMU TABLE ENTRY!
	LDKL	A1,/FC00	VALUE FOR UNUSED ENTRIES 
	STR	A1,A2	STORE IN MMU TABLE 
	RB	INUE10
INUE99	RTN	A14	RETURN 
	XIF
	EJECT
*************************************************** 
*                                                 * 
*          B:UWA - BUILD USER WORK AREA           * 
*          ============================           * 
*                                                 * 
*  REFERENCED IN:  SYSLDB PART 2                  * 
*                                                 * 
*  ENTRY:  A5 - TTAB ADDRESS                      * 
*          LSTADR - LAST ADDRESS IN USER AREA     * 
*                                                 * 
*  EXIT:                                          * 
*                                                 * 
*  WORK REGISTERS:  A1-A4,A10,A12                 * 
*                                                 * 
*  SUBROUTINES:                                   * 
*                                                 * 
*************************************************** 
B:UWA	EQU	* 
* 
*  ALLOCATE MEMORY FOR USER AREA
* 
	LD	A3,STKEND+STKSIZ	GET STACK SIZE 
	ADK	A3,PBSSIZ	ADD SIZE OF FIXED PART 
	LD	A2,STKCOM+LSTADR	GET LAST LOGICAL ADDRESS 
	LDR	A12,A3	SAVE
	ST	A3,STKCOM+MAPLEN	LENGTH OF AREA TO MAP
	CALL	MOVING	ALLOCATE AREA
	ADR	A12,A2	END OF USER AREA
	IFT	MMUPAG=1 
	TL*	MMTO+STKCOM	RELOAD MMU REGISTERS 
	SUR	A1,A1	CLEAR REGISTER 
	XIF
* 
*  CLEAR USER WORK AREA 
* 
*  A2 - START OF USER AREA
*  A12 - END OF USER AREA 
* 
	LDR	A4,A12	GET END OF USER AREA
CLRNXT	SUK	A4,2	DECREMENT USER AREA POINTER 
	IFF	MMUPAG=1 
	CMR	A4	CLEAR MEMORY WORD 
	XIF
	IFT	MMUPAG=1 
	ESR	A1,A4	CLEAR MEMORY WORD
	XIF
	CWR	A4,A2	ALL WORDS CLEARED? 
	RB(NE)	CLRNXT	NO!
	EJECT
* 
*  INITIALIZATION OF USER AREA AND TTAB 
* 
*  A5 - TTAB ADDRESS
* 
	ST	A4,TTB:CB,A5	STORE ADDRESS TO CURRENT SEGMENT BASE
	LD	A1,TTBTID,A5	GET TASK ID
	ADK	A4,STKUSD	STACK USED ENTRY 
	ST	A4,TTB:SA+26,A5	SAVE IN REG A13 
	LD	A3,STKEND+STKSIZ	GET STACK SIZE 
	SRA	A3,1	CONVERT FROM BYTES TO WORDS 
	IFF	MMUPAG=1 
	ST	A1,T:ATID,A4	STORE TASK ID
	ST	A3,2,A4	STORE STACK SIZE
	LD	A1,STKEND+INTPE	GET INTERPRETER ERROR ENTRY 
	ST	A1,T:ATID-2,A4	STORE
	LDK	A1,8	STACK USED
	STR	A1,A4	STORE
	LDKL	A1,/2020	SPACE
	ST	A1,4,A4	BLANK 1:ST WORD 
	ST	A1,6,A4	BLANK 2:ND WORD 
	ST	A1,8,A4	BLANK 3:RD WORD 
	ADK	A4,10	CURRENT PROC. BLOCK POINTER
	ST	A4,TTB:SA+20,A5	SAVE IN TTAB
	LDR	A1,A12	GET END OF USER AREA
	SUK	A1,18	STACK POINTER START VALUE
	STR	A1,A4	SAVE IN CURR. PROC. BLOCK PTR
	ST	A1,2,A4	SAVE IN DISPLAY 0 
	ADK	A4,2	POINTER TO DISPLAY 0
	ST	A4,8,A1	SAVE IN STACK 
	ST	A1,TTB:SA+28,A5	SAVE STACK POINTER IN TTAB
	LD	A1,STKEND+I:EXIT	GET ADDRESS TO TERMINATING PROGRAM 
	ST	A1,-2,A12	SAVE LAST IN STACK
	ST	A1,40,A4	ADDRESS TO TERMINATING PROGRAM 
	LDR	A1,A12	END OF USER AREA
	SUK	A1,2	LAST WORD IN USER AREA
	ST	A1,38,A4	ADDRESS(STACK)+2*(STACK-SIZE)
	LDKL	A1,/F0C0	PSW
	ST	A1,-4,A12	STORE IN STACK
	LD	A1,ACBLAC,A10	ADDRESS TO PROCEDURE DESCRIPTOR 
	ST	A1,-6,A12	STORE IN STACK
	XIF
	IFT	MMUPAG=1 
	ES	A1,T:ATID,A4	STORE TASK ID
	ES	A3,2,A4	STORE STACK SIZE
	LD	A1,STKEND+INTPE	GET INTERPRETER ERROR ENTRY 
	ES	A1,T:ATID-2,A4	STORE
	LDK	A1,8	STACK USED
	ESR	A1,A4	STORE
	LDKL	A1,/2020	SPACE
	ES	A1,4,A4	BLANK 1:ST WORD 
	ES	A1,6,A4	BLANK 2:ND WORD 
	ES	A1,8,A4	BLANK 3:RD WORD 
	ADK	A4,10	CURRENT PROC. BLOCK POINTER
	ST	A4,TTB:SA+20,A5	SAVE IN TTAB
	LDR	A1,A12	GET END OF USER AREA
	SUK	A1,18	STACK POINTER AT APPLICATION START 
	ESR	A1,A4	SAVE IN CURR. PROC. BLOCK PTR
	ES	A1,2,A4	SAVE IN DISPLAY 0 
	ADK	A4,2	POINTER TO DISPLAY 0
	ES	A4,8,A1	SAVE IN STACK 
	ST	A1,TTB:SA+28,A5	SAVE STACK POINTER
	LD	A1,STKEND+I:EXIT	GET ADDR. TO TERM. PROGRAM 
	ES	A1,-2,A12	SAVE LAST IN STACK
	ES	A1,40,A4	ADDRESS TO TERMINATING CODE
	LDR	A1,A12	GET END OF USER AREA
	SUK	A1,2	LAST WORD IN USER AREA
	ES	A1,38,A4	ADDRESS(STACK)+2*(STACK-SIZE)
	LDKL	A1,/F0C0	PSW
	ES	A1,-4,A12	STORE IN STACK
	LD	A1,ACBLAC,A10	ADDRESS TO PROCEDURE DESCRIPTOR 
	ES	A1,-6,A12	STORE IN STACK
	XIF
	RTN	A14
	EJECT
********************************************************* 
*                                                       * 
*               Q:USTK - QUEUE USER TASK                * 
*               ========================                * 
*                                                       * 
*  REFERENCED IN:  SYSLDB                               * 
*                                                       * 
*  ENTRY:  A5 - TTAB ADDRESS                            * 
*          A2 - LOGICAL ADDRESS TO USER AREA            * 
*                                                       * 
*  EXIT:                                                * 
*                                                       * 
*  WORK REGISTERS:  A1,A3                               * 
*                                                       * 
*  SUBROUTINES:  ACTOT                                  * 
*                                                       * 
********************************************************* 
Q:USTK	LDKL	A3,QRTN	CONTINUATION ADDRESS
	AD	A3,STKCOM+M:REL	RELOCATE
	STR	A3,A15	STORE 
	LDKL	A3,/00C0	SET LEVEL & ENABLE 
	STR	A3,A15	STORE PSW 
	CF	A15,SAVE8	SAVE 8 REGISTERS
	LDR	A1,A2	POINTER TO START OF USER AREA
	LD	A2,STKEND+INTPA	GET INTERPRETER START ADDRESS 
	LDK	A3,0	SEGMENT NUMBER
	CF	A15,ACTOT	QUEUE TASK
	ABL	RETUR8	RELOAD 8 REGISTERS
QRTN	EQU	*
	RTN	A14
	EJECT
START2	EQU	*-PART2


* 
*  MOVE CONFIGURATION DATA
* 
	LD	A1,STKCOM+CONSTA	GET START OF CONFIGURATION DATA
	LDKL	A7,SYA200	CONTINUATION ADDRESS AFTER MOVE 
	AD	A7,STKCOM+M:REL	RELOCATE
	LD	A3,STKCOM+CONLEN	GET LENGTH OF CONFIGURATION DATA 
	ABL	STKMOV	JUMP TO STACK-RESIDENT ROUTINE
SYA200	EQU	*


* 
*  LOAD NEW RELOCATION AND STACK BASE 
* 


	LDR	A8,P	TEMPORARY STACK BASE
	LDKL	A5,REL+2	ADDRESS TO RELOCATION ROUTINE
	AD	A5,STKCOM+M:REL	RELOCATE
	CFR	A8,A5	CALL RELOCATION ROUTINE
	LD	A1,ACBLAC,A10	GET FROM-ADDRESS
	LDKL	A2,STKEND+SAVAPP	ADDRESS APPTAB SAVE AREA 
	LDK	A3,APPLEN	GET LENGTH OF APPTAB 
	IFF	MMUPAG=1 
	CALL	MOVE	MOVE APPTAB
	LDR	A2,A1	GET TO-ADDRESS 
	LDK	A3,APPLEN	GET LENGTH OF PROC. DESCR. 
	LDKL	A1,PROCDR	GET FROM-ADDRESS
	AD	A1,STKCOM+M:REL	RELOCATE
	CALL	MOVE	MOVE PROCEDURE DESCRIPTOR
	XIF
	IFT	MMUPAG=1 
	MVUS	A3	MOVE APPLICATION TABLE 
	LDR	A2,A1	GET TO-ADDRESS 
	LDK	A3,APPLEN	GET LENGTH OF PROC. DESCR. 
	SUR	A2,A3	COMPUTE TO-ADDRESS 
	LDKL	A1,PROCDR	GET FROM-ADDRESS
	AD	A1,STKCOM+M:REL	RELOCATE
	MVSU	A3	MOVE PROCEDURE DESCRIPTOR
	EJECT
* 
*  FIND LAST USED MMU TABLE ENTRY AND GET PHYSICAL PAGE ADDRESS 
* 

	LDKL	A3,MMTAB	DISPL. TO MMU TABLE
	ADR	A3,A13	RELOCATION BASE 
	CALL	INUEMT	INIT NOT USED ENTRIES IN MMU TABLE 
	CALL	MMENT	FIND FIRST UNUSED MMU ENTRY 
	ST	A1,STKCOM+FYSPAG	SAVE PHYSICAL PAGE ADDRESS 
	LDKL	A6,MMTAB	GET DISPL. TO MMU TABLE
	ADR	A6,A13	ADD RELOCATION POINTER
	ST	A6,STKCOM+MMFROM	SAVE ADDRESS TO MMU TABLE
	TLR	A6	LOAD MMU REGISTERS
	XIF
	LD	A6,ACBMMC,A10	GET FIRST ENTRY IN TCTAB
	LD	A7,ACBNPE,A10	NUMBER OF USER TASKS
I:LOOP	LDR*	A5,A6	GET TTAB ADDRESS
	ST	A5,STKCOM+TTAB	STORE
	IFT	MMUPAG=1 
	LD	A2,STKEND+COMLEN	GET LENGTH OF COMMON PART
	ST	A2,STKCOM+MAPLEN	SAVE FOR MAPPING 
	LD	A8,STKCOM+LSTADR	SAVE LAST LOGICAL ADDRESS
	LD	A2,STKEND+COMSTA	GET START OF COMMON PART 
	ST	A2,STKCOM+LSTADR	SAVE FOR MAPPING 
	CALL	INBIMA	INIT ALLOCATION BIT MAP
	ST	A8,STKCOM+LSTADR	RESTORE LAST LOGICAL ADDRESS 
	LDR	A2,A5	GET TTAB ADDRESS 
	CALL	MOVMMT	MOVE MMU TABLE 
	ST	A2,STKCOM+MMTO	SAVE ADDRRESS
	XIF
	CALL	B:UWA	BUILD USER WORK AREA
	CALL	Q:USTK	QUEUE USER TASK
	ADK	A6,2	NEXT ENTRY IN TCTAB 
	SUK	A7,1	MORE USER TASKS?
	RB(NZ)	I:LOOP	YES
	EJECT
* 
*  UPDATE END OF FREE AREA
* 


	LD	A1,STKCOM+LSTADR	GET LOWEST LOGICAL ADDRESS 
	IFT	MMUPAG=1 
	ANKL	A1,/FFF	GET DISPL. IN PHYS. PAGE
	LD	A2,STKCOM+FYSPAG	GET LAST USED PHYS. PAGE 
	SLL	A2,2	SKIP TWO LEFTMOST BITS
	ORR	A1,A2	MERGE ADDRESS
	XIF
	ST	A1,SCTEFA+2	STORE LEAST SIGN. PART
	LD	A1,STKCOM+FYSPAG	GET LAST USED PHYS. PAGE 
	SRL	A1,14	GET TWO MOST SIGN. BITS
	ST	A1,SCTEFA	STORE MOST SIGN. PART 
	CM	STKCOM+MAPLEN	CLEAR MAPPING LENGTH
LBAEND	EQU	*


* 
*  CONTINUE IN NEXT PROGRAM 
* 


	END

Full view