Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the board
Thread view  Mix view  Order
CandyMan

03.05.2022, 23:23
 

JEMM386 v5.81 hangs (Users)

JEMM386 v5.81 hangs when i run it with MOVEXBDA parameter.

My conventional memory structure is:

0x0000..0x9A80-1 - free memory (618KB)
0x9A80..0x9D80-1 - used by GRUB4DOS (12KB)
0x9D80..0x9F00-1 - XBDA (6KB)
0x9F00..0xA000-1 - some BIOS non used garbage (4KB)

Japheth

Homepage

Germany (South),
04.05.2022, 03:18

@ CandyMan

JEMM386 v5.81 hangs

> JEMM386 v5.81 hangs when i run it with MOVEXBDA parameter.
>
> My conventional memory structure is:
>
> 0x0000..0x9A80-1 - free memory (618KB)
> 0x9A80..0x9D80-1 - used by GRUB4DOS (12KB)
> 0x9D80..0x9F00-1 - XBDA (6KB)
> 0x9F00..0xA000-1 - some BIOS non used garbage (4KB)

Read the documentation - this may happen, it's "expected behavior". :-D

---
MS-DOS forever!

CandyMan

04.05.2022, 09:30
(edited by CandyMan, 04.05.2022, 09:50)

@ Japheth

JEMM386 v5.81 hangs

> Read the documentation - this may happen, it's "expected behavior". :-D

In my opinion, this is because JEMM386 does not check whether memory size is equal to the XBDA segment:
MemW[$413] shl 6 = MemW[$40E]
If not, he should refrain from moving the XBDA.

Japheth

Homepage

Germany (South),
04.05.2022, 10:34

@ CandyMan

JEMM386 v5.81 hangs

> In my opinion, this is because JEMM386 does not check whether memory size
> is equal to the XBDA segment:
> MemW[$413] shl 6 = MemW[$40E]
> If not, he should refrain from moving the XBDA.

In my opinion it is because AHCI expects some alignment of its structures which Jemm cannot easily guarantee, especially if it moves itself into an UMB first.

You may try UMBPCI & UMBM, umbm.exe has got an /xbda option - it's "better" aligned, because umbm doesn't have to "move itself" ( although I've forgotten the details ).

Or perhaps try jemm with option NOHI!

Btw, what is the status of the "dark debugger"? Is that something that you created - or at least are involved with? I find it a very interesting project.

---
MS-DOS forever!

CandyMan

04.05.2022, 16:02

@ Japheth

JEMM386 v5.81 hangs

> > In my opinion, this is because JEMM386 does not check whether memory
> size
> > is equal to the XBDA segment:
> > MemW[$413] shl 6 = MemW[$40E]
> > If not, he should refrain from moving the XBDA.
>
> In my opinion it is because AHCI expects some alignment of its structures
> which Jemm cannot easily guarantee, especially if it moves itself into an
> UMB first.
>
> You may try UMBPCI & UMBM, umbm.exe has got an /xbda option - it's "better"
> aligned, because umbm doesn't have to "move itself" ( although I've
> forgotten the details ).
>
> Or perhaps try jemm with option NOHI!
>
> Btw, what is the status of the "dark debugger"? Is that something that you
> created - or at least are involved with? I find it a very interesting
> project.

I added a few lines to the code in INIT.ASM (security is there anything below XBDA) and now it doesn't hang.

if ?MOVEXBDA and ?MOVEXBDAPM
    push ebx
    test bV86Flags,V86F_MOVEXBDA
    jz nomovexbda
    movzx eax,word ptr ds:[@XBDA]   ;does XBDA exist?
    and eax,eax
    jz nomovexbda
  if 1                       
    mov cx,ds:[@MEM_SIZE]
    shl cx,6
    cmp ax,cx
    jnz nomovexbda
  endif
...

I was also able to modify UMBM so that it transfers GRUB4DOS and XBDA data to UMB, thanks to which I have 22KB more conventional memory.

The dark debugger has been completed and so far I have no plans to change anything.

tkchia

Homepage

04.05.2022, 23:11

@ Japheth

JEMM386 v5.81 hangs

Hello Japheth, hello CandyMan,

