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

⟦443867b41⟧

    Length: 30228 (0x7614)
    Notes: pts_type(SC)
    Names: »WSMAPP.SC«

Derivation

└─⟦f45ea3bc3⟧ Bits:30009713 Philips computer tape "WSM"
    └─⟦this⟧ »WSM:CREA/WSMAPP.SC« 

PTS(SC)

	IDENT	WSMAPP	REL=2.3,851025,870155940230 

******************************************************************* 
* 
*   LATEST UPDATE=851025 BY CJ
* 
*   HISTORY=
*            851025/CJ  SECTION NAME CHECK CORRECTED - APP26
*            850508/JE  FIELD-ID INPUT NO CHCK OF FUNCTION WHEN # 3 NO=18 
*            850313/JE  INDICATE 'NO INPUT' WHEN EQUAL FID ENTERED NO=18
*            841120/CJ  MUL&DIV NOW FROM ASS.ROUTINE
*            841101/CJ  APP NO28 IMPLEMENTED - USED BY "GO DIRECT"
*            840924/CJ  ILLEGAL NAMESETTING NEAR BASICVERB APP185 
* 
******************************************************************* 
	DDUM	WSMDDV
	PDIV 
	ENTRY	WSMAPP 
	EXPROC	SYNVAL	***SYNTAX-CONTROL VALIDATION 
	EXPROC	BSVSEA,PBIN,PBIN	***BASIC VERB SEARCH 
	EXT	GETIND	---ASSRUT:GET ITEM LENGTH 
	EXT	CHANFC	---ASSRUT:CHANGE FILE CODE
	EXT	GETVOL	---ASSRUT:GET VOLUME NAME 
	EXT	EMPTYT	---ASSRUT:CECK IF EMPTY 
	EXT	ICLEAR	---ASSRUT:CLEAR ITEM
	EXT	TESTB	---ASSRUT:TEST BIT POSITION
	EXT	CLEARB	---ASSRUT:CLEAR BIT POSITION
	EXT	POPEN	---ASSRUT:OPEN DISC FILE 
	EXT	PCLOSE	---ASSRUT:CLOSE DISC FILE 
	EXT	PSEARC	---ASSRUT:SEARCH SECTION NAME 
	EXT	WXDIV	---ASSRUT:DIVISION 
	EJECT
************************************************************************
* 
*    APPLICATION HANDLING MODULE
*     PERFORMS CORRESPONDING APPLICATION- 
*     ROUTINE DEPENDING ON ROUTINE-NUMBER 
* 
*    INPUT: LBIN1  = NUMBER OF INPUT CHARACTERS 
*           LBIN2  = EOI-KEY INDEX
*           LBIN3  = APPLICATION ROUTINE NUMBER 
* 
*    OUTPUT:LBIN1  = CURSOR-POSITION  AT 'NOT OK' (4) 
*           LBIN2  = EOI-KEY INDEX
*           LBIN3  = 0 = OK 'REWRITE' DISPLAY 
*                  = 1 = OK UNCONDITIONAL DISPLAY 
*                  = 2 = OK NO DISPLAY
*                  = 3 = NOT OK => ERROR MESSAGE
*                  = 4 = NOT OK => EDIT MODE 'LBIN1' CONTAIN CURSOR-POS 
* 
*           LBIN4  = 0 'BELL'-MESSAGE AT ERROR
*                  > 0 ERROR MESSAGE-NUMBER AT ERROR
* 
************************************************************************
	EJECT
WSMAPP	PROC 
	IB	LBIN3,APP010,APP020,	1-2	C
		APP030,APP040,APP050,	3-5	C 
		APP060,APP070,APP080,	6-8	C 
		APP090,APP100,APP110,	9-11	C
		APP120,APP130,APP140,	12-14	C 
		APP150,APP160,APP170,	15-17	C 
		APP180,APP190,APP200,	18-20	C 
		APP210,APP220,APP230,	21-23	C 
		APP240,APP250,APP260,	24-26	C 
		APP270,APP280	27-28 
APPOK0
	MOVE	LBIN3,W0	OK 
	RET
APPOK1
	MOVE	LBIN3,W1	OK UNCOND DISPLAY
	RET
APPOK2
	MOVE	LBIN3,W2	OK NO DISPLAY
	RET
APNOK3
	MOVE	LBIN3,W3	NOT OK ERROR MESSAGE 
	RET
