
MR>setlocal

   unalias set setdos >& nul

MR>::setdos | find cursor | (set %@line[con,0] ^ set %@line[con,0])
HL>setdos|(set %@line[con,7]^set %@line[con,0])
MR>setdos /s0:0
     |
MR>setdos /s%[cursor overstike]:%[cursor insert]
MR>endlocal

Thanks, MARK RUYS and HUGO LANDSMAN. I had to add the UNALIAS because
my alias for SET was getting in the way.

I'm a little leery of the magic number 7, however, since the
organization of the SETDOS display is subject to change. I still think
that having a variable would make things easier. (Unlike the
foreground/backgroud case, a single variable should suffice.)

Here's a silly application:

setlocal
unalias set setdos >& nul
setdos|(set %@line[con,7]^set %@line[con,0])
set i=0
echos Press ESC to quit.
:loop
setdos /s%i:%i
inkey /w1 %%wait >nul
if %@ascii[%wait] ne 27 (*set i=%@EVAL[(%i + 9) %% 101] ^goto loop)
setdos /s%[cursor overstike]:%[cursor insert]
endlocal

