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

⟦29f6e1c8e⟧

    Length: 19510 (0x4c36)
    Notes: pts_type(SC)
    Names: »DEPROC.SC«

Derivation

└─⟦48601905a⟧ Bits:30009668 Philips computer tape "600121"
    └─⟦this⟧ »S:DE/DEPROC.SC« 
└─⟦d2a299635⟧ Bits:30009698 Philips computer tape "600415"
    └─⟦this⟧ »S:DE/DEPROC.SC« 

PTS(SC)

	IDENT	DEPROC	REL 10.0 80-04-11 
			80-01-17/JAER
* 
* 
*       THIS PROGRAM-MODUL CONTAINS ENTRIES TO THE DIFFERENT
*       STEERING ROUTINES OF THE FORMAT GENERATION
* 
	DDUM	DEDDIV
	PDIV 
	ENTRY	MTEXT	STEERING ROUTINE 
	ENTRY	LINIT	LINE INITIALIZATION
	ENTRY	FDIR	FORMAT FIELD DIRECTIVE
* 
	ENTRY	DESC	DESCRIPTOR STORING
	EXT	FTEXT	FORMAT TEXT
	EXT	FKI	FORMAT KEYED INPUT 
	EXT	FMELI	FORMAT EDITING 
	EXT	FCOPY	FORMAT COPYING 
	EXT	FVAL	FORMAT VALIDATION 
	EXT	FGEN	FORMAT GENERATION 
	EXT	FACC	FORMAT ACCUMULATION 
	EXT	FDUPL	FORMAT DUPLICATION 
	EXT	FTAB	FORMAT TABULATION 
	EXT	FLINK	FORMAT LINKING 
	EXT	FNL	FORMAT NEW LINE
	EXT	NOPOOL	NUMBER OF USED POOLS
	EXT	DERROR	ERRORMESSAGE
	EXT	UPDBOL	UPDATE BOOLEAN/WORD 
	EXT	DEPOOL	BUFFERRESERVATIN-MODUL
	EXT	EMPTYT	ASSEMBLY SUBROUTINE EMPTYT  - 
	EJECT
* 
*       KEYTABLE
* 
CLR	EQU	X'8F'	CLEAR 
CAN	EQU	X'91'	CANCEL
RET	EQU	X'92'	RETURN
NOK	EQU	X'FF'	NO KEY
TOT	EQU	X'93'	TOTAL 
* 
DEKTAB6	KTAB	CLR,CAN,RET,NOK,TOT
* 
DEKTAB7	KTAB	CLR,CAN,RET
* 
	EJECT
* 
*       MTEXT 
*       - MAKES MATCH OF 'LINE DESIGN' UNTIL EOL OR NEXT FIELD IS FOUND 
*       - EDIT TEXT PARTS OF 'LINE DESIGN' IN 'LINE DISPLAY'
*       - GENERATES 'FTEXT'- AND 'FTAB'-STATMENTS 
*       - DISPLAYS FIELDDEPENDENT INFO WHEN FOUND IN 'MATCH'
*       - SIGNALS IN 'DEBINW2' AS FOLLOWS;
*         = 0 OK
*         = 1 NO AVAILABLE BUFFERS;CANCEL 
*         = 2 NO AVAILABLE BUFFERS;RETUR
*         = 4 NO AVAILABLE BUFFERS/MAX LIMIT EXCEEDED;KTOT
* 
************************************************************************
MTEXT	PROC
MT10
	MOVE	DEBINW2,W0
	SWITCH 
	PERF	MROUT	MATCHROUTINE
	TBF	BOOL3,MT20	F= NO NO FTAB 
* 
*      FTAB-FTEXT 
* 
	PERF	FTAB	GENERATE FTAB
	CBNE	DEBINW2,W0,MT99	ERROR SIGNAL
MT20
* 
*      FTEXT
* 
	TBF	BOOL4,MT35	F=NO FTEXT
	PERF	FTEXT	GENERATE FTEXT
	CBNE	DEBINW2,W0,MT99	ERROR SIGNAL
	XCOPY	LDISP,W0,BIN5,LDES,W0	COPY TEXT
	TBT	DOOL8,MT35	JUMP IF NO DISPLAY
	DISPLAY	2,W3,W3	DISPLAY LDISP
