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

⟦9ff5b886b⟧

    Length: 71808 (0x11880)
    Notes: pts_type(SC)
    Names: »KEYB1.SC«

Derivation

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

PTS(SC)

	IDENT KEYB1	REL 11.0 DK 831110 NJ 870150541100 
			DK3 PA 4-9 830113 NJ 
			DK2 RESTORE A1 AFTER DC ABRT 
			DK1,ERASE ONE LINE 'EOF' 
			=3  ERASE TO END OF FIELD
			=2  TWO DC-LINES 
			82-02-28 
			=1, SYSTEM MODE CURSOR 
			81-01-26 
*************************************************************** 
*                                                             * 
*        MODULE    KEYB                                       * 
*                  MODULE HANDLING THE KEYBOARD DEVICE        * 
*                  (EMULATION 3270 SNA/SDLC, BSC)             * 
*                                                             * 
*************************************************************** 
	EJECT
*************************************************************** 
*                                                             * 
*        LIST OF ROUTINES                                     * 
*                                                             * 
*        KBINP       MAIN ROUTINE                             * 
*        CPLKB       KB-COMPLETION TABLE FOR DIFF. MODES      * 
*          KBCPLO    KB-COMPLETION ROUTINE IN LOCAL MODE
*          KBCPSY    KB-COMPLETION ROUTINE IN SYSTEM MODE     * 
*          KBCPJO    KB-COMPLETION ROUTINE IN MY JOB MODE     * 
*        READKB      READ KEYBOARD WITH NO WAIT               * 
*        RESKB       RESET KEYBOARD-BUFFER                    * 
*        ICVRED      KB/VDU INTERTASK READ
*        ICINP       INTERTASK INPUT
*        ICSET       SET INTERTASK TIMEOUT
*        ICREAD      READ INTERTASK 
*        ICWRT       WRITE INTERTASK
*        ERROR       ILLEGAL KEY-HANDLING                     * 
*                    LAMPROUTINES                             * 
*        SDISP       SIGNAL ROUTINE                           * 
*        KEYTAB      KEY-TABLE, FIXED ENTRY FOR EACH FUNC.    * 
*          CHAR      ALPHA. CHAR HANDLING                     * 
*          NUM       NUM.   CHAR HANDLING                     * 
*          ANCOMM    ALPHANUM. CHAR HANDLING                  * 
*          CURMOV    MOVE CURSOR ON SCREEN                                * 
*          BAKTAB    TAB. UNPROT. BACKWARDS                   * 
*          TAB       TAB. UNPROT. FORWARDS                    * 
*          CRNL      TAB. UNPROT. NEXT LINE                   * 
*          RDHOME    TAB. UNPROT. FIRST ON SCREEN             * 
*          EREOF     ERASE TO END OF FIELD                    * 
*          ERINPT    ERASE UNPROT. ENTIRE SCREEN              * 
*          INSERT    INSERT HANDLING                          * 
*          DELETE    DELETE HANDLING                          * 
*          RESET     RESET HANDLING                           * 
*          DUP       DUPLICATE HANDLING                       * 
*          FLDMRK    FIELDMARK HANDLING                       * 
*          ZERO:2,3  DOUBLE & TRIPLE ZERO HANDLING            * 
*          OFLINE    OFFLINE HANDLING                         * 
*          MFCHGE    MAIN FRAME CHANGE                        * 
*          COPY      LOCAL HARDCOPY                           * 
*          IDENT     PRINTER IDENT. HANDLING                  * 
*          KEYL      KEYLOCK STATUS HANDLING                  * 
*        TESTM       TEST MODE
*          ENTER     ENTER HANDLING                           * 
*          CLEAR     CLEAR HANDLING                           * 
*          SYSREQ    SYSTEM REQUEST HANDLING                  * 
*          ATTN      ATTENTION HANDLING                       * 
*          PA        PROGRAM ACCESS HANDLING                   *
*          PF        PROGRAM FUNCTION HANDLING                * 
*          RETURN    RETURN                                   * 
*                                                             * 
*************************************************************** 
	EJECT
*************************************************** 
*                                                  *
*        ENTRY POINTS                              *
*                                                  *
****************************************************

	ENTRY	KBINP,KBINP2	START LABEL FOR MODULE
	ENTRY	READKB,READK2	READ KEYBOARD
	ENTRY	RESKB	RESET KEYBOARD BUFFER
	ENTRY	LMP1ON	LAMPROUTINES
	ENTRY	LMP1OF	. 
	ENTRY	LMP2ON	. 
	ENTRY	LMP2OF	. 
	ENTRY	LMP3ON	. 
	ENTRY	LMP3OF	. 
	ENTRY	LMP4ON	. 
	ENTRY	LMP4OF	. 
	ENTRY	LMP5ON	. 
	ENTRY	LMP5OF	. 
	ENTRY	LMP6ON	. 
	ENTRY	LMP6OF	. 
	ENTRY	RDHOME	TAB. UNPROTECTED FIRST ON SCREEN
	ENTRY	COPY	LOCAL HARDCOPY
	ENTRY	ERROR	ERROR INDICATION 
	ENTRY	TAB	TAB FOREWARD UNPROTECTED 
	ENTRY	CRDOWN	MOVE CURSOR DOWN ONE LINE 
	ENTRY	ICVRED	VDU INTERTASK READ
	ENTRY	ICINP	INTERTASK INPUT
	ENTRY	ICSET	SET INTERTASK TIMEOUT
	ENTRY	ICWRT	WRITE INTERTASK
	ENTRY	ICREAD	READ INTERTASK
	EJECT

******************************************************
*                                                    *
*        EXTERNAL REFERENCES                         *
*                                                    *
******************************************************

	EXTRN	I:RT1	RETURN TO CREDIT CODE
	EXTRN	ATMASB	SEARCH ATTRIBUTE BACKWARDS (VDU)
	EXTRN	ATMASF	SEARCH ATTRIBUTE FORWARD (VDU)
	EXTRN	DCABOR	ABORT DC-REQUEST (DCSNA,DCBSC)
	EXTRN	ERASE	ERASE ENTIRE SCREEN (VDU)
	EXTRN	ERASUA	ERASE ALL UNPROTECTED TO ADDRESS (VDU)
	EXTRN	ERASUP	ERASE ALL UNPROTECTED (VDU) 
	EXTRN	TRPA	TRANSMIT SHORT READ (DCSNA,DCBSC) 
	EXTRN	TRPF	TRANSMIT MODIFIED READ (DCSNA,DCBSC)
	EXTRN	TSTSTA	TEST STATUS (DCSNA,DCBSC) 
	EXTRN	WCHAR	DISPLAY CHAR. AND CURSOR (VDU) 
	EXTRN	SOUND	 SOUND ALARM ON DISPLAY (VDU)
	EXTRN	SCRINF	GET SCREEN INFORMATION (VDU)
	EXTRN	STOINF	SAVE SCREEN INFORMATION (VDU) 
	EXTRN	GETVDU	GET CHAR. IN VDU BUFFER (VDU) 
	EXTRN	STOVDU	STORE CHAR. IN VDU BUFFER (VDU) 
	EXTRN	DISCHA	DISPLAY CHAR. (VDU) 
	EXTRN	POSUNP	MOVE CURSOR TO NEXT UNPR. POS. (VDU)
	EXTRN	INSMOD	INSERT MODE ROUTINE (VDU) 
	EXTRN	DCOFLN	INDICATE OFFLINE TO DC (DCSNA,DCBSC)
	EXTRN	DISMOD	DISPLAY MODIFIED FIELDS (VDU) 
	EXTRN	CONPF	CONVERT PF-KEY TABLE (CONVER)
	EXTRN	OPSYS	OPEN SYSTEM (DCSNA,DCBSC)
	EXTRN	LINE	GET LINE FLAG (VDU) 
	EXTRN	SAVE1	SAVE1 REGISTERS (PAD)
	EXTRN	REST1	REST1E REGISTERS (PAD) 
	EXTRN	DISID	DISPLAY HARDCOPY TASKID
	EXTRN	GETBUF	GET BUFFER (PAD)
	EXTRN	RELBUF	RELEASE BUFFER (PAD)
	EXTRN	DISSTA	DISPLAY STATISTICS (VDU)
	EXTRN	RDSTAT	READ STATISTICS (DCBSC) 
	EXTRN	CHKSTA	CHECK LINE STATUS (DCBSC,DCSNA) 
	EXTRN	SETSTA	SET STATUS (DCSNA)
	EXTRN	CONCT	CONNECT (DCXXX)	=2 
	EXTRN	DISCON	DISCONNECT (DCXXX)	=2 
	EJECT
************************************************************* 
*                                                           * 
*        CONDITIONAL ASSEMBLY PARAMETERS                    * 
*                                                           * 
************************************************************* 

X:A	EQU	0	SNA HANDLING INCLUDED IF:=1 
SNA	EQU	0 
X:C	EQU	0	OFFLINE HANDLING IF :=1 
OFLIN	EQU	0 
X:D	EQU	1	NUMBER OF LINES (1-2) 
NBRLIN	EQU	2
X:F	EQU	0	KEY-LOCK STATUS IF:=1 
KEYLST	EQU	0
X:G	EQU	0	PF KEY HANDLING IF:=1 
PFX	EQU	1 
X:H	EQU	0	PA KEY HANDLING IF :=1
PAX	EQU	1 
X:I	EQU	1	INSERT/DELETE HANDLING IF :=1 
IN:DL	EQU	1 
X:J	EQU	1	KB6272 INCLUDED IF :=1
KB6272	EQU	1
X:M	EQU	0	COPY COMMAND INCLUDED IF:=1 
COPCMD	EQU	1
X:O	EQU	0	TEST MODE INCLUDED IF:=1
TEST	EQU	0
X:P	EQU	0	COPY LOCK FUNCTION INCLUDED IF:=1 
COPL	EQU	0
	EJECT
*************************************************************** 
*                                                             * 
*	DECLARATIONS OF DATA AND EQUATES
*                                                             * 
*************************************************************** 

* 
*       PREDEFINED KEYS 
* 
CRUP	EQU	/80	FIRST "MOVE CURSOR " KEY 
ERFKEY	EQU	/88	ERASE TO END OF FIELD-KEY
ERIKEY	EQU	/89	ERASE ALL UNPROT.
RSET	EQU	/8C	RESET KEY
IDKEY	EQU	/93	IDENT KEY 
FKLKEY	EQU	/94	FIRST KEYLOCK VALUE
LKLKEY	EQU	/9C	LAST KEYLOCK VALUE 
FIPA	EQU	/9F	FIRST PROGRAM ATTN. KEY
ENTKEY	EQU	/A0	ENTER KEY
SYSKEY	EQU	/A1	SYSTEM REQUEST KEY 
CLRKEY	EQU	/A2	CLEAR KEY
PFKEY	EQU	/B1	PROGRAM FUNTION KEY 
LAKEY	EQU	/C9	LAST KEY IN KEY-TABLE 
* 
*       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 
ECBCW2	EQU	12	CONTROL WORD TWO	DK 
* 
*	SPECIAL CHARACTERS
* 
NULL	EQU	0	NULL CHAR. 
DUPCH	EQU	/1C	DUPLICATE CHAR. 
FMCH	EQU	/1E	FIELD MARK CHAR. 
* 
*        LAMPCONSTANTS
* 
LON	EQU	/B7 
LOF	EQU	/B8 
LFL	EQU	/B9	FLASH 
	IFT	KB6272=1 
LAMP1	EQU	/20 
LAMP2	EQU	/10 
LAMP3	EQU	8 
LAMP4	EQU	4 
LAMP5	EQU	2 
LAMP6	EQU	1 
	XIF
	IFF	KB6272=1 
LAMP1	EQU	0 
LAMP2	EQU	0 
LAMP3	EQU	1 
LAMP4	EQU	2 
LAMP5	EQU	4 
LAMP6	EQU	8 
	XIF
* 
*	VDU SCREEN SIZE 
* 
LLINE	EQU	80	LINE LENGTH
LBVDU	EQU	1920	TOTAL SIZE 
* 
*	MODES 
* 
NEWMOD	EQU	/8000	NEW MODE 
HCPMOD	EQU	/4000	HARDCOPY OUTSTANDING 
MYJOB	EQU	/0004	MY JOB MODE 
SYSOP	EQU	/0002	SYSTEM OPERATOR MODE
LOCMOD	EQU	/0000	LOCAL MODE 
* 
*	TASK IDENTIFICATION CODE
* 
VDUCOD	EQU	'VV'	VDU KB TASK 
	EJECT
* 
*	RELATIVE ADDRESSES IN 
*	TERMINAL WORKBLOCK
* 
BVDU	EQU	2	VDU SCREEN BUFFER
LINFLG	EQU	BVDU+1920	LINE FLAGS 
WCC	EQU	LINFLG+30	WCC CHAR. 
KBINH	EQU	WCC+2	KEYBOARD INHIBIT INDICATOR
OFFFLG	EQU	KBINH+8	OFFLINE FLAG 
PRTID	EQU	OFFFLG+2	HARDCOPY PRINTER 
MAIN	EQU	PRTID+6	MAIN FRAME 
MODE	EQU	MAIN+2	INSERT MODE SWITCH
KEYS	EQU	MODE+2	KEY LOCK STATUS 
RDMORE	EQU	KEYS+12	BRANCH ADDRESS TO NEXT KB-KEY
CURPOS	EQU	RDMORE+2	CURSOR POS. IN SYSTEM MODE
REGI	EQU	CURPOS+4	SAVE AREA 
SNAMOD	EQU	REGI+32	SNA MODE 
BSCMOD	EQU	SNAMOD	BSC MODE
ECBKB	EQU	BSCMOD+2	ECB KB 
ECBSD	EQU	ECBKB+4	ECB SIGNAL DISPLAY
ECBICR	EQU	ECBSD+4	ECB INTERTASK READ 
ECBICW	EQU	ECBICR+2	ECB INTERTAS WRITE
ECBKB2	EQU	ECBICW+6	ECB 2ND KEYBOARD	DK 
* 
*	RELATIVE ADDRESSES IN 
*	COMMON WORKBLOCK
* 
	IFF	TEST=1 
TSKTAB	EQU	26	TASK TABLE
	XIF
	IFT	TEST=1 
TSKTAB	EQU	219	TASK TABLE 
	XIF
	EJECT
****************************************************************
*                                                              *
*        KBINP       MAIN ROUTINE                              *
*                                                              *
****************************************************************
*		REGISTERS
* 
*	A2= KEY-CHAR. 
*	A3= KEY-TABLE INDEX 
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A7= KEY-HANDLING INDICATOR
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
*********************************************************** 
KBINP2	EQU	*	 
	LDK	A1,1	INDICATE 2ND KEYBOARD PRESENT	DK
	ST	A1,ECBCW2,A8		DK
KBINP	EQU	* 
	LD	A1,ECBRC,A8	POWER ON? 
	RF(Z)	KBIN90	YES, SKIP IT	 
	IFT	KEYLST=0 
	LD	A1,ECBCW,A8	SEE IF KEYLOCK ?	DK 
	RF(N)	KBIN80	SKIP IT	DK
	XIF
	IFT	KEYLST=1 
	LC*	A2,ECBBA,A8	GET KEYLOCK VALUE
	ADKL	A2,FKLKEY-/70	PREPARE FOR TABLE 
	SC*	A2,ECBBA,A8	RESTORE
	XIF
	LD	A1,ECBRC,A8	ERROR?
	ANKL	A1,/FFF3
	RF(NZ)	KBIN80	YES
	LD	A1,KBINH,A11
	ANK	A1,1	KB TOTALY INHIBIT?
	RF(NZ)	KBIN80	YES
	LC*	A2,ECBBA,A8	GET INPUT CHAR.
	ANK	A2,/FF 
	LD	A1,KBINH,A11
	ANK	A1,6	MUST BE A RESET KEY?
	RF(Z)	KBIN30	NO
	CWK	A2,RSET	RESET KEY? 
	IFT	SNA=1
	RF(E)	KBIN30	YES 
	CWK	A2,SYSKEY	SYSTEM REQUEST KEY?
	XIF
	RF(NE)	KBIN80	NO 
KBIN30	EQU	*
	LDR	A3,A2
	SUK	A3,/20	INDEX TO KEY-TABLE
	RF(N)	KBIN80	ILLEGAL CHAR
	CWK	A2,LAKEY 
	RF(G)	KBIN80	ILLEGAL CHAR
	IFT	SNA=1
	LD	A1,SNAMOD,A11	GET SNA MODE
	ANK	A1,/FF 
	CFI	A14,CPLKB,A1	COMPLETE KB IN CURRENT MODE 
	XIF
	IFF	SNA=1
	LDK	A7,0 
	CWK	A2,FIPA	PROGRAM ATTN KEY?
	RF(L)	KBIN40	NO
	CM	MODE,A11
	CF	A14,LMP6OF	CLEAR INSERT MODE
	CF	A14,DCABOR
KBIN40	EQU	*
	XIF
	LDR	A7,A7	ANY KEY-HANDLING 
	RF(NZ)	KBIN80	NO 
	ADR	A3,A3	PREPARE FOR KEY-TABLE
	LD	A1,RDMORE,A11	KEY IN SEQUENCE?
	RF(Z)	KBIN50	NO
	CF	A14,DCABOR	KILL DC AGAIN	DK 
	LD	A1,RDMORE,A11	RESTORE A1	DK2
	CFR	A14,A1	CONTINUE AT SAVED LABEL 
	RF	KBIN90
KBIN50	EQU	*
	CFI	A14,KEYTAB,A3	BRANCH TO RESP. KEY-HANDLER
	RF	KBIN90
KBIN80	EQU	*
	CF	A14,RESKB	RESET KB BUFFER 
KBIN90	EQU	*
	RTN	A14
	EJECT
	IFT	SNA=1
********************************************************************* 
*                                                                   * 
*       CPLKB       KB-COMPLETION TABLE                             * 
*                                                                   * 
********************************************************************* 
CPLKB	EQU	* 
	DATA	KBCPLO	KB-COMPL. IN LOCAL MODE
	DATA	KBCPSY	KB-COMPL. IN SYSTEM MODE 
	DATA	KBCPJO	KB-COMPL. IN MY JOB MODE 
	EJECT
********************************************************************* 
*                                                                   * 
*        KBCLO       KB-COMPLETION IN LOCAL MODE                    * 
*                                                                   * 
********************************************************************* 
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A3= KEY-TABLE INDEX 
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A7= KEY-HANDLING INDICATOR
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
*********************************************************** 
KBCPLO	EQU	*
	LDK	A7,0	INDICATE KEY-HANDLING 
	CWK	A2,FIPA	PROGRAM ATTN, KEY? 
	RF(NG)	KBCL90	NO 
	LDK	A7,1	NO KEY-HANDLING 
	CWK	A2,SYSKEY	SYSTEM REQUEST?
	RF(NE)	KBCL80	NO 
	CF	A14,OPSYS	START COMMUNICATION 
	CF	A14,TSTSTA	TEST STATUS
	ANKL	A1,/101	ACTIVE? 
	RF(NZ)	KBCL90	NO 
	LDK	A1,SYSOP	INDICATE SYSTEM MODE
	ORKL	A1,/8000	INDICATE MODE ACTIVATION 
	ST	A1,SNAMOD,A11 
	RF	KBCL90
KBCL80	EQU	*
	CWK	A2,ENTKEY	ENTER KEY? 
	RF(NE)	KBCL85	NO 
	LD	A1,RDMORE,A11	INSIDE IDENT ROUTINE? 
	RF(Z)	KBCL85	NO
	LDK	A7,0	INDICATE KEY-HANDLING 
	RF	KBCL90
KBCL85	EQU	*
	CF	A14,ERROR	ILLEGAL KEY 
KBCL90	EQU	*
	RTN	A14
	EJECT
********************************************************************
*                                                                  *
*       KBCPSY       KB-COMPLETION IN SYSTEM MODE                  *
*                                                                  *
********************************************************************
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A3= KEY-TABLE INDEX 
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A7= KEY-HANDLING INDICATOR
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
*********************************************************** 
KBCPSY	EQU	*
	LDK	A7,0	INDICATE KEY-HANDLING 
	CWK	A2,FIPA	PROGRAM ATTN. KEY? 
	RF(L)	KBCS20	NO
	CWK	A2,CLRKEY	UNALLOWED PROGRAM ATTN. KEY? 
	RF(NE)	KBCS10	NOT CLEAR KEY
	LDK	A7,1	INDICATE NO KEY-HANDLING
	CF	A14,ERASE	ERASE ENTIRE SCREEN 
	RF	KBCS80
KBCS10	EQU	*
	RF(G)	KBCS70	YES 
	CM	MODE,A11
	CF	A14,LMP6OF	CLEAR INSERT MODE
	CF	A14,DCABOR	ABORT DC 
	RF	KBCS80
KBCS20	EQU	*
	CWK	A2,ERIKEY	ERASE INPUT KEY? 
	RF(E)	KBCS80	YES 
	CWK	A2,ERFKEY	ERASE END OF FIELD KEY?
	RF(E)	KBCS80	YES 
	CWK	A2,CRUP	INITIATE CURSOR?	=1
	RF(NL)	KBCS90	NO	=1
	LD	A1,CURPOS,A11 
	CWK	A1,/800	CURSOR INITIATED?
	RF(NE)	KBCS90	YES
	CF	A14,SCRINF	GET SCREEN INFO. 
	ST	A4,CURPOS,A11	INITIATE CURSOR 
	RF	KBCS90
KBCS70	EQU	*
	CF	A14,ERROR	INDICATE ERROR
	LDK	A7,1	NO KEY-HANDLING 
	RF	KBCS90
KBCS80	EQU	*
	LDKL	A1,NEWMOD	INDICATE MODE ACTIVATION
	ORS	A1,SNAMOD,A11
KBCS90	EQU	*
	RTN	A14
	EJECT
******************************************************************
*                                                                *
*       KBCPJO       KB-COMPLETION IN MY JOB MODE                *
*                                                                *
******************************************************************
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A3= KEY-TABLE INDEX 
*	A4= RESERVED
*	A5= RESRVED 
*	A6= RESRVED 
*	A7= KEY-HANDLING INDICATOR
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
************************************************************
KBCPJO	EQU	*
	LDK	A7,0	INDICATE KEY-HANDLING 
	CWK	A2,FIPA	PROGRAM ATTN. KEY? 
	RF(L)	KBCJ90	NO
	IFT	OFLIN=1
	RF(E)	KBCJ80 
	XIF
	IFT	SNA=1
	CM	MODE,A11
	CF	A14,LMP6OF	TURN OFF INSERT LAMP 
	CF	A14,DCABOR	ABORT DC 
	IFT	OFLIN=1
	RF	KBCJ90
KBCJ80	EQU	*
	CF	A14,ERROR	INDICATE ERROR
	LDK	A7,1	NO KEY-HANDLING 
	XIF
	IFT	SNA=1
KBCJ90	EQU	*
	RTN	A14
	XIF
	EJECT
*************************************************************** 
*                                                             * 
*       READKB       READ KEYBOARD WITH NO WAIT               * 
*                                                             * 
*************************************************************** 
*          REGISTERS
* 
*	A8= KB-ECB
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
***************************************************** 
READKB	EQU	*
	LD	A8,ECBKB,A11
	LDK	A7,0	CLEAR ECBCW 
	ST	A7,ECBCW,A8		 
	LDK	A7,1 
	ST	A7,ECBRL,A8 
*    NO POWER OF INDICATOR ,...DK 81-10-17  * 
	LDK	A7,2	STANDARD READ 
	LKM
	DATA	1 
	RTN	A14
**  READ FROM SECOND KEYBOARD, P & T, DK ** 
READK2	EQU	*	 
	LD	A8,ECBKB2,A11	GET ECB 
	LDK	A7,0	CLEAR ECBCW 
	ST	A7,ECBCW,A8		 
	LDK	A7,1	
	ST	A7,ECBRL,A8	
	LDK	A7,2	STANDARD READ 
	LKM		
	DATA	1	
	RTN	A14	 
**END DK MODIFICATION  ** 
	EJECT
*************************************************************** 
*                                                             * 
*       RESKB       RESET KEYBOARD BUFFER                     * 
*                                                             * 
*************************************************************** 
*             REGISTERS 
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
******************************************************
RESKB	EQU	* 
*   REMOVED UNTIL NEEDED......DK, 811028....**
	RTN	A14
	EJECT
*********************************************************** 
*                                                         * 
*	ICVRED	KB/VDU INTERTASK READ
*                                                         * 
*********************************************************** 
*            REGISTERS
* 
*	A2= RESERVED
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
*********************************************************** 
ICVRED	EQU	*
	LD	A8,ECBICR,A11 
	CF	A14,ICSET	SET NO TIMEOUT
	IFF	COPCMD=1 
	LD	A1,PRTID,A11
	XIF
	IFT	COPCMD=1 
	LDK	A1,0	UNADDRESSED 
	XIF
	LDKL	A3,REGI 
	ADR	A3,A11 
	LDK	A2,2	LENGTH
	CF	A14,ICREAD	READ INTERTASK 
	RTN	A14
	EJECT
****************************************************************
*                                                              *
*      ICINP       INTERTASK INPUT                             *
*                                                              *
****************************************************************
*             REGISTERS 
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
****************************************************************
ICINP	EQU	* 
	LD*	A2,ECBBA,A8
	IFT	COPCMD=1 
	LDR	A1,A2	COPY COMMAND?
	RF(NN)	ICIN80	NO 
	LDKL	A3,BVDU	BUFFER TO SEND
	ADR	A3,A11 
	IFT	COPL=1 
	LCR	A2,A3	CHECK IF ALLOWED TO COPY 
	CCK	A2,/8000	ATTRIBUTE?
	RF(L)	ICIN20	NO
	ANK	A2,/20	PROTECTED?
	RF(NZ)	ICIN90	YES DON'T COPY 
ICIN20	EQU	*
	XIF
	IFT	COPCMD=1 
	LD	A2,ECBCW,A8	GET TO WHOM 
	LD	A8,ECBICW,A11 
	CF	A14,ICSET	SET TIMEOUT 
	LDR	A1,A2
	LDKL	A2,LBVDU+/20	LENGTH 
	CF	A14,ICWRT	SEND IT AWAY
	LDKL	A1,HCPMOD	HARDCOPY OUTSTANDING
	ORS	A1,BSCMOD,A11
	RF	ICIN90
ICIN80	EQU	*
	XIF
	LDKL	A1,HCPMOD	RESET HARDCOPY OUTSTANDING
	IFT	SNA=1
	XRS	A1,SNAMOD,A11
	XIF
	IFF	SNA=1
	XRS	A1,BSCMOD,A11
	XIF
	ANK	A2,1	PRINTER OK? 
	RF(Z)	ICIN90	YES 
ICIN90	EQU	*
	RTN	A14
	EJECT
*********************************************************** 
*                                                        *
*       ICSET       SET INTERTASK TIMEOUT                 * 
*                                                        *
*********************************************************** 
*             REGISTERS 
* 
*	A2= RESERVED
*	A8= INTERTASK ECB 
*	A11= RESERVED 
*	A13= RESERVED 
* 
**********************************************************
ICSET	EQU	* 
	LDKL	A1,-1	NO TIMEOUT
	ST	A1,ECBCW,A8 
	LDK	A7,/B9	SET TIMEOUT 
	LKM
	DATA	1 
	RTN	A14
	EJECT
************************************************************* 
*                                                           * 
*       ICREAD        INTERTASK READ                        * 
*                                                           * 
**************************************************************
*                REGISTERS
* 
*	A1= TASK ID 
*	A2= LENGTH
*	A3= BUFFER ADDRESS
*	A8= INTETASK READ ECB 
*	A11= RESERVED 
*	A13= RESERVED 
* 
************************************************************* 
ICREAD	EQU	*
	ST	A1,ECBCW,A8	TASK ID 
	ST	A2,ECBRL,A8	LENGTH
	ST	A3,ECBBA,A8	BUFFER ADDRESS
	LDK	A7,/02	READ
	LKM
	DATA	1 
	RTN	A14
	EJECT
*************************************************************** 
*                                                             * 
*       ICWRT        INTERTASK WRITE                          * 
*                                                             * 
*************************************************************** 
*                REGISTERS
* 
*	A1= TASK ID 
*	A2= LENGTH
*	A3= BUFFER ADDRESS
*	A8= INTERTASK WRITE ECB 
*	A11= RESERVED 
*	A13= RESERVED 
* 
****************************************************************
ICWRT	EQU	* 
	ST	A1,ECBCW,A8	TASK ID 
	ST	A2,ECBRL,A8	LENGTH
	ST	A3,ECBBA,A8	BUFFER ADDRESS
	LDK	A7,/86	WRITE 
	LKM
	DATA	1 
	RTN	A14
	EJECT
******************************************************************* 
*                                                                 * 
*        ERROR       ILLEGAL KEY-HANDLING                         * 
*                                                                 * 
******************************************************************* 
*          REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
******************************************************* 
ERROR	EQU	* 
	CF	A14,LMP4ON	TURN ON 'ERROR' LAMP 
	LDK	A1,4	RESET ALLOWED 
	ORS	A1,KBINH,A11 
	CF	A14,SOUND	TURN ON SOUND ALARM 
	RTN	A14

	EJECT
************************************************************* 
*                                                           * 
*        LAMPROUTINES                                       * 
*                                                           * 
************************************************************* 
LMP1ON	LDK	A1,LAMP1 
	RF	LMPON 
LMP1OF	LDK	A1,LAMP1 
	RF	LMPOF 
LMP2ON	LDK	A1,LAMP2 
	RF	LMPON 
LMP2OF	LDK	A1,LAMP2 
	RF	LMPOF 
LMP3ON	LDK	A1,LAMP3 
	RF	LMPON 
LMP3OF	LDK	A1,LAMP3 
	RF	LMPOF 
LMP4ON	LDK	A1,LAMP4 
	RF	LMPON 
LMP4OF	LDK	A1,LAMP4 
	RF	LMPOF 
LMP5ON	LDK	A1,LAMP5 
	RF	LMPON 
LMP5OF	LDK	A1,LAMP5 
	RF	LMPOF 
LMP5FL	LDK	A1,LAMP5 
	RF	LMPFL 
LMP6ON	LDK	A1,LAMP6 
	RF	LMPON 
LMP6OF	LDK	A1,LAMP6 
	RF	LMPOF 
* 
LMPON	LDK	A7,LON
	RF	SDISP 
LMPOF	LDK	A7,LOF
	RF	SDISP 
LMPFL	LDK	A7,LFL
	RF	SDISP 
	EJECT
************************************************************* 
*                                                           * 
*        SDISP       SIGNAL ROUTINE                         * 
*                                                           * 
************************************************************* 
*         REGISTERS 
* 
*	A8= SIGNAL ECB
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
******************************************************* 
SDISP	EQU	* 
	LD	A8,ECBSD,A11
	ST	A1,ECBCW,A8 
** SECOND KEYBOARD MODS, DK, P & T  **
	LD	A8,ECBSD,A11	GET DISP. ECB	 
	LDK	A1,/41	CHANGE FILE CODE	 
	SC	A1,1,A8	
	LKM		
	DATA	1	LAMPS ON SECOND KEYB'RD 
SDISP1	EQU	*	 
	LD	A8,ECBSD,A11	 
	LDK	A1,/40	RESTORE FILE CODE 1ST KB	 
	SC	A1,1,A8	
** END OF DK MODS  ** 
	LKM
	DATA	1 
	RTN	A14
	EJECT
****************************************************************
*                                                              *
*       KEYTAB       KEY-TABLE, FIXED ENTRY FOR EACH FUNC.     *
*                                                              *
****************************************************************
KEYTAB	EQU	*
*20 
	DATA	CHAR	SPACE
	DATA	CHAR	!
	DATA	CHAR	"
	DATA	CHAR
	DATA	CHAR	$
	DATA	CHAR		
	DATA	CHAR	&
	DATA	CHAR	'
	DATA	CHAR	(
	DATA	CHAR	)
	DATA	CHAR	*
	DATA	NUM	+ 
	DATA	NUM	, 
	DATA	NUM	- 
	DATA	NUM	. 
	DATA	CHAR	/
*30 
	DATA	NUM	0 
	DATA	NUM	1 
	DATA	NUM	2 
	DATA	NUM	3 
	DATA	NUM	4 
	DATA	NUM	5 
	DATA	NUM	6 
	DATA	NUM	7 
	DATA	NUM	8 
	DATA	NUM	9 
	DATA	CHAR	:
	DATA	CHAR	;
	DATA	CHAR	<
	DATA	CHAR	=
	DATA	CHAR	>
	DATA	CHAR	?
*40 
	DATA	CHAR
	DATA	CHAR	A
	DATA	CHAR	B
	DATA	CHAR	C
	DATA	CHAR	D
	DATA	CHAR	E
	DATA	CHAR	F
	DATA	CHAR	G
	DATA	CHAR	H
	DATA	CHAR	I
	DATA	CHAR	J
	DATA	CHAR	K
	DATA	CHAR	L
	DATA	CHAR	M
	DATA	CHAR	N
	DATA	CHAR	O
*50 
	DATA	CHAR	P
	DATA	CHAR	Q
	DATA	CHAR	R
	DATA	CHAR	S
	DATA	CHAR	T
	DATA	CHAR	U
	DATA	CHAR	V
	DATA	CHAR	W
	DATA	CHAR	X
	DATA	CHAR	Y
	DATA	CHAR	Z
	DATA	CHAR
	DATA	CHAR
	DATA	CHAR
	DATA	CHAR	^
	DATA	CHAR	UNDERLINE
*60 
	DATA	CHAR
	DATA	CHAR	a LOWER CASE A-Z 
	DATA	CHAR	b
	DATA	CHAR	c
	DATA	CHAR	d
	DATA	CHAR	e
	DATA	CHAR	f
	DATA	CHAR	g
	DATA	CHAR	h
	DATA	CHAR	i
	DATA	CHAR	j
	DATA	CHAR	k
	DATA	CHAR	l
	DATA	CHAR	m
	DATA	CHAR	n
	DATA	CHAR	o
*70 
	DATA	CHAR	p
	DATA	CHAR	q
	DATA	CHAR	r
	DATA	CHAR	s
	DATA	CHAR	t
	DATA	CHAR	u
	DATA	CHAR	v
	DATA	CHAR	w
	DATA	CHAR	x
	DATA	CHAR	y
	DATA	CHAR	z
	DATA	CHAR
	DATA	CHAR
	DATA	CHAR
	DATA	CHAR
	DATA	RETURN
*80 
	DATA	CURMOV
	DATA	CURMOV
	DATA	CURMOV
	DATA	CURMOV
	DATA	BAKTAB
	DATA	TAB 
	DATA	CRNL
	DATA	RDHOME
	DATA	EREOF 
	DATA	ERINPT
	IFT	IN:DL=1
	DATA	INSERT
	DATA	DELETE
	XIF
	IFF	IN:DL=1
	DATA	RETURN
	DATA	RETURN
	XIF
	DATA	RESET 
	DATA	DUP 
	DATA	FLDMRK
	DATA	ZERO:2
*90 
	DATA	ZERO:3
	DATA	NUMCOM
	DATA	COPY
	DATA	IDENT 
	IFT	KEYLST=1 
	DATA	KEYL
	DATA	KEYL
	DATA	KEYL
	DATA	KEYL
	DATA	KEYL
	DATA	KEYL
	DATA	KEYL
	DATA	KEYL
	XIF
	IFF	KEYLST=1 
	DATA	RETURN
	DATA	RETURN
	DATA	RETURN
	DATA	RETURN
	DATA	RETURN
	DATA	RETURN
	DATA	RETURN
	DATA	RETURN
	XIF
	DATA	RETURN	FREE LABEL FOR NEW KEY (NOT P. A. KEY) 
	DATA	RETURN	FREE LABEL FOR NEW KEY (NOT P. A. KEY) 
	DATA	RETURN	FREE LABEL FOR NEW KEY (NOT P. A. KEY) 
*FIRST P. A. KEY
	IFT	OFLIN=1
	DATA	OFLINE
	XIF
	IFF	OFLIN=1
	DATA	RETURN
	XIF
*A0 
	DATA	ENTER 
	IFT	SNA=1
	DATA	SYSREQ
	DATA	CLEAR 
	DATA	ATTN
	XIF
	IFF	SNA=1
	DATA	RETURN
	DATA	CLEAR 
	DATA	RETURN
	XIF
	IFT	NBRLIN=2 
	DATA	RETURN
	XIF
	IFF	NBRLIN=2 
	DATA	RETURN
	XIF
	IFT	PAX=1
	DATA	PAEX
	XIF
	IFF	PAX=1
	DATA	RETURN
	XIF
	DATA	PA1 
	DATA	PA2 
	DATA	PA3 
	DATA	PAALFA	PA4-PA10 (ALFASKOP)
	DATA	PAALFA
	DATA	PAALFA
	DATA	PAALFA
	DATA	PAALFA
	DATA	PAALFA
	DATA	PAALFA
*B0 
	IFT	PFX=1
	DATA	PFEX
	XIF
	IFF	PFX=1
	DATA	RETURN
	XIF
	DATA	PF	1
	DATA	PF	2
	DATA	PF	3
	DATA	PF	4
	DATA	PF	5
	DATA	PF	6
	DATA	PF	7
	DATA	PF	8
	DATA	PF	9
	DATA	PF	10 
	DATA	PF	11 
	DATA	PF	12 
	DATA	PF	13 
	DATA	PF	14 
	DATA	PF	15 
*C0 
	DATA	PF	16 
	DATA	PF	17 
	DATA	PF	18 
	DATA	PF	19 
	DATA	PF	20 
	DATA	PF	21 
	DATA	PF	22 
	DATA	PF	23 
	DATA	PF	24 
	IFF	TEST=1 
	DATA	RETURN
	XIF
	IFT	TEST=1 
	DATA	TESTM 
	XIF
	EJECT
**************************************************************
*                                                             * 
*        CHAR       ALPHABETIC AND SPEC. CHAR UPDAT. DISPL.  *
*                                                            *
**************************************************************
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A3= ATTRIBUTE MASKL 
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A11= RESERVED 
*	A13= RESERVED 
* 
**************************************************************
CHAR	EQU	*
	LDK	A3,/30	LOAD ATTRIBUTE MASK 
	CF	A14,ANCOMM	TAKE CARE OF CHAR. 
	RTN	A14
	EJECT
**************************************************************
*                                                            *
*        NUM       NUMERIC UPDAT. DISPL.                     *
*        NUMCOM    NUMERIC COMMA                             *
*                                                             * 
**************************************************************
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A3= ATTRIBUTE MASK
*	A4= RESERVED
*	A5= RESERVED
*	A6= RESERVED
*	A11= RESERVED 
*	A13= RESERVED 
* 
************************************************************* 
NUMCOM	EQU	*
	LDK	A2,/2C	INSERT COMMA
NUM	EQU	* 
	LDK	A3,/20	LOAD ATTRIBUTE MASK 
	CF	A14,ANCOMM	TAKE CARE OF CHAR. 
	RTN	A14
	EJECT
*************************************************************** 
*                                                             * 
*       ANCOMM       COMMON ROUTINE FOR ALPHANUM. CHAR.       * 
*                                                             * 
*************************************************************** 
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A3= AT ENTRY ATTRIBUTE MASK 
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR. 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
*************************************************************** 
ANCOMM	EQU	*
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	CWR	A4,A5	CURSOR ON ATTRIBUTE
	RF(E)	ANC800	YES 
	LDR	A1,A6
	ANR	A1,A3	ALLOWED POS. ? 
	RF(NZ)	ANC800	NO 
	IFT	IN:DL=1
	LD	A1,MODE,A11	INSERT MODE?
	RF(Z)	ANC100	NO
	CF	A14,INSMOD
	LDR	A7,A1
	ANK	A7,1	INSRETED NORMAL?
	RF(NZ)	ANC900	YES
	ANK	A1,2	INSERT NOT ALLOWED? 
	RF(NZ)	ANC800	YES
	XIF
ANC100	EQU	*
	LDR	A1,A4
	LDR	A7,A2
	CF	A14,STOVDU	STORE KEY-CHAR IN VDU BUFFER 
	CF	A14,WCHAR	DISPLAY CHAR AND CURSOR 
	CF	A14,POSUNP	MOVE CURSOR TO NEXT UNPROTECTED POS. 
	RF	ANC900
ANC800	EQU	*
	CF	A14,ERROR	INDICATE ERROR
ANC900	EQU	*
	RTN	A14
	EJECT
************************************************************
*                                                          *
*        CURMOV       MOVE CURSOR ON SCREEN                *
*                                                          *
************************************************************
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR
*	A11= RESERVED 
*	A13= RESERVED 
* 
************************************************************
CURMOV	EQU	*
	CF	A14,SCRINF	GET SCREEN INFO. 
	SUK	A2,CRUP	GET INDEX
	ADR	A2,A2
	CFI	A14,CURTAB,A2	JUMP IN CURSOR TABLE 
	CF	A14,STOINF	SAVE SCREEN INFORMATION
	CWK	A5,LBVDU+1	UNFORMATTED SCREEN
	RF(E)	CURM10	YES 
	LDR	A1,A4
	CF	A14,ATMASB	UPDATE ATTRIBUTE 
CURM10	EQU	*
	LDK	A1,2	REQ. LENGTH 
	CF	A14,DISCHA	SET CURSOR 
	RTN	A14
	EJECT
*	CURTAB       CURSOR JUMP TABLE
CURTAB	EQU	*
	DATA	CRLEFT	MOVE CURSOR TO LEFT
	DATA	CRRIGT	MOVE CURSOR TO RIGHT 
	DATA	CRDOWN	MOVE CURSOR DOWN 
	DATA	CURUP	MOVE CURSOR UP
*	CRLEFT       MOVE CURSOR TO LEFT
CRLEFT	EQU	*
	SUK	A4,1 
	RF(NN)	CRRET	NOT LEFTMOST POS. 
	LDKL	A4,LBVDU-1	LAST POS. ON SCREEN
	RF	CRRET 
*	CRRIGT       MOVE CURSOR TO RIGHT 
CRRIGT	EQU	*
	ADK	A4,1 
	CWK	A4,LBVDU	END OF BUFFER?
	RF(L)	CRRET	NO 
	LDK	A4,0 
	RF	CRRET 
*	CRDOWN       MOVE CURSOR DOWN 
CRDOWN	EQU	*
	ADKL	A4,LLINE
	CWK	A4,LBVDU	LAST LINE?
	RF(L)	CRRET	NO 
	SUKL	A4,LBVDU
	RF	CRRET 
*	CURUP       MOVE CURSOR UP
CURUP	EQU	* 
	SUKL	A4,LLINE
	RF(NN)	CRRET	UPMOST LINE 
	ADKL	A4,LBVDU
CRRET	EQU	* 
	RTN	A14
	EJECT
**************************************************************
*                                                            *
*        BAKTAB       TAB. UNPROTECTED BACKWARDS             *
*                                                            *
**************************************************************
*		REGISTERS
* 
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR. 
*	A9= REL. ATTRIBUTE START POS. 
*	A11= RESERVED 
*	A13= RESERVED 
* 
*************************************************************** 
BAKTAB	EQU	*
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	LDR	A9,A5
	CWK	A5,LBVDU+1	UNFORMATTED SCREEN? 
	RF(E)	BAK600	YES 
	CWR	A4,A5	STANDING ON ATTRIBUTE? 
	RF(E)	BAK300	YES 
	SUK	A4,1	
	RF(NN)	BAK100	NOT FIRST POS. ON SCREEN 
	LDKL	A4,LBVDU-1	LAST POS. ON SCREEN
BAK100	EQU	*
	CWR	A4,A5	STANDING ON POS. AFTER ATTRIBUTE?
	RF(E)	BAK300	YES 
	LDR	A4,A5
	LDR	A7,A6
	ANK	A7,/20	PROTECTED FIELD?
	RF(Z)	BAK500	NO
BAK300	EQU	*
	SUK	A4,1 
	RF(NN)	BAK400
	LDKL	A4,LBVDU-1
BAK400	EQU	*
	LDR	A1,A4
	CF	A14,ATMASB	SEARCH ATTRIBUTE BACKWARDS AND MASK IT 
	LDR	A7,A6
	ANK	A7,/20	PROTECTED FIELD?
	RF(Z)	BAK500	NO
	LDR	A4,A5
	CWR	A5,A9	WHOLE SCREEN SEARCHED? 
	RB(NE)	BAK300	NO 
	LDK	A1,0	FIRST SCREEN POS. 
	CF	A14,ATMASB	UPDATE FIELD INFORMATION 
	RF	BAK600
BAK500	EQU	*
	LDR	A4,A5
	ADK	A4,1 
	CWK	A4,LBVDU-1	WRAP AROUND?
	RF(NG)	BAK700	NO 
BAK600	EQU	*
	LDK	A4,0	FIRST SCREEN POS. 
BAK700	EQU	*
	CF	A14,STOINF	SAVE SCREEN INFORMATION
	LDK	A1,2	REQ. LENGTH 
	CF	A14,DISCHA	SET CURSOR 
	RTN	A14
	EJECT
************************************************************* 
*                                                           * 
*        TAB       TAB. UNPROTECTED FORWARD                 * 
*                                                           * 
************************************************************* 
*		REGISTERS
* 
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR. 
*	A9= REL. ATTRIBUTE START POS. 
*	A11= RESERVED 
*	A13= RESERVED 
* 
**************************************************************
TAB	EQU	* 
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	LDR	A9,A5
	CWK	A5,LBVDU+1	UNFORMATTED SCREEN? 
	RF(E)	TAB200	YES 
TAB100	EQU	*
	LDR	A1,A4
	CF	A14,ATMASF	SEARCH ATTRIBUTE FORWARD 
	LDR	A4,A5	NEW CURSOR POS.
	LDR	A7,A6
	ANK	A7,/20	PROTECTED FIELD?
	RF(Z)	TAB150	NO
	CWR	A5,A9	WHOLE SCREEN SEARCHED? 
	RB(NE)	TAB100	NO 
	LDK	A1,0	FIRST POS. ON SCREEN
	CF	A14,ATMASB	UPDATE FIELD INFORMATION 
	RF	TAB200
TAB150	EQU	*
	ADK	A4,1 
	CWK	A4,LBVDU-1	LAST SCREEN POS.? 
	RF(NG)	TAB300	NO 
TAB200	EQU	*
	LDK	A4,0	FIRST SCREEN POS. 
TAB300	EQU	*
	CF	A14,STOINF	SAVE SCREEN INFORMATION
	LDK	A1,2	REQ. LENGTH 
	CF	A14,DISCHA	SET CURSOR 
	RTN	A14
	EJECT
******************************************************************* 
*                                                                 * 
*        CRNL       TAB. UNPROTECTED TO NEXT LINE                 * 
*                                                                 * 
******************************************************************* 
*		REGISTERS
* 
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR. 
*	A11= RESERVED 
*	A13= RESERVED 
* 
***************************************************************** 
CRNL	EQU	*
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	CF	A14,CRDOWN	MOVE CURSOR DOWN 
	LDK	A1,0	COMPUTE LEFTMOST POS. 