> > In my opinion, this is because JEMM386 does not check whether memory
> size
> > is equal to the XBDA segment:
> > MemW[$413] shl 6 = MemW[$40E]
> > If not, he should refrain from moving the XBDA.
> In my opinion it is because AHCI expects some alignment of its structures
> which Jemm cannot easily guarantee, especially if it moves itself into an
> UMB first.

Not checking whether [@MEM_SIZE] shl 6 == [@XBDA] seems like a bad idea, if you ask me.

Also, I see that JEMM16.ASM does have this particular check. So I am mystified as to why INIT.ASM lacks the same check.

Thank you!

---
https://gitlab.com/tkchia · https://codeberg.org/tkchia · 😴 "MOV AX,0D500H+CMOS_REG_D+NMI"

Japheth

Homepage

Germany (South),
05.05.2022, 08:11

@ CandyMan

JEMM386 v5.81 hangs

> I added a few lines to the code in INIT.ASM (security is there anything
> below XBDA) and now it doesn't hang.

Ok, thanks! It's fixed in github.

---
MS-DOS forever!

Japheth

Homepage

Germany (South),
05.05.2022, 08:42

@ tkchia

JEMM386 v5.81 hangs

> Not checking whether [@MEM_SIZE] shl 6 == [@XBDA] seems like a bad idea, if
> you ask me.

I didn't ask, but nevertheless thank you!

Btw., the world is full of bad ideas - it's almost a unique human feature. If I recall correctly, Nietzsche once said: Man cannot be admired enough for his capabilities to survive under the most adverse conditions - but if it comes to his ideas ( = ideology ), he transforms to a complete idiot. ( please forgive my rather "free" translation! )

---
MS-DOS forever!

tkchia

Homepage

05.05.2022, 11:56
(edited by tkchia, 05.05.2022, 12:57)

@ Japheth

JEMM386 v5.81 hangs

Hello Japheth,

> I didn't ask, but nevertheless thank you!
> Btw., the world is full of bad ideas - it's almost a unique human feature.

:-D Thanks for the fix!

---
https://gitlab.com/tkchia · https://codeberg.org/tkchia · 😴 "MOV AX,0D500H+CMOS_REG_D+NMI"

RayeR

Homepage

CZ,
18.05.2022, 22:48

@ CandyMan

JEMM386 v5.81 hangs

> The dark debugger has been completed and so far I have no plans to change
> anything.

And please could you add an option (or make other version) to run DD in some "normal" VGA videomode to make it available for a wider audience not only you - for those with "modern" VESA-crippled nVidioted videocards?

---
DOS gives me freedom to unlimited HW access.

CandyMan

23.05.2022, 17:43

@ RayeR

JEMM386 v5.81 hangs

> And please could you add an option (or make other version) to run DD in
> some "normal" VGA videomode to make it available for a wider audience not
> only you - for those with "modern" VESA-crippled nVidioted videocards?

Dark Debugger uses 90x50 text mode which is supported by every VGA card.

RayeR

Homepage

CZ,
25.05.2022, 17:59
(edited by RayeR, 26.05.2022, 04:00)

@ CandyMan

DarkDebugger

> Dark Debugger uses 90x50 text mode which is supported by every VGA card.

If I remember some time ago you wrote about some specific high density VESA textmode, was it changed? BTW didn't you mean 80x50 that is VGA std? Unfortunatelly my GTX 670 (and probably newer nvidias) are not compatible enough so I got only black screen :(

---
DOS gives me freedom to unlimited HW access.

CandyMan

25.05.2022, 18:55
(edited by CandyMan, 25.05.2022, 19:12)

@ RayeR

JEMM386 v5.81 hangs

> If I remember some time ago you wrote about some specific high density VESA
> textmode, was it changed?

I use high density mode in another debugger (SD32/64 for my home use) for programs launched with dos extender and not in the Dark Debugger. DD always used 90x50 text mode.

CandyMan

25.05.2022, 18:59

@ CandyMan

JEMM386 v5.81 hangs

Code below also crashes my computer when JEMM386 is loaded:
        mov     ax,0201h
        mov     bx,64K-512
        push    0xF000
        pop     es
        mov     cx,1
        mov     dx,80h
        int     13h
        ret

RayeR

Homepage

CZ,
26.05.2022, 03:59

@ CandyMan

DarkDebugger

I tried again and running dd.exe / dd32.exe just got this mess:
http://rayer.g6.cz/1tmp/dd32.jpg

---
DOS gives me freedom to unlimited HW access.

