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

⟦bd9a38584⟧

    Length: 11044 (0x2b24)
    Notes: pts_type(SC)
    Names: »LOGIN.SC«

Derivation

└─⟦8ac270cab⟧ Bits:30009705 Philips computer tape "LINSIM8-2"
    └─⟦this⟧ »LINSIM82/LOGIN.SC« 
└─⟦fce1dcf99⟧ Bits:30009704 Philips computer tape "KMD15"
    └─⟦this⟧ »LINSIM/LOGIN.SC« 

PTS(SC)

	IDENT LOGIN  	REL 1.1 82-09-29  870150040110 
			#2 
			UPDATE #0 77.01.20 JES 
* 
* 
*	LOG DC TASK 
* 
* 
	ENTRY	LOGIN
* 
* 
*	EXTERNAL REFERENCES 
* 
* 
	EXTRN	MOL	OWN LINE MESSAGES
	EXTRN	MBL	BEGIN OF LINE MESSAGES 
	EXTRN	TAB1	CHAR TABLE 1
	EXTRN	TAB2	CHAR TABLE 2
	EXTRN	PRPOOL	PRINTER OCCUPIED BUFFER ADDRESSS
	EXTRN	TAB3 
	EXTRN	TAB4 
	EXTRN	CODE 
	EXTRN	ETX
	EXTRN	ETB
	EXTRN	SYN
	EXTRN	PRFLAG	
* 
* 
*	EQUATES 
* 
* 
* 
* 
* 
*	RELATIVE ECB EQUATES
* 
* 
ECBBA	EQU	2 
ECBRL	EQU	4 
ECBEL	EQU	6 
ECBRC	EQU	8 
ECBCW	EQU	/A
* 
	RES	20	A14 STACK 
STB	EQU	*-2 
PROCCA	DATA	0	ADDRESS TO PRINTER OCCUPIED BUFFER
	EJECT
* 
* 
*	INITIALIZE SYSTEM 
* 
*	A9=BUFFER POINTER 
*	A10=CHARACTER COUNTER 
* 
* 
LOGIN	LDKL	A14,STB	LOAD STACK BASE
	SUR	A10,A10	RESET CHARACTER COUNTER
	LDK	A1,2 
	ST	A1,PRECBL	EMPTY PRINTER BUFFER
	LDK	A1,1 
	ST	A1,XSPACE	SET SPACE INDICATOR 
	EJECT
* 
* 
*	EDIT CHARACTERS FROM LINE 
* 
* 
EDIT	CF	A14,GETCH	GET CHARACTER 
ED000	EQU	* 
	RF(P)	ED300	COMMENT
	ANK	A7,/FF 
	CWK	A7,/FF 
	RF(E)	ED110	MARK HOLD: PRINT THIS BUFFER 
	CW	A7,ETX
	RF(E)	ED150	ETX: READ LRC
	CW	A7,ETB
	RF(E)	ED150	ETB: READ LRC
	LD	A1,CODE 
	RF(NZ)	ED200	EBCDIC
	CF	A14,STAB1	SEARCH IN TABLE 1 
	RF(Z)	ED100	FOUND
	CF	A14,STAB2	SEARCH IN TABLE 2 
	RF(Z)	ED100	FOUND
ED050	EQU	* 
	CF	A14,EDHEX	NOT FOUND: EDIT IT HEXADECIMAL
ED100	LDK	A1,100
	CW	A1,PRECBL 
	RB(G)	EDIT	LINE NOT FULL 
ED110	CF	A14,PRLINE	PRINT LINE
	RB	EDIT
ED150	EQU	* 
	LD	A1,CODE 
	RF(NZ)	ED250	EBCDIC
	CF	A14,STAB2	PUT ETX OR ETB IN BUFFER
ED160	EQU	* 
	CF	A14,GETCH	GET LRC 
	RB(NZ)	ED000	COMMENT OR POLL 
	ANK	A7,/FF 
	CF	A14,EDHEX	EDIT LRC HEXADECIMAL
	RB	ED100 