CRN100	EQU	*
	SUK	A4,LLINE 
	RF(N)	CRN200 
	ADK	A1,LLINE 
	RB	CRN100
CRN200	EQU	*
	LDR	A4,A1
	CWK	A5,LBVDU+1	UNFORMATTED SCREEN? 
	RF(E)	CRN800	YES 
	CF	A14,GETVDU	GET CHAR. IN VDU BUFFER
	CCK	A7,/80	ATTRIBUTE?
	RF(NL)	CRN400	YES
	LDR	A1,A4
	CF	A14,ATMASB	SEARCH ATTRIBUTE BACKWARD
	LDR	A7,A6
	ANK	A7,/20	PROTECTED?
	RF(Z)	CRN800	NO
	RF	CRN500
CRN400	EQU	*
	SUK	A4,1 
	RF(NN)	CRN500	NOT WRAP AROUND
	LDKL	A4,LBVDU-1	LAST SCREEN POS. 
CRN500	EQU	*
	CF	A14,STOINF	SAVE SCREEN INFORMATION
	CF	A14,TAB	TAB. UNPROTECTED FORWARD
	RF	CRN900
CRN800	EQU	*
	CF	A14,STOINF	SAVE SCREEN INFORMATION
	LDK	A1,2	REQ. LENGTH 
	CF	A14,DISCHA	SET CURSOR 
CRN900	EQU	*
	RTN	A14
	EJECT
********************************************************************* 
*                                                                   * 
*        RDHOME       TAB. UNPROTECTED FIRST ON SCREEN              * 
*                                                                   * 
********************************************************************* 
*		REGISTERS
* 
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR. 
*	A11= RESERVED 
*	A13= RESERVED 
* 
********************************************************************* 
RDHOME	EQU	*
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	LDK	A4,0	FIRST POS. ON SCREEN
	CF	A14,STOINF
	CWK	A5,LBVDU+1	UNFORMATTED SCREEN? 
	RF(E)	RDH800	YES 
	LDR	A1,A4
	CF	A14,GETVDU	GET CHAR. IN VDU BUFFER
	CCK	A7,/8000	ATTRIBUTE?
	RF(L)	RDH100	NO
	LDKL	A4,LBVDU-1	LAST SCREEN POS. 
	CF	A14,STOINF	SAVE SCREEN INFORMATION
	RF	RDH300
RDH100	EQU	*
	LDR	A1,A4
	CF	A14,ATMASB	GET ATTRIBUTE BACKWARD 
	LDR	A7,A6
	ANK	A7,/20	PROTECTED?
	RF(Z)	RDH800	NO
RDH300	EQU	*
	CF	A14,TAB	TAB. UNPROTECTED FORWARD
	RF	RDH900
RDH800	EQU	*
	CF	A14,STOINF	SAVE SCREEN INFORMATION
	LDK	A1,2	REQ. LENGTH 
	CF	A14,DISCHA	SET CURSOR 
RDH900	EQU	*
	RTN	A14
	EJECT
************************************************************* 
*                                                           * 
*        EREOF       ERASE TO END OF FIELD                  * 
*                                                          *
************************************************************* 
*		REGISTERS
* 
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR. 
*	A11= RESERVED 
*	A13= RESERVED 
* 
******************************************************************* 
EREOF	EQU	* 
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	CWK	A5,LBVDU+1	UNFORMATTED SCREEN? 
	RF(E)	ERE700	YES 
	LDR	A7,A6
	ANK	A7,/20	PROTECTED FIELD?
	RF(NZ)	ERE600	YES
	CWR	A5,A4	STANDING ON ATTRIBUTE? 
	RF(E)	ERE600	YES 
	LDR	A1,A4
	LDR	A8,A6	SAVE OLD 
	LDR	A9,A5	SAVE OLD 
	CF	A14,ATMASF	SEARCH ATTRIBUTE FORWARD 
	LDR	A3,A5
	LDR	A6,A8
	LDR	A5,A9
	ORK	A6,1	SET MDT-BIT IN ATTRIBUTE
	LDR	A7,A6
	LDR	A1,A5
	CF	A14,STOVDU	STORE NEW ATTRIBUTE IN VDU BUFFER
	CF	A14,STOINF	SAVE NEW SCREEN INFORMATION
	LDR	A1,A3	STOP ADDRESS 
	RF	ERE800
ERE600	EQU	*
	CF	A14,ERROR	INDICATE ERROR
	RF	ERE900
ERE700	EQU	*
	CF	A14,LINE	ERASE ONE LINE	DK1 
	LDR	A1,A5		DK1 
	CWK	A1,LBVDU		DK1
	RF(L)	ERE710		DK1
	LDK	A1,0	STOP ADDRESS	=3 
ERE710	EQU	*		DK1 
	CF	A14,SCRINF		DK1 
ERE800	EQU	*
	SUR	A10,A10
	CF	A14,ERASUA	ERASE UNPROTECTED TO ADDRESS 
	CF	A14,DISMOD	DISPLAY MODIFIED FIELD 
ERE900	EQU	*
	RTN	A14
	EJECT
******************************************************************* 
*                                                                 * 
*        ERINPT       ERASE UNPROTECTED ENTIRE SCREEN             * 
*                                                                 * 
******************************************************************* 
*		REGISTERS
* 
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR. 
*	A11= RESERVED 
*	A13= RESERVED 
* 
******************************************************************* 
ERINPT	EQU	*
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	CWK	A5,LBVDU+1	UNFORMATTED SCREEN? 
	RF(NE)	ERI100	NO 
	CF	A14,ERASE	ERASE ENTIRE SCREEN 
	RF	ERI900
ERI100	EQU	*
	CF	A14,ERASUP	ERASE ALL UNPROTECTED
	CF	A14,DISMOD	DISPLAY ERASED FIELDS
	CF	A14,RDHOME	TAB. UNPROTECTED FIRST ON SCREEN 
ERI900	EQU	*
	RTN	A14
	EJECT
	IFT	IN:DL=1
********************************************************
*                                                      *
*        INSERT       INSERT KEY HANDLING              *
*                                                      *
********************************************************
*		REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
*************************************************** 
INSERT	EQU	*
	IM	MODE,A11	SET INSERT MODE
	RTN	A14
	EJECT
******************************************************
*                                                    *
*        DELETE       DELETE CHAR. HANDLING          *
*                                                    *
******************************************************* 
*		REGISTERS
* 
*	A4= REL. CURSOR POS.
*	A5= REL. ATTRIBUTE POS. 
*	A6= ATTRIBUTE CHAR. 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
******************************************************* 
DELETE	EQU	*
	CF	A14,SCRINF	GET SCREEN INFORMATION 
	LDKL	A3,-1 
DEL025	EQU	*
	ADK	A3,LLINE 
	CWR	A3,A4	LAST POS. ON CURRENT LINE? 
	RB(L)	DEL025	NO
	CWK	A5,LBVDU+1	UNFORMATTED SCREEN? 
	RF(E)	DEL200	YES 
	CWR	A4,A5	STANDING ON ATTRIBUTE? 
	RF(E)	DEL700	YES 
	LDR	A7,A6
	ANK	A7,/20	PROTECTED?
	RF(NZ)	DEL700	YES
	ORK	A6,1	SET MDT-BIT 
	LDR	A7,A6
	LDR	A1,A5
	CF	A14,STOVDU SAVE NEW ATTRIBUTE 
	LDR	A8,A6	SAVE OLD 
	LDR	A9,A5	SAVE OLD 
	CF	A14,ATMASF	SEARCH ATTRIBUTE FORWARD 
	LDR	A1,A5
	LDR	A6,A8
	LDR	A5,A9
	CF	A14,STOINF	SAVE SCREEN INFORMATION
	CWR	A3,A1	ATTRIBUTE BEFOR END OF LINE? 
	RF(NG)	DEL200	NO 
	LDR	A3,A1
DEL200	EQU	*
	LDR	A1,A4
DEL300	EQU	*
	ADK	A1,1 
	CF	A14,GETVDU	GET CHAR. IN  VDU BUFFER 
	SUK	A1,1 
	CF	A14,STOVDU	STORE CHAR. IN VDU BUFFER
	ADK	A1,1 
	CWR	A1,A3	ALL SHIFTED? 
	RB(NE)	DEL300	NO 
	LDK	A7,NULL	GET NULL CHAR. 
	CF	A14,STOVDU	STORE NULL CHAR IN VDU BUFFER
	CF	A14,SAVE1 
	LDK	A5,LLINE 
	LDR	A6,A11 
	SUR	A10,A10
	CF	A14,LINE	GET LINE FLAG
	LC	A1,LINFLG,A6
	ORK	A1,1 
	SC	A1,LINFLG,A6
	CF	A14,REST1 
	CF	A14,DISMOD	DISPLAY MODIFIED LINE
	RF	DEL900
DEL700	EQU	*
	CF	A14,ERROR	INDICATE ERROR
DEL900	EQU	*
	RTN	A14
	XIF
	EJECT
********************************************************
*                                                      *
*        RESET       RESET KEY HANDLING                *
*                                                      *
********************************************************
*		REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
****************************************************
RESET	EQU	* 
	CM	MODE,A11	RESET INSERT MODE
	CF	A14,LMP6OF	TURN OFF "INSERT" LAMP 
	CM	KBINH,A11	RESSTORE KEYBOARD 
	CF	A14,LMP4OF	TURN OFF 'ERROR' LAMP
	CF	A14,LMP3OF	TURN OFF 'KEYBOARD INHIBIT' LAMP 
	RTN	A14
	EJECT
