Disassembler algorithm: a) what I've already got Scans entire program for instructions, instruction boundaries, and labels. Spews out code. b) what I want Same as above, but with the following improvements: A real symbol table. Proper handling of inline parameters (jsr r5,xxx) New entry points defined in source file. Insert newly disassembled code into an existing disassembly. Extra labeling heuristics: On pass two, don't use labels for data references if they point into code. Always label the beginning of a block of data. e (entry) ;define a single entry point r (start,end) ;define a range to be disassembled or: + entry point, disassemble until logical end ++ start disassembly here -- stop here i (addr,numparm) pass 1: Build symbol table. Build table of entry points.