home *** CD-ROM | disk | FTP | other *** search
- REM ---------------------------------------------------------------------
- REM Program: Dipset
- REM Purpose: Mother Board Hardware Switch Configuration
- REM Original Author : Steve Dorr
- REM This Version: Pete Willard
- REM ---------------------------------------------------------------------
- REM Influenced by: Systat.Bas Author: Crisp
-
- REM Revsion History Made By
- REM ---------------------------------------------------------------------
- REM Display modifications : Feldmann (MCI 248-9063)
- REM Turbo Basic Conversion, clean-up
- REM and corrections: Peter K. Willard
-
- REM Reference: "CONFIG.BAS" Peter G. Wohlmut
- REM "POKEPEEK.DOC" Author unknown
- REM "I/O ADDRESS MAP" in the technical reference manual
- REM "Programmer's
- REM Problem Solver" Robert Jourdain
-
-
- '
- '|--------- REGNAMES.INC FROM BORLAND
- '
- %FLAGS = 0
- %AX = 1
- %BX = 2
- %CX = 3
- %DX = 4
- %SI = 5
- %DI = 6
- %BP = 7
- %DS = 8
- %ES = 9
-
- '
- '-------------------------------------------------------------------------
- ' color constants for video screen
- %BLACK = 0
- %BLUE = 1
- %GREEN = 2
- %CYAN = 3
- %RED = 4
- %PURPLE = 5
- %BROWN = 6
- %WHITE = 7
- %GRAY = 8
- %LTBLUE = 9
- %LTGREEN = 10
- %LTCYAN = 11
- %LTRED = 12
- %LTPURPLE= 13
- %YELLOW = 14
- %LTWHITE = 15
- %BLINK = 16
- %REVERSE = 112
-
- SUB EOL
-
-
-
- ' LIMITED USE: ASSUMED 80 COLUMN SCREEN WITH NORMAL ATTRIBUTES
- ' ALLOWS FOR NO CALLED PARAMETERS
-
- XSTART = POS-1
- YSTART = CSRLIN-1
-
- REG %AX,&H0600 ' SCROLL FUNCTION WITH 0 LINES SCROLLED
- REG %BX,(7*256) 'ATTRIBUTE SET AT 7 (%white, NORMAL)
- REG %CX,(YSTART*256)+XSTART
- REG %DX,(YSTART*256)+79
- CALL INTERRUPT &H10 ' EXECUTE
-
- END SUB
-
- SUB CSound
- '
- ' Produces a short signalling sound.
- ' Written by Rick Kerner, 1/5/88
- SOUND 760, .5
- SOUND 1080, .5
- END SUB 'CSound
-
- '
- '|----------- PRESS A KEY PROCEDURE, ALWAYS RETURNS UPPERCASE
- ' Uses the varialble ANS$
-
- SUB GETCH
- SHARED ANS$
- WHILE NOT INSTAT
- ANS$ = ""
- WEND
- ANS$ = INKEY$
- ANS$ = UCASE$(ANS$)
- END SUB
-
- SUB PRINTAT(X,Y)
- SHARED Z$
- LOCATE X,Y
- PRINT Z$;
- END SUB
-
- SUB DRAW.SWITCH(START)
- SHARED PLINE
- '|-----------------------------Draw and label switches
- DECR START,1
- color %yellow
-
- LOCATE START+1,PLINE:PRINT " SW1 SW2 "
- LOCATE START+2,PLINE:PRINT "┌─╥─╥─╥─╥─╥─╥─╥─┐ ┌─╥─╥─╥─╥─╥─╥─╥─┐"
- LOCATE START+3,PLINE:PRINT "│ ║ ║ ║ ║ ║ ║ ║ │on│ ║ ║ ║ ║ ║ ║ ║ │"
- LOCATE START+4,PLINE:PRINT "│ ║ ║ ║ ║ ║ ║ ║ │ │ ║ ║ ║ ║ ║ ║ ║ │"
- LOCATE START+5,PLINE:PRINT "└─╨─╨─╨─╨─╨─╨─╨─┘ └─╨─╨─╨─╨─╨─╨─╨─┘"
- LOCATE START+6,PLINE:PRINT " 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 "
- color %white
- END SUB
-
-
- DEFDBL E
- DIM SW$(2,8)
- UP$= CHR$(223)
- DOWN$= CHR$(220)
-
- KEY OFF
- DEF SEG
- POKE &H5C,25
-
- Main.menu:
- CLS
- KEY OFF
- LOCATE 8,19,0
- Z$= "Review/Set DIP Switches for IBM-PC or COMPAQ" :CALL PRINTAT(8,19)
- Z$= "1. View current DIP switch settings." :CALL PRINTAT(10,22)
- Z$= "2. Configure DIP switch settings." :CALL PRINTAT(12,22)
- Z$= "3. Exit to DOS." :CALL PRINTAT(14,22)
- Z$= "[Enter option]" :CALL PRINTAT(16,32)
-
- CALL GETCH
- O=VAL(ANS$)
- ANS$ = ""
- SELECT CASE O
-
- CASE 1
- CLS
- SETUP = 0
- GOSUB GET.SWITCH
- EXIT SELECT
-
- CASE 2
- SETUP = 1
- GOSUB SET.SWITCH
- EXIT SELECT
-
- CASE 3
- GOSUB PROGRAM.DONE
- EXIT SELECT
- CASE ELSE
- GOTO Main.menu
- END SELECT
-
- GOTO Main.menu
-
- '|-----------------------------------------------------------------------|
-
- Get.Switch:
- PLINE = 15
- START = 1
- CALL DRAW.SWITCH(START)
- TEMP=INP(&H61)
- REM ***** turn off keyboard and read switches
- OUT &H61,&HC8
- SW1=INP(&H60)
- SW2H=(INP(&H62) AND &HF)
- REM ***** turn keyboard back on
- OUT &H61,TEMP
- SW2L=(INP(&H62) AND &HF)
- SW2=16*SW2H+SW2L
-
- REM ***** draw switch status
- FOR I=0 TO 7
- IF (SW1 AND 2^I)/2^I=1 THEN GOTO SKIP.A
- LOCATE 3,I*2+(PLINE+1):COLOR %LTRED:PRINT UP$:COLOR %WHITE:GOTO SKIP.B
-
- SKIP.A:
- LOCATE 4,I*2+(PLINE+1):COLOR %LTRED:PRINT DOWN$:COLOR %WHITE
-
- SKIP.B:
- IF (SW2 AND 2^I)/2^I=1 THEN GOTO SKIP.C
- LOCATE 3,I*2+(PLINE+21):COLOR %LTRED:PRINT UP$:COLOR %WHITE:GOTO SKIP.D
-
- SKIP.C:
- LOCATE 4,I*2+(PLINE+21):COLOR %LTRED:PRINT DOWN$:COLOR %WHITE
-
- SKIP.D:
- NEXT I
-
- REM ***** find status in ram
- DEF SEG=&H40
-
- REM ***** memory size
- TOTMEM=256*PEEK(&H14)+PEEK(&H13)
- IOMEM=256*PEEK(&H16)+PEEK(&H15)
-
- REM ***** equipment flags (bits 1,8,13 not used)
- EQUIPFLAG=256*PEEK(&H11)+PEEK(&H10)
- '|----------Original equipment flag check for Parallel didn't work, use Turbo
- '|----------binary commands to diddle bits.
- B$ = BIN$(EQUIPFLAG)
- B$ = "&B"+MID$(B$,7,2)
- Parallel = Val(B$)
-
- SYSBRDMEM=((EQUIPFLAG AND 2^3+2^2)/2^2+1)*16
- IF (EQUIPFLAG AND 2^0)=0 THEN DISKS=0:GOTO CHEK.VID
- DISKS=(EQUIPFLAG AND 2^7+2^6)/2^6+1
-
- CHEK.VID:
- VI=(EQUIPFLAG AND 2^5+2^4)/2^4
- SELECT CASE VI
- CASE 0
- VIDINIT$="No MONITOR Set"
- CASE 1
- VIDINIT$="40x25 GRAPHICS"
- CASE 2
- VIDINIT$="80x25 GRAPHICS"
- CASE 3
- VIDINIT$="80x25 MONO"
- CASE ELSE
- VIDINIT$="UNKOWN"
- END SELECT
-
- SERIAL=(EQUIPFLAG AND 2^11+2^10+2^9)/2^9
- IF (EQUIPFLAG AND 2^12)=2^12 THEN GAME$="YES" ELSE GAME$="NO"
- TB$=STRING$(8,32)
-
- REM ***** print status from ram
-
- LOCATE 1,55
- PRINT "Status According to RAM"
- LOCATE 2,55
- PRINT "-----------------------"
- LOCATE 4,55
- PRINT USING "Total Memory ###K";TOTMEM
- LOCATE 5,55
- PRINT USING "Sys Brd Mem ###K";SYSBRDMEM
- LOCATE 6,55
- PRINT USING "I/O Memory ###K";IOMEM
- LOCATE 7,55
- PRINT USING "Disk Drives ##";DISKS
- LOCATE 8,55
- PRINT USING "Parallel Ports ##";PARALLEL
- LOCATE 9,55
- PRINT USING "Serial Ports ##";SERIAL
- LOCATE 10,55
- PRINT "Game Adapter ";GAME$
- LOCATE 11,55
- PRINT "Monitor: ";VIDINIT$
-
- IF SETUP = 1 THEN SKIP.IT
- '|----------------------------------------------------
- LOCATE 13,55
- PRINT "Press [ESC] to end."
-
- CHECK.ESC:
- CALL GETCH
-
- IF ANS$<>CHR$(27) THEN GOTO CHECK.ESC
- '|----------------------------------------------------
-
- SKIP.IT:
- RETURN
-
-
- '|-----------------------OPTION # 2--------------------------------------------
- SET.SWITCH:
- CLS
- PRINT" DIPSET CONFIGURATION"
- PRINT" This program will ask you how you want your computer to be"
- print" set up and then will issue the proper dip switch settings"
- print" for the system motherboard. It will also display the current"
- print" configuration according to RAM to help visualize the proper"
- print" adjustment to SW1 and SW2, if any."
-
- DRIVE.SET:
- LOCATE 8,1:CALL EOL
- PRINT" How many floppy disk drives are there";:input disk
- IF DISK ><INT(DISK) THEN
- CALL CSOUND
- PRINT " %INP_BAD_NUM YOU MUST INPUT A WHOLE NUMBER"
- CALL EOL
- GOTO DRIVE.SET
- END IF
- IF DISK >4 OR DISK <0 THEN
- CALL CSOUND
- PRINT " %INP_RNG_ERR DISK RANGE 0 THRU 4"
- CALL EOL
- GOTO DRIVE.SET
- END IF
-
- MEM.SET:
- LOCATE 9,1:CALL EOL
- PRINT" How much memory, in K, is installed";:input mem
- IF MEM<> INT(MEM/64)*64 THEN
- CALL CSOUND
- PRINT" %INP_INC_ERR MEMORY MUST BE IN 64K INCREMENTS"
- CALL EOL
- GOTO MEM.SET
- END IF
- IF MEM <64 OR MEM >640 THEN
- CALL CSOUND
- PRINT " %INP_RNG_ERR MEMORY RANGE 64 THRU 640K"
- CALL EOL
- GOTO MEM.SET
- END IF
-
- VID.SET:
- LOCATE 10,1:CALL EOL
- PRINT" What type of monitor do you have:"
- print" 1. No display"
- print" 2. Monochrome 80 X 25"
- print" 3. Graphics 40 X 25"
- print" 4. Graphics 80 X 25"
- LOCATE 16,1:CALL EOL
- INPUT" [CHOICE]-> "; MONITOR
- IF MONITOR <1 OR MONITOR >4 OR MONITOR <>INT(MONITOR) THEN
- CALL CSOUND
- GOTO VID.SET
- END IF
-
- CO.PROC:
- LOCATE 18,1:CALL EOL
- PRINT " Do you have an 8087 chip installed (Y or N) ? ";
- CALL GETCH
- IF ANS$ <>"Y" AND ANS$ <>"N" THEN
- PRINT "WHAT?"
- CALL CSOUND
- DELAY .5
- GOTO CO.PROC
- END IF
- PRINT ANS$
- IF ANS$ = "Y" THEN CHIP = 1 ELSE CHIP = 2
- '|---------------------------------------------------------------------------
- CLS
- GOSUB GET.SWITCH
- PLINE = 15
- START = 15
- SETUP = 0
- CALL DRAW.SWITCH(START)
-
- LOCATE 15,55: PRINT "Switch Configuration for:"
- LOCATE 16,55: PRINT "-------------------------"
- LOCATE 17,55: PRINT USING "Floppy disk drives ##";DISK
- SELECT CASE DISK+1
- CASE 1
- SW$(1,1)=UP$ :SW$(1,7)=UP$ :SW$(1,8)=UP$
- CASE 2
- SW$(1,1)=DOWN$:SW$(1,7)=UP$ :SW$(1,8)=UP$
- CASE 3
- SW$(1,1)=DOWN$:SW$(1,7)=DOWN$:SW$(1,8)=UP$
- CASE 4
- SW$(1,1)=DOWN$:SW$(1,7)=UP$ :SW$(1,8)=DOWN$
- CASE 5
- SW$(1,1)=DOWN$:SW$(1,7)=DOWN$:SW$(1,8)=DOWN$:RETURN
- END SELECT
-
- LOCATE 18,55: PRINT "Monitor: ";
- IF CHIP = 1 THEN SW$(1,2)=DOWN$ ELSE SW$(1,2) = UP$
- SELECT CASE MONITOR
- CASE 1
- SW$(1,5)=UP$ :SW$(1,6)=UP$ :PRINT"NO DISPLAY"
- CASE 2
- SW$(1,5)=DOWN$:SW$(1,6)=DOWN$:PRINT"80x25 MONOCHROME"
- CASE 3
- SW$(1,5)=DOWN$:SW$(1,6)=UP$ :PRINT"40x25 GRAPHICS"
- CASE 4
- SW$(1,5)=UP$ :SW$(1,6)=DOWN$:PRINT"80x25 GRAPHICS"
- END SELECT
- LOCATE 19,55: PRINT USING "Memory installed:####K";MEM
- LOCATE 20,55
- IF CHIP = 2 THEN PRINT"No ";
- PRINT "8087 chip installed" ' WILL PRINT IF INSTALLED
- COLOR %LTRED
- MEMRY = MEM/64
- SELECT CASE MEMRY
- CASE 1
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=UP$ :SW$(2,3)=UP$ : SW$(2,4)=UP$ :SW$(2,5)=UP$
- CASE 2
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=DOWN$:SW$(2,3)=UP$ : SW$(2,4)=UP$ :SW$(2,5)=UP$
- CASE 3
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=UP$ :SW$(2,3)=DOWN$: SW$(2,4)=UP$ :SW$(2,5)=UP$
- CASE 4
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=DOWN$:SW$(2,3)=DOWN$: SW$(2,4)=UP$ :SW$(2,5)=UP$
- CASE 5
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=UP$ :SW$(2,3)=UP$ : SW$(2,4)=DOWN$:SW$(2,5)=UP$
- CASE 6
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=DOWN$:SW$(2,3)=UP$ : SW$(2,4)=DOWN$:SW$(2,5)=UP$
- CASE 7
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=UP$ :SW$(2,3)=DOWN$: SW$(2,4)=DOWN$:SW$(2,5)=UP$
- CASE 8
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=DOWN$:SW$(2,3)=DOWN$: SW$(2,4)=DOWN$:SW$(2,5)=UP$
- CASE 9
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=UP$ :SW$(2,3)=UP$ : SW$(2,4)=UP$ :SW$(2,5)=DOWN$
- CASE 10
- SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$
- SW$(2,2)=DOWN$:SW$(2,3)=UP$ : SW$(2,4)=UP$ :SW$(2,5)=DOWN$
-
- END SELECT
-
- FOR I=0 TO 7:
- IF SW$(1,I+1)=UP$ THEN LOCATE START+3,I*2+(PLINE+1):PRINT UP$;
- IF SW$(1,I+1)=DOWN$ THEN LOCATE START+4,I*2+(PLINE+1):PRINT DOWN$;
- NEXT I
-
- SW$(2,6)=DOWN$:SW$(2,7)=DOWN$:SW$(2,8)=DOWN$
- FOR I=0 TO 7:
- IF SW$(2,I+1)=UP$ THEN LOCATE START+3,I*2+(PLINE+21):PRINT UP$;
- IF SW$(2,I+1)=DOWN$ THEN LOCATE START+4,I*2+(PLINE+21):PRINT DOWN$;
- NEXT I
-
- COLOR %WHITE
- LOCATE 22,55
- PRINT "Press [ESC] to end."
-
- GOTO CHECK.ESC
- RETURN
-
- PROGRAM.DONE:
- CLS:END