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

⟦452c10444⟧

    Length: 20746 (0x510a)
    Notes: pts_type(SC)
    Names: »DANTER.SC«

Derivation

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

PTS(SC)

 IDENT DANTER PRR 1.0 80-01-07/DALI 
******************************************
* THIS ROUTINE HANDLE THE KEYBOARD INPUT *
* AND IS A MODIFIED VERSION OF THE STAN- *
* DARD S C R E E N - P A C K A G E.      *
******************************************
* 
*    RUNNING UNDER:  CREDIT REL 4.1 
*                    TOSS   REL 9.1 
******************************************
 DDUM DEDDIV
 PDIV 
* 
 ENTRY DECLRA CLEAR ALL VARIABLE FIELDS 
 ENTRY DECLRS CLEAR SOME VARIABLE FIELDS
 ENTRY DECLRN CLEAR NO VARIABLE FIELDS
 ENTRY DECLRD 
	ENTRY	DERR	DENTER-ERROR
	EXT	DERROR	ERROR-MESSAGES
 EXT DEGEN GENERATION ROUTINE 
	EXT	CANC	-ROUTINES 
* 
 EXT DESTAT BUILD THE STATUSLINE
 EXT DEAPPL STANDARD ROUTINE TO 
 EXT DEAPPU USER ROUTINE TO HANDLE
			HANDLE APPL VALUES 
			APPL VALUES
 EXT DETCHK USER ROUTINE TO EVALUATE
			CONDITIONAL TABULATION 
 EXT DENVAL 
 EXT DEEDIT 
 EXT DENDUP 
 EXT DEFORC HANDLE FORCEDITEM 
 EXT DEVERI KEY-VERIFICATION
* 
	EXT	EMPTYT	ASSEMBLY SUBROUTINE EMPTYT  - 
			TEST IF DATA ITEM IS EMPTY 
 EXT FORCED ASSEMBLY SUBROUTINE FORCED  - 
			 TEST IF DATA ITEM IS FORCED 
 EXT ATTDB ASSEMBLY SUBROUTINE ATTDB -
			ATTACH DESCRIPTORBLOCK 
	EXT	ATTPRT	RESERVE PRINTER 
 EXT ATTDEV RESERVE DEVICE
	EXT	DETPRT	RELEASE PRINTER 
 EXT MASK 
 EXT GETVAL LOOK FOR VALIDATION-
			STRING FOR CURRENT FIELD 
 EXT GETGEN LOOK FOR GENERARTION- 
			STRING FOR CURRENT FIELD 
 EXT TESTB TEST FOR A BIT IN A BIN
 EXT CLEARB CLEAR A BIT IN A BIN ITEM 
	EXT	DELOCK	TEST KEY-LOCKS
 EXT GETFWD ASSEMBLY SUBROUTINE GETFWD -
			EXECUTE GETFLD.
			NOTE THAT CONDITION=3, 
			MEANING THAT EMPTY 
			COMPULSURY FIELDS IS 
			FOUND,WILL "NOT" BE
			INDICATED
 EXT ADJUST ASSEMBLY SUBROUTINE ADJUST -
			ADJUST FORMATPOINTERS AFTER
			EXECUTION OF GETFWD
 EJECT
* 
 INCLUDE DELITT,LIST
 EJECT
* 
*    CLEAR ALL VARIABLE FIELD BEFORE HANDLING THE PICTURE 
* 
DECLRA PROC 
	PERF	DENTER,W1 
	RET
 PEND 
* 
*    CLEAR SOME VARIABLE FIELDS BEFORE HANDLING THE PICTURE 
* 
DECLRS PROC 
	PERF	DENTER,W2 
	RET
 PEND 
* 
*    CLEAR NO VARIABLE FIELDS BEFORE HANDLING THE PICTURE 
* 
DECLRN PROC 
	PERF	DENTER,W3 
	RET
 PEND 
* 
*    CLEAR SOME VARIABLE FILEDS AND DISPLAY THE REST
*    OF THE VARIABLE FIELDS BEFORE HANDLING THE PICTURE 
* 
DECLRD PROC 
* 
 PERF DENTER,W4 
 RET
 PEND 
* 
*     ERROR PRINTOUT
* 
DERR	PROC 
 MOVE DEBINW1,W0
	PERF	DENTER,W0 
	RET
	PEND 
 EJECT
DENTER PROC OPT 
 CLEAR DOOLC ERASEFLAG OFF
	MOVE	DEBINW2,OPT	MOVE TO VARIABLE
			TO ALLOW INSTR.S CMP AND IB
	CMP	DEBINW2,W0	"DEERR" ENTRY ? 
	BE	ERRPRINT	YES !

 TBT DEPROMPT,ENTIRE JUMP IF ENTIRE FORMAT
			SHOULD BE DIDELAYED
* 
*    ONLY VARIABLE FIELDS 
* 
 IB DEBINW2		C
		CLEARA		C 
		CLEARS		C 
		CONT		C 
		CLEARD
* 
CLEARA
 ERASE 2,W1,W0 ERASE ALL FROM 1 AND UP
 B CONT 
* 
CLEARS
 ERASE 5,W1,W0 ERASE SOME FROM 1 AND UP 
	B	CONT 
CLEARD
 TBT VERIFM,VERIF 
 DISPLAY 3,W1,W0 DISPLAY FROM 1 AND UP
 B CONT 
VERIF 
 TBF KEYVER,SIGHT 
 DISPLAY 23,W1,W0 
 B CONT 
SIGHT 
 DISPLAY 33,W1,W0 
 B CONT 
 EJECT
* 
*    DISPLAY ENTIRE FORMAT
* 
ENTIRE
	CLEAR	DEPROMPT 
 IB DEBINW2	JUMP	C
		ECLRA	ON	C
		ECLRS	ROUTINE	C 
		ECLRN	INDEX	C 
		ECLRN 
* 
*    CLEAR ALL VARIABLES
* 
ECLRA 
 ERASE 3,W1,W0 CLEAR ALL FROM 1 AND UP
			IN MEMORY
 B ECLRN CONTINUE 
* 
*    CLEAR SOME VARIABLES 
* 
ECLRS 
 ERASE 6,W1,W0 CLEAR SOME FIELDS FROM 
			1 AND UP IN MEMORY 
* 
*    CLEAR NO VARIABLES IN MEMORY 
* 
ECLRN 
 TBT VERIFM,EVERIF
 DISPLAY 0,W1,W0 DISPLAY ENTIRE FORM
 B CONT 
EVERIF
 TBF KEYVER,ESIGHT
 DISPLAY 20,W1,W0 
 B CONT 
ESIGHT
 DISPLAY 30,W1,W0 
	EJECT
* 
CONT
 MOVE DEBINW2,W8 HOME-KEY 
CONT3 
 GETABX DEBINW4 GET CURRENT INDEX 
 BL KTHOME JUMP IF NO CURRENT FIELD 
 TBF VERIFM,CONT5 
 B KTHOME 
CONT5 
 GETFLD 0,DEBINW4,DEBINW3 SEARCH CURRENT POSITION 
 BZ CONT6 JUMP IF FOUND 
 BL KTHOME POSITION NOT FOUND 
* 
*    COMPULSORY FIELD FOUND 
* 
 MOVE DEBINW4,DEBINW3 CHANGE INDEX
 B CONT5 SEARCH AGAIN 
* 
CONT6 
 TSTCTL 5 LOOK IF CTAB
 BZ SETCREAD
 TEST DOOLA 
 BZ KTHOME JUMP IF NOT BALANCE
 MOVE DEBINW2,W9
 B KTHOME 
 EJECT
* 
*    SET CURSOR AND READ KEYBOARD 
* 
SETCREAD
	SETCUR		SET CURSOR ON CURRENT FIELD

* 
*    READ TO CURRENT FIELD ON DISPLAY 
* 
READIN
 TBF DENOCHAN,READ50
READ10 MOVE DEBINW1,W0
	MOVE	DEBINW3,W1
 TBF VERIFM,READ12
 NKI .NE,DEDSDYKB,DEINPUT,DEKTABV,DEBINW3,DEBINW2 
 B READ14 
READ12
 NKI .NE,DEDSDYKB,DEINPUT,DEKTAB5,DEBINW3,DEBINW2 
READ14
	PERF DELOCK,W1,DEBINW2 
	IB	DEBINW3,READ30,READ20,READ10
	B	READ40 
* 
READ20			ERROR
	XSTAT	DEDSDYKB,DEBINW3 
	CALL	MASK,DEBINW3,W64
	BNZ	READ10 
	EDWRT	DEDSSCRN,BELL
	B	READ10 
* 
READ30			POWER OFF
 TBT VERIFM,EVERIF
	DISPLAY	0,W1,W0
	B	SETCREAD 
* 
READ40 IB DEBINW2,READ10,STATUS,KCOPY 
 SUB DEBINW2,W3 
 TBT DOOL3,READ45 JUMP IF NOT WORKING 
 CLEAR DENOCHAN WITTH THE DATA-FILE 
READ45
 RET
* 
READ50
 TBF VERIFM,READ55 JUMP IF NOT KEY-VERIFICATION 
 PERF DEVERI
 IB DEBINW4,KTKEY2,EVERIF,KCOPY,ERRP20
* RETURN FROM DENTER DEPENDING ON FUNCTION-KEYT 
 RET
READ55
 GETCTL 3,DEBINW3 GET SCHK
 CALL TESTB,DEBINW3,W15 
 BZ READ60 JUMP IF NOT SIGN 
 DYKI DEINPUT,DEKTAB1,DEKTABA,DEBINW1,		C 
		DEBINW2,DEBINW4 
 B DYKOUT 
READ60
 DYKI DEINPUT,DEKTAB1,DEKTAB2,DEBINW1,		C 
		DEBINW2,DEBINW4 
DYKOUT
	PERF	DELOCK,W1,DEBINW2 
	IB	DEBINW3,ECLRN,ERRPRT,DYK050 
	B	DYK100 
DYK050
 MOVE DEBINW2,W2
 B ERRCAN 
DYK070
 GETABX DEBINW4 GET CURRENT TAB INDEX 
 DISPLAY 1,DEBINW4,DEBINW4 DISPLAY FIELD
 B SETCREAD CONTINUE
DYK100
 CLEAR DOOL5 KEYED INPUT
 IB DEBINW2,UPDATE,DYK070 JUMP ON	C 
		UPDATE,ERRCAN,ERRCAN,		C
		DYK150,UPDATE,UPDATE,UPDATE CONVERTED	C 
		UPDATE,UPDATE,UPDATE,STATUS END-OF-ITEM-KEY	C 
		KCOPY,KDUPL,KEDIT 
 B UPDATE 
DYK150
 MOVE DEBINW2,W3 SET PLS = EOI
 EJECT
*************************************** 
* VALIDATE ENTERED DATA IN THE ORDER: * 
* STANDARDCHECK                       * 
* APPLE-VALUE                         * 
* VALIDATION-STRING                   * 
*                                     * 
* RETURNVALUES ARE PUT INTO DEBINW3.  * 
*************************************** 
UPDATE
 CBNE DEBINW1,W0,UPD100 
			VALIDATION OF EMPTY FIELD
			IF SOME OF BELOW KEES PRESSED: 
*                1=CLR,3=EOI,9=ERASE,10=KEEP,11=KEEP
 CBG DEBINW2,W11,UPD010 
 CBG DEBINW2,W8,UPD005
 CBG DEBINW2,W3,UPD010
UPD005
 TBT DOOL3,UPD020 
UPD010 B UPDR50 
UPD020 MOVE DEBINW4,W6 FORCED ITEM
 MOVE BIN3,W0 USED FOR SAV ERRORINDEX 
 CALL FORCED,:FMTITEM 
 BOK UPD030 
 PERF DERROR,DEKTABF
 B ERRP20 
UPD030
 CALL EMPTYT,:FMTITEM 
 BZ UPD050 NO!
UPD040
 GETCTL 3,DEBINW4 GET SCHK
 CALL TESTB,DEBINW4,W13 LOOK IF COND ME 
 BZ UPDR35 VALIDATION IF COND 
UPD050
 MOVE WORK(W5),DEBINW1 SAVE INPUTLENGTH 
 GETABX BIN8
 PERF DEEDIT,W3 
 B UPD250 
UPD100
 GETCTL 3,DEBINW4 GET SCHK-NUMBER 
UPD105
 IB DEBINW4,UPD110,UPD120,UPD110,UPD200,UPD110
 B UPD200 
UPD110
 CBNE DEBINW2,W12,UPD115  JUMP IF NOT MINUS 
 MOVE DEBINW2,W0
 MOVE DEBINW3,W1
 MOVE STR1A,='-'
 INSERT DEINPUT,DEBINW2,DEBINW3,STR1A,W0
 MOVE DEBINW2,W3 SIMULATE EOI 
UPD115
 SUB DEBINW4,W1 
 B UPD105 
UPD120
 SUB DEBINW4,W2 
 B UPD105 
UPD200
 GETCTL 0,DEBINW3 GET APPL-VALUE
 CBE DEBINW3,W0,UPD230 JUMP IF NO APPL VALUE
* 
*    APPL-VALUE DIFFERENT FROM ZERO 
* 
 TBF DOOL3,UPD215 
 PERF DEAPPU
 B UPD220 
UPD215
 PERF DEAPPL
UPD220
 IB DEBINW3,UPD230,SETCREAD,ERRPRINT
UPD230
 TEST DOOL3 
 BZ UPDR22 JUMP IF NOT ENTRY
 TBF DOOL5,UPD240 JUMP IF NOT DUPL
 MOVE WORK(W5),W0 INPUTLENGTH = 0 
 B UPD250 
UPD240
 MOVE WORK(W5),DEBINW1 SAVE INPUTLENGTH 
UPD250
 MOVE BIN4,DEBINW1 SAVE INPUTLENGTH 
* 
* LOOK IF THERE ARE A VALIDATIONSTRING
* WITHIN THE FORMAT AND EXECUTE IT. 
* 
UPDVAL
 CLEAR DOOL1
 CLEAR DOOL4
 CLEAR DOOL6
 CLEAR DOOL7
	CLEAR	BOOL5	***F=UNVALID/NO COND TAB 
	CLEAR	BOOL7	***F=UNVALID/NO COND REC. CH 
	MOVE	BIN14,W0	***COND.TAB.-FIELD:=0
	MOVE	STSAVE(W3),HEX00	***COND FORMAT CH:=0 
 CALL GETVAL,BPOOL(W1),BIN11,BIN12,BIN13
 BNOK UPDR20 JUMP IF NO VALSTRING 
 CBL DEBINW2,W11,UPDV10 LOOK IF AUTODUP AND 
 CBG DEBINW2,W12,UPDV10 ERASE OR KEEP PRESSED 
	SETCUR		SET CURSOR ON CURRENT FIELD
UPDV10
 PERF DENVAL
* 
* RETURN FROM VALIDATION
* 
 CLEAR DOOLB ERROR-FLAG 
 BZ UPDR20
 MOVE DEBINW1,WORK(W5) RESTORE INPUTLENGTH
UPDR12
 TSTCTL 0 L00K IF ALPHA 
 BNZ UPDR16 JUMP IF ALPHA 
 MOVE BIN9,W15 POINTER TO + 
 MATCH VALSTR,BIN9,W2,DEINPUT,W0,W1 
 BNOK UPDR16
 DLETE DEINPUT,W0,W1 DELETE + OR -
UPDR16
 CBE BIN3,W0,UPDR17 JUMP IF NOT MESS
 XCOPY DEBINW4,W1,W1,BPOOL(BIN11),BIN3
UPDR17
 TBF DOOLA,UPDR13 JUMP IF NOT BALACE
 PERF DERROR,DEKTAB6
 B ERRP20 
UPDR13
 TSTCTL 5 LOOK IF CTAB
 BZ UPDR14 NO!
 PERF DERROR,DEKTABI NO KEY INPUT 
 B ERRP25 
UPDR14
 PERF DERROR,DEKTABD
 B ERRP20 
UPDR20
 MOVE DEBINW1,WORK(W5) RESTORE INPUTLENGTH
UPDR22
 GETCTL 3,DEBINW4 GET SCHK-NUMBER 
 CALL TESTB,DEBINW4,W14 LOOK IS SCHK=2
 BZ UPDR25 JUMP IF NOT
 GETCTL 1,DEBINW3 GET MAXL
 SUB DEBINW3,DEBINW1
 BZ UPDR25
 MOVE STATSH,=X'20' PUT SPACE IN AREA 
 INSRT DEINPUT,W0,DEBINW3,STATSH,W0 RIGHTADJUST 
