Autor Wątek: Timer КР580ВИ53 jako generator dźwięku  (Przeczytany 62756 razy)

pear

  • *****
  • Wiadomości: 5509
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #30 dnia: 2013.06.08, 11:11:19 »
Wpadłem na pomysł, że może pierwsza wartość to czas trwania nuty, 2. i 3. to dzielnik (0 może oznaczać ciszę, czyli pauzę), a 4. to numer generatora.
Nadal nie mam pomysłu jak powiązać wartość dzielnika z tonem.
ZX/Enterprise/CPC/Robotron/C128D

pear

  • *****
  • Wiadomości: 5509
  • Miejsce pobytu:
    Będzin
  • Z80 only
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #31 dnia: 2013.06.08, 11:16:06 »
Jeśli udałoby się wyciąć kod odtwarzacza - który wie co z tymi danymi zrobić to byłoby OK a tak to chyba nic z tego dobrego nie wyjdzie :-(. Próbowałem zrobić tak ale podobno tak nie można bo program musi działać w pamięci od adresu #100
Programy w CP/M ładowane są do pamięci pod adres 0x100, więc pomysł masz dobry, tylko offset musisz sobie zmienić, np. +0x8000 i przeliczyć wszystkie adresy bezwzględne.
Program będziesz miał wtedy od adresu 0x8100 (33024 dziesiętnie).

Zauważyłem, że często mylisz adresy DEC i HEX - zwracaj na to uwagę, bo niepotrzebnie stracisz sporo czasu :)
ZX/Enterprise/CPC/Robotron/C128D

Gelip

  • *****
  • Wiadomości: 765
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #32 dnia: 2013.06.08, 12:13:48 »
Programy w CP/M ładowane są do pamięci pod adres 0x100, więc pomysł masz dobry, tylko offset musisz sobie zmienić, np. +0x8000 i przeliczyć wszystkie adresy bezwzględne.
Program będziesz miał wtedy od adresu 0x8100 (33024 dziesiętnie).
Tak właśnie zrobiłem tylko od adresu 40000 zamiast 33024. Czytałeś ten post? Na forum zx-pk.ru user jerri napisał mi:
Cytuj
here is a system absent
some function calls to Dxxx and #00xx

Czyli, że bez systemu CP/M nie da rady? Przecież próbuję uruchomić nie cały program WW.COM tylko jakiś podprogram z niego (SUBROUTINE)

P.S. Udało mi się uruchomić system CP/M 2.2 na ZX Spectrum 48 z rozszerzeniem LEC Memory Extension w emulatorze ZXMAK2 i wczytać plik WW.COM z taśmy ale niestety nie chce działać. Inne programy z dyskietki "Bajta-01" działają po części, np. menu programu SYS.COM. W załączniku SYS.COM na emulatorze + LEC i SYS.COM na prawdziwym "Bajcie-01" dla porównania :-)
« Ostatnia zmiana: 2013.06.08, 13:27:48 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #33 dnia: 2013.06.08, 14:39:00 »
Odtwarzacz jak sądzę zaczyna się od adresu $1f96...
Machines should work. People should think.

Gelip

  • *****
  • Wiadomości: 765
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #34 dnia: 2013.06.08, 15:25:21 »
Odtwarzacz jak sądzę zaczyna się od adresu $1f96...
Całkiem możliwe ale po wstawieniu WW.COM do pamięci RAM w adres 40000 i uruchomieniu RANDOMIZE USR 47830 (1F96 - 100 = 1E96h = 7830dec) w emulatorze Spectaculator ROM resetuje się, także po wcześniejszym wykonaniu CLEAR 47829

Działanie programu WW.COM:

1. Załadowanie obrazka wielkości 6912 bajtów z offsetu 0x2404 na ekran 256x192
2. Odtwarzanie muzyki
3. Po wciśnięciu dowolnego klawisza pokazuje się menu systemowe

