home *** CD-ROM | disk | FTP | other *** search
- .IN 10
- .RM 70
- .LS 2
- .SP 5
- .CE 3
- ┴ ╥EVERSE ┴SSEMBLER
- FOR ├ ╨OWER (TM)
- ╧BJECT ╞ILES
-
- .SP 20
- .NF
- ═ARK ╥. ╥INFRET
- 348 ╔NDIAN ┴VE.
- ╨ORTSMOUTH, ╥╔ 02871
- (401)-846-7639
-
-
- ├ ╨OWER IS A TRADEMARK OF ╨RO-╠INE ╙OFTWARE ╠TD.
- .FI
- .BP
- .FO //-#-//
- .HE /RA/-#-/╥EVERSE ┴SSEMBLER/
- ╔NTRODUCTION
- ╔ WROTE THE REVERSE ASSEMBLER
- TO HELP DEBUG AN ASSEMBLER WHICH ╔ HOPE TO IMPLEMENT IN THE NEAR FUTURE. ╘HE
- ASSEMBLER WILL OUTPUT ├ ╨OWER COMPATIBLE OBJECT FILES AND WILL BE USEFUL
- FOR IMPLEMENTING MACHINE-DEPENDENT OR TIME/SPACE CRITICAL CODE NOT EASILY
- HANDLED BY THE COMPILER.
-
- ╧RIGINAL INTENT ASIDE, THE REVERSE ASSEMBLER IS
- ALSO USEFUL FOR GAINING INSIGHT INTO THE QUALITY OF MACHINE LANGUAGE
- GENERATED FOR VARIOUS ├ LANGUAGE CONSTRUCTS AND ALSO FOR GLEANING INTERFACE
- REQUIREMENTS AS WELL AS CHARACTERISTICS OF THE RUNTIME LIBRARY ROUTINES.
-
-
- ╧PERATION
- ╘HE REVERSE ASSEMBLER IS INVOKED WITH A COMMAND OF THE FOLLOWING FORM:
- .BR
- RA [OPTIONS] OBJECTFILE
- .BR
-
- ├URRENTLY, NO SPECIAL CHECKS ARE MADE FOR THE ".O" OR ".OBJ" SUFFIX INDICATING
- OBJECT FILE FORMAT SO IT IS POSSIBLE TO INVOKE ╥┴ WITH A SOURCE FILE (WHICH
- SHOULD YIELD VERY WIERD RESULTS). ╥┴ EMPLOYS A SPECIAL ROUTINE, NAMED OPENFILE,
- TO PARSE FILENAMES. ╘HIS ALLOWS USERS WITH DUAL 1541'S TO SPECIFY WHICH DEVICE
- THE FILE IS ON, RATHER THAN HAVING TO MOVE THE FILE TO THE WORK DISK OR PLAY
- GAMES WITH THE 'SYS' COMMAND. ╔F THE DEFAULT DEVICE IS TO BE USED, THE FILENAME
- IS SPECIFIED AS ALWAYS. ╘O INDICATE A SPECIFIC DRIVE, PRECEDE THE FILENAME WITH
- THE NUMBER SIGN, DEVICE NUMBER (8,9) AND A COLON. ┼XAMPLE:
- .BR
- .TI+5
- #9:RA1.OBJ
- .BR
- ╘HE LEGAL OPTIONS ARE AS FOLLOWS:
- .BR
- .IN +5
- -A ADDRESS
- .BR
- ╘HE DISASSEMBLY PROCESS NORMALLY SETS THE ADDRESS ORIGIN TO $1800
- (6144 DECIMAL) WHICH IS THE LOAD ADDRESS FOR PROGRAMS LINKED TO
- EXECUTE UNDER THE SHELL. ╘HIS WAS DONE TO ALLOW THE PROGRAM TO
- MORE REASONABLY DIFFERENTIATE BETWEEN ZERO-PAGE AND ARG BUFFER
- REFERENCES WHEN REPLACING NUMERIC OPERANDS WITH SYMBOLS. ╘HE ADDRESS
- VALUE IS EXPECTED TO BE A HEX NUMBER. ╬O RANGE CHECKING IS APPLIED.
- .SP2
- -P
- .BR
- ╥┴ ASPIRES TO BE INTELLIGENT IN ITS CHOICE OF FORMATTING MODE
- (CURRENT ╔╤ IS ABOUT 60). ╔F A RUN GIVES POOR RESULTS, YOU CAN
- OVERRIDE THE INTERNAL DECISION-MAKING (╥┴ WON'T BE OFFENDED) AND
- ╥┴ WILL PROMPT YOU FOR THE FORMATTING MODE (INSTRUCTION OR .BYTE)
- TO BE USED WHENEVER A 'TRANSITION POINT' IS DETECTED. ╔F THIS
- STILL DOESN'T WORK, REWRITE ╥┴ TO DO WHAT YOU WANT.
- .SP 2
- -L LISTFILE
- .BR
- ╔F YOU WANT TO CAPTURE THE DISASSEMBLY IN A FILE, IT IS RECOMMENDED
- THAT YOU USE THE -L OPTION RATHER THAN SIMPLY REDIRECTING OUTPUT.
- ╙TANDARD OUTPUT IS USED FOR CERTAIN DIAGNOSTIC MESSAGES AS WELL AS
- PROMPTS AND INPUTS RELATED TO THE -P OPTION. ╔F YOU WANT HARDCOPY
- AND ARE NOT USING THE -P OPTION, GO AHEAD AND USE >> TO REDIRECT
- OUTPUT TO THE PRINTER. ╔F YOU ARE USING -P AND WANT HARDCOPY, USE
- USE THE -L OPTION AND PR (OR PRINT) THE RESULTING LIST FILE. ╥┴
- PERFORMS NO PAGINATION, SO THE PRINT METHOD MAY BE DESIRABLE FOR THAT
- REASON, ALSO.
- .BR
- .IN-5
- .SP2
- ╔MPLEMENTATION ─ETAILS
- ╥┴ INITIALIZES ITSELF BY COLLECTING THE FIRST FOUR PARTS OF THE
- OBJECT FILE (CODE, RELOCATION INFO, EXTERNAL DEFINITIONS, EXTERNAL
- REFERENCES) AND APPLYING THE RELOCATION ADDRESS ($1800 OR -A VALUE)
- TO THE APPROPRIATE CODE WORDS AND ALL EXTERNAL DEFINITIONS. ╥┴ THEN
- ENTERS A LOOP WHICH ATTEMPTS TO DETERMINE ON EACH PASS WHETHER THE
- CODE SHOULD BE DISASSEMBLED AS 6502 INSTRUCTIONS OR AS HEX CONSTANTS
- IN .BYTE DIRECTIVES. ╘HIS CHECK IS TRIGGERED BY ONE OF THE FOLLOWING
- EVENTS:
- .BR
- .IN+5
- ─ETECTION OF AN EXTERNAL DEFINITION WHOSE OFFSET COINCIDES WITH THE
- CURRENT VALUE OF THE LOCATION COUNTER.
- .BR
- ─ETECTION OF AN EXTERNAL REFERENCE TO THE LIBRARY ROUTINE ├$106 WHICH
- IS CALLED WHENEVER A FUNCTION EXITS.
- .BR
- ─ETECTION OF AN INVALID OPCODE.
- .BR
- .IN-5
- .SP2
- ╔N AUTOMATIC MODE, THE CHOICE TO USE INSTRUCTION MODE IS BASED ON THE
- OBSERVATION THAT (AS FAR AS ╔ CAN TELL) ALL FUNCTIONS BEGIN WITH A
- 'STA $FB' INSTRUCTION. ╘HIS DOES NOT HOLD TRUE FOR RUNTIME ROUTINES
- (I.E. C105.OBJ). ╧BVIOUSLY, THIS IS HIGHLY DEPENDENT ON THE CURRENT
- IMPLEMENTATION OF THE COMPILER AND, ╔ SUPPOSE, SUBJECT TO CHANGE. ╔N SPITE
- OF ITS SHORTCOMINGS, ╥┴ HAS SO FAR GIVEN QUITE USEFUL AND READABLE OUTPUT
- FROM A VARIETY OF SOURCES.
-
- ┴S EACH INSTRUCTION IS DISASSEMBLED, THE EXTERNAL DEFINITION LIST
- IS SCANNED TO SEE IF THE OPERAND ADDRESS IS THE SAME AS THAT OF ONE OF
- THE EXTERNAL SYMBOLS. ╔F SO, THE HEX OPERAND IS REPLACED WITH THE
- SYMBOL NAME. ╘HIS WORKS BEST IF THE DEFAULT ORIGIN IS USED (NO -A OPTION).
- ┴FTER ALL CODE HAS BEEN REVERSE ASSEMBLED, ALL DATA BLOCK DEFINITIONS
- ARE FORMATTED AS A SERIES OF '*=*+' TYPE DIRECTIVES.
-
- .BR
- ┬UILDING ╥┴
-
- ╥┴ IS CURRENTLY COMPRISED OF 4 SOURCE MODULES AS WELL AS BEING DEPENDENT
- UPON THE OPENFILE ROUTINE. ╘HESE ARE:
- .IN+5
- .NF
- RA.H - ├ONSTANT AND STRUCTURE DEFINITIONS
- RAD1.C - ╟LOBAL DATA DEFINITIONS
- RA1.C - ╔NITIALIZATION ROUTINES
- RA2.C - ╘RANSLATION ROUTINES
- .FI
- ╧NCE ALL OF THE SOURCES HAVE BEEN COMPILED, THEY ARE BOUND BY THE LINKER
- AS FOLLOWS:
- .NF
- .LS 1
- $ LINK
- > RA1.O
- > RA2.O
- > OPENFILE.O
- > RAD1.O
- > ^
- >
- OUTPUT TO: RA.SH
- $
- .FI
- .LS 2
- ┴CTUALLY, ╔ HAVE ADDED OPENFILE TO MY SYSTEM LIBRARY TO ALLOW AUTOMATIC
- RESOLUTION DURING THE LIBRARY SEARCH.
- .BR
-
- ╘HERE IS A PREPROCESSOR FLAG, ─┼┬╒╟, IN RA.H WHICH CAUSES EXTRA OUTPUT
- WHEN DEFINED. ╘HIS EXTRA OUTPUT INCLUDES CODE SIZE, NUMBER OF RELOCATION
- ENTRIES AND RELOCATION DATA LIST, EXTERNAL DEFINITION COUNT AND LIST, AND
- EXTERNAL REFERENCE COUNT. ╔N ADDITION, FOR EACH LINE DISASSEMBLED IN
- INSTRUCTION FORMAT, THE RAW DATA AND LOCATION COUNTER ARE PRINTED TO THE
- LEFT OF THE INSTRUCTION MNEMONIC. ╘HE SOURCE FILE RAD1.C (GLOBAL DATA)
- CONTAINS A PREPROCESSOR ╠╧├─┬╟ (LOCAL DEBUG). ╔F THIS FLAG IS DEFINED,
- A MAIN ROUTINE IS COMPILED WHICH WILL PRINT OUT THE INSTRUCTION TRANSLATION
- TABLES. ╘HIS MAIN ROUTINE MUST NOT BE PRESENT WHEN THE WHOLE PROGRAM IS
- LINKED.
- .BR
-
- ╥ELEASE
- ╔ AM RELEASING THIS PROGRAM TO THE PUBLIC DOMAIN FOR ANY
- NON-PROFIT USE OR REDISTRIBUTION. ╔ WOULD GREATLY APPRECIATE
- FEEDBACK, COMMENTS, SUGGESTIONS OR DETAILS OF ANY ENHANCEMENTS
- OR CORRECTIONS THAT ARE APPLIED. ╧NE AREA FOR ENHANCEMENT IS
- THE GENERATION OF LABELS FOR ALL MEMORY REFERENCES NOT ALREADY
- 'COVERED' BY AN EXTERNAL DEFINITION. ╞URTHER WORK ON ╥┴ BY ME
- AT THIS TIME WILL JUST KEEP ME FROM GETTING ON WITH MY
- ASSEMBLER. ┼NJOY!
-
-