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

⟦3add86d57⟧

    Length: 36118 (0x8d16)
    Notes: pts_type(SC)
    Names: »DRGP02.SC«

Derivation

└─⟦7a1dcd5a9⟧ Bits:30009673 Philips computer tape "600134"
    └─⟦this⟧ »PTMON/DRGP02.SC« 

PTS(SC)

	IDENT DRGP02 	REL 11.0 83-12-28 870105041100 

			DK4, VARIABLE STATUS TIME-OUT
			DK3, NO RECOVERY FOR LP100(NORCVY) 
			DK2, BASIC WRITE 
			DK1 STR. TERM = /9C9C
			=1,TIME OUT IF INACTIVE, 25 SEC. 
			PRR 11.0 80-11-19
* 
******************************************************* 
*                                                     * 
*   PHILIPS TERMINAL SYSTEM PTS                       * 
*                                                     * 
*   DRGP02 = DRIVER GENERAL PRINTER           * 
*                                                     * 
*                                                     * 
*                                                     * 
******************************************************* 
* 
*   THIS DRIVER HANDLES GENERAL PRINTER PTS 8081
* 
*   THE DRIVER CONSISTS OF THE FOLLOWING PARTS :
* 
*   A C T P :	  ACTIVATION PART 
* 
*   R C T P :	  RECOVERY ROUTINE
* 
* 
	EJECT
* 
*   THE FOLLOWING ORDERS ARE TREATED: 
* 
*   ORDER 00 :      TEST STATUS 
*   ORDER 06 :      WRITE 
*	ORDER 05 :	BASIC WRITE	DK2
*   ORDER 0B :      POSITION DOCUMENT 
*   ORDER 24 :      SET PRINTER PARAMETERS
*   ORDER 38 :      RELEASE DOCUMENT
* 
*   THE FOLLOWING RETURN CODES ARE USED:
* 
*   BIT  0 :        REQUEST ERROR 
*   BIT  2 :        END OF JOURNAL TAPE, 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:	WORK REGISTER
*            A5:	STACK POINTER
*            A6:	DWT-ADDRESS
*            A7:	ORDER
*            A8:	ECB-ADDRESS
* 
* 
	EJECT
* 
* 
******************************************* 
* 
*	ENTRIES 
* 
******************************************* 
* 
* 
	ENTRY	GPAD8	ADDRESS BLOCK
* 
* 
* 
******************************************* 
* 
*	EXTERNALS 
* 
******************************************* 
* 
* 
	EXTRN	LDISP	DISPATCHING FROM INTERRUPT 
	EXTRN	LENDER	DISPATCH I/O ERROR
	EXTRN	LENDIS	END I/O AND DISPATCH
	EXTRN	OUTPUT	OUTPUT ONE CHARACTER
	EXTRN	GETCHR	GET CHARACTER FROM ECB BUFFER 
	EXTRN	SETIMP	SET TIMER	=1
	EXTRN	DWTST	DWT STATUS DISPLACEMENT
	EXTRN	DWTECB	DWT ECB DISPLACEMENT
	EXTRN	DWTOR	DWT ORDER DISPLACEMENT 
	EXTRN	DWTSB2	STACK BASE
	EXTRN	INPUT	STORE REG = GET STATUS INPUT CHAR
	EXTRN	STABLK	DEF START OF BLOCK
	EXTRN	ENDBLK	DEF END OF BLOCK
	EXTRN	DWTDEV	DEVICE STATUS 
	EJECT			 
* 
* 
******************************************
* 
*	CONSTANTS 
* 
******************************************
* 
* 
SPEC	EQU	/2E	SPECIAL CHARACTER
LF	EQU	/0A	LINE FEED
FF	EQU	/0C	FORM FEED
CR	EQU	/0D	CARRIAGE RETURN
SO	EQU	/0E	SHIFT OUT
SI	EQU	/0F	SHIFT IN 
ESC	EQU	/1B	ESCAPE
CSI	EQU	/5B	CONTROL SEQUENCE INTRODUCER 
REP	EQU	/62	REPEAT
VPR	EQU	/65	VERTICAL POSITION RELATIVE
INFF	EQU	/74	INPUT FRONT FEED 
VPFF	EQU	/71	VERTICAL POSITION FRONT FEED 
EJFF	EQU	/38	EJECT FRONT FEED 
SNV	EQU	/77	SELECT NATIONAL VERSION 
SLPL	EQU	/76	SELECT PAGE LENGTH 
RIS	EQU	/63	RESET TO INITIAL STATE
DSR	EQU	/6E	DEVICE STATUS REPORT
DCS	EQU	/50	DEVICE CONTROL STRING 
ST	EQU	/5C	STRING TERMINATOR
DEL	EQU	/7F	DELETE
ZERO	EQU	/30	ZERO 
NEG	EQU	/FF 
TIME	EQU	/FF	25 SEC TIMER	=1
IMTIME	EQU	/20	2 SEC. TIMER	DK4 
	EJECT			 
* 
* 
********************************************************* 
* 
*	CONTROL SEQUENCES 
* 
********************************************************* 
* 
* 
BYTE	FORM	8,8 
* 
* 
CSREP	EQU	*	REPEAT
	BYTE	ESC,CSI 
	BYTE	ZERO,ZERO 
	BYTE	ZERO,REP
	BYTE	NEG,NEG 
CSVPR	EQU	*	VERTICAL POSITION RELATIVE
	BYTE	ESC,CSI 
	BYTE	ZERO,ZERO 
	BYTE	ZERO,VPR
	BYTE	NEG,NEG 
CSINFF	EQU	*	INPUT FRONT FEED 
	BYTE	ESC,CSI 
	BYTE	ZERO,ZERO 
	BYTE	INFF,NEG
CSVPFF	EQU	*	VERTICAL POSITION FRONT FEED 
	BYTE	ESC,CSI 
	BYTE	ZERO,ZERO 
	BYTE	VPFF,NEG
CSEJFF	EQU	*	EJECT FRONT FEED 
	BYTE	ESC,EJFF
	BYTE	NEG,NEG 
	EJECT
CSSNV	EQU	* 
			SELECT NATIONAL VERSION
	BYTE	ESC,CSI 
	BYTE	ZERO,ZERO 
	BYTE	SNV,NEG 
CSSLPL	EQU	*	SELECT PAGELENGTH
	BYTE	ESC,CSI 
	BYTE	ZERO,ZERO 
	BYTE	SLPL,NEG	*	 
	BYTE	NEG,NEG 
CSRIS	EQU	*	RESET TO INITIAL STATE
	BYTE	ESC,RIS 
	BYTE	NEG,NEG 
CSDSR	EQU	*	DEVICE STATUS REPORT
	BYTE	ESC,CSI 
	BYTE	/35,DSR 
	BYTE	NEG,NEG 
	EJECT
* 
* 
******************************************************* 
* 
*	CONDITIONAL ASSEMBLY
* 
******************************************************* 
* 
* 
* 
*	THE STANDARD NATIONAL CHARACTER SET IS CHOOSEN
*	BY SETTING X:A TO 1-15 ACCORDING TO THE LIST BELOW
* 
* 
*		NCV=1 GERMANY,AUSTRIA,LUXEMBOURG,SWITZERLAND 
	   =2 GREAT BRITAIN,NETHERLANDS,BELGIUM,NEW ZEELAND,SOUTH AFRICA 
	   =3 FRANCE,SWITZERLAND,BELGIUM,LUXEMBOURG
	   =4 SPAIN,MEXICO,ARGENTINA,VENEZUELA 
	   =5 ITALY,SWITZERLAND
	   =6 SWEDEN,FINLAND 
	   =7 DENMARK,NORWAY 
	   =8 PORTUGAL,BRAZIL
	   =9 YUGOSLAVIA 
	   =10 USA,CANADA,AUSTRALIA
	   =11 SWEDEN (SPECIAL VERSION)
	   =13 GREEK 
	   =14 JAPAN (KATAKANA VERSION)
	   =15 ISRAEL (HEBREW  VERSION)
* 
* 
X:A	EQU	02	GREAT BRITAIN AS STANDARD
STDNCV	EQU	07 
	EJECT
* 
* 
*	THE FRONT FEED DEVICE CAN BE EXCLUDED 
*	BY SETTING X:B = 0
* 
* 
X:B	EQU	1	
FFDEV	EQU	0	FRONT FEED DEVICE 
* 
* 
* 
*	THE STANDARD PAGELENGTH IS DEFINED
*	BY SETTING X:C = NUMBER OF LINES
* 
* 
X:C	EQU	48
PAGLEN	EQU	48 
* 
* 
*	THE STANDARD NUMBER OF LINES IS DEFINED 
*	BY SETTING X:D = NUMBER OF LINES
* 
* 
X:D	EQU	36	*	 
DOCLEN	EQU	48 
	EJECT
* 
* 
* 
*	MMU BUFFER SIZE 
* 
* 
X:E	EQU	132 
DVBLEN	EQU	256
* 
* 
* 
*	A PROGRAM VERSION USING TOSS MMU PAGING 
*	IS OBTAINED BY SETTING MMUPAG EQU 1 
* 
* 
MMUPAG	EQU	1
* 
* 
* 
*	A PROGRAM VERSION USING THE EXTENDED INSTRUCTION
*	SET IS OBTAINED BY SETTING CPU852 EQU 0 
* 
* 
CPU852	EQU	0
* 
* 
*	A PROGRAM VERSION WITHOUT RECOVERY IS OBTAINED
*	BY SETTING NORCVY = 1 
* 
NORCVY	EQU	1	 
* 
* 
	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
* 
DWTTP	EQU	/2	TIMER POINTER	=1 
DWTDCS	EQU	/4	DOCUMENT CHARACTER SET
DWTPCS	EQU	/6	PRINTER CHARACTER SET 
DWTPL	EQU	/8	PRINTER PAPER LENGTH 
DWTDL	EQU	/A	DOCUMENT PAPER LENGTH
DWTALN	EQU	/C	ACTUAL LINE ON DOCUMENT 
DWTRLN	EQU	/E	REQUESTED LINE ON DOCUMENT
DWTRC	EQU	/11	RETURN CODE (ACKUMULATED) 
DWTSTR	EQU	/12	CONTROL SEQUENCE ADRESS
DWTDISP	EQU	/14	DWT-DISPLACEMENT TO LINE NO,CHAR.SET,ETC. 
DWTACD	EQU	/16	ACTUAL COLUMN DOCUMENT 
DWTACP	EQU	/19	ACTUAL COLUMN PAPER
DWTCO1	EQU	/1C	COLUMN COUNTER 1 
DWTCO2	EQU	/1E	COLUMN COUNTER 2 
DWTSYST	EQU	/22	SYSTEM START IND.	
DWTLFD	EQU	/24	LINE/FORM FEED INDICATOR	
	EJECT
* 
* 
******************************************* 
* 
*	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
* 
******************************************* 
* 
* 
	DATA	DVBLEN	MMU BUFFER SIZE
	DATA	2	DEVICE INDEX
GPAD8	EQU	*	ADDRESS BLOCK 
	DATA	ACTP	ACTIVATION DRIVER
	DATA	0	ABORT ROUTINE ADDRESS 
	DATA	0	INTERRUPT HANDLER 
	DATA	RCTP	RECOVERY ROUTINE 
TPTAB	EQU	* 
	IFT	FFDEV=1
	DATA	/0107,/0C25,/3939 
	XIF
	DATA	/0006,/2424,/0505		DK2
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=CONTINUOUS STATIONARY, 1=DOCUMENT
* 
	LC	A2,DWTOR,A6	GET DWT INDEX 
	ANK	A2,1	MASK
	LC	A3,DWTDEV+1,A6	GET OLD DEVICE VALUE 
	ANK	A3,/FE 
	ORR	A3,A2
	SC	A3,DWTDEV+1,A6	STORE INDEX
	CWK	A7,/05	ORDER 5?	DK2
	RF(E)	ACT003	YES	DK2 
	ADR	A7,A2	ADD DWT INDEX TO ORDER 
