ASMB,R,B,L,C
      HED 91000A VERIF -- CODE PROCEDURES  10/31/73 
* 
* 
* THIS ASSEMBLY LANGUAGE PROGRAM
*    CONTAINS 8 CODE PROCEDURES USED
*    BY THE 91000A VERIFICATION PROGRAM.
* 
*    IT ALSO CONTAINS A PROGRAM FOR CONFIGURING 
*    AND A NUMBER OF SERVICE SUB-ROUTINES USED
*    BY THE PROCEDURES
* 
*  THE DIFFERENT PROCEDURES ARE IDENTIFIED
*    BY THEIR ENTRY POINTS. 
* 
*      1. INTRP - COMMAND INTERPRETER 
*      2. CNVRT - CONVERTS DATA TO VOLTAGE
*      3. EXIT  - SET-UP AND CHECK FOR ESCAPE 
*      4. DELAY - DELAYS FOR SPECIFIED TIME (10 USEC MULTIPLES) 
*      5. HISTO - HISTOGRAM ROUTINE 
*      6. DSPLY - REGISTER DISPLAY ROUTINE
*      7. STATP - COMPUTES AVG, P-P, HIGH, LOW, & RMS 
*      8. CNFGR - RECONFIGURE BCS AND CONFIGURE DSPLY/HISTO 
*      9. READX - READS FROM TTY OR PHOTOREADER WITH ENTRY
*                 POINTS: READ1, READ2
* 
* 
      NAM CODES 
      ENT INTRP,CNVRT,STATP,DSPLY 
      ENT HISTO,EXIT,CNFGR,DELAY
      ENT READ1,READ2,GONLY 
      EXT .IOC.,.DIO.,.IOI.,.SQT.,SQRT,.IOR.
      EXT FLOAT,.FDV,.DTA.,.ENTR,.RTOI,.IAR.
      SUP 
      HED 91000A VERIF -- CODE PROCEDURES -- INTRP  10/31/73
**********************************
*                                *
*  INTRP -- COMMAND INTERPRETER  *
*                                *
**********************************
      SPC 1 
*  THE PROMPTER IS ISSUED BY THIS PROCEDURE.
* 
*  THE COMMAND IS SCANNED AND THE PROPER
*  INDICATORS SET FOR THE ALGOL.
* 
*  ERRORS IN COMMANDS ARE TRAPPED AND THE 
*  PROMPTER IS RE-ISSUED. 
* 
*  WHEN SETTING THE PACER, ITS PARAMETERS ARE 
*  REQUESTED AND READ.
      SPC 2 
WHERE NOP 
SC.   NOP 
TC.   NOP 
RS.   NOP 
BS.   NOP 
SS.   NOP 
HI.   NOP 
DI.   NOP 
      NOP 
CO.   NOP 
      NOP 
RPTOK NOP 
GONLY NOP 
LOOP  NOP 
PACED NOP 
      NOP 
      NOP 
      NOP 
LSTOK NOP 
BATCH NOP 
      SPC 1 
INTRP NOP 
      JSB .ENTR 
      DEF WHERE 
      SKP 
      LDA CO.,I     PRINT 
      SSA             CONDITIONS? 
      JMP .COND         YES 
      SPC 1 
START JSB .IOC.     WRITE OUT 
      OCT 20002       THE 
      JMP *-2           PROMPTER (>)
      DEF CMND            AND HOLD
ONE   DEC 1                 THE LINE
      SPC 1 
      JSB READ4     \\\\\\\\\\\ 
      DEF *+4       READ IN    \
      DEF DEVYC       THE       > 
      DEF MIN1          COMMAND/
      DEF PIN       /////////// 
      SPC 1 
      CLB           CLEAR 
      LDA DI.,I       DATA DISPLAY
      SSA               IN SWITCH 
      OTB 1               REGISTER
      SPC 1 
      LDA DESC      IS THE
      AND UPPER       INPUT A 
      CPA ASTER         COMMENT?
      JMP START           YES 
      SPC 1 
      LDA DESC      CHECK COMMAND:
      CPA LI        LIST? 
      JMP LISTR       YES 
      CPA RE        REPEAT? 
      JMP REPET       YES 
      CPA SE        SET A CONDITION?
      JMP SET         MAYBE 
      CPA CL        CLEAR A CONDITION?
      JMP CLEAR       YES 
      SPC 1 
      CPA CO        PRINT CONDITIONS? 
      JMP COND        YES 
      SPC 1 
      CPA BA        GO TAPE?
      JMP BAT         YES 
      CPA TY        GO KEYBOARD?
      JMP TYPE1       YES 
      SKP 
GO.ON LDA NB12      INITIALIZE
      STA CNTR1       COUNTERS
      LDA IASC          AND 
      STA PNTR1           POINTERS
      LDA NB10              FOR 
      STA CNTR                FINDING 
      LDA PARAM                 TEST TO 
      STA PNTR                    BE CALLED 
AGAIN LDA PNTR1,I   HAS A TEST
      CPA DESC        BEEN FOUND
      JMP EKUAL         YES 
      ISZ PNTR1         NO - POINT TO NEXT TEST 
      ISZ CNTR1     CHECKED ALL TESTS & FOUND NONE? 
      JMP AGAIN       NO - LOOK AGAIN 
ERRR  JSB ERROR       YES - WRITE "??"
      JMP START     GO GIVE PROMPTER AGAIN
EKUAL INB           TEST HAS BEEN FOUND - INC TEST #
      ISZ PNTR      ADVANCE TEST BOOLEAN POINTER
      ISZ CNTR      INC CNTR FOR VALID TEST BOOLEAN 
ZERO  NOP 
      ISZ CNTR1     DONE? 
      JMP EKUAL       NO
      STB WHERE,I     YES - SET TEST INDICATOR
      CCB           FORM "TRUE" 
      LDA PNTR,I    GET BOOLEAN 
      STA PNTR        LOCATION
      LDA CNTR      CHECK FOR VALID 
      SSA,RSS         TEST BOOLEAN? 
      JMP INTRP,I       NO
      SPC 1 
      CLA 
      STA SC.,I     \\\\\\\\\\\ 
      STA TC.,I                \
      STA RS.,I     CLEAR       \ 
      STA BS.,I       PREVIOUS   >
      STA SS.,I         COMMAND / 
      STA HI.,I                /
      STA DI.,I     /////////// 
      SPC 1 
      STB PNTR,I    SET TRUE INTO TEST
      JMP INTRP,I   GO BACK TO ALGOL
      SKP 
LISTR LDA LSTOK,I   IS THERE
      SSA             A DATA BUFFER TO LIST?
      JMP GO.ON         YES 
      JMP ERRR          NO
      SPC 1 
REPET LDA RPTOK,I   IS THERE A TEST 
      SSA             THAT CAN BE REPEATED? 
      JMP GO.ON         YES 
      JMP ERRR          NO
      SPC 1 
SET   LDA DES       WHAT IS THE THIRD CHAR? 
      AND UPPER     WAS IT A T? 
      CPA T 
      RSS             YES - SO IT IS SET
      JMP GO.ON       NO - SO MUST BE SEQUENTIAL
      CCB           GET CONDITION 
      LDA ST          TO BE SET 
      RSS 
      SPC 1 
CLEAR LDA FROM      GET COND TO BE CLEARED
      ALF,ALF       POSITION AND
      AND B377        ISOLATE FIRST CHARACTER 
      CPA P         PACER COND? 
      JMP PCR         YES 
      CPA R         REPEAT COND?
      JMP LOP         YES 
      CPA D         SET DELAY?
      JMP SETD        YES 
      CPA ALL       CLEAR ALL CONDITIONS? 
      JMP CLRAL       YES 
      JMP ERRR      INVALID COND - WRITE "??" 
      SPC 2 
LOP   STA LSTOK,I   CLEAR LIST CAPABILITY 
      STB LOOP,I    SET OR CLEAR LOOP CONDITION 
      JMP START     RE-ISSUE PROMPTER 
CLRAL SSB           CLEAR REQUEST?
      JMP ERRR        NO
      STB LOOP,I      YES - CLEAR LOOP
      STB PACED,I           CLEAR PACER 
      JMP SETD2             CLEAR DELAY 
      SPC 1 
BAT   LDA FIVE      \\\\\\\\\\\ 
LBL1  JMP LBL2 OR NOP (NO P.R.)\
      CLB,RSS                   \ 
TYPE1 LDB ABRT      SET TAPE OR  \
      STB LBL4      KEYBOARD MODE > 
      LDA ONE                    /
LBL2  STA DEVYC                 / 
      STA BATCH,I              /
      JMP START     /////////// 
      SPC 1 
      SPC 1 
PCR   STB PACED,I   SET OR CLEAR PACE MODE
      JMP START       AND RE-ISSUE PROMPTER 
      SPC 1 
      SKP 
.COND JSB .IOC.     PRINT OUT 
      OCT 20002       " COND:"
      JMP *-2 
      DEF MSG4
      DEC 3 
      SPC 1 
COND  CLB 
      STB CO.,I     CLEAR COND REQUEST
      STB OUTBF       INDICATOR 
      LDA PACED,I   PACED 
      SSA,RSS         CONDITION?
      JMP LABL1         NO - GO ON
      LDA P             YES - SET UP
      IOR SPACE                 P TO PRINT
      ADB .CO.. 
      STA B,I 
      ISZ OUTBF 
      SPC 1 
LABL1 LDA LOOP,I    REPEAT
      SSA,RSS         CONDITION?
      JMP LABL2         NO - GO ON
      LDA R             YES - SET UP
      IOR SPACE                 R TO PRINT
      LDB OUTBF 
      ADB .CO.. 
      STA B,I 
      ISZ OUTBF 
      SPC 1 
LABL2 LDA DELC      DELAY 
      SSA,RSS         CONDITION?
      JMP LABL5         NO - GO ON
      LDA D             YES - SET UP
      IOR SPACE                 D TO PRINT
      LDB OUTBF 
      ADB .CO.. 
      STA B,I 
      ISZ OUTBF 
      SPC 1 
LABL5 LDB OUTBF     SET OUTPUT PRINT
      STB LABL7       LENGTH FOR CONDITIONS 
      SZB           WERE THERE ANY COND?
      JMP LABL6       YES - GO PRINT THEM 
      LDA NO          NO - SET UP 
      STA .CO..,I            NONE TO PRINT
      CLB,INB 
      LDA NE
      ADB .CO.. 
      STA B,I 
      LDA TWO       SET PRINT LENGTH
      STA LABL7       FOR NONE
      SPC 1 
LABL6 JSB .IOC.     PRINT 
      OCT 20002       CONDITIONS
      JMP *-2           OR
.CO.. DEF TOP             NONE
LABL7 NOP 
      JMP START 
SETD  SSB,RSS       SET DELAY?
      JMP SETD2       NO
      SPC 1 
      JSB .IOC.     YES- REQUEST
      OCT 20002       DELAY 
      JMP *-2           VALUE 
      DEF MSG7
      DEC -8
      SPC 1 
      JSB READ1     READ IN 
      DEF SETD1       DELAY 
      DEF DEVYC         VALUE 
      DEF ONE             (# OF 
      DEF PIN               MILLISECONDS) 
      SPC 1 
SETD1 LDB PIN 
      RBL,CLE,SLB,ERB    ABORT? 
      JMP START            YES
      CMB,INB       SET COUNTER FOR 
SETD2 STB DELC        # OF MILLISECONDS 
      JMP START 
      SPC 2 
******************
*                *
*  END OF INTRP  *
*                *
******************
      HED 91000A VERIF -- CODE PROCEDURES -- CNVRT  10/31/73
******************************************* 
*                                         * 
*  CNVRT -- CONVERT DATA TO REAL VOLTAGE  * 
*                                         * 
******************************************* 
      SPC 1 
*  THIS ROUTINE TAKES INTEGER DATA STORED 
*  IN THE UPPER 12 BITS OF EACH WORD OF 
*  AN INTEGER ARRAY (IN THIS CASE, THE
*  UPPER HALF OF THE REAL ARRAY - DATA) 
*  AND CONVERTS IT TO REAL VOLTAGE
*  STORING IT IN A REAL ARRAY (DATA). 
* 
*  TWO GAINS ARE USED ALTERNATING BUT 
*  BOTH WILL OFTEN BE THE SAME. 
      SPC 2 
VOLTS NOP 
DATA  NOP 
GAIN1 NOP 
GAIN2 NOP 
FIRST NOP 
NUMBR NOP 
      SPC 1 
CNVRT NOP 
      JSB .ENTR 
      DEF VOLTS 
      SPC 1 
*                   ** INITIALIZE **
      SPC 1 
      DLD GAIN1,I   OBTAIN
      DST FGAIN       GAIN1 
      DLD GAIN2,I   OBTAIN
      DST SGAIN       GAIN2 
      LDA NUMBR,I   SET COUNTER 
      CMA,INA         FOR NUMBER OF READINGS
      STA NUMBR         TO BE CONVERTED 
      LDA DATA      SET INPUT BUFFER
      ADA FIRST,I     POINTER TO STARTING 
      STA DATA          POINT 
      LDA FIRST,I   SET OUTPUT BUFFER 
      ALS             POINTER 
      ADA VOLTS         TO STARTING 
      STA VOLTS           POINT 
      SKP 
      LDA TEST      SET UP ALTERNATING TEST 
MORE  STA DESC      SAVE ALTERNATING TEST 
      LDB XL3       GET SECOND GAIN 
      SLA           FIRST OR SECOND?
      LDB XL2         FIRST - GET FIRST GAIN
      STB XL4       SET PROPER GAIN 
      LDA DATA,I    GET RAW DATA WORD 
      ARS,ARS       DIVIDE BY 16
      ARS,ARS         (RIGHT JUSTIFY) 
      JSB FLOAT     MAKE INTO REAL NUMBER 
      FMP .005      MAKE IT VOLTAGE 
      JSB .FDV      ADJUST VOLTAGE
XL4   DEF FGAIN       BY AMOUNT OF GAIN 
      STA VOLTS,I   STORE 
      ISZ VOLTS       VOLTAGE 
      STB VOLTS,I       IN OUTPUT 
      ISZ VOLTS           ARRAY (INTO ALGOL)
      ISZ DATA      NEXT DATA 
      ISZ NUMBR     DONE? 
      RSS             NO
      JMP CNVRT,I     YES - RETURN TO ALGOL 
      LDA DESC      GET ALTERNATING TEST
      RAR           SWITCH ALTERNATING TEST 
      JMP MORE      NEXT DATA 
      SPC 2 
******************
*                *
*  END OF CNVRT  *
*                *
******************
      HED 91000A VERIF -- CODE PROCEDURES -- EXIT  10/31/73 
********************************************* 
*                                           * 
*  EXIT -- SET UP AND CHECK TTY FOR ESCAPE  * 
*                                           * 
********************************************* 
      SPC 1 
*  THE TTY TRAP CELL LINK IS MADE 
*  TO POINT AT I.EX BELOW SO THAT 
*  AN INTERRUPT FROM THE TTY COMES HERE.
* 
*  THE LINK IS RESTORED ON INTERRUPT AND
*  CONTROL SENT TO A LABEL PASSED IN THE CALL.
* 
*  A CLEAR REQUEST HERE RESTORES THE LINK.
* 
*  THE 91000A TRAP CELL IS RESTORED WHENEVER
*  THE TTY LINK IS RESTORED.
      SPC 2 
TEST1 NOP 
LABEL NOP 
      SPC 1 
EXIT  NOP 
      JSB .ENTR 
      DEF TEST1 
      SPC 1 
      LDA TEST1,I 
LBL4  INA,SZA       SET UP? 
      JMP RSET        NO - GO CLEAR IT
      JSB CHECK       YES - IS TTY BUSY?
      LDA TTYIN     GET NEW TRAP CELL LINK
      STA TTYL,I    SET UP LINK 
      LDA INTTY     GET TTY INPUT MODE WORD AND 
OTA1  OTA TTY         OUTPUT
STCC1 STC TTY,C     ENCODE THE TTY FOR INPUT
      JMP EXIT,I
      SPC 1 
RSET  JSB CLRIT     GO CLEAR
      JMP EXIT,I
      SPC 1 
I.EX  NOP           INTERRUPT ENTRY POINT 
      JSB CLRIT     GO CLEAR
      JMP LABEL,I   GO TO ALGOL INTERRUPT POINT 
      SPC 1 
CLRIT NOP 
      LDA TTYLC     GET BCS TTY LINK
CLC1  CLC TTY       TURN OFF TTY
STF1  STF TTY       RESTORE FLAG
      STA TTYL,I    RESTORE TRAP LINK 
CLC2  CLC .2313     TURN OFF 91000A 
      LDA TCC       RESTORE 
      STA SC,I        TRAP CELL 
STF2  STF .2313 
      JMP CLRIT,I 
      SPC 1 
*                   **  END OF EXIT  ** 
                                                                                                                                                                                                      