APNOK4
	MOVE	LBIN3,W4	NOT OK EDIT-MODE 
	RET
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=1 
*     WSMENU FUNCTION VALUE 
* 
************************************************************************
APP010
	PERF	RANGE,W1,W4	***RANGE 1-4
	BOK	APPOK0	OK
	MOVE	LBIN4,W6
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=2 
*     SECTION NAME CONTROL
*     -ALREADY DEFINED? 
*     -NOT FOUND? 
*     -1ST POSITION ALPHABETIC
* 
************************************************************************
APP020
	MOVE	LSTR1,LSTR81
	MOVE	LBIN3,W6	FIELD LENGTH:=6
	CBL	LSTR1,=C'A',APP029 
	CBG	LSTR1,=C'Z',APP029 
	PERF	SPCPAD	***SPACE PADDING 
	CALL	ICLEAR,LSTR16	---ASSRUT:CLEAR ITEM
	MOVE	LSTR6A,=C' DSDS'	TYPE = D(EFINITION)
			TYPE = S(ECTION) 
	INSRT	LSTR81,W0,W6,LSTR16,W0	 NAME=> POS 6-11
	XCOPY	LSTR81,W5,W1,LSTR6A,GBIN1	STORE TYPE OF DATA = S 
	MOVE	LBIN1,W24	WORKPOINTER:=24 
	ADD	LBIN1,W2	GIVING 26 
	XCOPY	LSTR81,LBIN1,W8,GSTR8A,W0	STORE FILENAME 
	ADD	LBIN1,W8	ADJUST POINTER
	XCOPY	LSTR81,LBIN1,W6,GSTR6C,W0	STORE VOLUME ID
	CLEAR	LBOOLA	FALSE=DISC-ERROR (IF ANY) 
	CALL	PSEARC,LSTR81,BPOOL(W1)	---SEARCH SECTION ON DISC 
	BOK	APP028 
	BL	APP022	JMP IF CR=2 (DISC-ERROR) 
	SET	LBOOLA	TRUE=POOL-ERROR 
APP022
	CALL	PCLOSE,LSTR81,BPOOL(W1)	---CLOSE DISC FILE
	CBL	GBIN1,W3,APP027	JMP IF NEW 
	TBT	LBOOL4,APP027	JMP IF DUPLICATION 
	TBT	LBOOL8,APP027	JMP DUPL CH. SECT.NAME 
	EJECT
* 
*     ERROR AT SEARCH 
* 
	XCOPY	LBIN3,W0,W2,LSTR81,W20	UNPACK RETCODE BIN
	CBE	LBIN3,W1,APP02B	JMP IF NOT FOUND 
	MOVE	LBIN4,W0	BIT-INDEX:=0 
	MOVE	LSTR1,=X'31'	LOAD '1' 
	MOVE	LSTR16,=X'30'	LOAD WITH '0':S 
APP025
	CALL	TESTB,LBIN3,LBIN4	---TEST BIT (INDEX) 
	BOK	APP026	JMP IF FALSE = 0
	XCOPY	LSTR16,LBIN4,W1,LSTR1,W0	LOAD '1' WHEN TRUE = 1
APP026
	ADD	LBIN4,W1	NEXT BITINDEX 
	CBNG	LBIN4,W15,APP025	GO ON UNTIL > 15 
	MOVE	LBIN4,W8	ERRORMESSAGE NO:8
	B	APNOK3 
APP027
	DLETE	LSTR81,W0,W6	DELETE PREVIOUS INSERTION 
	B	APPOK0	OK
APP028
	CALL	PCLOSE,LSTR81,BPOOL(W1)	---CLOSE DISC FILE
	TBT	LBOOL4,APP02A	JMP IF DUPLICATION 
	MOVE	LBIN3,W6	POINTER:=6 
	MATCH	LSTR81,LBIN3,W6,GSTR6A,W0,W6	MATCH IF SAME NAME
	BOK	APP027	JMP IF SAME NAME
	TBT	LBOOL8,APP02A	JMP IF OLD 
	CBG	GBIN1,W2,APP027	OK IF UPDATE 
APP02A
	MOVE	LBIN3,=W'28'	'.......ALREADY DEFINED' 
	B	APP02C 
APP02B
	MOVE	LBIN3,=W'26'	'......NOT FOUND'
APP02C
	DLETE	LSTR81,W0,W6	DELETE PREFIX 
	DLETE	LSTR81,W20,W14	DELETE OVERFLOW INFO
	MOVE	LBIN4,GBIN1	LOAD FUNCTION NUMBER
	CBL	LBIN4,W3,APP02D
	SUB	LBIN4,W2	CALC FOR DEF. OR SECTION
APP02D
	ADD	LBIN4,LBIN3	CALC PROPER ERROR-NUMBER 
	B	APNOK3 
APP029
	MOVE	LBIN4,W9	ERROR MESSAGE NO=9 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=3 
*    SECTION TYPE CONTROL 
* 
************************************************************************
APP030
	PERF	RANGE,W1,W6	***RANGE 1-6
	BOK	APPOK0 
	MOVE	LBIN4,W10	ERROR-MESSAGE NO=10 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=4 
*    SECTION SIZE ROWS 1-23 
* 
************************************************************************
APP040
	MOVE	VBIN5,W15	INDEX:=15 
	MOVE	LBIN4,GBCD3I(VBIN5)	LOAD EFFEKTIV ROW SIZE
	PERF	RANGE,LBIN4,ROWS	***RANGE X-23
	BOK	APPOK0	OK
	MOVE	LBIN4,W11	ERROR MESSAGE NO=11 
	MOVE	LBCD3A,ROWS	LOAD HIGH LIMITFOR ERR-TEXT 
	B	APNOK3 
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=5 
*    SECTION SIZE COLUMNS 1-80
* 
************************************************************************
APP050
	MOVE	VBIN5,W16	INDEX:=16 
	MOVE	LBIN4,GBCD3I(VBIN5)	LOAD EFFEKTIV COLUMN SIZE 
	PERF	RANGE,LBIN4,COLS	***RANGE X-80
	BOK	APPOK0 
	MOVE	LBIN4,W11	ERROR MESSAGE NO=11 
	MOVE	LBCD3A,COLS	LOAD HIGH LIMIT FOR ERR-TEXT
	B	APNOK3 
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=6 
*     YES OR NO 
* 
************************************************************************
APP060
	PERF	YESVNO	***YES AND NO CHECK
	BOK	APPOK0	OK Y OR N 
	MOVE	LBIN4,W12	ERROR MESSAGE NO=12 
	B	APNOK3 
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=7 
*    SCREEN BACKGROUND DECORATION 
*      -N. NORMAL VIDEO    -R. REVERSED IMAGE 
*                               -L. LOW INTENSITY 
*                               -H. HIGH INTENSITY
* 
************************************************************************
APP070
	MOVE	LSTR4A,=C'RH'	DECORATION CODES
	MOVE	LBIN3,W0	POINTER:=0 
	MATCH	LSTR4A,LBIN3,W4,LSTR81,W0,W1 
	BNOK	APP079	ILLEGAL DEC. CODE
* 
*    FURTHER CONTROLS TO BE SOLVED
* 
	B	APPOK0	OK
APP079
	MOVE	LBIN4,W6	ERROR-MESSAGE NO-6 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=8 
*    STATIC FIELD DECORATION DEFAULT
*      -N. NORMAL VIDEO    -R. REVERSED IMAGE 
*          -L. LOW INTENSITY
*          -H. HIGH INTENSITY 
*                    -U. UNDERLINE
*                    -B. BLINKING 
* 
************************************************************************
APP080
	MOVE	LSTR6A,=C'RHUB'	DECORATION CODES
	MOVE	LBIN3,W0	POINTER:=0 
	MATCH	LSTR6A,LBIN3,W6,LSTR81,W0,W1 
	BNOK	APP089	ILLEGAL DEC. CODE
* 
*    FURTHER CONTROLS TO BE SOLVED
* 
	B	APPOK0	OK
APP089
	MOVE	LBIN4,W6	ERROR-MESSAGE NO-6 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=9 
*    NUMBER OF HEADLINES
*       MUST NOT EXCEED MAX ROW NO
* 
************************************************************************
APP090
	PERF	RANGE,W0,LBIN8	***RANGE 0-MAX ROW NO
	BOK	APP092	OK
	MOVE	LBIN4,W20	ERROR-MESSAGE NO-20 
	MOVE	LBCD3A,LBIN8	LOAD MAX ROW NO
	B	APNOK3	NOT OK
APP092
	MOVE	LBIN1,W0	ATTAB-POINTER:=0 
APP094
	XCOPY	LBIN4,W1,W1,ATTAB,LBIN1	STORE ROW NO 
	CBE	LBIN4,W0,APP099	END-OF-TABLE OK
	CBG	LBIN4,LBIN3,APP099	JMP IF GR NO OF HLINES
	ADD	LBIN1,W2	ADJUST POINTER
	XCOPY	LBIN4,W1,W1,ATTAB,LBIN1	STORE SEQ NO 
	CBNE	LBIN4,=X'00FF',APP098	JMP IF ERR NOT STATIC 
	ADD	LBIN1,W2	ADJUST POINTER
	B	APP094	GO ON 
APP098
	MOVE	LBIN4,W21	ERROR MESSAGE NO:21 
	B	APNOK3 
APP099
	B	APPOK0	OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=10