Czy ten offset 1F96 to według Ciebie sam odtwarzacz czy podprogram ładowania obrazka na ekran?
« Ostatnia zmiana: 2013.06.08, 15:34:44 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #35 dnia: 2013.06.08, 15:32:52 »
Przecież tak nie można.
Primo, kod nie jest relokowalny, musisz albo ręcznie pozmieniać w binarce adresy albo wyczyścić ASMa i skompilować od nowa,
secundo jak już ktoś mówił odwołuje się do funkcji CPM, co trzeba też jakoś uwzględnić...

IMO to wejście do procedury odtwarzającej (może wymagać jakiegoś parametru, nie wiem)
Machines should work. People should think.

Gelip

  • *****
  • Wiadomości: 765
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #36 dnia: 2013.06.08, 15:45:16 »
Czyli tak jak wcześniej pisałem - bez CP/M nie da rady. No nic będę musiał poczekać w takim razie aż autor ZXMAK2 doda emulację "Byte-01" - obiecał, że doda, ale kiedy to nastąpi to nie wiadomo :-(. W tej chwili działa emulacja zwykłego "Bajta" ale bez VI53 (Intel 8253). Jedyny znany mi emulator który potrafi emulować po części "Bajta" i chip 8253 to EMU 1.01 (Башкирия-2М).

P.S. W ubiegłym roku rozmawiałem z autorem innego emulatora E3000 - i też obiecał dodać emulację "Bajta". Prusak przesłał mu nawet materiały do emulacji ale niestety do dziś nic nie wiadomo :-(
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Gelip

  • *****
  • Wiadomości: 765
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #37 dnia: 2013.06.09, 08:35:48 »
Piszę ponieważ dosłownie przypadkiem znalazłem ciekawą rzecz. Otóż znalazłem dosłownie ten sam kawałek kodu z pliku WW.COM w pliku Art Studio.tzx - wersja z kasety zwykłego "Bajta" w którym na początku odgrywana jest melodia Lambada za pomocą VI53 :-). Ten kod jest właściwie dopiero dostępny po rozpakowaniu któregoś bloku w pamięci emulatora ponieważ nie mogę znaleźć go w żadnym bloku pliku Art Studio.TZX. Jak to zrobiłem. Ponieważ emulator EMU 1.01 nie obsługuje zabezpieczenia "Bajta" Cerikopik musiałem skorzystać z wersji Art Studio odbezpieczonej oraz usunąć blok w pliku TZX zawierający krótką rosyjską instrukcję obsługi. Tak przygotowany plik nazwałem: Art_no_cer.tzx
1. Wczytałem plik Art_no_cer.tzx w emulatorze EMU 1.01
2. W momencie pojawienia się pędzla i spray'a zapisałem szybko stan emulatora do pliku .emu zmieniając później nazwę na Lambada.emu
3. Otworzyłem sobie ten plik w WinHEX i przypadkiem znalazłem ciąg |Puşn i od razu skojarzyłem, że taki sam widziałem w kodzie WW.COM przed danymi muzycznymi - i bardzo dobrze skojarzyłem, ch....a dobrą mam pamięć wzrokową :-)
4. Otworzyłem w WinHEX również plik WW.COM i proszę bardzo, ten sam ciąg i jeszcze kilka bajtów wstecz identyczne. Po ciągu |Puşn są też jakieś dane - zapewne muzyczne ale jakoś nie podobne do tych z WW.COM :-(. Link do emulatora "Bajta". Po rozpakowaniu Byte EMU.rar można otworzyć po prostu plik Lambada.emu aby zobaczyć jak gra VI53.
« Ostatnia zmiana: 2013.06.09, 08:55:12 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Gelip

  • *****
  • Wiadomości: 765
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #38 dnia: 2013.06.09, 09:28:39 »
Dane po ciągu |Puşn są na 100% danymi muzycznymi dla chipu VI53. Zrobiłem test z plikiem Lambada.emu i wstawiłem w WinHEX kilka zer i po otworzeniu pliku w emulatorze EMU 1.01 pojawia się cisza w pewnym momencie odgrywania melodii Lambada :-)
I tak np. w offsecie 359C jest prędkość odtwarzania domyślnie 19h, po zmianie na np. 05h muzyka odtwarzana jest za szybko. Patrz plik 359C.emu w załączniku.
« Ostatnia zmiana: 2013.06.09, 10:09:32 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Gelip

  • *****
  • Wiadomości: 765
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #39 dnia: 2015.05.22, 22:14:07 »
Offset 359C - pozycja w pliku .emu w hex edytorze
Offset 6E5E - pozycja w debugerze w emulatorze EMU 1.0.1

