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

⟦7d1831293⟧

    Length: 34416 (0x8670)
    Notes: pts_type(SC)
    Names: »DRTP03.SC«

Derivation

└─⟦173d42e04⟧ Bits:30009663 Philips computer tape "600105"
    └─⟦this⟧ »TOSSWORK/DRTP03.SC« 

PTS(SC)

	IDENT DRTP03 	REL 10.0 80-04-24 870105041000 

			=9,TOTAL UPDATE FOR REMOTE 
			REL 9.2 80-03-15 
			=8,REMOTE RECOVERY ERROR 
			REL 9.2 80-02-28 
			=7,UPDATE FOR REMOTE CONN. 
			REL 9.2 79-11-16 
			=6,COMB OF REL 8,9&10
			PRR 10.1 79-11-14
			=5,SET PR PAR ERR, REL DOC ERR 
			PRR 10.1 79-10-04
			=4,GEN UPDATE REL 10 
			REL 9.1 79-09-26 
			=3,ANK A2,/7F
			PRR 9.1 79-08-14 
			=2,GEN UPDATE
			PRR 9.1 79-06-20 
			=1,GEN UPDATE
			PRR 9.1 79-06-17 
	EJECT
* 
******************************************************* 
*                                                     * 
*   PHILIPS TERMINAL SYSTEM PTS                       * 
*                                                     * 
*   DRTP03 = DRIVER TELLER TERMINAL PRINTER           * 
*                                                     * 
*   ADAPTED FOR TOSS RELEASE INDICATED IN "REL EQU X" * 
*                                                     * 
******************************************************* 
* 
*   THIS DRIVER HANDLES TELLER TERMINAL PRINTER PTS 6371
* 
*   AND CONSISTS OF THE FOLLOWING PARTS:
* 
*   A C T P :	  ACTIVATION PART 
* 
*   I H T P :	  INTERRUPT HANDLER 
* 
*   R C T P :	  RECOVERY ROUTINE
* 
*   THE ACTIVATION PART SELECTS THE ACTUAL ORDER PROCESSOR. 
*   A STRING IS SET UP AND TRANSFERED TO THE PRINTER. 
*   THE STRING BEGINS WITH A DEDICATED PRINTER CHARACTER. 
*   THE CONTENTS OF THE STRING IS EITHER A FIXED FORMATTED
*   BUFFER OR FOR ORDER WRITE THE USER BUFFER.
*   THE STRING IS TERMINATED WITH AN EXECUTION CHARACTER. 
*   AFTER EXECUTION THE PRINTER RESPONDS WITH A STATUS
*   CHARACTER INDICATING THE RESULT OF THE EXECUTED ORDER.
* 
*   THE INTERRUPT HANDLER IS ENTERED FOR EACH OUTPUTED CHARACTER
* 
*   THE RECOVERY ROUTINE IS ENTERED AFTER PROGRAM LOADING,
*   AFTER POWER ON FROM TERMINAL SIDE AND AFTER TRANSMISSION
*   TIME OUT. 
*   THE RECOVERY ROUTINE SENDS A FIXED FORMATTED STRING TO
*   THE PRINTER. THIS STRING CONTAINS THE ACTUAL PARAMETERS 
*   AND STATUS FOR THE PRINTER. 
	EJECT
* 
*   THE FOLLOWING ORDERS ARE TREATED: 
* 
*   ORDER 00 :      TEST STATUS 
*   ORDER 06 :      WRITE 
*   ORDER 0B :      POSITION DOCUMENT 
*   ORDER 24 :      SET PRINTER PARAMETERS
*   ORDER 27 :      SET DOCUMENT PARAMETERS 
*   ORDER 37 :      TRANSFER DOCUMENT PARAMETERS
*   ORDER 38 :      RELEASE DOCUMENT
* 
*   THE FOLLOWING RETURN CODES ARE USED:
* 
*   BIT  0 :        REQUEST ERROR 
*   BIT  2 :        END OF JOURNAL  **IN REL 10...**
*   BIT 10 :        END OF JOURNAL  **IN REL 8 & 9**
*   BIT 10 :        DOCUMENT OUT
*   BIT 13 :        CODE CHECK ERROR
*   BIT 15 :        NOT OPERABLE
* 
* 
*   NORMAL REGISTER USAGE:
* 
*   REGISTER A1:	WORK REGISTER
*            A2:	INPUT/OUTPUT 
*            A3:	BUFFER POINTER 
*            A4:	OUTPUT COUNTER 
*            A5:	STACK POINTER
*            A6:	DWT-ADDRESS
*            A7:	ORDER
*            A8:	ECB-ADDRESS
* 
* 
	EJECT
* 
*********** 
* ENTRIES * 
*********** 
* 
* 
	ENTRY	TPAD3	ADDRESS BLOCK
* 
* 
* 
************* 
* EXTERNALS * 
************* 
* 
* 
	EXTRN	TDISP	DISPATCHING FROM INTERRUPT 
	EXTRN	DISIOE	DISPATCH I/O ERROR
	EXTRN	DISEND	END I/O AND DISPATCH
	EXTRN	OUTPUT	OUTPUT ONE CHARACTER
	EXTRN	LDREG	RESTORE REGISTERS
	EXTRN	SAVE8	SAVE REG. A1-A8
	EXTRN	GETCHR	GET CHARACTER FROM ECB BUFFER 
	EXTRN	DWTST	DWT STATUS DISPLACEMENT
	EXTRN	DWTECB	DWT ECB DISPLACEMENT
	EXTRN	DWTOR	DWT ORDER DISPLACEMENT 
	EXTRN	DTTP03	DOCUMENT TABLE ADDRESS
	EXTRN	TLTP03	DOCUMENT TABLE LENGTH 
	EXTRN	STREG	STORE REG = GET STATUS INPUT CHAR
	EJECT
* 
************* 
* CONSTANTS * 
************* 
REL	EQU	10	ADAPTED FOR TOSS REL 10
* 
*	DEDICATED PRINTER CHARACTERS (/00-/0F)
* 
POTEST	EQU	/00	TEST 
PORECV	EQU	/01	RECOVERY 
RESTRT	EQU	/02	RESTART (NOT USED) 
ETX	EQU	/03	EXECUTE ORDER 
POPPAR	EQU	/04	SET PRINTER PARAMETERS 
PODSTA	EQU	/05	DIAGNOSTIC STATUS
EXE	EQU	/06	EXECUTE (NOT USED)
POTDOC	EQU	/07	TRANSFER DOCUMENT PARAMETERS 
PORDOC	EQU	/08	RELEASE DOCUMENT 
POWDOC	EQU	/09	WRITE DOCUMENT 
LF	EQU	/0A	LINE FEED (NOT USED) 
POPDOC	EQU	/0B	POSITION DOCUMENT
RESET	EQU	/0C	RESET ORDER 
POWJRL	EQU	/0D	WRITE JOURNAL
SPEC	EQU	/0E	ROOMLESS POINT 
TEST	EQU	/0F	TEST (NOT USED)
* 
STB	EQU	/82	START BLOCK CHAR
ETB	EQU	/97	END BLOCK CHAR
* 
	IFT	REL=8
