Stas Sergeev wrote:
> 04.05.2014 02:33, Frantisek Hanzlik пишет:
>> Hi DOSEMU and FreDOS developers,
>>
>> FreeDOS 'more' command (tried both 4.2 and 4.3 versions) isn't working
>> correctly under DOSEMU when used in screen resolutions other than 80
>> columns x 25 rows. From its code (function GetScreenSize() in more.c)
>> it seems as more compute no. of screen rows from BIOS data area, from
>> 40h:4Ah (Columns on screen) and 40h:4Ch (Video page size) values,
>> using formula:
>> ROWS=Video page size / Columns on screen / 2
>>
>> which in this case give bad results, as Video page sizes are multiples
>> of 4k (number of columns is OK). Here is what Video page size values
>> are returned in certain text modes:
>>
>> 80x25        - 40:4C=0x1000=4096, more has 25 rows. 80x25x2=4000=0xFA0
>> 80x43        - 40:4C=0x2000=8192, more has 51 rows. 80x43x2=6880=0x1AE0
>> 80x50        - 40:4C=0x2000=8192, more has 51 rows. 80x50x2=8000=0x1F40
>> 80x60        - 40:4C=0x3000=12288, more has 76 rows. 80x60x2=9600=0x2580
>> 132x25       - 40:4C=0x2000=8192, more has 31 rows. 132x25x2=6600=0x19C8
>> 132x43       - 40:4C=0x3000=12288, more has 46 rows. 132x43x2=11352=0x2C58
>> 132x60       - 40:4C=0x4000=16384, more has 62 rows. 132x60x2=15840=0x3DE0
>>
>> >From some informations on net (e.g. here:
>> http://marc.info/?l=freedos-dev&m=106291977718089&w=2
>> ) it seems as video page size isn't reliable/suitable for no. of rows
>> on screen computing - but I'm not sure, as this may be DOSEMU bug
>> as well. I want to report a bug, but what? DOSEMU, or 'more' command?
> I think it is a bug in dosemu (or both).
> I am currently experimenting with bochs vgabios, and
> it has different page alignment than the one of dosemu.
> Namely:
> 
> -#define TEXT_SIZE(co,li) (((co*li*2)+4095)&(~4095)) /* 4000(4096?) text page 
> size */
> +#define TEXT_SIZE(co,li) (((co*li*2)|0xff)+1)
> 
> 
> So please try 'vbios_tweaks' branch and see if maybe mode
> is now fine?

Just trying dosemu-1.4.0.8-git647.gf966688.fc19.i686. But when now
is video page size calculated as You mentioned above (i.e. rounded up
to the 256 byte boundary), then still isn't possible take video page
size for no. of screen rows calculating - there may be deviation from
the correct value up to (128 / cols). E.g. when running 'dosemu -t'
in xterm window 40 cols x 48 lines, then Your video page size/
TEXT_SIZE=4096, from which 'more' calculate 4096 / 40 / 2 = 51.2;
thus it will consider that screen has 51 lines - three more than
in reality.
For 'usual' VBE defined modes is situation better:

 80x25, VidPgSz= 4096, more has: 25.60== 25 rows, delta=0.
 80x43, VidPgSz= 6912, more has: 43.20== 43 rows, delta=0.
 80x50, VidPgSz= 8192, more has: 51.20== 51 rows, delta=1.
 80x60, VidPgSz= 9728, more has: 60.80== 60 rows, delta=0.
132x25, VidPgSz= 6656, more has: 25.21== 25 rows, delta=0.
132x43, VidPgSz=11520, more has: 43.64== 43 rows, delta=0.
132x50, VidPgSz=13312, more has: 50.42== 50 rows, delta=0.
132x60, VidPgSz=15872, more has: 60.12== 60 rows, delta=0.

thus only 80 cols x 50 rows is affected (with 1 line difference)

Anyhow, FreeDOS 'mode con' in any resolution works fine and display
correct cols and rows numbers (I not know how did it).

Franta Hanzlik


------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
• 3 signs your SCM is hindering your productivity
• Requirements for releasing software faster
• Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce
_______________________________________________
Dosemu-devel mailing list
Dosemu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dosemu-devel

Reply via email to