/ / / / / / / / / / /COPYRIGHT (C) 1978,1979 BY DIGITAL EQUIPMENT CORPORATION / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY /DIGITAL. / / / / / / / / / /VERSION=1 / .TITLE SUBROUTINE LIMIT /LIMIT PERFORMS THE SPECIFIED TEST AS INDICATED BY THE L-TYPE /RECORD, LOADS AC WITH THE ERROR NUMBER, AND CALLS THE ERROR ROUTINE, /IF TEST RESULT IS FALSE. AFTER ERROR MESSAGE IS OUTPUTTED,LIMIT /RETURNS TO THE OCTAL/DECIMAL QUESTION VIA THE GREATER THAN THREE /OPTION IN THE ACTION PARAMETER OF THE ERROR CALL. /LIMIT RETURNS TO OCTDEC IF ANSWER IS INCLUDED WITHIN LIMITS SPECIFIED .RSECT LIMIT .ENTRY LIM .EXTERNAL TABLE1,RECLOC,TEMP1,UNPACK,OVRPTR,ERR1,DIRLOC,QUES .EXTERNAL UNP1,PCKPTR,TEMP2,TEMP3,PAGEFG,LOGNUM,GETR,TTYPTR .EXTERNAL TEMP4,ANSPTR,IFLAG,CQUES,OFLAG,IQUES,TFG .GLOBAL TCHK2 LIM, 0 TAD (CIF CDF) RDF DCA LIM20 /SETUP FOR RETURN CDF TABLE1 TAD TFG SZA CLA JMP TCHK /NO STANDARD LIMIT CHECKING IF T-TYPE TCHK3, CLA CLL CMA RTL /SET AC=-3 TAD DIRLOC DCA 11 TAD I 11 /GET AND SAVE CURRENT QUESTION DCA LIM4 TAD DIRLOC TAD (3 DCA DIRLOC /POINT TO NEXT QUESTION CDF .FLD CIF GETR JMS I LIM5 /GO OVERLAY AS NECESSARY CDF TABLE1 CLA CLL CMA RTL /SET AC=-3 TAD DIRLOC DCA 11 TAD I 11 DCA LIM2 /SAVE NEXT QUESTION NUMBER TCHK1, TAD LIM4 TAD (3000 /QUES+3000=LIMIT RECORD NUMBER DCA CQUES ISZ IFLAG /SETUP TO BRANCH TO LIMIT RECORD CDF .FLD CIF GETR JMS I LIM5 /OVERLAY IT CDF TABLE1 CLA TAD OFLAG SZA CLA /IS THIS AN OCTAL QUESTION? JMS ALIM /YES,GO HANDLE JMS DLIM /NO, CONVERT AS DECIMAL VALUES JMS NLIM TAD N1 /GET LOWER LIMIT CIA TAD IARG /FORM ANSWER-LOWER SPA JMP ERR202 /ANSWER MUST BE EQUAL OR GREATER THAN /LOWER LIMIT TAD N1 CIA /FORM -ANSWER TAD N2 /CACULATE UPPER-ANSWER SPA CLA /ANSWER MUST BE LESS THAN OR EQUAL TO /UPPER LIMIT JMP ERR202 TAD LIM4 DCA QUES TAD (200 DCA PAGEFG STA DCA LOGNUM TAD LIM2 DCA CQUES ISZ IFLAG /SETUP SEARCH FOR NEXT QUESTION UPON /RETURN FROM OCTDEC LIM20, 0 JMP I LIM /RETURN AFTER SERVICING LIM2,0 LIM4,0 /SAVE REGISTERS FOR GETREC POINTERS LIM5,GETR /POINTER TO RECORD OVERLAY ROUTINE N1,0 /LOWER LIMIT (CONVERTED TO BINARY) N2,0 /UPPER LIMIT (CONVERTED TO BINARY) IARG,0 /CURRENT OCTAL/DECIMAL ANSWER ALIM, 0 /HERE TO CONVERT ASCII TO A NUMBER, /SETUP AUTOINDEX TO 11 FOR TEST CDF TABLE1 TAD RECLOC TAD OVRPTR /POINT TO BEGINNING OF BRANCH RECORD JMS PCKR /GO UNPACK LIMIT RECORD STRING DCA 11 CLA CLL CMA RAL /SET AC=-2 DCA TEMP2 /TWO NUMBERS TO FORM ALIM1, TAD (-4 DCA TEMP3 /THREE CHARACTERS MAXIMUM /PER NUMBER. DCA TEMP4 /INITIALIZE TEMP4 ALIM4, TAD I 11 SNA JMP ALIM2 /ZERO FILL TERMINATES THE RECORD TAD (-254 SNA JMP ALIM2 /CHECK FOR COMMA TAD (-260+254 /ADD 215 MINUS 260 BASE /TO FORM NUMBER TAD TEMP4 /ADD PARTIAL NUMBER CLL RAL;RTL /CLEAR LINK AND SHIFT NUMBER LEFT DCA TEMP4 /FORM PART NUMBER ISZ TEMP3 /NUMBER FORMED? JMP ALIM4 /NO, GO GET NEXT CHARACTER ALIM2, TAD TEMP4 /HERE WHEN 3 CHARACTERS OR /COMMA ENCOUNTERED CLL RAR;RTR CDF .FLD NUM, DCA N1 /ACCOUNT FOR UNNECESSARY SHIFT /AND SAVE IN WORK AREA ISZ NUM CDF TABLE1 ISZ TEMP2 JMP ALIM1 /CONTINUE UNTIL TWO NUMBERS ARE FORMED ALIM3, TAD NUM3 DCA NUM /INITIALIZE NUM FOR NEXT CALL ISZ ALIM /BYPASS DLIM CALL JMP I ALIM NUM3, DCA N1 /CALCULATED INSTRUCTION FOR ALIM1 LOOP PAGE NLIM, 0 TAD TTYPTR DCA 11 TAD OFLAG SNA CLA JMP NLIM6 /CHECK FOR DECIMAL ANSWER NLIM1, TAD (-4 DCA TEMP3 /FOUR CHARACTERS MAXIMUM /PER NUMBER. DCA TEMP4 /INITIALIZE TEMP4 NLIM4, TAD I 11 TAD (-254 SNA JMP NLIM2 /CHECK FOR COMMA TAD (254-215 SNA JMP NLIM2 /CHECK FOR CARRIAGE RETURN TAD (-260+215 /ADD 215 MINUS 260 BASE /TO FORM NUMBER TAD TEMP4 /ADD PARTIAL NUMBER CLL RAL;RTL /CLEAR LINK AND SHIFT NUMBER LEFT DCA TEMP4 /FORM PART NUMBER ISZ TEMP3 /NUMBER FORMED? JMP NLIM4 /NO, GO GET NEXT CHARACTER NLIM2, TAD TEMP4 /HERE WHEN 3 CHARACTERS , ZERO, OR /COMMA ENCOUNTERED CLL RAR;RTR NLIM10, CDF .FLD DCA I ARG /STORE RESULTING ANSWER CDF TABLE1 JMP I NLIM /RETURN WITH NUMBER IN ACCUMULATOR NLIM6, TAD TTYPTR DCA 10 JMS DLIM2 JMP NLIM10 /IF DECIMAL ANSWER EXPECTED GO HANDLE DLIM, 0 /HERE TO CONVERT DECIMAL ASCII TO BINARY CDF TABLE1 TAD RECLOC TAD OVRPTR JMS PCKR /GO UNPACK THE LIMIT RECORD STRING DCA 10 /POINT TO START OF NUMERICAL LIMITS CLA CLL CMA RAL /SET AC=-2 DCA DLIM16 /SETUP FOR TWO NUMBERS DLIM17, JMS DLIM2 /GO CONVERT TO BINARY NUMBER CDF .FLD DLIM15, DCA I NUM1 /SAVE RESULTING NUMBER RETURNED IN AC CDF TABLE1 ISZ DLIM15 ISZ DLIM16 /DONE TWO NUMBERS? JMP DLIM17 /NO. CONTINUE TAD NUM33 DCA DLIM15 /YES. INITIALIZE CALCULATED TAD JMP I DLIM /RETURN DLIM2, 0 DCA DLIMNM TAD DLIMNM CLL RTL /CURRENT RESULT X 4 TAD DLIMNM /NUMBER X 5 CLL RAL DCA DLIM10 /SAVE IT TAD I 10 /ADD NEXT CHARACTER SNA JMP DLIM13 /ZERO FILL TERMINATES ENTRY TAD (-254 /CHECK FOR A COMMA SNA JMP DLIM13 /END OF DECIMAL ASCII STRING IF COMMA TAD (254-215 SNA JMP DLIM13 /CARRIAGE RETURN DELIMITS USER RESPONSE TAD (-260+215 /STRIP BASE TAD DLIM10 JMP DLIM2+1 /CONTINUE DLIM13, TAD DLIMNM /GET RESULTING NUMBER JMP I DLIM2 /AC CONTAINS ANSWER ARG,IARG DLIMNM,0 /PARTIAL RESULT STORAGE DLIM10,0 /COUNTER FOR NUMBER OF PASSES DLIM12,UNP1 DLIM16,0 /NEGATIVE COUNTER NUM1, N1 /ANSWER NUMBER UNDER TEST NUM2,N2 /UPPER LIMIT NUM33, DCA I NUM1 ERR202, CLA ISZ IQUES /MAINTAIN CURRENT USER QUESTION NUMBER CDF .FLD TAD LIM4 DCA E202 /USE GREATER THAN THREE FEATURE TAD (202 CIF ERR1 JMS I ER202 E202, 0 ER202,ERR1 /POINTER TO ERROR ROUTINE PCKR, 0 DCA PCKR1 CDF .FLD CIF UNP1 JMS I DLIM12 PCKR1, 0 UNPACK-1 6 CDF TABLE1 CLA TAD (6 TAD PCKPTR /SETUP TO POINT TO FIFTH CHARACTER IN /LIMIT RECORD JMP I PCKR TCHK, 0 TAD TCHK2 SZA CLA JMP TCHK1 /BYPASS PARAMETER SAVE LOGIC AFTER FIRST PASS ISZ TCHK2 JMP TCHK3 /RETURN NORMALLY UPON FIRST PASS TCHK2,0