UPDR25
 CBE DEBINW1,W0,UPDR33 INPUTLENGT=0 
 UPDFLD 0,DEINPUT UPDATE FIELD WITH DISPLAYING
UPDR30 SET DECHANGE INDICATE CHANGED ITEM 
UPDR33
 TBF DOOL3,UPDR50 JUMP IF NOT ENTRY 
UPDR35
 CBE DEBINW2,W12,UPDR40 ERASE-KEY 
 CBE DEBINW2,W9,UPDR40 ERASE-KEY
 CBE DEBINW2,W1,UPDR40
	CALL	GETGEN,BPOOL(W1),BIN3,BIN4,BIN5 
 BNOK UPDR40
 PERF DEGEN 
UPDR40
 TSTCTL 5 
 BNZ UPDR50 JUMP IF CTAB
 SET DECHANGE 
UPDR50 IB DEBINW2,KTFWD,DUMMY,		C 
		KEOI,DUMMY,DUMMY,KTFWD,		C
		KTBWD,KTHOME,KERASE,KKEEP,KEOI,		C
		KEOI,DUMMY,DUMMY,DUMMY,DUMMY,KENTER 
 SUB DEBINW2,W14 ADJUST EOI-KEY INDEX 
DUMMY 
RETUR 
 RET
 EJECT
KTFWD			TAB. FORWARD 1 STEP 
 MOVE DEBINW2,W3 SIMULATE EOI 
KEOI			COMMON END-OF-ITEM KEY 
	TBF	DOOL3,KEOI20	***JUMP IF NOT ENTRY-MODE 
	TBF	BOOL7,KEOI10	***JUMP IF NO IMMIDIATE REC.CH
	CALL	EMPTYT,STSAVE(W3)	*** 
	BNZ	KEOI10	***JUMP IF NO FORMAT-CHANGE 
	CLEAR	DECHANGE 
	MOVE	DEBINW2,W3	***ENT-KEY SIMULATED 
	B	RETUR	***
KEOI10			***
	CLEAR	BOOL5	***CLEAR /SET CR 
	BOK	KEOI20	***JUMP IF UNVALID/NO COND TAB
	CBE	BIN14,W0,KEOI20	***JUMP IF NO COND TAB 
	MOVE	DEBINW4,BIN14	***SAVE NEXT FIELD NR 
	SUB	DEBINW4,W1	***ADJUST FOR TFWD
 CALL GETFWD,DKBIN1,0,DEBINW4,DEBINW3 
 CALL ADJUST,DKBIN1 
	BNN	KEOI20	***JUMP IF NO FORMAT OVERFLOW 
	GETABX	DEBINW4	*** 
	B	SETCREAD	*** 
KEOI20			***
 CBL DEBINW2,W11,KEOI30 
 B KKEEP2 
KEOI30
 TFWD 
	B	TSTTAB 
* 
KTBWD			TABULATION 1 STEP BACKW.
 GETABX DEBINW4 
 CBE DEBINW4,W1,KTBWD2
 TBWD 
 B TSTTAB 
KTBWD2
 MOVE DEBINW2,W3 EOI
* 
KTHOME			TAB. TO HOME POSITION
 TBT DOOLA,KTHOM2 JUMP IF BALANCE 
 TBF VERIFM,KTHOM2
 TBT KEYVER,KTKEY 
KTHOM3
 MOVE DEBINW1,W0
 GETFLD 0,DEBINW1,DEBINW3 
 SETCUR 
 B READ10 
KTHOM2
 THOME
TSTTAB			TEST TAB OUTPUT
 BE READIN OK 
 BL READIN NOT FOUND
 BOFL KENT15 EMPTY COMPULSORY FIELD 
* 
* 
*    CONDITIONAL TABULATION 
 TBT DENOCHAN,KCOP10
 PERF DETCHK
 CBE DEBINW3,W0,KCOP10
 IB DEBINW2,DUMMY,DUMMY,		C 
		KTEOI,DUMMY,DUMMY,KTEOI,		C 
		KTBWD,KTEOI,KKEEP 
*    BRANCH LIST EXHAUSTED - DEBINW2 CLOBBERED BY DETCHK

	B	SETCREAD 
KTKEY 
 MOVE BIN11,W0
KTKEY2
 ADD BIN11,W1 
 CALL GETFWD,DEBINW4,4,BIN11,DEBINW3 SEARCH FOR KEYVER
 CALL ADJUST,DEBINW4
 BZ SETCREAD JUMP IF VERIFYFIELD
 B KTHOM3 
KTEOI 
 TBF DOOL3,KTFWD
 MOVE DEBINW2,W3
 EJECT
* 
*     DUPL KEY
* 
KDUPL 
 PERF DENDUP
 BNOK KTEOI2
 IB DEBINW2,KTEOI,DUMMY,UPDATE
KTEOI2
 TSTCTL 5 LOOK IF CTAB
 BNZ KENT20 YES!
 IB DEBINW2,KCOP10,ERRRET,ERRRET
 B ERRPRINT 
* 
*     STATUS KEY
* 
STATUS PERF DESTAT
 MOVE DEBINW1,W0
 B ERRPRINT 
* 
*     PRINT KEY 
* 
KCOPY			HARD COPY 
	PERF	ATTPRT	RESERVE PRINTER
	BNOK	ERRPRINT
	EDWRT	DEDSPRT,FORMF	FORMFEED 
 MOVE DEBINW3,W1
 PRINT DEDSPRT,DEBINW3,W0 
	PERF	DETPRT	RELEASE PRINTER
KCOP10
 B SETCREAD SET CURSOR AND READ 
 EJECT
* 
*    EDIT FIELD 
* 
KEDITX
 TSTCTL 5 LOOK IF CTAB
 BZ KED050
 MOVE DEBINW2,W5 RBWD 
 CLEAR DECHANGE 
 B ERRET1 
KED050
 CBE DEBINW1,W0,KEDITY
	MOVE	DEBINW1,W1
KEDIT 
 GETCTL 1,DEBINW3 GET MAXL
 CBNE DEBINW3,W0,KED100 
 EDWRT DEDSSCRN,BELL ACOUSTIC ALARM 
 B SETCREAD 
KED100
 GETCTL 3,DEBINW3 GET SCHK
 CALL TESTB,DEBINW3,W15 MINUS 
 BZ KED200
 EDFLD DEINPUT,DEKTABB,DEBINW1,		C
		DEBINW2,DEBINW4 
 B DYKOUT 
KED200
 EDFLD DEINPUT,DEKTAB3,DEBINW1,		C
		DEBINW2,DEBINW4 
 B DYKOUT CONTINUE AS FOR DYKI
KEDITY
 SETCUR 
 B KEDIT
* 
*       ERASE KEY 
* 
KERASE
	GETABX	DEBINW4 
	ERASE	10,DEBINW4,W0
 TBF DOOL3,KENT03 
 MOVE DEBINW2,W12 
 B KKEEP1 
* 
*    KEEP KEY 
* 
KKEEP 
 TBF DOOL3,KENT03 JUMP IF NOT ENTRY 
 MOVE DEBINW2,W11 SIMULATE KKEEP2 
KKEEP1
 GETCTL 1,DEBINW4 GET MAXL
 CBE DEBINW4,W0,KENT07
 TSTCTL 2 LOOK IF COMPULSORY FIELD
 BZ KKEEP3 NO!
 CALL EMPTYT,:FMTITEM LOOK IF EMPTY FIELD 
 BP KENT15 YES! 
KKEEP3
 CMP DEBINW2,W12 ERASE KEY
 BZ UPD040
 B UPD020 
KKEEP2
 SET DOOL5
 GETABX DEBINW4 
 ADD DEBINW4,W1 
 CALL GETFWD,DKBIN1,0,DEBINW4,DEBINW3 
 CALL ADJUST,DKBIN1 
 BE KKEEP5
 BL SETCREAD
 BOFL KENT10
 B KKEEP4 
KKEEP5
 TSTCTL 5 LOOK IF CTAB
 BZ KKEEP1
