Simple Operating System
touch.c
Go to the documentation of this file.
1 
7 #include <types.h>
8 
9 __start int main() {
10  char* param1 = NULL;
11  char* param2 = NULL;
12  for(int i = 0; * (char*)(0x80 + i) != 0; i++) {
13  if(*(char*)(0x80 + i) == ' ') {
14  *(char*)(0x80 + i) = 0;
15  param1 = 0x80;
16  if(*(char*)(0x81 + i) != 0)
17  param2 = 0x81 + i;
18  break;
19  }
20  }
21  if(param2 == NULL)
22  return -1;
23 
24  char pows[] = {1, 10, 100};
25  size_t num = 0;
26  size_t size = 0;
27  for(; param2[size] != 0; size++) {}
28  size--;
29 
30  for(size_t i = 0; param2[i] != 0; i++)
31  num += pows[size - i] * (param2[i] - '0');
32 
33  int ret = 1;
34  asm("int 0x21":"=a"(ret):"a"(0x0400), "b"(param1), "c"(num));
35 
36  return (ret > 0 ? 0 : ret);
37 }
__start void main()
Definition: kernel.c:131
useful macros, definitions, enums etc.
#define NULL
pointer to NULL
Definition: types.h:22
#define __start
Must be before main function of program to put this function as first in binary file.
Definition: types.h:35