.SYSID < .TITLE DUMP >,< 000> / /COPYRIGHT (C) 1975 /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. / /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY /ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH /THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS /SOFTWARE, OR ANY OTHER COPIES THEREOF, MAY NOT BE PRO- /VIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON /EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO /THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE /WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COM- /MITMENT BY DIGITAL EQUIPMENT CORPORATION. / /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY /OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. .EJECT .TITLE EDIT LEGEND / / / 015 RCHM JULY-30-75 CHANGE XVM SIGN ON MESSAGE / 016 BLR AUG-31-75 XVM UPGRADE / 017 BLR AUG-31-75 RECODE ALL (NN) OPTION TO ALLOW / ANY INTEGER 1-128 FOR NN / 018 BLR SEPT-3-75 BUG FIX VERSION / 019 BLR SEPT-16-75 FIX NO QAREA BUG FOR BLK# MODE / 020 BLR SEPT-26-75 FIX A-B DECTAPE BUG AND NEGATIVE NR. BUG / 021 BLR OCT-02-75 FIX DECTAPE NNN-MMM BUG / 022 BLR OCT-12-75 FIX BOSS MSG. BUG AND BAD MEMSIZ BUG / / / /DUMP OF SAVED CORE OR INDIVIDUAL BLOCKS /FROM .DAT SLOT -14 ONTO .DAT SLOT -12 / / IF DECTAPE DUMP THEN DUMP IS FROM 5-MEMSIZ WHERE MEMSIZ IS CURRENT / .SCOM+20 ASSUMING THE 'ALL' OPTION / TO DUMP OTHER DECTAPE SIZES USE ALL(NN) OPTION OR NNNNN-MMMMM / OPTION. THE ALL (NN) OPTION IS USED ONLY FOR DECTAPE / /COMMAND STRING: / ALL CR (MORE) / ALL ALTMODE (FINIS) / XXX-YYY CR (MORE) / XXX-YYY ALTMODE (FINIS) / XXX# CR (MORE) / XXX# ALTMODE (FINIS) / / /INITIALIZATION .IODEV -12,-14,-2,-3 .SCOM=100 .TITLE INITIALIZE DUMP .INIT -12,5,DUMP /INIT LP FOR NO FF ON CLOSE (BR-015) INT12=.-1 /BUFFER SIZE (BR-015) BEGIN CAL+1775 /.INIT 1 MOD03 BEGIN 0 DZM TAPESW /CLEAR DECTAPE OPERATION IND. (BR-016) LAC* (.SCOM+52 SMA JMP B1 /IF NOT BOSS-PRINT LAC (NOP /SET UP BOSS SWITCH DAC BOSSW JMP B2 /DON'T TYPE B1 CAL+2775 /.WRITE -3 11 MOD06A MSG1 -3 CAL+775 /.WAIT -3 12 B2 CAL+764 /.INIT 1 MOD05 BEGIN 0 LAC .-1 /CHECK TO SEE IF .DAT -14 AND (100 /IS FILE STRUCTURED SNA JMP ILDEV /NO-PRINT MESSAGE LAC* (.SCOM+2 /LOWEST FREE LOCATION DAC DECBUF /START OF BUFFER TCA TAD* (.SCOM+3 /HIGHEST FREE LOCATION AND (777400 DAC BUFSZE /BUFFER SIZE CLL /SET UP SHIFT (BR-015) LRS 10 /AND DO IT (BR-015) DAC NOBLKS /NO. OF BLOCKS LAC BUFSZE TCA DAC BUFWC /2'S COMP WORD COUNT LAW -1 TAD BUFSZE TAD DECBUF DAC DECEND /LAST LOCATION IN BUFFER GETCMP CAL+776 /INIT 1 MOD07 BEGIN 0 LAW -36 /CLEAR OUT BUFFER DAC COUNT LAC (BUFFER+2 /(BUFFER+2 DAC LINE TR2 DZM* LINE ISZ LINE ISZ COUNT JMP TR2 DZM BLKFLG XCT BOSSW JMP B3 TR6 CAL+2775 /TYPE > 11 MOD10 MSG3 -2 B3 LAC (764 DAC DECLOP .TITLE COMMAND DECODER CAL+2776 /.READ-GET COMMAND STRING 10 MOD11 BUFFER -64 CAL+776 12 GETCMD LAC (NOP DAC NUMOD /INITIAL CONTENTS OF NUPAGE LAC INT12 /CHECK TO SEE IF .DAT -12 AAC -60 /IS LP OR TTY SMA JMP TR1 LAC (SPACES /TTY-SPACES SKP TR1 LAC (TAB /LP-TAB DAC FILLER FILST CAL+766 /.ENTER 4 MOD24 FILNAM LAC NUMOD DAC NUPAGE /SETUP TO PRINT COMMAND ON LPT LAC (BUFFER+2 /(BUFFER+2 DAC GETP /POINTER LAW -1 DAC GET5 /COUNTER LAC* (.SCOM+20 /GET SYSTEM MEMORY SIZE (BR-020) DAC ENDUMP /SAVE AS DEFAULT FOR DECTAPE (BR-020) TR3 JMS GET SAD (12 /LINE FEED JMP TR3 SAD (40 /SPACE JMP TR3 DZM LOCNT DZM ADDRES SAD (101 /A SKP JMP NOTALL JMS GET SAD (114 /L SKP JMP BADCMD /BAD COMMAND JMS GET SAD (114 /L SKP /ALL JMP BADCMD /BAD COMMAND JMS GET SAD (15 JMP CONTAL /CR-RETURN TO COMMAND PROCESSOR WHEN DONE (BR-020) SAD (175 JMP ALT /ALT MODE -.EXIT WHEN DONE SAD (40 /WAS CORE SIZE TYPED? JMS GET /IF A SPACE WAS TYPED GO GET NEXT CHAR SAD (50 / ( SKP JMP BADCMD DZM OLDTOT /ZERO OLD TOTAL (BR-017) MEM.1 JMS GET /GET CHAR (BR-017) SAD (40 /SKIP IF NOT BLANK (BR-017) JMP MEM.1 /TRY AGAIN IF BLANK (BR-017) AAC -60 /TEST FOR NON NUMERIC (BR-017) DAC NEWVAL /SAVE NUMBER (BR-017) SPA /SKIP IF POSSIBLE NUMBER (BR-017) JMP MEM.2 /JUMP IF NOT NUMBER (BR-017) AAC -13 /TEST AGAIN (BR-017) SMA!CLL /SKIP IF NUMBER (BR-017) JMP MEM.2 /JUMP IF NOT NUMBER (BR-017) LAC OLDTOT /GET PREVIOUS VALUE (BR-017) MUL /MULT BY 10 (BR-017) 12 /TEN (BR-017) LACQ /GET RESULT (BR-017) TAD NEWVAL /ADD IN CURRENT DIGIT (BR-017) DAC OLDTOT /SAVE (BR-017) AAC -201 /TEST FOR EXCEEDING 128K (BR-017) SMA /SKIP IF LEQ 128K (BR-017) JMP MSZBAD /GTR 128K GIVE ERROR (BR-017) JMP MEM.1 /GET NEXT CHARACTER (BR-017) MEM.2 LAC NEWVAL /GET CHAR-60 (BR-017) SAD (-7 /IS IT ')' - SKIP IF NOT (BR-017) JMP MEM.3 /')' IS OK (BR-017) JMP BADCMD /ERROR - JUNK IN INPUT (BR-017) MEM.3 LAC OLDTOT /GET NUMBER (BR-017) SNA /SKIP IF NOT ZERO (BR-017) JMP MSZBAD /ZERO NOT GOOD VALUE (BR-017) CLL /SET UP SHIFT (BR-017) ALS 12 /MULT BY 1024 (BR-017) AAC -1 /MAKE TOP OF MEM ADR. (BR-017) DAC ENDUMP /SAVE AS LAST DUMP ADR. (BR-017) ISZ TAPESW /INDICATE ALL (NN) IS DECTAPE ONLY (BR-017) JMS GET /GET NEXT CHARACTER (BR-017) SAD (15 /CR JMP CONTAL /CONTINUE WITH DUMP ALL (BR-017) SAD (175 /IF ALTMODE OR CR SKP /NOT TYPED JMP BADCMD /PRINT ? LAC (NOP DAC NEXTCM /.EXIT WHEN DONE CAL+776 /.CLOSE 6 JMP CONTAL /CONTINUE WITH DUMP ALL (BR-017) ALT LAC (NOP DAC NEXTCM /FALL THROUGH TO .EXIT CAL+776 /.CLOSE 6 .EJECT CONTAL JMS DEVICE /CHECK TO SEE IF DT,DK, OR DP DZM ADDRES /BEGIN ADDRESS = 10 LAC BUFWC DAC DECSZE /FILL BUFFER SETBUF LAC DECBUF /WHOLE BUFFER - BEGIN DAC STARTD LOP LAC DECEND /WHOLE BUFFER - END DAC ENDBUF DECLOP CAL+764 /.TRAN 13 DECBLK 0 /BLOCK NO. DECBUF 0 /START OF BUFFER DECSZE 0 /BUFFER SIZE CAL+764 /.WAIT 12 .TITLE PRINT BUFFER LAC ADDRES DAC BLIKE LAC* STARTD DAC SAMLOC DZM LIKE DZM PLIKE LAC (BUFFER+2 DAC BUFFER JMS DECDMP /PRINT BUFFER LAC (JMP NUBLOC DAC NUPAGE /BYPASS HEADER PRINTOUT LAC DECBLK TAD NOBLKS /UPDATE BLOCK NO. BY NO. OF BLOCKS READ DAC DECBLK LAC DECBUF DAC STARTD /START AT BEGINNING OF BUFFER REDUCE LAC ADDRES TCA TAD ENDUMP /COMPUTE AMOUNT LEFT DAC BUFFER CMA TAD BUFSZE /WILL IT FILL BUFFER SPA JMP LOP /YES-BRING IT IN LAC BUFFER /NO-REDUCE BY 1 BLOCK AND (377 SZA LAC (400 TAD (400 TAD BUFFER AND (777400 TCA DAC BUFFER TAD BUFSZE SPA JMP LOP LAC BUFFER DAC DECSZE JMP LOP .EJECT BADCMD XCT BOSSW JMP EXIT /ILL. COMM. STRING-EXIT IF BOSS CAL+2775 /PRINT IT IF NOT BOSS 11 MOD12 MSG2 -2 JMP BEGIN /NEXT COMMAND STRING .TITLE FIRST BLK OF ^QAREA DEVICE 0 /NEXT THREE LINES CLEAR THE HIGH ORDER BITS /OF CAL+2 TO GET PROPER INFORMATION /BACK FROM THE FSTAT LAC MOD24A /(E. KATZ EDIT 013) AND (77777 /(E. KATZ EDIT 013) DAC MOD24A /(E. KATZ EDIT 013) -14&777+3000 /.FSTAT TO -14 2 MOD24A FILNAM LAC .-1 AND (700000 /CHECK TO SEE WHAT SAD (100000 /DEVICE IS ASS.-14 JMP DTAPE /DECTAPE SAD (200000 JMP DSK /DEC DISK SAD (500000 /DISK CARTRIDGE - RK05? JMP DSK /YES SAD (300000 JMP DSK /DISK PACK XCT BOSSW /IF IN BOSS MODE- JMP EXIT /EXIT, DON'T PRINT MESSAGE ILDEV CAL+2775 /IF NONE OF THESE- 11 /.WRITE:ILLEGAL DEVICE MOD31 MSG -3 .WAIT -3 EXIT .EXIT MSG END-MSG/2*1000 0 .ASCII '.DAT-14 IS NOT ASSIGNED TO A DISK OR DECTAPE'<15> END=. .EJECT DTAPE LAC (101 /^QAREA ON DECTAPE (BR-016) DAC SAVBLK /POINTER TO ^QAREA FIRST BLOCK (BR-016) DAC DECBLK /FIRST BLOCK TO DUMP (BR-016) ISZ DECTP /SET DECTAPE DUMP SWITCH (BR-021) JMP* DEVICE /RETURN TO CALLER (BR-016) DSK DZM DECTP /CLEAR DECTAPE MODE (BR-021) LAC TAPESW /TEST FOR A DECTAPE ONLY OPERATION (BR-017) SNA /SKIP IF DECTAPE ONLY OPERATION (BR-017) JMP DSK.1 /DSK OPERATION - CONTINUE (BR-017) LAC (ERR.5 /GET ERROR MSG POINTER (BR-017) JMP Q.ERR /ISSUE ERROR MSG (BR-017) DSK.1 LAC DECBUF /GET START OF BUFFER ADR. (BR-016) DAC T1.BUF /SAVE IN .TRAN (BR-016) DAC T2.BUF /SAVE IN OTHER .TRAN (BR-016) AAC 21 /COMPUTE SYSBLK POINTER TO ^QAREA BLK # (BR-016) DAC DB.21 /AND SAVE POINTER (BR-016) AAC 3 /COMPUTE SYSBLK POINTER TO ^QAREA SIZE (BR-016) DAC DB.24 /AND SAVE POINTER (BR-016) AAC 67 /COMPUTE ^QAREA POINTER TO (.SCOM+20 (BR-020) DAC DB.120 /AND SAVE (BR-016) .TRAN -14,0,34,0,256 /READ IN SYSBLK (BR-016) T1.BUF=.-2 /BUFFER POINTER (BR-016) .WAIT -14 /WAIT FOR .TRAN TO FINISH (BR-016) LAC* DB.21 /GET ^QAREA STARTING BLOCK # (BR-016) SZA /SKIP IF NO ^QAREA EXISTS (BR-016) JMP DSK.2 /^QAREA EXISTS - CONTINUE (BR-017) LAC (ERR.4 /GET ERROR MSG POINTER (BR-017) JMP Q.ERR /GIVE ERROR IF NO ^QAREA (BR-016) DSK.2 DAC SAVBLK /POINTER TO ^QAREA FIRST BLOCK (BR-016) DAC DECBLK /FIRST BLOCK TO DUMP (BR-016) DAC T2.BLK /SAVE IN .TRAN FOR MEMSIZ FETCH (BR-016) LAC* DB.24 /GET MAX SIZE OF ^QAREA (BR-016) AAC 4 /COMPENSATE FOR STARTING LOC OF ^Q (BR-016) DAC Q.MAX /SAVE FOR LEGAL MEMSIZ TEST (BR-016) .TRAN -14,0,0,0,256 /READ IN FIRST ^QAREA BLOCK (BR-016) T2.BLK=.-3 /BLK # POINTER (BR-016) T2.BUF=.-2 /BUFFER POINTER (BR-016) .WAIT -14 /WAIT FOR .TRAN TO FINISH (BR-016) LAC* DB.120 /GET MEMSIZ FROM ^QAREA IMAGE (BR-016) SPA!SNA /SKIP IF POSSIBLY VALID MEMSIZ (BR-022) JMP DSK.3 /NOT VALID - USE QAREA SIZE (BR-022) IAC!CLL /MAKE NNNK (FROM NNNK-1) (BR-022) IDIV /TEST FOR 8K MULTIPLE (BR-022) 20000 /8K (BR-022) SZA /SKIP IF EXACT MULTIPLE (BR-022) JMP DSK.3 /NOT A VALID MEMSIZ (BR-022) LACQ /GET # OF 8K MULTIPLES (BR-022) AAC -3 /TEST FOR AT LEAST 24K (BR-022) SPA /SKIP IF VALID MEMSIZ (BR-022) JMP DSK.3 /BAD MEMSIZ (BR-022) LAC* DB.120 /GET MEMSIZ FROM ^QAREA IMAGE (BR-022) TCA /AND NEGATE (BR-016) TAD Q.MAX /IS MEMSIZ LEQ ^QAERA SIZE (BR-016) SPA /SKIP IS LEQ ^QAREA (BR-016) JMP DSK.3 /BAD IMAGE - DUMP ONLY QAREA (BR-016) LAC* DB.120 /GET MEMSIZ FROM ^QAREA IMAGE (BR-016) SKP /CONTINUE (BR-016) DSK.3 LAC Q.MAX /ONLY DUMP ^QAERA (BR-016) DAC ENDUMP /SAVE DUMP LIMIT (BR-016) JMP* DEVICE /RETURN TO CALLER (BR-016) Q.ERR DAC E.BUF /SAVE IN ERROR MSG .WRITE (BR-017) .WRITE -3,2,ERR.4,12 /TELL USER NO ^QAREA (BR-016) E.BUF=.-2 /BUFFER POINTER (BR-017) .WAIT -3 /AND WAIT FOR MSG TO FINISH (BR-016) XCT BOSSW /IS BOSS RUNNING (BR-022) JMP EXIT /FATAL ERROR - EXIT (BR-022) JMP BEGIN /ALLOW USER TO TRY AGAIN (BR-017) ERR.4 077002 /DUMMY HEADER (BR-016) 000000 /DITTO (BR-016) .ASCII 'NO ^QAREA ON .DAT-14 DEVICE'<15> ERR.5 077002 /DUMMY HEADER (BR-017) 000000 /DITTO (BR-017) .ASCII 'ALL (NN) OPTION VALID ONLY FOR DECTAPE'<15> MSZBAD LAC (ERR.6 /TELL USER BAD MEMORY SIZE (BR-017) JMP Q.ERR /AND WRITE MSG (BR-017) ERR.6 077002 /DUMMY HEADER (BR-017) 000000 /DITTO (BR-017) .ASCII 'INVALID DUMP SIZE'<15> ERR.7 077002 /DUMMY HEADER (BR-017) 000000 /DITTO (BR-017) .ASCII 'NUMBER TOO LARGE'<15> .TITLE SELECTIVE DUMP NOTALL DZM HASHSW /HASH LEGAL DZM TERMSW /SWITCH ON-CR OR A.M. ILLEGAL DZM TERMCT DZM CHRCNT /CLEAR DIGIT COUNTER (BR-020) DAC CHAR LAC CHAR NOTL DAC CHAR /PROCESS SELECTIVE DUMP AND (170 SAD (60 SKP JMP BADCMD /NOT OCTAL LAC LOCNT /PREVIOUS DIGITS RCL RTL DAC LOCNT LAC CHAR AND (7 XOR LOCNT /COMBINE DIGITS DAC LOCNT ISZ CHRCNT /INCREMENT CHAR COUNTER (BR-020) LAC CHRCNT /AND GET THE RESULT (BR-020) SAD (7 /SKIP IF NOT TOO LARGE A NUMBER (BR-020) SKP /SKIP IF BAD (BR-020) JMP NXTCHR LAC (ERR.7 /GET ERROR MESSAGE POINTER (BR-020) JMP Q.ERR /ISSUE TOO LARGE ERROR (BR-020) NXTCHR ISZ TERMCT /INCREM. TO 1 NUM. AFTER DASH JMP TR7 LAW -1 DAC TERMSW /SWITCH OFF-CR OR A.M. LEGAL NOW TR7 JMS GET /NEXT CHARACTER SAD (40 /SPACE-IGNORED JMP NXTCHR SAD (55 /DASH SEPARATOR JMP FIRST SAD (43 /#-SELECTIVE BLOCK DUMP JMP BLKNO SAD (15 /RETURN - COMMAND STRING LOOP JMP LAST SAD (175 /ALT MODE -.EXIT WHEN -DONE JMP TR10 JMP NOTL /STILL PART OF ADDRESS BLKNO ISZ HASHSW SKP JMP BADCMD DAC BLKFLG LAC (377 /SINGLE 400(8) BLOCK DAC ENDUMP DZM ADDRES /START WITH ZERO LAW -400 /1 BLOCK DAC DECSZE LAC LOCNT DAC DECBLK /BLOCK NUMBER NXGTBL JMS GET /SEE WHAT TERMINATES STRING SAD (15 /RETURN - COMMAND STRING LOOP TR11 JMP SETBUF SAD (55 /MINUS - READ BLOCK IN REVERSE JMP NEGBLK SAD (175 /ALT MODE -.EXIT WHEN DONEE SKP JMP TR11 LAC (NOP DAC NEXTCM /.EXIT WHEN DONE CAL+776 /.CLOSE 6 JMP SETBUF NEGBLK LAC (2764 DAC DECLOP JMP NXGTBL FIRST JMS DEVICE /DETERMINE DEVICE TYPE (BR-019) LAW -1 /HASH OFF SW=-1 (BR-019) DAC HASHSW /SWITCH OFF-HASH ILLEGAL NOW LAC MOD14+1 DAC TERMCT LAC LOCNT /FIRST REGISTER SPA /SKIP IF NOT>128K (BR-020) JMP ER3 /ISSUE FATAL ERROR - TOO LARGE (BR-020) AAC -5 SPA /SKP IF LOCNT > OR = 5(15) OR 6(9) JMP ER2 LAC LOCNT DAC ADRFUL /SAVE FULL ADR. (BR-018) AND (377770 /TO START EACH LINE AT XXXX0 DAC ADDRES DZM LOCNT /FOR NEXT ADDRESS DZM CHRCNT /RESET DIGIT COUNTER (BR-020) JMP NXTCHR TR10 LAC (NOP /ENTRY FOR ALTMODE DAC NEXTCM /.EXIT WHEN DONE CAL+776 /.CLOSE 6 LAST ISZ TERMSW /IF TERMSW INCREMENTS TO 0,CR OR A.M. LEGAL JMP BADCMD LAC LOCNT /LAST REGISTER SPA /SKIP IF NOT>128K (BR-020) JMP ER3 /ISSUE FATAL ERROR - TOO LARGE (BR-020) TCA TAD ADRFUL SMA!SZA /SEE IF LEQ THAN FIRST JMP BADCMD LAC DECTP /GET DECTAPE MODE SWITCH (BR-021) SZA /SKIP IF DISK OPERATION (BR-021) JMP NOTEST /SKIP TEST IF DECTAPE OPERATION (BR-021) LAC LOCNT TCA TAD ENDUMP /TEST FOR MAX (BR-018) SPA JMP ER3 NOTEST LAC LOCNT DAC ENDUMP /SET UP LAST REGISTER JMP SETBLK SETBLK LAC SAVBLK DAC DECBLK /FIRST BLOCK LAC BUFWC DAC DECSZE /WHOLE BUFFER LAC ADDRES /START INFLUENCE REMOVED SZA AAC -5 SKP TR12 ISZ DECBLK /NEXT BLOCK DAC STARTD TAD (-400 SMA /SEE IF RIGHT BLOCK JMP TR12 LAC STARTD /YES, POSITION START IN RIGHT SPOT TAD DECBUF DAC STARTD JMP REDUCE /REDUCE BUFFER SIZE .TITLE IOPS DUMP SUBROUTINE /IOPS DUMP SUBROUTINE - FOR SAVED FILE DECDMP 0 LAC STARTD /SET UP START ADDRESS DAC LOCNT NUPAGE NOP LAC (64000 DAC* GETP /SETUP CR IN BUFFER LAC (32002 DAC BUFFER CAL+2766 /.WRITE - HEADER 11 MOD13 BUFFER -100 CAL+766 /.WAIT 12 JMP TR13 /SKIP .WRITE TR16 CAL+2766 11 MOD26 HOFBUF -100 TR13 LAW -6 DAC BLOCK /BLOCK COUNT NUBLOC CAL+2766 /SPACE ONE LINE 11 MOD14 ONESP -2 .WAIT -12 LAW -10 DAC LINE /LINES PER BLOCK COUNT NULINE DZM LIKE DZM PLIKE TR14 LAC (BUFFER+2 /BUFFER+2 DAC BUFFER /FIRST FREE REGISTER DZM PK57 LAC ADDRES /ADDRESS ITSELF JMS OCTALZ /FROM OCTAL TO ASCII, ZERO SUPPRESS .EJECT NUWORD JMS* FILLER /2 OR 6 SPACES LAC BLKFLG SZA JMP XYZ LAC ADDRES AAC -5 SMA /SKP IF ADDRES <5(15) OR 6(9) JMP XYZ JMS TAB /6 SPACES ISZ ADDRES JMP NUWORD XYZ LAC* LOCNT /CONTENTS SAD SAMLOC SKP ISZ LIKE JMS OCTAL /FROM OCTAL TO ASCII LAC ADDRES SAD ENDUMP JMP FINIS /EXIT FROM PROGRAM ISZ ADDRES /NEXT LOCATION LAC LOCNT SAD ENDBUF /SEE IF END OF BUFFER JMP DECNXT /YES - NEXT BUFFER ISZ LOCNT /NO - NEXT LOCATION LAC ADDRES AND (7 SZA JMP NUWORD /NEXT WORD LAC LIKE SZA JMP RESTLK /NOT SAME MLIKE ISZ PLIKE /SAME LAW -1 TAD ADDRES DAC ELIKE /LAST ALIKE JMP TR14 RESTLK LAC PLIKE SZA JMS PSAME /PRINT SAME DZM LIKE LAC LOCNT /GET POINTER AAC -10 /BACKUP DAC LOCTMP LAW -10 TAD ADDRES DAC BLIKE LAW -10 /10(8) WORDS PER LINE DAC LOCCNT LAC* LOCTMP /GET 1ST DAC SAMLOC TR15 SAD* LOCTMP SKP /ALIKE ISZ LIKE /NOT LIKE ISZ LOCTMP /MOVE POINTER ISZ LOCCNT JMP TR15 /TRY NEXT LAC LIKE SNA /ARE ALL THE SAME JMP MLIKE /YES JMS DONE /OUTPUT LINE DZM LIKE DZM PLIKE LAC* LOCNT DAC SAMLOC LAC ADDRES DAC BLIKE ISZ LINE JMP NULINE /NEXT LINE ISZ BLOCK JMP NUBLOC /NEXT BLOCK JMP TR16 /NEXT PAGE .EJECT DONE 0 LAC (15 /END OF LINE JMS FILL LAC (32002 /BUFFER HEADER DAC BUFFER CAL+2766 /.WRITE 11 MOD15 BUFFER -24 CAL+766 /.WAIT 12 JMP* DONE FINIS LAC LIKE SZA JMP TR17 LAC ADDRES DAC ELIKE JMS PSAME JMP GETNXT TR17 LAC PLIKE SZA JMS PSAME /PRINT SAME JMS DONE /PRINT LINE GETNXT CAL+766 /.CLOSE-OUTPUT FILE 6 .WAIT -12 .INIT -12,5,BEGIN NEXTCM JMP BEGIN /COMMAND STRING PROCESSOR OR .EXIT CAL /.EXIT 15 DECNXT LAC LIKE SZA JMP TR20 LAW -1 TAD ADDRES DAC ELIKE JMS PSAME JMP DECNXP .EJECT TR20 LAC PLIKE SZA JMS PSAME /PRINT SAME JMS DONE /PRINT LINE DECNXP ISZ BLOCK JMP* DECDMP /GET NEXT BLOCK LAW -6 DAC BLOCK /BLOCK COUNT CAL+2766 11 MOD27 HOFBUF -100 JMP* DECDMP .TITLE UNPACK & ZERO SUPPRESS ADDRESS /UNPACK AND ZERO SUPPRESS ADDRESS OCTALZ 0 /OCTAL TO ASCII SNA JMP ZEROLC /LOCATION 0 DAC CHAR /SAVE CHARACTER LAW -6 DAC COUNT /6 OCTAL DIGITS LAC (JMP LEADZ /RESTORE ZERO SUPPRESSION DAC LEADZX NEXTCZ LAC CHAR /GET WORD RCL RTL DAC CHAR /SAVE WORD RAL AND (7 SNA LEADZX JMP LEADZ /LEADING ZERO XOR (60 /MAKE ASCII JMS FILL /OUTPUT LAC (NOP /PRINT REMAINING ZEROS DAC LEADZX TR21 ISZ COUNT JMP NEXTCZ /NEXT DIGIT CHKPD LAC (40 DAC SUPCHR LAC PRSSW /SEE IF OCTALZ CALL IS FROM PSAME SAD (-1 /SKP IF FROM PSAME JMP* OCTALZ /IF NOT, RETURN JMS PDSUB /IF YES, PAD WITH SPACES JMP* OCTALZ LEADZ LAC SUPCHR /SPACE INSTEAD OF ZERO JMS FILL JMP TR21 ZEROLC LAW -5 DAC COUNT /FIVE SPACES TR22 LAC SUPCHR JMS FILL /OUTPUT ISZ COUNT JMP TR22 LAC (60 /ZERO JMS FILL JMP CHKPD .EJECT /IF THE CALL TO OCTALZ IS FROM PSAME, IT IS NECESSARY TO /REPLACE RIGHT-PADDING BLANKS (ASCII 000) WITH SPACES (ASCII 040) /FOR NEW LINE PRINTER HARDWARE PDSUB 0 LAW -4 DAC COUNT BCK LAC SUPCHR JMS FILL ISZ COUNT JMP BCK JMP* PDSUB / /UNPACK OCTAL WORDS FROM MEMORY OCTAL 0 /OCTAL TO ASCII LMQ /SAVE OCTAL WORD (BR-015) LAW -6 /SIX OCTAL CHARS/WORD (BR-015) DAC COUNT /KEEP COUNT (BR-015) NEXTCH CLA!CLL /CLEAR RECIEVER WORD (BR-015) LLS 3 /SHIFT OCTAL CHAR TO AC (BR-015) AAC 60 /MAKE NUMERIC ASCII (BR-015) JMS FILL /OUTPUT ISZ COUNT JMP NEXTCH /NEXT DIGIT LAC PRSSW /SEE IF OCTAL CALL IS FROM PSAME SAD (-1 /SKP IF FROM PSAME JMP* OCTAL /IF NOT, RETURN JMS PDSUB JMP* OCTAL /PACK ROUTINE FOR IOPS ASCII FILL 0 /PACK UP 5/7 AND (177 DAC CHAR2 CLL LAC PK57 /CHARACTER POSITION TAD (JMP* PKJ57 DAC TR23 LAC CHAR2 TR23 XX /MODIFIED JMP* MOD16=. PKJ57 PK571 /CHAR 1 MOD17 PK572 /CHAR 2 MOD20 PK573 /CHAR 3 MOD21 PK574 /CHAR 4 MOD22 PK575 /CHAR 5 PK571 RTR /8 RIGHT RTR RTR RTR .EJECT PK571A DZM* BUFFER /CLEAR DATA WORD JMP END57 PK572 RTL /4 LEFT RTL JMP END57 PK573 RAR /3 RIGHT - 1 ST HALF RTR / AND (17 XOR* BUFFER DAC* BUFFER ISZ BUFFER /NEXT WORD LAC CHAR2 RTR /4 RIGHT - 2ND HALF RTR AND (700000 JMP PK571A PK574 RTL /8 LEFT RTL RTL RTL JMP END57 PK575 RAL /1 LEFT DZM PK57 /RESET 5/7 COUNTER SKP END57 ISZ PK57 XOR* BUFFER DAC* BUFFER LAC PK57 SNA ISZ BUFFER /2ND WORD COMPLETE JMP* FILL .EJECT /SPACES FOR TTY -2 SPACES SPACES 0 LAC (40 JMS FILL LAC (40 JMS FILL JMP* SPACES /TAB FOR LPT - 6 SPACES TAB 0 JMS SPACES JMS SPACES JMS SPACES JMP* TAB /PRINT SAME TYPE LOCATIONS PSAME 0 LAC BLIKE SAD ELIKE JMP ONELKE DZM PRSSW /SET SW. TO PAD RIGHT WITH SPACES LAC PK57 DAC SPK57 LAC BUFFER DAC SBUFER DZM PK57 LAC (LOCB /(LOCB DAC BUFFER LAC BLIKE JMS OCTALZ DZM PK57 LAC (LOCE /(LOCE DAC BUFFER LAC ELIKE JMS OCTALZ DZM PK57 LAC (CONTNS /(CONTNS DAC BUFFER LAC SAMLOC JMS OCTAL LAC (-1 DAC PRSSW /RE-SET SW. TO DIS-ABLE SP. PAD. CAL+2766 /.WRITE 11 MOD01 SAMEBF -100 CAL+766 /WAIT 12 LAC SPK57 DAC PK57 LAC SBUFER DAC BUFFER SKP ONELKE JMS DONE ISZ LINE JMP* PSAME CAL+2766 /.WRITE 11 MOD02 ONESP 2 CAL+766 /.WAIT 12 LAW -10 DAC LINE ISZ BLOCK JMP* PSAME CAL+2766 11 MOD30 HOFBUF -100 LAW -6 DAC BLOCK JMP* PSAME .TITLE UNPACK 5/7 /UNPACK 5/7 FROM IOPS ASCII GET 0 ISZ GET5 JMP G5GET /WORD PAIR STARTED LAC* GETP /NEED NEXT PAIR ISZ GETP DAC WD1 /1ST PART LAC* GETP DAC WD2 /LAST PART ISZ GETP LAW 17773 /RESET COUNT DAC GET5 G5GET LAW 17770 /LOOP 7+ 1/2 TIMES DAC WD3 G6GET LAC WD2 /LOOP - BEGIN RAL ISZ WD3 JMP TR24 AND (177 /GOT CHARACTER JMP* GET TR24 DAC WD2 LAC WD1 RAL DAC WD1 JMP G6GET /BACK TO LOOP .TITLE MESSAGES,CONSTANTS, & VARIABLES ER1=. .WRITE -3,2,MSER1,40 ERCLS XCT BOSSW /IS BOSS RUNNING (BR-022) JMP EXIT /FATAL ERROR (BR-022) .CLOSE -3 JMP BEGIN ER2 LAC (ERMS20 DAC BUFFER DZM PK57 DZM SUPCHR LAC (5 JMS OCTALZ ER2T=. .WRITE -3,2,MSER2,40 JMP ERCLS .EJECT ER3 LAC (ERMS30 DAC BUFFER DZM PK57 DZM SUPCHR LAC ENDUMP JMS OCTALZ ER3T=. .WRITE -3,2,MSER3,40 JMP ERCLS .EJECT /CONSTANTS AND VARIABLES BLKFLG 0 HASHSW 0 /SWITCH:>-1=HASH LEGAL(BEFORE -),-1=ILLEGAL TERMSW 0 /SWITCH:-1=CR OR A.M. LEGAL,OTHER=ILLEGAL TERMCT 0 /CNTR FOR CHARS. AFTER - IN COMMAND STRING LLOC4K 0 LOCNT 0 /LOCATION OF OUTPUT FILLER 0 /FILLER ROUTINE BLOCK 0 /6 BLOCKS PER PAGE LINE 0 /8 LINES PER BLOCK WORD 0 /8 WORDS PER LINE ADDRES 0 /ACTUAL ADDRESS ENDUMP 0 /LAST LOCATION OUT STARTD 0 /START OF BUFFER ENDBUF 0 /END OF BUFFER CHAR 0 /CHARACTER STORAGE COUNT 0 /LOOP COUNTER CHAR2 0 /5/7 PACK CHAR STORAGE PK57 0 /COUNTER - 5/7 PACK NUMOD 0 /MOD SWITCH FOR NUPAGE PRSSW -1 /SWITCH:-1=NO SPACE PADDING,0=PADDING ADRFUL 0 /STORAGE FOR FULL FIRST ADR IN SEL DUMP (BR-018) CHRCNT 0 /DIGIT COUNTER FOR A-B AND B# MODES (BR-020) DECTP 0 /DECTAPE MODE SWITCH (BR-021) ONESP 2002 777777 .ASCII <12><15> MSG1=.-2 .SYSID < .ASCII 'DUMP >,<000'<15>> /(RCHM-114) MSER1=.-2 .ASCII / ILLEGAL BLOCK NUMBER/<15> MSER2=.-2 .ASCII ' LOWER LIMIT LESS THAN ' ERMS20 .ASCII <0> .ASCII <0><0><0><0><15> MSG2 2002 777777 .ASCII '?'<15> MSG3=.-2 .ASCII '>'<175> MSER3=.-2 .ASCII / ERROR - ADDRESS GREATER THAN / ERMS30 .ASCII <0> .ASCII <0><0><0><0><15> SAMEBF ENDBF-SAMEBF/2*1000\2 777777 LOCB .ASCII <0> .ASCII <0> .ASCII ' TO ' LOCE .ASCII <0> .ASCII <0> .ASCII ' CONTAINS ' CONTNS .ASCII <0> .ASCII <0> .ASCII <15> ENDBF=. HOFBUF 2002 777777 .ASCII <14><15> GETP 0 /POINTER - 5/7 UNPACK GET5 0 /COUNTER - 5/7 UNPACK NOBLKS 0 /NO. OF BLOCKS BUFSZE 0 /BUFFER SIZE BUFWC 0 /BUFFER WORD COUNT DECEND 0 /BUFFER END SAVBLK 0 /SAVE AREA (^Q) WD1 0 WD2 0 WD3 0 SAMLOC 0 /CONTENTS OF LIKE LOCS LIKE 0 /LIKE SWITCH PLIKE 0 /PRINT LIKE SWITCH BLIKE 0 /BEGIN LIKE ELIKE 0 /END LIKE SPK57 0 /PUSH/POP SBUFER 0 /PUSH/POP SUPCHR 40 /ZERO SUPPRESSION CHARACTER LOCCNT 0 LOCTMP 0 SPCSW 0 /SPECIAL CASE-DISKPACK/DISK BOSSW SKP /BOSS SWITCH-NOP IF IN BOSS MODE GETSC3 LAC* (.SCOM+3 /ORIN. CONTENTS OF 'BUFFER' FILNAM .SIXBT /MEMORYDMP/ DB.21 0 /POINTER TO SYSBLK ^QAREA STARTING BLK # (BR-016) DB.24 0 /POINTER TO SYSBLK ^QAREA MAX SIZE (BR-016) DB.120 0 /POINTER TO ^QAREA IMAGE .SCOM+20 (BR-016) Q.MAX 0 /^QAREA MAX SIZE (BR-016) TAPESW 0 /DECTAPE ONLY OPERATION SWITCH (BR-017) OLDTOT 0 /RUNNING TOTAL FOR 'ALL (NN)' (BR-017) NEWVAL 0 /LAST DIGIT FOR 'ALL (NN)' (BR-017) BUFFER .BLOCK 100 /TEXT BUFFER (BR-015) .END