KKEEP4
 PERF DETCHK
 CBE DEBINW3,W0,KKEEP1
 TBT DOOLA,KKEEP1 JUMP IF BALANCE 
 CBE DEBINW2,W12,KKEEP1 ERASE 
 PERF DENDUP
 BNOK KENT20
 MOVE DEBINW2,W11 SIMULATE KEEP 
 B KKEEP1 
 EJECT
* 
*   ENTER KEY 
* 
KENTER
 TBF DOOL3,KENT03 
 GETCTL 1,DEBINW4 GET MAXL
 CBE DEBINW4,W0,KENT06
 EDWRT DEDSSCRN,BELL ACOUSTIC ALARM 
 B SETCREAD 
KENT06
 MOVE DEBINW2,W3 INDICATE ENTER KEY DEPRESSED 
 RET
KENT03
 MOVE DEBINW1,W0 INDICATE NO CLEARING 
 GETFLD 0,DEBINW1,DEBINW3 SEARCH FOR EMPTY COMP. FIELDS 
 BOFL KENT10 EMPTY COMP. FIELD FOUND
 TSTCTL 2 LOOK IF COMPULSORY FIELD
 BZ KENT05 NO!
 CALL EMPTYT,:FMTITEM LOOK IF EMPTY FIELD 
 BP KENT10 YES! 
KENT05
 TBT DOOL3,KENT07 JUMP IF ENTRY-MODE
	CBE	DEBINW2,W9,KENT07
	CBE	DEBINW2,W10,KENT07 
 MOVE DEBINW2,W3 INDICATE ENTER KEY DEPRESSED 
 RET
KENT07 B SETCREAD 
* 
*    EMPTY COMPULSORY FIELD FOUND 
* 
KENT10
 GETFLD 0,DEBINW3,DEBINW2 GET THE COMPULSORY FIELD
KENT15
 MOVE DEBINW4,W5 INDICATE COMP.FIELD FOUND
	MOVE	DEBINW1,W0
 TSTCTL 5 LOOK IF CTAB
 BZ ERRPRINT NO!
KENT20			YES! 
 PERF DERROR,DEKTABI
 B ERRP25 
 EJECT
* 
* INDICATE FORCED ITEM
* 
KFORCE
 PERF DEFORC
 B UPDR30 
* 
* VALID ITEM
* 
KVALID
 MOVE DEBINW2,W3 RESTORE ITEMLENGTH 
 B UPDR22 
	EJECT
ERRPRT
 CMP DEBINW2,W16
 BE KEDIT JUMP IF EDIT
 CBE DEBINW2,W4,ERRCAN JUMP IF ERRCANEL1
 CBE DEBINW2,W5,ERRCAN JUMP IF ERRCANEL2
 XSTAT DEDSDYKB,DEBINW3 
 CALL MASK,DEBINW3,W64
 BNZ DYK050 
* 
*    ERROR HANDLING 
* 
ERRPRINT
 TBF DOOLA,ERRP10 JUMP IF NOT BALANCE 
 PERF DERROR,DEKTAB6
 B ERRP20 
ERRP10
	PERF	DERROR,DEKTAB4
ERRP20
 CBE DEBINW2,W1,ERRCAN CLEAR-KEY
ERRP25
 IB DEBINW2,ERRRET,ERRRET,ERRRET,KEDITX		C
		KVALID,KFORCE,KTBWD,KTHOME
ERRRET
 ADD DEBINW2,W2 
ERRCAN	PERF	CANC
 CLEAR DOOL5
 TSTCTL 5 LOOK IF CTAB
 BNZ  ERRET4
	IB	DEBINW2,SETCREAD,SETCREAD,CONT3 
ERRET0
 SUB DEBINW2,W3 ADJUST FOR CANCEL1,CANCEL2
ERRET1
 TBT DOOL3,ERRET2 
 CLEAR DENOCHAN 
ERRET2
 RET
ERRET4
 IB DEBINW2,SETCREAD,SETCREAD,ERRET5
 B ERRET0 
ERRET5
 MOVE DEBINW2,W8 SIMULATE TBWD
 B KTBWD
 PEND 
* 
BELL FRMT 
 FSL
 FILLR X'07',1
 FMEND
FORMF	FRMT
	FTEXT	' 1' 
	FMEND
 END

Full view