ENDJ	EQU	/20	END OF JOURNAL STATUS
	XIF
	IFT	REL=9
ENDJ	EQU	/20	END OF JOURNAL STATUS
	XIF
	IFF	REL=8
	IFF	REL=9
ENDJ	EQU	/2000	END OF JOURNAL STATUS
	XIF
DOCOUT	EQU	/20	DOCUMENT OUT STATUS
	EJECT
* 
************************
* CONDITIONAL ASSEMBLY *
************************
* 
*	THE STANDARD NATIONAL CHARACTER SET IS CHOSEN 
*	BY SETTING X:A TO 0-10 ACCORDING TO THE LIST BELOW
* 
*  NCV =	0	GREAT BRITAIN
*	1	GERMANY 
*	2	FRANCE 1
*	3	SPAIN 
*	4	ITALY 
*	5	SWEDEN, FINLAND 
*	6	DENMARK, NORWAY 1 
*	7	PORTUGAL
*	8	YUGOSLAVIA OR FRANCE 2 (DEPENDING ON CHAR GEN)
*	9	USA 
*	10	DENMARK, NORWAY 2
* 
X:A	EQU	0 
STDNCV	EQU	X:A
* 
*	THE LOWER CASE SET CAN BE INCLUDED AS STANDARD
*	BY SETTING X:B=1
* 
X:B	EQU	0 
STDL	EQU	X:B
* 
*	THE STANDARD CHARACTER PITCH FOR THE DOCUMENT STATION IS CHOSEN 
*	BY SETTING X:C TO : 0=15 CH/INCH, 1=12 CH/INCH OR 2=10 CH/INCH
* 
X:C	EQU	2 
STDCPD	EQU	X:C
* 
*	THE JOURNAL STATION CAN BE EXCLUDED 
*	BY SETTING X:D=0
* 
X:D	EQU	1 
JOURNL	EQU	X:D
* 
*	THE STANDARD CHARACTER PITCH FOR THE JOURNAL STATION IS CHOSEN
*	BY SETTING X:F TO : 0=15 CH/INCH, 1=12 CH/INCH OR 2=10 CH/INCH
* 
X:E	EQU	0 
STDCPJ	EQU	X:E
* 
*	THE "SET PARAMETER" ORDERS 24 AND 27 CAN BE INCLUDED
*	BY SETTING X:F=1
* 
X:F	EQU	0 
PARORD	EQU	X:F
* 
*	A PROGRAM VERSION USING TOSS MMU PAGING 
*	IS OBTAINED BY SETTING MMUPAG EQU 1.
* 
MMUPAG	EQU	0
* 
* 
*	A PROGRAM VERSION USING THE EXTENDED INSTRUCTION
*	SET IS OBTAINED BY SETTING CPU852 EQU 0.
* 
CPU852	EQU	1
* 
*   MMU BUFFER SIZE 
* 
X:G	EQU	095 
DVBLEN	EQU	X:G
* 
*	A REQUEST IS ALLWAYS ENDED FOR NOT OPERABLE PRINTERS
*	BY SETTING X:H=1
X:H	EQU	0 
REQEND	EQU	X:H
* 
* 
* 
* 
PRIPAR	FORM	1=1,2=0,1=STDL,4=STDNCV,2=1,2=STDCPJ,2=1,2=STDCPD 
	EJECT
* 

********************* 
* DWT-DISPLACEMENTS * 
********************* 
* 
* 
* 
DWTDRD	EQU	/10	START OF DRIVER DEFINED PART 
* 
	IFT	MMUPAG=0 
START	EQU	DWTDRD
	XIF
* 
	IFT	MMUPAG=1 
START	EQU	DWTDRD+4
	XIF
* 
DWTPP	EQU	START+18	PRINTER PARAMETERS 
DWTPPJ	EQU	START+20	PRINT POS JOURNAL 
DWTAPJ	EQU	DWTPPJ+1	ACTUAL PRINT POS JOURNAL
DWTRPJ	EQU	DWTPPJ	REQUESTED PRINT POS JOURNAL 
DWTPPD	EQU	START+22	PRINT POS DOCUMENT
DWTAPD	EQU	DWTPPD+1	ACTUAL PRINT POS DOCUMENT 
DWTRPD	EQU	DWTPPD	REQUESTED PRINT POS DOCUMENT
DWTLN	EQU	START+24	LINE NUMBER ON DOCUMENT
DWTALN	EQU	DWTLN+1	ACTUAL LINE NUMBER ON DOCUMENT 
DWTRLN	EQU	DWTLN	REQUESTED LINE NUMBER ON DOCUMENT
DWTDP	EQU	START+26	DOCUMENT PARAMETERS
* 
* 
********************* 
* ECB-DISPLACEMENTS * 
********************* 
* 
ECBBA	EQU	2	BUFFER ADDRESS IN ECB 
ECBRL	EQU	4	REQUESTED LENGTH IN ECB 
ECBEL	EQU	6	EFFECTIVE LENGTH IN ECB 
ECBRC	EQU	8	RETURN CODE IN ECB
ECBCW	EQU	10	CONTROL WORD IN ECB
	EJECT
* 
**********
* TABLES *
**********
* 
* 
*	ADDRESS BLOCK 
* 
	DATA	DVBLEN	MMU BUFFER SIZE
	DATA	2	DEVICE INDEX
TPAD3	EQU	*	ADDRESS BLOCK 
	DATA	ACTP	ACTIVATION DRIVER
	IFF	REL=8	U	=6 
	DATA	0	ABORT ROUTINE ADDRESS 
	XIF		U	=6
	DATA	IHTP	INTERRUPT HANDLER
	DATA	RCTP	RECOVERY ROUTINE 
* 
*	VALID ORDERS WITH ACTIVATION ADDRESSES
* 
TPTAB	EQU	* 
	DATA	TPTAB0	DEVICE INDEX 0 TABLE	=9
	DATA	TPTAB1	DEVICE INDEX 1 TABLE	=9
	DATA	TPTAB2	DEVICE INDEX 2 TABLE	=9
	DATA	TPTAB3	DEVICE INDEX 3 TABLE	=9