Niższa wartość = szybsze odtwarzanie
Wyższa wartość = wolniejsze odtwarzanie

P.S. Po zmianie wartości w debugerze trzeba odczekać aż melodia zostanie odtworzona ponownie, dopiero wtedy zmiany odniosą skutek.
Wciskając i przytrzymując klawisz F9 w emulatorze można przyspieszyć prędkość emulacji procesora.
« Ostatnia zmiana: 2015.05.22, 22:36:39 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

Gelip

  • *****
  • Wiadomości: 765
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #40 dnia: 2021.05.29, 04:09:34 »
Wpadłem na jeszcze jeden pomysł. Czy jakby w czasie działania programu ww.com pod systemem CP/M na komputerze Bajt-01 zatrzymać jakoś działanie, zrzucić pamięć RAM do pliku to czy dałoby się przerobić ten plik jakoś na dane, które można wczytać za pomocą LOAD "" CODE w Basic'u na zwykłym Bajcie (klonie ZX Spectrum)?
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #41 dnia: 2021.05.30, 21:21:13 »
Muzyka z WW.COM
playAY.tzx - dla ZX 48/128 z AYgrekiem
playI.tzx - dla emulatora z intelem (nie startuje sam, trzeba dać RANDOMIZE USR 32768)
Źródełko dla AY załączone.
(nie,w Lambada jest inny player. Nieco podobny, ale bardziej rozbudowany i zdaje się grający na przerwaniach)
Machines should work. People should think.

Gelip

  • *****
  • Wiadomości: 765
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #42 dnia: 2021.05.30, 22:18:20 »
Muzyka z WW.COM
steev - dzięki wielkie, to działa :D
Wrzuciłem to do mojego Bajta, który ma klona Intel 8253 i po RANDOMIZE USR 32768 gra  :) :)
Wprawdzie za szybko ale gra. Oczywiście gra też w emulatorze EMU 1.01 z inną prędkością.

Jak to zrobiłeś? Wypakowałeś player i dane muzyczne z ww.com czy tylko dane muzyczne a player napisałeś sam?
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #43 dnia: 2021.05.30, 22:39:26 »
Zdezasemblowałem (jak to się poprawnie pisze po polsku? :) ) WW.COM , wyłapałem player po portach i wywaliłem resztę kodu.
Potem najtrudniejsze - zrozumieć co on robi i po co.
Reszta była już 'prosta' - zamienić odwołania do 8253 na odwołania do 8910 (plus drobne przeróbki związane z klawiaturą)
Więc player jest w zasadzie oryginalny, dodałem jedynie obsługę AY i push-popy żeby ładnie wracało do systemu.

Ciekawe czy był/jest do tego jakiś tracker.
Oba playery (WW i lambada) mają wspólną część danych (tablicę częstotliwości) ale na oko format zapisu muzyki jest już inny.
Część kodu playera też jest identyczna, ale różnice są i tak spore...
Machines should work. People should think.

Gelip

  • *****
  • Wiadomości: 765
    • Sysprep WinXP SP2 64-bit for pure UEFI with ACPI, AHCI, NVMe, USB 3.x
Odp: Timer КР580ВИ53 jako generator dźwięku
« Odpowiedź #44 dnia: 2021.05.30, 23:10:38 »
Zdezasemblowałem (jak to się poprawnie pisze po polsku? :) ) WW.COM , wyłapałem player po portach i wywaliłem resztę kodu.
Potem najtrudniejsze - zrozumieć co on robi i po co.
Kurczę, naprawdę jesteś dobry  :o

Ten program ww.com oprócz muzyki wyświetla jeszcze reklamę AKDI. Udało mi się dodać obrazek i wyszło prawie to samo co ww.com na CP/M tylko zastosowałem LOAD ""SCREEN$  ;D
« Ostatnia zmiana: 2021.05.30, 23:28:00 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники