(c)  騭, ᪢

ZXNet : 500:95/462.53
E-mail: bestview@mtu-net.ru
WWW   : http://www.ivr.da.ru

     ஢ઠ ४⭮ 䠩  ᪮ TR-DOS
     

(".  " 6/2004)
 .




     ࠧ 稭 (뢠 ᪮ 権,
易    , ᯮ짮 ணࠬ, ࠢ쭮
ࠡ  ᪮, 訡 ⢨ 짮⥫  筮
।஢ ⠫  ..) 䠩  ᪠ TR-DOS
  ४⭮.
    ᫨ ࠡ  ᪮ ணࠬ  ஢ ࠢ쭮
䠩  (  饬-,  ᠬ TR-DOS ⮣ 
 - ஢  ᯥ樠   㦥 ᥪ,
㪠뢠騩  ਭ ᪠ TR-DOS),  ࠡ
 "ࠢ" ᪮  ਢ,  ,
 ।᪠㥬 ᫥⢨.   ࠧ襭 ணࠬ
 ,   ଠ樨  ᪥.  ᫨, ᪠,
 ⠫  - 䠩 ࠢ쭮 㪠  ࠧ 
 砫쭮 ४/ᥪ,  ⪠ ࠡ  ⨬ 䠩
⥮᪨  ਢ   ० ᪮ 
⪥ 樮஢  騩 ४.
    ᭮,  ᢮६ 㦥 訡  䠩
 뫮  祭 . , 㦭 楤,
஢ ࠢ쭮 ⠫ ᪠.  楤 
 ᯮ짮   ᯥ樠쭮 ணࠬ ஢ન ᪮,
⠪     ணࠬ, ࠡ饩  ᪮: ᫨ ।
᪮묨 ﬨ  ⠫  ஢ 
४⭮,     ᫥⢨,
 ᫨  ணࠬ 믮 樨, 易  
 , ࠡ ।⢥  ⠫,  맮 ⮩
楤 㤥   ।  񭭮 ⠫
 : ᫨ - 訡  ணࠬ 뢠 ⠫
  ४,  㤥 ࠧ  祭. 
ணࠬ, ⠪ ࠧ, 㤥 ஢ ᠬ ᥡ!





    ⪮ ᪠  ଠ ᪮ TR-DOS -  ଠ
ਣ    ࠡ ணࠬ.
      ४ ( 㬥  0) 室 16 ᥪ஢
