home *** CD-ROM | disk | FTP | other *** search
- '---------------------------------------------------------------------------
- '
- ' **** PRESS F5 TO BEGIN TEST ****
- '
- '---------------------------------------------------------------------------
- ' Test: COMPAT.BAS
- '
- ' Copyright (C) 1990, Microsoft Corporation
- '
- ' General: Compatibility Testing
- '
- ' Specific: SCREEN, WIDTH, CIRCLE, CHAIN
- '
- ' Secondary: File I/O
- '
- ' Products: QB4, QB4.5, BC6, QBASIC
- '
- '---------------------------------------------------------------------------
- ' Purpose: Check the Video Display Adaptor
- '
- ' Scenarios: 1. Check the expected screen mode/width combinations for
- ' an MDPA, CGA, EGA, VGA, MCGA, HERCULES, or OLIVETTI
- ' video adaptors.
- '---------------------------------------------------------------------------
- ' Dependencies: User or command line switch.
- '
- ' Method: QBASIC COMPAT
- '
- '---------------------------------------------------------------------------
- ' Revision History:
- '
- ' [ 0] 01-Sep-1988 Created by jimfu
- ' [ 1] 25-May-1990 Added Chain to Compat testing
- '---------------------------------------------------------------------------
-
- DECLARE SUB DetermineMonitor (KeyVal AS INTEGER)
- DECLARE SUB ScreenTest (Mode AS INTEGER, TestWidth AS INTEGER, TestLines AS INTEGER, Pages AS INTEGER)
- DECLARE SUB MPDA (MonInfo AS STRING)
- DECLARE SUB CGA (MonInfo AS STRING)
- DECLARE SUB EGA (MonInfo AS STRING)
- DECLARE SUB VGA (MonInfo AS STRING)
- DECLARE SUB MCGA (MonInfo AS STRING)
- DECLARE SUB HERC (MonInfo AS STRING)
- DECLARE SUB OLIV (MonInfo AS STRING)
-
- '
- ' Declare and Initialize Variables
- '
-
- DEFINT A-Z
-
- DIM KeyStroke AS STRING
- DIM MonInfo AS STRING
- DIM TestFile AS STRING
-
- DIM SHARED VideoType AS STRING
- DIM SHARED TrapCounter
- DIM SHARED Chart(30, 4)
- DIM SHARED I, J, K, Index, Manual
-
- ON ERROR GOTO MainTrap
-
- '
- ' Determine if this test should prompt the user
- '
-
-
- Manual = 0 'Tests will run without prompting the user
-
- Manual = 1 'Tests will prompt the user for input
-
- IF Manual THEN
- CLS
- PRINT "What type of Video Adaptor is in this machine?"
- PRINT
- PRINT " 1. MDPA"
- PRINT " 2. CGA"
- PRINT " 3. EGA"
- PRINT " 4. VGA"
- PRINT " 5. MCGA"
- PRINT " 6. HERCULES"
- PRINT
- PRINT "Please enter the number for the correct display: ";
-
- WHILE KeyVal < 49 OR KeyVal > 55
-
- ' This will allow only the digits 1-7
- ' ( 7 is the unlisted OLIVETTI mode)
-
- KeyStroke = INKEY$
- IF KeyStroke <> "" THEN
- KeyVal = ASC(KeyStroke)
- END IF
- WEND
-
- ELSE
-
- CALL DetermineMonitor(KeyVal)
- PRINT KeyVal
- IF Manual THEN SLEEP
-
- END IF
-
- SELECT CASE KeyVal
- CASE 49
- VideoType = "MDPA "
- CALL MPDA(MonInfo)
- CASE 50
- VideoType = "CGA "
- CALL CGA(MonInfo)
- CASE 51
- VideoType = "EGA "
- CALL EGA(MonInfo)
- CASE 52
- VideoType = "VGA "
- CALL VGA(MonInfo)
- CASE 53
- VideoType = "MCGA "
- CALL MCGA(MonInfo)
- CASE 54
- VideoType = "HERCULES "
- CALL HERC(MonInfo)
- CASE 55
- VideoType = "OLIVETTI "
- CALL OLIV(MonInfo)
- CASE ELSE
- BEEP
- END SELECT
-
- SCREEN 0, , 0, 0 ' Reset video display
-
- IF VideoType = "VGA " THEN ' VGA has too many combinations
- WIDTH 80, 43 ' to fit on a single 25 line screen
- ELSE
- WIDTH 80, 25
- END IF
-
- ' Report the results of the screen tests
-
- CLS
- OPEN "RESULTS.TXT" FOR OUTPUT AS #1
- PRINT #1, "Test: "; VideoType; MonInfo
- PRINT #1, "Mode Rows/Cols Pages"
- PRINT "Test: "; VideoType; MonInfo
- PRINT "Mode Rows/Cols Pages"
- PRINT
- PRINT #1, " "
-
- ' Check to see if the line should be printed. The index was set if
- ' the test was run for the mode/width combination
-
- FOR I = 1 TO 30
- IF Chart(I, 0) = 1 THEN
- PRINT USING " ## ## X ## ## "; Chart(I, 1); Chart(I, 2); Chart(I, 3); Chart(I, 4)
- PRINT #1, USING " ## ## X ## ## "; Chart(I, 1); Chart(I, 2); Chart(I, 3); Chart(I, 4)
- END IF
- NEXT I
-
- PRINT
- PRINT "Check the documentation to ensure that these results are correct."
- PRINT
- PRINT "Press any key to continue"
- IF Manual THEN SLEEP
-
- ' Test file I/O
-
- CLS
- ON ERROR GOTO DriveTrap
- SCREEN 0, , 0, 0
- PRINT "The test will now examine the number of fixed drives connected."
- PRINT
- PRINT
- PRINT
- PRINT " NOTE: You MAY see the DOS message"
- PRINT
- PRINT " Insert diskette for drive X: and strike"
- PRINT " any key when ready"
- PRINT
- PRINT " If this is the case, simply follow the DOS prompt given."
- PRINT
- PRINT
- PRINT
- PRINT
- PRINT
- PRINT
- PRINT " PRESS ANY KEY TO BEGIN DRIVE TESTING"
- IF Manual THEN SLEEP
-
- CLS
- PRINT
- PRINT #1, " "
- PRINT #1, "The following fixed drives were found in this machine:"
- PRINT #1, " (Note: This includes network drives)"
- PRINT
- PRINT "The following fixed drives were found in this machine:"
- PRINT " (Note: This includes network drives)"
-
- Flag = 0
- FOR I = 67 TO 90
- TestFile = CHR$(I) + ":\NoFile.XXX"
- 1 OPEN TestFile FOR INPUT AS #2
- Flag = 1
- PRINT #1, CHR$(I)
- PRINT " "; CHR$(I); " "
- 2 CLOSE #2
- NEXT I
- IF Flag = 0 THEN
- PRINT " None"
- PRINT #1, "None"
- END IF
-
- ON ERROR GOTO MainTrap
- 99 CHAIN "COMPAT1.BAS"
-
- DriveTrap:
-
- IF ERR = 71 OR ERR = 53 THEN
- RESUME NEXT
- END IF
-
- IF ERR = 76 AND ERL = 1 THEN
- RESUME 2
- END IF
-
- IF ERL = 1 THEN
- PRINT "Unexpected"; ERR; "in"; ERL
- PRINT "looking for TestFile"
- END IF
-
- MainTrap:
- SCREEN 0, , 0, 0
- CLS
- PRINT "An unexpected error "; ERR; "was found in"; ERL
- PRINT
- PRINT "PLEASE make note of this error and report it to Microsoft."
- PRINT
- PRINT " PRESS ANY KEY TO CONCLUDE TEST"
- IF Manual THEN SLEEP
- SYSTEM
-
-
- ScreenTrap:
- TrapCounter = TrapCounter + 1
- RESUME NEXT
- END
-
- SUB CGA (MonInfo AS STRING)
- FOR Index = 1 TO 4
- SELECT CASE Index
- CASE 1
- Mode = 0
- TestWidth = 40
- TestLines = 25
- CASE 2
- Mode = 0
- TestWidth = 80
- TestLines = 25
- CASE 3
- Mode = 1
- TestWidth = 40
- TestLines = 25
- CASE 4
- Mode = 2
- TestWidth = 80
- TestLines = 25
- END SELECT
- CALL ScreenTest(Mode, TestWidth, TestLines, Pages)
-
- IF TrapCounter = 0 THEN
- Chart(Index, 0) = 1
- Chart(Index, 1) = Mode
- Chart(Index, 2) = TestWidth
- Chart(Index, 3) = TestLines
- Chart(Index, 4) = Pages
- END IF
- NEXT Index
- END SUB
-
- SUB DetermineMonitor (KeyVal AS INTEGER)
- ON ERROR GOTO ScreenTrap
-
- ' Is it a HERCULES?
-
- TrapCounter = 0
- SCREEN 3
- IF TrapCounter = 0 THEN
- KeyVal = 54
- EXIT SUB
- END IF
-
- ' Is it a OLIVETTI?
-
- TrapCounter = 0
- SCREEN 4
- IF TrapCounter = 0 THEN
- KeyVal = 55
- EXIT SUB
- END IF
-
- ' Is it a VGA?
-
- TrapCounter = 0
- SCREEN 12
- IF TrapCounter = 0 THEN
- KeyVal = 52
- EXIT SUB
- END IF
-
- ' Is it a MCGA?
-
- TrapCounter = 0
- SCREEN 11
- IF TrapCounter = 0 THEN
- KeyVal = 53
- EXIT SUB
- END IF
-
- ' Is it a EGA?
-
- TrapCounter = 0
- SCREEN 9
- IF TrapCounter = 0 THEN
- KeyVal = 51
- EXIT SUB
- END IF
-
- ' Is it a CGA?
-
- TrapCounter = 0
- SCREEN 2
- IF TrapCounter = 0 THEN
- KeyVal = 50
- EXIT SUB
- END IF
-
- ' Must be an MDPA?
-
- KeyVal = 49
-
- END SUB
-
- SUB EGA (MonInfo AS STRING)
- ON ERROR GOTO ScreenTrap
- TrapCounter = 0
- MonInfo = "Monochrome Monitor"
- SCREEN 10
- IF TrapCounter = 1 THEN
- MonInfo = "Enhanced Color Monitor"
- SCREEN 9
- IF TrapCounter = 2 THEN
- MonInfo = "Color Monitor"
- END IF
- END IF
-
- TrapCounter = 0
- IF MonInfo = "Monochrome Monitor" THEN
- FOR Index = 1 TO 4
- SELECT CASE Index
- CASE 1
- Mode = 0
- TestWidth = 80
- TestLines = 25
- CASE 2
- Mode = 0
- TestWidth = 80
- TestLines = 43
- CASE 3
- Mode = 10
- TestWidth = 80
- TestLines = 25
- CASE 4
- Mode = 10
- TestWidth = 80
- TestLines = 43
- END SELECT
- CALL ScreenTest(Mode, TestWidth, TestLines, Pages)
-
- IF TrapCounter = 0 THEN
- Chart(Index, 0) = 1
- Chart(Index, 1) = Mode
- Chart(Index, 2) = TestWidth
- Chart(Index, 3) = TestLines
- Chart(Index, 4) = Pages
- END IF
- NEXT Index
- END IF
-
- IF MonInfo = "Enhanced Color Monitor" THEN
- FOR Index = 1 TO 10
- SELECT CASE Index
- CASE 1
- Mode = 0
- TestWidth = 40
- TestLines = 25
- CASE 2
- Mode = 0
- TestWidth = 40
- TestLines = 43
- CASE 3
- Mode = 0
- TestWidth = 80
- TestLines = 25
- CASE 4
- Mode = 0
- TestWidth = 80
- TestLines = 43
- CASE 5
- Mode = 1
- TestWidth = 40
- TestLines = 25
- CASE 6
- Mode = 2
- TestWidth = 80
- TestLines = 25
- CASE 7
- Mode = 7
- TestWidth = 40
- TestLines = 25
- CASE 8
- Mode = 8
- TestWidth = 80
- TestLines = 25
- CASE 9
- Mode = 9
- TestWidth = 80
- TestLines = 25
- CASE 10
- Mode = 9
- TestWidth = 80
- TestLines = 43
- END SELECT
- CALL ScreenTest(Mode, TestWidth, TestLines, Pages)
-
- IF TrapCounter = 0 THEN
- Chart(Index, 0) = 1
- Chart(Index, 1) = Mode
- Chart(Index, 2) = TestWidth
- Chart(Index, 3) = TestLines
- Chart(Index, 4) = Pages
- END IF
- NEXT Index
- END IF
-
- IF MonInfo = "Color Monitor" THEN
-
- FOR Index = 1 TO 7
- SELECT CASE Index
- CASE 1
- Mode = 0
- TestWidth = 40
- TestLines = 25
- CASE 2
- Mode = 0
- TestWidth = 80
- TestLines = 25
- CASE 3
- Mode = 0
- TestWidth = 80
- TestLines = 25
- CASE 4
- Mode = 1
- TestWidth = 40
- TestLines = 25
- CASE 5
- Mode = 2
- TestWidth = 80
- TestLines = 25
- CASE 6
- Mode = 7
- TestWidth = 40
- TestLines = 25
- CASE 7
- Mode = 8
- TestWidth = 80
- TestLines = 25
- END SELECT
- CALL ScreenTest(Mode, TestWidth, TestLines, Pages)
-
- IF TrapCounter = 0 THEN
- Chart(Index, 0) = 1
- Chart(Index, 1) = Mode
- Chart(Index, 2) = TestWidth
- Chart(Index, 3) = TestLines
- Chart(Index, 4) = Pages
- END IF
- NEXT Index
- END IF
- END SUB
-
- SUB HERC (MonInfo AS STRING)
-
- MonInfo = "(Assumes Monochrome Monitor)"
- FOR Index = 1 TO 2
- SELECT CASE Index
- CASE 1
- Mode = 0
- TestWidth = 80
- TestLines = 25
- CASE 2
- Mode = 3
- TestWidth = 80
- TestLines = 25
- END SELECT
- CALL ScreenTest(Mode, TestWidth, TestLines, Pages)
-
- IF TrapCounter = 0 THEN
- Chart(Index, 0) = 1
- Chart(Index, 1) = Mode
- Chart(Index, 2) = TestWidth
- Chart(Index, 3) = TestLines
- Chart(Index, 4) = Pages
- END IF
- NEXT Index
- END SUB
-
- SUB MCGA (MonInfo AS STRING)
- FOR Index = 1 TO 7
- SELECT CASE Index
- CASE 1
- Mode = 0
- TestWidth = 40
- TestLines = 25
- CASE 2
- Mode = 0
- TestWidth = 80
- TestLines = 25
- CASE 3
- Mode = 1
- TestWidth = 40
- TestLines = 25
- CASE 4
- Mode = 2
- TestWidth = 80
- TestLines = 25
- CASE 5
- Mode = 11
- TestWidth = 80
- TestLines = 30
- CASE 6
- Mode = 11
- TestWidth = 80
- TestLines = 60
- CASE 7
- Mode = 13
- TestWidth = 40
- TestLines = 25
- END SELECT
- CALL ScreenTest(Mode, TestWidth, TestLines, Pages)
-
- IF TrapCounter = 0 THEN
- Chart(Index, 0) = 1
- Chart(Index, 1) = Mode
- Chart(Index, 2) = TestWidth
- Chart(Index, 3) = TestLines
- Chart(Index, 4) = Pages
- END IF
- NEXT Index
- END SUB
-
- SUB MPDA (MonInfo AS STRING)
- Mode = 0
- TestWidth = 80
- TestLines = 25
- Index = 1
- CALL ScreenTest(Mode, TestWidth, TestLines, Pages)
-
- IF TrapCounter = 0 THEN
- Chart(Index, 0) = 1
- Chart(Index, 1) = Mode
- Chart(Index, 2) = TestWidth
- Chart(Index, 3) = TestLines
- Chart(Index, 4) = Pages
- END IF
- END SUB
-
- SUB OLIV (MonInfo AS STRING)
- MonInfo = "(Assumes Color Monitor)"
- FOR Index = 1 TO 10
- SELECT CASE Index
- CASE 1
- Mode = 0
- TestWidth = 40
- TestLines = 25
- CASE 2
- Mode = 0
- TestWidth = 80
- TestLines = 25
- CASE 3
- Mode = 0
- TestWidth = 80
- TestLines = 43
- CASE 4
- Mode = 1
- TestWidth = 40
- TestLines = 25
- CASE 5
- Mode = 2
- TestWidth = 80
- TestLines = 25
- CASE 6
- Mode = 4
- TestWidth = 80
- TestLines = 25
- CASE 7
- Mode = 7
- TestWidth = 40
- TestLines = 25
- CASE 8
- Mode = 8
- TestWidth = 80
- TestLines = 25
- CASE 9
- Mode = 9
- TestWidth = 80
- TestLines = 25
- CASE 10
- Mode = 9
- TestWidth = 80
- TestLines = 43
- END SELECT
- CALL ScreenTest(Mode, TestWidth, TestLines, Pages)
-
- IF TrapCounter = 0 THEN
- Chart(Index, 0) = 1
- Chart(Index, 1) = Mode
- Chart(Index, 2) = TestWidth
- Chart(Index, 3) = TestLines
- Chart(Index, 4) = Pages
- END IF
- NEXT Index
- END SUB
-
- SUB ScreenTest (Mode, TestWidth, TestLines, Pages)
-
- ON ERROR GOTO ScreenTrap
-
- 'Initialize Variables
-
- TrapCounter = 0
- Pages = 0
-
- 'Check Active Pages
-
- FOR I = 0 TO 10
- Temp = TrapCounter
- SCREEN Mode, , I
- WIDTH TestWidth, TestLines
- CLS
-
- ' Increment the number of pages if no new errors
-
- IF Temp = TrapCounter THEN
- Pages = Pages + 1
- END IF
-
- ' If in a graphics screen, do a graphics routine
-
- IF Mode <> 0 AND Temp = TrapCounter THEN
- CIRCLE (150, 100), 100
- END IF
-
- ' If no new errors, draw a border around the screen
-
- IF TrapCounter = 0 THEN
- FOR J = 1 TO TestWidth
- LOCATE 1, J
- PRINT USING "#"; I;
- LOCATE TestLines, J
- PRINT USING "#"; I;
- NEXT J
- FOR J = 1 TO TestLines
- LOCATE J, 1
- PRINT USING "#"; I;
- LOCATE J, TestWidth
- PRINT USING "#"; I;
- NEXT J
- END IF
-
- ' If no errors, print current screen info
-
- IF TrapCounter = 0 THEN
- LOCATE TestLines \ 2 - 3, 5
- PRINT "Mode Row Col Page"
- LOCATE , 5
- PRINT USING "## ## ## ##"; Mode; TestLines; TestWidth; Pages - 1
- LOCATE TestLines \ 2, 5
- PRINT "Check that the screen is"
- LOCATE TestLines \ 2 + 1, 5
- PRINT "bordered with numbers"
- IF Mode <> 0 THEN
- LOCATE TestLines \ 2 + 2, 5
- PRINT "and there is a circle"
- END IF
- LOCATE TestLines \ 2 + 5, 5
-
- ' Have the user verify the screen
-
- PRINT "Press any key to continue"
- IF Manual THEN SLEEP
- END IF
- NEXT I
-
- TrapCounter = 0
-
- ' Verify the Visual Pages
-
- FOR I = 0 TO Pages - 1
- SCREEN Mode, , , I
- NEXT I
- END SUB
-
- SUB VGA (MonInfo AS STRING)
- FOR Index = 1 TO 21
- SELECT CASE Index
- CASE 1
- Mode = 0
- TestWidth = 40
- TestLines = 25
- CASE 2
- Mode = 0
- TestWidth = 40
- TestLines = 43
- CASE 3
- Mode = 0
- TestWidth = 40
- TestLines = 50
- CASE 4
- Mode = 0
- TestWidth = 80
- TestLines = 25
- CASE 5
- Mode = 0
- TestWidth = 80
- TestLines = 43
- CASE 6
- Mode = 0
- TestWidth = 80
- TestLines = 43
- CASE 7
- Mode = 0
- TestWidth = 80
- TestLines = 50
- CASE 8
- Mode = 0
- TestWidth = 80
- TestLines = 50
- CASE 9
- Mode = 1
- TestWidth = 40
- TestLines = 25
- CASE 10
- Mode = 2
- TestWidth = 80
- TestLines = 25
- CASE 11
- Mode = 7
- TestWidth = 40
- TestLines = 25
- CASE 12
- Mode = 8
- TestWidth = 80
- TestLines = 25
- CASE 13
- Mode = 9
- TestWidth = 80
- TestLines = 25
- CASE 14
- Mode = 9
- TestWidth = 80
- TestLines = 43
- CASE 15
- Mode = 10
- TestWidth = 80
- TestLines = 25
- CASE 16
- Mode = 10
- TestWidth = 80
- TestLines = 43
- CASE 17
- Mode = 11
- TestWidth = 80
- TestLines = 30
- CASE 18
- Mode = 11
- TestWidth = 80
- TestLines = 60
- CASE 19
- Mode = 12
- TestWidth = 80
- TestLines = 30
- CASE 20
- Mode = 12
- TestWidth = 80
- TestLines = 60
- CASE 21
- Mode = 13
- TestWidth = 40
- TestLines = 25
- END SELECT
- CALL ScreenTest(Mode, TestWidth, TestLines, Pages)
-
- IF TrapCounter = 0 THEN
- Chart(Index, 0) = 1
- Chart(Index, 1) = Mode
- Chart(Index, 2) = TestWidth
- Chart(Index, 3) = TestLines
- Chart(Index, 4) = Pages
- END IF
- NEXT Index
- END SUB
-
-