                    8.  

           Z80   (ROM) ZX Spectrum
        
.              
BASIC,      ,    
.      .

                     8.1   

      ZX Spectrum     :

BEEPER             #0385 (949)
                 -     .  -
                    DE     ,
                       HL  - .    
                        
                   .  ,    
                      f   t.    DE
                      f*t,           HL    
                   437500/f-30.125.      ,
                      .

BEEP               #03F8 (1016)
                 -           
                       .    
 


                            - 55 -

                     BEEP           
                   .    BEEP            
                   ,             
                      BEEPER.

     BEEPER        ZX-BASIC  BEEP   
,            
.              ,
  BEEP.               
.      BEEPER      RET
 EL.

                   8.2   

    ,         
   :

SAVE_BYTES         #04C2 (1218)
                 -   DE    -
                    ,   IX  -    ,   
                    A -   :

                       0         - ;
                       255 (#FF) -  .

                    ,     ,   
                           
                    ( 5 .),    ( 2
                   .).            
                           0    255   
                         .        
                           
                   .              
                     LOAD       (     
                           )  
                    .

        17 :

         1              -   :
                              0 -  BASIC
                              1 -  
                              2 -  
                              3 -  .

         2-11          -    10  .  
                                  0  255.   
                                10  ,    
                              .

         12-13         -  ,   -
                              .

         14-17         -    :

 


                            - 56 -

                                 0:
                                14-15  -   ,
                                                     
                                              
                                                 >   32767
                                              (#7FFF).

                                16-17  -   
                                                 -
                                              .

                                 1  2   
                               15     ()
                                     (,
                                       
                               .

                                 3:
                                14-15  -   -
                                              ,          
                                                   
                                               .

             
  ,               
 LOAD.
       :

LOAD_BYTES         #0556 (1566)
                 -  ,    SAVE_BYTES,      
                    DE    ,  IX -
                        ,   A -
                        .     
                          
                   SCF.       C
                            
                    (  VERIFY).   
                            
                         C         
                   ,      
                     C=1.

                 8.3     .

           ,     
,            ,    ,
     .     
     :

CHAN_OPEN          #1601 (5633)

              : 1 -
 "K", 2 -  "S", 3  -  "P".       
,       .      
:
 


                            - 57 -


         RST #10

     ,    A,  
 .
     ,  ,   RST  #10.
   : PRINT FLASH 1; AT 5,3;"X";#3;"A"

         LD        A,2         ;  "S"
         CALL      CHAN_OPEN
         LD        A,#12       ;  FLASH
         RST       #10
         LD        A,1         ; FLASH
         RST       #10
         LD        A,#16       ;  AT
         RST       #10
         LD        A,#5        ; AT
         RST       #10
         LD        A,#3
         RST       #10
         LD        A,#58       ; "X"
         RST       #10
         LD        A,3         ;  "P"
         CALL      CHAN_OPEN
         LD        A,#41       ;  "A";
         RST       #10
         RET                   ;  

      ,   "A"      ,
             
,       (13)  :

COPY_BUFF          #0EC0 (3789)

    ,         
    .   :


PR_STRING          #203C (8252)
                 -    ,   
                     DE      BC.    
                      .   
                           ,  
                        ATTR_T,
                   MASK_T,     P_FLAG.

            ,        
       
  .      
 :

PRINT_FP           #2DE3 (11747)
                 -         ,
                       ,    
                   ZX-BASIC,        
 


                            - 58 -

                   ,  ,    ..
                          
                     .

            0   9999   
  :

OUT_NUM1           #1A1B (6683)
                 -   ,    BC,    4-
                   ,             
                   . ZX  Spectrum    
                         .

                     8.4  

              PLOT, DRAW
 CIRCLE:

PLOT_SUB           #22E5 (8933)
                 -           
                     (X,Y).      
                    X  C  Y  B.

PIXEL_ADD          #22AA (8874)
                 -        BC  (Y,X)  
                             HL 
                   ,    .   
                               X   MOD  8,
                   ,           
                   .

DRAW_1             #2477 (9335)
                 -      X  Y, 
                      .  
                   PLOT    .

DRAW_3             #24BA (9402)
                 -      -
                      ABS Y -> B, ABS X-> C, SGN
                   Y -> D, SGN X -> E.

DRAW_ARC           #2394(9108)
                 -   .  X,Y,Z    
                               
                   . Z   .

CIRCLE_1           #2320 (9005)
                 -           (X,Y) 
                     Z,         
                      .

!!!          HL
(. " ").

                  
 


                            - 59 -


.   COPY  :

COPY               #0EAC (3756)
                 -          22 
                   .

                 
,      BASIC.


               8.5    

CLS                #0D6B (3435)
                 -    .    
                         .

CLS_LOWER          #0D6E (3438)
                 -     .     
                                
                        
                         .    
                           DF_CL        SPOSNL,
                     .

CL_LINE            #0E44 (3652)
                 - ,     , -
                       .          
                    B.

          ,   
.                 "K"
.          
  BORDER    ,   ATTR_P
 MASK_P  ,        ATTR_T
 MASK_T.

CL_SC_ALL          #0DFE (3582)
                 -       (24  
                   )         ( 
                   ).       
                   BASIC,      .

CL_SCROLL          #0E00 (3584)
                 -     B   -1   
                    (   2)     
                         ,   , 
                     . ,  
                         ,  
                         .


               ,       
       .

 


                            - 60 -

                  8.6   

                
 LAST_K.       FLAGS
 :        (1-
, 0-             ).
     ,    ,  
  ,       LAST_K
  .            
      1.           ZX   Spectrum
   50   :

KEYBOARD           #02BF (703)
                 -     , 
                     ,    
                     ,             LAST_K  
                    5  FLAGS.  
                                
                   .    MODE,
                               
                     :

                   MODE-1 < 0     K, L  C
                   MODE-1 = 0     E
                   MODE-1 > 0     G

                    K  L  C     
                       FLAGS.  0    K,     1
                     L     C.        FLAGS
                    ,    L(0)
                     C(1).          
                   .

             ,       
 ,      
      IN.      
,            BASIC.

                        8.7 

            
    ,   ROM  
#2F9B (12187)  #386D (14445).    
RST #28,      #335B (13457).

           66   ,
                .
          ,  
    RST  #28.      
    #38 (56).

             ,   
   . ,    
  ...Z,X,Y.

 


                            - 61 -

----------------------------------------------------------------
| |                  |              |
|--------------|          |                       |
| . | . |                  |                    |
|--------------------------------------------------------------|
|    1 |  #01  |   |  ... Z     Y      X        |
|    3 |  #03  |         |        ... Z     X-Y       |
|    4 |  #04  |         |        ... Z     X*Y       |
|    5 |  #05  |           |        ... Z     X/Y       |
|    6 |  #06  |           |        ... Z     X**Y      |
|   15 |  #0F  |          |        ... Z     X+Y       |
|   27 |  #18  |    |  ... Z     X     -Y        |
|   31 |  #1F  |             |  ... Z     X     sin Y     |
|   32 |  #20  |           |  ... Z     X     cos Y     |
|   33 |  #21  |           |  ... Z     X     tg Y      |
|   34 |  #22  |          |  ... Z     X     asn Y     |
|   35 |  #23  |        |  ... Z     X     acs Y     |
|   36 |  #24  |        |  ... Z     X     atg Y     |
|   37 |  #25  |  .  |  ... Z     X     ln Y      |
|   38 |  #26  |        |  ... Z     X     exp Y     |
|   39 |  #27  |   |  ... Z     X     int Y     |
|   40 |  #28  |  |  ... Z     X     sqr Y     |
|   41 |  #29  |         |  ... Z     X     sgn Y     |
|   42 |  #2A  |  .  |  ... Z     X     abs Y     |
|   49 |  #31  |  |  ... Z     X     Y   Y     |
|   50 |  #32  | N MOD M          |  ... Z       |
|   52 |  #34  |     |  ... Z     X     Y   D     |
|   56 |  #38  |     |  ... Z     X     Y         |
|   58 |  #3A  | INT(Y+.5)        |  ... Z     X    INT(Y+.5)  |
|  160 |  #A0  |  0       |  ... Z     X     Y   0     |
|  161 |  #A1  |  1       |  ... Z     X     Y   1     |
|  162 |  #A2  |  0.5     |  ... Z     X     Y  0.5    |
|  163 |  #A3  |  PI/2    |  ... Z     X     Y  PI/2   |
|  164 |  #A4  |  10      |  ... Z     X     Y   10    |
----------------------------------------------------------------
           ,   
1.5*SIN(X)+X**2*COS(X*PI/2).  ,      X 
 .     #28   
 :
---------------------------------------------------------
|  |                                  |
|-------------------------------------------------------|
| #31  |   X   X                                        |
| #31  |   X   X   X                                    |
| #31  |   X   X   X   X                                |
| #A3  |   X   X   X   X   PI/2                         |
| #04  |   X   X   X   X*PI/2                           |
| #20  |   X   X   X   COS(X*PI/2)                      |
| #04  |   X   X   X*COS(X*PI/2)                        |
| #04  |   X   X*X*COS(X*PI/2)                          |
| #01  |   X*X*COS(X*PI/2)  X                           |
| #1F  |   X*X*COS(X*PI/2)  SIN(X)                      |
| #34  |    1.3 (5 )                        |
| #F1  |                                                |
---------------------------------------------------------
 


                            - 62 -

---------------------------------------------------------
| #26  |                                                |
| #66  |                                                |
| #66  |                                                |
| #66  |   X*X*COS(X*PI/2)  SIN(X)   1.3                |
| #04  |   X*X*COS(X*PI/2)  1.3*SIN(X)                  |
| #0F  |   X*X*COS(X*PI/2)+1.3*SIN(X)                   |
| #38  |                                 |
---------------------------------------------------------

                  
 ,      #34.  
#F1#26#66#66#66      2*113*0.13,      0.13. 
          . 
 :

         -     #40 (64)     
            :        #50
           (    0)     #50 (
             0);

         -      (0,1,2,3)    1   ,
               .    5
             .

        #F1 (241),    #40 (64)   
#31 (49),        3.   ,   
     #31+#50=#81      4
  .          0     
#40#B0#00,   #0,   #40      ,
 0.       +#50  #B0+#50=#00  (
         256)   
      .      ( 5) 
.   ,  10   #40#B0#00#0A.
       #34           
.   ,         
    ,      .    
      .    
   ,       :

STK_TO_BC          #2307 (8967)
                 -      ( 5- -
                   )         
                     B    C.       
                     -255   255.   
                     BASIC   8 (  
                      RST   #8).        
                         .   
                          D     E.    ,
                     ,    
                    .

STK_TO_A           #2314 (8980)
                 - ,  ,     -
                   ,       
 


                            - 63 -

                          .
                        C.

STACK_FETCH        #2BF1 (11249)
                 -          (5
                   )      A, E, D,  C,
                   B.

FP_TO_BC           #20A2 (11682)
                 -        
                         BC.   
                     Z (0  ).
                            
                   65535,   C   1   
                           (   
                   ZX-BASIC  ).

SIK_STORE          #2AB6 (10934)
                 -        5 
                       A,   E,  D,  C,   B.     1.3
                   (#81#26#66#66#66)              
                                 (
                   ,     
                   3 ):

   LD     A,#81                        RST     #28
   LD     DE,#6626                  DEFB    #34
   LD     BC,#6666                     DEFB    #F1
   CALL   #2AB6                        DEFB    #26
                                       DEFB    #66
                                       DEFB    #66
                                       DEFB    #66
                                       DEFB    #38

STACK_A            #2D28 (11560)
                 -    A      
                     5- .

STACK_RC           #2D2B (11563)
                 -    ,     
                       BC.

           HL 
    5- ,     .  
           
   .    ,     PRINT_FP
        .        
      :
         LD        A,#A5
         CALL      STACK_A
         RST       #28
         DEFB      #2F
         DEFB      #1D
         DEFB      #38
         RET
 


                            - 64 -

                 
      SEED.

            8.8   

SET_MIN            #16B0 (5808)
                 -       
                    BASIC,     .  
                       , 
                         .  
                      ,    
                     .

MAKE_ROOM          #1655 (5717)
                 -  ,     HL    
                      ,   BC -  
                   .      , 
                        
                                .
                   ,              
                       BASIC     
                     ,   ..

RECLAIM_2          #19E8 (8168)
                 -   .   HL -
                         ,     
                   ,      BC  -      .
                   ,    ,   
                      .

CLEAR_BUFF         #0EEF (8815)
                 -       
                       .

LINE_ADDR          #196E (6510)
                 -           
                     BASIC.    HL 
                     .    HL 
                           .
                             ,  
                      Z.

FREE_MEM           #1F1A (7962)
                 -         BASIC,
                   ..   STKEND   RAMTOP.   HL   BC
                               ,
                                  2,
                          STKEND+80      SP
                   (   Z80).

BREAK_KEY          #1F54 (8020)
                 -       
                    CS  BREAK.   ,  
                   C .