/ / / / / / / / / / /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 OCTDEC /OCTDEC IS CALLED WHEN THE RESPONSE TO A QUESTION IS EXPECTED /TO BE EITHER AN OCTAL OR DECIMAL NUMBER. A CHECK IS MADE FOR /A NUMERICAL STRING. A HOOK WAS LEFT FOR A CALL TO A LIMIT /CHECKING ROUTINE AT A LATER TIME. OCTDEC USES SERVICE ROUTINE /PACK8 TO PACK THE ANSWER IN OS/8 FORMAT, AND MOVE SUBROUTINE /TO INSERT THE DATA IN TABLE TNUM. FINALLY A POINTER TO THE /ANSWER IS INSERTED IN THE ANSWER TABLE. .RSECT OCTDEC .ENTRY OCTD .GLOBAL DFLG .EXTERNAL PACK8,MOVE,TABLE1,UNPACK,TTTY,QUES,LIM .EXTERNAL TTYPTR,TEMP1,TEMP2,OFLAG,DIRLOC,TFG,TQES .EXTERNAL DFLT,DFPTR,ANSPTR,IQUES .EXTERNAL NUMPTR,PCKPTR,PCK,MOV,DEFLT,ERR1 OCTD, 0 CLA TAD F1 RDF DCA OCTD20 /SETUP FOR RETURN CDF TABLE1 TAD QUES CDF .FLD DCA RETU3 CDF TABLE1 /USE EXCESS THREE FEATURE FOR ERROR RETURN TAD I F2 DCA 10 OCTD3, TAD I 10 TAD F3 SNA JMP OCTD21 /GET FIRST CHARACTER FROM TTY /BUFFER. CHECK FOR CARRIAGE RETURN OCTD22, TAD F4 SPA JMS ERR30 /CHARACTER CANNOT BE LESS THAN ZERO /INVALID RESPONSE. TAD F5 SMA JMS ERR30 /CHARACTER CANNOT BE GREATER THAN 9. /INVALID RESPONSE. DCA I F6 TAD I F7 SNA CLA JMP OCTD23 /DECIMAL NUMBER EXPECTED. TAD I F6 TAD F10 SMA CLA JMS ERR30 /GREATER THAN SEVEN. INVALID /RESPONSE (OCTAL EXPECTED) OCTD23, TAD I 10 TAD F3 SNA JMP OCTD2 /CONTINUE CHECKING USER RESPONSE UNTIL /CR OR COMMA ENCOUNTERED. TAD F11 SNA JMP OCTD2 TAD F22 JMP OCTD22 /GET NEXT CHARACTER AND CONTINUE OCTD2, CLA CDF .FLD CIF LIM JMS I F25 /GO CHECK LIMITS ON ANSWER CLA CDF TABLE1 /RETURNS HERE IF LIMITS ARE OK OCTD10, TAD I F7 SZA CLA JMP OCTD17 ISZ DFLG /SET DFLG IF DECIMAL ANSWER EXPECTED OCTD17, CLA TAD I F12 DCA OCTD5 /GET CURRENT POINTER TO ENTRY INTO TNUM TAD I F12 DCA I F15 /SAVE CURRENT POINTER TO THIS ANSWER OCTD4, CDF .FLD CIF PCK JMS I PACK OCTD6, TTTY-1 UNPACK-1 /GO PACK IT INT UNPACK TABLE CDF .FLD CIF MOV JMS I MOVER OCTD7, UNPACK-1 /MOVE IT TO TABLE TNUM FROM UNPACK TABLE OCTD5, NUMPTR /PARAMETER PASSED TO MOVE CLA CDF TABLE1 TAD TFG SNA CLA JMP TFG1 /USE QUES IF NON-T-TYPE TAD TQES JMP TFG2 /USE TQES IF T-TYPE TFG1, TAD I F13 TFG2, TAD I F14 /ADDRESS OF BEGINNING OF ENTRY /IN TNUM IS RETURNED DCA 10 TAD I F15 DCA I 10 /INSERT POINTER TO ANSWER IN /ANSWER TABLE. TAD OCTD5 DCA I F12 /INCREMENT NUMPTR TO NEXT /ENTRY DCA I F7 /RESET OCTAL ANSWER FLAG OCTD20, 0 JMP I OCTD /RETURN TO MAIN 1 OCTD21, CDF .FLD CIF DFLT JMS I FAULT CDF TABLE1 TAD I F16 DCA 10 /GET DEFAULT POINTER INTO AUTOINDEX TAD I F2 DCA 11 /POINT TO TTY BUFFER OCTD11, TAD I 10 TAD F17 SNA /CHECK FOR ( CHARACTER JMP OCTD12 TAD F23 DCA I 11 JMP OCTD11 OCTD12, CLA TAD F24 DCA I 11 /END ENTRY WITH A CR. JMP OCTD2 /DEFAULT. GET DEFAULT ANSWER /AND RETURN TO PACK AND MVOE. PACK, PCK /LINK TO PACK8 ROUTINE MOVER, MOV /LINK TO MOVE ROUTINE FAULT, DFLT /LINK TO DEFAULT ROUTINE F22, 254-215 F23, 251 F24, 215 F25,LIM /LINK TO LIMIT CHECKING ROUTINE DFLG, 0 F1, CIF CDF F2, TTYPTR F3, -215 F4, 215-260 F5, 260-272 F6, TEMP1 F7, OFLAG F10, 272-270 F11, 215-254 F12, NUMPTR F13, QUES F14, ANSPTR F15, TEMP2 F16, DFPTR F17, -251 .FSECT ERR30F .EXTERNAL IQUES,ERR1 FIELD OCTD ERR30, 0 CLA /USER RESPONSE IS NEITHER OCTAL OR DECIMAL ISZ I F20 TAD F21 CDF .FLD CIF ERR1 JMS I RETU RETU3, 1 /OUTPUT ERROR MESSAGE AND RETURN TO QUESTION RETU,ERR1 /POINTER TO ERROR ROUTINE F20, IQUES F21, 30