* 
TPTAB0	EQU	*	DEVICE INDEX 0	=9
	IFT	JOURNL=1 
	DATA	0	TEST STATUS (JOURNAL)	=9
	DATA	TSTSTA	U	=9 
	DATA	6	WRITE JOURNAL	=9
	DATA	WRTJRL	U	=9 
	IFT	PARORD=1 
	DATA	/24	SET PRINTER PARAMETERS	=9 
	DATA	PRTPAR	U	=9 
	XIF
	DATA	/FFFF	END OF ORDERS	=9
* 
TPTAB1	EQU	*	DEVICE INDEX 1	=9
	DATA	0	TEST STATUS (DOCUMENT)	=9 
	DATA	TSTSTA	U	=9 
	DATA	6	WRITE DOCUMENT	=9 
	DATA	WRTDOC	U	=9 
	DATA	/0B	POSITION DOCUMENT	=9
	DATA	POSDOC	U	=9 
	DATA	/38	RELEASE DOCUMENT	=9 
	DATA	RELDOC	U	=9 
	DATA	/37	TRANSFER DOCUMENT PARAMETERS	=9 
	DATA	TRFDOC	U	=9 
	IFT	PARORD=1 
	DATA	/24	SET PRINTER PARAMETERS	=9 
	DATA	PRTPAR	U	=9 
	DATA	/27	SET DOCUMENT PARAMETERS	=9
	DATA	DOCPAR	U	=9 
	XIF
	DATA	/FFFF	END OF ORDERS	=9
* 
TPTAB2	EQU	*	DEVICE INDEX 2	=9
	DATA	/FFFF	END OF ORDERS	=9
* 
TPTAB3	EQU	*	DEVICE INDEX 3	=9
	DATA	/FFFF	END OF ORDERS	=9
* 
*	SYSTEM STANDARD PRINTER PARAMETERS
* 
STDPP	PRIPAR		STANDARD PRINTER PARAMETERS 
	EJECT
* 
* 
*   A C T P 
* 
*   THIS IS THE ACTIVATION PART OF THE DRIVER 
*   CHECKS VALIDITY OF ORDERS AND JUMPS TO ORDER PROCESSOR
* 
* 
* 
ACTP	EQU	*	ACTIVATION ENTRY 
* 
* 
*   GET DWT INDEX: 0=JOURNAL, 1=DOCUMENT
* 
	LC	A2,DWTOR,A6	GET DWT INDEX 
	ANK	A2,3	MASK	=9 
	SLL	A2,6	SHIFT	=9
	LDR*	A3,A6	GET OLD DEVICE INDEX	=9 
	ANKL	A3,/FF1F	RESET OLD INDEX AND LF IND	=9
	IFT	REL=8	U	=9 
	ORKL	A3,/8100	SET UP NO DATA REQUEST	=9
	XIF		U	=9
	ORR	A3,A2	U	=9 
	STR	A3,A6	STORE NEW INDEX	=9 
ACT005	LDR*	A1,A6	GET DEVICE INDEX	=9 
	ANK	A1,/C0	U	=9
	SRL	A1,5	GET CORESPONDING ORDER TABLE	=9 
	LD	A2,TPTAB,A1	U	=9
ACT010	LDR*	A3,A2	U	=9
	ABL(N)	DISIOE	NO MORE VALID ORDERS	=9
	SUR	A3,A7	TEST IF ORDER VALID	=9 
	RF(E)	ACT020	VALID ORDER FOUND	=9
	ADK	A2,4	TRY NEXT ORDER	=9 
	RB	ACT010	U	=9 
ACT020	EQU	*
	ABI	2,A2	EXECUTE ORDER	=9
	EJECT
* 
* 
*   ORDER 00 : TEST STATUS
* 
* 
TSTSTA	EQU	*
			5 LINES DELETED	=9 
	CM	ECBCW,A8	CLEAR CONTROL WORD	=7
	LDK	A3,POTEST	LOAD TEST ORDER
	CF	A5,ORDER	AND SEND 
	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER
	LDR	A1,A2	GET PRINTER STATUS	=9
	ANK	A1,/15	TEST PRINTER STATUS	=9
	RF(Z)	TSST10	NO PERMANENT ERRORS	=9
TSST05	LDK	A3,PODSTA	LOAD DIAGNOSTIC ORDER	=9 
	CF	A5,ORDER	AND SEND	=9
	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER	=9 
	SC	A2,ECBCW+1,A8	SET UP DIAGN STATUS IN ECB	=9 
	LDK	A1,1	INDICATE NOT OPERABLE	=9
	RF	TSST80	U	=9 
TSST10	LDR	A1,A2	GET PRINTER STATUS	=9
	IFT	JOURNL=1	U	=9
	LDR*	A3,A6	GET DEVICE INDEX	=9 
	ANK	A3,/C0	TEST DEVICE INDEX	=9
	RF(NZ)	TSST40	DEVICE INDEX > 0	=9
	ANK	A1,/22	TEST PRINTER STATUS	=9
	RF(Z)	TSST80	NO ERRORS	=9
	ANK	A1,2	TEST PRINTER STATUS	=9
	RB(NZ)	TSST05	JOURNAL ERROR = NOT OP	=9
	LDKL	A1,ENDJ	END OF JOURNAL	=9 
	RF	TSST80	U	=9 
	XIF		U	=9
TSST40	ANK	A1,/40	TEST PRINTER STATUS	=9
	RF(Z)	TSST80	NO ERRORS	=9
	LDK	A1,DOCOUT	DOCUMENT OUT	=9
TSST80	ABL	DISEND	END REQUEST	=9
	EJECT		
* 
* 
*   ORDER 06 : WRITE JOURNAL
* 
* 
	IFT	JOURNL=1 
WRTJRL	EQU	*
	LDR*	A1,A6	GET CHANNEL PARAMETERS	=9 
	ANK	A1,/20	TEST LF INDICATOR	=9
	RF(NZ)	WRJL10	LF EXECUTED	=9 
	LD	A1,ECBRL,A8	GET REQUESTED LENGTH	=9 
	SUK	A1,2	TEST REQUESTED LENGTH	=9
	RF(N)	WRJL80	REQUEST ERROR	=9
	LD*	A2,ECBBA,A8	GET CONTROL CHARACTER	=9 
	ANK	A2,/FF	U	=9
	SUK	A2,/2B	TEST CTRL CHAR	=9 
	RF(Z)	WRJL10	CTRL CHAR =/2B	=9 
	LDK	A4,2	SET UP 2 LF (CTRL CH =/30)	=9 
	SUK	A2,5	TEST CTRL CHAR	=9 
	RF(Z)	WRJL05	CTRL CHAR =/30	=9 
	LDK	A4,1	SET UP 1 LF (CTRL CH NOT DEF)	=9
	SUK	A2,1	TEST CTRL CHAR	=9 
	RF(NZ)	WRJL05	CTRL CHAR NOT =/31	=9
	LDK	A4,3	SET UP 3 LF (CTRL CH =/31)	=9 
WRJL05	LDK	A3,POWJRL	LOAD WRITE JOURNAL ORDER	=9
	CF	A5,ORDER	AND SEND	=9
	LDR	A2,A4	RELOAD NO OF LINE FEED	=9
	CF	A5,OUT	AND SEND	=9
	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER
	ANK	A2,7	TEST PRINTER STATUS	=9
	RF(NZ)	WRJL65	JOURNAL LINE FEED ERROR	=9 
	CM	DWTPPJ,A6	CLEAR PRINT POSITION	=9 
	LDK	A1,/20	SET UP LF EXECUTED	=9 
	ORRS	A1,A6	IND IN CHANNEL PARAMETER	=9 
WRJL10	LC	A1,DWTAPJ,A6	GET ACTUAL PRINT POS	=9
	SC	A1,DWTRPJ,A6	SET UP START REQ PRINT POS	=9
	LDK	A3,2	SET UP BUFFER POINTER	=9
	CF	A15,GETCHR	GET CHARACTER FROM ECB BUFFER	=9 
	LDR	A1,A1	TEST IF NO BUFFER	=9 
	RF(Z)	WRJL60	NO BUFFER TO PRINT	=9 
	LDK	A3,POWJRL	LOAD WRITE JOURNAL ORDER	=9
	CF	A5,ORDER	AND SEND	=9
	LDK	A2,0	LOAD ZERO LINE FEED	=9
	CF	A5,OUT	AND SEND	=9
	LDKL	A4,/100	SET UP NORMAL CHAR COUNTER IN A4
	LDK	A3,2	SET UP BUFFER POINTER 
WRJL20	CF	A15,GETCHR	GET CHARACTER FROM ECB BUFFER
	LDR	A1,A1
	RF(Z)	WRJL50	BUFFER FINISHED 
	LDR	A1,A2	GET CHAR IN A1 
* 
*   EXAMINE CHAR AND UPDATE PRINT POS AND SEND
*   DEPENDING ON TYPE OF CHARACTER
* 
	SUK	A1,/10 
	RB(N)	WRJL20	CHAR </10 
	RF(Z)	WRJL30	CHAR = /10
	SUK	A1,9 
	RF(NZ)	WRJL25	CHAR NOT /19 (=EXPAND) 
	XRKL	A4,/300	SWITCH CHAR COUNTER IN A4 
	RF	WRJL40	SEND EXPAND CHAR 
WRJL25	SUK	A1,7 
	RF(N)	WRJL40	CHAR </20 SEND
	SUK	A1,/5F 
	RB(Z)	WRJL20	CHAR=/7F	=9 
	RF(N)	WRJL30	CHAR = NORMAL 
	SUK	A1,/2F 
	RF(Z)	WRJL28	CHAR =/AE 
	CF	A5,ERROR	ILLEGAL CHAR = SEND RESET
	LDK	A1,4	IND CODE CHECK ERROR	=9 
	RF	WRJL70	U	=9 
WRJL28	LDK	A2,/0E 
	RF	WRJL40

*   UPDATE PRINT POSITION 

WRJL30	ADS	A4,DWTRPJ,A6	ADD 1 OR 2 TO REQ PRINT POS 

*   SEND CHARACTER TO DEVICE

WRJL40	CF	A5,OUTPUT	SEND CHARACTER
	RB	WRJL20	GET NEXT CHARACTER 

*   SEND ETX

WRJL50	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER
	LDR	A1,A2	GET PRINTER STATUS	=9
	ANK	A1,/27	TEST PRINTER STATUS	=9
	RF(Z)	WRJL60	NO ERRORS	=9
	ANK	A1,3	TEST PRINTER STATUS	=9
	RF(NZ)	WRJL65	NOT OPERABLE	=9
	ANK	A2,4	TEST PRINTER STATUS	=9
	RF(NZ)	WRJL80	REQUEST ERROR	=9 
	LDKL	A1,ENDJ	END OF JOURNAL	=9 
WRJL60	LC	A3,DWTRPJ,A6	GET REQUESTED PRINT POSITION	=9
	SC	A3,DWTAPJ,A6	SET UP ACTUAL PRINT POSITION	=9
	RF	WRJL70	U	=9 
WRJL65	LDK	A1,1	INDICATE NOT OPERABLE	=9
WRJL70	ABL	DISEND	END REQUEST	=9
WRJL80	ABL	DISIOE	END REQUEST WITH REQUEST ERROR	=9 
	XIF		
	EJECT		
* 
* 
*   ORDER 06 : WRITE DOCUMENT 
* 
* 
WRTDOC	EQU	*
	LC	A4,DWTALN,A6	GET ACTUAL LINE
	ANK	A4,/FF 
	RF(Z)	WRDO80	DOCUMENT NOT POSITIONED	=9
	LD	A1,ECBRL,A8	GET REQUESTED LENGTH	=9 
	SUK	A1,2	TEST REQUESTED LENGTH	=9
	RF(N)	WRDO80	REQUEST ERROR	=9
	LD*	A2,ECBBA,A8	GET CONTROL CHARACTER	=9 
	ANK	A2,/FF	U	=9
	LC	A3,DWTAPD,A6	PREPARE NEW REQ PRINT POS	=9 
	SUK	A2,/2B 
	RF(Z)	WRDO07	CTRL CHAR = /2B 
	LDK	A3,0	PREPARE NEW REQ PRINT POS	=9
	ADK	A4,2	SET REQ LINE = ACT LINE + 2 
	SUK	A2,5 
	RF(Z)	WRDO05	CTRL CHAR = /30 
	SUK	A4,1	SET REQ LINE = ACT LINE + 1 
	SUK	A2,1 
	RF(NZ)	WRDO05	CTRL CHAR NOT = /31
	LDK	A4,1	SET REQ LINE = 1
WRDO05	CC	A4,DWTDP+2,A6 
	RF(G)	WRDO80	REQ LINE > MAX LINES	=9 
