home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 June
/
SIMTEL_0692.cdr
/
msdos
/
pctech
/
aug86.arc
/
ATBIOS.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1986-10-13
|
5KB
|
138 lines
{ ATBIOS -- PC Tech Journal AT BIOS Information Display Program }
{ }
{ Version 1.01 }
{ Last modified 10/14/86 }
{ Changes: }
{ 1. Strip non-alphanumeric characters from the }
{ copyright display. }
{ 2. Don't check game adapter bit in equipment flags }
{ for AT machine type. It is not used by AT. }
{ 3. Turn on Turbo Pascal I/O redirection. }
{ }
{ Copyright (c) 1986, PC Tech Journal }
{ Program by: Paul Pierce, Ted Forgeron, Steven Armbrust }
{ }
{ Displays pertinent information from the BIOS code and data }
{ areas. }
{ }
{ This program is written in Turbo Pascal. However, it can }
{ be easily ported to any Pascal compiler that allows absolute }
{ addressing. }
{$P512}
PROGRAM at_bios_info ;
CONST
at_id = $fc ;
printer_mask = $c000 ;
game_mask = $1000 ;
serial_mask = $0e00 ;
dma_mask = $0100 ;
drive_num_mask = $00c0 ;
video_mask = $0030 ;
ndp_mask = $0002 ;
drive_mask = $0001 ;
co40 = $0010 ;
co80 = $0020 ;
mono = $0030 ;
VAR
i : integer ;
romdate : ARRAY [1..9] OF char absolute $f000:$fff5 ;
machine_id : byte absolute $f000:$fffe ;
copyright : ARRAY [1..80] OF char absolute $f000:$e000 ;
equip_flag : integer absolute $40:$10 ;
mem_size : integer absolute $40:$13 ;
key_buf : ARRAY [1..32] OF char absolute $40:$1e ;
video_mode : byte absolute $40:$49 ;
BEGIN
clrscr ;
write('ATBIOS -- PC Tech Journal AT BIOS Information ') ;
writeln('Display') ;
writeln('Version 1.01, Copyright (c) 1986 PC Tech Journal') ;
writeln ;
writeln('ROM BIOS date is ',romdate) ;
IF machine_id = at_id THEN
writeln('Machine ID is AT COMPATIBLE')
ELSE
writeln('Machine ID is NOT AT') ;
write('Copyright Statement is ') ;
FOR i := 1 TO 80 DO
BEGIN
IF (copyright[i] < ' ') OR (copyright[i] > '~') THEN
write('.')
ELSE
write(copyright[i]) ;
IF i = 40 THEN
BEGIN
writeln ;
write(' ') ;
END ;
END ;
writeln ;
write('Diskette Drives Installed ') ;
IF (equip_flag AND drive_mask) <> 0 THEN
writeln(((drive_num_mask AND equip_flag) DIV 64)+1)
ELSE
writeln('0') ;
write('80287 Math Coprocessor ') ;
IF (equip_flag AND ndp_mask) <> 0 THEN
writeln('YES')
ELSE
writeln('NO') ;
write('Initial Video Mode ') ;
CASE (equip_flag AND video_mask) OF
co40 : writeln('CGA 40x25 B/W text') ;
co80 : writeln('CGA 80x25 B/W text') ;
mono : writeln('Monochrome 80x25 text') ;
END ;
write('Current Video Mode ') ;
CASE video_mode OF
00 : writeln('CGA 40x25 B/W text') ;
01 : writeln('CGA 40x25 16-color text') ;
02 : writeln('CGA 80x25 B/W text') ;
03 : writeln('CGA 80x25 16-color text') ;
04 : writeln('CGA 320x200 4-color graphics') ;
05 : writeln('CGA 320x200 4-gray graphics') ;
06 : writeln('CGA 640x200 B/W graphics') ;
07 : writeln('Monochrome 80x25 text') ;
08 : writeln('JR 160x200 16-color graphics') ;
09 : writeln('JR 320x200 16-color graphics') ;
10 : writeln('EGA 640x200 4/64-color graphics') ;
13 : writeln('EGA 320x200 16-color graphics') ;
14 : writeln('EGA 640x200 16-color graphics') ;
15 : writeln('EGA 640x350 4-color graphics') ;
END ;
write('DMA Present ') ;
IF (equip_flag AND dma_mask) <> 0 THEN
writeln('NO')
ELSE
writeln('YES') ;
writeln('RS-232 Serial Ports ',
(equip_flag AND serial_mask) DIV 512) ;
IF machine_id <> at_id THEN
BEGIN
write('Game Adapter Present ') ;
IF (equip_flag AND game_mask) <> 0 THEN
writeln('YES')
ELSE
writeln('NO') ;
END ;
writeln('Parallel Printer Ports ',
abs((equip_flag AND printer_mask) DIV 16384)) ;
writeln('Memory Size in K Bytes ',mem_size) ;
write('Keyboard Buffer Contents ') ;
i := 1 ;
WHILE i <= 32 DO
BEGIN
IF (key_buf[i] < ' ') OR (key_buf > '~') THEN
write('.')
ELSE
write(key_buf[i]) ;
i := i + 2 ;
END ;
writeln ;
END.