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