home *** CD-ROM | disk | FTP | other *** search
/ Current Shareware 1994 January / SHAR194.ISO / sys_util / 386_486.zip / CYINIT.C < prev    next >
C/C++ Source or Header  |  1992-12-29  |  2KB  |  90 lines

  1. #pragma inline
  2. #include <stdlib.h>
  3. #include <dos.h>
  4. #include <stdio.h>
  5.  
  6. void main(int argc,char *argv[])
  7. {
  8. int ccr0=0x21,ccr1=0,ncr1=0x06,ncr2=0x07;
  9. int i;
  10.  
  11. for(i=1;i<argc;i++){
  12.     if(argv[i][0]=='?'){
  13.         printf("CYINIT [A] [D] [V]\n");
  14.         exit(0);
  15.     }
  16.     else if((argv[i][0]&0xdf)=='D'){
  17.         printf("Direct Mapped Cache\n");
  18.         ccr0 |=0x40;
  19.     }
  20.     else if((argv[i][0]&0xdf)=='A'){
  21.         printf("Ignore A20 Gate - HMA - Cached\n");
  22.         ccr0 &=~0x01;
  23.     }
  24.     else if((argv[i][0]&0xdf)=='V'){
  25.         printf("C0000h to FFFFFh - Cached - Video buffers not cached\n");
  26.         ncr2=0;
  27.     }
  28.     else if((argv[i][0]&0xdf)=='B'){
  29.         printf("BARB bit disabled\n");
  30.         ccr0 &=~0x20;
  31.     }
  32. }
  33. disable();
  34. asm{
  35.     .486P
  36.     push    eax
  37.     mov    eax,cr0
  38.     or    eax,40000000h
  39.     mov    cr0,eax
  40.     invd
  41.     jmp    $+2
  42.     pop    eax
  43.     .8086
  44. }
  45. outportb(0x22,0xc0);
  46. outportb(0x23,ccr0);
  47.  
  48. outportb(0x22,0xc1);
  49. outportb(0x23,ccr1);
  50.  
  51. outportb(0x22,0xc4);
  52. outportb(0x23,0);
  53. outportb(0x22,0xc5);
  54. outportb(0x23,0x0a);
  55. outportb(0x22,0xc6);
  56. outportb(0x23,ncr1);
  57.  
  58. outportb(0x22,0xc7);
  59. outportb(0x23,0);
  60. outportb(0x22,0xc8);
  61. outportb(0x23,0x0c);
  62. outportb(0x22,0xc9);
  63. outportb(0x23,ncr2);
  64.  
  65. outportb(0x22,0xca);
  66. outportb(0x23,0);
  67. outportb(0x22,0xcb);
  68. outportb(0x23,0);
  69. outportb(0x22,0xcc);
  70. outportb(0x23,0);
  71.  
  72. outportb(0x22,0xcd);
  73. outportb(0x23,0);
  74. outportb(0x22,0xce);
  75. outportb(0x23,0);
  76. outportb(0x22,0xcf);
  77. outportb(0x23,0);
  78. asm{
  79.     .486P
  80.     push    eax
  81.     mov    eax,cr0
  82.     and    eax,9fffffffh
  83.     mov    cr0,eax
  84.     pop    eax
  85.     .8086
  86. }
  87. enable();
  88. printf("Cx486DLC Cache initialization complete\n");
  89. }
  90.