Initial
BIN
m68hc11/BLANK.BMP
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
136
m68hc11/CMPDlg.cpp
Normal file
@@ -0,0 +1,136 @@
|
||||
#include <m68hc11/cmpdlg.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <m68hc11/opendir.hpp>
|
||||
#include <common/stdio.hpp>
|
||||
|
||||
CMPDlg::CMPDlg(void)
|
||||
{
|
||||
mInitHandler.setCallback(this,&CMPDlg::initHandler);
|
||||
mCreateHandler.setCallback(this,&CMPDlg::createHandler);
|
||||
mCloseHandler.setCallback(this,&CMPDlg::closeHandler);
|
||||
mDestroyHandler.setCallback(this,&CMPDlg::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&CMPDlg::commandHandler);
|
||||
insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
}
|
||||
|
||||
CMPDlg::CMPDlg(const CMPDlg &someCMPDlg)
|
||||
{ // private implementation
|
||||
*this=someCMPDlg;
|
||||
}
|
||||
|
||||
CMPDlg::~CMPDlg()
|
||||
{
|
||||
removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
}
|
||||
|
||||
CMPDlg &CMPDlg::operator=(const CMPDlg &someCMPDlg)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool CMPDlg::perform(GUIWindow &parentWindow)
|
||||
{
|
||||
return ::DialogBoxParam(processInstance(),(LPSTR)"CMPDLG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CMPDlg::initHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
setItems();
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CMPDlg::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CMPDlg::closeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CMPDlg::destroyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CMPDlg::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wmCommandID())
|
||||
{
|
||||
case IDCANCEL :
|
||||
case CMPDLG_CANCEL :
|
||||
handleCancel();
|
||||
break;
|
||||
case CMPDLG_OK :
|
||||
handleOk();
|
||||
break;
|
||||
case CMPDLG_LIST :
|
||||
handleList(someCallbackData);
|
||||
break;
|
||||
case CMPDLG_BROWSE :
|
||||
handleBrowse();
|
||||
break;
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
void CMPDlg::handleCancel(void)
|
||||
{
|
||||
endDialog(false);
|
||||
}
|
||||
|
||||
void CMPDlg::handleOk(void)
|
||||
{
|
||||
getItems();
|
||||
endDialog(true);
|
||||
}
|
||||
|
||||
void CMPDlg::handleList(CallbackData &cbData)
|
||||
{
|
||||
DWORD current;
|
||||
|
||||
switch(cbData.wmCommandCommand())
|
||||
{
|
||||
case LBN_DBLCLK :
|
||||
current=sendMessage(CMPDLG_LIST,LB_GETCURSEL,0,0L);
|
||||
sendMessage(CMPDLG_LIST,LB_DELETESTRING,current,0L);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CMPDlg::handleBrowse()
|
||||
{
|
||||
String strDirectory;
|
||||
OpenDirectory openDirectory;
|
||||
if(!openDirectory.getOpenDirectory(*this,"Choose Folder",".",strDirectory))return;
|
||||
sendMessage(CMPDLG_LIST,LB_INSERTSTRING,-1,(LPARAM)(LPCSTR)strDirectory);
|
||||
}
|
||||
|
||||
void CMPDlg::getItems(void)
|
||||
{
|
||||
String strItem;
|
||||
DWORD count;
|
||||
|
||||
mIncludePath.remove();
|
||||
count=sendMessage(CMPDLG_LIST,LB_GETCOUNT,0,0L);
|
||||
for(int index=0;index<count;index++)
|
||||
{
|
||||
sendMessage(CMPDLG_LIST,LB_GETTEXT,index,(LPARAM)(LPSTR)strItem);
|
||||
mIncludePath.insert(&strItem);
|
||||
}
|
||||
}
|
||||
|
||||
void CMPDlg::setItems(void)
|
||||
{
|
||||
for(int index=0;index<mIncludePath.size();index++)
|
||||
sendMessage(CMPDLG_LIST,LB_INSERTSTRING,-1,(LPARAM)(LPCSTR)mIncludePath[index]);
|
||||
}
|
||||
55
m68hc11/CMPDlg.hpp
Normal file
@@ -0,0 +1,55 @@
|
||||
#ifndef _M68HC11_CMPDLG_HPP_
|
||||
#define _M68HC11_CMPDLG_HPP_
|
||||
#ifndef _COMMON_DWINDOW_HPP_
|
||||
#include <common/dwindow.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_GLOBALDATA_HPP_
|
||||
#include <common/gdata.hpp>
|
||||
#endif
|
||||
|
||||
class CMPDlg : public DWindow
|
||||
{
|
||||
public:
|
||||
CMPDlg(void);
|
||||
virtual ~CMPDlg();
|
||||
bool perform(GUIWindow &parentWindow);
|
||||
void setIncludePath(Block<String> &includePath);
|
||||
void getIncludePath(Block<String> &includePath);
|
||||
private:
|
||||
CMPDlg(const CMPDlg &someCMPDlg);
|
||||
CMPDlg &operator=(const CMPDlg &someCMPDlg);
|
||||
CallbackData::ReturnType initHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
void handleCancel(void);
|
||||
void handleOk(void);
|
||||
void handleList(CallbackData &cbData);
|
||||
void handleBrowse(void);
|
||||
void getItems(void);
|
||||
void setItems(void);
|
||||
|
||||
Callback<CMPDlg> mInitHandler;
|
||||
Callback<CMPDlg> mCreateHandler;
|
||||
Callback<CMPDlg> mCloseHandler;
|
||||
Callback<CMPDlg> mDestroyHandler;
|
||||
Callback<CMPDlg> mCommandHandler;
|
||||
Block<String> mIncludePath;
|
||||
};
|
||||
|
||||
inline
|
||||
void CMPDlg::setIncludePath(Block<String> &includePath)
|
||||
{
|
||||
mIncludePath=includePath;
|
||||
}
|
||||
|
||||
inline
|
||||
void CMPDlg::getIncludePath(Block<String> &includePath)
|
||||
{
|
||||
includePath=mIncludePath;
|
||||
}
|
||||
#endif
|
||||
228
m68hc11/COMMCTRL.HPP
Normal file
@@ -0,0 +1,228 @@
|
||||
#ifndef _COMMON_COMMCONTROL_HPP_
|
||||
#define _COMMON_COMMCONTROL_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_OPENFILE_HPP_
|
||||
#include <common/openfile.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_GLOBALDATA_HPP_
|
||||
#include <common/gdata.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_DEVICECONTROLBLOCK_HPP_
|
||||
#include <m68hc11/dcb.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_COMMSTATUS_HPP_
|
||||
#include <m68hc11/commstat.hpp>
|
||||
#endif
|
||||
#ifndef _THREAD_EVENT_HPP_
|
||||
#include <thread/event.hpp>
|
||||
#endif
|
||||
|
||||
class CommControl
|
||||
{
|
||||
public:
|
||||
enum {TimeOut=5000};
|
||||
enum Port{PortCOM1,PortCOM2,PortCOM3,PortCOM4};
|
||||
enum EventMask{EventBreak=EV_BREAK,EventCts=EV_CTS,EventDsr=EV_DSR,EventErr=EV_ERR,EventRing=EV_RING,
|
||||
EventRlsd=EV_RLSD,EventRxChar=EV_RXCHAR,EventRxFlag=EV_RXFLAG,EventTxEmpty=EV_TXEMPTY,
|
||||
EventAll=EV_BREAK|EV_CTS|EV_DSR|EV_ERR|EV_RING|EV_RLSD|EV_RXCHAR|EV_RXFLAG|EV_TXEMPTY};
|
||||
CommControl(void);
|
||||
virtual ~CommControl();
|
||||
bool open(Port commPort,BOOL overlappedIO=false);
|
||||
void close();
|
||||
bool getDeviceControlBlock(DeviceControlBlock &deviceControlBlock)const;
|
||||
bool setDeviceControlBlock(const DeviceControlBlock &deviceControlBlock)const;
|
||||
bool setDeviceControlBlock(String strControlBlock)const; // (ie) "baud=1200 parity=N data=8 stop=1"
|
||||
DWORD readLine(String &strLine);
|
||||
DWORD writeLine(const String &strLine)const;
|
||||
DWORD read(void *pBuffer,int length,DWORD timeout=0L);
|
||||
DWORD write(BYTE *pBuffer,int length)const;
|
||||
DWORD write(GlobalData<BYTE> &sndBuffer);
|
||||
DWORD enumerateDevices(Block<Port> &deviceList);
|
||||
DWORD enumerateDevices(Block<String> &deviceList);
|
||||
bool clearError(void)const;
|
||||
bool clearError(CommStatus &commStatus)const;
|
||||
bool clearBreak(void)const;
|
||||
bool clearReceiveQueue(void);
|
||||
bool readFully(GlobalData<BYTE> &dataBytes);
|
||||
bool readFully(BYTE *pBuffer,DWORD byteCount);
|
||||
bool setBreak(void)const;
|
||||
bool waitEvent(DWORD &eventMask,DWORD timeout);
|
||||
bool waitEvent(DWORD timeout=TimeOut);
|
||||
bool waitForBreak(DWORD timeout=TimeOut);
|
||||
bool waitForData(DWORD timeout=TimeOut);
|
||||
bool waitForTransmit(DWORD timeout=TimeOut);
|
||||
bool setEventMask(DWORD eventMask)const;
|
||||
bool hasData(void);
|
||||
bool isOkay(void)const;
|
||||
static void portToString(CommControl::Port port,String &strPort);
|
||||
static CommControl::Port stringToPort(const String &strPort);
|
||||
static void showBytes(GlobalData<BYTE> rcvBytes);
|
||||
static void showBytes(BYTE *pBuffer,DWORD byteCount);
|
||||
private:
|
||||
CommControl(const CommControl &someCommControl);
|
||||
CommControl &operator=(const CommControl &someCommControl);
|
||||
void showError(DWORD errorMask)const;
|
||||
|
||||
FileHandle mCommDevice;
|
||||
Block<String> mStrPorts;
|
||||
CommStatus mCommStatus;
|
||||
Event mIOEvent;
|
||||
Overlapped mOverlapped;
|
||||
};
|
||||
|
||||
inline
|
||||
CommControl::CommControl(void)
|
||||
{
|
||||
mOverlapped.event((HANDLE)mIOEvent);
|
||||
mStrPorts.insert(&String("\\.\\COM1"));
|
||||
mStrPorts.insert(&String("\\.\\COM2"));
|
||||
mStrPorts.insert(&String("\\.\\COM3"));
|
||||
mStrPorts.insert(&String("\\.\\COM4"));
|
||||
}
|
||||
|
||||
inline
|
||||
CommControl::CommControl(const CommControl &someCommControl)
|
||||
{ // private implementation
|
||||
*this=someCommControl;
|
||||
}
|
||||
|
||||
inline
|
||||
CommControl::~CommControl()
|
||||
{
|
||||
close();
|
||||
}
|
||||
|
||||
inline
|
||||
CommControl &CommControl::operator=(const CommControl &/*someCommControl*/)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::open(Port commPort,BOOL overlappedIO)
|
||||
{
|
||||
close();
|
||||
mCommDevice.open(mStrPorts[commPort],FileHandle::ReadWrite,FileHandle::ShareNone,FileHandle::Open,(overlappedIO?FileHandle::FlagOverlapped:FileHandle::Normal));
|
||||
return isOkay();
|
||||
}
|
||||
|
||||
inline
|
||||
void CommControl::close(void)
|
||||
{
|
||||
if(!isOkay())return;
|
||||
mCommDevice.close();
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommControl::readLine(String &strLine)
|
||||
{
|
||||
strLine.reserve(1024);
|
||||
if(!isOkay())return FALSE;
|
||||
clearError(mCommStatus);
|
||||
if(!mCommStatus.bytesInReceiveQueue())return FALSE;
|
||||
return mCommDevice.getLine(strLine);
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommControl::writeLine(const String &strLine)const
|
||||
{
|
||||
if(!isOkay()||strLine.isNull())return FALSE;
|
||||
return mCommDevice.writeLine(strLine);
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommControl::write(GlobalData<BYTE> &sndBuffer)
|
||||
{
|
||||
if(!isOkay()||!sndBuffer.size())return 0;
|
||||
return write(&sndBuffer[0],sndBuffer.size());
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommControl::write(BYTE *pBuffer,int length)const
|
||||
{
|
||||
if(!isOkay()||!pBuffer||!length)return 0;
|
||||
return mCommDevice.write(pBuffer,length);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::setBreak(void)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::SetCommBreak((HANDLE)mCommDevice);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::clearBreak(void)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::ClearCommBreak((HANDLE)mCommDevice);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::getDeviceControlBlock(DeviceControlBlock &deviceControlBlock)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::GetCommState((HANDLE)mCommDevice,&((DeviceControlBlock&)deviceControlBlock).getDCB());
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::setDeviceControlBlock(const DeviceControlBlock &deviceControlBlock)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::SetCommState((HANDLE)mCommDevice,&((DeviceControlBlock&)deviceControlBlock).getDCB());
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::setDeviceControlBlock(String strControlBlock)const // (ie) "baud=1200 parity=N data=8 stop=1"
|
||||
{
|
||||
DeviceControlBlock deviceControlBlock;
|
||||
if(!::BuildCommDCB(strControlBlock.str(),&((DeviceControlBlock&)deviceControlBlock).getDCB()))return false;
|
||||
return ::SetCommState((HANDLE)mCommDevice,&((DeviceControlBlock&)deviceControlBlock).getDCB());
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::setEventMask(DWORD eventMask)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::SetCommMask((HANDLE)mCommDevice,eventMask);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::waitEvent(DWORD timeout)
|
||||
{
|
||||
DWORD eventMask;
|
||||
return waitEvent(eventMask,timeout);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::waitForBreak(DWORD timeout)
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
setEventMask(EventBreak);
|
||||
return waitEvent(timeout);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::waitForData(DWORD timeout)
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
setEventMask(EventRxChar);
|
||||
return waitEvent(timeout);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::waitForTransmit(DWORD timeout)
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
setEventMask(EventTxEmpty);
|
||||
return waitEvent(timeout);
|
||||
}
|
||||
#endif
|
||||
213
m68hc11/COMMSTAT.HPP
Normal file
@@ -0,0 +1,213 @@
|
||||
#ifndef _M68HC11_COMMSTATUS_HPP_
|
||||
#define _M68HC11_COMMSTATUS_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
|
||||
class CommStatus : private _COMSTAT
|
||||
{
|
||||
public:
|
||||
CommStatus(void);
|
||||
CommStatus(const CommStatus &someCommStatus);
|
||||
virtual ~CommStatus();
|
||||
CommStatus &operator=(const CommStatus &someCommStatus);
|
||||
BOOL operator==(const CommStatus &someCommStatus)const;
|
||||
BOOL waitingForCts(void)const;
|
||||
BOOL waitingForDsr(void)const;
|
||||
BOOL waitingForRlsd(void)const;
|
||||
BOOL waitingRcvdXOff(void)const;
|
||||
BOOL waitingSentXOff(void)const;
|
||||
BOOL waitingRcvdEof(void)const;
|
||||
BOOL waitingForTx(void)const;
|
||||
DWORD bytesInReceiveQueue(void)const;
|
||||
DWORD bytesInSendQueue(void)const;
|
||||
_COMSTAT &getCOMSTAT(void);
|
||||
private:
|
||||
void waitingForCts(BOOL waitingForCts);
|
||||
void waitingForDsr(BOOL waitingForDsr);
|
||||
void waitingForRlsd(BOOL waitingForRlsd);
|
||||
void waitingRcvdXOff(BOOL waitingRcvdXOff);
|
||||
void waitingSentXOff(BOOL waitingSentXOff);
|
||||
void waitingRcvdEof(BOOL waitingRcvdEof);
|
||||
void waitingForTx(BOOL waitingForTx);
|
||||
void bytesInReceiveQueue(DWORD bytesInReceiveQueue);
|
||||
void bytesInSendQueue(DWORD bytesInSendQueue);
|
||||
void setZero(void);
|
||||
};
|
||||
|
||||
inline
|
||||
CommStatus::CommStatus(void)
|
||||
{
|
||||
setZero();
|
||||
}
|
||||
|
||||
inline
|
||||
CommStatus::CommStatus(const CommStatus &someCommStatus)
|
||||
{
|
||||
*this=someCommStatus;
|
||||
}
|
||||
|
||||
inline
|
||||
CommStatus::~CommStatus()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
CommStatus &CommStatus::operator=(const CommStatus &someCommStatus)
|
||||
{
|
||||
waitingForCts(someCommStatus.waitingForCts());
|
||||
waitingForDsr(someCommStatus.waitingForDsr());
|
||||
waitingForRlsd(someCommStatus.waitingForRlsd());
|
||||
waitingRcvdXOff(someCommStatus.waitingRcvdXOff());
|
||||
waitingSentXOff(someCommStatus.waitingSentXOff());
|
||||
waitingRcvdEof(someCommStatus.waitingRcvdEof());
|
||||
waitingForTx(someCommStatus.waitingForTx());
|
||||
bytesInReceiveQueue(someCommStatus.bytesInReceiveQueue());
|
||||
bytesInSendQueue(someCommStatus.bytesInSendQueue());
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::operator==(const CommStatus &someCommStatus)const
|
||||
{
|
||||
return (waitingForCts()==someCommStatus.waitingForCts()&&
|
||||
waitingForDsr()==someCommStatus.waitingForDsr()&&
|
||||
waitingForRlsd()==someCommStatus.waitingForRlsd()&&
|
||||
waitingRcvdXOff()==someCommStatus.waitingRcvdXOff()&&
|
||||
waitingSentXOff()==someCommStatus.waitingSentXOff()&&
|
||||
waitingRcvdEof()==someCommStatus.waitingRcvdEof()&&
|
||||
waitingForTx()==someCommStatus.waitingForTx()&&
|
||||
bytesInReceiveQueue()==someCommStatus.bytesInReceiveQueue()&&
|
||||
bytesInSendQueue()==someCommStatus.bytesInSendQueue());
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingForCts(void)const
|
||||
{
|
||||
return _COMSTAT::fCtsHold;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingForCts(BOOL waitingForCts)
|
||||
{
|
||||
_COMSTAT::fCtsHold=waitingForCts;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingForDsr(void)const
|
||||
{
|
||||
return _COMSTAT::fDsrHold;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingForDsr(BOOL waitingForDsr)
|
||||
{
|
||||
_COMSTAT::fDsrHold=waitingForDsr;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingForRlsd(void)const
|
||||
{
|
||||
return _COMSTAT::fRlsdHold;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingForRlsd(BOOL waitingForRlsd)
|
||||
{
|
||||
_COMSTAT::fRlsdHold=waitingForRlsd;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingRcvdXOff(void)const
|
||||
{
|
||||
return _COMSTAT::fXoffHold;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingRcvdXOff(BOOL waitingRcvdXOff)
|
||||
{
|
||||
_COMSTAT::fXoffHold=waitingRcvdXOff;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingSentXOff(void)const
|
||||
{
|
||||
return _COMSTAT::fXoffSent;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingSentXOff(BOOL waitingSentXOff)
|
||||
{
|
||||
_COMSTAT::fXoffSent=waitingSentXOff;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingRcvdEof(void)const
|
||||
{
|
||||
return _COMSTAT::fEof;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingRcvdEof(BOOL waitingRcvdEof)
|
||||
{
|
||||
_COMSTAT::fEof=waitingRcvdEof;
|
||||
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingForTx(void)const
|
||||
{
|
||||
return _COMSTAT::fTxim;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingForTx(BOOL waitingForTx)
|
||||
{
|
||||
_COMSTAT::fTxim=waitingForTx;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommStatus::bytesInReceiveQueue(void)const
|
||||
{
|
||||
return _COMSTAT::cbInQue;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::bytesInReceiveQueue(DWORD bytesInReceiveQueue)
|
||||
{
|
||||
_COMSTAT::cbInQue=bytesInReceiveQueue;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommStatus::bytesInSendQueue(void)const
|
||||
{
|
||||
return _COMSTAT::cbOutQue;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::bytesInSendQueue(DWORD bytesInSendQueue)
|
||||
{
|
||||
_COMSTAT::cbOutQue=bytesInSendQueue;
|
||||
}
|
||||
|
||||
inline
|
||||
_COMSTAT &CommStatus::getCOMSTAT(void)
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::setZero(void)
|
||||
{
|
||||
_COMSTAT::fCtsHold=0;
|
||||
_COMSTAT::fDsrHold=0;
|
||||
_COMSTAT::fRlsdHold=0;
|
||||
_COMSTAT::fXoffHold=0;
|
||||
_COMSTAT::fXoffSent=0;
|
||||
_COMSTAT::fEof=0;
|
||||
_COMSTAT::fTxim=0;
|
||||
_COMSTAT::fReserved=0;
|
||||
_COMSTAT::cbInQue=0;
|
||||
_COMSTAT::cbOutQue=0;
|
||||
}
|
||||
#endif
|
||||
BIN
m68hc11/DASH.BMP
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
318
m68hc11/DCB.CPP
Normal file
@@ -0,0 +1,318 @@
|
||||
#include <m68hc11/dcb.hpp>
|
||||
|
||||
DeviceControlBlock::DeviceControlBlock(void)
|
||||
{
|
||||
setZero();
|
||||
}
|
||||
|
||||
DeviceControlBlock::DeviceControlBlock(const DeviceControlBlock &someDeviceControlBlock)
|
||||
{
|
||||
*this=someDeviceControlBlock;
|
||||
}
|
||||
|
||||
DeviceControlBlock::~DeviceControlBlock()
|
||||
{
|
||||
}
|
||||
|
||||
DeviceControlBlock &DeviceControlBlock::operator=(const DeviceControlBlock &someDeviceControlBlock)
|
||||
{
|
||||
baudRate(someDeviceControlBlock.baudRate());
|
||||
binaryEnabled(someDeviceControlBlock.binaryEnabled());
|
||||
enableParity(someDeviceControlBlock.enableParity());
|
||||
ctsFlowControlOutMonitor(someDeviceControlBlock.ctsFlowControlOutMonitor());
|
||||
dsrFlowControlOutMonitor(someDeviceControlBlock.dsrFlowControlOutMonitor());
|
||||
dtrControl(someDeviceControlBlock.dtrControl());
|
||||
dsrSensitivityEnable(someDeviceControlBlock.dsrSensitivityEnable());
|
||||
continueOnXOff(someDeviceControlBlock.continueOnXOff());
|
||||
xonXOffEnableTransmit(someDeviceControlBlock.xonXOffEnableTransmit());
|
||||
xonXOffEnableReceive(someDeviceControlBlock.xonXOffEnableReceive());
|
||||
errorCharEnable(someDeviceControlBlock.errorCharEnable());
|
||||
discardNullEnable(someDeviceControlBlock.discardNullEnable());
|
||||
rtsControl(someDeviceControlBlock.rtsControl());
|
||||
abortOnErrorEnable(someDeviceControlBlock.abortOnErrorEnable());
|
||||
xonLimit(someDeviceControlBlock.xonLimit());
|
||||
xoffLimit(someDeviceControlBlock.xoffLimit());
|
||||
dataBits(someDeviceControlBlock.dataBits());
|
||||
parity(someDeviceControlBlock.parity());
|
||||
stopBits(someDeviceControlBlock.stopBits());
|
||||
xonChar(someDeviceControlBlock.xonChar());
|
||||
xoffChar(someDeviceControlBlock.xoffChar());
|
||||
errorChar(someDeviceControlBlock.errorChar());
|
||||
eofChar(someDeviceControlBlock.eofChar());
|
||||
evtChar(someDeviceControlBlock.evtChar());
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::operator==(const DeviceControlBlock &someDeviceControlBlock)
|
||||
{
|
||||
return(baudRate()==someDeviceControlBlock.baudRate()&&
|
||||
binaryEnabled()==someDeviceControlBlock.binaryEnabled()&&
|
||||
enableParity()==someDeviceControlBlock.enableParity()&&
|
||||
ctsFlowControlOutMonitor()==someDeviceControlBlock.ctsFlowControlOutMonitor()&&
|
||||
dsrFlowControlOutMonitor()==someDeviceControlBlock.dsrFlowControlOutMonitor()&&
|
||||
dtrControl()==someDeviceControlBlock.dtrControl()&&
|
||||
dsrSensitivityEnable()==someDeviceControlBlock.dsrSensitivityEnable()&&
|
||||
continueOnXOff()==someDeviceControlBlock.continueOnXOff()&&
|
||||
xonXOffEnableTransmit()==someDeviceControlBlock.xonXOffEnableTransmit()&&
|
||||
xonXOffEnableReceive()==someDeviceControlBlock.xonXOffEnableReceive()&&
|
||||
errorCharEnable()==someDeviceControlBlock.errorCharEnable()&&
|
||||
discardNullEnable()==someDeviceControlBlock.discardNullEnable()&&
|
||||
rtsControl()==someDeviceControlBlock.rtsControl()&&
|
||||
abortOnErrorEnable()==someDeviceControlBlock.abortOnErrorEnable()&&
|
||||
xonLimit()==someDeviceControlBlock.xonLimit()&&
|
||||
xoffLimit()==someDeviceControlBlock.xoffLimit()&&
|
||||
dataBits()==someDeviceControlBlock.dataBits()&&
|
||||
parity()==someDeviceControlBlock.parity()&&
|
||||
stopBits()==someDeviceControlBlock.stopBits()&&
|
||||
xonChar()==someDeviceControlBlock.xonChar()&&
|
||||
xoffChar()==someDeviceControlBlock.xoffChar()&&
|
||||
errorChar()==someDeviceControlBlock.errorChar()&&
|
||||
eofChar()==someDeviceControlBlock.eofChar()&&
|
||||
evtChar()==someDeviceControlBlock.evtChar());
|
||||
}
|
||||
|
||||
DWORD DeviceControlBlock::baudRate(void)const
|
||||
{
|
||||
return _DCB::BaudRate;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::baudRate(DWORD baudRate)
|
||||
{
|
||||
_DCB::BaudRate=baudRate;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::binaryEnabled(void)const
|
||||
{
|
||||
return _DCB::fBinary;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::binaryEnabled(BOOL binaryEnabled)
|
||||
{
|
||||
_DCB::fBinary=binaryEnabled;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::enableParity(void)const
|
||||
{
|
||||
return _DCB::fParity;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::enableParity(BOOL parity)
|
||||
{
|
||||
_DCB::fParity=parity;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::ctsFlowControlOutMonitor(void)const
|
||||
{
|
||||
return _DCB::fOutxCtsFlow;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::ctsFlowControlOutMonitor(BOOL ctsFlowControlOut)
|
||||
{
|
||||
_DCB::fOutxCtsFlow=ctsFlowControlOut;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::dsrFlowControlOutMonitor(void)const
|
||||
{
|
||||
return _DCB::fOutxDsrFlow;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::dsrFlowControlOutMonitor(BOOL dsrFlowControlOut)
|
||||
{
|
||||
_DCB::fOutxDsrFlow=dsrFlowControlOut;
|
||||
}
|
||||
|
||||
DeviceControlBlock::DtrControl DeviceControlBlock::dtrControl(void)const
|
||||
{
|
||||
return DtrControl(_DCB::fDtrControl);
|
||||
}
|
||||
|
||||
void DeviceControlBlock::dtrControl(DtrControl dtrControl)
|
||||
{
|
||||
_DCB::fDtrControl=(DWORD)dtrControl;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::dsrSensitivityEnable(void)const
|
||||
{
|
||||
return _DCB::fDsrSensitivity;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::dsrSensitivityEnable(BOOL dsrSensitivityEnable)
|
||||
{
|
||||
_DCB::fDsrSensitivity=dsrSensitivityEnable;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::continueOnXOff(void)const
|
||||
{
|
||||
return _DCB::fTXContinueOnXoff;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::continueOnXOff(BOOL continueOnXOff)
|
||||
{
|
||||
_DCB::fTXContinueOnXoff=continueOnXOff;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::xonXOffEnableTransmit(void)const
|
||||
{
|
||||
return _DCB::fOutX;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xonXOffEnableTransmit(BOOL xonXOffEnable)
|
||||
{
|
||||
_DCB::fOutX=xonXOffEnable;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::xonXOffEnableReceive(void)const
|
||||
{
|
||||
return _DCB::fInX;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xonXOffEnableReceive(BOOL xonXOffEnable)
|
||||
{
|
||||
_DCB::fInX=xonXOffEnable;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::errorCharEnable(void)const
|
||||
{
|
||||
return _DCB::fErrorChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::errorCharEnable(BOOL errorCharEnable)
|
||||
{
|
||||
_DCB::fErrorChar=errorCharEnable;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::discardNullEnable(void)const
|
||||
{
|
||||
return _DCB::fNull;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::discardNullEnable(BOOL discardNullEnable)
|
||||
{
|
||||
_DCB::fNull=discardNullEnable;
|
||||
}
|
||||
|
||||
DeviceControlBlock::RtsControl DeviceControlBlock::rtsControl(void)const
|
||||
{
|
||||
return RtsControl(_DCB::fRtsControl);
|
||||
}
|
||||
|
||||
void DeviceControlBlock::rtsControl(RtsControl rtsControl)
|
||||
{
|
||||
_DCB::fRtsControl=(DWORD)rtsControl;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::abortOnErrorEnable(void)const
|
||||
{
|
||||
return _DCB::fAbortOnError;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::abortOnErrorEnable(BOOL abortOnError)
|
||||
{
|
||||
_DCB::fAbortOnError=abortOnError;
|
||||
}
|
||||
|
||||
WORD DeviceControlBlock::xonLimit(void)const
|
||||
{
|
||||
return _DCB::XonLim;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xonLimit(WORD xonLimit)
|
||||
{
|
||||
_DCB::XonLim=xonLimit;
|
||||
}
|
||||
|
||||
WORD DeviceControlBlock::xoffLimit(void)const
|
||||
{
|
||||
return _DCB::XoffLim;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xoffLimit(WORD xoffLimit)
|
||||
{
|
||||
_DCB::XoffLim=xoffLimit;
|
||||
}
|
||||
|
||||
BYTE DeviceControlBlock::dataBits(void)const
|
||||
{
|
||||
return _DCB::ByteSize;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::dataBits(BYTE dataBits)
|
||||
{
|
||||
_DCB::ByteSize=dataBits;
|
||||
}
|
||||
|
||||
DeviceControlBlock::Parity DeviceControlBlock::parity(void)const
|
||||
{
|
||||
return Parity(_DCB::Parity);
|
||||
}
|
||||
|
||||
void DeviceControlBlock::parity(Parity parity)
|
||||
{
|
||||
_DCB::Parity=BYTE(parity);
|
||||
}
|
||||
|
||||
BYTE DeviceControlBlock::stopBits(void)const
|
||||
{
|
||||
return _DCB::StopBits;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::stopBits(BYTE stopBits)
|
||||
{
|
||||
_DCB::StopBits=stopBits;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::xonChar(void)const
|
||||
{
|
||||
return _DCB::XonChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xonChar(char xonChar)
|
||||
{
|
||||
_DCB::XonChar=xonChar;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::xoffChar(void)const
|
||||
{
|
||||
return _DCB::XoffChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xoffChar(char xoffChar)
|
||||
{
|
||||
_DCB::XoffChar=xoffChar;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::errorChar(void)const
|
||||
{
|
||||
return _DCB::ErrorChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::errorChar(char errorChar)
|
||||
{
|
||||
_DCB::ErrorChar=errorChar;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::eofChar(void)const
|
||||
{
|
||||
return _DCB::EofChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::eofChar(char eofChar)
|
||||
{
|
||||
_DCB::EofChar;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::evtChar(void)const
|
||||
{
|
||||
return _DCB::EvtChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::evtChar(char evtChar)
|
||||
{
|
||||
_DCB::EvtChar=evtChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::setZero(void)
|
||||
{
|
||||
::memset(&(_DCB&)*this,0,sizeof(_DCB));
|
||||
_DCB::DCBlength=sizeof(_DCB);
|
||||
}
|
||||
79
m68hc11/DCB.HPP
Normal file
@@ -0,0 +1,79 @@
|
||||
#ifndef _M68HC11_DEVICECONTROLBLOCK_HPP_
|
||||
#define _M68HC11_DEVICECONTROLBLOCK_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STDLIB_HPP_
|
||||
#include <common/stdlib.hpp>
|
||||
#endif
|
||||
|
||||
class DeviceControlBlock : private _DCB
|
||||
{
|
||||
public:
|
||||
enum DtrControl{DtrControlDisable=DTR_CONTROL_DISABLE,DtrControlEnable=DTR_CONTROL_ENABLE,DtrControlHandshake=DTR_CONTROL_HANDSHAKE};
|
||||
enum RtsControl{RtsControlDisable=RTS_CONTROL_DISABLE,RtsControlEnable=RTS_CONTROL_ENABLE,RtsControlHandshake=RTS_CONTROL_HANDSHAKE,RtsControlToggle=RTS_CONTROL_TOGGLE};
|
||||
enum Parity{ParityNone,ParityOdd,ParityEven,ParityMark};
|
||||
DeviceControlBlock(void);
|
||||
DeviceControlBlock(const DeviceControlBlock &someDeviceControlBlock);
|
||||
virtual ~DeviceControlBlock();
|
||||
DeviceControlBlock &operator=(const DeviceControlBlock &someDeviceControlBlock);
|
||||
BOOL operator==(const DeviceControlBlock &someDeviceControlBlock);
|
||||
DWORD baudRate(void)const;
|
||||
void baudRate(DWORD baudRate);
|
||||
BOOL binaryEnabled(void)const;
|
||||
void binaryEnabled(BOOL binaryEnabled);
|
||||
BOOL enableParity(void)const;
|
||||
void enableParity(BOOL parity);
|
||||
BOOL ctsFlowControlOutMonitor(void)const;
|
||||
void ctsFlowControlOutMonitor(BOOL ctsFlowControlOut);
|
||||
BOOL dsrFlowControlOutMonitor(void)const;
|
||||
void dsrFlowControlOutMonitor(BOOL dsrFlowControlOut);
|
||||
DtrControl dtrControl(void)const;
|
||||
void dtrControl(DtrControl dtrControl);
|
||||
BOOL dsrSensitivityEnable(void)const;
|
||||
void dsrSensitivityEnable(BOOL dsrSensitivityEnable);
|
||||
BOOL continueOnXOff(void)const;
|
||||
void continueOnXOff(BOOL continueOnXOff);
|
||||
BOOL xonXOffEnableTransmit(void)const;
|
||||
void xonXOffEnableTransmit(BOOL xonXOffEnable);
|
||||
BOOL xonXOffEnableReceive(void)const;
|
||||
void xonXOffEnableReceive(BOOL xonXOffEnable);
|
||||
BOOL errorCharEnable(void)const;
|
||||
void errorCharEnable(BOOL errorCharEnable);
|
||||
BOOL discardNullEnable(void)const;
|
||||
void discardNullEnable(BOOL discardNullEnable);
|
||||
RtsControl rtsControl(void)const;
|
||||
void rtsControl(RtsControl rtsControl);
|
||||
BOOL abortOnErrorEnable(void)const;
|
||||
void abortOnErrorEnable(BOOL abortOnError);
|
||||
WORD xonLimit(void)const;
|
||||
void xonLimit(WORD xonLimit);
|
||||
WORD xoffLimit(void)const;
|
||||
void xoffLimit(WORD xoffLimit);
|
||||
BYTE dataBits(void)const;
|
||||
void dataBits(BYTE dataBits);
|
||||
Parity parity(void)const;
|
||||
void parity(Parity parity);
|
||||
BYTE stopBits(void)const;
|
||||
void stopBits(BYTE stopBits);
|
||||
char xonChar(void)const;
|
||||
void xonChar(char xonChar);
|
||||
char xoffChar(void)const;
|
||||
void xoffChar(char xoffChar);
|
||||
char errorChar(void)const;
|
||||
void errorChar(char errorChar);
|
||||
char eofChar(void)const;
|
||||
void eofChar(char eofChar);
|
||||
char evtChar(void)const;
|
||||
void evtChar(char evtChar);
|
||||
_DCB &getDCB(void);
|
||||
private:
|
||||
void setZero(void);
|
||||
};
|
||||
|
||||
inline
|
||||
_DCB &DeviceControlBlock::getDCB(void)
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
BIN
m68hc11/DOC.ICO
Normal file
|
After Width: | Height: | Size: 766 B |
51
m68hc11/Editfnd.cpp
Normal file
@@ -0,0 +1,51 @@
|
||||
#include <m68hc11/editfnd.hpp>
|
||||
|
||||
EditFind::EditFind(void)
|
||||
{
|
||||
}
|
||||
|
||||
EditFind::~EditFind()
|
||||
{
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
void EditFind::init(void)
|
||||
{
|
||||
CharRange searchRange;
|
||||
|
||||
searchRange.posMin(0);
|
||||
searchRange.posMax(0);
|
||||
mFindTextEx.searchRange(searchRange);
|
||||
}
|
||||
|
||||
void EditFind::leaveEdit(const String &strText)
|
||||
{
|
||||
findNext();
|
||||
}
|
||||
|
||||
void EditFind::find(void)
|
||||
{
|
||||
findNext();
|
||||
}
|
||||
|
||||
void EditFind::findNext(void)
|
||||
{
|
||||
String currText;
|
||||
|
||||
getText(currText);
|
||||
if(currText.isNull())return;
|
||||
if(!(currText==lastSearchText()))lastFindIndex(-1);
|
||||
mFindTextEx.strFind(currText);
|
||||
if(!mFindTextEx.searchRange().posMin()&&!mFindTextEx.searchRange().posMax())mFindTextEx.searchRange(CharRange(0,-1));
|
||||
else
|
||||
{
|
||||
CharRange searchRange(mFindTextEx.foundRange());
|
||||
searchRange.posMin(searchRange.posMax());
|
||||
searchRange.posMax(-1);
|
||||
mFindTextEx.searchRange(searchRange);
|
||||
}
|
||||
// mRichEditControl->setFocus();
|
||||
mRichEditControl->findText(mFindTextEx);
|
||||
// setFocus();
|
||||
}
|
||||
35
m68hc11/Editfnd.hpp
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _M68HC11_EDITFIND_HPP_
|
||||
#define _M68HC11_EDITFIND_HPP_
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_RICHEDIT_HPP_
|
||||
#include <common/richedit.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_FIND_HPP_
|
||||
#include <m68hc11/find.hpp>
|
||||
#endif
|
||||
|
||||
class EditFind : private Find
|
||||
{
|
||||
public:
|
||||
EditFind(void);
|
||||
virtual ~EditFind();
|
||||
void perform(GUIWindow &parentWindow,RichEditControl &richEditControl);
|
||||
protected:
|
||||
virtual void findNext(void);
|
||||
virtual void init(void);
|
||||
virtual void find(void);
|
||||
virtual void leaveEdit(const String &strText);
|
||||
private:
|
||||
SmartPointer<RichEditControl> mRichEditControl;
|
||||
FindTextEx mFindTextEx;
|
||||
};
|
||||
|
||||
inline
|
||||
void EditFind::perform(GUIWindow &parentWindow,RichEditControl &richEditControl)
|
||||
{
|
||||
mRichEditControl=&richEditControl;
|
||||
Find::perform(parentWindow);
|
||||
}
|
||||
#endif
|
||||
192
m68hc11/Find.cpp
Normal file
@@ -0,0 +1,192 @@
|
||||
#include <m68hc11/find.hpp>
|
||||
#include <common/keydata.hpp>
|
||||
|
||||
Find::Find(void)
|
||||
: mLastFindIndex(-1)
|
||||
{
|
||||
mKeyDownHandler.setCallback(this,&Find::keyDownHandler);
|
||||
mDlgCodeHandler.setCallback(this,&Find::dlgCodeHandler);
|
||||
mEditHook.insertHandler(WinHookProc::KeyDownHandler,&mKeyDownHandler);
|
||||
mEditHook.insertHandler(WinHookProc::DialogCodeHandler,&mDlgCodeHandler);
|
||||
}
|
||||
|
||||
Find::Find(const Find &find)
|
||||
{ // private implementation
|
||||
*this=find;
|
||||
}
|
||||
|
||||
Find::~Find()
|
||||
{
|
||||
mEditHook.removeHandler(WinHookProc::KeyDownHandler,&mKeyDownHandler);
|
||||
mEditHook.removeHandler(WinHookProc::DialogCodeHandler,&mDlgCodeHandler);
|
||||
}
|
||||
|
||||
Find &Find::operator=(const Find &find)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
void Find::perform(GUIWindow &parentWindow)
|
||||
{
|
||||
create(parentWindow);
|
||||
}
|
||||
|
||||
void Find::create(GUIWindow &parentWindow)
|
||||
{
|
||||
String staticName("STATIC");
|
||||
String editName("EDIT");
|
||||
String buttonName("BUTTON");
|
||||
|
||||
DialogTemplate dlgTemplate;
|
||||
DialogItemTemplate staticFind;
|
||||
DialogItemTemplate editFind;
|
||||
DialogItemTemplate cancelButton;
|
||||
DialogItemTemplate fnButton;
|
||||
DialogItemTemplate wmButton;
|
||||
|
||||
dlgTemplate.titleText("Find");
|
||||
dlgTemplate.posRect(Rect(10,73,236,62));
|
||||
dlgTemplate.pointSize(8);
|
||||
dlgTemplate.typeFace("Helv");
|
||||
dlgTemplate.style(DS_MODALFRAME|WS_VISIBLE|WS_CAPTION|DS_3DLOOK|WS_SYSMENU|DS_SETFONT|WS_POPUP); // WS_POPUP
|
||||
|
||||
staticFind.className(staticName);
|
||||
staticFind.titleText("Fi&nd what:");
|
||||
staticFind.style(WS_CHILD|WS_VISIBLE);
|
||||
staticFind.posRect(Rect(4,8,42,8));
|
||||
staticFind.itemID(-1);
|
||||
|
||||
editFind.className(editName);
|
||||
editFind.titleText("");
|
||||
editFind.style(WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP|WS_GROUP);
|
||||
editFind.posRect(Rect(47,7,128,12));
|
||||
editFind.itemID(FindText);
|
||||
|
||||
fnButton.className(buttonName);
|
||||
fnButton.titleText("&Find Next");
|
||||
fnButton.style(WS_VISIBLE|WS_CHILD|WS_TABSTOP|WS_GROUP|BS_DEFPUSHBUTTON);
|
||||
fnButton.posRect(Rect(182,5,50,14));
|
||||
fnButton.itemID(FindNext);
|
||||
|
||||
wmButton.className(buttonName);
|
||||
wmButton.titleText("Match &whole word only");
|
||||
wmButton.style(WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_AUTOCHECKBOX|WS_GROUP);
|
||||
wmButton.posRect(Rect(4,26,100,12));
|
||||
wmButton.itemID(FindWhole);
|
||||
|
||||
cancelButton.className(buttonName);
|
||||
cancelButton.titleText("Cancel");
|
||||
cancelButton.style(WS_VISIBLE|WS_CHILD|WS_TABSTOP|WS_GROUP);
|
||||
cancelButton.posRect(Rect(182,23,50,14));
|
||||
cancelButton.itemID(CancelFind);
|
||||
|
||||
dlgTemplate+=staticFind;
|
||||
dlgTemplate+=editFind;
|
||||
dlgTemplate+=cancelButton;
|
||||
dlgTemplate+=fnButton;
|
||||
dlgTemplate+=wmButton;
|
||||
createDialog(parentWindow,dlgTemplate,DynamicDialog::ModelessDialog);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Find::keyDownHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
KeyData keyData(someCallbackData);
|
||||
String strEditText;
|
||||
|
||||
if(keyData.isEscapeKey())GUIWindow::postMessage(*this,WM_CLOSE,0,0L);
|
||||
else if(keyData.isEnterKey())
|
||||
{
|
||||
getText(strEditText);
|
||||
leaveEdit(strEditText);
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Find::dlgCodeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)DLGC_WANTALLKEYS;
|
||||
}
|
||||
|
||||
WORD Find::dlgCommand(DWORD commandID,CallbackData &someCallbackData)
|
||||
{
|
||||
switch(commandID)
|
||||
{
|
||||
case FindText :
|
||||
break;
|
||||
case FindNext :
|
||||
handleFindNext();
|
||||
break;
|
||||
case CancelFind :
|
||||
destroy();
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
WORD Find::dlgCode(CallbackData &someCallbackData)
|
||||
{
|
||||
return DLGC_WANTALLKEYS;
|
||||
}
|
||||
|
||||
BOOL Find::dlgInitDialog(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mEditHook.hookWin(getItem(FindText));
|
||||
init();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Find::dlgDestroyDialog(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mEditHook.unhookWin();
|
||||
return;
|
||||
}
|
||||
|
||||
void Find::getText(String &strEditText)
|
||||
{
|
||||
String strText;
|
||||
|
||||
DynamicDialog::getText(FindText,strText);
|
||||
strEditText=strText;
|
||||
}
|
||||
|
||||
BOOL Find::matchWholeWordOnly(void)const
|
||||
{
|
||||
return ::SendMessage(getItem(FindWhole),BM_GETCHECK,0,0L);
|
||||
}
|
||||
|
||||
void Find::handleFind(void)
|
||||
{
|
||||
find();
|
||||
}
|
||||
|
||||
void Find::handleFindNext(void)
|
||||
{
|
||||
findNext();
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
void Find::init(void)
|
||||
{
|
||||
}
|
||||
|
||||
void Find::find(void)
|
||||
{
|
||||
String currText;
|
||||
|
||||
getText(currText);
|
||||
lastSearchText(currText);
|
||||
}
|
||||
|
||||
void Find::findNext(void)
|
||||
{
|
||||
String currText;
|
||||
|
||||
getText(currText);
|
||||
lastSearchText(currText);
|
||||
}
|
||||
|
||||
void Find::leaveEdit(const String &strEditText)
|
||||
{
|
||||
lastSearchText(strEditText);
|
||||
}
|
||||
81
m68hc11/Find.hpp
Normal file
@@ -0,0 +1,81 @@
|
||||
#ifndef _M68HC11_FIND_HPP_
|
||||
#define _M68HC11_FIND_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _DIALOG_DYNAMICDIALOG_HPP_
|
||||
#include <dialog/dyndlg.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_HOOKPROC_HPP_
|
||||
#include <common/hookproc.hpp>
|
||||
#endif
|
||||
|
||||
class Find : private DynamicDialog
|
||||
{
|
||||
public:
|
||||
Find(void);
|
||||
virtual ~Find();
|
||||
void perform(GUIWindow &parentWindow);
|
||||
int lastFindIndex(void)const;
|
||||
const String &lastSearchText(void)const;
|
||||
void setFocus(void)const;
|
||||
protected:
|
||||
virtual void init(void);
|
||||
virtual void find(void);
|
||||
virtual void findNext(void);
|
||||
virtual void leaveEdit(const String &strText);
|
||||
void getText(String &strEditText);
|
||||
void lastFindIndex(int lastFindIndex);
|
||||
void lastSearchText(const String &lastSearchText);
|
||||
BOOL matchWholeWordOnly(void)const;
|
||||
private:
|
||||
enum{FindText=101,CancelFind=IDCANCEL,FindNext=103,FindWhole=104};
|
||||
Find(const Find &find);
|
||||
Find &operator=(const Find &find);
|
||||
CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType dlgCodeHandler(CallbackData &someCallbackData);
|
||||
void handleFind(void);
|
||||
void handleFindNext(void);
|
||||
void create(GUIWindow &parentWindow);
|
||||
WORD dlgCommand(DWORD commandID,CallbackData &someCallbackData);
|
||||
WORD dlgCode(CallbackData &someCallbackData);
|
||||
BOOL dlgInitDialog(CallbackData &someCallbackData);
|
||||
void dlgDestroyDialog(CallbackData &someCallbackData);
|
||||
|
||||
Callback<Find> mKeyDownHandler;
|
||||
Callback<Find> mDlgCodeHandler;
|
||||
String mLastSearchText;
|
||||
int mLastFindIndex;
|
||||
WinHookProc mEditHook;
|
||||
};
|
||||
|
||||
inline
|
||||
const String &Find::lastSearchText(void)const
|
||||
{
|
||||
return mLastSearchText;
|
||||
}
|
||||
|
||||
inline
|
||||
void Find::lastSearchText(const String &lastSearchText)
|
||||
{
|
||||
mLastSearchText=lastSearchText;
|
||||
}
|
||||
|
||||
inline
|
||||
void Find::lastFindIndex(int lastFindIndex)
|
||||
{
|
||||
mLastFindIndex=lastFindIndex;
|
||||
}
|
||||
|
||||
inline
|
||||
int Find::lastFindIndex(void)const
|
||||
{
|
||||
return mLastFindIndex;
|
||||
}
|
||||
|
||||
inline
|
||||
void Find::setFocus(void)const
|
||||
{
|
||||
GUIWindow::setFocus();
|
||||
}
|
||||
#endif
|
||||
BIN
m68hc11/HELP/M68HC11.FTS
Normal file
BIN
m68hc11/HELP/M68HC11.HLP
Normal file
15
m68hc11/HELP/M68HC11.HPJ
Normal file
@@ -0,0 +1,15 @@
|
||||
[OPTIONS]
|
||||
ERRORLOG = error.log
|
||||
COMPRESS = No
|
||||
[BUILDTAGS]
|
||||
|
||||
[FILES]
|
||||
M68HC11.RTF
|
||||
|
||||
[BITMAPS]
|
||||
|
||||
[ALIAS]
|
||||
[CONFIG]
|
||||
BrowseButtons()
|
||||
[WINDOWS]
|
||||
[BAGGAGE]
|
||||
21
m68hc11/HELP/M68HC11.HPS
Normal file
@@ -0,0 +1,21 @@
|
||||
[OPTIONS]
|
||||
COMPRESS = No
|
||||
OLDKEYPHRASE = No
|
||||
CONTEXTSENS = No
|
||||
PASCALINCLUDE = No
|
||||
PASCALINCLUDENAME = noname.inc
|
||||
CINCLUDENAME = noname.h
|
||||
HC30NAME = hc30.exe
|
||||
HC31NAME = hc31.exe
|
||||
[BUILDTAGS]
|
||||
|
||||
[FILES]
|
||||
C:\WORK\M68HC11\HELP\M68HC11.TPC
|
||||
|
||||
[BITMAPS]
|
||||
|
||||
[ALIAS]
|
||||
[MAP]
|
||||
[CONFIG]
|
||||
[WINDOWS]
|
||||
[BAGGAGE]
|
||||
1244
m68hc11/HELP/M68HC11.RTF
Normal file
1952
m68hc11/HELP/M68HC11.TPC
Normal file
1567
m68hc11/M68HC11.BAK
Normal file
BIN
m68hc11/M68HC11.GID
Normal file
BIN
m68hc11/M68HC11.HLP
Normal file
6
m68hc11/M68HC11.HPP
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef _M68HC11_M68HC11_HPP_
|
||||
#define _M68HC11_M68HC11_HPP_
|
||||
#ifndef _M68HC11_M68HC11_H_
|
||||
#include <m68hc11/m68hc11.h>
|
||||
#endif
|
||||
#endif
|
||||
580
m68hc11/M68HC11.PLG
Normal file
@@ -0,0 +1,580 @@
|
||||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: bsptree - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP16E.tmp" with contents
|
||||
[
|
||||
/nologo /Gz /MTd /GX /Zi /O2 /I "\work" /I "\parts" /D "_DEBUG" /D "__FLAT__" /D "STRICT" /D "_WINDOWS" /D "WIN32" /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
|
||||
"F:\work\BSPTREE\Bsptmpl.cpp"
|
||||
"F:\work\BSPTREE\Rgbtree.cpp"
|
||||
"F:\work\BSPTREE\Stdtmpl.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP16E.tmp"
|
||||
Creating command line "link.exe -lib /nologo /out:"..\exe\msbsp.lib" .\msvcobj\Bsptmpl.obj .\msvcobj\Rgbtree.obj .\msvcobj\Stdtmpl.obj "
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
Bsptmpl.cpp
|
||||
Rgbtree.cpp
|
||||
Stdtmpl.cpp
|
||||
Generating Code...
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: common - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP16F.tmp" with contents
|
||||
[
|
||||
/nologo /Gz /MTd /GX /Zi /Od /I "\work" /I "\parts" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /D "WIN32" /Fo"msvcobj/" /Fd"msvcobj/" /FD /I /work" /I /parts" /I /work" /I /parts" " " " " /c
|
||||
"F:\work\COMMON\accelerator.cpp"
|
||||
"F:\work\COMMON\Bitmap.cpp"
|
||||
"F:\work\COMMON\Bminfo.cpp"
|
||||
"F:\work\COMMON\Bmplnk.cpp"
|
||||
"F:\work\COMMON\Brush.cpp"
|
||||
"F:\work\COMMON\Btnlnk.cpp"
|
||||
"F:\work\COMMON\calendar.cpp"
|
||||
"F:\work\COMMON\Catmull.cpp"
|
||||
"F:\work\COMMON\Cbdata.cpp"
|
||||
"F:\work\COMMON\Cbdatahk.cpp"
|
||||
"F:\work\COMMON\Clipbrd.cpp"
|
||||
"F:\work\COMMON\Console.cpp"
|
||||
"F:\work\COMMON\Control.cpp"
|
||||
"F:\work\COMMON\Crsctrl.cpp"
|
||||
"F:\work\COMMON\Ddemsg.cpp"
|
||||
"F:\work\COMMON\Dib.cpp"
|
||||
"F:\work\COMMON\Diskinfo.cpp"
|
||||
"F:\work\COMMON\Drawbmp.cpp"
|
||||
"F:\work\COMMON\Dwindow.cpp"
|
||||
"F:\work\COMMON\elastic.cpp"
|
||||
"F:\work\COMMON\errormsg.cpp"
|
||||
"F:\work\COMMON\File.cpp"
|
||||
"F:\work\COMMON\Fileio.cpp"
|
||||
"F:\work\COMMON\Filemap.cpp"
|
||||
"F:\work\COMMON\Finddata.cpp"
|
||||
"F:\work\COMMON\Font.cpp"
|
||||
"F:\work\COMMON\gdipoint.cpp"
|
||||
"F:\work\COMMON\Guiwnd.cpp"
|
||||
"F:\work\COMMON\Hookproc.cpp"
|
||||
"F:\work\COMMON\Iconfrm.cpp"
|
||||
"F:\work\COMMON\Infowin.cpp"
|
||||
"F:\work\COMMON\Intel.cpp"
|
||||
"F:\work\COMMON\Iobuff.cpp"
|
||||
"F:\work\COMMON\Logowin.cpp"
|
||||
"F:\work\COMMON\Macro.cpp"
|
||||
"F:\work\COMMON\Math.cpp"
|
||||
"F:\work\COMMON\Mdifrm.cpp"
|
||||
"F:\work\COMMON\Mdiwin.cpp"
|
||||
"F:\work\COMMON\Memfile.cpp"
|
||||
"F:\work\COMMON\Mmtimer.cpp"
|
||||
"F:\work\COMMON\Odbutton.cpp"
|
||||
"F:\work\COMMON\Odlist.cpp"
|
||||
"F:\work\COMMON\Odlstalt.cpp"
|
||||
"F:\work\COMMON\Odlstchk.cpp"
|
||||
"F:\work\COMMON\opendlg.Cpp"
|
||||
"F:\work\COMMON\Openfile.cpp"
|
||||
"F:\work\COMMON\opndlgex.cpp"
|
||||
"F:\work\COMMON\Owner.cpp"
|
||||
"F:\work\COMMON\Pathfnd.cpp"
|
||||
"F:\work\COMMON\Point.cpp"
|
||||
"F:\work\COMMON\Process.cpp"
|
||||
"F:\work\COMMON\Profile.cpp"
|
||||
"F:\work\COMMON\Progress.cpp"
|
||||
"F:\work\COMMON\Purebmp.cpp"
|
||||
"F:\work\COMMON\Purebyte.cpp"
|
||||
"F:\work\COMMON\puredbl.cpp"
|
||||
"F:\work\COMMON\Puredwrd.cpp"
|
||||
"F:\work\COMMON\Purehdc.cpp"
|
||||
"F:\work\COMMON\puremenu.Cpp"
|
||||
"F:\work\COMMON\Purepal.cpp"
|
||||
"F:\work\COMMON\purewrd.cpp"
|
||||
"F:\work\COMMON\Pview.cpp"
|
||||
"F:\work\COMMON\Regkey.cpp"
|
||||
"F:\work\COMMON\resbmp.cpp"
|
||||
"F:\work\COMMON\Richedit.cpp"
|
||||
"F:\work\COMMON\rubber.cpp"
|
||||
"F:\work\COMMON\Sdate.cpp"
|
||||
"F:\work\COMMON\Smrtstrm.cpp"
|
||||
"F:\work\COMMON\snapshot.cpp"
|
||||
"F:\work\COMMON\static.cpp"
|
||||
"F:\work\COMMON\String.cpp"
|
||||
"F:\work\COMMON\Systime.cpp"
|
||||
"F:\work\COMMON\Vhandler.cpp"
|
||||
"F:\work\COMMON\Vxdctrl.cpp"
|
||||
"F:\work\COMMON\widestr.Cpp"
|
||||
"F:\work\COMMON\Window.cpp"
|
||||
"F:\work\COMMON\Wintimer.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP16F.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP170.tmp" with contents
|
||||
[
|
||||
/nologo /Gz /MTd /GX /Zi /Od /I "\work" /I "\parts" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /D "WIN32" /Fp"msvcobj/common.pch" /YX /Fo"msvcobj/" /Fd"msvcobj/" /FD /I /work" /I /parts" /I /work" /I /parts" " " " " /c
|
||||
"F:\work\COMMON\Bmdata.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP170.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP171.tmp" with contents
|
||||
[
|
||||
/nologo /out:"..\exe\mscommon.lib"
|
||||
.\msvcobj\accelerator.obj
|
||||
.\msvcobj\Bitmap.obj
|
||||
.\msvcobj\Bmdata.obj
|
||||
.\msvcobj\Bminfo.obj
|
||||
.\msvcobj\Bmplnk.obj
|
||||
.\msvcobj\Brush.obj
|
||||
.\msvcobj\Btnlnk.obj
|
||||
.\msvcobj\calendar.obj
|
||||
.\msvcobj\Catmull.obj
|
||||
.\msvcobj\Cbdata.obj
|
||||
.\msvcobj\Cbdatahk.obj
|
||||
.\msvcobj\Clipbrd.obj
|
||||
.\msvcobj\Console.obj
|
||||
.\msvcobj\Control.obj
|
||||
.\msvcobj\Crsctrl.obj
|
||||
.\msvcobj\Ddemsg.obj
|
||||
.\msvcobj\Dib.obj
|
||||
.\msvcobj\Diskinfo.obj
|
||||
.\msvcobj\Drawbmp.obj
|
||||
.\msvcobj\Dwindow.obj
|
||||
.\msvcobj\elastic.obj
|
||||
.\msvcobj\errormsg.obj
|
||||
.\msvcobj\File.obj
|
||||
.\msvcobj\Fileio.obj
|
||||
.\msvcobj\Filemap.obj
|
||||
.\msvcobj\Finddata.obj
|
||||
.\msvcobj\Font.obj
|
||||
.\msvcobj\gdipoint.obj
|
||||
.\msvcobj\Guiwnd.obj
|
||||
.\msvcobj\Hookproc.obj
|
||||
.\msvcobj\Iconfrm.obj
|
||||
.\msvcobj\Infowin.obj
|
||||
.\msvcobj\Intel.obj
|
||||
.\msvcobj\Iobuff.obj
|
||||
.\msvcobj\Logowin.obj
|
||||
.\msvcobj\Macro.obj
|
||||
.\msvcobj\Math.obj
|
||||
.\msvcobj\Mdifrm.obj
|
||||
.\msvcobj\Mdiwin.obj
|
||||
.\msvcobj\Memfile.obj
|
||||
.\msvcobj\Mmtimer.obj
|
||||
.\msvcobj\Odbutton.obj
|
||||
.\msvcobj\Odlist.obj
|
||||
.\msvcobj\Odlstalt.obj
|
||||
.\msvcobj\Odlstchk.obj
|
||||
.\msvcobj\opendlg.obj
|
||||
.\msvcobj\Openfile.obj
|
||||
.\msvcobj\opndlgex.obj
|
||||
.\msvcobj\Owner.obj
|
||||
.\msvcobj\Pathfnd.obj
|
||||
.\msvcobj\Point.obj
|
||||
.\msvcobj\Process.obj
|
||||
.\msvcobj\Profile.obj
|
||||
.\msvcobj\Progress.obj
|
||||
.\msvcobj\Purebmp.obj
|
||||
.\msvcobj\Purebyte.obj
|
||||
.\msvcobj\puredbl.obj
|
||||
.\msvcobj\Puredwrd.obj
|
||||
.\msvcobj\Purehdc.obj
|
||||
.\msvcobj\puremenu.obj
|
||||
.\msvcobj\Purepal.obj
|
||||
.\msvcobj\purewrd.obj
|
||||
.\msvcobj\Pview.obj
|
||||
.\msvcobj\Regkey.obj
|
||||
.\msvcobj\resbmp.obj
|
||||
.\msvcobj\Richedit.obj
|
||||
.\msvcobj\rubber.obj
|
||||
.\msvcobj\Sdate.obj
|
||||
.\msvcobj\Smrtstrm.obj
|
||||
.\msvcobj\snapshot.obj
|
||||
.\msvcobj\static.obj
|
||||
.\msvcobj\String.obj
|
||||
.\msvcobj\Systime.obj
|
||||
.\msvcobj\Vhandler.obj
|
||||
.\msvcobj\Vxdctrl.obj
|
||||
.\msvcobj\widestr.obj
|
||||
.\msvcobj\Window.obj
|
||||
.\msvcobj\Wintimer.obj
|
||||
]
|
||||
Creating command line "link.exe -lib @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP171.tmp"
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
accelerator.cpp
|
||||
Bitmap.cpp
|
||||
Bminfo.cpp
|
||||
Bmplnk.cpp
|
||||
Brush.cpp
|
||||
Btnlnk.cpp
|
||||
calendar.cpp
|
||||
Catmull.cpp
|
||||
Cbdata.cpp
|
||||
Cbdatahk.cpp
|
||||
Clipbrd.cpp
|
||||
Console.cpp
|
||||
Control.cpp
|
||||
Crsctrl.cpp
|
||||
Ddemsg.cpp
|
||||
Dib.cpp
|
||||
Diskinfo.cpp
|
||||
Drawbmp.cpp
|
||||
Dwindow.cpp
|
||||
elastic.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
errormsg.cpp
|
||||
File.cpp
|
||||
Fileio.cpp
|
||||
Filemap.cpp
|
||||
Finddata.cpp
|
||||
Font.cpp
|
||||
gdipoint.cpp
|
||||
Guiwnd.cpp
|
||||
Hookproc.cpp
|
||||
Iconfrm.cpp
|
||||
Infowin.cpp
|
||||
Intel.cpp
|
||||
Iobuff.cpp
|
||||
Logowin.cpp
|
||||
Macro.cpp
|
||||
Math.cpp
|
||||
Mdifrm.cpp
|
||||
Mdiwin.cpp
|
||||
Memfile.cpp
|
||||
Mmtimer.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
Odbutton.cpp
|
||||
Odlist.cpp
|
||||
Odlstalt.cpp
|
||||
Odlstchk.cpp
|
||||
opendlg.Cpp
|
||||
Openfile.cpp
|
||||
opndlgex.cpp
|
||||
Owner.cpp
|
||||
Pathfnd.cpp
|
||||
Point.cpp
|
||||
Process.cpp
|
||||
Profile.cpp
|
||||
Progress.cpp
|
||||
Purebmp.cpp
|
||||
Purebyte.cpp
|
||||
puredbl.cpp
|
||||
Puredwrd.cpp
|
||||
Purehdc.cpp
|
||||
puremenu.Cpp
|
||||
Purepal.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
purewrd.cpp
|
||||
Pview.cpp
|
||||
Regkey.cpp
|
||||
resbmp.cpp
|
||||
Richedit.cpp
|
||||
rubber.cpp
|
||||
Sdate.cpp
|
||||
Smrtstrm.cpp
|
||||
snapshot.cpp
|
||||
static.cpp
|
||||
String.cpp
|
||||
Systime.cpp
|
||||
Vhandler.cpp
|
||||
Vxdctrl.cpp
|
||||
widestr.Cpp
|
||||
Window.cpp
|
||||
Wintimer.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
Bmdata.cpp
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: dialog - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP172.tmp" with contents
|
||||
[
|
||||
/nologo /Gz /MTd /Zi /Od /D "_DEBUG" /D "__FLAT__" /D "STRICT" /D "WIN32" /D "_WINDOWS" /Fp"..\exe\msvc42.pch" /YX"windows.h" /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
|
||||
"F:\work\DIALOG\Dlgtmpl.cpp"
|
||||
"F:\work\DIALOG\Dyndlg.cpp"
|
||||
"F:\work\DIALOG\Stdtmpl.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP172.tmp"
|
||||
Creating command line "link.exe -lib /nologo /out:"..\exe\msdialog.lib" .\msvcobj\Dlgtmpl.obj .\msvcobj\Dyndlg.obj .\msvcobj\Stdtmpl.obj "
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
Dlgtmpl.cpp
|
||||
Dyndlg.cpp
|
||||
Stdtmpl.cpp
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: fileio - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP173.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
c:\masm32\bin\ml /c /Zi /coff cfile.asm
|
||||
]
|
||||
Creating command line "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP173.bat"
|
||||
Creating command line "link.exe -lib /nologo /out:"..\exe\msfileio.lib" .\cfile.obj "
|
||||
Performing Custom Build Step on .\cfile.asm
|
||||
Microsoft (R) Macro Assembler Version 6.14.8444
|
||||
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.
|
||||
|
||||
Assembling: cfile.asm
|
||||
<h3>Output Window</h3>
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: libasm68 - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP174.tmp" with contents
|
||||
[
|
||||
/nologo /MTd /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /Fp".\msvcobj/libasm68.pch" /YX /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
|
||||
"F:\work\AS68HC11\asm6811.cpp"
|
||||
"F:\work\AS68HC11\Cacheblk.cpp"
|
||||
"F:\work\AS68HC11\Fmtlines.cpp"
|
||||
"F:\work\AS68HC11\instrctn.cpp"
|
||||
"F:\work\AS68HC11\Main.cpp"
|
||||
"F:\work\AS68HC11\mode.cpp"
|
||||
"F:\work\AS68HC11\Parse.cpp"
|
||||
"F:\work\AS68HC11\S19Generator.cpp"
|
||||
"F:\work\AS68HC11\Scan.cpp"
|
||||
"F:\work\AS68HC11\symbol.cpp"
|
||||
"F:\work\AS68HC11\Table.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP174.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP175.tmp" with contents
|
||||
[
|
||||
/nologo /out:"..\exe\asm6811.lib"
|
||||
.\msvcobj\asm6811.obj
|
||||
.\msvcobj\Cacheblk.obj
|
||||
.\msvcobj\Fmtlines.obj
|
||||
.\msvcobj\instrctn.obj
|
||||
.\msvcobj\Main.obj
|
||||
.\msvcobj\mode.obj
|
||||
.\msvcobj\Parse.obj
|
||||
.\msvcobj\S19Generator.obj
|
||||
.\msvcobj\Scan.obj
|
||||
.\msvcobj\symbol.obj
|
||||
.\msvcobj\Table.obj
|
||||
]
|
||||
Creating command line "link.exe -lib @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP175.tmp"
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
asm6811.cpp
|
||||
Cacheblk.cpp
|
||||
Fmtlines.cpp
|
||||
instrctn.cpp
|
||||
Main.cpp
|
||||
mode.cpp
|
||||
Parse.cpp
|
||||
S19Generator.cpp
|
||||
Scan.cpp
|
||||
symbol.cpp
|
||||
Table.cpp
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: printman - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP176.tmp" with contents
|
||||
[
|
||||
/nologo /Gz /MTd /GX /Z7 /Od /D "_DEBUG" /D "STRICT" /D "__FLAT__" /D "WIN32" /D "_WINDOWS" /Fp"msvcobj/Printman.pch" /YX /Fo"msvcobj/" /Fd"msvcobj/" /FD /c
|
||||
"F:\work\printman\Abortdlg.cpp"
|
||||
"F:\work\printman\pickdlg.cpp"
|
||||
"F:\work\printman\Printman.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP176.tmp"
|
||||
Creating command line "link.exe -lib /nologo /out:"..\exe\printman.lib" .\msvcobj\Abortdlg.obj .\msvcobj\pickdlg.obj .\msvcobj\Printman.obj "
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
Abortdlg.cpp
|
||||
pickdlg.cpp
|
||||
Printman.cpp
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: statbar - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP177.tmp" with contents
|
||||
[
|
||||
/nologo /Gz /MTd /Zi /Od /D "_DEBUG" /D "__FLAT__" /D "STRICT" /D "WIN32" /D "_WINDOWS" /Fp"\work\exe\msvc42.pch" /YX /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
|
||||
"F:\work\STATBAR\Popup.cpp"
|
||||
"F:\work\STATBAR\Statbar.cpp"
|
||||
"F:\work\STATBAR\statbarx.cpp"
|
||||
"F:\work\STATBAR\Statinfo.cpp"
|
||||
"F:\work\STATBAR\statlogo.cpp"
|
||||
"F:\work\STATBAR\Statmenu.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP177.tmp"
|
||||
Creating command line "link.exe -lib /nologo /out:"..\exe\statbar.lib" .\msvcobj\Popup.obj .\msvcobj\Statbar.obj .\msvcobj\statbarx.obj .\msvcobj\Statinfo.obj .\msvcobj\statlogo.obj .\msvcobj\Statmenu.obj "
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
Popup.cpp
|
||||
Statbar.cpp
|
||||
statbarx.cpp
|
||||
Statinfo.cpp
|
||||
statlogo.cpp
|
||||
Statmenu.cpp
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: thread - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP178.tmp" with contents
|
||||
[
|
||||
/nologo /Gz /MTd /Zi /Od /I "\work" /I "\parts" /D "_DEBUG" /D "__FLAT__" /D "STRICT" /D "WIN32" /D "_WINDOWS" /Fp"..\exe\msvc42.pch" /YX"windows.h" /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
|
||||
"F:\work\THREAD\Event.cpp"
|
||||
"F:\work\THREAD\Msgqueue.cpp"
|
||||
"F:\work\THREAD\Mthread.cpp"
|
||||
"F:\work\THREAD\Mutex.cpp"
|
||||
"F:\work\THREAD\Ptcllbck.cpp"
|
||||
"F:\work\THREAD\Qthread.cpp"
|
||||
"F:\work\THREAD\Stdtmpl.cpp"
|
||||
"F:\work\THREAD\Thread.cpp"
|
||||
"F:\work\THREAD\thtimer.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP178.tmp"
|
||||
Creating command line "link.exe -lib /nologo /out:"..\exe\msthread.lib" .\msvcobj\Event.obj .\msvcobj\Msgqueue.obj .\msvcobj\Mthread.obj .\msvcobj\Mutex.obj .\msvcobj\Ptcllbck.obj .\msvcobj\Qthread.obj .\msvcobj\Stdtmpl.obj .\msvcobj\Thread.obj .\msvcobj\thtimer.obj "
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
Event.cpp
|
||||
Msgqueue.cpp
|
||||
Mthread.cpp
|
||||
Mutex.cpp
|
||||
Ptcllbck.cpp
|
||||
Qthread.cpp
|
||||
Stdtmpl.cpp
|
||||
Thread.cpp
|
||||
thtimer.cpp
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: toolbar - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP179.tmp" with contents
|
||||
[
|
||||
/nologo /Gz /MTd /GX /Z7 /Od /I "\work" /I "\parts" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /Fp".\msvcobj/Toolbar.pch" /YX /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
|
||||
"F:\work\TOOLBAR\toolbar.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP179.tmp"
|
||||
Creating command line "link.exe -lib /nologo /out:"..\exe\toolbar.lib" .\msvcobj\toolbar.obj "
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
toolbar.cpp
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: hookproc - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP17A.tmp" with contents
|
||||
[
|
||||
/nologo /Gz /MTd /GX /ZI /Od /I "\cortex" /I "\parts" /D "_DEBUG" /D "STRICT" /D "__FLAT__" /D "WIN32" /D "_WINDOWS" /Fp"msvcobj/hookproc.pch" /YX /Fo"msvcobj/" /Fd"msvcobj/" /FD /c
|
||||
"F:\work\hookproc\Apientry.cpp"
|
||||
"F:\work\hookproc\enumdesk.cpp"
|
||||
"F:\work\hookproc\enumstation.cpp"
|
||||
"F:\work\hookproc\enumwin.cpp"
|
||||
"F:\work\hookproc\Msghook.cpp"
|
||||
"F:\work\hookproc\ofnhook.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP17A.tmp"
|
||||
Creating command line "link.exe -lib /nologo /out:"..\exe\mshook.lib" .\msvcobj\Apientry.obj .\msvcobj\enumdesk.obj .\msvcobj\enumstation.obj .\msvcobj\enumwin.obj .\msvcobj\Msghook.obj .\msvcobj\ofnhook.obj "
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
Apientry.cpp
|
||||
enumdesk.cpp
|
||||
enumstation.cpp
|
||||
enumwin.cpp
|
||||
Msghook.cpp
|
||||
ofnhook.cpp
|
||||
Creating library...
|
||||
<h3>
|
||||
--------------------Configuration: m68hc11 - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating command line "rc.exe /l 0x409 /fo".\msvcobj/m68hc11.res" /d "_DEBUG" "F:\work\m68hc11\m68hc11.rc""
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP17B.tmp" with contents
|
||||
[
|
||||
/nologo /MTd /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /Fp".\msvcobj/m68hc11.pch" /YX /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
|
||||
"F:\work\m68hc11\CMPDlg.cpp"
|
||||
"F:\work\m68hc11\codeview.cpp"
|
||||
"F:\work\m68hc11\commctrl.cpp"
|
||||
"F:\work\m68hc11\dcb.cpp"
|
||||
"F:\work\m68hc11\Editfnd.cpp"
|
||||
"F:\work\m68hc11\Find.cpp"
|
||||
"F:\work\m68hc11\fmtlines.cpp"
|
||||
"F:\work\m68hc11\m68reg.cpp"
|
||||
"F:\work\m68hc11\Main.cpp"
|
||||
"F:\work\m68hc11\mainfrm.cpp"
|
||||
"F:\work\m68hc11\mcudlg.cpp"
|
||||
"F:\work\m68hc11\mcuthrd.cpp"
|
||||
"F:\work\m68hc11\mcuview.cpp"
|
||||
"F:\work\m68hc11\Odlstled.cpp"
|
||||
"F:\work\m68hc11\OPENDIR.CPP"
|
||||
"F:\work\m68hc11\Serdlg.cpp"
|
||||
"F:\work\m68hc11\Splash.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP17B.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP17C.tmp" with contents
|
||||
[
|
||||
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib comctl32.lib /nologo /subsystem:windows /incremental:yes /pdb:".\msvcobj/m68hc11.pdb" /debug /machine:I386 /out:".\msvcobj/m68hc11.exe"
|
||||
.\msvcobj\CMPDlg.obj
|
||||
.\msvcobj\codeview.obj
|
||||
.\msvcobj\commctrl.obj
|
||||
.\msvcobj\dcb.obj
|
||||
.\msvcobj\Editfnd.obj
|
||||
.\msvcobj\Find.obj
|
||||
.\msvcobj\fmtlines.obj
|
||||
.\msvcobj\m68reg.obj
|
||||
.\msvcobj\Main.obj
|
||||
.\msvcobj\mainfrm.obj
|
||||
.\msvcobj\mcudlg.obj
|
||||
.\msvcobj\mcuthrd.obj
|
||||
.\msvcobj\mcuview.obj
|
||||
.\msvcobj\Odlstled.obj
|
||||
.\msvcobj\OPENDIR.OBJ
|
||||
.\msvcobj\Serdlg.obj
|
||||
.\msvcobj\Splash.obj
|
||||
.\msvcobj\m68hc11.res
|
||||
\work\exe\msbsp.lib
|
||||
\work\exe\mscommon.lib
|
||||
\work\exe\msdialog.lib
|
||||
\work\exe\msfileio.lib
|
||||
\work\exe\asm6811.lib
|
||||
\work\exe\printman.lib
|
||||
\work\exe\statbar.lib
|
||||
\work\exe\msthread.lib
|
||||
\work\exe\toolbar.lib
|
||||
\work\exe\mshook.lib
|
||||
]
|
||||
Creating command line "link.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP17C.tmp"
|
||||
<h3>Output Window</h3>
|
||||
Compiling resources...
|
||||
Compiling...
|
||||
CMPDlg.cpp
|
||||
codeview.cpp
|
||||
commctrl.cpp
|
||||
dcb.cpp
|
||||
Editfnd.cpp
|
||||
Find.cpp
|
||||
fmtlines.cpp
|
||||
m68reg.cpp
|
||||
Main.cpp
|
||||
mainfrm.cpp
|
||||
mcudlg.cpp
|
||||
mcuthrd.cpp
|
||||
mcuview.cpp
|
||||
Odlstled.cpp
|
||||
OPENDIR.CPP
|
||||
Serdlg.cpp
|
||||
Splash.cpp
|
||||
Linking...
|
||||
Creating library .\msvcobj/m68hc11.lib and object .\msvcobj/m68hc11.exp
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
m68hc11.exe - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
BIN
m68hc11/M68HC11.RWS
Normal file
149
m68hc11/M68HC11.~H
Normal file
@@ -0,0 +1,149 @@
|
||||
#ifndef _M68HC11_M68HC11_H_
|
||||
#define _M68HC11_M68HC11_H_
|
||||
|
||||
#define MCUDLG_REGISTERS 101
|
||||
#define MCUDLG_CCR 102
|
||||
#define MCUDLG_PC 103
|
||||
#define MCUDLG_SP 104
|
||||
#define MCUDLG_Y 105
|
||||
#define MCUDLG_X 106
|
||||
#define MCUDLG_A 107
|
||||
#define IDC_LISTBOX1 109
|
||||
#define MCUDLG_B 108
|
||||
|
||||
#define SERIAL_STOP 104
|
||||
#define SERIAL_PARITY 105
|
||||
#define SERIAL_APPLY 106
|
||||
#define SERIAL_TEST 107
|
||||
#define SERIAL_DATA 103
|
||||
#define SERIAL_BAUD 102
|
||||
#define SERIAL_PORT 101
|
||||
|
||||
#define SBCMENU_FILENEW 500
|
||||
#define SBCMENU_FILEOPEN 501
|
||||
#define SBCMENU_FILESAVE 502
|
||||
#define SBCMENU_FILESAVEAS 503
|
||||
#define SBCMENU_FILEPRINT 504
|
||||
#define SBCMENU_FILEQUIT 505
|
||||
#define SBCMENU_FILECLOSE 506
|
||||
#define SBCMENU_EDITCUT 507
|
||||
#define SBCMENU_EDITCOPY 508
|
||||
#define SBCMENU_EDITPASTE 509
|
||||
#define SBCMENU_EDITFIND 510
|
||||
#define SBCMENU_SETTINGSSERIAL 511
|
||||
#define SBCMENU_CODECOMPILE 512
|
||||
#define SBCMENU_CODECOMPILEANDLOAD 513
|
||||
#define SBCMENU_HELPCONTENTS 514
|
||||
#define SBCMENU_HELPSEARCH 515
|
||||
#define SBCMENU_REGISTRATION 516
|
||||
#define SBCMENU_HELPABOUT 517
|
||||
|
||||
#define IDM_CASCADE 10013
|
||||
#define IDM_TILE 10014
|
||||
#define IDM_ARRANGE 10015
|
||||
#define IDM_CLOSEALL 10016
|
||||
#define IDM_MINIMIZEALL 10017
|
||||
#define IDM_RESTOREALL 10018
|
||||
|
||||
#define STRING_M68KEYNAME 600
|
||||
#define STRING_HISTORYKEYNAME 601
|
||||
#define STRING_SETTINGSKEYNAME 602
|
||||
#define STRING_SERIALKEYNAME 603
|
||||
#define STRING_HISTORYKEYSHORTNAME 604
|
||||
#define STRING_SETTINGSEMAIL 605
|
||||
#define STRING_SERIALPORT 606
|
||||
#define STRING_SERIALBAUD 607
|
||||
#define STRING_SERIALDATA 608
|
||||
#define STRING_SERIALPARITY 609
|
||||
#define STRING_SERIALSTOP 610
|
||||
#define STRING_COM1 611
|
||||
#define STRING_COM2 612
|
||||
#define STRING_COM3 613
|
||||
#define STRING_COM4 614
|
||||
|
||||
#define STRING_CODEVIEWCLASSNAME 500
|
||||
#define STRING_MCUVIEWCLASSNAME 501
|
||||
#define STRING_UNTITLED 502
|
||||
#define STRING_HELPFILENAME 503
|
||||
|
||||
#define STRING_REGISTERPORTA 700
|
||||
#define STRING_REGISTERRESERVED1 701
|
||||
#define STRING_REGISTERPIOC 702
|
||||
#define STRING_REGISTERPORTC 703
|
||||
#define STRING_REGISTERPORTB 704
|
||||
#define STRING_REGISTERPORTCL 705
|
||||
#define STRING_REGISTERRESERVED2 706
|
||||
#define STRING_REGISTERDDRC 707
|
||||
#define STRING_REGISTERPORTD 708
|
||||
#define STRING_REGISTERDDRD 709
|
||||
#define STRING_REGISTERPORTE 710
|
||||
#define STRING_REGISTERCFORC 711
|
||||
#define STRING_REGISTEROC1M 712
|
||||
#define STRING_REGISTEROC1D 713
|
||||
#define STRING_REGISTERTCNTH1 714
|
||||
#define STRING_REGISTERTCNTLO 715
|
||||
#define STRING_REGISTERTIC1HI 716
|
||||
#define STRING_REGISTERTIC1LO 717
|
||||
#define STRING_REGISTERTIC2HI 718
|
||||
#define STRING_REGISTERTIC2LO 719
|
||||
#define STRING_REGISTERTIC3HI 720
|
||||
#define STRING_REGISTERTIC3LO 721
|
||||
#define STRING_REGISTERTOC1HI 722
|
||||
#define STRING_REGISTERTOC1LO 723
|
||||
#define STRING_REGISTERTOC2HI 724
|
||||
#define STRING_REGISTERTOC2LO 725
|
||||
#define STRING_REGISTERTOC3HI 726
|
||||
#define STRING_REGISTERTOC3LO 727
|
||||
#define STRING_REGISTERTOC4HI 728
|
||||
#define STRING_REGISTERTOC4LO 729
|
||||
#define STRING_REGISTERTI405HI 730
|
||||
#define STRING_REGISTERTI405LO 731
|
||||
#define STRING_REGISTERTCTL1 732
|
||||
#define STRING_REGISTERTCTL2 733
|
||||
#define STRING_REGISTERTMSK1 734
|
||||
#define STRING_REGISTERTFLG1 735
|
||||
#define STRING_REGISTERTMSK2 736
|
||||
#define STRING_REGISTERTFLG2 737
|
||||
#define STRING_REGISTERPACTL 738
|
||||
#define STRING_REGISTERPACNT 739
|
||||
#define STRING_REGISTERSPCR 740
|
||||
#define STRING_REGISTERSPSR 741
|
||||
#define STRING_REGISTERSPDR 742
|
||||
#define STRING_REGISTERBAUD 743
|
||||
#define STRING_REGISTERSCCR1 744
|
||||
#define STRING_REGISTERSCCR2 745
|
||||
#define STRING_REGISTERSCSR 746
|
||||
#define STRING_REGISTERSCDR 747
|
||||
#define STRING_REGISTERADCTL 748
|
||||
#define STRING_REGISTERADR1 749
|
||||
#define STRING_REGISTERADR2 750
|
||||
#define STRING_REGISTERADR3 751
|
||||
#define STRING_REGISTERADR4 752
|
||||
#define STRING_REGISTERBPROT 753
|
||||
#define STRING_REGISTEREPROG 754
|
||||
#define STRING_REGISTERRESERVED3 755
|
||||
#define STRING_REGISTERRESERVED4 756
|
||||
#define STRING_REGISTEROPTION 757
|
||||
#define STRING_REGISTERCOPRST 758
|
||||
#define STRING_REGISTERPPROG 759
|
||||
#define STRING_REGISTERHPRIO 760
|
||||
#define STRING_REGISTERINIT 761
|
||||
#define STRING_REGISTERTEST1 762
|
||||
#define STRING_REGISTERCONFIG 763
|
||||
|
||||
#define STRING_ERRORFILEOPEN 764
|
||||
#define STRING_ERRORPORTOPEN 765
|
||||
#define STRING_ERRORPORTSETTINGS 766
|
||||
#define STRING_ERRORTIMEOUT 767
|
||||
#define STRING_ERRORREADERROR 768
|
||||
#define STRING_ERRORTALKBACKFAILURE 769
|
||||
#define STRING_ERRORTALKBACKDATA 770
|
||||
|
||||
#define STRING_EVENTSINGLEBYTE 771
|
||||
#define STRING_EVENTQUADBYTE 772
|
||||
#define STRING_EVENTVARBYTE 773
|
||||
#define STRING_EVENTREGDATASTART 774
|
||||
#define STRING_EVENTREGDATACOMPLETE 775
|
||||
#define STRING_EVENTCODECOMPLETE 776
|
||||
#define STRING_EVENTDOUBLEBYTE 777
|
||||
#endif
|
||||
295
m68hc11/M68HC11.~RC
Normal file
@@ -0,0 +1,295 @@
|
||||
#include <windows.h>
|
||||
#include <m68hc11/m68hc11.h>
|
||||
|
||||
APP ICON "MOT.ICO"
|
||||
MOT ICON "MOT.ICO"
|
||||
DOC ICON "DOC.ICO"
|
||||
BLANK BITMAP "BLANK.BMP"
|
||||
ONE BITMAP "ONE.BMP"
|
||||
ZERO BITMAP "ZERO.BMP"
|
||||
DASH BITMAP "DASH.BMP"
|
||||
SPLASH BITMAP "SPLASH.BMP"
|
||||
|
||||
mainMenu MENU
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&New\tCtrl+N", SBCMENU_FILENEW
|
||||
MENUITEM "&Open...\tCtrl+O", SBCMENU_FILEOPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Print\tCtrl+P", SBCMENU_FILEPRINT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", SBCMENU_FILEQUIT
|
||||
END
|
||||
POPUP "&Settings"
|
||||
BEGIN
|
||||
MENUITEM "Se&rial...", SBCMENU_SETTINGSSERIAL
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Contents", SBCMENU_HELPCONTENTS
|
||||
MENUITEM "&Search", SBCMENU_HELPSEARCH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Registration...", SBCMENU_REGISTRATION
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&About ...", SBCMENU_HELPABOUT
|
||||
END
|
||||
END
|
||||
|
||||
codeMenu MENU
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&New\tCtrl+N", SBCMENU_FILENEW
|
||||
MENUITEM "&Open...\tCtrl+O", SBCMENU_FILEOPEN
|
||||
MENUITEM "&Close", SBCMENU_FILECLOSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Save...\tCtrl+S", SBCMENU_FILESAVE
|
||||
MENUITEM "Save &As...", SBCMENU_FILESAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Print\tCtrl+P", SBCMENU_FILEPRINT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", SBCMENU_FILEQUIT
|
||||
END
|
||||
POPUP "&Edit"
|
||||
BEGIN
|
||||
MENUITEM "Cu&t\tCtrl+X" SBCMENU_EDITCUT
|
||||
MENUITEM "&Copy\tCtrl+C" SBCMENU_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V" SBCMENU_EDITPASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Find...\tAlt+F3" SBCMENU_EDITFIND
|
||||
END
|
||||
POPUP "&Settings"
|
||||
BEGIN
|
||||
MENUITEM "Se&rial...", SBCMENU_SETTINGSSERIAL
|
||||
END
|
||||
POPUP "&Code"
|
||||
BEGIN
|
||||
MENUITEM "&Compile\tCtrl+C", SBCMENU_CODECOMPILE
|
||||
MENUITEM "Compile and Load\tCtrl+P", SBCMENU_CODECOMPILEANDLOAD
|
||||
END
|
||||
POPUP "&Window"
|
||||
BEGIN
|
||||
MENUITEM "&Cascade\tShift+F5", IDM_CASCADE
|
||||
MENUITEM "&Tile\tShift+F4", IDM_TILE
|
||||
MENUITEM "&Arrange &icons", IDM_ARRANGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Close &all", IDM_CLOSEALL
|
||||
MENUITEM "Mi&nimize all", IDM_MINIMIZEALL
|
||||
MENUITEM "&Restore all", IDM_RESTOREALL
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Contents", SBCMENU_HELPCONTENTS
|
||||
MENUITEM "&Search", SBCMENU_HELPSEARCH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Registration...", SBCMENU_REGISTRATION
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&About ...", SBCMENU_HELPABOUT
|
||||
END
|
||||
END
|
||||
|
||||
mcuMenu MENU
|
||||
{
|
||||
POPUP "&File"
|
||||
{
|
||||
MENUITEM "&New\tCtrl+N", SBCMENU_FILENEW, GRAYED
|
||||
MENUITEM "&Open...\tCtrl+O", SBCMENU_FILEOPEN, GRAYED
|
||||
MENUITEM "&Close", SBCMENU_FILECLOSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Save...\tCtrl+S", SBCMENU_FILESAVE, GRAYED
|
||||
MENUITEM "Save &As...", SBCMENU_FILESAVEAS, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Print\tCtrl+P", SBCMENU_FILEPRINT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", SBCMENU_FILEQUIT
|
||||
}
|
||||
|
||||
POPUP "&Edit"
|
||||
{
|
||||
MENUITEM "Cu&t\tCtrl+X", SBCMENU_EDITCUT
|
||||
MENUITEM "&Copy\tCtrl+C", SBCMENU_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", SBCMENU_EDITPASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Find...\tAlt+F3", SBCMENU_EDITFIND
|
||||
}
|
||||
|
||||
POPUP "&Window"
|
||||
{
|
||||
MENUITEM "&Cascade\tShift+F5", IDM_CASCADE
|
||||
MENUITEM "&Tile\tShift+F4", IDM_TILE
|
||||
MENUITEM "&Arrange &icons", IDM_ARRANGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Close &all", IDM_CLOSEALL
|
||||
MENUITEM "Mi&nimize all", IDM_MINIMIZEALL
|
||||
MENUITEM "&Restore all", IDM_RESTOREALL
|
||||
}
|
||||
|
||||
POPUP "&Help"
|
||||
{
|
||||
MENUITEM "&Contents", SBCMENU_HELPCONTENTS
|
||||
MENUITEM "&Search", SBCMENU_HELPSEARCH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Registration...", SBCMENU_REGISTRATION
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&About ...", SBCMENU_HELPABOUT
|
||||
}
|
||||
}
|
||||
|
||||
SERIAL DIALOG 6, 15, 207, 111
|
||||
STYLE DS_MODALFRAME | 0x4L | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Serial Setup"
|
||||
FONT 6, "MS Sans Serif"
|
||||
{
|
||||
DEFPUSHBUTTON "OK", IDOK, 153, 3, 50, 14
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 153, 18, 50, 14
|
||||
PUSHBUTTON "Test", SERIAL_TEST, 153, 32, 50, 14
|
||||
PUSHBUTTON "Apply", SERIAL_APPLY, 153, 46, 50, 14
|
||||
COMBOBOX SERIAL_BAUD, 30, 24, 49, 50, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX SERIAL_DATA, 30, 37, 49, 50, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX SERIAL_PARITY, 30, 63, 49, 50, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX SERIAL_PORT, 30, 11, 49, 50, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Port:", -1, 3, 14, 18, 8
|
||||
LTEXT "Baud:", -1, 3, 27, 21, 8
|
||||
LTEXT "Data:", -1, 3, 40, 20, 8
|
||||
LTEXT "Stop:", -1, 4, 53, 19, 8
|
||||
LTEXT "Parity:", -1, 3, 65, 19, 8
|
||||
COMBOBOX SERIAL_STOP, 30, 50, 49, 50, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
}
|
||||
|
||||
MCUDLG DIALOG 6, 5, 358, 174
|
||||
STYLE DS_MODALFRAME | 0x4L | WS_CHILD | WS_VISIBLE
|
||||
FONT 6, "MS Sans Serif"
|
||||
{
|
||||
DEFPUSHBUTTON "Start", IDOK, 254, 5, 50, 14
|
||||
PUSHBUTTON "Quit", IDCANCEL, 304, 5, 50, 14
|
||||
LISTBOX MCUDLG_REGISTERS, 15, 38, 144, 129, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS
|
||||
EDITTEXT MCUDLG_A, 217, 37, 38, 12
|
||||
EDITTEXT MCUDLG_B, 256, 37, 38, 12
|
||||
EDITTEXT MCUDLG_X, 217, 50, 38, 12
|
||||
EDITTEXT MCUDLG_Y, 256, 50, 38, 12
|
||||
EDITTEXT MCUDLG_SP, 217, 63, 38, 12
|
||||
EDITTEXT MCUDLG_PC, 256, 63, 38, 12
|
||||
EDITTEXT MCUDLG_CCR, 217, 76, 38, 12
|
||||
LISTBOX IDC_LISTBOX1, 168, 107, 177, 60, LBS_STANDARD
|
||||
CTEXT "MCU Registers", -1, 44, 26, 60, 8
|
||||
CTEXT "Processor", -1, 203, 26, 49, 8
|
||||
LTEXT "Accumulator A", -1, 165, 40, 51, 8
|
||||
LTEXT "Accumulator B", -1, 297, 39, 49, 8
|
||||
LTEXT "Index Register X", -1, 163, 52, 56, 8
|
||||
LTEXT "Index Register Y", -1, 296, 51, 55, 8
|
||||
LTEXT "SP", -1, 201, 65, 13, 8
|
||||
LTEXT "PC", -1, 297, 64, 10, 8
|
||||
LTEXT "CCR", -1, 198, 78, 16, 8
|
||||
GROUPBOX "", -1, 2, 19, 349, 154, BS_GROUPBOX
|
||||
LTEXT "Debug Messages", -1, 225, 95, 60, 8
|
||||
}
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
STRING_M68KEYNAME, "Software\\Diversified\\M68HC11"
|
||||
STRING_HISTORYKEYNAME, "Software\\Diversified\\M68HC11\\History"
|
||||
STRING_SETTINGSKEYNAME, "Software\\Diversified\\M68HC11\\Settings"
|
||||
STRING_SERIALKEYNAME, "Software\\Diversified\\M68HC11\\Serial"
|
||||
STRING_HISTORYKEYSHORTNAME, "History"
|
||||
STRING_SETTINGSEMAIL, "EMAIL"
|
||||
STRING_SERIALPORT, "Port"
|
||||
STRING_SERIALBAUD, "Baud"
|
||||
STRING_SERIALDATA, "Data"
|
||||
STRING_SERIALPARITY, "Parity"
|
||||
STRING_SERIALSTOP, "Stop"
|
||||
STRING_COM1, "COM1"
|
||||
STRING_COM2, "COM2"
|
||||
STRING_COM3, "COM3"
|
||||
STRING_COM4, "COM4"
|
||||
}
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
STRING_CODEVIEWCLASSNAME, "CodeView"
|
||||
STRING_MCUVIEWCLASSNAME, "MCUView"
|
||||
STRING_UNTITLED, "Untitled"
|
||||
STRING_HELPFILENAME, "m68hc11.hlp"
|
||||
STRING_ERRORFILEOPEN, "Error opening '"
|
||||
STRING_ERRORPORTOPEN, "Error opening communications port."
|
||||
STRING_ERRORPORTSETTINGS, "Error initializing port settings."
|
||||
STRING_ERRORTIMEOUT, "Timeout waiting for device."
|
||||
STRING_ERRORREADERROR, "Error reading from device."
|
||||
STRING_ERRORTALKBACKFAILURE, "Error receiving response from device"
|
||||
STRING_ERRORTALKBACKDATA, "Error validating code load"
|
||||
STRING_EVENTSINGLEBYTE, "Received single-byte event."
|
||||
STRING_EVENTQUADBYTE, "Received quad-byte event."
|
||||
STRING_EVENTDOUBLEBYTE, "Received double-byte event."
|
||||
STRING_EVENTVARBYTE, "Received variable-byte event."
|
||||
STRING_EVENTREGDATASTART, "Receiving register data..."
|
||||
STRING_EVENTREGDATACOMPLETE, "Register receive complete."
|
||||
STRING_EVENTCODECOMPLETE, "Received code completion event."
|
||||
}
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
STRING_REGISTERPORTA, "PORTA"
|
||||
STRING_REGISTERRESERVED1, "RESERVED"
|
||||
STRING_REGISTERPIOC, "PIOC"
|
||||
STRING_REGISTERPORTC, "PORTC"
|
||||
STRING_REGISTERPORTB, "PORTB"
|
||||
STRING_REGISTERPORTCL, "PORTCL"
|
||||
STRING_REGISTERRESERVED2, "RESERVED"
|
||||
STRING_REGISTERDDRC, "DDRC"
|
||||
STRING_REGISTERPORTD, "PORTD"
|
||||
STRING_REGISTERDDRD, "DDRD"
|
||||
STRING_REGISTERPORTE, "PORTE"
|
||||
STRING_REGISTERCFORC, "CFORC"
|
||||
STRING_REGISTEROC1M, "OC1M"
|
||||
STRING_REGISTEROC1D, "OC1D"
|
||||
STRING_REGISTERTCNTH1, "TCNT(Hi)"
|
||||
STRING_REGISTERTCNTLO, "TCNT(Lo)"
|
||||
STRING_REGISTERTIC1HI, "TIC1(Hi)"
|
||||
STRING_REGISTERTIC1LO, "TIC1(Lo)"
|
||||
STRING_REGISTERTIC2HI, "TIC2(Hi)"
|
||||
STRING_REGISTERTIC2LO, "TIC2(Lo)"
|
||||
STRING_REGISTERTIC3HI, "TIC3(Hi)"
|
||||
STRING_REGISTERTIC3LO, "TIC3(Lo)"
|
||||
STRING_REGISTERTOC1HI, "TOC1(Hi)"
|
||||
STRING_REGISTERTOC1LO, "TOC1(Lo)"
|
||||
STRING_REGISTERTOC2HI, "TOC2(Hi)"
|
||||
STRING_REGISTERTOC2LO, "TOC2(Lo)"
|
||||
STRING_REGISTERTOC3HI, "TOC3(Hi)"
|
||||
STRING_REGISTERTOC3LO, "TOC3(Lo)"
|
||||
STRING_REGISTERTOC4HI, "TOC4(Hi)"
|
||||
STRING_REGISTERTOC4LO, "TOC4(Lo)"
|
||||
STRING_REGISTERTI405HI, "TI405(Hi)"
|
||||
STRING_REGISTERTI405LO, "TI4O5(Lo)"
|
||||
STRING_REGISTERTCTL1, "TCTL1"
|
||||
STRING_REGISTERTCTL2, "TCTL2"
|
||||
STRING_REGISTERTMSK1, "TMSK1"
|
||||
STRING_REGISTERTFLG1, "TFLG1"
|
||||
STRING_REGISTERTMSK2, "TMSK2"
|
||||
STRING_REGISTERTFLG2, "TFLG2"
|
||||
STRING_REGISTERPACTL, "PACTL"
|
||||
STRING_REGISTERPACNT, "PACNT"
|
||||
STRING_REGISTERSPCR, "SPCR"
|
||||
STRING_REGISTERSPSR, "SPSR"
|
||||
STRING_REGISTERSPDR, "SPDR"
|
||||
STRING_REGISTERBAUD, "BAUD"
|
||||
STRING_REGISTERSCCR1, "SCCR1"
|
||||
STRING_REGISTERSCCR2, "SCCR2"
|
||||
STRING_REGISTERSCSR, "SCSR"
|
||||
STRING_REGISTERSCDR, "SCDR"
|
||||
STRING_REGISTERADCTL, "ADCTL"
|
||||
STRING_REGISTERADR1, "ADR1"
|
||||
STRING_REGISTERADR2, "ADR2"
|
||||
STRING_REGISTERADR3, "ADR3"
|
||||
STRING_REGISTERADR4, "ADR4"
|
||||
STRING_REGISTERBPROT, "BPROT"
|
||||
STRING_REGISTEREPROG, "EPROG"
|
||||
STRING_REGISTERRESERVED3, "RESERVED"
|
||||
STRING_REGISTERRESERVED4, "RESERVED"
|
||||
STRING_REGISTEROPTION, "OPTION"
|
||||
STRING_REGISTERCOPRST, "COPRST"
|
||||
STRING_REGISTERPPROG, "PPROG"
|
||||
STRING_REGISTERHPRIO, "HPRIO"
|
||||
STRING_REGISTERINIT, "INIT"
|
||||
STRING_REGISTERTEST1, "TEST1"
|
||||
STRING_REGISTERCONFIG, "CONFIG"
|
||||
}
|
||||
261
m68hc11/M68REG.CPP
Normal file
@@ -0,0 +1,261 @@
|
||||
#include <m68hc11/m68reg.hpp>
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
|
||||
M68Reg::M68Reg(void)
|
||||
: mM68KeyName(STRING_M68KEYNAME),
|
||||
mHistoryKeyName(STRING_HISTORYKEYNAME),
|
||||
mSettingsKeyName(STRING_SETTINGSKEYNAME),
|
||||
mSerialKeyName(STRING_SERIALKEYNAME),
|
||||
mHistoryKeyShortName(STRING_HISTORYKEYSHORTNAME),
|
||||
mSettingsEMAIL(STRING_SETTINGSEMAIL),
|
||||
mSerialPort(STRING_SERIALPORT),
|
||||
mSerialBaud(STRING_SERIALBAUD),
|
||||
mSerialData(STRING_SERIALDATA),
|
||||
mSerialParity(STRING_SERIALPARITY),
|
||||
mSerialStop(STRING_SERIALSTOP),
|
||||
mRegKeySettings(RegKey::CurrentUser),
|
||||
mRegKeyHistory(RegKey::CurrentUser),
|
||||
mRegKeySerial(RegKey::CurrentUser),
|
||||
mPathDirKeyName(STRING_PATHDIRKEYNAME),
|
||||
mPathDirKeyShortName(STRING_PATHDIRKEYSHORTNAME),
|
||||
mRegKeyPathDir(RegKey::CurrentUser)
|
||||
{
|
||||
guarantee();
|
||||
getCacheNames();
|
||||
}
|
||||
|
||||
M68Reg::M68Reg(const M68Reg &someM68Reg)
|
||||
: mM68KeyName(STRING_M68KEYNAME),
|
||||
mHistoryKeyName(STRING_HISTORYKEYNAME),
|
||||
mSettingsKeyName(STRING_SETTINGSKEYNAME),
|
||||
mSerialKeyName(STRING_SERIALKEYNAME),
|
||||
mHistoryKeyShortName(STRING_HISTORYKEYSHORTNAME),
|
||||
mSettingsEMAIL(STRING_SETTINGSEMAIL),
|
||||
mSerialPort(STRING_SERIALPORT),
|
||||
mSerialBaud(STRING_SERIALBAUD),
|
||||
mSerialData(STRING_SERIALDATA),
|
||||
mSerialParity(STRING_SERIALPARITY),
|
||||
mSerialStop(STRING_SERIALSTOP),
|
||||
mRegKeySettings(RegKey::CurrentUser),
|
||||
mRegKeyHistory(RegKey::CurrentUser),
|
||||
mRegKeySerial(RegKey::CurrentUser),
|
||||
mPathDirKeyName(STRING_PATHDIRKEYNAME),
|
||||
mPathDirKeyShortName(STRING_PATHDIRKEYSHORTNAME),
|
||||
mRegKeyPathDir(RegKey::CurrentUser)
|
||||
{
|
||||
*this=someM68Reg;
|
||||
}
|
||||
|
||||
M68Reg::~M68Reg()
|
||||
{
|
||||
}
|
||||
|
||||
M68Reg &M68Reg::operator=(const M68Reg &/*someM68Reg*/)
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
void M68Reg::getCacheNames(void)
|
||||
{
|
||||
int itemIndex(0);
|
||||
String entryName;
|
||||
DWORD status;
|
||||
|
||||
mCachedNames.remove();
|
||||
while(mRegKeyHistory.enumValue(itemIndex++,entryName,status))mCachedNames.insert(&entryName);
|
||||
}
|
||||
|
||||
String M68Reg::email(void)
|
||||
{
|
||||
String strEMAIL;
|
||||
mRegKeySettings.queryValue(mSettingsEMAIL,strEMAIL);
|
||||
return strEMAIL;
|
||||
}
|
||||
|
||||
void M68Reg::email(const String &email)
|
||||
{
|
||||
mRegKeySettings.setValue(mSettingsEMAIL,email);
|
||||
}
|
||||
|
||||
bool M68Reg::setBaud(const String &strBaud)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialBaud,strBaud);
|
||||
}
|
||||
|
||||
String M68Reg::getBaud(void)
|
||||
{
|
||||
String strBaud;
|
||||
mRegKeySerial.queryValue(mSerialBaud,strBaud);
|
||||
return strBaud;
|
||||
}
|
||||
|
||||
bool M68Reg::setParity(const String &strParity)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialParity,strParity);
|
||||
}
|
||||
|
||||
String M68Reg::getParity(void)
|
||||
{
|
||||
String strParity;
|
||||
mRegKeySerial.queryValue(mSerialParity,strParity);
|
||||
return strParity;
|
||||
}
|
||||
|
||||
bool M68Reg::setDataBits(const String &strDataBits)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialData,strDataBits);
|
||||
}
|
||||
|
||||
String M68Reg::getDataBits(void)
|
||||
{
|
||||
String strData;
|
||||
mRegKeySerial.queryValue(mSerialData,strData);
|
||||
return strData;
|
||||
}
|
||||
|
||||
bool M68Reg::setStopBits(const String &stopBits)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialStop,stopBits);
|
||||
}
|
||||
|
||||
String M68Reg::getStopBits(void)
|
||||
{
|
||||
String strStop;
|
||||
|
||||
mRegKeySerial.queryValue(mSerialStop,strStop);
|
||||
return strStop;
|
||||
}
|
||||
|
||||
bool M68Reg::setPort(const String &strPort)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialPort,strPort);
|
||||
}
|
||||
|
||||
String M68Reg::getPort(void)
|
||||
{
|
||||
String strPort;
|
||||
mRegKeySerial.queryValue(mSerialPort,strPort);
|
||||
return strPort;
|
||||
}
|
||||
|
||||
String M68Reg::getSerialSettings(void)
|
||||
{
|
||||
String serialSettings;
|
||||
|
||||
serialSettings+="baud=";
|
||||
serialSettings+=getBaud();
|
||||
serialSettings+=" ";
|
||||
serialSettings+="parity=";
|
||||
serialSettings+=getParity();
|
||||
serialSettings+=" ";
|
||||
serialSettings+="data=";
|
||||
serialSettings+=getDataBits();
|
||||
serialSettings+=" ";
|
||||
serialSettings+="stop=";
|
||||
serialSettings+=getStopBits();
|
||||
return serialSettings;
|
||||
}
|
||||
|
||||
void M68Reg::guarantee(void)
|
||||
{
|
||||
if(!mRegKeySettings.openKey(mSettingsKeyName))
|
||||
{
|
||||
mRegKeySettings.createKey(mSettingsKeyName,"");
|
||||
mRegKeySettings.openKey(mSettingsKeyName);
|
||||
}
|
||||
if(!mRegKeyHistory.openKey(mHistoryKeyName))
|
||||
{
|
||||
mRegKeyHistory.createKey(mHistoryKeyName,"");
|
||||
mRegKeyHistory.openKey(mHistoryKeyName);
|
||||
}
|
||||
if(!mRegKeyPathDir.openKey(mPathDirKeyName))
|
||||
{
|
||||
mRegKeyPathDir.createKey(mPathDirKeyName,"");
|
||||
mRegKeyPathDir.openKey(mPathDirKeyName);
|
||||
}
|
||||
if(!mRegKeySerial.openKey(mSerialKeyName))
|
||||
{
|
||||
CommControl commControl;
|
||||
Block<String> deviceList;
|
||||
|
||||
commControl.enumerateDevices(deviceList);
|
||||
mRegKeySerial.createKey(mSerialKeyName,"");
|
||||
mRegKeySerial.openKey(mSerialKeyName);
|
||||
setBaud("1200");
|
||||
setParity("N");
|
||||
setDataBits("8");
|
||||
setStopBits("1");
|
||||
setPort(deviceList.size()?deviceList[0]:"COM1");
|
||||
}
|
||||
}
|
||||
|
||||
BOOL M68Reg::isOkay(void)const
|
||||
{
|
||||
return mRegKeySettings.isOkay()&&mRegKeyHistory.isOkay()&&mRegKeySerial.isOkay();
|
||||
}
|
||||
|
||||
bool M68Reg::getHistory(Block<String> &nameList)
|
||||
{
|
||||
nameList=mCachedNames;
|
||||
return nameList.size()?TRUE:FALSE;
|
||||
}
|
||||
|
||||
bool M68Reg::setHistory(Block<String> &nameList)
|
||||
{
|
||||
RegKey regKey(RegKey::CurrentUser);
|
||||
mRegKeyHistory.closeKey();
|
||||
regKey.openKey(mM68KeyName);
|
||||
regKey.deleteKey(mHistoryKeyShortName);
|
||||
regKey.closeKey();
|
||||
mRegKeyHistory.createKey(mHistoryKeyName,"");
|
||||
mRegKeyHistory.openKey(mHistoryKeyName);
|
||||
for(int itemIndex=0;itemIndex<nameList.size();itemIndex++)mRegKeyHistory.setValue(nameList[itemIndex],0);
|
||||
return nameList.size()?TRUE:FALSE;
|
||||
}
|
||||
|
||||
bool M68Reg::insertHistory(const String &strName)
|
||||
{
|
||||
for(int itemIndex=0;itemIndex<mCachedNames.size();itemIndex++)if(mCachedNames[itemIndex]==strName)return FALSE;
|
||||
mCachedNames.insert(&strName);
|
||||
if(mCachedNames.size()>MaxCachedNames)
|
||||
{
|
||||
Block<String> mruCachedNames;
|
||||
for(int itemIndex=0;itemIndex<MaxCachedNames;itemIndex++)mruCachedNames.insert(&String());
|
||||
for(itemIndex=0;itemIndex<MaxCachedNames;itemIndex++)mruCachedNames[mruCachedNames.size()-itemIndex-1]=mCachedNames[mCachedNames.size()-itemIndex-1];
|
||||
mCachedNames=mruCachedNames;
|
||||
setHistory(mCachedNames);
|
||||
}
|
||||
else mRegKeyHistory.setValue(strName,0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool M68Reg::getIncludePath(Block<String> &pathDirList)
|
||||
{
|
||||
int itemIndex(0);
|
||||
String entryName;
|
||||
DWORD status;
|
||||
|
||||
pathDirList.remove();
|
||||
while(mRegKeyPathDir.enumValue(itemIndex++,entryName,status))
|
||||
pathDirList.insert(&entryName);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool M68Reg::setIncludePath(Block<String> &pathDirList)
|
||||
{
|
||||
removeIncludePath();
|
||||
for(int itemIndex=0;itemIndex<pathDirList.size();itemIndex++)mRegKeyPathDir.setValue(pathDirList[itemIndex],0);
|
||||
return pathDirList.size()?true:false;
|
||||
}
|
||||
|
||||
bool M68Reg::removeIncludePath(void)
|
||||
{
|
||||
int itemIndex(0);
|
||||
Block<String> values;
|
||||
String entryName;
|
||||
DWORD status;
|
||||
|
||||
while(mRegKeyPathDir.enumValue(itemIndex++,entryName,status))values.insert(&entryName);
|
||||
for(int index=0;index<values.size();index++)mRegKeyPathDir.deleteValue(values[index]);
|
||||
return true;
|
||||
}
|
||||
67
m68hc11/M68REG.HPP
Normal file
@@ -0,0 +1,67 @@
|
||||
#ifndef _M68HC11_M68REG_HPP_
|
||||
#define _M68HC11_M68REG_HPP_
|
||||
#ifndef _COMMON_REGKEY_HPP_
|
||||
#include <common/regkey.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_M68HC11_HPP_
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#endif
|
||||
|
||||
class M68Reg
|
||||
{
|
||||
public:
|
||||
M68Reg(void);
|
||||
M68Reg(const M68Reg &someM68Reg);
|
||||
virtual ~M68Reg();
|
||||
M68Reg &operator=(const M68Reg &someM68Reg);
|
||||
bool getHistory(Block<String> &nameList);
|
||||
bool setHistory(Block<String> &nameList);
|
||||
bool insertHistory(const String &strName);
|
||||
bool getIncludePath(Block<String> &pathDirList);
|
||||
bool setIncludePath(Block<String> &pathDirList);
|
||||
bool removeIncludePath(void);
|
||||
bool setBaud(const String &strBaud);
|
||||
String getBaud(void);
|
||||
bool setParity(const String &strParity);
|
||||
String getParity(void);
|
||||
bool setDataBits(const String &strDataBits);
|
||||
String getDataBits(void);
|
||||
bool setStopBits(const String &stopBits);
|
||||
String getStopBits(void);
|
||||
bool setPort(const String &strPort);
|
||||
String getPort(void);
|
||||
String getSerialSettings(void);
|
||||
String email(void);
|
||||
void email(const String &email);
|
||||
BOOL isOkay(void)const;
|
||||
private:
|
||||
enum {MaxCachedNames=5};
|
||||
void guarantee(void);
|
||||
void getCacheNames(void);
|
||||
|
||||
Block<String> mCachedNames;
|
||||
String mPathDirKeyName;
|
||||
String mHistoryKeyName;
|
||||
String mSettingsKeyName;
|
||||
String mSerialKeyName;
|
||||
String mHistoryKeyShortName;
|
||||
String mPathDirKeyShortName;
|
||||
String mSettingsEMAIL;
|
||||
String mM68KeyName;
|
||||
String mSerialPort;
|
||||
String mSerialBaud;
|
||||
String mSerialData;
|
||||
String mSerialParity;
|
||||
String mSerialStop;
|
||||
RegKey mRegKeySettings;
|
||||
RegKey mRegKeyHistory;
|
||||
RegKey mRegKeyPathDir;
|
||||
RegKey mRegKeySerial;
|
||||
};
|
||||
#endif
|
||||
160
m68hc11/M68hc11.h
Normal file
@@ -0,0 +1,160 @@
|
||||
#ifndef _M68HC11_M68HC11_H_
|
||||
#define _M68HC11_M68HC11_H_
|
||||
|
||||
#define M68ACCELERATORS 10000
|
||||
|
||||
#define CMPDLG_BROWSE 100
|
||||
#define CMPDLG_LIST 101
|
||||
#define CMPDLG_CANCEL 102
|
||||
#define CMPDLG_OK 103
|
||||
|
||||
#define MCUDLG_REGISTERS 101
|
||||
#define MCUDLG_CCR 102
|
||||
#define MCUDLG_MESSAGES 109
|
||||
#define MCUDLG_PC 103
|
||||
#define MCUDLG_SP 104
|
||||
#define MCUDLG_Y 105
|
||||
#define MCUDLG_X 106
|
||||
#define MCUDLG_A 107
|
||||
#define MCUDLG_B 108
|
||||
|
||||
#define SERIAL_STOP 104
|
||||
#define SERIAL_PARITY 105
|
||||
#define SERIAL_APPLY 106
|
||||
#define SERIAL_TEST 107
|
||||
#define SERIAL_DATA 103
|
||||
#define SERIAL_BAUD 102
|
||||
#define SERIAL_PORT 101
|
||||
|
||||
#define SBCMENU_FILENEW 500
|
||||
#define SBCMENU_FILEOPEN 501
|
||||
#define SBCMENU_FILESAVE 502
|
||||
#define SBCMENU_FILESAVEAS 503
|
||||
#define SBCMENU_FILEPRINT 504
|
||||
#define SBCMENU_FILEQUIT 505
|
||||
#define SBCMENU_FILECLOSE 506
|
||||
#define SBCMENU_EDITCUT 507
|
||||
#define SBCMENU_EDITCOPY 508
|
||||
#define SBCMENU_EDITPASTE 509
|
||||
#define SBCMENU_EDITFIND 510
|
||||
#define SBCMENU_SETTINGSSERIAL 511
|
||||
#define SBCMENU_CODECOMPILE 512
|
||||
#define SBCMENU_CODECOMPILEANDLOAD 513
|
||||
#define SBCMENU_HELPCONTENTS 514
|
||||
#define SBCMENU_HELPSEARCH 515
|
||||
#define SBCMENU_REGISTRATION 516
|
||||
#define SBCMENU_HELPABOUT 517
|
||||
#define SBCMENU_COMPILER 518
|
||||
|
||||
#define IDM_CASCADE 10013
|
||||
#define IDM_TILE 10014
|
||||
#define IDM_ARRANGE 10015
|
||||
#define IDM_CLOSEALL 10016
|
||||
#define IDM_MINIMIZEALL 10017
|
||||
#define IDM_RESTOREALL 10018
|
||||
|
||||
#define STRING_M68KEYNAME 600
|
||||
#define STRING_HISTORYKEYNAME 601
|
||||
#define STRING_SETTINGSKEYNAME 602
|
||||
#define STRING_SERIALKEYNAME 603
|
||||
#define STRING_HISTORYKEYSHORTNAME 604
|
||||
#define STRING_SETTINGSEMAIL 605
|
||||
#define STRING_SERIALPORT 606
|
||||
#define STRING_SERIALBAUD 607
|
||||
#define STRING_SERIALDATA 608
|
||||
#define STRING_SERIALPARITY 609
|
||||
#define STRING_SERIALSTOP 610
|
||||
#define STRING_COM1 611
|
||||
#define STRING_COM2 612
|
||||
#define STRING_COM3 613
|
||||
#define STRING_COM4 614
|
||||
#define STRING_PATHDIRKEYNAME 615
|
||||
#define STRING_PATHDIRKEYSHORTNAME 616
|
||||
|
||||
#define STRING_CODEVIEWCLASSNAME 500
|
||||
#define STRING_MCUVIEWCLASSNAME 501
|
||||
#define STRING_UNTITLED 502
|
||||
#define STRING_HELPFILENAME 503
|
||||
|
||||
#define STRING_REGISTERPORTA 700
|
||||
#define STRING_REGISTERRESERVED1 701
|
||||
#define STRING_REGISTERPIOC 702
|
||||
#define STRING_REGISTERPORTC 703
|
||||
#define STRING_REGISTERPORTB 704
|
||||
#define STRING_REGISTERPORTCL 705
|
||||
#define STRING_REGISTERRESERVED2 706
|
||||
#define STRING_REGISTERDDRC 707
|
||||
#define STRING_REGISTERPORTD 708
|
||||
#define STRING_REGISTERDDRD 709
|
||||
#define STRING_REGISTERPORTE 710
|
||||
#define STRING_REGISTERCFORC 711
|
||||
#define STRING_REGISTEROC1M 712
|
||||
#define STRING_REGISTEROC1D 713
|
||||
#define STRING_REGISTERTCNTH1 714
|
||||
#define STRING_REGISTERTCNTLO 715
|
||||
#define STRING_REGISTERTIC1HI 716
|
||||
#define STRING_REGISTERTIC1LO 717
|
||||
#define STRING_REGISTERTIC2HI 718
|
||||
#define STRING_REGISTERTIC2LO 719
|
||||
#define STRING_REGISTERTIC3HI 720
|
||||
#define STRING_REGISTERTIC3LO 721
|
||||
#define STRING_REGISTERTOC1HI 722
|
||||
#define STRING_REGISTERTOC1LO 723
|
||||
#define STRING_REGISTERTOC2HI 724
|
||||
#define STRING_REGISTERTOC2LO 725
|
||||
#define STRING_REGISTERTOC3HI 726
|
||||
#define STRING_REGISTERTOC3LO 727
|
||||
#define STRING_REGISTERTOC4HI 728
|
||||
#define STRING_REGISTERTOC4LO 729
|
||||
#define STRING_REGISTERTI405HI 730
|
||||
#define STRING_REGISTERTI405LO 731
|
||||
#define STRING_REGISTERTCTL1 732
|
||||
#define STRING_REGISTERTCTL2 733
|
||||
#define STRING_REGISTERTMSK1 734
|
||||
#define STRING_REGISTERTFLG1 735
|
||||
#define STRING_REGISTERTMSK2 736
|
||||
#define STRING_REGISTERTFLG2 737
|
||||
#define STRING_REGISTERPACTL 738
|
||||
#define STRING_REGISTERPACNT 739
|
||||
#define STRING_REGISTERSPCR 740
|
||||
#define STRING_REGISTERSPSR 741
|
||||
#define STRING_REGISTERSPDR 742
|
||||
#define STRING_REGISTERBAUD 743
|
||||
#define STRING_REGISTERSCCR1 744
|
||||
#define STRING_REGISTERSCCR2 745
|
||||
#define STRING_REGISTERSCSR 746
|
||||
#define STRING_REGISTERSCDR 747
|
||||
#define STRING_REGISTERADCTL 748
|
||||
#define STRING_REGISTERADR1 749
|
||||
#define STRING_REGISTERADR2 750
|
||||
#define STRING_REGISTERADR3 751
|
||||
#define STRING_REGISTERADR4 752
|
||||
#define STRING_REGISTERBPROT 753
|
||||
#define STRING_REGISTEREPROG 754
|
||||
#define STRING_REGISTERRESERVED3 755
|
||||
#define STRING_REGISTERRESERVED4 756
|
||||
#define STRING_REGISTEROPTION 757
|
||||
#define STRING_REGISTERCOPRST 758
|
||||
#define STRING_REGISTERPPROG 759
|
||||
#define STRING_REGISTERHPRIO 760
|
||||
#define STRING_REGISTERINIT 761
|
||||
#define STRING_REGISTERTEST1 762
|
||||
#define STRING_REGISTERCONFIG 763
|
||||
|
||||
#define STRING_ERRORFILEOPEN 764
|
||||
#define STRING_ERRORPORTOPEN 765
|
||||
#define STRING_ERRORPORTSETTINGS 766
|
||||
#define STRING_ERRORTIMEOUT 767
|
||||
#define STRING_ERRORREADERROR 768
|
||||
#define STRING_ERRORTALKBACKFAILURE 769
|
||||
#define STRING_ERRORTALKBACKDATA 770
|
||||
|
||||
#define STRING_EVENTSINGLEBYTE 771
|
||||
#define STRING_EVENTQUADBYTE 772
|
||||
#define STRING_EVENTVARBYTE 773
|
||||
#define STRING_EVENTREGDATASTART 774
|
||||
#define STRING_EVENTREGDATACOMPLETE 775
|
||||
#define STRING_EVENTCODECOMPLETE 776
|
||||
#define STRING_EVENTDOUBLEBYTE 777
|
||||
#define STRING_EVENTSTRING 778
|
||||
#endif
|
||||
1774
m68hc11/M68hc11.mak
Normal file
10
m68hc11/MAIN.CPP
Normal file
@@ -0,0 +1,10 @@
|
||||
#include <m68hc11/mainfrm.hpp>
|
||||
|
||||
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/)
|
||||
{
|
||||
MainFrame frameWindow;
|
||||
frameWindow.createWindow("M68HC11","M68HC11 v1.00","mainMenu","MOT");
|
||||
frameWindow.loadAccelerators(M68ACCELERATORS);
|
||||
return frameWindow.messageLoop();
|
||||
}
|
||||
|
||||
147
m68hc11/MCUDLG.CPP
Normal file
@@ -0,0 +1,147 @@
|
||||
#include <m68hc11/mcudlg.hpp>
|
||||
#include <m68hc11/odlstled.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <common/stdio.hpp>
|
||||
|
||||
MCUDlg::MCUDlg(void)
|
||||
{
|
||||
mInitHandler.setCallback(this,&MCUDlg::initHandler);
|
||||
mCreateHandler.setCallback(this,&MCUDlg::createHandler);
|
||||
mCloseHandler.setCallback(this,&MCUDlg::closeHandler);
|
||||
mDestroyHandler.setCallback(this,&MCUDlg::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&MCUDlg::commandHandler);
|
||||
insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
}
|
||||
|
||||
MCUDlg::MCUDlg(const MCUDlg &someMCUDlg)
|
||||
{ // private implementation
|
||||
*this=someMCUDlg;
|
||||
}
|
||||
|
||||
MCUDlg::~MCUDlg()
|
||||
{
|
||||
removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
}
|
||||
|
||||
MCUDlg &MCUDlg::operator=(const MCUDlg &someMCUDlg)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOL MCUDlg::perform(GUIWindow &parentWindow)
|
||||
{
|
||||
::CreateDialogParam(processInstance(),(LPSTR)"MCUDLG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
|
||||
return isValid();
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::initHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mOwnerDrawList=::new OwnerDrawListBinaryLed(*this,getItem(MCUDLG_REGISTERS),MCUDLG_REGISTERS);
|
||||
mOwnerDrawList.disposition(PointerDisposition::Delete);
|
||||
for(int index=STRING_REGISTERPORTA;index<=STRING_REGISTERCONFIG;index++)mOwnerDrawList->insertString(String(index));
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::closeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::destroyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wmCommandID())
|
||||
{
|
||||
case IDCANCEL :
|
||||
handleCancel();
|
||||
break;
|
||||
case IDOK :
|
||||
handleOk();
|
||||
break;
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
void MCUDlg::setRegister(int mcuRegister,BYTE value)
|
||||
{
|
||||
String stringData;
|
||||
String strItem;
|
||||
String strData;
|
||||
|
||||
if(LB_ERR==mOwnerDrawList->getText(stringData,mcuRegister))return;
|
||||
strItem=stringData.betweenString(0,'\t');
|
||||
if(strItem.isNull())::sprintf(strData,"%s\t%d",(LPSTR)stringData,value);
|
||||
else ::sprintf(strData,"%s\t%d",(LPSTR)strItem,value);
|
||||
mOwnerDrawList->deleteString(mcuRegister);
|
||||
mOwnerDrawList->insertString(strData,mcuRegister);
|
||||
}
|
||||
|
||||
void MCUDlg::setRegisters(GlobalData<BYTE> ®Data)
|
||||
{
|
||||
mOwnerDrawList->setRedraw(FALSE);
|
||||
for(int index=0;index<regData.size();index++)setRegister(index,regData[index]);
|
||||
mOwnerDrawList->setRedraw(TRUE);
|
||||
}
|
||||
|
||||
void MCUDlg::setVarByteData(GlobalData<BYTE> &byteData)
|
||||
{
|
||||
String strData;
|
||||
String strLine;
|
||||
String strHexLine;
|
||||
|
||||
for(int index=0;index<byteData.size();index++)
|
||||
{
|
||||
::sprintf(strData,"%c",byteData[index]);
|
||||
strLine+=strData;
|
||||
}
|
||||
for(index=0;index<byteData.size();index++)
|
||||
{
|
||||
::sprintf(strData,"%02lx",int(byteData[index]));
|
||||
strHexLine+=strData;
|
||||
}
|
||||
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strLine);
|
||||
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strHexLine);
|
||||
}
|
||||
|
||||
void MCUDlg::setSingleByteData(BYTE singleByteData)
|
||||
{
|
||||
String strLine;
|
||||
|
||||
|
||||
if(isprint(singleByteData))::sprintf(strLine,"%c (%02lxh)",singleByteData,(int)singleByteData);
|
||||
else ::sprintf(strLine,"'' (%02lxh)",(int)singleByteData);
|
||||
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strLine);
|
||||
// ::sprintf(strLine,"%02lx",int(singleByteData));
|
||||
// sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strLine);
|
||||
}
|
||||
|
||||
void MCUDlg::setStringData(const String &string)
|
||||
{
|
||||
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)string.str());
|
||||
}
|
||||
|
||||
void MCUDlg::setQuadByteData(DWORD quadByteData)
|
||||
{
|
||||
}
|
||||
|
||||
void MCUDlg::setDoubleByteData(WORD doubleByteData)
|
||||
{
|
||||
}
|
||||
|
||||
81
m68hc11/MCUDLG.HPP
Normal file
@@ -0,0 +1,81 @@
|
||||
#ifndef _M68HC11_MCUDLG_HPP_
|
||||
#define _M68HC11_MCUDLG_HPP_
|
||||
#ifndef _COMMON_DWINDOW_HPP_
|
||||
#include <common/dwindow.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_GLOBALDATA_HPP_
|
||||
#include <common/gdata.hpp>
|
||||
#endif
|
||||
|
||||
class OwnerDrawListBinaryLed;
|
||||
|
||||
class MCUDlg : public DWindow
|
||||
{
|
||||
public:
|
||||
MCUDlg(void);
|
||||
virtual ~MCUDlg();
|
||||
BOOL perform(GUIWindow &parentWindow);
|
||||
void setCancelHandler(PureCallback *pCallback);
|
||||
void setStartHandler(PureCallback *pCallback);
|
||||
void setRegister(int mcuRegister,BYTE value);
|
||||
void setRegisters(GlobalData<BYTE> ®Data);
|
||||
void setVarByteData(GlobalData<BYTE> &byteData);
|
||||
void setQuadByteData(DWORD quadByteData);
|
||||
void setDoubleByteData(WORD doubleByteData);
|
||||
void setSingleByteData(BYTE singleByteData);
|
||||
void setStringData(const String &string);
|
||||
void enableStart(BOOL enable);
|
||||
private:
|
||||
MCUDlg(const MCUDlg &someMCUDlg);
|
||||
MCUDlg &operator=(const MCUDlg &someMCUDlg);
|
||||
CallbackData::ReturnType initHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
void handleCancel(void);
|
||||
void handleOk(void);
|
||||
|
||||
Callback<MCUDlg> mInitHandler;
|
||||
Callback<MCUDlg> mCreateHandler;
|
||||
Callback<MCUDlg> mCloseHandler;
|
||||
Callback<MCUDlg> mDestroyHandler;
|
||||
Callback<MCUDlg> mCommandHandler;
|
||||
SmartPointer<OwnerDrawListBinaryLed> mOwnerDrawList;
|
||||
CallbackPointer mCancelHandler;
|
||||
CallbackPointer mStartHandler;
|
||||
};
|
||||
|
||||
inline
|
||||
void MCUDlg::setCancelHandler(PureCallback *pCallback)
|
||||
{
|
||||
mCancelHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUDlg::setStartHandler(PureCallback *pCallback)
|
||||
{
|
||||
mStartHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUDlg::handleCancel(void)
|
||||
{
|
||||
mCancelHandler.callback(CallbackData());
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUDlg::handleOk(void)
|
||||
{
|
||||
mStartHandler.callback(CallbackData());
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUDlg::enableStart(BOOL enable)
|
||||
{
|
||||
::EnableWindow(getItem(IDOK),enable);
|
||||
}
|
||||
#endif
|
||||
238
m68hc11/MCUTHRD.CPP
Normal file
@@ -0,0 +1,238 @@
|
||||
#include <m68hc11/mcuthrd.hpp>
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <m68hc11/m68reg.hpp>
|
||||
#include <common/openfile.hpp>
|
||||
#include <common/gdata.hpp>
|
||||
|
||||
MCUThread::MCUThread(void)
|
||||
: mIsInEvents(false)
|
||||
{
|
||||
mThreadHandler.setCallback(this,&MCUThread::threadHandler);
|
||||
insertHandler(&mThreadHandler);
|
||||
}
|
||||
|
||||
MCUThread::MCUThread(const MCUThread &someMCUThread)
|
||||
: mIsInEvents(false)
|
||||
{ // private implementation
|
||||
*this=someMCUThread;
|
||||
}
|
||||
|
||||
MCUThread::~MCUThread()
|
||||
{
|
||||
removeHandler(&mThreadHandler);
|
||||
}
|
||||
|
||||
MCUThread &MCUThread::operator=(const MCUThread &someMCUThread)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
void MCUThread::listen(const String &strPathBinary)
|
||||
{
|
||||
String *pString=::new String(strPathBinary);
|
||||
ThreadMessage threadMessage(ThreadMessage::TM_USER,ThMsgListen,int(pString));
|
||||
postMessage(threadMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD MCUThread::threadHandler(ThreadMessage &someThreadMessage)
|
||||
{
|
||||
switch(someThreadMessage.message())
|
||||
{
|
||||
case ThreadMessage::TM_CREATE :
|
||||
break;
|
||||
case ThreadMessage::TM_DESTROY :
|
||||
break;
|
||||
case ThreadMessage::TM_USER :
|
||||
if(ThMsgListen==someThreadMessage.userDataOne())
|
||||
{
|
||||
String *pString=(String*)someThreadMessage.userDataTwo();
|
||||
thListen(*pString);
|
||||
::delete pString;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void MCUThread::thListen(const String &strPathBinary)
|
||||
{
|
||||
CommControl commControl;
|
||||
|
||||
sendMessage("Initializing device...");
|
||||
if(!openDevice(commControl))return;
|
||||
sendMessage("Loading code...");
|
||||
if(!codeLoad(commControl,strPathBinary))return;
|
||||
sendMessage("Processing events...");
|
||||
processEvents(commControl);
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL MCUThread::openDevice(CommControl &commControl,bool useOverlappedIO)
|
||||
{
|
||||
M68Reg mcuReg;
|
||||
|
||||
if(!commControl.open(CommControl::stringToPort(mcuReg.getPort()),useOverlappedIO))
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorPortOpen,0L));
|
||||
return FALSE;
|
||||
}
|
||||
if(!commControl.setDeviceControlBlock(mcuReg.getSerialSettings()))
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorPortSettings,0L));
|
||||
return FALSE;
|
||||
}
|
||||
commControl.setEventMask(CommControl::EventBreak);
|
||||
if(!commControl.waitEvent())
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorTimeout,0L));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL MCUThread::codeLoad(CommControl &commControl,const String &strPathBinary)
|
||||
{
|
||||
FileHandle inFile;
|
||||
BYTE sndBuffer[256];
|
||||
// BYTE rcvBuffer[256];
|
||||
GlobalData<BYTE> rcvBuffer;
|
||||
WORD codeLength(0);
|
||||
BYTE prefix(0xFF);
|
||||
BYTE *ptrByte;
|
||||
|
||||
if(!inFile.open(strPathBinary))
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorFileOpen,int(&(String&)strPathBinary)));
|
||||
return FALSE;
|
||||
}
|
||||
::memset(sndBuffer,1,sizeof(sndBuffer));
|
||||
// ::memset(&rcvBuffer,0,sizeof(rcvBuffer));
|
||||
ptrByte=sndBuffer;
|
||||
while(inFile.read(*ptrByte)&&codeLength<=256){codeLength++;ptrByte++;}
|
||||
commControl.write(&prefix,sizeof(prefix));
|
||||
commControl.clearReceiveQueue();
|
||||
commControl.write(sndBuffer,sizeof(sndBuffer));
|
||||
if(!commControl.waitForData())
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorTalkBackFailure,0L));
|
||||
return false;
|
||||
}
|
||||
rcvBuffer.size(sizeof(sndBuffer));
|
||||
rcvBuffer.setZero();
|
||||
commControl.readFully(rcvBuffer);
|
||||
// commControl.readFully(rcvBuffer,sizeof(rcvBuffer));
|
||||
if(::memcmp(&rcvBuffer[0],sndBuffer,sizeof(sndBuffer)))
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorTalkBackData,0L));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// event types
|
||||
// 0x00 - character
|
||||
// 0x01 - WORD
|
||||
// 0x02 - DWORD
|
||||
// 0x03 - varchar : [WORD:count,countcharacters]
|
||||
// 0xFF - end
|
||||
|
||||
BOOL MCUThread::processEvents(CommControl &commControl)
|
||||
{
|
||||
GlobalData<BYTE> byteData;
|
||||
String strString;
|
||||
BYTE event(0x00);
|
||||
BYTE ack(0x00);
|
||||
WORD wordData;
|
||||
DWORD dwordData;
|
||||
char charData;
|
||||
int index;
|
||||
int map(0x1000);
|
||||
|
||||
::OutputDebugString("MCUThread::processEvents[Thread is starting]");
|
||||
isInEvents(true);
|
||||
while(isInEvents())
|
||||
{
|
||||
if(!commControl.hasData())continue;
|
||||
commControl.read(&event,sizeof(event));
|
||||
switch(MCUEvent(event))
|
||||
{
|
||||
case EventString :
|
||||
{
|
||||
String str;
|
||||
sendMessage(STRING_EVENTSTRING);
|
||||
while(true)
|
||||
{
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
if(!charData)break;
|
||||
str+=charData;
|
||||
}
|
||||
mMCUEventHandler.callback(CallbackData(EventString,int(&str)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
}
|
||||
break;
|
||||
case EventSingleByte :
|
||||
sendMessage(STRING_EVENTSINGLEBYTE);
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
mMCUEventHandler.callback(CallbackData(EventSingleByte,int(&charData)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventDoubleByte :
|
||||
sendMessage(STRING_EVENTDOUBLEBYTE);
|
||||
commControl.read(&wordData,sizeof(wordData));
|
||||
mMCUEventHandler.callback(CallbackData(EventDoubleByte,int(&wordData)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventQuadByte :
|
||||
sendMessage(STRING_EVENTQUADBYTE);
|
||||
commControl.read(&dwordData,sizeof(dwordData));
|
||||
mMCUEventHandler.callback(CallbackData(EventQuadByte,(int)&dwordData));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventVarByte :
|
||||
sendMessage(STRING_EVENTVARBYTE);
|
||||
commControl.read(&wordData,sizeof(wordData));
|
||||
byteData.size(wordData);
|
||||
for(index=0;index<byteData.size();index++)
|
||||
{
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
byteData[index]=charData;
|
||||
}
|
||||
mMCUEventHandler.callback(CallbackData(EventVarByte,int(&byteData)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventRegs :
|
||||
map=0x1000;
|
||||
byteData.size(64);
|
||||
sendMessage(STRING_EVENTREGDATASTART);
|
||||
for(index=0;index<byteData.size();index++)
|
||||
{
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
byteData[index]=charData;
|
||||
}
|
||||
sendMessage(STRING_EVENTREGDATACOMPLETE);
|
||||
mMCUEventHandler.callback(CallbackData(EventRegs,int(&byteData)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventEnd :
|
||||
sendMessage(STRING_EVENTCODECOMPLETE);
|
||||
mMCUEventHandler.callback(CallbackData(EventEnd,0L));
|
||||
isInEvents(false);
|
||||
break;
|
||||
default :
|
||||
{
|
||||
String str;
|
||||
::sprintf(str,"unexpected character : 0x%04lx\n",(int)event);
|
||||
::OutputDebugString(str);
|
||||
}
|
||||
}
|
||||
}
|
||||
::OutputDebugString("MCUThread::processEvents[Thread is ending normally]");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void MCUThread::sendMessage(const String &strMessage)
|
||||
{
|
||||
mMessageHandler.callback(CallbackData(0,int(&(String&)strMessage)));
|
||||
}
|
||||
72
m68hc11/MCUTHRD.HPP
Normal file
@@ -0,0 +1,72 @@
|
||||
#ifndef _M68HC11_MCUTHREAD_HPP_
|
||||
#define _M68HC11_MCUTHREAD_HPP_
|
||||
#ifndef _THREAD_MESSAGETHREAD_HPP_
|
||||
#include <thread/mthread.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_CALLBACK_HPP_
|
||||
#include <common/callback.hpp>
|
||||
#endif
|
||||
|
||||
class CommControl;
|
||||
|
||||
class MCUThread : protected MessageThread
|
||||
{
|
||||
public:
|
||||
enum MCUEvent{EventSingleByte=0x00,EventDoubleByte=0x01,EventQuadByte=0x02,EventVarByte=0x03,EventRegs=0x04,EventString=0x05,EventEnd=0xFF};
|
||||
enum ErrorEvent{ErrorFileOpen,ErrorPortOpen,ErrorPortSettings,ErrorTimeout,ErrorReadError,ErrorTalkBackFailure,ErrorTalkBackData};
|
||||
MCUThread(void);
|
||||
virtual ~MCUThread();
|
||||
void listen(const String &strPathBinary);
|
||||
void setErrorEventHandler(PureCallback *pCallback);
|
||||
void setMCUEventHandler(PureCallback *pCallback);
|
||||
void setMessageHandler(PureCallback *pCallback);
|
||||
bool isInEvents(void)const;
|
||||
void isInEvents(bool isInEvents);
|
||||
private:
|
||||
enum{ThMsgListen};
|
||||
MCUThread(const MCUThread &someMCUThread);
|
||||
MCUThread &operator=(const MCUThread &someMCUThread);
|
||||
DWORD threadHandler(ThreadMessage &someThreadMessage);
|
||||
void thListen(const String &strPathBinary);
|
||||
BOOL openDevice(CommControl &commControl,bool userOverlappedIO=false);
|
||||
BOOL codeLoad(CommControl &commControl,const String &strPathBinary);
|
||||
BOOL processEvents(CommControl &commControl);
|
||||
void sendMessage(const String &strMessage);
|
||||
|
||||
ThreadCallback<MCUThread> mThreadHandler;
|
||||
CallbackPointer mErrorEventHandler;
|
||||
CallbackPointer mMCUEventHandler;
|
||||
CallbackPointer mMessageHandler;
|
||||
bool mIsInEvents;
|
||||
};
|
||||
|
||||
inline
|
||||
void MCUThread::setErrorEventHandler(PureCallback *pCallback)
|
||||
{
|
||||
mErrorEventHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUThread::setMCUEventHandler(PureCallback *pCallback)
|
||||
{
|
||||
mMCUEventHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUThread::setMessageHandler(PureCallback *pCallback)
|
||||
{
|
||||
mMessageHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
bool MCUThread::isInEvents(void)const
|
||||
{
|
||||
return mIsInEvents;
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUThread::isInEvents(bool isInEvents)
|
||||
{
|
||||
mIsInEvents=isInEvents;
|
||||
}
|
||||
#endif
|
||||
193
m68hc11/MCUVIEW.CPP
Normal file
@@ -0,0 +1,193 @@
|
||||
#include <m68hc11/mcuview.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <statbar/statbarx.hpp>
|
||||
|
||||
MCUView::MCUView(void)
|
||||
{
|
||||
mCreateHandler.setCallback(this,&MCUView::createHandler);
|
||||
mSizeHandler.setCallback(this,&MCUView::sizeHandler);
|
||||
mCloseHandler.setCallback(this,&MCUView::closeHandler);
|
||||
mDestroyHandler.setCallback(this,&MCUView::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&MCUView::commandHandler);
|
||||
mCancelHandler.setCallback(this,&MCUView::cancelHandler);
|
||||
mStartHandler.setCallback(this,&MCUView::startHandler);
|
||||
mErrorEventHandler.setCallback(this,&MCUView::errorEventHandler);
|
||||
mMCUEventHandler.setCallback(this,&MCUView::mcuEventHandler);
|
||||
mMessageHandler.setCallback(this,&MCUView::messageHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CreateHandler,&mCreateHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::SizeHandler,&mSizeHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CloseHandler,&mCloseHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::DestroyHandler,&mDestroyHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CommandHandler,&mCommandHandler);
|
||||
MCUThread::setErrorEventHandler(&mErrorEventHandler);
|
||||
MCUThread::setMCUEventHandler(&mMCUEventHandler);
|
||||
MCUThread::setMessageHandler(&mMessageHandler);
|
||||
}
|
||||
|
||||
MCUView::~MCUView()
|
||||
{
|
||||
MDIWindow::removeHandler(MDIWindow::CreateHandler,&mCreateHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::SizeHandler,&mSizeHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::CloseHandler,&mCloseHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::DestroyHandler,&mDestroyHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::CommandHandler,&mCommandHandler);
|
||||
MCUThread::setErrorEventHandler(0);
|
||||
MCUThread::setMCUEventHandler(0);
|
||||
MCUThread::setMessageHandler(0);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setCancelHandler(&mCancelHandler);
|
||||
mMCUDialog.setStartHandler(&mStartHandler);
|
||||
mMCUDialog.perform(*this);
|
||||
mStatusBar=::new StatusBarEx(*this,StatusBarID);
|
||||
mStatusBar.disposition(PointerDisposition::Delete);
|
||||
mStatusBar->setText("Press start and then switch on the device.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::sizeHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::closeHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::destroyHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::commandHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::cancelHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
isInEvents(false);
|
||||
MDIWindow::postMessage(*this,WM_CLOSE,0,0L);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::startHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mMCUDialog.enableStart(FALSE);
|
||||
listen(mStrPathBinary);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::messageHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mStatusBar->setText(*((String*)someCallbackData.lParam()));
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::errorEventHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(MCUThread::ErrorEvent(someCallbackData.wParam()))
|
||||
{
|
||||
case MCUThread::ErrorFileOpen :
|
||||
mStatusBar->setText(String(STRING_ERRORFILEOPEN)+*((String*)someCallbackData.lParam())+String("'."));
|
||||
break;
|
||||
case MCUThread::ErrorPortOpen :
|
||||
mStatusBar->setText(STRING_ERRORPORTOPEN);
|
||||
break;
|
||||
case MCUThread::ErrorPortSettings :
|
||||
mStatusBar->setText(STRING_ERRORPORTSETTINGS);
|
||||
break;
|
||||
case MCUThread::ErrorTimeout :
|
||||
mStatusBar->setText(STRING_ERRORTIMEOUT);
|
||||
break;
|
||||
case MCUThread::ErrorReadError :
|
||||
mStatusBar->setText(STRING_ERRORREADERROR);
|
||||
break;
|
||||
case MCUThread::ErrorTalkBackFailure :
|
||||
mStatusBar->setText(STRING_ERRORTALKBACKFAILURE);
|
||||
break;
|
||||
case MCUThread::ErrorTalkBackData :
|
||||
mStatusBar->setText(STRING_ERRORTALKBACKDATA);
|
||||
break;
|
||||
}
|
||||
mMCUDialog.enableStart(TRUE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::mcuEventHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(MCUThread::MCUEvent(someCallbackData.wParam()))
|
||||
{
|
||||
case MCUThread::EventString :
|
||||
handleStringData(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventSingleByte :
|
||||
handleSingleByteData(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventDoubleByte :
|
||||
handleEventDoubleByte(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventQuadByte :
|
||||
handleEventQuadByte(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventVarByte :
|
||||
handleEventVarByte(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventRegs :
|
||||
handleEventRegs(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventEnd :
|
||||
mMCUDialog.enableStart(TRUE);
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void MCUView::handleEventRegs(CallbackData &someCallbackData)
|
||||
{
|
||||
GlobalData<BYTE> ®Data=(GlobalData<BYTE> &)*((GlobalData<BYTE> *)someCallbackData.lParam());
|
||||
mMCUDialog.setRegisters(regData);
|
||||
}
|
||||
|
||||
void MCUView::handleEventVarByte(CallbackData &someCallbackData)
|
||||
{
|
||||
GlobalData<BYTE> &byteData=(GlobalData<BYTE> &)*((GlobalData<BYTE> *)someCallbackData.lParam());
|
||||
mMCUDialog.setVarByteData(byteData);
|
||||
}
|
||||
|
||||
void MCUView::handleEventQuadByte(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setQuadByteData(*((DWORD*)someCallbackData.lParam()));
|
||||
}
|
||||
|
||||
void MCUView::handleEventDoubleByte(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setDoubleByteData(*((WORD*)someCallbackData.lParam()));
|
||||
}
|
||||
|
||||
void MCUView::handleSingleByteData(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setSingleByteData(*((BYTE*)someCallbackData.lParam()));
|
||||
}
|
||||
|
||||
void MCUView::handleStringData(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setStringData(*((String*)someCallbackData.lParam()));
|
||||
}
|
||||
|
||||
// *** virtuals
|
||||
|
||||
void MCUView::preRegister(WNDCLASS &wndClass)
|
||||
{
|
||||
wndClass.hbrBackground =(HBRUSH)COLOR_APPWORKSPACE;
|
||||
}
|
||||
|
||||
void MCUView::preCreate(MDICREATESTRUCT &createStruct)
|
||||
{
|
||||
createStruct.cx=InitialWidth;
|
||||
createStruct.cy=InitialHeight;
|
||||
createStruct.style^=WS_THICKFRAME;
|
||||
}
|
||||
66
m68hc11/MCUVIEW.HPP
Normal file
@@ -0,0 +1,66 @@
|
||||
#ifndef _M68HC11_MCUVIEW_HPP_
|
||||
#define _M68HC11_MCUVIEW_HPP_
|
||||
#ifndef _COMMON_MDIWIN_HPP_
|
||||
#include <common/mdiwin.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_GLOBALDATA_HPP_
|
||||
#include <common/gdata.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_MCUDLG_HPP_
|
||||
#include <m68hc11/mcudlg.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_MCUTHREAD_HPP_
|
||||
#include <m68hc11/mcuthrd.hpp>
|
||||
#endif
|
||||
|
||||
class StatusBarEx;
|
||||
|
||||
class MCUView : public MDIWindow, public MCUThread
|
||||
{
|
||||
public:
|
||||
MCUView(void);
|
||||
virtual ~MCUView();
|
||||
void setCode(const String &strPathBinary);
|
||||
protected:
|
||||
virtual void preRegister(WNDCLASS &wndClass);
|
||||
virtual void preCreate(MDICREATESTRUCT &createStruct);
|
||||
private:
|
||||
enum {StatusBarID=101,InitialWidth=565,InitialHeight=360};
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType cancelHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType startHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType errorEventHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType mcuEventHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType messageHandler(CallbackData &someCallbackData);
|
||||
void handleEventRegs(CallbackData &someCallbackData);
|
||||
void handleEventVarByte(CallbackData &someCallbackData);
|
||||
void handleEventQuadByte(CallbackData &someCallbackData);
|
||||
void handleEventDoubleByte(CallbackData &someCallbackData);
|
||||
void handleSingleByteData(CallbackData &someCallbackData);
|
||||
void handleStringData(CallbackData &someCallbackData);
|
||||
|
||||
Callback<MCUView> mCreateHandler;
|
||||
Callback<MCUView> mSizeHandler;
|
||||
Callback<MCUView> mCloseHandler;
|
||||
Callback<MCUView> mDestroyHandler;
|
||||
Callback<MCUView> mCommandHandler;
|
||||
Callback<MCUView> mCancelHandler;
|
||||
Callback<MCUView> mStartHandler;
|
||||
Callback<MCUView> mErrorEventHandler;
|
||||
Callback<MCUView> mMCUEventHandler;
|
||||
Callback<MCUView> mMessageHandler;
|
||||
SmartPointer<StatusBarEx> mStatusBar;
|
||||
MCUDlg mMCUDialog;
|
||||
String mStrPathBinary;
|
||||
};
|
||||
|
||||
inline
|
||||
void MCUView::setCode(const String &strPathBinary)
|
||||
{
|
||||
mStrPathBinary=strPathBinary;
|
||||
}
|
||||
#endif
|
||||
BIN
m68hc11/MOT.BMP
Normal file
|
After Width: | Height: | Size: 630 B |
BIN
m68hc11/MOT.ICO
Normal file
|
After Width: | Height: | Size: 766 B |
BIN
m68hc11/MOT.~IC
Normal file
|
After Width: | Height: | Size: 766 B |
529
m68hc11/Mainfrm.cpp
Normal file
@@ -0,0 +1,529 @@
|
||||
#include <m68hc11/mainfrm.hpp>
|
||||
#include <m68hc11/serdlg.hpp>
|
||||
#include <m68hc11/codeview.hpp>
|
||||
#include <m68hc11/mcuview.hpp>
|
||||
#include <m68hc11/cmpdlg.hpp>
|
||||
#include <m68hc11/m68reg.hpp>
|
||||
#include <m68hc11/splash.hpp>
|
||||
#include <printman/printman.hpp>
|
||||
#include <common/assert.hpp>
|
||||
#include <common/opendlg.hpp>
|
||||
#include <common/gdata.hpp>
|
||||
#include <common/crsctrl.hpp>
|
||||
#include <common/diskinfo.hpp>
|
||||
|
||||
char MainFrame::szClassName[]="M68HC11";
|
||||
char MainFrame::szMenuName[]="mainMenu";
|
||||
|
||||
MainFrame::MainFrame(void)
|
||||
{
|
||||
mQueryEndSessionHandler.setCallback(this,&MainFrame::queryEndSessionHandler);
|
||||
mPaintHandler.setCallback(this,&MainFrame::paintHandler);
|
||||
mDestroyHandler.setCallback(this,&MainFrame::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&MainFrame::commandHandler);
|
||||
mSizeHandler.setCallback(this,&MainFrame::sizeHandler);
|
||||
mCreateHandler.setCallback(this,&MainFrame::createHandler);
|
||||
mLineHandler.setCallback(this,&MainFrame::lineHandler);
|
||||
insertHandlers();
|
||||
}
|
||||
|
||||
MainFrame::~MainFrame()
|
||||
{
|
||||
destroy();
|
||||
}
|
||||
|
||||
void MainFrame::insertHandlers(void)
|
||||
{
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler);
|
||||
}
|
||||
|
||||
void MainFrame::removeHandlers(void)
|
||||
{
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
removeHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::createHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
GlobalData<int> statParts;
|
||||
|
||||
createToolBar();
|
||||
mStatusBar=::new StatusBarEx(*this,StatusBarID);
|
||||
mStatusBar.disposition(PointerDisposition::Delete);
|
||||
statParts.size(2);
|
||||
*((int*)&statParts[0])=300;
|
||||
*((int*)&statParts[1])=400;
|
||||
mStatusBar->setParts(statParts);
|
||||
mStatusBar->setText("Ready");
|
||||
applyHistory(getFrameMenu());
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::destroyHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
removeHandlers();
|
||||
::PostQuitMessage(0);
|
||||
::WinHelp(*this,0,HELP_QUIT,0);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::queryEndSessionHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(getClient().hasChildren())return (CallbackData::ReturnType)FALSE;
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::sizeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
Rect statusRect;
|
||||
Rect toolRect;
|
||||
Rect cRect;
|
||||
|
||||
mToolBar.windowRect(toolRect);
|
||||
mStatusBar->windowRect(statusRect);
|
||||
cRect.right(someCallbackData.loWord());
|
||||
cRect.bottom(someCallbackData.hiWord());
|
||||
getClient().moveWindow(0,toolRect.bottom()-toolRect.top(),cRect.right(),cRect.bottom()-((statusRect.bottom()-statusRect.top())+(toolRect.bottom()-toolRect.top())));
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::lineHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
String msg;
|
||||
::sprintf(msg,"Ln %d, Col %d",someCallbackData.loWord(),someCallbackData.hiWord());
|
||||
mStatusBar->setText(msg,1);
|
||||
mStatusBar->update();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::paintHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wmCommandID())
|
||||
{
|
||||
case MenuCodeCompile :
|
||||
handleCodeCompile();
|
||||
break;
|
||||
case MenuCodeCompileAndLoad :
|
||||
handleCodeCompileAndLoad();
|
||||
break;
|
||||
case MenuEditCut :
|
||||
handleEditCut();
|
||||
break;
|
||||
case MenuEditCopy :
|
||||
handleEditCopy();
|
||||
break;
|
||||
case MenuEditPaste :
|
||||
handleEditPaste();
|
||||
break;
|
||||
case MenuEditFind :
|
||||
handleEditFind();
|
||||
break;
|
||||
case MenuCascade :
|
||||
cascade();
|
||||
break;
|
||||
case MenuTile :
|
||||
tile();
|
||||
break;
|
||||
case MenuArrange :
|
||||
arrange();
|
||||
break;
|
||||
case MenuCloseAll :
|
||||
closeAll();
|
||||
break;
|
||||
case MenuMinimizeAll :
|
||||
minimizeAll();
|
||||
break;
|
||||
case MenuRestoreAll :
|
||||
restoreAll();
|
||||
break;
|
||||
case MenuFileNew :
|
||||
handleFileNew();
|
||||
break;
|
||||
case MenuFileOpen :
|
||||
handleFileOpen();
|
||||
break;
|
||||
case MenuFileSave :
|
||||
handleFileSave();
|
||||
break;
|
||||
case MenuFilePrint :
|
||||
handleFilePrint();
|
||||
break;
|
||||
case MenuFileSaveAs :
|
||||
handleFileSaveAs();
|
||||
break;
|
||||
case MenuFileClose :
|
||||
handleFileClose();
|
||||
break;
|
||||
case MenuCompiler :
|
||||
handleMenuCompiler();
|
||||
break;
|
||||
case MenuFileQuit :
|
||||
handleQuit();
|
||||
break;
|
||||
case MenuSettingsSerial :
|
||||
handleCommunications();
|
||||
break;
|
||||
case MenuHelpContents :
|
||||
handleHelp();
|
||||
break;
|
||||
case MenuHelpSearch :
|
||||
handleHelp();
|
||||
break;
|
||||
case MenuRegistration :
|
||||
break;
|
||||
case MenuHelpAbout :
|
||||
break;
|
||||
}
|
||||
if(someCallbackData.wParam()>=StartDynamicID)handleFileOpen(someCallbackData);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
// handlers
|
||||
|
||||
void MainFrame::handleCodeCompile(void)
|
||||
{
|
||||
CursorControl cursorControl;
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
Block<String> includePath;
|
||||
String strMessage;
|
||||
M68Reg m68Reg;
|
||||
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
CodeView &codeView=(CodeView&)*mdiWindow;
|
||||
if(codeView.isDirty()&&IDYES==::MessageBox(*this,(LPSTR)"Save Changes?",(LPSTR)"M68HC11",MB_YESNO))if(!handleFileSave())return;
|
||||
mStatusBar->setText("compiling...");
|
||||
cursorControl.waitCursor(TRUE);
|
||||
m68Reg.getIncludePath(includePath);
|
||||
m68Assembler.assemble(codeView.getTitle(),includePath);
|
||||
cursorControl.waitCursor(FALSE);
|
||||
strMessage=m68Assembler.strLastMessage()+String(", code size is ")+String().fromInt(m68Assembler.codeSize())+String(" byte(s).");
|
||||
mStatusBar->setText(strMessage);
|
||||
}
|
||||
|
||||
void MainFrame::handleCodeCompileAndLoad(void)
|
||||
{
|
||||
CursorControl cursorControl;
|
||||
Block<String> includePath;
|
||||
bool assembleResult;
|
||||
String strPathBinary;
|
||||
String strMessage;
|
||||
M68Reg m68Reg;
|
||||
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
CodeView &codeView=(CodeView&)*mdiWindow;
|
||||
if(codeView.isDirty()&&IDYES==::MessageBox(*this,(LPSTR)"Save Changes?",(LPSTR)"M68HC11",MB_YESNO))if(!handleFileSave())return;
|
||||
mStatusBar->setText("compiling...");
|
||||
cursorControl.waitCursor(TRUE);
|
||||
m68Reg.getIncludePath(includePath);
|
||||
assembleResult=m68Assembler.assemble(codeView.getTitle(),includePath);
|
||||
cursorControl.waitCursor(FALSE);
|
||||
strMessage=m68Assembler.strLastMessage()+String(", code size is ")+String().fromInt(m68Assembler.codeSize())+String(" byte(s).");
|
||||
mStatusBar->setText(strMessage);
|
||||
if(!assembleResult)return;
|
||||
strPathBinary=codeView.getTitle().betweenString(0,'.');
|
||||
strPathBinary+=".bin";
|
||||
codeLoad(strPathBinary);
|
||||
}
|
||||
|
||||
void MainFrame::handleEditCut(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).cut();
|
||||
}
|
||||
|
||||
void MainFrame::handleEditCopy(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).copy();
|
||||
}
|
||||
|
||||
void MainFrame::handleEditPaste(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).paste();
|
||||
}
|
||||
|
||||
void MainFrame::handleEditFind(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).find();
|
||||
}
|
||||
|
||||
void MainFrame::handleFileNew(void)
|
||||
{
|
||||
CodeView *pCodeView;
|
||||
|
||||
pCodeView=::new CodeView;
|
||||
pCodeView->setLineHandler(&mLineHandler);
|
||||
pCodeView->createWindow(*this,STRING_CODEVIEWCLASSNAME,STRING_CODEVIEWCLASSNAME,"codeMenu","Doc");
|
||||
insert(*pCodeView);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileOpen(CallbackData &someCallbackData)
|
||||
{
|
||||
PureMenu fileMenu;
|
||||
String menuItemString;
|
||||
|
||||
getFrameMenu().getSubMenu(0,fileMenu);
|
||||
menuItemString=fileMenu.menuItemString(someCallbackData.wParam(),PureMenu::ByCommand);
|
||||
if(menuItemString.isNull())return;
|
||||
menuItemString=menuItemString.betweenString(')',0);
|
||||
menuItemString.trimLeft();
|
||||
handleFileOpen(menuItemString);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileOpen(void)
|
||||
{
|
||||
OpenDialog openDialog;
|
||||
String strPathFileName;
|
||||
|
||||
if(!openDialog.getOpenFileName(*this,"*.asm","Open File","*.asm",strPathFileName))return;
|
||||
handleFileOpen(strPathFileName);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileOpen(const String &strPathFileName)
|
||||
{
|
||||
CodeView *pCodeView;
|
||||
CursorControl cursorControl;
|
||||
|
||||
if(bringDocumentToFront(strPathFileName))return;
|
||||
mStatusBar->setText("Loading...");
|
||||
cursorControl.waitCursor(TRUE);
|
||||
|
||||
pCodeView=::new CodeView;
|
||||
insert(*pCodeView); // insert the pointer before creating/activating the window
|
||||
pCodeView->createWindow(*this,STRING_CODEVIEWCLASSNAME,STRING_CODEVIEWCLASSNAME,"codeMenu","Doc");
|
||||
pCodeView->setLineHandler(&mLineHandler);
|
||||
pCodeView->open(strPathFileName);
|
||||
mStatusBar->setText("Ready");
|
||||
cursorControl.waitCursor(FALSE);
|
||||
updateHistory(strPathFileName);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileClose(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
mdiWindow->close();
|
||||
}
|
||||
|
||||
void MainFrame::handleFilePrint(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).print();
|
||||
}
|
||||
|
||||
BOOL MainFrame::handleFileSave(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return FALSE;
|
||||
CodeView &codeView=(CodeView&)*mdiWindow;
|
||||
if(codeView.getTitle()==String(STRING_UNTITLED))return handleFileSaveAs();
|
||||
if(!codeView.save())return mStatusBar->setText(codeView.getTitle()+String(" save failed.")),FALSE;
|
||||
return mStatusBar->setText(codeView.getTitle()+String(" saved.")),TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL MainFrame::handleFileSaveAs(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
OpenDialog openDialog;
|
||||
String strPathFileName;
|
||||
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return FALSE;
|
||||
if(!openDialog.getSaveFileName(*this,"Assembly Files","File Save","*.asm",strPathFileName))return FALSE;
|
||||
if(!strPathFileName.strstr(".asm"))strPathFileName+=".asm";
|
||||
if(!((CodeView&)*mdiWindow).save(strPathFileName))return mStatusBar->setText(strPathFileName+String(" save failed!.")),FALSE;
|
||||
return mStatusBar->setText(strPathFileName+String(" saved.")),TRUE;
|
||||
}
|
||||
|
||||
void MainFrame::handleCommunications(void)
|
||||
{
|
||||
SerialDlg serDlg;
|
||||
serDlg.perform(*this);
|
||||
}
|
||||
|
||||
void MainFrame::handleHelp(void)
|
||||
{
|
||||
String strPathHelpFileName;
|
||||
DiskInfo diskInfo;
|
||||
|
||||
diskInfo.getCurrentDirectory(strPathHelpFileName);
|
||||
strPathHelpFileName+=String(STRING_HELPFILENAME);
|
||||
::WinHelp(*this,strPathHelpFileName,HELP_CONTENTS,0);
|
||||
}
|
||||
|
||||
void MainFrame::handleMenuCompiler()
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
CMPDlg cmpDlg;
|
||||
Block<String> pathDirList;
|
||||
|
||||
m68Reg.getIncludePath(pathDirList);
|
||||
cmpDlg.setIncludePath(pathDirList);
|
||||
if(cmpDlg.perform(*this))
|
||||
{
|
||||
cmpDlg.getIncludePath(pathDirList);
|
||||
m68Reg.setIncludePath(pathDirList);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void MainFrame::handleQuit()
|
||||
{
|
||||
postMessage(*this,WM_CLOSE,0,0L);
|
||||
}
|
||||
|
||||
// support & testing
|
||||
BOOL MainFrame::codeLoad(const String &strPathBinary)
|
||||
{
|
||||
MCUView *pMCUView;
|
||||
|
||||
pMCUView=::new MCUView;
|
||||
pMCUView->createWindow(*this,STRING_MCUVIEWCLASSNAME,STRING_MCUVIEWCLASSNAME,"mcuMenu","Doc");
|
||||
insert(*pMCUView);
|
||||
pMCUView->setCode(strPathBinary);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void MainFrame::setParts(int numParts)
|
||||
{
|
||||
GlobalData<int> statParts;
|
||||
if(1==numParts){statParts.size(1);*((int*)&statParts[0])=FirstPartWidth;}
|
||||
else {statParts.size(2);*((int*)&statParts[0])=FirstPartWidth;*((int*)&statParts[0]+1)=SecondPartWidth;}
|
||||
mStatusBar->setParts(statParts);
|
||||
}
|
||||
|
||||
void MainFrame::updateHistory(const String &pathFileName)
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
Array<SmartPointer<MDIWindow> >mdiWindows;
|
||||
|
||||
if(!m68Reg.insertHistory(pathFileName))return;
|
||||
removeHistory(getFrameMenu());
|
||||
applyHistory(getFrameMenu());
|
||||
getDocuments(mdiWindows);
|
||||
for(int index=0;index<mdiWindows.size();index++)
|
||||
{
|
||||
SmartPointer<MDIWindow> &mdiWindow=mdiWindows[index];
|
||||
removeHistory(mdiWindow->getMenu());
|
||||
applyHistory(mdiWindow->getMenu());
|
||||
}
|
||||
}
|
||||
|
||||
void MainFrame::removeHistory(PureMenu &pureMenu)
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
UINT startID(StartDynamicID);
|
||||
Block<String> nameList;
|
||||
PureMenu fileMenu;
|
||||
|
||||
m68Reg.getHistory(nameList);
|
||||
if(!nameList.size())return;
|
||||
pureMenu.getSubMenu(0,fileMenu);
|
||||
for(int itemIndex=0;itemIndex<nameList.size();itemIndex++)fileMenu.removeMenu(startID++,PureMenu::ByCommand);
|
||||
int entries(fileMenu.size());
|
||||
if((int)PureMenu::TypeSeparator&(int)fileMenu.getMenuItemType(entries-1,PureMenu::ByPosition))fileMenu.removeMenu(entries-1,PureMenu::ByPosition);
|
||||
}
|
||||
|
||||
void MainFrame::applyHistory(PureMenu &pureMenu)
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
Block<String> nameList;
|
||||
PureMenu fileMenu;
|
||||
String strItem;
|
||||
|
||||
m68Reg.getHistory(nameList);
|
||||
if(!nameList.size())return;
|
||||
pureMenu.getSubMenu(0,fileMenu);
|
||||
fileMenu.appendSeparator();
|
||||
for(int itemIndex=0;itemIndex<nameList.size();itemIndex++)
|
||||
{
|
||||
::sprintf(strItem,"%d) %s",itemIndex+1,(char*)nameList[itemIndex]);
|
||||
fileMenu.appendMenu(StartDynamicID+itemIndex,strItem);
|
||||
}
|
||||
}
|
||||
|
||||
void MainFrame::createToolBar(void)
|
||||
{
|
||||
Block<AddBitmap> addBitmaps;
|
||||
|
||||
mToolBar.create(*this,ToolBarID);
|
||||
addBitmaps.insert(&AddBitmap(0,HINST_COMMCTRL));
|
||||
if(!mToolBar.addBitmaps(addBitmaps))return;
|
||||
mToolBar.addButton(ToolBarButton(STD_FILENEW,MenuFileNew,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FILEOPEN,MenuFileOpen,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FILESAVE,MenuFileSave,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PRINT,MenuFilePrint,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_CUT,MenuEditCut,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_COPY,MenuEditCopy,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PASTE,MenuEditPaste,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FIND,MenuEditFind,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PRINT,MenuFilePrint,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
}
|
||||
|
||||
BOOL MainFrame::bringDocumentToFront(const String &strTitle)
|
||||
{
|
||||
Array<SmartPointer<MDIWindow> >mdiWindows;
|
||||
|
||||
getDocuments(mdiWindows);
|
||||
for(int index=0;index<mdiWindows.size();index++)
|
||||
{
|
||||
SmartPointer<MDIWindow> &mdiWindow=mdiWindows[index];
|
||||
if(((CodeView&)*mdiWindow).getTitle()==strTitle){mdiWindow->bringWindowToTop();return TRUE;}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void MainFrame::splash(void)
|
||||
{
|
||||
SplashScreen splashScreen("SPLASH","M68HC11");
|
||||
splashScreen.perform();
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
void MainFrame::mdiDestroy(MDIWindow &mdiWindow)
|
||||
{
|
||||
Array<SmartPointer<MDIWindow> >mdiWindows;
|
||||
WORD winCount(0);
|
||||
|
||||
getDocuments(mdiWindows);
|
||||
for(int index=0;index<mdiWindows.size();index++)
|
||||
{
|
||||
SmartPointer<MDIWindow> &mdiWindowPtr=mdiWindows[index];
|
||||
if(mdiWindowPtr->className()==String(STRING_CODEVIEWCLASSNAME)&&((MDIWindow*)mdiWindowPtr!=&mdiWindow))winCount++;
|
||||
}
|
||||
if(!winCount)setParts(SinglePart);
|
||||
}
|
||||
|
||||
void MainFrame::mdiActivate(MDIWindow &mdiWindow)
|
||||
{
|
||||
if(mdiWindow.className()==String(STRING_CODEVIEWCLASSNAME))setParts(DoublePart);
|
||||
removeHistory(mdiWindow.getMenu());
|
||||
applyHistory(mdiWindow.getMenu());
|
||||
}
|
||||
|
||||
void MainFrame::mdiDeactivate(MDIWindow &/*mdiWindow*/)
|
||||
{
|
||||
}
|
||||
112
m68hc11/Mainfrm.hpp
Normal file
@@ -0,0 +1,112 @@
|
||||
#ifndef _M68HC11_MAINFRAME_HPP_
|
||||
#define _M68HC11_MAINFRAME_HPP_
|
||||
#ifndef _COMMON_MDIFRM_HPP_
|
||||
#include <common/mdifrm.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _STATBAR_STATUSBAREX_HPP_
|
||||
#include <statbar/statbarx.hpp>
|
||||
#endif
|
||||
#ifndef _TOOLBAR_TOOLBAR_HPP_
|
||||
#include <toolbar/toolbar.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_COMMCONTROL_HPP_
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_M68HC11_HPP_
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#endif
|
||||
#ifndef _AS68HC11_M68ASSEMBLER_HPP_
|
||||
#include <as68hc11/asm6811.hpp>
|
||||
#endif
|
||||
|
||||
class MainFrame : public FrameWindow
|
||||
{
|
||||
public:
|
||||
MainFrame(void);
|
||||
virtual ~MainFrame();
|
||||
static String className(void);
|
||||
void splash(void);
|
||||
protected:
|
||||
virtual void mdiDestroy(MDIWindow &mdiWindow);
|
||||
virtual void mdiActivate(MDIWindow &mdiWindow);
|
||||
virtual void mdiDeactivate(MDIWindow &mdiWindow);
|
||||
private:
|
||||
enum {StatusBarID=500,ToolBarID=501,StartDynamicID=30000};
|
||||
enum{SinglePart=1,DoublePart=2,FirstPartWidth=340,SecondPartWidth=420};
|
||||
enum{MenuFileSave=SBCMENU_FILESAVE,MenuFileQuit=SBCMENU_FILEQUIT,MenuFilePrint=SBCMENU_FILEPRINT,
|
||||
MenuSettingsSerial=SBCMENU_SETTINGSSERIAL,MenuHelpContents=SBCMENU_HELPCONTENTS,
|
||||
MenuHelpSearch=SBCMENU_HELPSEARCH,MenuRegistration=SBCMENU_REGISTRATION,MenuFileNew=SBCMENU_FILENEW,
|
||||
MenuFileOpen=SBCMENU_FILEOPEN,MenuHelpAbout=SBCMENU_HELPABOUT,MenuFileClose=SBCMENU_FILECLOSE,
|
||||
MenuFileSaveAs=SBCMENU_FILESAVEAS,MenuCascade=IDM_CASCADE,MenuTile=IDM_TILE,MenuArrange=IDM_ARRANGE,
|
||||
MenuCloseAll=IDM_CLOSEALL,MenuMinimizeAll=IDM_MINIMIZEALL,MenuRestoreAll=IDM_RESTOREALL,
|
||||
MenuEditCut=SBCMENU_EDITCUT,MenuEditCopy=SBCMENU_EDITCOPY,MenuEditPaste=SBCMENU_EDITPASTE,
|
||||
MenuEditFind=SBCMENU_EDITFIND,MenuCodeCompile=SBCMENU_CODECOMPILE,MenuCompiler=SBCMENU_COMPILER,
|
||||
MenuCodeCompileAndLoad=SBCMENU_CODECOMPILEANDLOAD};
|
||||
CallbackData::ReturnType queryEndSessionHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType timerHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType activateAppHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType displayChangeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType lineHandler(CallbackData &someCallbackData);
|
||||
void createToolBar(void);
|
||||
void handleMenuCompiler();
|
||||
void handleCodeCompile(void);
|
||||
void handleCodeCompileAndLoad(void);
|
||||
void handleCommunications(void);
|
||||
void handleEditCut(void);
|
||||
void handleEditCopy(void);
|
||||
void handleEditPaste(void);
|
||||
void handleEditFind(void);
|
||||
void handleFileNew(void);
|
||||
void handleFileOpen(void);
|
||||
void handleFileOpen(CallbackData &someCallbackData);
|
||||
void handleFileOpen(const String &strPathFileName);
|
||||
void handleFileClose(void);
|
||||
void handleFilePrint(void);
|
||||
void handleHelp(void);
|
||||
void handleQuit(void);
|
||||
BOOL handleFileSave(void);
|
||||
BOOL handleFileSaveAs(void);
|
||||
BOOL codeLoad(const String &strPathBinary);
|
||||
void registerClass(void)const;
|
||||
void insertHandlers(void);
|
||||
void removeHandlers(void);
|
||||
void setParts(int numParts);
|
||||
void applyHistory(PureMenu &pureMenu);
|
||||
void updateHistory(const String &pathFileName);
|
||||
void removeHistory(PureMenu &pureMenu);
|
||||
BOOL bringDocumentToFront(const String &strTitle);
|
||||
|
||||
Callback<MainFrame> mQueryEndSessionHandler;
|
||||
Callback<MainFrame> mPaintHandler;
|
||||
Callback<MainFrame> mDestroyHandler;
|
||||
Callback<MainFrame> mCommandHandler;
|
||||
Callback<MainFrame> mSizeHandler;
|
||||
Callback<MainFrame> mCreateHandler;
|
||||
Callback<MainFrame> mLineHandler;
|
||||
SmartPointer<StatusBarEx> mStatusBar;
|
||||
CommControl mCommControl;
|
||||
ToolBar mToolBar;
|
||||
// SerialSettings mSerialSettings;
|
||||
M68Assembler m68Assembler;
|
||||
static char szClassName[];
|
||||
static char szMenuName[];
|
||||
};
|
||||
|
||||
inline
|
||||
String MainFrame::className(void)
|
||||
{
|
||||
return String(szClassName);
|
||||
}
|
||||
#endif
|
||||
129
m68hc11/ODLSTLED.CPP
Normal file
@@ -0,0 +1,129 @@
|
||||
#include <m68hc11/odlstled.hpp>
|
||||
#include <common/drawitem.hpp>
|
||||
#include <common/measure.hpp>
|
||||
#include <common/purebmp.hpp>
|
||||
|
||||
OwnerDrawListBinaryLed::OwnerDrawListBinaryLed(GUIWindow &parentWnd,HWND hControlWnd,UINT controlID)
|
||||
: OwnerDrawList(parentWnd,hControlWnd,controlID), mRGBGray(192,192,192), mGrayBrush(mRGBGray),
|
||||
mDisabledBrush(RGBColor(128,128,128)), mOneBitmap("ONE"), mZeroBitmap("ZERO"), mBlankBitmap("BLANK"),
|
||||
mDashBitmap("DASH"), mFont("Courier",14)
|
||||
{
|
||||
}
|
||||
|
||||
OwnerDrawListBinaryLed::OwnerDrawListBinaryLed(GUIWindow &parentWnd,const Rect &initRect,int controlID,DWORD style)
|
||||
: OwnerDrawList(parentWnd,initRect,controlID,style), mRGBGray(192,192,192), mGrayBrush(mRGBGray),
|
||||
mDisabledBrush(RGBColor(128,128,128)), mOneBitmap("ONE"), mZeroBitmap("ZERO"), mBlankBitmap("BLANK"),
|
||||
mDashBitmap("DASH"), mFont("Courier",14)
|
||||
{
|
||||
}
|
||||
|
||||
OwnerDrawListBinaryLed::~OwnerDrawListBinaryLed()
|
||||
{
|
||||
}
|
||||
|
||||
OwnerDrawListBinaryLed &OwnerDrawListBinaryLed::operator=(const OwnerDrawListBinaryLed &/*someOwnerDrawListBinaryLed*/)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
// **** virtuals
|
||||
|
||||
LPARAM OwnerDrawListBinaryLed::handleControlColor(PureDevice &/*pureDevice*/,Control &/*wndListBox*/)
|
||||
{
|
||||
return (LPARAM)(GDIObj)mGrayBrush;
|
||||
}
|
||||
|
||||
WORD OwnerDrawListBinaryLed::handleDraw(const DrawItem &drawItem)
|
||||
{
|
||||
if(!isOkay()||-1==drawItem.itemID()||DrawItem::ListBox!=drawItem.controlType())return FALSE;
|
||||
PureDevice pureDevice(drawItem.deviceContext());
|
||||
pureDevice.setBkColor(mRGBGray);
|
||||
switch(drawItem.itemAction())
|
||||
{
|
||||
case DrawItem::Select :
|
||||
case DrawItem::DrawEntire :
|
||||
case DrawItem::Focus :
|
||||
drawEntire(drawItem);
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
WORD OwnerDrawListBinaryLed::handleMeasureItem(MeasureItem &measureItem)
|
||||
{
|
||||
measureItem.itemHeight(20);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void OwnerDrawListBinaryLed::drawEntire(const DrawItem &drawItem)
|
||||
{
|
||||
PureDevice pureDevice(drawItem.deviceContext());
|
||||
PureDevice memDevice;
|
||||
String stringData;
|
||||
String strNumber;
|
||||
TEXTMETRIC textMetric;
|
||||
Rect drawRect;
|
||||
SIZE sizeExtent;
|
||||
HFONT hPrevFont;
|
||||
|
||||
if(!isOkay())return;
|
||||
stringData.reserve(256);
|
||||
drawRect=drawItem.rectItem();
|
||||
hPrevFont=(HFONT)::SelectObject(drawItem.deviceContext(),(GDIObj)mFont);
|
||||
memDevice.compatibleDevice(pureDevice);
|
||||
sendMessage(drawItem.hwndItem(),LB_GETTEXT,drawItem.itemID(),(LPARAM)(LPSTR)stringData);
|
||||
strNumber=stringData.betweenString('\t',0);
|
||||
if(strNumber.isNull())setBitmap();
|
||||
else
|
||||
{
|
||||
setBitmap(::atoi(strNumber));
|
||||
stringData=stringData.betweenString(0,'\t');
|
||||
}
|
||||
if(stringData.isNull())::MessageBeep(0);
|
||||
::GetTextMetrics(drawItem.deviceContext(),&textMetric);
|
||||
::GetTextExtentPoint32(drawItem.deviceContext(),(LPSTR)stringData,stringData.length(),&sizeExtent);
|
||||
if(drawItem.itemState()&ODS_DISABLED)
|
||||
{
|
||||
::GrayString(drawItem.deviceContext(),(HBRUSH)(GDIObj)mDisabledBrush,(GRAYSTRINGPROC)0,(LPARAM)(LPSTR)stringData,stringData.length(),mBlankBitmap.width()+6,(drawRect.bottom()+drawRect.top()-textMetric.tmHeight)/2,0,0);
|
||||
memDevice.select(mBlankBitmap,TRUE);
|
||||
Rect stretchRect(drawRect);
|
||||
stretchRect.right(mBlankBitmap.width());
|
||||
stretchRect.bottom(sizeExtent.cy);
|
||||
pureDevice.stretchBlt(stretchRect,memDevice,Rect(0,0,mBlankBitmap.width(),mBlankBitmap.height()),PureDevice::MergeCopy);
|
||||
memDevice.select(mBlankBitmap,FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
::TextOut(drawItem.deviceContext(),mBlankBitmap.width()+6,(drawRect.bottom()+drawRect.top()-textMetric.tmHeight)/2,(LPSTR)stringData,stringData.length());
|
||||
memDevice.select(mBlankBitmap,TRUE);
|
||||
Rect stretchRect(drawRect);
|
||||
stretchRect.right(mBlankBitmap.width());
|
||||
stretchRect.bottom(sizeExtent.cy);
|
||||
pureDevice.stretchBlt(stretchRect,memDevice,Rect(0,0,mBlankBitmap.width(),mBlankBitmap.height()),PureDevice::MergeCopy);
|
||||
memDevice.select(mBlankBitmap,FALSE);
|
||||
}
|
||||
if((((UINT)drawItem.itemState())&ODS_FOCUS))
|
||||
{
|
||||
Rect bmpRect(drawRect);
|
||||
bmpRect.right(bmpRect.left()+mBlankBitmap.width());
|
||||
bmpRect.bottom(bmpRect.top()+sizeExtent.cy);
|
||||
::DrawFocusRect(drawItem.deviceContext(),(RECT*)&bmpRect);
|
||||
}
|
||||
::SelectObject(drawItem.deviceContext(),hPrevFont);
|
||||
}
|
||||
|
||||
void OwnerDrawListBinaryLed::setBitmap(BYTE value)
|
||||
{
|
||||
for(int index=0,mask=0x80;index<8;index++,mask/=2)
|
||||
mBlankBitmap.setFrom(value&mask?mOneBitmap:mZeroBitmap,getPlacementRect(index));
|
||||
}
|
||||
|
||||
void OwnerDrawListBinaryLed::setBitmap(void)
|
||||
{
|
||||
for(int index=0,mask=0x80;index<8;index++,mask/=2)mBlankBitmap.setFrom(mDashBitmap,getPlacementRect(index));
|
||||
}
|
||||
|
||||
Rect OwnerDrawListBinaryLed::getPlacementRect(int position)
|
||||
{
|
||||
return Rect(position*CellWidth,0,CellWidth,CellHeight);
|
||||
}
|
||||
44
m68hc11/ODLSTLED.HPP
Normal file
@@ -0,0 +1,44 @@
|
||||
#ifndef _COMMON_OWNERDRAWLISTBINARYLED_HPP_
|
||||
#define _COMMON_OWNERDRAWLISTBINARYLED_HPP_
|
||||
#ifndef _COMMON_BRUSH_HPP_
|
||||
#include <common/brush.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_OWNERDRAWLIST_HPP_
|
||||
#include <common/odlist.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_PUREBITMAP_HPP_
|
||||
#include <common/purebmp.hpp>
|
||||
#endif
|
||||
|
||||
class OwnerDrawListBinaryLed : public OwnerDrawList
|
||||
{
|
||||
public:
|
||||
OwnerDrawListBinaryLed(GUIWindow &parentWnd,HWND hControlWnd,UINT controlID);
|
||||
OwnerDrawListBinaryLed(GUIWindow &parentWnd,const Rect &initRect,int controlID,DWORD style=LBS_NOTIFY|WS_BORDER|LBS_HASSTRINGS|WS_VSCROLL|LBS_OWNERDRAWFIXED|WS_CLIPCHILDREN|WS_CLIPSIBLINGS);
|
||||
virtual ~OwnerDrawListBinaryLed();
|
||||
OwnerDrawListBinaryLed &operator=(const OwnerDrawListBinaryLed &someOwnerDrawListBinaryLed);
|
||||
protected:
|
||||
virtual WORD handleDraw(const DrawItem &drawItem);
|
||||
virtual WORD handleMeasureItem(MeasureItem &measureItem);
|
||||
virtual LPARAM handleControlColor(PureDevice &pureDevice,Control &wndListBox);
|
||||
virtual void drawEntire(const DrawItem &drawItem);
|
||||
private:
|
||||
enum {BmSel=0,BmUnSel=1};
|
||||
enum {CellWidth=13,CellHeight=23};
|
||||
Rect getPlacementRect(int position);
|
||||
void setBitmap(BYTE value);
|
||||
void setBitmap(void);
|
||||
|
||||
PureBitmap mBlankBitmap;
|
||||
PureBitmap mOneBitmap;
|
||||
PureBitmap mZeroBitmap;
|
||||
PureBitmap mDashBitmap;
|
||||
Font mFont;
|
||||
RGBColor mRGBGray;
|
||||
Brush mGrayBrush;
|
||||
Brush mDisabledBrush;
|
||||
};
|
||||
#endif
|
||||
BIN
m68hc11/ONE.BMP
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
184
m68hc11/OPENDIR.CPP
Normal file
@@ -0,0 +1,184 @@
|
||||
#include <m68hc11/opendir.hpp>
|
||||
#include <common/guiwnd.hpp>
|
||||
#include <common/diskinfo.hpp>
|
||||
|
||||
OpenDirectory::OpenDirectory(void)
|
||||
{
|
||||
}
|
||||
|
||||
OpenDirectory::~OpenDirectory()
|
||||
{
|
||||
}
|
||||
|
||||
bool OpenDirectory::getOpenDirectory(GUIWindow &parentWindow,const String &titleString,const String &strInitialDirectory,String &strDirectory)
|
||||
{
|
||||
DiskInfo diskInfo;
|
||||
String strCurrentDirectory;
|
||||
|
||||
if(strInitialDirectory.isNull())diskInfo.getCurrentDirectory(strCurrentDirectory);
|
||||
else strCurrentDirectory=strInitialDirectory;
|
||||
owner(parentWindow);
|
||||
instance(parentWindow.processInstance());
|
||||
filter("..;.");
|
||||
filterPattern("..;.");
|
||||
fileName("");
|
||||
fileTitle("");
|
||||
initialDirectory(strCurrentDirectory);
|
||||
title(titleString);
|
||||
creationFlags(OpenDialog::EXPLORER|OpenDialog::FILEMUSTEXIST|OpenDialog::ENABLEHOOK);
|
||||
OpenDialog::hookProc((LPOFNHOOKPROC)getHookAddress());
|
||||
mLastFolderChange=String("");
|
||||
if(!getOpenFileName())return false;
|
||||
strDirectory=mLastFolderChange;
|
||||
return true;
|
||||
}
|
||||
|
||||
OpenDirectory::OpenDirectory(const OpenDirectory &someOpenDirectory)
|
||||
{ // private implementation
|
||||
*this=someOpenDirectory;
|
||||
}
|
||||
|
||||
OpenDirectory &OpenDirectory::operator=(const OpenDirectory &/*someOpenDirectory*/)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
UINT OpenDirectory::hookProc(HWND hDlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
|
||||
{
|
||||
UINT returnCode(false);
|
||||
switch(uiMsg)
|
||||
{
|
||||
case WM_NOTIFY :
|
||||
{
|
||||
LPOFNOTIFY pNotify=(LPOFNOTIFY)lParam;
|
||||
switch(pNotify->hdr.code)
|
||||
{
|
||||
case CDN_INITDONE :
|
||||
::EnableWindow(::GetDlgItem(getParent(),FileNameEditControlID),false);
|
||||
returnCode=handleInitDone();
|
||||
break;
|
||||
case CDN_SELCHANGE :
|
||||
returnCode=handleSelChange();
|
||||
break;
|
||||
case CDN_FOLDERCHANGE :
|
||||
returnCode=handleFolderChange();
|
||||
break;
|
||||
case CDN_SHAREVIOLATION :
|
||||
returnCode=handleShareViolation();
|
||||
break;
|
||||
case CDN_HELP :
|
||||
returnCode=handleHelp();
|
||||
break;
|
||||
case CDN_FILEOK :
|
||||
returnCode=handleFileOk();
|
||||
break;
|
||||
case CDN_TYPECHANGE :
|
||||
returnCode=handleTypeChange();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return returnCode;
|
||||
}
|
||||
|
||||
// helpers
|
||||
|
||||
bool OpenDirectory::getPathFileName(String &strPathFileName)
|
||||
{
|
||||
if(!getHandle())return false;
|
||||
strPathFileName.reserve(MaxString);
|
||||
return ::SendMessage(getParent(),CDM_GETFILEPATH,MaxString,(LPARAM)(LPSTR)strPathFileName);
|
||||
}
|
||||
|
||||
bool OpenDirectory::getFileName(String &strFileName)
|
||||
{
|
||||
if(!getHandle())return false;
|
||||
strFileName.reserve(MaxString);
|
||||
return ::SendMessage(getParent(),CDM_GETSPEC,MaxString,(LPARAM)(LPSTR)strFileName);
|
||||
}
|
||||
|
||||
bool OpenDirectory::getFolderPath(String &strFolderPath)
|
||||
{
|
||||
if(!getHandle())return false;
|
||||
strFolderPath.reserve(MaxString);
|
||||
return ::SendMessage(getParent(),CDM_GETFOLDERPATH,MaxString,(LPARAM)(LPSTR)strFolderPath);
|
||||
}
|
||||
|
||||
bool OpenDirectory::hideControl(UINT controlID)
|
||||
{
|
||||
if(!getHandle())return false;
|
||||
return ::SendMessage(getParent(),CDM_HIDECONTROL,controlID,0);
|
||||
}
|
||||
|
||||
bool OpenDirectory::setControlText(UINT controlID,const String &strControlText)const
|
||||
{
|
||||
if(!getHandle())return false;
|
||||
return ::SendMessage(getParent(),CDM_SETCONTROLTEXT,controlID,(LPARAM)(LPSTR)(String&)strControlText);
|
||||
}
|
||||
|
||||
bool OpenDirectory::getControlText(UINT controlID,String &strControlText)const
|
||||
{
|
||||
if(!getHandle())return false;
|
||||
strControlText.reserve(MaxString);
|
||||
return ::SendMessage(getParent(),WM_GETTEXT,MaxString,(LPARAM)(char*)strControlText);
|
||||
}
|
||||
|
||||
bool OpenDirectory::setDefaultExtension(const String &strDefaultExtension)
|
||||
{
|
||||
if(!getHandle()||strDefaultExtension.isNull())return false;
|
||||
return ::SendMessage(getParent(),CDM_SETDEFEXT,0,(LPARAM)(LPSTR)(String&)strDefaultExtension);
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
UINT OpenDirectory::handleInitDone(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
UINT OpenDirectory::handleSelChange(void)
|
||||
{
|
||||
String strFolderPath;
|
||||
|
||||
getFolderPath(strFolderPath);
|
||||
setControlText(FileNameEditControlID,strFolderPath);
|
||||
return false;
|
||||
}
|
||||
|
||||
UINT OpenDirectory::handleFolderChange(void)
|
||||
{
|
||||
String strFolderPath;
|
||||
|
||||
getFolderPath(strFolderPath);
|
||||
if(strFolderPath==mLastFolderChange)
|
||||
{
|
||||
setControlText(FileNameEditControlID,strFolderPath);
|
||||
::EndDialog(getParent(),TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
mLastFolderChange=strFolderPath;
|
||||
setControlText(FileNameEditControlID,strFolderPath);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
UINT OpenDirectory::handleShareViolation(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
UINT OpenDirectory::handleFileOk(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
UINT OpenDirectory::handleHelp(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
UINT OpenDirectory::handleTypeChange(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
42
m68hc11/OPENDIR.HPP
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef _M68HC11_OPENDIRECTORY_HPP_
|
||||
#define _M68HC11_OPENDIRECTORY_HPP_
|
||||
#ifndef _COMMON_OPENDIALOG_HPP_
|
||||
#include <common/opendlg.hpp>
|
||||
#endif
|
||||
#ifndef _HOOKPROC_OFNHOOK_HPP_
|
||||
#include <hookproc/ofnhook.hpp>
|
||||
#endif
|
||||
|
||||
class OpenDirectory : private OpenDialog, private OFNHook
|
||||
{
|
||||
public:
|
||||
OpenDirectory(void);
|
||||
virtual ~OpenDirectory();
|
||||
bool getOpenDirectory(GUIWindow &parentWindow,const String &titleString,const String &strInitialDirectory,String &strDirectory);
|
||||
protected:
|
||||
virtual UINT hookProc(HWND hDlg,UINT uiMsg,WPARAM wParam,LPARAM lParam);
|
||||
virtual UINT handleInitDone(void);
|
||||
virtual UINT handleSelChange(void);
|
||||
virtual UINT handleFolderChange(void);
|
||||
virtual UINT handleShareViolation(void);
|
||||
virtual UINT handleFileOk(void);
|
||||
virtual UINT handleHelp(void);
|
||||
virtual UINT handleTypeChange(void);
|
||||
|
||||
bool getPathFileName(String &strPathFileName);
|
||||
bool getFileName(String &strFileName);
|
||||
bool getFolderPath(String &strFolderPath);
|
||||
bool hideControl(UINT controlID);
|
||||
bool setDefaultExtension(const String &strDefaultExtension);
|
||||
bool getControlText(UINT controlID,String &strControlText)const;
|
||||
bool setControlText(UINT controlID,const String &strControlText)const;
|
||||
private:
|
||||
enum{FileNameEditControlID=0x480};
|
||||
enum{MaxString=256};
|
||||
OpenDirectory(const OpenDirectory &someOpenDirectory);
|
||||
OpenDirectory &operator=(const OpenDirectory &someOpenDirectory);
|
||||
|
||||
String mLastFolderChange;
|
||||
};
|
||||
#endif
|
||||
|
||||
0
m68hc11/PARSE.LOG
Normal file
764
m68hc11/SCRAPS.TXT
Normal file
@@ -0,0 +1,764 @@
|
||||
|
||||
|
||||
#if 0
|
||||
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/)
|
||||
{
|
||||
CommControl commControl;
|
||||
DeviceControlBlock deviceControlBlock;
|
||||
CommStatus commStatus;
|
||||
BYTE charByte;
|
||||
String strString;
|
||||
BYTE ioBuffer[256];
|
||||
DWORD eventMask;
|
||||
|
||||
commControl.open(CommControl::PortCOM1);
|
||||
if(!commControl.isOkay())return FALSE;
|
||||
commControl.getDeviceControlBlock(deviceControlBlock);
|
||||
deviceControlBlock.parity(DeviceControlBlock::ParityNone);
|
||||
deviceControlBlock.baudRate(1200);
|
||||
deviceControlBlock.dataBits(8);
|
||||
deviceControlBlock.stopBits(0);
|
||||
if(!commControl.setDeviceControlBlock(deviceControlBlock))::OutputDebugString("Set operation failed\n");
|
||||
|
||||
::OutputDebugString("waiting for break signal...\n");
|
||||
commControl.setEventMask(CommControl::EventBreak);
|
||||
commControl.waitEvent();
|
||||
::OutputDebugString("break received, loading code...\n");
|
||||
|
||||
for(int index=0;index<256;index++)ioBuffer[index]=index;
|
||||
charByte=0xFF;
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
commControl.write(ioBuffer,sizeof(ioBuffer));
|
||||
::memset(ioBuffer,0,sizeof(ioBuffer));
|
||||
|
||||
::OutputDebugString("receiving echo\n");
|
||||
while(TRUE)
|
||||
{
|
||||
commControl.clearError(commStatus);
|
||||
if(commStatus.bytesInReceiveQueue())
|
||||
{
|
||||
commControl.read(ioBuffer,sizeof(ioBuffer));
|
||||
for(index=0;index+8<sizeof(ioBuffer);index+=8)
|
||||
{
|
||||
::sprintf(strString,"%02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||
ioBuffer[index],ioBuffer[index+1],ioBuffer[index+2],ioBuffer[index+3],ioBuffer[index+4],
|
||||
ioBuffer[index+5],ioBuffer[index+6],ioBuffer[index+7]);
|
||||
::OutputDebugString(strString);
|
||||
}
|
||||
break;
|
||||
}
|
||||
::Sleep(1000);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if 0
|
||||
deviceControlBlock.binaryEnabled(TRUE);
|
||||
deviceControlBlock.enableParity(TRUE);
|
||||
deviceControlBlock.baudRate(1200);
|
||||
deviceControlBlock.parity(DeviceControlBlock::ParityNone);
|
||||
deviceControlBlock.dataBits(8);
|
||||
deviceControlBlock.stopBits(1);
|
||||
if(!commControl.setDeviceControlBlock(deviceControlBlock))
|
||||
{
|
||||
::GetLastError();
|
||||
::OutputDebugString("Set operation failed\n");
|
||||
}
|
||||
|
||||
|
||||
commControl.setEventMask(CommControl::EventAll);
|
||||
::OutputDebugString("waiting for event\n");
|
||||
// commControl.setBreak();
|
||||
commControl.waitEvent(eventMask);
|
||||
if(eventMask&CommControl::EventBreak)::OutputDebugString("break occurred\n");
|
||||
else ::OutputDebugString("some other event occurred\n");
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
commControl.getDeviceControlBlock(deviceControlBlock);
|
||||
|
||||
deviceControlBlock.baudRate(1200);
|
||||
deviceControlBlock.parity(DeviceControlBlock::ParityNone);
|
||||
// deviceControlBlock.dataBits(8);
|
||||
// deviceControlBlock.stopBits(1);
|
||||
if(!commControl.setDeviceControlBlock(deviceControlBlock))::OutputDebugString("Set operation failed\n");
|
||||
commControl.getDeviceControlBlock(deviceControlBlock);
|
||||
|
||||
|
||||
for(int index=0;index<256;index++)ioBuffer[index]=index;
|
||||
charByte=0xFF;
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
commControl.write(ioBuffer,sizeof(ioBuffer));
|
||||
::memset(ioBuffer,0,sizeof(ioBuffer));
|
||||
commControl.read(ioBuffer,sizeof(ioBuffer));
|
||||
for(index=0;index+8<sizeof(ioBuffer);index+=8)
|
||||
{
|
||||
::sprintf(strString,"%02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||
ioBuffer[index],ioBuffer[index+1],ioBuffer[index+2],ioBuffer[index+3],ioBuffer[index+4],
|
||||
ioBuffer[index+5],ioBuffer[index+6],ioBuffer[index+7]);
|
||||
::OutputDebugString(strString);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// commControl.writeLine("ATE1");
|
||||
// commControl.readLine(strString);
|
||||
/// commControl.writeLine("ATDT 5551212;");
|
||||
// commControl.readLine(strString);
|
||||
|
||||
|
||||
// while(TRUE)
|
||||
// {
|
||||
// ::OutputDebugString("sending 0xFF");
|
||||
// inByte=0xFF;
|
||||
// commControl.write(&inByte,sizeof(inByte));
|
||||
// ::OutputDebugString("attempting read...\n");
|
||||
// commControl.clearError(commStatus);
|
||||
// if(commStatus.bytesInReceiveQueue())
|
||||
// {
|
||||
// String strString;
|
||||
// for(int index=0;index<commStatus.bytesInReceiveQueue();index++)
|
||||
// {
|
||||
// commControl.read(&inByte,sizeof(inByte));
|
||||
// ::sprintf(strString,"%x %d\n",inByte);
|
||||
// ::OutputDebugString(strString);
|
||||
// ::MessageBeep(0);
|
||||
// }
|
||||
// }
|
||||
// else ::OutputDebugString("No data in receive queue.\n");
|
||||
// ::OutputDebugString("sleeping\n");
|
||||
// ::Sleep(1500);
|
||||
// }
|
||||
commControl.close();
|
||||
return FALSE;
|
||||
|
||||
// MainWindow mainWindow;
|
||||
// return mainWindow.messageLoop();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if 0
|
||||
#include <common/windows.hpp>
|
||||
#include <common/openfile.hpp>
|
||||
#include <common/block.hpp>
|
||||
#include <thread/mthread.hpp>
|
||||
#include <sbb/dcb.hpp>
|
||||
#include <sbb/commstat.hpp>
|
||||
#include <sbb/commctrl.hpp>
|
||||
#include <sbb/thmsgx.hpp>
|
||||
|
||||
void main(int argc,char **argv)
|
||||
{
|
||||
CommControl commControl;
|
||||
CommStatus commStatus;
|
||||
DeviceControlBlock deviceControlBlock;
|
||||
DeviceControlBlock sanityBlock;
|
||||
BYTE ioBuffer[256];
|
||||
|
||||
commControl.open(CommControl::PortCOM1);
|
||||
if(!commControl.isOkay())return;
|
||||
commControl.getDeviceControlBlock(deviceControlBlock);
|
||||
deviceControlBlock.parity(DeviceControlBlock::ParityNone);
|
||||
// deviceControlBlock.dataBits(8);
|
||||
// deviceControlBlock.stopBits(1);
|
||||
// deviceControlBlock.baudRate(1200);
|
||||
if(!commControl.setDeviceControlBlock(deviceControlBlock))
|
||||
{
|
||||
String strCode;
|
||||
DWORD errorCode(::GetLastError());
|
||||
::sprintf(strCode,"0x%08lx %d\n",errorCode,errorCode);
|
||||
::OutputDebugString(strCode);
|
||||
}
|
||||
String strRcv;
|
||||
commControl.writeLine("ATE1");
|
||||
commControl.readLine(strRcv);
|
||||
::OutputDebugString(strRcv);
|
||||
commControl.writeLine("ATDT 9,1,5162620924");
|
||||
// commControl.readLine(strRcv);
|
||||
::OutputDebugString(strRcv);
|
||||
commControl.clearError(commStatus);
|
||||
if(commStatus.bytesInReceiveQueue())
|
||||
{
|
||||
commControl.readLine(strRcv);
|
||||
::OutputDebugString(strRcv);
|
||||
}
|
||||
commControl.close();
|
||||
}
|
||||
#endif
|
||||
|
||||
#include <fileio/fileio.hpp>
|
||||
|
||||
String strPathFileName("c:\\work\\as68hc11\\code2.asm");
|
||||
String strLine;
|
||||
FileIO outFile;
|
||||
|
||||
outFile.open(strPathFileName); //,FileIO::GenericRead,FileIO::FileShareRead);
|
||||
if(!outFile.isOkay())return FALSE;
|
||||
while(outFile.readLine(strLine));
|
||||
outFile.close();
|
||||
outFile.open(strPathFileName,FileIO::GenericRead,FileIO::FileShareRead);
|
||||
if(!outFile.isOkay())return FALSE;
|
||||
while(outFile.readLine(strLine));
|
||||
return FALSE;
|
||||
|
||||
|
||||
|
||||
void MainFrame::createToolBar(void)
|
||||
{
|
||||
Block<AddBitmap> addBitmaps;
|
||||
|
||||
mToolBar.create(*this,ToolBarID);
|
||||
addBitmaps.insert(&AddBitmap(0,HINST_COMMCTRL));
|
||||
if(!mToolBar.addBitmaps(addBitmaps))return;
|
||||
mToolBar.addButton(ToolBarButton(STD_FILENEW,MenuFileNew,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FILEOPEN,MenuFileOpen,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FILESAVE,MenuFileSave,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_CUT,112,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_COPY,110,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PASTE,111,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_PRINT,RiskMenuPrint,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_PRINTPRE,RiskMenuPageSetup,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FIND,122,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.show(SW_SHOW);
|
||||
// mToolBar.addButton(ToolBarButton(STD_HELP,RiskMenuHelpContents,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
|
||||
// mToolBar.addButton(ToolBarButton(STD_DELETE,114,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_PROPERTIES,117,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_REDOW,119,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_REPLACE,121,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_UNDO,123,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// mToolBar.show(SW_SHOW);
|
||||
// mToolBar.addButton(ToolBarButton(STD_PRINT,RiskMenuPrint,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_PRINTPRE,RiskMenuPageSetup,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_HELP,RiskMenuHelpContents,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_DELETE,114,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_PROPERTIES,117,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_REDOW,119,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_REPLACE,121,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
// mToolBar.addButton(ToolBarButton(STD_UNDO,123,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// commControl.read(&address,sizeof(address));
|
||||
// ::sprintf(strString,"%lx",int(address));
|
||||
// ::sprintf(strString,"%d%d%d%d%d%d%d%d",
|
||||
// int((address&128?1:0)),int((address&64?1:0)),int((address&32?1:0)),int((address&16?1:0)),
|
||||
// int((address&8?1:0)),int((address&4?1:0)),int((address&2?1:0)),int((address&1?1:0)));
|
||||
// ::MessageBox(::GetFocus(),(LPSTR)strString,"VALUE",MB_OK);
|
||||
// commControl.write(&charByte,sizeof(charByte));
|
||||
|
||||
|
||||
// WORD address;
|
||||
|
||||
|
||||
// typedef void (PASCAL * DEBUGPROC)(CommControl &commControl);
|
||||
// Library procLib("procLib.dll");
|
||||
// if(!procLib.isOkay())return FALSE;
|
||||
// if(!procLib.procIn("_procDebug@4"))return FALSE;
|
||||
// ((DEBUGPROC)procLib.procAddress("_procDebug@4"))(commControl);
|
||||
|
||||
|
||||
//c ((COMPROC)procLib.procAddress("_procDebug@4"))(commControl);
|
||||
|
||||
/// ::memset(rcvBuffer,0,sizeof(rcvBuffer));
|
||||
|
||||
// WORD address;
|
||||
// String strString;
|
||||
// WORD count(0);
|
||||
// while(TRUE)
|
||||
// {
|
||||
// commControl.read(&address,sizeof(address));
|
||||
// ::sprintf(strString,"%d) %08lx\n",++count,int(address));
|
||||
// ::OutputDebugString(strString);
|
||||
// commControl.write(&charByte,sizeof(charByte));
|
||||
// }
|
||||
|
||||
// commControl.read(rcvBuffer,1);
|
||||
// commControl.read(rcvBuffer+1,
|
||||
|
||||
// commControl.read(rcvBuffer+2,1);
|
||||
// commControl.read(rcvBuffer+3,1);
|
||||
|
||||
// commControl.setEventMask(CommControl::EventBreak);
|
||||
// if(!commControl.waitEvent()){mStatusBar->setText("timeout waiting for break.");return FALSE;}
|
||||
// else mStatusBar->setText("received break");
|
||||
// commControl.write(&charByte,sizeof(charByte));
|
||||
// ::memset(rcvBuffer,0,sizeof(rcvBuffer));
|
||||
// charByte=0;
|
||||
// commControl.read(&charByte,1);
|
||||
// commControl.read(&charByte,1);
|
||||
|
||||
// ldd SWIHANDLER ; get address of SWIHANDLER to register D
|
||||
// bsr WRITEWORD ; send it out to SCI
|
||||
// bsr WAITCHAR ; wait for a character
|
||||
// ldd [SWI] ; load contents of SWI vector ?
|
||||
// bsr WRITEWORD ; send it out to SCI
|
||||
// bsr WAITCHAR ; wait for a character
|
||||
// ldd SWIHANDLER ; load address of SWIHANDLER to register D
|
||||
// std [SWI] ; store SWIHANDLER at swi vector ?
|
||||
// ldd [SWI] ; load contents of SWIHANDLER
|
||||
// bsr WRITEWORD ; send it out to SCI
|
||||
// bsr WAITCHAR ; wait for a character
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; *********************************************************************************
|
||||
;
|
||||
; ldd REGS ; load REGS into D
|
||||
; std [MEMLOC] ; store D into MEMLOC
|
||||
;CONTINUE equ * ; sync address
|
||||
; ldd [MEMLOC] ; load D with value at MEMLOC
|
||||
; xgdx ; exchange D with X
|
||||
; ldab ix,00h ; load B with byte at address of X plus 00h
|
||||
; bsr WRITECHAR ; write the contents of B to SCI
|
||||
; ldd [MEMLOC] ; reload the value at MEMLOC
|
||||
; addd 0001h ; increment value
|
||||
; cpd CONFIG ; compare register D with CONFIG
|
||||
; bgt END ; if D is greater than CONFIG we're all done
|
||||
; std [MEMLOC] ; store value back into MEMLOC
|
||||
; jmp CONTINUE ; keep going
|
||||
;END equ *
|
||||
; std [EEPROM]
|
||||
; ldd [EEPROM]
|
||||
; bsr WRITEWORD
|
||||
; bsr WAITCHAR
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ldab EVENTCHAR
|
||||
; bsr WRITECHAR
|
||||
; ldab [PPROG]
|
||||
; bsr WRITECHAR
|
||||
; bsr WAITCHAR
|
||||
|
||||
|
||||
; ldab EVENTCHAR
|
||||
; bsr WRITECHAR
|
||||
; ldab [BPROT]
|
||||
; bsr WRITECHAR
|
||||
; bsr WAITCHAR
|
||||
|
||||
; ldab 00h
|
||||
; stab [BPROT]
|
||||
|
||||
; ldab EVENTCHAR
|
||||
; bsr WRITECHAR
|
||||
; ldab [BPROT]
|
||||
; bsr WRITECHAR
|
||||
; bsr WAITCHAR
|
||||
|
||||
; ldab 11h
|
||||
; stab [EEPROM]
|
||||
; ldab EVENTCHAR
|
||||
; bsr WRITECHAR
|
||||
; ldab [EEPROM]
|
||||
; bsr WRITECHAR
|
||||
; bsr WAITCHAR
|
||||
|
||||
; ldab EVENTEND
|
||||
; bsr WRITECHAR
|
||||
|
||||
; ldab EVENTWORD
|
||||
; bsr WRITECHAR
|
||||
; ldd 5555h
|
||||
; std [EEPROM]
|
||||
; ldd [EEPROM]
|
||||
; bsr WRITEWORD
|
||||
; bsr READCHAR
|
||||
; ldab EVENTEND
|
||||
; bsr WRITECHAR
|
||||
; ldd [msg] ; this seems to generate a compile error
|
||||
; bsr WRITEENDEVENT ; write end event character to the SCI
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define STRING_REGISTERPORTA 700
|
||||
#define STRING_REGISTERCONFIG 763
|
||||
|
||||
|
||||
|
||||
mOwnerDrawList->insertString("PORTA");
|
||||
mOwnerDrawList->insertString("RESERVED");
|
||||
mOwnerDrawList->insertString("PIOC");
|
||||
mOwnerDrawList->insertString("PORTC");
|
||||
mOwnerDrawList->insertString("PORTB");
|
||||
mOwnerDrawList->insertString("PORTCL");
|
||||
mOwnerDrawList->insertString("RESERVED");
|
||||
mOwnerDrawList->insertString("DDRC");
|
||||
mOwnerDrawList->insertString("PORTD");
|
||||
mOwnerDrawList->insertString("DDRD");
|
||||
mOwnerDrawList->insertString("PORTE");
|
||||
mOwnerDrawList->insertString("CFORC");
|
||||
mOwnerDrawList->insertString("OC1M");
|
||||
mOwnerDrawList->insertString("OC1D");
|
||||
mOwnerDrawList->insertString("TCNT(Hi)");
|
||||
mOwnerDrawList->insertString("TCNT(Lo)");
|
||||
mOwnerDrawList->insertString("TIC1(Hi)");
|
||||
mOwnerDrawList->insertString("TIC1(Lo)");
|
||||
mOwnerDrawList->insertString("TIC2(Hi)");
|
||||
mOwnerDrawList->insertString("TIC2(Lo)");
|
||||
mOwnerDrawList->insertString("TIC3(Hi)");
|
||||
mOwnerDrawList->insertString("TIC3(Lo)");
|
||||
mOwnerDrawList->insertString("TOC1(Hi)");
|
||||
mOwnerDrawList->insertString("TOC1(Lo)");
|
||||
mOwnerDrawList->insertString("TOC2(Hi)");
|
||||
mOwnerDrawList->insertString("TOC2(Lo)");
|
||||
mOwnerDrawList->insertString("TOC3(Hi)");
|
||||
mOwnerDrawList->insertString("TOC3(Lo)");
|
||||
mOwnerDrawList->insertString("TOC4(Hi)");
|
||||
mOwnerDrawList->insertString("TOC4(Lo)");
|
||||
mOwnerDrawList->insertString("TI405(Hi)");
|
||||
mOwnerDrawList->insertString("TI405(Lo)");
|
||||
mOwnerDrawList->insertString("TCTL1");
|
||||
mOwnerDrawList->insertString("TCTL2");
|
||||
mOwnerDrawList->insertString("TMSK1");
|
||||
mOwnerDrawList->insertString("TFLG1");
|
||||
mOwnerDrawList->insertString("TMSK2");
|
||||
mOwnerDrawList->insertString("TFLG2");
|
||||
mOwnerDrawList->insertString("PACTL");
|
||||
mOwnerDrawList->insertString("PACNT");
|
||||
mOwnerDrawList->insertString("SPCR");
|
||||
mOwnerDrawList->insertString("SPSR");
|
||||
mOwnerDrawList->insertString("SPDR");
|
||||
mOwnerDrawList->insertString("BAUD");
|
||||
mOwnerDrawList->insertString("SCCR1");
|
||||
mOwnerDrawList->insertString("SCCR2");
|
||||
mOwnerDrawList->insertString("SCSR");
|
||||
mOwnerDrawList->insertString("SCDR");
|
||||
mOwnerDrawList->insertString("ADCTL");
|
||||
mOwnerDrawList->insertString("ADR1");
|
||||
mOwnerDrawList->insertString("ADR2");
|
||||
mOwnerDrawList->insertString("ADR3");
|
||||
mOwnerDrawList->insertString("ADR4");
|
||||
mOwnerDrawList->insertString("BPROT");
|
||||
mOwnerDrawList->insertString("EPROG");
|
||||
mOwnerDrawList->insertString("RESERVED");
|
||||
mOwnerDrawList->insertString("RESERVED");
|
||||
mOwnerDrawList->insertString("OPTION");
|
||||
mOwnerDrawList->insertString("COPRST");
|
||||
mOwnerDrawList->insertString("PPROG");
|
||||
mOwnerDrawList->insertString("HPRIO");
|
||||
mOwnerDrawList->insertString("INIT");
|
||||
mOwnerDrawList->insertString("TEST1");
|
||||
mOwnerDrawList->insertString("CONFIG");
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
#include <common/library.hpp>
|
||||
|
||||
BOOL MainFrame::codeLoad(const String &strPathBinary)
|
||||
{
|
||||
FileHandle inFile;
|
||||
BYTE sndBuffer[256];
|
||||
BYTE rcvBuffer[256];
|
||||
BYTE *ptrByte;
|
||||
BYTE charByte(0xFF);
|
||||
WORD codeLength(0);
|
||||
DeviceControlBlock deviceControlBlock;
|
||||
CommControl commControl;
|
||||
CommStatus commStatus;
|
||||
|
||||
if(!inFile.open(strPathBinary)){mStatusBar->setText("Error opening file.");return FALSE;}
|
||||
if(!commControl.open(CommControl::Port(0))){mStatusBar->setText("Error opening port.");return FALSE;}
|
||||
commControl.getDeviceControlBlock(deviceControlBlock);
|
||||
deviceControlBlock.baudRate(1200);
|
||||
deviceControlBlock.parity(DeviceControlBlock::Parity(0));
|
||||
deviceControlBlock.dataBits(8);
|
||||
deviceControlBlock.stopBits(0);
|
||||
if(!commControl.setDeviceControlBlock(deviceControlBlock))mStatusBar->setText("Failed to apply settings.");
|
||||
mStatusBar->setText("waiting for break signal....");
|
||||
commControl.setEventMask(CommControl::EventBreak);
|
||||
if(!commControl.waitEvent()){mStatusBar->setText("timeout waiting for break.");return FALSE;}
|
||||
mStatusBar->setText("break received, loading code...");
|
||||
::memset(sndBuffer,1,sizeof(sndBuffer));
|
||||
::memset(rcvBuffer,0,sizeof(rcvBuffer));
|
||||
ptrByte=sndBuffer;
|
||||
while(inFile.read(*ptrByte)){codeLength++;ptrByte++;}
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
commControl.read(&charByte,sizeof(charByte));
|
||||
commControl.write(sndBuffer,sizeof(sndBuffer));
|
||||
if(!commControl.read(rcvBuffer,sizeof(sndBuffer))){mStatusBar->setText("Failed to verify write.");return FALSE;}
|
||||
if(!::memcmp(rcvBuffer,sndBuffer,codeLength))mStatusBar->setText("Code has been loaded onto device.");
|
||||
else {mStatusBar->setText("Failed to verify write.");return FALSE;}
|
||||
|
||||
|
||||
// event types
|
||||
// 0x00 - character
|
||||
// 0x01 - WORD
|
||||
// 0x02 - DWORD
|
||||
// 0x03 - varchar : [WORD:count,countcharacters]
|
||||
// 0xFF - end
|
||||
|
||||
|
||||
BYTE event; // 0x00=char, 0x01=WORD, 0x02=varchar
|
||||
BYTE ack(0x00);
|
||||
char charData;
|
||||
WORD wordData;
|
||||
DWORD dwordData;
|
||||
int index;
|
||||
BOOL reading(TRUE);
|
||||
String strString;
|
||||
int map(0x1000);
|
||||
|
||||
enum Event{EventSingleByte=0x00,EventDoubleByte=0x01,EventQuadByte=0x02,EventVarByte=0x03,
|
||||
EventRegs=0x04,EventEnd=0xFF};
|
||||
while(reading)
|
||||
{
|
||||
commControl.read(&event,sizeof(event));
|
||||
switch(Event(event))
|
||||
{
|
||||
case EventSingleByte :
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
::sprintf(strString,"(%d%d%d%d%d%d%d%d) %lx\n",
|
||||
int((charData&128?1:0)),int((charData&64?1:0)),int((charData&32?1:0)),int((charData&16?1:0)),
|
||||
int((charData&8?1:0)),int((charData&4?1:0)),int((charData&2?1:0)),int((charData&1?1:0)),
|
||||
int(charData));
|
||||
::OutputDebugString(strString);
|
||||
::MessageBox(::GetFocus(),(LPSTR)strString,"M68HC11",MB_OK);
|
||||
break;
|
||||
case EventDoubleByte :
|
||||
commControl.read(&wordData,sizeof(wordData));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
::sprintf(strString,"%lx\n",int(wordData));
|
||||
::OutputDebugString(strString);
|
||||
::MessageBox(::GetFocus(),(LPSTR)strString,"M68HC11",MB_OK);
|
||||
break;
|
||||
case EventQuadByte :
|
||||
commControl.read(&dwordData,sizeof(dwordData));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
::sprintf(strString,"%lx\n",int(dwordData));
|
||||
::OutputDebugString(strString);
|
||||
::MessageBox(::GetFocus(),(LPSTR)strString,"M68HC11",MB_OK);
|
||||
break;
|
||||
case EventVarByte :
|
||||
commControl.read(&wordData,sizeof(wordData));
|
||||
for(index=0;index<wordData;index++)
|
||||
{
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
::sprintf(strString,"(%d%d%d%d%d%d%d%d) %lx\n",
|
||||
int((charData&128?1:0)),int((charData&64?1:0)),int((charData&32?1:0)),int((charData&16?1:0)),
|
||||
int((charData&8?1:0)),int((charData&4?1:0)),int((charData&2?1:0)),int((charData&1?1:0)),
|
||||
int(charData));
|
||||
::OutputDebugString(strString);
|
||||
}
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventRegs :
|
||||
::OutputDebugString("EventRegs\n");
|
||||
map=0x1000;
|
||||
for(index=0;index<64;index++)
|
||||
{
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
::sprintf(strString,"[%08lx] (%d%d%d%d%d%d%d%d) %lx\n",map++,
|
||||
int((charData&128?1:0)),int((charData&64?1:0)),int((charData&32?1:0)),int((charData&16?1:0)),
|
||||
int((charData&8?1:0)),int((charData&4?1:0)),int((charData&2?1:0)),int((charData&1?1:0)),
|
||||
int(charData));
|
||||
::OutputDebugString(strString);
|
||||
}
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventEnd :
|
||||
::OutputDebugString("Received end event\n");
|
||||
::MessageBox(::GetFocus(),(LPSTR)"Received END event",(LPSTR)"M68HC11",MB_OK);
|
||||
reading=FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// for(index=0;index<wordData;index++)
|
||||
// {
|
||||
// commControl.read(&charData,sizeof(charData));
|
||||
// ::sprintf(strString,"(%d%d%d%d%d%d%d%d) %lx\n",
|
||||
// int((charData&128?1:0)),int((charData&64?1:0)),int((charData&32?1:0)),int((charData&16?1:0)),
|
||||
// int((charData&8?1:0)),int((charData&4?1:0)),int((charData&2?1:0)),int((charData&1?1:0)),
|
||||
// int(charData));
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// if(commStatus.bytesInReceiveQueue())
|
||||
// {
|
||||
// commControl.read(ioBuffer,sizeof(ioBuffer));
|
||||
|
||||
|
||||
// commControl.clearError();
|
||||
// commControl.write(&charByte,sizeof(charByte));
|
||||
charByte=0xFF;
|
||||
BYTE rcvByte;
|
||||
for(int index=0;index<256;index++)
|
||||
{
|
||||
rcvByte=0;
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
if(commControl.read(&rcvByte,sizeof(charByte)))::OutputDebugString(String(getByteString(rcvByte)+String("\n")).str());
|
||||
// charByte++;
|
||||
}
|
||||
|
||||
// charByte='a';
|
||||
// commControl.write(&charByte,sizeof(charByte));
|
||||
return;
|
||||
|
||||
|
||||
|
||||
// commControl.write(&charByte,sizeof(charByte));
|
||||
|
||||
// if(!commControl.read(&charByte,sizeof(charByte))){mStatusBar->setText("No response to initial command.");return;}
|
||||
commControl.write(sndBuffer,sizeof(sndBuffer));
|
||||
|
||||
// if(!commControl.read(rcvBuffer,sizeof(sndBuffer))){mStatusBar->setText("no data was received from device.");return;}
|
||||
// if(!::memcmp(rcvBuffer,sndBuffer,sizeof(sndBuffer)))mStatusBar->setText("The device is present and working properly.");
|
||||
// else mStatusBar->setText("Failed to verify write.");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
|
||||
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/)
|
||||
{
|
||||
CommControl commControl;
|
||||
CommStatus commStatus;
|
||||
DeviceControlBlock deviceControlBlock;
|
||||
BYTE charByte(0xFF);
|
||||
|
||||
commControl.open(CommControl::PortCOM1);
|
||||
if(!commControl.isOkay())return FALSE;
|
||||
if(!commControl.setDeviceControlBlock("baud=1200 data=8 stop=1 parity=N"))::OutputDebugString("Set operation failed\n");
|
||||
|
||||
String strString;
|
||||
charByte='a';
|
||||
while(TRUE)
|
||||
{
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
// commControl.waitForData();
|
||||
commControl.read(&charByte,sizeof(charByte));
|
||||
::sprintf(strString,"%02x\n",(int)charByte);
|
||||
::OutputDebugString(strString);
|
||||
charByte++;
|
||||
|
||||
// commControl.clearError(commStatus);
|
||||
|
||||
// if(commStatus.bytesInReceiveQueue())
|
||||
// {
|
||||
// commControl.read(&charByte,sizeof(charByte));
|
||||
// ::sprintf(strString,"%02x\n",(int)charByte);
|
||||
// ::OutputDebugString(strString);
|
||||
// break;
|
||||
// }
|
||||
::Sleep(250);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
::OutputDebugString("waiting for break signal...\n");
|
||||
commControl.setEventMask(CommControl::EventBreak); // EventBreak
|
||||
if(!commControl.waitEvent())::OutputDebugString("timeout waiting for break.\n");
|
||||
else ::OutputDebugString("break received, loading code...\n");
|
||||
|
||||
|
||||
BYTE ioBuffer[256];
|
||||
|
||||
for(int index=0;index<256;index++)ioBuffer[index]=index;
|
||||
charByte=0xFF;
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
|
||||
// commControl.clearError(commStatus);
|
||||
// if(commStatus.bytesInReceiveQueue())commControl.read(ioBuffer,commStatus.bytesInReceiveQueue());
|
||||
|
||||
commControl.write(ioBuffer,sizeof(ioBuffer));
|
||||
::memset(ioBuffer,0,sizeof(ioBuffer));
|
||||
|
||||
String strString;
|
||||
::OutputDebugString("receiving echo\n");
|
||||
while(TRUE)
|
||||
{
|
||||
commControl.clearError(commStatus);
|
||||
|
||||
if(commStatus.bytesInReceiveQueue())
|
||||
{
|
||||
commControl.read(ioBuffer,sizeof(ioBuffer));
|
||||
for(index=0;index+8<sizeof(ioBuffer);index+=8)
|
||||
{
|
||||
::sprintf(strString,"%02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||
ioBuffer[index],ioBuffer[index+1],ioBuffer[index+2],ioBuffer[index+3],ioBuffer[index+4],
|
||||
ioBuffer[index+5],ioBuffer[index+6],ioBuffer[index+7]);
|
||||
::OutputDebugString(strString);
|
||||
}
|
||||
break;
|
||||
}
|
||||
::Sleep(1000);
|
||||
}
|
||||
*/
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#if 0
|
||||
for(int index=0;index<256;index++)ioBuffer[index]=index;
|
||||
charByte=0xFF;
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
commControl.write(ioBuffer,sizeof(ioBuffer));
|
||||
::memset(ioBuffer,0,sizeof(ioBuffer));
|
||||
|
||||
::OutputDebugString("receiving echo\n");
|
||||
while(TRUE)
|
||||
{
|
||||
commControl.clearError(commStatus);
|
||||
if(commStatus.bytesInReceiveQueue())
|
||||
{
|
||||
commControl.read(ioBuffer,sizeof(ioBuffer));
|
||||
for(index=0;index+8<sizeof(ioBuffer);index+=8)
|
||||
{
|
||||
::sprintf(strString,"%02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||
ioBuffer[index],ioBuffer[index+1],ioBuffer[index+2],ioBuffer[index+3],ioBuffer[index+4],
|
||||
ioBuffer[index+5],ioBuffer[index+6],ioBuffer[index+7]);
|
||||
::OutputDebugString(strString);
|
||||
}
|
||||
break;
|
||||
}
|
||||
::Sleep(1000);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
313
m68hc11/SERDLG.CPP
Normal file
@@ -0,0 +1,313 @@
|
||||
#include <m68hc11/serdlg.hpp>
|
||||
#include <m68hc11/m68reg.hpp>
|
||||
|
||||
SerialDlg::SerialDlg(void)
|
||||
{
|
||||
mInitHandler.setCallback(this,&SerialDlg::initHandler);
|
||||
mDestroyHandler.setCallback(this,&SerialDlg::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&SerialDlg::commandHandler);
|
||||
mCloseHandler.setCallback(this,&SerialDlg::closeHandler);
|
||||
DWindow::insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
DWindow::insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
DWindow::insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
DWindow::insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
}
|
||||
|
||||
SerialDlg::~SerialDlg()
|
||||
{
|
||||
DWindow::removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
DWindow::removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
DWindow::removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
DWindow::removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
}
|
||||
|
||||
SerialDlg &SerialDlg::operator=(const SerialDlg &/*someSerialDlg*/)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOL SerialDlg::perform(GUIWindow &parentWindow) // ,SerialSettings &serialSettings)
|
||||
{
|
||||
return ::DialogBoxParam(processInstance(),(LPSTR)"SERIAL",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SerialDlg::initHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mStatusBar=::new StatusBarEx(*this,StatusBarID);
|
||||
mStatusBar.disposition(PointerDisposition::Delete);
|
||||
initSerialSettings();
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SerialDlg::destroyHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SerialDlg::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wmCommandID())
|
||||
{
|
||||
case IDOK :
|
||||
if(applySerialSettings())endDialog(TRUE);
|
||||
break;
|
||||
case IDCANCEL :
|
||||
endDialog(FALSE);
|
||||
break;
|
||||
case SerialStopBits :
|
||||
case SerialParity :
|
||||
case SerialDataBits :
|
||||
case SerialBaud :
|
||||
case SerialPort :
|
||||
mStatusBar->setText(" ");
|
||||
break;
|
||||
case SerialApply :
|
||||
applySerialSettings();
|
||||
break;
|
||||
case SerialTest :
|
||||
testDevice();
|
||||
break;
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SerialDlg::closeHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
void SerialDlg::initSerialSettings(void)
|
||||
{
|
||||
M68Reg mcuReg;
|
||||
|
||||
initPorts();
|
||||
initBaud();
|
||||
initDataBits();
|
||||
initStopBits();
|
||||
initParity();
|
||||
sendMessage(SerialPort,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getPort());
|
||||
sendMessage(SerialBaud,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getBaud());
|
||||
sendMessage(SerialDataBits,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getDataBits());
|
||||
sendMessage(SerialParity,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getParity());
|
||||
sendMessage(SerialStopBits,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getStopBits());
|
||||
}
|
||||
|
||||
void SerialDlg::initPorts(void)
|
||||
{
|
||||
String strPort;
|
||||
CommControl commControl;
|
||||
Block<CommControl::Port> ports;
|
||||
|
||||
sendMessage(SerialPort,CB_RESETCONTENT,0,0L);
|
||||
commControl.enumerateDevices(ports);
|
||||
for(int index=0;index<ports.size();index++)
|
||||
{
|
||||
if(ports[index]==CommControl::PortCOM1)sendMessage(SerialPort,CB_ADDSTRING,0,(LPARAM)(LPSTR)String(STRING_COM1));
|
||||
else if(ports[index]==CommControl::PortCOM2)sendMessage(SerialPort,CB_ADDSTRING,0,(LPARAM)(LPSTR)String(STRING_COM2));
|
||||
else if(ports[index]==CommControl::PortCOM3)sendMessage(SerialPort,CB_ADDSTRING,0,(LPARAM)(LPSTR)String(STRING_COM3));
|
||||
else if(ports[index]==CommControl::PortCOM4)sendMessage(SerialPort,CB_ADDSTRING,0,(LPARAM)(LPSTR)String(STRING_COM4));
|
||||
}
|
||||
}
|
||||
|
||||
void SerialDlg::initBaud(void)
|
||||
{
|
||||
String strBaudRate;
|
||||
|
||||
sendMessage(SerialBaud,CB_RESETCONTENT,0,0L);
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"1200");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"2400");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"4800");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"9600");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"14400");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"19200");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"38400");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"57600");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"115200");
|
||||
}
|
||||
|
||||
void SerialDlg::initDataBits(void)
|
||||
{
|
||||
sendMessage(SerialDataBits,CB_RESETCONTENT,0,0L);
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"4");
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"5");
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"6");
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"7");
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"8");
|
||||
}
|
||||
|
||||
void SerialDlg::initParity(void)
|
||||
{
|
||||
sendMessage(SerialParity,CB_RESETCONTENT,0,0L);
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"None");
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"Odd");
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"Even");
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"Mark");
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"Space");
|
||||
}
|
||||
|
||||
void SerialDlg::initStopBits()
|
||||
{
|
||||
sendMessage(SerialStopBits,CB_RESETCONTENT,0,0L);
|
||||
sendMessage(SerialStopBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"1");
|
||||
sendMessage(SerialStopBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"1.5");
|
||||
sendMessage(SerialStopBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"2");
|
||||
}
|
||||
|
||||
CommControl::Port SerialDlg::getCommPort(void)const
|
||||
{
|
||||
String strPort;
|
||||
|
||||
sendMessage(SerialPort,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strPort);
|
||||
return CommControl::stringToPort(strPort);
|
||||
}
|
||||
|
||||
String SerialDlg::getCommSettings(void)const
|
||||
{
|
||||
String strBaud;
|
||||
String strDataBits;
|
||||
String strSettings;
|
||||
String strParity;
|
||||
String strStopBits;
|
||||
LRESULT currSel;
|
||||
|
||||
sendMessage(SerialBaud,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strBaud);
|
||||
strSettings+="baud=";
|
||||
strSettings+=strBaud;
|
||||
strSettings+=" ";
|
||||
sendMessage(SerialDataBits,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strDataBits);
|
||||
strSettings+="data=";
|
||||
strSettings+=strDataBits;
|
||||
strSettings+=" ";
|
||||
currSel=sendMessage(SerialParity,CB_GETCURSEL,0,0L);
|
||||
sendMessage(SerialParity,CB_GETLBTEXT,0,(LPARAM)(LPSTR)strParity);
|
||||
if(String("None")==strParity)strParity="N";
|
||||
else if(String("Odd")==strParity)strParity="O";
|
||||
else if(String("Even")==strParity)strParity="E";
|
||||
else if(String("Space")==strParity)strParity="S";
|
||||
strSettings+="parity=";
|
||||
strSettings+=strParity;
|
||||
strSettings+=" ";
|
||||
currSel=sendMessage(SerialStopBits,CB_GETCURSEL,0,0L);
|
||||
sendMessage(SerialStopBits,CB_GETLBTEXT,0,(LPARAM)(LPSTR)strStopBits);
|
||||
strSettings+="stop=";
|
||||
strSettings+=strStopBits;
|
||||
return strSettings;
|
||||
}
|
||||
|
||||
bool SerialDlg::applySerialSettings(void)
|
||||
{
|
||||
CommControl commControl;
|
||||
M68Reg mcuReg;
|
||||
String strCommSettings;
|
||||
String strBaud;
|
||||
String strDataBits;
|
||||
String strStopBits;
|
||||
String strParity;
|
||||
LRESULT currSel;
|
||||
|
||||
strCommSettings=getCommSettings();
|
||||
if(!commControl.open(getCommPort()))
|
||||
{
|
||||
mStatusBar->setText("Error opening port.");
|
||||
::MessageBeep(0);
|
||||
return false;
|
||||
}
|
||||
if(!commControl.setDeviceControlBlock(strCommSettings)){mStatusBar->setText("Failed to apply settings.");return false;}
|
||||
sendMessage(SerialBaud,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strBaud);
|
||||
mcuReg.setBaud(strBaud);
|
||||
sendMessage(SerialDataBits,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strDataBits);
|
||||
mcuReg.setDataBits(strDataBits);
|
||||
currSel=sendMessage(SerialParity,CB_GETCURSEL,0,0L);
|
||||
sendMessage(SerialParity,CB_GETLBTEXT,0,(LPARAM)(LPSTR)strParity);
|
||||
if(String("None")==strParity)strParity="N";
|
||||
else if(String("Odd")==strParity)strParity="O";
|
||||
else if(String("Even")==strParity)strParity="E";
|
||||
else if(String("Space")==strParity)strParity="S";
|
||||
mcuReg.setParity(strParity);
|
||||
currSel=sendMessage(SerialStopBits,CB_GETCURSEL,0,0L);
|
||||
sendMessage(SerialStopBits,CB_GETLBTEXT,0,(LPARAM)(LPSTR)strStopBits);
|
||||
mcuReg.setStopBits(strStopBits);
|
||||
mStatusBar->setText("Settings have been applied.");
|
||||
return true;
|
||||
}
|
||||
|
||||
void SerialDlg::testDevice(void)
|
||||
{
|
||||
CommControl commControl;
|
||||
BYTE prefix(0xFF);
|
||||
GlobalData<BYTE> rcvBuffer;
|
||||
GlobalData<BYTE> sndBuffer;
|
||||
BYTE codeBytes[]={0x8E,0x00,0xFF,0xCE,0x10,0x00,0x6F,0x2C,0xCC,0x33,0x0C,0xA7,0x2B,0xE7,0x2D,0x1F,0x2E,0x20,0xFC,0xA6,0x2F,0x4C,0x1F,0x2E,0x80,0xFC,0xA7,0x2F,0x7E,0x00,0x0F};
|
||||
|
||||
sndBuffer.size(256);
|
||||
sndBuffer.setZero();
|
||||
rcvBuffer.size(sndBuffer.size());
|
||||
rcvBuffer.setZero();
|
||||
::memcpy(&sndBuffer[0],codeBytes,sizeof(codeBytes));
|
||||
if(IDCANCEL==::MessageBox(*this,"This operation will overwrite the contents of MCU RAM with the ECHO program.","WARNING",MB_OKCANCEL))return;
|
||||
if(!commControl.open(getCommPort())){mStatusBar->setText("Error opening port.");return;}
|
||||
if(!commControl.setDeviceControlBlock(getCommSettings())){mStatusBar->setText("Failed to apply settings.");return;}
|
||||
mStatusBar->setText("waiting for break signal....please reset the device.");
|
||||
if(!commControl.waitForBreak()){mStatusBar->setText("timeout waiting for break.");return;}
|
||||
mStatusBar->setText("break received, loading code...");
|
||||
commControl.write(&prefix,sizeof(prefix));
|
||||
commControl.clearReceiveQueue();
|
||||
commControl.write(sndBuffer);
|
||||
mStatusBar->setText("Waiting for response.");
|
||||
if(!commControl.waitForData()){mStatusBar->setText("Timeout reached for receive.");return;}
|
||||
commControl.readFully(rcvBuffer);
|
||||
if(::memcmp(&rcvBuffer[0],&sndBuffer[0],sndBuffer.size()))
|
||||
{
|
||||
mStatusBar->setText("Failed to verify program load.");
|
||||
return;
|
||||
}
|
||||
::Sleep(250);
|
||||
if(!echo(commControl))mStatusBar->setText("Received unexpected results from program.");
|
||||
else mStatusBar->setText("The program has been verified, all tests successful.");
|
||||
return;
|
||||
}
|
||||
|
||||
bool SerialDlg::echo(CommControl &commControl)
|
||||
{
|
||||
BYTE sndByte('a');
|
||||
BYTE rcvByte=0;
|
||||
DWORD rcvCount(0);
|
||||
String str;
|
||||
|
||||
if(!commControl.isOkay())
|
||||
{
|
||||
if(!commControl.open(getCommPort())){mStatusBar->setText("Unable to open comm port.");mStatusBar->setText("Error opening port.");return false;}
|
||||
if(!commControl.setDeviceControlBlock(getCommSettings())){mStatusBar->setText("Failed to apply settings.");return false;}
|
||||
}
|
||||
commControl.clearError();
|
||||
while('z'!=rcvByte)
|
||||
{
|
||||
CommStatus commStatus;
|
||||
commControl.write(&sndByte,sizeof(sndByte));
|
||||
if(commControl.waitForData())
|
||||
{
|
||||
rcvByte=0;
|
||||
commControl.read(&rcvByte,sizeof(rcvByte));
|
||||
str+=rcvByte;
|
||||
mStatusBar->setText(str);
|
||||
if(!rcvCount&&rcvByte!='b')
|
||||
{
|
||||
mStatusBar->setText("Unexpected character in input stream.");
|
||||
return false;
|
||||
}
|
||||
sndByte++;
|
||||
rcvCount++;
|
||||
}
|
||||
}
|
||||
::Sleep(250);
|
||||
return true;
|
||||
}
|
||||
|
||||
String SerialDlg::getByteString(BYTE charByte)
|
||||
{
|
||||
String str;
|
||||
::sprintf(str.str(),"char:%d(0x%08lx)",(int)charByte,(int)charByte);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
61
m68hc11/SERDLG.HPP
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef _M68HC11_SERIALDLG_HPP_
|
||||
#define _M68HC11_SERIAL_HPP_
|
||||
#ifndef _COMMON_DWINDOW_HPP_
|
||||
#include <common/dwindow.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_M68HC11_HPP_
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#endif
|
||||
#ifndef _STATBAR_STATUSBAREX_HPP_
|
||||
#include <statbar/statbarx.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_COMMCONTROL_HPP_
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
#endif
|
||||
|
||||
class CommControl;
|
||||
|
||||
class SerialDlg : public DWindow
|
||||
{
|
||||
public:
|
||||
SerialDlg(void);
|
||||
virtual ~SerialDlg();
|
||||
BOOL perform(GUIWindow &parentWindow);
|
||||
private:
|
||||
enum{SerialStopBits=SERIAL_STOP,SerialParity=SERIAL_PARITY,SerialDataBits=SERIAL_DATA,
|
||||
SerialBaud=SERIAL_BAUD,SerialPort=SERIAL_PORT,SerialApply=SERIAL_APPLY,SerialTest=SERIAL_TEST};
|
||||
enum {StatusBarID=500};
|
||||
SerialDlg &operator=(const SerialDlg &someSerialDlg);
|
||||
CallbackData::ReturnType initHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType dlgCodeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType controlColorHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType measureItemHandler(CallbackData &someCallbackData);
|
||||
String getByteString(BYTE charByte);
|
||||
CommControl::Port getCommPort(void)const;
|
||||
String getCommSettings(void)const;
|
||||
bool applySerialSettings(void);
|
||||
void initSerialSettings(void);
|
||||
void testDevice(void);
|
||||
void initDataBits(void);
|
||||
void initParity(void);
|
||||
void initStopBits(void);
|
||||
void initPorts(void);
|
||||
void initBaud(void);
|
||||
bool echo(CommControl &commControl);
|
||||
|
||||
Callback<SerialDlg> mInitHandler;
|
||||
Callback<SerialDlg> mDestroyHandler;
|
||||
Callback<SerialDlg> mCommandHandler;
|
||||
Callback<SerialDlg> mCloseHandler;
|
||||
SmartPointer<StatusBarEx> mStatusBar;
|
||||
};
|
||||
#endif
|
||||
130
m68hc11/SETTINGS.HPP
Normal file
@@ -0,0 +1,130 @@
|
||||
#ifndef _M68HC11_SERIALSETUP_HPP_
|
||||
#define _M68HC11_SERIALSETUP_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
|
||||
class SerialSettings
|
||||
{
|
||||
public:
|
||||
SerialSettings(void);
|
||||
SerialSettings(const SerialSettings &someSerialSettings);
|
||||
virtual ~SerialSettings();
|
||||
SerialSettings &operator=(const SerialSettings &someSerialSettings);
|
||||
BOOL operator==(const SerialSettings &someSerialSettings)const;
|
||||
DWORD port(void)const;
|
||||
void port(DWORD port);
|
||||
DWORD baudRate(void)const;
|
||||
void baudRate(DWORD baudRate);
|
||||
DWORD parity(void)const;
|
||||
void parity(DWORD parity);
|
||||
DWORD stopBits(void)const;
|
||||
void stopBits(DWORD stopBits);
|
||||
DWORD dataBits(void)const;
|
||||
void dataBits(DWORD dataBits);
|
||||
private:
|
||||
DWORD mSerialPort;
|
||||
DWORD mBaudRate;
|
||||
DWORD mParity;
|
||||
DWORD mStopBits;
|
||||
DWORD mDataBits;
|
||||
};
|
||||
|
||||
inline
|
||||
SerialSettings::SerialSettings(void)
|
||||
: mSerialPort(0), mBaudRate(1200), mParity(0), mStopBits(0), mDataBits(8)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
SerialSettings::SerialSettings(const SerialSettings &someSerialSettings)
|
||||
{
|
||||
*this=someSerialSettings;
|
||||
}
|
||||
|
||||
inline
|
||||
SerialSettings::~SerialSettings()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
SerialSettings &SerialSettings::operator=(const SerialSettings &someSerialSettings)
|
||||
{
|
||||
port(someSerialSettings.port());
|
||||
baudRate(someSerialSettings.baudRate());
|
||||
parity(someSerialSettings.parity());
|
||||
stopBits(someSerialSettings.stopBits());
|
||||
dataBits(someSerialSettings.dataBits());
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL SerialSettings::operator==(const SerialSettings &someSerialSettings)const
|
||||
{
|
||||
return (port()==someSerialSettings.port()&&
|
||||
baudRate()==someSerialSettings.baudRate()&&
|
||||
parity()==someSerialSettings.parity()&&
|
||||
stopBits()==someSerialSettings.stopBits()&&
|
||||
dataBits()==someSerialSettings.dataBits());
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::port(void)const
|
||||
{
|
||||
return mSerialPort;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::port(DWORD port)
|
||||
{
|
||||
mSerialPort=port;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::baudRate(void)const
|
||||
{
|
||||
return mBaudRate;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::baudRate(DWORD baudRate)
|
||||
{
|
||||
mBaudRate=baudRate;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::parity(void)const
|
||||
{
|
||||
return mParity;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::parity(DWORD parity)
|
||||
{
|
||||
mParity=parity;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::stopBits(void)const
|
||||
{
|
||||
return mStopBits;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::stopBits(DWORD stopBits)
|
||||
{
|
||||
mStopBits=stopBits;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::dataBits(void)const
|
||||
{
|
||||
return mDataBits;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::dataBits(DWORD dataBits)
|
||||
{
|
||||
mDataBits=dataBits;
|
||||
}
|
||||
#endif
|
||||
BIN
m68hc11/SPLASH.BMP
Normal file
|
After Width: | Height: | Size: 38 KiB |
156
m68hc11/SPLASH.CPP
Normal file
@@ -0,0 +1,156 @@
|
||||
#include <m68hc11/splash.hpp>
|
||||
#include <common/resbmp.hpp>
|
||||
#include <common/dib.hpp>
|
||||
#include <common/bitmap.hpp>
|
||||
|
||||
char SplashScreen::szClassName[]="SplashScreen";
|
||||
|
||||
SplashScreen::SplashScreen(const String &strBitmap,const String &strCaption,UINT timeout)
|
||||
: mBitmapName(strBitmap), mStrCaption(strCaption), mTimeout(timeout),
|
||||
mTextFont("Times New Roman",12,Font::PitchVariable|Font::FamilySwiss,Font::WeightBold)
|
||||
{
|
||||
mResBitmap=new ResBitmap(mBitmapName);
|
||||
mResBitmap.disposition(PointerDisposition::Delete);
|
||||
mCreateHandler.setCallback(this,&SplashScreen::createHandler);
|
||||
mPaintHandler.setCallback(this,&SplashScreen::paintHandler);
|
||||
mDestroyHandler.setCallback(this,&SplashScreen::destroyHandler);
|
||||
mPaletteChangedHandler.setCallback(this,&SplashScreen::paletteChangedHandler);
|
||||
mSetFocusHandler.setCallback(this,&SplashScreen::setFocusHandler);
|
||||
mTimerHandler.setCallback(this,&SplashScreen::timerHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
insertHandler(VectorHandler::PaletteChangedHandler,&mPaletteChangedHandler);
|
||||
insertHandler(VectorHandler::SetFocusHandler,&mSetFocusHandler);
|
||||
insertHandler(VectorHandler::TimerHandler,&mTimerHandler);
|
||||
registerClass();
|
||||
}
|
||||
|
||||
SplashScreen::SplashScreen(const SplashScreen &someSplashScreen)
|
||||
{ // private implementation
|
||||
}
|
||||
|
||||
SplashScreen::~SplashScreen()
|
||||
{
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
removeHandler(VectorHandler::PaletteChangedHandler,&mPaletteChangedHandler);
|
||||
removeHandler(VectorHandler::SetFocusHandler,&mSetFocusHandler);
|
||||
removeHandler(VectorHandler::TimerHandler,&mTimerHandler);
|
||||
}
|
||||
|
||||
void SplashScreen::registerClass(void)
|
||||
{
|
||||
HINSTANCE hInstance(processInstance());
|
||||
WNDCLASS wndClass;
|
||||
|
||||
if(::GetClassInfo(hInstance,szClassName,(WNDCLASS FAR*)&wndClass))return;
|
||||
wndClass.style =CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_OWNDC;
|
||||
wndClass.lpfnWndProc =(WNDPROC)Window::WndProc;
|
||||
wndClass.cbClsExtra =0;
|
||||
wndClass.cbWndExtra =sizeof(SplashScreen*);
|
||||
wndClass.hInstance =hInstance;
|
||||
wndClass.hIcon =::LoadIcon(NULL,IDI_APPLICATION);
|
||||
wndClass.hCursor =::LoadCursor(NULL,IDC_ARROW);
|
||||
wndClass.hbrBackground =(HBRUSH)::GetStockObject(NULL_BRUSH);
|
||||
wndClass.lpszMenuName =0;
|
||||
wndClass.lpszClassName =szClassName;
|
||||
::RegisterClass(&wndClass);
|
||||
assert(0!=::GetClassInfo(hInstance,szClassName,(WNDCLASS FAR*)&wndClass));
|
||||
}
|
||||
|
||||
SplashScreen &SplashScreen::operator=(const SplashScreen &someSplashScreen)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOL SplashScreen::perform(Rect initRect)
|
||||
{
|
||||
UINT style(0);
|
||||
if(CW_USEDEFAULT==initRect.right())initRect.right(mResBitmap->width());
|
||||
if(CW_USEDEFAULT==initRect.bottom())initRect.bottom(mResBitmap->height());
|
||||
if(timeout())
|
||||
// if(useTimer())
|
||||
{
|
||||
PureDevice pureDevice;
|
||||
pureDevice.screenDevice();
|
||||
initRect.left((pureDevice.horizontalResolution()-mResBitmap->width())/2);
|
||||
initRect.top((pureDevice.verticalResolution()-mResBitmap->height())/2);
|
||||
style=WS_POPUP|WS_CLIPSIBLINGS|0x04|WS_DLGFRAME;
|
||||
}
|
||||
else style=WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_BORDER|WS_DLGFRAME|0x04|WS_CLIPSIBLINGS;
|
||||
createWindow(WS_EX_CONTROLPARENT,szClassName,timeout()?(char*)0:(char*)mStrCaption,style,initRect,NULL,NULL,processInstance(),(LPSTR)this); // WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_BORDER|WS_DLGFRAME|0x04|WS_CLIPSIBLINGS
|
||||
show(SW_SHOW);
|
||||
update();
|
||||
return messageLoop();
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::destroyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
PureDevice pureDevice(*this);
|
||||
((PurePalette&)*mDIBitmap).usePalette(pureDevice,FALSE);
|
||||
postQuitMessage(onDestroy());
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mPureDevice=new PureDevice(*this);
|
||||
mPureDevice.disposition(PointerDisposition::Delete);
|
||||
mDIBitmap=new DIBitmap(*mPureDevice,mResBitmap->width(),mResBitmap->height(),*mResBitmap);
|
||||
mDIBitmap.disposition(PointerDisposition::Delete);
|
||||
if(timeout())setTimer(TimerID,timeout());
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::timerHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
killTimer(TimerID);
|
||||
postMessage(*this,WM_CLOSE,0,0L);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::paletteChangedHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(!mDIBitmap.isOkay()||((HWND)*this==(HWND)someCallbackData.wParam()))return (CallbackData::ReturnType)FALSE;
|
||||
PureDevice pureDevice(*this);
|
||||
((PurePalette&)*mDIBitmap).usePalette(pureDevice,TRUE);
|
||||
update();
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::setFocusHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
if(!mDIBitmap.isOkay())return (CallbackData::ReturnType)FALSE;
|
||||
PureDevice pureDevice(*this);
|
||||
((PurePalette&)*mDIBitmap).usePalette(pureDevice,TRUE);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::paintHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(!mResBitmap.isOkay())return (CallbackData::ReturnType)FALSE;
|
||||
PaintInformation *pPaintInfo=(PaintInformation*)someCallbackData.lParam();
|
||||
PureDevice &pureDevice=(PureDevice&)*pPaintInfo;
|
||||
mDIBitmap->copyBits(mResBitmap->ptrData(),mResBitmap->imageExtent());
|
||||
mDIBitmap->stretchBlt(pureDevice,Rect(0,0,width(),height()));
|
||||
pureDevice.select((GDIObj)mTextFont,TRUE);
|
||||
pureDevice.setTextColor(RGBColor(247,231,33));
|
||||
pureDevice.setBkMode(PureDevice::Transparent);
|
||||
// pureDevice.textOut(60,180,"1998 Diversified Software Solutions");
|
||||
if(!mInstallLine.isNull())
|
||||
{
|
||||
pureDevice.setTextColor(RGBColor(255,255,255));
|
||||
pureDevice.textOut(50,196,mInstallLine);
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
// virtuals
|
||||
int SplashScreen::onDestroy(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
68
m68hc11/SPLASH.HPP
Normal file
@@ -0,0 +1,68 @@
|
||||
#ifndef _M68HC11_SPLASHSCREEN_HPP_
|
||||
#define _M68HC11_SPLASHSCREEN_HPP_
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_WINDOW_HPP_
|
||||
#include <common/window.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_RECTANGLE_HPP_
|
||||
#include <common/rect.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_FONT_HPP_
|
||||
#include <common/font.hpp>
|
||||
#endif
|
||||
|
||||
class ResBitmap;
|
||||
class DIBitmap;
|
||||
|
||||
class SplashScreen : public Window
|
||||
{
|
||||
public:
|
||||
enum{TimeOut=2500};
|
||||
SplashScreen(const String &strBitmap,const String &strCaption,UINT timeout=TimeOut);
|
||||
virtual ~SplashScreen();
|
||||
BOOL perform(Rect initRect=Rect(CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT));
|
||||
protected:
|
||||
virtual int onDestroy(void);
|
||||
private:
|
||||
enum {TimerID=0};
|
||||
SplashScreen(const SplashScreen &someSplashScreen);
|
||||
SplashScreen &operator=(const SplashScreen &someSplashScreen);
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType paletteChangedHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType setFocusHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType timerHandler(CallbackData &someCallbackData);
|
||||
void registerClass(void);
|
||||
UINT timeout(void)const;
|
||||
|
||||
Callback<SplashScreen> mPaintHandler;
|
||||
Callback<SplashScreen> mCreateHandler;
|
||||
Callback<SplashScreen> mDestroyHandler;
|
||||
Callback<SplashScreen> mPaletteChangedHandler;
|
||||
Callback<SplashScreen> mSetFocusHandler;
|
||||
Callback<SplashScreen> mTimerHandler;
|
||||
|
||||
SmartPointer<ResBitmap> mResBitmap;
|
||||
SmartPointer<DIBitmap> mDIBitmap;
|
||||
SmartPointer<PureDevice> mPureDevice;
|
||||
String mBitmapName;
|
||||
String mStrCaption;
|
||||
String mInstallLine;
|
||||
UINT mTimeout;
|
||||
Font mTextFont;
|
||||
static char szClassName[];
|
||||
};
|
||||
|
||||
inline
|
||||
UINT SplashScreen::timeout(void)const
|
||||
{
|
||||
return mTimeout;
|
||||
}
|
||||
|
||||
#endif
|
||||
86
m68hc11/XTRAINFO.HPP
Normal file
@@ -0,0 +1,86 @@
|
||||
#ifndef _M68HC11_EXTRAINFO_HPP_
|
||||
#define _M68HC11_EXTRAINFO_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
|
||||
class ExtraInfo
|
||||
{
|
||||
public:
|
||||
ExtraInfo(void);
|
||||
ExtraInfo(const ExtraInfo &someExtraInfo);
|
||||
ExtraInfo(DWORD userDataOne,DWORD userDataTwo);
|
||||
virtual ~ExtraInfo();
|
||||
ExtraInfo &operator=(const ExtraInfo &someExtraInfo);
|
||||
BOOL operator==(const ExtraInfo &someExtraInfo)const;
|
||||
DWORD userDataOne(void)const;
|
||||
void userDataOne(DWORD userDataOne);
|
||||
DWORD userDataTwo(void)const;
|
||||
void userDataTwo(DWORD userDataTwo);
|
||||
private:
|
||||
DWORD mUserDataOne;
|
||||
DWORD mUserDataTwo;
|
||||
};
|
||||
|
||||
inline
|
||||
ExtraInfo::ExtraInfo(void)
|
||||
: mUserDataOne(0), mUserDataTwo(0)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
ExtraInfo::ExtraInfo(const ExtraInfo &someExtraInfo)
|
||||
{
|
||||
*this=someExtraInfo;
|
||||
}
|
||||
|
||||
inline
|
||||
ExtraInfo::ExtraInfo(DWORD userDataOne,DWORD userDataTwo)
|
||||
: mUserDataOne(userDataOne), mUserDataTwo(userDataTwo)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
ExtraInfo::~ExtraInfo()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
ExtraInfo &ExtraInfo::operator=(const ExtraInfo &someExtraInfo)
|
||||
{
|
||||
userDataOne(someExtraInfo.userDataOne());
|
||||
userDataTwo(someExtraInfo.userDataTwo());
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL ExtraInfo::operator==(const ExtraInfo &someExtraInfo)const
|
||||
{
|
||||
return (userDataOne()==someExtraInfo.userDataOne()&&
|
||||
userDataTwo()==someExtraInfo.userDataTwo());
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD ExtraInfo::userDataOne(void)const
|
||||
{
|
||||
return mUserDataOne;
|
||||
}
|
||||
|
||||
inline
|
||||
void ExtraInfo::userDataOne(DWORD userDataOne)
|
||||
{
|
||||
mUserDataOne=userDataOne;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD ExtraInfo::userDataTwo(void)const
|
||||
{
|
||||
return mUserDataTwo;
|
||||
}
|
||||
|
||||
inline
|
||||
void ExtraInfo::userDataTwo(DWORD userDataTwo)
|
||||
{
|
||||
mUserDataTwo=userDataTwo;
|
||||
}
|
||||
#endif
|
||||
BIN
m68hc11/ZERO.BMP
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
228
m68hc11/backup/COMMCTRL.HPP
Normal file
@@ -0,0 +1,228 @@
|
||||
#ifndef _COMMON_COMMCONTROL_HPP_
|
||||
#define _COMMON_COMMCONTROL_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_OPENFILE_HPP_
|
||||
#include <common/openfile.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_GLOBALDATA_HPP_
|
||||
#include <common/gdata.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_DEVICECONTROLBLOCK_HPP_
|
||||
#include <m68hc11/dcb.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_COMMSTATUS_HPP_
|
||||
#include <m68hc11/commstat.hpp>
|
||||
#endif
|
||||
#ifndef _THREAD_EVENT_HPP_
|
||||
#include <thread/event.hpp>
|
||||
#endif
|
||||
|
||||
class CommControl
|
||||
{
|
||||
public:
|
||||
enum {TimeOut=5000};
|
||||
enum Port{PortCOM1,PortCOM2,PortCOM3,PortCOM4};
|
||||
enum EventMask{EventBreak=EV_BREAK,EventCts=EV_CTS,EventDsr=EV_DSR,EventErr=EV_ERR,EventRing=EV_RING,
|
||||
EventRlsd=EV_RLSD,EventRxChar=EV_RXCHAR,EventRxFlag=EV_RXFLAG,EventTxEmpty=EV_TXEMPTY,
|
||||
EventAll=EV_BREAK|EV_CTS|EV_DSR|EV_ERR|EV_RING|EV_RLSD|EV_RXCHAR|EV_RXFLAG|EV_TXEMPTY};
|
||||
CommControl(void);
|
||||
virtual ~CommControl();
|
||||
bool open(Port commPort,BOOL overlappedIO=false);
|
||||
void close();
|
||||
bool getDeviceControlBlock(DeviceControlBlock &deviceControlBlock)const;
|
||||
bool setDeviceControlBlock(const DeviceControlBlock &deviceControlBlock)const;
|
||||
bool setDeviceControlBlock(String strControlBlock)const; // (ie) "baud=1200 parity=N data=8 stop=1"
|
||||
DWORD readLine(String &strLine);
|
||||
DWORD writeLine(const String &strLine)const;
|
||||
DWORD read(void *pBuffer,int length,DWORD timeout=0L);
|
||||
DWORD write(BYTE *pBuffer,int length)const;
|
||||
DWORD write(GlobalData<BYTE> &sndBuffer);
|
||||
DWORD enumerateDevices(Block<Port> &deviceList);
|
||||
DWORD enumerateDevices(Block<String> &deviceList);
|
||||
bool clearError(void)const;
|
||||
bool clearError(CommStatus &commStatus)const;
|
||||
bool clearBreak(void)const;
|
||||
bool clearReceiveQueue(void);
|
||||
bool readFully(GlobalData<BYTE> &dataBytes);
|
||||
bool readFully(BYTE *pBuffer,DWORD byteCount);
|
||||
bool setBreak(void)const;
|
||||
bool waitEvent(DWORD &eventMask,DWORD timeout);
|
||||
bool waitEvent(DWORD timeout=TimeOut);
|
||||
bool waitForBreak(DWORD timeout=TimeOut);
|
||||
bool waitForData(DWORD timeout=TimeOut);
|
||||
bool waitForTransmit(DWORD timeout=TimeOut);
|
||||
bool setEventMask(DWORD eventMask)const;
|
||||
bool hasData(void);
|
||||
bool isOkay(void)const;
|
||||
static void portToString(CommControl::Port port,String &strPort);
|
||||
static CommControl::Port stringToPort(const String &strPort);
|
||||
static void showBytes(GlobalData<BYTE> rcvBytes);
|
||||
static void showBytes(BYTE *pBuffer,DWORD byteCount);
|
||||
private:
|
||||
CommControl(const CommControl &someCommControl);
|
||||
CommControl &operator=(const CommControl &someCommControl);
|
||||
void showError(DWORD errorMask)const;
|
||||
|
||||
FileHandle mCommDevice;
|
||||
Block<String> mStrPorts;
|
||||
CommStatus mCommStatus;
|
||||
Event mIOEvent;
|
||||
Overlapped mOverlapped;
|
||||
};
|
||||
|
||||
inline
|
||||
CommControl::CommControl(void)
|
||||
{
|
||||
mOverlapped.event((HANDLE)mIOEvent);
|
||||
mStrPorts.insert(&String("\\.\\COM1"));
|
||||
mStrPorts.insert(&String("\\.\\COM2"));
|
||||
mStrPorts.insert(&String("\\.\\COM3"));
|
||||
mStrPorts.insert(&String("\\.\\COM4"));
|
||||
}
|
||||
|
||||
inline
|
||||
CommControl::CommControl(const CommControl &someCommControl)
|
||||
{ // private implementation
|
||||
*this=someCommControl;
|
||||
}
|
||||
|
||||
inline
|
||||
CommControl::~CommControl()
|
||||
{
|
||||
close();
|
||||
}
|
||||
|
||||
inline
|
||||
CommControl &CommControl::operator=(const CommControl &/*someCommControl*/)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::open(Port commPort,BOOL overlappedIO)
|
||||
{
|
||||
close();
|
||||
mCommDevice.open(mStrPorts[commPort],FileHandle::ReadWrite,FileHandle::ShareNone,FileHandle::Open,(overlappedIO?FileHandle::FlagOverlapped:FileHandle::Normal));
|
||||
return isOkay();
|
||||
}
|
||||
|
||||
inline
|
||||
void CommControl::close(void)
|
||||
{
|
||||
if(!isOkay())return;
|
||||
mCommDevice.close();
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommControl::readLine(String &strLine)
|
||||
{
|
||||
strLine.reserve(1024);
|
||||
if(!isOkay())return FALSE;
|
||||
clearError(mCommStatus);
|
||||
if(!mCommStatus.bytesInReceiveQueue())return FALSE;
|
||||
return mCommDevice.getLine(strLine);
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommControl::writeLine(const String &strLine)const
|
||||
{
|
||||
if(!isOkay()||strLine.isNull())return FALSE;
|
||||
return mCommDevice.writeLine(strLine);
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommControl::write(GlobalData<BYTE> &sndBuffer)
|
||||
{
|
||||
if(!isOkay()||!sndBuffer.size())return 0;
|
||||
return write(&sndBuffer[0],sndBuffer.size());
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommControl::write(BYTE *pBuffer,int length)const
|
||||
{
|
||||
if(!isOkay()||!pBuffer||!length)return 0;
|
||||
return mCommDevice.write(pBuffer,length);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::setBreak(void)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::SetCommBreak((HANDLE)mCommDevice);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::clearBreak(void)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::ClearCommBreak((HANDLE)mCommDevice);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::getDeviceControlBlock(DeviceControlBlock &deviceControlBlock)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::GetCommState((HANDLE)mCommDevice,&((DeviceControlBlock&)deviceControlBlock).getDCB());
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::setDeviceControlBlock(const DeviceControlBlock &deviceControlBlock)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::SetCommState((HANDLE)mCommDevice,&((DeviceControlBlock&)deviceControlBlock).getDCB());
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::setDeviceControlBlock(String strControlBlock)const // (ie) "baud=1200 parity=N data=8 stop=1"
|
||||
{
|
||||
DeviceControlBlock deviceControlBlock;
|
||||
if(!::BuildCommDCB(strControlBlock.str(),&((DeviceControlBlock&)deviceControlBlock).getDCB()))return false;
|
||||
return ::SetCommState((HANDLE)mCommDevice,&((DeviceControlBlock&)deviceControlBlock).getDCB());
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::setEventMask(DWORD eventMask)const
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
return ::SetCommMask((HANDLE)mCommDevice,eventMask);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::waitEvent(DWORD timeout)
|
||||
{
|
||||
DWORD eventMask;
|
||||
return waitEvent(eventMask,timeout);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::waitForBreak(DWORD timeout)
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
setEventMask(EventBreak);
|
||||
return waitEvent(timeout);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::waitForData(DWORD timeout)
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
setEventMask(EventRxChar);
|
||||
return waitEvent(timeout);
|
||||
}
|
||||
|
||||
inline
|
||||
bool CommControl::waitForTransmit(DWORD timeout)
|
||||
{
|
||||
if(!isOkay())return false;
|
||||
setEventMask(EventTxEmpty);
|
||||
return waitEvent(timeout);
|
||||
}
|
||||
#endif
|
||||
213
m68hc11/backup/COMMSTAT.HPP
Normal file
@@ -0,0 +1,213 @@
|
||||
#ifndef _M68HC11_COMMSTATUS_HPP_
|
||||
#define _M68HC11_COMMSTATUS_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
|
||||
class CommStatus : private _COMSTAT
|
||||
{
|
||||
public:
|
||||
CommStatus(void);
|
||||
CommStatus(const CommStatus &someCommStatus);
|
||||
virtual ~CommStatus();
|
||||
CommStatus &operator=(const CommStatus &someCommStatus);
|
||||
BOOL operator==(const CommStatus &someCommStatus)const;
|
||||
BOOL waitingForCts(void)const;
|
||||
BOOL waitingForDsr(void)const;
|
||||
BOOL waitingForRlsd(void)const;
|
||||
BOOL waitingRcvdXOff(void)const;
|
||||
BOOL waitingSentXOff(void)const;
|
||||
BOOL waitingRcvdEof(void)const;
|
||||
BOOL waitingForTx(void)const;
|
||||
DWORD bytesInReceiveQueue(void)const;
|
||||
DWORD bytesInSendQueue(void)const;
|
||||
_COMSTAT &getCOMSTAT(void);
|
||||
private:
|
||||
void waitingForCts(BOOL waitingForCts);
|
||||
void waitingForDsr(BOOL waitingForDsr);
|
||||
void waitingForRlsd(BOOL waitingForRlsd);
|
||||
void waitingRcvdXOff(BOOL waitingRcvdXOff);
|
||||
void waitingSentXOff(BOOL waitingSentXOff);
|
||||
void waitingRcvdEof(BOOL waitingRcvdEof);
|
||||
void waitingForTx(BOOL waitingForTx);
|
||||
void bytesInReceiveQueue(DWORD bytesInReceiveQueue);
|
||||
void bytesInSendQueue(DWORD bytesInSendQueue);
|
||||
void setZero(void);
|
||||
};
|
||||
|
||||
inline
|
||||
CommStatus::CommStatus(void)
|
||||
{
|
||||
setZero();
|
||||
}
|
||||
|
||||
inline
|
||||
CommStatus::CommStatus(const CommStatus &someCommStatus)
|
||||
{
|
||||
*this=someCommStatus;
|
||||
}
|
||||
|
||||
inline
|
||||
CommStatus::~CommStatus()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
CommStatus &CommStatus::operator=(const CommStatus &someCommStatus)
|
||||
{
|
||||
waitingForCts(someCommStatus.waitingForCts());
|
||||
waitingForDsr(someCommStatus.waitingForDsr());
|
||||
waitingForRlsd(someCommStatus.waitingForRlsd());
|
||||
waitingRcvdXOff(someCommStatus.waitingRcvdXOff());
|
||||
waitingSentXOff(someCommStatus.waitingSentXOff());
|
||||
waitingRcvdEof(someCommStatus.waitingRcvdEof());
|
||||
waitingForTx(someCommStatus.waitingForTx());
|
||||
bytesInReceiveQueue(someCommStatus.bytesInReceiveQueue());
|
||||
bytesInSendQueue(someCommStatus.bytesInSendQueue());
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::operator==(const CommStatus &someCommStatus)const
|
||||
{
|
||||
return (waitingForCts()==someCommStatus.waitingForCts()&&
|
||||
waitingForDsr()==someCommStatus.waitingForDsr()&&
|
||||
waitingForRlsd()==someCommStatus.waitingForRlsd()&&
|
||||
waitingRcvdXOff()==someCommStatus.waitingRcvdXOff()&&
|
||||
waitingSentXOff()==someCommStatus.waitingSentXOff()&&
|
||||
waitingRcvdEof()==someCommStatus.waitingRcvdEof()&&
|
||||
waitingForTx()==someCommStatus.waitingForTx()&&
|
||||
bytesInReceiveQueue()==someCommStatus.bytesInReceiveQueue()&&
|
||||
bytesInSendQueue()==someCommStatus.bytesInSendQueue());
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingForCts(void)const
|
||||
{
|
||||
return _COMSTAT::fCtsHold;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingForCts(BOOL waitingForCts)
|
||||
{
|
||||
_COMSTAT::fCtsHold=waitingForCts;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingForDsr(void)const
|
||||
{
|
||||
return _COMSTAT::fDsrHold;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingForDsr(BOOL waitingForDsr)
|
||||
{
|
||||
_COMSTAT::fDsrHold=waitingForDsr;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingForRlsd(void)const
|
||||
{
|
||||
return _COMSTAT::fRlsdHold;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingForRlsd(BOOL waitingForRlsd)
|
||||
{
|
||||
_COMSTAT::fRlsdHold=waitingForRlsd;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingRcvdXOff(void)const
|
||||
{
|
||||
return _COMSTAT::fXoffHold;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingRcvdXOff(BOOL waitingRcvdXOff)
|
||||
{
|
||||
_COMSTAT::fXoffHold=waitingRcvdXOff;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingSentXOff(void)const
|
||||
{
|
||||
return _COMSTAT::fXoffSent;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingSentXOff(BOOL waitingSentXOff)
|
||||
{
|
||||
_COMSTAT::fXoffSent=waitingSentXOff;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingRcvdEof(void)const
|
||||
{
|
||||
return _COMSTAT::fEof;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingRcvdEof(BOOL waitingRcvdEof)
|
||||
{
|
||||
_COMSTAT::fEof=waitingRcvdEof;
|
||||
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL CommStatus::waitingForTx(void)const
|
||||
{
|
||||
return _COMSTAT::fTxim;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::waitingForTx(BOOL waitingForTx)
|
||||
{
|
||||
_COMSTAT::fTxim=waitingForTx;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommStatus::bytesInReceiveQueue(void)const
|
||||
{
|
||||
return _COMSTAT::cbInQue;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::bytesInReceiveQueue(DWORD bytesInReceiveQueue)
|
||||
{
|
||||
_COMSTAT::cbInQue=bytesInReceiveQueue;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD CommStatus::bytesInSendQueue(void)const
|
||||
{
|
||||
return _COMSTAT::cbOutQue;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::bytesInSendQueue(DWORD bytesInSendQueue)
|
||||
{
|
||||
_COMSTAT::cbOutQue=bytesInSendQueue;
|
||||
}
|
||||
|
||||
inline
|
||||
_COMSTAT &CommStatus::getCOMSTAT(void)
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
void CommStatus::setZero(void)
|
||||
{
|
||||
_COMSTAT::fCtsHold=0;
|
||||
_COMSTAT::fDsrHold=0;
|
||||
_COMSTAT::fRlsdHold=0;
|
||||
_COMSTAT::fXoffHold=0;
|
||||
_COMSTAT::fXoffSent=0;
|
||||
_COMSTAT::fEof=0;
|
||||
_COMSTAT::fTxim=0;
|
||||
_COMSTAT::fReserved=0;
|
||||
_COMSTAT::cbInQue=0;
|
||||
_COMSTAT::cbOutQue=0;
|
||||
}
|
||||
#endif
|
||||
318
m68hc11/backup/DCB.CPP
Normal file
@@ -0,0 +1,318 @@
|
||||
#include <m68hc11/dcb.hpp>
|
||||
|
||||
DeviceControlBlock::DeviceControlBlock(void)
|
||||
{
|
||||
setZero();
|
||||
}
|
||||
|
||||
DeviceControlBlock::DeviceControlBlock(const DeviceControlBlock &someDeviceControlBlock)
|
||||
{
|
||||
*this=someDeviceControlBlock;
|
||||
}
|
||||
|
||||
DeviceControlBlock::~DeviceControlBlock()
|
||||
{
|
||||
}
|
||||
|
||||
DeviceControlBlock &DeviceControlBlock::operator=(const DeviceControlBlock &someDeviceControlBlock)
|
||||
{
|
||||
baudRate(someDeviceControlBlock.baudRate());
|
||||
binaryEnabled(someDeviceControlBlock.binaryEnabled());
|
||||
enableParity(someDeviceControlBlock.enableParity());
|
||||
ctsFlowControlOutMonitor(someDeviceControlBlock.ctsFlowControlOutMonitor());
|
||||
dsrFlowControlOutMonitor(someDeviceControlBlock.dsrFlowControlOutMonitor());
|
||||
dtrControl(someDeviceControlBlock.dtrControl());
|
||||
dsrSensitivityEnable(someDeviceControlBlock.dsrSensitivityEnable());
|
||||
continueOnXOff(someDeviceControlBlock.continueOnXOff());
|
||||
xonXOffEnableTransmit(someDeviceControlBlock.xonXOffEnableTransmit());
|
||||
xonXOffEnableReceive(someDeviceControlBlock.xonXOffEnableReceive());
|
||||
errorCharEnable(someDeviceControlBlock.errorCharEnable());
|
||||
discardNullEnable(someDeviceControlBlock.discardNullEnable());
|
||||
rtsControl(someDeviceControlBlock.rtsControl());
|
||||
abortOnErrorEnable(someDeviceControlBlock.abortOnErrorEnable());
|
||||
xonLimit(someDeviceControlBlock.xonLimit());
|
||||
xoffLimit(someDeviceControlBlock.xoffLimit());
|
||||
dataBits(someDeviceControlBlock.dataBits());
|
||||
parity(someDeviceControlBlock.parity());
|
||||
stopBits(someDeviceControlBlock.stopBits());
|
||||
xonChar(someDeviceControlBlock.xonChar());
|
||||
xoffChar(someDeviceControlBlock.xoffChar());
|
||||
errorChar(someDeviceControlBlock.errorChar());
|
||||
eofChar(someDeviceControlBlock.eofChar());
|
||||
evtChar(someDeviceControlBlock.evtChar());
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::operator==(const DeviceControlBlock &someDeviceControlBlock)
|
||||
{
|
||||
return(baudRate()==someDeviceControlBlock.baudRate()&&
|
||||
binaryEnabled()==someDeviceControlBlock.binaryEnabled()&&
|
||||
enableParity()==someDeviceControlBlock.enableParity()&&
|
||||
ctsFlowControlOutMonitor()==someDeviceControlBlock.ctsFlowControlOutMonitor()&&
|
||||
dsrFlowControlOutMonitor()==someDeviceControlBlock.dsrFlowControlOutMonitor()&&
|
||||
dtrControl()==someDeviceControlBlock.dtrControl()&&
|
||||
dsrSensitivityEnable()==someDeviceControlBlock.dsrSensitivityEnable()&&
|
||||
continueOnXOff()==someDeviceControlBlock.continueOnXOff()&&
|
||||
xonXOffEnableTransmit()==someDeviceControlBlock.xonXOffEnableTransmit()&&
|
||||
xonXOffEnableReceive()==someDeviceControlBlock.xonXOffEnableReceive()&&
|
||||
errorCharEnable()==someDeviceControlBlock.errorCharEnable()&&
|
||||
discardNullEnable()==someDeviceControlBlock.discardNullEnable()&&
|
||||
rtsControl()==someDeviceControlBlock.rtsControl()&&
|
||||
abortOnErrorEnable()==someDeviceControlBlock.abortOnErrorEnable()&&
|
||||
xonLimit()==someDeviceControlBlock.xonLimit()&&
|
||||
xoffLimit()==someDeviceControlBlock.xoffLimit()&&
|
||||
dataBits()==someDeviceControlBlock.dataBits()&&
|
||||
parity()==someDeviceControlBlock.parity()&&
|
||||
stopBits()==someDeviceControlBlock.stopBits()&&
|
||||
xonChar()==someDeviceControlBlock.xonChar()&&
|
||||
xoffChar()==someDeviceControlBlock.xoffChar()&&
|
||||
errorChar()==someDeviceControlBlock.errorChar()&&
|
||||
eofChar()==someDeviceControlBlock.eofChar()&&
|
||||
evtChar()==someDeviceControlBlock.evtChar());
|
||||
}
|
||||
|
||||
DWORD DeviceControlBlock::baudRate(void)const
|
||||
{
|
||||
return _DCB::BaudRate;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::baudRate(DWORD baudRate)
|
||||
{
|
||||
_DCB::BaudRate=baudRate;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::binaryEnabled(void)const
|
||||
{
|
||||
return _DCB::fBinary;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::binaryEnabled(BOOL binaryEnabled)
|
||||
{
|
||||
_DCB::fBinary=binaryEnabled;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::enableParity(void)const
|
||||
{
|
||||
return _DCB::fParity;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::enableParity(BOOL parity)
|
||||
{
|
||||
_DCB::fParity=parity;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::ctsFlowControlOutMonitor(void)const
|
||||
{
|
||||
return _DCB::fOutxCtsFlow;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::ctsFlowControlOutMonitor(BOOL ctsFlowControlOut)
|
||||
{
|
||||
_DCB::fOutxCtsFlow=ctsFlowControlOut;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::dsrFlowControlOutMonitor(void)const
|
||||
{
|
||||
return _DCB::fOutxDsrFlow;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::dsrFlowControlOutMonitor(BOOL dsrFlowControlOut)
|
||||
{
|
||||
_DCB::fOutxDsrFlow=dsrFlowControlOut;
|
||||
}
|
||||
|
||||
DeviceControlBlock::DtrControl DeviceControlBlock::dtrControl(void)const
|
||||
{
|
||||
return DtrControl(_DCB::fDtrControl);
|
||||
}
|
||||
|
||||
void DeviceControlBlock::dtrControl(DtrControl dtrControl)
|
||||
{
|
||||
_DCB::fDtrControl=(DWORD)dtrControl;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::dsrSensitivityEnable(void)const
|
||||
{
|
||||
return _DCB::fDsrSensitivity;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::dsrSensitivityEnable(BOOL dsrSensitivityEnable)
|
||||
{
|
||||
_DCB::fDsrSensitivity=dsrSensitivityEnable;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::continueOnXOff(void)const
|
||||
{
|
||||
return _DCB::fTXContinueOnXoff;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::continueOnXOff(BOOL continueOnXOff)
|
||||
{
|
||||
_DCB::fTXContinueOnXoff=continueOnXOff;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::xonXOffEnableTransmit(void)const
|
||||
{
|
||||
return _DCB::fOutX;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xonXOffEnableTransmit(BOOL xonXOffEnable)
|
||||
{
|
||||
_DCB::fOutX=xonXOffEnable;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::xonXOffEnableReceive(void)const
|
||||
{
|
||||
return _DCB::fInX;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xonXOffEnableReceive(BOOL xonXOffEnable)
|
||||
{
|
||||
_DCB::fInX=xonXOffEnable;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::errorCharEnable(void)const
|
||||
{
|
||||
return _DCB::fErrorChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::errorCharEnable(BOOL errorCharEnable)
|
||||
{
|
||||
_DCB::fErrorChar=errorCharEnable;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::discardNullEnable(void)const
|
||||
{
|
||||
return _DCB::fNull;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::discardNullEnable(BOOL discardNullEnable)
|
||||
{
|
||||
_DCB::fNull=discardNullEnable;
|
||||
}
|
||||
|
||||
DeviceControlBlock::RtsControl DeviceControlBlock::rtsControl(void)const
|
||||
{
|
||||
return RtsControl(_DCB::fRtsControl);
|
||||
}
|
||||
|
||||
void DeviceControlBlock::rtsControl(RtsControl rtsControl)
|
||||
{
|
||||
_DCB::fRtsControl=(DWORD)rtsControl;
|
||||
}
|
||||
|
||||
BOOL DeviceControlBlock::abortOnErrorEnable(void)const
|
||||
{
|
||||
return _DCB::fAbortOnError;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::abortOnErrorEnable(BOOL abortOnError)
|
||||
{
|
||||
_DCB::fAbortOnError=abortOnError;
|
||||
}
|
||||
|
||||
WORD DeviceControlBlock::xonLimit(void)const
|
||||
{
|
||||
return _DCB::XonLim;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xonLimit(WORD xonLimit)
|
||||
{
|
||||
_DCB::XonLim=xonLimit;
|
||||
}
|
||||
|
||||
WORD DeviceControlBlock::xoffLimit(void)const
|
||||
{
|
||||
return _DCB::XoffLim;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xoffLimit(WORD xoffLimit)
|
||||
{
|
||||
_DCB::XoffLim=xoffLimit;
|
||||
}
|
||||
|
||||
BYTE DeviceControlBlock::dataBits(void)const
|
||||
{
|
||||
return _DCB::ByteSize;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::dataBits(BYTE dataBits)
|
||||
{
|
||||
_DCB::ByteSize=dataBits;
|
||||
}
|
||||
|
||||
DeviceControlBlock::Parity DeviceControlBlock::parity(void)const
|
||||
{
|
||||
return Parity(_DCB::Parity);
|
||||
}
|
||||
|
||||
void DeviceControlBlock::parity(Parity parity)
|
||||
{
|
||||
_DCB::Parity=BYTE(parity);
|
||||
}
|
||||
|
||||
BYTE DeviceControlBlock::stopBits(void)const
|
||||
{
|
||||
return _DCB::StopBits;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::stopBits(BYTE stopBits)
|
||||
{
|
||||
_DCB::StopBits=stopBits;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::xonChar(void)const
|
||||
{
|
||||
return _DCB::XonChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xonChar(char xonChar)
|
||||
{
|
||||
_DCB::XonChar=xonChar;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::xoffChar(void)const
|
||||
{
|
||||
return _DCB::XoffChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::xoffChar(char xoffChar)
|
||||
{
|
||||
_DCB::XoffChar=xoffChar;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::errorChar(void)const
|
||||
{
|
||||
return _DCB::ErrorChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::errorChar(char errorChar)
|
||||
{
|
||||
_DCB::ErrorChar=errorChar;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::eofChar(void)const
|
||||
{
|
||||
return _DCB::EofChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::eofChar(char eofChar)
|
||||
{
|
||||
_DCB::EofChar;
|
||||
}
|
||||
|
||||
char DeviceControlBlock::evtChar(void)const
|
||||
{
|
||||
return _DCB::EvtChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::evtChar(char evtChar)
|
||||
{
|
||||
_DCB::EvtChar=evtChar;
|
||||
}
|
||||
|
||||
void DeviceControlBlock::setZero(void)
|
||||
{
|
||||
::memset(&(_DCB&)*this,0,sizeof(_DCB));
|
||||
_DCB::DCBlength=sizeof(_DCB);
|
||||
}
|
||||
79
m68hc11/backup/DCB.HPP
Normal file
@@ -0,0 +1,79 @@
|
||||
#ifndef _M68HC11_DEVICECONTROLBLOCK_HPP_
|
||||
#define _M68HC11_DEVICECONTROLBLOCK_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STDLIB_HPP_
|
||||
#include <common/stdlib.hpp>
|
||||
#endif
|
||||
|
||||
class DeviceControlBlock : private _DCB
|
||||
{
|
||||
public:
|
||||
enum DtrControl{DtrControlDisable=DTR_CONTROL_DISABLE,DtrControlEnable=DTR_CONTROL_ENABLE,DtrControlHandshake=DTR_CONTROL_HANDSHAKE};
|
||||
enum RtsControl{RtsControlDisable=RTS_CONTROL_DISABLE,RtsControlEnable=RTS_CONTROL_ENABLE,RtsControlHandshake=RTS_CONTROL_HANDSHAKE,RtsControlToggle=RTS_CONTROL_TOGGLE};
|
||||
enum Parity{ParityNone,ParityOdd,ParityEven,ParityMark};
|
||||
DeviceControlBlock(void);
|
||||
DeviceControlBlock(const DeviceControlBlock &someDeviceControlBlock);
|
||||
virtual ~DeviceControlBlock();
|
||||
DeviceControlBlock &operator=(const DeviceControlBlock &someDeviceControlBlock);
|
||||
BOOL operator==(const DeviceControlBlock &someDeviceControlBlock);
|
||||
DWORD baudRate(void)const;
|
||||
void baudRate(DWORD baudRate);
|
||||
BOOL binaryEnabled(void)const;
|
||||
void binaryEnabled(BOOL binaryEnabled);
|
||||
BOOL enableParity(void)const;
|
||||
void enableParity(BOOL parity);
|
||||
BOOL ctsFlowControlOutMonitor(void)const;
|
||||
void ctsFlowControlOutMonitor(BOOL ctsFlowControlOut);
|
||||
BOOL dsrFlowControlOutMonitor(void)const;
|
||||
void dsrFlowControlOutMonitor(BOOL dsrFlowControlOut);
|
||||
DtrControl dtrControl(void)const;
|
||||
void dtrControl(DtrControl dtrControl);
|
||||
BOOL dsrSensitivityEnable(void)const;
|
||||
void dsrSensitivityEnable(BOOL dsrSensitivityEnable);
|
||||
BOOL continueOnXOff(void)const;
|
||||
void continueOnXOff(BOOL continueOnXOff);
|
||||
BOOL xonXOffEnableTransmit(void)const;
|
||||
void xonXOffEnableTransmit(BOOL xonXOffEnable);
|
||||
BOOL xonXOffEnableReceive(void)const;
|
||||
void xonXOffEnableReceive(BOOL xonXOffEnable);
|
||||
BOOL errorCharEnable(void)const;
|
||||
void errorCharEnable(BOOL errorCharEnable);
|
||||
BOOL discardNullEnable(void)const;
|
||||
void discardNullEnable(BOOL discardNullEnable);
|
||||
RtsControl rtsControl(void)const;
|
||||
void rtsControl(RtsControl rtsControl);
|
||||
BOOL abortOnErrorEnable(void)const;
|
||||
void abortOnErrorEnable(BOOL abortOnError);
|
||||
WORD xonLimit(void)const;
|
||||
void xonLimit(WORD xonLimit);
|
||||
WORD xoffLimit(void)const;
|
||||
void xoffLimit(WORD xoffLimit);
|
||||
BYTE dataBits(void)const;
|
||||
void dataBits(BYTE dataBits);
|
||||
Parity parity(void)const;
|
||||
void parity(Parity parity);
|
||||
BYTE stopBits(void)const;
|
||||
void stopBits(BYTE stopBits);
|
||||
char xonChar(void)const;
|
||||
void xonChar(char xonChar);
|
||||
char xoffChar(void)const;
|
||||
void xoffChar(char xoffChar);
|
||||
char errorChar(void)const;
|
||||
void errorChar(char errorChar);
|
||||
char eofChar(void)const;
|
||||
void eofChar(char eofChar);
|
||||
char evtChar(void)const;
|
||||
void evtChar(char evtChar);
|
||||
_DCB &getDCB(void);
|
||||
private:
|
||||
void setZero(void);
|
||||
};
|
||||
|
||||
inline
|
||||
_DCB &DeviceControlBlock::getDCB(void)
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
51
m68hc11/backup/Editfnd.cpp
Normal file
@@ -0,0 +1,51 @@
|
||||
#include <m68hc11/editfnd.hpp>
|
||||
|
||||
EditFind::EditFind(void)
|
||||
{
|
||||
}
|
||||
|
||||
EditFind::~EditFind()
|
||||
{
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
void EditFind::init(void)
|
||||
{
|
||||
CharRange searchRange;
|
||||
|
||||
searchRange.posMin(0);
|
||||
searchRange.posMax(0);
|
||||
mFindTextEx.searchRange(searchRange);
|
||||
}
|
||||
|
||||
void EditFind::leaveEdit(const String &strText)
|
||||
{
|
||||
findNext();
|
||||
}
|
||||
|
||||
void EditFind::find(void)
|
||||
{
|
||||
findNext();
|
||||
}
|
||||
|
||||
void EditFind::findNext(void)
|
||||
{
|
||||
String currText;
|
||||
|
||||
getText(currText);
|
||||
if(currText.isNull())return;
|
||||
if(!(currText==lastSearchText()))lastFindIndex(-1);
|
||||
mFindTextEx.strFind(currText);
|
||||
if(!mFindTextEx.searchRange().posMin()&&!mFindTextEx.searchRange().posMax())mFindTextEx.searchRange(CharRange(0,-1));
|
||||
else
|
||||
{
|
||||
CharRange searchRange(mFindTextEx.foundRange());
|
||||
searchRange.posMin(searchRange.posMax());
|
||||
searchRange.posMax(-1);
|
||||
mFindTextEx.searchRange(searchRange);
|
||||
}
|
||||
// mRichEditControl->setFocus();
|
||||
mRichEditControl->findText(mFindTextEx);
|
||||
// setFocus();
|
||||
}
|
||||
35
m68hc11/backup/Editfnd.hpp
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _M68HC11_EDITFIND_HPP_
|
||||
#define _M68HC11_EDITFIND_HPP_
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_RICHEDIT_HPP_
|
||||
#include <common/richedit.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_FIND_HPP_
|
||||
#include <m68hc11/find.hpp>
|
||||
#endif
|
||||
|
||||
class EditFind : private Find
|
||||
{
|
||||
public:
|
||||
EditFind(void);
|
||||
virtual ~EditFind();
|
||||
void perform(GUIWindow &parentWindow,RichEditControl &richEditControl);
|
||||
protected:
|
||||
virtual void findNext(void);
|
||||
virtual void init(void);
|
||||
virtual void find(void);
|
||||
virtual void leaveEdit(const String &strText);
|
||||
private:
|
||||
SmartPointer<RichEditControl> mRichEditControl;
|
||||
FindTextEx mFindTextEx;
|
||||
};
|
||||
|
||||
inline
|
||||
void EditFind::perform(GUIWindow &parentWindow,RichEditControl &richEditControl)
|
||||
{
|
||||
mRichEditControl=&richEditControl;
|
||||
Find::perform(parentWindow);
|
||||
}
|
||||
#endif
|
||||
192
m68hc11/backup/Find.cpp
Normal file
@@ -0,0 +1,192 @@
|
||||
#include <m68hc11/find.hpp>
|
||||
#include <common/keydata.hpp>
|
||||
|
||||
Find::Find(void)
|
||||
: mLastFindIndex(-1)
|
||||
{
|
||||
mKeyDownHandler.setCallback(this,&Find::keyDownHandler);
|
||||
mDlgCodeHandler.setCallback(this,&Find::dlgCodeHandler);
|
||||
mEditHook.insertHandler(WinHookProc::KeyDownHandler,&mKeyDownHandler);
|
||||
mEditHook.insertHandler(WinHookProc::DialogCodeHandler,&mDlgCodeHandler);
|
||||
}
|
||||
|
||||
Find::Find(const Find &find)
|
||||
{ // private implementation
|
||||
*this=find;
|
||||
}
|
||||
|
||||
Find::~Find()
|
||||
{
|
||||
mEditHook.removeHandler(WinHookProc::KeyDownHandler,&mKeyDownHandler);
|
||||
mEditHook.removeHandler(WinHookProc::DialogCodeHandler,&mDlgCodeHandler);
|
||||
}
|
||||
|
||||
Find &Find::operator=(const Find &find)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
void Find::perform(GUIWindow &parentWindow)
|
||||
{
|
||||
create(parentWindow);
|
||||
}
|
||||
|
||||
void Find::create(GUIWindow &parentWindow)
|
||||
{
|
||||
String staticName("STATIC");
|
||||
String editName("EDIT");
|
||||
String buttonName("BUTTON");
|
||||
|
||||
DialogTemplate dlgTemplate;
|
||||
DialogItemTemplate staticFind;
|
||||
DialogItemTemplate editFind;
|
||||
DialogItemTemplate cancelButton;
|
||||
DialogItemTemplate fnButton;
|
||||
DialogItemTemplate wmButton;
|
||||
|
||||
dlgTemplate.titleText("Find");
|
||||
dlgTemplate.posRect(Rect(10,73,236,62));
|
||||
dlgTemplate.pointSize(8);
|
||||
dlgTemplate.typeFace("Helv");
|
||||
dlgTemplate.style(DS_MODALFRAME|WS_VISIBLE|WS_CAPTION|DS_3DLOOK|WS_SYSMENU|DS_SETFONT|WS_POPUP); // WS_POPUP
|
||||
|
||||
staticFind.className(staticName);
|
||||
staticFind.titleText("Fi&nd what:");
|
||||
staticFind.style(WS_CHILD|WS_VISIBLE);
|
||||
staticFind.posRect(Rect(4,8,42,8));
|
||||
staticFind.itemID(-1);
|
||||
|
||||
editFind.className(editName);
|
||||
editFind.titleText("");
|
||||
editFind.style(WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP|WS_GROUP);
|
||||
editFind.posRect(Rect(47,7,128,12));
|
||||
editFind.itemID(FindText);
|
||||
|
||||
fnButton.className(buttonName);
|
||||
fnButton.titleText("&Find Next");
|
||||
fnButton.style(WS_VISIBLE|WS_CHILD|WS_TABSTOP|WS_GROUP|BS_DEFPUSHBUTTON);
|
||||
fnButton.posRect(Rect(182,5,50,14));
|
||||
fnButton.itemID(FindNext);
|
||||
|
||||
wmButton.className(buttonName);
|
||||
wmButton.titleText("Match &whole word only");
|
||||
wmButton.style(WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_AUTOCHECKBOX|WS_GROUP);
|
||||
wmButton.posRect(Rect(4,26,100,12));
|
||||
wmButton.itemID(FindWhole);
|
||||
|
||||
cancelButton.className(buttonName);
|
||||
cancelButton.titleText("Cancel");
|
||||
cancelButton.style(WS_VISIBLE|WS_CHILD|WS_TABSTOP|WS_GROUP);
|
||||
cancelButton.posRect(Rect(182,23,50,14));
|
||||
cancelButton.itemID(CancelFind);
|
||||
|
||||
dlgTemplate+=staticFind;
|
||||
dlgTemplate+=editFind;
|
||||
dlgTemplate+=cancelButton;
|
||||
dlgTemplate+=fnButton;
|
||||
dlgTemplate+=wmButton;
|
||||
createDialog(parentWindow,dlgTemplate,DynamicDialog::ModelessDialog);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Find::keyDownHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
KeyData keyData(someCallbackData);
|
||||
String strEditText;
|
||||
|
||||
if(keyData.isEscapeKey())GUIWindow::postMessage(*this,WM_CLOSE,0,0L);
|
||||
else if(keyData.isEnterKey())
|
||||
{
|
||||
getText(strEditText);
|
||||
leaveEdit(strEditText);
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Find::dlgCodeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)DLGC_WANTALLKEYS;
|
||||
}
|
||||
|
||||
WORD Find::dlgCommand(DWORD commandID,CallbackData &someCallbackData)
|
||||
{
|
||||
switch(commandID)
|
||||
{
|
||||
case FindText :
|
||||
break;
|
||||
case FindNext :
|
||||
handleFindNext();
|
||||
break;
|
||||
case CancelFind :
|
||||
destroy();
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
WORD Find::dlgCode(CallbackData &someCallbackData)
|
||||
{
|
||||
return DLGC_WANTALLKEYS;
|
||||
}
|
||||
|
||||
BOOL Find::dlgInitDialog(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mEditHook.hookWin(getItem(FindText));
|
||||
init();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Find::dlgDestroyDialog(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mEditHook.unhookWin();
|
||||
return;
|
||||
}
|
||||
|
||||
void Find::getText(String &strEditText)
|
||||
{
|
||||
String strText;
|
||||
|
||||
DynamicDialog::getText(FindText,strText);
|
||||
strEditText=strText;
|
||||
}
|
||||
|
||||
BOOL Find::matchWholeWordOnly(void)const
|
||||
{
|
||||
return ::SendMessage(getItem(FindWhole),BM_GETCHECK,0,0L);
|
||||
}
|
||||
|
||||
void Find::handleFind(void)
|
||||
{
|
||||
find();
|
||||
}
|
||||
|
||||
void Find::handleFindNext(void)
|
||||
{
|
||||
findNext();
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
void Find::init(void)
|
||||
{
|
||||
}
|
||||
|
||||
void Find::find(void)
|
||||
{
|
||||
String currText;
|
||||
|
||||
getText(currText);
|
||||
lastSearchText(currText);
|
||||
}
|
||||
|
||||
void Find::findNext(void)
|
||||
{
|
||||
String currText;
|
||||
|
||||
getText(currText);
|
||||
lastSearchText(currText);
|
||||
}
|
||||
|
||||
void Find::leaveEdit(const String &strEditText)
|
||||
{
|
||||
lastSearchText(strEditText);
|
||||
}
|
||||
81
m68hc11/backup/Find.hpp
Normal file
@@ -0,0 +1,81 @@
|
||||
#ifndef _M68HC11_FIND_HPP_
|
||||
#define _M68HC11_FIND_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _DIALOG_DYNAMICDIALOG_HPP_
|
||||
#include <dialog/dyndlg.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_HOOKPROC_HPP_
|
||||
#include <common/hookproc.hpp>
|
||||
#endif
|
||||
|
||||
class Find : private DynamicDialog
|
||||
{
|
||||
public:
|
||||
Find(void);
|
||||
virtual ~Find();
|
||||
void perform(GUIWindow &parentWindow);
|
||||
int lastFindIndex(void)const;
|
||||
const String &lastSearchText(void)const;
|
||||
void setFocus(void)const;
|
||||
protected:
|
||||
virtual void init(void);
|
||||
virtual void find(void);
|
||||
virtual void findNext(void);
|
||||
virtual void leaveEdit(const String &strText);
|
||||
void getText(String &strEditText);
|
||||
void lastFindIndex(int lastFindIndex);
|
||||
void lastSearchText(const String &lastSearchText);
|
||||
BOOL matchWholeWordOnly(void)const;
|
||||
private:
|
||||
enum{FindText=101,CancelFind=IDCANCEL,FindNext=103,FindWhole=104};
|
||||
Find(const Find &find);
|
||||
Find &operator=(const Find &find);
|
||||
CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType dlgCodeHandler(CallbackData &someCallbackData);
|
||||
void handleFind(void);
|
||||
void handleFindNext(void);
|
||||
void create(GUIWindow &parentWindow);
|
||||
WORD dlgCommand(DWORD commandID,CallbackData &someCallbackData);
|
||||
WORD dlgCode(CallbackData &someCallbackData);
|
||||
BOOL dlgInitDialog(CallbackData &someCallbackData);
|
||||
void dlgDestroyDialog(CallbackData &someCallbackData);
|
||||
|
||||
Callback<Find> mKeyDownHandler;
|
||||
Callback<Find> mDlgCodeHandler;
|
||||
String mLastSearchText;
|
||||
int mLastFindIndex;
|
||||
WinHookProc mEditHook;
|
||||
};
|
||||
|
||||
inline
|
||||
const String &Find::lastSearchText(void)const
|
||||
{
|
||||
return mLastSearchText;
|
||||
}
|
||||
|
||||
inline
|
||||
void Find::lastSearchText(const String &lastSearchText)
|
||||
{
|
||||
mLastSearchText=lastSearchText;
|
||||
}
|
||||
|
||||
inline
|
||||
void Find::lastFindIndex(int lastFindIndex)
|
||||
{
|
||||
mLastFindIndex=lastFindIndex;
|
||||
}
|
||||
|
||||
inline
|
||||
int Find::lastFindIndex(void)const
|
||||
{
|
||||
return mLastFindIndex;
|
||||
}
|
||||
|
||||
inline
|
||||
void Find::setFocus(void)const
|
||||
{
|
||||
GUIWindow::setFocus();
|
||||
}
|
||||
#endif
|
||||
6
m68hc11/backup/M68HC11.HPP
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef _M68HC11_M68HC11_HPP_
|
||||
#define _M68HC11_M68HC11_HPP_
|
||||
#ifndef _M68HC11_M68HC11_H_
|
||||
#include <m68hc11/m68hc11.h>
|
||||
#endif
|
||||
#endif
|
||||
219
m68hc11/backup/M68REG.CPP
Normal file
@@ -0,0 +1,219 @@
|
||||
#include <m68hc11/m68reg.hpp>
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
|
||||
M68Reg::M68Reg(void)
|
||||
: mM68KeyName(STRING_M68KEYNAME),
|
||||
mHistoryKeyName(STRING_HISTORYKEYNAME),
|
||||
mSettingsKeyName(STRING_SETTINGSKEYNAME),
|
||||
mSerialKeyName(STRING_SERIALKEYNAME),
|
||||
mHistoryKeyShortName(STRING_HISTORYKEYSHORTNAME),
|
||||
mSettingsEMAIL(STRING_SETTINGSEMAIL),
|
||||
mSerialPort(STRING_SERIALPORT),
|
||||
mSerialBaud(STRING_SERIALBAUD),
|
||||
mSerialData(STRING_SERIALDATA),
|
||||
mSerialParity(STRING_SERIALPARITY),
|
||||
mSerialStop(STRING_SERIALSTOP),
|
||||
mRegKeySettings(RegKey::CurrentUser),
|
||||
mRegKeyHistory(RegKey::CurrentUser),
|
||||
mRegKeySerial(RegKey::CurrentUser)
|
||||
{
|
||||
guarantee();
|
||||
getCacheNames();
|
||||
}
|
||||
|
||||
M68Reg::M68Reg(const M68Reg &someM68Reg)
|
||||
: mM68KeyName(STRING_M68KEYNAME),
|
||||
mHistoryKeyName(STRING_HISTORYKEYNAME),
|
||||
mSettingsKeyName(STRING_SETTINGSKEYNAME),
|
||||
mSerialKeyName(STRING_SERIALKEYNAME),
|
||||
mHistoryKeyShortName(STRING_HISTORYKEYSHORTNAME),
|
||||
mSettingsEMAIL(STRING_SETTINGSEMAIL),
|
||||
mSerialPort(STRING_SERIALPORT),
|
||||
mSerialBaud(STRING_SERIALBAUD),
|
||||
mSerialData(STRING_SERIALDATA),
|
||||
mSerialParity(STRING_SERIALPARITY),
|
||||
mSerialStop(STRING_SERIALSTOP),
|
||||
mRegKeySettings(RegKey::CurrentUser),
|
||||
mRegKeyHistory(RegKey::CurrentUser),
|
||||
mRegKeySerial(RegKey::CurrentUser)
|
||||
{
|
||||
*this=someM68Reg;
|
||||
}
|
||||
|
||||
M68Reg::~M68Reg()
|
||||
{
|
||||
}
|
||||
|
||||
M68Reg &M68Reg::operator=(const M68Reg &/*someM68Reg*/)
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
void M68Reg::getCacheNames(void)
|
||||
{
|
||||
int itemIndex(0);
|
||||
String entryName;
|
||||
DWORD status;
|
||||
|
||||
mCachedNames.remove();
|
||||
while(mRegKeyHistory.enumValue(itemIndex++,entryName,status))mCachedNames.insert(&entryName);
|
||||
}
|
||||
|
||||
String M68Reg::email(void)
|
||||
{
|
||||
String strEMAIL;
|
||||
mRegKeySettings.queryValue(mSettingsEMAIL,strEMAIL);
|
||||
return strEMAIL;
|
||||
}
|
||||
|
||||
void M68Reg::email(const String &email)
|
||||
{
|
||||
mRegKeySettings.setValue(mSettingsEMAIL,email);
|
||||
}
|
||||
|
||||
bool M68Reg::setBaud(const String &strBaud)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialBaud,strBaud);
|
||||
}
|
||||
|
||||
String M68Reg::getBaud(void)
|
||||
{
|
||||
String strBaud;
|
||||
mRegKeySerial.queryValue(mSerialBaud,strBaud);
|
||||
return strBaud;
|
||||
}
|
||||
|
||||
bool M68Reg::setParity(const String &strParity)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialParity,strParity);
|
||||
}
|
||||
|
||||
String M68Reg::getParity(void)
|
||||
{
|
||||
String strParity;
|
||||
mRegKeySerial.queryValue(mSerialParity,strParity);
|
||||
return strParity;
|
||||
}
|
||||
|
||||
bool M68Reg::setDataBits(const String &strDataBits)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialData,strDataBits);
|
||||
}
|
||||
|
||||
String M68Reg::getDataBits(void)
|
||||
{
|
||||
String strData;
|
||||
mRegKeySerial.queryValue(mSerialData,strData);
|
||||
return strData;
|
||||
}
|
||||
|
||||
bool M68Reg::setStopBits(const String &stopBits)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialStop,stopBits);
|
||||
}
|
||||
|
||||
String M68Reg::getStopBits(void)
|
||||
{
|
||||
String strStop;
|
||||
|
||||
mRegKeySerial.queryValue(mSerialStop,strStop);
|
||||
return strStop;
|
||||
}
|
||||
|
||||
bool M68Reg::setPort(const String &strPort)
|
||||
{
|
||||
return mRegKeySerial.setValue(mSerialPort,strPort);
|
||||
}
|
||||
|
||||
String M68Reg::getPort(void)
|
||||
{
|
||||
String strPort;
|
||||
mRegKeySerial.queryValue(mSerialPort,strPort);
|
||||
return strPort;
|
||||
}
|
||||
|
||||
String M68Reg::getSerialSettings(void)
|
||||
{
|
||||
String serialSettings;
|
||||
|
||||
serialSettings+="baud=";
|
||||
serialSettings+=getBaud();
|
||||
serialSettings+=" ";
|
||||
serialSettings+="parity=";
|
||||
serialSettings+=getParity();
|
||||
serialSettings+=" ";
|
||||
serialSettings+="data=";
|
||||
serialSettings+=getDataBits();
|
||||
serialSettings+=" ";
|
||||
serialSettings+="stop=";
|
||||
serialSettings+=getStopBits();
|
||||
return serialSettings;
|
||||
}
|
||||
|
||||
void M68Reg::guarantee(void)
|
||||
{
|
||||
if(!mRegKeySettings.openKey(mSettingsKeyName))
|
||||
{
|
||||
mRegKeySettings.createKey(mSettingsKeyName,"");
|
||||
mRegKeySettings.openKey(mSettingsKeyName);
|
||||
}
|
||||
if(!mRegKeyHistory.openKey(mHistoryKeyName))
|
||||
{
|
||||
mRegKeyHistory.createKey(mHistoryKeyName,"");
|
||||
mRegKeyHistory.openKey(mHistoryKeyName);
|
||||
}
|
||||
if(!mRegKeySerial.openKey(mSerialKeyName))
|
||||
{
|
||||
CommControl commControl;
|
||||
Block<String> deviceList;
|
||||
|
||||
commControl.enumerateDevices(deviceList);
|
||||
mRegKeySerial.createKey(mSerialKeyName,"");
|
||||
mRegKeySerial.openKey(mSerialKeyName);
|
||||
setBaud("1200");
|
||||
setParity("N");
|
||||
setDataBits("8");
|
||||
setStopBits("1");
|
||||
setPort(deviceList.size()?deviceList[0]:"COM1");
|
||||
}
|
||||
}
|
||||
|
||||
BOOL M68Reg::isOkay(void)const
|
||||
{
|
||||
return mRegKeySettings.isOkay()&&mRegKeyHistory.isOkay()&&mRegKeySerial.isOkay();
|
||||
}
|
||||
|
||||
BOOL M68Reg::getHistory(Block<String> &nameList)
|
||||
{
|
||||
nameList=mCachedNames;
|
||||
return nameList.size()?TRUE:FALSE;
|
||||
}
|
||||
|
||||
BOOL M68Reg::setHistory(Block<String> &nameList)
|
||||
{
|
||||
RegKey regKey(RegKey::CurrentUser);
|
||||
mRegKeyHistory.closeKey();
|
||||
regKey.openKey(mM68KeyName);
|
||||
regKey.deleteKey(mHistoryKeyShortName);
|
||||
regKey.closeKey();
|
||||
mRegKeyHistory.createKey(mHistoryKeyName,"");
|
||||
mRegKeyHistory.openKey(mHistoryKeyName);
|
||||
for(int itemIndex=0;itemIndex<nameList.size();itemIndex++)mRegKeyHistory.setValue(nameList[itemIndex],0);
|
||||
return nameList.size()?TRUE:FALSE;
|
||||
}
|
||||
|
||||
BOOL M68Reg::insertHistory(const String &strName)
|
||||
{
|
||||
for(int itemIndex=0;itemIndex<mCachedNames.size();itemIndex++)if(mCachedNames[itemIndex]==strName)return FALSE;
|
||||
mCachedNames.insert(&strName);
|
||||
if(mCachedNames.size()>MaxCachedNames)
|
||||
{
|
||||
Block<String> mruCachedNames;
|
||||
for(int itemIndex=0;itemIndex<MaxCachedNames;itemIndex++)mruCachedNames.insert(&String());
|
||||
for(itemIndex=0;itemIndex<MaxCachedNames;itemIndex++)mruCachedNames[mruCachedNames.size()-itemIndex-1]=mCachedNames[mCachedNames.size()-itemIndex-1];
|
||||
mCachedNames=mruCachedNames;
|
||||
setHistory(mCachedNames);
|
||||
}
|
||||
else mRegKeyHistory.setValue(strName,0);
|
||||
return TRUE;
|
||||
}
|
||||
61
m68hc11/backup/M68REG.HPP
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef _M68HC11_M68REG_HPP_
|
||||
#define _M68HC11_M68REG_HPP_
|
||||
#ifndef _COMMON_REGKEY_HPP_
|
||||
#include <common/regkey.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_M68HC11_HPP_
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#endif
|
||||
|
||||
class M68Reg
|
||||
{
|
||||
public:
|
||||
M68Reg(void);
|
||||
M68Reg(const M68Reg &someM68Reg);
|
||||
virtual ~M68Reg();
|
||||
M68Reg &operator=(const M68Reg &someM68Reg);
|
||||
BOOL getHistory(Block<String> &nameList);
|
||||
BOOL setHistory(Block<String> &nameList);
|
||||
BOOL insertHistory(const String &strName);
|
||||
bool setBaud(const String &strBaud);
|
||||
String getBaud(void);
|
||||
bool setParity(const String &strParity);
|
||||
String getParity(void);
|
||||
bool setDataBits(const String &strDataBits);
|
||||
String getDataBits(void);
|
||||
bool setStopBits(const String &stopBits);
|
||||
String getStopBits(void);
|
||||
bool setPort(const String &strPort);
|
||||
String getPort(void);
|
||||
String getSerialSettings(void);
|
||||
String email(void);
|
||||
void email(const String &email);
|
||||
BOOL isOkay(void)const;
|
||||
private:
|
||||
enum {MaxCachedNames=5};
|
||||
void guarantee(void);
|
||||
void getCacheNames(void);
|
||||
|
||||
Block<String> mCachedNames;
|
||||
String mHistoryKeyName;
|
||||
String mSettingsKeyName;
|
||||
String mSerialKeyName;
|
||||
String mHistoryKeyShortName;
|
||||
String mSettingsEMAIL;
|
||||
String mM68KeyName;
|
||||
String mSerialPort;
|
||||
String mSerialBaud;
|
||||
String mSerialData;
|
||||
String mSerialParity;
|
||||
String mSerialStop;
|
||||
RegKey mRegKeySettings;
|
||||
RegKey mRegKeyHistory;
|
||||
RegKey mRegKeySerial;
|
||||
};
|
||||
#endif
|
||||
150
m68hc11/backup/M68hc11.h
Normal file
@@ -0,0 +1,150 @@
|
||||
#ifndef _M68HC11_M68HC11_H_
|
||||
#define _M68HC11_M68HC11_H_
|
||||
|
||||
#define MCUDLG_REGISTERS 101
|
||||
#define MCUDLG_CCR 102
|
||||
#define MCUDLG_MESSAGES 109
|
||||
#define MCUDLG_PC 103
|
||||
#define MCUDLG_SP 104
|
||||
#define MCUDLG_Y 105
|
||||
#define MCUDLG_X 106
|
||||
#define MCUDLG_A 107
|
||||
#define MCUDLG_B 108
|
||||
|
||||
#define SERIAL_STOP 104
|
||||
#define SERIAL_PARITY 105
|
||||
#define SERIAL_APPLY 106
|
||||
#define SERIAL_TEST 107
|
||||
#define SERIAL_DATA 103
|
||||
#define SERIAL_BAUD 102
|
||||
#define SERIAL_PORT 101
|
||||
|
||||
#define SBCMENU_FILENEW 500
|
||||
#define SBCMENU_FILEOPEN 501
|
||||
#define SBCMENU_FILESAVE 502
|
||||
#define SBCMENU_FILESAVEAS 503
|
||||
#define SBCMENU_FILEPRINT 504
|
||||
#define SBCMENU_FILEQUIT 505
|
||||
#define SBCMENU_FILECLOSE 506
|
||||
#define SBCMENU_EDITCUT 507
|
||||
#define SBCMENU_EDITCOPY 508
|
||||
#define SBCMENU_EDITPASTE 509
|
||||
#define SBCMENU_EDITFIND 510
|
||||
#define SBCMENU_SETTINGSSERIAL 511
|
||||
#define SBCMENU_CODECOMPILE 512
|
||||
#define SBCMENU_CODECOMPILEANDLOAD 513
|
||||
#define SBCMENU_HELPCONTENTS 514
|
||||
#define SBCMENU_HELPSEARCH 515
|
||||
#define SBCMENU_REGISTRATION 516
|
||||
#define SBCMENU_HELPABOUT 517
|
||||
|
||||
#define IDM_CASCADE 10013
|
||||
#define IDM_TILE 10014
|
||||
#define IDM_ARRANGE 10015
|
||||
#define IDM_CLOSEALL 10016
|
||||
#define IDM_MINIMIZEALL 10017
|
||||
#define IDM_RESTOREALL 10018
|
||||
|
||||
#define STRING_M68KEYNAME 600
|
||||
#define STRING_HISTORYKEYNAME 601
|
||||
#define STRING_SETTINGSKEYNAME 602
|
||||
#define STRING_SERIALKEYNAME 603
|
||||
#define STRING_HISTORYKEYSHORTNAME 604
|
||||
#define STRING_SETTINGSEMAIL 605
|
||||
#define STRING_SERIALPORT 606
|
||||
#define STRING_SERIALBAUD 607
|
||||
#define STRING_SERIALDATA 608
|
||||
#define STRING_SERIALPARITY 609
|
||||
#define STRING_SERIALSTOP 610
|
||||
#define STRING_COM1 611
|
||||
#define STRING_COM2 612
|
||||
#define STRING_COM3 613
|
||||
#define STRING_COM4 614
|
||||
|
||||
#define STRING_CODEVIEWCLASSNAME 500
|
||||
#define STRING_MCUVIEWCLASSNAME 501
|
||||
#define STRING_UNTITLED 502
|
||||
#define STRING_HELPFILENAME 503
|
||||
|
||||
#define STRING_REGISTERPORTA 700
|
||||
#define STRING_REGISTERRESERVED1 701
|
||||
#define STRING_REGISTERPIOC 702
|
||||
#define STRING_REGISTERPORTC 703
|
||||
#define STRING_REGISTERPORTB 704
|
||||
#define STRING_REGISTERPORTCL 705
|
||||
#define STRING_REGISTERRESERVED2 706
|
||||
#define STRING_REGISTERDDRC 707
|
||||
#define STRING_REGISTERPORTD 708
|
||||
#define STRING_REGISTERDDRD 709
|
||||
#define STRING_REGISTERPORTE 710
|
||||
#define STRING_REGISTERCFORC 711
|
||||
#define STRING_REGISTEROC1M 712
|
||||
#define STRING_REGISTEROC1D 713
|
||||
#define STRING_REGISTERTCNTH1 714
|
||||
#define STRING_REGISTERTCNTLO 715
|
||||
#define STRING_REGISTERTIC1HI 716
|
||||
#define STRING_REGISTERTIC1LO 717
|
||||
#define STRING_REGISTERTIC2HI 718
|
||||
#define STRING_REGISTERTIC2LO 719
|
||||
#define STRING_REGISTERTIC3HI 720
|
||||
#define STRING_REGISTERTIC3LO 721
|
||||
#define STRING_REGISTERTOC1HI 722
|
||||
#define STRING_REGISTERTOC1LO 723
|
||||
#define STRING_REGISTERTOC2HI 724
|
||||
#define STRING_REGISTERTOC2LO 725
|
||||
#define STRING_REGISTERTOC3HI 726
|
||||
#define STRING_REGISTERTOC3LO 727
|
||||
#define STRING_REGISTERTOC4HI 728
|
||||
#define STRING_REGISTERTOC4LO 729
|
||||
#define STRING_REGISTERTI405HI 730
|
||||
#define STRING_REGISTERTI405LO 731
|
||||
#define STRING_REGISTERTCTL1 732
|
||||
#define STRING_REGISTERTCTL2 733
|
||||
#define STRING_REGISTERTMSK1 734
|
||||
#define STRING_REGISTERTFLG1 735
|
||||
#define STRING_REGISTERTMSK2 736
|
||||
#define STRING_REGISTERTFLG2 737
|
||||
#define STRING_REGISTERPACTL 738
|
||||
#define STRING_REGISTERPACNT 739
|
||||
#define STRING_REGISTERSPCR 740
|
||||
#define STRING_REGISTERSPSR 741
|
||||
#define STRING_REGISTERSPDR 742
|
||||
#define STRING_REGISTERBAUD 743
|
||||
#define STRING_REGISTERSCCR1 744
|
||||
#define STRING_REGISTERSCCR2 745
|
||||
#define STRING_REGISTERSCSR 746
|
||||
#define STRING_REGISTERSCDR 747
|
||||
#define STRING_REGISTERADCTL 748
|
||||
#define STRING_REGISTERADR1 749
|
||||
#define STRING_REGISTERADR2 750
|
||||
#define STRING_REGISTERADR3 751
|
||||
#define STRING_REGISTERADR4 752
|
||||
#define STRING_REGISTERBPROT 753
|
||||
#define STRING_REGISTEREPROG 754
|
||||
#define STRING_REGISTERRESERVED3 755
|
||||
#define STRING_REGISTERRESERVED4 756
|
||||
#define STRING_REGISTEROPTION 757
|
||||
#define STRING_REGISTERCOPRST 758
|
||||
#define STRING_REGISTERPPROG 759
|
||||
#define STRING_REGISTERHPRIO 760
|
||||
#define STRING_REGISTERINIT 761
|
||||
#define STRING_REGISTERTEST1 762
|
||||
#define STRING_REGISTERCONFIG 763
|
||||
|
||||
#define STRING_ERRORFILEOPEN 764
|
||||
#define STRING_ERRORPORTOPEN 765
|
||||
#define STRING_ERRORPORTSETTINGS 766
|
||||
#define STRING_ERRORTIMEOUT 767
|
||||
#define STRING_ERRORREADERROR 768
|
||||
#define STRING_ERRORTALKBACKFAILURE 769
|
||||
#define STRING_ERRORTALKBACKDATA 770
|
||||
|
||||
#define STRING_EVENTSINGLEBYTE 771
|
||||
#define STRING_EVENTQUADBYTE 772
|
||||
#define STRING_EVENTVARBYTE 773
|
||||
#define STRING_EVENTREGDATASTART 774
|
||||
#define STRING_EVENTREGDATACOMPLETE 775
|
||||
#define STRING_EVENTCODECOMPLETE 776
|
||||
#define STRING_EVENTDOUBLEBYTE 777
|
||||
#define STRING_EVENTSTRING 778
|
||||
#endif
|
||||
120
m68hc11/backup/MAIN.CPP
Normal file
@@ -0,0 +1,120 @@
|
||||
#include <m68hc11/mainfrm.hpp>
|
||||
|
||||
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/)
|
||||
{
|
||||
MainFrame frameWindow;
|
||||
// frameWindow.splash();
|
||||
frameWindow.createWindow("M68HC11","M68HC11 v1.00","mainMenu","MOT");
|
||||
return frameWindow.messageLoop();
|
||||
}
|
||||
|
||||
#if 0
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
|
||||
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/)
|
||||
{
|
||||
CommControl commControl;
|
||||
CommStatus commStatus;
|
||||
DeviceControlBlock deviceControlBlock;
|
||||
BYTE charByte(0xFF);
|
||||
|
||||
commControl.open(CommControl::PortCOM1);
|
||||
if(!commControl.isOkay())return FALSE;
|
||||
if(!commControl.setDeviceControlBlock("baud=1200 data=8 stop=1 parity=N"))::OutputDebugString("Set operation failed\n");
|
||||
|
||||
String strString;
|
||||
charByte='a';
|
||||
while(TRUE)
|
||||
{
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
// commControl.waitForData();
|
||||
commControl.read(&charByte,sizeof(charByte));
|
||||
::sprintf(strString,"%02x\n",(int)charByte);
|
||||
::OutputDebugString(strString);
|
||||
charByte++;
|
||||
|
||||
// commControl.clearError(commStatus);
|
||||
|
||||
// if(commStatus.bytesInReceiveQueue())
|
||||
// {
|
||||
// commControl.read(&charByte,sizeof(charByte));
|
||||
// ::sprintf(strString,"%02x\n",(int)charByte);
|
||||
// ::OutputDebugString(strString);
|
||||
// break;
|
||||
// }
|
||||
::Sleep(250);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
::OutputDebugString("waiting for break signal...\n");
|
||||
commControl.setEventMask(CommControl::EventBreak); // EventBreak
|
||||
if(!commControl.waitEvent())::OutputDebugString("timeout waiting for break.\n");
|
||||
else ::OutputDebugString("break received, loading code...\n");
|
||||
|
||||
|
||||
BYTE ioBuffer[256];
|
||||
|
||||
for(int index=0;index<256;index++)ioBuffer[index]=index;
|
||||
charByte=0xFF;
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
|
||||
// commControl.clearError(commStatus);
|
||||
// if(commStatus.bytesInReceiveQueue())commControl.read(ioBuffer,commStatus.bytesInReceiveQueue());
|
||||
|
||||
commControl.write(ioBuffer,sizeof(ioBuffer));
|
||||
::memset(ioBuffer,0,sizeof(ioBuffer));
|
||||
|
||||
String strString;
|
||||
::OutputDebugString("receiving echo\n");
|
||||
while(TRUE)
|
||||
{
|
||||
commControl.clearError(commStatus);
|
||||
|
||||
if(commStatus.bytesInReceiveQueue())
|
||||
{
|
||||
commControl.read(ioBuffer,sizeof(ioBuffer));
|
||||
for(index=0;index+8<sizeof(ioBuffer);index+=8)
|
||||
{
|
||||
::sprintf(strString,"%02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||
ioBuffer[index],ioBuffer[index+1],ioBuffer[index+2],ioBuffer[index+3],ioBuffer[index+4],
|
||||
ioBuffer[index+5],ioBuffer[index+6],ioBuffer[index+7]);
|
||||
::OutputDebugString(strString);
|
||||
}
|
||||
break;
|
||||
}
|
||||
::Sleep(1000);
|
||||
}
|
||||
*/
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#if 0
|
||||
for(int index=0;index<256;index++)ioBuffer[index]=index;
|
||||
charByte=0xFF;
|
||||
commControl.write(&charByte,sizeof(charByte));
|
||||
commControl.write(ioBuffer,sizeof(ioBuffer));
|
||||
::memset(ioBuffer,0,sizeof(ioBuffer));
|
||||
|
||||
::OutputDebugString("receiving echo\n");
|
||||
while(TRUE)
|
||||
{
|
||||
commControl.clearError(commStatus);
|
||||
if(commStatus.bytesInReceiveQueue())
|
||||
{
|
||||
commControl.read(ioBuffer,sizeof(ioBuffer));
|
||||
for(index=0;index+8<sizeof(ioBuffer);index+=8)
|
||||
{
|
||||
::sprintf(strString,"%02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||
ioBuffer[index],ioBuffer[index+1],ioBuffer[index+2],ioBuffer[index+3],ioBuffer[index+4],
|
||||
ioBuffer[index+5],ioBuffer[index+6],ioBuffer[index+7]);
|
||||
::OutputDebugString(strString);
|
||||
}
|
||||
break;
|
||||
}
|
||||
::Sleep(1000);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
147
m68hc11/backup/MCUDLG.CPP
Normal file
@@ -0,0 +1,147 @@
|
||||
#include <m68hc11/mcudlg.hpp>
|
||||
#include <m68hc11/odlstled.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <common/stdio.hpp>
|
||||
|
||||
MCUDlg::MCUDlg(void)
|
||||
{
|
||||
mInitHandler.setCallback(this,&MCUDlg::initHandler);
|
||||
mCreateHandler.setCallback(this,&MCUDlg::createHandler);
|
||||
mCloseHandler.setCallback(this,&MCUDlg::closeHandler);
|
||||
mDestroyHandler.setCallback(this,&MCUDlg::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&MCUDlg::commandHandler);
|
||||
insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
}
|
||||
|
||||
MCUDlg::MCUDlg(const MCUDlg &someMCUDlg)
|
||||
{ // private implementation
|
||||
*this=someMCUDlg;
|
||||
}
|
||||
|
||||
MCUDlg::~MCUDlg()
|
||||
{
|
||||
removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
}
|
||||
|
||||
MCUDlg &MCUDlg::operator=(const MCUDlg &someMCUDlg)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOL MCUDlg::perform(GUIWindow &parentWindow)
|
||||
{
|
||||
::CreateDialogParam(processInstance(),(LPSTR)"MCUDLG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
|
||||
return isValid();
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::initHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mOwnerDrawList=::new OwnerDrawListBinaryLed(*this,getItem(MCUDLG_REGISTERS),MCUDLG_REGISTERS);
|
||||
mOwnerDrawList.disposition(PointerDisposition::Delete);
|
||||
for(int index=STRING_REGISTERPORTA;index<=STRING_REGISTERCONFIG;index++)mOwnerDrawList->insertString(String(index));
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::closeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::destroyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUDlg::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wmCommandID())
|
||||
{
|
||||
case IDCANCEL :
|
||||
handleCancel();
|
||||
break;
|
||||
case IDOK :
|
||||
handleOk();
|
||||
break;
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
void MCUDlg::setRegister(int mcuRegister,BYTE value)
|
||||
{
|
||||
String stringData;
|
||||
String strItem;
|
||||
String strData;
|
||||
|
||||
if(LB_ERR==mOwnerDrawList->getText(stringData,mcuRegister))return;
|
||||
strItem=stringData.betweenString(0,'\t');
|
||||
if(strItem.isNull())::sprintf(strData,"%s\t%d",(LPSTR)stringData,value);
|
||||
else ::sprintf(strData,"%s\t%d",(LPSTR)strItem,value);
|
||||
mOwnerDrawList->deleteString(mcuRegister);
|
||||
mOwnerDrawList->insertString(strData,mcuRegister);
|
||||
}
|
||||
|
||||
void MCUDlg::setRegisters(GlobalData<BYTE> ®Data)
|
||||
{
|
||||
mOwnerDrawList->setRedraw(FALSE);
|
||||
for(int index=0;index<regData.size();index++)setRegister(index,regData[index]);
|
||||
mOwnerDrawList->setRedraw(TRUE);
|
||||
}
|
||||
|
||||
void MCUDlg::setVarByteData(GlobalData<BYTE> &byteData)
|
||||
{
|
||||
String strData;
|
||||
String strLine;
|
||||
String strHexLine;
|
||||
|
||||
for(int index=0;index<byteData.size();index++)
|
||||
{
|
||||
::sprintf(strData,"%c",byteData[index]);
|
||||
strLine+=strData;
|
||||
}
|
||||
for(index=0;index<byteData.size();index++)
|
||||
{
|
||||
::sprintf(strData,"%02lx",int(byteData[index]));
|
||||
strHexLine+=strData;
|
||||
}
|
||||
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strLine);
|
||||
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strHexLine);
|
||||
}
|
||||
|
||||
void MCUDlg::setSingleByteData(BYTE singleByteData)
|
||||
{
|
||||
String strLine;
|
||||
|
||||
|
||||
if(isprint(singleByteData))::sprintf(strLine,"%c (%02lxh)",singleByteData,(int)singleByteData);
|
||||
else ::sprintf(strLine,"'' (%02lxh)",(int)singleByteData);
|
||||
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strLine);
|
||||
// ::sprintf(strLine,"%02lx",int(singleByteData));
|
||||
// sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)strLine);
|
||||
}
|
||||
|
||||
void MCUDlg::setStringData(const String &string)
|
||||
{
|
||||
sendMessage(MCUDLG_MESSAGES,LB_INSERTSTRING,-1,(LPARAM)(LPSTR)string.str());
|
||||
}
|
||||
|
||||
void MCUDlg::setQuadByteData(DWORD quadByteData)
|
||||
{
|
||||
}
|
||||
|
||||
void MCUDlg::setDoubleByteData(WORD doubleByteData)
|
||||
{
|
||||
}
|
||||
|
||||
81
m68hc11/backup/MCUDLG.HPP
Normal file
@@ -0,0 +1,81 @@
|
||||
#ifndef _M68HC11_MCUDLG_HPP_
|
||||
#define _M68HC11_MCUDLG_HPP_
|
||||
#ifndef _COMMON_DWINDOW_HPP_
|
||||
#include <common/dwindow.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_GLOBALDATA_HPP_
|
||||
#include <common/gdata.hpp>
|
||||
#endif
|
||||
|
||||
class OwnerDrawListBinaryLed;
|
||||
|
||||
class MCUDlg : public DWindow
|
||||
{
|
||||
public:
|
||||
MCUDlg(void);
|
||||
virtual ~MCUDlg();
|
||||
BOOL perform(GUIWindow &parentWindow);
|
||||
void setCancelHandler(PureCallback *pCallback);
|
||||
void setStartHandler(PureCallback *pCallback);
|
||||
void setRegister(int mcuRegister,BYTE value);
|
||||
void setRegisters(GlobalData<BYTE> ®Data);
|
||||
void setVarByteData(GlobalData<BYTE> &byteData);
|
||||
void setQuadByteData(DWORD quadByteData);
|
||||
void setDoubleByteData(WORD doubleByteData);
|
||||
void setSingleByteData(BYTE singleByteData);
|
||||
void setStringData(const String &string);
|
||||
void enableStart(BOOL enable);
|
||||
private:
|
||||
MCUDlg(const MCUDlg &someMCUDlg);
|
||||
MCUDlg &operator=(const MCUDlg &someMCUDlg);
|
||||
CallbackData::ReturnType initHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
void handleCancel(void);
|
||||
void handleOk(void);
|
||||
|
||||
Callback<MCUDlg> mInitHandler;
|
||||
Callback<MCUDlg> mCreateHandler;
|
||||
Callback<MCUDlg> mCloseHandler;
|
||||
Callback<MCUDlg> mDestroyHandler;
|
||||
Callback<MCUDlg> mCommandHandler;
|
||||
SmartPointer<OwnerDrawListBinaryLed> mOwnerDrawList;
|
||||
CallbackPointer mCancelHandler;
|
||||
CallbackPointer mStartHandler;
|
||||
};
|
||||
|
||||
inline
|
||||
void MCUDlg::setCancelHandler(PureCallback *pCallback)
|
||||
{
|
||||
mCancelHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUDlg::setStartHandler(PureCallback *pCallback)
|
||||
{
|
||||
mStartHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUDlg::handleCancel(void)
|
||||
{
|
||||
mCancelHandler.callback(CallbackData());
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUDlg::handleOk(void)
|
||||
{
|
||||
mStartHandler.callback(CallbackData());
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUDlg::enableStart(BOOL enable)
|
||||
{
|
||||
::EnableWindow(getItem(IDOK),enable);
|
||||
}
|
||||
#endif
|
||||
238
m68hc11/backup/MCUTHRD.CPP
Normal file
@@ -0,0 +1,238 @@
|
||||
#include <m68hc11/mcuthrd.hpp>
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <m68hc11/m68reg.hpp>
|
||||
#include <common/openfile.hpp>
|
||||
#include <common/gdata.hpp>
|
||||
|
||||
MCUThread::MCUThread(void)
|
||||
: mIsInEvents(false)
|
||||
{
|
||||
mThreadHandler.setCallback(this,&MCUThread::threadHandler);
|
||||
insertHandler(&mThreadHandler);
|
||||
}
|
||||
|
||||
MCUThread::MCUThread(const MCUThread &someMCUThread)
|
||||
: mIsInEvents(false)
|
||||
{ // private implementation
|
||||
*this=someMCUThread;
|
||||
}
|
||||
|
||||
MCUThread::~MCUThread()
|
||||
{
|
||||
removeHandler(&mThreadHandler);
|
||||
}
|
||||
|
||||
MCUThread &MCUThread::operator=(const MCUThread &someMCUThread)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
void MCUThread::listen(const String &strPathBinary)
|
||||
{
|
||||
String *pString=::new String(strPathBinary);
|
||||
ThreadMessage threadMessage(ThreadMessage::TM_USER,ThMsgListen,int(pString));
|
||||
postMessage(threadMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD MCUThread::threadHandler(ThreadMessage &someThreadMessage)
|
||||
{
|
||||
switch(someThreadMessage.message())
|
||||
{
|
||||
case ThreadMessage::TM_CREATE :
|
||||
break;
|
||||
case ThreadMessage::TM_DESTROY :
|
||||
break;
|
||||
case ThreadMessage::TM_USER :
|
||||
if(ThMsgListen==someThreadMessage.userDataOne())
|
||||
{
|
||||
String *pString=(String*)someThreadMessage.userDataTwo();
|
||||
thListen(*pString);
|
||||
::delete pString;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void MCUThread::thListen(const String &strPathBinary)
|
||||
{
|
||||
CommControl commControl;
|
||||
|
||||
sendMessage("Initializing device...");
|
||||
if(!openDevice(commControl))return;
|
||||
sendMessage("Loading code...");
|
||||
if(!codeLoad(commControl,strPathBinary))return;
|
||||
sendMessage("Processing events...");
|
||||
processEvents(commControl);
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL MCUThread::openDevice(CommControl &commControl,bool useOverlappedIO)
|
||||
{
|
||||
M68Reg mcuReg;
|
||||
|
||||
if(!commControl.open(CommControl::stringToPort(mcuReg.getPort()),useOverlappedIO))
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorPortOpen,0L));
|
||||
return FALSE;
|
||||
}
|
||||
if(!commControl.setDeviceControlBlock(mcuReg.getSerialSettings()))
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorPortSettings,0L));
|
||||
return FALSE;
|
||||
}
|
||||
commControl.setEventMask(CommControl::EventBreak);
|
||||
if(!commControl.waitEvent())
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorTimeout,0L));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL MCUThread::codeLoad(CommControl &commControl,const String &strPathBinary)
|
||||
{
|
||||
FileHandle inFile;
|
||||
BYTE sndBuffer[256];
|
||||
// BYTE rcvBuffer[256];
|
||||
GlobalData<BYTE> rcvBuffer;
|
||||
WORD codeLength(0);
|
||||
BYTE prefix(0xFF);
|
||||
BYTE *ptrByte;
|
||||
|
||||
if(!inFile.open(strPathBinary))
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorFileOpen,int(&(String&)strPathBinary)));
|
||||
return FALSE;
|
||||
}
|
||||
::memset(sndBuffer,1,sizeof(sndBuffer));
|
||||
// ::memset(&rcvBuffer,0,sizeof(rcvBuffer));
|
||||
ptrByte=sndBuffer;
|
||||
while(inFile.read(*ptrByte)&&codeLength<=256){codeLength++;ptrByte++;}
|
||||
commControl.write(&prefix,sizeof(prefix));
|
||||
commControl.clearReceiveQueue();
|
||||
commControl.write(sndBuffer,sizeof(sndBuffer));
|
||||
if(!commControl.waitForData())
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorTalkBackFailure,0L));
|
||||
return false;
|
||||
}
|
||||
rcvBuffer.size(sizeof(sndBuffer));
|
||||
rcvBuffer.setZero();
|
||||
commControl.readFully(rcvBuffer);
|
||||
// commControl.readFully(rcvBuffer,sizeof(rcvBuffer));
|
||||
if(::memcmp(&rcvBuffer[0],sndBuffer,sizeof(sndBuffer)))
|
||||
{
|
||||
mErrorEventHandler.callback(CallbackData(ErrorTalkBackData,0L));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// event types
|
||||
// 0x00 - character
|
||||
// 0x01 - WORD
|
||||
// 0x02 - DWORD
|
||||
// 0x03 - varchar : [WORD:count,countcharacters]
|
||||
// 0xFF - end
|
||||
|
||||
BOOL MCUThread::processEvents(CommControl &commControl)
|
||||
{
|
||||
GlobalData<BYTE> byteData;
|
||||
String strString;
|
||||
BYTE event(0x00);
|
||||
BYTE ack(0x00);
|
||||
WORD wordData;
|
||||
DWORD dwordData;
|
||||
char charData;
|
||||
int index;
|
||||
int map(0x1000);
|
||||
|
||||
::OutputDebugString("MCUThread::processEvents[Thread is starting]");
|
||||
isInEvents(true);
|
||||
while(isInEvents())
|
||||
{
|
||||
if(!commControl.hasData())continue;
|
||||
commControl.read(&event,sizeof(event));
|
||||
switch(MCUEvent(event))
|
||||
{
|
||||
case EventString :
|
||||
{
|
||||
String str;
|
||||
sendMessage(STRING_EVENTSTRING);
|
||||
while(true)
|
||||
{
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
if(!charData)break;
|
||||
str+=charData;
|
||||
}
|
||||
mMCUEventHandler.callback(CallbackData(EventString,int(&str)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
}
|
||||
break;
|
||||
case EventSingleByte :
|
||||
sendMessage(STRING_EVENTSINGLEBYTE);
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
mMCUEventHandler.callback(CallbackData(EventSingleByte,int(&charData)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventDoubleByte :
|
||||
sendMessage(STRING_EVENTDOUBLEBYTE);
|
||||
commControl.read(&wordData,sizeof(wordData));
|
||||
mMCUEventHandler.callback(CallbackData(EventDoubleByte,int(&wordData)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventQuadByte :
|
||||
sendMessage(STRING_EVENTQUADBYTE);
|
||||
commControl.read(&dwordData,sizeof(dwordData));
|
||||
mMCUEventHandler.callback(CallbackData(EventQuadByte,(int)&dwordData));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventVarByte :
|
||||
sendMessage(STRING_EVENTVARBYTE);
|
||||
commControl.read(&wordData,sizeof(wordData));
|
||||
byteData.size(wordData);
|
||||
for(index=0;index<byteData.size();index++)
|
||||
{
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
byteData[index]=charData;
|
||||
}
|
||||
mMCUEventHandler.callback(CallbackData(EventVarByte,int(&byteData)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventRegs :
|
||||
map=0x1000;
|
||||
byteData.size(64);
|
||||
sendMessage(STRING_EVENTREGDATASTART);
|
||||
for(index=0;index<byteData.size();index++)
|
||||
{
|
||||
commControl.read(&charData,sizeof(charData));
|
||||
byteData[index]=charData;
|
||||
}
|
||||
sendMessage(STRING_EVENTREGDATACOMPLETE);
|
||||
mMCUEventHandler.callback(CallbackData(EventRegs,int(&byteData)));
|
||||
commControl.write(&ack,sizeof(ack));
|
||||
break;
|
||||
case EventEnd :
|
||||
sendMessage(STRING_EVENTCODECOMPLETE);
|
||||
mMCUEventHandler.callback(CallbackData(EventEnd,0L));
|
||||
isInEvents(false);
|
||||
break;
|
||||
default :
|
||||
{
|
||||
String str;
|
||||
::sprintf(str,"unexpected character : 0x%04lx\n",(int)event);
|
||||
::OutputDebugString(str);
|
||||
}
|
||||
}
|
||||
}
|
||||
::OutputDebugString("MCUThread::processEvents[Thread is ending normally]");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void MCUThread::sendMessage(const String &strMessage)
|
||||
{
|
||||
mMessageHandler.callback(CallbackData(0,int(&(String&)strMessage)));
|
||||
}
|
||||
72
m68hc11/backup/MCUTHRD.HPP
Normal file
@@ -0,0 +1,72 @@
|
||||
#ifndef _M68HC11_MCUTHREAD_HPP_
|
||||
#define _M68HC11_MCUTHREAD_HPP_
|
||||
#ifndef _THREAD_MESSAGETHREAD_HPP_
|
||||
#include <thread/mthread.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_CALLBACK_HPP_
|
||||
#include <common/callback.hpp>
|
||||
#endif
|
||||
|
||||
class CommControl;
|
||||
|
||||
class MCUThread : protected MessageThread
|
||||
{
|
||||
public:
|
||||
enum MCUEvent{EventSingleByte=0x00,EventDoubleByte=0x01,EventQuadByte=0x02,EventVarByte=0x03,EventRegs=0x04,EventString=0x05,EventEnd=0xFF};
|
||||
enum ErrorEvent{ErrorFileOpen,ErrorPortOpen,ErrorPortSettings,ErrorTimeout,ErrorReadError,ErrorTalkBackFailure,ErrorTalkBackData};
|
||||
MCUThread(void);
|
||||
virtual ~MCUThread();
|
||||
void listen(const String &strPathBinary);
|
||||
void setErrorEventHandler(PureCallback *pCallback);
|
||||
void setMCUEventHandler(PureCallback *pCallback);
|
||||
void setMessageHandler(PureCallback *pCallback);
|
||||
bool isInEvents(void)const;
|
||||
void isInEvents(bool isInEvents);
|
||||
private:
|
||||
enum{ThMsgListen};
|
||||
MCUThread(const MCUThread &someMCUThread);
|
||||
MCUThread &operator=(const MCUThread &someMCUThread);
|
||||
DWORD threadHandler(ThreadMessage &someThreadMessage);
|
||||
void thListen(const String &strPathBinary);
|
||||
BOOL openDevice(CommControl &commControl,bool userOverlappedIO=false);
|
||||
BOOL codeLoad(CommControl &commControl,const String &strPathBinary);
|
||||
BOOL processEvents(CommControl &commControl);
|
||||
void sendMessage(const String &strMessage);
|
||||
|
||||
ThreadCallback<MCUThread> mThreadHandler;
|
||||
CallbackPointer mErrorEventHandler;
|
||||
CallbackPointer mMCUEventHandler;
|
||||
CallbackPointer mMessageHandler;
|
||||
bool mIsInEvents;
|
||||
};
|
||||
|
||||
inline
|
||||
void MCUThread::setErrorEventHandler(PureCallback *pCallback)
|
||||
{
|
||||
mErrorEventHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUThread::setMCUEventHandler(PureCallback *pCallback)
|
||||
{
|
||||
mMCUEventHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUThread::setMessageHandler(PureCallback *pCallback)
|
||||
{
|
||||
mMessageHandler=CallbackPointer(pCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
bool MCUThread::isInEvents(void)const
|
||||
{
|
||||
return mIsInEvents;
|
||||
}
|
||||
|
||||
inline
|
||||
void MCUThread::isInEvents(bool isInEvents)
|
||||
{
|
||||
mIsInEvents=isInEvents;
|
||||
}
|
||||
#endif
|
||||
193
m68hc11/backup/MCUVIEW.CPP
Normal file
@@ -0,0 +1,193 @@
|
||||
#include <m68hc11/mcuview.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <statbar/statbarx.hpp>
|
||||
|
||||
MCUView::MCUView(void)
|
||||
{
|
||||
mCreateHandler.setCallback(this,&MCUView::createHandler);
|
||||
mSizeHandler.setCallback(this,&MCUView::sizeHandler);
|
||||
mCloseHandler.setCallback(this,&MCUView::closeHandler);
|
||||
mDestroyHandler.setCallback(this,&MCUView::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&MCUView::commandHandler);
|
||||
mCancelHandler.setCallback(this,&MCUView::cancelHandler);
|
||||
mStartHandler.setCallback(this,&MCUView::startHandler);
|
||||
mErrorEventHandler.setCallback(this,&MCUView::errorEventHandler);
|
||||
mMCUEventHandler.setCallback(this,&MCUView::mcuEventHandler);
|
||||
mMessageHandler.setCallback(this,&MCUView::messageHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CreateHandler,&mCreateHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::SizeHandler,&mSizeHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CloseHandler,&mCloseHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::DestroyHandler,&mDestroyHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CommandHandler,&mCommandHandler);
|
||||
MCUThread::setErrorEventHandler(&mErrorEventHandler);
|
||||
MCUThread::setMCUEventHandler(&mMCUEventHandler);
|
||||
MCUThread::setMessageHandler(&mMessageHandler);
|
||||
}
|
||||
|
||||
MCUView::~MCUView()
|
||||
{
|
||||
MDIWindow::removeHandler(MDIWindow::CreateHandler,&mCreateHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::SizeHandler,&mSizeHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::CloseHandler,&mCloseHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::DestroyHandler,&mDestroyHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::CommandHandler,&mCommandHandler);
|
||||
MCUThread::setErrorEventHandler(0);
|
||||
MCUThread::setMCUEventHandler(0);
|
||||
MCUThread::setMessageHandler(0);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setCancelHandler(&mCancelHandler);
|
||||
mMCUDialog.setStartHandler(&mStartHandler);
|
||||
mMCUDialog.perform(*this);
|
||||
mStatusBar=::new StatusBarEx(*this,StatusBarID);
|
||||
mStatusBar.disposition(PointerDisposition::Delete);
|
||||
mStatusBar->setText("Press start and then switch on the device.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::sizeHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::closeHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::destroyHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::commandHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::cancelHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
isInEvents(false);
|
||||
MDIWindow::postMessage(*this,WM_CLOSE,0,0L);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::startHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mMCUDialog.enableStart(FALSE);
|
||||
listen(mStrPathBinary);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::messageHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mStatusBar->setText(*((String*)someCallbackData.lParam()));
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::errorEventHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(MCUThread::ErrorEvent(someCallbackData.wParam()))
|
||||
{
|
||||
case MCUThread::ErrorFileOpen :
|
||||
mStatusBar->setText(String(STRING_ERRORFILEOPEN)+*((String*)someCallbackData.lParam())+String("'."));
|
||||
break;
|
||||
case MCUThread::ErrorPortOpen :
|
||||
mStatusBar->setText(STRING_ERRORPORTOPEN);
|
||||
break;
|
||||
case MCUThread::ErrorPortSettings :
|
||||
mStatusBar->setText(STRING_ERRORPORTSETTINGS);
|
||||
break;
|
||||
case MCUThread::ErrorTimeout :
|
||||
mStatusBar->setText(STRING_ERRORTIMEOUT);
|
||||
break;
|
||||
case MCUThread::ErrorReadError :
|
||||
mStatusBar->setText(STRING_ERRORREADERROR);
|
||||
break;
|
||||
case MCUThread::ErrorTalkBackFailure :
|
||||
mStatusBar->setText(STRING_ERRORTALKBACKFAILURE);
|
||||
break;
|
||||
case MCUThread::ErrorTalkBackData :
|
||||
mStatusBar->setText(STRING_ERRORTALKBACKDATA);
|
||||
break;
|
||||
}
|
||||
mMCUDialog.enableStart(TRUE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MCUView::mcuEventHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(MCUThread::MCUEvent(someCallbackData.wParam()))
|
||||
{
|
||||
case MCUThread::EventString :
|
||||
handleStringData(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventSingleByte :
|
||||
handleSingleByteData(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventDoubleByte :
|
||||
handleEventDoubleByte(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventQuadByte :
|
||||
handleEventQuadByte(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventVarByte :
|
||||
handleEventVarByte(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventRegs :
|
||||
handleEventRegs(someCallbackData);
|
||||
break;
|
||||
case MCUThread::EventEnd :
|
||||
mMCUDialog.enableStart(TRUE);
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void MCUView::handleEventRegs(CallbackData &someCallbackData)
|
||||
{
|
||||
GlobalData<BYTE> ®Data=(GlobalData<BYTE> &)*((GlobalData<BYTE> *)someCallbackData.lParam());
|
||||
mMCUDialog.setRegisters(regData);
|
||||
}
|
||||
|
||||
void MCUView::handleEventVarByte(CallbackData &someCallbackData)
|
||||
{
|
||||
GlobalData<BYTE> &byteData=(GlobalData<BYTE> &)*((GlobalData<BYTE> *)someCallbackData.lParam());
|
||||
mMCUDialog.setVarByteData(byteData);
|
||||
}
|
||||
|
||||
void MCUView::handleEventQuadByte(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setQuadByteData(*((DWORD*)someCallbackData.lParam()));
|
||||
}
|
||||
|
||||
void MCUView::handleEventDoubleByte(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setDoubleByteData(*((WORD*)someCallbackData.lParam()));
|
||||
}
|
||||
|
||||
void MCUView::handleSingleByteData(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setSingleByteData(*((BYTE*)someCallbackData.lParam()));
|
||||
}
|
||||
|
||||
void MCUView::handleStringData(CallbackData &someCallbackData)
|
||||
{
|
||||
mMCUDialog.setStringData(*((String*)someCallbackData.lParam()));
|
||||
}
|
||||
|
||||
// *** virtuals
|
||||
|
||||
void MCUView::preRegister(WNDCLASS &wndClass)
|
||||
{
|
||||
wndClass.hbrBackground =(HBRUSH)COLOR_APPWORKSPACE;
|
||||
}
|
||||
|
||||
void MCUView::preCreate(MDICREATESTRUCT &createStruct)
|
||||
{
|
||||
createStruct.cx=InitialWidth;
|
||||
createStruct.cy=InitialHeight;
|
||||
createStruct.style^=WS_THICKFRAME;
|
||||
}
|
||||
66
m68hc11/backup/MCUVIEW.HPP
Normal file
@@ -0,0 +1,66 @@
|
||||
#ifndef _M68HC11_MCUVIEW_HPP_
|
||||
#define _M68HC11_MCUVIEW_HPP_
|
||||
#ifndef _COMMON_MDIWIN_HPP_
|
||||
#include <common/mdiwin.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_GLOBALDATA_HPP_
|
||||
#include <common/gdata.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_MCUDLG_HPP_
|
||||
#include <m68hc11/mcudlg.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_MCUTHREAD_HPP_
|
||||
#include <m68hc11/mcuthrd.hpp>
|
||||
#endif
|
||||
|
||||
class StatusBarEx;
|
||||
|
||||
class MCUView : public MDIWindow, public MCUThread
|
||||
{
|
||||
public:
|
||||
MCUView(void);
|
||||
virtual ~MCUView();
|
||||
void setCode(const String &strPathBinary);
|
||||
protected:
|
||||
virtual void preRegister(WNDCLASS &wndClass);
|
||||
virtual void preCreate(MDICREATESTRUCT &createStruct);
|
||||
private:
|
||||
enum {StatusBarID=101,InitialWidth=565,InitialHeight=360};
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType cancelHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType startHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType errorEventHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType mcuEventHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType messageHandler(CallbackData &someCallbackData);
|
||||
void handleEventRegs(CallbackData &someCallbackData);
|
||||
void handleEventVarByte(CallbackData &someCallbackData);
|
||||
void handleEventQuadByte(CallbackData &someCallbackData);
|
||||
void handleEventDoubleByte(CallbackData &someCallbackData);
|
||||
void handleSingleByteData(CallbackData &someCallbackData);
|
||||
void handleStringData(CallbackData &someCallbackData);
|
||||
|
||||
Callback<MCUView> mCreateHandler;
|
||||
Callback<MCUView> mSizeHandler;
|
||||
Callback<MCUView> mCloseHandler;
|
||||
Callback<MCUView> mDestroyHandler;
|
||||
Callback<MCUView> mCommandHandler;
|
||||
Callback<MCUView> mCancelHandler;
|
||||
Callback<MCUView> mStartHandler;
|
||||
Callback<MCUView> mErrorEventHandler;
|
||||
Callback<MCUView> mMCUEventHandler;
|
||||
Callback<MCUView> mMessageHandler;
|
||||
SmartPointer<StatusBarEx> mStatusBar;
|
||||
MCUDlg mMCUDialog;
|
||||
String mStrPathBinary;
|
||||
};
|
||||
|
||||
inline
|
||||
void MCUView::setCode(const String &strPathBinary)
|
||||
{
|
||||
mStrPathBinary=strPathBinary;
|
||||
}
|
||||
#endif
|
||||
497
m68hc11/backup/Mainfrm.cpp
Normal file
@@ -0,0 +1,497 @@
|
||||
#include <m68hc11/mainfrm.hpp>
|
||||
#include <m68hc11/serdlg.hpp>
|
||||
#include <m68hc11/codeview.hpp>
|
||||
#include <m68hc11/mcuview.hpp>
|
||||
#include <m68hc11/m68reg.hpp>
|
||||
#include <m68hc11/splash.hpp>
|
||||
#include <printman/printman.hpp>
|
||||
#include <common/assert.hpp>
|
||||
#include <common/opendlg.hpp>
|
||||
#include <common/gdata.hpp>
|
||||
#include <common/crsctrl.hpp>
|
||||
#include <common/diskinfo.hpp>
|
||||
|
||||
char MainFrame::szClassName[]="M68HC11";
|
||||
char MainFrame::szMenuName[]="mainMenu";
|
||||
|
||||
MainFrame::MainFrame(void)
|
||||
{
|
||||
mQueryEndSessionHandler.setCallback(this,&MainFrame::queryEndSessionHandler);
|
||||
mPaintHandler.setCallback(this,&MainFrame::paintHandler);
|
||||
mDestroyHandler.setCallback(this,&MainFrame::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&MainFrame::commandHandler);
|
||||
mSizeHandler.setCallback(this,&MainFrame::sizeHandler);
|
||||
mCreateHandler.setCallback(this,&MainFrame::createHandler);
|
||||
mLineHandler.setCallback(this,&MainFrame::lineHandler);
|
||||
insertHandlers();
|
||||
}
|
||||
|
||||
MainFrame::~MainFrame()
|
||||
{
|
||||
destroy();
|
||||
}
|
||||
|
||||
void MainFrame::insertHandlers(void)
|
||||
{
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler);
|
||||
}
|
||||
|
||||
void MainFrame::removeHandlers(void)
|
||||
{
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
removeHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::QueryEndSessionHandler,&mQueryEndSessionHandler);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::createHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
GlobalData<int> statParts;
|
||||
|
||||
createToolBar();
|
||||
mStatusBar=::new StatusBarEx(*this,StatusBarID);
|
||||
mStatusBar.disposition(PointerDisposition::Delete);
|
||||
statParts.size(2);
|
||||
*((int*)&statParts[0])=300;
|
||||
*((int*)&statParts[1])=400;
|
||||
mStatusBar->setParts(statParts);
|
||||
mStatusBar->setText("Ready");
|
||||
applyHistory(getFrameMenu());
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::destroyHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
removeHandlers();
|
||||
::PostQuitMessage(0);
|
||||
::WinHelp(*this,0,HELP_QUIT,0);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::queryEndSessionHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(getClient().hasChildren())return (CallbackData::ReturnType)FALSE;
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::sizeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
Rect statusRect;
|
||||
Rect toolRect;
|
||||
Rect cRect;
|
||||
|
||||
mToolBar.windowRect(toolRect);
|
||||
mStatusBar->windowRect(statusRect);
|
||||
cRect.right(someCallbackData.loWord());
|
||||
cRect.bottom(someCallbackData.hiWord());
|
||||
getClient().moveWindow(0,toolRect.bottom()-toolRect.top(),cRect.right(),cRect.bottom()-((statusRect.bottom()-statusRect.top())+(toolRect.bottom()-toolRect.top())));
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::lineHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
String msg;
|
||||
::sprintf(msg,"Ln %d, Col %d",someCallbackData.loWord(),someCallbackData.hiWord());
|
||||
mStatusBar->setText(msg,1);
|
||||
mStatusBar->update();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::paintHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType MainFrame::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wmCommandID())
|
||||
{
|
||||
case MenuCodeCompile :
|
||||
handleCodeCompile();
|
||||
break;
|
||||
case MenuCodeCompileAndLoad :
|
||||
handleCodeCompileAndLoad();
|
||||
break;
|
||||
case MenuEditCut :
|
||||
handleEditCut();
|
||||
break;
|
||||
case MenuEditCopy :
|
||||
handleEditCopy();
|
||||
break;
|
||||
case MenuEditPaste :
|
||||
handleEditPaste();
|
||||
break;
|
||||
case MenuEditFind :
|
||||
handleEditFind();
|
||||
break;
|
||||
case MenuCascade :
|
||||
cascade();
|
||||
break;
|
||||
case MenuTile :
|
||||
tile();
|
||||
break;
|
||||
case MenuArrange :
|
||||
arrange();
|
||||
break;
|
||||
case MenuCloseAll :
|
||||
closeAll();
|
||||
break;
|
||||
case MenuMinimizeAll :
|
||||
minimizeAll();
|
||||
break;
|
||||
case MenuRestoreAll :
|
||||
restoreAll();
|
||||
break;
|
||||
case MenuFileNew :
|
||||
handleFileNew();
|
||||
break;
|
||||
case MenuFileOpen :
|
||||
handleFileOpen();
|
||||
break;
|
||||
case MenuFileSave :
|
||||
handleFileSave();
|
||||
break;
|
||||
case MenuFilePrint :
|
||||
handleFilePrint();
|
||||
break;
|
||||
case MenuFileSaveAs :
|
||||
handleFileSaveAs();
|
||||
break;
|
||||
case MenuFileClose :
|
||||
handleFileClose();
|
||||
break;
|
||||
case MenuFileQuit :
|
||||
break;
|
||||
case MenuSettingsSerial :
|
||||
handleCommunications();
|
||||
break;
|
||||
case MenuHelpContents :
|
||||
handleHelp();
|
||||
break;
|
||||
case MenuHelpSearch :
|
||||
handleHelp();
|
||||
break;
|
||||
case MenuRegistration :
|
||||
break;
|
||||
case MenuHelpAbout :
|
||||
break;
|
||||
}
|
||||
if(someCallbackData.wParam()>=StartDynamicID)handleFileOpen(someCallbackData);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
// handlers
|
||||
|
||||
void MainFrame::handleCodeCompile(void)
|
||||
{
|
||||
CursorControl cursorControl;
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
String strMessage;
|
||||
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
CodeView &codeView=(CodeView&)*mdiWindow;
|
||||
if(codeView.isDirty()&&IDYES==::MessageBox(*this,(LPSTR)"Save Changes?",(LPSTR)"M68HC11",MB_YESNO))if(!handleFileSave())return;
|
||||
mStatusBar->setText("compiling...");
|
||||
cursorControl.waitCursor(TRUE);
|
||||
m68Assembler.assemble(codeView.getTitle());
|
||||
cursorControl.waitCursor(FALSE);
|
||||
strMessage=m68Assembler.strLastMessage()+String(", code size is ")+String().fromInt(m68Assembler.codeSize())+String(" byte(s).");
|
||||
mStatusBar->setText(strMessage);
|
||||
}
|
||||
|
||||
void MainFrame::handleCodeCompileAndLoad(void)
|
||||
{
|
||||
CursorControl cursorControl;
|
||||
BOOL assembleResult;
|
||||
String strPathBinary;
|
||||
String strMessage;
|
||||
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
CodeView &codeView=(CodeView&)*mdiWindow;
|
||||
if(codeView.isDirty()&&IDYES==::MessageBox(*this,(LPSTR)"Save Changes?",(LPSTR)"M68HC11",MB_YESNO))if(!handleFileSave())return;
|
||||
mStatusBar->setText("compiling...");
|
||||
cursorControl.waitCursor(TRUE);
|
||||
assembleResult=m68Assembler.assemble(codeView.getTitle());
|
||||
cursorControl.waitCursor(FALSE);
|
||||
strMessage=m68Assembler.strLastMessage()+String(", code size is ")+String().fromInt(m68Assembler.codeSize())+String(" byte(s).");
|
||||
mStatusBar->setText(strMessage);
|
||||
if(!assembleResult)return;
|
||||
strPathBinary=codeView.getTitle().betweenString(0,'.');
|
||||
strPathBinary+=".bin";
|
||||
codeLoad(strPathBinary);
|
||||
}
|
||||
|
||||
void MainFrame::handleEditCut(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).cut();
|
||||
}
|
||||
|
||||
void MainFrame::handleEditCopy(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).copy();
|
||||
}
|
||||
|
||||
void MainFrame::handleEditPaste(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).paste();
|
||||
}
|
||||
|
||||
void MainFrame::handleEditFind(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).find();
|
||||
}
|
||||
|
||||
void MainFrame::handleFileNew(void)
|
||||
{
|
||||
CodeView *pCodeView;
|
||||
|
||||
pCodeView=::new CodeView;
|
||||
pCodeView->setLineHandler(&mLineHandler);
|
||||
pCodeView->createWindow(*this,STRING_CODEVIEWCLASSNAME,STRING_CODEVIEWCLASSNAME,"codeMenu","Doc");
|
||||
insert(*pCodeView);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileOpen(CallbackData &someCallbackData)
|
||||
{
|
||||
PureMenu fileMenu;
|
||||
String menuItemString;
|
||||
|
||||
getFrameMenu().getSubMenu(0,fileMenu);
|
||||
menuItemString=fileMenu.menuItemString(someCallbackData.wParam(),PureMenu::ByCommand);
|
||||
if(menuItemString.isNull())return;
|
||||
menuItemString=menuItemString.betweenString(')',0);
|
||||
menuItemString.trimLeft();
|
||||
handleFileOpen(menuItemString);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileOpen(void)
|
||||
{
|
||||
OpenDialog openDialog;
|
||||
String strPathFileName;
|
||||
|
||||
if(!openDialog.getOpenFileName(*this,"*.asm","Open File","*.asm",strPathFileName))return;
|
||||
handleFileOpen(strPathFileName);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileOpen(const String &strPathFileName)
|
||||
{
|
||||
CodeView *pCodeView;
|
||||
CursorControl cursorControl;
|
||||
|
||||
if(bringDocumentToFront(strPathFileName))return;
|
||||
mStatusBar->setText("Loading...");
|
||||
cursorControl.waitCursor(TRUE);
|
||||
|
||||
pCodeView=::new CodeView;
|
||||
insert(*pCodeView); // insert the pointer before creating/activating the window
|
||||
pCodeView->createWindow(*this,STRING_CODEVIEWCLASSNAME,STRING_CODEVIEWCLASSNAME,"codeMenu","Doc");
|
||||
pCodeView->setLineHandler(&mLineHandler);
|
||||
pCodeView->open(strPathFileName);
|
||||
mStatusBar->setText("Ready");
|
||||
cursorControl.waitCursor(FALSE);
|
||||
updateHistory(strPathFileName);
|
||||
}
|
||||
|
||||
void MainFrame::handleFileClose(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
mdiWindow->close();
|
||||
}
|
||||
|
||||
void MainFrame::handleFilePrint(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return;
|
||||
((CodeView&)*mdiWindow).print();
|
||||
}
|
||||
|
||||
BOOL MainFrame::handleFileSave(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return FALSE;
|
||||
CodeView &codeView=(CodeView&)*mdiWindow;
|
||||
if(codeView.getTitle()==String(STRING_UNTITLED))return handleFileSaveAs();
|
||||
if(!codeView.save())return mStatusBar->setText(codeView.getTitle()+String(" save failed.")),FALSE;
|
||||
return mStatusBar->setText(codeView.getTitle()+String(" saved.")),TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL MainFrame::handleFileSaveAs(void)
|
||||
{
|
||||
SmartPointer<MDIWindow> mdiWindow;
|
||||
OpenDialog openDialog;
|
||||
String strPathFileName;
|
||||
|
||||
if(!getActive(mdiWindow)||!(mdiWindow->className()==String(STRING_CODEVIEWCLASSNAME)))return FALSE;
|
||||
if(!openDialog.getSaveFileName(*this,"Assembly Files","File Save","*.asm",strPathFileName))return FALSE;
|
||||
if(!strPathFileName.strstr(".asm"))strPathFileName+=".asm";
|
||||
if(!((CodeView&)*mdiWindow).save(strPathFileName))return mStatusBar->setText(strPathFileName+String(" save failed!.")),FALSE;
|
||||
return mStatusBar->setText(strPathFileName+String(" saved.")),TRUE;
|
||||
}
|
||||
|
||||
void MainFrame::handleCommunications(void)
|
||||
{
|
||||
SerialDlg serDlg;
|
||||
serDlg.perform(*this);
|
||||
}
|
||||
|
||||
void MainFrame::handleHelp(void)
|
||||
{
|
||||
String strPathHelpFileName;
|
||||
DiskInfo diskInfo;
|
||||
|
||||
diskInfo.getCurrentDirectory(strPathHelpFileName);
|
||||
strPathHelpFileName+=String(STRING_HELPFILENAME);
|
||||
::WinHelp(*this,strPathHelpFileName,HELP_CONTENTS,0);
|
||||
}
|
||||
|
||||
// support & testing
|
||||
BOOL MainFrame::codeLoad(const String &strPathBinary)
|
||||
{
|
||||
MCUView *pMCUView;
|
||||
|
||||
pMCUView=::new MCUView;
|
||||
pMCUView->createWindow(*this,STRING_MCUVIEWCLASSNAME,STRING_MCUVIEWCLASSNAME,"mcuMenu","Doc");
|
||||
insert(*pMCUView);
|
||||
pMCUView->setCode(strPathBinary);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void MainFrame::setParts(int numParts)
|
||||
{
|
||||
GlobalData<int> statParts;
|
||||
if(1==numParts){statParts.size(1);*((int*)&statParts[0])=FirstPartWidth;}
|
||||
else {statParts.size(2);*((int*)&statParts[0])=FirstPartWidth;*((int*)&statParts[0]+1)=SecondPartWidth;}
|
||||
mStatusBar->setParts(statParts);
|
||||
}
|
||||
|
||||
void MainFrame::updateHistory(const String &pathFileName)
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
Array<SmartPointer<MDIWindow> >mdiWindows;
|
||||
|
||||
if(!m68Reg.insertHistory(pathFileName))return;
|
||||
removeHistory(getFrameMenu());
|
||||
applyHistory(getFrameMenu());
|
||||
getDocuments(mdiWindows);
|
||||
for(int index=0;index<mdiWindows.size();index++)
|
||||
{
|
||||
SmartPointer<MDIWindow> &mdiWindow=mdiWindows[index];
|
||||
removeHistory(mdiWindow->getMenu());
|
||||
applyHistory(mdiWindow->getMenu());
|
||||
}
|
||||
}
|
||||
|
||||
void MainFrame::removeHistory(PureMenu &pureMenu)
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
UINT startID(StartDynamicID);
|
||||
Block<String> nameList;
|
||||
PureMenu fileMenu;
|
||||
|
||||
m68Reg.getHistory(nameList);
|
||||
if(!nameList.size())return;
|
||||
pureMenu.getSubMenu(0,fileMenu);
|
||||
for(int itemIndex=0;itemIndex<nameList.size();itemIndex++)fileMenu.removeMenu(startID++,PureMenu::ByCommand);
|
||||
int entries(fileMenu.size());
|
||||
if((int)PureMenu::TypeSeparator&(int)fileMenu.getMenuItemType(entries-1,PureMenu::ByPosition))fileMenu.removeMenu(entries-1,PureMenu::ByPosition);
|
||||
}
|
||||
|
||||
void MainFrame::applyHistory(PureMenu &pureMenu)
|
||||
{
|
||||
M68Reg m68Reg;
|
||||
Block<String> nameList;
|
||||
PureMenu fileMenu;
|
||||
String strItem;
|
||||
|
||||
m68Reg.getHistory(nameList);
|
||||
if(!nameList.size())return;
|
||||
pureMenu.getSubMenu(0,fileMenu);
|
||||
fileMenu.appendSeparator();
|
||||
for(int itemIndex=0;itemIndex<nameList.size();itemIndex++)
|
||||
{
|
||||
::sprintf(strItem,"%d) %s",itemIndex+1,(char*)nameList[itemIndex]);
|
||||
fileMenu.appendMenu(StartDynamicID+itemIndex,strItem);
|
||||
}
|
||||
}
|
||||
|
||||
void MainFrame::createToolBar(void)
|
||||
{
|
||||
Block<AddBitmap> addBitmaps;
|
||||
|
||||
mToolBar.create(*this,ToolBarID);
|
||||
addBitmaps.insert(&AddBitmap(0,HINST_COMMCTRL));
|
||||
if(!mToolBar.addBitmaps(addBitmaps))return;
|
||||
mToolBar.addButton(ToolBarButton(STD_FILENEW,MenuFileNew,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FILEOPEN,MenuFileOpen,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FILESAVE,MenuFileSave,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PRINT,MenuFilePrint,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_CUT,MenuEditCut,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_COPY,MenuEditCopy,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PASTE,MenuEditPaste,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_FIND,MenuEditFind,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
mToolBar.addButton(ToolBarButton(STD_PRINT,MenuFilePrint,ToolBarButton::StateEnabled,ToolBarButton::StyleButton));
|
||||
}
|
||||
|
||||
BOOL MainFrame::bringDocumentToFront(const String &strTitle)
|
||||
{
|
||||
Array<SmartPointer<MDIWindow> >mdiWindows;
|
||||
|
||||
getDocuments(mdiWindows);
|
||||
for(int index=0;index<mdiWindows.size();index++)
|
||||
{
|
||||
SmartPointer<MDIWindow> &mdiWindow=mdiWindows[index];
|
||||
if(((CodeView&)*mdiWindow).getTitle()==strTitle){mdiWindow->bringWindowToTop();return TRUE;}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void MainFrame::splash(void)
|
||||
{
|
||||
SplashScreen splashScreen("SPLASH","M68HC11");
|
||||
splashScreen.perform();
|
||||
}
|
||||
|
||||
// virtuals
|
||||
|
||||
void MainFrame::mdiDestroy(MDIWindow &mdiWindow)
|
||||
{
|
||||
Array<SmartPointer<MDIWindow> >mdiWindows;
|
||||
WORD winCount(0);
|
||||
|
||||
getDocuments(mdiWindows);
|
||||
for(int index=0;index<mdiWindows.size();index++)
|
||||
{
|
||||
SmartPointer<MDIWindow> &mdiWindowPtr=mdiWindows[index];
|
||||
if(mdiWindowPtr->className()==String(STRING_CODEVIEWCLASSNAME)&&((MDIWindow*)mdiWindowPtr!=&mdiWindow))winCount++;
|
||||
}
|
||||
if(!winCount)setParts(SinglePart);
|
||||
}
|
||||
|
||||
void MainFrame::mdiActivate(MDIWindow &mdiWindow)
|
||||
{
|
||||
if(mdiWindow.className()==String(STRING_CODEVIEWCLASSNAME))setParts(DoublePart);
|
||||
removeHistory(mdiWindow.getMenu());
|
||||
applyHistory(mdiWindow.getMenu());
|
||||
}
|
||||
|
||||
void MainFrame::mdiDeactivate(MDIWindow &/*mdiWindow*/)
|
||||
{
|
||||
}
|
||||
110
m68hc11/backup/Mainfrm.hpp
Normal file
@@ -0,0 +1,110 @@
|
||||
#ifndef _M68HC11_MAINFRAME_HPP_
|
||||
#define _M68HC11_MAINFRAME_HPP_
|
||||
#ifndef _COMMON_MDIFRM_HPP_
|
||||
#include <common/mdifrm.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _STATBAR_STATUSBAREX_HPP_
|
||||
#include <statbar/statbarx.hpp>
|
||||
#endif
|
||||
#ifndef _TOOLBAR_TOOLBAR_HPP_
|
||||
#include <toolbar/toolbar.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_COMMCONTROL_HPP_
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_M68HC11_HPP_
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#endif
|
||||
#ifndef _AS68HC11_M68ASSEMBLER_HPP_
|
||||
#include <as68hc11/asm6811.hpp>
|
||||
#endif
|
||||
|
||||
class MainFrame : public FrameWindow
|
||||
{
|
||||
public:
|
||||
MainFrame(void);
|
||||
virtual ~MainFrame();
|
||||
static String className(void);
|
||||
void splash(void);
|
||||
protected:
|
||||
virtual void mdiDestroy(MDIWindow &mdiWindow);
|
||||
virtual void mdiActivate(MDIWindow &mdiWindow);
|
||||
virtual void mdiDeactivate(MDIWindow &mdiWindow);
|
||||
private:
|
||||
enum {StatusBarID=500,ToolBarID=501,StartDynamicID=30000};
|
||||
enum{SinglePart=1,DoublePart=2,FirstPartWidth=340,SecondPartWidth=420};
|
||||
enum{MenuFileSave=SBCMENU_FILESAVE,MenuFileQuit=SBCMENU_FILEQUIT,MenuFilePrint=SBCMENU_FILEPRINT,
|
||||
MenuSettingsSerial=SBCMENU_SETTINGSSERIAL,MenuHelpContents=SBCMENU_HELPCONTENTS,
|
||||
MenuHelpSearch=SBCMENU_HELPSEARCH,MenuRegistration=SBCMENU_REGISTRATION,MenuFileNew=SBCMENU_FILENEW,
|
||||
MenuFileOpen=SBCMENU_FILEOPEN,MenuHelpAbout=SBCMENU_HELPABOUT,MenuFileClose=SBCMENU_FILECLOSE,
|
||||
MenuFileSaveAs=SBCMENU_FILESAVEAS,MenuCascade=IDM_CASCADE,MenuTile=IDM_TILE,MenuArrange=IDM_ARRANGE,
|
||||
MenuCloseAll=IDM_CLOSEALL,MenuMinimizeAll=IDM_MINIMIZEALL,MenuRestoreAll=IDM_RESTOREALL,
|
||||
MenuEditCut=SBCMENU_EDITCUT,MenuEditCopy=SBCMENU_EDITCOPY,MenuEditPaste=SBCMENU_EDITPASTE,
|
||||
MenuEditFind=SBCMENU_EDITFIND,MenuCodeCompile=SBCMENU_CODECOMPILE,
|
||||
MenuCodeCompileAndLoad=SBCMENU_CODECOMPILEANDLOAD};
|
||||
CallbackData::ReturnType queryEndSessionHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType timerHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType activateAppHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType displayChangeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType lineHandler(CallbackData &someCallbackData);
|
||||
void createToolBar(void);
|
||||
void handleCodeCompile(void);
|
||||
void handleCodeCompileAndLoad(void);
|
||||
void handleCommunications(void);
|
||||
void handleEditCut(void);
|
||||
void handleEditCopy(void);
|
||||
void handleEditPaste(void);
|
||||
void handleEditFind(void);
|
||||
void handleFileNew(void);
|
||||
void handleFileOpen(void);
|
||||
void handleFileOpen(CallbackData &someCallbackData);
|
||||
void handleFileOpen(const String &strPathFileName);
|
||||
void handleFileClose(void);
|
||||
void handleFilePrint(void);
|
||||
void handleHelp(void);
|
||||
BOOL handleFileSave(void);
|
||||
BOOL handleFileSaveAs(void);
|
||||
BOOL codeLoad(const String &strPathBinary);
|
||||
void registerClass(void)const;
|
||||
void insertHandlers(void);
|
||||
void removeHandlers(void);
|
||||
void setParts(int numParts);
|
||||
void applyHistory(PureMenu &pureMenu);
|
||||
void updateHistory(const String &pathFileName);
|
||||
void removeHistory(PureMenu &pureMenu);
|
||||
BOOL bringDocumentToFront(const String &strTitle);
|
||||
|
||||
Callback<MainFrame> mQueryEndSessionHandler;
|
||||
Callback<MainFrame> mPaintHandler;
|
||||
Callback<MainFrame> mDestroyHandler;
|
||||
Callback<MainFrame> mCommandHandler;
|
||||
Callback<MainFrame> mSizeHandler;
|
||||
Callback<MainFrame> mCreateHandler;
|
||||
Callback<MainFrame> mLineHandler;
|
||||
SmartPointer<StatusBarEx> mStatusBar;
|
||||
CommControl mCommControl;
|
||||
ToolBar mToolBar;
|
||||
// SerialSettings mSerialSettings;
|
||||
M68Assembler m68Assembler;
|
||||
static char szClassName[];
|
||||
static char szMenuName[];
|
||||
};
|
||||
|
||||
inline
|
||||
String MainFrame::className(void)
|
||||
{
|
||||
return String(szClassName);
|
||||
}
|
||||
#endif
|
||||
129
m68hc11/backup/ODLSTLED.CPP
Normal file
@@ -0,0 +1,129 @@
|
||||
#include <m68hc11/odlstled.hpp>
|
||||
#include <common/drawitem.hpp>
|
||||
#include <common/measure.hpp>
|
||||
#include <common/purebmp.hpp>
|
||||
|
||||
OwnerDrawListBinaryLed::OwnerDrawListBinaryLed(GUIWindow &parentWnd,HWND hControlWnd,UINT controlID)
|
||||
: OwnerDrawList(parentWnd,hControlWnd,controlID), mRGBGray(192,192,192), mGrayBrush(mRGBGray),
|
||||
mDisabledBrush(RGBColor(128,128,128)), mOneBitmap("ONE"), mZeroBitmap("ZERO"), mBlankBitmap("BLANK"),
|
||||
mDashBitmap("DASH"), mFont("Courier",14)
|
||||
{
|
||||
}
|
||||
|
||||
OwnerDrawListBinaryLed::OwnerDrawListBinaryLed(GUIWindow &parentWnd,const Rect &initRect,int controlID,DWORD style)
|
||||
: OwnerDrawList(parentWnd,initRect,controlID,style), mRGBGray(192,192,192), mGrayBrush(mRGBGray),
|
||||
mDisabledBrush(RGBColor(128,128,128)), mOneBitmap("ONE"), mZeroBitmap("ZERO"), mBlankBitmap("BLANK"),
|
||||
mDashBitmap("DASH"), mFont("Courier",14)
|
||||
{
|
||||
}
|
||||
|
||||
OwnerDrawListBinaryLed::~OwnerDrawListBinaryLed()
|
||||
{
|
||||
}
|
||||
|
||||
OwnerDrawListBinaryLed &OwnerDrawListBinaryLed::operator=(const OwnerDrawListBinaryLed &/*someOwnerDrawListBinaryLed*/)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
// **** virtuals
|
||||
|
||||
LPARAM OwnerDrawListBinaryLed::handleControlColor(PureDevice &/*pureDevice*/,Control &/*wndListBox*/)
|
||||
{
|
||||
return (LPARAM)(GDIObj)mGrayBrush;
|
||||
}
|
||||
|
||||
WORD OwnerDrawListBinaryLed::handleDraw(const DrawItem &drawItem)
|
||||
{
|
||||
if(!isOkay()||-1==drawItem.itemID()||DrawItem::ListBox!=drawItem.controlType())return FALSE;
|
||||
PureDevice pureDevice(drawItem.deviceContext());
|
||||
pureDevice.setBkColor(mRGBGray);
|
||||
switch(drawItem.itemAction())
|
||||
{
|
||||
case DrawItem::Select :
|
||||
case DrawItem::DrawEntire :
|
||||
case DrawItem::Focus :
|
||||
drawEntire(drawItem);
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
WORD OwnerDrawListBinaryLed::handleMeasureItem(MeasureItem &measureItem)
|
||||
{
|
||||
measureItem.itemHeight(20);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void OwnerDrawListBinaryLed::drawEntire(const DrawItem &drawItem)
|
||||
{
|
||||
PureDevice pureDevice(drawItem.deviceContext());
|
||||
PureDevice memDevice;
|
||||
String stringData;
|
||||
String strNumber;
|
||||
TEXTMETRIC textMetric;
|
||||
Rect drawRect;
|
||||
SIZE sizeExtent;
|
||||
HFONT hPrevFont;
|
||||
|
||||
if(!isOkay())return;
|
||||
stringData.reserve(256);
|
||||
drawRect=drawItem.rectItem();
|
||||
hPrevFont=(HFONT)::SelectObject(drawItem.deviceContext(),(GDIObj)mFont);
|
||||
memDevice.compatibleDevice(pureDevice);
|
||||
sendMessage(drawItem.hwndItem(),LB_GETTEXT,drawItem.itemID(),(LPARAM)(LPSTR)stringData);
|
||||
strNumber=stringData.betweenString('\t',0);
|
||||
if(strNumber.isNull())setBitmap();
|
||||
else
|
||||
{
|
||||
setBitmap(::atoi(strNumber));
|
||||
stringData=stringData.betweenString(0,'\t');
|
||||
}
|
||||
if(stringData.isNull())::MessageBeep(0);
|
||||
::GetTextMetrics(drawItem.deviceContext(),&textMetric);
|
||||
::GetTextExtentPoint32(drawItem.deviceContext(),(LPSTR)stringData,stringData.length(),&sizeExtent);
|
||||
if(drawItem.itemState()&ODS_DISABLED)
|
||||
{
|
||||
::GrayString(drawItem.deviceContext(),(HBRUSH)(GDIObj)mDisabledBrush,(GRAYSTRINGPROC)0,(LPARAM)(LPSTR)stringData,stringData.length(),mBlankBitmap.width()+6,(drawRect.bottom()+drawRect.top()-textMetric.tmHeight)/2,0,0);
|
||||
memDevice.select(mBlankBitmap,TRUE);
|
||||
Rect stretchRect(drawRect);
|
||||
stretchRect.right(mBlankBitmap.width());
|
||||
stretchRect.bottom(sizeExtent.cy);
|
||||
pureDevice.stretchBlt(stretchRect,memDevice,Rect(0,0,mBlankBitmap.width(),mBlankBitmap.height()),PureDevice::MergeCopy);
|
||||
memDevice.select(mBlankBitmap,FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
::TextOut(drawItem.deviceContext(),mBlankBitmap.width()+6,(drawRect.bottom()+drawRect.top()-textMetric.tmHeight)/2,(LPSTR)stringData,stringData.length());
|
||||
memDevice.select(mBlankBitmap,TRUE);
|
||||
Rect stretchRect(drawRect);
|
||||
stretchRect.right(mBlankBitmap.width());
|
||||
stretchRect.bottom(sizeExtent.cy);
|
||||
pureDevice.stretchBlt(stretchRect,memDevice,Rect(0,0,mBlankBitmap.width(),mBlankBitmap.height()),PureDevice::MergeCopy);
|
||||
memDevice.select(mBlankBitmap,FALSE);
|
||||
}
|
||||
if((((UINT)drawItem.itemState())&ODS_FOCUS))
|
||||
{
|
||||
Rect bmpRect(drawRect);
|
||||
bmpRect.right(bmpRect.left()+mBlankBitmap.width());
|
||||
bmpRect.bottom(bmpRect.top()+sizeExtent.cy);
|
||||
::DrawFocusRect(drawItem.deviceContext(),(RECT*)&bmpRect);
|
||||
}
|
||||
::SelectObject(drawItem.deviceContext(),hPrevFont);
|
||||
}
|
||||
|
||||
void OwnerDrawListBinaryLed::setBitmap(BYTE value)
|
||||
{
|
||||
for(int index=0,mask=0x80;index<8;index++,mask/=2)
|
||||
mBlankBitmap.setFrom(value&mask?mOneBitmap:mZeroBitmap,getPlacementRect(index));
|
||||
}
|
||||
|
||||
void OwnerDrawListBinaryLed::setBitmap(void)
|
||||
{
|
||||
for(int index=0,mask=0x80;index<8;index++,mask/=2)mBlankBitmap.setFrom(mDashBitmap,getPlacementRect(index));
|
||||
}
|
||||
|
||||
Rect OwnerDrawListBinaryLed::getPlacementRect(int position)
|
||||
{
|
||||
return Rect(position*CellWidth,0,CellWidth,CellHeight);
|
||||
}
|
||||
44
m68hc11/backup/ODLSTLED.HPP
Normal file
@@ -0,0 +1,44 @@
|
||||
#ifndef _COMMON_OWNERDRAWLISTBINARYLED_HPP_
|
||||
#define _COMMON_OWNERDRAWLISTBINARYLED_HPP_
|
||||
#ifndef _COMMON_BRUSH_HPP_
|
||||
#include <common/brush.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_OWNERDRAWLIST_HPP_
|
||||
#include <common/odlist.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_PUREBITMAP_HPP_
|
||||
#include <common/purebmp.hpp>
|
||||
#endif
|
||||
|
||||
class OwnerDrawListBinaryLed : public OwnerDrawList
|
||||
{
|
||||
public:
|
||||
OwnerDrawListBinaryLed(GUIWindow &parentWnd,HWND hControlWnd,UINT controlID);
|
||||
OwnerDrawListBinaryLed(GUIWindow &parentWnd,const Rect &initRect,int controlID,DWORD style=LBS_NOTIFY|WS_BORDER|LBS_HASSTRINGS|WS_VSCROLL|LBS_OWNERDRAWFIXED|WS_CLIPCHILDREN|WS_CLIPSIBLINGS);
|
||||
virtual ~OwnerDrawListBinaryLed();
|
||||
OwnerDrawListBinaryLed &operator=(const OwnerDrawListBinaryLed &someOwnerDrawListBinaryLed);
|
||||
protected:
|
||||
virtual WORD handleDraw(const DrawItem &drawItem);
|
||||
virtual WORD handleMeasureItem(MeasureItem &measureItem);
|
||||
virtual LPARAM handleControlColor(PureDevice &pureDevice,Control &wndListBox);
|
||||
virtual void drawEntire(const DrawItem &drawItem);
|
||||
private:
|
||||
enum {BmSel=0,BmUnSel=1};
|
||||
enum {CellWidth=13,CellHeight=23};
|
||||
Rect getPlacementRect(int position);
|
||||
void setBitmap(BYTE value);
|
||||
void setBitmap(void);
|
||||
|
||||
PureBitmap mBlankBitmap;
|
||||
PureBitmap mOneBitmap;
|
||||
PureBitmap mZeroBitmap;
|
||||
PureBitmap mDashBitmap;
|
||||
Font mFont;
|
||||
RGBColor mRGBGray;
|
||||
Brush mGrayBrush;
|
||||
Brush mDisabledBrush;
|
||||
};
|
||||
#endif
|
||||
313
m68hc11/backup/SERDLG.CPP
Normal file
@@ -0,0 +1,313 @@
|
||||
#include <m68hc11/serdlg.hpp>
|
||||
#include <m68hc11/m68reg.hpp>
|
||||
|
||||
SerialDlg::SerialDlg(void)
|
||||
{
|
||||
mInitHandler.setCallback(this,&SerialDlg::initHandler);
|
||||
mDestroyHandler.setCallback(this,&SerialDlg::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&SerialDlg::commandHandler);
|
||||
mCloseHandler.setCallback(this,&SerialDlg::closeHandler);
|
||||
DWindow::insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
DWindow::insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
DWindow::insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
DWindow::insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
}
|
||||
|
||||
SerialDlg::~SerialDlg()
|
||||
{
|
||||
DWindow::removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
DWindow::removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
DWindow::removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
DWindow::removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
}
|
||||
|
||||
SerialDlg &SerialDlg::operator=(const SerialDlg &/*someSerialDlg*/)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOL SerialDlg::perform(GUIWindow &parentWindow) // ,SerialSettings &serialSettings)
|
||||
{
|
||||
return ::DialogBoxParam(processInstance(),(LPSTR)"SERIAL",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SerialDlg::initHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
mStatusBar=::new StatusBarEx(*this,StatusBarID);
|
||||
mStatusBar.disposition(PointerDisposition::Delete);
|
||||
initSerialSettings();
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SerialDlg::destroyHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SerialDlg::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wmCommandID())
|
||||
{
|
||||
case IDOK :
|
||||
if(applySerialSettings())endDialog(TRUE);
|
||||
break;
|
||||
case IDCANCEL :
|
||||
endDialog(FALSE);
|
||||
break;
|
||||
case SerialStopBits :
|
||||
case SerialParity :
|
||||
case SerialDataBits :
|
||||
case SerialBaud :
|
||||
case SerialPort :
|
||||
mStatusBar->setText(" ");
|
||||
break;
|
||||
case SerialApply :
|
||||
applySerialSettings();
|
||||
break;
|
||||
case SerialTest :
|
||||
testDevice();
|
||||
break;
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SerialDlg::closeHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
void SerialDlg::initSerialSettings(void)
|
||||
{
|
||||
M68Reg mcuReg;
|
||||
|
||||
initPorts();
|
||||
initBaud();
|
||||
initDataBits();
|
||||
initStopBits();
|
||||
initParity();
|
||||
sendMessage(SerialPort,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getPort());
|
||||
sendMessage(SerialBaud,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getBaud());
|
||||
sendMessage(SerialDataBits,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getDataBits());
|
||||
sendMessage(SerialParity,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getParity());
|
||||
sendMessage(SerialStopBits,CB_SELECTSTRING,-1,(LPARAM)(LPSTR)mcuReg.getStopBits());
|
||||
}
|
||||
|
||||
void SerialDlg::initPorts(void)
|
||||
{
|
||||
String strPort;
|
||||
CommControl commControl;
|
||||
Block<CommControl::Port> ports;
|
||||
|
||||
sendMessage(SerialPort,CB_RESETCONTENT,0,0L);
|
||||
commControl.enumerateDevices(ports);
|
||||
for(int index=0;index<ports.size();index++)
|
||||
{
|
||||
if(ports[index]==CommControl::PortCOM1)sendMessage(SerialPort,CB_ADDSTRING,0,(LPARAM)(LPSTR)String(STRING_COM1));
|
||||
else if(ports[index]==CommControl::PortCOM2)sendMessage(SerialPort,CB_ADDSTRING,0,(LPARAM)(LPSTR)String(STRING_COM2));
|
||||
else if(ports[index]==CommControl::PortCOM3)sendMessage(SerialPort,CB_ADDSTRING,0,(LPARAM)(LPSTR)String(STRING_COM3));
|
||||
else if(ports[index]==CommControl::PortCOM4)sendMessage(SerialPort,CB_ADDSTRING,0,(LPARAM)(LPSTR)String(STRING_COM4));
|
||||
}
|
||||
}
|
||||
|
||||
void SerialDlg::initBaud(void)
|
||||
{
|
||||
String strBaudRate;
|
||||
|
||||
sendMessage(SerialBaud,CB_RESETCONTENT,0,0L);
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"1200");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"2400");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"4800");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"9600");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"14400");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"19200");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"38400");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"57600");
|
||||
sendMessage(SerialBaud,CB_ADDSTRING,0,(LPARAM)(LPSTR)"115200");
|
||||
}
|
||||
|
||||
void SerialDlg::initDataBits(void)
|
||||
{
|
||||
sendMessage(SerialDataBits,CB_RESETCONTENT,0,0L);
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"4");
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"5");
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"6");
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"7");
|
||||
sendMessage(SerialDataBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"8");
|
||||
}
|
||||
|
||||
void SerialDlg::initParity(void)
|
||||
{
|
||||
sendMessage(SerialParity,CB_RESETCONTENT,0,0L);
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"None");
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"Odd");
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"Even");
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"Mark");
|
||||
sendMessage(SerialParity,CB_ADDSTRING,0,(LPARAM)(LPSTR)"Space");
|
||||
}
|
||||
|
||||
void SerialDlg::initStopBits()
|
||||
{
|
||||
sendMessage(SerialStopBits,CB_RESETCONTENT,0,0L);
|
||||
sendMessage(SerialStopBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"1");
|
||||
sendMessage(SerialStopBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"1.5");
|
||||
sendMessage(SerialStopBits,CB_ADDSTRING,0,(LPARAM)(LPSTR)"2");
|
||||
}
|
||||
|
||||
CommControl::Port SerialDlg::getCommPort(void)const
|
||||
{
|
||||
String strPort;
|
||||
|
||||
sendMessage(SerialPort,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strPort);
|
||||
return CommControl::stringToPort(strPort);
|
||||
}
|
||||
|
||||
String SerialDlg::getCommSettings(void)const
|
||||
{
|
||||
String strBaud;
|
||||
String strDataBits;
|
||||
String strSettings;
|
||||
String strParity;
|
||||
String strStopBits;
|
||||
LRESULT currSel;
|
||||
|
||||
sendMessage(SerialBaud,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strBaud);
|
||||
strSettings+="baud=";
|
||||
strSettings+=strBaud;
|
||||
strSettings+=" ";
|
||||
sendMessage(SerialDataBits,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strDataBits);
|
||||
strSettings+="data=";
|
||||
strSettings+=strDataBits;
|
||||
strSettings+=" ";
|
||||
currSel=sendMessage(SerialParity,CB_GETCURSEL,0,0L);
|
||||
sendMessage(SerialParity,CB_GETLBTEXT,0,(LPARAM)(LPSTR)strParity);
|
||||
if(String("None")==strParity)strParity="N";
|
||||
else if(String("Odd")==strParity)strParity="O";
|
||||
else if(String("Even")==strParity)strParity="E";
|
||||
else if(String("Space")==strParity)strParity="S";
|
||||
strSettings+="parity=";
|
||||
strSettings+=strParity;
|
||||
strSettings+=" ";
|
||||
currSel=sendMessage(SerialStopBits,CB_GETCURSEL,0,0L);
|
||||
sendMessage(SerialStopBits,CB_GETLBTEXT,0,(LPARAM)(LPSTR)strStopBits);
|
||||
strSettings+="stop=";
|
||||
strSettings+=strStopBits;
|
||||
return strSettings;
|
||||
}
|
||||
|
||||
bool SerialDlg::applySerialSettings(void)
|
||||
{
|
||||
CommControl commControl;
|
||||
M68Reg mcuReg;
|
||||
String strCommSettings;
|
||||
String strBaud;
|
||||
String strDataBits;
|
||||
String strStopBits;
|
||||
String strParity;
|
||||
LRESULT currSel;
|
||||
|
||||
strCommSettings=getCommSettings();
|
||||
if(!commControl.open(getCommPort()))
|
||||
{
|
||||
mStatusBar->setText("Error opening port.");
|
||||
::MessageBeep(0);
|
||||
return false;
|
||||
}
|
||||
if(!commControl.setDeviceControlBlock(strCommSettings)){mStatusBar->setText("Failed to apply settings.");return false;}
|
||||
sendMessage(SerialBaud,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strBaud);
|
||||
mcuReg.setBaud(strBaud);
|
||||
sendMessage(SerialDataBits,WM_GETTEXT,String::MaxString,(LPARAM)(LPSTR)strDataBits);
|
||||
mcuReg.setDataBits(strDataBits);
|
||||
currSel=sendMessage(SerialParity,CB_GETCURSEL,0,0L);
|
||||
sendMessage(SerialParity,CB_GETLBTEXT,0,(LPARAM)(LPSTR)strParity);
|
||||
if(String("None")==strParity)strParity="N";
|
||||
else if(String("Odd")==strParity)strParity="O";
|
||||
else if(String("Even")==strParity)strParity="E";
|
||||
else if(String("Space")==strParity)strParity="S";
|
||||
mcuReg.setParity(strParity);
|
||||
currSel=sendMessage(SerialStopBits,CB_GETCURSEL,0,0L);
|
||||
sendMessage(SerialStopBits,CB_GETLBTEXT,0,(LPARAM)(LPSTR)strStopBits);
|
||||
mcuReg.setStopBits(strStopBits);
|
||||
mStatusBar->setText("Settings have been applied.");
|
||||
return true;
|
||||
}
|
||||
|
||||
void SerialDlg::testDevice(void)
|
||||
{
|
||||
CommControl commControl;
|
||||
BYTE prefix(0xFF);
|
||||
GlobalData<BYTE> rcvBuffer;
|
||||
GlobalData<BYTE> sndBuffer;
|
||||
BYTE codeBytes[]={0x8E,0x00,0xFF,0xCE,0x10,0x00,0x6F,0x2C,0xCC,0x33,0x0C,0xA7,0x2B,0xE7,0x2D,0x1F,0x2E,0x20,0xFC,0xA6,0x2F,0x4C,0x1F,0x2E,0x80,0xFC,0xA7,0x2F,0x7E,0x00,0x0F};
|
||||
|
||||
sndBuffer.size(256);
|
||||
sndBuffer.setZero();
|
||||
rcvBuffer.size(sndBuffer.size());
|
||||
rcvBuffer.setZero();
|
||||
::memcpy(&sndBuffer[0],codeBytes,sizeof(codeBytes));
|
||||
if(IDCANCEL==::MessageBox(*this,"This operation will overwrite the contents of MCU RAM with the ECHO program.","WARNING",MB_OKCANCEL))return;
|
||||
if(!commControl.open(getCommPort())){mStatusBar->setText("Error opening port.");return;}
|
||||
if(!commControl.setDeviceControlBlock(getCommSettings())){mStatusBar->setText("Failed to apply settings.");return;}
|
||||
mStatusBar->setText("waiting for break signal....please reset the device.");
|
||||
if(!commControl.waitForBreak()){mStatusBar->setText("timeout waiting for break.");return;}
|
||||
mStatusBar->setText("break received, loading code...");
|
||||
commControl.write(&prefix,sizeof(prefix));
|
||||
commControl.clearReceiveQueue();
|
||||
commControl.write(sndBuffer);
|
||||
mStatusBar->setText("Waiting for response.");
|
||||
if(!commControl.waitForData()){mStatusBar->setText("Timeout reached for receive.");return;}
|
||||
commControl.readFully(rcvBuffer);
|
||||
if(::memcmp(&rcvBuffer[0],&sndBuffer[0],sndBuffer.size()))
|
||||
{
|
||||
mStatusBar->setText("Failed to verify program load.");
|
||||
return;
|
||||
}
|
||||
::Sleep(250);
|
||||
if(!echo(commControl))mStatusBar->setText("Received unexpected results from program.");
|
||||
else mStatusBar->setText("The program has been verified, all tests successful.");
|
||||
return;
|
||||
}
|
||||
|
||||
bool SerialDlg::echo(CommControl &commControl)
|
||||
{
|
||||
BYTE sndByte('a');
|
||||
BYTE rcvByte=0;
|
||||
DWORD rcvCount(0);
|
||||
String str;
|
||||
|
||||
if(!commControl.isOkay())
|
||||
{
|
||||
if(!commControl.open(getCommPort())){mStatusBar->setText("Unable to open comm port.");mStatusBar->setText("Error opening port.");return false;}
|
||||
if(!commControl.setDeviceControlBlock(getCommSettings())){mStatusBar->setText("Failed to apply settings.");return false;}
|
||||
}
|
||||
commControl.clearError();
|
||||
while('z'!=rcvByte)
|
||||
{
|
||||
CommStatus commStatus;
|
||||
commControl.write(&sndByte,sizeof(sndByte));
|
||||
if(commControl.waitForData())
|
||||
{
|
||||
rcvByte=0;
|
||||
commControl.read(&rcvByte,sizeof(rcvByte));
|
||||
str+=rcvByte;
|
||||
mStatusBar->setText(str);
|
||||
if(!rcvCount&&rcvByte!='b')
|
||||
{
|
||||
mStatusBar->setText("Unexpected character in input stream.");
|
||||
return false;
|
||||
}
|
||||
sndByte++;
|
||||
rcvCount++;
|
||||
}
|
||||
}
|
||||
::Sleep(250);
|
||||
return true;
|
||||
}
|
||||
|
||||
String SerialDlg::getByteString(BYTE charByte)
|
||||
{
|
||||
String str;
|
||||
::sprintf(str.str(),"char:%d(0x%08lx)",(int)charByte,(int)charByte);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
61
m68hc11/backup/SERDLG.HPP
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef _M68HC11_SERIALDLG_HPP_
|
||||
#define _M68HC11_SERIAL_HPP_
|
||||
#ifndef _COMMON_DWINDOW_HPP_
|
||||
#include <common/dwindow.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_M68HC11_HPP_
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#endif
|
||||
#ifndef _STATBAR_STATUSBAREX_HPP_
|
||||
#include <statbar/statbarx.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_COMMCONTROL_HPP_
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
#endif
|
||||
|
||||
class CommControl;
|
||||
|
||||
class SerialDlg : public DWindow
|
||||
{
|
||||
public:
|
||||
SerialDlg(void);
|
||||
virtual ~SerialDlg();
|
||||
BOOL perform(GUIWindow &parentWindow);
|
||||
private:
|
||||
enum{SerialStopBits=SERIAL_STOP,SerialParity=SERIAL_PARITY,SerialDataBits=SERIAL_DATA,
|
||||
SerialBaud=SERIAL_BAUD,SerialPort=SERIAL_PORT,SerialApply=SERIAL_APPLY,SerialTest=SERIAL_TEST};
|
||||
enum {StatusBarID=500};
|
||||
SerialDlg &operator=(const SerialDlg &someSerialDlg);
|
||||
CallbackData::ReturnType initHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType dlgCodeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType controlColorHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType measureItemHandler(CallbackData &someCallbackData);
|
||||
String getByteString(BYTE charByte);
|
||||
CommControl::Port getCommPort(void)const;
|
||||
String getCommSettings(void)const;
|
||||
bool applySerialSettings(void);
|
||||
void initSerialSettings(void);
|
||||
void testDevice(void);
|
||||
void initDataBits(void);
|
||||
void initParity(void);
|
||||
void initStopBits(void);
|
||||
void initPorts(void);
|
||||
void initBaud(void);
|
||||
bool echo(CommControl &commControl);
|
||||
|
||||
Callback<SerialDlg> mInitHandler;
|
||||
Callback<SerialDlg> mDestroyHandler;
|
||||
Callback<SerialDlg> mCommandHandler;
|
||||
Callback<SerialDlg> mCloseHandler;
|
||||
SmartPointer<StatusBarEx> mStatusBar;
|
||||
};
|
||||
#endif
|
||||
130
m68hc11/backup/SETTINGS.HPP
Normal file
@@ -0,0 +1,130 @@
|
||||
#ifndef _M68HC11_SERIALSETUP_HPP_
|
||||
#define _M68HC11_SERIALSETUP_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
|
||||
class SerialSettings
|
||||
{
|
||||
public:
|
||||
SerialSettings(void);
|
||||
SerialSettings(const SerialSettings &someSerialSettings);
|
||||
virtual ~SerialSettings();
|
||||
SerialSettings &operator=(const SerialSettings &someSerialSettings);
|
||||
BOOL operator==(const SerialSettings &someSerialSettings)const;
|
||||
DWORD port(void)const;
|
||||
void port(DWORD port);
|
||||
DWORD baudRate(void)const;
|
||||
void baudRate(DWORD baudRate);
|
||||
DWORD parity(void)const;
|
||||
void parity(DWORD parity);
|
||||
DWORD stopBits(void)const;
|
||||
void stopBits(DWORD stopBits);
|
||||
DWORD dataBits(void)const;
|
||||
void dataBits(DWORD dataBits);
|
||||
private:
|
||||
DWORD mSerialPort;
|
||||
DWORD mBaudRate;
|
||||
DWORD mParity;
|
||||
DWORD mStopBits;
|
||||
DWORD mDataBits;
|
||||
};
|
||||
|
||||
inline
|
||||
SerialSettings::SerialSettings(void)
|
||||
: mSerialPort(0), mBaudRate(1200), mParity(0), mStopBits(0), mDataBits(8)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
SerialSettings::SerialSettings(const SerialSettings &someSerialSettings)
|
||||
{
|
||||
*this=someSerialSettings;
|
||||
}
|
||||
|
||||
inline
|
||||
SerialSettings::~SerialSettings()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
SerialSettings &SerialSettings::operator=(const SerialSettings &someSerialSettings)
|
||||
{
|
||||
port(someSerialSettings.port());
|
||||
baudRate(someSerialSettings.baudRate());
|
||||
parity(someSerialSettings.parity());
|
||||
stopBits(someSerialSettings.stopBits());
|
||||
dataBits(someSerialSettings.dataBits());
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL SerialSettings::operator==(const SerialSettings &someSerialSettings)const
|
||||
{
|
||||
return (port()==someSerialSettings.port()&&
|
||||
baudRate()==someSerialSettings.baudRate()&&
|
||||
parity()==someSerialSettings.parity()&&
|
||||
stopBits()==someSerialSettings.stopBits()&&
|
||||
dataBits()==someSerialSettings.dataBits());
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::port(void)const
|
||||
{
|
||||
return mSerialPort;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::port(DWORD port)
|
||||
{
|
||||
mSerialPort=port;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::baudRate(void)const
|
||||
{
|
||||
return mBaudRate;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::baudRate(DWORD baudRate)
|
||||
{
|
||||
mBaudRate=baudRate;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::parity(void)const
|
||||
{
|
||||
return mParity;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::parity(DWORD parity)
|
||||
{
|
||||
mParity=parity;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::stopBits(void)const
|
||||
{
|
||||
return mStopBits;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::stopBits(DWORD stopBits)
|
||||
{
|
||||
mStopBits=stopBits;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD SerialSettings::dataBits(void)const
|
||||
{
|
||||
return mDataBits;
|
||||
}
|
||||
|
||||
inline
|
||||
void SerialSettings::dataBits(DWORD dataBits)
|
||||
{
|
||||
mDataBits=dataBits;
|
||||
}
|
||||
#endif
|
||||
156
m68hc11/backup/SPLASH.CPP
Normal file
@@ -0,0 +1,156 @@
|
||||
#include <m68hc11/splash.hpp>
|
||||
#include <common/resbmp.hpp>
|
||||
#include <common/dib.hpp>
|
||||
#include <common/bitmap.hpp>
|
||||
|
||||
char SplashScreen::szClassName[]="SplashScreen";
|
||||
|
||||
SplashScreen::SplashScreen(const String &strBitmap,const String &strCaption,UINT timeout)
|
||||
: mBitmapName(strBitmap), mStrCaption(strCaption), mTimeout(timeout),
|
||||
mTextFont("Times New Roman",12,Font::PitchVariable|Font::FamilySwiss,Font::WeightBold)
|
||||
{
|
||||
mResBitmap=new ResBitmap(mBitmapName);
|
||||
mResBitmap.disposition(PointerDisposition::Delete);
|
||||
mCreateHandler.setCallback(this,&SplashScreen::createHandler);
|
||||
mPaintHandler.setCallback(this,&SplashScreen::paintHandler);
|
||||
mDestroyHandler.setCallback(this,&SplashScreen::destroyHandler);
|
||||
mPaletteChangedHandler.setCallback(this,&SplashScreen::paletteChangedHandler);
|
||||
mSetFocusHandler.setCallback(this,&SplashScreen::setFocusHandler);
|
||||
mTimerHandler.setCallback(this,&SplashScreen::timerHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
insertHandler(VectorHandler::PaletteChangedHandler,&mPaletteChangedHandler);
|
||||
insertHandler(VectorHandler::SetFocusHandler,&mSetFocusHandler);
|
||||
insertHandler(VectorHandler::TimerHandler,&mTimerHandler);
|
||||
registerClass();
|
||||
}
|
||||
|
||||
SplashScreen::SplashScreen(const SplashScreen &someSplashScreen)
|
||||
{ // private implementation
|
||||
}
|
||||
|
||||
SplashScreen::~SplashScreen()
|
||||
{
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
removeHandler(VectorHandler::PaletteChangedHandler,&mPaletteChangedHandler);
|
||||
removeHandler(VectorHandler::SetFocusHandler,&mSetFocusHandler);
|
||||
removeHandler(VectorHandler::TimerHandler,&mTimerHandler);
|
||||
}
|
||||
|
||||
void SplashScreen::registerClass(void)
|
||||
{
|
||||
HINSTANCE hInstance(processInstance());
|
||||
WNDCLASS wndClass;
|
||||
|
||||
if(::GetClassInfo(hInstance,szClassName,(WNDCLASS FAR*)&wndClass))return;
|
||||
wndClass.style =CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_OWNDC;
|
||||
wndClass.lpfnWndProc =(WNDPROC)Window::WndProc;
|
||||
wndClass.cbClsExtra =0;
|
||||
wndClass.cbWndExtra =sizeof(SplashScreen*);
|
||||
wndClass.hInstance =hInstance;
|
||||
wndClass.hIcon =::LoadIcon(NULL,IDI_APPLICATION);
|
||||
wndClass.hCursor =::LoadCursor(NULL,IDC_ARROW);
|
||||
wndClass.hbrBackground =(HBRUSH)::GetStockObject(NULL_BRUSH);
|
||||
wndClass.lpszMenuName =0;
|
||||
wndClass.lpszClassName =szClassName;
|
||||
::RegisterClass(&wndClass);
|
||||
assert(0!=::GetClassInfo(hInstance,szClassName,(WNDCLASS FAR*)&wndClass));
|
||||
}
|
||||
|
||||
SplashScreen &SplashScreen::operator=(const SplashScreen &someSplashScreen)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
BOOL SplashScreen::perform(Rect initRect)
|
||||
{
|
||||
UINT style(0);
|
||||
if(CW_USEDEFAULT==initRect.right())initRect.right(mResBitmap->width());
|
||||
if(CW_USEDEFAULT==initRect.bottom())initRect.bottom(mResBitmap->height());
|
||||
if(timeout())
|
||||
// if(useTimer())
|
||||
{
|
||||
PureDevice pureDevice;
|
||||
pureDevice.screenDevice();
|
||||
initRect.left((pureDevice.horizontalResolution()-mResBitmap->width())/2);
|
||||
initRect.top((pureDevice.verticalResolution()-mResBitmap->height())/2);
|
||||
style=WS_POPUP|WS_CLIPSIBLINGS|0x04|WS_DLGFRAME;
|
||||
}
|
||||
else style=WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_BORDER|WS_DLGFRAME|0x04|WS_CLIPSIBLINGS;
|
||||
createWindow(WS_EX_CONTROLPARENT,szClassName,timeout()?(char*)0:(char*)mStrCaption,style,initRect,NULL,NULL,processInstance(),(LPSTR)this); // WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_BORDER|WS_DLGFRAME|0x04|WS_CLIPSIBLINGS
|
||||
show(SW_SHOW);
|
||||
update();
|
||||
return messageLoop();
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::destroyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
PureDevice pureDevice(*this);
|
||||
((PurePalette&)*mDIBitmap).usePalette(pureDevice,FALSE);
|
||||
postQuitMessage(onDestroy());
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mPureDevice=new PureDevice(*this);
|
||||
mPureDevice.disposition(PointerDisposition::Delete);
|
||||
mDIBitmap=new DIBitmap(*mPureDevice,mResBitmap->width(),mResBitmap->height(),*mResBitmap);
|
||||
mDIBitmap.disposition(PointerDisposition::Delete);
|
||||
if(timeout())setTimer(TimerID,timeout());
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::timerHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
killTimer(TimerID);
|
||||
postMessage(*this,WM_CLOSE,0,0L);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::paletteChangedHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(!mDIBitmap.isOkay()||((HWND)*this==(HWND)someCallbackData.wParam()))return (CallbackData::ReturnType)FALSE;
|
||||
PureDevice pureDevice(*this);
|
||||
((PurePalette&)*mDIBitmap).usePalette(pureDevice,TRUE);
|
||||
update();
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::setFocusHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
if(!mDIBitmap.isOkay())return (CallbackData::ReturnType)FALSE;
|
||||
PureDevice pureDevice(*this);
|
||||
((PurePalette&)*mDIBitmap).usePalette(pureDevice,TRUE);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType SplashScreen::paintHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(!mResBitmap.isOkay())return (CallbackData::ReturnType)FALSE;
|
||||
PaintInformation *pPaintInfo=(PaintInformation*)someCallbackData.lParam();
|
||||
PureDevice &pureDevice=(PureDevice&)*pPaintInfo;
|
||||
mDIBitmap->copyBits(mResBitmap->ptrData(),mResBitmap->imageExtent());
|
||||
mDIBitmap->stretchBlt(pureDevice,Rect(0,0,width(),height()));
|
||||
pureDevice.select((GDIObj)mTextFont,TRUE);
|
||||
pureDevice.setTextColor(RGBColor(247,231,33));
|
||||
pureDevice.setBkMode(PureDevice::Transparent);
|
||||
// pureDevice.textOut(60,180,"1998 Diversified Software Solutions");
|
||||
if(!mInstallLine.isNull())
|
||||
{
|
||||
pureDevice.setTextColor(RGBColor(255,255,255));
|
||||
pureDevice.textOut(50,196,mInstallLine);
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
// virtuals
|
||||
int SplashScreen::onDestroy(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
68
m68hc11/backup/SPLASH.HPP
Normal file
@@ -0,0 +1,68 @@
|
||||
#ifndef _M68HC11_SPLASHSCREEN_HPP_
|
||||
#define _M68HC11_SPLASHSCREEN_HPP_
|
||||
#ifndef _COMMON_SMARTPOINTER_HPP_
|
||||
#include <common/pointer.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_WINDOW_HPP_
|
||||
#include <common/window.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_RECTANGLE_HPP_
|
||||
#include <common/rect.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_FONT_HPP_
|
||||
#include <common/font.hpp>
|
||||
#endif
|
||||
|
||||
class ResBitmap;
|
||||
class DIBitmap;
|
||||
|
||||
class SplashScreen : public Window
|
||||
{
|
||||
public:
|
||||
enum{TimeOut=2500};
|
||||
SplashScreen(const String &strBitmap,const String &strCaption,UINT timeout=TimeOut);
|
||||
virtual ~SplashScreen();
|
||||
BOOL perform(Rect initRect=Rect(CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT));
|
||||
protected:
|
||||
virtual int onDestroy(void);
|
||||
private:
|
||||
enum {TimerID=0};
|
||||
SplashScreen(const SplashScreen &someSplashScreen);
|
||||
SplashScreen &operator=(const SplashScreen &someSplashScreen);
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType paletteChangedHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType setFocusHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType timerHandler(CallbackData &someCallbackData);
|
||||
void registerClass(void);
|
||||
UINT timeout(void)const;
|
||||
|
||||
Callback<SplashScreen> mPaintHandler;
|
||||
Callback<SplashScreen> mCreateHandler;
|
||||
Callback<SplashScreen> mDestroyHandler;
|
||||
Callback<SplashScreen> mPaletteChangedHandler;
|
||||
Callback<SplashScreen> mSetFocusHandler;
|
||||
Callback<SplashScreen> mTimerHandler;
|
||||
|
||||
SmartPointer<ResBitmap> mResBitmap;
|
||||
SmartPointer<DIBitmap> mDIBitmap;
|
||||
SmartPointer<PureDevice> mPureDevice;
|
||||
String mBitmapName;
|
||||
String mStrCaption;
|
||||
String mInstallLine;
|
||||
UINT mTimeout;
|
||||
Font mTextFont;
|
||||
static char szClassName[];
|
||||
};
|
||||
|
||||
inline
|
||||
UINT SplashScreen::timeout(void)const
|
||||
{
|
||||
return mTimeout;
|
||||
}
|
||||
|
||||
#endif
|
||||
86
m68hc11/backup/XTRAINFO.HPP
Normal file
@@ -0,0 +1,86 @@
|
||||
#ifndef _M68HC11_EXTRAINFO_HPP_
|
||||
#define _M68HC11_EXTRAINFO_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
|
||||
class ExtraInfo
|
||||
{
|
||||
public:
|
||||
ExtraInfo(void);
|
||||
ExtraInfo(const ExtraInfo &someExtraInfo);
|
||||
ExtraInfo(DWORD userDataOne,DWORD userDataTwo);
|
||||
virtual ~ExtraInfo();
|
||||
ExtraInfo &operator=(const ExtraInfo &someExtraInfo);
|
||||
BOOL operator==(const ExtraInfo &someExtraInfo)const;
|
||||
DWORD userDataOne(void)const;
|
||||
void userDataOne(DWORD userDataOne);
|
||||
DWORD userDataTwo(void)const;
|
||||
void userDataTwo(DWORD userDataTwo);
|
||||
private:
|
||||
DWORD mUserDataOne;
|
||||
DWORD mUserDataTwo;
|
||||
};
|
||||
|
||||
inline
|
||||
ExtraInfo::ExtraInfo(void)
|
||||
: mUserDataOne(0), mUserDataTwo(0)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
ExtraInfo::ExtraInfo(const ExtraInfo &someExtraInfo)
|
||||
{
|
||||
*this=someExtraInfo;
|
||||
}
|
||||
|
||||
inline
|
||||
ExtraInfo::ExtraInfo(DWORD userDataOne,DWORD userDataTwo)
|
||||
: mUserDataOne(userDataOne), mUserDataTwo(userDataTwo)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
ExtraInfo::~ExtraInfo()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
ExtraInfo &ExtraInfo::operator=(const ExtraInfo &someExtraInfo)
|
||||
{
|
||||
userDataOne(someExtraInfo.userDataOne());
|
||||
userDataTwo(someExtraInfo.userDataTwo());
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
BOOL ExtraInfo::operator==(const ExtraInfo &someExtraInfo)const
|
||||
{
|
||||
return (userDataOne()==someExtraInfo.userDataOne()&&
|
||||
userDataTwo()==someExtraInfo.userDataTwo());
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD ExtraInfo::userDataOne(void)const
|
||||
{
|
||||
return mUserDataOne;
|
||||
}
|
||||
|
||||
inline
|
||||
void ExtraInfo::userDataOne(DWORD userDataOne)
|
||||
{
|
||||
mUserDataOne=userDataOne;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD ExtraInfo::userDataTwo(void)const
|
||||
{
|
||||
return mUserDataTwo;
|
||||
}
|
||||
|
||||
inline
|
||||
void ExtraInfo::userDataTwo(DWORD userDataTwo)
|
||||
{
|
||||
mUserDataTwo=userDataTwo;
|
||||
}
|
||||
#endif
|
||||
270
m68hc11/backup/codeview.cpp
Normal file
@@ -0,0 +1,270 @@
|
||||
#include <m68hc11/codeview.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <printman/printman.hpp>
|
||||
#include <fileio/fileio.hpp>
|
||||
#include <common/profile.hpp>
|
||||
#include <common/rgbcolor.hpp>
|
||||
#include <common/crsctrl.hpp>
|
||||
#include <common/keydata.hpp>
|
||||
|
||||
CodeView::CodeView(void)
|
||||
: WinHookProc(WinHookProc::HookBefore)
|
||||
{
|
||||
mCreateHandler.setCallback(this,&CodeView::createHandler);
|
||||
mSizeHandler.setCallback(this,&CodeView::sizeHandler);
|
||||
mCloseHandler.setCallback(this,&CodeView::closeHandler);
|
||||
mDestroyHandler.setCallback(this,&CodeView::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&CodeView::commandHandler);
|
||||
mKeyUpHandler.setCallback(this,&CodeView::keyUpHandler);
|
||||
mKeyDownHandler.setCallback(this,&CodeView::keyDownHandler);
|
||||
mLeftButtonDownHandler.setCallback(this,&CodeView::leftButtonDownHandler);
|
||||
mSetFocusHandler.setCallback(this,&CodeView::setFocusHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CreateHandler,&mCreateHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::SizeHandler,&mSizeHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CloseHandler,&mCloseHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::DestroyHandler,&mDestroyHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CommandHandler,&mCommandHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::SetFocusHandler,&mSetFocusHandler);
|
||||
WinHookProc::insertHandler(MDIWindow::KeyDownHandler,&mKeyDownHandler);
|
||||
WinHookProc::insertHandler(WinHookProc::KeyUpHandler,&mKeyUpHandler);
|
||||
WinHookProc::insertHandler(WinHookProc::LeftButtonDownHandler,&mLeftButtonDownHandler);
|
||||
}
|
||||
|
||||
CodeView::~CodeView()
|
||||
{
|
||||
MDIWindow::removeHandler(MDIWindow::CreateHandler,&mCreateHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::SizeHandler,&mSizeHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::CloseHandler,&mCloseHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::DestroyHandler,&mDestroyHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::CommandHandler,&mCommandHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::SetFocusHandler,&mSetFocusHandler);
|
||||
WinHookProc::removeHandler(MDIWindow::KeyDownHandler,&mKeyDownHandler);
|
||||
WinHookProc::removeHandler(WinHookProc::KeyUpHandler,&mKeyUpHandler);
|
||||
WinHookProc::removeHandler(WinHookProc::LeftButtonDownHandler,&mLeftButtonDownHandler);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::keyDownHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
KeyData keyData(someCallbackData);
|
||||
|
||||
if(keyData.isEscapeKey())return (CallbackData::ReturnType)TRUE;
|
||||
notifyCurrentLine();
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::keyUpHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
notifyCurrentLine();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::leftButtonDownHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
notifyCurrentLine();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
Rect controlRect;
|
||||
|
||||
getControlRect(controlRect);
|
||||
mRichEditControl.createControl(*this,controlRect,EditControlID,WS_VSCROLL|WS_HSCROLL);
|
||||
hookWin(mRichEditControl);
|
||||
mRichEditControl.wantReturn(TRUE);
|
||||
// mRichEditControl.setCharFormat("MS Sans Serif",FontMagic); // "Courier New"
|
||||
// mRichEditControl.setCharFormat("Courier",FontMagic); // "Courier New"
|
||||
// mRichEditControl.setCharFormat("Courier New",FontMagic); // "Courier New"
|
||||
// mRichEditControl.setCharFormat("Courier New",8); // "Courier New"
|
||||
Font font("Courier New",12);
|
||||
mRichEditControl.setFont(font);
|
||||
mRichEditControl.setTextColor(RGBColor(0,0,0));
|
||||
mRichEditControl.setBkGndColor(RGBColor(255,255,255));
|
||||
mRichEditControl.setReadOnly(FALSE);
|
||||
mRichEditControl.limitText(0);
|
||||
mRichEditControl.setFocus();
|
||||
mClipboard=::new Clipboard(*this);
|
||||
mClipboard.disposition(PointerDisposition::Delete);
|
||||
setTitle(String());
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::sizeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
Rect controlRect;
|
||||
|
||||
if(SIZE_RESTORED==someCallbackData.wParam())mRichEditControl.show(SW_SHOWNORMAL);
|
||||
getControlRect(controlRect);
|
||||
mRichEditControl.moveWindow(controlRect,TRUE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::closeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::destroyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(!mRichEditControl.isDirty())return FALSE;
|
||||
if(IDOK!=::MessageBox(*this,(LPSTR)"Do you want to save the changes?",(LPSTR)"The file has been changed",MB_YESNO))return FALSE;
|
||||
save();
|
||||
unhookWin();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::commandHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::setFocusHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mRichEditControl.setFocus();
|
||||
notifyCurrentLine();
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
void CodeView::setTitle(const String &strTitle)
|
||||
{
|
||||
String strCaption;
|
||||
String strBase;
|
||||
|
||||
if(strTitle.isNull())mTitle=String(STRING_UNTITLED);
|
||||
else mTitle=strTitle;
|
||||
windowText(strCaption);
|
||||
strBase=strCaption.betweenString(0,'-');
|
||||
strBase.trimRight();
|
||||
strBase+=String(" - [")+mTitle+String("]");
|
||||
setCaption(strBase);
|
||||
}
|
||||
|
||||
BOOL CodeView::save(void)
|
||||
{
|
||||
Block<String> lineStrings;
|
||||
|
||||
mRichEditControl.getLines(lineStrings);
|
||||
mRichEditControl.isDirty(FALSE);
|
||||
return saveCode(lineStrings,getTitle());
|
||||
}
|
||||
|
||||
BOOL CodeView::save(const String &strPathFileName)
|
||||
{
|
||||
Block<String> lineStrings;
|
||||
|
||||
setTitle(strPathFileName);
|
||||
mRichEditControl.getLines(lineStrings);
|
||||
mRichEditControl.isDirty(FALSE);
|
||||
return saveCode(lineStrings,strPathFileName);
|
||||
}
|
||||
|
||||
void CodeView::find(void)
|
||||
{
|
||||
mEditFind.perform(*this,mRichEditControl);
|
||||
}
|
||||
|
||||
void CodeView::cut(void)
|
||||
{
|
||||
if(!mClipboard.isOkay()||!mRichEditControl.isValid())return;
|
||||
String strText;
|
||||
if(mRichEditControl.getSelectedText(strText))mClipboard->setClipboard(strText);
|
||||
mRichEditControl.cutSelection();
|
||||
}
|
||||
|
||||
void CodeView::copy(void)
|
||||
{
|
||||
if(!mClipboard.isOkay()||!mRichEditControl.isValid())return;
|
||||
String strText;
|
||||
if(!mRichEditControl.getSelectedText(strText))return;
|
||||
mClipboard->setClipboard(strText);
|
||||
}
|
||||
|
||||
void CodeView::paste(void)
|
||||
{
|
||||
if(!mClipboard.isOkay())return;
|
||||
mRichEditControl.pasteSpecial(CF_TEXT);
|
||||
}
|
||||
|
||||
BOOL CodeView::saveCode(Block<String> &codeLines,const String &strPathFileName)
|
||||
{
|
||||
FileIO outFile;
|
||||
CursorControl cursorControl;
|
||||
|
||||
if(!codeLines.size())return FALSE;
|
||||
outFile.open(strPathFileName,FileIO::GenericWrite,FileIO::FileShareRead,FileIO::Open(FileIO::CreateAlways));
|
||||
if(!outFile.isOkay())return FALSE;
|
||||
for(int lineIndex=0;lineIndex<codeLines.size();lineIndex++)
|
||||
{
|
||||
String &strLine=codeLines[lineIndex];
|
||||
if(!strLine.isNull()&&(*((char*)strLine)==0x0A||*((char*)strLine)==0x0D))
|
||||
{
|
||||
if(strLine.length()<=2)strLine="\n";
|
||||
else *((char*)strLine)=' ';
|
||||
}
|
||||
if(-1==strLine.strchr('\r'))strLine.insert("\r",strLine.length()-1);
|
||||
outFile.write((char*)strLine,strLine.length());
|
||||
}
|
||||
outFile.close();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CodeView::open(const String &pathFileName)
|
||||
{
|
||||
FileIO inFile;
|
||||
String strLine;
|
||||
String strLines;
|
||||
String crlf("\n");
|
||||
|
||||
strLine.reserve(1024);
|
||||
strLines.reserve(250000);
|
||||
inFile.open(pathFileName);
|
||||
if(!inFile.isOkay())return;
|
||||
while(inFile.readLine(strLine))
|
||||
{
|
||||
strLines+=strLine;
|
||||
strLines+=crlf;
|
||||
}
|
||||
mRichEditControl.setCaption(strLines);
|
||||
mRichEditControl.isDirty(FALSE);
|
||||
setTitle(pathFileName);
|
||||
inFile.close();
|
||||
}
|
||||
|
||||
void CodeView::print(void)
|
||||
{
|
||||
String strPrinter;
|
||||
PrintManager printManager;
|
||||
Block<String> codeLines;
|
||||
Font textFont("Helv",36);
|
||||
|
||||
if(!printManager.choosePrinter((GUIWindow&)*(getFrame()),strPrinter))return;
|
||||
printManager.openPrinter(strPrinter,(GUIWindow&)*(getFrame()),getTitle());
|
||||
printManager.printLines(codeLines,textFont,Point(10,10));
|
||||
printManager.endDoc();
|
||||
}
|
||||
|
||||
void CodeView::notifyCurrentLine(void)
|
||||
{
|
||||
CallbackData lineData(0,mRichEditControl.getCaretPosition());
|
||||
mLineHandler.callback(lineData);
|
||||
}
|
||||
|
||||
void CodeView::getControlRect(Rect &controlRect)
|
||||
{
|
||||
clientRect(controlRect);
|
||||
controlRect.left(BorderWidth);
|
||||
controlRect.top(BorderWidth);
|
||||
controlRect.right((controlRect.right()-BorderWidth)+1);
|
||||
controlRect.bottom((controlRect.bottom()-BorderWidth)+1);
|
||||
}
|
||||
|
||||
// *** virtuals
|
||||
|
||||
void CodeView::preRegister(WNDCLASS &wndClass)
|
||||
{
|
||||
wndClass.hbrBackground =(HBRUSH)COLOR_APPWORKSPACE;
|
||||
}
|
||||
|
||||
void CodeView::preCreate(MDICREATESTRUCT &createStruct)
|
||||
{
|
||||
}
|
||||
87
m68hc11/backup/codeview.hpp
Normal file
@@ -0,0 +1,87 @@
|
||||
#ifndef _M68HC11_CODEVIEW_HPP_
|
||||
#define _M68HC11_CODEVIEW_HPP_
|
||||
#ifndef _COMMON_MDIWIN_HPP_
|
||||
#include <common/mdiwin.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_RICHEDIT_HPP_
|
||||
#include <common/richedit.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_HOOKPROC_HPP_
|
||||
#include <common/hookproc.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_CLIPBOARD_HPP_
|
||||
#include <common/clipbrd.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_EDITFIND_HPP_
|
||||
#include <m68hc11/editfnd.hpp>
|
||||
#endif
|
||||
|
||||
class CodeView : public MDIWindow, private WinHookProc
|
||||
{
|
||||
public:
|
||||
CodeView(void);
|
||||
virtual ~CodeView();
|
||||
BOOL save(void);
|
||||
BOOL save(const String &strPathFileName);
|
||||
void open(const String &pathFileName);
|
||||
void find(void);
|
||||
void cut(void);
|
||||
void copy(void);
|
||||
void paste(void);
|
||||
void print(void);
|
||||
BOOL isDirty(void)const;
|
||||
void setLineHandler(PureCallback *pPureCallback);
|
||||
const String &getTitle(void)const;
|
||||
void setTitle(const String &strTitle);
|
||||
protected:
|
||||
virtual void preRegister(WNDCLASS &wndClass);
|
||||
virtual void preCreate(MDICREATESTRUCT &createStruct);
|
||||
private:
|
||||
enum {FontMagic=175,EditControlID=100,StatusBarID=101,BorderWidth=1}; // 165
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType keyUpHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType leftButtonDownHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType setFocusHandler(CallbackData &someCallbackData);
|
||||
BOOL saveCode(Block<String> &headerLines,const String &strPathFileName);
|
||||
void getControlRect(Rect &controlRect);
|
||||
void notifyCurrentLine(void);
|
||||
|
||||
Callback<CodeView> mCreateHandler;
|
||||
Callback<CodeView> mSizeHandler;
|
||||
Callback<CodeView> mCloseHandler;
|
||||
Callback<CodeView> mDestroyHandler;
|
||||
Callback<CodeView> mCommandHandler;
|
||||
Callback<CodeView> mKeyUpHandler;
|
||||
Callback<CodeView> mLeftButtonDownHandler;
|
||||
Callback<CodeView> mKeyDownHandler;
|
||||
Callback<CodeView> mSetFocusHandler;
|
||||
CallbackPointer mLineHandler;
|
||||
RichEditControl mRichEditControl;
|
||||
SmartPointer<Clipboard> mClipboard;
|
||||
EditFind mEditFind;
|
||||
String mTitle;
|
||||
};
|
||||
|
||||
inline
|
||||
BOOL CodeView::isDirty(void)const
|
||||
{
|
||||
return mRichEditControl.isDirty();
|
||||
}
|
||||
|
||||
inline
|
||||
void CodeView::setLineHandler(PureCallback *pPureCallback)
|
||||
{
|
||||
mLineHandler=CallbackPointer(pPureCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
const String &CodeView::getTitle(void)const
|
||||
{
|
||||
return mTitle;
|
||||
}
|
||||
#endif
|
||||
209
m68hc11/backup/commctrl.cpp
Normal file
@@ -0,0 +1,209 @@
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <m68hc11/fmtlines.hpp>
|
||||
|
||||
void CommControl::portToString(CommControl::Port port,String &strPort)
|
||||
{
|
||||
if(port==CommControl::PortCOM1)strPort=String(STRING_COM1);
|
||||
else if(port==CommControl::PortCOM2)strPort=String(STRING_COM2);
|
||||
else if(port==CommControl::PortCOM3)strPort=String(STRING_COM3);
|
||||
else strPort=String(STRING_COM4);
|
||||
}
|
||||
|
||||
CommControl::Port CommControl::stringToPort(const String &strPort)
|
||||
{
|
||||
if(strPort==String(STRING_COM1))return CommControl::PortCOM1;
|
||||
else if(strPort==String(STRING_COM2))return CommControl::PortCOM2;
|
||||
else if(strPort==String(STRING_COM3))return CommControl::PortCOM3;
|
||||
else return CommControl::PortCOM4;
|
||||
}
|
||||
|
||||
bool CommControl::readFully(GlobalData<BYTE> &dataBytes)
|
||||
{
|
||||
CommStatus commStatus;
|
||||
DWORD bytesRead=0;
|
||||
DWORD byteCount;
|
||||
DWORD bytesToRead;
|
||||
|
||||
if(!isOkay())return false;
|
||||
clearError(commStatus);
|
||||
byteCount=dataBytes.size();
|
||||
if(!byteCount&&!commStatus.bytesInReceiveQueue())return false;
|
||||
if(!byteCount){byteCount=commStatus.bytesInReceiveQueue();dataBytes.size(byteCount);}
|
||||
return readFully(&dataBytes[0],dataBytes.size());
|
||||
}
|
||||
|
||||
bool CommControl::readFully(BYTE *pBuffer,DWORD byteCount)
|
||||
{
|
||||
CommStatus commStatus;
|
||||
DWORD bytesRead=0;
|
||||
DWORD bytesToRead;
|
||||
|
||||
if(!isOkay())return false;
|
||||
clearError(commStatus);
|
||||
if(!byteCount||!pBuffer)return false;
|
||||
while(bytesRead<byteCount)
|
||||
{
|
||||
if(commStatus.bytesInReceiveQueue())
|
||||
{
|
||||
bytesToRead=bytesRead+commStatus.bytesInReceiveQueue()>byteCount?byteCount-bytesRead:commStatus.bytesInReceiveQueue();
|
||||
read(&pBuffer[bytesRead],bytesToRead);
|
||||
bytesRead+=bytesToRead;
|
||||
}
|
||||
if(bytesRead==byteCount)break;
|
||||
::Sleep(25);
|
||||
clearError(commStatus);
|
||||
}
|
||||
showBytes(pBuffer,byteCount);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CommControl::hasData(void)
|
||||
{
|
||||
CommStatus commStatus;
|
||||
clearError(commStatus);
|
||||
return commStatus.bytesInReceiveQueue()?true:false;
|
||||
}
|
||||
|
||||
bool CommControl::clearReceiveQueue(void)
|
||||
{
|
||||
GlobalData<BYTE> rcvBytes;
|
||||
CommStatus commStatus;
|
||||
|
||||
if(!isOkay())return false;
|
||||
::Sleep(1000);
|
||||
clearError(commStatus);
|
||||
if(!commStatus.bytesInReceiveQueue())return true;
|
||||
::OutputDebugString(String(String("Clearing ")+String().fromInt(commStatus.bytesInReceiveQueue())+String(" bytes from receive queue.\n")).str());
|
||||
rcvBytes.size(commStatus.bytesInReceiveQueue());
|
||||
read(&rcvBytes[0],rcvBytes.size());
|
||||
showBytes(rcvBytes);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CommControl::waitEvent(DWORD &eventMask,DWORD timeout)
|
||||
{
|
||||
BOOL result;
|
||||
DWORD lastError;
|
||||
|
||||
eventMask=0;
|
||||
if(!isOkay())return false;
|
||||
mIOEvent.resetEvent();
|
||||
result=::WaitCommEvent((HANDLE)mCommDevice,&eventMask,&mOverlapped.getOverlapped());
|
||||
if(result)return true;
|
||||
lastError=::GetLastError();
|
||||
if(lastError!=ERROR_IO_PENDING)return false;
|
||||
mIOEvent.waitEvent(timeout);
|
||||
if(!mCommDevice.getOverlappedResult(mOverlapped,false))return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
DWORD CommControl::enumerateDevices(Block<Port> &deviceList)
|
||||
{
|
||||
|
||||
deviceList.remove();
|
||||
if(isOkay())return 0;
|
||||
for(Port port=PortCOM1;port<=PortCOM4;((int&)port)++)
|
||||
{
|
||||
if(mCommDevice.open(mStrPorts[port]))
|
||||
{
|
||||
mCommDevice.close();
|
||||
deviceList.insert(&port);
|
||||
}
|
||||
}
|
||||
return deviceList.size();
|
||||
}
|
||||
|
||||
DWORD CommControl::enumerateDevices(Block<String> &deviceList)
|
||||
{
|
||||
deviceList.remove();
|
||||
if(isOkay())return 0;
|
||||
for(Port port=PortCOM1;port<=PortCOM4;((int&)port)++)
|
||||
{
|
||||
if(mCommDevice.open(mStrPorts[port]))
|
||||
{
|
||||
mCommDevice.close();
|
||||
if(PortCOM1==port)deviceList.insert(&String("COM1"));
|
||||
else if(PortCOM2==port)deviceList.insert(&String("COM2"));
|
||||
else if(PortCOM3==port)deviceList.insert(&String("COM3"));
|
||||
else if(PortCOM4==port)deviceList.insert(&String("COM4"));
|
||||
}
|
||||
}
|
||||
return deviceList.size();
|
||||
}
|
||||
|
||||
DWORD CommControl::read(void *pBuffer,int length,DWORD timeout)
|
||||
{
|
||||
BOOL result;
|
||||
DWORD lastError;
|
||||
|
||||
if(!isOkay())return FALSE;
|
||||
mIOEvent.resetEvent();
|
||||
result=mCommDevice.read((BYTE*)pBuffer,length,mOverlapped);
|
||||
if(result)return TRUE;
|
||||
lastError=::GetLastError();
|
||||
if(lastError!=ERROR_IO_PENDING)return FALSE;
|
||||
mIOEvent.waitEvent(TimeOut);
|
||||
if(!mCommDevice.getOverlappedResult(mOverlapped,FALSE))return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool CommControl::isOkay(void)const
|
||||
{
|
||||
return mCommDevice.isOkay();
|
||||
}
|
||||
|
||||
bool CommControl::clearError(CommStatus &commStatus)const
|
||||
{
|
||||
DWORD errorMask(0);
|
||||
bool returnCode(false);
|
||||
|
||||
if(!isOkay())return returnCode;
|
||||
returnCode=::ClearCommError((HANDLE)mCommDevice,&errorMask,&commStatus.getCOMSTAT());
|
||||
showError(errorMask);
|
||||
return returnCode;
|
||||
}
|
||||
|
||||
bool CommControl::clearError(void)const
|
||||
{
|
||||
DWORD errorMask(0);
|
||||
bool returnCode(false);
|
||||
|
||||
if(!isOkay())return false;
|
||||
returnCode=::ClearCommError((HANDLE)mCommDevice,&errorMask,0);
|
||||
showError(errorMask);
|
||||
return returnCode;
|
||||
}
|
||||
|
||||
void CommControl::showError(DWORD errorMask)const
|
||||
{
|
||||
if(errorMask&CE_BREAK)::OutputDebugString("The hardware detected a break condition.\n");
|
||||
if(errorMask&CE_DNS)::OutputDebugString("Windows 95 and Windows 98: A parallel device is not selected.\n");
|
||||
if(errorMask&CE_FRAME)::OutputDebugString("The hardware detected a framing error.\n");
|
||||
if(errorMask&CE_IOE)::OutputDebugString("An I/O error occurred during communications with the device.\n");
|
||||
if(errorMask&CE_MODE)::OutputDebugString("The requested mode is not supported, or the hFile parameter is invalid. If this value is specified, it is the only valid error.\n");
|
||||
if(errorMask&CE_OOP)::OutputDebugString("Windows 95 and Windows 98: A parallel device signaled that it is out of paper.\n");
|
||||
if(errorMask&CE_OVERRUN)::OutputDebugString("A character-buffer overrun has occurred. The next character is lost.\n");
|
||||
if(errorMask&CE_PTO)::OutputDebugString("Windows 95 and Windows 98: A time-out occurred on a parallel device.\n");
|
||||
if(errorMask&CE_RXOVER)::OutputDebugString("An input buffer overflow has occurred. There is either no room in the input buffer, or a character was received after the end-of-file (EOF) character.\n");
|
||||
if(errorMask&CE_RXPARITY)::OutputDebugString("The hardware detected a parity error.\n");
|
||||
if(errorMask&CE_TXFULL)::OutputDebugString("The application tried to transmit a character, but the output buffer was full.\n");
|
||||
}
|
||||
|
||||
void CommControl::showBytes(BYTE *pBuffer,DWORD byteCount)
|
||||
{
|
||||
Block<String> strLines;
|
||||
|
||||
::OutputDebugString("\n");
|
||||
FormatLines::hexasciiLines(strLines,pBuffer,byteCount);
|
||||
for(int index=0;index<strLines.size();index++)
|
||||
{
|
||||
::OutputDebugString(strLines[index].str());
|
||||
::OutputDebugString("\n");
|
||||
}
|
||||
}
|
||||
|
||||
void CommControl::showBytes(GlobalData<BYTE> rcvBytes)
|
||||
{
|
||||
showBytes(&rcvBytes[0],rcvBytes.size());
|
||||
}
|
||||
120
m68hc11/backup/fmtlines.cpp
Normal file
@@ -0,0 +1,120 @@
|
||||
#include <stdio.h>
|
||||
#include <m68hc11/fmtlines.hpp>
|
||||
|
||||
DWORD FormatLines::hexasciiLines(Block<String> &lineStrings,GlobalData<BYTE> &globalData)
|
||||
{
|
||||
return hexasciiLines(lineStrings,&globalData[0],globalData.size());
|
||||
}
|
||||
|
||||
DWORD FormatLines::hexasciiLines(Block<String> &lineStrings,BYTE *pBuffer,DWORD byteCount)
|
||||
{
|
||||
Block<String> asciiLines;
|
||||
Block<String> hexLines;
|
||||
String tmpString;
|
||||
DWORD lineCount;
|
||||
|
||||
formatLines(asciiLines,pBuffer,byteCount,HexCharsPerLine,ASCIILine);
|
||||
formatLines(hexLines,pBuffer,byteCount,HexCharsPerLine,HexLine);
|
||||
lineCount=asciiLines.size();
|
||||
for(DWORD itemIndex=0;itemIndex<lineCount;itemIndex++)
|
||||
{
|
||||
tmpString=hexLines[itemIndex]+asciiLines[itemIndex];
|
||||
lineStrings.insert(&tmpString);
|
||||
}
|
||||
return lineCount;
|
||||
}
|
||||
|
||||
|
||||
DWORD FormatLines::formatLines(Block<String> &lineStrings,BYTE *pBuffer,DWORD byteCount,WORD charsPerLine,LineType lineType)
|
||||
{
|
||||
WORD charCount;
|
||||
String charString;
|
||||
String charLine;
|
||||
BYTE charByte;
|
||||
BYTE prevByte;
|
||||
|
||||
if(!byteCount||!pBuffer)return byteCount;
|
||||
charCount=0;
|
||||
for(DWORD itemIndex=0;itemIndex<byteCount;itemIndex++)
|
||||
{
|
||||
charByte=pBuffer[itemIndex];
|
||||
if(itemIndex&&(!(itemIndex%charsPerLine)))
|
||||
{
|
||||
if(HexLine==lineType)charLine.upper();
|
||||
lineStrings.insert(&charLine);
|
||||
*((char*)charLine)=0;
|
||||
charCount=0;
|
||||
}
|
||||
if(HexLine==lineType)::sprintf(charString,"%02x",charByte);
|
||||
else
|
||||
{
|
||||
if(isprint(charByte))::sprintf(charString,"%c",charByte);
|
||||
else charString=".";
|
||||
}
|
||||
charCount++;
|
||||
charLine+=charString;
|
||||
if(HexLine==lineType)charLine+=" ";
|
||||
}
|
||||
while(charCount<charsPerLine)
|
||||
{
|
||||
if(HexLine==lineType)charLine+="?? ";
|
||||
else charLine+="?";
|
||||
charCount++;
|
||||
}
|
||||
if(charLine.length())
|
||||
{
|
||||
if(HexLine==lineType)charLine.upper();
|
||||
lineStrings.insert(&charLine);
|
||||
}
|
||||
return lineStrings.size();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*DWORD FormatLines::formatLines(Block<String> &lineStrings,GlobalData<BYTE> &globalData,WORD charsPerLine,LineType lineType)
|
||||
{
|
||||
DWORD byteCount(globalData.size());
|
||||
WORD charCount;
|
||||
String charString;
|
||||
String charLine;
|
||||
BYTE charByte;
|
||||
BYTE prevByte;
|
||||
|
||||
if(!byteCount)return byteCount;
|
||||
charCount=0;
|
||||
for(DWORD itemIndex=0;itemIndex<byteCount;itemIndex++)
|
||||
{
|
||||
charByte=globalData[itemIndex];
|
||||
if(itemIndex&&(!(itemIndex%charsPerLine)))
|
||||
{
|
||||
if(HexLine==lineType)charLine.upper();
|
||||
lineStrings.insert(&charLine);
|
||||
*((char*)charLine)=0;
|
||||
charCount=0;
|
||||
}
|
||||
if(HexLine==lineType)::sprintf(charString,"%02x",charByte);
|
||||
else
|
||||
{
|
||||
if(isprint(charByte))::sprintf(charString,"%c",charByte);
|
||||
else charString=".";
|
||||
}
|
||||
charCount++;
|
||||
charLine+=charString;
|
||||
if(HexLine==lineType)charLine+=" ";
|
||||
}
|
||||
while(charCount<charsPerLine)
|
||||
{
|
||||
if(HexLine==lineType)charLine+="?? ";
|
||||
else charLine+="?";
|
||||
charCount++;
|
||||
}
|
||||
if(charLine.length())
|
||||
{
|
||||
if(HexLine==lineType)charLine.upper();
|
||||
lineStrings.insert(&charLine);
|
||||
}
|
||||
return lineStrings.size();
|
||||
}*/
|
||||
60
m68hc11/backup/fmtlines.hpp
Normal file
@@ -0,0 +1,60 @@
|
||||
#ifndef _M68HC11_FORMATLINES_HPP_
|
||||
#define _M68HC11_FORMATLINES_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_STRING_HPP_
|
||||
#include <common/string.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_BLOCK_HPP_
|
||||
#include <common/block.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_GLOBALDATA_HPP_
|
||||
#include <common/gdata.hpp>
|
||||
#endif
|
||||
|
||||
class FormatLines
|
||||
{
|
||||
public:
|
||||
enum{HexCharsPerLine=0x10,ASCIICharsPerLine=0x20};
|
||||
FormatLines(void);
|
||||
~FormatLines();
|
||||
static DWORD hexLines(Block<String> &lineStrings,BYTE *pBuffer,DWORD byteCount,WORD hexCharsPerLine=HexCharsPerLine);
|
||||
static DWORD hexLines(Block<String> &lineStrings,GlobalData<BYTE> &globalData,WORD hexCharsPerLine=HexCharsPerLine);
|
||||
static DWORD asciiLines(Block<String> &lineStrings,BYTE *pBuffer,DWORD byteCount,WORD asciiCharsPerLine=ASCIICharsPerLine);
|
||||
static DWORD asciiLines(Block<String> &lineStrings,GlobalData<BYTE> &globalData,WORD asciiCharsPerLine=ASCIICharsPerLine);
|
||||
static DWORD hexasciiLines(Block<String> &lineStrings,BYTE *pBuffer,DWORD byteCount);
|
||||
static DWORD hexasciiLines(Block<String> &lineStrings,GlobalData<BYTE> &globalData);
|
||||
private:
|
||||
enum LineType{HexLine,ASCIILine};
|
||||
static DWORD formatLines(Block<String> &lineStrings,BYTE *pBuffer,DWORD byteCount,WORD charsPerLine,LineType lineType);
|
||||
};
|
||||
|
||||
inline
|
||||
FormatLines::FormatLines(void)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
FormatLines::~FormatLines()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD FormatLines::hexLines(Block<String> &lineStrings,GlobalData<BYTE> &globalData,WORD hexCharsPerLine)
|
||||
{
|
||||
return formatLines(lineStrings,&globalData[0],globalData.size(),hexCharsPerLine,HexLine);
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD FormatLines::hexLines(Block<String> &lineStrings,BYTE *pBuffer,DWORD byteCount,WORD hexCharsPerLine)
|
||||
{
|
||||
return formatLines(lineStrings,pBuffer,byteCount,hexCharsPerLine,HexLine);
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD FormatLines::asciiLines(Block<String> &lineStrings,BYTE *pBuffer,DWORD byteCount,WORD asciiCharsPerLine)
|
||||
{
|
||||
return formatLines(lineStrings,pBuffer,byteCount,asciiCharsPerLine,ASCIILine);
|
||||
}
|
||||
#endif
|
||||
422
m68hc11/backup/m68hc11.rc
Normal file
@@ -0,0 +1,422 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#define APSTUDIO_HIDDEN_SYMBOLS
|
||||
#include "windows.h"
|
||||
#undef APSTUDIO_HIDDEN_SYMBOLS
|
||||
#include "m68hc11\m68hc11.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
APP ICON DISCARDABLE "MOT.ICO"
|
||||
MOT ICON DISCARDABLE "MOT.ICO"
|
||||
DOC ICON DISCARDABLE "DOC.ICO"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Bitmap
|
||||
//
|
||||
|
||||
BLANK BITMAP MOVEABLE PURE "BLANK.BMP"
|
||||
ONE BITMAP MOVEABLE PURE "ONE.BMP"
|
||||
ZERO BITMAP MOVEABLE PURE "ZERO.BMP"
|
||||
DASH BITMAP MOVEABLE PURE "DASH.BMP"
|
||||
SPLASH BITMAP MOVEABLE PURE "SPLASH.BMP"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MAINMENU MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&New\tCtrl+N", SBCMENU_FILENEW
|
||||
MENUITEM "&Open...\tCtrl+O", SBCMENU_FILEOPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Print\tCtrl+P", SBCMENU_FILEPRINT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", SBCMENU_FILEQUIT
|
||||
END
|
||||
POPUP "&Settings"
|
||||
BEGIN
|
||||
MENUITEM "Se&rial...", SBCMENU_SETTINGSSERIAL
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Contents", SBCMENU_HELPCONTENTS
|
||||
MENUITEM "&Search", SBCMENU_HELPSEARCH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Registration...", SBCMENU_REGISTRATION
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&About ...", SBCMENU_HELPABOUT
|
||||
END
|
||||
END
|
||||
|
||||
CODEMENU MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&New\tCtrl+N", SBCMENU_FILENEW
|
||||
MENUITEM "&Open...\tCtrl+O", SBCMENU_FILEOPEN
|
||||
MENUITEM "&Close", SBCMENU_FILECLOSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Save...\tCtrl+S", SBCMENU_FILESAVE
|
||||
MENUITEM "Save &As...", SBCMENU_FILESAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Print\tCtrl+P", SBCMENU_FILEPRINT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", SBCMENU_FILEQUIT
|
||||
END
|
||||
POPUP "&Edit"
|
||||
BEGIN
|
||||
MENUITEM "Cu&t\tCtrl+X", SBCMENU_EDITCUT
|
||||
MENUITEM "&Copy\tCtrl+C", SBCMENU_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", SBCMENU_EDITPASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Find...\tAlt+F3", SBCMENU_EDITFIND
|
||||
END
|
||||
POPUP "&Settings"
|
||||
BEGIN
|
||||
MENUITEM "Se&rial...", SBCMENU_SETTINGSSERIAL
|
||||
END
|
||||
POPUP "&Code"
|
||||
BEGIN
|
||||
MENUITEM "&Compile\tCtrl+C", SBCMENU_CODECOMPILE
|
||||
MENUITEM "Compile and Load\tCtrl+P", SBCMENU_CODECOMPILEANDLOAD
|
||||
END
|
||||
POPUP "&Window"
|
||||
BEGIN
|
||||
MENUITEM "&Cascade\tShift+F5", IDM_CASCADE
|
||||
MENUITEM "&Tile\tShift+F4", IDM_TILE
|
||||
MENUITEM "&Arrange &icons", IDM_ARRANGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Close &all", IDM_CLOSEALL
|
||||
MENUITEM "Mi&nimize all", IDM_MINIMIZEALL
|
||||
MENUITEM "&Restore all", IDM_RESTOREALL
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Contents", SBCMENU_HELPCONTENTS
|
||||
MENUITEM "&Search", SBCMENU_HELPSEARCH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Registration...", SBCMENU_REGISTRATION
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&About ...", SBCMENU_HELPABOUT
|
||||
END
|
||||
END
|
||||
|
||||
MCUMENU MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "&New\tCtrl+N", SBCMENU_FILENEW, GRAYED
|
||||
MENUITEM "&Open...\tCtrl+O", SBCMENU_FILEOPEN, GRAYED
|
||||
MENUITEM "&Close", SBCMENU_FILECLOSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Save...\tCtrl+S", SBCMENU_FILESAVE, GRAYED
|
||||
MENUITEM "Save &As...", SBCMENU_FILESAVEAS, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Print\tCtrl+P", SBCMENU_FILEPRINT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", SBCMENU_FILEQUIT
|
||||
END
|
||||
POPUP "&Edit"
|
||||
BEGIN
|
||||
MENUITEM "Cu&t\tCtrl+X", SBCMENU_EDITCUT
|
||||
MENUITEM "&Copy\tCtrl+C", SBCMENU_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", SBCMENU_EDITPASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Find...\tAlt+F3", SBCMENU_EDITFIND
|
||||
END
|
||||
POPUP "&Window"
|
||||
BEGIN
|
||||
MENUITEM "&Cascade\tShift+F5", IDM_CASCADE
|
||||
MENUITEM "&Tile\tShift+F4", IDM_TILE
|
||||
MENUITEM "&Arrange &icons", IDM_ARRANGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Close &all", IDM_CLOSEALL
|
||||
MENUITEM "Mi&nimize all", IDM_MINIMIZEALL
|
||||
MENUITEM "&Restore all", IDM_RESTOREALL
|
||||
END
|
||||
POPUP "&Help"
|
||||
BEGIN
|
||||
MENUITEM "&Contents", SBCMENU_HELPCONTENTS
|
||||
MENUITEM "&Search", SBCMENU_HELPSEARCH
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Registration...", SBCMENU_REGISTRATION
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&About ...", SBCMENU_HELPABOUT
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
SERIAL DIALOG DISCARDABLE 6, 15, 207, 111
|
||||
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION |
|
||||
WS_SYSMENU
|
||||
CAPTION "Serial Setup"
|
||||
FONT 6, "MS Sans Serif"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,153,3,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,153,18,50,14
|
||||
PUSHBUTTON "Test",SERIAL_TEST,153,32,50,14
|
||||
COMBOBOX SERIAL_BAUD,30,24,49,50,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
COMBOBOX SERIAL_DATA,30,37,49,50,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
COMBOBOX SERIAL_PARITY,30,63,49,50,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
COMBOBOX SERIAL_PORT,30,11,49,50,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT "Port:",-1,3,14,18,8
|
||||
LTEXT "Baud:",-1,3,27,21,8
|
||||
LTEXT "Data:",-1,3,40,20,8
|
||||
LTEXT "Stop:",-1,4,53,19,8
|
||||
LTEXT "Parity:",-1,3,65,19,8
|
||||
COMBOBOX SERIAL_STOP,30,50,49,50,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "Apply",SERIAL_APPLY,153,46,50,14
|
||||
END
|
||||
|
||||
MCUDLG DIALOG DISCARDABLE 6, 5, 358, 174
|
||||
STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE
|
||||
FONT 6, "MS Sans Serif"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "Start",IDOK,254,5,50,14
|
||||
PUSHBUTTON "Quit",IDCANCEL,304,5,50,14
|
||||
LISTBOX MCUDLG_REGISTERS,15,38,144,129,LBS_SORT |
|
||||
LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | WS_VSCROLL
|
||||
EDITTEXT MCUDLG_A,217,37,38,12
|
||||
EDITTEXT MCUDLG_B,256,37,38,12
|
||||
EDITTEXT MCUDLG_X,217,50,38,12
|
||||
EDITTEXT MCUDLG_Y,256,50,38,12
|
||||
EDITTEXT MCUDLG_SP,217,63,38,12
|
||||
EDITTEXT MCUDLG_PC,256,63,38,12
|
||||
EDITTEXT MCUDLG_CCR,217,76,38,12
|
||||
LISTBOX MCUDLG_MESSAGES,168,107,177,60,LBS_SORT | WS_VSCROLL
|
||||
CTEXT "MCU Registers",-1,44,26,60,8
|
||||
CTEXT "Processor",-1,203,26,49,8
|
||||
LTEXT "Accumulator A",-1,165,40,51,8
|
||||
LTEXT "Accumulator B",-1,297,39,49,8
|
||||
LTEXT "Index Register X",-1,163,52,52,8
|
||||
LTEXT "Index Register Y",-1,296,51,55,8
|
||||
LTEXT "SP",-1,201,65,13,8
|
||||
LTEXT "PC",-1,297,64,10,8
|
||||
LTEXT "CCR",-1,198,78,16,8
|
||||
GROUPBOX "",-1,2,19,349,154
|
||||
LTEXT "Debug Messages",-1,225,95,60,8
|
||||
END
|
||||
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
|
||||
"#include ""windows.h""\r\n"
|
||||
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
|
||||
"#include ""m68hc11\\m68hc11.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_M68KEYNAME "Software\\Diversified\\M68HC11"
|
||||
STRING_HISTORYKEYNAME "Software\\Diversified\\M68HC11\\History"
|
||||
STRING_SETTINGSKEYNAME "Software\\Diversified\\M68HC11\\Settings"
|
||||
STRING_SERIALKEYNAME "Software\\Diversified\\M68HC11\\Serial"
|
||||
STRING_HISTORYKEYSHORTNAME "History"
|
||||
STRING_SETTINGSEMAIL "EMAIL"
|
||||
STRING_SERIALPORT "Port"
|
||||
STRING_SERIALBAUD "Baud"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_SERIALDATA "Data"
|
||||
STRING_SERIALPARITY "Parity"
|
||||
STRING_SERIALSTOP "Stop"
|
||||
STRING_COM1 "COM1"
|
||||
STRING_COM2 "COM2"
|
||||
STRING_COM3 "COM3"
|
||||
STRING_COM4 "COM4"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_CODEVIEWCLASSNAME "CodeView"
|
||||
STRING_MCUVIEWCLASSNAME "MCUView"
|
||||
STRING_UNTITLED "Untitled"
|
||||
STRING_HELPFILENAME "m68hc11.hlp"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_REGISTERADR4 "ADR4"
|
||||
STRING_REGISTERBPROT "BPROT"
|
||||
STRING_REGISTEREPROG "EPROG"
|
||||
STRING_REGISTERRESERVED3 "RESERVED"
|
||||
STRING_REGISTERRESERVED4 "RESERVED"
|
||||
STRING_REGISTEROPTION "OPTION"
|
||||
STRING_REGISTERCOPRST "COPRST"
|
||||
STRING_REGISTERPPROG "PPROG"
|
||||
STRING_REGISTERHPRIO "HPRIO"
|
||||
STRING_REGISTERINIT "INIT"
|
||||
STRING_REGISTERTEST1 "TEST1"
|
||||
STRING_REGISTERCONFIG "CONFIG"
|
||||
STRING_ERRORFILEOPEN "Error opening '"
|
||||
STRING_ERRORPORTOPEN "Error opening communications port."
|
||||
STRING_ERRORPORTSETTINGS "Error initializing port settings."
|
||||
STRING_ERRORTIMEOUT "Timeout waiting for device."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_ERRORREADERROR "Error reading from device."
|
||||
STRING_ERRORTALKBACKFAILURE "Error receiving response from device"
|
||||
STRING_ERRORTALKBACKDATA "Error validating code load"
|
||||
STRING_EVENTSINGLEBYTE "Received single-byte event."
|
||||
STRING_EVENTQUADBYTE "Received quad-byte event."
|
||||
STRING_EVENTVARBYTE "Received variable-byte event."
|
||||
STRING_EVENTREGDATASTART "Receiving register data..."
|
||||
STRING_EVENTREGDATACOMPLETE "Register receive complete."
|
||||
STRING_EVENTCODECOMPLETE "Received code completion event."
|
||||
STRING_EVENTDOUBLEBYTE "Received double-byte event."
|
||||
STRING_EVENTSTRING "Received string event."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_REGISTERPORTA "PORTA"
|
||||
STRING_REGISTERRESERVED1 "RESERVED"
|
||||
STRING_REGISTERPIOC "PIOC"
|
||||
STRING_REGISTERPORTC "PORTC"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_REGISTERPORTB "PORTB"
|
||||
STRING_REGISTERPORTCL "PORTCL"
|
||||
STRING_REGISTERRESERVED2 "RESERVED"
|
||||
STRING_REGISTERDDRC "DDRC"
|
||||
STRING_REGISTERPORTD "PORTD"
|
||||
STRING_REGISTERDDRD "DDRD"
|
||||
STRING_REGISTERPORTE "PORTE"
|
||||
STRING_REGISTERCFORC "CFORC"
|
||||
STRING_REGISTEROC1M "OC1M"
|
||||
STRING_REGISTEROC1D "OC1D"
|
||||
STRING_REGISTERTCNTH1 "TCNT(Hi)"
|
||||
STRING_REGISTERTCNTLO "TCNT(Lo)"
|
||||
STRING_REGISTERTIC1HI "TIC1(Hi)"
|
||||
STRING_REGISTERTIC1LO "TIC1(Lo)"
|
||||
STRING_REGISTERTIC2HI "TIC2(Hi)"
|
||||
STRING_REGISTERTIC2LO "TIC2(Lo)"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_REGISTERTIC3HI "TIC3(Hi)"
|
||||
STRING_REGISTERTIC3LO "TIC3(Lo)"
|
||||
STRING_REGISTERTOC1HI "TOC1(Hi)"
|
||||
STRING_REGISTERTOC1LO "TOC1(Lo)"
|
||||
STRING_REGISTERTOC2HI "TOC2(Hi)"
|
||||
STRING_REGISTERTOC2LO "TOC2(Lo)"
|
||||
STRING_REGISTERTOC3HI "TOC3(Hi)"
|
||||
STRING_REGISTERTOC3LO "TOC3(Lo)"
|
||||
STRING_REGISTERTOC4HI "TOC4(Hi)"
|
||||
STRING_REGISTERTOC4LO "TOC4(Lo)"
|
||||
STRING_REGISTERTI405HI "TI405(Hi)"
|
||||
STRING_REGISTERTI405LO "TI4O5(Lo)"
|
||||
STRING_REGISTERTCTL1 "TCTL1"
|
||||
STRING_REGISTERTCTL2 "TCTL2"
|
||||
STRING_REGISTERTMSK1 "TMSK1"
|
||||
STRING_REGISTERTFLG1 "TFLG1"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
STRING_REGISTERTMSK2 "TMSK2"
|
||||
STRING_REGISTERTFLG2 "TFLG2"
|
||||
STRING_REGISTERPACTL "PACTL"
|
||||
STRING_REGISTERPACNT "PACNT"
|
||||
STRING_REGISTERSPCR "SPCR"
|
||||
STRING_REGISTERSPSR "SPSR"
|
||||
STRING_REGISTERSPDR "SPDR"
|
||||
STRING_REGISTERBAUD "BAUD"
|
||||
STRING_REGISTERSCCR1 "SCCR1"
|
||||
STRING_REGISTERSCCR2 "SCCR2"
|
||||
STRING_REGISTERSCSR "SCSR"
|
||||
STRING_REGISTERSCDR "SCDR"
|
||||
STRING_REGISTERADCTL "ADCTL"
|
||||
STRING_REGISTERADR1 "ADR1"
|
||||
STRING_REGISTERADR2 "ADR2"
|
||||
STRING_REGISTERADR3 "ADR3"
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
16
m68hc11/backup/resource.h
Normal file
@@ -0,0 +1,16 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by m68hc11.rc
|
||||
//
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NO_MFC 1
|
||||
#define _APS_NEXT_RESOURCE_VALUE 101
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1000
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
270
m68hc11/codeview.cpp
Normal file
@@ -0,0 +1,270 @@
|
||||
#include <m68hc11/codeview.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <printman/printman.hpp>
|
||||
#include <fileio/fileio.hpp>
|
||||
#include <common/profile.hpp>
|
||||
#include <common/rgbcolor.hpp>
|
||||
#include <common/crsctrl.hpp>
|
||||
#include <common/keydata.hpp>
|
||||
|
||||
CodeView::CodeView(void)
|
||||
: WinHookProc(WinHookProc::HookBefore)
|
||||
{
|
||||
mCreateHandler.setCallback(this,&CodeView::createHandler);
|
||||
mSizeHandler.setCallback(this,&CodeView::sizeHandler);
|
||||
mCloseHandler.setCallback(this,&CodeView::closeHandler);
|
||||
mDestroyHandler.setCallback(this,&CodeView::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&CodeView::commandHandler);
|
||||
mKeyUpHandler.setCallback(this,&CodeView::keyUpHandler);
|
||||
mKeyDownHandler.setCallback(this,&CodeView::keyDownHandler);
|
||||
mLeftButtonDownHandler.setCallback(this,&CodeView::leftButtonDownHandler);
|
||||
mSetFocusHandler.setCallback(this,&CodeView::setFocusHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CreateHandler,&mCreateHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::SizeHandler,&mSizeHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CloseHandler,&mCloseHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::DestroyHandler,&mDestroyHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::CommandHandler,&mCommandHandler);
|
||||
MDIWindow::insertHandler(MDIWindow::SetFocusHandler,&mSetFocusHandler);
|
||||
WinHookProc::insertHandler(MDIWindow::KeyDownHandler,&mKeyDownHandler);
|
||||
WinHookProc::insertHandler(WinHookProc::KeyUpHandler,&mKeyUpHandler);
|
||||
WinHookProc::insertHandler(WinHookProc::LeftButtonDownHandler,&mLeftButtonDownHandler);
|
||||
}
|
||||
|
||||
CodeView::~CodeView()
|
||||
{
|
||||
MDIWindow::removeHandler(MDIWindow::CreateHandler,&mCreateHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::SizeHandler,&mSizeHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::CloseHandler,&mCloseHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::DestroyHandler,&mDestroyHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::CommandHandler,&mCommandHandler);
|
||||
MDIWindow::removeHandler(MDIWindow::SetFocusHandler,&mSetFocusHandler);
|
||||
WinHookProc::removeHandler(MDIWindow::KeyDownHandler,&mKeyDownHandler);
|
||||
WinHookProc::removeHandler(WinHookProc::KeyUpHandler,&mKeyUpHandler);
|
||||
WinHookProc::removeHandler(WinHookProc::LeftButtonDownHandler,&mLeftButtonDownHandler);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::keyDownHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
KeyData keyData(someCallbackData);
|
||||
|
||||
if(keyData.isEscapeKey())return (CallbackData::ReturnType)TRUE;
|
||||
notifyCurrentLine();
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::keyUpHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
notifyCurrentLine();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::leftButtonDownHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
notifyCurrentLine();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
Rect controlRect;
|
||||
|
||||
getControlRect(controlRect);
|
||||
mRichEditControl.createControl(*this,controlRect,EditControlID,WS_VSCROLL|WS_HSCROLL);
|
||||
hookWin(mRichEditControl);
|
||||
mRichEditControl.wantReturn(TRUE);
|
||||
// mRichEditControl.setCharFormat("MS Sans Serif",FontMagic); // "Courier New"
|
||||
// mRichEditControl.setCharFormat("Courier",FontMagic); // "Courier New"
|
||||
// mRichEditControl.setCharFormat("Courier New",FontMagic); // "Courier New"
|
||||
// mRichEditControl.setCharFormat("Courier New",8); // "Courier New"
|
||||
Font font("Courier New",12);
|
||||
mRichEditControl.setFont(font);
|
||||
mRichEditControl.setTextColor(RGBColor(0,0,0));
|
||||
mRichEditControl.setBkGndColor(RGBColor(255,255,255));
|
||||
mRichEditControl.setReadOnly(FALSE);
|
||||
mRichEditControl.limitText(0);
|
||||
mRichEditControl.setFocus();
|
||||
mClipboard=::new Clipboard(*this);
|
||||
mClipboard.disposition(PointerDisposition::Delete);
|
||||
setTitle(String());
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::sizeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
Rect controlRect;
|
||||
|
||||
if(SIZE_RESTORED==someCallbackData.wParam())mRichEditControl.show(SW_SHOWNORMAL);
|
||||
getControlRect(controlRect);
|
||||
mRichEditControl.moveWindow(controlRect,TRUE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::closeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::destroyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(!mRichEditControl.isDirty())return FALSE;
|
||||
if(IDOK!=::MessageBox(*this,(LPSTR)"Do you want to save the changes?",(LPSTR)"The file has been changed",MB_YESNO))return FALSE;
|
||||
save();
|
||||
unhookWin();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::commandHandler(CallbackData &/*someCallbackData*/)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType CodeView::setFocusHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mRichEditControl.setFocus();
|
||||
notifyCurrentLine();
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
void CodeView::setTitle(const String &strTitle)
|
||||
{
|
||||
String strCaption;
|
||||
String strBase;
|
||||
|
||||
if(strTitle.isNull())mTitle=String(STRING_UNTITLED);
|
||||
else mTitle=strTitle;
|
||||
windowText(strCaption);
|
||||
strBase=strCaption.betweenString(0,'-');
|
||||
strBase.trimRight();
|
||||
strBase+=String(" - [")+mTitle+String("]");
|
||||
setCaption(strBase);
|
||||
}
|
||||
|
||||
BOOL CodeView::save(void)
|
||||
{
|
||||
Block<String> lineStrings;
|
||||
|
||||
mRichEditControl.getLines(lineStrings);
|
||||
mRichEditControl.isDirty(FALSE);
|
||||
return saveCode(lineStrings,getTitle());
|
||||
}
|
||||
|
||||
BOOL CodeView::save(const String &strPathFileName)
|
||||
{
|
||||
Block<String> lineStrings;
|
||||
|
||||
setTitle(strPathFileName);
|
||||
mRichEditControl.getLines(lineStrings);
|
||||
mRichEditControl.isDirty(FALSE);
|
||||
return saveCode(lineStrings,strPathFileName);
|
||||
}
|
||||
|
||||
void CodeView::find(void)
|
||||
{
|
||||
mEditFind.perform(*this,mRichEditControl);
|
||||
}
|
||||
|
||||
void CodeView::cut(void)
|
||||
{
|
||||
if(!mClipboard.isOkay()||!mRichEditControl.isValid())return;
|
||||
String strText;
|
||||
if(mRichEditControl.getSelectedText(strText))mClipboard->setClipboard(strText);
|
||||
mRichEditControl.cutSelection();
|
||||
}
|
||||
|
||||
void CodeView::copy(void)
|
||||
{
|
||||
if(!mClipboard.isOkay()||!mRichEditControl.isValid())return;
|
||||
String strText;
|
||||
if(!mRichEditControl.getSelectedText(strText))return;
|
||||
mClipboard->setClipboard(strText);
|
||||
}
|
||||
|
||||
void CodeView::paste(void)
|
||||
{
|
||||
if(!mClipboard.isOkay())return;
|
||||
mRichEditControl.pasteSpecial(CF_TEXT);
|
||||
}
|
||||
|
||||
BOOL CodeView::saveCode(Block<String> &codeLines,const String &strPathFileName)
|
||||
{
|
||||
FileIO outFile;
|
||||
CursorControl cursorControl;
|
||||
|
||||
if(!codeLines.size())return FALSE;
|
||||
outFile.open(strPathFileName,FileIO::GenericWrite,FileIO::FileShareRead,FileIO::Open(FileIO::CreateAlways));
|
||||
if(!outFile.isOkay())return FALSE;
|
||||
for(int lineIndex=0;lineIndex<codeLines.size();lineIndex++)
|
||||
{
|
||||
String &strLine=codeLines[lineIndex];
|
||||
if(!strLine.isNull()&&(*((char*)strLine)==0x0A||*((char*)strLine)==0x0D))
|
||||
{
|
||||
if(strLine.length()<=2)strLine="\n";
|
||||
else *((char*)strLine)=' ';
|
||||
}
|
||||
if(-1==strLine.strchr('\r'))strLine.insert("\r",strLine.length()-1);
|
||||
outFile.write((char*)strLine,strLine.length());
|
||||
}
|
||||
outFile.close();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CodeView::open(const String &pathFileName)
|
||||
{
|
||||
FileIO inFile;
|
||||
String strLine;
|
||||
String strLines;
|
||||
String crlf("\n");
|
||||
|
||||
strLine.reserve(1024);
|
||||
strLines.reserve(250000);
|
||||
inFile.open(pathFileName);
|
||||
if(!inFile.isOkay())return;
|
||||
while(inFile.readLine(strLine))
|
||||
{
|
||||
strLines+=strLine;
|
||||
strLines+=crlf;
|
||||
}
|
||||
mRichEditControl.setCaption(strLines);
|
||||
mRichEditControl.isDirty(FALSE);
|
||||
setTitle(pathFileName);
|
||||
inFile.close();
|
||||
}
|
||||
|
||||
void CodeView::print(void)
|
||||
{
|
||||
String strPrinter;
|
||||
PrintManager printManager;
|
||||
Block<String> codeLines;
|
||||
Font textFont("Helv",36);
|
||||
|
||||
if(!printManager.choosePrinter((GUIWindow&)*(getFrame()),strPrinter))return;
|
||||
printManager.openPrinter(strPrinter,(GUIWindow&)*(getFrame()),getTitle());
|
||||
printManager.printLines(codeLines,textFont,Point(10,10));
|
||||
printManager.endDoc();
|
||||
}
|
||||
|
||||
void CodeView::notifyCurrentLine(void)
|
||||
{
|
||||
CallbackData lineData(0,mRichEditControl.getCaretPosition());
|
||||
mLineHandler.callback(lineData);
|
||||
}
|
||||
|
||||
void CodeView::getControlRect(Rect &controlRect)
|
||||
{
|
||||
clientRect(controlRect);
|
||||
controlRect.left(BorderWidth);
|
||||
controlRect.top(BorderWidth);
|
||||
controlRect.right((controlRect.right()-BorderWidth)+1);
|
||||
controlRect.bottom((controlRect.bottom()-BorderWidth)+1);
|
||||
}
|
||||
|
||||
// *** virtuals
|
||||
|
||||
void CodeView::preRegister(WNDCLASS &wndClass)
|
||||
{
|
||||
wndClass.hbrBackground =(HBRUSH)COLOR_APPWORKSPACE;
|
||||
}
|
||||
|
||||
void CodeView::preCreate(MDICREATESTRUCT &createStruct)
|
||||
{
|
||||
}
|
||||
87
m68hc11/codeview.hpp
Normal file
@@ -0,0 +1,87 @@
|
||||
#ifndef _M68HC11_CODEVIEW_HPP_
|
||||
#define _M68HC11_CODEVIEW_HPP_
|
||||
#ifndef _COMMON_MDIWIN_HPP_
|
||||
#include <common/mdiwin.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_RICHEDIT_HPP_
|
||||
#include <common/richedit.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_HOOKPROC_HPP_
|
||||
#include <common/hookproc.hpp>
|
||||
#endif
|
||||
#ifndef _COMMON_CLIPBOARD_HPP_
|
||||
#include <common/clipbrd.hpp>
|
||||
#endif
|
||||
#ifndef _M68HC11_EDITFIND_HPP_
|
||||
#include <m68hc11/editfnd.hpp>
|
||||
#endif
|
||||
|
||||
class CodeView : public MDIWindow, private WinHookProc
|
||||
{
|
||||
public:
|
||||
CodeView(void);
|
||||
virtual ~CodeView();
|
||||
BOOL save(void);
|
||||
BOOL save(const String &strPathFileName);
|
||||
void open(const String &pathFileName);
|
||||
void find(void);
|
||||
void cut(void);
|
||||
void copy(void);
|
||||
void paste(void);
|
||||
void print(void);
|
||||
BOOL isDirty(void)const;
|
||||
void setLineHandler(PureCallback *pPureCallback);
|
||||
const String &getTitle(void)const;
|
||||
void setTitle(const String &strTitle);
|
||||
protected:
|
||||
virtual void preRegister(WNDCLASS &wndClass);
|
||||
virtual void preCreate(MDICREATESTRUCT &createStruct);
|
||||
private:
|
||||
enum {FontMagic=175,EditControlID=100,StatusBarID=101,BorderWidth=1}; // 165
|
||||
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType closeHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType commandHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType keyUpHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType leftButtonDownHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData);
|
||||
CallbackData::ReturnType setFocusHandler(CallbackData &someCallbackData);
|
||||
BOOL saveCode(Block<String> &headerLines,const String &strPathFileName);
|
||||
void getControlRect(Rect &controlRect);
|
||||
void notifyCurrentLine(void);
|
||||
|
||||
Callback<CodeView> mCreateHandler;
|
||||
Callback<CodeView> mSizeHandler;
|
||||
Callback<CodeView> mCloseHandler;
|
||||
Callback<CodeView> mDestroyHandler;
|
||||
Callback<CodeView> mCommandHandler;
|
||||
Callback<CodeView> mKeyUpHandler;
|
||||
Callback<CodeView> mLeftButtonDownHandler;
|
||||
Callback<CodeView> mKeyDownHandler;
|
||||
Callback<CodeView> mSetFocusHandler;
|
||||
CallbackPointer mLineHandler;
|
||||
RichEditControl mRichEditControl;
|
||||
SmartPointer<Clipboard> mClipboard;
|
||||
EditFind mEditFind;
|
||||
String mTitle;
|
||||
};
|
||||
|
||||
inline
|
||||
BOOL CodeView::isDirty(void)const
|
||||
{
|
||||
return mRichEditControl.isDirty();
|
||||
}
|
||||
|
||||
inline
|
||||
void CodeView::setLineHandler(PureCallback *pPureCallback)
|
||||
{
|
||||
mLineHandler=CallbackPointer(pPureCallback);
|
||||
}
|
||||
|
||||
inline
|
||||
const String &CodeView::getTitle(void)const
|
||||
{
|
||||
return mTitle;
|
||||
}
|
||||
#endif
|
||||
209
m68hc11/commctrl.cpp
Normal file
@@ -0,0 +1,209 @@
|
||||
#include <m68hc11/commctrl.hpp>
|
||||
#include <m68hc11/m68hc11.hpp>
|
||||
#include <m68hc11/fmtlines.hpp>
|
||||
|
||||
void CommControl::portToString(CommControl::Port port,String &strPort)
|
||||
{
|
||||
if(port==CommControl::PortCOM1)strPort=String(STRING_COM1);
|
||||
else if(port==CommControl::PortCOM2)strPort=String(STRING_COM2);
|
||||
else if(port==CommControl::PortCOM3)strPort=String(STRING_COM3);
|
||||
else strPort=String(STRING_COM4);
|
||||
}
|
||||
|
||||
CommControl::Port CommControl::stringToPort(const String &strPort)
|
||||
{
|
||||
if(strPort==String(STRING_COM1))return CommControl::PortCOM1;
|
||||
else if(strPort==String(STRING_COM2))return CommControl::PortCOM2;
|
||||
else if(strPort==String(STRING_COM3))return CommControl::PortCOM3;
|
||||
else return CommControl::PortCOM4;
|
||||
}
|
||||
|
||||
bool CommControl::readFully(GlobalData<BYTE> &dataBytes)
|
||||
{
|
||||
CommStatus commStatus;
|
||||
DWORD bytesRead=0;
|
||||
DWORD byteCount;
|
||||
DWORD bytesToRead;
|
||||
|
||||
if(!isOkay())return false;
|
||||
clearError(commStatus);
|
||||
byteCount=dataBytes.size();
|
||||
if(!byteCount&&!commStatus.bytesInReceiveQueue())return false;
|
||||
if(!byteCount){byteCount=commStatus.bytesInReceiveQueue();dataBytes.size(byteCount);}
|
||||
return readFully(&dataBytes[0],dataBytes.size());
|
||||
}
|
||||
|
||||
bool CommControl::readFully(BYTE *pBuffer,DWORD byteCount)
|
||||
{
|
||||
CommStatus commStatus;
|
||||
DWORD bytesRead=0;
|
||||
DWORD bytesToRead;
|
||||
|
||||
if(!isOkay())return false;
|
||||
clearError(commStatus);
|
||||
if(!byteCount||!pBuffer)return false;
|
||||
while(bytesRead<byteCount)
|
||||
{
|
||||
if(commStatus.bytesInReceiveQueue())
|
||||
{
|
||||
bytesToRead=bytesRead+commStatus.bytesInReceiveQueue()>byteCount?byteCount-bytesRead:commStatus.bytesInReceiveQueue();
|
||||
read(&pBuffer[bytesRead],bytesToRead);
|
||||
bytesRead+=bytesToRead;
|
||||
}
|
||||
if(bytesRead==byteCount)break;
|
||||
::Sleep(25);
|
||||
clearError(commStatus);
|
||||
}
|
||||
showBytes(pBuffer,byteCount);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CommControl::hasData(void)
|
||||
{
|
||||
CommStatus commStatus;
|
||||
clearError(commStatus);
|
||||
return commStatus.bytesInReceiveQueue()?true:false;
|
||||
}
|
||||
|
||||
bool CommControl::clearReceiveQueue(void)
|
||||
{
|
||||
GlobalData<BYTE> rcvBytes;
|
||||
CommStatus commStatus;
|
||||
|
||||
if(!isOkay())return false;
|
||||
::Sleep(1000);
|
||||
clearError(commStatus);
|
||||
if(!commStatus.bytesInReceiveQueue())return true;
|
||||
::OutputDebugString(String(String("Clearing ")+String().fromInt(commStatus.bytesInReceiveQueue())+String(" bytes from receive queue.\n")).str());
|
||||
rcvBytes.size(commStatus.bytesInReceiveQueue());
|
||||
read(&rcvBytes[0],rcvBytes.size());
|
||||
showBytes(rcvBytes);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CommControl::waitEvent(DWORD &eventMask,DWORD timeout)
|
||||
{
|
||||
BOOL result;
|
||||
DWORD lastError;
|
||||
|
||||
eventMask=0;
|
||||
if(!isOkay())return false;
|
||||
mIOEvent.resetEvent();
|
||||
result=::WaitCommEvent((HANDLE)mCommDevice,&eventMask,&mOverlapped.getOverlapped());
|
||||
if(result)return true;
|
||||
lastError=::GetLastError();
|
||||
if(lastError!=ERROR_IO_PENDING)return false;
|
||||
mIOEvent.waitEvent(timeout);
|
||||
if(!mCommDevice.getOverlappedResult(mOverlapped,false))return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
DWORD CommControl::enumerateDevices(Block<Port> &deviceList)
|
||||
{
|
||||
|
||||
deviceList.remove();
|
||||
if(isOkay())return 0;
|
||||
for(Port port=PortCOM1;port<=PortCOM4;((int&)port)++)
|
||||
{
|
||||
if(mCommDevice.open(mStrPorts[port]))
|
||||
{
|
||||
mCommDevice.close();
|
||||
deviceList.insert(&port);
|
||||
}
|
||||
}
|
||||
return deviceList.size();
|
||||
}
|
||||
|
||||
DWORD CommControl::enumerateDevices(Block<String> &deviceList)
|
||||
{
|
||||
deviceList.remove();
|
||||
if(isOkay())return 0;
|
||||
for(Port port=PortCOM1;port<=PortCOM4;((int&)port)++)
|
||||
{
|
||||
if(mCommDevice.open(mStrPorts[port]))
|
||||
{
|
||||
mCommDevice.close();
|
||||
if(PortCOM1==port)deviceList.insert(&String("COM1"));
|
||||
else if(PortCOM2==port)deviceList.insert(&String("COM2"));
|
||||
else if(PortCOM3==port)deviceList.insert(&String("COM3"));
|
||||
else if(PortCOM4==port)deviceList.insert(&String("COM4"));
|
||||
}
|
||||
}
|
||||
return deviceList.size();
|
||||
}
|
||||
|
||||
DWORD CommControl::read(void *pBuffer,int length,DWORD timeout)
|
||||
{
|
||||
BOOL result;
|
||||
DWORD lastError;
|
||||
|
||||
if(!isOkay())return FALSE;
|
||||
mIOEvent.resetEvent();
|
||||
result=mCommDevice.read((BYTE*)pBuffer,length,mOverlapped);
|
||||
if(result)return TRUE;
|
||||
lastError=::GetLastError();
|
||||
if(lastError!=ERROR_IO_PENDING)return FALSE;
|
||||
mIOEvent.waitEvent(TimeOut);
|
||||
if(!mCommDevice.getOverlappedResult(mOverlapped,FALSE))return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool CommControl::isOkay(void)const
|
||||
{
|
||||
return mCommDevice.isOkay();
|
||||
}
|
||||
|
||||
bool CommControl::clearError(CommStatus &commStatus)const
|
||||
{
|
||||
DWORD errorMask(0);
|
||||
bool returnCode(false);
|
||||
|
||||
if(!isOkay())return returnCode;
|
||||
returnCode=::ClearCommError((HANDLE)mCommDevice,&errorMask,&commStatus.getCOMSTAT());
|
||||
showError(errorMask);
|
||||
return returnCode;
|
||||
}
|
||||
|
||||
bool CommControl::clearError(void)const
|
||||
{
|
||||
DWORD errorMask(0);
|
||||
bool returnCode(false);
|
||||
|
||||
if(!isOkay())return false;
|
||||
returnCode=::ClearCommError((HANDLE)mCommDevice,&errorMask,0);
|
||||
showError(errorMask);
|
||||
return returnCode;
|
||||
}
|
||||
|
||||
void CommControl::showError(DWORD errorMask)const
|
||||
{
|
||||
if(errorMask&CE_BREAK)::OutputDebugString("The hardware detected a break condition.\n");
|
||||
if(errorMask&CE_DNS)::OutputDebugString("Windows 95 and Windows 98: A parallel device is not selected.\n");
|
||||
if(errorMask&CE_FRAME)::OutputDebugString("The hardware detected a framing error.\n");
|
||||
if(errorMask&CE_IOE)::OutputDebugString("An I/O error occurred during communications with the device.\n");
|
||||
if(errorMask&CE_MODE)::OutputDebugString("The requested mode is not supported, or the hFile parameter is invalid. If this value is specified, it is the only valid error.\n");
|
||||
if(errorMask&CE_OOP)::OutputDebugString("Windows 95 and Windows 98: A parallel device signaled that it is out of paper.\n");
|
||||
if(errorMask&CE_OVERRUN)::OutputDebugString("A character-buffer overrun has occurred. The next character is lost.\n");
|
||||
if(errorMask&CE_PTO)::OutputDebugString("Windows 95 and Windows 98: A time-out occurred on a parallel device.\n");
|
||||
if(errorMask&CE_RXOVER)::OutputDebugString("An input buffer overflow has occurred. There is either no room in the input buffer, or a character was received after the end-of-file (EOF) character.\n");
|
||||
if(errorMask&CE_RXPARITY)::OutputDebugString("The hardware detected a parity error.\n");
|
||||
if(errorMask&CE_TXFULL)::OutputDebugString("The application tried to transmit a character, but the output buffer was full.\n");
|
||||
}
|
||||
|
||||
void CommControl::showBytes(BYTE *pBuffer,DWORD byteCount)
|
||||
{
|
||||
Block<String> strLines;
|
||||
|
||||
::OutputDebugString("\n");
|
||||
FormatLines::hexasciiLines(strLines,pBuffer,byteCount);
|
||||
for(int index=0;index<strLines.size();index++)
|
||||
{
|
||||
::OutputDebugString(strLines[index].str());
|
||||
::OutputDebugString("\n");
|
||||
}
|
||||
}
|
||||
|
||||
void CommControl::showBytes(GlobalData<BYTE> rcvBytes)
|
||||
{
|
||||
showBytes(&rcvBytes[0],rcvBytes.size());
|
||||
}
|
||||
33
m68hc11/echo.asm
Normal file
@@ -0,0 +1,33 @@
|
||||
; File - Echo.asm - echo the character received back to the host. Increment
|
||||
; it by one to prove it is not a local terminal echo.
|
||||
;$$$$$$$$$$$$$ - file set up for e2 series 68hc11 with eeprom at $f800
|
||||
;
|
||||
; Constants
|
||||
TDRE equ 0080h
|
||||
RDRF equ 0020h
|
||||
BAUD equ 002bh
|
||||
SCCR1 equ 002ch
|
||||
SCCR2 equ 002dh
|
||||
SCSR equ 002eh
|
||||
SCDR equ 002fh
|
||||
lds 00FFh ; 8E,00,0F
|
||||
ldx 1000h ; CE,10,00
|
||||
clr ix,SCCR1 ; 6F,2C
|
||||
ldd 330Ch ; CC,33,0C
|
||||
staa ix,BAUD ; A7,2B
|
||||
stab ix,SCCR2 ; E7,2D
|
||||
|
||||
|
||||
dssdfsd
|
||||
loop:
|
||||
brclr ix,SCSR,20h,loop ; 1F,2E,20,FC wait for RDRF
|
||||
ldaa ix,SCDR ; A6,2F read next character
|
||||
inca ; 4C increment the character
|
||||
loop2:
|
||||
brclr ix,SCSR,80h,loop2 ; 1F,2E,80,FC
|
||||
staa ix,SCDR ; A7,2F echo back to host
|
||||
jmp loop ; 7E,00,0F continue
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
m68hc11/echo.bin
Normal file
17
m68hc11/echo.s19
Normal file
@@ -0,0 +1,17 @@
|
||||
S12300008E00FFCE10006F2CCC330CA72BE72D1F2E20FCA62F4C1F2E80FCA72F7E000F012E
|
||||
S123002001010101010101010101010101010101010101010101010101010101010101019C
|
||||
S123004001010101010101010101010101010101010101010101010101010101010101017C
|
||||
S123006001010101010101010101010101010101010101010101010101010101010101015C
|
||||
S123008001010101010101010101010101010101010101010101010101010101010101013C
|
||||
S12300A001010101010101010101010101010101010101010101010101010101010101011C
|
||||
S12300C00101010101010101010101010101010101010101010101010101010101010101FC
|
||||
S12300E00101010101010101010101010101010101010101010101010101010101010101DC
|
||||
S12301000101010101010101010101010101010101010101010101010101010101010101BC
|
||||
S123012001010101010101010101010101010101010101010101010101010101010101019C
|
||||
S123014001010101010101010101010101010101010101010101010101010101010101017C
|
||||
S123016001010101010101010101010101010101010101010101010101010101010101015C
|
||||
S123018001010101010101010101010101010101010101010101010101010101010101013C
|
||||
S12301A001010101010101010101010101010101010101010101010101010101010101011C
|
||||
S12301C00101010101010101010101010101010101010101010101010101010101010101FC
|
||||
S12301E00101010101010101010101010101010101010101010101010101010101010101DC
|
||||
S9030000FC
|
||||