|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 136404 (0x214d4)
Notes: pts_type(SC)
Names: »W:INIT.SC«
└─⟦f45ea3bc3⟧ Bits:30009713 Philips computer tape "WSM"
└─⟦this⟧ »WSM:INTO/W:INIT.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