H E L P ! ! !
Does anyone know why any PB TSR program returns an error "5 - illegal function call" when the line POPUP SLEEP is executed - ONLY TODAY (JUNE 13). I have a TSR program developed in PB-DOS 3.30 with almost 3,000 users. Today 6/13/2000 our support team reported a huge amount of people complaining about this error. After checking the problem in our lab, we have discovered that:
- The problem appears in any simple TSR program.
- By changing the system date (forwards or backwards) and rebooting the computer, the error does not occur any more. It appears only if the system date is June 13!
- This error occurs on Windows 95, Windows 98 and Windows 2000 but not on Windows NT-4 (???)
- We have checked for viruses using several tools and found that our machines are clean!
- We have compiled it with all PB-DOS versions (from 3.00 to 3.50) and the error persists!
What is going on?! Is it an unknown Y2K bug affecting PB-DOS? Should it be a virus? If anyone wants to try, this little TSR may be compiled and run under the conditions above.
So far, all I have to do is to tell my users to change the system date and reboot, before run my program
'==============================
'PowerBasic 3.5
$COMPILE EXE
$LIB IPRINT OFF, COM OFF
$OPTION CNTLBREAK OFF
$STRING 8
DEFINT A-Z
%AX=1
%BX=2
%CX=3
%DX=4
%SI=5
%DI=6
%BP=7
%DS=8
%ES=9
CLS
Par$=LTRIM$(RTRIM$(UCASE$(COMMAND$)))
IF INSTR(Par$,"/D") THEN
REG %AX, &HFF
CALL INTERRUPT &H97
END
END IF
POPUP KEY CHR$(8,46,115) 'ALT-C "hot key"
POPUP INTERRUPT &H97, 10, OFF, OFF
POPUP MULTIPLEX 253,253
REG %AX,253
REG %DX,253
CALL INTERRUPT &H2F
IF REG(%AX)<>253 AND REG(%DX)<>253 THEN END
d&=SETMEM(-700000)
PRINT "ALT-C to activate. Type ERROR /D to quit."
WHILE 1 = 1
REG %AX, 252:REG %DX,252
POPUP SLEEP USING EMS, "c:\capt.swp"
Ax=REG(%AX)
IF Ax=253 AND REG(%DX)=253 THEN
PRINT "Already installed..."
PRINT "ALT-C to activate. Type ERROR /D to quit."
PRINT""
ITERATE
END IF
IF Ax=255 THEN
POPUP QUIET OFF
POPUP INTERRUPT OFF
POPUP TIMER 1
nSeconds=0
WHILE nSeconds < 4
POPUP SLEEP
IF POPUP(1) THEN
PRINT:PRINT "Unloaded from memory."
END
END IF
INCR nSeconds
LOOP
ITERATE
END IF
CLS
PRINT "ALT-C pressed."
WEND
END
Does anyone know why any PB TSR program returns an error "5 - illegal function call" when the line POPUP SLEEP is executed - ONLY TODAY (JUNE 13). I have a TSR program developed in PB-DOS 3.30 with almost 3,000 users. Today 6/13/2000 our support team reported a huge amount of people complaining about this error. After checking the problem in our lab, we have discovered that:
- The problem appears in any simple TSR program.
- By changing the system date (forwards or backwards) and rebooting the computer, the error does not occur any more. It appears only if the system date is June 13!
- This error occurs on Windows 95, Windows 98 and Windows 2000 but not on Windows NT-4 (???)
- We have checked for viruses using several tools and found that our machines are clean!
- We have compiled it with all PB-DOS versions (from 3.00 to 3.50) and the error persists!
What is going on?! Is it an unknown Y2K bug affecting PB-DOS? Should it be a virus? If anyone wants to try, this little TSR may be compiled and run under the conditions above.
So far, all I have to do is to tell my users to change the system date and reboot, before run my program

'==============================
'PowerBasic 3.5
$COMPILE EXE
$LIB IPRINT OFF, COM OFF
$OPTION CNTLBREAK OFF
$STRING 8
DEFINT A-Z
%AX=1
%BX=2
%CX=3
%DX=4
%SI=5
%DI=6
%BP=7
%DS=8
%ES=9
CLS
Par$=LTRIM$(RTRIM$(UCASE$(COMMAND$)))
IF INSTR(Par$,"/D") THEN
REG %AX, &HFF
CALL INTERRUPT &H97
END
END IF
POPUP KEY CHR$(8,46,115) 'ALT-C "hot key"
POPUP INTERRUPT &H97, 10, OFF, OFF
POPUP MULTIPLEX 253,253
REG %AX,253
REG %DX,253
CALL INTERRUPT &H2F
IF REG(%AX)<>253 AND REG(%DX)<>253 THEN END
d&=SETMEM(-700000)
PRINT "ALT-C to activate. Type ERROR /D to quit."
WHILE 1 = 1
REG %AX, 252:REG %DX,252
POPUP SLEEP USING EMS, "c:\capt.swp"
Ax=REG(%AX)
IF Ax=253 AND REG(%DX)=253 THEN
PRINT "Already installed..."
PRINT "ALT-C to activate. Type ERROR /D to quit."
PRINT""
ITERATE
END IF
IF Ax=255 THEN
POPUP QUIET OFF
POPUP INTERRUPT OFF
POPUP TIMER 1
nSeconds=0
WHILE nSeconds < 4
POPUP SLEEP
IF POPUP(1) THEN
PRINT:PRINT "Unloaded from memory."
END
END IF
INCR nSeconds
LOOP
ITERATE
END IF
CLS
PRINT "ALT-C pressed."
WEND
END
Comment