home *** CD-ROM | disk | FTP | other *** search
- 8502 ╙YMBOLIC ─ISASSMEBLER ╓6.4
- BY ╩AMES ═UDGETT
- ═ODIFIED FOR ╠┴─╙ BY ╬ICK ╙MITH
- 12-03-88
-
-
-
- ┬┼╞╧╥┼ ┘╧╒ ╙╘┴╥╘
- ----------------
-
- ╘HERE ARE A FEW THINGS YOU MUST DO BEFORE YOU CAN RUN THE DISASSEMBLER.
-
- ╞IRST, YOU MUST SET UP A ─EFAULT ╞ILE. ╔F YOU ARE USING ─EV╨AK 128, JUST
- RENAME THE FILE 'DEVPAK.DF' TO 'DEFAULTS'. ╔F YOU ARE USING ╠┴─╙, RENAME
- 'LADS' TO 'DEFAULTS'. ╔F YOU ARE USING A DIFFERENT ASSEMBLER OR WANT TO
- CHANGE SOME OF THE OPTIONS IN THE INCLUDED DEFAULT FILES, YOU WILL HAVE
- TO USE THE 'DEFAULT MAKER' PROGRAM. ╠OAD AND LIST 'DEFAULT MAKER'. ─O NOT
- RUN IT UNTIL YOU HAVE CHANGED THE VARIABLE ASSIGNMENTS TO FIT YOUR NEEDS.
- ╔F YOU USE THE ╨╥╟ ╙OURCE ╞ILE TYPE, BE SURE TO 'TOKENIZE' THE ASSIGNMENTS
- (LIST 'DEFAULT MAKER' FOR EXAMPLES). ╫HEN YOU ARE DONE CHANGING THE VARIABLE
- ASSIGNMENTS, RUN THE PROGRAM. ╘HE DEFAULT FILE WILL BE CREATED.
-
- ╬EXT, YOU WILL HAVE TO DECIDED WHICH ╧PCODE ╘ABLE TO USE. ╘WO ╧PCODE ╘ABLES
- ARE INCLUDED: 'STANDARD.TBL' AND 'UNDOC.TBL'. ╔F YOU WANT THE DISASSEMBLER
- TO RECOGNIZE ONLY THE STANDARD INSTRUCTION SET, RENAME 'STANDARD.TBL' TO
- 'OPCODE.TBL'. ╔F YOU WANT UNDOCUMENTED OPCODES RECOGNIZED, RENAME 'UNDOC.TBL'
- TO 'OPCODE.TBL'. ╬╧╘┼: BOTH TABLES INCLUDE THE '┴' ON ACCUMULATOR
- INSTRUCTIONS (I.E. ╠╙╥ ┴). ╔F YOUR ASSEMBLER WILL NOT ACCEPT THE '┴', YOU
- WILL HAVE TO USE A ╙┼╤ FILE EDITOR TO CHANGE THE TABLE. ┬E SURE TO LEAVE THE
- " IN FRONT OF EACH DEFINITION. ┴N '*' IN THE TABLE INDICATES A ONE BYTE
- ADDRESS/VALUE; '_' A TWO BYTE ADDRESS; AND '@' A RELATIVE ADDRESS.
-
- ╞INALLY, IF YOU WANT TO USE AN ┼QUATE ╞ILE YOU WILL HAVE TO INCLUDE THE FILE
- NAME IN THE ─EFAULT ╞ILE. ┴N ┼QUATE ╞ILE IS INCLUDED. ╔F YOU WANT TO MAKE
- YOUR OWN ┼QUATE ╞ILE IT MUST BE A ╙┼╤ FILE SET UP SO THAT:
-
- 1. ╘HE FIRST LINE IS THE NUMBER OF EQUATES IN THE FILE.
- 2. ┼ACH EQUATE ASSIGNMENT IS ON A SEPERATE LINE.
- 3. ┼ACH EQUATE ASSIGNMENT IS IN THE FORM 'EQUATE = ADDRESS'.
- ╘HERE MUST BE ONLY ONE SPACE ON EACH SIDE OF THE '='. ╘HE '=' MUST
- BE USED IN THE ┼QUATE FILE (THE E$ DEFINITION IN THE ─EFAULT ╞ILE
- HOLDS THE ACTUAL CHARACTER(S) USED IN THE ╙OURCE ╞ILE). ╘HE ADDRESS
- MUST BE A '$' FOLLOWED BY A ONE OR TWO BYTE HEX ADDRESS.
- 4. ╘HE EQUATES MUST BE IN LOWEST (ADDRESS) TO HIGHEST (ADDRESS) ORDER.
- ┴ BINARY SEARCH IS USED TO FIND THE EQUATES, AND IF THEY ARE NOT IN
- LOWEST TO HIGHEST ORDER, THEY WILL NOT BE FOUND.
-
-
- ╘HE ABOVE FILES MUST BE ON THE SAME DISK AS THE DISASSEMBLER.
-
-
-
- ╥╒╬╬╔╬╟ ╘╚┼ ─╔╙┴╙╙┼═┬╠┼╥
- ------------------------
-
- ╫HEN ALL OF THE FILES HAVE BEEN SET-UP, YOU ARE READY TO RUN THE DISASSEMBLER.
- 'DISASSEMBLER' IS NOT COMPILED AND VERY SLOW COMPARED TO THE COMPILED VERSION.
- ╔N MOST CASES YOU WILL WANT TO USE THE COMPILED VERSION ('P-DISASSEMBLER').
- ╫HEN YOU RUN THE PROGRAM (EITHER VERSION), THE ─EFAULT ╞ILE, THE ╧PCODE ╘ABLE,
- AND AN ┼QUATE ╞ILE (IF SELECTED IN THE ─EFAULT ╞ILE) WILL BE READ IN. ╫HEN
- THE DISASSEMBLER PROMPTS YOU FOR THE ┬INARY ╞ILENAME, YOU CAN SWITCH DISKS IF
- NECCESSARY.
-
- ╘HE ┬INARY ╞ILENAME IS THE NAME OF THE ═╠ PROGRAM YOU WANT TO DISASSEMBLE.
- ╘HE ╙OURCE ╞ILENAME WILL BE THE NAME OF THE ╙OURCE ╞ILE (MAKES SENSE EH?).
- ┴N 'A-' WILL BE TACKED ONTO THE START OF THE ╙OURCE ╞ILENAME. ╔F THE ╙OURCE
- ╞ILE HAS TO BE LINKED (SEE SL AND LF$ ASSIGNMENTS IN ─EFAULT ╞ILE) THE NEXT
- FILENAME WILL BE 'B-'+╙OURCE ╞ILENAME. ╘HE UNIT #'S CAN BE BETWEEN 8 AND 11.
- ╘HE UNCOMPILED VERSION WILL WORK WITH ╥AMDOS 128. ╚OWEVER, THE COMPILED
- VERSION WILL CRASH IF ╥AMDOS 128 IS INSTALLED. ┴FTER THE FILENAMES AND UNIT
- #'S ARE ENTERED, THEY ARE CHECKED TO SEE IF THEY CAUSE DISK ERRORS. ╔F THEY
- DO NOT, THE ┼ND ┴DDRESS OF THE ┬INARY ╞ILE IS CALCULATED. ┘OU WILL THEN BE
- ASKED FOR THE ┼NTRY ╨OINT. ╘HE DEFAULT ┼NTRY ╨OINT IS THE ╙TART ┴DDRESS. ╔F
- THEY ARE THE SAME, JUST PRESS RETURN. ╔F THEY AREN'T THE SAME, ENTER THE
- ┼NTRY ╨OINT ADDRESS. ┴╠╠ ADDRESSES AND VALUES CAN BE ENTERED IN HEX OR
- DECIMAL. ╘O ENTER A HEX ADDRESS TYPE '$XXXX' WHERE 'XXXX' IS THE HEX ADDRESS.
- ╘O ENTER THE ADDRESS IN DECIMAL, JUST TYPE THE DECIMAL ADDRESS. ┘OU WILL THE
- BE ASKED IF THE PROGRAM HAS A BUILT-IN ┬┴╙╔├ LOADER. ╔F IT DOES, ANSWER 'Y'
- AND THE ┬┴╙╔├ LOADER WILL BE CORRECTLY DISASSEMBLED.
-
-
-
- ╨┴╙╙ 1
- ------
-
- ╘HE FIRST PASS OF THE DISASSEMBLY WILL BEGIN. ╘HE MAIN PURPOSE OF ╨┴╙╙ 1
- IS TO FIND LABELS AND THEIR TYPE (BUFFER OR CODE). ╔F YOU ARE USING AN ┼QUATE
- ╞ILE, THE EQUATES THAT ARE REFERENCED WILL BE MARKED. ╧NLY THE EQUATES
- FOUND DURING ╨┴╙╙ 1 WILL BE INCLUDED IN THE ╙OURCE ╞ILE. ╘HERE IS A CHANCE
- THAT SOME EQUATES WILL NOT BE DETECTED DURING ╨┴╙╙ 1. ┴ MISSING LABEL (
- CAUSING CODE TO DISASSEMBLE AS A BUFFER) CAN CAUSE THIS. ╔F YOU SEE A
- 'RUN-AWAY' BUFFER, PRESS THE ╙╨┴├┼ BAR TO ENTER ╙INGLE ╙TEP ═ODE. ┼QUATES
- AND LABELS WILL NOT BE SHOWN DURING ╨┴╙╙ 1.
-
- ┘OU CAN STOP THE DISASSEMBLY AT ANY TIME DURING ╨┴╙╙ 1 BY PRESSING THE ╙╨┴├┼
- BAR (HOLD IT DOWN UNTIL IT STOPS). ╘HIS WILL PLACE YOU IN ═ANUAL ╙INGLE ╙TEP
- ═ODE. ┘OU CAN ENABLE OR DISABLE ┴UTOMATIC ╙INGLE ╙TEP ═ODE IN THE ─EFAULT
- ╞ILE. ┴UTOMATIC ╙╙ ═ODE WILL STOP THE DISASSEMBLY WHENEVER THERE IS:
-
- 1. ┴ CALL TO ╙┼╘╬┴═ OR ╨╞╦┼┘ (ALLOWS YOU TO SET BUFFER LABEL)
- 2. ┴N INSTRUCTION OTHER THAN ╩╙╥ OR ╩═╨áUSES AN ABSOLUTE ADDRESS
- THAT IS BETWEEN THE ╙TART ┴DDRESS AND THE ┼ND ┴DDRESS. ╘HIS MAY
- OR MAY NOT INDICATE A BUFFER.
- 3. ╘HERE IS NO VALID MNEMONIC THAT MATCHES THE OPCODE. ╘HIS MAY
- INDICATE A BUFFER. ╔F YOU ARE USING THE STANDARD OPCODE TABLE, IT
- COULD ALSO BE AN UNDOCUMENTED OPCODE.
-
- ╥EGARDLESS OF HOW YOU ENTER ╙╙ ═ODE, YOU WILL BE PROMPTED WITH:
-
- ┴>BORT - EXITS THE DISASSEMBLER.
-
- ┬>REAK ╨OINT - ALLOWS YOU TO SET AN ADDRESS, THAT WHEN REACHED DURING
- ╨┴╙╙ 1 WILL STOP THE DISASSEMBLY AND PUT YOU IN ╙INGLE
- ╙TEP ═ODE. ╔F YOU KNOW YOU WILL HAVE TO STOP THE
- DISASSEMBLY SOMEWHERE (TO BEGIN OR END ┼╧╥'ING BYTES
- ETC.) AND YOU DON'T WANT TO TRY AND STOP IT WITH THE
- ╙╨┴├┼ BAR, SET A ┬REAK ╨OINT.
-
- ├>ONTINUE - WILL DISASSEMBLE THE NEXT LINE AND STOP.
-
- ┼>╧╥ - ALLOWS YOU TO ┼XCLUSIVE ╧╥ EACH BYTE. ┼ACH BYTE, STARTING
- AT THE ADDRESS YOU ENTER, WILL BE ┼╧╥'ED. ┼NTER A VALUE OF $00
- TO RETURN TO NORMAL DISASSEMBLY. ╘HE PURPOSE OF THIS FEATURE
- IS TO ALLOW YOU TO DISASSEMBLE CODE OR DATA THAT HAS BEEN
- ENCRYPTED WITH ┼╧╥. ┘OU MUST KNOW THE START AND END ADDRESS OF
- THE ENCRYPTED DATA AND THE VALUE IT IS ┼╧╥'ED WITH. ╬╧╘┼: ╘HE
- PROGRAM WILL EXPECT THE CODE/DATA TO BE ENCRYPTED. ╔F YOU WANT
- TO RE-ASSEMBLE THE SOURCE, YOU WILL EITHER HAVE TO REMOVE THE
- ROUTINE THAT DECODES THE CODE/DATA (OR THE CALL TO IT), OR
- RE-ENCRYPT THE CODE/DATA.
-
- ╠>ABEL ├ORRECTION - ALLOWS YOU TO MAKE A BUFFER OR CODE LABEL.
-
- ╤>UIT ╙╙ MODE - TURNS ╙INGLE ╙TEP ═ODE OFF AND GOES BACK TO NORMAL
- DISASSEMBLY.
-
- ╘HE DISASSEMBLY WILL ALSO STOP IF A STORE TO A ╓ECTOR ADDRESS IS DETECTED.
- ╘HIS ALLOWS YOU TO MAKE A LABEL CORRECTION FOR THE ADDRESS PUT INTO THE
- ╓ECTOR. ╔N SOME CASES YOU WILL BE ABLE TO SEE THE ADDRESS AND MAKE THE
- LABEL CORRECTION. ╔F YOU CAN'T TELL WHAT ADDRESS IS BEING PUT INTO THE
- ╓ECTOR, JUST PRESS ╥┼╘╒╥╬.
-
-
-
- ╨┴╙╙ 2
- ------
-
- ╧NCE THE DISASSEMBLY REACHES ╨┴╙╙ 2, YOU CAN SIT BACK AND RELAX. ╘HE
- DISASSEMBLY WILL NOT STOP UNLESS THERE ARE DISK ERRORS. ╙INGLE ╙TEP ═ODE
- IS ONLY ACTIVE DURING ╨┴╙╙á1. ╨┴╙╙ 2 WILL ADD EQUATES AND LABELS. ╘HE OUTPUT
- WILL BE ONE OR MORE ╙┼╤ OR ╨╥╟ FILE(S) (DEPENDING ON THE SIZE OF THE ┬INARY
- ╞ILE, AND THE ╙OURCE ╞ILE SIZE LIMIT SET IN THE DEFAULT FILE). ╬╧╘┼ - MAKE
- SURE THE DISK THAT THE ╙OURCE ╞ILE WILL BE WRITTEN TO HAS PLENTY OF FREE
- SPACE. ╙OURCE ╞ILES CAN BECOME VERY LARGE.
-
-
-
- ┴╠╠ ─╧╬┼
- --------
-
- ╫HEN THE DISASSEMBLY IS DONE, YOU WILL HAVE A ╙OURCE ╞ILE (EITHER ╙┼╤ OR ╨╥╟).
- ╔N MOST CASES, YOU SHOULD BE ABLE TO RE-ASSEMBLE IT WITHOUT ANY CHANGES (OF
- COURSE, YOU CAN MAKE CHANGES IF YOU WANT TO). ┘OU MAY NEED TO ADD A FEW
- PSUEDO-OPS TO ACTIVATE SPECIAL FEATURES OF YOUR ASSEMBLER. ┘OU MAY ALSO HAVE
- TO CHANGE A FEW LABELS IF THE PROGRAM MODIFIES ITSELF. ╞OR EXAMPLE THERE MAY
- BE SOMETHING LIKE THIS:
-
- LB1300 LDA #$04
- STA LB1307
- LB1305 LDA $0000,Y
-
- ╘HERE IS NO 'LB1307'. ┘OU WILL HAVE TO CHANGE IT TO EITHER 'STA LB1305+2' OR
- 'STA $1307'. ╘HE LATTER WILL ONLY WORK IF NO CHANGES ARE MADE THAT AFFECT THE
- ADDRESSES. ╘HE EASIEST WAY TO FIND THESE LABEL CORRECTIONS IS TO TRY TO
- ASSEMBLE IT. ╘HE ASSEMBLER SHOULD GIVE YOU A WARNING THAT THE LABEL IS NOT
- VALID.
-
-
-
- ╬╧╘┼╙
- -----
-
- ╘HE COMPILED VERSION WILL NOT 'RUN' MORE THAN ONCE WITHOUT RE-LOADING. ╘HE
- ╞1 KEY HAS BE REDEFINED TO THE COMMAND TO 'RUN' IT AGAIN WITHOUT RE-LOADING.
- ╘HE LARGEST PROGRAM THAT CAN BE DISASSEMBLED WITH THE COMPILED VERSION IS
- SOMEWHERE UNDER 16K. ╘HE LARGEST FILE ╔ HAVE TESTED IT WITH WAS 55 BLOCKS
- (APPROX. 13K). ╘HE MAXIMUM NUMBER OF EQUATES THAT CAN BE USED WITH THE
- COMPILED VERSION IS 200. ╘HE UNCOMPILED VERSION WILL HANDLE SLIGHTLY LARGER
- FILES AND MORE EQUATES, BUT YOU GIVE UP ┴ ╠╧╘ OF SPEED.
-
-
- ╔F YOU HAVE ANY QUESTION, COMMENTS OR SUGGESTIONS YOU CAN REACH ME ON ╤╠╔╬╦
- BY EMAILING '╥OCKINROLL'.
-
- ╩AMES ═UDGETT
-
-