*    CONTROL OF DEFAULT GUIDING MESSAGE 
*     POS 1-2 MUST BE 'S:' FOR A SECTION MESSAGE
*     POS 1-2 MUST BE 'M:' FOR A LINE MESSAGE 
*     NUMBER OF INPUT CHARACTERS MUST BE 1- 6 FOR A SECTION 
*     NUMBER OF INPUT CHARACTERS MUST BE 1-78 FOR A LINE MESSAGE
*     POS 1 OF SECTION NAME MUST BE ALPHABETIC A-Z
* 
************************************************************************
APP100
	MOVE	LBIN4,W1	LOAD INDEX NUMB-OF-CHARS-TAB 
APP101
	SUB	LBIN1,W2	LENGTH ADJUSTMENT 
	MOVE	GBINIA(LBIN4),LBIN1	SAVE NUMB OF CHARACTERS 
	MOVE	LSTR4A,=C'S:M:'	LOAD MESSAGE TYPES
	MOVE	LBIN1,W0	WORKITEM:=0
	MATCH	LSTR4A,LBIN1,W4,LSTR81,W0,W2	WHAT TYPE?
	BNOK	APP109	ERROR
	CBL	GBINIA(LBIN4),W1,APP108	INCORRECT LENGTH 
	CBE	LBIN1,W2,APP105	JUMP IF LINE MESSAGE 
	CBG	GBINIA(LBIN4),W6,APP108	INCORRECT LENGTH 
	XCOPY	LSTR1,W0,W1,LSTR81,W2	COPY 1ST CHARACTER TO CHECK
	MOVE	LBIN1,GBINIA(LBIN4)	RELOAD NUMB OF INP CHARS
	ADD	LBIN1,W2	ADJUST
	MOVE	GBINIA(LBIN4),W6	SECTION NAME:=6 CHARACTERS 
	MOVE	LBIN3,W8	FIELD LENGTH:=8
	B	APP188	OK CHECK 1ST CHARACTER
APP105
	CBG	GBINIA(LBIN4),=W'78',APP108	INCORRECT LENGTH 
	B	APPOK0	OK
APP108
	MOVE	LBIN4,W6	ERROR-MESSAGE NO 6 
	B	APNOK3	NOT OK
APP109
	MOVE	LBIN4,W14	ERROR-MESSAGE NO 14 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=11
*    ORIGIN-MEDIA TYPE CONTROL
*     0=NO INPUT MEDIA
*     1=KEYBOARD INPUT
*    >1=OTHER MEDIA 
* 
************************************************************************
APP110
	PERF	RANGE,W0,W9	***RANGE 0-9
	BOK	APPOK0 
	MOVE	LBIN4,W6	ERROR-MESSAGE NO=6 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=12
*    DUPLICATION REFERENCES 
* 
*        FIELD NAME MUST BE DEFINED 
*       -WS99   0<99<10 
*       -WA99   0<99<100
*       -WN99   0<99<100
* 
************************************************************************
APP120
	MOVE	LSTR6A,=C'WSWAWN'	LOAD WSM WORK ITEM PREFIX 
	MOVE	LBIN4,W0	WORKPOINTER:=0 
	MATCH	LSTR6A,LBIN4,W6,LSTR81,W0,W2	SEARCH WSMWORK
	BOK	APP122	JMP IF WSM WORK ITEM
	CBG	LBIN1,W4,APP129	NUMB OF CHARS > 4
	MOVE	LBIN3,W4	FIELD LENGTH:=4
	PERF	SPCPAD	***SPACE PADDING 
	MOVE	LBIN4,W0	WORKPOINTER:=0 
	MATCH	FIDTAB,LBIN4,LFBIN,LSTR81,W0,W4	SERCH FIELD NAME 
	BOK	APPOK0	FIELD NAME FOUND OK 
	B	APP129	BRANCH ON ERROR 
* 
*    CHECK UP DATA TABLE T99:99 
* 
APP122
	CBE	LBIN1,W4,APP123	JMP IF 4 INP CHARS 
	MOVE	LBIN4,W1	ERROR MESSAGE NO:=1
	B	APNOK3 
APP123
	DLETE	LSTR81,W0,W2	DELETE WSM WORK ITEM PREFIX 
	MOVE	LBIN1,W9	HIGH-LIMIT FOR WS09
	CBL	LBIN4,W2,APP124	JMP IF WS
	MOVE	LBIN1,=W'99'	HIGH-LIMIT FOR WA99 WN99 
APP124
	PERF	RANGE,W0,LBIN1	***RANGE 0-9/99
	BNOK	APP128	JMP IF ERROR 
	COPY	LSTR1,W0,W1,LSTR81,W0	1ST DIGIT-POS 
	CBG	LSTR1,=C'9',APP137	JMP IF NOT DIGIT
	CBL	LSTR1,=C'0',APP137	JMP. IF NOT DIGIT 
	INSRT	LSTR81,W0,W2,LSTR6A,LBIN4	INSERT WSMWORKITEM PREFIX
	B	APPOK0 
