|
|
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: 7482 (0x1d3a)
Notes: pts_type(SC)
Names: »INPREO.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/INPREO.SC«
IDENT INPREO REL 8.2 78-09-15 870105040820
*
**************************************************
*
* PHILIPS TERMINAL SYSTEM PTS
*
* INPREO = SUBROUTINE INTERPRETER
*
*
*
*
*
*
**************************************************
*
*
* THIS IS A SUBROUTINE INTERPRETER TO HANDLE SUBROUTINE
* CALLS USING THE A14 STACK. THE INTERPRETER IS CALLED
* WITH INSTRUCTION CODES /C001 - /C0FF WHERE /1 - /FF IS A
* INDEX. INDEX VAULES ARE 1,2,3,4......
* THE INDEX IS USED TO GET ABSOLUTE ADDRESS TO THE CALLED
* SUBROUTINE FROM A ADDRESS TABLE. START ADDRESS OF THIS TABLE
* IS STORED IN COMMUNICATION VECTOR TABLE. ('CVTINP')
*
* THE INTERPRETER MAY ALSO EXECUTE THE FOLLOWING TWO INSTRUCTIONS:
*
* LD R1,DISPL,A13 CALLING CODE: CXYY
*
* ST R1,DISPL,A13 CALLING CODE: DXYY
*
* X = R1 = REGISTERS A1 -A14
* YY = DISPL (DISPLACMENT)
*
*
*
EJECT
*
*
*********
* ENTRY *
*********
*
*
ENTRY IHINPT TRAP INTERRUPT ADDRESS
*
*
*
*************
* EXTERNALS *
*************
*
*
EXTRN CVTINP FUNCTION TABLE ADDRESS
EXTRN UPDLRI UPDATE LRU QUEUE
EXTRN CVTLSB,CVTAPA
EXTRN SRUN,PRUN
EXTRN TTB:SS,TTB:SP
EXTRN TTB:SA
EXTRN LD150 LOADER JUMP
EXTRN LKMDIS
EXTRN RETUR3,RETUR8
EJECT
*
*
* I H I N P T
*
* INTERPRETER TRAP HANDLER
*
IHINPT EQU *
STR A1,A15
STR A2,A15
STR A3,A15
LD A1,10,A15 LOAD TRAP ADDRESS
LDR* A2,A1 LOAD TRAP CODE
ADK A1,2
LDR A3,A2 SAVE CODE IN A3
ANKL A3,/F00 MASK OUT REGISTER CODE
RF(Z) INT200 BRANCH IF SUBROUTINE CALL
*
*
* EXECUTE LOAD/STORE INSTRUCTION
*
ST A1,10,A15 SAVE RETURN ADDRESS
SC A2,DISPL+1 STORE DISPLACMENT
SRL A3,1 SHIFT TO FIT INSTRUCTION CODE
SLL A2,3
RF(NN) INT100 BRANCH IF LOAD INSTRUCTION
ADK A3,1 INDICATE STORE INSTRUCTION
INT100 ADKL A3,/8056 GET COMPLETE INSTRUCTION CODE
ST A3,INSTR STORE INSTRUCTION TO BE EXECUTED
LDR* A3,A15 RESTORE A3
LDR* A2,A15 RESTORE A1-A2
LDR* A1,A15
INSTR DATA 0 LOAD/STORE INSTRUCTION
DISPL DATA 0 DISPLACMENT
STR A1,A15 SAVE A1
CF A15,IHSTAK SAVE CONDITION REGISTER
IHSTAK LDR* A1,A15 GET COND. REG
ST A1,6,A15 STORE IN RETURN PSW
LDR* A1,A15 DUMMY TO ADJUST STACK
LDR* A1,A15 RELOAD A1
RTN A15 RETURN TO USER PROGRAM
EJECT
*
*
* EXECUTE SUBROUTINE CALL
*
INT200 EQU *
STR A4,A15
STR A5,A15
STR A6,A15
STR A7,A15
STR A8,A15
LD A4,PRUN TTAB-ADDRESS OF RUNNING PROGRAM
ANK A2,/FF GET INDEX
CWK A2,/FF RETURN ?
RF(E) INT400 YES
LD A3,18,A15 PSW
ST A3,-6,A14 STORE ON A14 STACK
LD A3,SRUN SEGMENT POINTER
ST A3,-2,A14 STORE SP ON STACK
ST A1,-4,A14 STORE ABS ADDRESS ON STACK
LD A5,2,A3 LOAD ADDRESS
STR A5,A14
SUKL A14,8
SUK A2,1
ADR A2,A2 DOUBLE INDEX
AD A2,CVTINP ADD FUNCTION TABLE START ADDRESS
LDR* A2,A2 GET SUBROUTINE POINTER
LDR A3,A2
ANK A2,/FF
SUK A2,1
ADR A2,A2
SRL A3,8
RF(E) INT250 SEGMENT 0
SLL A3,2
LDR A1,A3
SLL A3,1
ADR A3,A1
AD A3,CVTLSB SEGMENT POINTER
ADK A3,2
LDR* A1,A3 LOADED ?
RF(N) INT300 NO
LD A1,2,A3 LOAD ADDRESS
INT230 EQU *
ADR A2,A1
LDR* A2,A2
RETTUR EQU *
ST A2,20,A15
ST A2,TTB:SA,A4 DISPATCH ADDRESS
ST A3,TTB:SP,A4 SAVE SEGMENT PIOINTER
ST A3,SRUN SEGMENT RUNNING
ST A1,TTB:SS,A4 LAST START ADDRESS
LDR A6,A3
RF(E) INT240
CF A15,UPDLRI
INT240 EQU *
ABL RETUR8
INT250 LD A1,CVTAPA
RB INT230
INT270 EQU *
NGR A2,A2
INT300 CM SRUN
CM TTB:SP,A4
CM TTB:SS,A4
ST A14,TTB:SA+28,A4
ST A13,TTB:SA+26,A4
ST A12,TTB:SA+24,A4
ST A11,TTB:SA+22,A4
ST A10,TTB:SA+20,A4
ST A9,TTB:SA+18,A4
LDKL A1,TTB:SA
ADR A1,A4
LDK A6,16
ADK A1,16
INT350 LDR* A5,A15
STR A5,A1
SUK A1,2
SUK A6,2
RB(NE) INT350
SUKL A15,16
LDKL A7,LKMDIS
ST A7,20,A15
LDKL A7,/C000
ST A7,18,A15
LDR A1,A4 TTAB ADDRESS
ABL LD150 JUMP TO LOADER
INT400 EQU *
ADKL A14,8
LD A2,-4,A14 UNMODIFIED RETURN ADRESS
LD A1,-6,A14 PSW FROM STACK
ST A1,18,A15
LD A3,-2,A14 SEGMENT POINTER
RB(E) RETTUR
SUR* A2,A14 SUB LAST LOAD ADR
LDR* A1,A3 LOADED ?
RB(N) INT270
LD A1,2,A3 LOAD ADDRESS
ADR A2,A1
RB RETTUR
*
*
END