Hi,

the last week I worked on HTMLHELP fixing various bugs, and initial tests by 
Fritz Müller and me give hope that the crashes and display corruptions are 
gone. The changes made so far, which will make it into the next FreeDOS interim 
build, are:

  ! Fix a heap corruption bug leading to crashes and display artifacts
  ! Fix stack overflow in full text search leading to program crash
  ! Fix a crash caused by a stack corruption bug in fnsplit function
  ! Fix a crash caused by a stack corruption bug in search GUI function
  ! Fix integer overflow bug in vertical scroll bar display code
  ! Fix UTF to CP 857 conversion table entry for unicode codepoint 0x11F
  ! Fix UTF to CP 852 conversion table entry for unicode codepoint 0x179
  * Display currently searched file while performing full text search
  * Add several HTML entities to substitution table
  * Add support for codepages 775, 848, 849, 1125, 1131
  ~ Speed up unicode to codepage translation
  ~ Speed up HTML entity substitution
  ~ Changed default calling convention from C to Watcom

There are still many parts of the software which can be improved. The most 
urgent one is the barely usable full-text search, which it is really slow. It 
is slow because HTMLHELP stores its files in a compressed ZIP archive, and 
doing a full-text search inside a compressed archive on an old machine is not 
lightening fast, especially if you reopen the ZIP file a few hundred times 
while doing the search.

I would like to throw out all the ZIP functionallity (20Kb), and bring the size 
of the code segment down to under 64K, enabling using the compact memory model. 
But for ease of use HTMLHELP should continue letting the help author ship the 
help files within some form of container format. Call me crazy, but the most 
simple solution would be using the .PAK container format used by the Quake 3D 
engine. An implementation can be done in around 100 LOC. See 
https://quakewiki.org/wiki/.pak 

If no one intervenes I would like to do a proof of concept implementation to 
see how it performs.

A second area that needs improvement is the unicode to codepage translation. 
While this works reasonably well now, the increasing number of conversion 
tables linked into the binary is becoming a real memory waster. Obvious 
solution would be to throw them out of the binary, and only load the needed 
translation table from an external file. Which leads to the next question: 
Should these tables be stored in a central, well defined directory within 
FreeDOS, accessible to all programs doing this translation stuff? There is 
little to no need for every program to reinvent this wheel. Perhaps such a 
general solution already exists?

Happy to get feedback,
Bernd








_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to