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

⟦13c9f2815⟧

    Length: 7932 (0x1efc)
    Notes: pts_type(SC)
    Names: »KBREAD.SC«

Derivation

└─⟦35fda6e03⟧ Bits:30009701 Philips computer tape "BARCLAY"
    └─⟦this⟧ »BARCLAY/KBREAD.SC« 
    └─⟦this⟧ »BARCLAY/KBREAD.SC« 
└─⟦e276fd206⟧ Bits:30009696 Philips computer tape "600413"
    └─⟦this⟧ »BARCLAY/KBREAD.SC« 

PTS(SC)

 IDENT KBREAD 80.11.07 NJ 
 DDUM NJDDIV
 PDIV 
 ENTRY KBREAD 
 ENTRY FIND00 
 EXPROC SCRWR,PSTRG,PBIN
 EXPROC PUSH,PBIN 
 EXPROC PULL,PBIN 
* 
* 
 INCLUDE EQUATE 
* 
* 
 EJECT
KBREAD PROC LEN,TAB,INX,TYP 
 PBIN LEN,INX,TYP 
 PKTAB TAB
* 
* THE PROCEDURE READS FROM THE KB6272.
* PARAMETERS: 
*   LEN - HOW MANY CHARACTERS TO READ (MAX), ON RETURN THIS ITEM
*         WILL CONTAIN THE ACTUAL NBR OF CHARS READ 
*   TAB - KEYTABLE, WHERE THE VALID END-OF-ITEM KEYS ARE DEFINED
*   INX - ON COMPLETION THIS ITEM WILL POINT AT THE END-OF-ITEM KEY USED
*   TYP - CBIN1 FOR NUMERIC, CBIN2 FOR ALPHANUMERIC INPUT 
* 
* SPECIAL FEATURES: 
*   BSP - BACKSPACE - NON-DESTRUCTIVE CURSOR MOVE TO LEFT 
*   FSP - FWDSPACE  - NON-DESTRUCTIVE CURSORMOVE TO RIGHT 
*   INS - INSERT    - INSERT ONE CHARTACTER AT CURSORPOS
*   DEL - DELETE    - DELETE ONE CHARACTER FROM CURSORPOS 
*   CANC- CANCEL    - CLEAR INPUTFIELD AND REINITIATE READCOMMAND 
* 
* TBIN1 - LENGTH OF JUST COMPLETE 'KI'
* TBIN2 - ORIG. LENGTH, DECREMENTS TO ZERO WHEN ALL POS ARE INPUT 
* TBIN3 - DISPLACEMENT IN TSTR80
* TBIN4 - ORIG. LENGTH
* TBIN5 - INDEX TO KEYTABLE 
* TBIN6 - SCRATCH 
* TBIN7 - SCRATCH 
* TBIN8 - NOT USED P.T. 
* 
 EJECT
 PERF PUSH,CBIN8
KBR010
 CLEAR TBOOL
 MOVE TBIN4,LEN SAVE ORIG.LENGTH
 MOVE TBIN2,LEN 
 MOVE TSTR80,=X'00' 
 MOVE TBIN7,TCURPOS TCURPOS MIGHT BE MODIFIED 
 MOVE TBIN3,CBIN0 
 DSC1 DSDY,POS,TBIN7
* 
 CLEAR TCURMOV NO CURSORMOVEMENTS YET 
KBR015
 MOVE TBIN6,TBIN2 
KBR017
 MOVE TKBBUF,='++.' 
 ADD TBIN6,CBIN2
 WRITE DSDY,TKBBUF,TBIN6 CLEAR INPUTFIELD WITH .. 
KBR016
 DSC1 DSDY,POS,TBIN7
 MOVE TBIN1,TBIN2 RESTLENGTH
 CBNG TBIN1,CBIN0,KBR030 FTAB IF FILLED UP
 KI DSKB,TKBBUF,TAB,TBIN1,INX 
 BOK KBR040 KEYLOCK OR TERM. CHAR.
* A CHAR NEITHER ALPHANUM NOR LISTED IN 
*      KEYTABLE IS INPUT
* SIZE OF BUFFER IS REACHED 
* POWER FAILURE 
* REQ. NBR OF CHARS IS REACHED
 SUB TBIN1,CBIN1 EXCL. EOI-KEY FROM LENGTH
 CBE INX,CBIN0,KBR020 POWER FAILURE ? 
 CBE TBIN4,TBIN2,KBR030 OVERFLOW: PROCESS AS FTAB 
KBR020
 PERF PULL,CBIN8
 CMP CBIN0,CBIN1 UNDEF. ERROR OR PWR FAILURE
 B KBR099 RETURN
KBR030
 MOVE INX,CBIN3 SIMULATE FTABKEY
 ADD TBIN1,CBIN1
 B KBR094 RETURN
KBR040
 CBG TBIN1,CBIN1,KBR045 IF MORE THEN 1 INPUTCHAR
 CLEAR TBOOL WE CAN RESET TBOOL 
KBR045
 CBNG INX,CBIN0,KBR020 POWER FAILURE ?
 SUB TBIN1,CBIN1
 MOVE TBIN5,INX SAVE INDEX TO KEYTABLE
 SUB INX,CBIN5 ADJUST INDEX 
 BP KBR094 WAS IT ANY OF THE 5 SPEC KEYS? 
 TBT TBOOL,KBR020 INPUT WAS EXPECTED
 SET TCURMOV CURSORMOVE HAS TAKEN PLACE 
 IB TBIN5, YES,	C 
		KBR050,	BSP,	C
		KBR060,	FSP,	C
		KBR070,	INS	C 
		KBR080,	DEL	C 
		KBR090	CANCEL 
 B KBR094 SHOULD BE IMPOSSIBLE
**********
KBR050			BACKSPACE KEY PRESSED
 SUB TBIN2,TBIN1 HOW MANY CHARS LEFT
 ADD TBIN2,CBIN1
 CBNL TBIN2,LEN,KBR010 BACKSPACED WE TO START?
 XCOPY TSTR80,TBIN3,TBIN1,TKBBUF,CBIN0
 ADD TBIN3,TBIN1 FIELD LENGTH 
 SUB TBIN3,CBIN1 MINUS 1
 MOVE TBIN7,TCURPOS MOVE CURSOR ONE POS 
 ADD TBIN7,TBIN3 -//- 
 B KBR016 
**********
KBR060			FORWARDSPACE KEY 
 SUB TBIN2,TBIN1 HOW MANY CHARS MAY WE READ 
 SUB TBIN2,CBIN1
 XCOPY TSTR80,TBIN3,TBIN1,TKBBUF,CBIN0
 ADD TBIN3,TBIN1 FIELD LENGTH 
 ADD TBIN3,CBIN1 PLUS ONE 
 MOVE TBIN7,TCURPOS MOVE CURSOR ONE POS 
 ADD TBIN7,TBIN3 -//- 
 B KBR016 
**********
KBR070			INSERT 
 XCOPY TSTR80,TBIN3,TBIN1,TKBBUF,CBIN0
 MOVE TSTR2,=' '
 INSRT TSTR80,TBIN3,CBIN1,TSTR2,CBIN0 
 MOVE TSCBUF,TSTR80 
 MOVE TSTR2,='+'
 INSRT TSCBUF,CBIN0,CBIN2,TSTR2,CBIN0 
 PERF FIND00,TSCBUF 
 ADD TBIN6,CBIN3 ALLOW FOR CNTRL CHAR + SPACE 
 DSC1 DSDY,POS,TCURPOS
 WRITE DSDY,TSCBUF,TBIN6
 MOVE TBIN7,TCURPOS 
 ADD TBIN7,TBIN3
 SUB TBIN2,TBIN1 REDUCE RESTLENGTH
 SUB TBIN2,CBIN1
 CBE TBIN2,CBIN0,KBR030 FILLED, SIMULATE FTAB 
 SET TBOOL NEXT MUST BE DATA
 B KBR016 
