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

⟦9f9b06cc1⟧

    Length: 10890 (0x2a8a)
    Notes: pts_type(SC)
    Names: »SIMHIN.SC«

Derivation

└─⟦fce1dcf99⟧ Bits:30009704 Philips computer tape "KMD15"
    └─⟦this⟧ »DLCSIM/SIMHIN.SC« 

PTS(SC)

	IDENT SIMHIN	REL 1.1 78-04-21  870150240110
* 
* 
*	LOG DC TASK 
* 
* 
	ENTRY	SIMHIN 
* 
* 
*	EXTERNAL REFERENCES 
* 
* 
	EXTRN	MOL	OWN LINE MESSAGES
	EXTRN	MBL	BEGIN OF LINE MESSAGES 
	EXTRN	MIL	IN LINE MESSAGE
	EXTRN	TAB1	CHAR TABLE 1
	EXTRN	PRPOOL	PRINTER OCCUPIED BUFFER ADDRESSS
	EXTRN	PROTYP	PROCEDURE 0=HDLC,1=SDLC 
* 
* 
*	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 
* 
* 
SIMHIN	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 
	CF	A14,STAB1	SEARCH IN TABLE 1 
	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
* 
* 
*	COMMENT CHARACTER 
* 
* 
ED300	EQU	* 
	CF	A14,CRLF
	LDK	A5,0 
	CF	A14,PRTEXT
	LDR	A5,A5
	RB(Z)	EDIT 
	EJECT
	CM	XSPACE
	CF	A14,SPACE 
	CF	A14,GETCH	GET ADDRESS FIELD 
	RB(P)	ED300	COMMENT
	LDR	A5,A7	SAVE ADDRESS FIELD 
	CF	A14,GETCH	GET CONTROL FIELD 
	RB(P)	ED300	COMMENT
	LDK	A6,0 
	LDR	A1,A7
	ANK	A1,/10 
	RF(Z)	ED310
	ADK	A6,4	POLL/FINAL PRESENT
ED310	LDR	A1,A7 
	ANK	A1,/01 
	RF(NZ)	ED320 
	ADK	A6,3	I-FRAME PRESENT (NR AND NS) 
	LDK	A4,16	LOAD 'I' 
	RF	ED400 
ED320	LDR	A1,A7 
	ANK	A1,/02 
	RF(NZ)	ED330 
	ADK	A6,2	SUP-FRAME , NR PRESENT
	LDR	A1,A7
	ANK	A1,/0C 
	SRL	A1,1 
	LDR	A4,A1	LOAD TEXT NUMBER 
	RF	ED400 
ED330	LDR	A1,A7 
	ANK	A1,/EC 
	LDR	A2,A1
	XRK	A1,/80 
	RF(NZ)	ED340 
	LDK	A4,8	LOAD 'SNRM' 
	RF	ED400 
ED340	LDR	A1,A2 
	XRK	A1,/40 
	RF(NZ)	ED350 
	LDK	A4,10	LOAD 'DISC'
	RF	ED400 
ED350	LDR	A1,A2 
	XRK	A1,/60 
	RF(NZ)	ED360 
	LDK	A4,12	LOAD 'UA'
	RF	ED400 
ED360	LDR	A1,A2 
	XRK	A1,/84 
	ABL(NZ)	ED470	UNKNOWN COMMAND
	LDK	A4,14	LOAD 'CMDR'
ED400	CF	A14,EDTEX
	LDR	A1,A6
	ANK	A1,1 
	RF(NZ)	ED410	NS PRESENT
	CF	A14,EDSPAC
	RF	ED420 
ED410	LDK	A4,18	LOAD NS-TEXT
	CF	A14,EDTEX 
	LDR	A1,A7
	ANK	A1,/0E	MASK NS 
	SRL	A1,1 
	LC	A1,HEXTAB,A1
	CF	A14,STORE 
	LDK	A1,',' 
	CF	A14,STORE 
ED420	LDR	A1,A6 
	ANK	A1,2 
	RF(NZ)	ED430	NR PRESENT
	CF	A14,EDSPAC
	RF	ED440 
ED430	LDK	A4,20	LOAD NR TEXT
	CF	A14,EDTEX 
	LDR	A1,A7
	ANK	A1,/E0	MASK NR 
	SRL	A1,5 
	LC	A1,HEXTAB,A1
	CF	A14,STORE 
	LDK	A1,',' 
	CF	A14,STORE 
ED440	LDK	A4,22	LOAD P/F TEXT 
	CF	A14,EDTEX 
	LDR	A2,A6
	LDK	A1,'0' 
	ANK	A2,4 
	RF(Z)	ED450	NO POLL/FINAL
	LDK	A1,'1' 
ED450	CF	A14,STORE
	LDK	A1,',' 
	CF	A14,STORE 
	LDK	A4,24	LOAD ADR TEXT
	CF	A14,EDTEX 
	LDR	A4,A7
	LDR	A7,A5
	CF	A14,EDHEX 
	LDK	A1,',' 
	CF	A14,STORE 
ED460	CF	A14,EDHEX
	LDR	A7,A4
	LD	A1,PROTYP 
	RF(NZ)	ED467	SDLC
	LDK	A3,0 
	SLL	A7,8 
	LDK	A4,8 
ED465	LDR	A2,A7 
	ANKL	A2,/8000
	ORR	A3,A2
	SUK	A4,1 
	RF(Z)	ED466
	SRL	A3,1 
	SLL	A7,1 
	RB	ED465 
ED466	EQU	* 
	SRL	A3,8 
	LDR	A7,A3
ED467	EQU	* 
	CF	A14,EDHEX 
	ABL	ED110
ED470	LDR	A4,A7	UNKNOWN COMMAND 
	LDR	A7,A5
	RB	ED460 
	EJECT
* 
* 
*	MOVE TEXT TO PRINT BUFFER 
* 
* 
EDTEX	LD	A3,MIL,A4	GET TEXT ADDRESS 
	LDKL	A8,6
EDT10	SUKL	A8,1 
	RF(N)	EDT20	ALL MOVED
	LCR	A1,A3
	ADK	A3,1 
	CF	A14,STORE 
	RB	EDT10 
EDT20	RTN	A14 
* 
* 
*	MOVE 8 SPACE TO PRINT BUFFER
* 
* 
EDSPAC	LDKL	A8,8
EDSP10	SUKL	A8,1
	RF(N)	EDSP20	READY 
	CM	XSPACE
	CF	A14,SPACE 
	RB	EDSP10
EDSP20	RTN	A14
	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
	LDR	A2,A2
	RF(Z)	PRT090 
	CWK	A2,2 
	RF(NE)	PRT095
PRT090	LDK	A5,1 
PRT095	EQU	*
	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	LDK	A1,2 
	CW	A1,PRECBL 
	RF(E)	PRLI10	NOTHING IN BUFFER 
	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
	LKM
	DATA	1 
	LD	A8,PROCCA	RESTORE BUFFER ADDRESS
	RF(Z)	PRLI05	NO BUFFER 
	LKM	 
	DATA	-8,PRPOOL	RELEASE PRINTER 
	CM	PROCCA
PRLI05	EQU	*
	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	0	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	/60,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
* 
* 
*	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