home *** CD-ROM | disk | FTP | other *** search
- procedure page_01;
- const
- BIOScseg = $C000;
- BIOSext = $AA55;
- PCROMseg = $F000;
-
- var
- xbool : boolean;
- xbyte : byte;
- xchar : char;
- xlong : longint;
- xword1 : word;
- xword2 : word;
- s: string;
-
- function BIOSscan(a, b, c : word; var d : word) : boolean;
- const
- max = 3;
- notice : array[1..max] of string = ('(C)', 'COPR.', 'COPYRIGHT');
-
- var
- i : 1..max;
- len : byte;
- target : string;
- xbool : boolean;
- xlong : longint;
- xword : word;
-
- function scan(a : string; b, c, d : word; var e : word) : boolean;
- var
- i : longint;
- j : byte;
- len : byte;
- xbool1 : boolean;
- xbool2 : boolean;
-
- begin
- i:=c;
- len:=length(a);
- xbool1:=false;
- repeat
- if i <= longint(d) - len + 1 then
- begin
- j:=0;
- xbool2:=false;
- repeat
- if j < len then
- if upcase(chr(mem[b : i + j])) = a[j + 1] then
- inc(j)
- else
- begin
- xbool2:=true;
- inc(i)
- end
- else
- begin
- xbool2:=true;
- xbool1:=true;
- e:=i;
- scan:=true
- end
- until xbool2
- end
- else
- begin
- xbool1:=true;
- scan:=false
- end
- until xbool1
- end; {scan}
-
- begin (* function BIOSscan *)
- xlong:=c;
- xbool:=false;
- for i:=1 to max do
- begin
- target:=notice[i];
- len:=length(target);
- if xbool then
- xlong:=longint(xword) - 2 + len;
- if (xlong >= b) and (xlong <= c) and (scan(target, a, b, xlong, xword))
- then
- xbool:=true
- end;
- if xbool then
- begin
- while (xword > b) and (chr(mem[a : xword - 1]) in pchar) do
- dec(xword);
- d:=xword
- end;
- BIOSscan:=xbool
- end; {biosscan}
-
- procedure showBIOS(a, b : word);
- var
- xbool : boolean;
- xchar : char;
-
- begin
- xbool:=false;
- repeat
- xchar:=chr(mem[a : b]);
- if xchar in pchar then
- begin
- write(xchar);
- if b < $FFFF then
- inc(b)
- else
- xbool:=true
- end
- else
- xbool:=true
- until xbool;
- writeln
- end; {showbios}
-
- begin (* procedure page_01 *)
- caption2('Machine type');
- if UpCase(Chr(Mem[$F000:$E076])) = 'D' then
- begin
- s:='';
- for xword1:=$E077 to $E079 do
- s:=s + UpCase(Chr(Mem[$F000:xword1]));
- if s = 'ELL' then
- begin
- Write('Dell ');
- xbool:=true;
- case Mem[$F000:$E845] of
- 2: Write('200');
- 3: Write('300');
- 5: Write('220');
- 6: Write('310');
- 7: Write('325');
- 9: Write('310A');
- $0A: Write('316');
- $0B: Write('220E');
- $0C: Write('210');
- $0D: Write('316SX');
- $0E: Write('316LT');
- $0F: Write('320LX');
- $11: Write('425E');
- else
- begin
- Write('(unknown - ID is ', hex(Mem[$F000:$E845], 2));
- xbool:=false
- end;
- end;
- if xbool then
- begin
- caption3('BIOS Revision');
- for xword1:=$E845 to $E847 do
- Write(Chr(Mem[$F000:xword1]))
- end;
- Writeln;
- caption2('Standard BIOS call says');
- Writeln
- end
- end;
- with regs do
- begin
- AH:=$C0;
- intr($15, regs);
- if nocarry then
- begin
- xword1:=memw[ES : BX + 2];
- case xword1 of
- $00FC, $01FC: Writeln('PC-AT 3x9');
- $00FB, $01FB: Writeln('PC-XT/2');
- $02FC: Writeln('PC-XT/286');
- $00F9: Writeln('PC-COnvertible');
- $00FA: Writeln('PS/2 Model 30');
- $04FC: Writeln('PS/2 Model 50');
- $05FC: Writeln('PS/2 Model 60');
- $04F8, $09F8: Writeln('PS/2 Model 70');
- $00F8, $01F8: Writeln('PS/2 Model 80');
- $06FC: Writeln('7552 Gearbox');
- $81FC: Writeln('Micronics 386/25');
- else
- unknown('machine - model/type word', xword1, 4);
- end; {case}
- caption3('BIOS revision level');
- writeln(mem[ES : BX + 4]);
- xbyte:=mem[ES : BX + 5];
- caption3('DMA channel 3 used');
- yesorno(xbyte and $80 = $80);
- caption3('Slave 8259 present');
- yesorno(xbyte and $40 = $40);
- caption3('Real-time clock');
- yesorno(xbyte and $20 = $20);
- caption3('Keyboard intercept available');
- yesorno(xbyte and $10 = $10);
- caption3('Wait for external event available');
- yesorno(xbyte and $08 = $08);
- caption3('Extended BIOS data area segment');
- if xbyte and $04 = $04 then
- begin
- AH:=$C1;
- intr($15, regs);
- if nocarry then
- writeln(hex(ES, 4))
- else
- dontknow
- end
- else
- writeln('(none)');
- caption3('Micro Channel');
- yesorno(xbyte and $02 = $02)
- end
- else
- begin
- xbyte:=mem[$FFFF : $000E];
- case xbyte of
- $FF : writeln('PC');
- $FE : writeln('PC-XT');
- $FD : writeln('PCjr');
- $FC : writeln('PC-AT')
- else
- unknown('machine - model byte', xbyte, 2)
- end
- end
- end;
- (* Byte 12:12 p. 174 *)
- caption2('BIOS source');
- if BIOSscan(PCROMseg, $C000, $FFFF, xword1) then
- showBIOS(PCROMseg, xword1)
- else
- dontknow;
- caption2('BIOS date');
- i:=$0005;
- xbool:=false;
- xchar:=chr(mem[$FFFF : i]);
- while (i < $0010) and (xchar in pchar) do
- begin
- xbool:=true;
- write(xchar);
- inc(i);
- xchar:=chr(mem[$FFFF : i])
- end;
- if xbool then
- writeln
- else
- dontknow;
- caption2('BIOS extensions');
- xword1:=BIOScseg;
- xbool:=false;
- for i:=0 to 94 do
- begin
- if (memw[xword1 : 0] = BIOSext) then
- begin
- if not xbool then
- begin
- writeln;
- window(3, wherey + hi(windmin), twidth, tlength - 2);
- caption1('Segment Size Copyright notice');
- writeln;
- xbool:=true
- end;
- pause2;
- if endit then
- Exit;
- Write(hex(xword1, 4), ' ', ((longint(512) * Mem[xword1: 2]) div 1024):3, 'K ');
- if BIOSscan(xword1, $0000, $1FFF, xword2) then
- showBIOS(xword1, xword2)
- else
- dontknow
- end;
- inc(xword1, $0080)
- end;
- if not xbool then
- writeln('(none)')
- end;