*********************************************************** 
*                                                         * 
*        DUP       DUPLICATE KEY                          * 
*                                                         * 
*********************************************************** 
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A11= RESERVED 
*	A13= RESERVED 
* 
************************************************************
DUP	EQU	* 
	LDK	A2,DUPCH	GET DUP CHAR. 
	CF	A14,NUM 
	CF	A14,TAB 
	RTN	A14
	EJECT
*********************************************************** 
*                                                         * 
*        FLDMRK       FIELD MARK KEY                      * 
*                                                         * 
*********************************************************** 
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A11= RESERVED 
*	A13= RESERVED 
* 
*********************************************************** 
FLDMRK	EQU	*
	LDK	A2,FMCH	GET FIELD MARK CHAR. 
	CF	A14,NUM 
	RTN	A14
	EJECT
*************************************************************** 
* 
*   Z E R O : 3    TRIPLE ZERO KEY
*   Z E R O : 2     DOUBLE ZERO KEY 
* 
************************************************* 
*		REGISTERS
* 
*	A2= KEY-CHAR
*	A11= RESERVED 
*	A13= RESERVED 
* 
********************************************************* 

ZERO:3	EQU	*
	LDK	A2,/30	ZERO CHAR.
	CF	A14,NUM	DISPLAY CHARACTER 
ZERO:2	EQU	*
	LDK	A2,/30	ZERO CHAR.
	CF	A14,NUM	DISPLAY CHARACTER 
	LDK	A2,/30 
	CF	A14,NUM	DISPLAY CHARACTER 
	RTN	A14	RETURN 
	EJECT
	IFT	OFLIN=1
********************************************************
*                                                      *
*        OFLINE       OFFLINE KEY HANDLING             *
*                                                      *
********************************************************
*		REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
******************************************************* 
OFLINE	EQU	*
	CF	A14,CLEAR 
	CF	A14,RESET 
	CF	A14,DCOFLN	INDICATE OFFLINE TO DC 
	CF	A14,LMP6ON	TURN ON OFFLINE LAMP 
	IM	OFFFLG,A11	SET OFFLINE FLAG 
	ADKL	A14,4	SKIP ONE STACK LEVEL
	LD	A13,2,A14	RELOAD REGISTERS A12-A13
	LD	A12,4,A14 
	ADKL	A14,4	UPDATE STACK POINTER
	ABL	I:RT1	RETURN TO "OFFLINE" PROGRAM
	XIF
	EJECT
********************************************************* 
*                                                       * 
*       MFCHGE       MAIN FRAME CHANGE                  * 
*                                                       * 
********************************************************* 
*		REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
******************************************************* 
	IFT	NBRLIN=2 
MFCHGE	EQU	*
	CF	A14,CLEAR 
	CF	A14,RESET 
	CF	A14,LMP1OF
	CF	A14,LMP2OF
	CF	A14,LMP3OF
	CF	A14,DISCON	DISCONNECT ON OLD LINE	=2
	LDK	A1,1	.	=2
	XRS	A1,MAIN,A11	IND MAIN FRAME CHANGE	=2 
	RF(NZ)	MFCH10
	CF	A14,LMP1ON
	RF	MFCH90
MFCH10	EQU	*
	CF	A14,LMP2ON
MFCH90	EQU	*
			.	=2 
	CF	A14,CONCT	CONNECT ON NEW LINE	=2
	CF	A14,CHKSTA	CHECK LINE STATUS
	RTN	A14
	XIF
	EJECT
*********************************************************** 
*                                                         * 
*        COPY       LOCAL HARDCOPY                        * 
*                                                         * 
*********************************************************** 
*            REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A13= T:A ADDRESS
* 
************************************************************* 
COPY	EQU	*
	LD	A1,SNAMOD,A11 
	ANKL	A1,HCPMOD	HARDCOPY ALREADY OUTSTANDING? 
	RF(NZ)	COPY80	YES,WAIT A WHILE 
	LD	A1,PRTID,A11
	RF(Z)	COPY80	PRINTER NOT ASSIGNED
	ANK	A1,/FF	CHECK IF PRINTER OK IN TASK TABLE 
	SUK	A1,/30 
	SLL	A1,2 
	LDK	A3,TSKTAB
	LD	A4,+6,A13	GET COMMON AREA 
	ADR	A3,A4
	ADR	A3,A1	PRINTER ASSIGNED FOUND 
	LC	A1,+3,A3
	ANK	A1,/FF	PRINTER OK? 
	RF(Z)	COPY10	YES 
	RF	COPY80
COPY10	EQU	*
	LDK	A1,/38	INDICATE HARDCOPY IN WCC
	ST	A1,WCC,A11
	LDKL	A3,BVDU	BUFFER
	ADR	A3,A11	  ADDRESSS
	LD	A8,ECBICW,A11 
	CF	A14,ICSET	SET NO TIMEOUT
	LD	A1,PRTID,A11	HARDCOPY TASK ID 
	LDKL	A2,LBVDU+/20	BUFFER LENGTH
	CF	A14,ICWRT	WRITE INTERTASK 
	IFT	SNA=1
	LDKL	A1,HCPMOD	INDICATE HARDCOPY OUTSTANDING 
	ORS	A1,SNAMOD,A11
	XIF
	IFF	SNA=1
	LDKL	A1,HCPMOD	INDICATE HARDCOPY OUTSTANDING 
	ORS	A1,BSCMOD,A11
	XIF
	RF	COPY90
COPY80	EQU	*
	CF	A14,ERROR 
COPY90	EQU	*
	RTN	A14
	EJECT
*************************************************************** 
*                                                             * 
*        IDENT       PRINTER IDENT. HANDLING
*                                                             * 
*************************************************************** 
*             REGISTERS 
* 
*	A3= POINTER IN TASK TABLE 
*	A11= CREDIT WORK AREA 
*	A13= T:A ADDRESS
* 
************************************************************* 
IDENT	EQU	* 
	LD	A1,PRTID,A11	GET CURRENT TASKID 
	LD	A4,+6,A13	COMMON BLOCK BASE 
	ANK	A1,X'FF'	GET OFFSET
	SUK	A1,/30 
	SLL	A1,2 
	LDKL	A3,TSKTAB 
	ADR	A3,A4
	ADR	A3,A1
IDEN30	EQU	*
	LCR	A5,A3	GET ID 
	SLL	A5,8 
	LC	A5,+1,A3
	LC	A4,+3,A3	GET STATUS 
	CF	A14,SAVE1	SAVE REGISTERS
	CF	A14,DISID	DISPLAY TASKID
	LDKL	A1,IDEN40	NEXT KEY ENTRY
	ST	A1,RDMORE,A11 
	RF	IDEN90	NEXT KEY 
IDEN40	EQU	*
	CM	RDMORE,A11
	LDR	A9,A2
	CF	A14,REST1	RESTORE REGISTERS 
	CWK	A9,ENTKEY	SAVE CURRENT TASKID
	RF(E)	IDEN80	YES 
	CWK	A9,IDKEY	GET NEXT TASKID?
	RF(NE)	IDEN90	NO KEEP THE FIRST ONE
IDEN50	EQU	*
	ADK	A3,4	SEARCH FOR NEXT PRINTER 
	LCR	A2,A3
	ANK	A2,/FF 
	LDR	A1,A2
	RB(Z)	IDEN50 
	SLL	A1,8 
	RF(N)	IDEN60 
	CCK	A2,VDUCOD	PRINTER? 
	RB(NE)	IDEN30	YES
	RB	IDEN50
IDEN60	EQU	*
	LDKL	A2,TSKTAB 
	LD	A3,6,A13
	ADR	A3,A2
	SUK	A3,4 
	RB	IDEN50
IDEN80	EQU	*
	LCR	A1,A3	GET PRINTER TO SAVE
	SLL	A1,8 
	LC	A1,+1,A3
	ST	A1,PRTID,A11	NEW HARDCOPY TASKID
IDEN90	EQU	*
	RTN	A14
	EJECT
************************************************************* 
*                                                           * 
*        KEYL       KEYLOCK STATUS                          * 
*                                                           * 
************************************************************* 
*		REGISTERS
* 
*	A2= KEYLOCK VALUE 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
**************************************************************
	IFT	KEYLST=1 
	IFT	KB6272=1 
KEYL	EQU	*
	SUK	A2,LKLKEY	GET NEG KEY LOCK VALUE 
	LD	A3,KEYS,A11	OLD STATUS
	LDK	A4,/10 
KEYL10	EQU	*
	SRL	A4,1 
	ADK	A2,2	1 = OFF,0 = ON
	RB(N)	KEYL10 
	ANR	A3,A4	CHECK OLD KEY POS
	RF(NZ)	KEYL20	WAS ON 
	LDR	A2,A2	WAS OFF
	RF(NZ)	KEYL99	NOW OFF, NO CHANGE 
	RF	KEYL30	NOW ON 
KEYL20	EQU	*	WAS ON 
	LDR	A2,A2
	RF(Z)	KEYL99	NOW ON, NO CHANGE 
KEYL30	EQU	* 	CHANGE
	LD	A3,KEYS,A11 
	XRR	A3,A4	CHANGE STATUS
	ST	A3,KEYS,A11	STORE NEW STATUS
* 
* KEYLOCK STATUS CHANGED
*   A3 = NEW STATUS, RIGHTMOST BIT = RIGHTMOST LOCK, BIT ON = LOCK ON 
*   A4 = KEYLOCK CHANGED, LAYOUT AS A3
*   A2 = 1, IF CHANGED TO OFF ELSE 0
* 
* INSERT USER ROUTINE BELOW THIS LINE 
* 
KEYL99	EQU	*
	RTN	A14
	XIF
	EJECT
