|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 20434 (0x4fd2)
Notes: pts_type(SC)
Names: »SYSLBA.SC«
└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
└─⟦this⟧ »TOSSWORK/SYSLBA.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