📄 dbg0.pas
字号:
library Dbg0;
uses WinTypes, WinProcs, Strings;
const
Nazwa:string[27]='DBG:PC i stan port體 P0-P3'#0;
var
MojeOkno:HWnd;
Otwarty:boolean;
selROM,selRAM,selRAMInt:word;
adresPC:^word;
function BtoHEX(co:byte):string;
const Hx:array[0..15] of char='0123456789ABCDEF';
begin
BtoHEX:=Hx[co shr 4]+Hx[co and 15];
end;
function WtoHEX(co:word):string;
begin
WtoHEX:=BtoHEX(Hi(co))+BtoHEX(Lo(co));
end;
procedure Odrysuj(Okno:HWnd);
const
Maska:array[0..7] of byte=(1,2,4,8,16,32,64,128);
Tabul:array[0..2] of word=(32,64,96);
var
DC:HDC;
nr,p,c:byte;
li:string[3];
s:string[22];
n:array[0..22] of char;
begin
DC:=GetDC(Okno);
SetBkColor(DC,RGB($C0,$C0,$C0));
SelectObject(DC,GetStockObject(SYSTEM_FONT));
s:='PC:'#9+WtoHEX(adresPC^)+' ';
StrPCopy(n,s);
TabbedTextOut(DC,2,0,n,9,3,Tabul,0);
for nr:=1 to 4 do
begin
p:=Mem[selRAMInt:$70+nr*$10];
Str(p,li);
s:='P'+char(47+nr)+':'#9+BtoHEX(p)+'H'#9+li+#9;
for c:=7 downto 0 do
if (p and Maska[c])=0 then s:=s+'0' else s:=s+'1';
StrPCopy(n,s);
TabbedTextOut(DC,2,16*nr,n,Length(s),3,Tabul,0);
end;
ReleaseDC(Okno,DC);
end;
function FunOkna(Okno:HWnd;Kod_meldunku,wParam:word;LParam:longint):longint; EXPORT;
begin
case Kod_meldunku of
wm_Paint: begin
DefWindowProc(Okno,Kod_meldunku,wParam,LParam);
Odrysuj(Okno);
end;
else FunOkna:=DefWindowProc(Okno,Kod_meldunku,WParam,LParam);
end;
end;
const
NaszaKlasa: TWndClass =(
style : 0;
lpfnWndProc : @FunOkna;
cbClsExtra : 0;
cbWndExtra : 0;
hInstance : 0;
hIcon : 0;
hCursor : 0;
hbrBackground : 0;
lpszMenuName : nil;
lpszClassName : 'StanP0P3');
function Name:PChar; export;
begin
Name:=@Nazwa[1];
end;
procedure Stop(i:THandle); export;
begin
if not Otwarty then Exit;
DestroyWindow(MojeOkno);
UnregisterClass('StanP0P3',i);
Otwarty:=false;
end;
function Change(i:THandle;o:HWnd;s1,s2,s3:word;apc:pointer):boolean; export;
begin
if Otwarty then Stop(i) else
begin
selROM:=s1; selRAM:=s2; selRAMInt:=s3; adresPC:=apc;
NaszaKlasa.hInstance:=i;
NaszaKlasa.hBrBackground:=GetStockObject(LTGRAY_BRUSH);
NaszaKlasa.hCursor:=LoadCursor(0, idc_Arrow);
RegisterClass(NaszaKlasa);
MojeOkno:=CreateWindow('StanP0P3','PC i stan port體 P0-P3',ws_Overlapped or ws_Visible,
cw_UseDefault,cw_UseDefault,180,100,o,0,i,nil);
Otwarty:=true;
end;
Change:=Otwarty;
end;
procedure Update; export;
begin
if Otwarty then
begin
InvalidateRect(MojeOkno,nil,false);
Odrysuj(MojeOkno);
end;
end;
exports Name, Stop, Change, Update;
begin
Otwarty:=false;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -