Subversion Repositories pentevo

Rev

Rev 291 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. .EQU    TBEEP_N =0
  2. ;
  3. ;--------------------------------------
  4. ;
  5. .DSEG
  6. T_BEEP_PTR:     .BYTE   2
  7. T_BEEP_DELTA:   .BYTE   2
  8. .CSEG
  9. ;
  10. ;┌──────────────────────────────┐
  11. ;│                              │
  12. ;│           12345 Гц           │
  13. ;│                              │
  14. ;│ <>, <> - изменение частоты │
  15. ;└──────────────────────────────┘
  16. ;
  17. ;--------------------------------------
  18. ;
  19. TESTBEEP:
  20.         GETMEM  1
  21.  
  22.         LDIZ    WIND_T_BEEP*2
  23.         CALL    WINDOW
  24.         LDIZ    MLMSG_TBEEP*2
  25.         CALL    SCR_PRINTMLSTR
  26.  
  27.         LDI     DATA,0B00000001
  28.         LDI     TEMP,INT_CONTROL
  29.         CALL    FPGA_REG
  30.  
  31.         LDI     DATA,7
  32. T_BEEP_NEWFREQ:
  33.         STH     TBEEP_N,DATA
  34.         LDI     XL,20
  35.         LDI     XH,10
  36.         CALL    SCR_SET_CURSOR
  37.         LDH     DATA,TBEEP_N
  38.         LSL     DATA
  39.         LSL     DATA
  40.         LDIZ    T_BEEP_FREQTAB*2
  41.         ADD     ZL,DATA
  42.         ADC     ZH,NULL
  43.         LPM     XL,Z+
  44.         LPM     XH,Z+
  45.         PUSHZ
  46.         CALL    DECWORD
  47.         POPZ
  48.         LPM     DATA,Z+
  49.         STS     T_BEEP_DELTA+0,DATA
  50.         LPM     DATA,Z+
  51.         STS     T_BEEP_DELTA+1,DATA
  52.         LDI     TEMP,COVOX
  53. .IFDEF DEBUG_FPGA_OUT
  54.         CALL    DBG_SET_FPGA_REG
  55. .ENDIF
  56.         SPICS_SET
  57.         OUT     SPDR,TEMP
  58.         CALL    FPGA_RDY_RD
  59.         ;теперь ничего не выводить в FPGA (не менять текущий регистр) !
  60. T_BEEP_WAITKEY:
  61.         LDI     DATA,0B00000001
  62.         MOV     INT6VECT,DATA
  63.         CALL    WAITKEY
  64.         CLR     INT6VECT
  65.  
  66.         CPI     DATA,KEY_ESC
  67.         BREQ    T_BEEP_ESCAPE
  68.         CPI     DATA,KEY_UP
  69.         BREQ    T_BEEP_UP
  70.         CPI     DATA,KEY_DOWN
  71.         BREQ    T_BEEP_DOWN
  72.         RJMP    T_BEEP_WAITKEY
  73.  
  74. T_BEEP_UP:
  75.         LDH     DATA,TBEEP_N
  76.         CPI     DATA,14
  77.         BRCC    T_BEEP_WAITKEY
  78.         INC     DATA
  79.         RJMP    T_BEEP_NEWFREQ
  80.  
  81. T_BEEP_DOWN:
  82.         LDH     DATA,TBEEP_N
  83.         TST     DATA
  84.         BREQ    T_BEEP_WAITKEY
  85.         DEC     DATA
  86.         RJMP    T_BEEP_NEWFREQ
  87.  
  88. T_BEEP_ESCAPE:
  89.         LDI     DATA,0B00000000
  90.         LDI     TEMP,INT_CONTROL
  91.         CALL    FPGA_REG
  92.  
  93.         FREEMEM 1
  94.         RET
  95. ;
  96. ;--------------------------------------
  97. ;
  98. T_BEEP_INT:
  99.         PUSH    DATA
  100.         PUSH    XH
  101.         PUSHW
  102.         PUSHZ
  103.         LDI     ZH,HIGH(TABL_SINUS*2)
  104.         LDS     XH,T_BEEP_PTR+0
  105.         LDS     ZL,T_BEEP_PTR+1
  106.         LDSW    T_BEEP_DELTA
  107.  
  108. T_BEEP_IN1:
  109.         ADD     XH,WL
  110.         ADC     ZL,WH
  111.         LPM     DATA,Z
  112.         SPICS_CLR
  113.         OUT     SPDR,DATA
  114. T_BEEP_IN2:
  115.         SBIS    SPSR,SPIF
  116.         RJMP    T_BEEP_IN2
  117.         IN      DATA,SPDR
  118.         SPICS_SET
  119.         CPI     DATA,12
  120.         BRCS    T_BEEP_IN1
  121.  
  122.         STS     T_BEEP_PTR+0,XH
  123.         STS     T_BEEP_PTR+1,ZL
  124.         POPZ
  125.         POPW
  126.         POP     XH
  127.         LDI     DATA,(1<<INT6)
  128.         OUTPORT EIFR,DATA
  129.         POP     DATA
  130.         RET
  131. ;
  132. ;--------------------------------------
  133. ;
  134. WIND_T_BEEP:
  135.         .DB     8,8,32,6,$DF,$01
  136. ;
  137. T_BEEP_FREQTAB:
  138.         .DW        75,     45
  139.         .DW       107,     64
  140.         .DW       152,     91
  141.         .DW       214,    128
  142.         .DW       302,    181
  143.         .DW       427,    256
  144.         .DW       604,    362
  145.         .DW       854,    512
  146.         .DW      1208,    724
  147.         .DW      1709,   1024
  148.         .DW      2417,   1448
  149.         .DW      3418,   2048
  150.         .DW      4833,   2896
  151.         .DW      6836,   4096
  152.         .DW      9668,   5793
  153. ;
  154. ;--------------------------------------
  155. ;
  156.