(⠪ 㬥  0).   ᥪ - 256 (#100)
⮢.
     ⥬ 㦤 뤥 㫥 ४,    ࢮ
४    ᪠ ᯮ  ࠭ ᮤন
䠩.
     ᥪ 0-7 㫥 ४ 室  ⠫,
ᮤঠ騥 ଠ  ᠭ  ᪥ 䠩. 
 ⠫  16 ⮢,   ᠭ
 ⠡. 1.

 ͻ
  饭  砫             ਩          
 Ķ
                              䠩. ᫨     
                             ࠢ 0 - ,      
          0             8    ⠫  ᯮ;     
                             ᫨ ࠢ 1 -         
                             ᮮ⢥ ⮬ 䠩. 
 Ķ
                             ७ 䠩              
          8             1    (  ᨬ ७,
                             ᫨ ᯮ 3-ᨬ쭮
                             ७).                  
 Ķ
                             ⮢  䠩         
                             ( ᫥  ᨬ    
          9             2    ७, ᫨ ᯮ 
                             3-ᨬ쭮 ७).     
                              ᨪ-䠩 -      
                             ணࠬ  ६.       
 Ķ
                              䠩  .         
          11            2     ᨪ-䠩 -      
                             ணࠬ        
                             ६.                   
 Ķ
          13            1     䠩  ᥪ.       
 Ķ
                             ᪮  砫 䠩   
          14            2    (  -  ᥪ, 
                             ன  -  ४).   
 ͼ
                          . 1

    ᥣ ⠫ ᮤন #800/16=128 ⮢,  
 ᪥   ᨬ 128 䠩. ᯮ㥬 
⠫ (ᮮ⢥騥 ॠ 䠩  㤠 䠩)
ᯮ   砫, ᯮ㥬 -  .
     䠩  楫 ᫮ ᥪ஢.  ᯮ
  㣮  ஬⪮,   ⮬ 浪,  ஬
 ᫥  ⠫.  䠩 稭  ४ 1,
ᥪ 0.
     8 ⠫ (㦥 ᥪ) ᮤন ଠ
 ᪥  楫 (. ⠡. 2).    ⮣ ᥪ
ᯮ.

 ͻ
  饭  砫             ਩          
 Ķ
                                 ࠢ 0 
         #00            1     ࠢ쭮 ।   
                              ⠫,   ᪥
                             128 䠩.                   
 Ķ
                             ᪮  ࢮ        
         #E1            2    ᢮ ᥪ            
                             (  -  ᥪ, 
                             ன  -  ४).   
 Ķ
                              ᪥:                  
                             #16 - 80 ४, 2 ஭,   
                             #17 - 40 ४, 2 ஭,   
         #E3            1    #18 - 80 ४, 1 ஭,   
                             #19 - 40 ४, 1 ஭.   
                             (            
                             䨧᪨ ४,          
                             ᪨.)                  
 Ķ
         #E4            1    饥 ⢮ 䠩       
                             ( 㤠).          
 Ķ
                             ⢮ ᢮ ᥪ஢ 
         #E5            2    (᭠砫 訩 , ⮬  
                             訩).                     
 Ķ
         #E7            1    䨪樮  TR-DOS  
                             ( #10).                   
 Ķ
         #F4            1    ⢮ 㤠 䠩.  
 Ķ
                              ᪠ ( ,     
         #F5            8        11 ⮢
                               ᥪ).            
 ͼ
                          . 2

     , ଠ, ।⠢  ⠫, 筠.
ਬ,  ⥫ 䠩  뫮    㪠
᪮  砫 䠩 (⠪   ࢮ 䠩 
⥭ - ४ 1, ᥪ 0, -    㣮 䠩 
 ᫥, 室  㬬   ᥪ  䠩 
).  ࠬ, 室騥  㦥 ᥪ, ⠪
 뫮   ࠭ ⠬,  , 室  ᮤন
⮢ ⠫.
      ஭, 筮 -  , ⠪  
  . ,  㣮 ஭,   筮
頥 ࠡ  묨 (᪠,     䠩
 㧭  ࢮ ᢮ ᥪ,   ⮣,
⮡  , ᪫뢠   䠩,  
㦥 ⮢ ᫮).
       筮 㤠 㦨 訡,
ࠢ ᠭ  ⠫ 祭 ࠬ஢ 
᫥묨 祭ﬨ,  ⠪ ஢, ⮡ 祭
ࠬ஢ 室  ࠢ  ( ᥪ -
  0-15,  ⨯ ᪠ -   #16-#19, 
..). ஡ ଠ  ந ஢ઠ  
㧭  ਥ  ⥪ ணࠬ.


ணࠬ ॠ


    砫  ᠫ 㭪, ஢ ४⭮
⠫,  몥 C (ᯮ  Turbo C 2.0),  ⮬
㦥 ७   ᥬ Z80.   ஭,  稫
 ஢  ⫠,   㣮 ஭ - 稥 㭪樨
 C  ⥬,  ॡ  ஢
४⭮ ⠫  ணࠬ  ࠡ  ᪠ TR-DOS
(  䠩-ࠧ ⠪ ᪮)   ZX Spectrum, ,
ਬ,  AMiGA  PC.
     맮 㭪樨  ।  ࠬ: 
⠫   (..  ᮤন   ᥪ஢
㫥 ४)  ᨬ쭮 ⨬ ⢮ ४ 
᪥ ( 㭪樨 ந ஢ઠ, ⮡ ⢮ 
ᥪ஢ ᪠, ᫮  ⢮ ᢮ ᥪ஢,
㪠  㦥 ᥪ,  ॢ蠫 ⢠ ᥪ஢
 㪠  맮 㭪樨 ⢥ ४).
     ਭ樯,  뫮   ன ࠬ ࠢ
40, 80  160 ४,  ᨬ  ⨯ ᪠ (. ⠡.
2),  ।   ᠬ 㭪樨. 襭  । ⮣
ࠬ  맮 㭪樨 뫮 ਭ  ⮬ ⮣, ⮡
 뫮 ஢ ᪨, ଠ஢  襥
⢮ ४, 祬 ᫥  祭 ⨯ ᪠,  ⠪
RAM-᪨, ⢮ ४   । 񬮬
뤥   .
    㭪 頥 塠⭮ 祭,  訩  -
 0, ᫨ 訡  㦥,   訡 (. ⠡.
3),  訩  -   ⠫ (㬥  0),
 ᬮ७ ண 訡 뫠 㦥 (  
訡,  祭 "*"  ࢮ ⮫ ⠡. 3). ᫨
 ⠫ ᪮쪮 訡,  頥 㭪樥 祭
㤥 ᮮ⢥⢮ ࢮ 㦥 訡.

ͻ
  訡                    ਩                   
Ķ
     1       ࠢ 䨪樮  TR-DOS.      
Ķ
     2         㦥 ᥪ  ࠢ 0.      
Ķ
     3       ࠢ ⨯ ᪥ ( #16-#19).          
Ķ
     4        ࢮ ᢮ ᥪ      
             ᫮   0-15.                        
Ķ
             㦥 䠩 (, 㤠),      
     5*      砫쭮 ᥪ ண   ᫮  
               0-15.                               
Ķ
     6       ᪮ 饥 ⢮ 䠩             
              ᮢ  㪠  㦥 ᥪ.   
Ķ
     7       ᪮ ⢮ 㤠 䠩         
              ᮢ  㪠  㦥 ᥪ.   
Ķ
     8*      㦥 ᯮ㥬  ⠫,        
             ᫥騩 ᫥ ᯮ㥬.                
Ķ
     9        䠩 稭   ४ 1, ᥪ 0. 
Ķ
             㦥 䠩 (, 㤠), ᪮  
     10*      ண  ࠢ ᪮         
             ।饣 䠩, 㢥祭  ⢮   
             ᥪ஢  ।饬 䠩.                    
Ķ
               㦥 ᥪ ᪮     
     11      ࢮ ᢮ ᥪ  ࠢ ᪮   
              ᫥ 䠩, 㢥祭         
             ⢮ ᥪ஢  ᫥ 䠩.          
Ķ
              ,  㪠  㦥 ᥪ    
     12      ᪮  ࢮ ᢮ ᥪ -     
              "४ 1, ᥪ 0".                          
Ķ
             ⢮  ᥪ஢ ᪠, ᫮    
              ⢮ ᢮ ᥪ஢, 㪠     
     13       㦥 ᥪ,  , 祬      
             ᮤন ᥪ஢  㪠  맮     
             㭪樨 ᨬ쭮 ⢥ ४.         
ͼ
                          . 3

     ਢ ⨭ 㭪樨.

#define byte unsigned char    /* 1 .  */
#define word unsigned int     /* 2 . */

/* ==========================================================================
       㭪 test_cat - ஢ઠ ࠢ쭮 ⠫ TR-DOS.

室:  cat -  ⠫  , tracks - ᨬ쭮 ⢮ ४
        ᪥.

室: 2-⭮ 祭,  訩  -  訡  0, ᫨ 
       訡,  訩     訡 -  
       ⠫,  ᬮ७ ண 뫠 㦥 訡.
========================================================================== */

word test_cat (byte cat[0x900], byte tracks)
{
 byte files=0;      /* 饥 ⢮ 䠩.          */
 byte del_files=0;  /* ⢮ 㤠 䠩.      */
 byte element=0;    /*  ⥪饣  ⠫. */

 /* ஢ઠ 䨪樮  TR-DOS. */
 if (cat[0x8E7]!=0x10) return (1);

 /*   㦥 ᥪ   ࠢ 0. */
 if (cat[0x800]!=0) return (2);

 /*  ᪥   ᫮   0x16-0x19. */
 if ((cat[0x8E3]<0x16)||(cat[0x8E3]>0x19)) return (3);

 /*  ࢮ ᢮ ᥪ   ᫮   0-15. */
 if (cat[0x8E1]>15) return (4);

 /* 뢠 饥 ⢮ 䠩  ⢮ 㤠 䠩,
    ६ ஢, ⮡  砫쭮 ᥪ  䠩
     ᫮   0-15. */

 while (cat[element*16]!=0)
 { /*   㦨 ᯮ㥬    ᬮਬ  ⠫. */
  files++;
  if (cat[element*16]==1) del_files++;
  if (cat[element*16+0x0E]>15) return (5+(element<<8));
  element++;
 }

 /* ஢塞, ࠢ쭮   㦥 ᥪ 㪠 ⢮ 䠩
     ⢮ 㤠 䠩. */

 if (cat[0x8E4]!=files) return (6);
 if (cat[0x8F4]!=del_files) return (7);

 /* ᫨ ᥩ element=128,  ᬮ७  ⠫,  ⠫
    ᯮ㥬 ,   ஢, ⮡   뫨 祭
     ᯮ㥬. */

 while (element<128)
 {
  if (cat[element*16]!=0) return (8+(element<<8));
  element++;
 }

 if (files>0)
 {/*  . */

  /*  䠩  稭  ४ 1, ᥪ 0. */
  if ((cat[0x0F]!=1)||(cat[0x0E]!=0)) return (9);

  /* ᪮  (.. 砫 ४-ᥪ)  䠩, 稭
      ண,   ࠢ ᪮  ।饣 䠩,
     㢥祭  ⢮ ᥪ஢  ।饬 䠩. */

  for (element=1;element<files;element++)
  {
   if ((cat[(element-1)*16+0x0E]+cat[(element-1)*16+0x0F]*16+cat[(element-1)*16+0x0D])!=
       (cat[element*16+0x0E]+cat[element*16+0x0F]*16)) return (10+(element<<8));
  }

  /*   㦥 ᥪ ᪮  ࢮ ᢮ ᥪ
       ࠢ ᪮  ᫥ 䠩, 㢥祭 
     ⢮ ᥪ஢  ᫥ 䠩. */

  if ((cat[(files-1)*16+0x0E]+cat[(files-1)*16+0x0F]*16+cat[(files-1)*16+0x0D])!=
      (cat[0x8E1]+cat[0x8E2]*16)) return (11);
 }
 else
 {/*  . */

  /*   㦥 ᥪ ᪮  ࢮ ᢮ ᥪ
       "४ 1, ᥪ 0". */
  if ((cat[0x8E2]!=1)||(cat[0x8E1]!=0)) return (12);
 }

 /* ⢮  ᥪ஢ ᪠, ᫮  ⢮ ᢮
    ᥪ஢, 㪠  㦥 ᥪ,    , 祬
    ᮤন ᥪ஢  㪠  맮 㭪樨 ᨬ쭮
    ⢥ ४. */

 /* ८ࠧ  ⨯ long 㦭, ⮡   ९
     ࠢ ( ⮣ ࠧ來 long     ⮢). */

 if ((cat[0x8E1]+cat[0x8E2]*16+cat[0x8E5]+(((long)(cat[0x8E6]<<8))&0xFFFF)) >
    (tracks*16)) return (13);

 /*  ஢ન ᯥ譮 ன -  뢮,  訡 . */

 return (0);
}

      筠 楤  ᥬ Z80:

;---------------------------------------------------------------
;TEST_CAT - ஢ઠ ࠢ쭮 ⠫ TR-DOS.
;
;室:  ⠫ (#900 ⮢) 室     CAT,
;       A - ᨬ쭮 ⢮ ४  ᪥.
;
;室: A -  訡  0, ᫨  訡,
;       D -    訡 -  
;           ⠫,  ᬮ७ ண 뫠 㦥
;           訡.

TEST_CAT   EX   AF,AF'  ;࠭塞 ⢮ ४.

;஢ઠ 䨪樮  TR-DOS.

           LD   A,(CAT+#8E7)
           CP   #10
           LD   A,1       ;*
           RET  NZ

;  㦥 ᥪ   ࠢ 0.

           LD   A,(CAT+#800)
           AND  A
           LD   A,2       ;*
           RET  NZ

; ᪥   ᫮   #16-#19.

           LD   A,(CAT+#8E3)
           SUB  #16
           AND  %11111100
           LD   A,3       ;*
           RET  NZ

; ࢮ ᢮ ᥪ   ᫮  
;0-15.

           LD   A,(CAT+#8E1)
           AND  #F0
           LD   A,4       ;*
           RET  NZ

;뢠 饥 ⢮ 䠩  ⢮ 㤠
;䠩, ६ ஢, ⮡  砫쭮 ᥪ
; 䠩  ᫮   0-15.

           LD   IX,CAT
           LD   BC,16
           LD   D,B       ;饥 ⢮ 䠩 = 0.
           LD   E,B       ;⢮ 㤠 䠩 = 0.

; 㤥 믮,   㦨 ᯮ㥬
;   ᬮਬ  ⠫.

TEST_CAT_1 LD   A,(IX)
           AND  A
           JR   Z,TEST_CAT_3

           DEC  A
           JR   NZ,TEST_CAT_2
           INC  E

TEST_CAT_2 LD   A,(IX+14)
           AND  #F0
           LD   A,5       ;*
           RET  NZ

           INC  D
           ADD  IX,BC
           JR   TEST_CAT_1

;஢塞, ࠢ쭮   㦥 ᥪ 㪠 ⢮
;䠩  ⢮ 㤠 䠩.

TEST_CAT_3 LD   A,(CAT+#8E4)
           CP   D
           LD   A,6       ;*
           RET  NZ

           LD   A,(CAT+#8F4)
           CP   E
           LD   A,7       ;*
           RET  NZ

;᫨ ᥩ D=128,  ᬮ७  ⠫,  ⠫
;ᯮ㥬 ,   ஢, ⮡   뫨
;祭  ᯮ㥬.

           LD   E,D       ;E - 饥 ⢮ 䠩.

TEST_CAT_4 BIT  7,D       ;D=128?
           JR   NZ,TEST_CAT_5

           LD   A,(IX)
           AND  A
           LD   A,8       ;*
           RET  NZ

           INC  D
           ADD  IX,BC
           JR   TEST_CAT_4

TEST_CAT_5 INC  E
           DEC  E         ;E=0?
           JR   Z,TEST_CAT_9

; .
; 䠩  稭  ४ 1, ᥪ 0.

           LD   HL,(CAT+#0E)
           DEC  H
           LD   A,H
           OR   L
           LD   A,9       ;*
           RET  NZ

;᪮  (.. 砫 ४-ᥪ)  䠩,
;稭  ண,   ࠢ ᪮ 
;।饣 䠩, 㢥祭  ⢮ ᥪ஢
; ।饬 䠩.

           LD   IX,CAT+16
           LD   D,1       ;N ⥪饣  ⠫.

TEST_CAT_6 LD   B,(IX-1)  ;N ४ ।饣 䠩.
           LD   C,(IX-2)  ;N ᥪ ।饣 䠩.
           CALL MAKE_CDA
           LD   A,(IX-3)  ;- ᥪ஢  ।饬 䠩.
           ADD  A,C
           LD   C,A
           JR   NC,TEST_CAT_7
           INC  B

TEST_CAT_7 LD   H,B
           LD   L,C       ;HL=BC.
           LD   A,D
           CP   E         ; 䠩 ࠡ⠭?
           JR   Z,TEST_CAT_8

           LD   B,(IX+15) ;N ४ ⥪饣 䠩.
           LD   C,(IX+14) ;N ᥪ ⥪饣 䠩.
           CALL MAKE_CDA
           SBC  HL,BC     ; C 襭 ᫥ MAKE_CDA.
           LD   A,10      ;*
           RET  NZ

           LD   BC,16
           ADD  IX,BC
           INC  D
           JR   NZ,TEST_CAT_6

;  㦥 ᥪ ᪮  ࢮ ᢮
;ᥪ   ࠢ ᪮  ᫥ 䠩,
;㢥祭  ⢮ ᥪ஢  ᫥ 䠩 (..
;  ࠢ HL).

TEST_CAT_8 LD   BC,(CAT+#8E1)
           CALL MAKE_CDA
           SBC  HL,BC     ; C 襭 ᫥ MAKE_CDA.
           LD   A,11      ;*
           RET  NZ

           JR   TEST_CAT_A

; .
;  㦥 ᥪ ᪮  ࢮ ᢮
;ᥪ   "४ 1, ᥪ 0".

TEST_CAT_9 LD   HL,(CAT+#8E1)
           DEC  H
           LD   A,H
           OR   L
           LD   A,12      ;*
           RET  NZ

;⢮  ᥪ஢ ᪠, ᫮  ⢮
;᢮ ᥪ஢, 㪠  㦥 ᥪ,  
; , 祬 ᮤন ᥪ஢  㪠  맮
;㭪樨 ᨬ쭮 ⢥ ४.

TEST_CAT_A LD   HL,(CAT+#8E5)
           LD   BC,(CAT+#8E1)
           CALL MAKE_CDA
           ADD  HL,BC
           LD   A,13                   ;**
           RET  C      ;९!  ;**

           EX   AF,AF' ;ᨬ쭮 ⢮ ४.
           LD   B,A
           LD   C,0
           CALL MAKE_CDA

;HL    BC+1.

           SCF
           SBC  HL,BC ;HL=HL-(BC+1)
           LD   A,13                   ;***
           RET  NC                     ;***

; ஢ન ᯥ譮 ன -  뢮,  訡 .

           XOR  A                      ;****
           RET                         ;****

;MAKE_CDA - ணࠬ ८ࠧ ᪮ 
;  ,  㤮  ᫥.
;
;室:  B - N ४, C - N ᥪ.
;室: BC - N ४*16+N ᥪ.

MAKE_CDA   LD   A,B
           RRCA
           RRCA
           RRCA
           RRCA
           LD   B,A
           AND  #F0
           OR   C
           LD   C,A
           LD   A,B
           AND  #0F
           LD   B,A
           RET


     ⮩ 楤 - 228 ⮢. ᫨  ணࠬ 㦭
 ᭨,  訡  ,    訡 -
祭  ,  楤  .  ⮣ 
᪫  ⨭  ப, 祭 "*", 
ࠣ   ப, 祭 "**",  ᫥騥 ப:

           SBC  A,A
           RET  NZ     ;९!

 ࠣ   ப, 祭 "***",  ᫥騥
ப:

           CCF
           SBC  A,A
           RET

   ⨭ ࠣ   ப, 祭 "****".
     १  楤 ᮪  27 ⮢ 
⠢ 201 . 室 ࠬ ⠭ ⥬ , 
室 ࠬ  ⠪: ᫨ 䫠 Z ⠭,  
 浪,  ᫨  䫠 襭 - , 㦥 訡.
     楤  ᯮ ᠬ䨪 , ⠪ 
 室    饭  .





1. .祭, .. "ZX Spectrum  TR-DOS 
   짮⥫  ணࠬ⮢". , "", 1994.




    㣨    TR-DOS:

1. "   #1F  TR-DOS 5.03". "ZX-" 1-2/1997.

2. " ᮪饭 ६ ଠ஢". "ZX-" 1-2/1997.

3. "TR-DOS:    訡?". "ZX-" 5-6/1997.

4. "  ᪮   뢠". Adventurer #9,
   "ୠ ஭" #3, "⥫.  " 6/2000
   ( ).

5. "뢮 ᨬ ७ 䠩  樮
   ⥬ TR-DOS". "⥫.  " 7/2000.

6. "ᮢ襭⢮  । ᬥ ᪠".
   "⥫.  " 9/2000.

7. "७ 䠩 TR-DOS". "⥫.  "
   12/2000, ".  " 9/2001 ( ᥢ
   BV_Creator).

8. "㡠 䠩 '墮'". ".  " 4/2002.

9. "ᯮ짮 筮 ଠ樨   䠩 
   ०". ".  " 11/2002.
