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

⟦bb22738a5⟧

    Length: 14276 (0x37c4)
    Notes: pts_type(SC)
    Names: »DCADDR.SC«

Derivation

└─⟦7b35573c9⟧ Bits:30009690 Philips computer tape "600402"
    └─⟦this⟧ »M:AF/DCADDR.SC« 

PTS(SC)

	IDENT	DCADDR	REL 11.0 81-01-26 870105041100
* 
*********************************************** 
* 
*	PHILIPS TERMINAL SYSTEM PTS 
* 
*	DC:ADR : ADDRESS TRANSLATION ROUTINES FOR 
*	         DATA COMMUNICATION SOFTWARE
* 
************************************************
* 
	EJECT
* 
*********************************************** 
* 
*	PROGRAM DESCRIPTION 
* 
*	FOLLOWING SUBROUTINES CAN BE FOUND IN THIS MODULE : 
* 
*	FNDDNA : FINDS A DTE NETWORK ADDRESS FROM A 
*	         SYMBOLIC DTE ADDRESS 
* 
*	FNDDNT : FINDS A DTE NETWORK ADDRESS FROM A 
*	         SYMBOLIC DTE ADDRESS OF A SPECIFIED TYPE 
* 
*	GETDNA : TRANSLATES A SYMBOLIC DTE ADDRESS INTO A 
*	         DTE NETWORK ADDRESS
* 
*	GETDNT : TRANSLATES A SYMBOLIC DTE ADDRESS OF A 
*	         SPECIFIED TYPE INTO A DTE NETWORK ADDRESS
* 
*	GETDSA : TRANSLATES A DTE NETWORK ADDRESS INTO A
*	         SYMBOLIC DTE ADDRESS 
* 
	EJECT
* 
*	GETDST : TRANSLATES A DTE NETWORK ADDRESS OF A SPECIFIED
*	         TYPE INTO A SYMBOLIC DTE ADDRESS 
* 
*	GETSNA : TRANSLATES A SYMBOLIC DTE ADDRESS AND A
*	         SYMBOLIC SUB-ADDRESS INTO A NETWORK SUB-ADDRESS
* 
*	GETSNT : TRANSLATES A SYMBOLIC DTE ADDRESS OF A 
*	         SPECIFIED TYPE AND A SYMBOLIC SUB-ADDRESS
*	         INTO A NETWORK SUB-ADDRESS 
* 
*	GETSSA : TRANSLATES A SYMBOLIC DTE ADDRESS AND A
*	         NETWORK SUB-ADDRESS INTO A SYMBOLIC SUB-ADDRESS
* 
*	GETSST : TRANSLATES A SYMBOLIC DTE ADDRESS OF A SPECIFIED 
*	         TYPE AND A NETWORK SUB-ADDRESS INTO A SYMBOLIC 
*	         SUB-ADDRESS
* 
**********************************************************
* 
	EJECT
* 
*	ENTRIES 
* 
	ENTRY	FNDDNA 
	ENTRY	FNDDNT 
	ENTRY	GETDNA 
	ENTRY	GETDNT 
	ENTRY	GETDSA 
	ENTRY	GETDST 
	ENTRY	GETSNA 
	ENTRY	GETSNT 
	ENTRY	GETSSA 
	ENTRY	GETSST 
* 
* 
*	EXTERNALS 
* 
	EXTRN	SCTDCT	DC TABLE DISP. IN SYSTEM CONTROL TABLE
	EXTRN	SAVE8	SAVE REG. A1-A8 ON SYSTEM STACK
	EXTRN	RETUR8	RELOAD A1-A8 AND RETURN 
	EXTRN	IHRET8	RELOAD A1-A8 AND RETURN INHIBIT 
* 
	EJECT
* 
*	CONDITIONAL ASSEMBLY PARAMETERS 
* 
X:A	EQU	1	SUB-ADDRESSING SUPPORTED ?
SUBADR	EQU	X:A	0=NO 1=YES 
* 
CPU852	EQU	0	EXTENDED INSTRUCTION SET IF ZERO 
* 
* 
*	SYSTEM EQUATES
* 
DS	EQU	0	ENTRY INDICATORS 
DN	EQU	1
SS	EQU	2
SN	EQU	3
* 
	EJECT
