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

⟦667944afc⟧

    Length: 136404 (0x214d4)
    Notes: pts_type(SC)
    Names: »W:INIT.SC«

Derivation

└─⟦f45ea3bc3⟧ Bits:30009713 Philips computer tape "WSM"
    └─⟦this⟧ »WSM:INTO/W:INIT.SC« 

PTS(SC)

 IDENT W:INIT W,REL=2.3,850901,870155940230 




**********************************************************************
**                                                                  **
**  W:INIT            LATEST UPDATING:  1985-09-01 BY: CJ           **
**                                                                  **
**  DESCRIPTION:      WSM INTERPRETER INITIAL MODULE WITH           **
**                    THINGS POSSIBLE FOR THE USER TO ALTER.        **
**                                                                  **
**                    0. NORMAL INTERPRETER OR MINI                 **
**                    .  INTERPRETER FOR FILEHANDLING ONLY.         **
**                    1. SIZES OF:                                  **
**                    .  - WSM WORK ITEMS                           **
**                    .  - DYNAMIC FIELDS DATA AREA                 **
**                    .  - SECTION SEQUENCE TABLE                   **
**                    .  - PARAMETER BLOCK BUFFER                   **
**                    .  - INPUT (KEY BOARD) BUFFER                 **
**                    .  - OUTPUT (DISPLAY/PRINTER) BUFFER          **
**                    .  - WSM BASIC WORK AREA                      **
**                    2. DEVICE PARAMETERS:                         **
**                    .  - FILE CODES                               **
**                    .  - CURSOR MODE                              **
**                    .  - FILLER ECHO CHARACTER                    **
**                    .  - ONE OR TWO MESSAGE LINES                 **
**                    3. KEY CODES & KEY TABLES.                    **
**                    4. SYSTEM MESSAGES.                           **
**                    5. SIZE OF WSM MEMORY BUFFER POOL.            **
**                    6. WSM FILE HANDLER.                          **
**                    7. INCLUDED WSM INSTRUCTIONS.                 **
**                    8. INCLUDED WSM VALIDATION STATEMENTS         **
**                    .  AND OPERATORS.                             **
**                    .  EXTERNAL FUNCTION CALLS.                   **
**                    9. USER DEFINED SUBROUTINES                   **
**                    - CALLED FROM THE APPLICATION                 **
**                    - CALLED FROM WSM TO MODIFY PBLK BUFFER       **
**                                                                  **
**                                                                  **
**                                                                  **
	EJECT
**                                                                  **
**                                                                  **
**                                                                  **
**                    10. OPTION TO EXCLUDE DECIMAL POINT OR COMMA  **
**                    .  IN NUMERIC DATA RETURNED TO APPLICATION.   **
**                    11. BASIC DEBUGGER FOR WSM VALIDATION.        **
**                                                                  **
**                    NOTE: VALUES MUST BE IN ACCORDANCE WITH       **
**                    .     SYSGEN (FILE CODES, BUFFER SIZES).      **
**********************************************************************
	EJECT


** HIST:


**
**  1985-09-01 /CJ REL 2.3 -> ACTION-CENTRE 
**  1985-03-01 /CJ IRL OF REL 2.2 FOR TOSS 13.2 
**  1984-11-13 /TS IRL OF REL 2.2 FOR TOSS 13.1 
**  1984-10-02 /TS EXTEND IC ECB WITH CW2. REQUIRED BYE TOSS-DGH. 
**  1984-03-19 /GB  ADJUST FOR HANDLING OF THE '/5C' CHARACTER
**  1984-02-07 /ME  INITIALIZE SCREEN BACKGROUND TO BLACK FOR ALL 
**                  TYPE OF VDU:S EXCEPT 6391 (VD82). 
**  1983-09-25 /ME  DELAY IF WORK STATION IS NOT OPERABLE.
**  1983-05-04 /TS  EQU:S UPDATED 
**  1983-04-27 /TS  SET AUTO SWITCH ACTIVE AS DEFAULT 
**  1983-04-11 /TS  INCLUDE BASIC DEBUGGER AND ADJUST USERKEYS. 
**  1983-03-28 /TS  BASIC READ ON SYSTEM LINE.
**                  AND MSG LINE EQU CHANGED TO DATA. 
**  1983-03-02 /GB   ADJUST W:INIT TO WSMGEN REL 2
**  1983-01-20 /TS   SET STANDARD KEYCHECK BITMAP 
**  1983-01-18 /TS   CALL USER ASS ROUTINE
**  1982-11-26 /TS   DECIMAL POINT OPTION & DATA TABLE W:UFTB.. 
**  1982-11-26 /TS   .. & INITIATE W:KTB1.
**  1982-11-12 /ME   BASIC DEBUGGER OPTION ADDED. 
**  1982-10-11 /ME   EXTENDED NO OF POOL UNITS. 
**  1982-10-06 /ME   ABSENCE OF WSM WORK ITEMS HANDLED. 
**  1982-09-10 /TS   FUNCTION CODE FOR GET FIELD PARAMETERS...
**  1982-09-10 /TS   ..ADDED TO WSMTAB. 
**  1982-06-15 /GM   ORDER OF PARAMETERS CHANGED. 
**  1982-06-14 /TS   TWO MESSAGE LINES. 
**  1982-04-22 /ME   TUP & TDOWN IMPLEMENTED. 
**  1982-03-30 /ME   POSSIBILITY TO CALL USER-
**             /     DEFINED SUBROUTINES IMPLEMENTED. 
**  1982-03-16 /ME   WSM BASIC DIVISION ADDED.
**  1982-03-01 /ME   WSM BASIC MULTIPLICATION ADDED.
**  1981-12-21 /GM   VD82/83 ADAPTIONS. 
**  1981-12-04 /ME   FUNC & VAL.STMT & VAL. OP TAB:S INC. 
**  1981-10-19 /GM   VALIDATION ERROR ADDED 
**  1981-10-15 /GM   READ SCREEN SIZE LKM IMPLEMENTED 
**  1981-09-18 /ME   FILE HANDLER TASK IMPLEMENTED
**  1981-09-08 /ME   SCREEN EQUATES MOVED FROM W:EQU
**  1981-08-04 /ME   SEPARATION OF I/O-BUFFER 
**  1981-08-04 /ME   BUFFER SIZES MOVED FROM W:EQU
**  1981-07-10 /ME   SOME KEYS ADDED... 
**  1981-06-30 /ME   CHANGED SEQUENCE IN EXTERNAL EQUATES 
**  1981-06-26 /ME   W:KMP INCLUDED IN W:INIT 
**  1981-06-18 /GM   WSM POOL MOVED TO W:KMP. 
**  1981-05-27 /ME   CHANGED LAYOUT OF WWI-AREA 
**  1981-05-25 /ME   CREATION OF W:INIT 
**  23 MAR 81 /GM    CREATION OF W:KMP
	EJECT

	ENTRY	W:INIT 
	ENTRY	S:GTAB	DESCRIPTOR USED BY SYSLOD 
	ENTRY	W:ICFC	INTERTASK COMM. FILE CODES
	ENTRY	W:DYFC	DISPLAY FILE CODES
	ENTRY	W:CUMO	DISPLAY CURSOR MODE 
	ENTRY	W:BZFC	BUZZER FILE CODE
	ENTRY	W:ECHO 
	ENTRY	W:KTB1 
	ENTRY	W:KT1V 
	ENTRY	W:KTB2 
	ENTRY	W:KTB3 
	ENTRY	W:KTB4 
	ENTRY	W:KTB5 
	ENTRY	W:KTB6 
	ENTRY	W:SM01 
	ENTRY	W:SM02 
	ENTRY	W:SM03 
	ENTRY	W:SM04 
	ENTRY	W:SM05 
	ENTRY	W:SM5C 
	ENTRY	W:SM5S 
	ENTRY	W:SM5F 
	ENTRY	S:POOL	
	ENTRY	S:POLA	
	ENTRY	S:FILT	
	ENTRY	S:POLF	
	ENTRY	S:FORD 
	ENTRY	WSMTAB	WSM FUNCTIONS 
	ENTRY	W:VALA	VALIDATION LANGUAGE 
	ENTRY	W:STMT	VALIDATION LANGUAGE STATEMENTS
	ENTRY	W:OPER	VALIDATION LANGUAGE OPERATORS 
	ENTRY	W:FHCA	-> TO WSM FILE HANDLER CODE 
	ENTRY	W:DSPA	-> TO DISPLAY WRITING/CLEARING ROUTINE
	ENTRY	W:USRU	USERDEFINED ASS. ROUTINE
	ENTRY	W:PBUF	          " 
	ENTRY	W:BUGG	BASIC DEBUGGER
	ENTRY	W:NUMP	PACKOPTION FOR NUM DATA 
	ENTRY	W:UFTB	TABLE FOR EXTERNAL FUNCTION CALLS 
	EJECT

**********************************************************************
**                    EXTERNAL TO:                                  **
**                    WSM INTERPRETER MAIN LOOP.                    **
**********************************************************************

	EXTRN	W:STRT 

**********************************************************************
**                    EXTERNAL TO:                                  **
**                    FILE HANDLER TASK.                            **
**********************************************************************

	EXTRN	WD:FIL	FILE-HANDLER TASK 

**********************************************************************
**                    EXTERNALS TO:                                 **
**                    WSM FUNCTIONS.                                **
**********************************************************************

	EXTRN	W:OPEN	WOPEN 
	EXTRN	W:ATCH	WATTCH
	EXTRN	W:RCIV	WRCIVE
	EXTRN	W:MSG	WMSG 
	EXTRN	W:SEND	WSEND 
	EXTRN	W:PRNT	WPRINT
	EXTRN	W:CLOSE	WCLOSE 
	EXTRN	W:SAVE	WSAVE 
	EXTRN	W:DLET	WDLETE
	EXTRN	W:FATR	WFATTR
	EXTRN	W:CODE	WCODE 
	EXTRN	W:FID	WFID 
	EXTRN	W:GTPM	GET FIELD PARAMETERS
	EXTRN	W:ENDR 
	EJECT
**********************************************************************
**                    EXTERNALS TO:                                 **
**                    WSM VALIDATION LANGUAGE - STATEMENTS.         **
**********************************************************************

	EXTRN	W:VEVA	VALIDATION EVALUATION MAIN ROUTINE

	EXTRN	W:V000	ALPHANUM ASSIGNMENT 
	EXTRN	W:V002	NUM ASSIGNMENT
	EXTRN	W:V004	GO TO/GOTO
	EXTRN	W:V006	IF...THEN LIN NO
	EXTRN	W:V008	IF...THEN STATEMENT 
	EXTRN	W:V00A	ON...GO TO/GOTO LINE NO 
	EXTRN	W:V00C	CALL
	EXTRN	W:V00E	SECT
	EXTRN	W:V010	ATTR
	EXTRN	W:V012	STOP
	EXTRN	W:V014	EXIT
	EXTRN	W:V016	ERR 
	EXTRN	W:V018	WARN
	EXTRN	W:V01A	REM 
	EXTRN	W:V01C	EMPTY STATEMENTS

**********************************************************************
**                    EXTERNALS TO:                                 **
**                    WSM VALIDATION LANGUAGE - OPERATORS.          **
**********************************************************************

	EXTRN	W:CMP	RELATIONAL OPERATORS 

	EXTRN	W:OP0E	CONCATENATE 
	EXTRN	W:OP0F	SUBSTRING 
	EXTRN	W:OP10	STR 
	EXTRN	W:OP11	MAKE POSITIVE 
	EXTRN	W:OP12	NEGATE
	EXTRN	W:OP13	ADD 
	EXTRN	W:OP14	SUBTRACT
	EXTRN	W:OP15	DIVIDE
	EXTRN	W:OP16	MULTIPLY
	EXTRN	W:OP17	ABS 
	EXTRN	W:OP18	INT 
	EXTRN	W:OP19	SGN 
	EXTRN	W:OP1A	TIM 
	EXTRN	W:OP1B	DAY 
	EXTRN	W:OP1C	SYS 
	EXTRN	W:OP1D	LEN 
	EXTRN	W:OP1E	NUM 
	EXTRN	W:OP1F	DAT 
	EXTRN	W:OP20	CDV 
	EXTRN	W:OP21	POS 
	EXTRN	W:EXP5	DUMMY ENTRY IN W:EXPR 
	EJECT
**********************************************************************
**                                                                  **
**                    EXTERNAL TO WSM BASIC LANGUAGE DEBUGGER       **
**                                                                  **
**********************************************************************

	EXTRN	W:BBUG 

**********************************************************************
**                    EXTERNAL:                                     **
**                    WRITE/ERASE DISPLAY ROUTINE                   **
**********************************************************************

	EXTRN	W:WDSP 



**********************************************************************
**                    EXTERNAL:                                     **
**                    ROUTINES TO PACK NUMERIC DATA                 **
**                    WITH AND WITHOUT DECIMAL POINT OR COMMA.      **
**********************************************************************

	EXTRN	W:NPA2 
	EXTRN	W:NPA3 
	EJECT

**********************************************************************
**                    EXTERNAL FUNCTION CALLS:                      **
**                    ASSEMBLERROUTINES CALLED FROM THE VALIDATION  **
**                    AND LINKED WITH WSM.                          **
**********************************************************************

	EXTRN	UF00 
	EXTRN	UF01 
	EXTRN	UF02 
	EXTRN	UF03 
	EXTRN	UF04 
	EXTRN	UF05 
	EXTRN	UF06 
	EXTRN	UF07 
	EXTRN	UF08 
	EXTRN	UF09 
	EXTRN	UF10 
	EXTRN	UF11 
	EXTRN	UF12 
	EXTRN	UF13 
	EXTRN	UF14 
	EXTRN	UF15 
	EXTRN	UF16 
	EXTRN	UF17 
	EXTRN	UF18 
	EXTRN	UF19 
	EXTRN	UF20 
	EXTRN	UF21 
	EXTRN	UF22 
	EXTRN	UF23 
	EXTRN	UF24 
	EXTRN	UF25 
	EXTRN	UF26 
	EXTRN	UF27 
	EXTRN	UF28 
	EXTRN	UF29 
	EXTRN	UF30 
	EXTRN	UF31 
	EXTRN	UF32 
	EXTRN	UF33 
	EXTRN	UF34 
	EXTRN	UF35 
	EXTRN	UF36 
	EXTRN	UF37 
	EXTRN	UF38 
	EXTRN	UF39 
	EXTRN	UF40 
	EXTRN	UF41 
	EXTRN	UF42 
	EXTRN	UF43 
	EXTRN	UF44 
	EXTRN	UF45 
	EXTRN	UF46 
	EXTRN	UF47 
	EXTRN	UF48 
	EXTRN	UF49 
	EXTRN	UF50 
	EXTRN	UF51 
	EXTRN	UF52 
	EXTRN	UF53 
	EXTRN	UF54 
	EXTRN	UF55 
	EXTRN	UF56 
	EXTRN	UF57 
	EXTRN	UF58 
	EXTRN	UF59 
	EXTRN	UF60 
	EXTRN	UF61 
	EXTRN	UF62 
	EXTRN	UF63 
	EXTRN	UF64 
	EXTRN	UF65 
	EXTRN	UF66 
	EXTRN	UF67 
	EXTRN	UF68 
	EXTRN	UF69 
	EXTRN	UF70 
	EXTRN	UF71 
	EXTRN	UF72 
	EXTRN	UF73 
	EXTRN	UF74 
	EXTRN	UF75 
	EXTRN	UF76 
	EXTRN	UF77 
	EXTRN	UF78 
	EXTRN	UF79 
	EXTRN	UF80 
	EXTRN	UF81 
	EXTRN	UF82 
	EXTRN	UF83 
	EXTRN	UF84 
	EXTRN	UF85 
	EXTRN	UF86 
	EXTRN	UF87 
	EXTRN	UF88 
	EXTRN	UF89 
	EXTRN	UF90 
	EXTRN	UF91 
	EXTRN	UF92 
	EXTRN	UF93 
	EXTRN	UF94 
	EXTRN	UF95 
	EXTRN	UF96 
	EXTRN	UF97 
	EXTRN	UF98 
	EXTRN	UF99 
	EJECT

**********************************************************************
**                    EXTERNAL:                                     **
**                    USERDEFINED ASSEMBLER ROUTINE LINKED WITH     **
**                    WSM.                                          **
**                    REPLACE EXTERNALS BELOW WITH NAME OF THE      **
**                    ASSEMBLER ROUTINE                             **
**********************************************************************

	EXTRN	Q:S902 
	EXTRN	Q:S904 
	EJECT

	NLIST		GLOBAL EQUATES (SEE W:EQU)
	EJECT




****************************************
** LATEST UPDATING: 1983-05-04  BY: TS *
****************************************
	EJECT
**
**  WSM FUNCTION CODES
**

WOPEN	EQU	/0000 
WATTCH	EQU	/0100
WRCIVE	EQU	/0200
*UNPCK   EQU       -
WMSG	EQU	/0300
WSEND	EQU	/0400 
WPRINT	EQU	/0500
WCLOSE	EQU	/0600
WSAVE	EQU	/0700 
WDLETE	EQU	/0800
WFATTR	EQU	/0900
WCODE	EQU	/0A00 
WFID	EQU	/0B00
 EJECT

**
**  WSM SYSTEM PARAMETERS 
**

TFP	EQU	1	CONDITIONAL ASSEMBLY FOR TFP PACKAGE
CPU	EQU	857 

POLSIZ	EQU	248	SIZE OF POOL UNITS IN THE POOL 
POLDIS	EQU	6	USER DISPLACEMENT IN POOL-UNITS
PADLEN	EQU	12	LENGTS OF POOL-ADM-DATA 
FIDSIZ	EQU	4	SIZE OF FIELD IDENTITY 

** SCRSIZ & EKOCHR MOVED 1981-09-07 TO W:INIT **

**
**  OPTIONAL DEVICES
**

PRTDEV	EQU	12	=12 IF PRINT DEVICE IN SYSTEM, ELSE =0
INPDEV	EQU	0	=12 IF OTHER INPUT DEVICE THAN KEYBOARD ...
			... IN SYSTEM, ELSE =0 

**
**  BUFFER SIZES
**

** MOVED 1981-08-04 TO W:INIT **
	EJECT

**
**  DISPLACEMENTS IN ECB
**

ECB:FC	EQU	0
ECB:BA	EQU	2
ECB:RL	EQU	4
ECB:EL	EQU	6
ECB:RC	EQU	8
ECB:CW	EQU	10 
	EJECT

**
**  ORDERS TO THE POOL & FILE HANDLER 
**

PF:RD	EQU	/01	READ
PF:GET	EQU	/02	GET
PF:SCH	EQU	/04	SEARCH 
PF:WRT	EQU	/05	WRITE
PF:CLO	EQU	/08	CLO
PF:OFR	EQU	/10	LOCK 
PF:RLS	EQU	/20	RELEASE
PF:DLT	EQU	/40	DELETE 
PF:OPN	EQU	/80	OPEN 
NEXT	EQU	/0100	NEXT 
PREV	EQU	/0200	PREVIOUS 
INDEX	EQU	/0400	BY INDEX
ALL	EQU	/0800	ALL ON LRU QUE
NOWAIT	EQU	/1000	USED FOR READ WITH NOWAIT
	EJECT
**
**  DISPLACEMENTS IN THE POOL & FILE HANDLER COM. AREA
**

PF:BF1	EQU	0	ADDRESS TO BUFFER 1
PF:BF2	EQU	PF:BF1+2	ADDRESS TO BUFFER 2 
PF:TYP	EQU	PF:BF2+3	TYPE OF DATA
PF:NAM	EQU	PF:TYP+1	IDENTIFICATION
**
**           THIS PART OF THE COM. AREA IS THE ECB
**
PF:ECB	EQU	PF:NAM+6	START OF THE ECB
PF:FNR	EQU	PF:ECB+1	FILE NUMBER 
PF:IOB	EQU	PF:FNR+1	ADDRESS TO THE I/O-BUFFER 
PF:RLN	EQU	PF:IOB+2	REQUESTED LENGTH
PF:ELN	EQU	PF:RLN+2	EFFECTIVE LENGTH
PF:RET	EQU	PF:ELN+2	RETURN CODE 
PF:CW1	EQU	PF:RET+2	CONTROL WORD 1
PF:CW2	EQU	PF:CW1+2	CONTROL WORD 2
**
**           THIS PART OF THE COM. AREA IS FOR THE FPB
**
PF:FIL	EQU	PF:CW2+2	THE FILE NAME 
PF:VOL	EQU	PF:FIL+8	THE VOLUME NAME 
PF:RN1	EQU	PF:VOL+6	RECNO 1 
PF:RN2	EQU	PF:RN1+2	RECNO 2 
PF:END	EQU	PF:RN2+2 
	EJECT
**
** LAYOUT OF POOL-FREE-SPACE AREA 
**
PP:CON	EQU	0	NO OF FREE UNITS IN THIS AREA
PP:LEN	EQU	PP:CON+2	LENGTH OF THIS AREA 
PP:NAM	EQU	PP:LEN+2	NAME OF THIS AREA 
PP:BIT	EQU	PP:NAM+2	FREE-SPACE INDICATOR BITS 
**
	EJECT
**
** LAYOUT OF FREE-SPACE ON DISC 
**
DS:TYP	EQU	0	TYPE = "FS"
DS:LK1	EQU	DS:TYP+2	LINK FORWARD  1 
DS:LK2	EQU	DS:LK1+2	 -  "  -      2 
DS:NUM	EQU	DS:LK2+2	NUMBER OF RECORDS 
DS:NOF	EQU	DS:NUM+2	NUMBER OF FREE RECORDS
DS:FI1	EQU	DS:NOF+2	FIRST REL.RECNO 
DS:FI2	EQU	DS:FI1+2	 USED AS REC.BASE 
DS:REL	EQU	DS:FI2+2	RELATIV FR.SP.REC.
DS:PTR	EQU	DS:REL+1	FREE-SPACE POINTERS 

DS:RLN	EQU	256	RECORD LENGTH
**
**  POOL-ADMINSTRATION DATA 
**
PA:TYP	EQU	0	TYPE OF DATA IN THE UNIT 
PA:IDE	EQU	PA:TYP+1	NAME OF DATA
PA:FIL	EQU	PA:IDE+6	FILE NUMBER 
PA:NUM	EQU	PA:FIL+1	NUMBER OF USERS 
PA:SEG	EQU	PA:NUM+1	SEGMENT NUMBER
PA:UNI	EQU	PA:SEG+1	POOL-UNIT 
PA:LNK	EQU	PA:UNI+1	LINK TO NEXT
	EJECT
**
**  FILE-TABLE LAYOUT 
**
PT:FIL	EQU	0	FILENAME 
PT:VOL	EQU	PT:FIL+8	VOLUME NAME 
PT:FC	EQU	PT:VOL+6	FILE CODE
PT:CON	EQU	PT:FC+1	COMPULSURY COUNTER 
PT:OC	EQU	PT:CON+1	OPEN/CLOSE BYTE
PT:ACT	EQU	PT:OC+1	ACTIVE COUNTER 
PT:LEN	EQU	18	LENGTH OF ONE ENTRY 
PT:END	EQU	72	LENGT OF FILE-TABLE 

**
**  ORDER-DATA LAYOUT 
**
PO:ORD	EQU	0	ORDER
PO:TYP	EQU	PO:ORD+2	TYPE + NAME 
PO:FIL	EQU	PO:TYP+7	FILE TABLE NO. (0-3)
PO:LNK	EQU	PO:FIL+1	LINK TO NEXT ORDER
PO:LEN	EQU	12	LENGTH OF ONE ORDER 
PO:STA	EQU	4	START OF ORDERS
PO:END	EQU	256	LENGTH OF ORDER-TABLE
PO:RDY	EQU	/8000	ORDER EXECUTED 
PO:DLY	EQU	1	DELAY TIME 
	EJECT

**
**  KEYBOARD ECB AND PARAMETER BLOCK FOR ADVANCED READ
**

KB:CW2	EQU	ECB:CW+2 
KB:PBL	EQU	KB:CW2+2	PARAMETER BLOCK LENGTH
KB:EKO	EQU	KB:PBL+1	ECHO CHARACTER (/00 => ORDINARY ECHO) 
KB:PW	EQU	KB:EKO+1	PARAMETER WORD 
KB:CUR	EQU	KB:PW+2	CURSOR POSITION WORD 
KB:SHB	EQU	KB:CUR+2	SHIFT BUFFER BYTE 
KB:CND	EQU	KB:SHB+1	CURRENT # DECIMALS
KB:PL	EQU	KB:CND+1	PICTURE LENGTH 
KB:CNI	EQU	KB:PL+1	CURRENT # INTEGERS OR CHARACTERS 
KB:IL	EQU	KB:CNI+1	INPUT LENGTH 
KB:POS	EQU	KB:IL+1	POSITION IN FIELD
KB:PNT	EQU	KB:POS+1	DECIMAL POINT STATUS WORD 
KB:MNI	EQU	KB:PNT+2	MAX # INTEGERS
KB:MND	EQU	KB:MNI+1	MAX # DECIMALS
KB:END	EQU	KB:MND+1 
	EJECT

**
**  WS:TCA
**  WSM TASK CONTROL AREA 
**

TC:TID	EQU	0	WSM TASK ID
TC:FC	EQU	TC:TID+2	PREVIOUS FUNCTION CODE 
TC:SCR	EQU	TC:FC+1	BITS FOR WATTCH, WRCIVE ETC.:
			BIT 0: 
			- DURING WRCIVE: 
			.    = 1 IF INPUT BUFFER CHANGED BY DUPLICATION
			.        OR VALIDATION OR IF MINUS KEY USED
			BIT 1: 
			- DURING WRCIVE: 
			.    = 1 IF NEGATIVE INPUT 
			BIT 2: 
			- DURING WRCIVE: 
			.    = 1 IF FIELDLIST FIELD NOT IN SECTION 
			BIT 3: 
			- DURING WRCIVE: 
			.    = 1 IF PB BUFFER IS FULL
			*******
			BIT 4: 
			- DURING WRCIVE: 
			.    = 1 IF VALIDATION AFTER ENTER KEY 
			BIT 5: 
			- DURING WATTCH: 
			.    = 1 IF WANTED SECTION IS BEFORE ... 
			.        ATTACHED SECTION IN SST 
			BIT 6 = 1 IF WATTCH WITHOUT DISPLAY
			BIT 7 =1 IF WANTED PAGE IS ON SCREEN 
	EJECT

TC:MSC	EQU	TC:FC+2	MISCELLANEOUS: 
			BIT 0-1: 
			-   NOT USED 
			*******
			BIT  2:
			-    =1 IF LOOP DETECTOR RUNNING 
			BIT  3:
			-    =1 IF BASIC DEBUGGER ON 
			BIT  4:
			-    =1 IF WMSG ON HELP LINE 
			BIT  5:
			-    =1 IF WMSG ON ERROR LINE
			BIT  6:
			-   =1 IF ERROR MSG ON ERROR LINE
			BIT  7:
			-   =1 IF EXT.PROMPT OR GUID. MSG
			.       OR WMSG ON HLP LINE OR SEC,FUN 
			BIT  8:
			-   = 1 IF ALL KEY USED
			BIT  9:
			-   = 1 IF CORRECTION AFTER ERROR HANDLING 
			BIT 10:
			-   = 1 IF LKM BLOCKING ON CURRENT SUBSCREEN 
			.     ( <=> CURSOR OFF ) 
			BIT 11:
			-   = 1 IF BLACK BACKGROUND
			*******
			BIT 12:
			-   = 1 IF VD82/83 (8 SUBSCREENS,
			.                   1 SYSTEM LINE) 
			BIT 13:
			-   NOT USED 
			BIT 14:
			-   = 1 IF PD85 ETC (ONE-LINE DISPLAYS)
			BIT 15:
			-   = 1 IF AUTO SKIP/DUP FLAG IS ON

	EJECT
** INFORMATION ABOUT TWO MESSAGELINES: ** 

TC:MSG	EQU	TC:MSC+2	SEE W:MESS AND W:MESG IN W:INIT 

** SUBSCREEN INFORMATION: **

TC:SZE	EQU	TC:MSG+2	SIZE OF SUBSCREEN 1 
TC:SIZ	EQU	TC:SZE+2	CURRENT SCREEN/SUBSCREEN SIZE 
TC:SUS	EQU	TC:SIZ+2	CURRENT SUBSCREEN NO. 
TC:LIN	EQU	TC:SUS+2	1:ST FREE LINE ON CURR. SCREEN/SUBSCREEN
			... FOLLOWED BY 1:ST FREE LINE OF
			... 9 SUBSCREENS 
TC:FRD	EQU	TC:LIN+11	DISPL. TO BE ADDED TO 1:ST FREE LINE 
			... WHEN HAVING SECTIONS ON MSG LINE ON OTHER
			... DISPLAYS THAN VD82 (RIGHT BYTE REQ.) 

** CURRENT FORMAT DEF INFORMATION: ** 

TC:FDC	EQU	TC:FRD+1	ADDR. TO FORMAT DEFINITION CODE 

** SST INFORMATION: **

TC:SST	EQU	TC:FDC+2	0. ADDR. TO 1:ST BYTE AFTER SST 
			2. "     "  CURRENT SECTION IN SST 
			4. "     "  LAST SECTION IN SST
			6. LARGEST SECTION SEQUENCE NUMBER IN USE
			8. SST ADDR. OF SECTION ON MSG LINE

** CURRENT SECTION INFORMATION: **

TC:FSC	EQU	TC:SST+10	ADDR. TO FORMAT SECTION CODE 
TC:CFC	EQU	TC:FSC+2	"     "  CURRENT DYN. FIELD CODE
			"     "  "       "    "     "    (REL) 
TC:DFD	EQU	TC:CFC+4	"     "  1:ST BYTE IN DFD 
TC:CFD	EQU	TC:DFD+2	ADDR. TO CURRENT DYN. FIELD DATA
TC:CFX	EQU	TC:CFD+2	INDEX OF CURRENT DYN. FIELD 
TC:KY1	EQU	TC:CFX+2	ADDRESS TO KEYTABLE 1.
TC:KTV	EQU	TC:KY1+2	ADDRESS TO BITMASK FOR KEYCHECKS

	EJECT
** WWI:S, ECB:S, BUFFER:S AND STACK: ** 

TC:CN1	EQU	TC:KTV+2	LOOP COUNTER SECTION LEVEL
TC:CN2	EQU	TC:CN1+2	LOOP COUNTER FIELD LEVEL
TC:IIE	EQU	TC:CN2+2	ADDR TO 1ST BYTE AFTER INPUT BUFFER 
TC:WWI	EQU	TC:IIE+2	ADDR. TO WWI:S, EQUAL TO ...
TC:IOE	EQU	TC:WWI	ADDR TO 1ST BYTE AFTER OUTPUT BUFFER
TC:STK	EQU	TC:IOE+2	ADDR TO THE STACK, WS:STK 
TC:PFB	EQU	TC:STK+2	POOL & FILE HANDLER COM. AREA ... 
TC:FIL	EQU	TC:PFB+PF:ECB	... INCLUDING DISC FILE PARAMETERS 
TC:IC	EQU	TC:PFB+PF:END	INTERTASK COM. ECB
TC:KB	EQU	TC:IC+14	KEYBOARD  ECB
TC:EKO	EQU	TC:KB+KB:END	ECHO DEVICE ECB 
TC:PRT	EQU	TC:EKO+PRTDEV	PRINT DEVICE ECB 
TC:INP	EQU	TC:PRT+INPDEV	OTHER INPUT DEVICE ECB 
	EJECT

**
**  WSM PARAMETER BLOCK 
**

PB:FC	EQU	TC:INP+12	WSM FUNCTION CODE 
PB:FOR	EQU	PB:FC+2	CURRENT FORMAT DEFINITION NAME 
PB:SEC	EQU	PB:FOR+6	CURRENT FORMAT SECTION NAME 
PB:SSN	EQU	PB:SEC+6	CURRENT SECTION SEQUENCE NUMBER 
PB:SUS	EQU	PB:SSN+2	CURRENT SUBSCREEN 
PB:INP	EQU	PB:SUS+1	INPUT ALLOWED, =0 IF YES, =1 IF NO
PB:FID	EQU	PB:INP+1	CURRENT FIELD IDENTITY
PB:FNO	EQU	PB:FID+4	FIELD NUMBER
PB:RC	EQU	PB:FNO+2	RETURN CODE
PB:KID	EQU	PB:RC+2	KEY ID 1 & 2 
PB:XIT	EQU	PB:KID+4	EXIT ROUTINE NUMBER 
PB:EBL	EQU	PB:XIT+2	EFFECTIVE LENGTH OF BUFFER CONTENTS 
PB:MBL	EQU	PB:EBL+4	MAXIMUM LENGTH OF BUFFER CONTENTS 
PB:BLO	EQU	PB:MBL+2	TYPE OF BUFFER LAYOUT 
PB:PRFC	EQU	PB:BLO+1	PRINTER DEVICE FILE CODE 
PB:BUF	EQU	PB:PRFC+1	PARAMETER BLOCK BUFFER 
	EJECT

**
**  DISPLACEMENTS IN SECTION SEQUENCE TABLE ELEMENTS
**

*                 0                     SECTION DFD ADDRESS 
SS:DFD	EQU	2	SECTION DFD SIZE 
SS:SCR	EQU	SS:DFD+2	SECTION ON SCREEN INDICATION
SS:TYP	EQU	SS:SCR+1	SECTION TYPE
SS:SS	EQU	SS:SCR+2	SUBSCREEN & SECTION SEQUENCE NO. 
SS:LIN	EQU	SS:SS+2	(SUB-)SCREEN START LINE & NO. OF LINES 
			1:ST & LAST+1 LINE SHOWN 
SS:CFX	EQU	SS:LIN+4	CURRENT DYNAMIC FIELD INDEX 
SS:SEC	EQU	SS:CFX+2	SECTION NAME
SS:LEN	EQU	SS:SEC+6	LENGTH OF SST ELEMENT 


**
** DISPLACEMENTS IN WSM WORK ITEMS OVERHEAD 
**

WWI:NF	EQU	0	NO OF FAST CHOISE SECTION WWI:S
WWI:LF	EQU	WWI:NF+1	LENGTH OF ONE FAST CHOISE SECT WWI
WWI:NN	EQU	WWI:LF+1	NO OF NUMERIC WWI:S 
WWI:LN	EQU	WWI:NN+1	LENGTH OF ONE NUMERIC WWI 
WWI:AN	EQU	WWI:LN+1	ADDRESS TO FIRST NUMERIC WWI
WWI:NA	EQU	WWI:AN+2	NO OF ALPHANUMERIC WWI:S
WWI:LA	EQU	WWI:NA+1	LENGTH OF ONE ALPHANUMERIC WWI
WWI:AA	EQU	WWI:LA+1	ADDRESS TO FIRST ALPHANUMERIC WWI 
WWI:LO	EQU	WWI:AA+2	LENGTH OF WWI OVERHEAD
	EJECT

**
**  FORMAT DEFINITION CODE
**

FD:FOR	EQU	0	FORMAT DEFINITION NAME 
FD:ISN	EQU	FD:FOR+6	INTIAL SECTION NAME 
FD:DSK	EQU	FD:ISN+6	# DISC SECTORS (BITS 0-7) 
FD:FCS	EQU	FD:DSK+4	LIST OF FAST CHOICE SECTION NAMES 
	EJECT

**
**  FORMAT SECTION CODE 
**

**  SECTION TYPES 

RWS	EQU	1	REMOVABLE WITH SCROLLING
RWP	EQU	2	REMOVABLE WITH PAGING 
FIX	EQU	4	FIXED 
FOB	EQU	RWS	FIXED ON BOTTOM LINES OF SCREEN 
FONP	EQU	RWP	FIXED ON TOP OF NEW PAGE 
TEMP	EQU	8	TEMPORARY
SECMSK	EQU	/F	MASK ISOLATING TYPE BITS

**  SECTION OVERHEAD

SO:SEC	EQU	0	SECTION NAME 
SO:PSW	EQU	SO:SEC+6	( PASSWORD )
SO:DSK	EQU	SO:PSW+6	NO. OF DISC SECTORS 
SO:ONO	EQU	SO:PSW+7	OBJECT CODE VERSION 
SO:VNO	EQU	SO:DSK+4	SECTION VERSION NO. & TYPE
SO:SIZ	EQU	SO:VNO+2	DEFINED SECTION SIZE, ROWS & COLUMNS, AND ... 
			... EFFECTIVE SECTION SIZE 
SO:DFD	EQU	SO:SIZ+4	DFD SIZE
SO:SFC	EQU	SO:DFD+2	REL. ADDR TO STATIC FIELDS
SO:PP	EQU	SO:SFC+2	"    "    "  PICTURE POOL
SO:DFC	EQU	SO:PP+2	"    "    "  DYNAMIC FIELDS
SO:NDF	EQU	SO:DFC+2	DEC POINT OR COMMA & NO. OF DYN. FIELDS 
SO:BGA	EQU	SO:NDF+4	BACKGROUND DEFAULT ATTRIBUTES 
SO:SFA	EQU	SO:BGA+1	STATIC FIELD DEFAULT ATTRIBUTES 
SO:DFA	EQU	SO:SFA+1	DYN. FIELD DEFAULT ATTRIBUTES 
SO:MES	EQU	SO:DFA+4	DEFAULT GUIDING MESSAGE 
	EJECT

**  STATIC FIELDS 

SF:DEC	EQU	/1F	LARGEST DECORATION BYTE
SF:SPA	EQU	/80	COMPRESSED SPACES
SF:DF	EQU	/FB	DYNAMIC FIELDS
SF:HL	EQU	/FC	HEADER LINES
SF:EOL	EQU	/FD	END OF LINE
SF:EOS	EQU	/FE	END OF SECTION 
SF:EOP	EQU	/FF	END OF POOL UNIT 
	EJECT

**  DYNAMIC FIELDS

			DYNAMIC FIELD TABLE DISPLACEMENTS

DF:FID	EQU	0	FIELD IDENTITY 
DF:COD	EQU	DF:FID+4	FIELD CODE ADDR: POOL & REL POOL ADDR 
DF:DAT	EQU	DF:COD+2	FIELD DATA DISPL. EXCL. TEMP. DECORATIONS ETC.
DF:TLN	EQU	DF:DAT+2	FIELD TABLE ELEMENT LENGTH

			DYNAMIC FIELD CODE DISPLACEMENTS 

DF:ALN	EQU	0	ATTRIBUTE AREA LENGTH INCL. OPTIONAL PARTS 
DF:SCR	EQU	DF:ALN+2	REL. POSITION IN SECTION
DF:FLN	EQU	DF:SCR+2	MAX. EFFECTIVE & EDITED LENGTH
DF:TYP	EQU	DF:FLN+2	NUM- & ALPHANUM DEPENDANT INFORMATION 
DF:INP	EQU	DF:TYP+2	BITS CONCERNING INPUT HANDLING
DF:DEC	EQU	DF:INP+2	DECORATION BITS 
DF:OPT	EQU	DF:DEC+2	START OF OPTIONAL PART

			OPTIONS: 

DF:VAL	EQU	1	VALIDATION 
DF:ACC	EQU	2	ACCUMULATION 
DF:DUP	EQU	3	DUPLICATION ORIGIN 
DF:AM	EQU	4	APPLICATION MESSAGE 
DF:IFC	EQU	5	FILE CODE, OTHER INPUT DEVICE
DF:DEF	EQU	6	DEFAULT VALUE
DF:OUT	EQU	7	OUTPUT PRINT POSITION
DF:GM	EQU	15	GUIDING MESSAGE
	EJECT

**********************************************************************
**                WSM VALIDATION STATEMENT TYPES                    **
**********************************************************************

VS:ALE	EQU	/00	ALPHANUM LET EXCL. LET 
VS:ALI	EQU	/01	ALPHANUM LET INCL. LET 
VS:NLE	EQU	/02	NUMERIC  LET EXCL. LET 
VS:NLI	EQU	/03	NUMERIC  LET INCL. LET 
VS:GO	EQU	/04	GO TO 
VS:GOT	EQU	/05	GOTO 
VS:IFL	EQU	/06	IF <REL. EXPR.> THEN LINENO
VS:IFS	EQU	/08	IF <REL. EXPR.> THEN STATEMENT 
VS:OGO	EQU	/0A	ON <EXPR.> GO TO LINENUMBERS 
VS:OGT	EQU	/0B	ON <EXPR.> GOTO  LINENUMBERS 
VS:CAL	EQU	/0C	CALL 
VS:SEC	EQU	/0E	SECT 
VS:ATT	EQU	/10	ATTR 
VS:STO	EQU	/12	STOP 
VS:EXI	EQU	/14	EXIT 
VS:ERR	EQU	/16	ERR
VS:WAR	EQU	/18	WARN 
VS:REM	EQU	/1A	REM
VS:EMP	EQU	/0C	EMPTY
	EJECT

**********************************************************************
**                VALIDATION OPERATOR EQUATES                       **
**********************************************************************

VO:EEX	EQU	1	END OF EXPRESSION
VO:AEQ	EQU	2	= , ALPHANUMERIC COMPARISON
VO:AGE	EQU	3	>=, "
VO:AGT	EQU	4	> , "
VO:ALE	EQU	5	<=, "
VO:ALT	EQU	6	< , "
VO:ANE	EQU	7	<>, "
VO:NEQ	EQU	8	= , NUMERIC COMPARISON 
VO:NGE	EQU	9	>=, "
VO:NGT	EQU	/0A	> , "
VO:NLE	EQU	/0B	<=, "
VO:NLT	EQU	/0C	< , "
VO:NNE	EQU	/0D	<>, "
VO:CON	EQU	/0E	CONCATENATE
VO:SUS	EQU	/0F	SUBSTRING
VO:STR	EQU	/10	STR FUNCTION 
VO:UPL	EQU	/11	UNARY PLUS 
VO:UMI	EQU	/12	"     MINUS <=> NEGATE 
VO:ADD	EQU	/13	ADD
VO:SUB	EQU	/14	SUBTRACT 
VO:DIV	EQU	/15	DIVIDE 
VO:MUL	EQU	/16	MULTIPLY 
VO:ABS	EQU	/17	ABS FUNCTION 
VO:INT	EQU	/18	INT "
VO:SGN	EQU	/19	SGN "
VO:TIM	EQU	/1A	TIM "
VO:DAY	EQU	/1B	DAY "
VO:SYS	EQU	/1C	SYS "
VO:LEN	EQU	/1D	LEN "
VO:NUM	EQU	/1E	NUM "
VO:DAT	EQU	/1F	DAT "
VO:CDV	EQU	/20	CDV "
VO:POS	EQU	/21	POS "
VO:PAR	EQU	/22	PARANTHESIS
	EJECT

**********************************************************************
**                EQUATES TO THE DIFFERENT KEYTABLES                **
**********************************************************************

**
**  KEYTABLE 1 & 2
**

K1:CUP	EQU	1
K1:CDW	EQU	K1:CUP+1 
K1:TFD	EQU	K1:CDW+1 
K1:TBD	EQU	K1:TFD+1 
K1:PRT	EQU	K1:TBD+1 
K1:LIN	EQU	K1:PRT+1 
K1:HLP	EQU	K1:LIN+1 
K1:ARI	EQU	K1:HLP+1 
K1:ASD	EQU	K1:ARI+1 
K1:CLR	EQU	K1:ASD+1 
K1:SEC	EQU	K1:CLR+1 
K1:CR	EQU	K1:SEC+1
K1:DUP	EQU	K1:CR+1
K1:ENT	EQU	K1:DUP+1 
K1:FUN	EQU	K1:ENT+1 
K1:CAN	EQU	K1:FUN+1 
K1:USR	EQU	K1:CAN+1	K1:USR & ABOVE ARE USER DEFINED KEYS
	EJECT
**
** KEYTABLE 3 
**

K3:INS	EQU	1
K3:DEL	EQU	K3:INS+1 
K3:TFD	EQU	K3:DEL+1 
K3:TBD	EQU	K3:TFD+1 
K3:PRT	EQU	K3:TBD+1 
K3:CLR	EQU	K3:PRT+1 
K3:CAN	EQU	K3:CLR+1 
K3:USR	EQU	K3:CAN+1 

**
** KEYTABLE 4 
**

K4:CLR	EQU	1
K4:ENT	EQU	K4:CLR+1 
K4:CAN	EQU	K4:ENT+1 
K4:USR	EQU	K4:CAN+1 

**
**  KEYTABLE 5 & 6
**

K5:CLR	EQU	1
K5:CAN	EQU	K5:CLR+1 
K5:USR	EQU	K5:CAN+1	K5:USR & ABOVE ARE USER DEFINED KEYS
K6:OV	EQU	K5:CAN+1
K6:USR	EQU	K6:OV+1	K6:USR & ABOVE ARE USER DEFINED KEYS 
	EJECT
BYTE2	FORM	8,8
BIT16	FORM	1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
	LIST 





**********************************************************************
**                    THIS IS THE START OF THE AREA COMPRISING      **
**                    APPLICATION DEPENDANT DATA.                   **
**********************************************************************

**********************************************************************
**                    0. MINI INTERPRETER FOR FILE HANDLING ONLY.   **
**********************************************************************
	EJECT

**********************************************************************
**                                                                  **
**                    WSM INTERPRETER FOR FILE HANDLING ONLY        **
**                                                                  **
**		IT IS POSSIBLE TO MAKE A WSM INTERPRETER FOR
**		WSM FILE HANDLING ONLY. 
**
**		THIS IS INTERESTING TO HAVE IN E.G. THE 6911
**		OF A SYSTEM CONSISTING OF A 6911 WITH DISK
**		AND VD83:S. 
**
**		THIS INTERPRETER CAN BE GENERATED BY TAKING THE 
**		FOLLOWING ACTIONS:
**
**	A)	UNDER POINT 1 (DEFINITION OF DATA AREA SIZES) 
**		SET ALL PARAMETERS ALLOWED TO ALTER EXCEPT PBBUF
**		TO 0 (ZERO). SET PBBUF TO 256.
**	B)	UNDER POINT 2 KEEP THE DEFAULT VALUES.
**	C)	UNDER POINTS 3 AND 4
**		DELETE ALL LINES. 
**	D)	UNDER POINT 5 (WSM MEMORY BUFFER POOL)
**		DEFINE A POOL BIG ENOUGH TO HOUSE THE LARGEST 
**		FORMAT SECTION IN YOUR SYSTEM TOGETHER WITH 
**		ONE FORMAT DEFINITION (1 FORMAT DEF.= 1 POOL UNIT). 
**	E)	UNDER POINT 6 KEEP THE DEFAULT VALUES.
**	F)	UNDER POINT 7 (WSM INSTRUCTION SELECTION) 
**		EXCLUDE ALL INSTRUCTIONS EXCEPT WOPEN, WCLOSE 
**		AND WCODE AND/OR WSAVE. 
**	G)	UNDER POINT 8 (VALIDATION .... SELECTION) 
**		EXCLUDE THE COMPLETE VALIDATION.
**	H)	UNDER POINT 9 KEEP THE DEFAULT VALUES.
**	I)	UNDER POINT 10 AND 11 
**		DELETE ALL LINES
**
	EJECT
**
**	J)	REPLACE 0 (ZERO) BELOW WITH 1 (ONE).
**                        A 
**                        ! 
**		--------- 
**		! 
**		V 
X:WDSP	EQU	0
**
**		THE FILE HANDLER TASK "FW" AND AT LEAST ONE 
**		ORDINARY WSM TASK MUST BE CONFIGURATED. 
**                                                                  **
**********************************************************************

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
XWDSP	EQU	X:WDSP
	IFT	XWDSP=0
WDSP	EQU	1
	XIF
	NLIST
	IFT	XWDSP=1
WDSP	EQU	0
	XIF
	EJECT












**********************************************************************
**                    1. DEFINITION OF DATA AREA SIZES:             **
**********************************************************************
	EJECT

**********************************************************************
**                                                                  **
**                    WSM DATA AREA SIZES.                          **
**                    THE VALUES ARE APPLICATION DEPENDANT AND      **
**                    SHOULD BE ESTIMATED FOR ONLY  O N E  TASK.    **
**                                                                  **

X:INOF	EQU	9	NUMBER OF FAST CHOICE SECTIONS ( <10 ) 
X:IFCS	EQU	54	SIZE OF FAST CHOICE SECTIONS AREA 
			( = NO OF FAST CHOICE SECTIONS * 6 ) 

X:INON	EQU	10	NUMBER OF NUMERIC WSM WORK ITEMS
X:INUM	EQU	100	SIZE OF NUMERIC WORK ITEMS AREA
			( = NO OF ITEMS * SIZE OF ONE ITEM ) 

X:INOA	EQU	10	NUMBER OF ALPHANUM WSM WORK ITEMS 
X:IALP	EQU	100	SIZE OF ALPHANUM WORK ITEMS AREA 
			( = NO OF ITEMS * SIZE OF ONE ITEM ) 

X:TDFD	EQU	3000	SECTION DEPENDENT AREA. 
			THIS AREA IS SHARED BY THE TWO 
			FOLLOWING TABLES, ONE STARTING FROM
			THE TOP, THE OTHER FROM THE BOTTOM:

			1. SECTION SEQUENCE TABLE ( SST ) :
			EACH SECTION THAT IS ATTACHED BETWEEN
			OPEN AND CLOSE REQUIRES 20 BYTES.

			2. DYNAMIC FIELDS DATA AREA ( DFD ) :
			EACH DYN. FIELD IN EACH SECTION IN SST 
			NEEDS NO. OF CHAR.S IN FIELD + 1 BYTE+ 
			+ 1 BYTE FOR THE SIGN OF NUMERIC FIELDS. 

			ESTIMATE FOR "WORST CASE" !

	EJECT

X:BBUF	EQU	256	WSM PARAMETER BLOCK BUFFER SIZE

X:NBUF	EQU	100	INPUT (KEY BOARD) BUFFER SIZE (>=6)

X:TBUF	EQU	100	OUTPUT (DISPLAY/PRINTER) BUFFER SIZE 
			THE OUTPUT BUFFER IS ALSO USED AS
			WSM BASIC WORK AREA
**                                                                  **
**********************************************************************

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
XINOF	EQU	X:INOF
WWINOF	EQU	XINOF
XIFCS	EQU	X:IFCS
WWIFCS	EQU	XIFCS
XINON	EQU	X:INON
WWINON	EQU	XINON
XINUM	EQU	X:INUM
WWINUM	EQU	XINUM
XINOA	EQU	X:INOA
WWINOA	EQU	XINOA
XIALP	EQU	X:IALP
WWIALP	EQU	XIALP
XTDFD	EQU	X:TDFD
SSTDFD	EQU	XTDFD
XBBUF	EQU	X:BBUF
PBBUF	EQU	XBBUF 
XNBUF	EQU	X:NBUF
INBUF	EQU	XNBUF 
XTBUF	EQU	X:TBUF
OUTBUF	EQU	XTBUF
	LIST 
	EJECT

**********************************************************************
**                    INTERNAL EQUATES                              **
**                    (MUST NOT BE ALTERED BY THE USER)             **
**********************************************************************
	NLIST

STKSIZ	EQU	200	WSM STACK SIZE, NO. OF BYTES 
WWIWK1	EQU	WWI:LO+WWIFCS	OVERHEAD + FAST CHOISE SECTIONS
WWIWK2	EQU	WWINUM+WWIALP	NUMERIC + ALPHANUMERIC WWI:S 
WWISIZ	EQU	WWIWK1+WWIWK2	TOTAL SIZE OF WWI AREA 
TCSIZ1	EQU	PB:BUF-TC:TID	TCA + PAR. BLOCK 
TCSIZ2	EQU	PBBUF+INBUF	PAR. BLOCK BUFFER + INPUT BUFFER 
TCSIZ3	EQU	OUTBUF+WWISIZ
TCSIZ4	EQU	SSTDFD 
TCSIZ5	EQU	TCSIZ4+STKSIZ	DFD+SST+STACK
TCSIZ6	EQU	TCSIZ1+TCSIZ2	TCA+PBLOCK+PBLBUF+INBUF
TCSIZ7	EQU	TCSIZ3+TCSIZ5	OUTBUF+WWI+DFD+SST+STACK 
WRKSIZ	EQU	TCSIZ6+TCSIZ7	TOTAL SIZE OF WORK AREA
WWIFCL	EQU	6	LEHGTH OF ONE FAST CHOISE SECT WI
MSGLIN	EQU	/02	BIT MASK WHEN MESSAGE LINE OVERLAPS
			... OTHER LINE 
VD82	EQU	/08	BIT MASK WHEN VD82/83 IS USED
	LIST 

S:GTAB   EQU      * 
**********************************************************************
**                                                                  **
**  S:GTAB            PROGRAM DESCRIPTOR FOR SYSLOD                 **
**                    (MUST NOT BE ALTERED BY THE USER)             **
**                                                                  **
**********************************************************************
	NLIST

SGAPPT	DATA	APPSTA	POINTER TO APPLICATION TABLE 
SGPGMT	DATA	'AS'	PROGRAM TYPE ('AS' = ASSEMBLER)
	DATA	0,0,0,0	NOT USED
APPSTA	DATA	W:INIT	APPLICATION START ADDRESS
APPERR	DATA	0	APPL. ERROR HANDLING (0 = NOT USED) 
APPWRK	DATA	WRKSIZ
	EJECT

**********************************************************************
**                                                                  **
**	SEE POINT 0. 
**
**	ADDRESS TO ROUTINE REWRITING 
**	OR ERASING ALL SUBSCREENS USED BY ONE TASK.
**	ZERO IF INTERPRETER WITH FILE HANDLER
**	ONLY.
**                                                                  **
**********************************************************************

	IFT	WDSP=1 
W:DSPA	DATA	W:WDSP
	XIF
	IFF	WDSP=1 
W:DSPA	DATA	0 
	XIF
	LIST 
	EJECT










**********************************************************************
**                    2. DEVICE PARAMETERS:                         **
**********************************************************************
	EJECT

**********************************************************************
**                                                                  **
**                    DEVICE FILE-CODES                             **
**                    THESE CODES CAN BE ALTERED BY THE USER.       **
**

X:KB	EQU	/20	KEY BOARD INPUT
X:BZFC	EQU	/4F	KEY BOARD BUZZER (OUTPUT)
			DISPLAY OUTPUT:
X:DYFC	EQU	/58	  SYSTEM LINE
X:DYFD	EQU	/50	  SCREEN OR ...
			  1ST LOGICAL SCREEN 
X:ICFC	EQU	/D0	INTERTASK INPUT
X:ICFD	EQU	/D1	INTERTASK OUTPUT 

**
** NOTE: KB BUZZER FILE CODE = 0 => SCREEN BUZZER IS USED.
**       OTHER BUZZER FILE CODE  => KB BUZZER IS USED WITH THE HELP 
**                                  OF DRDI01 AND THIS FILE CODE. 
**                                  IF KEYBOARD BUZZER REQUESTS FAIL
**                                  THE SCREEN BUZZER IS TRIED. 
**       DRKB04 USES THE KB BUZZER IF A KB WITH BUZZER IS USED. ON OTHER
**       KB:S THE DISPLAY BUZZER IS TRIED.     ( WITHOUT USING DRDI01! )
**
** NOTE: SYSTEM LINE FILE CODE HAS RELEVANCE ONLY ON VD82/83:S. 
**       ON OTHER DISPLAYS THE LAST SCREEN LINE IS USED.
**
** NOTE: LOGICAL SCREENS ON VD82/83:S SHOULD HAVE FILE CODES IN 
**       SEQUENCE STARTING WITH THE ONE SPECIFIED ABOVE.
**
** NOTE: PRINTER FILE CODE IS INPUT FROM THE APPLICATION AT RUN-TIME !
**       (SEE WSM PARAMETER BLOCK DESCRIPTION). 
**                                                                  **
**********************************************************************

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
KB	EQU	X:KB 
W:BZFC	EQU	*
	DATA	X:BZFC	KEY BOARD BUZZER (OUTPUT)
	NLIST
XDYFC	EQU	X:DYFC
XDYFD	EQU	X:DYFD
			- LEFT BYTE = SYSTEM LINE
W:DYFC	EQU	*
	BYTE2	XDYFC,XDYFD	DISPLAY OUTPUT:
	NLIST
			- RIGHT BYTE = SCREEN OR ... 
			-              1:ST LOGICAL SCREEN 
XICFC	EQU	X:ICFC
XICFD	EQU	X:ICFD
W:ICFC	BYTE2	XICFC,XICFD
	LIST 

	EJECT

**********************************************************************
**                                                                  **
**                    CURSOR MODE.                                  **
**                    THIS WORD DEFINES THE LAYOUT OF THE CURSOR    **
**                                                                  **

			1 & 3 => INVERSED BLOCK, BLINKING
			2     => INVERSED BLOCK, STEADY
			4     => UNDERLINE, STEADY 
			5     => UNDERLINE, BLINKING 
			6     => INVISIBLE 
X:CUMO	EQU	2

**                                                                  **
**********************************************************************

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
XCUMO	EQU	X:CUMO

W:CUMO	EQU	*
	DATA	XCUMO 
	EJECT

**********************************************************************
**                                                                  **
**                    FILLER ECHO CHARACTER.                        **
**                    THIS CHARACTER WILL BE ECHOED INSTEAD OF      **
**                    INPUT CHAR. WHEN PICTURE CODE "*" IS USED     **
**                                                                  **

X:ECHO	EQU	'*'

**                                                                  **
**********************************************************************

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
XECHO	EQU	X:ECHO
W:ECHO	BYTE2	XECHO,XECHO
	LIST 

	EJECT
**********************************************************************
**                                                                  **
**                    ONE OR TWO MESSAGE LINES.                     **
**                                                                  **
**   ONE MESSAGE LINE IS DEFAULT. 
**   IT IS POSSIBLE TO USE TWO MESSAGE LINES. WHEN DOING THIS 
**   THEY ARE REFERRED TO AS THE HELP AND THE ERROR LINE AND
**   CONTAIN THE FOLLOWING MESSAGES:
**
**  -THE HELP LINE
**       EXTENDED PROMPT MESSAGES, GUIDING MESSAGES (HELP) ,
**       SECTION/FUNCTION INPUT AND WMSG. 
**
**  -THE ERROR LINE 
**       ERRORS (MUST ENTER,MUST FILL AND VALIDATION ERRORS), 
**       WMSG,SECTION ON MESSAGE LINE AND WSM BASIC ERRORS. 
**
**   IF TWO MESSAGELINES ARE USED THEN SET THE BITS BELOW 
**   FOR VD 82/83 AND/OR OTHER VDU:S RESPECTIVELY 
**   IF ONE MESSAGELINE IS USED KEEP DEFAULT VALUES.
**                                                                  **
**                                                                  **
**********************************************************************
	EJECT
**********************************************************************
**                                                                  **
**                    VD 82/83                                      **
**                                                                  **
**


X:MES1	EQU	0	ONE OR TWO MESSAGELINES
X:MES2	EQU	0	IMMEDIATE OR DELAYED ERASE OF ERRORMESSAGE 

**
**   TWO MESSAGE LINES: 
**
**   SET THE FOLLOWING BITS ABOVE:
**
**   X:MES1=0        INDICATES ONE MESSAGELINE
**   X:MES1=1        INDICATES TWO MESSAGE LINES
**   X:MES2=0        INDICATES THAT ERRORMESSAGES ARE ERASED
**                   WHEN ACKNOWLEDGING THE MESSAGE 
**   X:MES2=1        INDICATES THAT ERRORMESSAGES ARE ERASED
**                   AFTER CORRECTION OF THE ERROR (DELAYED ERASE). 
**   X:HLFC          SHALL CONTAIN THE SUBSCREEN FILECODE 
**                   OF THE HELP LINE. THE FILECODE OF THE
**                   ERROR LINE IS ALWAYS = /58 (SYSTEM LINE).
**
**                                                                  **
**                                                                  **
**********************************************************************

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
	IFT	X:MES1=0 
X:HLFC	EQU	0	HELPLINE FILECODE IRRELEVANT WHEN ONE MESSAGELINE
	XIF
	NLIST
	IFT	X:MES1=1 
X:HLFC	EQU	/57	HELPLINE FILECODE DEFAULT =/57 
	XIF
	NLIST
XMESS1	EQU	X:MES1 
XMESS2	EQU	X:MES2 
XHLPFC	EQU	X:HLFC 
BYTMES	FORM	1,1,6=0,8 
W:MESS	BYTMES	XMESS1,XMESS2,XHLPFC
	LIST 
	EJECT
**********************************************************************
**                                                                  **
**                    OTHER VDU:S THAN VD82/83                      **
**                                                                  **
**

X:MEG1	EQU	0	ONE OR TWO MESSAGELINES
X:MEG2	EQU	0	IMMEDIATE OR DELAYED ERASE OF ERROMESSAGE
X:MEG3	EQU	0	ORDER BETWEEN ERROR- AND HELPLINE ON THE LAST TWO LINES


**
**   TWO MESSAGE LINES: 
**
**   SET THE FOLLOWING BITS ABOVE:
**
**   X:MEG1=0       INDICATES ONE MESSGAELINE 
**   X:MEG1=1       INDICATES TWO MESSAGELINES
**   X:MEG2=0       INDICATES THAT ERRORMESSAGES ARE ERASED WHEN
**                  ACKNOWLEDGING THE MESSAGE 
**   X:MEG2=1       INDICATES THAT ERRORMESSAGES ARE ERASED AFTER 
**                  CORRECTION OF THE ERROR (DELAYED ERASE) 
**   X:MEG3=0       LAST LINE BUT ONE = ERRORLINE,
**                  LAST LINE = HELPLINE. 
**   X:MEG3=1       LAST LINE BUT ONE = HELPLINE, 
**                  LAST LINE = ERRORLINE.
**
**                                                                  **
**                                                                  **
**********************************************************************

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
XMESG1	EQU	X:MEG1 
XMESG2	EQU	X:MEG2 
XMESG3	EQU	X:MEG3 
BYTMEG	FORM	1,1,13=0,1
W:MESG	BYTMEG	XMESG1,XMESG2,XMESG3
	LIST 
	EJECT










**********************************************************************
**                    3. DEFINITION OF KEY CODES AND KEY TABLES:    **
**********************************************************************
	IFT	XWDSP=0
	EJECT

**********************************************************************
**                                                                  **
**                    KEYS HANDLED IN THE WSM INTERPRETER.          **
**                    THESE KEY CODES MIGHT BE ALTERED BY THE USER  **
**                                                                  **

	XIF
NOKEY	EQU	/EE 
	IFT	XWDSP=0
CLR	EQU	/8F	CLEAR/RECALL
TFD	EQU	/8C	TABULATION FORWARD
TBD	EQU	/8B	TABULATION BACKWARD 
CR	EQU	/0D	CARRIAGE RETURN
HLP	EQU	/94	HELP
ENT	EQU	/80	ENTER 
CAN	EQU	/91	CANCEL
PRT	EQU	/98	PRINT 
SEC	EQU	/8E	SECTION 
OV	EQU	/8D	OVERRIDE VALIDATION
DUP	EQU	/90	DUPLICATE 
ASD	EQU	/92	AUTO SKIP/DUP/BYPASS
FUN	EQU	/93	FUNCTION SELECTION
TUP	EQU	/88	TABULATION UPWARD 
TDW	EQU	/82	TABULATION DOWNWARD 

**                                                                  **
**********************************************************************
	EJECT

**********************************************************************
**                                                                  **
**                    KEYS THAT ARE NOT YET HANDLED IN THE WSM      **
**                    INTERPRETER. WHEN IMPLEMENTED THESE KEYS      **
**                    WILL ALSO BE POSSIBLE TO ALTER.               **
**                                                                  **

ARI	EQU	NOKEY	ARITHMETICS 	/??
LIN	EQU	NOKEY	LINE 	/81 

**                                                                  **
**********************************************************************
	EJECT

**********************************************************************
**                                                                  **
**                    INFORMATION ON KEYS HANDLED IN DRKB04         **
**                    NOTE: THESE CODES ARE REQUIRED BY DRKB04.     **
**                    .     *****           ********                **
**                                                                  **

INS	EQU	/0F	INSERT
DEL	EQU	/0E	DELETE
CFD	EQU	/10	CURSOR FORWARD
CBD	EQU	/09	CURSOR BACKWARD 
BSP	EQU	/08	BACKSPACE 
ERA	EQU	/05	ERASE REST OF FIELD 
MIN	EQU	/2D	MINUS AS NUMERIC EOI-KEY
ALLKEY	EQU	/03	ALL. ONLY THE COMBINATIONS:
			-   ALL + CFD
			-   ALL + CBD
			ARE SUPPORTED. 
			ON VD82/83:
SUP	EQU	/11	SCROLL UP 
SDWN	EQU	/12	SCROLL DOWN
SLFT	EQU	/13	SCROLL LEFT
SRGT	EQU	/14	SCROLL RIGHT 

**                                                                  **
**********************************************************************


**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
CLR01	EQU	CLR 
CLR1	EQU	CLR01
TFD01	EQU	TFD 
TFD1	EQU	TFD01
TFD02	EQU	TFD 
TFD2	EQU	TFD02
TBD01	EQU	TBD 
TBD1	EQU	TBD01
TBD02	EQU	TBD 
TBD2	EQU	TBD02
CR01	EQU	CR 
CR1	EQU	CR01
CR02	EQU	CR 
CR2	EQU	CR02
HLP01	EQU	HLP 
HLP1	EQU	HLP01
HLP02	EQU	HLP 
HLP2	EQU	HLP02
ENT01	EQU	ENT 
ENT1	EQU	ENT01
ENT02	EQU	ENT 
ENT2	EQU	ENT02
CAN01	EQU	CAN 
CAN1	EQU	CAN01
CAN02	EQU	CAN 
CAN2	EQU	CAN02
PRT01	EQU	PRT 
PRT1	EQU	PRT01
PRT02	EQU	PRT 
PRT2	EQU	PRT02
SEC01	EQU	SEC 
SEC1	EQU	SEC01
SEC02	EQU	SEC 
SEC2	EQU	SEC02
DUP01	EQU	DUP 
DUP1	EQU	DUP01
ASD01	EQU	ASD 
ASD1	EQU	ASD01
FUN01	EQU	FUN 
FUN1	EQU	FUN01
FUN02	EQU	FUN 
FUN2	EQU	FUN02
TUP01	EQU	TUP 
TUP1	EQU	TUP01
TUP02	EQU	TUP 
TUP2	EQU	TUP02
TDW01	EQU	TDW 
TDW1	EQU	TDW01
TDW02	EQU	TDW 
TDW2	EQU	TDW02
ARI01	EQU	ARI 
ARI1	EQU	ARI01
ARI02	EQU	ARI 
ARI2	EQU	ARI02
LIN01	EQU	LIN 
LIN1	EQU	LIN01
INS03	EQU	INS 
INS3	EQU	INS03
DEL03	EQU	DEL 
DEL3	EQU	DEL03
TFD03	EQU	TFD 
TFD3	EQU	TFD03
TBD03	EQU	TBD 
TBD3	EQU	TBD03
PRT03	EQU	PRT 
PRT3	EQU	PRT03
CLR03	EQU	CLR 
CLR3	EQU	CLR03
CAN03	EQU	CAN 
CAN3	EQU	CAN03
CLR04	EQU	CLR 
CLR4	EQU	CLR04
ENT04	EQU	ENT 
ENT4	EQU	ENT04
CAN04	EQU	CAN 
CAN4	EQU	CAN04
CLR05	EQU	CLR 
CLR5	EQU	CLR05
CAN05	EQU	CAN 
CAN5	EQU	CAN05
CLR06	EQU	CLR 
CLR6	EQU	CLR06
CAN06	EQU	CAN 
CAN6	EQU	CAN06
OV06	EQU	OV 
OV6	EQU	OV06
UKEY	EQU	0
X:UKEY	EQU	UKEY 
UK01	EQU	NOKEY
UK02	EQU	NOKEY
UK03	EQU	NOKEY
UK04	EQU	NOKEY
UK05	EQU	NOKEY
UK06	EQU	NOKEY
UK07	EQU	NOKEY
UK08	EQU	NOKEY
UK09	EQU	NOKEY
UK10	EQU	NOKEY
UK11	EQU	NOKEY
UK12	EQU	NOKEY
UK13	EQU	NOKEY
UK14	EQU	NOKEY
UK15	EQU	NOKEY
UK16	EQU	NOKEY
UK17	EQU	NOKEY
UK18	EQU	NOKEY
UK19	EQU	NOKEY
UK20	EQU	NOKEY
UK21	EQU	NOKEY
UK22	EQU	NOKEY
UK23	EQU	NOKEY
UK24	EQU	NOKEY
UK25	EQU	NOKEY
UK011	EQU	UK01
UK012	EQU	UK01
UK021	EQU	UK02
UK022	EQU	UK02
UK031	EQU	UK03
UK032	EQU	UK03
UK041	EQU	UK04
UK042	EQU	UK04
UK051	EQU	UK05
UK052	EQU	UK05
UK061	EQU	UK06
UK062	EQU	UK06
UK071	EQU	UK07
UK072	EQU	UK07
UK081	EQU	UK08
UK082	EQU	UK08
UK091	EQU	UK09
UK092	EQU	UK09
UK101	EQU	UK10
UK102	EQU	UK10
UK111	EQU	UK11
UK112	EQU	UK11
UK121	EQU	UK12
UK122	EQU	UK12
UK131	EQU	UK13
UK132	EQU	UK13
UK141	EQU	UK14
UK142	EQU	UK14
UK151	EQU	UK15
UK152	EQU	UK15
UK161	EQU	UK16
UK162	EQU	UK16
UK171	EQU	UK17
UK172	EQU	UK17
UK181	EQU	UK18
UK182	EQU	UK18
UK191	EQU	UK19
UK192	EQU	UK19
UK201	EQU	UK20
UK202	EQU	UK20
UK211	EQU	UK21
UK212	EQU	UK21
UK221	EQU	UK22
UK222	EQU	UK22
UK231	EQU	UK23
UK232	EQU	UK23
UK241	EQU	UK24
UK242	EQU	UK24
UK251	EQU	UK25
UK252	EQU	UK25
U011	EQU	UK011
U012	EQU	UK012
U021	EQU	UK021
U022	EQU	UK022
U031	EQU	UK031
U032	EQU	UK032
U041	EQU	UK041
U042	EQU	UK042
U051	EQU	UK051
U052	EQU	UK052
U061	EQU	UK061
U062	EQU	UK062
U071	EQU	UK071
U072	EQU	UK072
U081	EQU	UK081
U082	EQU	UK082
U091	EQU	UK091
U092	EQU	UK092
U101	EQU	UK101
U102	EQU	UK102
U111	EQU	UK111
U112	EQU	UK112
U121	EQU	UK121
U122	EQU	UK122
U131	EQU	UK131
U132	EQU	UK132
U141	EQU	UK141
U142	EQU	UK142
U151	EQU	UK151
U152	EQU	UK152
U161	EQU	UK161
U162	EQU	UK162
U171	EQU	UK171
U172	EQU	UK172
U181	EQU	UK181
U182	EQU	UK182
U191	EQU	UK191
U192	EQU	UK192
U201	EQU	UK201
U202	EQU	UK202
U211	EQU	UK211
U212	EQU	UK212
U221	EQU	UK221
U222	EQU	UK222
U231	EQU	UK231
U232	EQU	UK232
U241	EQU	UK241
U242	EQU	UK242
U251	EQU	UK251
U252	EQU	UK252
	LIST 
	EJECT

	XIF
W:KTB1   EQU      * 
	IFT	XWDSP=0
**********************************************************************
**                                                                  **
**  W:KTB1            KEYTABLE 1. USED IN:                          **
**                    1. NORMAL READ IN NOT PROTECTED DYN FIELDS.   **
**                                                                  **
**                    KEYTABLE 1 CAN BE CHANGED BY THE USER.        **
**                    WHEN DOING THIS REMEMBER:                     **
**                                                                  **
**                    1. USER KEYS MUST BE ADDED TO THE END         **
**                    .  OF THE KEYTABLE.                           **
**                    2. THE ORDER OF THE FIRST 16 KEYS MUST NOT    **
**                    .  BE ALTERED.                                **
**                    3. KEYS HANDLED BY WSM BUT NOT USED IN YOUR   **
**                    .  SYSTEM SHOULD BE SET TO NOKEY IN THE KEY   **
**                    .  CODE LIST ABOVE.                           **
**                                                                  **
**********************************************************************

**********************************************************************
**                    KEY TABLE FORMS                               **
**                    (MUST NOT BE ALTERED BY THE USER)             **
**********************************************************************

	XIF
	NLIST
KT08	FORM	8,8,8,8,8,8,8,8 
KT07	FORM	8,8,8,8,8,8,8,8=NOKEY 
KT06	FORM	8,8,8,8,8,8 
KT05	FORM	8,8,8,8,8,8=NOKEY 
KT04	FORM	8,8,8,8 
KT03	FORM	8,8,8,8=NOKEY 
KT02	FORM	8,8 
KT01	FORM	8,8=NOKEY 
	LIST 
	IFT	XWDSP=0
	EJECT

**********************************************************************
**                                                                  **
**	NUMBER OF KEYS. INCREMENT THIS NUMBER WITH AS
**		!        MANY KEYS AS YOU WANT TO ADD.
**		! 
**		V 
KTB1L	EQU	16+X:UKEY 

	KT08	KTB1L,TUP1,TDW1,TFD1,TBD1,PRT1,LIN1,HLP1
	KT08	ARI1,ASD1,CLR1,SEC1,CR1,DUP1,ENT1,FUN1
	KT02	CAN1,U011 
**	   A	   A
**	   !	   !
**	   !	   ADD HERE YOUR KEY CODES WITH COMMAS
**	   !	   IN BETWEEN.
**	   ! 
**	   INCREMENT THIS DIGIT WITH AS MANY KEYS AS YOU WANT
**	   TO ADD. 
**
**	IF MORE THAN 7 EXTRA KEYS ARE NEEDED, INCREMENT WITH 7 
**	AND ADD 7 KEYS TO THIS LINE. THEN CONTINUE WITH A NEW
**	LINE OF THE FOLLOWING LAYOUT (EXCLUDING THE *) : 

*	KT0X	K1,K2,...,KX 

**	WHERE X DENOTES THE NUMBER OF KEYS ON THE LINE.
**
**	A KEY IS EXCLUDED BY REPLACING ITS EQUATE BY THE EQUATE
**	NOKEY. 
**
**********************************************************************
	EJECT

**********************************************************************
**                    COND. ASSEMBLY FOR WSMGEN                     **
**********************************************************************
	IFF	X:UKEY=0 
	IFF	X:UKEY=1 
	KT02	U021,U031 
	IFF	X:UKEY=2 
	IFF	X:UKEY=3 
	KT02	U041,U051 
	IFF	X:UKEY=4 
	IFF	X:UKEY=5 
	KT02	U061,U071 
	IFF	X:UKEY=6 
	IFF	X:UKEY=7 
	KT02	U081,U091 
	IFF	X:UKEY=8 
	IFF	X:UKEY=9 
	KT02	U101,U111 
	IFF	X:UKEY=10
	IFF	X:UKEY=11
	KT02	U121,U131 
	IFF	X:UKEY=12
	IFF	X:UKEY=13
	KT02	U141,U151 
	IFF	X:UKEY=14
	IFF	X:UKEY=15
	KT02	U161,U171 
	IFF	X:UKEY=16
	IFF	X:UKEY=17
	KT02	U181,U191 
	IFF	X:UKEY=18
	IFF	X:UKEY=19
	KT02	U201,U211 
	IFF	X:UKEY=20
	IFF	X:UKEY=21
	KT02	U221,U231 
	IFF	X:UKEY=22
	IFF	X:UKEY=23
	KT02	U241,U251 
	XIF
	IFT	XWDSP=0
	EJECT
**	KEYVALIDATION-BITMAP:
**
**	IT IS POSSIBLE TO SELECT WHETHER "MUST ENTER" CHECKS,
**	"MUST FILL" CHECKS AND VALIDATIONS SHOULD BE EXECUTED
**	BEFORE THE FUNCTION OF THE END-OF-ITEM KEY IS PERFORMED
**	OR NOT.
**
**	IN THE BITMAP BELOW
**		CTU  ,CTD  ,CTF  ,...,CCA    CORRESPOND TO THE KEYS 
**		TUP1 ,TDW1 ,TFD1 ,...,CAN1   IN W:KTB1 ( OR TO THE KEYS 
**		NOKEY,NOKEY,TFD2 ,...,CAN2   IN W:KTB2 ). 
**
**		C1,C2,...C25 DEFINE 25 POSSIBLE USER KEYS.
**
**	THE CHECKS ARE PERFORMED IF THE BIT IN THE FOLLOWING BIT 
**	MAP CORRESPONDING WITH THE USED FUNCTION KEY IS SET: 
**
**	AS DEFAULT THE FOLLOWING BITS ARE SET: 
**	CTF,CTB,CAS,CSE,CCR,CDU,CEN AND CFU  I.E THE KEYS
**	TFD,TBD,ASD,SEC,CR,DUP,ENT AND FUN  WILL GIVE
**	VALIDATION ETC.
**
**	IF ANOTHER KEY PATTERN IS REQUIRED, THEN CHANGE THE
**	CORRESPONDING BITPOSITIONS TO "0" OR "1".
**
	NLIST
KTU	EQU	0 
KTD	EQU	0 
KTF	EQU	1 
KTB	EQU	1 
KPR	EQU	0 
KLI	EQU	0 
KHL	EQU	0 
KAR	EQU	0 
KAS	EQU	1 
KCL	EQU	0 
KSE	EQU	1 
KCR	EQU	1 
KDU	EQU	1 
KEN	EQU	1 
KFU	EQU	1 
KCA	EQU	0 
K1	EQU	0
K2	EQU	0
K3	EQU	0
K4	EQU	0
K5	EQU	0
K6	EQU	0
K7	EQU	0
K8	EQU	0
K9	EQU	0
K10	EQU	0 
K11	EQU	0 
K12	EQU	0 
K13	EQU	0 
K14	EQU	0 
K15	EQU	0 
K16	EQU	0 
K17	EQU	0 
K18	EQU	0 
K19	EQU	0 
K20	EQU	0 
K21	EQU	0 
K22	EQU	0 
K23	EQU	0 
K24	EQU	0 
K25	EQU	0 
CTU	EQU	KTU 
CTD	EQU	KTD 
CTF	EQU	KTF 
CTB	EQU	KTB 
CPR	EQU	KPR 
CLI	EQU	KLI 
CHL	EQU	KHL 
CAR	EQU	KAR 
CAS	EQU	KAS 
CCL	EQU	KCL 
CSE	EQU	KSE 
CCR	EQU	KCR 
CDU	EQU	KDU 
CEN	EQU	KEN 
CFU	EQU	KFU 
CCA	EQU	KCA 
C1	EQU	K1 
C2	EQU	K2 
C3	EQU	K3 
C4	EQU	K4 
C5	EQU	K5 
C6	EQU	K6 
C7	EQU	K7 
C8	EQU	K8 
C9	EQU	K9 
C10	EQU	K10 
C11	EQU	K11 
C12	EQU	K12 
C13	EQU	K13 
C14	EQU	K14 
C15	EQU	K15 
C16	EQU	K16 
C17	EQU	K17 
C18	EQU	K18 
C19	EQU	K19 
C20	EQU	K20 
C21	EQU	K21 
C22	EQU	K22 
C23	EQU	K23 
C24	EQU	K24 
C25	EQU	K25 
	LIST 

**	B I T M A P :

	XIF
W:KT1V	EQU	*
	IFT	XWDSP=0
	BIT16	0,CTU,CTD,CTF,CTB,CPR,CLI,CHL,CAR,CAS,CCL,CSE,CCR,CDU,CEN,CFU
	BIT16	CCA,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 
	BIT16	C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,0,0,0,0,0
**
**
	EJECT
**
**	NOTE: LIN AND ARI ARE NOT IMPLEMENTED. 
**
**	NOTE: AFTER HLP, CLR AND CAN CHECKS ARE NEVER PERFORMED. 
**
**	NOTE: THE ASD BIT SHOULD BE SET LIKE THE TFD BIT. ( BY 
**	      TURNING ON THE AUTO S/D/B SWITCH AT A FIELD WITH 
**	      E.G. THE AUTO SKIP ATTRIBUTE SET INPUT TO THAT 
**	      FIELD WILL BE TERMINATED. )
**
**	NOTE: ALTHOUGH THE CURRENT END-OF-ITEM KEY BIT IS SET
**	      A FIELD IS VALIDATED ONLY IF IT IS MODIFIED AND NOT EMPTY OR 
**	      IF IT HAS THE MANDATORY VALIDATION ATTRIBUTE SET.
**                                                                  **
**********************************************************************

	EJECT

	XIF
W:KTB2   EQU      * 
	IFT	XWDSP=0
**********************************************************************
**                                                                  **
**  W:KTB2            KEYTABLE 2. USED IN:                          **
**                    1. NORMAL READ IN PROTECTED DYN FIELDS.       **
**                                                                  **
**                    KEYTABLE 2 CAN BE ALTERED BY THE USER IN THE  **
**                    SAME WAY AS KEYTABLE 1.                       **
**                                                                  **
**********************************************************************

KTB2L	EQU	KTB1L 
	KT08	KTB2L,TUP2,TDW2,TFD2,TBD2,PRT2,NOKEY,HLP2 
	KT08	ARI2,NOKEY,NOKEY,SEC2,CR2,NOKEY,ENT2,FUN2 
	KT02	CAN2,U012 


**********************************************************************
**                    COND. ASSEMBLY FOR WSMGEN                     **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	IFF	X:UKEY=0 
	IFF	X:UKEY=1 
	KT02	U022,U032 
	IFF	X:UKEY=2 
	IFF	X:UKEY=3 
	KT02	U042,U052 
	IFF	X:UKEY=4 
	IFF	X:UKEY=5 
	KT02	U062,U072 
	IFF	X:UKEY=6 
	IFF	X:UKEY=7 
	KT02	U082,U092 
	IFF	X:UKEY=8 
	IFF	X:UKEY=9 
	KT02	U102,U112 
	IFF	X:UKEY=10
	IFF	X:UKEY=11
	KT02	U122,U132 
	IFF	X:UKEY=12
	IFF	X:UKEY=13
	KT02	U142,U152 
	IFF	X:UKEY=14
	IFF	X:UKEY=15
	KT02	U162,U172 
	IFF	X:UKEY=16
	IFF	X:UKEY=17
	KT02	U182,U192 
	IFF	X:UKEY=18
	IFF	X:UKEY=19
	KT02	U202,U212 
	IFF	X:UKEY=20
	IFF	X:UKEY=21
	KT02	U222,U232 
	IFF	X:UKEY=22
	IFF	X:UKEY=23
	KT02	U242,U252 
	XIF
	IFT	XWDSP=0
	EJECT

	XIF
W:KTB3   EQU      * 
	IFT	XWDSP=0
**********************************************************************
**                                                                  **
**  W:KTB3            KEYTABLE 3. USED IN:                          **
**                    1. 1:ST READ AFTER SECTION KEY STROKE.        **
**                    NOTE:                                         **
**                    1. THE NUMBER OF KEYS MUST NOT BE ALTERED.    **
**                    2. KEYS CAN BE REPLACED BY OTHER KEYS OR      **
**                    BE EXCLUDED.                                  **
**                    3. TO EXCLUDE A KEY THE EQUATE NOKEY          **
**                    SHOULD BE USED.                               **
**                    4. ONLY THE POSITION IN THE KEY TABLE         **
**                    DETERMINE THE FUNCTION OF THE KEY.            **
**                                                                  **
**********************************************************************

KTB3L	EQU	7 
	KT08	KTB3L,INS3,DEL3,TFD3,TBD3,PRT3,CLR3,CAN3

	XIF
W:KTB4   EQU      * 
	IFT	XWDSP=0
**********************************************************************
**                                                                  **
**  W:KTB4            KEYTABLE 4. USED IN:                          **
**                    1. SECOND READ AFTER SECTION KEY STROKE       **
**                    2. 1:ST READ AFTER FUNCTION KEY STROKE.       **
**                    NOTE: SEE W:KTB3.                             **
**                                                                  **
**********************************************************************

KTB4L	EQU	3 
	KT04	KTB4L,CLR4,ENT4,CAN4
	EJECT

	XIF
W:KTB5   EQU      * 
	IFT	XWDSP=0
**********************************************************************
**                                                                  **
**  W:KTB5            KEYTABLE 5. USED IN:                          **
**                    ERROR  SITUATIONS.                            **
**                    NOTE: SEE W:KTB3.                             **
**                                                                  **
**********************************************************************

KTB5L	EQU	2 
	KT03	KTB5L,CLR5,CAN5 

	XIF
W:KTB6   EQU      * 
	IFT	XWDSP=0
**********************************************************************
**                                                                  **
**  W:KTB6            KEYTABLE 6.USED IN:                           **
**                    WARNING SITUATIONS.                           **
**                    NOTE: SEE W:KTB3.                             **
**                                                                  **
**********************************************************************

KTB6L	EQU	3 
	KT04	KTB6L,CLR6,CAN6,OV6 
	XIF
	EJECT










**********************************************************************
**                    4. DEFINITION OF SYSTEM MESSAGES:             **
**********************************************************************
	IFT	XWDSP=0
	EJECT

W:SM     EQU      * 
**********************************************************************
**                                                                  **
**  W:SM              WSM SYSTEM MESSAGES.                          **
**                                                                  **
**                    ALL 5 MESSAGES CAN BE CHANGED OR TRANSLATED   **
**                    BY THE USER.                                  **
**                    JUST REPLACE THE TEXTS WITHIN 'BLIPS'.        **
**                                                                  **
**********************************************************************


**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
X:SM01	EQU	0
XSM01	EQU	X:SM01
X:SM02	EQU	0
XSM02	EQU	X:SM02
X:SM03	EQU	0
XSM03	EQU	X:SM03
X:SM04	EQU	0
XSM04	EQU	X:SM04
X:SM05	EQU	0
XSM05	EQU	X:SM05
X:SM5C	EQU	0
XSM5C	EQU	X:SM5C
X:SM5S	EQU	0
XSM5S	EQU	X:SM5S
	LIST 


	XIF
W:SM01	EQU	*	EMTPY MANDATORY FIELD FOUND
	IFT	XWDSP=0
	DATA	SM01E-W:SM01	***************************
	IFT	XSM01=0
	DATA	'MANDATORY FIELD' 
	XIF
	IFT	XWDSP=0
	IFF	XSM01=0
	DATA	SM01R01 
	IFF	XSM01=1
	DATA	SM01R02 
	IFF	XSM01=2
	DATA	SM01R03 
	IFF	XSM01=3
	DATA	SM01R04 
	IFF	XSM01=4
	DATA	SM01R04 
	IFF	XSM01=5
	DATA	SM01R05 
	IFF	XSM01=6
	DATA	SM01R06 
	IFF	XSM01=7
	DATA	SM01R07 
	IFF	XSM01=8
	DATA	SM01R08 
	IFF	XSM01=9
	DATA	SM01R09 
	IFF	XSM01=10 
	DATA	SM01R10 
	IFF	XSM01=11 
	DATA	SM01R11 
	IFF	XSM01=12 
	DATA	SM01R12 
	IFF	XSM01=13 
	DATA	SM01R13 
	IFF	XSM01=14 
	DATA	SM01R14 
	IFF	XSM01=15 
	DATA	SM01R15 
	XIF
SM01E	EQU	* 
W:SM02	EQU	*	NOT FULL MUST FILL FIELD FOUND 
	IFT	XWDSP=0
	DATA	SM02E-W:SM02	****************************** 
	IFT	XSM02=0
	DATA	'DIGITS OR CHAR.S MISSING'
	XIF
	IFT	XWDSP=0
	IFF	XSM02=0
	DATA	SM02R01 
	IFF	XSM02=1
	DATA	SM02R02 
	IFF	XSM02=2
	DATA	SM02R03 
	IFF	XSM02=3
	DATA	SM02R04 
	IFF	XSM02=4
	DATA	SM02R04 
	IFF	XSM02=5
	DATA	SM02R05 
	IFF	XSM02=6
	DATA	SM02R06 
	IFF	XSM02=7
	DATA	SM02R07 
	IFF	XSM02=8
	DATA	SM02R08 
	IFF	XSM02=9
	DATA	SM02R09 
	IFF	XSM02=10 
	DATA	SM02R10 
	IFF	XSM02=11 
	DATA	SM02R11 
	IFF	XSM02=12 
	DATA	SM02R12 
	IFF	XSM02=13 
	DATA	SM02R13 
	IFF	XSM02=14 
	DATA	SM02R14 
	IFF	XSM02=15 
	DATA	SM02R15 
	XIF
SM02E	EQU	* 
	EJECT

W:SM03	EQU	*	SHOWN AFTER FUNCTION-KEY STROKE
	IFT	XWDSP=0
	DATA	SM03E-W:SM03	*******************************
	IFT	XSM03=0
	DATA	'F:'
	XIF
	IFT	XWDSP=0
	IFF	XSM03=0
	DATA	SM03R01 
	IFF	XSM03=1
	DATA	SM03R02 
	IFF	XSM03=2
	DATA	SM03R03 
	IFF	XSM03=3
	DATA	SM03R04 
	IFF	XSM03=4
	DATA	SM03R04 
	IFF	XSM03=5
	DATA	SM03R05 
	IFF	XSM03=6
	DATA	SM03R06 
	IFF	XSM03=7
	DATA	SM03R07 
	IFF	XSM03=8
	DATA	SM03R08 
	IFF	XSM03=9
	DATA	SM03R09 
	IFF	XSM03=10 
	DATA	SM03R10 
	IFF	XSM03=11 
	DATA	SM03R11 
	IFF	XSM03=12 
	DATA	SM03R12 
	IFF	XSM03=13 
	DATA	SM03R13 
	IFF	XSM03=14 
	DATA	SM03R14 
	IFF	XSM03=15 
	DATA	SM03R15 
	XIF
SM03E	EQU	* 

W:SM04	EQU	*	SHOWN AFTER SECTION-KEY STROKE 
	IFT	XWDSP=0
	DATA	SM04E-W:SM04	****************************** 
	IFT	XSM04=0
	DATA	'S:'
	XIF
	IFT	XWDSP=0
	IFF	XSM04=0
	DATA	SM04R01 
	IFF	XSM04=1
	DATA	SM04R02 
	IFF	XSM04=2
	DATA	SM04R03 
	IFF	XSM04=3
	DATA	SM04R04 
	IFF	XSM04=4
	DATA	SM04R04 
	IFF	XSM04=5
	DATA	SM04R05 
	IFF	XSM04=6
	DATA	SM04R06 
	IFF	XSM04=7
	DATA	SM04R07 
	IFF	XSM04=8
	DATA	SM04R08 
	IFF	XSM04=9
	DATA	SM04R09 
	IFF	XSM04=10 
	DATA	SM04R10 
	IFF	XSM04=11 
	DATA	SM04R11 
	IFF	XSM04=12 
	DATA	SM04R12 
	IFF	XSM04=13 
	DATA	SM04R13 
	IFF	XSM04=14 
	DATA	SM04R14 
	IFF	XSM04=15 
	DATA	SM04R15 
	XIF
SM04E	EQU	* 
W:SM05	EQU	*	SHOWN AFTER WSM BASIC ERROR
	IFT	XWDSP=0
	DATA	SM05E-W:SM05	***************************
	DATA	/1E1E	- LOW INTENSITY 
	IFT	XSM05=0
	DATA	'WSM BASIC ERR:'
	XIF
	IFT	XWDSP=0
	IFF	XSM05=0
	DATA	SM05R01 
	IFF	XSM05=1
	DATA	SM05R02 
	IFF	XSM05=2
	DATA	SM05R03 
	IFF	XSM05=3
	DATA	SM05R04 
	IFF	XSM05=4
	DATA	SM05R04 
	IFF	XSM05=5
	DATA	SM05R05 
	IFF	XSM05=6
	DATA	SM05R06 
	IFF	XSM05=7
	DATA	SM05R07 
	IFF	XSM05=8
	DATA	SM05R08 
	IFF	XSM05=9
	DATA	SM05R09 
	IFF	XSM05=10 
	DATA	SM05R10 
	IFF	XSM05=11 
	DATA	SM05R11 
	IFF	XSM05=12 
	DATA	SM05R12 
	IFF	XSM05=13 
	DATA	SM05R13 
	IFF	XSM05=14 
	DATA	SM05R14 
	IFF	XSM05=15 
	DATA	SM05R15 
	XIF
	IFT	XWDSP=0
	DATA	/1F1C	- HIGH INTENSITY,REVERSE
	EJECT

	XIF
W:SM5C	EQU	*
	IFT	XWDSP=0
	DATA	0	RESERVED FOR WSM BASIC ERROR CODE 
	DATA	/1E1D	- LOW INTENSITY,NORMAL
	IFT	XSM5C=0
	DATA	'  S:'
	XIF
	IFT	XWDSP=0
	IFF	XSM5C=0
	DATA	'  '
	DATA	SM5CR01 
	IFF	XSM5C=1
	DATA	
	DATA	SM5CR02 
	IFF	XSM5C=2
	DATA	
	DATA	SM5CR03 
	IFF	XSM5C=3
	DATA	
	DATA	SM5CR04 
	IFF	XSM5C=4
	DATA	
	DATA	SM5CR04 
	IFF	XSM5C=5
	DATA	
	DATA	SM5CR05 
	IFF	XSM5C=6
	DATA	
	DATA	SM5CR06 
	IFF	XSM5C=7
	DATA	
	DATA	SM5CR07 
	IFF	XSM5C=8
	DATA	
	DATA	SM5CR08 
	IFF	XSM5C=9
	DATA	
	DATA	SM5CR09 
	IFF	XSM5C=10 
	DATA	
	DATA	SM5CR10 
	IFF	XSM5C=11 
	DATA	
	DATA	SM5CR11 
	IFF	XSM5C=12 
	DATA	
	DATA	SM5CR12 
	IFF	XSM5C=13 
	DATA	
	DATA	SM5CR13 
	IFF	XSM5C=14 
	DATA	
	DATA	SM5CR14 
	IFF	XSM5C=15 
	DATA	
	DATA	SM5CR15 
	XIF
	IFT	XWDSP=0
	DATA	/1F1C	- HIGH INTENSITY,REVERSE
	XIF
W:SM5S	EQU	*
	IFT	XWDSP=0
	DATA	0,0,0	RESERVED FOR SECTION NAME 
	DATA	/1E1D	- LOW INTESITY,NORMAL 
	IFT	XSM5S=0
	DATA	'  F:'
	XIF
	IFT	XWDSP=0
	IFF	XSM5S=0
	DATA	'  '
	DATA	SM5SR01 
	IFF	XSM5S=1
	DATA	
	DATA	SM5SR02 
	IFF	XSM5S=2
	DATA	
	DATA	SM5SR03 
	IFF	XSM5S=3
	DATA	
	DATA	SM5SR04 
	IFF	XSM5S=4
	DATA	
	DATA	SM5SR04 
	IFF	XSM5S=5
	DATA	
	DATA	SM5SR05 
	IFF	XSM5S=6
	DATA	
	DATA	SM5SR06 
	IFF	XSM5S=7
	DATA	
	DATA	SM5SR07 
	IFF	XSM5S=8
	DATA	
	DATA	SM5SR08 
	IFF	XSM5S=9
	DATA	
	DATA	SM5SR09 
	IFF	XSM5S=10 
	DATA	
	DATA	SM5SR10 
	IFF	XSM5S=11 
	DATA	
	DATA	SM5SR11 
	IFF	XSM5S=12 
	DATA	
	DATA	SM5SR12 
	IFF	XSM5S=13 
	DATA	
	DATA	SM5SR13 
	IFF	XSM5S=14 
	DATA	
	DATA	SM5SR14 
	IFF	XSM5S=15 
	DATA	
	DATA	SM5SR15 
	XIF
	IFT	XWDSP=0
	DATA	/1F1C	- HIGH INTESITY,REVERSE 
	XIF
W:SM5F	EQU	*
	IFT	XWDSP=0
	DATA	0	RESERVED FOR NAME OF DYNAMIC
	DATA	0	... FIELD WHERE ERROR OCCURRED
	DATA	/1D1D	- NORMAL IMAGE
SM05E	EQU	* 
	XIF
	EJECT










**********************************************************************
**                    5. DEFINITION OF POOL SIZE:                   **
**********************************************************************
	EJECT
**********************************************************************
**                                                                  **
**                    WSM MEMORY BUFFER POOL                        **
**                                                                  **
**		4 LINES SHOULD BE ALTERED TO GET THE DESIRED
**		POOL SIZE. AS AN EXAMPLE A POOL SIZE OF 10
**		POOL UNITS IS USED. 
**		ASSUME A SIZE OF N POOL UNITS IS WANTED.
**		THEN: 
**
**		LINE 1: 
**		! DEFINE N             ( 25 ) 
**		! 
**		V 
X:OLNO	EQU	25 
**
**		LINE 2: 
**		! RESERVE N*128 WORDS  ( 25*128 => 3200 ) 
**		! 
**		V 
X:POOL	EQU	3200 
**
**		LINE 3: 
**		! RESERVE N*6 WORDS    ( 25*6   =>  150 ) 
**		! 
**		V 
X:OLAD	EQU	150
**
**
**
**
	EJECT

**
**
**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
POOLNO	EQU	X:OLNO 
POOL	RES	X:POOL 
POOLAD	RES	X:OLAD 
	LIST 
****NLIST 
POOLFS	EQU	*
	DATA	POOLNO,FSEND-POOLFS,'B1'
****LIST
**
**
**
**		LINE 4: 
**		! DEFINE M WORDS WHERE M EQUALS THE INTEGER PART OF 
**		! (N+15)/16.           ( M=INT((25+15)/16)=2 )
**		! 
**		! IN THESE WORDS, SET THE N FIRST BITS TO 1 AND THE 
**		! FOLLOWING BITS TO 0 (ZERO). 
**		! 
**		V 
X:NMSK	EQU	2	TOTAL NUMBER OF WORDS (M)
X:PMSK	EQU	/FF80	LAST WORD (OF M) 
**
**
	EJECT

**
**
**********************************************************************
**                    COND. ASSEMBLY FOR WSMGEN                     **
**********************************************************************
	NLIST
XNMASK	EQU	X:NMSK 
XPMASK	EQU	X:PMSK 
	LIST 
	IFT	XNMASK=16
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	XIF
	IFT	XNMASK=15
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF 
	XIF
	IFT	XNMASK=14
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF 
	XIF
	IFT	XNMASK=13
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF 
	XIF
	IFT	XNMASK=12
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF 
	XIF
	IFT	XNMASK=11
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	XIF
	IFT	XNMASK=10
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF 
	XIF
	IFT	XNMASK=9 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF,/FFFF 
	XIF
	IFT	XNMASK=8 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF,/FFFF 
	XIF
	IFT	XNMASK=7 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	DATA	/FFFF 
	XIF
	IFT	XNMASK=6 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF,/FFFF 
	XIF
	IFT	XNMASK=5 
	DATA	/FFFF,/FFFF,/FFFF,/FFFF 
	XIF
	IFT	XNMASK=4 
	DATA	/FFFF,/FFFF,/FFFF 
	XIF
	IFT	XNMASK=3 
	DATA	/FFFF,/FFFF 
	XIF
	IFT	XNMASK=2 
	DATA	/FFFF 
	XIF
	DATA	XPMASK
**
**
**
**
****NLIST 
FSEND	DATA	0,0
****LIST
	EJECT











**********************************************************************
**                    6. FILE HANDLING:                             **
**********************************************************************
	EJECT

**********************************************************************
**                                                                  **
**                    WSM INTERPRETER WITHOUT FILE HANDLER          **
**                                                                  **
**		THE WSM FILE HANDLER IS A SEPARATE PART OF
**		THE WSM INTERPRETER AND ALSO A SEPARATE 
**		TASK. 
**		
**		IN INTELLIGENT WORKSTATIONS (E.G. VD83) WITH
**		NO FILES THE FILE HANDLER SHOULD BE EXCLUDED. 
**		
**		THIS IS DONE BY REPLACING  0 (ZERO)  BELOW WITH 
**		1 (ONE).	A
**			!
**		----------------------- 
**		! 
**		V 
X:FHCA	EQU	0
**		
**		THE FILE HANDLER TASK "FW" MUST ALSO BE 
**		DELETED FROM THE CONFIGURATION FILE.
**                                                                  **
**********************************************************************

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
XFHCA	EQU	X:FHCA
	LIST 
	IFT	XFHCA=0
W:FHCA	DATA	WD:FIL
	XIF
	IFT	XFHCA=1
W:FHCA	DATA	0 
	XIF
	EJECT


**********************************************************************
**                    POOL & FILE HANDLER POINTERS.                 **
**                    (MUST NOT BE CHANGED.)                        **
**********************************************************************
	NLIST

FILTAB	RES	36 
FORDER	RES	128	ORDER-DATA TO FILE-HANDLER 

S:POOL	DATA	POOL	-> POOL START
S:POLA	DATA	POOLAD	-> POOL ADMINISTRATION DATA
S:FILT	DATA	FILTAB	-> FILE TABLE
S:POLF	DATA	POOLFS	-> POOL FREE SPACE VECTOR
S:FORD	DATA	FORDER	-> ORDER-DATA TO FILE-HANDLER
	LIST 
	EJECT










**********************************************************************
**                    7. WSM INSTRUCTION SELECTION:                 **
**********************************************************************
	EJECT

WSMTAB   EQU      * 
**********************************************************************
**                                                                  **
**  WSMTAB            WSM INSTRUCTIONS - BRANCH TABLE               **
**                                                                  **
**  TO EXCLUDE INSTRUCTIONS NOT IN USE IN YOUR SYSTEM,
**  REPLACE LABELS CORRESPONDING WITH EXCLUDED INSTRUCTIONS BY W:ENDR!
**            A                                    A
**            !                                    !
**            -------                      ---------
**                  !                      !
**                  V                      V

	IFT	XWDSP=0
	DATA	W:OPEN	WOPEN
	DATA	W:ATCH	WATTCH 
	DATA	W:RCIV	WRCIVE 
	DATA	W:MSG	WMSG
	DATA	W:SEND	WSEND
	DATA	W:PRNT	WPRINT 
	DATA	W:CLOSE	WCLOSE
	DATA	W:SAVE	WSAVE
	DATA	W:DLET	WDLETE 
	DATA	W:FATR	WFATTR 
	DATA	W:CODE	WCODE
	DATA	W:FID	WFID
	DATA	W:GTPM	GET FIELD PARAMETERS 
	XIF
	IFT	XWDSP=1
	DATA	W:OPEN	WOPEN
 DATA W:ENDR
 DATA W:ENDR
 DATA W:ENDR
 DATA W:ENDR
 DATA W:ENDR
	DATA	W:CLOSE	WCLOSE
	DATA	W:SAVE	WSAVE
 DATA W:ENDR
 DATA W:ENDR
	DATA	W:CODE	WCODE
 DATA W:ENDR
	DATA W:ENDR
	XIF

**                                                                  **
**********************************************************************
	EJECT















**********************************************************************
**                    8. VALIDATION STATEMENT & FUNCTION            **
**                    .  & OPERATOR SELECTION:                      **
**********************************************************************
	EJECT

W:VALA   EQU      * 
**********************************************************************
**                                                                  **
**  W:VALA            VALIDATION LANGUAGE - MAIN ROUTINE.           **
**
**  TO EXCLUDE THE COMPLETE VALIDATION, 
**  REPLACE 1 (ONE) BELOW BY 0 (ZERO) AND DELETE ALL DATA LINES IN
**  VALIDATION STATEMENTS BRANCH TABLE AND VALIDATION OPERATORS 
**  BRANCH TABLE BELOW !
**

X:VEVA	EQU	1

**                                                                  **
**********************************************************************

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
	NLIST
XVEVA	EQU	X:VEVA
	IFT	XVEVA=0
	DATA	0 
	XIF
	NLIST

	IFT	XVEVA=1
	DATA	W:VEVA
	XIF
	EJECT

W:STMT   EQU      * 
	IFT	XVEVA=1
**********************************************************************
**                                                                  **
**  W:STMT            VALIDATION STATEMENTS - BRANCH TABLE          **
**
**  TO EXCLUDE VALIDATION STATEMENT TYPES NOT IN USE IN YOUR SYSTEM,
**  REPLACE LABELS CORRESPONDING WITH EXCLUDED STATEMENTS BY W:V01C!
**            A                                    A
**            !                                    !
**            -------                      ---------
**                  !                      !
**                  V                      V

	DATA	W:V000	ALPHANUM ASSIGNMENT
	DATA	W:V002	NUM ASSIGNMENT 
	DATA	W:V004	GO TO/GOTO 
	DATA	W:V006	IF...THEN LIN NO 
	DATA	W:V008	IF...THEN STATEMENT
	DATA	W:V00A	ON...GO TO/GOTO LINE NO
	DATA	W:V00C	CALL 
	DATA	W:V00E	SECT 
	DATA	W:V010	ATTR 
	DATA	W:V012	STOP 
	DATA	W:V014	EXIT 
	DATA	W:V016	ERR
	DATA	W:V018	WARN 
	DATA	W:V01A	REM
	DATA	W:V01C	EMPTY STATEMENT

**                                                                  **
**********************************************************************
	EJECT
**********************************************************************
**                                                                  **
**                    VALIDATION OPERATORS & FUNCTIONS              **
**                    BRANCH TABLES.                                **
**
**  TO EXCLUDE VALIDATION OPERATORS & FUNCTIONS NOT IN USE
**  IN YOUR SYSTEM, 
**  REPLACE LABELS CORRESPONDING WITH EXCLUDED OPERATORS BY W:EXP5! 
**            A                                    A
**            !                                    !
**            -------                      ---------
**                  !                      !
**                  V                      V
	DATA	W:CMP	RELATIONAL OPERATORS
	XIF
W:OPER	EQU	*
	IFT	XVEVA=1
	DATA	W:OP0E	CONCATENATE
	DATA	W:OP0F	SUBSTRING
	DATA	W:OP10	STR
	DATA	W:OP11	MAKE POSITIVE
	DATA	W:OP12	NEGATE 
	DATA	W:OP13	ADD
	DATA	W:OP14	SUBTRACT 
	DATA	W:OP15	DIVIDE 
	DATA	W:OP16	MULTIPLY 
	DATA	W:OP17	ABS
	DATA	W:OP18	INT
	DATA	W:OP19	SGN
	DATA	W:OP1A	TIM
	DATA	W:OP1B	DAY
	DATA	W:OP1C	SYS
	DATA	W:OP1D	LEN
	DATA	W:OP1E	NUM
	DATA	W:OP1F	DAT
	DATA	W:OP20	CDV
	DATA	W:OP21	POS
	DATA	W:EXP5	PARANTHESIS (/22)
**                                                                  **
**********************************************************************
	EJECT




**********************************************************************
**                                                                  **
**                    EXTERNAL FUNCTION CALLS.                      **
**                    DEFINE A NUMBER OF ASSEMBLER ROUTINES         **
**                    THAT CORRESPOND TO CALLS FROM YOUR VALIDATION.**
**                    A CONSECUTIVE TABLE OF ENTRIES                **
**                    STARTING WITH UF00 IS CREATED                 **
**********************************************************************

X:UFNR	EQU	0

**********************************************************************
**                    EQUATES FOR WSMGEN                            **
**                    ( MUST NOT BE ALTERED BY THE USER )           **
**********************************************************************
XUFNR	EQU	X:UFNR
XUFNR2	EQU	XUFNR+XUFNR

	DATA	XUFNR2-2	W:UFTB LENGTH EQUATES MAX UF INDEX * 2 
*			AND IS NEGATIVE (-2) IF NO UF:S ARE DEFINED 
	XIF
W:UFTB	EQU	*
	IFT	XVEVA=1
	IFF	XUFNR=0
	DATA	UF00
	IFF	XUFNR=1
	DATA	UF01
	IFF	XUFNR=2
	DATA	UF02
	IFF	XUFNR=3
	DATA	UF03
	IFF	XUFNR=4
	DATA	UF04
	IFF	XUFNR=5
	DATA	UF05
	IFF	XUFNR=6
	DATA	UF06
	IFF	XUFNR=7
	DATA	UF07
	IFF	XUFNR=8
	DATA	UF08
	IFF	XUFNR=9
	DATA	UF09
	IFF	XUFNR=10 
	DATA	UF10
	IFF	XUFNR=11 
	DATA	UF11
	IFF	XUFNR=12 
	DATA	UF12
	IFF	XUFNR=13 
	DATA	UF13
	IFF	XUFNR=14 
	DATA	UF14
	IFF	XUFNR=15 
	DATA	UF15
	IFF	XUFNR=16 
	DATA	UF16
	IFF	XUFNR=17 
	DATA	UF17
	IFF	XUFNR=18 
	DATA	UF18
	IFF	XUFNR=19 
	DATA	UF19
	IFF	XUFNR=20 
	DATA	UF20
	IFF	XUFNR=21 
	DATA	UF21
	IFF	XUFNR=22 
	DATA	UF22
	IFF	XUFNR=23 
	DATA	UF23
	IFF	XUFNR=24 
	DATA	UF24
	IFF	XUFNR=25 
	DATA	UF25
	IFF	XUFNR=26 
	DATA	UF26
	IFF	XUFNR=27 
	DATA	UF27
	IFF	XUFNR=28 
	DATA	UF28
	IFF	XUFNR=29 
	DATA	UF29
	IFF	XUFNR=30 
	DATA	UF30
	IFF	XUFNR=31 
	DATA	UF31
	IFF	XUFNR=32 
	DATA	UF32
	IFF	XUFNR=33 
	DATA	UF33
	IFF	XUFNR=34 
	DATA	UF34
	IFF	XUFNR=35 
	DATA	UF35
	IFF	XUFNR=36 
	DATA	UF36
	IFF	XUFNR=37 
	DATA	UF37
	IFF	XUFNR=38 
	DATA	UF38
	IFF	XUFNR=39 
	DATA	UF39
	IFF	XUFNR=40 
	DATA	UF40
	IFF	XUFNR=41 
	DATA	UF41
	IFF	XUFNR=42 
	DATA	UF42
	IFF	XUFNR=43 
	DATA	UF43
	IFF	XUFNR=44 
	DATA	UF44
	IFF	XUFNR=45 
	DATA	UF45
	IFF	XUFNR=46 
	DATA	UF46
	IFF	XUFNR=47 
	DATA	UF47
	IFF	XUFNR=48 
	DATA	UF48
	IFF	XUFNR=49 
	DATA	UF49
	IFF	XUFNR=50 
	DATA	UF50
	IFF	XUFNR=51 
	DATA	UF51
	IFF	XUFNR=52 
	DATA	UF52
	IFF	XUFNR=53 
	DATA	UF53
	IFF	XUFNR=54 
	DATA	UF54
	IFF	XUFNR=55 
	DATA	UF55
	IFF	XUFNR=56 
	DATA	UF56
	IFF	XUFNR=57 
	DATA	UF57
	IFF	XUFNR=58 
	DATA	UF58
	IFF	XUFNR=59 
	DATA	UF59
	IFF	XUFNR=60 
	DATA	UF60
	IFF	XUFNR=61 
	DATA	UF61
	IFF	XUFNR=62 
	DATA	UF62
	IFF	XUFNR=63 
	DATA	UF63
	IFF	XUFNR=64 
	DATA	UF64
	IFF	XUFNR=65 
	DATA	UF65
	IFF	XUFNR=66 
	DATA	UF66
	IFF	XUFNR=67 
	DATA	UF67
	IFF	XUFNR=68 
	DATA	UF68
	IFF	XUFNR=69 
	DATA	UF69
	IFF	XUFNR=70 
	DATA	UF70
	IFF	XUFNR=71 
	DATA	UF71
	IFF	XUFNR=72 
	DATA	UF72
	IFF	XUFNR=73 
	DATA	UF73
	IFF	XUFNR=74 
	DATA	UF74
	IFF	XUFNR=75 
	DATA	UF75
	IFF	XUFNR=76 
	DATA	UF76
	IFF	XUFNR=77 
	DATA	UF77
	IFF	XUFNR=78 
	DATA	UF78
	IFF	XUFNR=79 
	DATA	UF79
	IFF	XUFNR=80 
	DATA	UF80
	IFF	XUFNR=81 
	DATA	UF81
	IFF	XUFNR=82 
	DATA	UF82
	IFF	XUFNR=83 
	DATA	UF83
	IFF	XUFNR=84 
	DATA	UF84
	IFF	XUFNR=85 
	DATA	UF85
	IFF	XUFNR=86 
	DATA	UF86
	IFF	XUFNR=87 
	DATA	UF87
	IFF	XUFNR=88 
	DATA	UF88
	IFF	XUFNR=89 
	DATA	UF89
	IFF	XUFNR=90 
	DATA	UF90
	IFF	XUFNR=91 
	DATA	UF91
	IFF	XUFNR=92 
	DATA	UF92
	IFF	XUFNR=93 
	DATA	UF93
	IFF	XUFNR=94 
	DATA	UF94
	IFF	XUFNR=95 
	DATA	UF95
	IFF	XUFNR=96 
	DATA	UF96
	IFF	XUFNR=97 
	DATA	UF97
	IFF	XUFNR=98 
	DATA	UF98
	IFT	XUFNR=99 
	DATA	UF99
	XIF
	EJECT













**********************************************************************
**                    9. USER DEFINED ASSEMBLER ROUTINE LINKED      **
**                    .  WITH THE WSM INTERPRETER:                  **
**********************************************************************
	EJECT

**********************************************************************
**                                                                  **
**                    IT IS POSSIBLE TO LINK AN USERDEFINED         **
**                    ASEMBLER ROUTINE WITH THE WSM INTER-          **
**                    PRETER TO BE CALLED FROM THE APPLICATION OR   **
**                    THE WSM INTERPRETER.                          **
**                    THE LINKING SHOULD BE DONE BY RE-             **
**                    PLACING THE ZERO BELOW WITH THE NAME OF       **
**                    THE ASSEMBLER SUBROUTINE. THIS NAME MUST      **
**                    ALSO BE DEFINED AS EXTERNAL ACCORDING         **
**                    TO "EXTRN"-DECLARATIONS IN THE BEGINNING      **
**                    OF THIS PROGRAM.                              **
**                                                                  **
**                    1. SUBROUTINE CALLED FROM THE APPLICATION     **
**
	NLIST
X:USRU	EQU	0
XUSRU	EQU	X:USRU
	LIST 
	IFT	XUSRU=0
W:USRU	DATA	0 
	XIF
	IFT	XUSRU=1
W:USRU	DATA	Q:S902
	XIF
**                                                                  **
**                    2. SUBROUTINE CALLED FROM WSM INTERPRETER     **
**                    .  DURING A WRCIVE REQUEST E.G TO MODIFY THE  **
**                    .  PBLK BUFFER RETURNED TO THE APPLICATION    **
**
	NLIST
X:PBUF	EQU	0
XPBUF	EQU	X:PBUF
	LIST 
	IFT	XPBUF=0
W:PBUF	DATA	0 
	XIF
	IFT	XPBUF=1
W:PBUF	DATA	Q:S904
	XIF

	EJECT
**                                                                  **
**                    NOTE:                                         **
**                    THIS INTERFACE SHOULD NOT BE MIXED UP WITH    **
**                    THE INTERFACE REQUIRED FOR UF-ROUTINES        **
**                    CALLED FROM WSM BASIC.                        **
**                                                                  **
**                    NOTE:                                         **
**                    THIS INTERFACE IS NOT RECOMMENDED.            **
**                    CONTACT FTS DEVELOPMENT DEPARTMENT BEFORE USE **
**                                                                  **
**********************************************************************
	EJECT















**********************************************************************
**                    10.ROUTINES TO PACK NUMERIC DATA.             **
**********************************************************************
	EJECT



**********************************************************************
**                                                                  **
**                    WHEN PACKING NUMERIC VALUES IN THE            **
**                    PARAMETERBLOCK BUFFER TO BE SENT BACK TO      **
**                    THE APPLICATION IT IS POSSIBLE TO EXCLUDE     **
**                    THE DECIMAL POINT OR COMMA.                   **
**                    THIS IS DONE BY REPLACING THE PACKROUTINE     **
**                    W:NPA2 BELOW WITH W:NPA3.                     **
**                                                                  **
**                                                                  **
**********************************************************************

W:NUMP	EQU	*
	IFT	XWDSP=0
	DATA	W:NPA2
	XIF
	EJECT















**********************************************************************
**                    11.WSM BASIC DEBUGGER.                        **
**********************************************************************

	EJECT
**********************************************************************
**                                                                  **
**                    THE WSM VALIDATION BASIC LANGUAGE DEBUGGER.   **
**                                                                  **
**                    W:BBUG                                        **
**                                                                  **
**                    SET THE DATA WORD BELOW TO ZERO TO            **
**                    EXCLUDE THE DEBUGGER.                         **
**                    SET THE DATA WORD BELOW TO W:BBUG TO          **
**                    INCLUDE THE DEBUGGER.                         **
**                                                                  **
**********************************************************************

W:BUGG	EQU	*
	IFT	XWDSP=0
WBBUG	DATA	0
	XIF
	EJECT















**********************************************************************
**                    THIS IS THE END OF THE AREA COMPRISING        **
**                    APPLICATION DEPENDANT DATA.                   **
**********************************************************************
	EJECT

W:INIT   EQU      * 
**********************************************************************
**                                                                  **
**  W:INIT            WSM INITIAL MODULE                            **
**                                                                  **
**                                                                  **
**  INPUT:            A2 = TASK-ID                                  **
**                    A14 -> APPWRK GENERATED AREA                  **
**                                                                  **
**  OUTPUT:           A13 -> WSM-TCA                                **
**                    A14 -> WSM-STACK                              **
**                    TCA & ECB:S & WWI INITIALIZED                 **
**                                                                  **
**********************************************************************

**********************************************************************
**                    SET A13 -> WSM-TCA                            **
**                    SET A14 -> WSM-STACK                          **
**********************************************************************

	LDR	A13,A14	A13 -> APPWRK = WSM-TCA START
	ADR*	A14,A14	APPWRK LENGTH FROM FIRST WORD 
	SUKL	A14,2	A14 -> "BOTTOM" STACK WORD
	EJECT
**********************************************************************
**                    CHECK IF FILE-HANDLER TASK.                   **
**********************************************************************

	CWK	A2,'FW'	FILE HANDLER TASK ?
	RF(NE)	INIT10	- NO ! 
	LD	A1,W:FHCA	FILE HANDLER IN SYSTEM ?
	RF(Z)	INIT10	- NO !
	ABR	A1	ACTIVATE FILE HANDLER TASK
INIT10	EQU	*


**********************************************************************
**                    SET BUFFER ADDR IN INTERTASK-ECB              **
**********************************************************************

	LDR	A5,A13	A5 -> WSM-TCA 
	ADKL	A5,PB:FC	A5 -> WSM PARAMETER BLOCK START
	ST	A5,TC:IC+ECB:BA,A13	SET BUF. ADDR IN IC-ECB 


**********************************************************************
**                    STORE TASK-ID AND STACK-POINTER IN WS:TCA     **
**********************************************************************
	ST	A2,TC:TID,A13	TASK-ID 
	ST	A14,TC:STK,A13	STACK POINTER
	EJECT
**********************************************************************
**                    INITIALIZE ECB:S                              **
**********************************************************************

	LDK	A1,KB	KEY BOARD FILE CODE
	ST	A1,TC:KB,A13
	LD	A1,W:DYFC	DISPLAY UNIT FILE CODE
	SC	A1,TC:EKO+1,A13 
			PRINTER FILE CODE IS SET IN APPL. !

	LDR	A1,A13	A1 -> WSM-TCA 
	ADKL	A1,PB:BUF+PBBUF	A1 -> INPUT BUFFER START
	ST	A1,TC:KB+ECB:BA,A13	SET BUFFER ADDRESS FOR KB 
	ADKL	A1,INBUF	A1 -> OUTPUT BUFFER START
	ST	A1,TC:IIE,A13	SET 1ST BYTE AFTER INPUT BUFFER 
	ST	A1,TC:EKO+ECB:BA,A13	SET BUFFER ADDRESS FOR EKO 
	ST	A1,TC:PRT+ECB:BA,A13	SET BUFFER ADDRESS FOR PRT 
			IC:ECB-BA IS SET ABOVE ! 
	LDR	A5,A1	A5 -> OUTPUT BUFFER START

	LDR	A1,A13	A1 -> WSM-TCA 
	ADK	A1,TC:KB+KB:PBL	A1 -> KEY BOARD INPUT PAR. BLOCK 
	ST	A1,TC:KB+KB:CW2,A13	STORE IN KB-ECB CONTROL WORD 2
	LDK	A1,KB:END-KB:EKO	A1 := SIZE OF KB PAR. BLOCK 
	SC	A1,TC:KB+KB:PBL,A13	STORE IN KB-ECB 
	EJECT
**********************************************************************
**                    INITIALIZE WSM WORK ITEMS AREA.               **
**                    STORE WWI-ADDRESS IN WS:TCA.                  **
**********************************************************************

			A5 -> OUTPUT BUFFER
	ADKL	A5,OUTBUF	A5 -> 1ST BYTE AFTER OUTPUT BUFFER
	ST	A5,TC:WWI,A13	STORE IN WS:TCA 
	LDK	A2,WWINOF	A2 := NO OF FAST CHOISE SECTIONS 
	SCR	A2,A5	STORE IN WWI-AREA
	LDK	A3,WWIFCL	A3 := LENGTH OF ONE FAST CHOISE SECT WI
	SC	A3,WWI:LF,A5	STORE IN WWI-AREA
	MUR	A3	A2 := LENGTH OF FAST CHOISE SECT AREA 
	ADR	A2,A5	SET A2 -> .... 
	ADK	A2,WWI:LO	...-> NUM WWI-AREA 
	ST	A2,WWI:AN,A5	STORE IN WWI-AREA
	ADKL	A2,WWINUM	A2 -> ALPHANUM WWI-AREA 
	ST	A2,WWI:AA,A5	STORE IN WWI-AREA
	LDK	A3,WWINON	A3 := NO OF NUMERIC WORK ITEMS 
	SC	A3,WWI:NN,A5	STORE IN WWI-AREA
	LDKL	A2,WWINUM	A2 := TOTAL SIZE OF NUM WORK ITEMS
	RF(Z)	INIT20	NO DIVISION BY ZERO!
	DVR	A3	DIVIDE BY NO OF NUM ITEMS 
INIT20	SC	A2,WWI:LN,A5	RESULT, LENGTH OF EACH NUM WORK ITEM,
			IS STORED IN WWI-AREA
	LDK	A3,WWINOA	SAME PROCEDURE FOR ALPHANUM WORK ITEMS ! 
	SC	A3,WWI:NA,A5
	LDKL	A2,WWIALP 
	RF(Z)	INIT25 
	DVR	A3 
INIT25	SC	A2,WWI:LA,A5
	EJECT
**********************************************************************
**                    CALCULATE & STORE DFD-ADDRESS                 **
**********************************************************************

	ADKL	A5,WWISIZ	A5 -> DFD-AREA
	ST	A5,TC:DFD,A13 
**********************************************************************
**                    CALCULATE & STORE SST-ADDRESS                 **
**********************************************************************

	ADKL	A5,SSTDFD	A5 -> 1ST BYTE AFTER SST-AREA 
	ST	A5,TC:SST,A13 


**********************************************************************
**                    SET STANDARD KEY TABLE AND BITMAP             **
**********************************************************************

	LDKL	A5,W:KTB1 
	ST	A5,TC:KY1,A13 
	LDKL	A5,W:KT1V 
	ST	A5,TC:KTV,A13	

	EJECT

**********************************************************************
**                    GET SCREEN SIZE AND TYPE OF VDU               **
**                    AND INFORMATION ABOUT TWO MESSAGE LINES       **
**********************************************************************

INIT35	EQU	*
	LDR	A8,A13	A8 -> DISPLAY ECB 
	ADKL	A8,TC:EKO 
	LDK	A1,2	- SET REQUESTED LENGTH
	ST	A1,ECB:RL,A8
	CM	ECB:CW,A8	LOGICAL SIZE WANTED 
	LDK	A7,/AC	A7 := READ SCREEN SIZE ORDER
	LKM
	DATA	1 
	LD*	A2,ECB:BA,A8	A2 := LOGICAL SCREEN SIZE 
	LD	A3,W:DYFC	MAKE BASIC READ TO FIND OUT 
	ECR	A3,A3	SCREEN TYPE.THE REQUEST IS MADE ON 
	SC	A3,1,A8	SYSTEM LINE 
			MAKE BASIC READ TO FIND OUT IF VD82/83 
	LDK	A7,/81	- A7 := BASIC READ ORDER
	LKM
	DATA	1 
	ECR	A3,A3	 
	SC	A3,1,A8	RETURN FC FOR SUBSCREEN 1 
	LDK	A3,VD82
	LD	A5,W:MESS	INFO ABOUT TWO MSGLINES IF VD82,83
	EJECT

*************************************************************************** 
**                                                                       ** 
**  IF RC IS NOT NEGATIVE (=/8000) AND NOT = ZERO, THE WORK STATION IS   ** 
**  NOT OPERABLE. THIS DEPENDS ON:                                       ** 
**    1. THE WORK STATION IS NOT PRESENT/ON.                             ** 
**    2. THE FIRM-WARE OF THE CONTROL UNIT IS A LITTLE BIT SLOW...       ** 
**  THEREFORE A NEW ATTEMPT TO READ THE WORK STATION IS PERFORMED, AFTER ** 
**  A TASK DELAY. THIS FIRM-WARE ERROR WAS DETECTED 1983-09-09 AT LMO    ** 
**  SWEDEN (BANKDATA / VD82). WHEN REPAIRED, THIS DELAY/RETRY CAN BE     ** 
**  REMOVED.                                                             ** 
**                                                                       ** 
*************************************************************************** 

	LD	A1,ECB:RC,A8	BASIC READ OK -> VD82,83 
	RF(Z)	INIT50	VD82,83 
	RF(N)	INIT40	REQUEST ERROR => VD46/47/81 OR SIMILAR... 
	LDKL	A8,50	RC > 0 => NOT OPERABLE
	LKM		DELAY 50 * 100 MS = 5 SECONDS 
	DATA	6 
	RB	INIT35	AGAIN! 

INIT40	EQU	*
	LD	A5,W:MESG	INFO ABOUT TWO MSGLINES IF NOT VD82,83
	CWK	A2,/0200	TYPE OF VDU:
	RF(NL)	INIT60	ORDINARY VDU (NOT ONELINE) 
	LDK	A3,MSGLIN	ONE LINE DISPLAY 
	LDK	A5,0	TWO MSG LINES IMPOSSIBLE
	LDK	A6,/10	SCREEN BACKGROUND IS BLACK
	RF	INIT55	 
	EJECT
INIT50	EQU	*	VD82,83
	LDK	A6,0	SCREEN BACKGROUND IS WHITE
	CC	A5,W:DYFC	IF FILECODES FOR HELP AND.. 
	RF(NE)	INIT55	..ERRORLINES ARE EQUAL THEN INDICATE.. 
	LDK	A5,0	..ONE MSG LINE IN A5. 
INIT55	EQU	*
	ORS	A3,TC:MSC,A13	SET TYPE OF VDU
	RF	INIT99
INIT60	EQU	*	ORDINARY VDU:S 
	LDK	A6,/10	SCREEN BACKGROUND IS BLACK
	SUKL	A2,/0100	EXCLUDE MSG LINE 
	ANR	A5,A5	TWO MSGLINES?
	RF(NN)	INIT99	NO.. 
	SUKL	A2,/0100	EXCLUDE ONE MORE MSG LINE

INIT99	EQU	*	SET CURRENT SUBSCREEN PAR.S
	LDK	A1,1 
	ST	A1,TC:SUS,A13	- SUBSCREEN NO. 
	SC	A1,TC:LIN,A13	- 1:ST FREE LINE
	ST	A2,TC:SIZ,A13	- SUBSCREEN SIZE
	ST	A2,TC:SZE,A13	SAVE SIZE OF SUBSCREEN 1
	ST	A5,TC:MSG,A13	SAVE INFO ABOUT TWO MSG LINES 
	ADR	A1,A6	ADD INFO ABOUT SCREEN BACKGROUND 
	ORS	A1,TC:MSC,A13	SET AUTO SWITCH ACTIVE 
	ABL	W:STRT	BRANCH TO WSM START ROUTINE 

	END	W:INIT 

Full view