SPL,L,O 
! 
! C2313 - HP2313B AND HP6940A/B CONFIGURATION TABLE GENERATOR 
! 
! SOURCE TAPE 92413-18012 REV. 1644 
! RELOC. TAPE 92413-16012 REV. 1644 
! 
! 
      NAME C2313(7) 
! 
! 
! "C2313" CONSISTS OF TWO SUBROUTINES (C2313 & C6940) WHICH GENERATES 
! THE HP2313B AND HP6940A/B HARDWARE CONFIGURATION TABLES ..ADC AND 
! &6940 RESPECTIVELY.  THIS MODULE IS PART OF THE RTE-B TABLE GENERATOR 
! 29102-60030 AND ISA TABLE GENERATOR 92413-16011.
! 
! 
      LET C2313,C6940 BE SUBROUTINE,GLOBAL,DIRECT 
      LET CMDIN BE SUBROUTINE, EXTERNAL ! FETCHES NEXT COMMAND
      LET WSAW BE PSEUDO,EXTERNAL,DIRECT ! WORK SPACE COMMAND 
      LET INWS BE PSEUDO,EXTERNAL,DIRECT
      LET STPRG BE PSEUDO,EXTERNAL,DIRECT ! RELEASE WORK SPACE
      LET WSAA  BE PSEUDO,EXTERNAL,DIRECT ! WORK SPACE _ ARRAY
      LET OUTRL BE SUBROUTINE,EXTERNAL ! OUTPUT RELOCATABLES
      LET GETCH BE FUNCTION,EXTERNAL
      LET WRITE BE SUBROUTINE,EXTERNAL,DIRECT ! WRITE ROUTINE 
      LET BUFFR BE INTEGER, EXTERNAL ! COMMAND INPUT BUFFER 
      LET RDNM BE INTEGER,FUNCTION,DIRECT 
      LET GCHR, FCHR BE INTEGER,FUNCTION,DIRECT 
      LET CMCNT, CHCNT, CMPTR BE INTEGER,EXTERNAL 
      LET RELSE BE SUBROUTINE,DIRECT ! RELEASES WORK SPACE
      LET CWSAW BE SUBROUTINE,DIRECT
      LET WSAW1 BE SUBROUTINE,DIRECT
      LET .YES. BE SUBROUTINE,DIRECT ! INPUTS YES OR NO RESPONSE
      LET OCTL BE INTEGER,FUNCTION,DIRECT 
! 
! "GAINA" IS A TABLE OF THE POSSIBLE GAINS FOR THE LOW LEVEL
! MULTIPLEXER 
      LET GAINA(16) BE INTEGER
         INITIALIZE GAINA TO "1000",      \ "1000"
                             "50",30012K, \ "500" 
                             "25",30012K, \ "250" 
                             "12",32412K, \ "125" 
                             "10",30012K, \ "100" 
                             "50",5012K, \ "50" 
                             "25",5012K, \ "25" 
                             "12.5"       \ "12.5"
! 
!  ALL MESSAGES TO BE PRINTED DEFINED HERE
! 
      LET M1(7),M2(15),M3(3),M5(6),M6(7),M7(7),M8(5), \ 
          M10(5),M11(10),M12(27),M13(17),M15(9), \
          M20(7),M21(13),M22(17),M23(6),M24(18),M25(8), \ 
          M26(9),M27(9),M28(9),M29(6),M30(7),M31(14), \ 
          M32(17),M33(21) BE INTEGER
! 
         INITIALIZE M1 TO 12,"# OF 2313'S?" 
         INITIALIZE M2 TO 28," SUBSYSTEM #00 CONFIGURATION" 
         INITIALIZE M3 TO 3,"LU?" 
         INITIALIZE M5 TO 10,"# HL - SE?" 
         INITIALIZE M6 TO 11,"# HL - DIF?"
         INITIALIZE M7 TO 11,"# LL, GAIN?"
         INITIALIZE M8 TO 7,"# DACS?" 
         INITIALIZE M10 TO 8,"# EVENT?" 
         INITIALIZE M11 TO 17,"# DIGITAL OUTPUT?" 
         INITIALIZE M12 TO 16,"# DIGITAL INPUT?", \ 
                           15,"# VOLTAGE DACS?", \
                           15,"# CURRENT DACS?" 
         INITIALIZE M13 TO 31,"HP 6940 SUBSYSTEM CONFIGURATION" 
         INITIALIZE M15 TO 16,"ILLEGAL RESPONSE"
         INITIALIZE M20 TO 12,"# OF 6940'S?"
         INITIALIZE M21 TO 24,"# OF CHANNELS IN 2313'S?"
         INITIALIZE M22 TO 32,"# OF CHANNELS IN 6940 UNIT #00? "
         INITIALIZE M23 TO 9,"I/O SLOT?"
         INITIALIZE M24 TO 34,"# DIG INPUT FOR PRESET CNTR W/INT?"
         INITIALIZE M25 TO 14,"# DIGITAL I/O?"
         INITIALIZE M26 TO 16,"# DIGITAL INPUT?"
         INITIALIZE M27 TO 15,"# VOLTAGE DACS?" 
         INITIALIZE M28 TO 15,"# CURRENT DACS?" 
         INITIALIZE M29 TO 9,"# TIMERS?"
         INITIALIZE M30 TO 11,"# COUNTERS?" 
         INITIALIZE M31 TO 25,"# STALL ALARM INCREMENTS?" 
         INITIALIZE M32 TO 31," ASSOCIATED CHNL FOR CNTR #000?" 
         INITIALIZE M33 TO 40,"ENTER INSTR. CONFG. CONSTANTS" 
! 
      LET ENT23 BE INTEGER(9) ! ENTRY POINT RECORD FOR 2313 
         INITIALIZE ENT23 TO 8,"..AD",41400K,0,"..DA",41400K,0
      LET N2313 BE INTEGER(18) ! 2313 NAM RECORD
         INITIALIZE N2313 TO 17,10400K,20000K,0,"..ADC ", \ 
                             100001K,0,0,6,7(0) 
      LET ENT69 BE INTEGER(5) ! 6940 ENTRY RECORD 
         INITIALIZE ENT69 TO 4,"&694",30000K,0
      LET N6940 BE INTEGER(18) ! 6940 NAM RECORD
         INITIALIZE N6940 TO 17,10400K,20000K,0,"&6940 ", \ 
                             100001K,0,0,6,7(0) 
! 
C2313: SUBROUTINE GLOBAL,DIRECT 
      CALL WRITE(M1) ! WRITE # OF SUBSYS MESSAGE
C10:  IF [LSUBS_RDNM(64)] = 0 THEN RETURN ! IF NONE RETURN
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C10]
         NDACS,NCHN,W1,W2,W3,W4_0 
         WSAW(W1)_1 ! FIRST WORD OF TABLE 
         WSAW(W1)_1 !  IS A DEF *+1 
         CALL CWSAW(LSUBS)  ! 2ND WORD IS NUMBER OF SUBSYSTEMS
         WSPNT_6
      FOR SUBS_1 TO LSUBS DO THRU E2313 
         ONES_SUBS-10*[TENS_SUBS/10] ! GENERATE AND 
         M2(8)_"00"+ONES+(TENS-<8)   !  PRINT SUBSYSTEM 
         CALL WRITE(M2)              !   NUMBER MESSAGE 
         WORDS_0
         SLOT_2 
         CALL CWSAW(0)
! 
      CALL WRITE(M3) ! PRINT "LU?" AND
C20:  LU _ RDNM(64)              ! READ IN LOGICAL UNIT NUMBER
      IF FCHR = "-" OR LU < 7 THEN [CALL WRITE(M15); GOTO C20]
      CALL CWSAW(LU)
! 
      CALL CWSAW(0) ! RESERVE SPACE FOR LAST CHANL IN SUBSYS. 
