Dave Tweed wrote: > Sergio Masci wrote: > > The XCASM assembler tracks bank useage and inserts bank select > > instructions automatically for you (if you let it). With this assembler > > there is no need to declare special banked symbols, all RAM accesses are > > tracked. > > > The XCASM assembler knows how to deal with bank switching through skip > > instructions and inserts the instructions in the right place. It tracks > > multiple execution paths through each instruction (including subroutine > > calls) and only inserts bank select instructions which are absolutely > > necessary. If you manually insert bank select instructions elsewhere > > (maybe further up in the execution path) it will compensate and not > > insert the now redundent bank select instructions. > > Sounds interesting. But the documentation on your website leaves a lot > to be desired. I remember looking at it once before and basically giving > up. Ok, regardless of my feelings about the documentation, it is obviously not upto your requirements and I will need to address this. > I can't tell what the output format of your assembler is. Is it > compatible with the MPLAB linker? No. XCASM produces far more information about an executable than the MPLAB linker can deal with e.g. XCASM handles floating point directly, produces RAM bank and code page diagnostic information which the XCSIM simiulator can use to track incorrect bank and page setting during program simulation. > Can it accept MPASM/gpasm source code? assembler source yes, assembler directives no. > > Except for the global flow analysis you do to "optimize" the bank > switching and ignoring the "expression compiler", I can do pretty much > everything that XCASM does with a few lines of Perl code. Reading other posts regarding your Perl code I must conclude you are mistaken. Your Perl script requires that you define symbols as paged, XCASM decides itself which symbols need to be paged based on the address of the symbol computed during the assembly of the source. As variables are added or removed to/from the program during program development or the program grows or shrinks, the assembler does all the work without the need for the programmer to maintain a seperate list of banked symbols. This goes to the heart of good software development practices i.e. keeping all information about an object within the object. There is a divide between your preprocessor and the MPASM assembler which cannot be bridged even though it may apear that the information is available within the source code. It has as much meaning to MPASM as any other comment. By maintaining seperate information about the object there is great scope for error which will require subsequent debugging. Besides all of this, XCASM also performs code page management not just RAM bank management. > Why would I > spend GBP100 or GBP1250 to switch to a tool I have no control over? GPB 100 does not buy you a MPASM clone. It buys you a sophisticated professional assembler. If you can get by with MPASM or gpasm then you can use these free of charge. If you need something that improves your productivity (amongst other things greatly helps eliminate bank and page issuses which so many people find anonying) then XCASM is available. Regardless which route you take you are still paying unless your time is worth nothing that is. I assume that by "control over" you mean "one that you have the source code for and can fix yourself". Yes I know that many people think like this but even so these people are in the minority. Most people do not want to fix a program they find bugs in, they either want it fixed for them or they look for a workaround. People that dig their heals in and reject non-open source software are cutting their noses off to spite their face. Fact of life: their competion will use the software and will have an advantage. > I'm not even sure that the "Enterprise Edition" supports the processors > I'm interested in. XCASM is a mata assembler, the enterprise edition gives full access to the configuration components. In other words you can define your own opcode syntax and the way it generates machine code. It comes with several processor definitions (e.g. Z80, 6502, 68HC11, PIC16 etc) which you can easily extend or change to suit your own requirements. You also get access to the intermediate high level opcodes of the "expression compiler" which you refer to above. This allows you to hack the expression compiler for other processors. XCASM enterprise edition is intended for people / companies who wish to develope their own CPU cores using FPGAs. You should also keep in mind that XCASM is the back end of the XCSB compiler and some of the other CASE tools that I provide so it is not a dead end product. As a company's needs evolve it can build on its XCASM based source code without the need to re-write everything. This is what the enterprise edition is all about. It is not simply an unlimted site license for the standard product. Regards Sergio Masci http://www.xcprod.com/titan/XCSB - optimising PIC compiler FREE for personal non-commercial use -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist