|
|
— |
blog:pushbx:2025:0512_april_to_early_may_update [2025-05-12 19:26:08 +0200 May Mon] (current) ecm created |
| ====== April to early May update ====== |
| |
| **2025-05-11** |
| |
| In April I was sick for several weeks. I didn't get much done during that time, and little since. However, a few things did get done. |
| |
| While creating the file for this blog post the HP 95LX complained about the file system being read only. This was quickly resoled by flipping the switch at the outer side of the memory card. |
| |
| |
| ===== The MS-DOS v3.40 blog post ===== |
| |
| [[blog:pushbx:2025:0501_ms-dos_v3.40_versus_v4.00|In this blog post]] and the subsequent three comments I wrote about how the non-multitasking MS-DOS v4.00, which is the base of lMS-DOS since the 2024 April release, was originally called MS-DOS v3.40 while in development. |
| |
| [[blog:pushbx:2025:0501_ms-dos_v3.40_versus_v4.00#comment_f9a7f45bb323414ddbeda3614a9e3902|The first comment]] is a reference to two such statements on the OS/2 Museum blog. The second and third comment are in other languages, including a Google Translate translation into English. [[blog:pushbx:2025:0501_ms-dos_v3.40_versus_v4.00#comment_02b8abc3d056b5d112545586acfadaa0|The second comment]] is from a site called BetaWorld, in Chinese. It led to [[blog:pushbx:2025:0501_ms-dos_v3.40_versus_v4.00#comment_97296ebdf3d82c76ac966fc6160e16d6|the third comment]] which quotes a Serbian computer magazine from 1988 September. |
| |
| |
| ===== lDebug ===== |
| |
| Fix [[https://hg.pushbx.org/ecm/ldebug/rev/97b4a91322eb|a DR-DOS boot load protocol comment]]. Loading a full 29 KiB file requires a sector size of 1 KiB or smaller. |
| |
| |
| ===== lDOS boot ===== |
| |
| * [[https://hg.pushbx.org/ecm/ldosboot/rev/0d6ff5effce2|Copy lkernpl.asm to kernpl.asm]] |
| * Allow building kernpl.asm [[https://hg.pushbx.org/ecm/ldosboot/rev/1179c370d49e|in FreeDOS mode]]. |
| * Allow building kernpl.asm [[https://hg.pushbx.org/ecm/ldosboot/rev/04b0cd28d156|in Enhanced DR-DOS mode]]. |
| * Make the three original kernel payload source files [[https://hg.pushbx.org/ecm/ldosboot/rev/398d20a0d718|use kernpl.asm]] rather than using redundant code. |
| * [[https://hg.pushbx.org/ecm/ldosboot/rev/439c851dfa5a|Optimise iniload clust_next]] to not preserve ES. (The boot32 variant of this code already did this.) |
| * In iniload [[https://hg.pushbx.org/ecm/ldosboot/rev/f89c6f802462|comment on finish_relocation]] more than before. |
| * [[https://hg.pushbx.org/ecm/ldosboot/rev/6960ba4db69a|Update manual and iniload comment]] with lDOS signature used for recent lMS-DOS, note that lDMS is for older lMS-DOS. |
| * In iniload [[https://hg.pushbx.org/ecm/ldosboot/rev/c390c205666b|comment more on init_memory code]]. |
| |
| |
| ===== ident86 ===== |
| |
| Only minor changes: |
| |
| * Detect ''$M_ID'' directives (MASM style istruc) [[https://hg.pushbx.org/ecm/ident86/rev/98fae88f2cb4|as word data directives]]. |
| * [[https://hg.pushbx.org/ecm/ident86/rev/f2bc12bf85bc|Keep track of last line size]] in one of the .tls size directive detection loops. This may be useless. |
| * Fix [[https://hg.pushbx.org/ecm/ident86/rev/6c01457081ae|to use the liner variable]] in two debugging output spots. |
| |
| |
| ===== fixmem ===== |
| |
| * [[https://hg.pushbx.org/ecm/fixmem/rev/393edd179dd5|Recognise Set_Data_Segment mmacro]] as implying assume directives for DS and ES. This is used by lMS-DOS format.exe sources. |
| * Fix [[https://hg.pushbx.org/ecm/fixmem/rev/350842a66f92|to not push a new section]] for an "already ends" commented section directive, fixing reruns on already processed sources. |
| * Add [[https://hg.pushbx.org/ecm/fixmem/rev/208149f39e3a|more debugging output]] for pushing a new active section. |
| * Use the $newsection variable [[https://hg.pushbx.org/ecm/fixmem/rev/af5b586cf46a|as allcaps section name]]. |
| * Add switch -%%%%-exact-section [[https://hg.pushbx.org/ecm/fixmem/rev/252d387b8c09|to avoid allcapsing section names]]. |
| * Add switch -%%%%-drop-seg [[https://hg.pushbx.org/ecm/fixmem/rev/057467b700a2|to drop SEG keyword on section names used as parameters]]. NASM uses its SEG keyword to get the section of a non-section label, and requires it be omitted to get the segment of a section. |
| * [[https://hg.pushbx.org/ecm/fixmem/rev/8d9cfe62ada1|Fix processing of EXTRN directive]] with ''function:NEAR'' without a ''PTR'' keyword. |
| * [[https://hg.pushbx.org/ecm/fixmem/rev/2bf817b8b011|Create port equates]] for parameter of MESSAGE mmacro. |
| * [[https://hg.pushbx.org/ecm/fixmem/rev/f8c39d8aabeb|Create port equates for content parameter]] to a ''%define'' directive, if the content is a single label name. |
| * [[https://hg.pushbx.org/ecm/fixmem/rev/0e5a44766c3e|Fix linebreak handling]] of prior changeset, need to match whitespace non-greedily so the linebreaks are matched as expected. |
| * [[https://hg.pushbx.org/ecm/fixmem/rev/81db996334dc|Update]] equates for port labels and labels for port equates. |
| * [[https://hg.pushbx.org/ecm/fixmem/rev/b36001a71796|Handle port equates and port labels]] read from prior passes using the same code. |
| * Add switch -%%%%-hide-no-section [[https://hg.pushbx.org/ecm/fixmem/rev/00fd269b27dd|to hide messages about accesses]] to "sectionless labels". |
| * [[https://hg.pushbx.org/ecm/fixmem/rev/8711faadaff4|Replace multiple dotted labels]] in the same line by looping. Avoids the need to rerun the script on the same files. |
| * [[https://hg.pushbx.org/ecm/fixmem/rev/711dbcbb088c|Allow question marks in label and equate names]]. Used a few times by lMS-DOS format.exe sources. |
| |
| |
| ===== lDOS ===== |
| |
| * Insure [[https://hg.pushbx.org/ecm/msdos4/rev/3500c34bbeea|int 13.43 is called with AL equal to zero]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/abba522c39c6|Add lba_doverify after write]], if write with verify requested. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/672eadc0db0a|Call CHECKIO]] in diskio_lba_error |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/8c994cef7db0|Fix crash on unknown block device IOCTL calls]] due to wrong stack adjustment. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/250b40849e64|Improve IOCTL dispatch]] to not use ''and al, 9Fh'' |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/0d9613249ad8|Move around]] the fail generic IOCTL code. |
| * Add [[https://hg.pushbx.org/ecm/msdos4/rev/1ad7590e589e|block device function 19h]] (query generic IOCTL support). |
| * Add [[https://hg.pushbx.org/ecm/msdos4/rev/dcd6f1591637|printer device function 19h]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/fa5251813ec5|Fix assume directive]] in prior changeset. |
| * Support [[https://hg.pushbx.org/ecm/msdos4/rev/fb8bd6826fdd|DOS system calls 4410h and 4411h]] (query generic IOCTL support). |
| * For DOS generic IOCTL system calls [[https://hg.pushbx.org/ecm/msdos4/rev/a675bb2cb91d|return zero on success]], to match the Interrupt List documentation. |
| |
| |
| ==== lMS-DOS format.exe port ==== |
| |
| This port went much like prior ports, particularly the one of the sharer. The scriptlets were adjusted to work with the assembly language source files in src/CMD/FORMAT/ rather than the sharer's subdirectory. |
| |
| Not all changesets are interesting, so I won't list all of them. |
| |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/7b8aaa221482|Do not delete format.exe]] intermediate file. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/17216f66a6da|Run fixupp]] on object files. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/52c346b05245|Create format.exe]] using WarpLink. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/73bf5926be87|Add script to generate format.tls]] trace listing file. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/c535c6d57281|Copy all include files]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/fbca7835451f|Port formacro.mac]] macros manually. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/e089d1caa2ed|Port formsg.mac]] macros manually, and replace = equals sign equates by ''%define'' directives. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/8f3c7540d72e|Replace 0 zero initialisers]] in some structures by ? question marks. |
| * Copy inc/parse.nas [[https://hg.pushbx.org/ecm/msdos4/rev/8fb01cc39e31|to a local copy]] of the same filename. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/e3f0bb6eab5e|Replace double dollar prefixed labels]] using a perl scriptlet. (Likely generated by [[https://retrocomputing.stackexchange.com/questions/27688/documentation-for-the-salut-preprocessor-of-the-ibm-macro-assembler-2-0|the SALUT assembly language preprocessor]].) |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/a07f73894cd8|Replace non-zero initialisers]] in some structures by ? question marks. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/beeed318cca3|Drop doubled PUBLIC directives]]. (Likely caused problems because of different caps of the various directives?) |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/c93d8c42c2ab|Initialise a non-zero structure member]] in istruc. |
| * Fix [[https://hg.pushbx.org/ecm/msdos4/rev/d29634d64a8a|an immediate operand with segment override]], it seems that MASM just ignores the override when OFFSET keyword is present. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/10231cd15fea|Add ..start label]]. |
| * In formsg.mac [[https://hg.pushbx.org/ecm/msdos4/rev/6d946474aa6c|delete a dash]] accidentally introduced [[https://hg.pushbx.org/ecm/msdos4/rev/e089d1caa2ed#l1.299|by an earlier change]]. |
| * Add format.exe [[https://hg.pushbx.org/ecm/msdos4/rev/c9aaeda7d52f|message files to the repo]] and delete them from the makefile. |
| * In sysmsg.mac MSG_SERVICES [[https://hg.pushbx.org/ecm/msdos4/rev/bc2c19990525|work around]] a [[https://hg.pushbx.org/ecm/msdos4/rev/746df46af24a|problem]] with format.ctl being included twice. Because of the handling of the EQU in this file as a define, this is not allowed. The define name would be expanded before passing it to the EQU mmacro as ''%00''. |
| * Rerun fixmem.pl on display.nas [[https://hg.pushbx.org/ecm/msdos4/rev/22c3b0e0887e|with macro.tmp file from formsg.mac]] |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/ce2d6eb25b67|Drop a Control-O]] (U+000F) comment in formsg.mac |
| * Rerun fixmem.pl on display.nas [[https://hg.pushbx.org/ecm/msdos4/rev/9c04195aba97|with msgserv.nas in the temporary file]]. |
| * Add formsg.mac [[https://hg.pushbx.org/ecm/msdos4/rev/01a13a4049ae|aliases for symbols exceeding 41 bytes]], so WarpLink will find these truncated globals when used as externs by MASM-generated object files. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/e61f0acfa8ab|Drop more segment overrides]] on OFFSET immediate operands. It turns out this is an error to NASM only [[https://hg.pushbx.org/ecm/msdos4/rev/0208075ce7af|if the other operand is a memory operand]]. If the other operand is a register, NASM will convert the operand in error to a memory operand despite the lack of square brackets. This was detected by ident86 as a mismatch. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/24872192a993|Replace switch equates]] by ''%ixdefine'' as needed in one of the parser source files. |
| * In parse.nas [[https://hg.pushbx.org/ecm/msdos4/rev/8931d531acb0|undo an identicalise NOP]] from [[https://hg.pushbx.org/ecm/msdos4/rev/74d240218878|an earlier ident86 run]] (on msbio module). |
| * Fix makefile [[https://hg.pushbx.org/ecm/msdos4/rev/aff53c20d9ee|to use the local copy]] of parse.nas |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/c92739ccdf88|Change the Procedure mmacro]] in formacro.mac to .nolist to help ident86 |
| * [[https://hg.pushbx.org/ecm/msdos4/shortlog/630090ed2395|Copy BOOT.INC, BOOTFORM.INC, and BOOT11.INC]] to macro filenames. |
| * In msfor.nas [[https://hg.pushbx.org/ecm/msdos4/rev/89dc6366bc74|explicitly initialise Media_ID structure members]] to all-blanks, [[https://hg.pushbx.org/ecm/msdos4/rev/a07f73894cd8|removed from the structure definition earlier]]. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/02ce7b8d1abf|Replace ORG directives]] in PSP pseudo-segment by ABSOLUTE directives. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/bee790a56ce0|Reserve some space]] in PSP pseudo-segment to match MASM build. |
| * [[https://hg.pushbx.org/ecm/msdos4/shortlog/e1443c3da6c5|Convert local format makefile]] into extension of the repo root makefile for GNU make. |
| * Make all files [[https://hg.pushbx.org/ecm/msdos4/rev/1204b7d16a5f|in format]] and [[https://hg.pushbx.org/ecm/msdos4/rev/9f39ac8f1e91|inc]] use only ASCII codepoints. The perl scriptet used to do this replaces U+000F comments, the U+001A EOF marker, and all bytes with values >= 80h in comments. |
| * [[https://hg.pushbx.org/ecm/msdos4/rev/95b0257e7b54|Replace accidental U+0167 codepoint]] in memory.asm unused code branch. |
| |
| These last two changes allow using msbio.tls in TracList without converting it to UTF-8 first. |
| |
| {{tag>msdos3 msdos4 ldos ldebug ldosboot ident86 fixmem traclist}} |
| |
| |
| ~~DISCUSSION~~ |
| |