 2008.: BEST-DOS -    AltairDOS 3.0x.


         ,    ,  
        BEST-DOS,    .


                         .
                      ~~~~~~~~~~~~~~~~~~~~~~~~
         2-   -  
           -
      .   
        ""
("") ,   24-  (  BEST-DOS -
(8)+(16), ..    64 ) 
   16    ( 64). 
       - 
 (  ).     - 1.06 -
   ,   4- :   0FBh + 
 0F9h + .    , ..    
 ,        -
      . 
        AltairDOS 3.0x ,       
,   ,       
          ,
      ( 
),      ( )   
 (. ).

                   .
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            CPM-    
 (TPA)   (  0..0FFh, BDOS, BIOS). 
 BEST-DOS   XTPA (     ,
  TPA),        -
BDOS.  CPM 2.2  DIGITAL RESEARCH      (   
)  CCP, BDOS  BIOS   (0C400h, 0CC06h, 0DA00h
),      ,  
   ,    BDOS  BIOS+3  
6..7  1..2 (  )  ,     CPM 
BDOS/BIOS   .      ( 
    "" ).   
 TPA  BEST-DOS (     59  ,  BIOS
   0EFFFh)  BDOS  BIOS     
    (   CCP),    
 6..7  1..2 (  ).
                BDOS (
  4 16-   4-   BDOS  
  BDOS+3...BDOS+10)   BEST-DOS   
( ),     (  BDOS+11..BDOS+22).
 24- (   BEST-DOS - (8)+(16)).
     /   
   () .    
     ,    .
      
  (. ),   ,     -
       
   .


                   .
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         BEST-DOS   , ,  ,  
    ,    -
        .  -
      ( -  -
    ,       BIOS), 
      CPM,    .
          (Volume label)    1  
+20h    (    )   16 .
(+20h..+2Fh).
             3..4 (   --
)    256 .
             5..10 (   
)    768 .
                  ,
  BEST-DOS      ,   ,
  .
              (. 0..3, 
18 )    5   1  (5   ).


                         .
                        ~~~~~~~~~~~~~~~~~
           CPM 2.2 ,  BEST-DOS    
16       CPM-  
.   BEST-DOS     -
      (16- )  
(            15).
 0 (  )       () 
    (15 ) .    
USER  INSERT         
   " " -   , 
    .

 " ":
      \                  <- 
        USER_1           <-   
        LANGUAGES        <-   
          PASCAL         <-   LANGUAGES
            SOURCE       <-   PASCAL
            COM_FILES    <-   PASCAL
          BASIC
        USER_4
        USER_7
        USER_8
        USER_9
          USER_10
            USER_12
              USER_13    <-    
        USER_14
        SYSTEM


                 .
                ~~~~~~~~~~~~~~~~~~~
                ( 
 ),         ,
         (. ):

   F000..F3FF -     .   EFFF  
       ( ), 
    ,       ,
    ,    .

  0:0000..0:3FFF  -   0
  0:4000..0:DFFF  -  ()
  0:E000..0:EFFF  -  
   ,       0:E000..0:EFFE,
   EFFF   !!!.      
   .

  1:0000..1:3FFF  -   0 ()
  1:4000..1:8FFF  -  ()
  1:9000..1:EFFF  -   (  )

  2:0000..2:DFFF  -   ( )
  2:E000..2:EFFF  -   ("" )

         :
  :0000..:DFFF  -  ()
  :E000..:EFFF  -  
  ,        
    ,       XTPA 3 ,
      .

                  F000..F3FF.

        BEST-DOS    ,
    (  ).  F000..F3FF   
  -     , 
,       :
   F000..F153   3.04   .
   F153..F1FE      
    ,     
    .
  2  (F1FF.F200)        
       IM2 ( 
 F2FF..F300).  ,   I Z80  
   .
    F201..F2FE    . 
   :
   0F201h -  LDIR :    ,   
             .BC        A+HL ( 
            +)       A'+HL'
   0F204h -  JMP :        A+HL
   0F207h -  CALL :       
            A+HL     RET
   0F20Ah -  RET.       
            c      JP  0F20Ah .    .
   0F20Dh -           
              A+HL
   0F20Dh -           
              A+HL
              .
 ,      
  / BDOS  BIOS       BDOS.

     F301..F33F   - BDOS (0) ,
BIOS (1..15),   (16..17),  / - 
       (18..20)
     :   DEFB < > DEFW <  >

0F301H   BDOS                                             0

0F304H    BIOS                                       1
0F307H                                       2
0F30AH                                           3
0F30DH                                            4
0F310H                                            5
0F313H                                   6
0F316H                                      7
0F319H  .  00                                         8
0F31CH                                                9
0F31FH  .                                       10
0F322H  .                                       11
0F325H  .                                  12
0F328H                                             13
0F32BH                                             14
0F32EH                                         15

0F331H      INT 50       16
0F334H     3 (ctrl+shf+key) 17

0F337H    /:             18
        , ,    ..
0F33AH                                                    19
0F33DH                                                    20

           ,   
 CALL   ,   /, ..
,   ,    .
   ,    
.   ,     
 (     ,     -
  )     ,   
.        -
        . ,
,       JMP 
 ,      (   
     ).     .
      A  HL, 
        BC,DE,A',BC',
DE',HL'.        -
    A  HL ,       .
    RET  JP 0F20Ah    -
 ,       .  
  - 105d BDOS (   -
 ,  ,  , 
      ).   
   .

          F340..F3BF   .

         0F3F5h -  ,   COLOR x y  
CCP  CONFIG.SYS.
         0F3F6h -   .  :
    D0 = 0/1 = WIDTH 6/8
    D1 = 0/1 = PROMPT OFF/ON
    D2 = 0/1 = ECHO OFF/ON
    D3 = 0/1 = - 10 BDOS  /   
    D4 = 0/1 = LPT F500/F600
    D5 = 0/1 =       INT 50 
    D6 = 0/1 = /   INT 50 (.  )
    D7 = 0/1 =   10  BDOS ( ).
         0F3F7h -    .
         0F3F8h -   0F8h.
         0F3F9h - ,   TPA ,   
                           2
         0F3FAh -   0FAh.
         0F3FBh -   0FBh.


                  BDOS.
                ~~~~~~~~~~~~~~~~~~~
             ,   BDOS,
  BDOS  CPM 2.2   :
    1. - 29h(41d)..3Ah(58d) -   .
    2. - 64h(100d)..73h(115d) -    .
    3. - 80h(128d)..0FFh(255d) -    BDOS. 
               
        . ,  - BDOS (.
       -  )    
         BDOS (0F301h)     .

 F29 -      DE    .16 . 
       : =0    0FFh   
 F2A -   ( DE)   . 16-   
       : =0    0FFh   
 F2B -   ( DE) . 16 .   
       : =0    0FFh     
 F2C -   .     ( DE) - 16 .
       : =0    0FFh     
 F2D -       ( DE)
       : =0    0FFh        
         
 F2E -        ( DE).
       : =<    >  0   
 F2F -        ( DE).
 F30 -        ( DE).
       : =<    >  0   
 F31 -        ( DE).
 F32 -    BAT-   ( DE).C 
       : =0    0FFh   .
 F33 -    BAT-   ( DE).
 F34 -      . : DE=ADDR(FCB).
       FCB     .   
       FCB   FCB+16..FCB+20  HEX   :
       FCB+16 -                FCB+19 - 
       FCB+17 -              FCB+20 - 
       FCB+18 - 
 F35 -    . : DE=ADDR(FCB).
         FCB+16..FCB+20     .34
 F36 -     (   DE)
            ASSIGN  CONFIG'
 F37 - / PATH-USER . : E=(0..0FH)/0FFH
       : E=10H..0FEH -   PATH-
 F38 -     
       .     .
       : DE=ADDR(FCB).
         FCB+16..FCB+20     .34
 F39 -     
       . : DE=ADDR(FCB).
         FCB+16..FCB+20     .34
 F3A -   128  DMA ( 
           / /).

   F21..F2D,F36,   DE / 
  ()  16 .

   F2E..F33   DE /   ,
   - 10 BDOS:
        Bmax Breal STRING[Breal] , 
   Bmax  -      STRING  (1 )
   Breal -   -    STRING (1 )
   STRING-    STRING ( Breal ).

  0FFh   .     
.

            BDOS-  .
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        4096  (4).

  . 100 (64h)
       DE.  ( 64  ) 
   BDOS .

  . 101 (65h)
   o   ( .100).
  : D= , E= .
  : A = 0,  , A = FF   
             .

  . 102 (66h)
      .
  : D= , E= .
  : A = 0,  , A = FF   
             .

  . 103 (67h)
   N  .
  : D= 
        E=  (0FFh  )
  : A= ,   
         , A=FF,     

  . 104 (68h)
  O N  
  : D= , = 
  : A= ,   
         , A=FF,    (
            )


  . 105 (69h)
    
  : DE =   -  
  : =    (1..13), 
             =FF - 
    -   ( ):
  +0       - ,    (0FFH- -
                -   . )
  +1..+8   -  
  +9..+10  -       (16 )
  +11..+12 -   (16 ) ( )
  +13..+14 -  /   (  . .)
             ( )./    
                  . /
                   
              ,   
               (   ). 
                B    
              4 ,   . DE-
                  .
  +15..+16 -  /   \ ( 
             . .) -   . 
              ,    
               (     SIGKILL=9)
                ,     
                  ).
              B, DE    \
             +13..+14 .
  +17..+18 -    (  . )
              0FFFFh    .  
               .    
             /   
              (  ) - . .
                 (17..18=FFFF)
              13..14  15..16  
                  ,
               (17..18<FFFF)-.
  +19      - , ,     
              .     = 7Fh
             (127d) -     - 
              (GUI),    
                -3 (ctrl+shift+key).
                 +19  
             ,     
              ,     
             ,      
                (   
             -   ).
  +20      -    (3 ctrl+shift+key) 
                 
               (     GUI -
             ).     
                 +19 
              7Fh (127d).
  +21..+36 -   ,  .
               (  16 ) 
                   +19
               7Fh (127d).


  . 106 (6Ah)
    
  : DE =   -   (8 )
  : =     (1..13),
              =FF,  
             .
       .
       (  ).

  . 107 (6Bh)
    
  :       0..13
          -    
         (    18 )
         A=0..13 -   
         :
    +0       -   
    +1..+8   -  
    +9..+11  - 24-    
    +12      - 
    +13..14  -  /  ( )
    +15..+16 -  /   
    +17      -   ( )


  . 108 (6Ch)
       .
  : DE=  -   (8 )
          ()    '?'
  : =1..13     -   , ^
              () 
         =FF      .

  . 109 (6Dh)
    
  :     128-  .
           256 4-   
             4096  (4).
         .. 128-   
         1 .   () :
           0         -  
           1..0Dh(13)-      
                        1..13 
           0Eh(14)   -     
           0Fh(15)   -    
         ,    1   256
          (  4)   -
           0..0FFh.   
          ,     2
          :  -   ( ),
          -  4  16-  
          . ,  3Eh  
         3-    0E000h  0EFFFh .  -
               
         3Eh/2=1Fh,    =>   .
            2Dh    
            2Dh/2=16h,    => 
          .

  . 110 (6Eh)
     
  : H=     
         L=    

  . 111 (6Fh)
   .    
  : DE =    (D) +  (E)
             .
  : A =  

  . 112 (70h)
      . 
  : E =  
  : HL =    (H) +  (L)
             .

  . 113 (71h)
       
        
    ,      .

  . 114 (72h)
    2   .
  : D,E -  2-  .
   2-    .
       .

  . 115 (73h)
     .
  : DE - ,   .
               .
  :  -   
       
  18    :
     +0      -   ( ), 
                  , .. 
                  (. 107d)
     +1      -   ,  
                 .
     +2..+17 -   .



      ( VT52,  A2h)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      !!!             
                   TPA DOS   TPA:4000..B7FF
                    27,'W',3   .
                    0..3   
                     . !!!

ESC,'4' -   
ESC,'5' -   
ESC,'@',byte - byte(1..1fh) -     < 20h
07 - BELL
08  .     -86
09 -    8
0A - CLS+HOME
1F - CLS+HOME
1B,'6' -   ,         -
          .
1B,'7' -    (.   )
1B,':' -  
1B,';' -  
ESC,'N' -         
          ESC,Y,LN+20h,COL+20h
ESC,'Y',LN,COL -   
ESC,'E' - CLS ( 0C)
ESC,'H' - HOME (  )
ESC,'J' -     (  )
ESC,'K' -     (-  )
ESC,'L' -  
ESC,'M' -  

ESC,'C',MODE -     ,  6 :
        MODE 0 - ,  1 (./.)
        MODE 1 - 4-  ,  1
        MODE 2 - 16-   ()
        MODE 3 - 16-   (.   ,  ,
          ""   ,      )
        MODE 4 - ,  2 (./.)
        MODE 5 - 4- ,  2
   !!!     MODE  D7   1,    
             . !!!

ESC,'Q',BYTE -    (6,8)
ESC,'P',BYTE -     :
                  BYTE    ,   
                .
                4-     0, 1, 2, 4
                  ,     16-
                :
               0 - , 1 - , 2 - , 4 - .
                  :
                                    
                     0                      black
                     1                     blue
                     2                     green
                     3                       cyan
                     4                     red
                     5                   magenta
                     6                  brown
                     7                       white
                     8                       gray
                     9        -      lightblue
                    10        -      lightgreen
                    11        -        lightcyan
                    12        -      lightred
                    13        -    lightmagenta
                    14                      yellow
                    15        -    brightwhite
ESC,'R',BYTE -    (BYTE= 1-8,  )

          (    ).

ESC,'W',0,Y,X,dY,dX -   . X,Y -  
                            .
                      dX,dY -    X   Y . -
                       X    X    4   6x10.
                              -
                      : ESC,'W',0,0,0,25,80.
ESC,'W',1 -    .  Y,X,dY,dX.
ESC,'W',2 -     .  .,..
ESC,'W',3,,,_. -     
                                  .
ESC,'W',4,,,_. -   .

           .
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ESC,'D',n -     , n = 0..9
esc,'D',0FFh -    

(h,m,s - ,,   )
(d,m,y - ,,   )
ESC,'Z' -   :
 esc,'Z',0 -       h,m,s
 esc,'Z',1,h,m,s -     h,m,s.
 esc,'Z',2 -   
 esc,'Z',3,byte -   
   :
   d0 - 1/0 - /  
   d1 - 1/0 -    / 
   d2 - 1/0 - /   
   d3 - 1/0 - 24/12   ( .)
 esc,'Z',4 -      (2 )
 esc,'Z',5,Y,X -     
(Y,X - 0..24,0..70;   -   )
 esc,'Z',6 - .    d,m,y
 esc,'Z',7,d,m,y - .    d,m,y

ESC,'S',n -  
 (  /  ).
        n = 0     .
        n = 1     .
        n = 0FFh     (0-1)

              {    !
ESC,'F',n -  :
(adr,bnk -   ,    .)
        n = 0 -    6 .
        n = 1 -    8 .
 esc,'F',2,adr,bnk -    6 .
 esc,'F',3,adr,bnk -    8 .
 esc,'F',4 -   6-     -
              adr,bnk.
 esc,'F',5 -   8-     -
              adr,bnk (  , XX:FF:XX).
               }
ESC,'X',n -      .
 n = 0 -      6.
 n = 1 -      8.
 n = 2 -       6.
 n = 3 -       8.
     n = 2  3 
 .

ESC,'B' -    ,  -
             27,'P',byte

ESC,'I' - /   
          (0..2/FF).    
             .   
           3  (0..2) (hex:0,4000h,8000h).

ESC,'V' - /   
          (0..2/FF).   
          ,     , 
                 .
               ,  -
           .

 D5  F3F6   1   ESC -   
   .     -
    .
 ESC,'U',0/1 - /   
  : 13 
byte0:D0,D1 -         (00b-mono/01b-16cfast/10b-4c/11b-16c
               
      D2 -                      (0-/1-)
      D3 - /        (0-/1-)
      D4 -  6/8                 (0-6_/1-8_)
      D5 -   6           (0-/1-)
      D6 -   8           (0-/1-)
      D7 - auto_CRLF                    (0-/1-)
byte1,byte2:              (Y+20h/X+20h)
byte3 -                     (1..8)
byte4 -                         (byte)
byte5 - y
byte6 - x  - 
byte7 - dy
byte8 - dx
byte9  -    (D0..D1) (00b..10b)
       -     (D2..D3) (00b..10b)
byte10 -   0  ( -  byte  ESC,'C',byte)
byte11 -   1
byte12 -   2
                        :

1.    1  2   
   ,      , -
 XTPA,      -
    (.103 BDOS)   -
   ,     -
   (- 104 BDOS).  - 103 BDOS
   ,     -
    .

2.  0 -   ,     
   .     -
   !

3.  :

 0  -> B0:0000-3FFF, B1:0000-3FFF
 00..03(.), 10H..13H()

 1  -> B0:4000-7FFF, B1:4000-7FFF
 04..07(.), 14H..17H()

 2  -> B0:8000-BFFF, B1:8000-BFFF
 08..0BH(.), 18H..1BH()

    19H,1H,1BH
      
  2     (
)


            Alt-DOS V3.XX
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        .Z80
;
BDOS    equ     5
MARKER  equ     0EFFFh
DRVBANK equ     0FFH            ;    
DRVADDR equ     0FFFFh          ;    
YCONOUT equ     3*4+0F301h
BJMP    equ     0F204h
;
HEADER: db      13,10,'BEEPER V1.0.',13,10,'$'
ERROR:  db      'Out of memory or already installed.',13,10,'$'
BADSYS: db      10,13,'Incorrect DOS version.',13,10,'$'
;
BEGIN:  ld      c,12
        call    BDOS
        exx
        ld      a,h
        cp      0ABh            ;  Alt-DOS V3.XX ?
        ld      c,9
        ld      de,BADSYS
        jp      c,BDOS
        ld      de,HEADER
        call    BDOS
        ld      de,DRVSTR
        ld      c,105
        call    bdos            ;  
        ld      de,ERROR
        ld      c,9
        inc     a
        jp      z,BDOS
        ret
;
; +0       -  ,    
; +1..+8   -  
; +9..+10  -       (16 )
; +11..+12 -   (16 )
; +13..+14 -  /  (,   ,  ).
;                .   
;              (      XTPA)
; +15..+16 -  /   ( )
; +17..+18 -    (  . )
; +19      - -
;
DRVSTR: db      DRVBANK
        db      'Beeper  '
        dw      DBEG
        dw      DEND-DBEG
        dw      INSTALL-OFFSET  ;  
        dw      SIGNAL-OFFSET   ;    
        dw      DRVADDR
        db      0
;
DBEG:
        .phase  0               ;DRVADDR
OFFSET:
INSTALL:DI
        jr      NEXT
;
HLATTAB:dw      FF0+1,FF1+1,FF2+1,FF3+1,FF4+1,EXLINK+1,0
;
NEXT:   db      3Eh             ;  
INSFLAG:db      0               ; ( 
        or      a               ;  )
        jr      nz,EXLINK       ;  
        ld      h,b             ;   
        ld      l,0             ; .= 
        add     hl,hl
        add     hl,hl
        add     hl,hl
        add     hl,hl           ;  -> 
        ld      b,h
        ld      c,l             ; hl=bc=install
        ld      de,HLATTAB-OFFSET
        add     hl,de           ; hl=hlattab
LINK:   ld      e,(hl)
        inc     hl
        ld      d,(hl)
        inc     hl
        ld      a,e
        or      d
        jr      z,EXLINK
        ex      de,hl
        add     hl,bc
        ex      de,hl           ; de:=de+bc (de+offset)
        ld      a,(de)
        add     a,c
        ld      (de),a
        inc     de
        ld      a,(de)
        adc     a,b
        ld      (de),a
        jr      LINK
EXLINK: ld      hl,INSFLAG      ;  . 
        ld      (hl),1
        ld      a,(YCONOUT)     ;   CONOUT
FF0:    ld      (OLDBANK),a
        ld      a,(MARKER)
        ld      (YCONOUT),a
        ld      hl,(YCONOUT+1)
FF1:    ld      (OLDADDR),hl
FF2:    ld      hl,NEWSUBR
        ld      (YCONOUT+1),hl
        EI
;
SIGNAL: ret        ; : reg.c = 9 (SIGKILL)-,  = 1 (SIGHUP)-init
                   ;          
;
NEWSUBR:ld      h,4     ;     
LOOP1:  ld      a,c     ;  .   
        SUB     ' '     ; .   .   HL
        OUT     (0FFh),a
LOOP2:  dec     a
        jr      nz,LOOP2
        dec     h
        jr      nz,LOOP1
FF3:    ld      a,(OLDBANK)
FF4:    ld      hl,(OLDADDR)
        jp      BJMP            ;    
OLDBANK:ds      1
OLDADDR:ds      2
        .dephase
DEND:

        end     BEGIN


