home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / RA.ARC / RA.FO next >
Encoding:
Text File  |  2019-04-13  |  6.3 KB  |  178 lines

  1. .IN 10
  2. .RM 70
  3. .LS 2
  4. .SP 5
  5. .CE 3
  6. ┴ ╥EVERSE ┴SSEMBLER
  7. FOR ├ ╨OWER (TM) 
  8. ╧BJECT ╞ILES
  9.  
  10. .SP 20
  11. .NF
  12. ═ARK ╥. ╥INFRET
  13. 348 ╔NDIAN ┴VE.
  14. ╨ORTSMOUTH, ╥╔  02871
  15. (401)-846-7639
  16.  
  17.  
  18. ├ ╨OWER IS A TRADEMARK OF ╨RO-╠INE ╙OFTWARE ╠TD.
  19. .FI
  20. .BP
  21. .FO //-#-//
  22. .HE /RA/-#-/╥EVERSE ┴SSEMBLER/
  23. ╔NTRODUCTION
  24.      ╔ WROTE THE REVERSE ASSEMBLER 
  25. TO HELP DEBUG AN ASSEMBLER WHICH ╔ HOPE TO IMPLEMENT IN THE NEAR FUTURE.  ╘HE
  26. ASSEMBLER WILL OUTPUT ├ ╨OWER COMPATIBLE OBJECT FILES AND WILL BE USEFUL
  27. FOR IMPLEMENTING MACHINE-DEPENDENT OR TIME/SPACE CRITICAL CODE NOT EASILY
  28. HANDLED BY THE COMPILER.
  29.  
  30.      ╧RIGINAL INTENT ASIDE, THE REVERSE ASSEMBLER IS
  31. ALSO USEFUL FOR GAINING INSIGHT INTO THE QUALITY OF MACHINE LANGUAGE
  32. GENERATED FOR VARIOUS ├ LANGUAGE CONSTRUCTS AND ALSO FOR GLEANING INTERFACE
  33. REQUIREMENTS AS WELL AS CHARACTERISTICS OF THE RUNTIME LIBRARY ROUTINES.
  34.  
  35.  
  36. ╧PERATION
  37.      ╘HE REVERSE ASSEMBLER IS INVOKED WITH A COMMAND OF THE FOLLOWING FORM:
  38. .BR
  39.      RA [OPTIONS] OBJECTFILE
  40. .BR
  41.  
  42. ├URRENTLY, NO SPECIAL CHECKS ARE MADE FOR THE ".O" OR ".OBJ" SUFFIX INDICATING
  43. OBJECT FILE FORMAT SO IT IS POSSIBLE TO INVOKE ╥┴ WITH A SOURCE FILE (WHICH
  44. SHOULD YIELD VERY WIERD RESULTS).  ╥┴ EMPLOYS A SPECIAL ROUTINE, NAMED OPENFILE,
  45. TO PARSE FILENAMES.  ╘HIS ALLOWS USERS WITH DUAL 1541'S TO SPECIFY WHICH DEVICE
  46. THE FILE IS ON, RATHER THAN HAVING TO MOVE THE FILE TO THE WORK DISK OR PLAY
  47. GAMES WITH THE 'SYS' COMMAND.  ╔F THE DEFAULT DEVICE IS TO BE USED, THE FILENAME
  48. IS SPECIFIED AS ALWAYS.  ╘O INDICATE A SPECIFIC DRIVE, PRECEDE THE FILENAME WITH
  49. THE NUMBER SIGN, DEVICE NUMBER (8,9) AND A COLON.  ┼XAMPLE:
  50. .BR
  51. .TI+5
  52. #9:RA1.OBJ
  53. .BR
  54. ╘HE LEGAL OPTIONS ARE AS FOLLOWS:
  55. .BR
  56. .IN +5
  57. -A ADDRESS 
  58. .BR
  59. ╘HE DISASSEMBLY PROCESS NORMALLY SETS THE ADDRESS ORIGIN TO $1800
  60. (6144 DECIMAL) WHICH IS THE LOAD ADDRESS FOR PROGRAMS LINKED TO 
  61. EXECUTE UNDER THE SHELL.  ╘HIS WAS DONE TO ALLOW THE PROGRAM TO
  62. MORE REASONABLY DIFFERENTIATE BETWEEN ZERO-PAGE AND ARG BUFFER
  63. REFERENCES WHEN REPLACING NUMERIC OPERANDS WITH SYMBOLS.  ╘HE ADDRESS
  64. VALUE IS EXPECTED TO BE A HEX NUMBER.  ╬O RANGE CHECKING IS APPLIED.
  65. .SP2
  66. -P
  67. .BR
  68. ╥┴ ASPIRES TO BE INTELLIGENT IN ITS CHOICE OF FORMATTING MODE
  69. (CURRENT ╔╤ IS ABOUT 60).  ╔F A RUN GIVES POOR RESULTS, YOU CAN
  70. OVERRIDE THE INTERNAL DECISION-MAKING (╥┴ WON'T BE OFFENDED) AND
  71. ╥┴ WILL PROMPT YOU FOR THE FORMATTING MODE (INSTRUCTION OR .BYTE)
  72. TO BE USED WHENEVER A 'TRANSITION POINT' IS DETECTED.  ╔F THIS 
  73. STILL DOESN'T WORK, REWRITE ╥┴ TO DO WHAT YOU WANT.  
  74. .SP 2
  75. -L LISTFILE
  76. .BR
  77. ╔F YOU WANT TO CAPTURE THE DISASSEMBLY IN A FILE, IT IS RECOMMENDED
  78. THAT YOU USE THE -L OPTION RATHER THAN SIMPLY REDIRECTING OUTPUT.
  79. ╙TANDARD OUTPUT IS USED FOR CERTAIN DIAGNOSTIC MESSAGES AS WELL AS
  80. PROMPTS AND INPUTS RELATED TO THE -P OPTION.  ╔F YOU WANT HARDCOPY
  81. AND ARE NOT USING THE -P OPTION, GO AHEAD AND USE >> TO REDIRECT
  82. OUTPUT TO THE PRINTER.  ╔F YOU ARE USING -P AND WANT HARDCOPY, USE
  83. USE THE -L OPTION AND PR (OR PRINT) THE RESULTING LIST FILE.  ╥┴
  84. PERFORMS NO PAGINATION, SO THE PRINT METHOD MAY BE DESIRABLE FOR THAT
  85. REASON, ALSO.
  86. .BR
  87. .IN-5
  88. .SP2
  89. ╔MPLEMENTATION ─ETAILS
  90.      ╥┴ INITIALIZES ITSELF BY COLLECTING THE FIRST FOUR PARTS OF THE
  91. OBJECT FILE (CODE, RELOCATION INFO, EXTERNAL DEFINITIONS, EXTERNAL
  92. REFERENCES) AND APPLYING THE RELOCATION ADDRESS ($1800 OR -A VALUE)
  93. TO THE APPROPRIATE CODE WORDS AND ALL EXTERNAL DEFINITIONS.  ╥┴ THEN
  94. ENTERS A LOOP WHICH ATTEMPTS TO DETERMINE ON EACH PASS WHETHER THE
  95. CODE SHOULD BE DISASSEMBLED AS 6502 INSTRUCTIONS OR AS HEX CONSTANTS 
  96. IN .BYTE DIRECTIVES.  ╘HIS CHECK IS TRIGGERED BY ONE OF THE FOLLOWING
  97. EVENTS:
  98. .BR
  99. .IN+5
  100. ─ETECTION OF AN EXTERNAL DEFINITION WHOSE OFFSET COINCIDES WITH THE 
  101. CURRENT VALUE OF THE LOCATION COUNTER.
  102. .BR
  103. ─ETECTION OF AN EXTERNAL REFERENCE TO THE LIBRARY ROUTINE ├$106 WHICH
  104. IS CALLED WHENEVER A FUNCTION EXITS.
  105. .BR
  106. ─ETECTION OF AN INVALID OPCODE.
  107. .BR
  108. .IN-5
  109. .SP2
  110.      ╔N AUTOMATIC MODE, THE CHOICE TO USE INSTRUCTION MODE IS BASED ON THE
  111. OBSERVATION THAT (AS FAR AS ╔ CAN TELL) ALL FUNCTIONS BEGIN WITH A
  112. 'STA $FB' INSTRUCTION.  ╘HIS DOES NOT HOLD TRUE FOR RUNTIME ROUTINES
  113. (I.E. C105.OBJ).  ╧BVIOUSLY, THIS IS HIGHLY DEPENDENT ON THE CURRENT
  114. IMPLEMENTATION OF THE COMPILER AND, ╔ SUPPOSE, SUBJECT TO CHANGE.  ╔N SPITE
  115. OF ITS SHORTCOMINGS, ╥┴ HAS SO FAR GIVEN QUITE USEFUL AND READABLE OUTPUT
  116. FROM A VARIETY OF SOURCES.  
  117.  
  118.      ┴S EACH INSTRUCTION IS DISASSEMBLED, THE EXTERNAL DEFINITION LIST
  119. IS SCANNED TO SEE IF THE OPERAND ADDRESS IS THE SAME AS THAT OF ONE OF
  120. THE EXTERNAL SYMBOLS.  ╔F SO, THE HEX OPERAND IS REPLACED WITH THE 
  121. SYMBOL NAME.  ╘HIS WORKS BEST IF THE DEFAULT ORIGIN IS USED (NO -A OPTION).
  122. ┴FTER ALL CODE HAS BEEN REVERSE ASSEMBLED, ALL DATA BLOCK DEFINITIONS
  123. ARE FORMATTED AS A SERIES OF '*=*+' TYPE DIRECTIVES.
  124.  
  125. .BR
  126. ┬UILDING ╥┴
  127.  
  128.      ╥┴ IS CURRENTLY COMPRISED OF 4 SOURCE MODULES AS WELL AS BEING DEPENDENT
  129. UPON THE OPENFILE ROUTINE.  ╘HESE ARE:
  130. .IN+5
  131. .NF
  132. RA.H   - ├ONSTANT AND STRUCTURE DEFINITIONS
  133. RAD1.C - ╟LOBAL DATA DEFINITIONS  
  134. RA1.C  - ╔NITIALIZATION ROUTINES
  135. RA2.C  - ╘RANSLATION ROUTINES
  136. .FI
  137. ╧NCE ALL OF THE SOURCES HAVE BEEN COMPILED, THEY ARE BOUND BY THE LINKER
  138. AS FOLLOWS:
  139. .NF
  140. .LS 1
  141. $ LINK
  142. > RA1.O
  143. > RA2.O
  144. > OPENFILE.O 
  145. > RAD1.O
  146. > ^
  147. OUTPUT TO: RA.SH
  148. $
  149. .FI
  150. .LS 2
  151. ┴CTUALLY, ╔ HAVE ADDED OPENFILE TO MY SYSTEM LIBRARY TO ALLOW AUTOMATIC
  152. RESOLUTION DURING THE LIBRARY SEARCH.
  153. .BR
  154.  
  155.      ╘HERE IS A PREPROCESSOR FLAG, ─┼┬╒╟, IN RA.H WHICH CAUSES EXTRA OUTPUT
  156. WHEN DEFINED.  ╘HIS EXTRA OUTPUT INCLUDES CODE SIZE, NUMBER OF RELOCATION
  157. ENTRIES AND RELOCATION DATA LIST, EXTERNAL DEFINITION COUNT AND LIST, AND
  158. EXTERNAL REFERENCE COUNT.  ╔N ADDITION, FOR EACH LINE DISASSEMBLED IN
  159. INSTRUCTION FORMAT, THE RAW DATA AND LOCATION COUNTER ARE PRINTED TO THE
  160. LEFT OF THE INSTRUCTION MNEMONIC.  ╘HE SOURCE FILE RAD1.C (GLOBAL DATA)
  161. CONTAINS A PREPROCESSOR ╠╧├─┬╟ (LOCAL DEBUG).  ╔F THIS FLAG IS DEFINED,
  162. A MAIN ROUTINE IS COMPILED WHICH WILL PRINT OUT THE INSTRUCTION TRANSLATION
  163. TABLES.  ╘HIS MAIN ROUTINE MUST NOT BE PRESENT WHEN THE WHOLE PROGRAM IS
  164. LINKED.
  165. .BR
  166.  
  167. ╥ELEASE
  168.      ╔ AM RELEASING THIS PROGRAM TO THE PUBLIC DOMAIN FOR ANY
  169. NON-PROFIT USE OR REDISTRIBUTION.  ╔ WOULD GREATLY APPRECIATE
  170. FEEDBACK, COMMENTS, SUGGESTIONS OR DETAILS OF ANY ENHANCEMENTS
  171. OR CORRECTIONS THAT ARE APPLIED.  ╧NE AREA FOR ENHANCEMENT IS
  172. THE GENERATION OF LABELS FOR ALL MEMORY REFERENCES NOT ALREADY
  173. 'COVERED' BY AN EXTERNAL DEFINITION.  ╞URTHER WORK ON ╥┴ BY ME
  174. AT THIS TIME WILL JUST KEEP ME FROM GETTING ON WITH MY
  175. ASSEMBLER.  ┼NJOY!
  176.  
  177.