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

⟦6c6b57d84⟧

    Length: 20740 (0x5104)
    Notes: pts_type(SC)
    Names: »DRTP03.SC«

Derivation

└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
    └─⟦this⟧ »TOSSWORK/DRTP03.SC« 

PTS(SC)

	IDENT DRTP03 	REL 9.1 78-09-15  870106640911 
* 
******************************************************* 
*                                                     * 
*   PHILIPS TERMINAL SYSTEM PTS                       * 
*                                                     * 
*   DRTP03 = DRIVER TELLER TERMINAL PRINTER           * 
*                                                     * 
*                                                     * 
*                                                     * 
******************************************************* 
* 
*   THIS DRIVER HANDLES TELLER TERMINAL PRINTER TP71
* 
*   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 PREPARES ORDERS AND SENDS 
*   A FIXED FORMATTED STRING TO THE PRINTERS
*   MICROPROCESSOR (HERE CALLED MP) 
* 
	EJECT
* 
*   THE FOLLOWING ORDERS ARE TREATED: 
* 
*   ORDER 00 :      TEST STATUS 
*   ORDER 06 :      WRITE 
*   ORDER 0B :      POSITION LIFT AND WRITE 
*   ORDER 24 :      SET PRINTER PARAMETERS
*   ORDER 1B :      SET DOCUMENT PARAMETERS 
*   ORDER 38 :      RELEASE VOUCHER/PASSBOOK
* 
*   THE FOLLOWING RETURN CODES ARE USED:
* 
*   BIT  0 :        REQUEST ERROR 
*   BIT 10 :        END OF JOURNAL TAPE, VOUCHER 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
	EJECT
* 
* 
************* 
* CONSTANTS * 
************* 
* 
* 
* 
STX	EQU	/82	START OF TEXT BLOCK 
LDO	EQU	/0A	LIFT DOWN 1 POSITION
LUP	EQU	/0B	LIFT UP ONE POSITION
OCR	EQU	/13	OCR 
SPEC	EQU	/0E	SPECIAL MODE 
DOUBLE	EQU	/0C	DOUBLE MODE
EXE	EQU	/06	EXECUTE COMMAND 
RESET	EQU	/07	RESET MP
	EJECT
* 
* 
********************* 
* DWT-DISPLACEMENTS * 
********************* 
* 
DWTST	EQU	2	STATUS
DWTDEV	EQU	3	DEVICE INDEX 
DWTOR	EQU	6	LAST OUTPUT, ORDER
DWTSB2	EQU	/1E	STACK BASE 
DWTRLN	EQU	/22	REQUESTED LINE 
DWTALN	EQU	/23	ACTUAL LINE
DWTRPP	EQU	/24	REQUESTED PRINT POSITION 
DWTAPP	EQU	/25	ACTUAL PRINT POSITION
DWTPP	EQU	/26	PRINTER PARAMETERS
DWTDP	EQU	/2A	DOC. PARAMETER TABLE ADR
DWTSAV	EQU	/2C	SAVE AREA
DWTPM	EQU	/2D	PRINT MODE
* 
* 
********************* 
* 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 *
**********
* 
* 
TPAD3	EQU	*	ADDRESS BLOCK 
	DATA	ACTP	ACTIVATION DRIVER
	DATA	IHTP	INTERRUPT HANDLER
	DATA	RCTP	RECOVERY ROUTINE 
TPTAB	EQU	* 
	DATA	/0001,/0206,/0708,/0C0D,/393A,/2425,/261C,/1D00 
TPLEN	EQU	*-TPTAB 
	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=VOUCHER/PASSBOOK, 2=A4
* 
	LC	A2,DWTOR,A6	GET DWT INDEX 
	ANK	A2,7	MASK
	LC	A3,DWTDEV,A6	GET OLD DEVICE VALUE 
	ANK	A3,/FC 
	ORR	A3,A2
	SC	A3,DWTDEV,A6	STORE INDEX
	ADR	A7,A2	ADD DWT INDEX TO ORDER 
	SC	A7,DWTOR+1,A6	STORE MODIFIED ORDER
ACT005	LDK	A3,TPLEN-2 
ACT010	CC	A7,TPTAB,A3	CHECK IF LEGAL ORDER
	RF(E)	ACT020	VALID ORDER 
	SUK	A3,1 
	RB(NN)	ACT010	TRY NEXT 
* 
	ABL	DISIOE	ILLEGAL ORDER 
* 
* 
ACT020	EQU	*
	ADR	A3,A3	GET INDEX
	ABI	TPFUC,A3	EXECUTE ORDER 
TPFUC	DATA	TPSTAT,TPSTAT,TPSTAT,TP06,TP06,TP06,TP0B,TP0B
	DATA	TP38,TP38,TP24,TP24,TP24,TP1B,TP1B
	EJECT
* 
* 
*   ORDER 00 : TEST STATUS
* 
* 
TPSTAT	EQU	*
	CF	A5,START
	LDK	A2,/30	LOAD MP ORDER 
	CF	A5,ORDER	ADD INDEX AND SEND 
	CF	A5,EXECUT 
	ABL	TPTST

* 
* 
*   ORDER 06 : WRITE
* 
* 
TP06	EQU	*
	SUR	A1,A1
	CWR	A1,A2	DEVICE=JOURNAL 
	RF(E)	TP062
	CF	A5,STATCK	CHECK IF DOC. IN
	ABL(NZ)	TPTST	NO 
TP062	EQU	* 
	CF	A5,START
	LDK	A2,/33	LOAD MP ORDER 
	CF	A5,ORDER	ADD INDEX AND SEND 
	CF	A5,REQCK	CHECK REQ. LENGTH
	ABL(NZ)	ERR
	CF	A5,NOLF	GET NO. OF LF 
	LDK	A2,LDO 
	CF	A5,OUTPUT	SEND LF UP
	LDR	A2,A3
	CF	A5,OUT	SEND NO. OF LF 
	LC	A1,DWTDEV,A6	GET DEVICE INDEX 
	ANK	A1,3 
	RF(Z)	TP0610	JOURNAL 
	LC	A1,DWTALN,A6	GET ACTUAL LINE
	ANK	A1,/FF 
	RF(NZ)	TP0604
	LD*	A1,DWTDP,A6	GET MAX LINES
	ANK	A1,/FF 
TP0604	ADR	A1,A3	ADD TO GET REQ. LINE 
	LD*	A3,DWTDP,A6	GET MAX LINES
	ANK	A3,/FF 
	CWR	A1,A3	>MAX 
	ABL(G)	ERR 
	SC	A1,DWTRLN,A6	STORE IN DWT 
TP0610	CF	A5,REQCK	CHECK LENGTH 
	SUK	A4,1	LENGTH=2
	RF(Z)	TP0620 
	LD	A4,ECBRL,A8	GET ADJUSTED REQUESTED LENGTH 
	SUK	A4,2 
	LD	A3,ECBBA,A8	GET ADJUSTED BUFFER START 
	ADK	A3,2 
	CM	DWTSAV,A6	CLEAR WORK AREA 
	LC	A1,-1,A3	GET CONTROL CHARACTER
	ANK	A1,/FF 
	SUK	A1,/2B 
	RF(NZ)	PR002	NOT /2B 
	LC	A1,DWTAPP,A6	GET ACTUAL PRINT POS 
	SC	A1,DWTRPP,A6	-AND SET AS REQUESTED PRINT POS
	RF	PR004 
PR002	CM	DWTRPP,A6	RESET PRINT POS COUNTERS 

PR004	LCR	A2,A3	GET CHARACTER 
	ANK	A2,/FF	MASK
	LC	A7,1,A3	GET NEXT CHARACTER
	CCK	A2,/AEAE	NOT ROOMLESS POINT DIGIT
	RF(NE)	PR030 
	LDR	A2,A7	GET DIGIT
	ADK	A3,1	STEP POINTER
PR014	SUK	A4,1	DECR. LENGTH 
	ORK	A2,/40	SET ZONE VALUE
	LC	A7,DWTPM,A6	CHECK IF SPECIAL MODE 
	ANK	A7,/80 
	RF(NZ)	PR020	YES 
	SC	A2,DWTSAV,A6	SAVE DIGIT 
	CF	A5,INCR	CHECK AND COUNT 
	RF(NZ)	ERR 
	LDK	A2,SPEC
	CF	A5,OUTPUT	SEND 'SPECIAL'
	LC	A2,DWTSAV,A6
	CF	A5,OUTPUT	SEND DIGIT
	LDK	A2,SPEC
	CF	A5,OUTPUT 
	RF	PR022 

PR020	CF	A5,INCR	CHECK AND COUNT
	RF(NZ)	ERR 
	CF	A5,OUTPUT	SEND CHARACTER
PR022	SUK	A4,1	DECR. REQ. LENGTH
	RF(Z)	TP0620	EMPTY 
	ADK	A3,1	STEP POINTER
	RB	PR004 

PR030	ANK	A2,/FF	MASK 
	LDR	A7,A2	SAVE CHARACTER 
	SUK	A7,DOUBLE	DOUBLE 
	RF(Z)	PR040
	SUK	A7,2	SPECIAL 
	RF(Z)	PR040
	SUK	A7,5	OCR 
	RB(NZ)	PR020 
PR040	CF	A5,SETMOD	UPDATE PRINT MODE
	CF	A5,OUTPUT 
	RB	PR022 
TP0620	CF	A5,EXECUT 
	LC	A1,DWTDEV,A6	GET INDEX
	ANK	A1,3 
	RF(Z)	TP0630	JOURNAL 
	LC	A1,DWTRLN,A6	GET REQ. LINE
	SC	A1,DWTALN,A6	STORE AS ACTUAL LINE 
TP0630	LDK	A3,/13	LOAD MASK 
	TM	A2,A3	NOT OPERABLE
	RF(Z)	TP0640	YES 
	CM	DWTRPP,A6	CLEAR PRINT POS 
	RF	TPTST 
TP0640	LC	A1,DWTRPP,A6	GET REQ. PRINT POS 
	SC	A1,DWTAPP,A6	STORE AS ACTUAL PRINT POS
* 
*   TEST STATUS 
* 
TPTST	EQU	* 
	LDK	A1,0 
	LDK	A3,/13 
	TM	A2,A3	OPERABLE
	RF(Z)	DOCIN
	LDK	A1,1 
DOCIN	LC	A4,DWTDEV,A6 
	ANK	A4,3	JOURNAL 
	RF(Z)	CODE 
	LDK	A3,/40 
	TM	A2,A3	DOCUMENT OUT
	RF(NZ)	CODE
	CM	DWTRLN,A6	RESET LINE COUNTER
	LC	A3,DWTST,A6	RESET DOC IN BIT
	ANK	A3,/FD 
	SC	A3,DWTST,A6 
	CWK	A7,/1B	ORDER=SET DOC PAR 
	RF(NL)	CODE
	ORK	A1,/20 
CODE	LDK	A3,4 
	TM	A2,A3	CODE CHECK ERROR
	RF(Z)	ENDJT
	ORK	A1,4 
ENDJT	LDR	A4,A4	NOT JOURNAL 
	RF(NZ)	TPRC
	ANK	A2,/20	NOT END OF PAPER
	RF(Z)	TPRC 
	ORK	A1,/20 
TPRC	ST	A1,ECBRC,A8	SET RETURN CODE 
* 
* 
ENDIO	ABL	DISEND
* 
*  E R R
*  ERROR. SEND RESET COMMAND AND INDICATE 
*  CODE CHECK ERROR 
* 
ERR	EQU	* 
	LDK	A2,RESET 
	CF	A5,OUTPUT	SEND RESET
	LDK	A1,4 
	RB	TPRC
* 
*   ORDER 0B : POSITION VOUCHER/PASSBOOK/A4 AND WRITE 
* 
* 
TP0B	EQU	*
	CF	A5,STATCK	CHECK IF DOC. IN
	RB(NZ)	TPTST 
	LC	A1,DWTDEV,A6	GET INDEX
	ANK	A1,3 
	LDR	A2,A1
	SLL	A1,2 
	ORR	A2,A1
	SC	A2,DWTDEV,A6	SAVE CURRENT DEVICE
	CF	A5,START
	LDK	A2,/35	LOAD MP ORDER 
	CF	A5,ORDER	ADD INDEX AND SEND 
	LD	A3,ECBCW,A8	GET CONTROL WORD
	RB(Z)	ERR	=0 
	LD	A1,DWTDP,A6	GET TABLE ADR 
	RB(Z)	ERR	NOT DEFINED
	LDR*	A2,A1	GET MAX LINES 
	ANK	A2,/FF 
	CWR	A3,A2	>MAX 
	RB(G)	ERR
	SC	A3,DWTRLN,A6	STORE REQ. LINE
	LC	A4,DWTALN,A6	GET ACTUAL LINE
	ANK	A4,/FF 
TP0B04	CWR	A3,A4
	RF(NG)	TP0B10	REQ. <= ACTUAL 
	LDK	A2,LDO 
	CF	A5,OUTPUT	SEND LF DOWN
	SUR	A3,A4
	RF	TP0B20
TP0B10	LDK	A2,LUP 
	CF	A5,OUTPUT	SEND LF UP
	SUR	A4,A3
	LDR	A3,A4
TP0B20	LDR	A2,A3
	CF	A5,OUT	SEND NO. OF LF 
	LD	A1,ECBRL,A8	GET LENGTH
	RB(Z)	TP0620	NO PRINTING 
	ABL	TP0610 
* 
*   ORDER 38 : RELEASE VOUCHER/PASSBOOK AND A4
* 
TP38	EQU	*
	CF	A5,START
	LDK	A2,/37	LOAD MP ORDER 
	CF	A5,ORDER	ADD INDEX AND SEND 
	CM	DWTRLN,A6	SET ACTUAL LINE ZERO
	CF	A5,EXECUT 
	RB	TPTST 
	EJECT
* 
* 
*   ORDER 24 : SET PRINTER PARAMETERS 
*   CONTROL WORD OF ECB CONTAINS: 
*   BIT  0- 7:NATIONAL CHARACTER SET
*   BIT  8-11:PITCH 
*   BIT 12-15:STEPS/LINE
* 
* 
TP24	EQU	*
	CF	A5,START
	LDK	A2,/3A	LOAD MP ORDER 
	CF	A5,ORDER	ADD INDEX AND SEND 
	LDK	A4,0 
	LDR	A3,A6	GET ADR TO PARAM.
	ADK	A3,DWTPP+1 
	LC	A1,DWTDEV,A6
	ANK	A1,3 
	ADR	A3,A1
	LD	A1,ECBCW,A8	GET CONTROL WORD
	ANK	A1,/F	MASK TO GET STEPS/LINE 
	RF(NZ)	TP2402
	LCR	A1,A3	GET OLD VALUE
	ANK	A1,/F
	ORR	A4,A1	SAVE STEPS/LINE
	RF	TP2404

TP2402	CF	A5,PPCK	CHECK 
	RB(NZ)	ERR 
	ORR	A4,A1	SAVE NEW STEPS/LINE

TP2404	LDR	A2,A4
	CF	A5,OUT	SEND STEPS/LINE
	LD	A1,ECBCW,A8 
	ANK	A1,/F0	GET PITCH 
	RF(NZ)	TP2406
	LCR	A1,A3	GET OLD VALUE
	ANK	A1,/F0 
	RF	TP2408

TP2406	SRL	A1,4 
	CF	A5,PPCK	CHECK 
	RB(NZ)	ERR 
	SLL	A1,4 
TP2408	ORR	A4,A1	SAVE PITCH VALUE 
	SCR	A4,A3	STORE NEW PRINTER PARAMETERS 
	LDR	A2,A1
	SRL	A2,4 
	CF	A5,OUT	SEND PITCH 
	LD	A1,ECBCW,A8 
	SRL	A1,8	GET NAT. CH. SET
	LDR	A2,A1
	ANK	A1,/F
	SUK	A1,9	>9
	RB(P)	ERR
	SC	A2,DWTPP,A6	STORE IN DWT
	CF	A5,OUT	SEND NAT. CH. SET
	CF	A5,EXECUT 
	RF	TP1B10

* 
* 
*   ORDER 1B : SET DOCUMENT PARAMETERS
*   CONTROL WORD OF ECB CONTAINS
*   ADR TO PARAMETER TABLE
* 
TP1B	EQU	*
	CF	A5,START
	LDK	A2,/3C	LOAD MP ORDER 
	CF	A5,ORDER	ADD INDEX AND SEND 
	LD	A3,ECBCW,A8	GET CONTROL WORD
	ABL(Z)	ERR	NOT DEFINED 
	ST	A3,DWTDP,A6	STORE TABLE ADR 
	CF	A5,SENDDP	SEND TABLE
	CF	A5,EXECUT 
TP1B10	ABL	TPTST
	EJECT
* 
*   S U B R O U T I N E S 
* 
* 

* 
*   O R D E R 
*   SENDS MODIFIED ORDER TO MP
* 
ORDER	EQU	* 
	LDR	A3,A2	SAVE 
	LDK	A2,STX 
	CF	A5,OUTPUT 
	LDR	A2,A3
	LC	A1,DWTDEV,A6	GET INDEX
	ANK	A1,3 
	ADR	A2,A1	ADD INDEX
	CF	A5,OUTPUT	SEND ORDER
	RTN	A5 

* 
*	START 
*	INDICATES START CHARACTER TO MP 
* 
START	EQU	* 
	CF	A5,NODRW
	LDK	A2,RESET 
	CF	A5,OUTPUT 
	RTN	A5 
* 
*   E X E C U T 
*   INDICATES LAST CHARACTER TO MP
* 
EXECUT	EQU	*
	CF	A5,DRW	DATA REQUEST WANTED
	LDK	A2,EXE 
	CF	A5,OUTPUT 
	RTN	A5 
* 
*   R E Q C K 
*   CHECKS REQUESTED LENGTH 
* 
REQCK	EQU	* 
	LDK	A4,0 
	LD	A1,ECBRL,A8	GET REQUESTED LENGTH
	SUK	A1,2 
	RF(N)	COND1	LENGTH=0-1 
	RF(G)	RE10	BUFFER TO PRINT 
	LDK	A4,1	IND. REQ. LENGTH=2
RE10	RF	COND0 

* 
*   S T A T C K 
*   CHECKS IF DOCUMENT IN 
* 
STATCK	EQU	*

	LC	A7,DWTST,A6	GET STATUS BYTE 
	ANK	A7,2 
	LDK	A2,0	RESET A2 IN CASE DOC NOT IN 
	RF(NZ)	COND0 
	RF	COND1 

* 
*   N O L F 
*   GET NO. OF LINES TO A1
* 
NOLF	EQU	*
	LD	A3,ECBBA,A8	GET BUFFER ADR
	LC	A3,1,A3 
	ANK	A3,/FF	GET CONTROL CHARACTER 
	SUK	A3,/39 
	RF(G)	NOLF10	>/39 = ONE LF 
	ADK	A3,9 
	RF(Z)	NOLF20	=/30 = TWO LF 
	RF(NN)	NOLF30	1-9 LF 
	ADK	A3,5 
	RF(Z)	NOLF40	=/2B = NO LF
NOLF10	LDK	A3,1 
	RTN	A5 
NOLF20	LDK	A3,2 
NOLF30	RTN	A5 
NOLF40	LDK	A3,0 
	RTN	A5 

* 
*   SET CONDITION 
* 
COND0	LDK	A7,0
	SC	A7,2,A5 
	RTN	A5 
* 
COND1	LDK	A7,1
	RB	COND0+2 
* 
*   I N C R 
*   CHECK CHARACTER AND INCR. DWTRPP. MODE IN A1
* 
INCR	EQU	*
	LDR	A7,A2	SAVE 
	SUK	A7,/1E	>/1E
	RF(G)	INC10
	LDR	A7,A2
	SUK	A7,LDO	<LDO
	RB(N)	COND1
	SUK	A7,9 
	RB(G)	COND1	>OCR 
	ADK	A7,6	TAB ORDER 
	RB(Z)	COND1
	RB	COND0 
INC10	SUK	A7,/61	>8F
	RB(P)	COND1
	LC	A7,DWTPM,A6	GET CURRENT PRINT MODE
	LC	A1,DWTRPP,A6	GET PRINT POS COUNTER
	ADK	A1,1	COUNT 
	ANK	A7,DOUBLE
	SUK	A7,DOUBLE	NOT DOUBLE 
	RF(NZ)	INC20 
	ADK	A1,1 
INC20	SC	A1,DWTRPP,A6	STORE COUNTER 
	RB	COND0 
*   P P C K 
*   CHECK PRINTER PARAMETERS
* 
PPCK	CWK	A1,/A
	RB(E)	COND0
	CWK	A1,/C
	RB(E)	COND0
	CWK	A1,/F
	RB(E)	COND0
	RB	COND1 
*   0 U T 
*   ADD CONST. AND SEND 
* 
OUT	ADK	A2,/20
	CF	A5,OUTPUT 
	RTN	A5 
* 
*   S E N D D P 
*   SENDS ALL BYTES IN PARAMETER TABLE
* 
SENDDP	EQU	*
	LDK	A4,6 
SEN10	LCR	A2,A3	GET BYTE FROM TABLE 
	ADK	A2,/20	ADD CONST 
	CF	A5,OUTPUT	SEND CH.
	ADK	A3,1 
	SUK	A4,1 
	RB(NZ)	SEN10 
	RTN	A5 

* 
*   S E T M O D 
*   UPDATES PRINTING MODE 
* 
SETMOD	EQU	*
	LC	A7,DWTPM,A6	GET CURRENT MODE
	CWK	A2,SPEC	NOT SPECIAL
	RF(NE)	SET10 
	XRK	A7,/80 
	RF	SET20 
SET10	XRR	A7,A2 
SET20	SC	A7,DWTPM,A6	STORE NEW MODE 
	RTN	A5 

* 
*   D R W 
*   INDICATE DATA REQUEST WANTED
* 
DRW	LDKL	A1,/7FFF 
	ANRS	A1,A6 
	RTN	A5 
* 
*   N O D R W 
*   NO DATA REQUEST WANTED
* 
NODRW	LDKL	A1,/8000 
	ORRS	A1,A6 
	RTN	A5 
	EJECT
* 
*   I H T P 
* 
*   INTERRUPT HANDLER: PROCESS OF INTERRUPT 
* 
* 
* 
IHTP	EQU	*
	LDR	A4,A4
	RF(Z)	IHTP10	ACK AS DATA REQUEST 
	LDK	A3,8 
	TM	A2,A3	NOT DATA REQUEST
	RF(Z)	IHTP20 

IHTP10	ABL	LDREG
IHTP20	ANK	A2,/40	MASK DOC. BIT 
	CWK	A2,0	DOCUMENT IN?
	RF(NE)	IHTP22	YES
	CM	DWTRLN,A6	RESET LINE COUNTER
IHTP22	SRL	A2,5 
	LC	A4,DWTST,A6	GET STATUS
	ANK	A4,/FD 
	ORR	A4,A2
	SC	A4,DWTST,A6	SET NEW STATUS
IHTP30	ABL	TDISP
	EJECT
* 
*   R C T P 
* 
*   RECOVERY ROUTINE: REPRINTS RUNNING REQUEST AT POWER ON
* 
RCTP	CF	A15,SAVE8	SAVE REG. A1-A8 
	CF	A5,NODRW	NO DATA REQUEST
	CF	A5,START
	LDK	A2,/3F	RECOVERY ORDER
	LC	A3,DWTST,A6	GET STATUS
	ANK	A3,/20	NO DOCUMENT 
	RF(Z)	RCTP02 
	LC	A3,DWTDEV,A6
	SRL	A3,2	GET "DOC. INDEX"
	ANK	A3,3 
	ADR	A2,A3	ADD INDEX TO ORDER CODE
RCTP02	CF	A5,OUTPUT 
	LDR	A3,A6	GET ADR TO FIRST BYTE TO SEND
	ADK	A3,DWTPP+1 
	LDK	A4,3	SET COUNTER 
RCTP06	LCR	A2,A3
	ANK	A2,/F
	CF	A5,OUT	SEND STEPS/LINE
	LCR	A2,A3
	SRL	A2,4 
	CF	A5,OUT	SEND PITCH 
	ADK	A3,1 
	SUK	A4,1 
	RB(NZ)	RCTP06
	SUK	A3,4 
	LCR	A2,A3
	CF	A5,OUT	SEND NAT. CH. SET
	ADK	A3,4 
	LDR*	A3,A3	GET ADR TO TABLE
	RF(Z)	RCTP10	NOT DEFINED 

	CF	A5,SENDDP	SEND TABLE
	LDR	A3,A6
	ADK	A3,DWTAPP
	LCR	A2,A3
	CF	A5,OUT	SEND ACTUAL PRINT POS
	SUK	A3,2 
	LCR	A2,A3
	CF	A5,OUT	SEND ACTUAL LINE 
RCTP10	CF	A5,EXECUT 
	LDK	A3,/40	RESET DOC IN BIT IF FAILED RECOVERY NOT BUSY
	TM	A2,A3 
	RF(NZ)	RCTP11
	CM	DWTRLN,A6	CRESET ACTUAL LINE
	LC	A3,DWTST,A6	RESET DOC IN BIT
	ANK	A3,/FD 
	SC	A3,DWTST,A6 
RCTP11	LD	A3,DWTST,A6	GET STATUS
	RB(N)	IHTP30	NOT BUSY
	LC	A4,DWTDEV,A6
	ANK	A4,3	JOURNAL 
	RF(Z)	RCTP12 
	LDK	A3,/40 
	TM	A2,A3	DOCUMENT OUT
	RF(Z)	RCTP30 
	RF	RCTP20
RCTP12	LDK	A3,3 
	TM	A2,A3	TRANSPORT/GENERAL ERROR 
	RF(NZ)	RCTP30
RCTP20	LC	A2,DWTDEV,A6	GET CURRENT DEVICE 
	ANK	A2,3 
	ABL	ACT005	FINISH REQUEST
RCTP30	ABL	TPTST	FINISH REQUEST 
	END

Full view