dllbridge

Test AY-Z80 Bell

Jan 6th, 2026 (edited)
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. ;----------------------------------------------------
  3. ; Project: test.zdsp
  4. ; Main File: test.asm
  5. ; Date: 16.04.2026 21:11:49
  6. ;
  7. ; Created with zDevStudio - Z80 Development Studio.
  8. ;
  9. ;----------------------------------------------------
  10. ;-------------------------------------
  11. org  0
  12. ;-------------------------------------
  13.              DI
  14.              LD SP, $FFFF
  15.              ;///////////////////////                                   Pause
  16. L_00:        LD   BC, 65535      ; 10
  17. L_01:        DEC  BC             ;  6
  18.              LD    A, B          ;  4
  19.              OR    C             ;  4
  20.              jp   NZ, L_01       ; 10
  21.              ;///////////////////////
  22.              ld   HL, ay_data_01
  23.              ld    C, 253         ; register C constant = 253
  24.              ld    E,  15         ; We start with register 15
  25.  
  26. init_loop:   ld     B, 255        ; FFFD = 65533 = 11111101 =В Register selection port ( and read port )
  27.              out  (C), E          ;В Selecting the current register
  28.              ld     A, (HL)
  29.              cp     $FF           ; Checking the end of data marker
  30.              jr     z, init_done
  31.              ld     B, 191        ; BFFD = 49149 = 10111101 = Data recording port
  32.              out  (C), A          ; Writing down the value
  33.              inc   HL
  34.              dec   E
  35.              jp    p, init_loop   ; While E >= 0
  36.              ;///////////////////////                                   Pause
  37. init_done:   LD   BC, 65535      ; 10
  38. L_04:        DEC  BC             ;  6
  39.              LD    A, B          ;  4
  40.              OR    C             ;  4
  41.              jp   NZ, L_04       ; 10
  42.              ;///////////////////////
  43.              ld     B, 255
  44.              ld     C, 253
  45.              ld     A,  15
  46.              out  (C),   A
  47.              ld     B, 191
  48.              ld     C, 253
  49.              ld     A, 170        ;//     Write to port B: AA = 170 = 10101010
  50.              out  (C),   A
  51.              ;///////////////////////                                   Pause
  52.              LD   BC, 65535      ; 10
  53. L_05:        DEC  BC             ;  6
  54.              LD    A, B          ;  4
  55.              OR    C             ;  4
  56.              jp   NZ, L_05       ; 10
  57.              ;///////////////////////
  58.              ld     B, 255
  59.              ld     C, 253
  60.              ld     A,  15
  61.              out  (C),   A
  62.              ld     B, 191
  63.              ld     C, 253
  64.              ld     A, $55         ;//      Write to port B: 55 = 85 = 01010101
  65.              out  (C),   A
  66.              ;///////////////////////                                   Pause
  67.              LD   BC, 65535      ; 10
  68. L_06:        DEC  BC             ;  6
  69.              LD    A, B          ;  4
  70.              OR    C             ;  4
  71.              jp   NZ, L_06       ; 10
  72.              ;///////////////////////
  73.              ld     B, 255
  74.              ld     C, 253
  75.              ld     A,  15
  76.              out  (C),   A
  77.              ld     B, 191
  78.              ld     C, 253
  79.              ld     A, 240                             ; F0 = 240 = 11110000
  80.              out  (C),   A
  81.              ;///////////////////////                                   Pause
  82.              LD   BC, 65535      ; 10
  83. L_07:        DEC  BC             ;  6
  84.              LD    A, B          ;  4
  85.              OR    C             ;  4
  86.              jp   NZ, L_07       ; 10
  87.              ;///////////////////////
  88.  
  89.              ld     B, 255
  90.              ld     C, 253
  91.              ld     A,  15
  92.              out  (C),   A
  93.              ld     B, 191
  94.              ld     C, 253
  95.              ld     A,  15                             ; 0F = 15 = 00001111
  96.              out  (C),   A
  97.              ;///////////////////////                                   Pause
  98.              LD   BC, 65535      ; 10
  99. L_08:        DEC  BC             ;  6
  100.              LD    A, B          ;  4
  101.              OR    C             ;  4
  102.              jp   NZ, L_08       ; 10
  103.              ;///////////////////////
  104.  
  105.             ; call $0110
  106.              call Port_B_AA
  107.              call DELAY_200
  108.              call Port_B_55
  109.              call DELAY_200
  110.              call Port_B_AA
  111.              call DELAY_200
  112.              call Port_B_55
  113.              call DELAY_200
  114.  
  115.  
  116.              call DELAY_200
  117.              call DELAY_200
  118.              call DELAY_200
  119.              call DELAY_200
  120.              call DELAY_200
  121.              call DELAY_200
  122.              call DELAY_200
  123.              call DELAY_200
  124.              call DELAY_200
  125.  
  126.              jp   L_00
  127.  ;end
  128.  
  129. ; - - - - - - - -  - - - - - -
  130. Port_B_AA:
  131. ; - - - - - - - -  - - - - - -
  132.        push AF
  133.        push BC
  134.        ld     B, 255
  135.        ld     C, 253
  136.        ld     A,  15
  137.        out  (C),   A
  138.  
  139.        ld     B, 191
  140.        ld     C, 253
  141.        ld     A,   1
  142.        out  (C),   A
  143.        pop  bc
  144.        pop  AF
  145.        ret
  146.  
  147. ; - - - - - - - -  - - - - - -
  148. Port_B_55:
  149. ; - - - - - - - -  - - - - - -
  150.        push AF
  151.        push BC
  152.        ld     B, 255
  153.        ld     C, 253
  154.        ld     A,  15
  155.        out  (C),   A
  156.  
  157.        ld     B, 191
  158.        ld     C, 253
  159.        ld     A, 128           ; = 10000000 = 80h
  160.        out  (C),   A
  161.        pop  bc
  162.        pop  AF
  163.        ret
  164.  
  165. ;- - - - - - - - - - - - - -
  166. DELAY_200:   push AF
  167.              push BC
  168.              LD   BC, 65535      ; 10
  169.  
  170. L_02:        DEC  BC             ;  6
  171.              LD    A, B          ;  4
  172.              OR    C             ;  4
  173.              jp   NZ, L_02       ; 10
  174.              pop  bc
  175.              pop  AF
  176.              RET                 ; 10
  177.  
  178.  
  179.  
  180.  
  181. ; ==========================================================
  182.     org $1F0               ; data
  183. ; ==========================================================
  184. ay_data_01:   db 15, 0, 01h, 50h, 196, 16, 16, 16, 184, 0, 0, 50h, 0, 1, 0, 48
  185.                        
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229. ;-------------------------------------
  230. org  0
  231. ;-------------------------------------
  232.              DI
  233.              LD SP, $FFFF
  234.              ;///////////////////////
  235. L_00:        LD   BC, 65535      ; 10
  236. L_01:        DEC  BC             ;  6
  237.              LD    A, B          ;  4
  238.              OR    C             ;  4
  239.              jp   NZ, L_01       ; 10
  240.              ;///////////////////////
  241.              ld   HL, ay_data_01
  242.              ld    C, 253         ; C постоянно = 253
  243.              ld    E,  15         ; Начинаем с регистра 15
  244.  
  245. init_loop:   ld     B, 255        ; FFFD = 65533 = 11111101 = Порт выбора регистра   ( и порт чтения )
  246.              out  (C), E          ; Выбираем текущий регистр
  247.              ld     A, (HL)
  248.              cp     $FF           ; Проверяем маркер конца данных
  249.              jr     z, init_done
  250.              ld     B, 191        ; BFFD = 49149 = 10111101 = Порт записи данных
  251.              out  (C), A          ; Записываем значение
  252.              inc   HL
  253.              dec   E
  254.              jp    p, init_loop  ; Пока E >= 0
  255.              ;///////////////////////
  256. init_done:   LD   BC, 65535      ; 10
  257. L_04:        DEC  BC             ;  6
  258.              LD    A, B          ;  4
  259.              OR    C             ;  4
  260.              jp   NZ, L_04       ; 10
  261.              ;///////////////////////
  262.              ld     B, 255
  263.              ld     C, 253
  264.              ld     A,  15
  265.              out  (C),   A
  266.              ld     B, 191
  267.              ld     C, 253
  268.              ld     A, 170
  269.              out  (C),   A
  270.              ;///////////////////////
  271.              LD   BC, 65535      ; 10
  272. L_05:        DEC  BC             ;  6
  273.              LD    A, B          ;  4
  274.              OR    C             ;  4
  275.              jp   NZ, L_05       ; 10
  276.              ;///////////////////////
  277.              ld     B, 255
  278.              ld     C, 253
  279.              ld     A,  15
  280.              out  (C),   A
  281.              ld     B, 191
  282.              ld     C, 253
  283.              ld     A, $55
  284.              out  (C),   A
  285.              ;///////////////////////
  286.              LD   BC, 65535      ; 10
  287. L_06:        DEC  BC             ;  6
  288.              LD    A, B          ;  4
  289.              OR    C             ;  4
  290.              jp   NZ, L_06       ; 10
  291.              ;///////////////////////
  292.              ld     B, 255
  293.              ld     C, 253
  294.              ld     A,  15
  295.              out  (C),   A
  296.              ld     B, 191
  297.              ld     C, 253
  298.              ld     A, 240                      ;  = 11110000 = F0h
  299.              out  (C),   A
  300.              ;///////////////////////
  301.              LD   BC, 65535      ; 10
  302. L_07:        DEC  BC             ;  6
  303.              LD    A, B          ;  4
  304.              OR    C             ;  4
  305.              jp   NZ, L_07       ; 10
  306.              ;///////////////////////
  307.              call DELAY_200
  308.              call Port_B_AA
  309.              call DELAY_200
  310.              call Port_B_55
  311.              call DELAY_200
  312.              call Port_B_AA
  313.              call DELAY_200
  314.              call Port_B_55
  315.              call DELAY_200
  316.  
  317.  
  318.              call DELAY_200
  319.              call DELAY_200
  320.              call DELAY_200
  321.              call DELAY_200
  322.              call DELAY_200
  323.              call DELAY_200
  324.              call DELAY_200
  325.              call DELAY_200
  326.              call DELAY_200
  327.  
  328.              jp   L_00
  329.  ;end
  330.  
  331. ; - - - - - - - -  - - - - - -
  332. Port_B_AA:
  333. ; - - - - - - - -  - - - - - -
  334.        push AF
  335.        push BC
  336.        ld     B, 255
  337.        ld     C, 253
  338.        ld     A,  15
  339.        out  (C),   A
  340.  
  341.        ld     B, 191
  342.        ld     C, 253
  343.        ld     A,   1
  344.        out  (C),   A
  345.        pop  bc
  346.        pop  AF
  347.        ret
  348.  
  349. ; - - - - - - - -  - - - - - -
  350. Port_B_55:
  351. ; - - - - - - - -  - - - - - -
  352.        push AF
  353.        push BC
  354.        ld     B, 255
  355.        ld     C, 253
  356.        ld     A,  15
  357.        out  (C),   A
  358.  
  359.        ld     B, 191
  360.        ld     C, 253
  361.        ld     A, 128           ; = 10000000 = 80h
  362.        out  (C),   A
  363.        pop  bc
  364.        pop  AF
  365.        ret
  366.  
  367. ;- - - - - - - - - - - - - -
  368. DELAY_200:   push AF
  369.              push BC
  370.              LD   BC, 65535      ; 10
  371.  
  372. L_02:        DEC  BC             ;  6
  373.              LD    A, B          ;  4
  374.              OR    C             ;  4
  375.              jp   NZ, L_02       ; 10
  376.              pop  bc
  377.              pop  AF
  378.              RET                 ; 10
  379.  
  380.  
  381.  
  382.  
  383. ; ==========================================================
  384.     org $F0               ; data
  385. ; ==========================================================
  386. ay_data_01:   db 15, 0, 01h, 50h, 196, 16, 16, 16, 184, 0, 0, 50h, 0, 1, 0, 48
  387.  
  388.    
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413. ;   Ниже устаревшая версия Test-ПЗУ
  414.  
  415. org  0
  416.  
  417.        DI
  418.        LD SP, $FFFF
  419.  
  420.        call DELAY_200
  421.        ld   HL, ay_data_01
  422.        ld    C, 253        ; C постоянно = 253
  423.        ld    E, 15         ; Начинаем с регистра 15
  424.  
  425. init_loop:
  426.        ld     B, 255       ; Порт выбора регистра
  427.        out  (C), E         ; Выбираем текущий регистр
  428.  
  429.        ld     A, (HL)
  430.        cp     $FF          ; Проверяем маркер конца данных
  431.        jr     z, init_done
  432.  
  433.        ld     B, 191       ; Порт записи данных
  434.        out  (C), A         ; Записываем значение
  435.  
  436.        inc   HL
  437.        dec   E
  438.        jp    p, init_loop  ; Пока E >= 0
  439.  
  440. init_done:
  441.        call DELAY_200
  442.  
  443.        call Port_B_AA
  444.        call DELAY_200
  445.        call Port_B_55
  446.        call DELAY_200
  447.        call Port_B_AA
  448.        call DELAY_200
  449.        call Port_B_55
  450.        call DELAY_200
  451.  
  452.  
  453.        call DELAY_200
  454.        call DELAY_200
  455.        call DELAY_200
  456.        call DELAY_200
  457.        call DELAY_200
  458.        call DELAY_200
  459.        call DELAY_200
  460.        call DELAY_200
  461.        call DELAY_200
  462.        call DELAY_200
  463.        call DELAY_200
  464.  
  465.  
  466.  ;end
  467.  
  468. ; - - - - - - - -  - - - - - -
  469. Port_B_AA:
  470. ; - - - - - - - -  - - - - - -
  471.        push AF
  472.        push BC
  473.        ld     B, 255
  474.        ld     C, 253
  475.        ld     A,  15
  476.        out  (C),   A
  477.  
  478.        ld     B, 191
  479.        ld     C, 253
  480.        ld     A, 170
  481.        out  (C),   A
  482.        pop  bc
  483.        pop  AF
  484.        ret
  485.  
  486. ; - - - - - - - -  - - - - - -
  487. Port_B_55:
  488. ; - - - - - - - -  - - - - - -
  489.        push AF
  490.        push BC
  491.        ld     B, 255
  492.        ld     C, 253
  493.        ld     A,  15
  494.        out  (C),   A
  495.  
  496.        ld     B, 191
  497.        ld     C, 253
  498.        ld     A, $55
  499.        out  (C),   A
  500.        pop  bc
  501.        pop  AF
  502.        ret
  503.  
  504. ;- - - - - - - - - - - - - -
  505. DELAY_200:   push AF
  506.              push BC
  507.              LD   BC, 65535      ; 10
  508.  
  509. L_02:        DEC  BC             ;  6
  510.              LD    A, B          ;  4
  511.              OR    C             ;  4
  512.              jp   NZ, L_02       ; 10
  513.              pop  bc
  514.              pop  AF
  515.              RET                 ; 10
  516.  
  517.  
  518.  
  519.  
  520. ; ==========================================================
  521.     org $F0               ; data
  522. ; ==========================================================
  523. ay_data_01:   db 15, 0, 01h, 50h, 196, 16, 16, 16, 184, 0, 0, 50h, 0, 1, 0, 48
  524.  
  525.    
Advertisement
Add Comment
Please, Sign In to add comment