* 
* 
*	ROUTINES TO GET A SYMBOLIC DTE ADDRESS FROM A 
*	DTE NETWORK ADDRESS (AND TYPE)
* 
************************************************* 
* 
*	INPUT PARAMETERS :
*		A1 = LENGTH OF DTE NETWORK ADDRESS IN SEMI-OCTETS
*		A2 = BUFFER CONTAINING DTE NETWORK ADDRESS 
*		A3 = TYPE (ONLY FOR GETDST ENTRY)
* 
*	CALLING SEQUENCES : 
*		CF A15,GETDSA
*		CF A15,GETDST
* 
*	OUTPUT PARAMETERS : 
*		A1 = SYMBOLIC DTE ADDRESS(OR -1 IF INVALID ADDRESS OR TYPE)
*		A3 = TYPE INDEX (IF GETDST ENTRY,OTHERWISE NOT CHANGED)
* 
GETDSA	EQU	*
	IFT	CPU852=0 
	MSR	8,A15	SAVE REG. A1-A8
	XIF
	IFT	CPU852=1 
	CF	A15,SAVE8	SAVE REG. A1-A8 
	XIF
	SUR	A3,A3	CLEAR TYPE INDICATOR 
	RF	GET090
GETDST	EQU	*
	IFT	CPU852=0 
	MSR	8,A15
	XIF
	IFT	CPU852=1 
	CF	A15,SAVE8 
	XIF
	EJECT
* 
GET090	EQU	*
	LDK	A4,DS	ENTRY INDICATOR
GET100	EQU	*
	LDKL	A5,-1	RESET TYPE COUNTER
	LDKL	A8,SCTDCT	POINTER TO DC ADDRESS TABLE ENTRY 
GET110	EQU	*
	LDR*	A8,A8	MORE ENTRIES ?
	RF(Z)	GET330	NO
	ADK	A3,0	TYPE SPECIFIED ?
	RF(Z)	GET120	NO
	CW	A3,4,A8	TYPE FOUND ?
	RB(NE)	GET110	NO 
	ADK	A5,1	STEP TYPE COUNTER 
* 
*	TEST ON ENTRY 
* 
GET120	EQU	*
	ADK	A4,DS	GETDSA/GETDST ENTRY ?
	RF(NZ)	GET220	NO 
* 
*	TEST ON ADDRESS LENGTH
* 
	CC	A1,6,A8	SAME ?
	RB(NE)	GET110	NO,TAKE NEXT 
* 
	EJECT
* 
*	GET ADDRESS PARAMETERS
* 
	ADK	A1,1	CONVERT.. 
	SRC	A1,1	..LENGTH..
	LDR	A4,A1	..INTO.. 
	ANK	A1,/7F	..OCTETS
	LDR	A6,A8	GET ADDRESS WHERE TO.. 
	ADK	A6,7	..FIND LAST OCTET OF..
	ADR	A6,A1	..NETWORK ADDRESS
	ADR	A2,A1	POINTER TO LAST OCTET IN BUFFER
	LDR	A7,A1	SAVE LENGTH
* 
*	COMPARE DTE NETWORK ADDRESS 
* 
GET130	EQU	*
	SUK	A1,1	LAST ONE ?
	RF(N)	GET160	YES 
	SUK	A2,1	NEXT OCTET
	SUK	A6,1	POINTER TO NEXT OCTET 
	LCR	A4,A6	GET ONE DC ADDRESS TABLE OCTET 
	CCR	A4,A2	COMPARE WITH DRIVER BUFFER 
	RB(E)	GET130	EQUAL 
* 
	EJECT
* 
*	COMPARED OCTETS NOT EQUAL 
* 
GET140	EQU	*
	SUR	A7,A1	FIRST ONE ?
	SUK	A7,1	. 
	RF(NZ)	GET150	NO 
	ADK	A4,0	SEMI-OCTET BOUNDARY ? 
	RF(N)	GET150	NO
	ANK	A4,/F0	MASK DRIVER SEMI-OCTET
	LCR	A1,A2	GET DC ADDRESS TABLE OCTET 
	ANK	A1,/F0	MAKE IT SEMI-OCTET
	CWR	A4,A1	EQUAL ?
	RF(E)	GET160	YES 
GET150	EQU	*
	LC	A1,6,A8	RELOAD LENGTH 
	LDK	A4,DS	RELOAD ENTRY INDICATOR 
	RB	GET110	TRY NEXT 
* 
*	COMMON EXIT ROUTINE 
* 
GET160	EQU	*
	LD	A1,2,A8	GET SYMBOLIC DTE ADDRESS
GET170	EQU	*
	LDR	A3,A3	TYPE TESTED ?
	RF(Z)	GET180	NO
	ST	A5,12,A15	SAVE TYPE COUNTER IN A3 
GET180	EQU	*
	ST	A1,16,A15	SAVE A1 
	IFT	CPU852=0 
	ABL	RETUR8	RETURN TO CALLER
	XIF
	IFT	CPU852=1 
	LD	A1,18,A15	GET PSW 
	ANK	A1,/40	ENABLE MODE ? 
	ABL(NZ)	RETUR8	YES 
	ABL	IHRET8	RETURN INHIBIT TO CALLER
	XIF
* 
	EJECT
* 
* 
*	ROUTINES TO FIND OR GET A DTE NETWORK ADDRESS FROM A
*	SYMBOLIC NETWORK ADDRESS (AND TYPE) 
* 
******************************************************
* 
*	INPUT PARAMETERS :
*		A1 = SYMBOLIC DTE ADDRESS
*		A2 = BUFFER (ONLY IF GET... ENTRY) 
*		A3 = TYPE (ONLY IF ...DNT ENTRY) 
* 
*	CALLING SEQUENCES : 
*		CF A15,FNDDNA
*		CF A15,FNDDNT
*		CF A15,GETDNA
*		CF A15,GETDNT
* 
*	OUTPUT PARAMETERS : 
*		A1 = LENGTH OF DTE NETWORK ADDRESS IN SEMI-OCTETS
*		     (OR -1 IF ILLEGAL SYMBOLIC DTE ADDRESS OR TYPE) 
*		A2 = NEXT FREE ADDRESS IN BUFFER (IF GET... ENTRY) 
*		A2 = POINTER TO NETWORK ADDRESS (IF FND... ENTRY)
*		A3 = TYPE INDEX (IF ...DNT ENTRY,OTHERWISE NOT CHANGED)
* 
FNDDNT	EQU	*
	IFT	CPU852=0 
	MSR	8,A15	SAVE REG. A1-A8
	XIF
	IFT	CPU852=1 
	CF	A15,SAVE8	SAVE REG. A1-A8 
	XIF
	SUR	A2,A2	CLEAR BUFFER ADDRESS 
	RF	GET210
* 
	EJECT
* 
FNDDNA	EQU	*
	IFT	CPU852=0 
	MSR	8,A15
	XIF
	IFT	CPU852=1 
	CF	A15,SAVE8 
	XIF
	SUR	A2,A2	CLEAR BUFFER ADDRESS 
	RF	GET200
GETDNT	EQU	*
	IFT	CPU852=0 
	MSR	8,A15
	XIF
	IFT	CPU852=1 
	CF	A15,SAVE8 
	XIF
	RF	GET210
GETDNA	EQU	*
	IFT	CPU852=0 
	MSR	8,A15
	XIF
	IFT	CPU852=1 
	CF	A15,SAVE8 
	XIF
GET200	EQU	*
	SUR	A3,A3	CLEAR TYPE INDICATOR 
GET210	EQU	*
	LDK	A4,DN	SET ENTRY INDICATOR
	RB	GET100	RUN
* 
	EJECT
* 
*	TEST ON SYMBOLIC ADDRESS
* 
GET220	EQU	*
	CW	A1,2,A8	FOUND ? 
	RB(NE)	GET110	NO 
* 
*	GET ADDRESS PARAMETERS
* 
	LDK	A1,0 
	LC	A1,6,A8	GET DTE NETWORK ADDRESS LENGTH
	LDR	A7,A1	GET LENGTH 
	ADK	A7,1	CONVERT LENGTH..
	SRC	A7,1	..INTO..
	ANK	A7,/7F	..OCTETS
	LDR	A6,A8	GET ADDRESS WHERE TO FIND..
	ADK	A6,7	..NETWORK ADDRESS 
	IFT	SUBADR=1 
* 
*	TEST ON ENTRY 
* 
	SUK	A4,SS	...DNA/...DNT ENTRY ?
	RF(NN)	GET310	NO 
	XIF
	LDR	A2,A2	NETWORK ADDRESS WANTED ? 
	RF(NZ)	GET240	YES
	LDR	A2,A6
* 
	EJECT
* 
*	SAVE PARAMETERS 
* 
GET230	EQU	*
	ST	A2,14,A15	SAVE NEXT ADDRESS 
	RB	GET170	EXIT 
* 
*	GET NETWORK ADDRESS 
* 
GET240	EQU	*
	SUK	A7,1	READY ? 
	RB(N)	GET230	YES 
	LCR	A4,A6	MOVE ONE.. 
	SCR	A4,A2	..OCTET
	ADK	A2,1 
	ADK	A6,1 
	RB	GET240	TAKE NEXT
* 
	IFT	SUBADR=1 
	EJECT
* 
* 
*	ROUTINES TO GET A SYMBOLIC SUB-ADDRESS FROM A 
*	SYMBOLIC DTE ADDRESS (OF A SPECIFIED TYPE) AND A
*	NETWORK SUB-ADDRESS 
* 
****************************************************
* 
*	INPUT PARAMETERS :
*		A1 = SYMBOLIC DTE ADDRESS
*		A2 = NETWORK SUB-ADDRESS 
*		A3 = TYPE (ONLY IF GETSST ENTRY) 
* 
*	CALLING SEQUENCE :
*		CF A15,GETSSA
*		CF A15,GETSST
* 
*	OUTPUT PARAMETERS : 
*		A1 = SYMBOLIC SUB-ADDRESS(OR -1 IF ILLEGAL SYMBOLIC
*		     DTE ADDRESS,TYPE OR NETWORK SUB-ADDRESS)
*		A3 = TYPE INDEX (ONLY IF GETSST ENTRY,OTHERWISE NOT CHANGED) 
* 
GETSST	EQU	*
	IFT	CPU852=0 
	MSR	8,A15
	XIF
	IFT	SUBADR=1 
	IFT	CPU852=1 
	CF	A15,SAVE8	SAVE REG. A1-A8 
	XIF
	IFT	SUBADR=1 
	RF	GET300
