Merge branch 'feature/fpc-3.2.2' into feature/lvgl

# Conflicts:
#	.drone.yml
#	virtualbox-wrapper.ps1
This commit is contained in:
t3hn3rd committed 2026-02-26 15:51:37 +00:00
commit ceb03a9d7e
12 files changed
+1536 -256

No files matched your search

+4 -1
View File
@@ -58,16 +58,19 @@ begin
end;
function sinb(port : uint16) : uint8;
var
tmp : uint8;
begin
asm
PUSH EAX
PUSH EDX
MOV DX, port
IN AL, DX
MOV sinb, AL
MOV tmp, AL
POP EDX
POP EAX
end;
sinb := tmp;
io_wait;
end;
+14 -6
View File
@@ -491,22 +491,26 @@ begin
{ Create a new header to the use in our DHCP REQUEST packet }
SendHeader:= createHeader();
CopyIPv4(puint8(@Header^.Your_IP[0]), puint8(@SendHeader^.Client_IP[0]));
CopyIPv4(@getIPv4Config^.Address[0], puint8(@SendHeader^.Client_IP[0]));
CopyIPv4(puint8(@Header^.Server_IP[0]), puint8(@SendHeader^.Server_IP[0]));
processHeader(SendHeader);
{ Setup Options }
SendOptions:= newOptions();
{ Create a message type option and assign it the value REQUEST }
SendMsgType:= ord(TDHCPMessageType.REQUEST);
NewOption(SendOptions, TDHCPOpCode.DHCP_MESSAGE_TYPE, void(@SendMsgType), 1, false);
{ Create a Requested IP option and assign it the value from the OFFER packet header }
NewOption(SendOptions, TDHCPOpCode.REQUESTED_IP_ADDRESS, void(@SendHeader^.Client_IP[0]), 4, false);
NewOption(SendOptions, TDHCPOpCode.REQUESTED_IP_ADDRESS, void(@Header^.Your_IP[0]), 4, false);
{ Create a Server Identifier Option and assign it the value from the OFFER packet options }
Option:= getOptionByOpcode(Options, TDHCPOpCode.SERVER_IDENTIFIER);
if Option <> nil then begin
NewOption(SendOptions, TDHCPOpCode.SERVER_IDENTIFIER, void(@Option^.Value[0]), 4, false);
end;
{ Create a Parameter Request List, Request the following: Netmask, Gateway, DNS Name & DNS Server }
RequestParams[0]:= Ord(TDHCPOpCode.SUBNET_MASK);
RequestParams[1]:= Ord(TDHCPOpCode.ROUTER);
@@ -522,9 +526,13 @@ begin
MAC:= getMAC();
packetCtx:= PPacketContext(Kalloc(sizeof(TPacketContext)));
packetCtx^.TTL:= 128;
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
{ Copy over MAC - src: broadcast - dst: DHCP Server }
copyMAC(MAC, @packetCtx^.MAC.Source[0]);
copyIPv4(@NULL_IP[0], @packetCtx^.IP.Source[0]);
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
{ Copy over IP - src: NULL - dst: Broadcast }
CopyIPv4(@getIPv4Config^.Address[0], @packetCtx^.IP.Source[0]);
copyIPv4(@BROADCAST_IP[0], @packetCtx^.IP.Destination[0]);
{ Setup UDPContext (UDP) & copy in the correct details }
@@ -570,7 +578,7 @@ begin
{ Check the frame is for us and then process }
MAC:= getMAC;
if MACEqual(@context^.PacketContext^.MAC.Destination[0], MAC) then begin
if MACEqual(@context^.PacketContext^.MAC.Destination[0], MAC) or MACEqual(@context^.PacketContext^.MAC.Destination[0], BROADCAST_MAC) then begin
Outputln('DHCP','Frame is addressed to us.');
{ Check the message type is client specific }
If Header^.Message_Type = $02 then begin
@@ -655,7 +663,7 @@ begin
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
MAC:= getMAC;
copyMAC(MAC, @packetCtx^.MAC.Source[0]);
copyIPv4(@NULL_IP[0], @packetCtx^.IP.Source[0]);
CopyIPv4(@getIPv4Config^.Address[0], @packetCtx^.IP.Source[0]);
copyIPv4(@BROADCAST_IP[0], @packetCtx^.IP.Destination[0]);
{ Setup UDPContext (UDP) }
+1110 -238
View File
File diff suppressed because it is too large. Load diff
+348 -1
View File
File diff suppressed because it is too large. Load diff
+16 -4
View File
@@ -150,10 +150,13 @@ begin
end;
function getESP : uint32;
var
tmp: uint32;
begin
asm
MOV getESP, ESP
MOV tmp, ESP
end;
getESP := tmp;
end;
function HexCharToDecimal(hex : char) : uint8;
@@ -382,6 +385,8 @@ begin
end;
function inl(port : uint16) : uint32; [public, alias: 'util_inl'];
var
tmp : uint32;
begin
//serial.sendString('[inl]');
//serial.sendHex(port);
@@ -390,14 +395,17 @@ begin
PUSH EDX
MOV DX, port
IN EAX, DX
MOV inl, EAX
MOV tmp, EAX
POP EDX
POP EAX
end;
inl := tmp;
io_wait;
end;
function inw(port : uint16) : uint16; [public, alias: 'util_inw'];
var
tmp : uint16;
begin
//serial.sendString('[inw]');
//serial.sendHex(port);
@@ -406,14 +414,17 @@ begin
PUSH EDX
MOV DX, port
IN AX, DX
MOV inw, AX
MOV tmp, AX
POP EDX
POP EAX
end;
inw := tmp;
io_wait;
end;
function inb(port : uint16) : uint8; [public, alias: 'util_inb'];
var
tmp : uint8;
begin
//serial.sendString('[inb]');
//serial.sendHex(port);
@@ -422,10 +433,11 @@ begin
PUSH EDX
MOV DX, port
IN AL, DX
MOV inb, AL
MOV tmp, AL
POP EDX
POP EAX
end;
inb := tmp;
io_wait;
end;
+2 -2
View File
@@ -170,7 +170,7 @@ begin
klalloc:= Address;
end;
function kalloc(size : uint32) : void;
function kalloc(size : uint32) : void; [public, alias: 'kernel_kalloc'];
var
Heap_Entries : uint32;
i, j : uint32;
@@ -217,7 +217,7 @@ begin
//pop_trace;
end;
procedure kfree(area : void);
procedure kfree(area : void); [public, alias: 'kernel_kfree'];
var
hp : PHeapPage;
entry : uint32;