ED200	EQU	* 
	CF	A14,STAB3 
	RB(Z)	ED100	FOUND
	CF	A14,STAB4 
	RB(Z)	ED100	FOUND
	RB	ED050	EDIT HEXA 
ED250	EQU	* 
	CF	A14,STAB4 
	CF	A14,GETCH	GET CRC 
	RB(NZ)	ED000	COMMENT OR POLLCOUNTER
	ANK	A7,/FF 
	CF	A14,EDHEX 
	RB	ED160 
* 
* 
*	COMMENT CHARACTER 
* 
* 
ED300	EQU	* 
	CF	A14,CRLF
	CF	A14,PRTEXT
	RB	EDIT
	EJECT
* 
* 
*	PRINT TEXT ON PRINTER 
* 
*	A7 CONTAINS CONTROL CHARACTER 
* 
* 
PRTEXT	LDR	A6,A7	SAVE CHARACTER 
	CF	A14,PRLINE	RELEASE PRINT BUFFER 
	ADR	A6,A6	DOUBLE FOR INDEXING
	ANK	A6,/FF 
	LDR	A2,A6
	ANK	A2,/7F 
	LD	A3,MOL,A2	GET TEXT ADDRESS
	CWR	A2,A6
	RF(NE)	PRT100	OWN LINE TEXT
	LD	A3,MBL,A2	BEGINNING OF LINE 
PRT100	LDR*	A4,A3	GET TEXT LENGTH 
	CWK	A1,100 
	RF(G)	PRT130	INVALID LENGTH: SKIP TEXT 
	ADK	A3,2	SKIP LENGTH 
PRT110	SUK	A4,1 
	RF(N)	PRT120	ALL MOVED 
	LCR	A1,A3
	ADK	A3,1 
	CF	A14,STORE 
	RB	PRT110
PRT120	ANK	A6,/80 
	RF(Z)	PRT130	BEGINNING OF LINE 
	CF	A14,PRLINE	PRINT OWN LINE 
PRT130	RTN	A14
	EJECT
* 
* 
*	PRINT ONE LINE ON PRINTER 
* 
* 
PRLINE	EQU	*	 
	LDK	A1,2	
	CW	A1,PRECBL 
	RF(E)	PRLI10	NOTHING IN BUFFER 
	LDK	A1,/2B	SET CONTROL WORD
	ST	A1,PRBUF
	LDK	A7,1 
	LKM
	DATA	-7,PRPOOL	OCCUPIE PRINTER 
	ST	A8,PROCCA	SAVE BUFFER ADDRESS 
	LDK	A7,/86	STD WRITE AND WAIT
	LDKL	A8,PRECB
	LDK	A1,'P'	PRINTER ENABLED	
	CW	A1,PRFLAG	
	RF(E)	PRLI02	NO,SKIP IT	 
	LKM
	DATA	1 
PRLI02	EQU	*	 
	LDK	A1,2 
	ST	A1,PRECBL 
	CM	PRBUF	SET CONTROL-WORD = 0
	CF	A14,CRLF
	LDK	A7,/86	STANDARD WRITE 'CRLF' 
	LDKL	A8,PRECB
	LDK	A1,'P'	PRINTER ENABLED	
	CW	A1,PRFLAG	
	RF(E)	PRLI03	NO,SKIP IT	 
	LKM
	DATA	1 
PRLI03	EQU	*	 
	LD	A8,PROCCA	RESTORE BUFFER ADDRESS
	RF(Z)	PRLI05	NO BUFFER 
	LKM	 
	DATA	-8,PRPOOL	RELEASE PRINTER 
	CM	PROCCA
PRLI05	EQU	*
	LDK	A1,2 
	ST	A1,PRECBL	RESET LENGTH
	LDK	A1,1 
	ST	A1,XSPACE	SET SPACE INDICATOR 
PRLI10	RTN	A14
PRECB	DATA	/31,PRBUF,2,0,0,0
PRECBL	EQU	PRECB+4	REQUESTED LENGTH 
PRBUF	DATA	/2B	CONTROL WORD 
	RES	60 
	EJECT
