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

⟦7b87dbe29⟧

    Length: 14094 (0x370e)
    Notes: pts_type(SC)
    Names: »PRT.SC«

Derivation

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

PTS(SC)

	IDENT PRT 	REL 1.2 78-09-15  870150540120

************************************************************************* 
* 
*   P R T  :  MODULE PRINTING MAIN FRAME MESSAGES ADDRESSED TO THE
*            GENERAL PRINTER. LOCAL HARDCOPY PRINTING IS ALSO 
*            CARRIED OUT IN THIS MODULE 
* 
**********************************************************************
* 
	EJECT


* 
* 
*	ENTRY PARAMETERS
* 
* 
	ENTRY	HARDCP 
	ENTRY	SNBUSY 
	ENTRY	PRINT
* 
* 
*	EXTERNAL PARAMETERS 
* 
* 
	EXTRN	DCRED	READ DC-LINE 
	EXTRN	UPDATE	UPDATE BUFFER CONTENTS
	EXTRN	REL:BU	RELEASE RECEIVE BUFFER
* 
	EXTRN	I:EVA0	CREDIT EVALUATION ROUTINE 
* 
	EXTRN	EMULA	START
	EJECT
* 
* 
*	EQUATES 
* 
* 
* 
TIMDC	EQU	300	DC TIME OUT VALUE: 30 S 
ESC	EQU	/1B 
SBA	EQU	/11 
NULL	EQU	/7F	NULL CHARACTER 
NEWLIN	EQU	/7E	NEW LINE CHARACTER 
ENDMES	EQU	/7D	END MESSAGE CHAR 
FORMFD	EQU	/7C	FORMFEED CHAR. 
* 
* 
*	COMMON EQU FOR ECB HANDLING 
* 

ECBBA	EQU	2 
ECBRL	EQU	4 
ECBEL	EQU	6 
ECBRC	EQU	8 
ECBCW	EQU	10
	EJECT

* 
* 
*	CREDIT USED EQU 
* 
* 
*	ECB REL. ADDRESSES
* 
* 
DIS	EQU	20
* 
ECB1	EQU	-DIS-8 
ECB2	EQU	ECB1-DIS 
ECB3	EQU	ECB2-DIS 
ECB4	EQU	ECB3-DIS 
ECB5	EQU	ECB4-DIS 
* 
ECBDC	EQU	ECB1
ECBDCT	EQU	ECB2 
ECBVDU	EQU	ECB3 
ECBKB	EQU	ECB4
ECBSD	EQU	ECB5
ECBPR	EQU	ECB3
* 
* 
*	BASE ADDRESS FOR TCA AND ECB
* 
TCABAS	EQU	A11
CREBAS	EQU	A13	ECB
	EJECT

* 
* 
*	TCA REL. ADDRESSES
* 
TCT01	EQU	0 
PRINTER	EQU	TCT01+2 
BVDU	EQU	PRINTER+2	VDU SCREEN BUFFER
PCURS	EQU	BVDU+1920	CURSOR ADDRESS , BINARY 
ATTRIB	EQU	PCURS+2	LAST ATTRIBUTE CHAR
CURATT	EQU	ATTRIB+2 
WCC	EQU	CURATT+2	WCC/CCC CHARACTER
KBINH	EQU	WCC+2	KEYBOARD INHIBIT INDICATOR
LINCNT	EQU	KBINH+2	LINE COUNTER 
DCLENG	EQU	LINCNT+2	DC READ EFFECTIVE LENGTH
DCADDR	EQU	DCLENG+2	DC SUBTERMINAL ADDRESS
TCTGPL	EQU	DCADDR+2 
INTATT	EQU	TCTGPL+2	INTENSITY ATTRIBUTE 
OFFFLG	EQU	INTATT+2	OFFLINE FLAG
LOCK	EQU	OFFFLG+2	COPY LOCK 
VDUBSY	EQU	LOCK+2	VDU BUSY WHEN HARDCOPY
COPNO	EQU	VDUBSY+2	HARDCOPY TASK IDENTITY 
CRE	EQU	COPNO+2	CREDIT ECB:S BASE ADDRESS 
VDUT.A	EQU	CRE+2	T:A BASE ADDRESS 
CCC	EQU	VDUT.A+2	COPY COMMAND CONTROL CHARACTER 
* 
* 
PRBUSY	EQU	-2	PRINTER BUSY. OCCUPIES BOOLEAN VARAIBLE 
	EJECT

* 
* 
LBVDU	EQU	1920	1920 CHARACTER DISPLAY 
LPAGE	EQU	48	LINES ON ONE PAGE
GTPLIN	EQU	112	LINELENGTH MAX 112 CHAR. 'NL' ORDER IN 
*			BUFFER DETERMINES PRINT LINE LENGTH 
* 

************************************************* 
* 
*   CONDITIONAL ASSEMBLY PARAMETERS 
* 
***************************************** 

OFLIN	EQU	0	SHOULD ALWAYS BE SET TO ZERO
COPL	EQU	0	COPY LOCK IF ::= 1 
EBCDIC	EQU	1	EBCDIC CODE IF SET TO " ONE ", ELSE ASCII

	EJECT

****************************************
* 
*   SELECT ADDRESS TABLE
* 
******************************

SELGTP	EQU	*
	IFT	EBCDIC=1	EBCDIC DEVICE ADDRESSES 
	DATA	/D4 
	DATA	/D3 
	DATA	/D2 
	DATA	/D1 
	DATA	/50 
	DATA	/4F 
	DATA	/4E 
	DATA	/4D 
	DATA	/4C 
	DATA	/4B 
	DATA	/4A 
	DATA	/C9 
	DATA	/C8 
	DATA	/C7 
	DATA	/C6 
	DATA	/C5 
	DATA	/C4 
	DATA	/C3 
	DATA	/C2 
	DATA	/C1 
	DATA	/40 
	XIF

	IFF	EBCDIC=1	ASCII DEVICE ADDRESSES
	DATA	/4D 
	DATA	/4C 
	DATA	/4B 
	DATA	/4A 
	DATA	/26 
	DATA	/21 
	DATA	/2B 
	DATA	/28 
	DATA	/3C 
	DATA	/2E 
	DATA	/5B 
	DATA	/49 
	DATA	/48 
	DATA	/47 
	DATA	/46 
	DATA	/45 
	DATA	/44 
	DATA	/43 
	DATA	/42 
	DATA	/41 
	DATA	/20 
	XIF
	EJECT
PRINT	EQU	* 
	CF	A14,I:EVA0
	LDR	TCABAS,A9	LOAD ASSEM TCA BASE
	CF	A14,I:EVA0	GET TASK INDEX 
	LDR*	A9,A9 
	ADR	A9,A9
	LD	A1,SELGTP,A9	GET SELECT ADDRESS 
	ST	A1,DCADDR,TCABAS
	CF	A14,EMULA 
	ST	CREBAS,CRE,TCABAS	

PRNT:1	LDK	A1,0	NO TIMEOUT SUPERVISION


READDC	LDKL	A8,ECBDCT	DATCOM ECB
	ADR	A8,CREBAS
	ST	A1,ECBCW,A8	SAVE TIMEOUT VALUE

	LDR	A1,TCABAS	ACTIVATION PARAMETER 
	LDK	A7,X'82'	READ ORDER
	LKM
	DATA	-1
	DATA	PRNT:2	ACTIVATION ADDRESS 

	LKM		EXIT
	DATA	3 
	EJECT


******************************************************************* 
* 
*   GTP-TASK IS ACTIVATED AT THIS ADDRESS WHEN
*   THE DC-READ IS TERMINATED 
* 
*********************************************************************** 



PRNT:2	LDR	TCABAS,A1	WORK AREA BASE ADDRESS 
	LD	CREBAS,CRE,TCABAS	T:A BASE ADDRESS
	LD	A14,2,CREBAS	STACK BASE 


	IFT	OFLIN=1
********************************************************
* 
*   IF OFFLINE SWITCH IS SEY : RELEASE RECEIVE BUFFER 
*                              AND READ AGAIN 
* 
**********************************************************

	LD	A1,OFFFLG,TCABAS	ONLINE/OFFLINE FLAG
	RF(Z)	ON:LIN	STILL ONLINE
	CF	A14,REL:BU	RELEASE RECEIVE BUFFER 
	CF	A14,SNBUSY	SET DEVICE FREE FOR DC-LINE
	RB	PRNT:1	READ DC AGAIN
ON:LIN	EQU	*
	XIF



	LDKL	A8,ECBDCT	DATCOM ECB-ADDRESS
	ADR	A8,CREBAS	ADD BASE ADDRESS 



	LD	A1,ECBEL,A8	EFFECTIVE LENGTH
	ST	A1,DCLENG,TCABAS	SAVE IT IN SAVE AREA 

PRNT:3	CF	A14,UPDATE	MOVE FROM DC TO PRINTER BUFFER;

	IFT	COPL=1 
	LD	A1,LOCK,TCABAS	COPY LOCK SET ???
	RF(Z)	PRNT:4	NO. PRINT VDU BUFFER CONTENTS 
	CM	LOCK,TCABAS	YES!!! RESET COPY LOCK
	CF	A14,SNBUSY	SET DEVICE FREE FOR DC-LINE
	RB	PRNT:1	READ DC AGAIN
