|
|
— |
blog:pushbx:2025:0310_much_work_in_february:march [2025-03-10 18:57:57 +0100 Mar Mon] (current) ecm created |
| ====== Much work in February/March ====== |
| |
| **2025-03-09** |
| |
| As mentioned, [[blog:pushbx:2025:0304_interlude_current_ldebug_startup_files|last week I didn't get to write a proper blog post]]. So this one's about two weeks' worth of changes. |
| |
| |
| ===== SRDISK ===== |
| |
| [[https://hg.pushbx.org/ecm/srdisk/rev/ec3df8a1eabf|Fix the error handling in realloc_ems_handle]]. EMS doesn't set an error code in BL, and do not modify the indirect pages variable in case of error. |
| |
| |
| ===== inicomp ===== |
| |
| Two changes to the test file program: |
| |
| [[https://hg.pushbx.org/ecm/inicomp/rev/c8c277deffea|Align stack_top to a paragraph boundary]]. This doesn't modify the binary because it already happened to be aligned due to the stack size of 512 bytes. |
| |
| [[https://hg.pushbx.org/ecm/inicomp/rev/c2967d59985c|Close the input file]] after reading all of it, but before creating the destination file. This would allow to specify the same file as both input and output, even with a sharer loaded. (But don't do that, on errors the file will be truncated.) |
| |
| |
| ===== ident86 ===== |
| |
| [[https://hg.pushbx.org/ecm/ident86/rev/cfd15e43dd82|Detect the write_entrypoint_list mmacro like a DW directive]], to handle its data as word data items. This was useful during lDOS development to compare two different revisions of the kernel, both of which were assembled using NASM. ([[https://hg.pushbx.org/ecm/msdos4/rev/163b4800189e#l4.35|A condition in msbio2.nas]] wasn't evaluated as intended because the ddataseg.nas include was missing. This led to a change between the binaries before and after this changeset.) |
| |
| |
| ===== ldosboot ===== |
| |
| [[https://hg.pushbx.org/ecm/ldosboot/rev/44dade8b8fbb|Add lkernpl.asm]] to load a single-file kernel at 00600h (like fdkernpl.asm) but pass along an lCFG block (like drkernpl.asm). Eventually all three of the *kernpl.asm files may be merged into one file, with the three existing filenames including this common file with appropriate options. However, this is of lower priority and can be done at a later time. |
| |
| |
| ===== kernwrap ===== |
| |
| Add a variable called build_kernpl_module [[https://hg.pushbx.org/ecm/kernwrap/rev/3e6aee90b15d|to allow using the new lkernpl.asm source file]] rather than drkernpl.asm. |
| |
| |
| ===== lDebug ===== |
| |
| * Fix variable.eld [[https://hg.pushbx.org/ecm/ldebug/rev/cb3965f87d07|to reset ES after calling findvar]] in the length check. This led to memory corruption and checking the wrong variable on subsequent calls to findvar. |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/1419463a50e1|Expand nonexistent variables to the empty string]]. Longer comment comparing the behaviour of different shells in the changeset message. |
| * In errfix.eld debug display [[https://hg.pushbx.org/ecm/ldebug/rev/564939daed7c|indicate if the marker is behind the CR byte]]. This could happen due to a bug in printf.eld but at the time I believed that errfix.eld should handle this. |
| * Similarly, [[https://hg.pushbx.org/ecm/ldebug/rev/f9aba1451122|dump the content of the byte after the CR]]. |
| * In printf.eld [[https://hg.pushbx.org/ecm/ldebug/rev/e450c0cc51be|do not overflow the input]] if no string END keyword is found. |
| * Harden several Extensions for lDebug (alias.eld, extname.eld, variable.eld) [[https://hg.pushbx.org/ecm/ldebug/rev/0bd12197a1f3|to handle the errfix array byte corresponding to the line_in byte after the CR]]. Likely useless but shouldn't cause any problems. |
| * In variable.eld when expanding a variable, [[https://hg.pushbx.org/ecm/ldebug/rev/da9a549994d8|move up the remainder of the errfix array]] to preserve the source contents for subseqent text. [[https://hg.pushbx.org/ecm/ldebug/rev/fa86c00073b1|In a second changeset]] make it so that this only happens if the variable expansion is longer than the text it replaces. (Because we move downwards (DN) the move would corrupt data if the source is above the destination.) |
| * Add [[https://hg.pushbx.org/ecm/ldebug/rev/b766f11a0200|data links for priorrc and rc variables]]. |
| * Add new Extension for lDebug, [[https://hg.pushbx.org/ecm/ldebug/rev/b7ca7e01bfae|rcexec.eld]] which adds the RC.EXECUTE command. This command replaces the RC buffer contents and immediately runs the RC buffer. This is intended to allow running multiple commands from a single-command alias.eld alias. |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/75b4967ae49c|Document rcexec.eld]] in the manual. |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/abc3b97930a9|Add S_INITCDS S MCB type]] and change spelling of S_INITIALISE |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/d1f220829d0a|Add S_INITSTACK S MCB type]]. |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/3fee0840fdf0|Support _MCBPOSITION and _MCBLIMIT options]] for DM command (enabled by default only for the DM Extension for lDebug, not the internal DM command). |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/4eacb7bdd84f|Update dm.eld description in manual]] with new keywords. |
| * Add S_EXCLDALTAH S MCB type (not yet uploaded). |
| |
| |
| ===== bigtest ===== |
| |
| I developed the bigtest application as a test program for determining how much of the Low Memory Area is available to allocate to a single process memory block. I submitted the program and several results [[https://retrocomputing.stackexchange.com/questions/31384/whats-the-86-dos-system-with-the-smallest-low-memory-area-footprint|to the retrocomputing stackexchange site as a question and answer]]. |
| |
| Of note is that bigtest.exe sets up an execution environment compatible to the debugger's Extension for lDebug architecture. It can and does in fact use an unmodified copy of dm.eld from the debugger to carry out the memory dump display. |
| |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/f005bbd86628|Initial commit]]: A simple program that doesn't do anything except allocate a large process memory block. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/c46ef3e7412d|Add a simple mak.sh script]] to build the test program. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/df96bbefac85|Add files to build dm.eld]] from the debugger. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/91e6845d9f52|Disable building dm.xld]] by default. |
| * In repo root mak.sh [[https://hg.pushbx.org/ecm/bigtest/rev/c0a03d408d31|call ELD makone.sh script]] to build dm.eld |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/66368fd68828|Include lmacros3.mac]] and add an include path to the nasm command. |
| * In mak.sh [[https://hg.pushbx.org/ecm/bigtest/rev/abaea7428b2c|emit an assembler listing]] and pass map file and the listing to convlist.pl to create a trace listing file. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/71749f048492|Add loadeld.asm and eldapend.c]] from the debugger. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/dff9427d497f|Load an ELD and transfer to it]]. The ELD is loaded either from a filename specified on the command line (LFNs allowed), or from the program's own executable found from the pathname after the environment. |
| * In mak script [[https://hg.pushbx.org/ecm/bigtest/rev/c4ff488e3694|compile eldapend and use it to append dm.eld]] as a trailing ELD to the executable. |
| * In mak script [[https://hg.pushbx.org/ecm/bigtest/rev/34cee002407b|delete executable files]] before building. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/a9453f43f591|Add init_eld]] from debugger's init.asm |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/6c5f0541b0b4|Add linkinfo.asm file]] from the debugger. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/e029eb927850|Disable most links in the link info file]] to enable building the test program with it included. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/20aab08ff6b6|Add some line I/O functions]]: puts, putsz, putc, putsline, putsline_crlf, and trimputs. These are much simpler than the debugger's, they always write to DOS standard output and do not do any pagination. Also adds the line_out buffer to the data segment. |
| * Add functions, variables, and links [[https://hg.pushbx.org/ecm/bigtest/rev/1caebcf8a8a5|to allow running the ELD linker]]. This was done by manually checking eldlink.asm for every use of extcall and linkdatarelocation. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/1393007d63b9|Add all data links required]] for dm.eld (they were displayed by the linker on attempting to load the ELD) |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/460f4cc091a7|Add isstring.asm]] and [[https://hg.pushbx.org/ecm/bigtest/rev/e8c24421fee2|options.mac]] from the debugger. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/75c28e7330c4|Allow the ELD to run]]. This involves adding links to several new functions, including disp_dxax_times_cx_width_bx_size and getword. (The getword only accepts hexadecimal literals rather than adding a whole expression evaluator.) |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/d9bf1937359e|Fix getword function]] not to reset DX before every hexit. |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/72d6e4a8b4a4|Set the dm.eld parameters]] for displaying position, limitting to up to the PSP, and table formatting. |
| * Rename test.asm [[https://hg.pushbx.org/ecm/bigtest/rev/977b104c76fc|to bigtest.asm]] |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/894288548675|Rename the output files]] to bigtest.* |
| * [[https://hg.pushbx.org/ecm/bigtest/rev/fb3a194c5b64|Add .hgignore file]]. |
| |
| |
| ===== Enhanced DR-DOS kernel ===== |
| |
| * [[https://hg.pushbx.org/ecm/edrdos/rev/fe37cc2e8824|Pass the dconfig environment to the shell]], fixing the FreeCOM error prompt about not finding its executable. Unlike the prompt suggests, FreeCOM doesn't actually need the %COMSPEC% variable. It does need an environment and the trailing executable pathname however. I [[https://github.com/SvarDOS/edrdos/issues/55|discussed this on the SvarDOS EDR-DOS tracker]]. |
| * [[https://hg.pushbx.org/ecm/edrdos/rev/a43d98646dad|Update lDOS version]]. |
| * [[https://hg.pushbx.org/ecm/edrdos/rev/6c174e5361fb|Fix a crash]] after using an INSTALL= directive to install the DR-DOS sharer. I also [[https://github.com/SvarDOS/edrdos/issues/139|discussed this on the SvarDOS tracker]]. |
| |
| |
| ===== lDOS kernel ===== |
| |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/7156911b1928|Address most HMA allocations]] using segment FFFEh, except if the allocation stretches up to 0FFFFh:0FFEFh or 0FFFFh:0FFFFh. (DI after zeroing equals zero or 0FFF0h.) The idea is to be more conservative as in not using pointers with the segment as 0FFFFh, lest other code thinks the pointer is invalid. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/022e5f0744fa|Create initial PSP]] at segment 61h. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/9f1255d99316|Put the first MCB at segment 60h]], and create an S MCB for DOSENTRY + DOSDATA. |
| * In entryseg.nas [[https://hg.pushbx.org/ecm/msdos4/rev/c4a66782642f|avoid NASM warning]] on segment attribute redeclaration. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/c4262678ab8b|Drop subtraction of initial PSP]] that used to be in front of SYSINIT CS. |
| * Move some device headers and variables in DOSENTRY: |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/4639a67beb3c|Device headers (misspelled) up to LPT3]] before ORIG13 |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/f407f60b9d9b|COM2 to COM4 device headers]] before IRT |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/ed448eea7449|Several variables to in front of AUXNUM]]. (The diff shows AUXNUM and subsequent variables as moving to behind the other variables.) At this point I noted that the subsequent variables must be placed after AUXNUM. When I tried recreating the crashes due to this several days later, I was unable to reproduce however. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/f230a2a09241|Move SM92 structure]] to before AUXNUM. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/6016a84e2b8b|Put entry.asm]] before ALTAH. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/f1720b34c1fe|Move msdisk.nas variables]] to before ALTAH. |
| * In msbio1.nas [[https://hg.pushbx.org/ecm/msdos4/rev/1c6a9fd4a841|drop duplicate dosbiocode functions]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/286772faf253|Share code for Leave2F and Leave13]]. |
| * In msdisk.nas [[https://hg.pushbx.org/ecm/msdos4/rev/db753d7e3380|use Leave13]] rather than ''retf 2'' |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/0ea721ab29a6|Note that msdisk.nas uses Leave13]]. |
| * Move [[https://hg.pushbx.org/ecm/msdos4/rev/fb9c4b884a45|msclock.nas variables]] to before ALTAH. |
| * Move [[https://hg.pushbx.org/ecm/msdos4/rev/6caa114f7f06|msbio2.nas variables]] to before ALTAH. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/15056341c387|Move around some data]] to prepare for next changeset. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/a685b18f1b9a|Add msbio.cl2 message]] before ALTAH. |
| * In mak script [[https://hg.pushbx.org/ecm/msdos4/rev/78d18c78df13|update the filenames to delete]]. |
| * In exec.nas [[https://hg.pushbx.org/ecm/msdos4/rev/55c54c4001a0|fix an incorrect JB after a DEC]], which would never branch. Use JZ instead. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/04157c3e7e51|Relocate SYSINIT and DOSCODE from DOSENTRY]], avoiding the hazard of overwriting the relocation code itself. This uses the movp function from other lDOS projects. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/031fb8588355|Re-initialise DOS segment references]] soon after relocation. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/c370c089307c|Do not re-init DOSDATA segment]] at this point as it doesn't change yet. |
| * Check that [[https://hg.pushbx.org/ecm/msdos4/rev/fb1c77ecfe4e|the relocation doesn't corrupt the relocation code]]. This was too early in the repo history, as at this point the relocation could corrupt the DOSDATA segment without this detection erroring out. This was automatically fixed later when DOSDATA was relocated here too. |
| * Before the relocation [[https://hg.pushbx.org/ecm/msdos4/rev/1fbaea7bbe6d|check for a borrow after subtracting]] from the memory top segment. This is unlikely to be needed, but more correct. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/85a65462c049|Write a SYSINIT S MCB]], not used yet. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/b744fb1e3220|Enable passing config lines using PREPEND or APPEND]] even if no config file is found. This fix was actually incidental; I believed it to be needed but found that the actual error was due to running the lDebug command like ''boot protocol ldos; append ...'' in what the last clause is parsed as a comment after the protocol specification. The fix is still correct however. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/2f31e3d9fc38|Link the free MCB to the SYSINIT MCB]]. The latter is not freed yet. |
| * Round up the size of a buffer [[https://hg.pushbx.org/ecm/msdos4/rev/e6da8744ef85|in a better way]], not adding a paragraph if the buffer header exactly fits in a paragraph. |
| * Fix, TryQMemory (error allocating memory for country.sys buffer?) [[https://hg.pushbx.org/ecm/msdos4/rev/19228433ec62|should set CY]]. |
| * Big change [[https://hg.pushbx.org/ecm/msdos4/rev/5e53b937b7a8|to drop all uses of the devmark SD MCB]]. (Only DEVICE= / DEVICEHIGH= still creates SD MCBs.) Adds the allocate_temporary_block function to allocate memory to an S MCB using last fit LMA only. The country block is temporarily allocated and then freed. The temporary CDS block is repeatedly allocated and freed. The config block and buffer block are allocated but not freed yet. The SYSINIT_BASE block is no longer used, INSTALL= executes from the SYSINIT block directly. |
| * In allocate_relocate_block [[https://hg.pushbx.org/ecm/msdos4/rev/d3e8d1b7b0ee|first try UMA only best fit, then UMA then LMA first fit]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/ac83222d6518|Align some word variables]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/cfdbc46b016f|Free config block after last use]] (by INSTALL= execution). Could be improved to compact and relocate this some before this point. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/8aea3c3e296d|Free early buffer block]] after setting up final buffers. |
| * Change msbio/msinit.nas [[https://hg.pushbx.org/ecm/msdos4/rev/2d990312672b|BOOTBIAS to 0]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/a53685afe84d|Allocate and free Init_BootSeg]], instead of reserving part of the SYSINIT MCB. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/523294830c7c|Relocate UPBs early]], and discard their dskdrvs array (only used by INITDPB). All UPBs at this point are DOS-internal ones. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/dbe38209f6e1|Relocate DOS-internal UPBs late]]. This specifically does not include DRIVER.SYS UPBs added to the chain using the int 2Fh function 08h interface. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/3e3665f25596|Fix the DPB drive/unit number]] on DEVICE=, DX got corrupted. (Probably broken [[https://hg.pushbx.org/ecm/msdos4/rev/5e53b937b7a8|since the change to not use devmark SD MCB]].) |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/ac2f88c8e693|Fix a buffer overflow in INITDPB]], need to grow the DPB S MCB first before writing to the next DPB's fields. Strangely enough this seems not to have caused any problems. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/7b36656816f7|Relocate DPBs early]]. All DPBs at this point are DOS-internal DPBs. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/a3dc5b149600|Relocate DOS-internal DPBs late]]. This does not include those allocated by DEVICE= (appended at chain end). Relocation of DPBs at this point involves relocating references in buffers, CDSes, SFTs, and FCB SFTs. |
| |
| Relocating the DOS-internal UPBs and DPBs twice each is to simplify the changes needed. The early, first allocation of both in INITUPB and INITDPB depends on allocating from the first free block so that the allocation can grow upwards whenever more blocks are needed. This would have to be changed to immediately allocate at the temporary location. The early relocations happen to be fairly easy; the DOS-internal DPBs aren't even referenced by any other data structures at the early relocation point. |
| |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/110417afc5e9|Split code.asm]] from entry.asm and include it late in msbdata.nas, this allows to put relocating entrypoints later in msbdata.nas |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/654a78bcd932|Run shell exec call in DOSENTRY]], and free the sysinit memory on successful exec. |
| * This involves a backdoor variable to exec.nas which indicates to free memory after successful exec, before passing control to the new process but after loading the executable and building its environment. |
| * This isn't fully utilised yet: After an unsuccessful exec, control flow could return into SYSINIT for another attempt, possibly prompting the user for an executable and command line to run. At this point the code just displays a message and halts. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/8b45db8721d6|Use the DISKSECTOR in DOSENTRY]] as the SHELL= exec stack. Short lived hack. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/717914f122ca|Allocate a block of 160 bytes for the init SHELL= exec stack]]. This can go into the UMA or even HMA: Whenever this stack is used in the HMA we have already entered DOS (also in the HMA) so A20 must be on. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/dd0dcebf9143|Add some memory critical sections]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/445c4acc7e4c|Be more strict]] about UPB/DPB relocation. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/d72d5d6d9cec|Extract function relocate_dibx_dpb_from_dxbp_to_essi]] |
| * In prior changeset's function [[https://hg.pushbx.org/ecm/msdos4/rev/3524ddf8a01d|disable interrupts around the change]] |
| * Fix so [[https://hg.pushbx.org/ecm/msdos4/rev/2c6e501bbc26|RE_INIT is a near function in SYSINIT]]. (This seems to have happened to work but was actually running in free memory. Also, it was located in the resident BIOCODE so wasted some space there too.) |
| * Adjust the final DOS int 2Fh handler [[https://hg.pushbx.org/ecm/msdos4/rev/b14f305b302a|to use segment 26h]] for its entrypoint. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/b04f5f1a3450|Note on where dual area handling occurs]] in memory.asm |
| * In memory.asm [[https://hg.pushbx.org/ecm/msdos4/rev/9f2df5faf544|use global, not extern]] (happened to work regardless) |
| * Comment out memory.asm function [[https://hg.pushbx.org/ecm/msdos4/rev/228581e7f5ea|GetSizeInMCB]]. |
| * Place early DOSCODE [[https://hg.pushbx.org/ecm/msdos4/rev/228581e7f5ea|in front of rather than behind SYSINIT]]. Give it its own S MCB as well. (Already freed by DOSCODE relocator.) |
| * In msdos/msinit.nas [[https://hg.pushbx.org/ecm/msdos4/rev/f6e59225227b|clear all fields of the free MCB]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/262b3cfb3acd|Relocate DOSDATA initially]] (along with DOSCODE and SYSINIT). |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/7a9fa8e13c1c|Extract function DOSREINIT]]. |
| * Fix [[https://hg.pushbx.org/ecm/msdos4/rev/a389dc997e88|to write segments of swap areas in DOSREINIT]], not NEARDOSINIT. This caused the MFS redirector of dosemu2 to read from the buffers in the early DOSDATA later than it should. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/696c8b7d4d6d|Relocate DOSDATA in relocate end function]], call DOSREINIT there. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/0186950a91fb|Optimise the DOSENTRY A20 and relocation code]]. Uses a far jump immediate for the XMS entrypoint, an SMC patch to enable the A20 handling rather than comparing the DOSCODE segment, and the DOSCODE segment is found from a new reference within a mov immediate instruction. (DOSCODE relocation needs to update this field too.) The A20 error messages are also split apart in a smarter way. |
| * Rename START section [[https://hg.pushbx.org/ecm/msdos4/rev/1941fa07267a|to DOSSTARTJUMP]] to avoid clash with [[https://hg.pushbx.org/ecm/msdos4/file/dc1799704f1b/src/BIOS/msequ.mac#l60|msequ.mac's START equate]]. |
| * In ddataseg.nas and entryseg.nas [[https://hg.pushbx.org/ecm/msdos4/rev/de33c18dc704|use lmacros3.mac's sectioning macros]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/a5cd2422978a|Define the DOSBIODATA section alias]] for DOSENTRY. |
| * Fix, [[https://hg.pushbx.org/ecm/msdos4/rev/ed9b50461491|adjust SPSAV]] for the pushed DS. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/163b4800189e|Prepare to split DOSBIODATA from DOSENTRY]]. Debugging this change, which should cause no binary difference, required the ident86 change. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/b407fdebedec|Shuffle some variables]]. |
| * Fix: [[https://hg.pushbx.org/ecm/msdos4/rev/c81407338fb5|HARDNUM should be in SYSINIT section]]. If I recall, this happened to corrupt the final buffer chain leading to fun to debug infinite loops. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/883c53a392e8|Add DOSBIODATA section to the DOSDATA segment]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/f4e662822014|Fix the Patch_DoubleWordMov code]] (disabled [[https://hg.pushbx.org/ecm/msdos4/rev/883c53a392e8#l4.24|in prior changeset]]) to set a flag byte rather than patch code. This was likely broken earlier than this. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/fb141bfb54c6|Place initial PSP at top of available memory]]. (This temporarily allocated the first MCB to the backdoor owner, to avoid interfering with the UPB/DPB/config/DEVICE= allocations which expect the first free block to be large.) |
| * End [[https://hg.pushbx.org/ecm/msdos4/rev/f45e3a6b6c4d|relocate init PSP]] to the LMA or UMA. (Cannot be HMA as it needs to be addressed using a segment.) PSP relocation is [[https://hg.pushbx.org/ecm/tsr/file/3c25a002aa4b/transien.asm#l1260|based on the code from TSR example]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/35d39bb73de4|Fix some DOSENTRY uses]] that want DOSBIODATA. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/0389ae5026d4|Move DOSENTRY segment to 00600h]]. (The first paragraph is overwritten by the DOSENTRY S MCB, so the resident contents proper start at 00610h.) |
| * In iniloadc.mac [[https://hg.pushbx.org/ecm/msdos4/rev/0646537c5005|set _PAYLOAD_FILE only for module lkernpl]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/19f2c5db94cd|Spaghettify some DOSENTRY contents]]. |
| * In msioctl.nas [[https://hg.pushbx.org/ecm/msdos4/rev/7a11fbabe910|fix wrong section for some tables]]. |
| * Move two entrypoints [[https://hg.pushbx.org/ecm/msdos4/rev/3deaca51c330|to earlier in msbdata.nas]] |
| * In msvolid.nas [[https://hg.pushbx.org/ecm/msdos4/rev/d1889884354d|fix wrong section for some variables]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/108036fb9c72|Address msbio device headers using segment 70h]]. |
| * In the makefiles make it [[https://hg.pushbx.org/ecm/msdos4/rev/75e2388324d0|so msbio1.obj depends on the segment include files]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/edf797fb52c9|Insure that device headers and entries are high enough]] (>= 100h) to be addressed using segment 70h. |
| * In DOSREINIT [[https://hg.pushbx.org/ecm/msdos4/rev/d5e48760766c|detect sharer present]], and scan for magic code that tells us where the MFT starts. |
| * In DOSREINIT [[https://hg.pushbx.org/ecm/msdos4/rev/1c9856ddf574|relocate SFT references in sharer]], if present. (Discussed [[https://github.com/SvarDOS/edrdos/issues/139|on the SvarDOS EDR-DOS tracker]].) |
| * Move int 6Ch handler and all clock-related code [[https://hg.pushbx.org/ecm/msdos4/rev/7c9b9ff1b901|from DOSENTRY to DOSCODE]], and data to DOSBIODATA (ie, the DOSDATA segment). |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/e686a7bd264b|Parse the config directive COMPAT=ALTAH]] (no-op). |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/cfb8fff47a7b|Disable ALTAH compatibility offset]] that used to hardcode the variable to 70h:61Bh. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/776693c2e66c|Allocate memory block for COMPAT=ALTAH option]]. |
| * In mscon.nas change uses of ALTAH [[https://hg.pushbx.org/ecm/msdos4/rev/fc8343bfca77|to indirect through an offset stored in DOSBIODATA]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/89664539ac2b|Modify the indirect ALTAH offset]] to implement COMPAT=ALTAH fully. |
| |
| |
| {{tag>srdisk inicomp ident86 ldosboot kernwrap ldebug bigtest eld edrdos ldos}} |
| |
| |
| ~~DISCUSSION~~ |
| |