CandyMan

26.05.2022, 19:41
(edited by CandyMan, 28.05.2022, 15:01)

@ RayeR

DarkDebugger

I have the same thing when I try to set a text mode greater than 132 columns (my NVIDIA graphics card thinks this is graphics mode and displays an invalid image similar to your screenshot).

Probably your text mode greater than 80 columns is not supported.

Try this version of DD32 (80/90 columns):
https://megawrzuta.pl/download/29ce9a283a91e264c6ed544ea6d31dd4.html

Japheth

Homepage

Germany (South),
27.05.2022, 17:10

@ CandyMan

JEMM386 v5.81 hangs

> Code below also crashes my computer when JEMM386 is loaded:

Well, then don't do that... :-D

---
MS-DOS forever!

CandyMan

28.05.2022, 19:27

@ Japheth

JEMM386 v5.81 hangs

Enabling A20 line via port 92h also crash with JEMM386 loaded.
        org     100h
        in      al,92h
        or      al,2
        out     92h,al
        ret

Japheth

Homepage

Germany (South),
29.05.2022, 04:46

@ CandyMan

JEMM386 v5.81 hangs

> Enabling A20 line via port 92h also crash with JEMM386 loaded.

The NOA20 option should disable Jemm's port 92h trapping. However, IIRC, since Jemm resides in extended memory it needs A20 to be always on, so I'm not sure that NOA20 makes Jemm really ignore what happens with A20 - perhaps this option only controls what's mapped in at address 100000h-10FFFFh. Might be a good idea to look into the source code ...

Anyway, on the machines that are available for testing I couldn't reproduce your crash.

---
MS-DOS forever!

RayeR

Homepage

CZ,
11.06.2022, 03:26

@ CandyMan

DarkDebugger

Thank you. I loaded 80c version and when hit Pause it popped up with readable text mode and seems to work but when I hit Esc or CTRL+C/CTRL+ALT+C I got another mess (a bit less messy) like this: http://rayer.g6.cz/1tmp/dd32-80c.jpg
Looks like the font generator gets filled by FFh...
90c version didn't work (same as before).

---
DOS gives me freedom to unlimited HW access.

CandyMan

12.06.2022, 19:00

@ RayeR

DarkDebugger

> ...
> Looks like the font generator gets filled by FFh...
In the original DeGlucker, the font was swapped when switching the video mode. Now I know it's not the right way.

Please try this version:
https://megawrzuta.pl/download/094b8eac6800202f7b982671405ec0fb.html

RayeR

Homepage

CZ,
17.06.2022, 19:09

@ CandyMan

DarkDebugger

Hi, I tried new build but still have some problem when I switch to debugee program or exit I got font blocks like this
https://ibb.co/7WJ9W7f
(should be a file manager running std txt 80x25)

---
DOS gives me freedom to unlimited HW access.

CandyMan

18.06.2022, 22:41

@ RayeR

DarkDebugger

Try this version:
https://megawrzuta.pl/download/eaa5cd2e47100de33d863e1ee7fcd050.html

RayeR

Homepage

CZ,
23.06.2022, 00:07

@ CandyMan

DarkDebugger

I tried this but got the same result.

---
DOS gives me freedom to unlimited HW access.

CandyMan

23.06.2022, 11:27

@ RayeR

DarkDebugger

I am not able to correct it myself. I am asking you for help. Could you please take a look at the code I am sharing with you and make your corrections?
Thanks!

https://megawrzuta.pl/download/c118c7db61e2de544c0439303776b36f.html

Japheth

Homepage

Germany (South),
23.06.2022, 17:05

@ CandyMan

DarkDebugger

I'm currently checking an old graphics app in a vga 16-color mode. This app used to work, but on newer cards the output is "scattered" ( or perhaps it's not the "newer cards", but the "newer cpus").

As it has turned out, I had to make this change:


;    mov     al,ah
;    xchg    al,[bx]
    mov al,[bx]
    mov [bx],ah


Using XCHG with memory operands is usually a bad idea, but even more so in the vga "plane" modes. Better do a clean read to fill the "latch" register, then the write. I guess it's also "significantly" faster.

---
MS-DOS forever!

Back to the board
Thread view  Mix view  Order
22049 Postings in 2034 Threads, 396 registered users, 116 users online (0 registered, 116 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum