>>>>>>>     :     V3.04   DRIVER.SYS   <<<<<<<
>>>>>>>                 A2)                             <<<<<<<

	 ,    ,  
	BEST-DOS,    .


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

		   .
		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	    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..F348   - BDOS (0) ,
BIOS (1..15),   (16..17),  / - 
     (18..23)
     :   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                              17

0F337H                           18
0F33AH                             19
0F33DH                                    20
0F340H                                      21
0F343H                             22
0F346H       (drug and drop)        23

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

	  F349..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-  .
	   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  . 100 (64h)
       DE.   .

  . 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=C   
	       ,   . DE--
	         .
  +15..+16 -  /    (  .
	     .).    - 106 
	           
	     (     ).
	      B=C, DE   
	     13..14 .
  +17..+18 -    (  . )
	      0FFFFh    .  
	       .    
	     /   
	      (  ) - . .
	         (17..18=FFFF)
	      13..14  15..16  
	          ,
	       (17..18<FFFF)-.
  +19      - , ,     
	       .     = 7Fh
	     (127d),      .
	          
	           
	     .
  +20      -     
	        
	      .     
	      ,   +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 -   .



          ( 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 -  /   (  . .)
; +15..+16 -  /    
; +17..+18 -    (  . )
; +19      - -
;
DRVSTR: db      DRVBANK
	db      'Beeper  '
	dw      DBEG
	dw      DEND-DBEG
	dw      INSTALL-OFFSET
	dw      FORKILL-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
;
FORKILL:ret             ;    
;
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




  (.103 BDOS)   -
   