APP128
	INSRT	LSTR81,W0,W2,LSTR6A,LBIN4	INSERT WSMWORKITEM PREFIX
APP129
	MOVE	LBIN4,W17	ERRORMESSAGE NO=17
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=13
*    AUTO SKIP/DUP OR BYPASS
* 
************************************************************************
APP130
	MOVE	LSTR1,LSTR81
	CBE	LSTR1,DUPL,APP132	JMP IF 'D' OK
	CBE	LSTR1,BYPASS,APP138	JMP IF B' OK 
	CBE	LSTR1,SKIP,APP138	JMP IF 'S' OK
	CBE	LSTR1,NO,APP138	JMP IF 'N' OK
	B	APP139 
APP132
	CALL	EMPTYT,GSTR1I(W24)	---CHECK IF EMPTY
	BNOK	APP137	JMP IF EMPTY = N(O) DUPL 
	CBE	GSTR1I(W24),YES,APP138	JMP IF Y(ES) DUPL OK
APP137
	MOVE	LBIN4,W6	ERROR-MESSAGE NO=6 
	B	APNOK3	NOT OK
APP138
	B	APPOK0 
APP139
	MOVE	LBIN4,W18	ERROR-MESSAGE NO-18 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=14
*    L(EFT) OR R(IGHT) ADJUSTED ? 
* 
************************************************************************
APP140
	MOVE	LSTR1,LSTR81
	CBE	LSTR1,LEFT,APP145
	CBE	LSTR1,RIGHT,APP145 
	MOVE	LBIN4,W19	ERROR MESSAGE NO=19 
	B	APNOK3	NOT OK
APP145			OK 
	B	APPOK0	OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=15
*    PRINTOUT POSITION CONTROL
* 
************************************************************************
APP150
	MOVE	LBIN4,=W'127'	HIGHLIMIT=127 
	PERF	RANGE,W1,LBIN4	***RANGE 1-127 
	BNOK	APP169	NOK
	XCOPY	LBIN4,W1,W1,GBINIA(W7),W0	ROW NO 
	CBL	LBIN3,LBIN4,APP159 
	B	APPOK0	OK
APP159
	MOVE	LBIN4,=W'25'	ERROR-MESSAGENO=25 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=16
*     PRINTOUT POSITION CONTROL 
* 
************************************************************************
APP160
	MOVE	LBIN4,=W'127'	HIGHLIMIT=127 
	PERF	RANGE,W1,LBIN4	***RANGE 1-127 
	BNOK	APP169	NOK
	MOVE	LBIN4,GBCD3I(W8)	ROW NO 
	XCOPY	LBIN3,W0,W1,LBIN4,W1	ROW NO
	CBNG	LBIN3,GBINIA(W7),APP159 
	B	APPOK0 
APP169
	MOVE	VBIN5,W12	INDEX:=12 
	MOVE	GBCD3I(VBIN5),W1	LOAD EFFEKTIV ROW SIZE 
	MOVE	LBCD3A,LBIN4
	MOVE	LBIN4,W11	ERROR-MESSAGE NO=11 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=17
*       DEFAULT VALUE 
* 
************************************************************************
APP170
	MOVE	GBINIA(W2),LBIN1	SAVE NUMB OF CHARS 
	B	APPOK0	OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=18
*    FIELD NAME CONTROL 
* 
************************************************************************
APP180
	MOVE	LSTR9A,=C' '	SPACE
	MOVE	LBIN20,W0	CLEAR POINTER 
	MATCH	LSTR81,LBIN20,LBIN1,LSTR9A,W0,W1	SPACE IN FIELD ID ? 
	BNE	APP180A	NOT FOUND
	ADD	LBIN20,W1	ADJUST FOUND SPACE POSITION
	CBNL	LBIN20,LBIN1,APP180A	JMP IF NOT LESS
	MOVE	LBIN3,LBIN1	LOAD NUMB OF INPUT CHARACTERS 
	SUB	LBIN3,LBIN20	CALC REST TO INVESTIGATE
	MATCH	LSTR81,LBIN20,LBIN3,LSTR9A,W0,LBIN3	MATCH IF REST = SPACE
	BOK	APP180A	OK IF REST = SPACES
	MOVE	LBIN4,=W'32'	ERROR MESSAGE:=32
	B	APNOK3 
