/ / / / / / / / / / /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 PACK8 /PACK8 TAKES THREE WORDS IN A BUFFER POINTED TO BY PCK12, AND /PACKS THEN IN OS/8 FORMAT INTO THE BUFFER POINTED TO BY ARG2. IT CONTINUES TO /PACK WORDS UNTIL IT ENCOUNTERS A CARRIAGE RETURN. .ENTRY PCK .NOLIST ME .FSECT PACK8 .EXTERNAL PCKPTR,TABLE1,EPACK,CLR,DFLG,OCTD .NOLIST LN XLIST .INCLUDE MACLIB.MA XLIST .MCALL ,, CLEAR /CALLING SEQUENCE: / / CDF .FLD / CIF PCK / JMS I SUB / ARG1 / ARG2 / . / . / . /SUB, PCK / /WHERE: / ARG1 - SOURCE BUFFER / ARG2 - TARGET BUFFER / /(BOTH BUFFERS IN SYSTEM TABLE AREA) / PCK, 0 CLA TAD I PCK DCA PCK12 /GET ARG1, THEN INCREMENT PAST IT (SOURCE BUFFER) ISZ PCK TAD I PCK DCA PCK13 ISZ PCK /SAME FOR ARG2 (TARGET BUFFER) TAD F1 RDF DCA PCK20 /SETUP FOR RETURN TAD 10 DCA SAVE TAD 11 DCA SAVE1 /SAVE AUTOINDEX TAD PCK13 DCA 11 /INITIALIZE AUTOINDEX TO PASSED /PARAMETER (BUFFER POINTER) TAD PCK12 DCA 10 CLEAR PCKPTR,EPACK,TABLE1,0,SUB /CLEAR UNPACK TABLE CDF TABLE1 PCK6, TAD F2 DCA PCK2 /3 CHARACTERS PER TWO WORDS. PCK4, TAD I 10 DCA SAV0 /GET CHARACTER FROM BUFFER TAD SAV0 TAD F3 SNA CLA JMP PCK1 /DONE; CHARACTER IS CARRIAGE RETURN TAD PCK14 SZA CLA JMP PCK1 /DONE FLAG SET, ZERO SAV0 TAD SAV0 PCK16, DCA SAV1 ISZ PCK16 ISZ PCK2 JMP PCK4 /GET THREE CHARACTERS FROM /BUFFER PCK17, TAD PCK15 DCA PCK16 /RESTORE PCK16 TO POINT AT BEGINNING OF /WORKING BUFFER PCK5, TAD SAV1+2 AND F4 CLL RTL; RTL /GET FIRST HALF CHARACTER DCA PCK7 /SAVE IT TAD SAV1+2 AND F5 CLL RTL RTL;RTL;RTL /GET SECOND HALF CHARACTER DCA PCK10 /SAVE IT TAD PCK7 TAD SAV1 DCA I 11 /PACK AND STORE FIRST WORD TAD PCK10 TAD SAV1+1 DCA I 11 /PACK AND STORE SECOND WORD TAD PCK14 SZA CLA JMP PCK11 /IF COMMA OR CARRIAGE RETURN ON LAST PASS /RETURN TO CALLER JMP PCK6 /GO GET THREE MORE WORDS CHECK /FOR OUTPUT TABLE OVERRUN PCK11, TAD SAVE DCA 10 TAD SAVE1 DCA 11 /RESTORE AUTOINDEX DCA PCK14 /RESET INTERNAL DONE FLAG PCK20, 0 JMP I PCK SAVE1, 0 /SAVE LOCATION FOR AUTOINDEX 11 SAVE, 0 /SAVE LOCATION FOR AUTOINDEX 10 SAV1, ZBLOCK 3,0 /WORK AREA SUB, CLR /LINK TO CLEAR SUBROUTINE PCK13,0 /POINTER TO TARGET BUFFER PCK12, 0 /POINTER TO SOURCE BUFFER PCK2, 0 /3-WORD COUNTER SAV0, 0 /TEMP. STORAGE PCK7, 0 /STORAGE FOR FIRST PACKED CHARACTER PCK10, 0 /STORAGE FOR SECOND PACKED CHARACTER PCK15, DCA SAV1 /CALCULATED DCA FOR WORK AREA PCK14,0 /DONE FLAG (COMMA OR CR.) /HERE WHEN CARRIAGE RETURN OR COMMA PCK1, CDF OCTD TAD I F6 SZA CLA TAD F10 /IF DFLG SET,INSERT PERIOD TO INDICATE /LOCAL DECIMAL TO ASSEMBLER DCA SAV0 DCA I F6 ISZ PCK14 /FILL WORKING TABLE WITH ZEROS CDF TABLE1 TAD SAV0 /RETURN WITH A . OR A 0 IN AC JMP PCK16 /GO PACK'EM. 0 IN THIRD /WORD ENDS LOOP F1, CIF CDF F2, -3 F3, -215 F4, 360 F5, 17 F6, DFLG F10, 256