WRDO07	SC	A3,DWTRPD,A6	SET UP START REQ PRINT POS	=9
	SC	A4,DWTRLN,A6	SET UP REQ LINE NO	=9
WRDO10	LDK	A3,POWDOC	SET UP PRINTER ORDER 
	CF	A5,ORDER	AND SEND 
	LDR	A2,A4	GET REQ LINE NO	=9 
	CF	A5,OUT	AND SEND 
	LDKL	A4,/100	SET UP NORMAL CHARACTER COUNT	=9
	LDK	A3,2	SET UP BUFFER POINTER 
WRDO20	CF	A15,GETCHR	GET CHARACTER FROM ECB BUFFER
	LDR	A1,A1
	RF(Z)	WRDO50	BUFFER FINISHED 
	LDR	A1,A2	GET CHARACTER

*   EXAMINE CHARACTER AND UPDATE PRINT POS AND SEND 
*   DEPENDING ON TYPE OF CHARACTER

	SUK	A1,/10 
	RB(N)	WRDO20	CHAR < /10
	RF(Z)	WRDO30	CHAR = /10 SEND 
WRDO22	SUK	A1,9 
	RF(NZ)	WRDO27	CHAR NOT /19 (=EXPAND) 
	XRKL	A4,/300	SWITCH CHAR COUNTER IN A4 
	RF	WRDO40	SEND EXPAND CHAR 
WRDO27	SUK	A1,7 
	RF(N)	WRDO40	CHAR < /20 SEND 
	SUK	A1,/5F 
	RF(N)	WRDO30	CHAR = NORMAL 
	RB(Z)	WRDO20	CHAR = /7F	=9 
	SUK	A1,/2F 
	RF(Z)	WRDO28	CHAR = /AE
	CF	A5,ERROR	SEND RESET 
	LDK	A1,4	INDICATE CODE CHECK ERROR	=9
	RF	WRDO70	U	=9 
WRDO28	LDK	A2,SPEC	SET UP CHAR /0E
	RF	WRDO40

*   UPDATE PRINT POS

WRDO30	ADS	A4,DWTRPD,A6	ADD 1 OR 2 TO REQ PRINT POS 

*   SEND CHARACTER TO PRINTER 

WRDO40	CF	A5,OUTPUT	SEND CHARACTER
	RB	WRDO20	GET NEXT CHAR

*   SEND ETX

WRDO50	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER
	LDR	A1,A2	GET PRINTER STATUS	=9
	ANK	A1,/45	TEST PRINTER STATUS	=9
	RF(Z)	WRDO60	NO ERRORS	=9
	ANK	A1,1	TEST PRINTER STATUS	=9
	RF(NZ)	WRDO80	NOT OPERABLE	=9
	ANK	A2,4	TEST PRINTER STATUS	=9
	RF(NZ)	WRDO80	REQUEST ERROR	=9 
	LDK	A1,DOCOUT	DOCUMENT OUT	=9
	LDK	A3,0	RESET LINE COUNTER	=9 
	LDK	A4,0	RESET PRINT POSITION COUNTER	=9 
	RF	WRDO65	U	=9 
WRDO60	LC	A3,DWTRLN,A6	GET REQUESTED LINE NUMBER	=9 
	LC	A4,DWTRPD,A6	GET REQUESTED PRINT POSITION	=9
WRDO65	SC	A3,DWTALN,A6	SET UP ACTUAL LINE NUMBER	=9 
	SC	A4,DWTAPD,A6	SET UP ACTUAL PRINT POSITION	=9
WRDO70	ABL	DISEND	END REQUEST	=9
WRDO80	ABL	DISIOE	END REQUEST WITH REQUEST ERROR	=9 
	EJECT
* 
* 
*   ORDER 0B : POSITION DOCUMENT
*   CONTROL WORD CONTAINS REQUESTED LINE NO 
* 
* 
POSDOC	EQU	*
	LD	A4,ECBCW,A8	GET REQ LINE NO 
	RF(Z)	PDOC80	REQ LINE = 0	=9 
	CC	A4,DWTDP+2,A6 
	RF(G)	PDOC80	REQ LINE > MAX LINE	=9
	SC	A4,DWTRLN,A6	SET UP REQ LINE NO 
	LDK	A3,POPDOC	SET UP PRINTER POSITION DOCUMENT ORDER 
	CF	A5,ORDER	AND SEND 
	LDR	A2,A4	SET UP LINE NO 
	CF	A5,OUT	AND SEND 
	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER
	LDR	A1,A2	GET PRINTER STATUS	=9
	ANK	A1,/45	TEST PRINTER STATUS	=9
	RF(Z)	PDOC10	NO ERRORS	=9
	ANK	A1,1	TEST PRINTER STATUS	=9
	RF(NZ)	PDOC70	NOT OPERABLE	=9
	ANK	A2,4	TEST PRINTER STATUS	=9
	RF(NZ)	PDOC80	REQUEST ERROR	=9 
	LC	A1,DWTDP,A6	DOCUMENT OUT	=9 
	ANK	A1,/78	TEST DOC PAR (TIME OUT)	=9
	RB(Z)	POSDOC	NO TIME OUT USED, REPEAT ORDER	=9 
	LDK	A1,DOCOUT	INDICATE DOCUMENT OUT	=9 
	LDK	A4,0	RESET LINE COUNTER	=9 
PDOC10	SC	A4,DWTALN,A6	UPDATE OF LINE COUNTER	=9
	CM	DWTPPD,A6	RESET PRINT POSITION COUNTER	=9 
PDOC70	ABL	DISEND	END REQUEST	=9
PDOC80	ABL	DISIOE	END REQUEST WITH REQUEST ERROR	=9 
	EJECT		
* 
* 
*   ORDER 37 : TRANSFER DOCUMENT PARAMETERS 
*   CONTROL WORD CONTAINS DOCUMENT TABLE NUMBER 
* 
* 
TRFDOC	EQU	*
	LD	A1,ECBCW,A8 
	ADK	A1,1 
	LDR	A4,A1
	SLL	A4,3 
	ADR	A4,A1
	ADR	A4,A1
	CWK	A4,TLTP03
	RF(G)	ODOC80	REQ DOC TABLE NOT DEFINED	=9
	SUK	A4,10	ADJUST DOCTAB POINTER
	LC	A1,DWTALN,A6	GET ACTUAL LINE	=9 
	ANK	A1,/FF	TEST LINE NUMBER	=9 
	RF(NZ)	ODOC80	DOCUMENT ALREADY POSITIONED	=9 
	LDK	A3,POTDOC	LOAD TRANSFER DOC PAR ORDER	=9 
	CF	A5,ORDER	AND SEND 
	LDK	A3,DWTDP	SET UP POINTER