ACT003	EQU	*		DK2 
	SC	A7,DWTOR+1,A6	STORE MODIFIED ORDER
ACT005	LDK	A3,TPLEN-1 
ACT010	CC	A7,TPTAB,A3	CHECK IF LEGAL ORDER
	RF(E)	ACT020	VALID ORDER 
	SUK	A3,1 
	RB(NN)	ACT010	TRY NEXT 
* 
	ABL	LENDER	ILLEGAL ORDER 
* 
* 
ACT020	EQU	*
	ADR	A3,A3	GET INDEX
	ABI	TPFUC,A3	EXECUTE ORDER 
	EJECT
TPFUC	EQU	* 
	IFT	FFDEV=1
	DATA	TSTSTA,WRTDOC,POSDOC,DOCPAR,RELDOC,RELDOC 
	XIF
	DATA	TSTSTA,WRTCON,CSTPAR,CSTPAR,BASWRT,BASWRT		DK2
	EJECT
* 
* 
*   ORDER 00 : TEST STATUS
* 
* 
TSTSTA	EQU	*	TEST STATUS
	CF	A5,RESREC 
	CF	A5,GTSTAT	GET STATUS IMMEDIATELY	DK4
	ABL	LENDIS	END REQUEST 
* 
* 
*	ORDER 05 :	BASIC WRITE
* 
* 
BASWRT	EQU	*	 
	LDK	A3,0	
BAS10	EQU	*	
	LDK	A4,/90	TEST FOR END OF BLOCK 
	LDR	A2,A4	BLOCK LENGTH	
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	QUIT IF ERROR	
BAS15	EQU	*	
	CF	A15,GETCHR	GET A CHARACTER	 
	LDR	A1,A1	FINISHED?	 
	RF(Z)	BAS25	YES	 
	CF	A5,OUTPUT	NO, SEND IT	
	ABL(NZ)	ERROUT	QUIT IF ERROR	
	SUK	A4,1	END OF BLOCK?	
	RF(Z)	BAS20	YES	 
	RB	BAS15	NO, GET ANOTHER CHAR.	
BAS20	EQU	*	
	CF	A5,ENDBLK	FINISH IT.	 
	ABL(NZ)	ERROUT	QUIT IF ERROR	
	RB	BAS10	GET NEXT BLOCK	 
BAS25	EQU	*	
	CF	A5,ENDBLK		 
	ABL(NZ)	ERROUT	QUIT IF ERROR 
	CF	A5,GTSTAT	TEST STATUS + END REQUEST	DK4 
	ABL	LENDIS	
	EJECT
	IFT	FFDEV=1
* 
* 
*   ORDER 06: WRITE DOCUMENT
* 
* 
WRTDOC	EQU	*
	CF	A5,GTSTAT 
	LD	A4,DWTDEV,A6	DEVICE STATUS
	ANKL	A4,/20	HAS POWER OFF OCCURED? 
	RF(NZ)	WRDO05	YES. 
	LDKL	A3,/2000	*	 
	TM	A1,A3	DOCUMENT OUT? 
	RF(Z)	WRDO06	NO
	LDKL	A3,/8000	YES.SET BIT 0 (REQUEST ERROR)
	ORS	A3,ECBRC,A8	SET REQUEST ERROR IN R.C.
	ABL	LENDIS	END REQUEST 
WRDO05	EQU	*	*	 
WRDO06	LDK	A3,1 
	TM	A1,A3	NOT OPERABLE? 
	RF(Z)	WRDO10	NO
	ABL	LENDIS	END REQUEST 
WRDO10	LDK	A2,20	MAX BLOCK SIZE 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LD	A3,DWTDEV+DWTALN,A6	GET ACTUAL LINE 
	RF(NZ)	WRDO15
	LDK A3,1	SET UP ECB BUFFER POINTER	
	CF	A15,GETCHR	GET CONTROL CHARACTER	 
	SUK	A2,/31	CTRL CHAR=/31 ?	
	ABL(NE)	POSERR	NO, DOC. NOT POSITIONED 
	LD	A3,DWTDEV+DWTDL,A6	*	 
	ST	A3,DWTDEV+DWTRLN,A6	FIRST LINE ON DOC.	 
WRDO12	LDKL	A2,CSINFF	INPUT FRONT FEED	 
	LDKL	A3,DWTDEV+DWTRLN	REQUESTED LINE NO DISPLACEMENT 
	CF	A5,SEND	SEND INPUT FRONT FEED 
	LD	A3,DWTDEV+DWTRLN,A6 
	ST	A3,DWTDEV+DWTALN,A6	SET DWTDEV+DWTALN=DWTRLN

WRDO15	LDKL	A2,CSSNV	SELECT NATIONAL VERSION
	LDKL	A3,DWTDEV+DWTDCS	DOCUMENT CHARACTER SET DISPLACEMENT
	CF	A5,SEND	SEND SELECT NATIONAL VERSION
	CF	A5,ENDBLK	END OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
* 
*    EXAMINE CONTROL CHARACTER
* 
	LDK	A3,1	SET ECB BUFFER POINTER
	CF	A15,GETCHR	GET CONTROL CHARACTER
	LD	A1,DWTDEV,A6	GET DEVICE STATUS
	ANKL	A1,/20	HAS POWER OFF OCCURED ?
	RF(NZ)	REP1	YES
* 
	SUK	A2,/2B	PRINT WITHOUT LINE FEED ? 
	RF(Z)	WRT03	YES
WRT04	LDR	A4,A2	SAVE CONTROL CHAR. IN A4
	LD	A2,ECBRL,A8 
	ADK	A2,/8	MAX BLOCK SIZE 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDR	A2,A4	RESTORE CONT. CHAR. IN A2
	CM	DWTDEV+DWTCO2,A6	CLEAR DOCUMENT COLUMN COUNTER
	SUK A2,5	PRINT AFTER TWO LINE FEED ? 
	RF(Z)	TWOLF1	YES 
* 
	SUK	A2,1	PRINT AFTER FORM FEED ? 
	ABL(Z)	WRT14	YES, ALLREADY DONE !
* 
	RF	ONELF1	PRINT AFTER ONE LINE FEED !
* 
*    EXECUTE CONTROL CHARACTER
* 
WRT03	LD	A4,DWTDEV+DWTCO2,A6	GET ACTUAL COLUMN
	RF(Z)	WRT05
	SUK	A4,1	FOR CORRECT NO OF SPACES
WRT05	CF	A5,KONVER	CONVERT BINARY TO ASCII
	SC	A2,DWTDEV+DWTACD,A6	STORE THE VALUE IN ACTUAL COL. DOC. 
	SC	A4,DWTDEV+DWTACD+2,A6	STORE THE VALUE IN ACTUAL COL. DOC. 
	SRL	A4,8 
	SC	A4,DWTDEV+DWTACD+1,A6	SHIFT FOR CORRECT DIGITS
* 
WRT09	LDKL	A2,/8C	BLOCK SIZE
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LD	A4,DWTDEV+DWTCO2,A6 
	ABL(Z)	WRT15	JMP IF NO PRECEIDING SPACES 
	LDK	A2,/20	SEND SPACE
	CF	A5,OUTPUT 
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDKL	A2,CSREP	REPEAT 
	LDKL	A3,DWTDEV+DWTACD	ACTUAL COLUMN DOCUMENT DISPLACEMENT
	CF	A5,SEND	SEND REPEAT 
	ABL	WRT15
* 
TWOLF1	LD	A1,DWTDEV+DWTRLN,A6	GET REQ LINE NO 
	CF	A5,BINARY	CONV ASCII TO BINARY
	SUK	A3,1	INCR REQ LINE NO
	RF	TWO	TWO LINE FEED 
ONELF1	LD	A1,DWTDEV+DWTRLN,A6	GET REQ LINE NO 
	CF A5,BINARY	
TWO	SUK	A3,1	INCR REQ LINE NO 
	LDR A4,A3
	CF	A5,KONVER	CONV BINARY TO ASCII
	ST	A4,DWTDEV+DWTRLN,A6	STORE REQ LINE NO 
	LDKL	A2,CSVPFF	VERTICAL POSITION FRONT FEED
	LDKL	A3,DWTDEV+DWTRLN	REQUESTED LINE NUMBER DISPLACEMENT 
	CF	A5,SEND 
	LD	A4,DWTDEV+DWTRLN,A6	
	ST	A4,DWTDEV+DWTALN,A6	ACTUAL LINE = REQUESTED LINE
	RF	WRT14 
* 
*    REPEAT WRITE REQUEST AT DOCUMENT STATION 
* 
REP1	CF	A5,RESREC 
	SUK	A2,/2B	PRINT WITHOUT LINE FEED ? 
	RB(Z)	WRT09	YES
	LD	A1,DWTDEV+DWTLFD,A6	GET INDICATOR 
	RF(NZ)	WRT15	JMP IF LF/FF DONE 
	RB	WRT04 
* 
	XIF
	EJECT
* 
* 
*   ORDER 06: WRITE CONTINOUS STATIONARY
* 
* 
WRTCON	EQU	*
	CF	A5,GTSTAT	GET DEVICE STATUS 
	LDKL	A3,/2000	*	 
	TM	A1,A3	END OF PAPER? 
	RF(Z)	WRCO05	NO. 
	ABL	ENDIO	END REQUEST
WRCO05	LDK	A3,1	NOT OPERABLE? 
	TM	A1,A3 
	RF(Z)	WRCO10	NO
	ABL	ENDIO	END REQUEST

WRCO10	LDK	A2,/E	BLOCK SIZE 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDKL	A2,CSSNV	SELECT NATIONAL VERSION
	LDKL	A3,DWTDEV+DWTPCS	PRINTER CHAR. SET DISPLACEMENT 
	CF	A5,SEND	SEND SELECT NATIONAL VERSION
	CF	A5,ENDBLK	END OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
* 
*    EXAMINE CONTROL CHARACTER, CONTINOUS 
* 
	LDK	A3,1	SET UP ECB BUFFER POINTER 
	CF	A15,GETCHR	GET CONTROL CHARACTER
	LD	A1,DWTDEV,A6	GET DEVICE STATUS
	ANKL	A1,/20	HAS POWER OFF OCCURED ?
	RF(NZ)	REP2	YES
* 
	SUK A2,/2B	PRINT WITHOUT LINE FEED ? 
	RF(Z)	WRC03	YES
WRC04	LDR	A4,A2	SAVE CONTROL CHAR. IN A4
	LD	A2,ECBRL,A8 
	ADK	A2,/8	BLOCK LENGTH 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDR	A2,A4	RESTORE CONT. CHAR. IN A2
	CM	DWTDEV+DWTCO1,A6	CLEAR PAPER COL. COUNTER 
	SUK	A2,5	PRINT AFTER TWO LINE FEED ? 
	RF(Z) TWOLF2	YES 
* 
	SUK	A2,1	PRINT AFTER FORM FEED ? 
	RF(Z)	FORMF	YES
* 
	RF	ONELF2	PRINT AFTER ONE LINE FEED !
* 
*    EXECUTE CONTROL CHARACTER, CONTINOUS 
* 
WRC03	LD	A4,DWTDEV+DWTCO1,A6	GET ACTUAL COLUMN
	RF(Z)	WRC05	FOR CORRECT NO OF SPACES 
	SUK	A4,1 
WRC05	CF	A5,KONVER	CONVERT BINARY TO ASCII
	SC	A2,DWTDEV+DWTACP,A6	STORE THE VALUE IN ACTUAL COL. CONTINOUS
	ST	A4,DWTDEV+DWTACP+2,A6	STORE THE VALUE IN ACT. COL. CONT.
* 
WRC07	LDK	A2,/8C	BLOCK LENGTH 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LD	A4,DWTDEV+DWTCO1,A6 
	RF(Z)	WRT15	JMP IF NO PRECEIDING SPACES
	LDK	A2,/20	SEND SPACE
	CF	A5,OUTPUT 
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDKL	A2,CSREP	REPEAT 
	LDKL	A3,DWTDEV+DWTACP	ACTUAL COLUMN PAPER DISPLACEMENT 
	CF	A5,SEND	SEND REPEAT 
	RF	WRT15 
* 
TWOLF2	LDK	A2,LF	SEND LINE FEED 
	CF	A5,OUTPUT 
	ABL(NZ)	ERROUT	JMP IF ERROR
ONELF2	LDK	A2,LF	SEND LINE FEED 
	CF	A5,OUTPUT 
	ABL(NZ)	ERROUT	JMP IF ERROR
	RF	WRT14 
* 
FORMF	LDK	A2,FF	SEND FORM FEED
	CF	A5,OUTPUT 
	ABL(NZ)	ERROUT	JMP IF ERROR
	RF	WRT14 
* 
*    REPEAT WRITE REQUEST AT CONTINOUS STATION
* 
REP2	CF	A5,RESREC 
	SUK	A2,/2B	PRINT WITHOUT LINE FEED ? 
	RB(Z)	WRC07	YES
	LD	A1,DWTDEV+DWTLFD,A6	GET INDICATOR 
	RF(NZ)	WRT15	JMP IF LF/FF DONE 
	RB WRC04 
	EJECT
* 
*    ORDER 06 : THIS PART SENDS THE CHARACTERS
*    TO DOCUMENT OR CONTINOUS STATIONARY. 
* 
WRT14	IM	DWTDEV+DWTLFD,A6	SET LF/FF INDICATOR 
* 
WRT15	LDK	A3,2	SET ECB BUFFER POINTER 
WRT16	CF	A15,GETCHR	GET CHARACTER 
	LDR	A4,A1	BUFFER FINISHED ?
	RF(P)	WRT20	NO 
WRT17	SUK	A3,/02	ECB BUFFER POINTER = /02 
	RF(Z)	WRT18	YES. 
	LDK	A2,CR	NO. SEND CARRIAGE RETURN 
	CF	A5,OUTPUT 
	ABL(NZ)	ERROUT	JMP IF ERROR
WRT18	CF	A5,ENDBLK	END OF BLOCK 
	ABL(NZ)	ERROUT	JMP IF ERROR
	CF	A5,GTSTAT	GET STATUS
	RF	ENDIO	END REQUEST 
* 
WRT20	EQU	* 
	LDR	A4,A2
* 
*	EXAMINE CHARACTER AND SEND DEPENDING ON TYPE OF CHARACTER 
* 

	SUK	A4,/20	CHAR < /20? 
	RB(N)	WRT16	YES GET A NEW CHARACTER
	SUK	A4,/5F	CHAR < /7F? 
	RF(N)	WRT25	YES. 
	SUK	A4,/2F	NO. CHAR = /AE? 
	RF(Z)	WRT30	YES. CONVERT /AE TO /2E
	LDK	A4,/04	ILLEGAL CHARACTER SET BIT 13 IN R.C.
	ORS	A4,ECBRC,A8
	RB	WRT16 
WRT30	LDK	A2,/2E
WRT25	LDR	A4,A1 
	CF	A5,OUTPUT	SEND CHARACTER
	ABL(NZ)	ERROUT	JMP IF ERROR
	LC	A2,DWTOR+1,A6	GET DWT INDEX 
	ANK	A2,1	DOCUMENT? 
	RF(NZ)	WRT40	YES 
	IM	DWTDEV+DWTCO1,A6	INC.COLUMN COUNTER 1 
	RB	WRT16 
WRT40	IM	DWTDEV+DWTCO2,A6	INC.COLUMN COUNTER 2
	RB	WRT16 
ENDIO	EQU	* 
	CM	DWTDEV+DWTLFD,A6	CLEAR LF/FF INDICATOR
	ABL	LENDIS	END REQUEST 
	EJECT
	IFT	FFDEV=1
* 
* 
*   ORDER 0B : POSITION DOCUMENT
*   CONTROL WORD CONTAINS REQUESTED LINE NO 
* 
* 
POSDOC	EQU	*	POSITION DOCUMENT
	CF	A5,RESREC 
	CF	A5,GTSTAT	GET DEVICE STATUS	
	LDK	A3,1	NOT OPERABLE	 
	TM	A1,A3	*	
	RF(NZ)	POS020	YES	 
	LDK	A2,/E	BLOCK LENGTH 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDKL	A2,CSSNV	SELECT NATIONAL VERSION
	LDKL	A3,DWTDEV+DWTDCS	DOCUMENT VERSION 
	CF	A5,SEND	SEND SNV
	CF	A5,ENDBLK	END OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LD	A4,ECBCW,A8	GET REQUESTED LINE
	ANK	A4,/FF 
	RF(Z)	POSERR	ILLEGAL LINE NUMBER 
	LD	A1,DWTDEV+DWTDL,A6	MAX. LINE
	CF	A5,BINARY	CONVERT ASCII TO BINARY 
	CWR	A4,A3	REQ. LINE>MAX. LINE
	RF(G)	POSERR	YES 
	ADK	A3,1	CORRECT POSITION
	SUR	A4,A3	INVERT LINE NO.
	NGR	A4,A4	GET PRINTER REQ. LINE NO.
	CF	A5,KONVER	CONVERT BINARY TO ASCII 
	ST	A4,DWTDEV+DWTRLN,A6	SET REQUESTED LINE
	LD	A4,DWTDEV+DWTALN,A6	GET ACTUAL LINE 
	RF(NZ)	POS030	DOCUMENT ALREADY POSITIONED
POS005	EQU	*
	LDK	A2,/6	BLOCK LENGTH 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDKL	A2,CSINFF	INPUT FRONT FEED
	LDKL	A3,DWTDEV+DWTRLN	REQUESTED LINE NUMBER DISPLACEMENT 
	CF	A5,SEND	SEND INPUT FRONT FEED 
POS010	EQU	*
	CF	A5,ENDBLK	END OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	CF	A5,GTSTAT	GET STATUS
	LDR	A2,A1	GET RETURN CODE
	ANKL	A2,/2000	PAPER DOCUMENT OUT ? 
	RB(NZ)	POS005	YES WAIT FOR DOCUMENT TO BE INSERTED 
	LD	A4,DWTDEV+DWTRLN,A6	GET REQUESTED LINE
	ST	A4,DWTDEV+DWTALN,A6	ACTUAL LINE = REQ LINE
POS020	ABL	LENDIS	
POS030	EQU	*
	LDK	A2,/6	BLOCK LENGTH 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDKL	A2,CSVPFF	VERTICAL POSITION FRONT FEED
	LDKL	A3,DWTDEV+DWTRLN	REQUESTED LINE NUMBER DISPLACEMENT 
	CF	A5,SEND	SEND VERTICAL POSITION FRONT FEED 
	RB	POS010
	XIF
POSERR	EQU	*
	ABL	LENDER	REQ. ERROR, END REQUEST 
	EJECT
	IFT	FFDEV=1
* 
* 
*	ORDER 24 : SET DOCUMENT PARAMETERS
* 
* 
DOCPAR	EQU	*	DOCUMENT PARAMETERS
	LDK	A1,0	CLEAR A1	 
	CF	A5,RESREC 
	LD	A4,ECBCW,A8	GET NUMBER OF LINES 
	SRL	A4,8	GET LINES 
	RF(Z)	DOC010	NO CHANGE OF LINES
	CWK	A4,/10	INDEX TO BIG
	RB(G)	POSERR	YES 
	ADR	A4,A4	ADJUST INDEX TO LINE TABLE 
	LD	A4,LINNUM,A4	GET LINE ACCORDING TO INDEX
	ST	A4,DWTDEV+DWTDL,A6	SET PAGE LENGTH FOR DOCUMENT 
DOC010	EQU	*
	LD	A4,ECBCW,A8	GET NATIONAL CHARACTER VARIATION
	ANK	A4,/FF	
	RF(Z)	DOC020	NO CHANGE OF NATIONAL CHARACTER SET 
	CWK	A4,/F	INDEX TO BIG 
	RB(G)	POSERR	YES 
	ADR	A4,A4	ADJUST TABLE INDEX 
	LD	A4,NCVTAB,A4	GET NAT. CHAR. SET ACC. TO INDEX 
	ST	A4,DWTDEV+DWTDCS,A6	SET CHARACTER SET FOR DOCUMENT
DOC020	EQU	*
	RB	ENDIO	END REQUEST 
	XIF
	EJECT
* 
* 
*	ORDER 24 : SET CONTINUOUS STATIONARY PARAMETERS 
* 
* 
CSTPAR	EQU	*	SET PARAMETERS CONTINUOUS STATIONARY 
	LDK	A1,0	CLEAR A1	 
	CF	A5,RESREC 
	LD	A4,ECBCW,A8	GET NUMBER OF LINES CST.
	SRL	A4,8	GET LINES 
	RF(Z)	CST010	NO CHANGE OF LINES
	CWK	A4,/10	INDEX TO BIG
	RB(G)	POSERR	YES 
	ADR	A4,A4	ADJUST INDEX TO LINE TABLE 
	LD	A4,LINNUM,A4	GET LINES ACCORDING TO INDEX 
	ST	A4,DWTDEV+DWTPL,A6	SET PAGE LENGTH FOR CONT.STAT. 
	LDK	A2,/A	BLOCK LENGTH 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDKL	A2,CSSLPL	SELECT PAGELENGTH 
	LDKL	A3,DWTDEV+DWTPL	PRINTER PAPER LENGTH DISPL. 
	CF	A5,SEND	SEND SLECT PAGELENGTH 
	CF	A5,ENDBLK	END OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
CST010	EQU	*
	LD	A4,ECBCW,A8	GET NATIONAL CHARACTER VARIATION
	ANK	A4,/FF	
	RF(Z)	CST020	NO CHANGE OF NAT. CHAR. SET 
	CWK	A4,/F	INDEX TO BIG 
	RB(G)	POSERR	YES 
	ADR	A4,A4	ADJUST INDEX TO NAT. CHAR. TABLE 
	LD	A4,NCVTAB,A4	GET NAT. CHAR. SET ACC. TO INDEX 
	ST	A4,DWTDEV+DWTPCS,A6	SET NAT. CHAR. SET FOR CONT.STAT. 
CST020	EQU	*
	ABL	ENDIO	END REQUEST
	EJECT
	IFT	FFDEV=1
* 
* 
*	ORDER 38 : RELEASE DOCUMENT 
* 
* 
RELDOC	EQU	*
	LDK	A2,/4	BLOCK LENGTH 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	CF	A5,RESREC 
	LDKL	A2,CSEJFF	CONTROL SEQ. EJECT FRONT FEED 
	CF	A5,SEND	SEND SEQUENCE 
	CF	A5,ENDBLK	END OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	CF	A5,GTSTAT	GET STATUS FROM PRINTER 
	LDR	A2,A1	GET RETURN CODE
	ANK	A2,/20	DOCUMENT RELEASED 
	RB(NZ)	RELDOC	NO , TRY AGAIN 
	ANKL	A1,/8000	REQUEST ERROR
	CM	DWTDEV+DWTALN,A6	RESET ACTUAL LINE
	CM	DWTDEV+DWTRLN,A6	RESET REQUESTED LINE 
	ABL	ENDIO	END REQUEST
	XIF
	EJECT
* 
* 
*	 R C T P
* 
*	RECOVERY ROUTINE REPEATS RUNNING REQUEST AT POWER ON
* 
* 
RCTP	EQU	*
RCTP07	LDKL	A1,/7FFF	SET DEVICE BUSY	 
	ANS	A1,DWTST,A6	BUSY 
	LDKL	A5,DWTSB2	STACK BASE
	ADR	A5,A6
	IFT	NORCVY=1 
	RF	RCTP20	DON'T CHANGE PARAMETERS	DK3
	XIF		
	LDK	A2,/F	BLOCK LENGTH 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDKL	A2,CSRIS	RESET TO INITIAL STATE 
	CF	A5,SEND	SEND RESET TO INITIAL STATE 
	LD	A1,DWTDEV+DWTSYST,A6	INTERN. SYSTEM START IND.	 
	RF(Z)	RCTP10	NO SYSTEM START	
			*	 
	CM	DWTDEV+DWTSYST,A6	SET SYSTEM START INDICATOR	 
			*	 
	LDKL	A4,STDNCV	GET STANDARD NAT. CHAR. SET 
	CF	A5,KONVER	CONVERT BIANARY TO ASCII
	ST	A4,DWTDEV+DWTDCS,A6	SET CHAR. SET DOCUMENT
	ST	A4,DWTDEV+DWTPCS,A6	SET CHAR. SET CONT.STAT.
	LDKL	A4,PAGLEN	STANDARD PAGE LENGTH
	CF	A5,KONVER	CONVERT BINARY TO ASCII 
	ST	A4,DWTDEV+DWTPL,A6	SET PAGE LENGTH CONT.STAT. 
	LDKL	A2,CSSLPL	SELECT PAGELENGTH 
	LDKL	A3,DWTDEV+DWTPL	PRINTER PAPER LENGTH DISPL. 
	CF	A5,SEND	SEND SELECT PAGELENGTH
	LDKL	A4,DOCLEN	GET STANDARD PAGE LENGTH DOCUMENT 
	CF	A5,KONVER	CONVERT BINARY TO ASCII 
	ST	A4,DWTDEV+DWTDL,A6	SET PAGE LENGTH DOCUMENT 
RCTP10	EQU	*
	CF	A5,ENDBLK	END OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
RCTP20	EQU	*	 
	CM	DWTDEV+DWTALN,A6	RESET ACTUAL LINE
	LDKL	A1,/20	INDICATE POWER OFF OCCURED 
	ORS	A1,DWTDEV,A6	
	LD	A1,DWTECB,A6	RUNNING REQUEST
	ABL(NZ)	ACT005	YES , REPEAT THE REQUEST
	ABL	LENDIS	DISPATCH
	EJECT
* 
* 
*	GTSTAT
* 
*	
* 
*	THIS ROUTINE SENDS 'DEVICE STATUS REPORT TO THE PRINTER 
* 
*	AND ANALYZES THE DEVICE STATUS SENT FROM THE PRINTER
* 
*	AT EXIT A1 = RETURN CODE
* 
* 
GTSTAT	EQU	*
	CM	DWTDEV+DWTRC,A6	RESET RETURN CODE 
	LDK	A2,/4	BLOCK LENGTH 
	CF	A5,STABLK	START OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDK	A2,ESC	ESCAPE	 
	CF	A5,OUTPUT	SEND ESC
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDK	A2,CSI	CONTROL SEQUENCE INTRODUCER 
	CF	A5,OUTPUT	SEND CSI
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDK	A2,/35 
	CF	A5,OUTPUT	SEND /35
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDK	A2,DSR	DEVICE STATUS REPORT
	CF	A5,OUTPUT	SEND DSR
	ABL(NZ)	ERROUT	JMP IF ERROR
	CF	A5,ENDBLK	END OF BLOCK
	ABL(NZ)	ERROUT	JMP IF ERROR
	LDR	A1,A6	SAVE DWT ADDRESS	=1
	LDKL	A4,DWTDEV+DWTTP		=1 
	ADR	A4,A6		=1
	LC	A2,DWTOR+1,A6	TEST STATUS ORDER?	DK4
	ANK	A2,/FF	
	RF(NZ)	GTST02	NO, 25 SEC. TIMER	DK4
	LDK	A2,IMTIME	IMMEDIATE = 2 SECONDS	DK4
	ST	A2,VARTIM	
GTST02	EQU	*	 
	CF	A15,SETIMP	SET TIMER	=1 
	DATA	ERGP00,TIME	RETURN ADDR., TIMEOUT	=1
VARTIM	EQU	*-2	VARIABLE TIME VALUE	DK4
	LDK	A2,TIME	RESTORE 25 SEC. TIMER	DK4
	ST	A2,VARTIM	.	DK4 
GTST05	LDKL	A4,TAB	GET TABLE ADDRESS
GTST10	EQU	*
	LDK	A3,0	RESET INDEX 
	CF	A5,INPUT	READ STATUS FROM PRINTER 
	ANK	A2,/FF	GET CHARACTER 
	CCK	A2,/9C9C	STRING TERMINATOR 
	RF(E)	GTSEND	YES 
	LCR	A3,A4	GET MASK RETURN CODE 
	ANR	A2,A3
	LDKL	A3,/3AC0	SHIFT LEFT CIRCULAR A2 
	LC	A3,1,A4	A3 TIMES
	EXR	A3	EXECUT SHIFT INSTRUCTION
	ORS	A2,DWTDEV+DWTRC,A6	SAVE RETURN CODE TEMPORARILY
	ADK	A4,2	INCREMENT ADRESS
	RB	GTST10	GET NEXT STATUS CHARACTER
GTSEND	EQU	*
	LD	A1,DWTDEV+DWTRC,A6	GET RETURN CODE
	LD	A2,DWTDEV+DWTTP,A6		=1	 
	RF(Z)	GTST20	CHECK IF ALLREADY ZERO	=1 
	CM*	DWTDEV+DWTTP,A6	RESET TIMER	=1 
GTST20	CM	DWTDEV+DWTTP,A6	RESET TIMER POINTER	=1
	RTN	A5 
	EJECT
* 
*   THIS ROUTINE CONVERTS A BINARY VALUE TO ASCII CODE
* 
*	REGISTERS : 
*   A1= WORK REGISTER 
*   A4= BINARY INPUT
*   A2,A4= ASCII OUTPUT 
* 
* 
KONVER	EQU	*
*	BINARY TO DEC.
	LDK	A2,0	CLEAR A2
	CWK	A4,100	VALUE > 100 ? 
	RF(L)	KONV05	NO
	SUKL	A4,100
	LDKL	A2,/100	LEFT BYTE OF A2=X=1 
KONV05	CWK	A4,10	ARE THERE ANY TENS ? 
	RF(L)	KONV04	NO
	SUK	A4,10
	ADK	A2,/1	NUMBER OF TENS IN RIGHT B. OF A2=Y 
	RB	KONV05	NEXT 
KONV04	ORKL	A2,/3030	XY IN A2 
	ORK	A4,/30	Z IN A4 
	SRC	A2,8	YX IN A2
	LDR	A1,A2
	ANKL	A1,/FF00	KEEP Y IN A1 
	ANK	A2,/FF	KEEP X IN R. BYTE OF A2. ASCII
	ORR	A4,A1	YZ IN A1. ASCII
	RTN	A5 
	EJECT
* 
*	RESET RECORVERY 
* 
RESREC	EQU	*
	LD	A4,DWTDEV,A6	DEVICE STATUS
	ANKL	A4,/20	RECOVERY?
	RF(E)	RESRTN	NO. 
	XRS	A4,DWTDEV,A6	YES. RESET RECOVERY BIT 
RESRTN	RTN	A5	RETURN
* 
* 
* 
* 
*	ERROR ROUTINE FOR STABLK,OUTPUT AND ENDBLK AND TIMER
* 
*	INPUT : A1 = RETURN CODE
* 
ERROUT	EQU	*
	ANK	A1,/1A	OUTP. ERR, SOFTW T-OUT, LRC-ERR 
	ABL(NZ)	RCTP	RECOVERY
ERGP10	LDK	A1,1	IND. NOT OP.
	ABL	LENDIS 
* 
ERGP00	EQU	*		=1
	LDR	A6,A1	RESTORE DWTADDRESS	=1
	CM	DWTDEV+DWTTP,A6	RESET TIMER POINTER	=1
	RB	ERGP10
	EJECT
* 
* 
*	S E N D 
* 
*	THIS ROUTINE SENDS AN CONTROL SEQUENCE
*	TO THE PRINTER
* 
* 
*	AT ENTRY :
*	A2 = CONTROL SEQUENCE ADRESS
*	A3 = DWT-DISPLACEMENT TO LINE NO,CHAR.SET,ETC 
* 
* 
*	AT EXIT : 
*	A1,A2,A3 IS DESTROYED 
* 
* 
* 
SEND	EQU	*	SEND CONTROL SEQUENCE
	ST	A3,DWTDEV+DWTDISP,A6	SAVE DWT-DISPLACEMENT
	ST	A2,DWTDEV+DWTSTR,A6	CONTROL SEQUENCE ADRESS 
SEND10	EQU	*
	LD	A3,DWTDEV+DWTSTR,A6	GET CONTROL SEQUENCE ADRESS 
	LCR	A2,A3	GET CHARACTER
	ANK	A2,/FF	MAKE CHARACTER
	SLL	A2,8	END OF CONTROL SEQUENCE 
	RF(N)	SENDEND	YES,RETURN 
	CWK	A2,/3000	LINE NO,CHAR.SET,ETC
	RF(E)	SEND30	YES 
	SRL	A2,8	PREPARE TO SEND CHARACTER 
	CF	A5,OUTPUT	SEND CHARACTER
	ABL(NZ)	ERROUT	JMP IF ERROR
SEND20	EQU	*
	IM	DWTDEV+DWTSTR,A6	INC. CONTROLSEQUENCE ADRESS
	RB	SEND10	GET NEXT 
SEND30	EQU	*
	LD	A3,DWTDEV+DWTDISP,A6	GET DWT-DISPLACEMENT 
	ADR	A3,A6	GET PROPER VALUE 
	LCR	A2,A3	GET CHARACTER
	CF	A5,OUTPUT	SEND CHARACTER
	ABL(NZ)	ERROUT	JMP IF ERROR
	IM	DWTDEV+DWTDISP,A6	INC. DISPLACEMENT ADRESS
	RB	SEND20	GET NEXT 
SENDEND	EQU	* 
	RTN	A5 
	EJECT
* 
* 
*	BINARY
* 
*	THIS ROUTINE CONVERTS ASCII CODE TO A BINARY VALUE
* 
*	REGISTERS:
*	A1= ASCII INPUT 
*	A2= WORK REGISTER 
*	A3= BINARY OUTPUT 
* 
* 
* 
BINARY	SUR	A3,A3	CLEAR A3 
	LDR	A2,A1	MAX. LINE ASCII
	SRL	A2,8 
	SUK	A2,/30 
	ADR	A3,A2
	ADR	A3,A2
	SLL	A2,3 
	ADR	A3,A2
	ANK	A1,/F
	ADR	A3,A1	MAX. LINE BINARY 
	RTN A5 
	EJECT
LINNUM	EQU	*-2	NUMBER OF LINES
	DATA	/3132,/3135,/3138,/3234 
	DATA	/3235,/3330,/3333,/3335 
	DATA	/3336,/3438,/3530,/3531 
	DATA	/3630,/3636,/3730,/3732 
* 
* 
* 
* 
NCVTAB	EQU	*-2	NATIONAL CHARACTER VARIATION YABLE 
	DATA	/3031,/3032,/3033,/3034 
	DATA	/3035,/3036,/3037,/3038 
	DATA	/3039,/3130,/3131,/3131 
	DATA	/3133,/3134,/3135 
TAB	EQU	*	MASK TABLE FOR STATUS REPORT FROM PRINTER 
	DATA	/C0,/C0,/C0,/2CC	*	 
	DATA	/2CF,/4CB,/C0,/C0	*	
	DATA	/C0,/C0,/C0,/C0 
	DATA	/C0,/C0 
	END

Full view