PRNT:4	EQU	*

	XIF


	LD	A1,WCC,TCABAS	WRITE CONTROL CHARACTER 
	ST	A1,CCC,TCABAS	COPY IT 
	CF	A14,COPY	COPY ON PRINTER
	CF	A14,SNBUSY	SET DEVICE NOT BUSY FOR DC 
	RB	PRNT:1	READ AGAIN FROM DC 
	EJECT


************************************************************* 
* 
*   H A R D C P    :  HARDCOPY PRINTING 
* 
*                     PRINT VDU BUFFER ON HARDCOPY DEVICE 
* 
*************************************************************** 

HARDCP	LDR	TCABAS,A1	VDU WORKBLOCK BASE ADDRESS 
	LD	CREBAS,CRE,TCABAS	GTP T:A BASE ADDRESS
	LD	A14,2,CREBAS	STACK POINTER

	LDK	A1,X'38'	PRINT BIT, 80 CHAR./LINE
	ST	A1,CCC,TCABAS	SAVE AS COPY CONTROL CHARACTER
	CF	A14,COPY	PRINT ON HARDCOPY DEVICE 

	CM	VDUBSY,TCABAS	SET VDU-TASK FREE 

HARD:2	EQU	*

	LD	CREBAS,VDUT.A,TCABAS	VDU-TASK BASE ADDRESS
	LDK	A1,1 
	XRS	A1,KBINH,TCABAS	RESET KEYBOARD INHIBIT BIT 

	LKM		EXIT
	DATA	3 
	EJECT
* 
* 
*	PRINT THE CONTENTS OF THE PRINTER BUFFER
* 
* 
LINLEN	DATA	/0028,/4050	LINE LENGTHS /40, 64 AND 80 CHARS 
* 
* 
COPY	LDKL	A8,ECBPR
	ADR	A8,CREBAS	PRINTER ECB
	CM*	ECBBA,A8	CLEAR BUFFER CONTROL WORD 
	LD	A7,ECBBA,A8 
	ADK	A7,2	PRINt BUFFER ADDRESS
	SUR	A9,A9	RESET BUFFER INDEX 
	LDK	A3,0 
	LDKL	A4,BVDU 
	ADR	A4,TCABAS
	LD	A2,CCC,TCABAS	GET CCC/CCC 
	ANK	A2,/08 
	RF(NZ)	COP100	START PRINTER BIT SET
COPRTN	RTN	A14
COP100	EQU	*
	LD	A2,CCC,TCABAS 
	ANK	A2,/30 
	ABL(Z)	COP111	NL DETERMINES LINE LENGTH
	SRL	A2,4 
	LDK	A6,0 
	LC	A6,LINLEN,A2	GET LINE LENGTH
COP110	CWR	A9,A6
	RF(L)	COP120 
COP115	CF	A14,PRLINE	LINE FULL: PRINT IT
	RB	COP110
COP120	CWK	A3,LBVDU 
	ABL(NL)	COP300	PRINT LAST LINE 
	LCR	A2,A4
	ANK	A2,/7F	RESET DISPLAY BIT 
	SCR	A2,A4
	CWK	A2,/20 
	RF(NL)	COP130
COP123	EQU	*
	ANK	A2,6 
	XRK	A2,6 
	RF(Z)	COP150 
COP125	LDK	A2,/20	REPLACE ATTR BY SPACE 
	RF	COP140
COP130	CWK	A2,NULL
	RB(E)	COP125	REPLACE NULL BY SPACE 
COP140	EQU	*
	CWK	A2,/7D 
	RF(NE)	COP141
	LDK	A2,/39 
COP141	CWK	A2,/7E 
	RF(NE)	COP142
	LDK	A2,/35 
COP142	CWK	A2,/7B 
	RF(NE)	COP143
	LDK	A2,/2A 
*****************************************************  78-08-15 
COP143	CWK	A2,/61	LOWER CASE CHARACTER ???
	RF(L)	COP144	NO!!! 
	SUK	A2,/20	CONVERT TO UPPER CASE CHARACTER 
*******************************************************  78-08-15 
COP144	SCR	A2,A7
	ADK	A3,1 
	ADK	A4,1 
	ADK	A7,1 
	ADKL	A9,1
	RB	COP110
COP150	LDK	A2,/20	SPACE INSTEAD OF TEXT 
	SCR	A2,A7
	ADK	A3,1 
	ADK	A4,1 
	ADK	A7,1 
	ADKL	A9,1
	CWR	A9,A6
	RF(L)	COP160 
	CF	A14,PRLINE	LINE FULL : PRINT IT 
COP160	LCR	A2,A4
	ANK	A2,/7F 
	CWK	A2,/20 
	RB(L)	COP123	ATTRIBUTE 
	RB	COP150	STILL IN PROTECTED FIELD 
* 
* 
*	LINE LENGTH AS DEFINED BY NL CHARACTER
* 
* 
* THE FIRST INSTR. ORIGINALLY HAD LABEL 'COP200'. 
* 
* 
COP111	EQU	*
	CWK	A9,GTPLIN

	RF(L)	COP220	BUFFER NOT FULL 
COP210	CF	A14,PRLINE	PRINT LINE 
	ABL	COP111 
COP220	CWK	A3,LBVDU 
	RF(NL)	COP300	PRINT LAST LINE
	LCR	A2,A4
	ANK	A2,/7F 
	SCR	A2,A4	RESET DISPLAY BIT
	CWK	A2,/20 
	RF(NL)	COP230
COP223	ANK	A2,/6	ATTRIBUTE CHARACTER
	XRK	A2,6 
	RF(Z)	COP250	PROTECTED FIELD 
COP225	LDK	A2,/20	REPLACE ATTRIBUTE BY SPACE
	RF	COP240
COP230	CWK	A2,NULL
	RB(E)	COP225	NULL IS REPLACED BY SPACE 
COP240	EQU	*
	CWK	A2,/7B 
	RF(NE)	COP241
	LDK	A2,/2A 
COP241	SCR	A2,A7
	ADK	A3,1 
	ADK	A4,1 
	ADK	A7,1 
	CWK	A2,NEWLIN
	RB(E)	COP210	NL CHAR: PRINT LINE 
	CWK	A2,ENDMES
	RF(E)	COP300	UND MESSAGE: PRINT LAST LINE
	ADKL	A9,1
	ABL	COP111 
COP250	LDK	A2,/20	REPLACE TEXT BY SPACE 
	SCR	A2,A7
	ADK	A3,1 
	ADK	A4,1 
	ADK	A7,1 
	ADKL	A9,1
	CWR	A9,A6
	RF(L)	COP260 
	CF	A14,PRLINE	LINE FULL : PRINT IT 
COP260	LCR	A2,A4
	ANK	A2,/7F 
	CWK	A2,/20 
	RB(L)	COP223	ATTRIBUTE FOUND 
	RB	COP250	STILL IN PROTECTED FIELD 
COP300	LDR	A9,A9
	ABL(Z)	COPRTN	ALL PRINTED
	CF	A14,PRLINE	PRINT LAST LINE
	ABL	COPRTN 
	EJECT
* 
* 
*	PRINT ONE LINE ON PRINTER 
* 
*	A9=NUMBER OF CHAR IN PRINT BUFFER 
* 
* 
PRLINE	IM	LINCNT,TCABAS	COUNT NBR OF PRINTLINES 
	RF(N)	PRL100	NOT END OF PAGE 
	LDK	A7,LPAGE	END OF PAGE 
	NGR	A7,A7
	ST	A7,LINCNT,TCABAS	RESET LINE COUNTER 
PRL100	LD	A7,ECBBA,A8 
	LC	A2,2,A7	GET FIRST CHAR IN BUFFER
	ANK	A2,/7F 
	CWK	A2,FORMFD
	RF(NE)	PRL200	NOT FORM FEED
	LDK	A2,/20 
	SC	A2,2,A7	REPLACE LF BY SPACE 

PRL110	EQU	*
	LD	A1,LINCNT,TCABAS	FORM FEED
	LDK	A7,2 
	ST	A7,ECBRL,A8	SET REQ LENGTH TO 2 FOR NEW LINE
PRL120	LDK	A7,/86	STD WRITE 
	LKM
	DATA	1 
	ADK	A1,1	COUNT LINES 
	RB(N)	PRL120 
	LDK	A7,LPAGE 
	NGR	A7,A7
	ST	A7,LINCNT,TCABAS	RESET LINE COUNTER 
PRL200	ADKL	A9,2	ADJUST LENGTH FOR BUFFER CW
	ST	A9,ECBRL,A8	REQ LENGTH
	LDK	A7,/86	STD WRITE 
	LKM
	DATA	1 
	LDK	A7,0 
	ST*	A7,ECBBA,A8
	LD	A7,ECBBA,A8 
	ADK	A7,2	RESTORE BUFFER ADDRESS
	SUR	A9,A9	RESET CHAR COUNTER 
	RTN	A14
	EJECT
* 
* 
*	SET STATUS NOT BUSY FOR DC
* 
* 
SNBUSY	LDK	A1,0 
	LDKL	A8,ECBDC
	ADR	A8,CREBAS
	LDK	A7,/B8	SET STATUS ORDER
	ST	A1,ECBCW,A8 
	LKM
	DATA	1 
	RTN	A14
* 
* 
         END

Full view