|
|
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: 20624 (0x5090)
Notes: pts_type(SC)
Names: »DCSTAT.SC«
└─⟦7a1dcd5a9⟧ Bits:30009673 Philips computer tape "600134"
└─⟦this⟧ »PTMON/DCSTAT.SC«
└─⟦928b1fd3e⟧ Bits:30009671 Philips computer tape "600131"
└─⟦this⟧ »PTMON/DCSTAT.SC«
└─⟦f350e1b7a⟧ Bits:30009678 Philips computer tape "600219"
└─⟦this⟧ »MONGEN/DCSTAT.SC«
IDENT DCSTAT REL 11.0 81-01-26 870105041100 * ************************************************************* * * PHILIPS TERMINAL SYSTEM, P T S * * DCSTAT STATISTIC DATA COLLECTION ROUTINE FOR * DATA COMMUNICATION SOFTWARE * ************************************************************** EJECT *. PROGRAM DESCRIPTION *. FUNCTIONS: *. DCSTAT SUPPLIES THE DATA COMMUNICATION DRIVERS/PACKAGES *. WITH A SET OF ROUTINES TO MAINTAIN STATISTICAL COUNTERS *. FOR A DWT OR A DWT AND ITS HEAD DWT. *. THE FUNCTIONS ARE CONFIGURABLE BY THE PARAMETER STAT AND *. A CALL WHEN NOT CONFIGURED IS REJECTED WITH STATUS. *. THE ROUTINES ARE REENTRANT USING THE SYSTEM STACK IN *. INHIBIT MODE. THEY CAN BE USED SIMULTANEOUSLY BY *. DIFFERENT TYPES OF DRIVERS/PACKAGES. *. THE COUNTERS ARE MAINTAINED IN A BUFFER LINKED FROM THE *. DWT. EACH BUFFER CONTAINS A CONTROL WORD INDICATING *. STATUS OF THE COUNTERS AND MAX COUNTER VALUE DEFINED * FOR THE BUFFER * * FUNCTIONS AND ENTRY POINTS: * -CLEAR COUNTERS ENTRY: DCSRST AND DCSRLL * -UPDATE COUNTERS ENTRY: DCSUPR AND DCSUPD * -READ COUNTERS ENTRY: DCSRED * * * ACTIONS TO INCLUDE STATISTICS IN A DRIVER/PACKAGE * 1. DEFINE EVENTS IN THE DRIVER TO CALL RESP ENTRY * THE COUNTERS POSSIBLE ARE DEFINED BY THE EQU:S * CSSRBL - CSCXC3 AS DESRIBED BELOW * 2. DEFINE COUNTER AREA IN THE DWT AND ITS LINK(OFFSET) * THE LAYOUT DESCRIBED BELOW MUST BE APPLIED AS REQ * BY DCSTAT EJECT *. TABLE STRUCTURE: *. THE DWT HAS THE FOLLOWING LAYOUT *. * .................. * . . * / / * . . * .................. * . LINK STAT BUFF . -- * .................. ! * . LINK HEAD DWT . --!----> * .................. ! * . LINK NEXT DWT . --!----> * .................. ! * . . * / / ! * / / ! * .................. ! * . CONTROL WORD . <- * .................. * . COUNTER AREA . * .................. * . . * / / * .................. EJECT * * ENTRY POINTS * ENTRY DCSRST REST COUNTERS IN SPEC DWT ENTRY DCSRLL RESET COUNTERS IN ALL DWT:S ENTRY DCSUPR UPDATE COUNTER SPEC IN A1, (A2) ENTRY DCSUPS UPDATE COUNTER SPEC IN A1, (A2) A7=DTETAB ENTRY DCSUPD UPDATE COUNTER SPEC IN PKT, (A2) ENTRY DCSRED READ STATISTIC COUNTERS TO USER BUFF * * ENTRY EQU:S * ENTRY CSMAXL MAX INDEX FOR LINK DWT ENTRY DWTCHD EQU DWT OFFSET HEAD DWT ENTRY DWTCHN EQU DWT OFFSET NEXT DWT * * EXTERNALS * EXTRN DWTTAB EXTRN MOVSU EJECT * **************************************************** * * CONDITIONAL ASSEMBLY PARAMETERS * ********************************************* * MMUPAG EQU 1 MMU SWITCH * * CONDITIONAL ASSEMBLY PARAM TO INCLUD MORE FEATURES * STATISTIC FUNCTIONS STAT EQU 1 IF 0= NO 1=YES STATISTIC ON SUBUNITS STUNIT EQU 1 IF 0= NO 1= YES DOUBLE WORD COUNTERS STDBLE EQU 0 IF 0=NO, 1=YES ********************************************** * * EXTERNAL TABLE OFFSETS * ********************************************** * ECBBA EQU 2 ECB BUFFER ADDRESS ECBRL EQU 4 " REQ LENGTH ECBEL EQU 6 " EFF LENGTH IFT MMUPAG=0 DWTDRD EQU /10 DRIVER DEP AREA START XIF IFT MMUPAG=1 DWTDRD EQU /14 DRIVER DEP AREA START XIF DWTSTB EQU DWTDRD DWT DC REL OFFSET TO STATISTIC BUFFER DWTCHD EQU DWTSTB+2 " LINK TO HEAD DWT DWTCHN EQU DWTCHD+2 " LINK TO NEXT DWT DWTLAD EQU DWTCHN+2 " LOCAL DTE ADDRESS DWTSUB EQU DWTLAD+4 POSSIBLE SUB ADDRESS EJECT ************************************************************* * * STATISTIC EQU:S * USED IN CALLS FOR UPDATE OF COUNTERS * THE FOLLOWING EQU:S MUST BE INCLUDED IN * EACH DRIVER/PACKAGE USING DCSTAT FUNCTIONS * * THE FORMAT OF THE PARAMETER-1 IN CALL TO DCSUPR/DCSUPD * IS: * BITS XYZZZZZZ WHERE X=1IF PARAMETER-2 USED AS INCREMENT * ELSE INCREMENT WITH +1 * Y=1 IF DOUBLE WORD COUNTER * ZZZZZZ= COUNTER INDEX AS LISTED BELOW * ************************************************************* * * LINK LEVEL COUNTERS CSSRBL EQU /10 SYNCH DATA BLOCKS RECEIVED CSSRBY EQU /11 " DATA BLOCKS REJECTED BUFFER BUSY CSSRBO EQU /12 " DATA BLOCKS REJECTED BUFFER OVERFLOW CSSRAB EQU /13 " DATA BLOCKS REJECTED ABORTED CSSRPE EQU /14 " DATA BLOCKS REJECTED PARITY ERROR CSSTBL EQU /15 " DATA BLOCKS TRANSMITTED CSSTRT EQU /16 " DATA BLOCKS RETRANSMITTED CSSTAB EQU /17 " DATA BLOCKS ABORTED CSSXC1 EQU /18 " PROTOCOL DEPENDENT CSSXC2 EQU /19 " PROTOCOL DEPENDENT CSSXC3 EQU /1A " PROTOCOL DEPENDENT CSBRIF EQU /10 BITOR I-FRAMES RECEIVED CSBRBY EQU /11 " I-FRAMES REJECTED BUFFER BUSY CSBRBO EQU /12 " I-FRAMES REJECTED BUFFER OVERFLOW CSBRAB EQU /13 " I-FRAMES REJECTED ABORTED CSBRPE EQU /14 " I-FRAMES REJECTED FCS ERROR CSBTIF EQU /15 " I-FRAMES TRANSMITTED CSBTRT EQU /16 " I-FRAMES RETRANSMITTED CSBRSM EQU /17 " SNRM/SARM/SABM RECEIVED CSBRDI EQU /18 " DISC RECEIVED CSBRDM EQU /19 " DM RECEIVED CSBRFR EQU /1A " FRMR RECEIVED CSBRUA EQU /1B " UA RECEIVED CSBRRJ EQU /1C " REJ RECEIVED CSBRNR EQU /1D " RNR RECEIVED CSBTSM EQU /1E " SNRM/SARM/SABM TRANSMITTED CSBTDI EQU /1F " DISC TRANSMITTED CSBTDM EQU /20 " DM TRANSMITTED CSBTFR EQU /21 " FRMR TRANSMITTED CSBTUA EQU /22 " UA TRANSMITTED CSBTRJ EQU /23 " REJ TRANSMITTED CSBTNR EQU /24 " RNR TRANSMITTED CSBXC1 EQU /25 " PROTOCOL DEPENDENT CSBXC2 EQU /26 " " " CSBXC3 EQU /27 " " " * DTE/DCE LEVEL COUNTERS CSCDTE EQU /28 DTE NOT OPERABLE CSCDIT EQU /29 I/P THROUGHPUT ERROR CSCDOT EQU /2A O/P THROUGHPUT ERROR CSCDCE EQU /2B DCE NOT OPERABLE CSCXC1 EQU /2C CONTROL UNIT DEPENDENT CSCXC2 EQU /2D " CSCXC3 EQU /2E " CSINIV EQU /10 1ST IMPL COUNTER CSSRBL AND CSBRBL CSMAXL EQU CSCXC3-/F MAX IMPL SIZE OF LINK STAT BUFF EJECT ******************************************************* * * * STATISTIC BUFFER LAYOUT * ******************************************************* * ................... * . . STWSID * .................. * . . STWCST * ................... * . . STWMIX * ................... * . . STWCTA * / / * / / * ................... STWSID EQU 0 RESERV FOR SYMBOLIC ID STWCST EQU STWSID+2 COUNTER STATUS =0, RESET /=0, OVERFLOW IN COUNTER WITH BIT 0=1 STWMIX EQU STWCST+2 MAX COUNTER INDEX IN AREA STWCTA STWCTA EQU STWMIX+2 COUNTER AREA START SIZE MUST BE ADJUSTED TO VALUE IN STWMIX EJECT * *********************************************************** * * DCSRST - RESET STATISTIC COUNTERS FOR SPECIFIED DWT * * THE FOLLOWING ACTIONS ARE TAKEN * -CHECK IF FUNCTION IS CONFIGURED. IF NOT EXIT * -LOCATE STATISTIC BUFFER IN DWT. IF NOENE EXIT * -EXTRACT MAX COUNTER FOR BUFFER AND CLEAR COUNTERS * * ENTRY: CF A15,DCSRST A6=DWT * EXIT: ABR* A15 A1=STATUS * 0=COMPLETED -1= NOT CONFIG * *********************************************************** DCSRST EQU * IFT STAT=1 STR A2,A15 SAVE REG ON SYSTEM STACK CF A15,DCLEAR CLEAR BUFFER IF ANY LDR* A2,A15 RELOAD REG XIF RF DCSEXI COMMON EXIT EJECT *********************************************************** * * DCSRLL - RESET STATISTIC COUNTERS FOR ALL DWT:S IN CHAIN * * THE FOLLOWING ACTIONS ARE TAKEN * -CHECK IF FUNCTION IS CONFIGURED. IF NOT EXIT WITH STATUS * -FIND ADDRESS OF HEAD DWT IF ANY. IF NOT START WITH CURRENT * -LOCATE LINK TO STATISTIC BUFFER. IF 0 GO TO NEXT DWT * -CLEAR COUNTERS IN THE BUFFER * * ENTRY: CF A15,DCSRLL A6=DWT * EXIT: ABR* A15 A1=STATUS * 0=COMPLETED -1=NOT CONFIG * ************************************************************ DCSRLL EQU * IFT STAT=1 IFT STUNIT=1 SUBUNIT STATISTICS STR A2,A15 SAVE REGS ON SYSTEM STACK STR A6,A15 LDR A1,A6 TEMP SAVE OF SPEC DWT LD A6,DWTCHD,A6 LINK TO HEAD RF(NZ) DCSR10 YES START FROM HEAD LDR A6,A1 NO, START FROM CURRENT DCSR10 EQU * CF A15,DCLEAR CLEAR BUFFER LD A6,DWTCHN,A6 LINK TO NEXT DWT IN CHAIN RB(NZ) DCSR10 NOT LAST CONTINUE TO CLEAR LDR* A6,A15 RELOAD REGS LDR* A2,A15 XIF IFT STAT=1 IFF STUNIT=1 RB DCSRST XIF RF DCSEXI COMMON EXIT EJECT ******************************************************** * * DCSUPR - UPDATE COUNTER SPEC WITH PARAMETERS IN * REGS A1 AND POSSIBLY A2 * DCSUPS - UPDATE COUNTER SPEC WITH PARAMETERS IN * REGS A1 AND POSSIBLY A2. A7 = DTETAB * DCSUPD - UPDATE COUNTER SPEC WITH PARAMETERS IN * PACKET AND POSSIBLY A2 * * THE FOLLOWING ACTIONS ARE TAKEN * -CHECK IF FUNCTION IS CONFIGURED. IF NOT EXIT WITH STATUS * -IF ENTRY DCSUPD USED FETCH PARAMETER-1 FROM PACKET * -UPDATE COUNTER IN SPEC DWT IF PARAMETER WITHIN RANGE * OF MAX VALUE KEPT IN THE CONTROL WORD OF THE * STATISTIC BUFFER * IF SUBUNIT STATISTICS IS CONFIGURED * -LOCATE HEAD DWT AND IF EXISTING REPEAT PREVIOUS ACTION * * ENTRY: CF A15,DCSUPR A6=DWT A1=PARAM-1 (A2=PARAM-2) * OR * CF A15,DCSUPD A6=DWT * DATA PARAM-1 (A2=PARAM-2) * * EXIT: ABR* A15 A1=STATUS * 0=COMPLETED -1=NOT CONFIG * -2=INDEX ERROR -3=BUFFER ERROR * +1=COUNTER OVERFLOWED * ************::************************************************* DCSUPR EQU * IFT STAT=1 STR A3,A15 SAVE REGS ON SYSTEM STACK STR A4,A15 STR A5,A15 STR A6,A15 RF DCSU00 CONTINUE AT COMMON POINT XIF DCSUPS EQU * IFT STAT=1 STR A3,A15 SAVE REGS ON SYSTEM STACK STR A4,A15 STR A5,A15 STR A6,A15 LDR A6,A7 A6 = DTETAB ADDRESS RF DCSU00 XIF DCSUPD EQU * IFT STAT=1 STR A3,A15 SAVE REGS ON SYSTEM STACK STR A4,A15 STR A5,A15 STR A6,A15 LD* A1,+12,A15 LOAD PARAM-1 VIA STACK LDK A4,2 ADS A4,+12,A15 ADJUST RETURN POINT DCSU00 EQU * COMMON POINT FOR DCSUPR DCSUPD LDK A4,0 PRESET STATUS FOR EXIT DCSU01 EQU * CF A15,DCOUNT INCR COUNTER IFT STUNIT=1 LD A6,DWTCHD,A6 LINK TO HEAD DWT RF(Z) DCSU04 NO LINK LDR A4,A4 CHECK STATUS SOFAR RB(NN) DCSU01 OVERBLOW KEEP IT RB DCSU00 CLEAR STATUS AND UPDATE FOR HEAD DWT DCSU04 EQU * XIF IFT STAT=1 LDR A1,A4 MOVE STATUS FOR EXIT LDR* A6,A15 RELOAD REGS LDR* A5,A15 LDR* A4,A15 LDR* A3,A15 XIF RF DCSEXI COMMON EXIT EJECT ********************************************** * * DCSRED - READ STATISTIC COUNTERS INTO USER BUFFER * * THE FOLLOWING ACTIONS ARE TAKEN * -CHECK IF FUNCTION CONFIGURED. IF NOT EXIT WITH STATUS * -CHECK USER PARAMETERS IF NOT CORRECT EXIT * -FETCH SYMBOLIC ID FROM DWT AND MOV COUNTERS IF ANY * IF BUFFER OVERFLOWS EXIT WITH STATUS * IF SUBUNIT STATISTICS IS CONFIGURED * -LOCATE HEAD DWT AND REPEAT LST ACTION * * ENTRY: CF A15,DCSRED A6=DWT A8=ECB * * EXIT: ABR* A15 A1=STATUS * 0=COMPLETED -1=NOT CONFIG * -3=BUFFER ERROR * IF A1=0 THEN ECB (A8) UPDATED * IN ECBEL AND (ECBBA)=COUNTERS ********************************************************** DCSRED EQU * IFT STAT=1 STR A2,A15 SAVE REGS ON SYSTEM STACK STR A3,A15 STR A4,A15 STR A5,A15 STR A6,A15 STR A7,A15 LDR A8,A8 ANY ECB RF(Z) DCSRER NO LD A2,ECBBA,A8 ANY BUFFER RF(Z) DCSRER NO LD A5,ECBRL,A8 ANY LENGTH GIVEN RF(Z) DCSRER NO LD A4,DWTTAB,A6 TTAB ADDR IFT STUNIT=1 LD A1,DWTCHD,A6 ANY HEAD DWT RF(Z) DCSR01 NO LD A7,DWTSUB,A6 SYMBOLIC SUB ADDRESS IF ANY RF DCSR02 MOVE COUNTERS XIF IFT STAT=1 DCSR01 EQU * LD A7,DWTLAD,A6 LOCAL SYMBOLIC DTE ADDRESS DCSR02 EQU * RF(Z) DCSR04 NO SYMBOLIC ID MOVE 0 LD A1,DWTSTB,A6 ANY STAT BUFFER RF(Z) DCSR04 NO MOVE 0 ADR A1,A6 ADD BASE OF DWT LD A3,STWMIX,A1 NO OF COUNTERS RF(Z) DCSR04 NOE MOVE 0 SLL A3,1 COUNTERS TO BYTES ADK A3,STWCTA ADD BASE OF COUNTER AREA STR A7,A1 SAVE SYMBOLIC ID FOR MOVE RF DCSR06 MOVE STAT BUFFER DCSR04 EQU * NO ID OR STAT BUFFER MOVE ZEROE LDK A3,2 SIZE LDKL A1,DCZERO BUFFER ADDRESS DCSR06 EQU * SUR A5,A3 ANY SPACE IN USER BUFF RF(N) DCSRER NO CF A15,MOVSU MOVE STAT BUFFER TO USER BUFF XIF IFT STAT=1 IFT STUNIT=1 LD A1,DWTCHD,A6 ANY HEAD DWT RF(Z) DCSR08 NO LDR A6,A1 YES USE IT RB DCSR01 XIF IFT STAT=1 DCSR08 EQU * ALL MOVE UPDATE ECB SU A2,ECBBA,A8 START OF USER ST A2,ECBEL,A8 NO OF BYTES LDK A1,0 STATUS OK RF DCSREX EXIT DCSRER EQU * BUFFER ERROR E.G NONE OR OVERFLOW LDKL A1,-3 STATUS DCSREX EQU * EXIT LDR* A7,A15 LDR* A6,A15 RELOAD REGS LDR* A5,A15 LDR* A4,A15 LDR* A3,A15 LDR* A2,A15 XIF RF DCSEXI COMMON EXIT * DCZERO DATA 0 ZEROE BUFFER EJECT ********************************************************* * * COMMON EXIT FROM FUNCTIONS * ********************************************************* DCSEXI EQU * IFT STAT=0 LDKL A1,-1 STATUS NOT CONFIGURED XIF ADKL A15,4 ABR* A15 RETURN EJECT IFT STAT=1 ****************************************************** * * COMMON INTERNAL SUBROUTINES * ****************************************************** * DCLEAR - CLEAR STATISTIC BUFFER IF LINKED FROM DWT * * ENTRY: CF A15,DCLEAR A6=DWT * EXIT: ABR* A15 A1=0 A6=DWT DCLEAR EQU * LD A2,DWTSTB,A6 ANY STATISTIC BUFFER LINKED RF(Z) DCLEXI NO ADR A2,A6 ADD BASE OF DWT LD A1,STWMIX,A2 GET MAX INDEX FOR THIS BUFFER RF(Z) DCLEXI ZEROE CM STWCST,A2 CLEAR STATUS WORD SLL A1,1 COUNTER INTO BYTES ADK A2,STWMIX ADD OFFSET ADR A2,A1 POINT AT LAST WORD+1 IN BUFF DCLOOP EQU * CMR A2 CLEAR COUNTER SUK A2,2 POINTER -2 SUK A1,2 ALL CLEARED RB(NZ) DCLOOP NO DCLEXI EQU * LDK A1,0 STATUS RF DCEXIT COMMON RETURN EJECT * DCOUNT - INCREMENT COUNTER IN STATISTIC BUFFER IF ANY * * ENTRY: CF A15,DCOUNT A6=DWT * EXIT: ABR* A15 A4= DCOUNT EQU * STR A1,A15 SAVE PARAM-1 STR A2,A15 SAVE PARAM-2 IF ANY LD A3,DWTSTB,A6 ANY STATISTIC BUFFER RF(Z) DCONOB NO ADR A3,A6 ADD BASE OF DWT LDR A5,A1 MOVE PARAMETER-1 ANK A5,/3F LEAVE COUNTER INDEX SUK A5,CSINIV SUBTRACT IMPL BASE VALUE RF(N) DCOMAX ERROR PARAM-1 CW A5,STWMIX,A3 PARAM-1 >MAX VALUE IN BUFF RF(NL) DCOMAX YES ADK A3,STWCTA START AFTER CONTROL WORD ADR A3,A5 IN WORDS TO ADR A3,A5 START OF BUFFER SLL A1,8 CHECK IF PARAM-2 REQ RF(N) DCO010 YES LDK A2,1 ELSE INCR WITH +1 DCO010 EQU * IFT STDBLE=1 DOUBLE WORD COUNTERS SLL A1,1 CHECK IF DOUBLE WORD ARITHM RF(N) DCODBL XIF IFT STAT=1 LDR* A1,A3 CHECK COUNTER OVERFLOWED RF(N) DCOVRE YES NO UPDATE ADR A2,A1 INCREMENT RF(O) DCOVRF OVERFLOW STR A2,A3 SAVE NEW VALUE RF DCOEXI IFT STDBLE=1 DCODBL EQU * DOUBLE WORD ARITHM SUK A3,2 COUNTER IN WORD-2,WORD LDR A1,A3 CHECK IF OVERFLOWED RF(N) DCOVRE LDK A1,0 A1=0 A2=INCR VALUE DAR* A3 ADD TO COUNTER RF(O) DCOVRF OVERFLOW STR A1,A3 SAVE COUNTER 1ST WRD ST A2,+2,A3 SAVE COUNTER 2ND WRD RF DCOEXI XIF IFT STAT=1 DCOVRF EQU * C1RS A3 SET COUNTER NEG LD A3,DWTSTB,A6 ADR A3,A6 ADD BASE OF DWT ST A5,STWCST,A3 SAVE INDEX OVERFLOW FLAG DCOVRE EQU * LDK A4,+1 SET STATUS OVERFLOW RF DCOEXI DCOMAX EQU * PARAM-1 >MAX INDEX LDKL A4,-2 SET STATUS RF DCOEXI DCONOB EQU * NO BUFFER LDKL A4,-3 SET STATUS BUFFER ERROR DCOEXI EQU * LDR* A2,A15 RELOAD PARAM-2 IF ANY LDR* A1,A15 RELOAD PARAM-1 RF DCEXIT COMMON RETURN EJECT * * * COMMON RETURN FROM INTERNAL SUBS * DCEXIT EQU * ADKL A15,4 ADJUST STATUCK POS ABR* A15 XIF END