Question: Many SC MCBs, no SD MCBs?
I logged part of a debugging session booting current lDOS flavour EDR-DOS in dosemu2 (a revision based on a 2024-04-20 commit):
-be 1
-g
Hit permanent breakpoint 01
AX=3000 BX=0000 CX=0F56 DX=013D SP=3ABA BP=0100 SI=0020 DI=3AC0
DS=013D ES=013D SS=0F56 CS=F000 IP=F75D NV UP DI PL ZR NA PE NC
F000:F75D EB12 jmp F771
-d word [ri31s:330]:2c l2
013D:0020 - 39 01 9.
-dmm
PSP: 0000
010B 4D 0008 0019 400 B SC
0125 4D 0008 0012 288 B SC
0138 4D 013D 0003 48 B COMMAND
013C 4D 013D 11D6 71.3 KiB COMMAND
1313 5A 0000 636B 397 KiB
767F 4D 0008 3980 230 KiB SC
B000 4D 0008 0303 12.0 KiB SC
B304 4D 0000 04FA 19.9 KiB
B7FF 4D 0008 0800 32.0 KiB SC
C000 4D 0008 000B 176 B SC
C00C 4D 0008 000A 160 B SC
C017 4D 0008 0032 800 B SC
C04A 4D 0000 1FB4 126 KiB
DFFF 4D 0008 1000 64.0 KiB SC
F000 5A 0000 09FF 39.9 KiB
-ext extlib.eld history show
edr
g
r f cy
p FFFFFF while ri21s == F000
bp at ptr ri21p when ax == 4B00
g
dw es:bx
d 766C:0
bp new ptr ri21p
g
dw word [ri31s:330]:2C l2
dmm
d B001:0
dw word[word [ri31s:330]:16]:2C l2
bd 1
g
dw word[word [ri31s:330]:16]:2C l2
dw word [ri31s:330]:2C l2
dw es:bx
d 60:0
be 1
g
dw word [ri31s:330]:2C l2
dmm
ext extlib.eld history show
-alias list edr
EDR boot protocol ldos ldp/edrdos.com
-alias list dmm
DMM dm word [ri31s ?? ri31s :: ri27s:24]
-
Two questions: How is MEM (or lDebug's DM command) supposed to make sense of all these SC MCBs?
And, is it correct that SHELLHIGH= in dconfig.sys is so far just an alias to SHELL= that doesn't actually load the shell process into the UMA?
And, is it correct that SHELLHIGH= in dconfig.sys is so far just an alias to SHELL= that doesn't actually load the shell process into the UMA?
Yes, I made this an alias for SHELL so that the directive is at least recognised by the config.sys parser until it is eventually fully implemented. There is an issue for it: https://github.com/SvarDOS/edrdos/issues/85
Also, the kernel seems to reserve HMA space specifically for EDR command.com via its ReserveCommandHMA routine. This space seems wasted to me if some other shell than EDR command is used?
When implementing SHELLHIGH, probably it should also be determined if / what to do with this.
Two questions: How is MEM (or lDebug's DM command) supposed to make sense of all these SC MCBs?
I will have to investigate this myself, so cannot give you an answer to this question right now.
An easy way to implement SHELLHIGH= is FreeDOS's extension that 21.4B80 acts like 21.4B00 except it allocates UMBs if available. Unfortunately DR-DOS may already use this function call number for a different function, not sure whether this is applicable to EDR-DOS.
Others may expect an 21.4B extension not to use a different function number however -- dosemu2 is known to handle a few services differently which works to support the DOS stack expectations.