* 
* 
*	GET ONE CHARACTER FROM LINE TO A7 
*	CR=0 IF NORMAL CHARACTER
*	CR=1 IF COMMENT CHARACTER 
* 
* 
GETCH	SUKL	A10,1
	RF(NN)	GETCH1	FETCH FROM BUFFER
	LDK	A7,/81	READ NEW BUFFER 
	LDKL	A8,LGECB
	LKM
	DATA	1 
	LD	A10,ECBEL,A8	GET EFFECTIVE LENGTH 
	SUKL	A10,1 
	LD	A9,ECBBA,A8	GET BUFFER ADDRESS
GETCH1	LCR	A7,A9	LOAD CHARACTER 
	ADKL	A9,1	INCREMENT POINTER
	LC	A1,ECBRC,A8 
	ADKL	A14,4	SKIP STACK FOR RETURN 
	ANK	A1,/20 
	RF(NZ)	GETCH3	COMMENT OR POLL COUNTER
	ABR*	A14	RETURN WITH NORMAL CHARACTER
	EJECT
GETCH3	SUK	A1,1	SET CR
	ABR*	A14	RETURN
* 
LGECB	DATA	/61,LGBUF,20,0,0,0 
LGBUF	RES	20
	EJECT
* 
* 
*	EDIT	CHAR FROM A7 IN HEXADECIMAL FORM 
* 
* 
EDHEX	CF	A14,SPACE
	LDK	A1,'/' 
	CF	A14,STORE 
	LDR	A1,A7
	SRL	A1,4 
	LC	A1,HEXTAB,A1
	CF	A14,STORE	1ST CHAR
	LDR	A1,A7
	ANK	A1,/F
	LC	A1,HEXTAB,A1
	CF	A14,STORE	2ND CHAR
	CF	A14,SPACE	SPACE 
	RTN	A14
HEXTAB	DATA	'0123456789ABCDEF'
	EJECT
* 
* 
*	STORE CHAR FROM A1 IN PRINT BUFFER
* 
* 
STORE	LD	A2,PRECBL
	SC	A1,PRBUF,A2 
	IM	PRECBL
	LDK	A1,0 
	ST	A1,XSPACE 
	RTN	A14
	EJECT
* 
* 
*	EDIT CHARACTER DECIMAL FROM A7
* 
* 
EDDEC	LDK	A4,0	RESET INDEX
EDD100	LDK	A1,'0'	ASCII ZERO AT START 
EDD110	CW	A7,DECADE,A4
	RF(L)	EDD200	NO MORE SUBTRACTIONS
	SU	A7,DECADE,A4	SUBTRACT AND INCREMENT 
	ADK	A1,1 
	RB	EDD110
EDD200	CF	A14,STORE	STORE DIGIT 
	ADK	A4,2 
	CWK	A4,10
	RB(NE)	EDD100	NEXT DIGIT 
	RTN	A14	CONVERSION DONE
DECADE	DATA	10000,1000,100,10,1 
	EJECT
* 
* 
*	SEARCH FOR A7 CHAR IN TABLE 1 
* 
* 
*	CR=1 IF NOT FOUND ELSE
*	CR=0 AND CORRESPONDING CODE IS STORED 
* 
* 
STAB1	LDK	A2,3	SET INDEX
	LDK	A1,1	CR IF NOT FOUND 
STAB10	CW	A2,TAB1 
	RF(G)	STAB30	END OF TABLE
	CC	A7,TAB1,A2
	RF(E)	STAB20	FOUND 
	ADK	A2,2 
	RB	STAB10	TRY NEXT 
STAB20	LC	A1,TAB1-1,A2	GET CORRESPONDING CODE 
	CF	A14,STORE	AND STORE IT
	LDK	A1,0 
STAB30	LC	A2,2,A14	SET CR FOR RETURN
	ANK	A2,/FC 
	ANK	A1,3 
	ADR	A1,A2
	SC	A1,2,A14
	RTN	A14
	EJECT
* 
* 
*	SEARCH FOR A7 CHAR IN TABLE 3 
* 
* 
*	CR=1 IF NOT FOUND ELSE
*	CR=0 AND CORRESPONDING CODE IS STORED 
* 
* 
STAB3	LDK	A2,3	SET INDEX
	LDK	A1,1	CR IF NOT FOUND 
STA10	CW	A2,TAB3
	RF(G)	STA30	END OF TABLE 
	CC	A7,TAB3,A2
	RF(E)	STA20	FOUND
	ADK	A2,2 
	RB	STA10	TRY NEXT
STA20	LC	A1,TAB3-1,A2	GET CODE
	CF	A14,STORE	AND PRINT IT
	LDK	A1,0 
STA30	LC	A2,2,A14	SET CR FOR RETURN 
	ANK	A2,/FC 
	ANK	A1,3 
	ADR	A1,A2
	SC	A1,2,A14
	RTN	A14
	EJECT
* 
* 
*	SEARCH FRO A7 CHAR IN TABLE 2 
* 
*	CR=1 IF NOT FOUND 
*	CR=0 IF FOUND AND CORRESPONDING TEXT IN BUFFER
* 
* 
STAB2	LDK	A4,3	SET INDEX
	LDK	A1,1	CR IF NOT FOUND 
STAB40	CW	A4,TAB2 
	RF(G)	STAB80	END OF TABLE
	CC	A7,TAB2,A4
	RF(E)	STAB50	FOUND 
	ADK	A4,4 
	RB	STAB40	NEXT CHAR
STAB50	CF	A14,SPACE 
	LD	A3,TAB2+1,A4	GET STRING ADDRESS 
	LDR*	A4,A3	GET LENGTH
	ADK	A3,2 
STAB60	SUK	A4,1 
	RF(N)	STAB70 
	LCR	A1,A3	MOVE TEXT
	ADK	A3,1 
	CF	A14,STORE 
	RB	STAB60
STAB70	CF	A14,SPACE	SPACE 
	LDK	A1,0 
STAB80	RB	STAB30	SET CR FOR RETURN
	RTN	A14
	EJECT
* 
* 
*	SEARCH FRO A7 CHAR IN TABLE 4 
* 
*	CR=1 IF NOT FOUND 
*	CR=0 IF FOUND AND CORRESPONDING TEXT IN BUFFER
* 
* 
STAB4	LDK	A4,3	SET INDEX
	LDK	A1,1	CR IF NOT FOUND 
STA40	CW	A4,TAB4
	RF(G)	STA80	END OF TABLE 
	CC	A7,TAB4,A4
	RF(E)	STA50	FOUND
	ADK	A4,4 
	RB	STA40	NEXT CHAR 
STA50	CF	A14,SPACE
	LD	A3,TAB4+1,A4	GET STRING ADDRESS 
	LDR*	A4,A3	GET LENGTH
	ADK	A3,2 
STA60	SUK	A4,1
	RF(N)	STA70
	LCR	A1,A3	PRINT TEXT 
	ADK	A3,1 
	CF	A14,STORE 
	RB	STA60 
STA70	CF	A14,SPACE	SPACE
	LDK	A1,0 
STA80	RB	STA30
	RTN	A14
	EJECT
* 
* 
*	PUT SPACE IN BUFFER 
* 
* 
SPACE	LD	A1,XSPACE
	RF(NZ)	SPA100
	LDK	A1,/20 
	CF	A14,STORE 
	IM	XSPACE
SPA100	RTN	A14
XSPACE	DATA	0	SPACE INDICATOR 
* 
* 
*    CRLF IN BUFFER 
* 
* 
CRLF	EQU	*
	CF	A14,SPACE 
	LDK	A1,/0D 
	CF	A14,STORE 
	LDK	A1,/0A 
	CF	A14,SPACE 
	RTN	A14
**
* 
	END

Full view