|
|
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: 7932 (0x1efc)
Notes: pts_type(SC)
Names: »KBREAD.SC«
└─⟦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«
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