Use of ON TIMER In Overlays Can Cause EXE to Exit or Hang
ID: Q92770
|
The information in this article applies to:
-
Microsoft Visual Basic Standard and Professional Editions for MS-DOS, version 1.0
SYMPTOMS
The use of the ON TIMER trapping routine within an overlay of an
application can cause that application to either terminate and exit or
in some cases to hang.
STATUS
Microsoft has confirmed this to be a bug in the Standard and
Professional Editions of Microsoft Visual Basic for MS-DOS, version 1.0.
We are researching this problem and will post new information here in the
Microsoft Knowledge Base as it becomes available.
MORE INFORMATION
The application will terminate and exit if the following example is
compiled and linked for use with overlays:
- Start VBDOS.EXE.
- Create 7 separate .BAS files (listed below) that contain the
following code:
MAIN.BAS:
DECLARE SUB sub1 ()
DECLARE SUB sub2 ()
DECLARE SUB sub3 ()
DECLARE SUB sub4 ()
DECLARE SUB sub5 ()
DECLARE SUB subinit ()
CALL subinit
WHILE 1
CALL sub1
CALL sub2
CALL sub3
CALL sub4
CALL sub5
WEND
SUB1.BAS:
SUB Sub1()
PRINT "Sub1"
END SUB
SUB2.BAS:
SUB Sub2()
PRINT "Sub2"
END SUB
SUB3.BAS:
SUB Sub3()
PRINT "Sub3"
END SUB
SUB4.BAS:
SUB Sub4()
PRINT "Sub4"
END SUB
SUB5.BAS:
SUB Sub5()
PRINT "Sub5"
END SUB
SUBINIT.BAS:
timeLabel:
PRINT "In Timer"
BEEP
RETURN
SUB subinit ()
ON TIMER(1) GOSUB timeLabel
TIMER ON
PRINT "SubInit"
END SUB
- You should now have 7 separate .BAS files in your Project.
- Exit VBDOS.EXE.
- Compile each of these modules using BC.EXE with the switches of:
/o/v/w/d. For example:
BC MAIN.BAS /o/v/w/d;
- Create a Definition File (TEST.DEF) with the following code in it:
SEGMENTS
'sub1_CODE' CLASS 'BC_CODE' ovl:1
'sub2_CODE' CLASS 'BC_CODE' ovl:2
'sub3_CODE' CLASS 'BC_CODE' ovl:3
'sub4_CODE' CLASS 'BC_CODE' ovl:4
'sub5_CODE' CLASS 'BC_CODE' ovl:5
'subinit_CODE' CLASS 'BC_CODE' ovl:6
- LINK all the modules together using overlays and create TEST.EXE.
For example:
c:\> LINK main sub1 sub2 sub3 sub4 sub5 subinit, test.exe,,
vbdcl10e,test.def;
(NOTE: The LINK line above should appear on one line.)
- Run the application TEST.EXE and it will eventually exit out.
The application runs fine if compiled without overlays or if run in the
interpreter (VBDOS.EXE).
To work around this problem use the Timer control on a form and put the
timeLabel: code into the Timer event procedure for the Timer control.
Additional query words:
VBmsdos buglist1.00 1.00
Keywords :
Version : MS-DOS:1.0
Platform : MS-DOS
Issue type :