Creating Notepad using C

  1. #include < stdio.h >  
  2. #include < conio.h >  
  3. #include < dos.h >  
  4. #include < stdlib.h >  
  5. #include < mem.h >  
  6. #include < string.h >  
  7. char far * vid = 0xB8000000;  
  8. char a[50000], * str;  
  9. int track[2000], fp = 1, lp = 21, cl = 1, p = 0, t = 0, eat;  
  10. /*This function writes a character into video memory.*/  
  11. writechar(char ch, int attr, int row, int col)  
  12. {  
  13.     char far * v;  
  14.     v = vid + row * 160 + col * 2;  
  15.     * v = ch;  
  16.     v++;  
  17.     * v = attr;  
  18. /*End wrotechar*/  
  19. //-----------------------------------------------------------------------/*This function draws a box of given attribute & size*/  
  20. drawbox(int r1, int c1, int r2, int c2, int attr)  
  21. {  
  22.     int i, j;  
  23.     for (i = r1; i <= r2; i++)  
  24.     {  
  25.         for (j = c1; j <= c2; j++)  
  26.         writechar(' ', attr, i, j);  
  27.     }  
  28.   
  29. /*End drawbox*/  
  30. //------------------------------------------------------------------------/*This function draws the screen at starting*/  
  31. drawscreen()  
  32. {  
  33.     drawbox(0, 0, 0, 79, 120);  
  34.     drawbox(24, 0, 24, 79, 120);  
  35.     drawbox(1, 0, 23, 79, 16);  
  36.     doubleborder(1, 0, 23, 79, 31);  
  37. /*End drawscreen*/  
  38. //------------------------------------------------------------------------/*This function refreshes the screen*/  
  39.   
  40. refreshscreen()  
  41. {  
  42.     int r, c;  
  43.     drawbox(2, 1, 22, 78, 16);  
  44. /*End Refreshscreen*/  
  45. //-------------------------------------------------------------------------/*This function draws the double border*/  
  46.   
  47. doubleborder(int r1, int c1, int r2, int c2, int attr)  
  48. {  
  49.     int r, c;  
  50.     writechar(201, attr, r1, c1);  
  51.     writechar(187, attr, r1, c2);  
  52.     writechar(200, attr, r2, c1);  
  53.     writechar(188, attr, r2, c2);  
  54.     for (c = (c1 + 1); c <= (c2 - 1); c++)  
  55.     writechar(205, attr, r1, c);  
  56.     for (c = (c1 + 1); c <= (c2 - 1); c++)  
  57.     writechar(205, attr, r2, c);  
  58.     for (r = (r1 + 1); r <= (r2 - 1); r++)  
  59.     writechar(186, attr, r, c1);  
  60.     for (r = (r1 + 1); r <= (r2 - 1); r++)  
  61.     writechar(186, attr, r, c2);  
  62. /*End doubleborder*/  
  63. //---------------------------------------------------------------------------/*This function draws border of given attribute & size*/  
  64.   
  65. drawborder(int r1, int c1, int r2, int c2, int attr)  
  66. {  
  67.     int r, c;  
  68.     writechar(218, attr, r1, c1);  
  69.     writechar(191, attr, r1, c2);  
  70.     writechar(192, attr, r2, c1);  
  71.     writechar(217, attr, r2, c2);  
  72.     r = r1;  
  73.     for (c = c1 + 1; c <= c2 - 1; c++)  
  74.     writechar(196, attr, r, c);  
  75.     r = r2;  
  76.     for (c = c1 + 1; c <= c2 - 1; c++)  
  77.     writechar(196, attr, r, c);  
  78.     c = c1;  
  79.     for (r = r1 + 1; r <= r2 - 1; r++)  
  80.     writechar(179, attr, r, c);  
  81.     c = c2;  
  82.     for (r = r1 + 1; r <= r2 - 1; r++)  
  83.     writechar(179, attr, r, c);  
  84. /*End drawborder*/  
  85. //---------------------------------------------------------------------------/*This function draws a line of given attribute*/  
  86.   
  87. drawline(int r, int c1, int c2, int attr)  
  88. {  
  89.     int i;  
  90.     writechar(195, attr, r, c1);  
  91.     writechar(180, attr, r, c2);  
  92.     for (i = c1 + 1; i <= c2 - 1; i++)  
  93.     writechar(196, attr, r, i);  
  94. /*End drawline*/  
  95. //---------------------------------------------------------------------------/*This function writes a string in given row & column with given attribute*/  
  96. writestring(char * p, int attr, int r, int c)  
  97. {  
  98.     int l, i;  
  99.     l = strlen(p);  
  100.     for (i = 0; i < l; i++)  
  101.     {  
  102.         writechar( * (p + i), attr, r, c);  
  103.         c++;  
  104.     }  
  105. /*End writestring*/  
  106. //---------------------------------------------------------------------------/*This function saves the content of videomemory from r1,c1 to r2,c2 into main memory using char buffer*/char *savemem(int r1,int c1,int r2,int c2,char *buff)  
  107. {  
  108.     char far * v;  
  109.     int i, j, k = 0, size;  
  110.     size = (r2 - r1 + 1) * (c2 - c1 + 1) * 2;  
  111.     buff = (char * ) malloc(size);  
  112.     for (i = r1; i <= r2; i++)  
  113.     {  
  114.         for (j = c1; j <= c2; j++)  
  115.         {  
  116.             v = (vid + i * 160 + j * 2);  
  117.             * (buff + k) = * v;  
  118.             k++;  
  119.             v++;  
  120.             * (buff + k) = * v;  
  121.             k++;  
  122.         }  
  123.     }  
  124.     return (buff);  
  125. /*End savememo*/  
  126. //---------------------------------------------------------------------------/*This function restores the content of main memory into videomemoryfrom r1,c1 to r2,c2 using char buffer*/  
  127.   
  128. restoremem(int r1, int c1, int r2, int c2, char * buff)  
  129. {  
  130.     char far * v;  
  131.     int i, j, k = 0;  
  132.     for (i = r1; i <= r2; i++)  
  133.     {  
  134.         for (j = c1; j <= c2; j++)  
  135.         {  
  136.             v = (vid + i * 160 + j * 2);  
  137.             * v = * (buff + k);  
  138.             k++;  
  139.             v++;  
  140.             * v = * (buff + k);  
  141.             k++;  
  142.         }  
  143.     }  
  144.     free(buff);  
  145. /*End restorememory*/  
  146. //---------Entire code is with attachment