The ISR still fills the ring buffer (mandatory for 115200 baud), but the app now polls ReadComm directly via a PeekMessage loop instead of waiting for WM_COMMNOTIFY. Blink uses GetTickCount instead of WM_TIMER. This eliminates all Windows message overhead from the data path while keeping the message loop alive for keyboard, paint, and scrollbar. Removed from KPCOMM.PAS: NotifyWndProc, hidden notification window, RegisterClass/CreateWindow, EnableCommNotification, SetCommEventMask, DoCommEvent, Process*Notify methods, OnComm/CommEvent/RThreshold/ SThreshold properties, modem shadow state (CTS/DSR/CD). Removed from KPANSI.PAS: WM_TIMER handler, SetTimer/KillTimer, replaced with public TickBlink method using GetTickCount at 500ms intervals. Removed from drv/isr.c: checkNotify function and its call from isrDispatch. Removed from drv/commdrv.c: pfnPostMessage, all rxNotifySent/txNotifySent edge-trigger bookkeeping, gutted enableNotification to a no-op API-compat stub. Removed from drv/commdrv.h: rxNotifySent/txNotifySent fields (shifts struct layout), PostMessageProcT typedef, pfnPostMessage extern. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
12 lines
188 B
ObjectPascal
12 lines
188 B
ObjectPascal
program KPTest;
|
|
|
|
uses
|
|
Forms,
|
|
TestMain in 'TESTMAIN.PAS',
|
|
KPComm in 'KPCOMM.PAS',
|
|
KPAnsi in 'KPANSI.PAS';
|
|
|
|
begin
|
|
Application.CreateForm(TMainForm, MainForm);
|
|
MainForm.Run;
|
|
end.
|