Previously the zealbooter memmap e820 assignment loop used the entry count value passed via limine, without checking if it was over MEM_E820_ENTRIES_NUM, the #define constant value limit of entries that are stored in the kernel header's e820 region. This commit bumps up the constant entry count to 64 from 48, and also adds a small check in zealbooter to ensure that the entry count value used in the memmap loop caps off at the constant value.
Misc UEFI build scripts have been removed/revised/condensed into one script with multiple rebuild steps. The order of the steps is as follows: Auto-install into temp VM with custom AUTO-VM iso, merge kernel headers into VM, rebuild kernel, merge Kernel/ code, rebuild kernel, merge all src/ code, deploy limine and zealbooter, rebuild kernel (as well as test), then test UEFI and BIOS mode.
Since Zeal used a 16-bit mode BIOS INT to get an 8x8 VGA ROM font, this is incompatible if Zeal is loaded to a patched 32-bit mode by the zealbooter prekernel. To circumvent SYS_FONT_PTR never being set and fix access to the 'thick' font with Ctrl-Alt-F, I loaded Zeal bare-metal on my Thinkpad T420 and saved the VGA ROM font file with FontEd, then transferred the file to my VM.
The build-temp-vm script will perform the same logic as the build-iso script, the only difference being it will not perform ISO extraction logic whenever the VM is closed. Changes made inside the temporary VM will NOT be preserved. The AUTO-VM bootstrap ISO (which similarly has the system and kernel rebuilding logic on boot but has the ISO generation steps removed) is created by slightly modifying the standard AutoFullDistro0.ZC script file, then using sync.sh to sync the repo contents and update the AUTO iso. Since this setup exists separate from the ISO process, the modified AUTO iso can simply be renamed to AUTO-VM.ISO and the default one re-checked out via git to restore it.
This commit makes the background in ZoneOut "center" to the screen, as
well as fill with LTCYAN the top half of the screen to get a complete
sky, not part of it.
Create new folder System/Math/, move System/Math.ZC and System/MathODE.ZC to this new folder.
Add HolyMath files to System/Math/.
Change System/MakeSystem.ZC to #include System/Math/MakeMath.ZC.
Rename `DocDump` to `DocDumpLines`.
Rename `DocDm` to `DocDumpMem`.
Rename `DocD` to `DocDump`.
Rename `Dump` to `FileDump`.
Rename `DClus` to `ClusDump`.
Rename `DBlk` to `BlkDump`.
Rename `RawDm` to `RawDumpMem`.
Rename `RawDr` to `RawDumpRegs`.
Rename `RawD` to `RawDump`.
Rename `Dr` to `DumpRegs`.
Rename `Dm` to `DumpMem`.
Rename `D` to `Dump`.
Rename `Who` to `HashTableDump`.
Rename `Da` to `DumpAddress`.
Alter GopherDl to close TCP socket on success/failure.
Revert GopherOpen TCP timeout to default.
Change NetLog to no longer be self-focusable. (This way, window manager won't tile it like other windows.)
Fix Gopher client filename bug using filename character validation.
Increase TCP timeout in TCPConnectionCreate.
Move default AutoComplete position left a bit, just enough so that new windows' [X] button is visible.
(Gopher client from https://github.com/DeclanHoare/tos-gopher)
Implement TCPSocketReceiveLine and TCPConnectionCreate.
Update HolyC --> CosmiC conversion script.
Include DNS before TCP so that DNSAddressInfoGet can be used in TCP methods.
Revert RawPutChar scrolling behaviour.
Remove all kludge MyNoise functions from Apps and Demos.
Add call to LFBFlush in SettingsPop2 to fix task-swap palette bugs.
Improve ToTheFront game explanation.
Add support for opcodes up to 8 bytes long.
Fix 0x66 prefixed opcode instruction unassembly, at the cost of losing higher-register access on prefixed instructions.
Add almost every SSE instruction.
(Only 2-arg instructions implemented. CosmiC assembler needs expanding to allow 3+ arg instructions.)
(Only <= 4 byte instructions implemented. CosmiC assembler needs expanding to allow instructions larger than 4 bytes.)
(Bugs: Unassembler incorrectly reports 0x66 prefixed opcodes, non-128-bit instruction arguments report as U128. CosmiC does not yet have support for U128.)
Fix Std Font characters.
Add links to ZealOS-specific apps in Personal Menu.
Remove all files in /Downloads.
Fix PCIRep graphics hang on bare-metal.
Fix XTalk buffer formatting in StartUpTasks, PopUpFile, PopUpRunFile, and EdCodeTools2.
Add CBGR32 to Kernel headers.
Fix Mount2 AHCI Port value not being cleared on loop.
Change ordering of PersonalMenu links.
Increase Raw mode screen scroll from 1 line to 8 to improve bare-metal performance.
Fix DriveRep reporting SATA port on non-AHCI drives.
Remove CONFIG_DONT_PROBE.
Remove lingering references to compression from documentation.
Fix Talons incorrect millisecond variable name.
Improve Lex assert failure warning to give exact line number.
Remove some deprecated IDE functions.
Add default arg to Drive.
Fix raw-mode printing in StackRep, DriveRep, SATARep, Mount2, and CharGet.
Change LongLines cols default arg from 80 to 128.
Add arg to SATARep to specify drive types to show.
Add checks in AHCIPortInit to verify port signatures, add helper method to get signatures from port.
Fix SATARep missing AHCI controller info.
Add PCIDevFind to System/Externs.CC.
Add screen clearing with DocClear or Cls when in raw text mode.
Optimize RawPutChar.
Fix EdLite RAWF_SCROLL bug.
Update screenshots and README.
Added top & right borders to RawDr.
Improved spacing in some debug and compiler reporting.
Fixed RawPutChar and EdLite tab width.
Fixed Ui missing '0x' prefix syntax highlighter bug.
Added 32BitPaint demo.
Restructure network stack to use new Interrupt methods instead of hard-coded IRQ numbers.
Add line count update into build process.
Add progress bars to HTML generation and DoDistro.
Clear Network Log border_doc.
Fix font chars.
Clean up some lingering unconverted variable and directory names.
Remove word-wrap DolDoc tag from Clementine bible because of CPU spikes.
Add newlines to OS Upgrade questions.
Move PCNet interrupt #defines.
Improve E1000 PCI device loading.
Add comments in E1000 driver to sketch out dev process.
Fix unused var warning in OSUpgrade.
Add Who() output to main generated HTML index file.
Rename all 'inst' to 'instruction'.
Change NetLog behaviour, remove window tiling.
Change network stack to throw if no applicable driver can be loaded.
Update line counts.
Make HTML doc generation force index files to make links from subdirectories.
Added Sixto-Clementine Vulgate Bible to Misc/.
Fix User window height, patch font chars.
Remove some unneeded IDE functions.
Clean up Mount2().
Alter window border chars in Std Font, patch Aux Font.
Alter window scroll bar drawing routine.
Make System Task window smaller by default.
Implement default args for Ed and PopUpEd.
Add color to '[X]' and 'MENU' in window border top, remove both from System task and remove 'MENU' from AutoComplete task.
Fix illegal forward reference compiler error in DiskAddDev.CC.
Change 32BitDemo.CC to use a #define for the square draw delay.
Fixed Span game bottom mass location and cost report.
Fix CastleFrankenstein slowdown on bare-metal when turning.
Fix TreeCheckers move radius.
Implement palette swapping for some games.
Abstract PCI functions out from PCIBIOS.CC into their own file, add calls to PCIBIOS from PCI functions.
Fix AHCI BIOS handoff bug.
Raise version number.
Fix AHCI port and command waits hanging entire OS by using Yield.
Fix DVD boot hardcoded AHCI port number, correctly search ports for ATAPI drive.
Fix compiler unused variable warnings in Mount2.
Fix ARP not updating cached entries on ARPCachePut calls.
Fix DNS not updating cached entries on DNSCachePut calls.
Clean up repeated gross syntax in DHCPOfferParse.
Fix Host() and DNSRep IPV4 kludge, use proper switch case block based on result address family type.
Change CNetQueueEntry member variable length to packet_length.
Remove Debug statements when sockets use AF_INET6 or AF_UNSPEC, change to NetErr.
Change UDP message queues to be allocated and initialized when UDPSocket is called, instead of when binding.
Standardize filenames in Tests/ folder.
Remove old test files.
Remove outdated TODO comments.
Fix missing socket FSM state transition after binding a new connection.
Fix TCP socket send unused sent_total variable.
Integrate INADDR_ANY address handling procedure used in TCP to UDP.
Change two TCP tests into TCPEchoClient.CC and TCPEchoServer.CC, alter to make compatible with Shrine's echo tests.
Split long lines of code to multiple lines to fit better in default resolution.
Create Binary Search Tree (BST) generic data structure and methods, integrate TCP and UDP bound socket tree structures with BST system.
Fix incorrect variable name for packet data frames across stack codebase.
Split UDP and TCP into multiple files and their own folders for organization.
Update low-level Socket functions to return Bool types, for determining success/failure of state transitions.
Integrate updated Socket function return types into TCP and UDP methods.
Add NetStop() and NetStart() functions in PCNet-II code to easily halt and continue network activity.
Add NetDebug() log output function.
Update networking documentation to reflect changes, remove outdated documentation.
Implement IPV4Rep to report local, router, and subnet IPV4 addresses.
Expand UDPRep to report socket timeout and info about messages queued at the socket.
Clean up ARPRep some.
Fix NetworkToPresentation returning bad string.
Fix UDP Chat not closing bound socket.
Fix UDPSocketBind unintentional fall-through.
Add another Test for binding UDP sockets.
Added Port Control Protocol prototyping in Tests folder.
ARP Handler now warns when seeing requests with non-matching target IPs, and reports error on unrecognized operations.
ICMP Handler now warns when seeing ICMP packets with unrecognized type or code.
Set up NetLog to log info using colors and labels for clarity.
Fixed IPV4AddressParse string parameter bug, also put in a missing CompCtrlDel at the end of the method.
Fixed PresentationToNetwork not erroring when IPV4AddressParse fails.
Implemented UDP Sockets allowing 0 ms timeout and immediately returning on UDPSocketReceiveFrom if no messages were waiting at the socket.
Fixed UDP Handler using wrong address of packet to search bound socket addresses.
TODO: Suspected memory leak somewhere in UDP.
Added early NetHandler detection for IPV6, just warns.
Implemented default: cases for NetHandler routines, warns and outputs unrecognized IPV4 procotols and ethertypes.
Added few more NetLog()'s for clarity.
Implemented message queue system for UDPSockets to allow for better payload data management.
Improved UDPSocketClose, reduced memory leaks.
Changed ETHERNET_FRAME_SIZE back to 2000.
Fixed ZenithInclude hash bug via NetStart.CC change.
Added NetLog()'s in more of the stack for clarity.
Updated NetHandler NetQueuePull to a while loop.
Revamped NetHandlerTask into interrupt-based NetHandler.
Created NetLog to output Network info to, instead of outputting to zenith_task.
Updated NetStart.CC and Test files some.
Changed UDPSocketReceiveFrom behaviour to NetWarn instead of Debug when hits timeout and sees AF_UNSPEC.
Reformatted DolDoc files, adjusted sprites in documentation to reflect naming changes, corrected keybinding labels in AutoComplete window, fixed formatting error in Tips.DD.
Added DVD Boot AHCI prototyping into Kernel, displays detected AHCI configuration and halts mid-boot.
Small modifications to standard font, slight increase to mouse X and Y speed.
Many TODOs and still a good bit of tidying up to do
PCNet Direct Init wasn't working so added Shrine/OSDev Initialization Block code, need to do renames and comments for clarity
Added UDPRep and ARPRep as early network Rep functions. UDPRep to see all bound sockets still needs to be made
To get the network stack running, #include NetStart.CC
Added DNS, not finished. Lots of cleaning up to do when converting Shrine code
Formatting alterations to Net files, beginning restructuring and updating Docs & Tests