Microsoft KB Archive/92770
PSS ID Number: 92770
Article Last Modified on 1/8/2003
The information in this article applies to:
- Microsoft Visual Basic for MS-DOS 1.0
This article was previously published under Q92770
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.
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.
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:
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
SUB Sub1() PRINT "Sub1" END SUB
SUB Sub2() PRINT "Sub2" END SUB
SUB Sub3() PRINT "Sub3" END SUB
SUB Sub4() PRINT "Sub4" END SUB
SUB Sub5() PRINT "Sub5" END SUB
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
Technology: kbAudDeveloper kbVB100DOS kbVBSearch kbZNotKeyword3