#ifndef _AS68HC11_M68ASSEMBLER_HPP_ #define _AS68HC11_M68ASSEMBLER_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_STRING_HPP_ #include #endif #ifndef _COMMON_OPENFILE_HPP_ #include #endif #ifndef _COMMON_FILEMAP_HPP_ #include #endif #ifndef _COMMON_PUREVIEWOFFILE_HPP_ #include #endif #ifndef _COMMON_STDLIB_HPP_ #include #endif #ifndef _AS68HC11_TABLE_HPP_ #include #endif #ifndef _AS68HC11_SCAN_HPP_ #include #endif #ifndef _AS68HC11_PARSE_HPP_ #include #endif class M68Assembler { public: M68Assembler(void); virtual ~M68Assembler(); bool assemble(const String &strPathFileName,const String &strPathOutFile,Block &includePath=Block()); bool assemble(const String &strPathFileName,Block &includePath=Block()); const String &strLastMessage(void)const; DWORD codeSize(void)const; DWORD lastLineNumber(void)const; private: enum{MaxScanBytes=128000,MaxParseBytes=512}; M68Assembler(const M68Assembler &someM68Assembler); M68Assembler &operator=(const M68Assembler &someM68Assembler); bool operator==(const M68Assembler &someM68Assembler)const; void createSymbolTable(Table &symbols); void shuffle(Block &symbols); bool generateCode(const String &strPathOutFile,PureViewOfFile &parseView,DWORD codeLength); bool generateListing(const String &strPathOutFile,PureViewOfFile &parseView,DWORD codeLength); bool generateS19(const String &strPathOutFile,PureViewOfFile &rawCode); Table mSymbolTable; String mLastMessage; DWORD mLastLineNumber; DWORD mCodeSize; }; inline DWORD M68Assembler::codeSize(void)const { return mCodeSize; } #endif