Hi All, While recently performing a re-install of everything (System Commander Multiple DOS, Windows, Linux booting) on my Pentium Pro, I discovered a minor compatibility issue regarding ANSI.SYS support. Without digging into it more, I cannot say if the issue is NANSI.SYS or elsewhere in FreeDOS.
Basically, one of the versions of my ancient (written back in the early 90’s) Turbo Pascal directory listing programs used ANSI escape sequences to provide color. Instead of blindly assuming ANSI support is present, it first probes DOS to verify the functionality. It performs the probe through standard DOS I/O function calls and works on other DOS platforms (such as MS-DOS, PC-DOS and DR-DOS). However, the test fails under FreeDOS. function DetectAnsi : boolean; assembler; asm MOV DI, OFFSET @AnsiTestStr @2: MOV DL, CS:[DI] INC DI CMP DL, 0 JE @3 MOV AH, $02 INT $21 JMP @2 @3: MOV AH, $06 MOV DL, $FF INT $21 JZ @5 CMP AL, 27 JNE @5 MOV AH, $06 MOV DL, $FF INT $21 JZ @5 CMP AL, '[' JNE @5 @4: MOV AH, $06 MOV DL, $FF INT $21 JZ @5 CMP AL,'R' JNE @4 @5: MOV AH, $06 MOV DL, $FF INT $21 JZ @6 CMP AL,13 JNE @5 MOV AL, True JMP @Done @6: { Not Found } MOV DI, OFFSET @AnsiTestStr @7: MOV DL, CS:[DI] INC DI CMP DL, 0 JE @8 MOV AH, $02 MOV DL, 8 INT $21 MOV AH, $02 MOV DL, 32 INT $21 MOV AH, $02 MOV DL, 8 INT $21 JMP @7 @8: MOV AL, False JMP @Done @AnsiTestStr: DB 27,'[6n',0 @Done: MOV AnsiFound, AL end; Sorry, I was never one for doing a lot of code comments. And yes, it is far from efficient, elegant or pretty. But, the snippet of code is roughly 30 years old. :-) As you can see, it sends an escape sequence to request information. If it receives the data, the test passes. Otherwise, it cleans up the displayed garbage and moves along without ANSI support. I wouldn’t call it a serious compatibility issue. Even this ancient directory lister provides support to bypass the probe and force ANSI support OFF or ON. dir l: Interestingly, this same program reveals a couple other cross DOS compatibility issues as well. For example, under MSDOS using MSCDEX + OAKCDROM driver, the CD can be listed. It also likes NWCDEX + OAKCDROM under DR-DOS. However, not under FreeDOS using our supplied drivers (invalid drive reported) and crashes (divide by zero) when accessing the CD under PC-DOS with IBMIDECD + MSCDEX. Anyhow, the program source is available on GitHub under https://github.com/shidel/DustyTP7/tree/master/D <https://github.com/shidel/DustyTP7/tree/master/D> and a precompiled binary at https://github.com/shidel/DustyTP7/blob/master/bin/D.EXE <https://github.com/shidel/DustyTP7/blob/master/bin/D.EXE> :-) Jerome
_______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel