?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. Program utrkseq;
  2. {(c) Медноногов В.С. 1996}
  3. var
  4.  tf:text;
  5.  be,en,i,j,k,l:longint;
  6.  name,s1,s2,s3,s4,hex:string;
  7.  
  8. function hexa(i:longint):string;
  9. const
  10.  dig:string='0123456789ABCDEF';
  11. var
  12.  j,k,l:integer;
  13.  hx:string;
  14. begin
  15.   if i=0 then begin hexa:=dig[1];exit;end;
  16.   hx:='';
  17.   while i>0 do
  18.     begin
  19.      k:=i mod 16 +1;
  20.      i:=i div 16;
  21.      hx:=dig[k]+hx;
  22.     end;
  23.   hexa:=hx;
  24. end;
  25.  
  26. {-------------------}
  27. {
  28.         Формат диска 1 (720)
  29.         80 дорожек по 512
  30.         t0-0
  31.         t1-0
  32.         9,9,9,9 (по 1024)
  33.         остальные
  34.         F5,F6,F7,F8,F9,FA,FB,FC,FD
  35.         Верхняя сторона дублирует нижнюю
  36.  
  37.         Данные:
  38.          1024 загрузчик
  39.          далее - файлы, выровненые на границу сектора
  40. }
  41. begin
  42. writeln;
  43. writeln('НЛО-2. Дьяволы бездны');
  44. writeln;
  45. writeln('Cоздание описателей дорожек диска 1 для  FDA');
  46. for i:=0 to 79 do
  47. for j:=0 to 1 do
  48. begin
  49. str(i,s1);
  50. str(j,s2);
  51. name:='d:\''ufo2''\xd1\trk'+s1+'-'+s2+'.seq';
  52. assign(tf,name);
  53. rewrite(tf);
  54. {format}
  55. writeln(tf,';Xcom track sequence for disk1 (c) 1996');
  56. writeln(tf,';');
  57. writeln(tf,' Double:');
  58. if (i=0) then
  59.   begin
  60.     writeln(tf,'F 4 3 112 244');
  61.     en:=3;
  62.   end
  63. else
  64.   begin
  65.     writeln(tf,'F 9 2 112 244');
  66.     en:=8;
  67.   end;
  68. be:=$F5;
  69. for k:=be to be+en do
  70.    if (i=0) then writeln (tf,' 0 ',s2,' 9 3')
  71.      else
  72.         begin
  73.         str(k,s3);
  74.         writeln(tf,' ',s1,' ',s2,' ',s3,' 2');
  75.         end;
  76. {data}
  77. hex:=hexa(512*9*(i-1)+1024)+'H';
  78. if (i<>0) then
  79.   writeln(tf,'W ',s1,' ',s2,' ',be,' 2 N ',hex,' 4608 255 255 27')
  80. else
  81.    for k:=0 to en do
  82.      begin
  83.       writeln(tf,'W 0 ',s2,' 9 3 N 0H 1024 255 255 27');
  84.      end;
  85. writeln(tf,'END');
  86. close(tf);
  87. end;
  88. {-------------------}
  89. {
  90.         Формат диска 2 (800)
  91.         80 дорожек
  92.         t0-0
  93.         9  [1024]
  94.         t1-0..t1-15
  95.         10,11,12,13,14,15,16,17,18 (hex)
  96.         t0-1..t0-3  [256]
  97.         1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 (dec)
  98.         t1-16..t1-79
  99.         t0-4..t0-79
  100.         F4,F5,F6,F7,F8  [1024]
  101.         Верхняя сторона с t1-16 дублирует t0-4
  102.  
  103.         Даные:
  104.           1024 - загрузчик
  105.           далее - файлы
  106. }
  107.  
  108. writeln('Cоздание описателей дорожек диска 2 для  FDA');
  109. for i:=0 to 79 do
  110. for j:=0 to 1 do
  111. begin
  112. str(i,s1);
  113. str(j,s2);
  114. name:='d:\''ufo2''\xd2\trk'+s1+'-'+s2+'.seq';
  115. assign(tf,name);
  116. rewrite(tf);
  117. {format2}
  118. writeln(tf,';');
  119. writeln(tf,';Xcom track sequence for data disk2 (c) 1996');
  120. writeln(tf,';         Автор Вячеслав Медоногов');
  121. writeln(tf,';');
  122. writeln(tf,'   Double:');
  123. if (j=1) and (i<16) then
  124.   begin
  125.     case i of
  126.     0,9 : writeln(tf,'F 9 2 112 240');
  127.     1,11: writeln(tf,'F 9 2 80 246');
  128.     2,14: writeln(tf,'F 9 2 99 101');
  129.     3,15: writeln(tf,'F 9 2 63 222');
  130.     4,8 : writeln(tf,'F 9 2 91 060');
  131.     5,13: writeln(tf,'F 9 2 105 245');
  132.     6,12: writeln(tf,'F 9 2 68 250');
  133.     7,10: writeln(tf,'F 9 2 114 030')
  134.      else writeln('error');
  135.     end;
  136.     be:=$10;
  137.     en:=be+8;
  138.     s4:='2';
  139.   end;
  140. if ((j=0) and (i>=4)) or ((j=1) and (i>=16)) then
  141.   begin
  142.     writeln(tf,'F 5 3 111 246');
  143.     be:=$F4;
  144.     en:=be+4;
  145.     s4:='3';
  146.   end;
  147. if (j=0) and (i>0) and (i<4) then
  148.   begin
  149.     writeln(tf,'F 16 1 50 246');
  150.     be:=1;
  151.     en:=be+15;
  152.     s4:='1';
  153.   end;
  154. if (i=0) and (j=0) then
  155.   begin
  156.     writeln(tf,'F 2 3 112 246');
  157.     be:=9;
  158.     en:=be+1;
  159.     s4:='3';
  160.   end;
  161.  
  162. for k:=be to en do
  163.       begin
  164.         str(k,s3);
  165.         writeln(tf,' ',s1,' ',s2,' ',s3,' ',s4);
  166.       end;
  167. {data2}
  168. if (j=0) and (i=0) then
  169.     writeln(tf,'W ',s1,' ',s2,' ',be,' ',s4,' N 0H 1024 255 255 27');
  170. if (j=0) and (i>=4) and (i<70) then
  171.   begin
  172.     hex:=hexa(512*10*(i-4)+1024)+'H';
  173.     writeln(tf,'W ',s1,' ',s2,' ',be,' ',s4,' N ',hex,' 5120 255 255 27');
  174.   end;
  175. if (j=1) and (i>=16) then
  176.   begin
  177.     hex:=hexa(512*10*(i-16)+1024)+'H';
  178.     writeln(tf,'W ',s1,' ',s2,' ',be,' ',s4,' N ',hex,' 5120 255 255 27');
  179.   end;
  180. writeln(tf,'END');
  181. close(tf);
  182. end;
  183. end.