* 
	EJECT
* 
GETSSA	EQU	*
	IFT	CPU852=0 
	MSR	8,A15
	XIF
	IFT	SUBADR=1 
	IFT	CPU852=1 
	CF	A15,SAVE8 
	XIF
	IFT	SUBADR=1 
	SUR	A3,A3	CLEAR TYPE INDICATION
GET300	EQU	*
	LDK	A4,SS	SET ENTRY INDICATOR
GET305	EQU	*
	RB	GET100	RUN
* 
*	TEST ON ENTRY 
* 
GET310	EQU	*
	ADR	A6,A7	GET # OF ENTRIES IN
	LCR	A7,A6	..SUB-ADDRESS TABLE
	LDR	A4,A4
	RF(NZ)	GET410	NOT GETSSA/GETSST ENTRY
* 
*	GET SYMBOLIC SUB-ADDRESS
* 
	LDK	A1,/30	RESET SYMBOLIC SUB-ADDRESS INDICATOR
GET320	EQU	*
	ADK	A6,1	NEXT ENTRY
	CCR	A2,A6	COMPARE NETWORK SUB-ADDRESSES
	RB(E)	GET170	EXIT !
	ADK	A1,1	STEP SYMBOLIC SUB-ADDRESS 
	SUK	A7,1	MORE ENTRIES ?
	RB(P)	GET320	YES 
	XIF
* 
	EJECT
* 
*	INCORRECT PARAMETERS
* 
	IFT	SUBADR=0 
GETSNA	EQU	*	DUMMY ENTRIES
GETSNT	EQU	*
GETSSA	EQU	*
GETSST	EQU	*
	XIF
GET330	EQU	*
	LDKL	A1,-1	ERROR INDICATION
	RB	GET180	EXIT 
* 
	IFT	SUBADR=1 
	EJECT
* 
* 
*	ROUTINES TO GET A NETWORK SUB-ADDRESS FROM A
*	SYMBOLIC DTE ADDRESS (OF SPECIFIED TYPE) AND A
*	SYMBOLIC SUB-ADDRESS
* 
*************************************************** 
* 
*	INPUT PARAMETERS :
*		A1 = SYMBOLIC DTE ADDRESS
*		A2 = SYMBOLIC SUB-ADDRESS
*		A3 = TYPE (ONLY IF GETSNT ENTRY) 
* 
*	CALLING SEQUENCES : 
*		CF A15,GETSNA
*		CF A15,GETSNT
* 
*	OUTPUT PARAMETERS : 
*		A1 = NETWORK SUB-ADDRESS(OR -1 IF ILLEGAL SYMBOLIC 
*		     DTE ADDRESS,TYPE OR SYMBOLIC SUB-ADDRESS) 
*		A3 = TYPE INDEX (ONLY IF GETSNT ENTRY,OTHERWISE NOT CHANGED) 
* 
GETSNT	EQU	*
	IFT	CPU852=0 
	MSR	8,A15	SAVE REG. A1-A8
	XIF
	IFT	SUBADR=1 
	IFT	CPU852=1 
	CF	A15,SAVE8	SAVE REG. A1-A8 
	XIF
	IFT	SUBADR=1 
	RF	GET400
* 
	EJECT
* 
GETSNA	EQU	*
	IFT	CPU852=0 
	MSR	8,A15
	XIF
	IFT	SUBADR=1 
	IFT	CPU852=1 
	CF	A15,SAVE8 
	XIF
	IFT	SUBADR=1 
	SUR	A3,A3	CLEAR TYPE INDICATOR 
GET400	EQU	*
	LDK	A4,SN	SET ENTRY INDICATOR
	RB	GET305	RUN
* 
*	GET NETWORK SUB-ADDRESS 
* 
GET410	EQU	*
	ANK	A2,/FF	ONLY ONE BYTE SIGNIFICANT 
	SUK	A2,/2F 
	RB(NP)	GET330	INVALID SYMBOLIC SUB-ADDRESS 
	SUR	A7,A2	SYMBOLIC SUB-ADDRESS WITHIN TABLE ?
	RB(N)	GET330	NO
	ADR	A6,A2	SET POINTER(INDEX STARTS WITH /30) 
	LCR	A1,A6	GET NETWORK SUB-ADDRESS
	RB	GET170	EXIT 
* 
	XIF
* 
	END

Full view