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

⟦cc453c16a⟧

    Length: 52774 (0xce26)
    Notes: pts_type(SC)
    Names: »PAD.SC«

Derivation

└─⟦a16d9b08d⟧ Bits:30009712 Philips computer tape "TOSS11"
    └─⟦this⟧ »U3270.1/PAD.SC« 

PTS(SC)

	IDENT	PAD	REL 11.1 82-03-16 870150541110 

			=7 ERRORS IN PROGRAM TAB 
			82-02-12 
			=6 NO BELL FROM PRINTER
			=5 NATIONAL CHAR 
			81-05-12 
			=4 COPY TO PRINTER 
			81-05-06 
			=3, MISSING ITEM 
			81-01-26 
			=2, SAVE REG.
			81-01-26 
			=1, RA ON EUQ ADDRESS
			81-01-26 
************************************************************* 
*                                                           * 
*        MODULE       PAD                                   * 
*                     MODULE HANDLING THE PACKING AND       * 
*                     UNPACKING OF THE DCBUFFER. THE VDU    * 
*                     BUFFER IS UPDATED                     * 
*                     (EMULATION 3270 SNA/SDLC, BSC)        * 
*                                                           * 
************************************************************* 
	EJECT
***************************************************************** 
* 
*	LIST OF ROUTINES
* 
*        PACK       PACK MODIFIED VDU-FIELDS INTO DC-BUFFER 
*        UNPACK     UNPACK DC-BUFFER AND UPDATE VDU 
*        RETTAB     RETURN ADDRESSES
*        UNPCOM     UNPACK COMMANDS 
*        UNPORD     UNPACK ORDERS 
*        ORDTAB     ORDER TABLE 
*          SF       START FIELD 
*          SBA      SET BUFFER ADDRESS
*          IC       INSERT CURSOR 
*          PT       PROGRAM TAB.
*          RA       REPEAT TO ADDRESS 
*          EUA      ERASE UNPRO. TO ADDRESS 
*          CHAR < /20 BUT NOT ORDERS
*        PACKSY     PACK DC-BUFFER IN SYSTEM MODE 
*        UNPSYS     UNPACK DC-BUFFER IN SYSTEM MODE 
*        GETNXT     GET AND CHECK NEXT BUFFER 
*        PUTCHA     PUT CHAR. IN DC-BUFFER AND WRITE
*        PDCCH      PUT CHAR. IN BUFFER 
*        GDCCH      GET CHAR. IN BUFFER 
*        PAID       STORE AID IN BUFFER 
*        BUFADR     STORE BUFFER ADDRESS IN DC-BUFFER 
*        RESMDT     RESET ALL MDT-BITS IN ATTRIBUTES
*        P1WCC      PROCESS WCC BEFORE UPDATE 
*        P2WCC      TAKE CARE OF WCC AFTER UPDATE 
*        SAVE       SAVE PACK AND UNPACK INFORMATION
*        RESTOR     RESTORE PACK AND UNPACK INFORMATION 
*        BUFFER     BUFFER POOL 
*        GETBUF     GET BUFFER
*        RELBUF     RELEASE BUFFER
* 
******************************************************************
	EJECT
************************************************************* 
*                                                           * 
*        ENTRY POINTS                                       * 
*                                                           * 
************************************************************* 

	ENTRY	PACK	PACK MOD. FIELDS INTO DC BUFFER 
	ENTRY	UNPACK	UNPACK DC BUFFER AND UPDATE VDU 
	ENTRY	UNPSYS	UNPACK DC BUFFER IN SYSTEM MODE 
	ENTRY	GETBUF	GET DC BUFFER 
	ENTRY	RELBUF	RELEASE DC BUFFER 
	ENTRY	PAID	STORE AID CODE IN DC BUFFER 
	ENTRY	BUFADR	SORE BUFFER ADDRESS IN DC BUFFER
	ENTRY	PACKSY	PACK DC BUFFER IN SYSTEM MODE 
	ENTRY	SAVE1	SAVE REGISTERS 
	ENTRY	REST1	RESTORE REGISTERS

	EJECT
*************************************************** 
*                                                 * 
*        EXTERNAL REFERENCES                      * 
*                                                 * 
*************************************************** 

	EXTRN	CONEBC	CONVERT  ASCII-EBCDIC (CONVER)
	EXTRN	CONASC	CONVERT  EBCDIC-ASCII (CONVER)
	EXTRN	ERASE	ERASE ENTIRE SCREEN (VDU)
	EXTRN	ERASUA	ERASE UNPROTECTED TO ADDRESS (VDU)
	EXTRN	CONORD	CONVERT  ORDER TO INDEX (CONVER)
	EXTRN	CONATT	CONVERT  ATTRIBUTE (CONVER) 
	EXTRN	SCRINF	GET SCREEN INFORMATION (VDU)
	EXTRN	ERASUP	ERASE UNPROTECTED ENTIRE SCREEN (VDU) 
	EXTRN	COPY	LOCAL HARDCOPY (KEYB) 
	EXTRN	SOUND	SOUND ALARM ON VDU (VDU) 
	EXTRN	ATMASB	SEARCH ATTRIBUTE BACKWARDS (VDU)
	EXTRN	CONADR	CONVERT  BUFFER ADDRESS (CONVER)
	EXTRN	WRAP	CHECK IF WRAP AROUND (VDU)
	EXTRN	STOINF	SAVE SCREEN INFORMATION (VDU) 
	EXTRN	LMP4ON	INHIBIT LAMP ON (KEYB)
	EXTRN	READNW	READ WITH NO WAIT (DCSNA,DCBSC) 
	EXTRN	WAIT	SYNCHRONIZE (DCSNA,DCBSC) 
	EXTRN	DCWRIT	WRITE DC BUFFER (DCSNA,DCBSC) 
	EXTRN	DISMOD	DISPLAY MODIFIED FIELDS (VDU) 
	EXTRN	THRBUF	THROW BUFFERS (DCSNA,DCBSC) 
	EXTRN	NLROUT	NEW LINE ROUTINE (VDU)
	EXTRN	LINE	WRAP ROUTINE (VDU)
	EXTRN	LINATT	INTERNAL LINEFLAG ROUTINE (VDU) 
	EXTRN	LINWRP	ANOTHER WRAP ROUTINE (VDU)
	EXTRN	ERROR	ERROR INCATOR (KEYB) 
	EXTRN	MATCH	MATCH ADDRESS AND TASKID (DSPBSC)
	EXTRN	ICSET	INTERTASK TIMEOUT (KEYB) 
	EXTRN	ICWRT	INTERTASK WRITE (KEYB) 
	EXTRN	COPP	COPY ON PRINTER DIRECTLY	=4 
	EJECT
*************************************************** 
*                                                 * 
*        CONDITIONAL ASSEMBLY PARAMETERS          * 
*                                                 * 
*************************************************** 

X:A	EQU	0	SNA HANDLING IF:=1
SNA	EQU	X:A 
X:K	EQU	2	NUMBER OF BUFFERS (1-32)
BUFFNR	EQU	X:K
X:L	EQU	1000	MAX BUFFER SIZE IN WORDS 
BUFFL	EQU	X:L 
X:M	EQU	0	COPY COMMAND INCLUDED IF:=1 
COPCMD	EQU	X:M
X:N	EQU	1	EBCDIC CHAR IF:=1 
EBCDIC	EQU	X:N
X:Z	EQU	1	=0,WHOLE,=1 CHAIN,=2 SEGMENT
DISHOW	EQU	X:Z
	EJECT
*************************************************************** 
*                                                             * 
*	DECLARATION OF DATA AND EQUATES 
*                                                             * 
*************************************************************** 

* 
*       EQUATES FOR ECB HANDLING
* 
ECBBA	EQU	2	BUFFER ADDRESS
ECBRL	EQU	4	REQUESTED LENGTH
ECBEL	EQU	6	EFFECTIVE LENGTH
ECBRC	EQU	8	RETURN CODE 
ECBCW	EQU	10	CONTROL WORD 
* 
*	INTERNAL STATUS 
* 
LICREC	EQU	/2000	LAST IN CHAIN RECEIVED 
THROWB	EQU	/0800	THROW BUFFERS
NEWCH	EQU	/0400	NEW CHAIN 
ATTREC	EQU	/0002	ATTRIBUTE RECEIVED 
PTORD	EQU	/0001	PT ORDER INDICATOR
	IFT	SNA=1
* 
*       SNA MODES 
* 
LOCMOD	EQU	0	LOCAL MODE 
SYSOP	EQU	2	SYSTEM MODE 
MYJOB	EQU	4	MY JOB MODE 
	XIF
* 
*	TASK IDENTIFICATION CODE
* 
VDUCOD	EQU	'VV'	VDU KB TASK 
* 
*	SPECIAL CHARACTERS
* 
NULL	EQU	0	NULL CHAR. 
SBACH	EQU	/11	SBA CHAR. 
ESCCHA	EQU	/1B	ESCAPE CHAR. 
* 
*	VDU SCREEN SIZE 
* 
LBVDU	EQU	1920	TOTAL SIZE 
LLINE	EQU	80	LINE LENGTH
* 
*        BUFFER LINK LENGTH 
* 
LINK	EQU	BUFFL+BUFFL+2
	EJECT
* 
*	RELATIVE ADDRESSES IN 
*	TERMINAL WORKBLOCK
* 
TCT01	EQU	0	TASK IDENTIFICATION 
BVDU	EQU	TCT01+2	SCREEN BUFFER
LINFLG	EQU	BVDU+1920	INTERNAL LINE FLAGS
PCURS	EQU	LINFLG+24	CURSOR ADDRESS , BINARY 
CURATT	EQU	PCURS+4
WCC	EQU	CURATT+2	WCC/CCC CHARACTER
KBINH	EQU	WCC+2	INHIBIT INDICATOR 
DCLENG	EQU	KBINH+4	LENGTH OF DC BUFFER
CURPOS	EQU	DCLENG+30	CURSOR POS IN SYSTEM MODE
BUFPNT	EQU	CURPOS+2	BUFFER ADDRESS
REGI	EQU	BUFPNT+2	WORK REGISTER 
STACK1	EQU	REGI+2	INTERNAL STACK
STACK2	EQU	STACK1+14
UNPMOD	EQU	STACK2+14	UNPACK MODE
SNAMOD	EQU	UNPMOD+2	SNA MODE
ECBICW	EQU	SNAMOD+12	ECB INTERTASK WRITE	=3 
	EJECT
************************************************************
*                                                         * 
*        PACK       PACK MODIFIED VDU-FIELDS INTO DC-BUFFER * 
*                                                           * 
************************************************************* 
*		REGISTERS
* 
*	A2= CHAR. 
*	A3= ADDRESS IN VDU-BUFFER 
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR
*	A8= ADDRESS IN DC-BUFFER
*	A9= DC-BUFFER INDEX 
*	A10= START ADDRESS
*	A11= RESERVED 
*	A12= BUFFER ADDRESS 
*	A13= RESERVED 
* 
************************************************************
PACK	EQU	*
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	LDK	A4,0	FIRST SCREEN POS. 
	LDKL	A3,BVDU 
	ADR	A3,A11 
	LDR	A10,A4	INITIATE ADDRESS
	CWK	A5,LBVDU+1	UNFORMATTED SCREEN? 
	RF(E)	PACK70	YES 
PACK10	EQU	*
	LCR	A2,A3	GET CHAR.
	CCK	A2,/8000	ATTRIBUTE?
	RF(NL)	PACK15	YES
	ADK	A3,1 
	ADK	A4,1 
	RB	PACK10
PACK15	EQU	*
	LDR	A10,A4	START ADDRESS 
	RF	PACK30
PACK20	EQU	*
	CF	A14,WRAP	CHECK IF WRAP AROUND 
	CWR	A10,A4	ALL SCANNED?
	RF(E)	PACK80	YES 
PACK30	EQU	*
	LCR	A2,A3	GET CHAR.
	ADK	A3,1 
	ADK	A4,1 
	CCK	A2,/8000	ATTRIBUTE?
	RB(L)	PACK20	NO
	ANK	A2,1	MODIFIED FIELD? 
	RF(NZ)	PACK50	YES
	ADK	A3,1 
	ADK	A4,1 
	RB	PACK20
PACK50	EQU	*
	LDK	A2,SBACH	SBA TO DC-BUFFER
	LDKL	A1,/8000	INDICATE SBA 
	CF	A14,PUTCHA	PUT CHAR. IN BUFFER
	LDR	A1,A1	TRANSMISSION OK? 
	RF(NZ)	PACK90	NO 
	LDR	A1,A4	BUFFER ADDRESS TO DC-BUFFER
	CF	A14,BUFADR
PACK60	EQU	*
	CF	A14,WRAP	CHECK IF WRAP AROUND 
	CWR	A10,A4	ALL SCANNED?
	RF(E)	PACK80	YES 
PACK70	EQU	*
	LCR	A2,A3	GET CHAR.
	CCK	A2,/8000	ATTRIBUTE?
	RB(NL)	PACK20	YES
	CWK	A2,NULL	NULL CHAR? 
	RF(E)	PACK75	YES,DON'T STORE 
	CF	A14,PUTCHA	PUT CHAR. IN BUFFER
	LDR	A1,A1	TRANSMISSION OK? 
	RF(NZ)	PACK90	NO 
PACK75	EQU	*
	ADK	A3,1 
	ADK	A4,1 
	RB	PACK60
PACK80	EQU	*
	LDK	A1,0	INDICATE LAST IN CHAIN
	CF	A14,DCWRIT	WRITE DC BUFFER
PACK90	EQU	*
	LDR	A8,A12	BUFFER TO RELEASE 
	CF	A14,RELBUF	RELEASE BUFFER 
	RTN	A14
	EJECT
************************************************************
*                                                          *
*        UNPACK       UNPACK DC-BUFFER AND UPDATE VDU      *
*                                                          *
************************************************************
*		REGISTERS
* 
*	A2= CHAR. 
*	A3= POINTER IN VDU-BUFFER 
*	A4= REL. CURSOR POS.
*	A5= LAST IN ROW REL POS 
*	A6= INTERNAL LINE FLAG ADDRESS
*	A8= ADDRESS IN DC-BUFFER
*	A9= DC-BUFFER INDEX 
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
********************************************************
UNPACK	EQU	*
	LDK	A1,3	KB TOTALLY INHIBIT
	ORS	A1,KBINH,A11 
	LC	A1,TCT01,A11
	CCK	A1,VDUCOD	PRINTER UNPACK?
	RF(NE)	UNP050	YES
	CF	A14,LMP4ON	INHIBIT LAMP ON
UNP050	EQU	*
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	LDR	A6,A11 
	LDK	A5,LLINE 
	CF	A14,LINE	CHECK WRAP AND LINE FLAG 
	SUR	A9,A9
	LD	A8,BUFPNT,A11	GET BUFFER ADDRESS
	LDK	A1,ICOMND	PROCESS COMMAND
	ST	A1,UNPMOD,A11 
UNP100	EQU	*
	CF	A14,GDCCH	GET CHAR. 
	LDR	A1,A1	ANYTHING LEFT? 
	RF(NZ)	UNP200	NO 
	LD	A1,UNPMOD,A11	GET ADDRESS TO START AT 
	CFI	A14,RETTAB,A1	RESTART
	LDR	A1,A1	PROCESS OKEY?
	RB(Z)	UNP100	YES 
	RF	UNP300
UNP200	EQU	*
	IFT	SNA=1
	CF	A14,GETNXT	GET NEXT BUFFER
	LDR	A1,A1	FINISHED?
	RB(Z)	UNP100	NO
	XIF
UNP300	EQU	*
	CF	A14,SCRINF	GET LATEST NEWS
	LDR	A1,A4
	CF	A14,ATMASB	SEARCH ATTRIBUTE BACKWARDS 
	IFT	SNA=1
	ANKL	A10,THROWB	THROW BUFFERS? 
	RF(Z)	UNP400	NO
	CF	A14,THRBUF	THROW BUFFERS
	RF	UNP600
UNP400	EQU	*
	IFF	DISHOW=2 
	LC	A1,TCT01,A11
	CCK	A1,VDUCOD
	RF(NE)	UNP500
	CF	A14,DISMOD	TESTINGTESTINGTESTING!!!!!!!!!!!!! 
UNP500	EQU	*
	XIF
	CF	A14,P2WCC	CHECK IT A LAST TIME	=4 
	LDR	A8,A12	GET BUFFER TO RELEASE 
	CF	A14,RELBUF	RELEASE BUFFER 
UNP600	EQU	*
	RTN	A14
	EJECT
**********************************************************************
*                                                                    *
*        INDEX FOR RETURNS AFTER GET CHARCTER                        *
*                                                                    *
**********************************************************************

ICOMND	EQU	0
ICOMN1	EQU	ICOMND+2 
	IFT	COPCMD=1 
ICOCOP	EQU	ICOMN1+2 
ICOWCC	EQU	ICOCOP+2 
	XIF
	IFF	COPCMD=1 
ICOWCC	EQU	ICOMN1+2 
	XIF
IORDER	EQU	ICOWCC+2 
IOSFAT	EQU	IORDER+2 
IOSBA1	EQU	IOSFAT+2 
IOSBA2	EQU	IOSBA1+2 
IORAA1	EQU	IOSBA2+2 
IORAA2	EQU	IORAA1+2 
IORACH	EQU	IORAA2+2 
IOEUA1	EQU	IORACH+2 
IOEUA2	EQU	IOEUA1+2 
	EJECT
********************************************************************* 
*                                                                   * 
*        RETURN ADDRESSES AFTER GET CHARACTER                       * 
*                                                                   * 
********************************************************************* 
RETTAB	EQU	*
	DATA	UNPCOM	PROCESS COMMAND CHAR.
	DATA	UNC100	PROCESS COMMAND CHAR AFTER ESC.
	IFT	COPCMD=1 
	DATA	UNC150	PROCESS FROM DEVICE
	XIF
	DATA	UNC600	PROCESS WCC
	DATA	UNPORD	PROCESS ORDERS AND CHAR. 
	DATA	SF100	PROCESS ATTRIBUTE 
	DATA	SBA100	PROCESS FIRST ADDRESS BYTE 
	DATA	SBA200	PROCESS SECOND ADDRESS BYTE
	DATA	RA100	PROCESS FIRST ADDRESS BYTE
	DATA	RA200	PROCESS SECOND ADDRESS BYTE 
	DATA	RA250	PROCESS CHAR. TO REPEAT 
	DATA	EUA100	PROCESS FIRST ADDRESS BYTE 
	DATA	EUA200	PROCESS FIRST ADDRESS BYTE 
	EJECT
*********************************************************************** 
*                                                                     * 
*        UNPCOM       UNPACK COMMAND                                  * 
*                                                                     * 
*********************************************************************** 
*		REGISTERS
* 
*	A2= CHAR. 
*	A3= ADDRESS IN VDU-BUFFER 
*	A4= REL. CURSOR ADDRESS 
*	A5= LAST IN ROW REL POS 
*	A6= INTERNAL LINE FLAG ADDRESS
*	A8= ADDRESS IN DC-BUFFER
*	A9= RESERVED
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
************************************************************************
UNPCOM	EQU	*	ENTRY LABEL FROM RETTAB
	IFF	SNA=1
	LDK	A1,ICOMN1	WHERE TO CONTINUE
	ST	A1,UNPMOD,A11 
	LDK	A1,0	RETURN CODE 
	CWK	A2,ESCCHA	ESCAPE?
	RF(E)	UNC900	YES 
	LDK	A1,1	NO INDICATE ERROR 
	RF	UNC900
	XIF
UNC100	EQU	*
	CWK	A2,/31	WRITE?
	RF(E)	UNC500	YES 
	CWK	A2,/35	ERASE AND WITE? 
	RF(E)	UNC200	YES 
	CWK	A2,/3F	ERASE ALL UNPROTECTED?
	RF(E)	UNC300	YES 
	IFT	COPCMD=1 
	CWK	A2,/37	COPY COMMAND? 
	RF(NE)	UNC175	NO 
	LDK	A1,ICOCOP	RESTART ENTRY
	RF	UNC800
UNC150	EQU	*	ENTRY LABEL FROM RETTAB
	CF	A14,MATCH	GET TASKID
	LDR	A1,A1	OK?
	RF(NZ)	UNC175	NO 
	LDKL	A1,/8000	RETURN CODE TO INDICATE COPY COMND.
	ST	A1,REGI,A11 
	LD	A8,ECBICW,A11 
	CF	A14,ICSET	SET TIMEOUT 
	LDR	A1,A2	TASK TO CALL 
	LDK	A2,2	LENGTH
	LDKL	A3,REGI 
	ADR	A3,A11	BUFFER
	CF	A14,ICWRT	SEND IT 
UNC175	EQU	*
	XIF
	LDKL	A10,THROWB	THROW THE REST 
	LDK	A1,1	INDICATE ERROR
	RF	UNC900	INVALID COMMAND
UNC200	EQU	*
	ST	A8,REGI,A11 
	CF	A14,ERASE	ERASE ENTIRE SCREEN 
	LD	A8,REGI,A11 
	LDR	A6,A11 
	LDK	A5,LLINE 
	LDK	A4,0	INITIATE BUFFER ADDRESS 
	RF	UNC500
UNC300	EQU	*
	CF	A14,ERASUP	ERASE ALL UNPROTECTED
	LDKL	A10,THROWB	THROW IT AWAY
	LDK	A1,1	INDICATE ERROR
	RF	UNC900
UNC500	EQU	*
	LDK	A1,ICOWCC	GET INDEX
	ST	A1,UNPMOD,A11 
	LDK	A1,0 
	RF	UNC900
UNC600	EQU	*	ENTRY LABEL FROM RETTAB
	CF	A14,P1WCC	PROCESS WCC BEFORE UPDATE 
	LDR	A3,A4
	ADKL	A3,BVDU	GET REAL ADDRESS
	ADR	A3,A11 
	ORKL	A10,PTORD	INDICATE PT ORDER 
	LDK	A1,IORDER	INDICATE NEXT CALL 
UNC800	EQU	*
	ST	A1,UNPMOD,A11 
	LDK	A1,0 
UNC900	EQU	*
	RTN	A14
	EJECT
**********************************************************
*                                                        *
*        UNPORD       UNPACK ORDERS                      *
*                                                        *
**********************************************************
*		REGISTERS
* 
*	A2= CHAR. 
*	A3= POINTER IN VDU BUFFER 
*	A4= REL. CURSOR POS.
*	A5= LAST IN ROW REL POS 
*	A6= INTERNAL LINE FLAG ADDRESS
*	A8= RESERVED
*	A9= RESERVED
*	A10= INDICATOR
*	A11= RESERVED 
*	A12= RESERVED 
*	A13= RESERVED 
* 
**********************************************************
UNPORD	EQU	*	ENTRY LABEL FROM RETTAB
	CWK	A2,/20	ORDER?
	RF(L)	UNO100	YES 
	XRKL	A10,PTORD	INDICATE FOR PT ORDER 
	CWR	A5,A4	NEW LINE?
	RF(G)	UNO050	NO
	CF	A14,LINE	CHECK WRAP 
UNO050	EQU	*
	SCR	A2,A3	STORE CHAR. IN VDU BUFFER
	LC	A1,LINFLG,A6
	ORK	A1,1 
	SC	A1,LINFLG,A6
	ADK	A4,1 
	ADK	A3,1 
	LDK	A1,0 
	RF	UNO200
UNO100	EQU	*
	LC	A1,CONORD,A2	GET ORDER INDEX
	CFI	A14,ORDTAB,A1	TAKE CARE OF ORDER 
UNO200	EQU	*
	RTN	A14
	EJECT
************************************************************* 
*                                                           * 
*        ORDTAB       ORDER TABLE                           * 
*                                                           * 
************************************************************* 
ORDTAB	EQU	*
	DATA	INVAL	INVALID CHAR. 
	DATA	SF	START FIELD
	DATA	SBA	SET BUFFER ADDRESS
	DATA	IC	INSERT CURSOR
	DATA	PT	TAB. 
	DATA	RA	REPEAT TO AADRESS
	DATA	EUA	ERASE UNPROTECTED TO ADDRESS
	DATA	ESC	ESCAPE
	DATA	NULCHA	NULL CHAR. 
	DATA	NL	NEW LINE 
	DATA	FF	FORM FEED
	DATA	EM	END MESSAGE
	DATA	CR	CARRIAGE RETURN
	EJECT
*********************************************************** 
*                                                         * 
*        SF       START FIELD                             * 
*                                                         * 
*********************************************************** 
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A2= RESERVED
*	A3= POINTER IN VDU BUFFER 
*	A4= REL. CURSOR POS.
*	A5= RESERVED
*	A6= RESERVED
*	A8= RESERVED
*	A9= DC-BUFFER INDEX 
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
************************************************************
SF	EQU	*
	LDK	A1,IOSFAT	INDICATE NEXT CALL 
	ST	A1,UNPMOD,A11 
	RF	SF900	GET CHAR. 
SF100	EQU	*	ENTRY LABEL FROM RETTAB 
	LDK	A1,IORDER	NEXT ALBEL 
	ST	A1,UNPMOD,A11 
	LC	A2,CONATT,A2	IN EBCDIC
	ORK	A2,/80	ATTR. BIT 
	CM	CURATT,A11
	ORKL	A10,ATTREC+PTORD
	CF	A14,LINWRP	CHECK WRAP 
	LC	A1,LINFLG,A6
	ANK	A1,2	LINE IN FIELD?
	RF(Z)	SF600	NO 
	CF	A14,LINATT	INDICATE ATTRIBUTE OVERRUN 
SF600	EQU	* 
	ORKL	A10,ATTREC	INDICATE ATTRIBUTE RECEIVED
	SCR	A2,A3	STORE CHAR.
	ADK	A3,1 
	ADK	A4,1 
SF900	EQU	* 
	LDK	A1,0 
	RTN	A14
	EJECT
*********************************************************** 
*                                                         * 
*        SBA       SET BUFFER ADDRESS                     * 
*                                                         * 
*********************************************************** 
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A2= CHAR. 
*	A3= RESERVED
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A8= RESERVED
*	A9= RESERVED
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
*********************************************************** 
SBA	EQU	* 
	LDK	A1,IOSBA1	NEXT LABEL 
	ST	A1,UNPMOD,A11 
	LDK	A1,0 
	RF	SBA900	FIRST BYTE 
SBA100	EQU	*	ENTRY LABEL FROM RETTAB
	LC	A7,CONATT,A2	CONVERT
	ANK	A7,/3F	
	SLL	A7,6 
	LDK	A1,IOSBA2
	ST	A1,UNPMOD,A11 
	LDK	A1,0 
	RF	SBA900	NEXT BYTE
SBA200	EQU	*	ENTRY LABEL FROM RETTAB
	LC	A2,CONATT,A2
	ANK	A2,/3F 
	ORR	A7,A2
	LDK	A1,IORDER	NEXT LABEL 
	ST	A1,UNPMOD,A11 
	CWK	A7,LBVDU	ILLEGAL ADDRESS?
	RF(NL)	SBA800	YES
	LDR	A3,A7
	LDR	A4,A3
	ADKL	A3,BVDU 
	ADR	A3,A11 
	ORKL	A10,PTORD	INDICATE PT ORDER 
	CF	A14,LINE	CHECK WRAP AND LINE FLAGS
	LDK	A1,0	REURN CODE
	RF	SBA900
SBA800	EQU	*
	ORKL	A10,THROWB	DON'T SAVE IT
	LDK	A1,1	RETURN CODE 
SBA900	EQU	*
	RTN	A14
	EJECT
**********************************************************
*                                                        *
*        IC       INSERT CURSOR                          *
*                                                        *
**********************************************************
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A2= RESERVED
*	A3= RESERVED
*	A4= REL. CURSOR POS.
*	A5= RESERVED
*	A6= RESERVED
*	A9= RESERVED
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
*********************************************** 
IC	EQU	*
	ST	A4,PCURS,A11
	ORKL	A10,PTORD	INDICATE
	LDK	A1,0	RETURN CODE 
	RTN	A14
	EJECT
*********************************************************** 
*                                                         * 
*        PT       PROGRAM TAB.                            * 
*                                                         * 
*********************************************************** 
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A2= CHAR. 
*	A3= ADDRESS IN VDU-BUFFER 
*	A4= REL. CURSOR POS.
*	A5= RESERVED
*	A6= ATTRIBUTE CHAR. 
*	A8= RESERVED
*	A9= RESERVED
*	A10= INDICATOR
*	A11= RESERVED 
*	A12= RESERVED 
*	A13= RESERVED 
* 
************************************************************
PT	EQU	*
	LDR	A1,A10 
	ANK	A1,PTORD	FOLLOWING ORDER OR COMMAND? 
	RF(NZ)	PT400	YES 
	LDK	A7,NULL	FILL WITH NULLS TO END OF FIELD
PT200	EQU	* 
	CF	A14,LINWRP	CHECK WRAP 
	LDR	A4,A4	END OF BUFFER? 
	RF(Z)	PT800	YES, KUNTA KINTE 
	LCR	A2,A3
	ANK	A2,/80	ATTRIBUTE?
	RF(NZ)	PT400	YES 
	SCR	A7,A3	STORE NULL CHAR. 
	LC	A1,LINFLG,A6
	ORK	A1,1 
	SC	A1,LINFLG,A6
	ADK	A3,1 
	ADK	A4,1 
	RB	PT200 
PT400	EQU	* 
	CF	A14,LINWRP	CHECK WRAP 
	LDR	A4,A4	END OF BUFFER? 
	RF(Z)	PT700	YES OS AND DOS 
	LCR	A2,A3	GET CHAR.
	ANK	A2,/80	ATTRIBUTE?
	RF(NZ)	PT500	YES 
PT410	EQU	*	.	=7
	ADK	A4,1 
	ADK	A3,1 
	RB	PT400 
PT500	EQU	* 
	LCR	A2,A3	GET CHAR.	=7 
	ANK	A2,/20	PROTECTED?
	RB(NZ)	PT410	.	=7
	ADK	A4,1 
	ADK	A3,1 
	CF	A14,LINWRP	CHECK WRAP 
PT700	EQU	* 
	ORKL	A10,PTORD 
PT800	EQU	* 
	LDK	A1,0	RETURN CODE 
	RTN	A14
	EJECT
************************************************************* 
*                                                           * 
*        RA       REPEAT TO ADDRESS                         * 
*                                                           * 
************************************************************* 
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A2= CHAR. TO BE REPEATED
*	A3= ADDRESS IN VDU-BUFFER 
*	A4= REL. CURSOR POS.
*	A5= RESERVED
*	A6= INTERNAL LINE FLAG ADDRESS
*	A8= RESERVED
*	A9= DC-BUFFER INDEX 
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
**************************************************
RA	EQU	*
	LDK	A1,IORAA1	NEXT LABEL 
	ST	A1,UNPMOD,A11 
	LDK	A1,0 
	RF	RA900	FIRST BYTE
RA100	EQU	*	ENTRY LABEL FROM RETTAB 
	LC	A7,CONATT,A2	CONVERT
	ANK	A7,/3F 
	SLL	A7,6 
	LDK	A1,IORAA2	NEXT LABEL 
	ST	A1,UNPMOD,A11 
	LDK	A1,0 
	RF	RA900	SECOND BYTE 
RA200	EQU	*	ENTRY LABEL FROM RETTAB 
	LC	A2,CONATT,A2
	ANK	A2,/3F 
	ORR	A7,A2
	CWK	A7,LBVDU	INVALID ADDRESS 
	RF(NL)	RA800	YES 
	LDK	A1,IORACH	NEXT LABEL 
	ST	A1,UNPMOD,A11 
	LDK	A1,0 
	RF	RA900	CHAR. BYTE
RA250	EQU	*	ENTRY LABEL FROM RETTAB 
	LDK	A1,IORDER
	ST	A1,UNPMOD,A11 
RA300	EQU	* 
	SCR	A2,A3	STORE IN VDU-BUFFER
	LC	A1,LINFLG,A6
	ORK	A1,1 
	SC	A1,LINFLG,A6
	ADK	A3,1 
	ADK	A4,1 
	CF	A14,LINWRP	CHECK WRAP	=1
	CWR	A4,A7	ALL REPEATED?	=1 
	RB(NE)	RA300	NO	=1 
	ORKL	A10,PTORD	INDICATE PT ORDER 
	LDK	A1,0	RETURN CODE 
	RF	RA900 
RA800	EQU	* 
	ORKL	A10,THROWB	THROW IT AWAY
	LDK	A1,1	RETURN CODE 
RA900	EQU	* 
	RTN	A14
	EJECT
******************************************************
*                                                    *
*        EUA       ERASE UNPRO. TO ADDRESS           *
*                                                    *
******************************************************
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A2= CHAR. 
*	A3= RESERVED
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A8= RESERVED
*	A9= RESERVED
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
******************************************************* 
EUA	EQU	* 
	LDK	A1,IOEUA1	NEXT LABEL 
	ST	A1,UNPMOD,A11 
	LDK	A1,0 
	RF	EUA900	FIRST BYTE 
EUA100	EQU	*	ENTRY LABEL FROM RETTAB
	LC	A7,CONATT,A2	CONVERT
	ANK	A7,/3F 
	SLL	A7,6 
	LDK	A1,IOEUA2	NEXT LABEL 
	ST	A1,UNPMOD,A11 
	LDK	A1,0	
	RF	EUA900	SECOND BYTE
EUA200	EQU	*	ENTRY LABEL FROM RETTAB
	LC	A2,CONATT,A2
	ANK	A2,/3F 
	ORR	A7,A2
	LDK	A1,IORDER	NEXT LABEL 
	ST	A1,UNPMOD,A11 
	CWK	A1,LBVDU	INVALID ADDRESS?
	RF(NL)	EUA800	YES
	LDR	A1,A7
	CF	A14,ERASUA	ERASE UNPRO. TO ADDRESS
	CF	A14,SCRINF
	LDK	A1,0	RETURN CODE 
	ORKL	A10,PTORD	INDICATE PT ORDER 
	RF	EUA900
EUA800	EQU	*
	ORKL	A10,THROWB	RUBB.
	LDK	A1,1	RETURN CODE 
EUA900	EQU	*
	RTN	A14
	EJECT
********************************************************
*                                                      *
*               CHAR. < /20 BUT NOT ORDER              *
*                                                      *
********************************************************
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A2= CHAR. 
*	A3= ADDRESS IN VDU-BUFFER 
*	A4= REL. CURSOR POS.
*	A5= RESERVED
*	A6= INTERNAL LINE FLAG ADDRESS
*	A8= RESERVED
*	A9= RESERVED
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
************************************************
ESC	EQU	* 
	ORKL	A10,LICREC	INDICATE COMMAND 
	LDK	A1,1	STOP ORDER PROCESS
	RF	CHARET
INVAL	EQU	* 
	ORKL	A10,/9800	END UNPACKING 
	LDK	A1,1 
	RF	CHARET
NULCHA	EQU	*
NL	EQU	*
FF	EQU	*
EM	EQU	*
CR	EQU	*
	CF	A14,LINWRP	CHECK WRAP 
	SCR	A2,A3	STORE CHAR.
	LC	A1,LINFLG,A6
	ORK	A1,1 
	SC	A1,LINFLG,A6
	XRKL	A10,PTORD	INDICATE PT ORDER 
	ADK	A3,1 
	ADK	A4,1 
	LDK	A1,0	CONTINUE
CHARET	EQU	*
	RTN	A14
	EJECT
