Eric Auer wrote:

> Hi all, I think I now have the NANSI version that I wanted. Please try
> or read the sources to find new errors (try diff or wdiff -l piped to
> less, and ignore whitespace changes...).
>
> To compile / assemble, you can use freeware (max 286/287, max 64k size
> for each file) version of Arrowsoft ASM, or you can use MASM. Note that
> I am NOT used to this syntax, so I may have messed up things where RAM
> variables are accessed. However, both Tyler and me have tried the new
> NANSI and it seems to work. You can use Borland TLINK or another link
> tool, but it must accept files without stack segment (VAL does not). You
> need EXE2BIN, too. You no longer need MAKE - I included a batch version
> of the make script for people with no MAKE installed.
>
> New binary size is < 4096 bytes still. TSR size should have changed only
> slightly - please compare. I have done "big time" NANSI dot DOC updates,
> explaining the new command line switches. IMPORTANT: The /K switch has
> changed in meaning! Old style /K thing got renamed to /C ...
>
> You can find my new NANSI 4.0 version on:
> http://www.coli.uni-sb.de/~eric/stuff/soft/by-others/ nansi40.zip
>
> ... but the documentation still points to Dan Kegel. Dan, could you
> mirror it on your page, the official NANSI page?
> http://alumni.caltech.edu/~dank/nansi/
>
> Here a list of possible command line switches and a list of changes:
> The /R switch to enable screen reader compatible scrolling turned out
> to be NOT needed for NANSI. NANSI always uses BIOS for scrolling, unlike
> those MS ANSI versions which needed the /R switch. I have changed the
> extended (101+ key) keyboard detection to the method used in new FreeDOS
> kernels. I have changed the /K switch to mean the same as SWITCHES=/K
> means to the FreeDOS and MS kernels.
>
>         DEVICE[HIGH]=NANSI.SYS [/K] [/C] [/X] [/S] [/Tnn] [/R] [/B] [/P]
>         In short ([/Q] means "optionally give the /Q switch"):
> /K "force 84 key keyboard style"        /X "extended key definitions"
> /S "safe mode - no key redefinitions"   /Tnn "mode nn is a text mode"
> /R "use BIOS (for some screen readers)" /B "use BIOS for bell sound"
> /P "pass all unknown requests to CON"   /C "force 101+ key keyboard style"
>
>
> /K forces using 84 key style BIOS calls: If your BIOS does not support
>    101+ key keyboards or if you want to simulate an 84 key keyboard, use this.
>    Real 84 key keyboards should be autodetected.
> /C forces using 101+ key style BIOS calls: Use if autodetection of your
>    101+ key keyboard did not work properly and you have troubles using F11/F12.
> /X causes NANSI to differentiate between "numeric keypad" and "grey keypad"
>    versions of keys in some kludgy way.
> /S disables the feature that would allow key redefinitions (should save 512+5
>    bytes of RAM, too??). Protects against "ANSIbombs".
> /Tnn declares that video mode nn (hex!) is a text mode. NANSI uses direct
>    video memory access instead of BIOS for text mode writing (but it always
>    uses BIOS for scrolling).
> /R (different from MS ANSI /R) declares all modes to be "graphics" modes,
>    which forces NANSI to use only the BIOS to position the cursor and write
>    chars and to resize the cursor. Yes, strange enough, but NANSI does use
>    direct I/O port access to position (and resize, on video mode change) the
>    cursor otherwise! The /R mode is much slower but allows NANSI to work in
>    environments where there is no normal video hardware (e.g. on a PDA or in
>    a multitasking environment which does not simulate video hardware)...!?
> /B forces NANSI to use the BIOS beep sound to beep. Otherwise, it will make a
>    short, deep (1/9 second, 440 Hz) "subtle" beep, but this only works if you
>    have PC-AT style speaker and timer hardware. So /B is for people with very
>    "legacy free" hardware and for people who want the classic BIOS beep.
> /P allows NANIS to forward all unknown device driver requests to the device
>    that has been CON until you loaded NANSI.
>
> So what is new?
> - moved start message out of resident part
> - /P option, if you have CON which can do more device stuff than NANSI and you
>   want NANSI to "transparently" handle this situation (untested, obviously)
> - /K option to force old style keyboard access
> - old /K option is now more properly called /C
> - /B option to bypass hardware beep
> - /R option to bypass hardware cursor stuff and direct video memory access
> - changed 101+ key keyboard detection
> - renamed labels with pointless names (like "kludge_xxxx" with xxxx being hex)
>
> If everything works, our NANSI is now FreeDOS 1.0 ready (but as told, the /R
> option was not even necessary, and the /P option implements a thing which no
> ANSI that I know has...). There is no int2f.1a interface still, but I wonder
> who would need this anyway. Luckily it is "post FreeDOS 1.0" already, so no
> need to debate about that.
>
> (int2f.1a controls an "/L" flag and an "interlock" (int10.0 hooking) flag,
> ... (hm, check the RBIL entry on int29 ;-)) ... plus there is an install
> check and you can reach ANSI IOCTL R/W through int 2f.1a01 - but RBIL does
> not tell WHICH IOCTLs ANSI should have anyway!?)
>
>
> I notice that neither normal nor /R mode show a cursor in graphics modes,
> I hope I did not introduce a new bug? Testing in XDOSEMU, maybe this is the
> reason of this behaviour... Maybe not. Maybe you have to enable the special
> graphics mode cursor simulation with an ANSI escape sequence ever since.
>
>
> Whatever. Please try the binary or read the sources. I would really like to
> have any feeback before this is officially declared 4.0 and a news item is
> put up. Thanks! I can release 4.0 multiple times as long as only fd-dev
> knows about it. Avoids wasting the nice dot 0 version number .
>
> Merry FreeDOS (or something) .
>
> Eric.