diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3f539841..f07d2553 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,12 +40,19 @@ jobs: sudo udevadm trigger --name-match=kvm - name: Run ISOs Build Script + timeout-minutes: 10 if: ${{ success() }} run: | cd build ./build-iso.sh --headless cd .. + - name: ISO Check + if: ${{ success() && hashFiles('./build/*.iso') == '' }} + run: | + echo "ISOs not built!" + exit 1 + - name: Releasing Latest ISOs if: ${{ success() && github.event_name == 'push'}} uses: "GutPuncher/action-automatic-releases@latest" diff --git a/src/Home/Net/Drivers/PCNet.ZC b/src/Home/Net/Drivers/PCNet.ZC index bf84da61..637956de 100755 --- a/src/Home/Net/Drivers/PCNet.ZC +++ b/src/Home/Net/Drivers/PCNet.ZC @@ -635,7 +635,13 @@ I64 PCNetPacketReceive(U8 **packet_buffer_out, U16 *packet_length_out) NetDebug("PCNET RECEIVE PACKET: de_index incremented = 0x%0X", pcnet.current_rx_de_index); *packet_buffer_out = pcnet.rx_buffer_addr_phys + de_index * ETHERNET_FRAME_SIZE; - *packet_length_out = packet_length; + + // ASTRPRCV causes 802.3 packets to be stripped and FCS to be checked + U16 ethertype = (*packet_buffer_out)[ETHERNET_ETHERTYPE_OFFSET + 1] | (*packet_buffer_out)[ETHERNET_ETHERTYPE_OFFSET] << 8; + if (ethertype < ETHERNET_v2_MTU) + *packet_length_out = ethertype; + else + *packet_length_out = packet_length - FCS_LENGTH; // ethertype ii TODO: Validate FCS return de_index; } diff --git a/src/Home/Net/Protocols/Ethernet.ZC b/src/Home/Net/Protocols/Ethernet.ZC index 611b3b34..cdd54b33 100755 --- a/src/Home/Net/Protocols/Ethernet.ZC +++ b/src/Home/Net/Protocols/Ethernet.ZC @@ -29,6 +29,8 @@ U0 EthernetGlobalsInit() U0 EthernetFrameParse(CEthernetFrame *frame_out, U8 *frame, U16 length) { + // length is assumed to NOT include the FCS. + // Shrine says MemCopy has a high overhead. // Almost tempted to say that means that a lot // of the current system should be done with @@ -45,10 +47,7 @@ U0 EthernetFrameParse(CEthernetFrame *frame_out, U8 *frame, U16 length) frame_out->data = frame + ETHERNET_DATA_OFFSET; - if (frame_out->ethertype <= ETHERNET_v2_MTU) // check if the field is a length or an ethertype - frame_out->length = frame_out->ethertype; - else - frame_out->length = length - ETHERNET_MAC_HEADER_LENGTH - FCS_LENGTH; + frame_out->length = length - ETHERNET_MAC_HEADER_LENGTH; } U0 EthernetFrameFinish(I64 de_index) diff --git a/src/HomeKeyPlugIns.ZC b/src/HomeKeyPlugIns.ZC index c77f587c..0563468d 100755 --- a/src/HomeKeyPlugIns.ZC +++ b/src/HomeKeyPlugIns.ZC @@ -110,6 +110,16 @@ Bool MyPutKey(I64 ch, I64 sc) } return TRUE; + case SC_F12: + if (!(sc & SCF_SHIFT)) + { + if (sc & SCF_KEY_DESC) + KeyDescSet("Cmd /SysLogToggle"); + else + SysLogToggle; + } + return TRUE; + case SC_DELETE: if (sc & SCF_SHIFT) { diff --git a/src/Kernel/Job.ZC b/src/Kernel/Job.ZC index 983a40da..a27489ed 100755 --- a/src/Kernel/Job.ZC +++ b/src/Kernel/Job.ZC @@ -504,6 +504,14 @@ I64 Sys(U8 *format, ...) return res; } +U0 SysLogToggle() +{ + if (Bt(&sys_task->display_flags, DISPLAYf_SHOW)) + LBtr(&sys_task->display_flags, DISPLAYf_SHOW); + else + LBts(&sys_task->display_flags, DISPLAYf_SHOW); +} + U0 SysLog(U8 *format, ...) {//Display text in sys_task. U8 *buf = StrPrintJoin(NULL, format, argc, argv); diff --git a/src/Kernel/KGlobals.ZC b/src/Kernel/KGlobals.ZC index c794b0eb..31b9bdac 100755 --- a/src/Kernel/KGlobals.ZC +++ b/src/Kernel/KGlobals.ZC @@ -14,7 +14,7 @@ U8 *rev_bits_table; //Table with U8 bits reversed CDate local_time_offset; F64 *pow10_I64, sys_os_version = 2.03; -U64 sys_os_version_sub = 113; +U64 sys_os_version_sub = 115; U8 *sys_os_version_str; U8 *sys_os_version_full; U8 *sys_os_version_nice; diff --git a/src/Kernel/KernelC.HH b/src/Kernel/KernelC.HH index 3c984c9a..18c28999 100755 --- a/src/Kernel/KernelC.HH +++ b/src/Kernel/KernelC.HH @@ -437,6 +437,7 @@ public extern I64 Scale2Mem(I64 min, I64 max, I64 limit=2*1024*1024*1024); public extern U0 SysErr( U8 *format, ...); public extern U0 SysWarn(U8 *format, ...); public extern U0 SysLog( U8 *format, ...); +public extern U0 SysLogToggle(); public extern I64 ExeCmdLine(CCompCtrl *cc); public extern U0 JobDel(CJob *tmpc); public extern I64 JobsHandler(I64 run_flags, CTask *task=NULL);