(I added comp.os.msdos.programmer in case someone there wants to help with
your TSR.)
Ben Lunt's TSR demo:
http://www.frontiernet.net/~fys/tsrdemo.htm
> I try on cession DOS of Windows XP
TSR under XP?. DOS under XP doesn't work quite correctly.
E.g., one issue with XP is that it doesn't update BIOS variables unless a
BIOS call is made:
http://groups.google.com/group/comp.os.msdos.djgpp/msg/67916cf4c1c73b7e?hl=en
http://groups.google.com/group/comp.os.msdos.djgpp/msg/30ac39382eb3560e?hl=en
<Almas' TSR code snipped. Can be read here.>
http://groups.google.com/group/alt.lang.asm/msg/9de6cb772bb707ba
Rod Pemberton
Hi Rod,
I threw together list little code snippet to see for myself. It seems
to update the timer tick just fine. It could be that WinXP emulates
the write to video memory by calling the BIOS print char service call.
I have WinXP SP2 [version 5.1.2600 is displayed at DOS prompt]
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; assemble using NBASM (http://www.frontiernet.net/~fys/newbasic.htm)
.model tiny
.code
.386
org 100h
xor ax,ax
mov es,ax
mov si,046Ch
; depending on you CPU speed, adjust this value. It
; is simply a delay to end the program so we don't call
; a BIOS routine to check for keypress or something.
mov ecx,400000
main_loop: mov ax,es:[si]
call prthex
dec ecx
jnz main_loop
.exit
prthex proc near uses ax cx dx es di
mov cx,0B800h
mov es,cx
xor di,di
mov cx,04
PLoop: rol ax,04 ;
push ax ;
and al,0Fh ;
daa ;
add al,0F0h ;
adc al,40h ;
mov ah,07h
stosw
pop ax ;
loop PLoop ;
ret
prthex endp
.end
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Thanks.
Now I'm wondering if the error he found is/was in DJGPP. Anyway, I'll stop
passing that information along assuming that whatever the problem was has
been fixed or was erroneous.
So, you tried and fixed Almas' TSR too? :-)
Rod Pemberton
No. I didn't look at the code. I was just interested in the
timer tick. I thought for sure that WinXP would keep it tick'n
like it should.
Ben