
						---	bank switch ---
note:
1.	All these routines is changed for bank switch, if you use any one, please
	modify your source for compatible with new routine.
2.	to Gates:	1.2.X; 2.1;
	to John:	1.1.1; 1.3.X
	to Dragon:	1.4.X
	to Chen:

3.	to get current select bank and PC located bank use next two routine:
	extern int GetCurrentBank(void)
	extern int GetPCBank(void)
	both return a int value between 0-4. 1-4 mean bank1-bank4.

1. source window import routine change request.
1.1. about DAD:
1.1.1. int SRCDisAsm(   
		            unsigned int DAsmStartAddr,   // the start address to be disassembly
		            unsigned int DAsmInCodeBlkLen,  // the code block length
		            unsigned int *DAsmInstrNum,  // disassembly instruction number
		            unsigned int *DAsmBytesNum, // despite the function's failure,they are valuable
		            char        **InstrArray,// these to buffers contain the results(instructions and length)
		            unsigned int *AddrLenArray, // 
		            char        **LabelArray  // contain the label string if finding
		            )
->	   int SRCDisAsm(   
		            int			 nBank,			//6, 7, 8, 9
		            unsigned int DAsmStartAddr,   // the start address to be disassembly
		            unsigned int DAsmInCodeBlkLen,  // the code block length
		            unsigned int *DAsmInstrNum,  // disassembly instruction number
		            unsigned int *DAsmBytesNum, // despite the function's failure,they are valuable
		            char        **InstrArray,// these to buffers contain the results(instructions and length)
		            unsigned int *AddrLenArray, // 
		            char        **LabelArray  // contain the label string if finding
		            )

1.2. about Symbol server, stack server:
1.2.1. int SrcLinenum2Range(U32 moduleDesc,U16 linenum, 
						U32& startAddr , U32& endAddr)
->	   int SrcLinenum2Range(U32 moduleDesc,U16 linenum, 
						U32& startAddr , U32& endAddr, int& nBank)
						//nBank: 1, 6-9; 1 means not care bank

1.2.2. int SrcAddr2Linenum(U32 addr , U16& linenum , U32& moduleDesc)
-> 	   int SrcAddr2Linenum(int nBank, U32 addr , U16& linenum ,
						U32& moduleDesc)//nBank: 1, 6-9; 1 means not care bank

1.2.3. int SrcGetFuncRange(const char *command, U16& uStart, U16& uEnd)
->	   int SrcGetFuncRange(const char *command, U16& uStart, U16& uEnd, int& nBank)
						//nBank: 1, 6-9; 1 means not care bank
1.2.4. int SrcLinenum2Addr(U32 moduleDesc , U16 linenum , U32& addr)
->	   int SrcLinenum2Addr(U32 moduleDesc , U16 linenum , U32& addr, int& nBank)
						//nBank: 1, 6-9; 1 means not care bank
1.2.5. int SymToAddr(char *lpStr , U8* lpType , U32 * lpAddr)
->	   not change, but lpType is 6-9(bank1-bank4).
1.2.6. int SrcGetLdrStats(LPSTR moduleName,unsigned long *numSymbols,
	    unsigned short *numModules, unsigned long *numTypes , 
	    unsigned long *numFuncs , unsigned long *linenums, unsigned long *bytes,
	    int * percent);
->	   int SrcGetLdrStats(LPSTR moduleName,unsigned long *numSymbols,
	    unsigned short *numModules, unsigned long *numTypes , 
	    unsigned long *numFuncs , unsigned long *linenums, unsigned long *bytes,
	    int * percent, BOOL* bSupportBank);
	    				//bSupportBank is TRUE: support bank switch
1.2.7. int SrcAddr2Statement(unsigned long addr, unsigned short& linenum,
	    unsigned short& startCol, unsigned short& endCol,
	    unsigned long& moduleDesc);
->	   int SrcAddr2Statement(int nBank, unsigned long addr, unsigned short& linenum,
	    unsigned short& startCol, unsigned short& endCol,
	    unsigned long& moduleDesc);
                        //nBank: 1, 6-9; 1 means not care bank
1.2.8. int SrcGetModuleRange(U32 moduleDesc , U32& start , U32& end)
->	   int SrcGetModuleRange(U32 moduleDesc , U32& start , U32& end, int& nBank)
						//nBank: 1, 6-9; 1 means not care bank
						//we suppose that one module is just exist in one bank

1.2.9. int SrcAddr2LinenumStart(U32 addr , U16& linenum , U32& moduleDesc)
->	   int SrcAddr2LinenumStart(int nBank, U32 addr , U16& linenum , U32& moduleDesc)
						//nBank: 1, 6-9; 1 means not care bank
1.2.10. int SrcAddr2LinenumRange(U32 addr,U16& linenum,U32& startAddr,U32& endAddr)
->		int SrcAddr2LinenumRange(int nBank, U32 addr,U16& linenum,U32& startAddr,U32& endAddr)
						//nBank: 1, 6-9; 1 means not care bank

1.2.11. BOOL IsLibFunction( unsigned short uAddr )
->		BOOL IsLibFunction( int nBank, unsigned short uAddr )
						//nBank: 1, 6-9; 1 means not care bank

1.2.12. void GetLineRange(unsigned short uAddr , unsigned short& uStart ,
                                         unsigned short& uEnd )
//no reference
1.2.13. void GetStatementRange(unsigned short uAddr , unsigned short& uStart ,
                                         unsigned short& uEnd )
->		void GetStatementRange(int nBank, unsigned short uAddr , unsigned short& uStart ,
                                         unsigned short& uEnd )
						//nBank: 1, 6-9; 1 means not care bank
1.2.14. int SrcAddr2StatementRange(U32 addr,U16& linenum,U16& startCol,
        	U16& endCol,U32& startAddr,U32& endAddr)
//just reference in symbol server.
1.2.15. int FrankGetFuncRange(U32 addr , U32& uStart , U32& uEnd)
->		int FrankGetFuncRange(int nBank, U32 addr , int& nStartBank,
									U32& uStart , int& nEndBank, U32& uEnd)
1.2.16	void GetLineRange(unsigned short uAddr , unsigned short& uStart ,
                                         unsigned short& uEnd )
->		void GetLineRange(int nBank, unsigned short uAddr , unsigned short& uStart ,
                                         unsigned short& uEnd )
1.2.17	void GetStatementRange(unsigned short uAddr , unsigned short& uStart ,
                                         unsigned short& uEnd )
->		void GetStatementRange(int nBank, unsigned short uAddr , unsigned short& uStart ,
                                         unsigned short& uEnd )



1.3. about Breakpoint Server:
1.3.1. BOOL BptSearchBpt(unsigned short addr,BYTE &eFlag)
->     BOOL BptSearchBpt(BYTE spacebank,
					 unsigned short addr,BYTE &eFlag)
					 	//spacebank: same as address server specified space.
1.3.2. BOOL BptGetOneBpt(short num, unsigned short *addr);
->     BOOL BptGetOneBpt(short num, BYTE* spacebank, unsigned short *addr);
1.3.3. BOOL BptAddBptfromWnd(unsigned short addr);
->     BOOL BptAddBptfromWnd(BYTE spacebank, unsigned short addr);
1.3.4. BOOL BptClrOneBptfromWnd(unsigned short addr);
->     BOOL BptClrOneBptfromWnd(BYTE spacebank, unsigned short addr);
1.3.5. BOOL BptEnableBpt(unsigned short addr); 
->     BOOL BptEnableBpt(BYTE spacebank, unsigned short addr);
1.3.6. BOOL BptDisableBpt(unsigned short addr);
->     BOOL BptDisableBpt(BYTE spacebank, unsigned short addr);


1.4. about loader:
1.4.1. int SrcGetStartAddress( unsigned long & addr );
->	   int SrcGetStartAddress( int& spacebank, unsigned long & addr );
						//spacebank: same as address server specified space.

2. source window export routine change request.
2.1. void SrcShowSource(unsigned short uAddr)
->	 void SrcShowSource(int nBank, unsigned short uAddr)
						//nBank: 1, 6-9; 1 means not care bank
