jhl@frith.egr.msu.edu (01/19/90)
The following is an extract from the text of a letter I've sent to Tom Zimmer. I figured the net at large might be interested in this: ========== cut here ========== I recently downloaded F-PC 3.5. I installed it for use under VP/ix running under SCO Xenix 386. VP/ix is SCO's DOS under UNIX product. In doing so, I've uncovered a bug in the code for SED. I believe this problem could also occur on a machine directly running MSDOS. The error occurs in the words ?DISKFULL and ?ENOUGHDISK. VP/ix allows you to store DOS files in with Xenix files on your disk. Both of the above mentioned words call GETDISKFREE. GETDISKFREE in turn calls DOS INT 21H function 36H. This function returns the following values: Clusters: 0FFFFH Bytes/sector: 0200H Available clusters: 8514H Sectors/cluster: 0001H Since available clusters is greater than 8000H, the two *D operations result in a negative double number on the stack. This then causes the subsequent D< to fail. SED then tells you that your disk is too full to save your file. Changing the *D to UM* results in proper calculation of free disk space. Here's the two functions from SEDITOR.SEQ: : ?diskfull ( --- f1 ) renaming 0= ?browse or if false exit then ed1hndl >nam 1+ c@ ':' = if ed1hndl >nam c@ bl or 96 - else 0 then getdiskfree * 0 128 um/mod nip *D ( *D should be UM* ) 65000. 128 um/mod nip 0 d< dup if savescr cursor-off 8 4 72 16 box&fill bcr ." \s24\2 WARNING !! " bcr bcr ." You have LESS than 65000 bytes free on disk\b\:03" bcr bcr ." There may be " warn-prompt off> renaming off> backingup restscr cursor-on then ; : ?enoughdisk ( --- f1 ) \ true if there is enough disk space to save ed1hndl >nam 1+ c@ ':' = if ed1hndl >nam c@ bl or 96 - else 0 then getdiskfree * 0 renaming 0= if currentsize 2@ d+ then 128 um/mod nip *D ( *D should be UM* ) #edsegs tend toff - - 5 / 4 * 8 / 0 d< dup \ * .8 / 8 to 128 bytes units if savescr cursor-off 8 4 72 14 box&fill bcr ." \s24\4 WARNING !! \b\:03" bcr bcr ." There is " warn-prompt restscr cursor-on then 0= ; j |%|John Lawitzke, Dale Computer Corp., R&D |%|UUCP: uunet!frith!dale1!jhl Work |%| uunet!frith!ipecac!jhl Home Inquiring minds just wondering. |%|Internet: jhl@frith.egr.msu.edu