MT35
	TBT	BOOL2,MT40	JUMP IF FIELD IS FOUND
	CBE	EOLINE,W1,MT99	JUMP IF EOL 
	B	MT10	GO ON MATCH 
MT40
	ADD	BIN10,W1	NEXT FIELD
	MOVE	FDVBCD(W4),BIN10
	MOVE	FDVBCD(W5),BIN6	FIELDSTART
	MOVE	FDVBCD(W6),BIN7	FIELDLENGTH 
	TBT	BOOL6,MT50	JUMP IF BALANCE FORMAT
*       CHECK IF RECORD LENGTH IS EXCEEDED
	MOVE	BIN16,BIN13	LOAD LAST DISPL 
	ADD	BIN16,BIN14	ADD LAST FIELD LENGTH
	MOVE	BIN15,BIN7	LOAD ACTUAL FIELDLENGTH
	TBT	ALPHA,MT45	JUMP IF ALPHA 
	ADD	BIN15,W2 
	DIV	BIN15,W2	NUMBER OF BYTES 
MT45
	ADD	BIN16,BIN15	ADD ACTUAL FIELD LENGTH
	MOVE	FDVBCD(W8),BIN16	STORE USED RECORDSPACE 
MT50
	TBT	DOOL8,MT55	JUMP IF NO ERASE
	DISPLAY	2,W4,W7	DISPLAY FIELDNR,-LENGTH,-START 
MT55
	TBT	BOOL6,MT58	JUMP IF BALANCE FORMAT
	CBG	BIN10,=X'FF',MT90	FIELDNR MAX REACHED
	CBG	BIN16,FMTWK(W14),MT80	MAX RECLEN EXCEEDED
MT58
	TBT	DOOL8,MT60	JUMP IF NO ERASE
	ERASE	10,W4,W0	ERASE ALL FKI/NCLR-FIELDS 
MT60
	PERF	FINIT	FIELD INIT WORKITEMS
	B	MT99	OK
MT80
	MOVE	DEBINW4,W14	'MAX RECORD LENGTH EXCEEDED'
	B	MT95 
MT90
	MOVE	DEBINW4,W16 
MT95
	PERF	DERROR,DEKTAB6
	CBE	DEBINW2,W1,MT95	JUMP IF CLEAR-KEY
	CBNE	DEBINW2,W5,MT98 
	PERF	FNL	FORMAT NEW LINE 
	CBNE	DEBINW2,W0,MT99 
	MOVE	DEBINW2,W5	SIMULATE TOT-KEY 
MT98
	SUB	DEBINW2,W1	ADJUST FOR CAN,RET,---,TOT
MT99
	RET
	PEND 
	EJECT
MROUT	PROC
******************************************************
* 
*        MATCHING ROUTINE 
* 
*        MATCH FOR '<'  => (FKI/FINP) 
* 
*        TAB    = BIN6  => FKI <TABPOS> ........
*        NUMB   = BIN7  => 'MAXL' =FIELDLENGTH (FROM SUBROUTINE 'PICMA')
*        MATCH  = BOOL2    T= '#'-MATCHED 
*                 BIN12 => FMELI <NUMB OF PICCHARS> (FROM SUBROUTINE 'PI
*                STATSH => PICTURE STRING 'FMELI' (FROM SUBROUTINE 'PICM
*                DEBIN5 => PICTURE STRING STARTPOSITION IN LDES 
* 
******************************************************
* 
*        MATCH FOR ' ':S => (FTAB)
* 
*        TAB    = BIN8  => FTAB <TABPOS>
*        NUMB   = BIN16 => NOT USED 
*        MATCH  = BOOL3    T= ' '-MATCHED 
* 
******************************************************
* 
*        MATCH INVERTED FOR '<':S OR ' ':S (FTEXT)
* 
*        TAB    = BIN16 => NOT USED 
*        NUMB   = BIN9  => FTEXT <NUMBER OF CHARS> <CH> <CH> .....
*        MATCH  = BOOL4    T= TEXT MATCHED
*                 BIN11 => STARTPOSITION OF 'FTEXT' IN ITEM 'LINE DESIGN
******************************************************
	EJECT
	CLEAR	BOOL2	F=NO # MATCH 
	CLEAR	BOOL3	F=NO ' ' MATCH 
	CLEAR	BOOL4	F=NO TEXT MATCH
	MOVE	STR1A,=C'<'	CHARACTER TO BE SEARCHED
	CLEAR	BOOL9	F=ORIGINAL MATCH MODE
	PERF	LININV,STR1A,BOOL9,BIN6,BIN16,BOOL2 
	TBT	BOOL2,MR60	MATCH FOUND 
	CBNE	EOLINE,W0,MR99	END-OF-LINE
	MOVE	STR1A,=C' '	CHARACTER TO BE SEARCHED
	CLEAR	BOOL9
	PERF	LININV,STR1A,BOOL9,BIN8,BIN16,BOOL3 
	CBNE	EOLINE,W0,MR99	END-OF-LINE
	TBT	BOOL3,MR10	MATCH FOUND 
MR05
	MOVE	STR2A,=C'< '	CHARACTERS TO BE SEARCHED
	SET	BOOL9	T=INVERTED MATCH 
	PERF	LININV,STR2A,BOOL9,BIN16,BIN9,BOOL4 
	MOVE	BIN8,BIN11
	ADD	BIN8,W1
	SET	BOOL3
	CBNE	EOLINE,W0,MR99	END-OF-LINE
	TBT	BOOL4,MR30	MATCH FOUND 
	MOVE	EOLINE,W1	INDICATE END-OF-LINE
	B	MR99 
*        SPACE MATCH FOUND
MR10
	MOVE	STR1A,=C'<'	CHARACTER TO BESEARCHED
	CLEAR	BOOL9	F=ORIGINAL MATCH MODE
	PERF	LININV,STR1A,BOOL9,BIN6,BIN16,BOOL2 
	TBT	BOOL2,MR50	MATCH FOUND 
	CBNE	EOLINE,W0,MR99	END-OF-LINE
	B	MR05 
*        TEXT MATCH FOUND 
MR30
* 
*       MATCH IF LESS THAN OR EQUAL 4 SPACES WITH FOLLOWING TEXT
*       IN THAT CASE INDICATE JUST ONE FTEXT
* 
	MOVE	DEBIN4,BIN11	SAVE ST.POS FOT TEXT 
MR35
	MOVE	DEBIN5,BIN5	SAVE LINE POSITION
	MOVE	STR1A,=' '	' '=MATCH-CHARCTER 
	CLEAR	BOOL9	F=ORIGINAL MATCH MODE
	CLEAR	BOOL5	 
	PERF	LININV,STR1A,BOOL9,DEBIN1,BIN16,BOOL5 
	TBF	BOOL5,MR40	JUMP IF NO MATCH
	CBNE	EOLINE,W0,MR45	END-OF-LINE
	CBG	BIN16,W4,MR40	JUMP IF MORE THAN 4 SPACES 
	MOVE	STR2A,='< '	MATCH CHARCTERS 
	SET	BOOL9	T=INVERTED MATCH MODE
	CLEAR	BOOL5
	PERF	LININV,STR2A,BOOL9,DEBIN1,DEBIN2,BOOL5
	TBF	BOOL5,MR40	JUMP IF NO INV.-MATCH 
	ADD	BIN9,BIN16	ADJUST NUMB CHARS+NUMB SPACES 
	ADD	BIN9,DEBIN2	ADJUST NUMB CHARS+NUMB CHARS 
	CBNE	EOLINE,W0,MR45	END-OF-LINE
	B	MR35 
MR40
	MOVE	BIN5,DEBIN5	RESTORE LINPOS WHEN NO SP+TEXT
MR45
	MOVE	BIN11,DEBIN4	RESTORE FTEXT STARTPOS 
	B	MR99 
MR50
	CLEAR	BOOL3	NO SP-MATCH INDICATION 
			NEEDED 
MR60
	MOVE	DEBIN5,BIN5	SAVE STARTPOIN PICTUR 
	PERF	PICMA	PICTURE STRING MATCH/CONVERT
MR99
	RET
	PEND 
	EJECT
* 
*        LINE DESIGN INVESTIGATION PROCEDURE
* 
*        INPUT PARAMETERS : CHAR  = CHARACTER(S) TO BE SEARCHED 
*                           MOD   = F ORIGINAL MATCHING 
*                                 = T INVERTED MATCHING 
* 
*        OUTPUT PARAMETERS: TAB   = TABULATION POSITION 
*                           NUMB  = NUMBER OF MATCHES 
*                           MATCH = F NO MATCH FOUND
*                                 = T MATCH FOUND 
* 
*************************************************************** 
LININV	PROC	CHAR,MOD,TAB,NUMB,MATCH 
	CBE	BIN5,FMTWK(W5),LIN098	JUMP IF ENDPOS REACHED 
	CLEAR	MATCH	F= NO MATCH
	MOVE	TAB,BIN5	LOAD ACTUAL TABPOS 
	MOVE	NUMB,W0	ZEROIZE NUMBER
LIN000
	TBT	MOD,LIN010	JUMP IF INVERTED MOD
	MATCH	LDES,BIN5,W1,CHAR,W0,W1
	BNOK	LIN040	NO MATCH 
	B	LIN020	NEXT MATCH
LIN010
	MOVE	BIN15,W0	MATCHINGPOINTER:=0 
	MATCH	CHAR,BIN15,W2,LDES,BIN5,W1 
	BOK	LIN050	MATCH FOUND NOK 
LIN020
	TBT	MATCH,LIN025	JUMP IF ALREADY MATCHED 
	MOVE	BIN11,TAB	STORE STARTPOSITON
	SET	MATCH	INVERTED MATCH FOUNF 
LIN025
	ADD	BIN5,W1	NEXT POSITION
	ADD	TAB,W1	NEXT TABPOS 
	ADD	NUMB,W1	NUMBER OF   MATCHES
	CBE	BIN5,FMTWK(W5),LIN098	JUMP IF ENDPOS REACHED 
	B	LIN000	NEXT MATCH INV
LIN040
	MOVE	BIN5,TAB	RESTORE ACTUAL POSITION
	ADD	TAB,W1	ADJUST TABPOS 
LIN050
	MOVE	EOLINE,W0	NO END-OF-LINE
	B	LIN099 
LIN098
	MOVE	EOLINE,W1	END-OF-LINE 
	ADD	TAB,W1	NEXT TABPOS 
LIN099
	RET
	PEND 
	EJECT
* 
*       LINE INITIALIZATION OF WORKITEMS
* 
LINIT	PROC
	MOVE	BIN5,W0	LINEPOSITION:=0 
	MOVE	FMTWK(W5),W0
	CLEAR	BOOL2	F=NO MATCH '#' 
	CLEAR	BOOL3	F=NO MATCH ' ' 
	CLEAR	BOOL4	F=NO MATCH '<STRG>'
	CLEAR	DOOL1	F=NO FIELD CONFIRM CURRLINE
	PERF	FINIT	FIELD INIT WORKITEMS
	RET
	PEND 
	EJECT
* 
*       FIELD INITIALIZATION OF WORKITEMS 
* 
FINIT	PROC
	MOVE	FMTWK(W1),W0	NUMB OF VALID. CHARS:=0
	MOVE	FMTWK(W2),W0	NUMB OF GENERAT. CHARS:=0
	MOVE	FMTWK(W3),W0	NUMB OF ACCUMULAT. CHARS:=0
	MOVE	FMTWK(W4),W0	NUMB OF DUPL. CHARS:=0 
	MOVE	FMTWK(W10),W0	NUMB OF CHARS STRG1:=0
	MOVE	FMTWK(W11),W0	NUMB OF CHARS STRG2:=0
	MOVE	FMTWK(W12),W0	NUMB OF CHARS STRG1+2:=0
	RET
	PEND 
	EJECT
* 
*       PICTURE STRING MATCH AND CONVERTION 
* 
*       MATCHCHARCTER-TABLE            WORKITEMS
*       0  L     FLENGTH PLENGTH       INPUT : BIN5 = STPOS LDES
*       1  R     FLENGTH PLENGTH
*       2  A     FLENGTH PLENGTH       WORK  : BIN16= MATCHININDEX
*       3  P     FLENGTH PLENGTH               BIN15= SAVED DITO
*       4  T     FLENGTH PLENGTH
*       5  X     FLENGTH PLENGTH
*       6  Z     FLENGTH PLENGTH       OUTPUT: BIN5 = STPOS NEXT MATCH L
*       7  Y     FLENGTH PLENGTH               BIN7 = FIELDLENGTH=MAXL
*       8  +             PLENGTH               BIN12= LENGTH OF PIC.-STR
*       9  S  -          PLENGTH               STATSH=PICTURE-STRING
*      10  ,             PLENGTH
*      11  .  V          PLENGTH
*      12  >                      (END OF FIELD)
*      13  <
*      14  0  X  FLENGTH PLENGTH
*   NO MATCH  E          PLENGTH+1
* 
************************************************************************
PICMA	PROC
	MOVE	STATSH,=' '	SPACES PICTURE-STRING 
	MOVE	BIN12,W0	NUMB OF LAYOUT CHARS:=0
	MOVE	DEBINW1,W0	SET NCLR-BIT 
	TBF	BOOL6,PIC1	JUMP IF GENERAL FORMAT
	ADD	DEBINW1,W32	SET CTAB-BIT FOR BALANCEFORM 
PIC1
	CALL	UPDBOL,DEBINW1	INITIATE FIELDCONTROLBITS DEF
	MOVE	BIN7,W0	FIELDLENGTH:=0
	MOVE	BIN16,W0
	MATCH	PICSTR,BIN16,W15,LDES,BIN5,W1
	BNOK	PICNE	INSERT
	CBE	BIN16,W0,PICA0	JUMP IF = 0 
	IB	BIN16,PICA1,PICN2,PICN3,PICN3,	1-4	C
		PICN3,PICN3,PICN3,PICN8,PICN9,	5-9	C
		PICN10,PICN11,PICNE,PICNE,PICN14	10-14
	B	PICNE
*       ALPHANUMERIC
PICA1			ALPHANUMERIC RIGHT
	SET	REWRT	INDICATE REWRITE 
	SET	SCHK2	RIGHT ADJUST ALPHANUM
PICA0			ALPHANUMERIC LEFT 
	SET	ALPHA	INICATE ALPANUMERIC FIELD
PICA
	XCOPY	STATSH,BIN12,W1,LDES,BIN5
	ADD	BIN12,W1	NEXT PICCHARS 
	ADD	BIN5,W1	NEXT LDESPOS 
	ADD	BIN7,W1	ADD 1 TO FIELDLENGTH 
	MOVE	BIN16,W0	INITIATE TABLE-INDEX 
	MATCH	PICSTR,BIN16,W15,LDES,BIN5,W1
	CBE	BIN16,W12,PIC99	'>' FOUND READY
	B	PICA 
*       NUMERIC FIELDS
PICN3 
	SET	REWRT
PICN2 
	XCOPY	STATSH,BIN12,W1,LDES,BIN5
	ADD	BIN7,W1	ADD 1 TO FIELD LENGTH
	B	PICNM	NEXT MATCH 
PICN8 
	SET	SCHK1	INDICATE SIGN
	B	PICN10 
PICN9 
	XCOPY	STATSH,BIN12,W1,PICCON,W0
	SET	SCHK1	INDICATE SIGN
	SET	REWRT	INDICATE REWRITE 
	B	PICNM	NEXT MATCH 
PICN11
	SET	REWRT
	XCOPY	STATSH,BIN12,W1,PICCON,W1
	B	PICNM	NEXT MATCH 
PICN14
	XCOPY	STATSH,BIN12,W1,PICCON,W3
	SET	SCHK2	INDICATE LEFT ZERO FILL
	SET	REWRT	INDICATE REWRT 
	ADD	BIN7,W1	ADD 1 TO FIELD LENGTH
	B	PICNM	NEXT MATCH 
PICNE 
	XCOPY	STATSH,BIN12,W1,PICCON,W2
	ADD	BIN12,W1	NEXT CHARACTER
PICN10
	SET	REWRT	INDICATE REWRITE 
	XCOPY	STATSH,BIN12,W1,LDES,BIN5
PICNM 
	ADD	BIN12,W1	NEXT PICCHARS 
	ADD	BIN5,W1	NEXT LDES POSITION 
	MOVE	BIN16,W0	INITIATE TABLE-INDEX 
	MATCH	PICSTR,BIN16,W15,LDES,BIN5,W1
	BNOK	PICNE	INSERT
	CBE	BIN16,W0,PICNE	0=L =>EL
	IB	BIN16,PICNE,PICN2,PICN3,PICN3,	1-4	C
		PICN3,PICN3,PICN3,PICN8,PICN9,	5-9	C
		PICN10,PICN11,PIC99,PICNE,PICN14	10-14
PIC99 
	ADD	BIN5,W1
	RET
	PEND 
	EJECT
* 
*       FORMAT FIELD DIRECTIVE PROCESSING 
* 
*       - PROCESSES FORMAT FIELD DIRECTIVE CODE 
*         FKI  AND FMELI/FCOPY
*       INPUT VARIABLES: DEBIN5 = SAVED RESTARTPOINT OF PICTURESTRING 
* 
* 
*       OUTPUT VARIABLES: 
*                          DEBINW2 = 0 OK GO ON 
*                                  = 1 NO AVAILABLE BUFFERS;CANCEL
*                                  = 2 NO AVAILABLE BUFFERS;RETUR 
*                                  = 4 MAXIMUM BUFFERS USED:KTOT
* 
*********************************************************************** 
* 
FDIR	PROC 
* 
*        FORMAT DIREKTIV GENERATION 
* 
	MOVE	DEBINW2,W0	ZEROISE OUTPUT PARAM 
	TBF	BOOL2,FDIR99	NO FIELD FOUND
* 
*       FKI  + FCOPY/FMELI
* 
	SWITCH 
	PERF	FKI	GENERATE FKI
	CBNE	DEBINW2,W0,FDIR99	ERROR SIGNALS 
	TBT	BOOL6,FDIR10	JUMP IF BALANCE FORMAT
	PERF	DESC	GENERATE DESCRIPTOR
	CBNE	DEBINW2,W0,FDIR99	ERROR SIGNALS 
	TBT	ALPHA,FDIR34	JUMP IF ALPHA 
FDIR10
	MOVE	BIN5,DEBIN5	RESTORE PIC.STARTPOINT
	PERF	PICMA 
	PERF	FMELI	GENERATE FMELI
	B	FDIR70 
FDIR34
	PERF	FCOPY	GENERATE FCOPY
FDIR70
	XCOPY	LDISP,W0,BIN5,LDES,W0	COPY TEXT
	TBT	DOOL8,FDIR73	JUMP IF NO DISPLAY
	DISPLAY	2,W3,W3	DISPLAY LDISP
	EJECT
* 
*       FVAL (+) FGEN (+) FACC
* 
FDIR73
	SET	BOOL1	T=FIRTS FIELD CONFIRMED
	SET	DOOL1	T=FIELD CONFIRM CURRLINE 
	CALL	EMPTYT,JOBSPC	CHECK IF ANY VAL,GEN OR ACC 
	BNOK	FDIR85
	MOVE	DEBIN1,W0	STARTPOSITION 
	MOVE	DEBIN4,W0	STARTPOS IN JOBSPC
	MOVE	DEBIN5,W0	NUMB OF DELETED CHARS:=0
FDIR75
	MOVE	STRG10A,='#V:#G:#A:'
	MOVE	FBIN1,W0	FUNCINDEX POINTER:=0 
	MATCH	STRG10A,FBIN1,W9,JOBSPC,DEBIN4,W3
	BNOK	FDIR85	NO MORE FUNCTIONS
	ADD	FBIN1,W3 
	DIV	FBIN1,W3	COMPUTE FUNC-INDEX
	SUB	FMTWK(FBIN1),DEBIN5	ADJUST ENDPOS FOR DELCHARS 
	SWITCH 
	PERFI	FBIN1,FVAL,FGEN,FACC	FVAL,FGEN,FACC
	CBNE	DEBINW2,W0,FDIR99	ERROR SIGNALS 
	MOVE	DEBIN1,DEBIN4	STARTPOS'JOBSPC' NEXT FUNC
	B	FDIR75	GO ON NEXT FUNCTION 
FDIR85
	CALL	EMPTYT,DUPL	LOOK IF DUPL EMPTY
	BNOK	FDIR90	JUMP IF EMPTY
	MOVE	DEBIN1,W0	STARTPOSITION 
	MOVE	DEBIN4,W0	STARTPOS IN 'DUPL'
	MOVE	DEBIN5,W0	NUMB OF DELETED CHARS:=0
	PERF	FDUPL 
FDIR90
	TBF	DOOL8,FDIR99 
	ERASE	11,W4,W0	CLEAR IN CORE 
FDIR99
	RET
	PEND 
	EJECT
* 
*       DESCRIPTOR-TABLE STORING
* 
*       EACH FIELD TAKES TW0 WORDS
* 
*       WORD1 
*        -TYPE     BITS 0-3 = 0 STRG-VARIABLE 
*                  (BYTE 1) = 3 BCD-VARIABLE
*        -LENGTH   BITS 4-15
*                  (BYTE 1) 
*                  BITS 0-15= - NUMBER OF MATCHED #:S WHEN STRG 
*                  (BYTE 2)   - (NUMBER OF MATCHED #:S + 1)/2 WHEN BCD
* 
*       WORD2 
*        -DISPLACEMENT      = LAST DISPLACEMENTS + LAST LENGTH
*                           = BIN13 + BIN14 
* 
************************************************************************
DESC	PROC 
	MOVE	BIN16,W0	WORKITEM:=0
	MOVE	BIN15,BIN7	LOAD NUMBER OF '#'-POS 
	TBT	ALPHA,DESC10	JUMP IF ALPHA 
* 
*       NUMERIC FIELD 
* 
	ADD	BIN16,=X'3000'	TYPE = BCD = 3
	ADD	BIN15,W2 
	DIV	BIN15,W2	NUMBER OF BYTES 
DESC10
	ADD	BIN16,BIN15	LOAD TYPE AND LENGTH 
	XCOPY	BPOOL(BIN4),BIN2,W2,BIN16,W0	STORE TYPE/LENGTH 
	ADD	BIN2,W2	NEXT POS 
	MOVE	BIN16,BIN13	RESTORE LAST DISPL
	ADD	BIN16,BIN14	ADJUST DISPLACEMENT
	XCOPY	BPOOL(BIN4),BIN2,W2,BIN16,W0	STORE DISPLACEMENTS 
	ADD	BIN2,W2	NEXT POS 
	MOVE	BIN13,BIN16	SAVE LAST DISPL 
	MOVE	BIN14,BIN15	SAVE LAST LENGTH
	CBL	BIN2,W188,DESC99	JUMP IF NOT END OF BUFFER 
DESC20
	MOVE	BIN16,W1	NUMBER OF WANTED BUFFERS 
	PERF	DEPOOL,W3,BIN16,BIN4,STRG10A	CHAIN ANOTHER BUFFER 
	BNOK	DESC30
	MOVE	DEBINW2,W0
	MOVE	BIN4,BIN16	LOAD NEW BUFFERPOINTER 
	ADD	PINDND,W1	NUMBER OF DESC-BUFFERS+1 
	PERF	NOPOOL	NUMBER OF POOLS
	DISPLAY 2,W2,W2	DISPLAY DITO WHILE CHANGED 
	MOVE	BPOOL(BIN4),HEX00 
	MOVE	BIN2,W0	BUFFER PONTER:=0
	B	DESC99 
DESC30
	PERF	DERROR,DEKTAB7
	CBE	DEBINW2,W1,DESC20
	SUB	DEBINW2,W1	ADJUST FOR CANC RET 
DESC99
	RET
	PEND 
	END

Full view