home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Current Shareware 1994 January
/
SHAR194.ISO
/
sys_util
/
386_486.zip
/
CYINIT.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-12-29
|
2KB
|
90 lines
#pragma inline
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
void main(int argc,char *argv[])
{
int ccr0=0x21,ccr1=0,ncr1=0x06,ncr2=0x07;
int i;
for(i=1;i<argc;i++){
if(argv[i][0]=='?'){
printf("CYINIT [A] [D] [V]\n");
exit(0);
}
else if((argv[i][0]&0xdf)=='D'){
printf("Direct Mapped Cache\n");
ccr0 |=0x40;
}
else if((argv[i][0]&0xdf)=='A'){
printf("Ignore A20 Gate - HMA - Cached\n");
ccr0 &=~0x01;
}
else if((argv[i][0]&0xdf)=='V'){
printf("C0000h to FFFFFh - Cached - Video buffers not cached\n");
ncr2=0;
}
else if((argv[i][0]&0xdf)=='B'){
printf("BARB bit disabled\n");
ccr0 &=~0x20;
}
}
disable();
asm{
.486P
push eax
mov eax,cr0
or eax,40000000h
mov cr0,eax
invd
jmp $+2
pop eax
.8086
}
outportb(0x22,0xc0);
outportb(0x23,ccr0);
outportb(0x22,0xc1);
outportb(0x23,ccr1);
outportb(0x22,0xc4);
outportb(0x23,0);
outportb(0x22,0xc5);
outportb(0x23,0x0a);
outportb(0x22,0xc6);
outportb(0x23,ncr1);
outportb(0x22,0xc7);
outportb(0x23,0);
outportb(0x22,0xc8);
outportb(0x23,0x0c);
outportb(0x22,0xc9);
outportb(0x23,ncr2);
outportb(0x22,0xca);
outportb(0x23,0);
outportb(0x22,0xcb);
outportb(0x23,0);
outportb(0x22,0xcc);
outportb(0x23,0);
outportb(0x22,0xcd);
outportb(0x23,0);
outportb(0x22,0xce);
outportb(0x23,0);
outportb(0x22,0xcf);
outportb(0x23,0);
asm{
.486P
push eax
mov eax,cr0
and eax,9fffffffh
mov cr0,eax
pop eax
.8086
}
enable();
printf("Cx486DLC Cache initialization complete\n");
}