;--------------------------------------------------------------------
; Описание: Бегущая строка
; Автор порта: Тарасов М.Н.(Mick),2010
;--------------------------------------------------------------------
Str_reload:
xor a
ld (Str_flg_end),a
scf
ret
Str_init_load:
ld hl,Str_addr_load
ld (Str_addr_work),hl
ld a,1
ld (Str_flg_end),a
ld a,(hl)
ret
Str_init_clear:
ld hl,Str_addr_clear
ld (Str_addr_work),hl
ld a,1
ld (Str_flg_end),a
ld a,(hl)
ret
Str_play:
ld a,(Str_count_bit)
or a
call z,Str_next_symol
ret
Str_next_symol:
ld hl,(Str_addr_work)
ld a,(hl)
and a
jr z,Str_reload
ret c
inc hl
ld (Str_addr_work),hl
sub 20h
ld l, a
ld h, 0
ld de,Str_addr_font
add hl,hl
add hl,hl
add hl,hl
add hl,de
ld de,Str_symbol_buf
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ld a,8
ld (Str_count_bit),a
ret
Str_update_symbol:
ld de, Str_symbol_buf
ld b,8
ld hl,4AC0h
loc_0_9BA8:
ld c,0
ld a,(de)
rrca
ld (de),a
jr nc,loc_0_9C03
ld c,80h
loc_0_9C03:
ld a,7Fh
and (hl)
or c
ld (hl),a
inc h
ld a,h
and 7
jr nz,loc_0_9BC2
ld a,l
add a,20h
ld l,a
jr c,loc_0_9BC2
ld a,h
sub 8
ld h,a
loc_0_9BC2:
inc de
djnz loc_0_9BA8
ld a,(Str_count_bit)
dec a
ld (Str_count_bit),a
ret
Str_draw_symbol:
ld hl,4AC0h
ld b,8
Str_draw_line:
push hl
and a
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
inc l
rr (hl)
pop hl
inc h
ld a,h
and 7
jr nz,Str_next_line
ld a,l
add a,20h
ld l,a
ld c,a
jr c,Str_next_line
ld a,h
sub 8
ld h,a
Str_next_line:
djnz Str_draw_line
ret
;-------------------------------------------------------------------
; описание: Обработка бегущей строки
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Str_init:
ld hl,Str_addr_text
ld (Str_addr_work),hl
xor a
ld (Str_count_bit),a
ret
Str_play_txt:
ld a,(Str_count_bit)
or a
jr nz,Str_next_delay2
ld hl,(Str_addr_work)
ld a,(hl)
and a
jr nz,Str_next_delay
ld hl,Str_addr_text
ld (Str_addr_work),hl
Str_next_symtxt:
inc hl
ld (Str_addr_work),hl
sub 20h
ld l, a
ld h, 0
ld de,Str_addr_font
add hl,hl
add hl,hl
add hl,hl
add hl,de
ld de,Str_symbol_buf
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ld a,8
ld (Str_count_bit),a
ret
Str_next_delay:
add a,0
nop
Str_next_delay1:
jp Str_next_symtxt
Str_next_delay2:
ld b,11h
Str_next_delay3:
nop
djnz Str_next_delay3
neg
neg
ret
;-------------------------------------------------------------------
; описание: Обновление параметров основной бегущей строки
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Str_update_symstr:
ld ix,Str_symbol_buf
ld bc,0801h
ld hl,Str_addr_buf + 31
ld de,20h
Str_updating:
ld a,(ix+0)
rlca
ld (ix+0),a
jr nc,Str_update_delay
ld a,c
or (hl)
ld (hl),a
nop
Str_update_pixel:
add hl,de
inc ix
djnz Str_updating
ld a,(Str_count_bit)
dec a
ld (Str_count_bit),a
ret
Str_update_delay:
add a,0
jp Str_update_pixel
;-------------------------------------------------------------------
; описание: Сдвиг буфера основной строки
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Str_shift_buf:
ld hl,Str_addr_buf + 31
ld de,20h
ld b,8
Str_shifting:
push hl
and a
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
dec hl
rl (hl)
pop hl
add hl, de
djnz Str_shifting
ret
;-------------------------------------------------------------------
; описание: Очистка поля основной строки
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Str_line_clear:
ld hl,(Str_addr_str)
ld b,2
call Str_clear_start
ld b,6
Str_line_clear1:
inc h
ld a,h
and 7
jr nz,Str_next_line6
ld a, l
add a,20h
ld l, a
jr c,Str_next_line6
ld a,h
sub 8
ld h,a
Str_next_line6:
djnz Str_line_clear1
ld b,2
Str_clear_start:
ld c,0
ld (Str_addr_sp),sp
Str_clearing:
ld de,20h
ex hl,de
add hl,de
ld sp,hl
ex hl,de
ld e,c
ld d,c
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
inc h
ld a,h
and 7
jr nz,Str_next_line4
ld a, l
add a,20h
ld l, a
jr c,Str_next_line4
ld a,h
sub 8
ld h,a
Str_next_line4:
djnz Str_clearing
ld sp,(Str_addr_sp)
ret
;-------------------------------------------------------------------
; описание: Вывод на экран содержимого буфера
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Str_copy_scr:
ld hl,(Str_addr_str)
call Str_draw_start
ld de,Str_addr_buf
ex hl,de
ld b,8
Str_copying:
ld c,0FFh
push de
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
pop de
inc d
ld a,d
and 7
jr nz,Str_next_line5
ld a,e
add a,20h ; ' '
ld e,a
jr c,Str_next_line5
ld a,d
sub 8
ld d,a
Str_next_line5:
djnz Str_copying
ex hl,de
;-------------------------------------------------------------------
; описание: Очистка поля основной строки
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Str_draw_start:
ld c,0FFh
ld (Str_addr_sp),sp
ld de,20h
ex hl,de
add hl,de
ld sp,hl
ex hl,de
ld e,c
ld d,c
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
push de
inc h
ld a,h
and 7
jr nz,Str_next_line3
ld a, l
add a,20h
ld l, a
jr c,Str_next_line3
ld a,h
sub 8
ld h,a
Str_next_line3:
ld sp,(Str_addr_sp)
ret
;-------------------------------------------------------------------
; описание: Обновление параметров основной бегущей строки
; параметры: нет
; возвращаемое значение: нет
;---------------------------------------------------------------------
Str_line_select:
ld hl,(Str_line_index)
ld a,(hl)
dec a
jr nz,Str_load_index
ld hl,Str_table_line
Str_load_index:
ld e,(hl)
inc hl
ld d,(hl)
inc hl
ld (Str_line_index),hl
ex hl,de
ld (Str_addr_str),hl
ret
Str_table_line:
dw 49C0h
dw 49C0h
dw 49C0h
dw 49C0h
dw 4AC0h
dw 4AC0h
dw 4AC0h
dw 4BC0h
dw 4BC0h
dw 4BC0h
dw 4CC0h
dw 4CC0h
dw 4CC0h
dw 4DC0h
dw 4DC0h
dw 4FC0h
dw 4FC0h
dw 48E0h
dw 48E0h
dw 4AE0h
dw 4AE0h
dw 4CE0h
dw 4CE0h
dw 4EE0h
dw 4EE0h
dw 5000h
dw 5000h
dw 5200h
dw 5200h
dw 5400h
dw 5400h
dw 5500h
dw 5500h
dw 5500h
dw 5600h
dw 5600h
dw 5600h
dw 5700h
dw 5700h
dw 5700h
dw 5700h
dw 5600h
dw 5600h
dw 5600h
dw 5500h
dw 5500h
dw 5500h
dw 5400h
dw 5400h
dw 5200h
dw 5200h
dw 5000h
dw 5000h
dw 4EE0h
dw 4EE0h
dw 4CE0h
dw 4CE0h
dw 4AE0h
dw 4AE0h
dw 48E0h
dw 48E0h
dw 4FC0h
dw 4FC0h
dw 4DC0h
dw 4DC0h
dw 4CC0h
dw 4CC0h
dw 4CC0h
dw 4BC0h
dw 4BC0h
dw 4BC0h
dw 4AC0h
dw 4AC0h
dw 4AC0h
db 1
Str_line_index:
dw Str_table_line
Str_symbol_buf:
db 0,0,0,0,0,0,0,0
Str_flg_end:
db 0
Str_count_bit:
db 0
Str_addr_sp:
dw 0
Str_addr_str:
dw 49C0h
Str_addr_buf:
ds 8*32
Str_addr_work:
dw 0
Str_addr_load:
db ' GNIDAOL ',0
Str_addr_clear:
db ' ',0
Str_addr_text:
db ' ПЛАМЕННЫЙ ПРИВЕТ ОТ MICK!!! '
db 'ПОСЛЕ ВЫХОДА ПЯТОГО ВЫПУСКА ДЕМО ПРОГРАММЫ "E-TUNES" ВДОХНОВЕНИЕ ЕЩЕ ОСТАВАЛОСЬ'
db ' НА ШЕСТОЙ ВЫПУСК. ВОТ И ВЗЯЛСЯ ЗА РЕАЛИЗАЦИЮ ОЧЕРЕДНОГО ВЫПУСКА. ЗАОДНО ПОВЫСИЛ НЕМНОГО'
db ' СВОЮ КВАЛИФИКАЦИЮ В НОВОЙ ПРОФЕССИИ - СЧИТОВОДА ТАКТОВ. В ЭТОМ ВЫПУСКЕ ЕЩЕ ОДИН БОРДЕРНЫЙ'
db ' ЭФФЕКТ. ТАКТЫ ПРОСЧИТАНЫ ДЛЯ ФЕНИКСА. В ОБЩЕМ, КАРТИНКУ НАРИСОВАЛ И НАЧАЛ ВСЕ ЛЕПИТЬ.'
db ' КСТАТИ, К КАРТИНКЕ Я ДАВНО ПОДХОДИЛ, НО КАК ГОВОРИТСЯ БЫЛО ВСЕ НЕ ТО. А ТУТ, КАК ОБЫЧНО'
db ' ААА РИСУЕТ, ВСТАВИЛО И ЗА ЧАС НАРИСОВАЛ (ВЕРНЕЕ ПОСЛЕ КОНВЕРСИИ РАЗРИСОВАЛ КАК НАДО).'
db ' ЭТОТ ВЫПУСК ВКЛЮЧАЕТ В СЕБЯ 30 МУЗЫКАЛЬНЫХ КОМПОЗИЦИЙ РАЗНОЙ ПРОДОЛЖИТЕЛЬНОСТИ.'
db ' НАПОМНЮ ЧТО ДАННЫЕ МУЗЫКАЛЬНЫЕ КОМПОЗИЦИИ СОЗДАНЫ В РЕДАКТОРЕ'
db ' "E-TRACKER" И ПОЗАИМСТВОВАНЫ С КОМПЬЮТЕРА "SAM COUPE".'
db ' ИТОГО УЖЕ С УЧЕТОМ ПЕРВЫХ ПЯТИ ВЫПУСКОВ НА СПЕККИ 200 КОМПОЗИЦИЙ ДОСТУПНЫХ ДЛЯ ПРОСЛУШИВАНИЯ.'
db ' ТАК ЧТО МОЖНО СЧИТАТЬ ПРОШЛИ ЕЩЕ ОДНУ СОТНЮ. ОСТАЛОСЬ ЕЩЕ ТРИ СОТЕНКИ И ВЕСЬ СПИСОЧЕК БУДЕТ'
db ' НА СПЕКТРУМЕ.'
db ' ПРОСЛУШАТЬ МУЗЫКУ МОЖНО ЧЕРЕЗ ЗВУКОВУЮ КАРТУ "ZXM-SOUNDCARD" ИЛИ В ЭМУЛЯТОРЕ "UNREAL SPECCY",'
db ' ПРОПАТЧЕННЫЙ МОЛОДЦОВЫМ АЛЕКСАНДРОМ. ДЛЯ ТОГО ЧТОБЫ В ЭМУЛЯТОРЕ БОРДЕРНЫЕ ЭФФЕКТЫ ОТОБРАЖАЛИСЬ'
db ' ПРАВИЛЬНО, В ФАЙЛЕ UNREAL.INI ПОСТАВЬТЕ ПАРАМЕТР PRESET=PHOENIX И БУДЕТ ВАМ СЧАСТЬЕ. '
db ' НЕМНОГО ОБ УПРАВЛЕНИИ. ПЕРЕХОД К СЛЕДУЮЩЕМУ ПРОИЗВЕДЕНИЮ ОСУЩЕСТВЛЯЕТСЯ ПРИ ПОМОЩИ КЛАВИШИ'
db ' "SPACE", ВЫХОД В TR-DOS ПРИ ПОМОЩИ КЛАВИШИ "BREAK"'
db ' О ПРОГРАММЕ: КАРТИНКА НАРИСОВАНА ПО МОТИВАМ ОДНОИМЕННОЙ ПРОГРАММЫ ОТ ГРУППЫ ENTROPY C'
db ' ПЛАТФОРМЫ "SАM COUPE", ОСТАЛЬНОЕ ВЗЯТО ИЗ ПРЕДЫДУЩИХ ВЫПУСКОВ "E-TUNES" ИЛИ ПРИДУМАНО.'
db ' ВСЕ ЭТО СОБИРАЛОСЬ НА РС ПРИ ПОМОЩИ АССЕМБЛЕРА SJASMPLUS.'
db ' НА ОЧЕРЕДИ ПРИВЕТЫ И СПАСИБКИ! '
db ' ААА ГРОМАДНЫЙ ПРИВЕТИЩЕ И СПАСИБО ЗА БЕТА ТЕСТИРОВАНИЕ И ЗА КОРРЕКЦИЮ КАРТИНКИ :)'
db ' БОЛЬШУЩИЙ РЕСПЕКТ MOLODCOV_ALEX (МОЛОДЦОВ АЛЕКСАНДР) ЗА ЭМУЛЯТОР.'
db ' ПРИВЕТ ВЛАДЕЛЬЦАМ КАРТЫ "ZXM-SOUNDCARD". НАЗОВЕМ ИХ ПОИМЕННО: AAA, PIROXILIN, КИРЛИАН И LUZANOV.'
db ' ВСЕМ ФЕНИКСОВОДАМ ОТДЕЛЬНЫЙ ПРИВЕТИК :) А ПЯТНОГОНАМ ОЧЕРЕДНОЙ ФАКИК :))).'
db ' ПРИВЕТ ТАКЖЕ ВСЕМ СПЕКТРУМИСТАМ, БЫВШИМ, НАСТОЯЩИМ И ВОЗМОЖНО БУДУЩИМ.'
db ' ДУМАЮ ПОРА ЗАВЕРШАТЬ.'
db ' ЧУТОК РЕКЛАМЫ - ОТКРЫЛСЯ САЙТ WWW.MICKLAB.NAROD.RU ТАМ МОЖНО НАЙТИ ПОСЛЕДНЮЮ ИНФОРМАЦИЮ'
db ' ПО МОИМ ПРОЕКТАМ. СВЯЗАТЬСЯ СО МНОЙ МОЖНО ЧЕРЕЗ САЙТ WWW.ZX.PK.RU - НИКНЕЙМ MICK ИЛИ ЧЕРЕЗ МЫЛО'
db ' MICKLAB@MAIL.RU '
db ' И ЕЩЕ АНОНСИК. ААА ПОДГОТОВИЛ МАТЕРИАЛ ДЛЯ СЕДЬМОГО ТЮНЕСА. ОТЛИЧИЕ ЕГО БУДЕТ ОТ ВСЕХ ПРЕДЫДУЩИХ'
db ' - МУЗЫКА ОТ ГРУППЫ ESI.'
db ' ТАК ЧТО ПОХОЖЕ ТЮНЕСЫ НА СПЕККИ, ЭТО ВСЯ ОБОБЩЕННАЯ МУЗЫКА С "SAM COUPE". В ОБЩЕМ, ВРЕМЯ ПОКАЖЕТ.'
db ' ПОРА ПРОЩАТЬСЯ. ДО НОВЫХ ТЮНЕСОВ. ПОКА, ПОКА....... '
db ' JUNE *2010* GRAPHICS AND CODE BY MICK '
db ' ',0
Str_addr_font:
incbin "font.fnt"
; .end