ODOC30	LC	A2,DTTP03,A4
	LDR	A1,A6
	ADR	A1,A3
	SCR	A2,A1
			U	=9 
	CF	A5,OUT
	ADK	A4,1 
	ADK	A3,1 
	CWK	A3,DWTDP+10
	RB(NE)	ODOC30	WHOLE TABLE NOT SENT 
	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER
	LDR	A1,A2	GET PRINTER STATUS	=9
	ANK	A1,1	TEST PRINTER STATUS	=9
ODOC70	ABL	DISEND	END REQUEST	=9
ODOC80	ABL	DISIOE	END REQUEST WITH REQUEST ERROR	=9 
	EJECT		
* 
* 
*   ORDER 24 : SET PRINTER PARAMETERS 
*   CONTROL WORD CONTAINS:
*   BIT 0     : INDICATE CHANGE OF CH FONT AND NCV        	=4 
*   BIT 01-03 : CHARACTER FONT                                	=4 
*   BIT 04-07 : NATIONAL CHARACTER VARIATION                  	=4 
*   BIT 08-11 : CHARACTER PITCH FOR JOURNAL STATION           	=4 
*   BIT 12-15 : CHARACTER PITCH FOR DOCUMENT STATION          	=4 
* 
* 
	IFT	PARORD=1 
PRTPAR	EQU	*
	LDK	A2,0 
	LD	A4,DWTPP,A6	GET OLD DWT VALUE 
	LD	A1,ECBCW,A8	GET CONTROL WORD
	RF(NN)	PPAR10	NO NEW L/NCV SET UP IN CTRL WORD 
	ECR	A2,A1
	ANK	A2,/FF 
	SC	A2,DWTPP,A6	STORE NEW L/NCV IN DWT
PPAR10	LDK	A2,0 
	LDR	A3,A1
	ANK	A3,/F0	GET CTRL WORD 
	RF(NZ)	PPAR15	NEW CPJ SET UP IN CTRL WORD	=1 
	LDR	A3,A4
	ANK	A3,/F0 
			U	=5(=1) 
PPAR15	EQU	*	U	=5(=1) 
	ORR	A2,A3	STORE NEW CPJ IN A2	=5 
	XRR	A3,A4	U	=5 
	ANK	A3,/F0	NEW AND OLD CPJ EQUAL ?	=5
	RF(Z)	PPAR22	YES	=5
	CM	DWTPPJ,A6	NO, RESET PRINT POS FOR JOURNAL	=5
PPAR22	EQU	*	U	=5 
	LDR	A3,A1
	ANK	A3,/F	GET CTRL WORD
	RF(NZ)	PPAR25	NEW CPD SET UP IN CTRL WORD	=1 
	LDR	A3,A4
	ANK	A3,/F	GET CPD FROM DWT 
			U	=5(=1) 
PPAR25	EQU	*	U	=5(=1) 
	ORR	A2,A3	STORE NEW CPD IN A2	=5 
	XRR	A3,A4	U	=5 
	ANK	A3,/F	NEW AND OLD CPD EQUAL ?	=5 
	RF(Z)	PPAR32	YES	=5
	CM	DWTPPD,A6	NO, RESET PRINT POS FOR DOC	=5
PPAR32	EQU	*	U	=5 
	SC	A2,DWTPP+1,A6	STORE NEW PARAMETERS IN DWT 
	LDK	A3,POPPAR	LOAD PRINTER PRINTER PARAMETER ORDER 
	CF	A5,ORDER	AND SEND 
	LC	A2,DWTPP,A6 
			U	=4(=2) 
	CF	A5,OUT	SEND L/NCV 
	LC	A2,DWTPP+1,A6 
			U	=9 
	CF	A5,OUT	SEND CPJ/CPD 
	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER
	LDR	A1,A2	GET PRINTER STATUS	=9
	ANK	A1,1	TEST PRINTER STATUS	=9
PPAR70	ABL	DISEND	END REQUEST	=9
	XIF
	EJECT		
* 
* 
*   ORDER 27 : SET DOCUMENT PARAMETERS
*   CONTROL WORD CONTAINS TABLE NO OF GIVEN PARAMETERS
* 
* 
	IFT	PARORD=1 
DOCPAR	EQU	*
	LD	A1,ECBCW,A8	GET CONTROL WORD
	ADK	A1,1 
	LDR	A4,A1
	SLL	A4,3 
	ADR	A4,A1
	ADR	A4,A1
	CWK	A4,TLTP03
	RF(G)	DPAR80	DEFINED TABLE TOO SMALL 
	SUK	A4,10	ADJUST DOCTAB POINTER
	LD	A3,ECBBA,A8	GET BUFFER ADDRESS
	CF	A5,BYTE1	GET DOC TYPE 
	SUK	A1,3 
	RF(P)	DPAR80	ILLEGAL VALUE 
			U	=2 
	SC	A2,DTTP03,A4
	CF	A5,BYTE1	GET TIME OUT VALUE 
	SLL	A2,11
	ORS	A2,DTTP03,A4 
	CF	A5,DOC	GET LINE SPACING 
	SUK	A2,15
	RF(P)	DPAR80	TOO LARGE 
	CF	A5,DOC	GET NO OF LINES
	SUK	A2,0 
	RF(Z)	DPAR80	NO LINES
	CF	A5,DOC	GET BOTTOM LINES 
	SUK	A2,14
	RF(N)	DPAR80	TOO SMALL 
	CF	A5,DOC	GET MARGIN 
	SUK	A2,0 
	RF(Z)	DPAR80	TOO SMALL 
	SUK	A2,80
	RF(P)	DPAR80	TOO LARGE 
	ADK	A4,1 
	CF	A5,BYTE1	GET MARGIN FINE
	SUK	A1,0 
	RF(Z)	DPAR80	TOO SMALL 
	SUK	A1,7 
	RF(P)	DPAR80	TOO LARGE 
	SC	A2,DTTP03,A4
	CF	A5,BYTE1	GET LEFT MARGIN
	SUK	A1,1 
	RF(P)	DPAR80	ILLEGAL VALUE 
	SLL	A2,3 
	ORS	A2,DTTP03,A4 
	CF	A5,BYTE1	GET CRITICAL MARGIN
	SUK	A1,1 
	RF(P)	DPAR80	ILLEGAL VALUE 
	SLL	A2,5 
	ORS	A2,DTTP03,A4 
	CF	A5,BYTE1	GET HIGH PRINT PRESSURE
	SUK	A1,1 
	RF(P)	DPAR80	ILLEGAL VALUE 
	SLL	A2,6 
	ORS	A2,DTTP03,A4 
	LC*	A1,ECBBA,A8	GET DOC TYPE 
	ANK	A1,/F
	RF(Z)	DPAR60	DOC TYPE = 0
	CF	A5,DOC	GET UPPER EDGE 
	SUK	A2,15
	RF(N)	DPAR80	TOO SMALL 
	SUK	A2,67
	RF(P)	DPAR80	TOO LARGE 
	CF	A5,DOC	GET BOTTOM EDGE
	SUK	A2,0 
	RF(Z)	DPAR30	OK
	SUK	A2,24
	RF(N)	DPAR80	TOO SMALL 