**********
KBR080			DELETE ONE CHAR
 XCOPY TSTR80,TBIN3,TBIN1,TKBBUF,CBIN0
 DLETE TSTR80,TBIN3,CBIN1 
 MOVE TSCBUF,TSTR80 
 MOVE TSTR2,='+'
 INSRT TSCBUF,CBIN0,CBIN2,TSTR2,CBIN0 
 PERF FIND00,TSCBUF 
 SUB TBIN6,TBIN3
 ADD TBIN6,CBIN2
 DLETE TSCBUF,CBIN2,TBIN3 
 MOVE TBIN7,CBIN0 ONE CHARACTER MUST BE 
 MOVE TSTR1,=X'00' REPLACE BY PERIOD
 MATCH TSCBUF,TBIN7,CBIN80,TSTR1,CBIN0,CBIN1
 MOVE TSTR1,='.'
 XCOPY TSCBUF,TBIN7,CBIN1,TSTR1,CBIN0 
 WRITE DSDY,TSCBUF,TBIN6
 MOVE TBIN7,TCURPOS 
 ADD TBIN7,TBIN3
 SUB TBIN2,TBIN1
 ADD TBIN2,CBIN1
 ADD TBIN3,TBIN1
 B KBR016 
**********
KBR090			CANCEL THIS 'KI' 
 DSC1 DSDY,POS,TCURPOS REPOS. CURSOR
 DSC1 DSDY,ERASE,TBIN4 ERASE FIELD
 DSC1 DSDY,POS,TCURPOS REPOS. AGAIN 
 B KBR010 
*********** 
KBR094
 MOVE TBIN6,TCURPOS 
 DSC1 DSDY,POS,TBIN6
 TBF TCURMOV,KBR095 ANY EXPL. CURSORMOVEMENTS?
 XCOPY TSTR80,TBIN3,TBIN1,TKBBUF,CBIN0 COMPLETE BUFFER
 MOVE TKBBUF,TSTR80 MOVE COMPLETED BUFFER TO APPL 
KBR095
 CBE CBIN2,TYP,KBR098 ALPHANUMERIC? 
 PERF FIND00,TKBBUF 
 MOVE TBIN2,TBIN4 
 SUB TBIN2,TBIN6 HOW MANY ZEROES TO INSERT? 
 MOVE TSTR80,='0' 
 INSRT TKBBUF,CBIN0,TBIN2,TSTR80,CBIN0 MODIFY BUFFER
 DSC1 DSDY,POS,TCURPOS
 PERF SCRWR,TKBBUF,TBIN4 AND REWRITE ON SCREEN
 B KBR098A
KBR098
 PERF FIND00,TKBBUF 
KBR098A 
 SUB TBIN4,LEN ERASE REST OF INPUTFIELD 
 DSC1 DSDY,ERASE,TBIN4
 MOVE LEN,TBIN6 
 PERF PULL,CBIN8
 CMP CBIN0,CBIN0
KBR099
 RET
 PEND 
 EJECT
FIND00 PROC BUF 
* 
* FIND THE LENGTH OF THE DATAFIELD IN THE 
* BUFFER SPECIFIED. 
* IF THE LAST NON-ZERO CHAR IS BELOW X'20'
* (EOI-KEY) THE COUNT WILL BE DECREASED BY 1. 
* 
 PSTRG BUF
 MOVE TSTR1,=X'00'
 MOVE TBIN6,CBIN0 
 MOVE TBIN7,=W'32' OBS OBS LENGTH OF TKBBUF 
 MATCH BUF,TBIN6,TBIN7,TSTR1,CBIN0,CBIN1
 MOVE TBIN7,TBIN6 
 SUB TBIN7,CBIN1
 XCOPY TSTR1,CBIN0,CBIN1,TKBBUF,TBIN7 
 CBNL TSTR1,=' ',FIN010 < X'20' IS EOI KEY
 SUB TBIN6,CBIN1
FIN010
 RET
 PEND 
 END

Full view