APP180A 
	CALL	GETIND,STMTS,VBIN8,LBIN3	---GET ITEM LENGTH 
	MOVE	LBIN4,W0	INPUT BUFFER POINTER:=0
	PERF	BSVSEA,LBIN1,VBIN5	***BASIC VERB SEARCH 
	BNOK	APP185	NO BASIC VERB GO ON
APP183
	MOVE	LBIN4,=W'31'	ERROR-MESSAGE:=31
	B	APNOK3 
APP185
	CBNE	LBIN1,W3,APP186	JMP IF INPUTLENGTH /= 3 
	CALL	GETIND,OPRTS,VBIN8,LBIN3	---GET ITEM LENGTH 
	MOVE	LBIN3,=W'29'	POINTER:=29
	SUB	VBIN8,LBIN3	CALC LENGTH TO MATCH 
	MATCH	OPRTS,LBIN3,VBIN8,LSTR81,W0,W3	MATCH FUNCTION
	BNOK	APP187	NO FUNCTION OK 
	XCOPY	LBIN4,W1,W1,OPRVAL,LBIN3	GET OPERATION CODE
	CBNE	LBIN4,=X'00FF',APP183	JMP IF OPERATION CODE=FUNCTION
APP187
	MOVE	LBIN3,W20	POINTER:=20 
	MATCH	OPRTS,LBIN3,W3,LSTR81,W0,W3
	BOK	APP183	NOT OK IF STR FUNCTION
APP186
	MOVE	LBIN3,W4	FIELD LENGTH:=4
	PERF	SPCPAD	***SPACE PADDING 
	MOVE	LBIN4,W0	WORKPOINTER:=0 
	MATCH	FIDTAB,LBIN4,LFBIN,LSTR81,W0,W4	SERCH FIELD NAME 
	BNOK	APP182	FIELD NAME NOT FOUND OK
	ADD	LBIN4,W4	ADJUST POINTER TO REACH SEQ.NO
	XCOPY	LBIN3,W1,W1,FIDTAB,LBIN4	GET SEQ NO
	CBE	LBIN3,W0,APP181	NEW FIELD NOT OK WITH SAME ID
	CBE	LBIN3,LBIN12,APP18B	SAME SEQ.NO & F-ID => OK 
APP181
	SUB	LBIN4,W4	ADJUST
	CALL	WXDIV,LBIN4,W5,LBIN4	CALC SEQ NO
	ADD	LBIN4,W1	....WHEN NEW FIELD
	CBE	LBIN4,LBIN12,APP18B	JMP IF SAME SEQ NO 
	MOVE	LBIN4,W15	ERROR MESSAGE NO=15 
	B	APNOK3	NOT OK
APP18B
	MOVE	LBIN1,W0	=NO INPUT
	CALL	ICLEAR,LSTR81	---CLEAR ITEM 
	B	APPOK0 
APP182
	MOVE	LSTR6A,=C'WSWAWN'	LOAD WSM WORK ITEM PREFIX 
	MOVE	LBIN4,W0	WORKPOINTER:=0 
	MATCH	LSTR6A,LBIN4,W6,LSTR81,W0,W2	SEARCH WSMWORK
	BNOK	APP184	WSM WORK ITEM NOT FOUND OK 
	MOVE	LBIN4,W16	ERROR MESSAGE NO=16 
	B	APNOK3	NOT OK
APP184
	MOVE	LSTR1,LSTR81
	MOVE	LBIN3,W4	FIELD LENGTH:=4
APP188
	CBL	LSTR1,=C'A',APP189 
	CBG	LSTR1,=C'Z',APP189 
	PERF	SPCPAD	***SPACE PADDING 
	B	APPOK0	 1ST CHARACTER OK 
APP189
	MOVE	LBIN4,W9	ERROR MESSAGE NO=9 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=19
*    VOLUME NAME CONTROL
* 
************************************************************************
APP190
	MOVE	LBIN3,W6	FIELD LENGTH:=6
	PERF	SPCPAD	***SPACE PADDING 
	MOVE	LBIN3,W0	WORKITE=0
APP192
	XCOPY	LBIN4,W1,W1,DUNIT,LBIN3	GET FILE CODE
	CALL	CHANFC,DISC,LBIN4	---CHANGE FILE CODE 
	CALL	GETVOL,DISC,BPOOL(W1),LSTR6A,LBIN4	---GET VOLUME NAME 
	CALL	CLEARB,LBIN4,W4	---CLEAR BIT NO:=4 1MB-BIT
	CMP	LBIN4,W0	CHECKRETURN CODE
	BNOK	APP194	JUMP IF ERROR
	MATCH	LSTR6A,LBIN4,W6,LSTR81,W0,W6	VOLUME NAME EQUAL ? 
	BOK	APPOK0	FOUND OK
APP194
	ADD	LBIN3,W1	NEXT FILE CODE
	CBL	LBIN3,W17,APP192	GO ON IF LESS 17
	MOVE	LBIN4,W23	ERROR-MESSAGE /NOT LOADED'
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=20
*    FILENAME CONTROL 
* 
************************************************************************
APP200
	MOVE	LBIN3,W8	FIELD LENGTH :=8 
	PERF	SPCPAD	***SPACE PADDING 
	CALL	ICLEAR,LSTR16	---ASSRUT:CLEAR ITEM
	MOVE	LSTR6A,=C' DSDS'	TYPE = D(EFINITION)
			TYPE = S(ECTION) 
	INSRT	LSTR81,W0,W16,LSTR16,W0	 FILENAME=> POS 16-23
	INSRT	LSTR81,W16,W10,LSTR16,W0	 FILENAME=> POS 26-33 
	XCOPY	LSTR81,W5,W1,LSTR6A,GBIN1	STORE TYPE OF DATA = S 
	MOVE	LBIN1,W24	WORKPOINTER:=24 
	ADD	LBIN1,W10	GIVING 34
	XCOPY	LSTR81,LBIN1,W6,GSTR6C,W0	STORE VOLUME ID
	CALL	POPEN,LSTR81,BPOOL(W1)	---OPEN DISC FILE
	BNOK	APP208	JMP IF NOT FOUND 
	CALL	PCLOSE,LSTR81,BPOOL(W1)	---CLOSE DISC-FILE
	SUB	LBIN1,W8	ADJUST NUMBER TO DELETE 
	DLETE	LSTR81,W0,LBIN1	DELETE OVERFLOW INFO 
	B	APPOK0	JMP OK
APP208
	CALL	PCLOSE,LSTR81,BPOOL(W1)	---CLOSE DISC-FILE
	SUB	LBIN1,W8	ADJUST NUMBER TO DELETE 
	DLETE	LSTR81,W0,LBIN1	DELETE OVERFLOW INFO 
	DLETE	LSTR81,W8,W6	DELETE OVERFLOW INFO
	MOVE	LBIN4,W24	ERROR MESSAGENO:=24 
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=21
*    (.) OR (,) ? 
* 
************************************************************************
APP210
	MOVE	LSTR1,LSTR81
	CBE	LSTR1,=C'.',APP215 
	CBE	LSTR1,=C',',APP215 
	MOVE	LBIN4,W13	ERROR-MESSAGE NO 13 
	B	APNOK3	NOT OK
APP215			OK 
	B	APPOK0	OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=22
*    GUIDING MESSAGE
* 
************************************************************************
APP220
	MOVE	LBIN4,W3	LOAD INDEX NUMB-OF-CHARS-TAB 
	B	APP101	CHECK MESSAGE TYPE
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=23
*    APPLICATION MESSAGE
* 
************************************************************************
APP230
	MOVE	GBINIA(W4),LBIN1	LOAD NUMB OF CHARS 
	B	APPOK0 
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=24
*    VALIDATION CONTROL 
* 
************************************************************************
APP240
	PERF	SYNVAL	***SYNTAX-CONTROL VALIDATION 
	BNOK	APP248	JMP IF NOT OK
	MOVE	GBINIA(VBIN1),LBIN1	SAVE NUMB CHARS OF BASIC LINE 
	B	APPOK0 
APP248
	MOVE	LBCD3A,LBIN4	SYNTAX ERROR NUMBER
	MOVE	LBIN4,=W'26'	ERROR-MESSAGE NO=26
	B	APNOK3	NOT OK
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=25
*    DUPLICATION
* 
************************************************************************
APP250
	PERF	YESVNO	***YES AND NO CHECK
	BNOK	APP259	JMP IF NOT OK
	CBE	LSTR1,YES,APP254	JMP IF Y OK 
	CBE	GSTR1I(W16),DUPL,APP258	JMP IF SKP.DUP.BYP  =D 
APP254			OK 
	B	APPOK0 
APP258
	GETABX	LBIN4	GET CURRENT FIELD NUMBER
	ADD	LBIN4,W2	FIELDNUMBER:=FIELDNUMBER+2
	GETFLD	0,LBIN4,LBIN3	MAKE FIELD CURRENT
	MOVE	LBIN4,W6	ERROR-MESSAGE=&
	B	APNOK3 
APP259
	MOVE	LBIN4,W12	ERRORMESSAGE=12 
	B	APNOK3 
	EJECT
************************************************************************
* 
*    APPLICATION-ROUTINE NO=26
*    SECTION NAME 
* 
************************************************************************
APP260
	MOVE	LSTR1,LSTR81
	MOVE	LBIN3,W6	LENGTH=6 
	B	APP188 
************************************************************************
* 
*    APPLICATION-ROUTINE NO=27
*    PRINT-DEVICE 
* 
************************************************************************
APP270
	MOVE	LSTR2,LSTR81
	CBE	LSTR2,='LP',OKDEV
	CBE	LSTR2,='GP',OKDEV
	MOVE	LBIN4,=W'35'
	B	APNOK3 
OKDEV	B	APPOK1
	EJECT

********************************************************************* 
* 
*        APPLICATION-ROUTINE NO=28
*        OVER-RIDE
* 
********************************************************************* 

APP280
	MOVE	LBIN3,W4
	PERF	SPCPAD	***SPACE PADDING 
	MOVE	LBIN4,W0	WORKPOINTER:=0 
	MATCH	FIDTAB,LBIN4,LFBIN,LSTR81,W0,W4	SEARCH FIELD NAME
	BNOK	APP282
	MOVE	LBIN3,W0	WORKPOINTER:=0 
	MATCH	FIDTAB,LBIN3,LFBIN,GSTR4A,W0,W4	SEE IF BACKWARD
	CBL	LBIN4,LBIN3,APP286	JMP IF BACKWARD 
	MOVE	LBIN4,W0	WORKPOINTER:=0 
	MATCH	GSTR4A,LBIN4,W4,LSTR81,W0,W4	SEE IF SAME FIELD 
	BOK	APP284 
	B	APPOK0	FIELD NAME FOUND
	EJECT
APP282
	MOVE	LBIN4,=W'38'	"FIELD NAME NOT FOUND" 
	B	APNOK3 
APP284
	MOVE	LBIN4,=W'39'	"YOU ARE ALREADY THERE!!"
	B	APNOK3 
APP286
	MOVE	LBIN4,=W'40'	"ILLEGAL DIRECTION TO WANTED FIELD-NAME" 
	B	APNOK3 
	PEND 
	EJECT
************************************************************************
* 
*    RANGE CONTENT OF 'LBIN3' 
*     INPUT FORMAL PARAMETERS 
*       -LLIMIT   =  LOWLIMIT 
*       -HLIMIT   =  HIGHLIMIT
* 
************************************************************************
RANGE	PROC	LLIMIT,HLIMIT
	PBIN	LLIMIT
	PBIN	HLIMIT
	PERF	STRBIN	***CONVERT TO BINARY 
	CBL	LBIN3,LLIMIT,RANGE9	LESS LOWLIMIT
	CBG	LBIN3,HLIMIT,RANGE9	GREATER HIGHLIMIT
	CMP	W0,W0	CLEAR COND.REG.
	RET
RANGE9
	CMP	W0,W1	SET COND.REG.
	RET
	PEND 
	EJECT
************************************************************************
* 
*     CONVERT NUMERIC STRING VALUE INTO BINARY
* 
************************************************************************
STRBIN	PROC 
	MOVE	LBCD3A,LSTR81	LOAD INPUT DECIMAL
	MOVE	LBIN3,LBCD3A	LOAD DECIMAL TO BINARY 
	RET
	PEND 
************************************************************************
* 
*    CONTROL IF INPUT IS Y(ES) OR N(O)
* 
************************************************************************
YESVNO	PROC 
	MOVE	LSTR1,LSTR81
	CBE	LSTR1,NO,YESOK0
	CBE	LSTR1,YES,YESOK0 
	CMP	W0,W1	SET COND-REG=1 
	RET
YESOK0
	CMP	W0,W0	CLEAR COND-REG=0 
	RET
	PEND 
	EJECT
************************************************************************
* 
*     PAD REST OF INPUT BUFFER (LSTR81) ,UP TO ACTUAL FIELD LENGTH
*     WITH X'20':S
* 
*     INPUT              LBIN1  = NUMBER OF INPUT CHARACTERS OF INPUT BU
*                        LBIN3  = ACTUAL FIELD LENGTH 
*                        LSTR81 = INPUT BUFFER
* 
*     OUTPUT             LBIN1  = ACTUAL FIELD LENGTH (MAX-LENGTH)
*                        LSTR81 = INPUT BUFFER PADDED WITH X'20':S
* 
************************************************************************
SPCPAD	PROC 
	MOVE	LSTR9A,=X'20'	LOAD SPACE-STRING 
	SUB	LBIN3,LBIN1	CALC NUMBER OF EMPTY POSITIONS 
	BZ	SPC999	JUMP IF NO EMPTY POS 
	XCOPY	LSTR81,LBIN1,LBIN3,LSTR9A,W0	COPY X'20':S
	ADD	LBIN1,LBIN3	:=MEX FIELD LENGTH 
SPC999
	RET
	PEND 
	END

Full view