The menu directory won't compile with gcc 3.4.0 because gcc complains that "ebp" cannot be used as a constraint. If preserving ebp is necessary then it will have to be done in the assembler code. Gcc 3.3.3 just seems to ignore the constraint. It didn't do anything special to preserve the register. I also noticed that getnumrows returns the contents of 0x484 which is the number of rows minus one but menu.c has this ms->numcols = getnumcols(); ms->numrows = getnumrows(); ms->maxcol = ms->numcols - 1; ms->maxrow = ms->numrows - 1; which makes maxrow = rows - 2. Is this intentional? BTW, if you put this line __asm__ (".code16gcc\n\t"); in an include file and include that file at the top of the .c files then you can simplify the make file considerably. Thanks. -- Ceres 2004-04-27 13:23:45.258 UTC (JD 2453123.058163) X = -1.793726944, Y = 1.473638721, Z = 1.059643564 X' = -0.007481985, Y' = -0.007967670, Z' = -0.002227873
Murali Krishnan Ganapathy
2004-Apr-27 15:18 UTC
[syslinux] Gcc 3.4.0 and syslinux-2.09 menu
TenThumbs wrote:>I also noticed that getnumrows returns the contents of 0x484 which is >the number of rows minus one but menu.c has this > ms->numcols = getnumcols(); > ms->numrows = getnumrows(); > ms->maxcol = ms->numcols - 1; > ms->maxrow = ms->numrows - 1; >which makes maxrow = rows - 2. Is this intentional? > > >According to the info I read "40:84 byte Rows on the screen (less 1, EGA+)" I interpreted it as meaning, that on EGA+ it is one less than the number of rows and otherwise it is equal to the number of rows. I did not want to write code to figure out if I am working with an EGA+ or otherwise (which might complicate matters further if there is going to be serial console support). So I took the conservative approach. If somebody knows for sure that this number is always one less than the number of rows then a change to biosio.c is in order. - Murali
Murali Krishnan Ganapathy wrote:> > According to the info I read > > "40:84 byte Rows on the screen (less 1, EGA+)" > > I interpreted it as meaning, that on EGA+ it is > one less than the number of rows and otherwise it is equal to > the number of rows. > > I did not want to write code to figure out if I am working with an > EGA+ or otherwise (which might complicate matters further if there > is going to be serial console support). So I took the conservative > approach. > > If somebody knows for sure that this number is always one less than > the number of rows then a change to biosio.c is in order. > > - MuraliI believe EGA+ means EGA or higher. My BIOS always returns rows - 1 with my modern card. See also adjust_screen at the end of font.inc. -- Moon 2004-04-27 16:41:04.527 UTC (JD 2453123.195191) X = -0.794338804, Y = -0.564884774, Z = -0.244721580 X' = 0.009814218, Y' = -0.012874930, Z' = -0.005580928