05.05.2014 11:55, Frantisek Hanzlik пишет: > 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). OK, thanks for testing. So have they looked into your patch?
------------------------------------------------------------------------------ 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