amead@s.psych.uiuc.edu (alan mead) (05/16/91)
Thanks to all who helped me with changing the border color. I was directed towards and found BORDER.ZIP in /mirrors/msdos/screen on wuarchive.wustl.edu. BORDER.ZIP has C & ASM source and executable, but it was pretty simple stuff and I needed to use it from a Turbo Pascal program, so here is my pascal version. It uses BIOS function $0B, so it should be relatively compatible. In case it's not obvious, the four lines marked {*} is where the border color gets changed (ie, those four are what you would need to put into your code). Thanks again. -alan mead : amead@s.psych.uiuc.edu -------------- program change_border; uses dos; (*************************************************************************** BORDER A utility to set the border colors of CGA and compatible displays. Originally a C driver for the following ASM code available in the package BORDER.ZIP (from eg, SIMTEL). I wrote both parts into Turbo Pascal (any version greater than 2 ought to work). Hope this helps. -alan mead <amead@s.psych.uiuc.edu> 05/18/91 ;-------------------------------------------------------------------- ; This is a C callable function which uses the BIOS to ; change the hardware border on a video display. ; ; Written By: Gary L. Hennigan <ghenniga@NMSU.Edu> ; New Mexico State University ; Las Cruces, NM ; Date: 11/30/90 ; ; Note that I use Turbo Assembler's simplified segment directives ; and stack frame addressing conventions so this code will not ; compile properly under MSASM. ;-------------------------------------------------------------------- ; Variable Used: ; brd_color (int) - The border color to change to. ;-------------------------------------------------------------------- ; Pre-processor Equates ; BIOS_INT EQU 10h BIOS_CC EQU 0Bh ;-------------------------------------------------------------------- ; Set up the segments with Turbo's simplified segment directives ; DOSSEG .MODEL SMALL .DATA .CODE PUBLIC C bord_change bord_change PROC ARG brd_color:WORD push bp mov bp,sp mov bx, brd_color mov ah, BIOS_CC int BIOS_INT pop bp ret bord_change ENDP END **************************************************************************) const BIOS_CC = $0B; BIOS_INT = $10; MaxColors = 15; { this is CGA compatible, VGA goes to 63? } var regs : registers; s : string; color, err : word; procedure Usage( ExitCode:word ); begin writeln( ' BORDER by Gary L Hennigan <ghenniga@NMSU.edu>' ); writeln( ' Turbo Pascal version by Alan D Mead <amead@s.psych.uiuc.edu>' ); writeln; writeln( 'BORDER n' ); writeln; writeln( ' where n is an integer greater than -1 and less than ',MaxColors+1 ); Halt( ExitCode ); end; begin if ParamCount <> 1 then Usage( 1 ) else begin s := ParamStr( 1 ); val( s,color,err ); if ( err <> 0 ) OR ( color<0 ) OR ( color>MaxColors ) then Usage( 2 ); fillchar( regs, SizeOf( regs ),#0 ); {*} regs.Ah := BIOS_CC; {*} regs.BX := color; {*} intr( BIOS_INT,regs ); {*} end; end.