|
|
— |
blog:pushbx:2024:0303_mid_late_february_work [2024-03-03 17:09:54 +0100 Mar Sun] (current) ecm created |
| ====== Mid late February work ====== |
| |
| **2024-02-25** |
| |
| This week some development on lmacros, instsect, lDebug, and EDR-DOS and FreeDOS happened. |
| |
| |
| ===== lmacros ===== |
| |
| [[https://hg.pushbx.org/ecm/lmacros/rev/e611130fc291|Add]] the ''fill_at_least'' macros to avoid an overflow in the debugger letting the entire build fail. Instead, the field will be filled if its content is shorter, but allowed to assemble as well if the content is as long as or longer than the fill length. |
| |
| |
| ===== instsect ===== |
| |
| Two bugfixes: [[https://hg.pushbx.org/ecm/instsect/rev/53ac52bdd671|Unlock the correct drive]] after sector access. And [[https://hg.pushbx.org/ecm/instsect/rev/040a607a8799|lock the drive even for MS-DOS v7.00]] which does not have the "new packet" interface but does require the locking for writing to a disk using int 26h. |
| |
| |
| ===== lDebug ===== |
| |
| * Use new lmacro ''fill_at_least'' [[https://hg.pushbx.org/ecm/ldebug/rev/4c4f52533e34|to avoid overflows blocking the build]] |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/fd0a6b92a261|Expand AMIS description field]] to fill it to 56 bytes so release builds and current daily builds will match on almost all offsets identically. |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/0c88b95e83d1|Move packlib files]] into tmp/ |
| * Add options [[https://hg.pushbx.org/ecm/ldebug/rev/9d9366c6afd3|for building XLDs]], ELDs, [[https://hg.pushbx.org/ecm/ldebug/rev/c0402f147a86|and eldcomp]] |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/790debae002c|Add a release build script]] named rel.sh for automating part of future releases |
| * In rel.sh create configuration overrides for mak.sh and eld/mak.sh |
| * In rel.sh [[https://hg.pushbx.org/ecm/ldebug/rev/0b3f2bd9cd05|delete files we do not want to include]] in the release |
| * doc: [[https://hg.pushbx.org/ecm/ldebug/rev/1b3cc3a6804d|Update gettingstartedrelease]] |
| * [[https://hg.pushbx.org/ecm/ldebug/rev/5740dcb40620|Do not try to terminate a process]] if in TSR mode (do not crash if device driver is given a pathname) |
| * Bugfixes like instsect [[https://hg.pushbx.org/ecm/ldebug/rev/de9f5f050b3b|to unlock correct drive]] and [[https://hg.pushbx.org/ecm/ldebug/rev/bc89680c9df1|lock even for MS-DOS v7.00]] (actually attempted on every DOS version now) |
| |
| |
| The change to the AMIS description line is related to rel.sh deleting the listing files. Upon release 8, the current daily build of the same day as the release will contain the listing files that fit the release build. Moreover, as the release build is never debuggable, the listing files are not very ueful to a user. (Map files are retained as they are relatively small.) |
| |
| |
| ===== EDR-DOS / FreeDOS kernel ===== |
| |
| An issue report to the SvarDOS EDR-DOS repo [[https://github.com/SvarDOS/edrdos/issues/48|noted that EDR-DOS uses the "hidden sectors" fields of the EBPBs]] in its UPB (UDSC) in a different way than MS-DOS. In EDR-DOS, the hidden sectors are always treated as an absolute sector in the int 13h unit. |
| |
| I weighed in that this is what I consider correct because it enables booting off logical partitions, which no one ever does but my loaders generally support. |
| |
| Further, I examined the UPBs / UDSCs / DDTs of MS-DOS v6.22 (CHS only, no FAT32), v7.00 (CHS or LBA, no FAT32), and v7.10 (CHS or LBA, with FAT32), and EDR-DOS and the FreeDOS kernel. I found that the free kernels pad the EBPBs with different reserved bytes than MS-DOS v7.10, and both add 4 more bytes at the end for different uses. |
| |
| In CHS mode, MS-DOS (all examined versions) does something odd: The hidden sectors are within the extended partition, and the "cylinder" of the extended partition start is noted in a 16-bit field in the UPB. This is however not added to the hidden sectors to calculate the absolute sector number. Rather, after adding the hidden sectors, the block device will calculate the CHS tuple and only then adds the extended partition start cylinder to the cylinder value of that tuple. This means it will only work correctly if the extended partition starts on a cylinder boundary, as the CHS heads and CHS sectors are never adjusted by the addition. |
| |
| In LBA mode, MS-DOS v7 (both versions) acts much more like EDR-DOS. [[https://github.com/FDOS/kernel/issues/143|FreeDOS instead stores the absolute hidden sectors amount]] in another new variable in the DDT structure. |
| |
| {{tag>lmacros instsect ldebug edrdos freedos}} |
| |
| |
| ~~DISCUSSION~~ |
| |