Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;----------------------------------------------------
- ; Project: test.zdsp
- ; Main File: test.asm
- ; Date: 16.04.2026 21:11:49
- ;
- ; Created with zDevStudio - Z80 Development Studio.
- ;
- ;----------------------------------------------------
- ;-------------------------------------
- org 0
- ;-------------------------------------
- DI
- LD SP, $FFFF
- ;/////////////////////// Pause
- L_00: LD BC, 65535 ; 10
- L_01: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_01 ; 10
- ;///////////////////////
- ld HL, ay_data_01
- ld C, 253 ; register C constant = 253
- ld E, 15 ; We start with register 15
- init_loop: ld B, 255 ; FFFD = 65533 = 11111101 =В Register selection port ( and read port )
- out (C), E ;В Selecting the current register
- ld A, (HL)
- cp $FF ; Checking the end of data marker
- jr z, init_done
- ld B, 191 ; BFFD = 49149 = 10111101 = Data recording port
- out (C), A ; Writing down the value
- inc HL
- dec E
- jp p, init_loop ; While E >= 0
- ;/////////////////////// Pause
- init_done: LD BC, 65535 ; 10
- L_04: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_04 ; 10
- ;///////////////////////
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 170 ;// Write to port B: AA = 170 = 10101010
- out (C), A
- ;/////////////////////// Pause
- LD BC, 65535 ; 10
- L_05: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_05 ; 10
- ;///////////////////////
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, $55 ;// Write to port B: 55 = 85 = 01010101
- out (C), A
- ;/////////////////////// Pause
- LD BC, 65535 ; 10
- L_06: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_06 ; 10
- ;///////////////////////
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 240 ; F0 = 240 = 11110000
- out (C), A
- ;/////////////////////// Pause
- LD BC, 65535 ; 10
- L_07: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_07 ; 10
- ;///////////////////////
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 15 ; 0F = 15 = 00001111
- out (C), A
- ;/////////////////////// Pause
- LD BC, 65535 ; 10
- L_08: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_08 ; 10
- ;///////////////////////
- ; call $0110
- call Port_B_AA
- call DELAY_200
- call Port_B_55
- call DELAY_200
- call Port_B_AA
- call DELAY_200
- call Port_B_55
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- jp L_00
- ;end
- ; - - - - - - - - - - - - - -
- Port_B_AA:
- ; - - - - - - - - - - - - - -
- push AF
- push BC
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 1
- out (C), A
- pop bc
- pop AF
- ret
- ; - - - - - - - - - - - - - -
- Port_B_55:
- ; - - - - - - - - - - - - - -
- push AF
- push BC
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 128 ; = 10000000 = 80h
- out (C), A
- pop bc
- pop AF
- ret
- ;- - - - - - - - - - - - - -
- DELAY_200: push AF
- push BC
- LD BC, 65535 ; 10
- L_02: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_02 ; 10
- pop bc
- pop AF
- RET ; 10
- ; ==========================================================
- org $1F0 ; data
- ; ==========================================================
- ay_data_01: db 15, 0, 01h, 50h, 196, 16, 16, 16, 184, 0, 0, 50h, 0, 1, 0, 48
- ;-------------------------------------
- org 0
- ;-------------------------------------
- DI
- LD SP, $FFFF
- ;///////////////////////
- L_00: LD BC, 65535 ; 10
- L_01: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_01 ; 10
- ;///////////////////////
- ld HL, ay_data_01
- ld C, 253 ; C постоянно = 253
- ld E, 15 ; Начинаем с регистра 15
- init_loop: ld B, 255 ; FFFD = 65533 = 11111101 = Порт выбора регистра ( и порт чтения )
- out (C), E ; Выбираем текущий регистр
- ld A, (HL)
- cp $FF ; Проверяем маркер конца данных
- jr z, init_done
- ld B, 191 ; BFFD = 49149 = 10111101 = Порт записи данных
- out (C), A ; Записываем значение
- inc HL
- dec E
- jp p, init_loop ; Пока E >= 0
- ;///////////////////////
- init_done: LD BC, 65535 ; 10
- L_04: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_04 ; 10
- ;///////////////////////
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 170
- out (C), A
- ;///////////////////////
- LD BC, 65535 ; 10
- L_05: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_05 ; 10
- ;///////////////////////
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, $55
- out (C), A
- ;///////////////////////
- LD BC, 65535 ; 10
- L_06: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_06 ; 10
- ;///////////////////////
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 240 ; = 11110000 = F0h
- out (C), A
- ;///////////////////////
- LD BC, 65535 ; 10
- L_07: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_07 ; 10
- ;///////////////////////
- call DELAY_200
- call Port_B_AA
- call DELAY_200
- call Port_B_55
- call DELAY_200
- call Port_B_AA
- call DELAY_200
- call Port_B_55
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- jp L_00
- ;end
- ; - - - - - - - - - - - - - -
- Port_B_AA:
- ; - - - - - - - - - - - - - -
- push AF
- push BC
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 1
- out (C), A
- pop bc
- pop AF
- ret
- ; - - - - - - - - - - - - - -
- Port_B_55:
- ; - - - - - - - - - - - - - -
- push AF
- push BC
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 128 ; = 10000000 = 80h
- out (C), A
- pop bc
- pop AF
- ret
- ;- - - - - - - - - - - - - -
- DELAY_200: push AF
- push BC
- LD BC, 65535 ; 10
- L_02: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_02 ; 10
- pop bc
- pop AF
- RET ; 10
- ; ==========================================================
- org $F0 ; data
- ; ==========================================================
- ay_data_01: db 15, 0, 01h, 50h, 196, 16, 16, 16, 184, 0, 0, 50h, 0, 1, 0, 48
- ; Ниже устаревшая версия Test-ПЗУ
- org 0
- DI
- LD SP, $FFFF
- call DELAY_200
- ld HL, ay_data_01
- ld C, 253 ; C постоянно = 253
- ld E, 15 ; Начинаем с регистра 15
- init_loop:
- ld B, 255 ; Порт выбора регистра
- out (C), E ; Выбираем текущий регистр
- ld A, (HL)
- cp $FF ; Проверяем маркер конца данных
- jr z, init_done
- ld B, 191 ; Порт записи данных
- out (C), A ; Записываем значение
- inc HL
- dec E
- jp p, init_loop ; Пока E >= 0
- init_done:
- call DELAY_200
- call Port_B_AA
- call DELAY_200
- call Port_B_55
- call DELAY_200
- call Port_B_AA
- call DELAY_200
- call Port_B_55
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- call DELAY_200
- ;end
- ; - - - - - - - - - - - - - -
- Port_B_AA:
- ; - - - - - - - - - - - - - -
- push AF
- push BC
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, 170
- out (C), A
- pop bc
- pop AF
- ret
- ; - - - - - - - - - - - - - -
- Port_B_55:
- ; - - - - - - - - - - - - - -
- push AF
- push BC
- ld B, 255
- ld C, 253
- ld A, 15
- out (C), A
- ld B, 191
- ld C, 253
- ld A, $55
- out (C), A
- pop bc
- pop AF
- ret
- ;- - - - - - - - - - - - - -
- DELAY_200: push AF
- push BC
- LD BC, 65535 ; 10
- L_02: DEC BC ; 6
- LD A, B ; 4
- OR C ; 4
- jp NZ, L_02 ; 10
- pop bc
- pop AF
- RET ; 10
- ; ==========================================================
- org $F0 ; data
- ; ==========================================================
- ay_data_01: db 15, 0, 01h, 50h, 196, 16, 16, 16, 184, 0, 0, 50h, 0, 1, 0, 48
Advertisement
Add Comment
Please, Sign In to add comment