****************************************************************
*                                                              *
*        PACKSY       PACK DC BUFFER IN SYSTEM MODE            *
*                                                              *
****************************************************************
*		REGISTERS
* 
*	A2= CHAR
*	A3= ADDRESS IN VDU-BUFFER 
*	A4= REL. CURSOR POS.
*	A5= RESERVED
*	A6= RESERVED
*	A8= ADDRESS IN DC-BUFFER
*	A9= INDEX IN DC-BUFFER
*	A11= CREDIT WORK AREA 
*	A12= BUFFER ADDRESS 
*	A13= RESERVED 
* 
*************************************************************** 
PACKSY	EQU	*
	IFT	SNA=1
	LDKL	A9,0	COUNTER
	LD	A3,CURPOS,A11	GET START POS.
	CWK	A3,/800	ANY CHAR. ON DISPLAY?
	RF(E)	PASY40	NO
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	LDR	A1,A4
	SUR	A1,A3	GET LENGTH OF MESSAGE
	RF(NN)	PASY10	NOT WRAP AROUND
	LDKL	A1,LBVDU-1	LAST POS. ON SCREEN
	SUR	A1,A3	GET LENGTH AGAIN 
PASY10	EQU	*
	CWK	A1,256	ILLEGAL LENGTH? 
	RF(NG)	PASY20	NO 
	LDKL	A1,256	ADJUST LENGTH
PASY20	EQU	*
	ADKL	A3,BVDU 
	ADR	A3,A11 
PASY30	EQU	*
	CWR	A1,A9	ALL EXAMINED?
	RF(E)	PASY40	YES 
	LCR	A2,A3	GET CHAR IN VDU BUFFER 
	ADK	A3,1 
	CWK	A2,NULL	NULL CHAR.?
	RB(E)	PASY30	YES, DON'T STORE
	CF	A14,PDCCH	STORE CHAR. IN DC BUFFER
	RB	PASY30
PASY40	EQU	*
	LDK	A1,0	INDICATE LAST IN CHAIN
	CF	A14,DCWRIT	SEND BUFFER
	LDR	A8,A12	GET BUFFER TO RELEASE 
	CF	A14,RELBUF	RELEASE BUFFER 
	XIF
	RTN	A14
	EJECT
************************************************************* 
*                                                           * 
*        UNPSYS       UNPACK DC BUFFER IN SYSTEM MODE       * 
*                                                           * 
************************************************************* 
*		REGISTERS
* 
*	A2= CHAR. 
*	A3= ADDRESS IN VDU-BUFFER 
*	A4= REL. CURSOR POS.
*	A5= LAST IN ROW REL POS 
*	A6= INTERNAL LINE FLAG ADDRESS
*	A8= ADDRESS IN DC-BUFFER
*	A9= INDEX IN DC-BUFFER
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
**************************************************************
UNPSYS	EQU	*
	IFT	SNA=1
	LD	A1,KBINH,A11
	ORK	A1,3 
	ST	A1,KBINH,A11
	CF	A14,LMP4ON
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	LDR	A3,A4	CURSOR ADDRESS 
	ADKL	A3,BVDU 
	ADR	A3,A11	VDU BUFFER ADDRESS
	LD	A8,BUFPNT,A11	GET DC BUFFER ADDRESS 
	SUR	A9,A9	INDEX IN DC BUFFER 
	LDR	A6,A11 
	LDK	A5,LLINE 
	CF	A14,LINE	GET INTERNAL LINEFLAG
UNPS05	EQU	*
	CF	A14,GDCCH	GET CHAR. IN DC  BUFFER 
	LDR	A1,A1	ANYTHING LEFT? 
	RF(NZ)	UNPS60	NO 
	CWK	A2,/31	BIND? 
	RF(E)	UNPS50	YES,PERHAPS 
UNPS07	EQU	*
	CWK	A2,/20	ORDER?
	RF(NL)	UNPS40	NO 
	CWK	A2,/0A	NEW LINE? 
	RF(NE)	UNPS10	NO 
	CF	A14,NLROUT	PERFORM NEW LINE 
	RB	UNPS05
UNPS10	EQU	*
	CWK	A2,/1C	IFS?
	RF(NE)	UNPS20	NO 
	LDK	A2,/2A	REPLACE WITH *
	RF	UNPS40
UNPS20	EQU	*
	CWK	A2,/1E	IRS?
	RF(NE)	UNPS30	NO 
	LDK	A2,/3B	REPLACE WITH ;
	RF	UNPS40
UNPS30	EQU	*
	CWK	A2,NULL	NULL?
	RF(NE)	UNPS40	NO 
	LDK	A2,/20	REPLACE WITH SPACE
UNPS40	EQU	*
	CF	A14,LINWRP	CHECK WRAP 
	SCR	A2,A3	STORE IN VDU BUFFER
	LC	A1,LINFLG,A6
	ORK	A1,1 
	SC	A1,LINFLG,A6
	ADK	A3,1 
	ADK	A4,1 
	RB	UNPS05
UNPS50	EQU	*
	CF	A14,GDCCH 
	ANK	A2,/FE	SHURE OF BIND?
	RF(Z)	UNPS55	ALMOST
	SUKL	A8,2
	SUKL	A9,2
	CF	A14,GDCCH 
	RB	UNPS07
UNPS55	EQU	*
	LDK	A1,MYJOB	INDICATE MY JOB MODE
	ADKL	A1,/8000	NEW MODE ACTIVATION
	ST	A1,SNAMOD,A11 
	LDKL	A10,1	NO DISPLAY
	RF	UNPS70
UNPS60	EQU	*
	LDKL	A5,LBVDU+1
	LDK	A6,0 
	CF	A14,STOINF	SAVE NEW SCREEN INFORMATION
	LDKL	A10,0 
UNPS70	EQU	*
	LD	A8,BUFPNT,A11	GET BUFFER TO RELEASE 
	CF	A14,RELBUF	RELEASE BUFFER 
	XIF
	RTN	A14
	EJECT
************************************************************
*                                                          *
*        GETNXT       GET AND CHECK NEXT BUFFER 
*                                                          *
************************************************************
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A11= CREDIT WORK AREA 
*	A12= BUFFER ADDRESS 
*	A13= RESERVED 
* 
************************************************************
GETNXT	EQU	*
	IFT	SNA=1
	CF	A14,SAVE2	SAVE UNPACK INFORMATION 
	LD	A8,BUFPNT,A11	GET BUFFER TO RELEASE 
	CF	A14,RELBUF	RELEASE BUFFER 
	IFT	DISHOW=2 
	LC	A1,TCT01,A11
	CCK	A1,VDUCOD	PRINTER UNPACK?
	RF(NE)	GETC10	YES
	CF	A14,DISMOD	DISPLAY MODIFIED FIELDS
	XIF
	IFT	SNA=1
GETC10	EQU	*
	CF	A14,WAIT	SYNCHRONIZE
	LD	A2,ECBEL,A8	SAVE LENGTH	=4
	ST	A2,DCLENG,A11	.	=4
	LDR	A9,A1
	CF	A14,REST2 
	LDR	A1,A9	GET RETURN CODE
	SRC	A1,1	FIRST OR MODDLE IN CHAIN? 
	RF(NN)	GETC30	NO 
	LDR	A1,A10	GET INTERNAL STATUS 
	ANKL	A1,LICREC	LAST IN CHAIN RECEIVED? 
	RF(Z)	GETC60	NO
	LC	A1,TCT01,A11
	CCK	A1,VDUCOD	PRINTER UNPACK?
	RF(NE)	GETC20	YES
	CF	A14,P2WCC	TAKE CARE OF WCC AFTER UPDATE 
