Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. include "macros.inc"
  2.  
  3. initipc:
  4.  mov eax,9
  5.  mov ebx,prc
  6.  mov ecx,-1
  7.  int 0x40
  8.  
  9.  mov ecx,eax
  10. loop1:
  11.  push ecx
  12.  
  13.  mov eax,9
  14.  mov ebx,prc
  15.  int 0x40
  16.  
  17.  cmp word [prc+10],'CM'
  18.  jne no_cmd
  19.  cmp byte [prc+12],'D'
  20.  jne no_cmd
  21.  
  22.  mov ebx,[prc+30]
  23.  mov dword [cmdpid],ebx
  24.  
  25.  mov dword [cmdnumb],ecx
  26.  
  27. no_cmd:
  28.  pop ecx
  29.  loop loop1
  30.  
  31.  cmp dword [cmdpid],0
  32.  jne no_exit
  33.  
  34.  jmp exit
  35.  
  36. no_exit:
  37.  mov eax,60
  38.  mov ebx,2
  39.  mov ecx,dword [cmdpid]
  40.  mov edx,printf
  41.  mov esi,4
  42.  int 0x40
  43.  
  44.  call initcmd
  45.  
  46. waitcmdinit:
  47.  mov eax,40
  48.  mov ebx,01000000b
  49.  int 0x40
  50.  
  51.  mov eax,23
  52.  mov ebx,100
  53.  int 0x40
  54.  
  55.  cmp eax,7
  56.  je cmd_ok
  57.  
  58.  jmp exit
  59.  
  60. cmd_ok:
  61.  cmp byte [ipcb+16],'.'
  62.  jne exit
  63.  
  64.  mov eax,18
  65.  mov ebx,3
  66.  mov ecx,dword [cmdnumb]
  67.  int 0x40
  68.  
  69.  ret
  70.  
  71. pause1:
  72.  mov eax,5
  73.  mov ebx,1
  74.  int 0x40
  75.  ret
  76.  
  77. exit:
  78.  mov eax,-1
  79.  int 0x40
  80.  
  81. cls:
  82.  mov eax,60
  83.  mov ebx,2
  84.  mov ecx,dword [cmdpid]
  85.  mov edx,ipccls
  86.  mov esi,4
  87.  int 0x40
  88.  
  89.  call pause1
  90.  
  91.  ret
  92.  
  93. print:
  94.  mov ecx,84
  95. loopprt:
  96.  mov edi,stripc
  97.  add edi,ecx
  98.  mov esi,fill_symbol
  99.  movsb
  100.  
  101.  loop loopprt
  102.  
  103.  cld
  104.  mov ecx,4
  105.  mov edi,stripc
  106.  mov esi,printf
  107.  rep movsb
  108.  
  109.  cld
  110.  mov edx,79
  111.  sub edx,eax
  112.  mov ecx,79
  113.  sub ecx,edx
  114.  mov edi,stripc+4
  115.  mov esi,ebx
  116.  rep movsb
  117.  
  118.  mov eax,60
  119.  mov ebx,2
  120.  mov ecx,dword [cmdpid]
  121.  mov edx,stripc
  122.  mov esi,84
  123.  int 0x40
  124.  
  125.  call pause1
  126.  
  127.  ret
  128.  
  129. eol:
  130.  mov eax,60
  131.  mov ebx,2
  132.  mov ecx,dword [cmdpid]
  133.  mov edx,ipceol
  134.  mov esi,4
  135.  int 0x40
  136.  
  137.  call pause1
  138.  
  139.  ret
  140.  
  141. initcmd:
  142.  mov eax,60
  143.  mov ebx,2
  144.  mov ecx,dword [cmdpid]
  145.  mov edx,ipckey
  146.  mov esi,4
  147.  int 0x40
  148.  
  149.  mov eax,60
  150.  mov ebx,1
  151.  mov ecx,ipcb
  152.  mov edx,28
  153.  int 0x40
  154.  
  155.  cld
  156.  mov ecx,28
  157.  mov edi,ipcb
  158.  mov esi,ipcc
  159.  rep movsb
  160.  
  161.  ret
  162.  
  163. getkey:
  164.  call initcmd
  165.  
  166. waitagain:
  167.  mov eax,40
  168.  mov ebx,01000000b
  169.  int 0x40
  170.  
  171.  mov eax,10
  172.  int 0x40
  173.  
  174.  cmp eax,7
  175.  jne waitagain
  176.  
  177.  mov edi,key
  178.  mov esi,ipcb+16
  179.  movsb
  180.  
  181.  ret
  182.  
  183. endipc:
  184.  mov eax,60
  185.  mov ebx,2
  186.  mov ecx,dword [cmdpid]
  187.  mov edx,ipcend
  188.  mov esi,4
  189.  int 0x40
  190.  
  191.  jmp exit
  192.  
  193. cmdpid dd 0
  194. cmdnumb dd 0
  195.  
  196. printf db '~ppp'
  197. ipceol db '~lll'
  198. ipcend db '~eee'
  199. ipccls db '~ccc'
  200. ipckey db '~kkk'
  201.  
  202. key db 0
  203.  
  204. ipcb:
  205.  db 0
  206.  db 0,0,0
  207.  dd 8
  208. times 20 db 0
  209.  
  210. ipcc:
  211.  db 0
  212.  db 0,0,0
  213.  dd 8
  214. times 20 db 0
  215.  
  216. stripc: times 84 db 0
  217.  
  218. fill_symbol db 0
  219.  
  220. prc: times 52 db 0
  221.  
  222.