DPAR30	LC*	A1,ECBBA,A8	GET DOC TYPE 
	ANK	A1,/F
	SUK	A1,2 
	RF(N)	DPAR70	DOC TYPE = 1
	RF(P)	DPAR40	DOC TYPE = 3
	CF	A5,DOC	GET DOCUMENT WIDTH 
	SUK	A2,40
	RF(N)	DPAR80	TOO SMALL 
	SUK	A2,57
	RF(P)	DPAR80	TOO SMALL 
	RF	DPAR50
DPAR40	CF	A5,DOC	GET UPPER LINES
	SUK	A2,0 
	RF(Z)	DPAR80	TOO SMALL 
	SUK	A2,40
	RF(P)	DPAR80	TOO LARGE 
DPAR50	CF	A5,DOC	GET CENTER WIDTH 
	RF	DPAR75	OK 
DPAR60	LDK	A2,0	DT=0 SET 4 LAST PARAMETERS=0
	ADK	A4,1 
	ST	A2,DTTP03,A4
	ADK	A4,1 
DPAR70	LDK	A2,0	DT=1 SET 2 LAST PARAMETERS=0
	ADK	A4,1 
	ST	A2,DTTP03,A4
DPAR75	LDK	A1,0	IND STATUS OK FOR RETURN CODE 
	ABL	DISEND	END REQUEST	=9
DPAR80	ABL	DISIOE	END REQUEST WITH REQUEST ERROR	=9 

*   GET ONE BYTE FROM ECB BUFFER TO A1 AND A2 
*   CONVERTED TO HEXA FROM ASCII

BYTE1	LCR	A2,A3	GET CHARACTER 
	CF	A5,CHECK	TEST IF NUMERIC
	ANK	A2,/F	GET HEXA 
	LDR	A1,A2	SAVE IN A1 ALSO
	ADK	A3,1	INC ECB BUFFER POINTER
	RTN	A5 

*   GET TWO BYTES FROM ECB BUFFER TO A2 
*   CONVERTED TO HEXA AND STORED IN DOC TABLE 

DOC	LDK	A1,0	CLEAR HEXA VALUE 
	ADK	A4,1	INC TABLE POINTER 
	LCR	A2,A3	GET CHARACTER FROM ECB BUFFER
	CF	A5,CHECK	TEST IF NUMERIC
	ANK	A2,/F
DOC10	SUK	A2,1
	RF(N)	DOC20	TENTH FINISHED 
	ADK	A1,10	UPDATE TENTH 
	RB	DOC10 
DOC20	ADK	A3,1	INC ECB BUFFER POINTER 
	LCR	A2,A3	GET NEXT CHARACTER FROM ECB BUFFER 
	CF	A5,CHECK	TEST IF NUMERIC
	ANK	A2,/F
	ADR	A2,A1	ADD TO PREV HEXA VALUE 
	SC	A2,DTTP03,A4	STORE IN DOC TABLE 
	ADK	A3,1	INC ECB BUFFER POINTER
	RTN	A5 
* 
*   CHECK IF CHARACTER IS NUMERIC 
CHECK	ANK	A2,/FF	MASK OUT CHARACTER 
	SUK	A2,/30 
	RB(N)	DPAR80	TOO LOW ERROR	=9
	SUK	A2,9 
	RB(P)	DPAR80	TOO HIGH ERROR	=9 
	ADK	A2,/39	RESTORE CHARACTER 
	RTN	A5 
			2 LINES DELETED	=9 
	XIF
	EJECT		
* 
* 
*   ORDER 38 : RELEASE DOCUMENT 
* 
* 
RELDOC	EQU	*
	LDK	A3,PORDOC	LOAD PRINTER REL DOC ORDER 
	CF	A5,ORDER	AND SEND 
	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER
	LDR	A1,A2	GET PRINTER STATUS	=9
	ANK	A1,1	TEST PRINTER STATUS	=9
	RF(NZ)	RDOC70	NOT OPERABLE	=9
	CM	DWTLN,A6	RESET LINE COUNTERS	=9 
	CM	DWTPPD,A6	RESET PRINT POSITION COUNTERS	=9
	IFT	REL=8	U	=9 
	LDK	A1,DOCOUT	INDICATE DOCUMENT OUT	=9 
	XIF		U	=9
	IFT	REL=9	U	=9 
	LDK	A1,DOCOUT	INDICATE DOCUMENT OUT	=9 
	XIF		U	=9
RDOC70	ABL	DISEND	END REQUEST	=9
			68 LINES DELETED	=9
	EJECT
* 
*   S U B R O U T I N E S 
* 
* 

* 
*   O R D E R 
*   SEND START OF BLOCK CHAR TO COM. AND ORDER CODE TO PRINTER	=7 
* 
ORDER	EQU	* 
	LDK	A2,STB	SEND STB
	CF	A5,OUTPUT 
	LDR	A2,A3
	RF	OUT10	SEND PRINTER ORDER	=9 
			U	=9 

* 
*   E X E C U T E 
*   SEND EXECUTE CHAR (/03) TO PRINTER AND END OF BLOCK CHAR TO COM.	=7 
* 
EXECUT	EQU	*
	LDK	A2,ETX	SEND EXECUTE CHAR TO PRINTER	=7 
	CF	A5,OUTPUT 
	LDK	A2,ETB	SEND END OF BLOCK	=7
	CF	A5,OUTPUT 
	CF	A5,STREG	GET STATUS CHARACTER 
	SC	A2,DWTST+1,A6	SAVE IN DWT STATUS	=9 
	RTN	A5 
* 
*   E R R O R                              	=9(=8)
*   SEND RESET CODE (/0C) TO PRINTER      	=9(=8) 
* 
ERROR	EQU	* 
	LDK	A2,RESET 
			U	=9(=8) 
	CF	A5,OUTPUT 
	LDK	A2,ETB	SEND END OF BLOCK	=7
	RF	OUT10	U	=9(=7)
			U	=9 