! 
      CALL WRITE(M5)  ! INPUT NUMBER OF 
      HLSE: K1_RDNM(1056)    ! HIGH LEVEL SINGLE ENDED CHANNELS 
         IF K1 # 16 THEN [ IF K1 AND 37K THEN [ \  MUST BE 16 OR
            CALL WRITE(M15) ; \ MULTIPLE OF 32, OTHERWISE 
            GO TO HLSE ]]  ! GIVE ERROR AND TRY AGAIN 
! 
      CALL CWSAW(K1)  ! RECORD NUMBER OF HLSE CHANNELS
! 
      HLCH,NCHN_NCHN+N
      SLOT_SLOT+(N >- 5)
! 
      CALL WRITE(M6)  ! INPUT NUMBER OF HIGH LEVEL
      HLDF: K1_RDNM(528)     ! DIFFERENTIAL INPUT CHANNELS
         IF K1 # 8 THEN [ IF K1 AND 17K THEN [ \ MUST BE 8 OR 
            CALL WRITE(M15) ;\ A MULTIPLE OF 16 
            GO TO HLDF ]] ! OTHERWISE GIVE ERROR
! 
                    CALL CWSAW(K1) ! RECORD NUMBER HLDF CHANNELS
      NCHN_NCHN+N 
! 
! GENERATE LOW LEVEL GAIN ENTRIES 
! 
      CALL WRITE(M7) ! PRINT LOW LEVEL MESSAGE
RDLL: IF RDNM(528) = 0 THEN GO TO RDLL1 ! IF LAST ENTRY GO TO END 
      IF GCHR = "-"  \ IF GAIN IS NEGATIVE USE SINGLE 
         THEN [ ENTRY_N; \ CHANNEL ENTRIES
            N_1; \
            CALL GCHR ] \ FETCH NEXT CHARACTER
         ,ELSE ENTRY_1  ! USE ONE MULTIPLE CHAN ENTRY 
      WD1_CHAR -< 8 OR GCHR ! FETCH GAIN ENTRY
      WD2_GCHR -< 8 OR GCHR ! TO COMPARE WITH TABLE 
      FOR G_1 TO 15 BY 2 DO [ \ SEARCH TABLE
         IF WD1=GAINA(G) AND WD2=GAINA(G+1) THEN GO TO FGAIN ]
         CALL WRITE(M15) ! IF GAIN NOT FOUND GIVE ERROR 
         GO TO RDLL ! AND TRY AGAIN 
! 
      FGAIN: REPEAT ENTRY TIMES DO [\ 
         CALL CWSAW((G-1 -> 4) OR N); \ RECORD GAIN ENTRY 
         NCHN_NCHN+N ] ! UPDATE SUM OF CHANNELS 
            GO TO RDLL
RDLL1: INWS(W1,WSPNT+4)_NCHN ! RECORD LAST CHAN. IN SUBSYS. 
      INWS(W1,WSPNT)_WORDS>-1 ! RECORD TOTAL WORDS IN SUBSYS ENTRY
! 
! GENERATE DAC ENTRIES
! 
      LU_(LU AND 77K) -< 10 ! MOVE LU TO UPPER 6 BITS 
      SLOT_SLOT+((NCHN-HLCH)>-4)  ! COMPUTE CURRENT SLOT POSITION 
! 
      CALL WRITE(M8)   ! OUTPUT "# DACS?" MESSAGE 
C30:  DAC _ RDNM(64)             ! INPUT RESPONSE AND UPDATE DAC CNTR 
      IF (DAC AND 1K) THEN [WRITE(M15);GOTO C30]
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C30]
      NDACS _ NDACS + DAC 
! 
      FOR N_1 TO DAC>-1 DO [ \ GENERATE ENTRY FOR EACH CARD 
         WSAW(W4)_ LU OR  \ LOGICAL UNIT NUMBER IN BITS  10-15
            (SLOT+N)/12 -< 7 OR \ BOX NUMBER IN BITS 7-9
            $1 -< 3 OR   \ SLOT NUMBER IN BITS 3-6
            1 ]       \ NUMBER OF CHNLS ON CARD -1 IN BITS 0-2
! 
E2313: WSPNT_WSPNT+WORDS ! UPDATE WORK SPACE POINTER
      WSAW(W1)_1                   ! PUT DEF *+1 AT BEGINNING 
      ENT23(9)_[WSAW(W1)_(WSPNT>-1)]-1  !  OF DAC TABLE 
      CALL CWSAW(NDACS) !  FOLLOWED BY NUMBER OF DACS 
! MOVE DAC TABLE TO END OF ADC TABLE
      I_0 
      ALWAYS DO [ \ 
         I_I+1; \ 
         CALL CWSAW(INWS(W4,I)?[GO TO REL]) ] 
! 
! MOVE NAM AND ENTRY RECORDS INTO A WORK SPACE AND OUTPUT 
!  THE RELOCATABLE CODE 
! 
REL:  WSAA(W2)_@N2313 
      WSAA(W3)_@ENT23 
      CALL OUTRL(W2,W3,0,W1)
      CALL RELSE        ! RELEASE WORKING STORAGE 
      RETURN
      END C2313 
! 
RDNM: FUNCTION(LIMIT) INTEGER,DIRECT
      RDCMD: CALL CMDIN(BUFFR,ERR)
      N _ 0 
! 
! FETCH NEXT COMMAND CHARACTER. IF AT EOL, RETURN 
! 
NXCHR: IF [CHAR_GCHR] = 10 OR CHAR =54K \ 
        THEN [IF N > LIMIT  \ IF FINAL VALUE GREATER THAN 
         THEN [CALL WRITE(M15);  \ LIMIT GIVE ERROR AND 
          GOTO RDCMD]  \ TRY AGAIN
           , ELSE RETURN N] 
! 
! CONVERT ASCII TO NUMERIC, IF NOT NUMERIC GIVE ERROR 
! 
      IF [N1_CHAR-60K]<0 OR N1>9 \
         THEN [CALL WRITE(M15); \ IF CHARACTER IS NOT A NUMBER
               GO TO RDCMD]  \ GIVE ERROR AND TRY AGAIN 
         ,ELSE N_N*10+N1 ! UPDATE RUNNING SUM 
      GO TO NXCHR ! GO FETCH NEXT CHARACTER 
      END RDNM
! 
CWSAW: SUBROUTINE(WORD)DIRECT 
      WSAW(W1)_0
      WSAW(W1)_WORD 
      WORDS_WORDS+2 
      RETURN
      END CWSAW 
! 
WSAW1: SUBROUTINE(WORD1)DIRECT
      WSAW(W1)_1
      WSAW(W1)_WORD1
      WORDS_WORDS+2 
      RETURN
      END WSAW1 
! 
GCHR: FUNCTION DIRECT        ! GET NEXT CHARACTER ROUTINE 
GCHR1:IF GETCH(CHAR)=40K \
         THEN GO TO GCHR1 \ 
         ,ELSE RETURN CHAR
      END GCHR
! 
FCHR: FUNCTION DIRECT        ! FIRST CHARACTER ROUTINE
      CHCNT _ 0 
      CMPTR _ CMPTR - CMCNT/2 
FCHR1:IF GETCH(CHAR)=40K \
         THEN GO TO FCHR1 \ 
         ,ELSE RETURN CHAR
      END FCHR
! 
.YES.: SUBROUTINE FEXIT,DIRECT
      RDYES: CALL CMDIN(BUFFR,ERR) !  INPUT RESPONSE
      IF BUFFR = "YE"  \
         THEN RETURN \
         ,ELSE [ IF BUFFR = "NO" \
            THEN FRETURN ]
      CALL WRITE(M15)   ! ANSWER NOT YES OR NO SO GIVE
      GO TO RDYES ! ERROR AND TRY AGAIN 
      END .YES. 
