Haifisch7734

MCB

Nov 29th, 2013
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.27 KB | None | 0 0
  1. program zad2;
  2.  
  3. uses dos, crt;
  4.  
  5. var
  6. rej:registers;
  7. seg,ofs:word;
  8. i,j:byte;
  9.  
  10. {-------------------------------------------------}
  11.  
  12. function getAddress(r:registers):word;
  13. begin
  14. r.AH:=$52;
  15. intr($21,r);
  16. getAddress:=memw[r.ES:r.BX-2];
  17. end;
  18.  
  19. function processName(seg:word):string;
  20. var
  21. i:byte;
  22. s:string;
  23. begin
  24. s:='';
  25. for i:=8 to 15 do
  26.     s:=s+chr(mem[seg:i]);
  27. processName:=s;
  28. end;
  29.  
  30. function writeMCB(seg:word;i:byte):word;
  31. begin
  32. gotoxy(2,i);
  33. write(seg);
  34. gotoxy(16,i);
  35. write(chr(mem[seg:0]));
  36. gotoxy(33,i);
  37. write(memw[seg:1]);
  38. gotoxy(39,i);
  39. write(memw[seg:3]);
  40. gotoxy(55,i);
  41. write(processName(seg));
  42. writeln;
  43. writeMCB:=memw[seg:3];
  44. gotoxy(1,i);
  45. end;
  46.  
  47. {-------------------------------------------------}
  48.  
  49. procedure writeLabels;
  50. begin
  51. gotoxy(2,2);
  52. write('Segment MCB');
  53. gotoxy(16,2);
  54. write('Rodzaj procesu');
  55. gotoxy(33,2);
  56. write('ID');
  57. gotoxy(39,2);
  58. write('Wielkosc bloku');
  59. gotoxy(55,2);
  60. write('Nazwa programu');
  61. gotoxy(2,4);
  62. end;
  63.  
  64. {-------------------------------------------------}
  65.  
  66. procedure verFrame(x:byte);
  67. var i:byte;
  68. begin
  69. if (x<>1) and (x<>80) then
  70.     begin
  71.     gotoxy(x,1);
  72.     write(chr(203));
  73.     gotoxy(x,24);
  74.     write(chr(202));
  75.     end;
  76. for i:=2 to 23 do
  77.     begin
  78.     gotoxy(x,i);
  79.     write(chr(186));
  80.     end;
  81. gotoxy(x,3);
  82. if (x<>1) and (x<>80) then
  83.     write(chr(206))
  84. else if x=1 then
  85.     write(chr(204))
  86. else write(chr(185));
  87. end;
  88.  
  89. procedure frame;
  90. var i:byte;
  91. begin
  92. gotoxy(1,1);
  93. write(chr(201));
  94. for i:=2 to 79 do
  95.     begin
  96.     gotoxy(i,1);
  97.     write(chr(205));
  98.     end;
  99. gotoxy(80,1);
  100. write(chr(187));
  101. for i:=2 to 79 do
  102.     begin
  103.     gotoxy(i,3);
  104.     write(chr(205));
  105.     end;
  106.  
  107. gotoxy(1,24);
  108. write(chr(200));
  109. for i:=2 to 79 do
  110.     begin
  111.     gotoxy(i,24);
  112.     write(chr(205));
  113.     end;
  114. gotoxy(80,24);
  115. write(chr(188));
  116. verFrame(1);
  117. verFrame(15);
  118. verFrame(32);
  119. verFrame(38);
  120. verFrame(54);
  121. verFrame(80);
  122. end;
  123.  
  124. {-------------------------------------------------}
  125.  
  126. begin
  127. clrscr;
  128. textbackground(1);
  129. for i:=1 to 24 do
  130.     for j:=1 to 80 do
  131.         begin
  132.         gotoxy(j,i);
  133.         write(' ');
  134.         end;
  135. textbackground(3);
  136. textcolor(0);
  137. frame;
  138. textbackground(1);
  139. textcolor(15);
  140. writeLabels;
  141. readln;
  142. i:=4;
  143. seg:=getAddress(rej);
  144. ofs:=writeMCB(seg,i);
  145. repeat
  146. i:=i+1;
  147. seg:=seg+ofs+1;
  148. ofs:=writeMCB(seg,i);
  149. until (mem[seg:0]=90);
  150.  
  151. readln;
  152. end.
Advertisement
Add Comment
Please, Sign In to add comment