• Please review our updated Terms and Rules here

Commax Excell lt-386sx - missing file

goostaw

Member
Joined
Nov 11, 2018
Messages
26
Location
Poland
hi

I need your help.

The case concerns a 1990 laptop - Commax Excell lt-386sx.
Built-in vga graphics card is Cirrus Logic 510/520.
Laptop seems to be fully functional now, but....

I can not switch between the built-in screen and the external monitor.
In bios settings there is no such option. I did not find any combination of keys that would work.
I searched the internet and found an article ( August '91 "PC Magazine" ) from which it appears that the manufacturer added an application that changed the working modes - also switching internal/external monitor.
The utility is probably called 'switcher.com'
I tried the 'eagle.com' application, but it requires a video bios in minimal version 3 (here is 2.22)and program does not start.



Maybe someone has such or similar computer model and this program ( probably switcher.com )
I will be grateful for any information. :-D
 
give it a try, I could not try it.. there is no switcher.com file or .exe file that can run is dos mode.
 
Thank You for Your reply :)

Switcher is of course not a very unique name, and many different aplications have one.
This one for win is a bit different thing.

ctrl alt 6 may - yes. I found info about these keys. Did not work.
( Maybe the keys will be able to work with the 'switcher' in memory - i suppose. Maybe not. )

Unfortunately Commax is not a very popular brand, and probably not many of these computers are in use yet.
Maybe there is a similar computer (the same graphics chipset ( cl 510/520 ) , the same graphics bios ) and similar tsr which will work.
 
I guess there is a Video Interrupt switching the outputs. It could be a TSR, but there is no technical need for it. If switcher.exe also handles key-combinations it will be a TSR, but for switching itself no need for TSR.

You may search "Ralph Browns Interrupt List" for your Vendor and Chips (Commax, CL, 510, ...). It is a bit tricky to search it online. Loading down as txt and using grep is more user-friendly I think.
"grep -i commax *.txt"
If this does not bring a result, you could try function-by-function. I already did so to identify available video modes for an embedded device.
Used Turbo C, pseudo code:
Code:
int ax, bx, cx, dx, result;
while(1) {
    printf("please enter parameters for int0x10 execution\n");
    scanf(...) // get AX, BX, CX, DX
    result = int86(0x10, ax, bx, ...)
    printf("result = 0x%04x\n", result);
}
If you need, I could dig up that floppy with that tool and upload it.

Is it CL-GD510 / 520 (A) ? There is a Datasheet for it, end of page http://www.vgamuseum.info/index.php/cpu/item/126-cirrus-logic-cl-gd510-520 . I'll look at it now, those old VGA chip are not that difficult to understand and maybe there's written how to switch outputs.
Hopefully that's no custom video-switching-logic. If I can't find anything, maybe you could verify by following the signals from vga connector to chip and look whether there is something or not.
 
Many thanks for the valuable help.

it looks like it will not happen without studying to bios Interrupts.
At least there is a good reason.
Is the prototype of this int86() function in „dos.h” ? I have somewere floppy with ancient borland c++ 2.0. I need to check if this file is there.
Regards.
 
Instead of doing real work I figured I could write the int10 test program for you. So here it is, lovingly compiled on a Toshiba T1200.

http://esp.iki.fi/dosint.zip

Includes the resulting executable and source. I tested it by moving cursor (input 2,0,0,0) and it worked.
 
The first attempt worked. :)



the matter is actually quite simple.



REGS ( defined in dos.h ) is 2 element struct of structs contains references to procesor registers.
int86() passes (via inregs) the value of the interrupt call (10h) to the registers and in this case, does not return anything needed.

AL register has 2 states possible.
http://www.ctyme.com/intr/rb-0195.htm

that's it.

Many thanks to stecdose for valuable links and information. :D

Ps. borland c++ 2.0 on this machine gives advice.;)
 
Works! :D

View attachment 49354

Code:
#include <dos.h>
#include <stdio.h>

main( )
{
	union REGS inregs, outregs;
	int a;
	printf( "i - internal LCD\ne - external monitor\nq - quit\n" );
	do a = getch();
	while ( a != 'i' && a != 'e' && a != 'q' );
	if ( a != 'q' )
	{
		if ( a == 'i' ) inregs.h.al = 0x00;
		else inregs.h.al = 0x01;

		inregs.h.ah = 0x12;
		inregs.h.bl = 0x92;
		int86(0x10, &inregs, &outregs);
	}
	return 0;
}

Indeed quire simple. REGS is a struct of 2 struct (defined in dos.h ) containing values ​​that reference processor registers. Int86() passes these objects as parameters of the interrupt call(inregs). In this case, the register values ​​after the interrupt call are not significant.
AL register contains 2 possible states http://www.ctyme.com/intr/rb-0195.htm
And that's it. :)

Many thanks to stecdose for valuable links and information. :)
In attachement bin + source ( Maybe someone will use it )
 

Attachments

  • commax_sw.zip
    7.6 KB · Views: 1
I am glad this worked for you :)

And like you discovered, it is actually quite simple :)

The font looks very special to me. I am on a project to collect Video-ROMs and extract fonts. I would be happy if you could dump your video rom and send it over.

Here's the link to my project (already >200 extracted fonts, bin, c-header and generated images available): https://github.com/spacerace/romfont

I have attached "Rom Extension Extractor" here in this post + pascal source to dump ROMs.
View attachment ree.zip
 
Back
Top