home *** CD-ROM | disk | FTP | other *** search
-
- ************************************
- * 8-bit CPU Reassembler package *
- * incl. PurePASCAL GEM source code *
- ************************************
-
- Program author :
-
- Jens Schulz
- Rosenstrasse 5
- D-25368 Kiebitzreihe
- Germany
-
- ****************************************************************************
-
- Reassembler package for these 8-bit CPU processors :
- ----------------------------------------------------
-
- - INTEL 8051/52/252/535 microcontroller
- - INTEL 8048 microcontroller series
- - Zilog Z-80 CPU
- - Mostek/Rockwell 6502-CPU
- - Motorola 68HC11 microcontroller
- - INTEL 8080/85-CPU
-
- *****************************************************************************
-
- System: ATARI ST/TT/FALCON
- GEM / MultiTOS
- screen resolution independent > 640*400 dots
- requires 1 MB RAM
-
- ****************************************************************************
-
- These programs are Freeware
-
- You can copy and swap these programs freely without any charge. Sale or
- use in any other software for profit is strict forbidden. It's free for
- BBS downloading and PD collections.
-
- ***************************************************************************
-
- What's a reassembler ?
- ----------------------
-
- First, let's talk about the PurePASCAL GEM source code. If you are a GFA-
- or OMIKRON BASIC programmer, you can learn GEM programming under PurePASCAL.
- I've put the complete PurePASCAL 1.1 GEM source code of the 8080/85 reassemb-
- ler in the folder SOURCE85.PAS.
-
- The source code is very useful for learning the main aspects of screen
- resolution independent GEM programming. The source code shows you the
- handling of dialogues, GEM redraws, VDI 109 and dynamic memory allocations.
- I've programmed in many programming languages GEM programs. PurePASCAL is
- the easiest way to learn GEM. Forget all these 'damned' BASIC POKES and
- use the power of PP GEM-handling. PP GEM programming is easier than C
- GEM handling.
-
- Reassembler
- -----------
-
- Reassembler are very useful for decoding machine language programs. If
- you've never programmed 8-bit CPU's in assembler, you don't need these
- programs. You can only use the PP source code for your own programs.
-
- Next chapters are only for assembler experts :
- ----------------------------------------------
-
- A reassembler is an extended disassembler. It can decode machine programs
- with mnemonics and labels. Reassemblers insert labels of jumps or absolute
- addresses in the disassembler listing.
-
- Reassembler listing are address independent. You can use the generated
- ASCII outputs for your assembler programs.
-
- The Z80- and 6502 reassembler additional support the symbolic reassembling.
- Normally the reassemblers produce automatic labels, like LXXXX. XXXX is
- the hexadecimal address of the label. Symbolic reassemblers can exchange
- these automatic labels with symbolic names. Symbolic reassemblers need
- a symbol table. These symbol tables exist often for the standard home
- computers (C64, Amstrad CPC 464 etc.). These home computers use 6502 or
- Z 80 CPU's.
-
- Who uses a reassembler ?
- ------------------------
-
- 1.) very rare use :
-
- You believe, that your high level compiler codes ineffective or
- wrong code.
-
- 2.) rare use :
-
- You've formatted or lost your assembler source code of your last
- machine control board programming.
-
- 3.) normal use :
-
- You've got a program from a programming competitor. You will do all
- for cracking his 'Hyperpokes'.
-
- 4.) worst case :
-
- The competitor uses self modifying code or the microcontroller allows
- the the locking of the ROM, like 68HC11. That's the worst case for
- reassembler use.
-
- ****************************************************************************
-
- General handling of the reassemblers
- ------------------------------------
-
- The six reassemblers have only a few differences in their programming
- handling. The most menu entries are equal. Special functions of each
- reassembler is described in a separate info file.
-
- 1. Max. code size for the reassemblers
- ---------------------------------------
-
- The max. size of a code block is restricted to 8 KByte, why ?
- 8 KB machine code produces thousands of reassembler lines.
-
- The reassembler label handling allows the addition of code segments.
- Additional, you can concat the ASCII outputs with a standard ASCII
- editor.
-
- 2. Reassembling of the code
- ---------------------------
-
- - load your max. 8 KB code file (.BIN) from disc (Menu File)
-
- - reassemble the code with the key F1 or the menu entry 'Reassemble'
-
- - the reassembler decodes the whole binary code segment with all
- machine command and symbolic labels.
-
- - you can scroll the output listing with mouse or cursor keys and
- change the output window size.
-
- 3. Set of the start address (ORG)
- ---------------------------------
-
- Normally, the reassembler uses the base address $0000 for the code start.
- This code start address is called the origin address (ORG). You can set
- this ORG address on a new value, for example $1000.
-
- -> Menu File, Set start address
-
- 4. Set of a file offset
- -----------------------
-
- Normally, the reassembler starts at the first byte of your binary code
- file. You can change the reassembler start in your file. For example,
- you set this file offset to $100. Now, the reassembler ignores the first
- 256 bytes of your binary code file.
-
- The second way is the split of your code file with a debugger.
-
- -> menu File, set start address
-
- 5. Reduction of the reassembler ASCII output
- --------------------------------------------
-
- The reassembler produces an enormous number of output lines. You can
- limit the number of bytes for decode.
-
- You must set to max. reassembler decode length in the menu File (Set start
- address). Normally, the reassembler decodes the whole code block.
-
- For example, you can limit the max. reassembler decode length to 100 bytes.
-
- 6. Jump to a code address
- -------------------------
-
- You can use the cursor keys or the mouse for the scrolling of the
- reassembler output. Additional, you can jump to a specified code
- address.
-
- -> Menu file, Jump to address
-
- Please input the hexadecimal address of the new output listing start.
-
- 7. Hiding of code and addresses
- -------------------------------
-
- Normally, the reassembler output includes code, addresses, mnemonics
- and label. Code and addresses aren't needed for assemblers. Assemblers
- only use label und mnemonics for new compilations.
-
- -> Set hiding of code and addresses (Menu File, Show code/addresses)
-
- 8. Reassembler output as ASCII file or printer output
- -----------------------------------------------------
-
- You can store or print reassembler outputs.
-
- -> Menu Output, Printer or File
-
- After the selection of printer or file, you must reassemble the code.
-
- **************************************************************************
-
- Label handling / Symbolic reassembling
- --------------------------------------
-
- 1. Label handling
- -----------------
-
- The reassembler uses a 64 KB array for storing label positions. This
- label list is normally cleared by every reassembler start.
-
- The menu entry 'Clear automat. label' sets or resets the automatic
- clear of this label list.
-
- You can disable the automatic clearing of this list. Now, you can add
- several other code blocks to the label list. This option is very useful
- for the detection of jumps from other code segments in the actual code
- segment.
-
- 2. Save label file
- ------------------
-
- You can save the actual label list on disc for later analysis of the
- code. Label list files have the file extension .LAB.
-
- 3. Load label file
- ------------------
-
- You can load the 64 KB label list file from disc. The clear of the
- label list will be disabled.
-
- Symbolic reassembling
- ---------------------
-
- Symbolic reassembling is only supported by the Z-80 and 6502 reassembler.
- Z80 and 6502 processor are often used for home computers, like C64 or
- Amstrad CPC 464.
-
- For these home computers exist symbol tables of important ROM and port
- addresses.
-
- Main differences between disassembler and reassembler decoding :
- ----------------------------------------------------------------
-
- - Disassembler : generates jumps/absolute addresses in hexadecimal
- terms, like LDA $12AE
-
- - Standard reassembler : generates jumps/absolute addresses in auto-
- matic labels, like LDA L12AE. Reassembler
- outputs are address independent for assemblers.
-
- - Symbolic reassembler : generates jumps/absolute addresses with your
- symbols, like LDA VALUE_1. You can find
- important ROM and port addresses much easier.
-
- 1. Definition of symbols
- ------------------------
-
- - max. 2000 symbols are allowed
- - max. symbol length = 8 characters
-
- All symbols are written with a standard ASCII editor in an ASCII file.
- The ASCII file has the file extension .LBI. The symbol addresses must
- be specified in hexadecimal form.
-
- Symbol file example (6502.LBI):
- -------------------------------
-
- POS_1=203
- LOOP=20D
- LOOP_1=214
- SET_TST=219
- PROC_1=223
- PROC_2=22E
- VALUE_1 = 68
- VALUE_2 = 69
-
- 2. Import of ASCII symbols :
- ----------------------------
-
- -> Menu Symbols, Import symbols
-
- Symbol file has the file extension .LBI. The reassembler imports this
- file and sort it by address. Now you can use this symbols for your
- next reassembler run.
-
- 3. Generating of a symbol file
- ------------------------------
-
- After the import of a symbol file, you can generate a compact label
- file. This label file stores all symbolic informations in a compact
- and sorted form. This label file will be loaded faster than a ASCII
- symbol list.
-
- Label symbol files has the file extension .SYM.
-
- 4. Load a symbol file
- ---------------------
-
- The menu entry loads compact label symbol files with the file extension
- .SYM.
-
- ***************************************************************************
-
- Colors of reassembler lines
- ---------------------------
-
- If you use the reassembler with color monitor (min. 640*400 16 colors),
- then the reassembler use colored lines for extra informations.
-
- - Red color : address has a label
- - Black color : mnemonic has absolute address/jump
- - Blue color : no label/absolute information
-
- The color red has the main priority. It can overwrite black informations
- with red informations.
-
- ***************************************************************************
-
- Special control und port addresses
- ----------------------------------
-
- The INTEL 8051-series and the Motorola 68HC11 have special function
- registers. The reassembler use this SFR names instead of automatic
- labels.
-
- The 68HC11 reassemblers allows the disabling of this register name
- display.
-
- Keyboard shortcuts
- ------------------
-
- Overview of the standard keyboard shortcuts of all reassemblers.
-
- Menu File
- ---------
-
- Load code Control L
- Set start address Control S
- Jump to address Control A
- Reassemble Key F1
- Exit program Control Q
-
- Menu Output
- -----------
-
- Screen Control B
- Printer Control P
- File Control F
-
- Menu Label
- ----------
-
- Load label file Control T
- Save label file Control N
- Clear autom. label Control C
-
- *****************************************************************************
-
- Source code of the 8080/85 reassembler
- --------------------------------------
-
- The 8085 reassembler source code is available in the folder SOURCE85.PAS.
- You can use this source code free for your own Pure PASCAL GEM or
- reassembler experiments. All other reassembler source codes aren't free
- and not available for programmers.
-
- Files of the source code :
- --------------------------
-
- Compilation: only compiler flag Z is set, stack size 16384 bytes
-
- REASS_85.PAS - Source code of 8080/85 reassembler
- REASS_85.RSC - Resource file of 8080/85 reassembler
- REASS_85.I - Resource file constants (Interface 2.2 RCS PASCAL output)
- REASS_85.HRD - RCS Interface 2.2 RCS info file
- GEMINIT.PAS - Include file for GEM init
- GEMINIT.PPU - GEM-Init as UNIT
-
- ******************************************************************************
-
- Other free PD-/Shareware assemblers
- -----------------------------------
-
- The german Computer Club Elmshorn has collected a lot PD-/Shareware
- assemblers. You can get these assemblers without any charge. Select
- the disc number and send me the empty discs and the postage costs for
- return.
-
- Short information about the PD list codes :
-
- X = runs on every ATARI system (min. 1 MB)
- S = runs only on ST/STE
- G = GEM program
- N = TOS/TTP programm
- A = screen resolution independent
- M = only in monochrome ST-High
- HD = needs 1.44 MB disc
-
- Asterix : quality level
-
- ------------------------------- (Assembler) -------------------------------
-
- 31 68000-ASSEMBLER-Package MXN *
- 58 Disassembler 68000 AXN
- 95 Disassembler 68000 AXN
- 98 Turbo-Ass 1.72 & Debugger BSP **
- 143 Assembler 6303 AXN *
- 143 Assembler 65c02 AXG *
- 146 Z-80 Crossassembler MSN *
- 220 Sharp Pocket Assembler MSN *
- 263 68000-Assembler (incl. ASM-Source) AXN *
- 263 8048-Assembler/Disassembler (Incl. ASM-Source) AXN *
- 300 Assembler NEC 78310/312 AXN *
- 300 Assembler MCS 48 AXN *
- 300 Assembler 8051 AXN *
- 341 Desert Drain 1.1 680xx-Reassembler AXG *
- 380 Desert Drain 1.3 680XX-Reassembler AXG **
- 450 6502-Emulator-Demo AXG **
- 457 GNU-Assembler 1.38 AXN **
- 505 TurboAss & Debugger 1.77 AXP **
- 580 MIT2MOT-Konverter GNU68000-Syntax to Motorola AXN *
- 611 6502-Disassembler AXN *
- 721 Crossassembler 6800/02/04/05/6303 AXN **
- 721 Crossassembler 6809/6811 AXN **
- 721 Crossassembler Z80/HD64180 AXN **
- 721 Crossassembler 8080/85 AXN **
- 721 Disassembler 68000 AXN
- 721 Assembler HP-48 0.99b AXN **
- 748 FAS Crossassembler RCA 1805 HD AXN **
- 748 FAS Crossassembler 2650 SC/MP II HD AXN **
- 748 FAS Crossassembler 6301 HD AXN **
- 748 FAS Crossassembler 6805 HD AXN **
- 748 FAS Crossassembler 6809 HD AXN **
- 748 FAS Crossassembler 6811 HD AXN **
- 748 FAS Crossassembler Zilog Z8 HD AXN **
- 748 FAS Crossassembler Zilog Z80 HD AXN **
- 748 FAS Crossassembler TI 7000 HD AXN **
- 748 FAS Crossassembler 6502 HD AXN **
- 748 FAS Crossassembler Intel 8048 HD AXN **
- 748 FAS Crossassembler Intel 8051 HD AXN **
- 748 FAS Crossassembler Intel 8096 HD AXN **
- 748 FAS Source codes (.LZH) HD AXN **
-
- ------------------------------ Assembler (DSP 56001) -----------------------
-
- 502 DSP-56000/01-ASSEMBLER AXN **
- 682 DSP-Shell 1.0 for DSP-ASSEMBLER AXG **
- 756 DSP 56001-Disassembler (.LOD) AXN **
- 756 DSP converter .OUT to .LOD AXN *
-
- ***************************************************************************
-
- Bug reports
- -----------
-
- The coding of reassemblers is a very hard work. Thousands of bit combina-
- tions must be checked. These 6 reassemblers was designed and checked in
- 1 month ! That's a every short developing time.
-
- If you find some bugs in the reassemblers, please inform me. I will send
- you an update.
-
- **************************************************************************
-
- Soft- and hardware system
- -------------------------
-
- The reassemblers were programmed with :
-
- - ATARI TT 4MB/105MB HD and Proscreen TT/PTC 1526
- - PurePASCAL 1.1 Application Systems Heidelberg
- - Interface 2.2 RCS
-
- *************************************************************************
-
- Epilogue
- --------
-
- ATARI systems need new software ideas. We must enter in the classic
- areas of PC software. ATARI programs must have the lower price and the
- better quality as PC applications. Please, don't write the REVERSI
- number 1000. Take your programming power for new application areas.
-
- Have a lot fun with the reassemblers !
-
- Jens Schulz
- 18th april 1994
-