

,    "1"   L  "1024"     "1"   H.

03D1 BE-IX+3      NOP                        "4"  
03D2 BE-IX+2      NOP                          
03D3 BE-IX+1      NOP                        .
03D4 BE-IX+0      INC   B                      B  C 
                  INC   C                      H  L -
                                            . .
03D6 BE-H&L-LP    DEC   C                   " " - .. "BC"*"4"
                  JR    NZ,03D6,BE-H&L-LP    .
                  LD    C,+3F               (     C
                  DEC   B                     "L+1").
                  JP    NZ,03D6,BE-H&L-LP   

     .

                  XOR   +10                   4.

                  OUT   (+FE),A               OUT,
                                              .
                  LD    B,H                   B.
                  LD    C,A                   A.
                  BIT   4,A                     ,
                  JR    NZ,03F2,BE-AGAIN     .

      DE.

                  LD    A,D                    
                  OR    E                    , 
                  JR    Z,03D6,BE-END       .
                  LD    A,C                   .
                  LD    C,L                   C.
                  DEC   DE                    .
                  JP    (IX)                   
                                             .

     .

03F2 BE-AGAIN     LD    C,L                   C.
                  INC   C                    "16"  ,
                                            ..   .
                  JP    (IX)                 .

  "beep"   . 

03F6 BE-END       EI                         .
                  RET                        .

  "BEEP"
        .    " " ,  - "".

03F8 BEEP         RST   0028,FP-CALC           t  P  
                                               
                                             .
                  DEFB  +31,duplicate       t,P,P
                  DEFB  +27,int             t,P,i ( i = INT P)
                  DEFB  +C0,st-mem-0        t,P,i (mem-0  i)
                  DEFB  +03,subtract        t,P ( p - 
                                             P)
                  DEFB  +34,stk-data           
                                             'K'.
                  DEFB  +EC,exponent+7C     0.0577622606 (
                  DEFB  +6C,+98,+1F,+F5       12*(2^0.5)-1)
                  DEFB  +04,multiply        t,pK
                  DEFB  +A1,stk-one         t,pK,1
                  DEFB  +0F,addition        t,pK+1
                  DEFB  +38,end-calc

     i,   " ".

                  LD    HL,+5C92             'mem-0-1st' (MEMBOT).
                  LD    A,(HL)                i.
                  AND   A                    ,  i   
                  JR    NZ,046C,REPORT-B     .
                  INC   HL                     
                  LD    C,(HL)               C.
                  INC   HL                     
                  LD    B,(HL)               B    A.
                  LD    A,B                
                  RLA                          B,
                  SBC   A,A                  i  
                  CP    C                    -128<=i<=+127
                  JR    NZ,046C,REPORT-B
                  INC   HL
                  CP    (HL)

                  JR    NZ,046C,REPORT-B
                  LD    A,B                    
                                             .
                  ADD   A,+3C
                  JP    P,0425,BE-i-OK       -60<=i<=67.
                  JP    PO,046C,REPORT-B     
                                             -128  -61.

:   +70  +127   .

    " " i.

0425 BE-i-OK      LD    B,+FA                 "6"   "
                                            ". 
0427 BE-OCTAVE    INC   B                      
                  SUB   +0C                   i.
                  JR    NC,0427,BE-OCTAVE
                  ADD   A,+0C                 
                                            .
                  PUSH  BC                    .
                  LD    HL,+046E               .            
                  CALL  3406,LOC-MEM           
                  CALL  33B4,STACK-NUM      "-"   
                                            .

     " ".

                  RST   0028,FP-CALC        t, pK+1, C
                  DEFB  +04,multiply        t, C(pK+1)
                  DEFB  +38,end-calc

   " "         f.

                  POP   AF                    
                  ADD   A,(HL)                
                  LD    (HL),A               "2    ".
                  RST   0028,FP-CALC        t, f
                  DEFB  +C0,st-mem-0           
                  DEFB  +02,delete            mem-0.

   "".

                  DEFB  +31,duplicate       t, t
                  DEFB  +38,end-calc
                  CALL  1E94,FIND-INT1       'INT t'  
                  CP    +0B                   
                                            +00 to +0A.
                  JR    NC,046C,REPORT-B

    "beep"  "f*t", ..    .

                  RST   0028,FP-CALC        t
                  DEFB  +E0,get-mem-0       t, f
                  DEFB  +04,multiply        f*t

    ,    " ",   "beep".

                  DEFB  +E0,get-mem-0       f*t, f
                  DEFB  +34,stk-data            
                  DEFB  +80,four bytes       
                  DEFB  +43,exponent +93    '3.5 * 10^6/8'
                  DEFB  +55,+9F,+80,(+00)   f*t, f, 437,500 (.)
                  DEFB  +01,exchange        f*t, 437,500, f
                  DEFB  +05,division        f*t, 437,500/f
                  DEFB  +34,stk-data
                  DEFB  +35,exponent +85
                  DEFB  +71,(+00,+00,+00)   f*t, 437,500/f, 30.125 (.)
                  DEFB  +03,subtract        f*t, 437,500/f - 30.125
                  DEFB  +38,end-calc

:  '437,500/f'   "" ,     '30.125'  '120.5'  ,        .      .

                  CALL  1E99,FIND-INT2       " "
                                                BC
                  PUSH  BC                   .

:   " "   ,    (  ERROR-1),        " " '+70 to +127'.

                  CALL  1E99,FIND-INT2       "f*t"  
                                              BC.
                  POP   HL                    "
                                            "  HL.
                  LD    D,B                   'f*t'  DE
                  LD    E,C              

   "beep"   'f*t'.

                  LD    A,D                 ,  "f*t"
                  OR    E                     " 
                  RET   Z                   ".
                  DEC   DE                      
                  JP    03B5,BEEPER           BEEP (
                                                ).

   B - interget out of range

046C REPORT-B     RST   0008,ERROR-1          
                  DEFB  +0A                 .

 'SEMI-TONE'(" ")
      .

                      , .            
046E DEFB         +89,+02,+D0,+12,+86       261.63 C
     DEFB         +89,+0A,+97,+60,+75       277.18 C#
     DEFB         +89,+12,+D5,+17,+1F       293.66 D
     DEFB         +89,+1B,+90,+41,+02       311.12 D#
     DEFB         +89,+24,+D0,+53,+CA       329.63 E
     DEFB         +89,+2E,+9D,+36,+B1       349.23 F
     DEFB         +89,+38,+FF,+49,+3E       369.99 F#
     DEFB         +89,+43,+FF,+6A,+73       392 G
     DEFB         +89,+4F,+A7,+00,+54       415.30 G#
     DEFB         +89,+5C,+00,+00,+00       440 A
     DEFB         +89,+69,+14,+F6,+24       466.16 A#
     DEFB         +89,+76,+F1,+10,+05       493.88 B

 'PROGRAM NAME' (" ") (ZX81)
    ZX81    ,     ZX-SPECTRUM.

04AA DEFB         +CD,+FB,+24,+3A
     DEFB         +3B,+5C,+87,+FA
     DEFB         +8A,+1C,+E1,+D0
     DEFB         +E5,+CD,+F1,+2B
     DEFB         +62,+6B,+0D,+F8
     DEFB         +09,+CB,+FE,+C9

   

 16        .      - SAVE, LOAD, VERIFY  MERGE.

     SAVE-ETC (0605).       ,    ,    .

   ,    ,   :  IX       ,  DE      (  )   A  +00       +FF     /.


 'SA-BYTES'

    SAVE     ( 09BA)       / ( 099E).

04C2 SA-BYTES     LD    HL,+053F               
                  PUSH  HL                  SA/LD-RET.
                  LD    HL,+1F80               
                                              
                                            5 .
                  BIT   7,A                   ,  
                  JR    Z,04D0,SA-FLAG      .
                  LD    HL,+0C98               
                                             2-   
                                            .
04D0 SA-FLAG      EX    AF,A'F'               /.
                  INC   DE                    
                  DEC   IX                    " " 
                                             .
                  DI                           SAVE
                                             .
                  LD    A,+02                'MIC' , 
                                             .
                  LD    B,A                     B.

  ,    .  "MIC "  "MIC "    2168  .           .

:   -      ""  ""   -  ""  "".

04D8 SA-LEADER    DJNZ  04D8,SA-LEADER        .
                  OUT   (+FE),A             MIC /,  RED/CYAN,
                  XOR   +0F                   .
                  LD    B,+A4                 .
                  DEC   L                      .
                  JR    NZ,04D8,SA-LEADER      .
                  DEC   B                      
                                            (  13 
                                            ).
                  DEC   H                      .
                  JP    P,04D8,SA-LEADER       
                                            ,   
                                            .

 .

                  LD    B,+2F
04EA SA-SYNC-1    DJNZ  04EA,SA-SYNC-1      MIC    667 
                                             'OUT to OUT'.
                  OUT   (+FE),A             MIC ,  RED.
                  LD    A,+0D                'MIC  & CYAN'.
                  LD    B,+37               MIC    735 
04F2 SA-SYNC-2    DJNZ  04F2,SA-SYNC-2       'OUT to OUT'.
                  OUT   (+FE),A              MIC  &  CYAN.

 v.  /   ,     SAVE.


                  LD    BC,+3B0E            +3B   ;
                                            +0E  'MIC off & YELLOW'.
                  EX    AF,A'F'                   L
                  LD    L,A                  "".
                  JP    0507,SA-START            SAVE

    .  ,  SAVE,  ;      ,       ,         .

04FE SA-LOOP      LD    A,D                  "" 
                  OR    E                     , 
                  JR    Z,050E,SA-PARITY      0.
                  LD    L,(IX+00)             , -
                                                SAVE.
0505 SA-LOOP-P    LD    A,H                   .
                  XOR   L                     .
0507 SA-START     LD    H,A                  . ,
                                                
                                             .
                  LD    A,+01                'MIC  & BLUE'.
                  SCF                         . 
                                               ""
                                             8   .
                  JP    0525,SA-8-BITS       .

     ,     L  .

050E SA-PARITY    LD    L,H                    .
                                            "".
                  JR    0505,SA-LOOP-P       .

    .    SA-BIT-1    ,   .       ,  ". "  ". ".       855  .

0511 SA-BIT-2     LD    A,C                     
                                              
                                            'MIC . & YELLOW'.
                  BIT   7,B                   Z,  ,
                                              " ".
0514 SA-BIT-1     DJNZ  0514,SA-BIT-1         . 
                                            801    
                                            .
                  JR    NC,051C,SA-OUT         , 
                                             "0".
                  LD    B,+42                  "1", 
051A SA-SET       DJNZ  051A,SA-SET          855  .
051C SA-OUT       OUT   (+FE),A                'MIC . &
                                            BLUE',    
                                            'MIC . & YELLOW'.
                  LD    B,+3E                 
                                              .
                  JR    NZ,0511,SA-BIT-2        
                  DEC   B                   :  
                                            13  .
                  XOR   A                      
                  INC   A                     ., 
                                             +01 (MIC . & BLUE}
                                               8-
                                            .

         L  .       ,    ,  ""    ,   L .

0525 SA-8-BITS    RL    L                    7   , 
                                             .

                  JP    NZ,0514,SA-BIT-1     ,   
                                            .
                  DEC   DE                   .
                  INC   IX                    .
                  LD    B,+31                 
                                               
                                            .
                  LD    A,+7F                 SA/LD-RET, 
                  IN    A,(+FE)               BREAK.
                  RRA
                  RET   NC
                  LD    A,D                    
                  INC   A                      , 
                  JP    NZ,04FE,SA-LOOP       0 ( ,
                                               ).
                  LD    B,+3B               ,   
053C SA-DELAY     DJNZ  053C,SA-DELAY       +FFFF.   
                  RET                        .