**********************************************************
* 
*	TESTM	TEST MODE 
* 
**********************************************************
*        REGISTERS
* 
*	A11= RESERVED 
*	A13= RESERVED 
* 
********************************************************* 
	IFT	TEST=1 
TESTM	EQU	* 
	CF	A14,ERASE 
	CF	A14,GETBUF
	CF	A14,RDSTAT
	CF	A14,DISSTA
	LDR	A8,A12 
	CF	A14,RELBUF
	RTN	A14
	XIF
	EJECT
********************************************************* 
*                                                       * 
*        ENTER       ENTER KEY HANDLING                 * 
*                                                       * 
********************************************************* 
*		REGISTERS
* 
*	A2= AID-CODE
*	A11= RESERVED 
*	A13= RESERVED 
* 
********************************************************* 
ENTER	EQU	* 
	LDK	A2,/27	AID-CODE
	CF	A14,LMP3ON	TURN ON "KEYBOARD INHIBIT" 
	CF	A14,TRPF	AID+MODIFIED FIELDS+TRANSMIT 
	RTN	A14
	EJECT
**************************************************************
*                                                            *
*        CLEAR       CLEAR KEY HANDLING                      *
*                                                            *
**************************************************************
*		REGISTERS
* 
*	A2= AID-CODE
*	A11= RESERVED 
*	A13= RESERVED 
* 
**************************************************************
CLEAR	EQU	* 
	LDK	A2,/5F	POS FOR 'CLEAR' 
	CF	A14,LMP3ON	TURN ON "KEYBOARD INHIBIT" 
	CF	A14,TRPA	UPDATE AID AND TRANSMIT
	CF	A14,ERASE	ERASE ENTIRE SCREEN 
	RTN	A14
	EJECT
*************************************************************** 
*                                                             * 
*        SYSREQ       SYSTEM REQUEST HANDLING                 * 
*                                                             * 
*************************************************************** 
*		REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
****************************************************
	IFT	SNA=1
SYSREQ	EQU	*
	CF	A14,TSTSTA	TEST STATUS
	LDR	A2,A1	GET STATUS 
	ANKL	A2,/101	ACTIVE? 
	RF(Z)	SYS100	YES 
	LDK	A1,LOCMOD	INDICATE LOCAL MODE
	RF	SYS500
SYS100	EQU	*
	LDR	A2,A1	GET STATUS 
	ANKL	A2,/C00	MY JOB MODE?
	RF(NZ)	SYS200	NO 
	CF	A14,CLEAR	CLEAR SCREEN AND DC 
	CF	A14,RESKB	RESET KEYBOARD BUFFER 
	LDK	A1,SYSOP	INDICATE SYSTEM MODE
	RF	SYS500
SYS200	EQU	*
	CWK	A2,/C00	SSCP-LU AND NOT LU-LU? 
	RF(NE)	SYS300	NO 
	LDK	A1,SYSOP	INDICATE SYSTEM MODE
	RF	SYS500
SYS300	EQU	*
	ANKL	A2,/800	SSCP-LU AND LU-LU?
	RF(NZ)	SYS400	YES
	LDK	A1,SYSOP	INDICATE SYSTEM MODE
	RF	SYS500
SYS400	EQU	*
	LDK	A1,MYJOB	INDICATE MY JOB MODE
SYS500	EQU	*
	ORKL	A1,NEWMOD	INDICATE NEW MODE ACTIVATION
	ST	A1,SNAMOD,A11 
	RTN	A14
	XIF
	EJECT
*************************************************************** 
*                                                             * 
*       ATTN       ATTENTION KEY HANDLING                     * 
*                                                             * 
*************************************************************** 
*           REGISTERS 
* 
*	A11= RESERVED 
*	A13= RESERVED 
* 
**********************************************************
	IFT	SNA=1
ATTN	EQU	*
	LDK	A1,/4B	SIGNAL ATTENTION KEY
	CF	A14,SETSTA	SET STATUS 
	RTN	A14
	XIF
	EJECT
**************************************************************
*                                                            *
*        PA       PROGRAM ACCESS KEY HANDLING             * 
*                                                            *
**************************************************************
*		REGISTERS
* 
*	A2= AID-CODE
*	A11= RESERVED 
*	A13= RESERVED 
* 
**************************************************************
PA1	EQU	* 
	LDK	A2,/25	AID-CODE
	RF	PA500 
PA2	EQU	* 
	LDK	A2,/3E	AID-CODE
	RF	PA500 
PA3	EQU	* 
	LDK	A2,/2C	AID-CODE
PA500	EQU	* 
	CF	A14,LMP3ON	TURN ON KEYBOARD INHIBIT 
	CF	A14,TRPA	TRANSMIT AID-CODE
PAALFA	EQU	*
*INSERT ALFASKOP STATEMENTS 
	RTN	A14
	EJECT
******************************************************************* 
*                                                                 * 
*        PAEX       PAEX KEY FOLLOWED BY NUMBER                   * 
*                                                                 * 
******************************************************************* 
*		REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
*************************************************** 
	IFT	PAX=1
PAEX	EQU	*
	LDKL	A1,PAEXA
	ST	A1,RDMORE,A11 
	RTN	A14
PAEXA	EQU	* 
	CM	RDMORE,A11
	SUK	A2,/31	CHECK IF NUM.1-3
	RF(L)	PAERR	ILLEGAL CHAR.
	SUK	A2,/2	CHECK IF NUM.1-3 
	RF(G)	PAEXB	ILLEGAL CHAR.
	RF(NZ)	PAEX10
	CF	A14,PA3	PA3 KEY 
	RF	PARET 
PAEX10	EQU	*
	ADK	A2,1 
	RF(NZ)	PAEX20
	CF	A14,PA2	PA2 KEY 
	RF	PARET 
PAEX20	EQU	*
	CF	A14,PA1	PA1 KEY 
	RF	PARET 
PAEXB	EQU	*		DK3
	SUK	A2,/6		DK3 
	RF(G)	PAERR		DK3 
	ADK	A2,/69		DK3
	CF	A14,PA500		DK3
	RF	PARET		DK3
PAERR	EQU	* 
	CF	A14,ERROR	INDICATE ERROR
PARET	EQU	* 
	RTN	A14
	XIF
	EJECT
******************************************************************
*                                                                *
*        PF       PROGRAM FUNTION KEY HANDLING                   *
*                                                                *
******************************************************************
*		REGISTERS
* 
*	A2= AID-CODE
*	A11= RESERVED 
*	A13= RESERVED 
* 
******************************************************************
PF	EQU	*
	SUK	A2,PFKEY	GET INDEX TO CONVERT
	LC	A2,CONPF,A2	GET AID 
	CF	A14,LMP3ON	TURN ON KEYBOARD INHIBIT 
	CF	A14,TRPF	TRANSMIT AID AND MODIFIED FIELDS 
	RTN	A14
	EJECT
***************************************************************** 
*                                                               * 
*        PFEX       PFEX KEY FOLLOWED BY NUMBER                 * 
*                                                               * 
***************************************************************** 
*		REGISTERS
* 
*	A11= CREDIT WORK AREA 
*	A13= RESERVED 
* 
************************************************* 
	IFT	PFX=1
PFEX	EQU	*
	LDKL	A1,PFEXA
	RF	PFNXT 
PFEXA	EQU	* 
	CM	RDMORE,A11
	SUK	A2,/30	LEGAL CHAR ?
	RF(L)	PFERR	ILLEGAL,GO TO ERR.HANDLING 
	RF(NZ)	PFEX10
	LDKL	A1,PF0A	FIRST NUM 0 
	RF	PFNXT	NEXT NUMBER 
PFEX10	EQU	*
	SUK	A2,1 
	RF(NZ)	PFEX20
	LDKL	A1,PF1A	FIRST NUM 1 
	RF	PFNXT	NEXT NUMBER 
PFEX20	EQU	*
	SUK	A2,1 
	RF(NZ)	PFERR	ILLEGAL NUM 
	LDKL	A1,PF2A	FIRST NUM 2 
	RF	PFNXT	NEXT NUMBER 
PF0A	EQU	*
	CM	RDMORE,A11
	SUK	A2,/31	ILLEGAL NUM?
	RF(N)	PFERR	YES
	SUK	A2,9	ILLEGAL NUM?
	RF(NN)	PFERR	YES 
	ADK	A2,/9+PFKEY	PF1-PF9
	RF	PFHAND
PF1A	EQU	*
	CM	RDMORE,A11
	SUK	A2,/30	ILLEGAL NUM?
	RF(N)	PFERR	YES
	SUK	A2,/A	ILLEGAL NUM? 
	RF(NN)	PFERR	YES 
	ADK	A2,/A+PFKEY+/9	PF10-PF19 
	RF	PFHAND
PF2A	EQU	*
	CM	RDMORE,A11
	SUK	A2,/30	ILLEGAL NUM?
	RF(N)	PFERR	YES
	SUK	A2,5	ILLEGAL NUM?
	RF(NN)	PFERR	YES 
	ADK	A2,/5+PFKEY+/13	PF20-PF24
PFHAND	EQU	*
	CF	A14,PF	PROGRAM FUNCTION KEY HANDLING
	RF	PFRET 
PFNXT	EQU	* 
	ST	A1,RDMORE,A11 
	RF	PFRET 
PFERR	EQU	* 
	CF	A14,ERROR 
PFRET	EQU	* 
	RTN	A14
	XIF
	EJECT

**********************************************************
*                                                        *
*        RETURN       RETURN                             *
*                                                        *
*********************************************************** 
*         REGISTERS 
* 
*	A11= RESERVED 
*	A13= RESERVED 
* 
********************************************************
RETURN	EQU	*
	RTN	A14

	END

Full view