1.4 ASSEMBLERS PAGE 1.4-1 JAN 1975 -------------- -NAME: DCP -AUTHOR: A.E. BROUWER, MATH. CENTR., A'DAM -DATE: 731003 -VERSION NR: DCP AB-V21 -LAST UPDATE: 741112 -ENVIRONMENT: OS/8 OPER. SYSTEM DCP (PRELIMINARY DESCRIPTION). DCP (SOMETIMES CALLED DEASS) IS A PROGRAM TO DEASSEMBLE (OR DISASSEMBLE) A PAL PROGRAM GIVEN IN BINARY OR IN CORE IMAGE FORMAT AS 1ST INPUT FILE. INFORMATION ABOUT THE PROGRAM AND MEANINGFUL TAGS CAN BE GIVEN IN A SECOND INPUT FILE. A WELL READABLE LISTING WITH MEANINGFUL TAGS BUT WITHOUT COMMENT CAN BE OBTAINED IN A FEW PASSES (TYPICALLY FOUR). THE FIRST TIME NO INFORMATION IS SUPPLIED; WHILE READING THE OUTPUT ONE RECOGNIZES CERTAIN PARTS AS MESSAGES ("NO ROOM FOR OUTPUT") OR NUMERIC TABLES (6030,7634,7766,7777) OR SIMPLE SUBROUTINES (TTYOUT, PUSH, PRINT). PUTTING THESE THINGS IN AN INFORMATION FILE AND THEN RUNNING DCP AGAIN GIVES YOU A MUCH NICER OUTPUT THE SECOND TIME. NOW YOU MAY EMBARK ON THE PROGRAM ITSELF AND OBTAIN AFTER A SMALL NUMBER OF PASSES (DEPENDING ON THE COMPLEXITY OF THE PROGRAM AND YOUR LAZINESS) A SOURCE THAT MIGHT HAVE BEEN THE ORIGINAL ONE EXCEPT FOR ITS LACK OF COMMENT. AT THIS MOMENT YOU COULD PROFITABLY USE THE CTRL/E FEATURE OF MCEDIT TO PROVIE THE WHOLE SOURCE OF COMMENT. (FOR EXAMPLE, WE OBTAINED A SOURCE OF A FORTRAN COMPILER IN THREE DAYS AFTER FIVE PASSES.) BELOW WE WILL DESCRIBE THE OS/8 VERSION OF THE PROGRAM -MEMORY REQUIREMENTS: 16K -ASSEMBLY INSTRUCTIONS: .R PAL8 *102,DCP_SBIN,DCPZ/L$ .SAVE SYS DCP -OPERATING INSTRUCTIONS: .R DCP *OUTPUT3777 THE COMMAND HAS TO BE CLOSED WITH ALTMODE INSTEAD OF RETURN). PAGE 1.4-4 JAN 1975 INPUT FORMAT EACH INPUT SECTION STARTS WITH $X (WHERE X IS A LETTER INDICATING THE TYPE OF THE SECTION) AND ENDS WITH $ . $ INDICATES THE END OF ALL INPUT (WHEN NOT WITHIN A SECION). BETWEEN THE SECTIONS COMMENT NOT CONTAINING $ MAY BE INSERTED. SECTION TYPES: $A TRANSLATE AS 6BIT ASCII (TEXT "STRING") $D DONT TRANSLATE $I TRANSLATE AS INSTRUCTION (OVERRIDING OTHER SPECS) $L TRANSLATE AS IDENTIFIER RATHER THAN AS INSTRUCTION $N TRANSLATE OCTAL $S SUBROUTINE WITH ARGS $T SYMBOL DEFINITIONS $Z SPECIAL CODING $ END OF INPUT CONTENT OF SECTION: 1. SECTIONS $X WHERE X IS A,D,I,L OR N. CONTENTS: LINES OF THE FORM MMMM-NNNN OR NNNN WHERE NNNN AND MMMM ARE OCTAL ADDRESSES. E.G. THE SECTION $N 1717-1730 1750 $ SPECIFIES THAT THE LOCATIONS 1717-1730 AND 1750 ARE TO BE TRANSLATED AS OCTAL NUMBERS. 2. SECTIONS $S. CONTENTS: LINES OF THE FORM SSSS:XXXXX WHERE SSSS IS A SUBROUTINE ADDRESS AND XXXXX SPECIFIES THE KIND OF ARGUMENTS THE SUBROUTINE HAS. E.G. THE SECTION $S 1000:NL $ INDICATES THAT EACH CALL TO THE SUBROUTINE AT LOC 1000 HAS TWO ARGUMENTS OF TYPE OCTAL AND LABEL RESPECTIVELY. 3. SECTIONS $T. CONTENTS: LINES OF THE FORM TAG=NNNN OR TAG MEANING: IF NO OCTAL VALUE OF A TAG IS SPECIFIED THEN ITS VALUE IS TAKEN AS ONE MORE THAN THE VALUE OF THE PREVIOUS TAG. PAGE 1.4-5 JAN 1975 4. SECTION $Z. THIS IS AN AD HOC CONSTRUCT TO ENABLE THE TRANSLATION OF SYMBOLTABLES LIKE THOSE OF PAL8 AND CRF. E.G. $Z=52;0=240;1=301;40=260 NNNN-MMMM:(UUUL) $ INDICATES THAT THE RANGE NNNN-MMMM IS A TABLE OF FOUR-WORD ENTRIES THREE WORDS IN A SPECIAL FORMAT AND ONE LABEL. THE SPECIAL FORMAT IS AS FOLLOWS: THE VALUE IS DIVIDED BY 52 GIVING A QUOTIENT AND A REMAINDER. BOTH ARE CONVERTED INTO A CHARACTER AS FOLLOWS: 0 GIVES A SPACE, 1-37 GIVE LETTERS A-_, AND 40-51 GIVE DIGITS 0-9. THE CODING HERE IS NOT FOOLPROOF YYET: A STRANGE COMMAND MIGHT GIVE STRANGE OUTPUT INSTEAD OF AN ERROR MESSAGE. IN LATER VERSIONS THIS COMMAND WILL BE GENERALIZED, SO WE DONT DESCRIBE IT IN FULL HERE. ERRORMESSAGES. THESE ARE VERY POOR (BECAUSE OF LACK OF SPACE): HLTNNNN, WHERE NNNN INDICATES THE ADDRESS OF THE ROUTINE IN DCP THAT DETECTED THE ERROR. ERRORS ARE ALMOST ALWAYS VIOLATIONS OF THE INPUT FORMAT. A COMPLETE LIST WILL APPEAR IN THE FINAL REPORT. 1.4 ASSEMBLERS PAGE 1.4-6 FEB 1975 -------------- NAME: DCP (ERROR TABLE) AUTHOR: A.E. BROUWER DATE: 750213 AS NOTED: THE ERRORMESSAGES OF DCP LOOK LIKE 'HLT....' WHERE .... STANDS FOR THE OCTAL ADDRESS OF THE ROUTINE THAT DETECTED THE ERROR. (OF COURSE GIVING INTELLIGIBLE MESSAGES IS HIGHLY DESIRABLE BUT LACK OF SPACE PREVENTED THIS. SOME FUTURE VERSION OF DCP WILL CHAIN TO A FILE DECPERR.SV CONTAINING THE MESSAGES.) BELOW THE ERROR NUMBERS ARE GIVEN FOR DCP AB-V21. [NOTE: THESE NUMBERS MAY CHANGE SLIGHTLY EACH TIME THAT DCP IS ASSEMBLED ANEW.] NUMBER ERROR 0000 PREMATURE END OF .BN INPUT 0230 CLOSE ERROR 0301 LOOKUP FOR SYS:CREV.SV FAILED 1414 OUTPUT ERROR OR NO ROOM FOR OUTPUT 1451 INPUT ERROR (INFO FILE) 1522 NO CARRIAGE RETURN WHERE EXPECTED IN THE INFO FILE 1755 UPPER BOUND IN BOUND PAIR LESS THAN LOWER BOUND 2031 ASCII STRING CONTAINED A SIXBIT ZERO, BUT NOT AT THE END (I.E. A WORD 00XX). (THIS MIGHT HAVE BEEN AN @, BUT IS USUALLY AN ERROR.) 2046 ASCII STRING WITHOUT TRAILING ZERO 2061 DCP COULD NOT FIND A SUITABLE DELIMITER FOR THE ASCII STRING IN THE RANGE "" TO "? 2125 IMPOSSIBLE 2214 TEXT BUFFER OVERFLOW (TOO MANY OR TOO LONG IDENTIFIERS). 2234 NO IDENTIFIER WHERE EXPECTED (IN A $T SECTION). 2666 ZERO SUBROUTINE ADDRESS SPECIFIED IN A $S SECTION 2705 S-BUFFER OVERFLOW (TOO MANY SUBROUTINES WITH ARGS.) 2761 UNKNOWN TYPE LETTER IN SPECIFICATION OF SUBROUTINE ARGS 3006 $Z NO FOLLOWED BY = 3011 $Z= NOT FOLLOWED BY A NONZERO NUMBER 3022 NO CARRIAGE RETURN OR SEMICOLON WHERE EXPECTED IN $Z HEADER 3030 NO = WHERE EXPECTED IN $Z HEADER LINE 3041 ZERO LOWER BOUND IN BOUND PAIR IN $Z SECTION 3064 Z-BUFFER OVERFLOW 3117 PREMATURELY EXHAUSTED Z-FORMAT 3135 UNKNOWN Z-FORMAT SYMBOL 3470 T-BUFFER OVERFLOW 3723 NO VALUE ASSIGNED TO FIRST TAG IN $T SECTION 4213 NO INPUT AND NO OUTPUT AND NO DSK:DCPLS.TM TO DELETE 4245 HANDLER FETCH ERROR 4341 LOOKUP FOR INPUTFILE FAILED 4442 OUTPUT OPEN ERROR 4456 NO 16K MEMORY AVAILABLE 4470 CHECKSUM OR FORMAT ERROR IN BINARY INPUT FILE 4613 FORMAT ERROR IN CORE CONTROL BLOCK OF .SV INPUT FILE 4647 ERROR READING CORE CONTROL BLOCK OF .SV INPUT 4723 ERROR READING .SV INPUT FILE 1.4 ASSEMBLERS PAGE 1.4-8 MAR 1976 -------------- NAME: DCP-AB-WW-V24 AUTHOR: W.F. WAKKER, MATH. CENTR., A'DAM DATE: 760325 DCP VERSION 24 IS A 24K VERSION OF DCP. THE FOLLOWING EXTENSIONS ARE MADE: -DCP24 TRANSLATES EAE INSTRUCTIONS IN BOTH A AND B MODE (FOR MODE SWITCHING SEE BELOW) EXAMPE: 1200 DAD;1234 IS TRANSLATED AS IF THE INFO-FILE CONTAINS THE FOLLOWING INTO: $I 1200 $ $L 1201 $ $N 1234+ $ - IN THE INFO-FILE ONE CAN GIVE : NNNN+ .THIS HAS THE SAME EFFECT AS NNNN-MMMM WHERE MMMM=NNNN+1. - SEVERAL BUFFERS HAVE BEEN ENLARGED. - THE OUTPUT IS PAGINATED AND HAS A HEADING ON EACH PAGE. (THE PAGE NUMBER IS IN OCTAL ....) - ERROR MESSAGE ARE UNFORTUNATELY AS POOR AS BEFORE (SEE DCP24 ERROR TABLE). - NEW SECTIONS, NOW POSSIBLE IN THE INFO-FILE ARE: $B TRANSLATE AS 8-BIT ASCII $C GIVE COMMENT $E FORCE EAE MODE A $F FORCE EAE MODE B $M TRANSLATE NEGATIVE - SECTION $B $B NNNN-MMMM $ CAUSES THE LOCATION NNNN-MMMM TO BE TRANSLATED AS 8-BIT ASCII, E.G. 0301 IS TRANSLATED AS "A. VALUES LESS THEN 241 ARE TRANSLATED AS OCTAL NUMBERS. PAGE 1.4-9 MAR 1976 - SECTIONS $E AND $F WHEN DCP ENCOUNTERS EAE INSTRUCTIONS, SOME SLIGHT HEURISTICS ARE DONE TO DETERMINE THE MODE. THE MODE IS INITIALLY A; SWAB, DAD, AND DST CAUSE THE MODE TO CHANGE TO MODE B ETC. WHEN THESE HEURISTICS ARE TOO POOR, YOU CAN USE THE $E SECTION TO FORCE MODE A AND THE $F SECTION TO FORCE MODE B. - SECTION $M THIS SECTION HAS THE SAME EFFECT AS SECTION $N, ONLY ALL OCTALS ARE GIVEN NEGATIVE, E.G. 7770 BECOMES -10. IT IS ALSO POSSIBLE TO GIVE $B AND $M TO THE SAME LOC. EXAMPLE: 7477 IS NOW TRANSLATED AS -"A. - SECTION $C NOW YOU CAA GIVE COMMENT!! FORMAT: NNNN:THIS IS COMMENT EFFECT: NNNN ........ /THIS IS COMMENT ATTENTION: THE $C SECTION MUST BE THE LAST ONE IN THE INFO-FILE: WHEN $C IS SEEN IN THE INFO-FILE, A SETUP IS MADE TO GIVE THE COMMENT AND NO MORE INPUT WILL BE READ ( E.G. THE PROGRAM ACTS LIKE $$ ON THE END IS SEEN). THE COMMENTS ARE ADDED TO THE LISTING IN THE LAST PASS OF THE PROGRAM. **** YOU MUST SORT THE ADDRESSES. 300:COMM1 200:COMM2 HAS AS EFFECT THAT FROM ADRESS 300 ON, NO MORE COMMENT WILL BE GIVEN, SINCE ADDRESS 200 IS NOT FOUND ANY MORE. **** DO NOT GIVE COMMENT ON ADDRESSES WHICH DO NOT BELONG TO THE PROGRAM. - EXTENSION OF $S SECTION AS ARGUMENTS IN THE $S SECTION YOU CAN GIVE N, L, A, I, B, M, (WITH THE OBVIOUS MEANING, SEE ABOVE ) AND ALSO U. U SHOULD ONLY BE USED FOR THE ADDRESSES 200 AND 7700. IT MARKS THE ENTRYPOINT OF THE USER SERVICE ROUTINE AND GIVES A NICE TRANSLATION OF EACH USR CALL. - EXTENSION OF $Z SECTION NEW POSSIBLE ARGUMENTS: M, B. 1.4 ASSEMBLERS PAGE 1.4-10 MAR 1976 -------------- NAME: DCP-V24 (ERROR TABLE) NUMBER ERROR 0000 PREMATURE END OF .BN INPUT 0237 CLOSE ERROR 0305 LOOKUP FOR SYS:CREF.SV FAILED 1414 OUTPUT ERROR OR NO ROOM FOR OUTPUT 1511 NO CARRIAGE RETURN WHERE EXPECTED IN THE INFO FILE 1707 NO : AS SEPARATOR IN $C SECTION 2145 UPPER BOUND IN BOUND PAIR LESS THAN LOWER BOUND 2235 NO : AS SEPARATOR IN FIRST LINE OF $C SECTION 2331 INPUT ERROR (INFO FILE) 2431 ASCII STRING CONTAINED A SIXBIT ZERO, BUT NO AT THE END (I.E. A WORD 00XX). (THIS MIGHT HAVE BEEN AN @, BUT IS USUALLY AN ERROR.) 2446 ASCII STRING WITHOUT TRAILING ZERO 2461 DCP COULD NOT FIND A SUITABLE DELIMITER FOR THE ASCII STRING IN THE RANGE "" TO "? 2525 IMPOSSIBLE 2614 TEXT BUFFER OVERFLOW (TOO MANY OR TOO LONG IDENTIFIERS) 2634 NO IDENTIFIER WHERE EXPECTED (IN A $T SECTION) 3266 ZERO SUBROUTINE ADDRESS SPECIFIED IN A $S SECTION 3305 S-BUFFER OVERFLOW (TOO MANY SUBROUTINES WITH ARGS) 3367 UNKNOWN TYPE LETTER IN SPECIFICATION OF SUBROUTINE ARGS 3406 $Z NOT FOLLOWED BY = 3411 $Z= NOT FOLLOWED BY A NONZERO NUMBER 3422 NO CARRIAGE RETURN OR SEMICOLON WHERE EXPECTED IN $Z HEADER 3430 NO = WHERE EXPECTED IN $Z HEADER LINE 3441 ZERO LOWER BOUND IN BOUND PAIR IN $Z SECTION 3463 Z-BUFFER OVERFLOW 3517 PREMATURELY EXHAUSTED Z-FORMAT 3541 UNKNOWN Z-FORMAT SYMBOL 4070 T-BUFFER OVERFLOW 4324 NO VALUE ASSIGNED TO FIRST TAG IN $T SECTION