/ / / / / / / / / / /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 UNPACK /THIS SERVICE ROUTINE IS GENERALLY USED BY OTHER BUILD MODULES TO /UNPACK OS/8 FORMATTED DATA BROUGHT IN FROM MASS STORAGE, FOR RECORD /TYPE DETERMINATION, DEFAULT DETERMINATION, AND OTHER SIMILIAR FUNCTIONS /FOR WHICH UNPACKED DATA IS MORE CONVENIENT TO OPERATE WITH. .FSECT UNPAC .EXTERNAL TABLE1,PCKPTR,TTYPTR,EPACK,CLR .EXTERNAL TEMP1,TEMP2,TEMP3,TEMP4,TEMP5 .ENTRY UNP1 .NOLIST LN XLIST .INCLUDE MACLIB.MA XLIST .MCALL ,,CLEAR /CALLING SEQUENCE: / / CDF .FLD / CIF UNP1 / JMS I SUB / ARG1 / ARG2 / ARG3 / . / . / . /SUB, UNP1 / /WHERE: / ARG1 - SOURCE BUFFER (OS/8 DATA) / ARG2 - TARGET BUFFER (UNPACKED DATA) / ARG3 - NUMBER OF PAIRS TO UNPACK (IN OCTAL) / /ARG3 PRESENTLY HAS A MAXIMUM OF 16 BASE 8 PACKED WORDS, RESULTING IN /25 BASE 8 UNPACKED WORDS. (TABLE UNPACK IS SIZED FOR 25 BASE 8 WORDS) /HENCE THE LARGEST ARGUMENT IS SEVEN FOR ARG3 (SEVEN PAIRS) /THIS SERVICE ROUTINE UNPACKS OS/8 FORMAT ASCII FROM /THE SOURCE BUFFER AND RETURNS RESULTS IN TO THE TARGET BUFFER. /(SIXBIT UNPACKED) OCTAL UNP1, 0 CLA TAD I UNP1 DCA SBUFF /GET ARG1, AND SAVE AS SOURCE BUFFER ISZ UNP1 TAD I UNP1 DCA TBUFF /GET ARG2, AND SAVE AS TARGET BUFFER ISZ UNP1 TAD I UNP1 DCA PASSES /GET NUMBER OF OS/8 WORDS TO UNPACK /EVEN MULTIPLE OF TWO WORDS IS EXPECTED /ARG3 IS DIRECTLY USED AS COUNTER FOR /UNPACKING LOOP ISZ UNP1 TAD F1 RDF DCA UNP15 /SETUP FOR RETURN CLEAR PCKPTR,EPACK,TABLE1,0,SUBR /INITIALIZE THE UNPACK TABLE TO ZEROS /CALLER MUST INITIALIZE IF OTHER THAN /UNPACK TABLE IS USED. CDF TABLE1 TAD PASSES CIA DCA I F2 /SETUP NUMBER OF PASSES TAD 10 DCA I F3 TAD 11 DCA I F4 /SAVE AUTOINDEX REGISTERS TAD TBUFF DCA 10 TAD SBUFF DCA 11 /LOAD FOR AUTOINDEXING UNP3, TAD I 11 DCA I F5 TAD I 11 DCA I F6 /GET FIRST TWO WORDS FROM TABLE TAD I F5 AND F7 DCA I 10 /FORM AND SAVE FIRST CHARACTER TAD I F6 AND F7 DCA I 10 /FORM AND SAVE SECOND TAD I F6 AND F10 CLL RTR;RTR;RTR;RTR DCA I F6 /GET AND SAVE LOW ORDER FOUR BITS TAD I F5 AND F10 CLL RTR;RTR TAD I F6 DCA I 10 /FORM AND SAVE THIRD ISZ I F2 JMP UNP3 /NOT DONE, GO AGAIN TAD I F3 DCA 10 TAD I F4 DCA 11 UNP15, 0 JMP I UNP1 /RESTORE REGISTERS AND RETURN SUBR,CLR SBUFF,0 /SAVE AREA FOR SOURCE BUFFER PARAMETER TBUFF,0 /SAVE AREA FOR TARGET BUFFER PARAMETER PASSES,0 /SAVE LOCATION FOR NUMBER OF OS/8 PAIRS TO UNPACK F1, CIF CDF F2, TEMP5 F3, TEMP1 F4, TEMP2 F5, TEMP3 F6, TEMP4 F7, 377 F10, 7400