* 
*   0 U T 
*   ADD CONST. AND SEND 
* 
OUT	EQU	*	U	=3
	ANK	A2,/7F	U	=3
	ADK	A2,/10	U	=3
	CWK	A2,/7F	U	=1
	RF(NG)	OUT10	CHARACTER NOT GREATER THAN /7F	=1 
	LDK	A2,/7F	IF GREATER SET CHAR TO /7F	=1 
OUT10	EQU	*	U	=1
	CF	A5,OUTPUT 
	RTN	A5 
			11 LINES DELETED	=9
	EJECT
* 
*   I H T P 
* 
*   INTERRUPT HANDLER: PROCESS OF INTERRUPT 
* 
* 
* 
IHTP	EQU	*
	LDR	A1,A1
	RF(NZ)	IHTP60	LINE NOT OPERABLE	=7 
			17 LINES DELETED	=9
IHTP40	ABL	LDREG	RETURN FROM CF A5,OUTPUT/STREG 
IHTP60	EQU	*	U	=7 
	IFT	REQEND=0	U	=7
	LC	A1,DWTOR+1,A6	GET ORDER CODE	=7 
	ANK	A1,/FF	TEST ORDER OR RECOVERY ?
	ABL(NZ)	TDISP	NO, DISPATCH ELSE	=9(=7) 
	XIF		U	=7
	LDK	A1,1	INDICATE NOT OPERABLE	=9(=7)
	ABL	DISEND	END OF REQUEST	=9(=7) 
	EJECT
* 
*	R C T P 
* 
*	THIS IS THE RECOVERY ROUTINE FOR THE DRIVER 
*	REGISTER A1 - A8 IS SAVED ON STACK
*	DWT ORDER IS RESET IF NO REQUEST RUNING 
*	DWT IS SET BUSY 
*	AFTER PROGRAM LOADING SYSTEM PARAMETERS ARE SET UP IN DWT 
*	TEST STRING IS SENT TO PRINTER TO GET SYNCRONISM
*	A FIXED FORMATTED RECOVERY STRING IS THEN SENT TO PRINTER 
*	THIS STRING CONTAINS THE ACTUAL PARAMETERS AND THE ACTUAL 
*	STATUS FOR THE PRINTER. 
*	A RUNING REQUEST IS AT LAST REPEATED. 
* 
RCTP	EQU	*	U	=9 
	IFT	CPU852=1	U	=9
	CF	A15,SAVE8	SAVE REG. A1-A8	=9
	XIF		U	=9
	IFT	CPU852=0	U	=9
	MSR	8,A15	SAVE REG. A1-A8	=9 
	XIF		U	=9
	IFT	REL=8	U	=7 
	LDKL	A1,/8100	ADJUST DWTCHP TO MATCH FINAL PRT	=7
	ORRS	A1,A6	U	=7
	XIF		U	=7
	LD	A1,DWTECB,A6	GET ECB ADDRESS	=7 
	RF(NZ)	RCTP02	REQUEST RUNNING	=7 
	CM	DWTOR,A6	RESET ORDER	=7 
RCTP02	EQU	*	U	=7 
	LDKL	A1,/7FFF	INDICATE DEVICE BUSY 
	ANS	A1,DWTST,A6
				=8
	LD	A1,DWTPP,A6 
	RF(N)	RCTP08	NOT SYSTEM START UP RECOVERY	=9(=2) 
			5 LINES DELETED	=9 
	LD	A3,STDPP	SET UP ST PR PAR IN DWT	=2 
	ST	A3,DWTPP,A6	U	=2
	LDK	A4,8	SET UP DOC PAR TABLE 0 IN DWT	=2
	LDR	A3,A6	U	=2 
	ADK	A3,DWTDP+8	U	=2
RCTP05	LD	A1,DTTP03,A4	U	=2 
	STR	A1,A3	U	=2 
	SUK	A3,2	U	=2
	SUK	A4,2	U	=2
	RB(NN)	RCTP05	U	=2 
RCTP08	LDK	A3,POTEST	LOAD PRINTER ORDER TEST STATUS	=9
	CF	A5,ORDER	AND SEND	=9
	CF	A5,EXECUT	EXECUTE ORDER IN PRINTER	=9 
RCTP10	LDK	A3,PORECV	SET UP PRINTER RECOVERY ORDER	=8 
	CF	A5,ORDER	AND SEND	=8
	LD	A3,DWTPP,A6	GET PRINTER PARAMETERS	=2 
			3 LINES DELETED	=9 
RCTP20	ECR	A2,A3
			U	=4(=2) 
	CF	A5,OUT	SEND L/NCV 
	LDR	A2,A3
			U	=9 
	CF	A5,OUT	SEND CPJ/CPD 
	LC	A2,DWTAPJ,A6	GET ACTUAL POS JOURNAL 
	CF	A5,OUT	AND SEND 
	LC	A2,DWTAPD,A6	GET ACTUAL POS DOCUMENT
	LDR	A3,A2	SAVE DOC POS 
	ANK	A2,/3F	MASK OFF MSB
	CF	A5,OUT	SEND APD 
	LDR	A2,A3	GET DOC POS BACK 
	ANK	A2,/40	MASK OUT MSB
	CF	A5,OUT	SEND AP6 
	LC	A2,DWTALN,A6	GET ACTUAL LINE NO 
	CF	A5,OUT	AND SEND 
			10 LINES DELETED	=9
RCTP40	LDK	A4,10
	LDR	A3,A6
	ADK	A3,DWTDP 
RCTP50	LCR	A2,A3	GET DOC PARAMETER
			U	=4 
	CF	A5,OUT	AND SEND 
	ADK	A3,1	INC DOC TABLE POINTER 
	SUK	A4,1	DEC CHARACTER COUNTER 
	RB(NZ)	RCTP50	WHOLE TABLE NOT SENT 
RCTP60	CF	A5,EXECUT	EXECUTE RECOVERY IN PRINTER 
	ANK	A2,/40	TEST PRINTER STATUS	=9
	RF(Z)	RCTP70	DOCUMENT STILL INSIDE	=9
	CM	DWTLN,A6	RESET LINE COUNTERS	=9 
	CM	DWTPPD,A6	RESET PRINT POSITION COUNTERS	=9
RCTP70	LD	A1,DWTECB,A6
	ABL(NZ)	ACT005	REQ RUNNING 
	ABL	DISEND	REQ NOT RUNNING 
	END

Full view