! 
OCTL: FUNCTION(LMT)INTEGER,DIRECT 
      READ: N _ RDNM(LMT) 
      IF [BIT64_N/100]>7 THEN [CALL WRITE(M15); GOTO READ]
      IF [BIT8_(N-(BIT64*100))/10]>7  \ 
        THEN [CALL WRITE(M15); GOTO READ] 
      IF [BIT1_N-(BIT64*100)-(BIT8*10)]>7 \ 
        THEN [CALL WRITE(M15); GOTO READ] 
      N_(BIT64*64)+(BIT8*8)+BIT1
      RETURN N
      END OCTL
! 
RELSE: SUBROUTINE DIRECT
      CALL STPRG(W1)
      CALL STPRG(W2)
      CALL STPRG(W3)
      CALL STPRG(W4)
      RETURN
      END RELSE 
! 
! 
! 
      LET C6940 BE SUBROUTINE,GLOBAL,DIRECT 
! 
! C6940 PRODUCES THE HP6940 CONFIGURATION TABLE IN RELOCATABLE
! FORMAT. THE FOLLOWING IS AN ASSEMBLY LANGUAGE REPRESENTATION
! OF THE CONFIGURATION TABLE: 
! 
!       NAM &6940,6 
!       ENT &6940 
! &6940 DEC -99       - # OF CHAN IN 2313'S 
!       DEF U1
!       DEF U2
!       DEC -1
! U1    DEC -30       - # OF CHAN IN U1 
!       OCT 14        I O SLOT
!       OCT 107       LU + 100B 
!       DEC 2         # EVENT 
!       DEF EVBF1 
!       DEC 2         # DIG IN FOR CT W INT 
!       DEF CTI1
!       DEC 14        # I O CARDS 
!       DEF I/O1
!       DEC 2         # DIG IN
!       DEF 0 
!       DEC 2         # VOLT DACS 
!       DEF 0 
!       DEC 2         # CURRENT DACS
!       DEF 0 
!       DEC 2         # OF TIMERS 
!       DEF TME1
!       DEC 4         # OF CTRS 
!       DEF CT1 
! TME1  DEC 1000      NUMBER OF TIMER INC,0=NO STALL
! CT1   DEC 125       TIMER FOR FREQ
!       DEC 0          NO, REQUIRES UPDATE
!       DEC -102
!       DEC -103      D.I. CARD 
! I/O1  BSS 14        # OF I O
! EVBF1 DEF *+2       DEF *+# OF EVENT
!       BSS 26        BSS THIRTEEN TIMES # EVENT
! CTI1  BSS 2         # OF DI FOR CTR W INT 
! 
! U2    DEC -30       - # OF CHAN IN U2 
!       OCT 12        I O SLOT
!       OCT 110       LU + 100B 
!       DEC 2         # EVENT 
!       DEF EVBF2 
!       DEC 2         # DIG IN FOR CT W INT 
!       DEF CTI2
!       DEC 14        # I O CARDS 
!       DEF I/O2
!       DEC 2         # DIG IN
!       DEF 0 
!       DEC 2         # VOLT DACS 
!       DEF 0 
!       DEC 2         # CURRENT DACS
!       DEF 0 
!       DEC 2         # OF TIMERS 
!       DEF 0 
!       DEC 4         # OF CTRS 
!       DEF CT2 
!       OCT 0 
! CT2   DEC 155       TIMER FOR FREQ
!       DEC 0          NO 
!       DEC -132      D.I. CARD 
!       DEC -133
! I/O2  BSS 14        # OF I O
! EVBF2 DEF *+2       DEF *+# OF EVENT
!       BSS 26        BSS THIRTEEN TIMES # EVENT
! CTI2  BSS 2         # OF DI FOR CTR W INT 
! 
!       END 
! 
C6940: SUBROUTINE GLOBAL,DIRECT 
! 
      WORDS _ 0 
      W1,W2,W3,W4 _ 0 
      CALL WRITE(M20) ! "# OF 6940'S?"
C100: IF [LSUBS_RDNM(8)] = 0 THEN RETURN ! IF NONE RETURN 
      IF FCHR = "-" THEN [CALL WRITE(M15); GO TO C100]
! 
      CALL WRITE(M21) ! "# OF CHANNELS IN 2313'S?"
C110: CHAN _ RDNM(10000)            ! READ IN # OF CHNL IN 2313'S 
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C110] 
      CALL CWSAW([CHAN_-CHAN])
! 
      REPEAT LSUBS TIMES DO [CALL WSAW1(0)] ! RESERVE SPACE FOR UNITS 
      ADDR _ LSUBS + 2
      INWS(W1,4) _ ADDR ! DEF U1
      CALL CWSAW(-1)    ! OCT -1
      START _ WORDS 
! 
      FOR SUBS_1 TO LSUBS DO THRU E6940 
         ONES _ SUBS-10*[TENS_SUBS/10]      ! GENERATE AND
         M2(8) _ "00" + ONES + (TENS-<8)    !  PRINT SUBSYSTEM
         CALL WRITE(M2)                     !   NUMBER MESSAGE
! 
      CALL CWSAW(0) ! RESERVE SPACE FOR -# CHNL'S IN UNIT 
      TCH _ WORDS 
! 
      CALL WRITE(M23) ! "I/O SLOT?" 
C120: IOSLT _ OCTL(256)             ! READ IN I/O SLOT
      IF FCHR = "-" OR IOSLT < 8 THEN [CALL WRITE(M15); GOTO C120]
      CALL CWSAW(IOSLT) 
! 
      CALL WRITE(M3) ! "LU?"
C130: LU _ RDNM(64) OR 64           ! READ IN LOGICAL UNIT NUMBER 
      IF FCHR = "-" OR LU < 71 THEN [CALL WRITE(M15); GOTO C130]
      CALL CWSAW(LU)
! 
      CALL WRITE(M10) ! "# EVENT?"
C140: EVNT _ RDNM(15)              ! READ IN # OF EVENT SENSE CARDS 
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C140] 
      CALL CWSAW(EVNT)
! 
      CALL WSAW1(0) ! RESERVE SPACE FOR PNTR TO EVENT BUFFER
      EVBF1 _ WORDS 
! 
      CALL WRITE(M24) ! "# DIGITAL INPUT FOR PRESET COUNTER W INT?" 
C150: DIGCT _ RDNM(15)             ! READ IN # OF DIGITAL INPUT 
!                                    CARDS FOR COUNTER W INT. 
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C150] 
      CALL CWSAW(DIGCT) 
! 
      CALL WSAW1(0) ! RESERVE SPACE FOR PNTR TO CT W INT
      CTI1 _ WORDS
! 
      CALL WRITE(M25) ! "# OF DIGITAL I/O?" 
C160: DIGIO _ RDNM(240)             ! READ IN # OF DIGITAL I/O CARD 
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C160] 
      CALL CWSAW(DIGIO) 
! 
      CALL WSAW1(0) ! RESERVE SPACE FOR PNTR TO # OF I O CARDS
      IO1 _ WORDS 
! 
      CALL WRITE(M26) ! "# DIGITAL INPUT?"
C170: DIGIN _ RDNM(240)             ! READ IN # OF DIGITAL INPUT CARD 
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C170] 
      CALL CWSAW(DIGIN) 
! 
      CALL CWSAW(0) ! OCT 0 
! 
      CALL WRITE(M27) ! "# VOLTAGE DACS?" 
C180: VDC _ RDNM(240)               ! READ IN # OF VOLTAGE DACS 
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C180] 
      CALL CWSAW(VDC) 
! 
      CALL CWSAW(0) ! OCT 0 
! 
      CALL WRITE(M28) ! "# CURRENT DACS?" 
C190: CDAC _ RDNM(240)              ! READ IN # OF CURRENT DACS 
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C190] 
      CALL CWSAW(CDAC)
! 
      CALL CWSAW(0) ! OCT 0 
! 
      CALL WRITE(M29) ! "# TIMERS?" 
C200: TIME _ RDNM(240)              ! READ IN # OF PROG. TIMER CARDS
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C200] 
      CALL CWSAW(TIME)
! 
      ADDR _ WORDS/2 + 3
      IF SUBS = 1 THEN CALL WSAW1(ADDR) ! DEF *+3 
      IF SUBS > 1 THEN CALL CWSAW(0)    ! OCT 0 
! 
      CALL WRITE(M30) ! "# COUNTERS?" 
C210: COUNT _ RDNM(240)             ! READ IN # OF PULSE COUNT CARDS
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C210] 
      CALL CWSAW(COUNT) 
! 
      TCHNL_EVNT+DIGCT+DIGIO+DIGIN+VDC+CDAC+TIME+COUNT
      INWS(W1,TCH) _ -TCHNL         ! INSERT -# OF CHNL'S IN UNIT 
! 
      ADDR _ WORDS/2 + 2
      CALL WSAW1(ADDR) ! DEF *+2
! 
      IF SUBS > 1 OR TIME = 0 THEN GOTO C230
      CALL WRITE(M31) ! "# STALL ALARM INCREMENTS?" 
C220: STALL _ RDNM(4096)            ! READ IN # OF STALL ALARM STEPS
      IF FCHR = "-" THEN [CALL WRITE(M15); GOTO C220] 
      CALL CWSAW(STALL) 
      GO TO C240
C230: CALL CWSAW(0) ! OCT 0 
! 
C240: IF COUNT = 0 THEN GO TO C250
! 
      FOR T _ 1 TO COUNT DO THRU CNTR 
         HUNDS _ T/100                     ! GENERATE 
         TENS _ (T-(HUNDS*100))/10         ! COUNTER
         ONES _ T-(HUNDS*100)-(TENS*10)    ! NUMBER 
         M32(16) _ "00" + ONES + (TENS-<8) ! AND
         M32(15) _ "#0" + HUNDS            ! PRINT
         CALL WRITE(M32)                   ! MESSAGE
! 
      CNT _ RDNM(1000)               ! READ IN PULSE CNTR CHAN
      IF FCHR = "-" THEN CNT _ -CNT 
CNTR: CALL CWSAW(CNT) 
! 
C250: ADDR _ WORDS/2
      INWS(W1,IO1) _ ADDR            ! INSERT PNTR TO # OF IO CARDS 
! 
      REPEAT DIGIO TIMES DO [CALL CWSAW(0)] ! # OF IO 
! 
      ADDR _ WORDS/2
      INWS(W1,EVBF1) _ ADDR          ! INSERT PNTR TO EVENT BUFFER
! 
      ADDR _ EVNT + ADDR
      CALL WSAW1(ADDR) ! DEF *+# OF EVENTS
! 
      E _ 13*EVNT 
      REPEAT E TIMES DO [CALL CWSAW(0)] ! BSS 13*EVENT
! 
      ADDR _ WORDS/2
      INWS(W1,CTI1) _ ADDR           ! INSERT PNTR TO CT W INT
! 
      REPEAT DIGCT TIMES DO [CALL CWSAW(0)] ! BSS # OF DI FOR 
!                                             CTR W INT.
! 
      ADDR _ (WORDS - START)/2
      ADDR _ LSUBS + 2 + ADDR 
E6940: IF SUBS<LSUBS THEN INWS(W1,SUBS*2+4) _ ADDR
! 
      WSAA(W2) _ @N6940 
      WSAA(W3) _ @ENT69 
      CALL OUTRL(W2,W3,0,W1)
      CALL RELSE       ! RELEASE WORKING STORAGE
      RETURN
      END C6940 
      END 
      END$
                                                                        