:     'MIC .'  855  ,     'MIC .'  855  .        .  ,          ,   .

 'SA/LD-RET'
      SAVE   LOAD.          BREAK.

053F SA/LD-RET    PUSH  AF                     (
                                                LOAD).
                  LD    A,(BORDER)             
                  AND   +38                   .
                  RRCA                        
                  RRCA                        2, 1  0.
                  OUT   (+FE),A               
                                            .
                  LD    A.+7F                 BREAK  
                  IN    A,(+FE)              .
                  RRA
                  EI                         .
                  JR    C,0554,SA/LD-END    ,    
                                             BREAK.

   : "D - BREAK-CONT repeats"

0552 REPORT-D     RST   0008,ERROR-l          
                  DEFB  +0C                 .

 .

0554 SA/LD-END    POP   AF                      
                                            .
                  RET                          .

 'LD-BYTES'
  ,   LOAD    ( 07BE)   LOAD,  VERIFY    ( 0802).

0556 LD-BYTES     INC   D                     Z ( D  
                                             +FF   ).
                  EX    AF,A'F'              A  +00 
                                              +FF   .
                                                VERIFY
                                               LOAD.
                  DEC   D                    D   
                                            .
                  DI                         .
                  LD    A,+0F                 - WHITE.
                  OUT   (+FE),A
                  LD    HL,+053F              
                  PUSH  HL                    SA/LD-RET.
                  IN    A,(+FE)                '254'
                  RRA                         
                  AND   +20                 ,   EAR.
                  OR    +02                  .
                  LD    C,A                     C
                                            (+22  ''  +02  ''
                                            -   EAR).
                  CP    A                     Z.

        ,      (..    "/"  "/").

056B LD-BREAK     RET   NZ                  ,   
                                            BREAK.
056C LD-START     CALL  05E7,LD-EDGE-1          C,
                  JR    NC,056B,LD-BREAK        -
                                             14000  .
                                               ,  
                                              .

         ,     .

                  LD    HL,+0415              
0574 LD-WAIT      DJNZ  0574,LD-WAIT          
                  DEC   HL                   .
                  LD    A,H
                  OR    L
                  JR    NZ,0574,LD-WAIT
                  CALL  05E3,LD-EDGE-2      ,  
                  JR    NC,056B,LD-BREAK       
                                             .

     .

0580 LD-LEADER    LD    B,+9C                ,
                  CALL  05E3,LD-EDGE-2      ,  
                  JR    NC,056B,LD-BREAK       
                                             .
                  LD    A,+C6                  
                  CP    B                      3000
                  JR    NC,056C,LD-START      .
                  INC   H                        H,
                  JR    NZ,0580,LD-LEADER       256 .

    ""  "" .

058F LD-SYNC      LD    B,+C9                .
                  CALL  05E7,LD-EDGE-1        , 
                  JR    NC,056B,LD-BREAK        
                  LD    A,B                  -   
                  CP    +D4                    
                  JR    NC,058F,LD-SYNC     "".
                  CALL  05E7,LD-EDGE-1         
                  RET   NC                   "" (
                                              ).

    /      .      .

                  LD    A,C                     
                  XOR   +03                 BLUE & YELLOW.

                  LD    C,A
                  LD    H,+00                
                                              0.
                  LD    B,+B0                 
                                              .
                  JR    05C8,LD-MARKER           

          .  -   .         " ".

05A9 LD-LOOP      EX    AF,A'F'              .
                  JR    NZ,05B3,LD-FLAG        
                                              .
                  JR    NC,05BD,LD-VERIFY    ,  
                                             VERIFY.
                  LD    (IX+00),L            , 
                                             .
                  JR    05C2,LD-NEXT           
                                             .
05B3 LD-FLAG      RL    C                      .
                  XOR   L                   ,     
                  RET   NZ                    
                                            (  ).
                  LD    A,C                   .
                  RRA
                  LD    C,A
                  INC   DE                   , 
                  JR    05CA,LD-DEC           
                                             .

    ,       ,      .

05BD LD-VERlFY    LD    A,(IX+00)              .
                  XOR   L                      .