GETC20	EQU	*
	XRKL	A10,LICREC	RESET LAST IN CHAIN
	ORKL	A10,NEWCH	NEW CHAIN 
	RF	GETC60
GETC30	EQU	*
	SRC	A1,1	LAST IN CHAIN RECEIVED? 
	RF(NN)	GETC90	NO 
GETC40	EQU	*
	LDR	A1,A10	GET INTERNAL STATUS 
	ORKL	A10,LICREC	LAST IN CHAIN RECEIVED 
	ANKL	A1,LICREC	LAST IN CHAIN RECEIVED? 
	RF(Z)	GETC60	NO
	CF	A14,P2WCC	TAKE CARE OF WCC AFTER UPDATE 
	ORKL	A10,NEWCH	NEW CHAIN 
GETC60	EQU	*
	ST	A12,BUFPNT,A11	SAVE BUFFER ADDRESS
	CF	A14,SAVE2	SAVE INFORMATION	=2 
	CF	A14,GETBUF	GET NEW BUFFER 
	LDR	A3,A8	GET BUFFER ADDRESS 
	CF	A14,READNW	READ WITH NO WAIT
	CF	A14,REST2	RESTORE UNPACK INFORMATION
	LDR	A1,A10 
	ANKL	A1,NEWCH	NEW CHAIN? 
	RF(Z)	GETC80	NO
	IFT	DISHOW=1 
	XRKL	A10,NEWCH	RESET 
	LC	A1,TCT01,A11
	CCK	A1,VDUCOD
	RF(NE)	GETC70
	CF	A14,SAVE2 
	CF	A14,DISMOD
	CF	A14,REST2 
	XIF
	IFT	SNA=1
GETC70	EQU	*
	LDK	A1,ICOMN1	NEXT LABEL 
	ST	A1,UNPMOD,A11 
GETC80	EQU	*
	LD	A8,BUFPNT,A11 
	SUR	A9,A9
	LDK	A1,0	RETUR N CODE
GETC90	EQU	*
	XIF
	RTN	A14
	EJECT
************************************************************* 
*                                                           * 
*        PUTCHA       PUT CHAR. IN DC BUFFER                * 
*                                                           * 
************************************************************* 
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
************************************************************* 
PUTCHA	EQU	*
	LDR	A1,A1	SBA TO STORE?
	RF(N)	PUTC10	YES 
	CWK	A9,BUFFL+BUFFL	BUFFER FULL?
	RF(NL)	PUTC20	YES
	RF	PUTC30
PUTC10	EQU	*
	LDKL	A1,BUFFL+BUFFL-3
	SUR	A1,A9	ROOM FOR SBA AND ADDRESS?
	RF(NN)	PUTC30	YES
PUTC20	EQU	*
	IFT	SNA=1
	CF	A14,SAVE2	SAVE PACK INFORMATION 
	LDK	A1,1	INDICATE NOT LAST IN CHAIN
	CF	A14,DCWRIT	WRITE DC BUFFER
	LDR	A9,A1
	CF	A14,REST2 
	LDR	A9,A9	TRANSMISSION OK? 
	RF(NZ)	PUTC90	NO 
	SUR	A9,A9	BUFFER INDEX 
	LDR	A8,A12	BUFFER ADDRESS
	XIF
	IFF	SNA=1
	CF	A14,ERROR 
	LDKL	A1,*
	ST	A1,REGI,A11 
	LKM
	DATA	3 
	XIF
PUTC30	EQU	*
	CF	A14,PDCCH	PUT CHAR. IN DC BUFFER
	LDK	A1,0	RETURN CODE 
PUTC90	EQU	*
	RTN	A14
	EJECT
**************************************************
*                                                *
*        PDCCH       PUT CHAR. IN DC  BUFFER     *
*                                                *
**************************************************
*		REGISTERS
* 
*	A2= CHAR. 
*	A3= RESERVED
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A8= ADDRESS IN DC-BUFFER
*	A9= DC-BUFFER INDEX 
*	A10= INDICATOR
*	A11= RESERVED 
*	A12= RESERVED 
*	A13= RESERVED 
* 
*************************************************** 
PDCCH	EQU	* 
	CWK	A9,BUFFL+BUFFL	OVERFLOW? 
	RF(NL)	PDC100	YES
	ANK	A2,/FF 
	IFT	SNA+EBCDIC=2	.	=5
	LC	A2,CONEBC,A2	CONVERT
	XIF
	SCR	A2,A8	STORE IN DC-BUFFER 
	ADKL	A8,1
	ADKL	A9,1
PDC100	EQU	*
	RTN	A14
	EJECT
*************************************************************** 
*                                                             * 
*        GDCCH       GET CHAR. IN DC BUFFER                   * 
*                                                             * 
*************************************************************** 
*		REGISTERS
* 
*	A1= RETURN CODE 
*	A2= CHAR. 
*	A3= POINTER IN VDU BUFFER 
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A8= ADDRESS IN DC-BUFFER
*	A9= DC-BUFFER INDEX 
*	A10= INDICATOR
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
****************************************************
GDCCH	EQU	* 
	LDK	A1,1	PRESET ERROR
	CW	A9,DCLENG,A11	BUFFER EMPTIED? 
	RF(NL)	GDCC90	YES
	LDK	A1,0 
	LCR	A2,A8	GET CHAR.
	ANK	A2,/FF 
	IFT	SNA+EBCDIC=2	.	=5
	LC	A2,CONASC,A2	CONVERT
	XIF
	ADKL	A8,1
	ADKL	A9,1
GDCC90	EQU	*
	RTN	A14
	EJECT
*********************************************************** 
*                                                         * 
*        PAID       STORE AID IN BUFFER                   * 
*                                                         * 
*********************************************************** 
*		REGISTERS
* 
*	A2= AID 
*	A11= RESERVED 
*	A13= RESERVED 
* 
**********************************************************
PAID	EQU	*
	CF	A14,PDCCH	STORE AID 
	RTN	A14
	EJECT
**********************************************************
*                                                        *
*        BUFADR       STORE BUFFER ADDRESS IN DC-BUFFER  *
*                                                        *
**********************************************************
*		REGISTERS
* 
*	A2= CHAR. 
*	A3= RESERVED
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A8= RESERVED
*	A9= RESERVED
*	A10= RESERVED 
*	A11= RESERVED 
*	A12= RESERVED 
*	A13= RESERVED 
* 
**********************************************************
BUFADR	EQU	*
	LDR	A2,A1	GET REL. POS.
	SRL	A2,6 
	ANK	A2,/3F 
	LC	A2,CONADR,A2	CONVERT TO ASCII 
	CF	A14,PDCCH	STORE IN DC-BUFFER
	LDR	A2,A1	GET REL. POS.
	ANK	A2,/3F 
	LC	A2,CONADR,A2	CONVERT TO ASCII 
	CF	A14,PDCCH	STORE IN DC-BUFFER
	RTN	A14
	EJECT
************************************************************
*                                                          *
*        RESMDT       RESET ALL MDT-BITS IN ATTRIBUTES     *
*                                                          *
************************************************************
*		REGISTERS
* 
*	A2= CHAR. 
*	A3= ADDRESS IN VDU-BUFFER 
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A8= RESERVED
*	A9= RESERVED
*	A10= RESERVED 
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
************************************************************* 
RESMDT	EQU	*
	LDK	A1,0	FIRST SCREEN POS. 
	LDKL	A3,BVDU 
	ADR	A3,A11 
RESM10	EQU	*
	CWK	A1,LBVDU	ALL SCANNED?
	RF(NL)	RESM90	YES
	LCR	A2,A3	GET CHAR.
	CCK	A2,/8080	ATTRIBUTE?
	RF(L)	RESM20	NO
	ANK	A2,/FE	RESET MDT-BIT 
	SCR	A2,A3	RESTORE
RESM20	EQU	*
	ADK	A1,1 
	ADK	A3,1 
	RB	RESM10
RESM90	EQU	*
	RTN	A14
	EJECT
********************************************************
*                                                      *
*        P1WCC       PROCESS WCC BEFORE UPDATE
*                                                      *
********************************************************
*		REGISTERS
* 
*	A2= CHAR. 
*	A3= RESERVED
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A8= RESERVED
*	A9= RESERVED
*	A10= RESERVED 
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
*************************************************** 
P1WCC	EQU	* 
	LC	A2,CONATT,A2	IN EBCDIC
	ST	A2,WCC,A11	SAVE 
	ANK	A2,1	RESET MDT-BITS? 
	RF(Z)	P1W900	NO
	CF	A14,RESMDT	RESET ALL MDT-BITS 
P1W900	EQU	*
	RTN	A14
	EJECT
********************************************************* 
*                                                       * 
*        P2WCC       TAKE CARE OF WCC AFTER UPDATE      * 
*                                                       * 
********************************************************* 
*		REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
**********************************************************
P2WCC	EQU	* 
	CF	A14,SAVE2	KEEP IT AWAY	=4 
	LD	A3,WCC,A11	.	=4 
	LC	A4,TCT01,A11	.	=6 
	CCK	A4,VDUCOD	VDU?	=6
	RF(NE)	P2W100	NO! NO SOUND	=6
	LDR	A7,A3	.	=4 
	ANK	A7,4	SOUND?
	RF(Z)	P2W100	NO
	CF	A14,SOUND	SOUND 
P2W100	EQU	*
	ANK	A3,8	COPY?	=4
	RF(Z)	P2W300	NO
	CCK	A4,VDUCOD	VDU?	=4
	RF(NE)	P2W200	NO PRINTER	=4
	CF	A14,COPY	COPY 
	RF	P2W300	.	=4 
P2W200	EQU	*	.	=4 
	CF	A14,COPP	COPY DIRECTLY	=4 
P2W300	EQU	*
	CF	A14,REST2	TAKE IT BACK	=4 
	RTN	A14
	EJECT
******************************************************************
*                                                                *
*        SAVE       SAVE PACK AND UNPACK INFORMATION             *
*                                                                *
******************************************************************
*		REGISTERS
* 
*	A1= STACK POINTER 
*	A2= CHAR. 
*	A3= VDU BUFFER ADDRESS
*	A4= REL CURSOR POS. 
*	A5= REL STTRIBUTE POS.
*	A6= ATTRIBUTE CHAR. 
*	A10= INTERNAL INDICATOR 
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
****************************************************************
SAVE1	EQU	* 
	LDKL	A1,STACK1	GET STACK ADDRESS 
	RF	SAVE
SAVE2	EQU	* 
	LDKL	A1,STACK2 
SAVE	EQU	*
	ADR	A1,A11 
	STR	A2,A1
	ADK	A1,2 
	STR	A3,A1
	ADK	A1,2 
	STR	A4,A1
	ADK	A1,2 
	STR	A5,A1
	ADK	A1,2 
	STR	A6,A1
	ADK	A1,2 
	STR	A7,A1
	ADK	A1,2 
	STR	A10,A1 
	RTN	A14
	EJECT
******************************************************************* 
*                                                                 * 
*        RESTOR       RESTORE PACK AND UNPACK INFORMATION         * 
*                                                                 * 
******************************************************************* 
*		REGISTERS
* 
*	A1= STACK POINTER 
*	A2= CHAR. 
*	A3= VDU BUFFER ADDRESS
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR. 
*	A7= RESERVED
*	A10= INTERNAL INDICATOR 
*	A11= CREDIT WORK AREA 
*	A12= RESERVED 
*	A13= RESERVED 
* 
*************************************************************** 
REST1	EQU	* 
	LDKL	A1,STACK1	GET STACK ADDRESS 
	RF	RESTOR
REST2	EQU	* 
	LDKL	A1,STACK2 
RESTOR	EQU	*
	ADR	A1,A11 
	LDR*	A2,A1 
	ADK	A1,2 
	LDR*	A3,A1 
	ADK	A1,2 
	LDR*	A4,A1 
	ADK	A1,2 
	LDR*	A5,A1 
	ADK	A1,2 
	LDR*	A6,A1 
	ADK	A1,2 
	LDR*	A7,A1 
	ADK	A1,2 
	LDR*	A10,A1
	RTN	A14
	EJECT
******************************************************* 
*                                                     * 
*               BUFFER POOL                           * 
*                                                     * 
******************************************************* 
BUFFER	EQU	*
	DATA	*+2	POINTER FIRST FREE
	IFF	BUFFNR=1 
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=2 
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=3 
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=4 
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=5 
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=6 
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=7 
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=8 
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=9 
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=10
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=11
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=12
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=13
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=14
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=15
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=16
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=17
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=18
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=19
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=20
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=21
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=22
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=23
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=24
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=25
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=26
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=27
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=28
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=29
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=30
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=31
	DATA	*+LINK
	RES	BUFFL
	IFF	BUFFNR=32
	DATA	*+LINK
	RES	BUFFL
	XIF
	DATA	0 
	RES	BUFFL
	EJECT
******************************************************* 
*                                                     * 
*        GETBUF       GET BUFFER                      * 
*                                                     * 
******************************************************* 
*		REGISTERS
* 
*	A8= DC-BUFFER ADDRESS 
*	A9= INDEX IN DC-BUFFER
*	A11= RESERVED 
*	A12= BUFFER ADDRESS 
*	A13= RESERVED 
* 
********************************************************
GETBUF	EQU	*
	LDKL	A7,BUFFER 
GETB10	EQU	*
	LDR*	A8,A7 
	RF(NZ)	GETB90	BUFFER FREE
	LKM
	DATA	0	SWITCH TASK 
	RB	GETB10
GETB90	EQU	*
	LDR*	A1,A8 
	STR	A1,A7
	ADKL	A8,2
	LDR	A12,A8 
	SUR	A9,A9
	RTN	A14
	EJECT
********************************************************* 
*                                                       * 
*        RELBUF       RELEASE BUFFER                    * 
*                                                       * 
********************************************************* 
*		REGISTERS
* 
*	A8= BUFFER ADDRESS
*	A11= RESERVED 
*	A13= RESERVED 
* 
********************************************************* 
RELBUF	EQU	*
	LDKL	A7,BUFFER 
	SUKL	A8,2	POINT TO LINK
RELB10	EQU	*
	LDR*	A1,A7 
	RF(Z)	RELB90 
	LDR	A7,A1
	RB	RELB10
RELB90	EQU	*
	STR	A8,A7
	CMR	A8 
	RTN	A14

	END

Full view