forum speccy.pl

ZX Spectrum => SOFTWARE => Wątek zaczęty przez: yarko w 2011.12.01, 19:39:50

Tytuł: CopyCopy jak używać
Wiadomość wysłana przez: yarko w 2011.12.01, 19:39:50
Może głupio to zabrzmi - ale jak się tego używało? Teraz mam tylko emulatory i gotowe romy, kiedyś gdy miałem ZX Spectrum+ ~1984-1987 to było podstawowe narzędzie  ;) a teraz czas zatarł pamięć ....
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: popocop w 2011.12.01, 19:43:25
Dokładny opis był chyba w specjalnym wydaniu "Komputera" pt. "Tajniki ZX Spectrum".
Tak na szybko to pamiętam, że ładowało się używając LOAD (czyli klawisz J) i Enter, a nagrywało używając SAVE.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Duddie w 2011.12.01, 19:53:19
1. CAT — klawisz C
Przeglądanie nagłówków (nie niszczy zbiorów zapisanych w pamięci).
2. LOAD — klawisz J
Wczytywanie zbiorów do pamięci.
LOAD — od następnego zbioru;
LOAD 1 — od początku pamięci (skasowanie wszystkich zbiorów wczytanych poprzednio);
LOAD n — od n-tego zbioru;
LOAD n TO m — od n-tego do m-tego zbioru;
LOAD TO m — od następnego do m-tego zbioru;
LOAD AT nn — od adresu nn; nn jest inicjowany na 23296, przez LOAD AT 23040 można zwiększyć wolną pamięć do 42496; kasuje wszystkie zbiory nie niszcząc ich fizycznie;
LOAD (nn — wczytanie pierwszych nn bajtów zbioru (z pominięciem nagłówka), może być także LOAD n/nn;
LOAD (nn TO — wczytanie z opuszczeniem pierwszych nn bajtów (z pominięciem nagłówka);
Przykład:
LOAD (6912 —wczytanie tylko screen-u;
LOAD (6912 TO — wczytanie z pominięciem screen-u.
SAVE — klawisz S
Nagrywanie zbiorów na taśmie.
3. SAVE — od pierwszego do ostatniego;
SAVE n — od n-tego zbioru;
SAVE TO m — od pierwszego do m-tego zbioru;
SAVE n TO m — od n-tego do m-tego zbioru;
SAVE STEP n — ustawienie przerwy między zbiorami w sekundach, przy n = 9 (przerwa dowolna) pojawia się komunikat Press any key...;
SAVE n TO m STEP n — od n-tego do m-tego zbioru co n sekund;
4. VERIFY — klawisz V
Weryfikowanie nagranych zbiorów.
VERIFY — patrz LOAD;
VERIFY n TO m — patrz LOAD n TO m;
VERIFY n — patrz LOAD;
5. LET — klawisz L
Zmiana nagłówka.
LET 2=naz,,1 — zbiór numer 2, nazwa = naz, start = 1;
LET 3=,500,1,5 — zbiór numer 3, długość = 500, start = 1, próg = 5;
W nazwie pomijane są spacje, można w nazwie umieścić spacje graficzne — GRAPHICS 8. LET bez parametrów powoduje wydruk zbiorów. Jeśli pojawia się komunikat OUT OF MEMORY, to należy zmieniać nagłówek po jednym parametrze.
6. LIST — klawisz K
Wydruk pamięci, pokazuje 15 bajtów — adres, wartość słowa, wartość bajtu (dec) i kod znaku. Przez Enter uzyskuje się następne 15 bajtów.
LIST nn — wydruk od adresu nn.
Uwaga: zawartość obszaru pamięci pomiędzy adresami 23552 i 23754 (zmienne systemowe) jest przenoszona w inne miejsce.
7. POKE — klawisz O
Modyfikacja zawartości pamięci;
POKE x, nn — x — adres, nn — wartość dwubajtowa;
POKE x, n — x — adres, n — wartość jednobajtowa;
Jeżeli druga wartość jest większa od 256, to automatycznie wpisuje się dwa bajty.
8. USR — klawisz U
USR nn — wykonanie programu maszynowego od adresu nn.
9. RETURN — klawisz Y
Powrót do BASICu: inicjuje zmienne systemowe i kanały, nie niszczy fizycznie zbiorów.
10. COPY — klawisz Z
COPY — kopiowanie jednego zbioru o długości do 49096 bajtów bez nagłówka; rozpoczęcie nagrywania (save) przez Caps Shift; można nagrywać wielokrotnie; pomija nagłówek; niszczy program COPY COPY.
COPY nn — kopiowanie jednego zbioru o długości do 49152 bajtów (bez nagłówka), początek nagrywania przez Caps Shift, nagrywanie jednorazowe. Przed wczytaniem ustawić nagranie tuż za nagłówkiem (to znaczy wcisnąć Enter dopiero po przejściu nagłówka). COPY nn niszczy program główny COPY COPY, nn oznacza adres, pod którym schowany będzie program kopiujący (29 bajtów) 16384 < nn < 65350, na przykład: COPY 16387 — program schowa się w pierwszym wierszu ekranu; COPY 23698 — w MEMBOT. COPY zawiesza się w przypadku błędu na taśmie i po ukończeniu nagrywania. Moduły COPY nie są aktywne, jeśli przedtem wykorzysta się ostatnie 200 bajtów pamięci.
11. PRINT — klawisz P
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: yarko w 2011.12.01, 20:07:04
Duddie -  :o - wielkie dzięki !!!
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: popocop w 2011.12.01, 20:58:39
Zawsze mnie ciekawiło w jaki sposób Copy Copy dawał radę skopiować plik o długości 49152 bajtów (czyli pełne 48kB), na Spectrum z 48kB pamięci.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Duddie w 2011.12.02, 11:03:37
popocop, jak zwrócisz uwagę na to, co jest w takim dłuuuugim pliku, to będziesz wiedział.... Producenci gier, aby uniemożliwić ich kopiowanie, zapisywali fragment ROM i potem dopiero był CODE. COPY COPY wczytuje więc program pod adres, gdzie jest ROM (odczytuje to z nagłówka). Potem zapisuje tak samo.... Rzeczywistego kodu jest mniej niż RAMu, inaczej nie mogliby tego zapisać.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: matofesi w 2011.12.02, 12:49:40
@Duddie A niby czemu nie można by zapisać całego RAMu i mieć poprawnego programu? Przecież wystarczy, żeby loader poprawnie ustawił stos, parametry dla loada i skoczył do ROMu. Procedura ładowania wciągnie cały RAM w tym nowy stos i po powrocie z niej nastąpi skok do właściwego startu programu. Dokładnie tak samo z zapisem - w ramie, który zrzucasz pozostaje co prawda sama procedura zapisywania bloku na taśmę, ale zrzucić można przecież całą pamięć. A poza tym - duży może sobie na to pozwolić - jakby producent nie chciał, żeby procedura zapisu siedziała w RAMie to można przecież wsadzić eproma w którym jest ona wpisana a jakiś nieużywany kawałek ;)

I mam wrażenie, że miałem kiedyś jakieś szachy, które miały właśnie pełne 48 kilo co do bajtu i blok zaczynał się od 16384.

Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Duddie w 2011.12.02, 14:31:46
matofesi, masz rację. I tak działa właśnie COPY COPY. Po wczytaniu całości następuje skok do procedury SAVE.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: matofesi w 2011.12.02, 15:45:07
@Duddie Ja się domyślam, że tam jest coś sprytnego, ale nie da się tego zrobić tak na 100%, żeby dało się skopiować co do bajtu 48 kilo. A w każdym razie ja sobie nie wyobrażam jak - musisz obciąć albo początek albo koniec bloku - gdzieś musi się zmieścić procedura ustawiająca parametry zapisu pliku i czekająca na klawisz.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Pyza^Illusion w 2011.12.02, 16:15:25
Ja to się w COPY-COPY mało co bawiłem, bo znacznie lepiej było używać Compress Copy, który w locie kompresował pliki. Cała pamięć i tak nie była wypełniona kaszaną, i jakieś tablice, czy pustki się zdarzały. Zwykle można było nawet półtorej gry za jednym zamachem wczytać :p Jak mniejsze tytuły to nawet dwie, czy trzy. Już nie wspomnę o CompressCopy128 :D
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Tygrys w 2011.12.02, 17:33:38
O ile dobrze pamietam to ja uzywalem turbo copy, ktore rowniez kopresowalo w locie.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: matofesi w 2011.12.02, 18:01:26
To są wszystko późniejsze wynalazki. Copy Copy to jest matka wszystkich kopierów ;)
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: popocop w 2011.12.02, 20:01:37
To są wszystko późniejsze wynalazki. Copy Copy to jest matka wszystkich kopierów ;)

Dokładnie, a poza tym Copy Copy było niezastąpione przy cięciu plików na kawałki, wpisywaniu POKE'ów itp.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: rafamiga w 2011.12.03, 00:49:11
@Duddie Ja się domyślam, że tam jest coś sprytnego, ale nie da się tego zrobić tak na 100%, żeby dało się skopiować co do bajtu 48 kilo.

Da się. Z grubsza tak:

1. W bajty <nn> do <nn+26> ładujesz 27-bajtową procedurkę, która czeka na CAPS SHIFT i skacze do ROM, zapisując 49152 bajty od 16384, bez nagłówka ofkors.

2. Kopiujesz procedurę ładowania do RAM, relokując, gdy trzeba. [LD-BYTES spod 0556]

3. W odpowiednim momencie skopiowanej procedury wstawiasz skok do "dolepku", który sprawdza wskaźnik, mówiący gdzie zapisać szczytany z taśmy bajt, i gdy adres jest pomiezy <nn>, a <nn>+28, nie zapisuje tego bajtu do pamięci.

3a. Drugim "dodatkiem" jest skok do kawałka kodu, gdy wskaźnik osiągnie <nn>+29. Kod ustawi stos na <nn>+27 i skoczy w środek pętli opóźniającej procedury ładowania, tej w ROM-ie, dokładnie do LD-EDGE-2.

Oczywiście, przy obu operacjach trzeba skomensować pętlę opóźniającą, biorąc pod uwagę liczbę taktów procesora "zżeranych" przez te sprawdziany. No ale szybki rzut oka na LD-EDGE-2 potwierdza, że mamy dużo taktów "nadmiaru", bo tam jest 22-krotna pętla opóźniająca, i to na polegająca na dekrementacji A, a nie na DJNZ [znaczy, wolniejsza].

Do potwierdzenia lekturą samej LD-BYTES. Wykrywanie zbocza sygnału jest w LD-EDGE-1. http://www.wearmouth.demon.co.uk/zx82.htm.

A dlaczego 27 bajtów? Bo w instrukcji, którą zacytował Duddie, napisano, że COPY 16387 umieszcza procedurkę w pierwszym wierszu ekranu. Skoro ekran ma szerokość 32 bajtów [256 pikseli] to od 16387 do 16415 jest 29 bajtów, no ale na stosie musi leżeć 16387, jako adres powrotny z LD-BYTES, a to zajmuje 2 bajty i pewnie jeszcze kilka bajtów, na stos używany przezcież przez LD-BYTES.

27 bajtów to ciut przy dużo jak na czekanie na caps i skok do SA-BYTES. Pewnie w tych 27 są właśnie te "ekstra" rzeczy dołożone do LD-BYTES, miejsce na stos i adres powrotu.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: matofesi w 2011.12.03, 14:36:47
Ok. Ale to nadal nie zmienia faktu, że nie dostajesz kopii co do bitu - te 27 bajtów cały czas musi tam gdzieś siedzieć. Czyli zasadniczo jeśli nie da się ze 100% pewnością znaleźć miejsca na ten kawałek procedury istnieje prawdopodobieństwo, że wstrzelimy się w coś, co jest jednak istotne dla kopiowanego programu albo pominiemy coś, co jest dla niego istotne. A jak program będzie wredny to może się przejechać przez pamięć zaraz po starcie i policzyć sumę kontrolną ;)

I tak - zdaję sobie sprawę, że nikomu nie chciało się robić takich rzeczy przy zastosowaniu systemowego formatu zapisu bo nie miało to jakiegoś wielkiego sensu - lepiej było wymyślić jakiś nietypowy format, którego standardowe kopiery nie były w stanie przeczytać. A na koniec i tak zawsze można było tak zabezpieczony program przegrać na porządnym dwukasetowym decku i wszystkie zabezpieczenia się kopiowały na nową taśmę ;)
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Pyza^Illusion w 2011.12.03, 18:50:55
No cóż, pobawić się w teorie i rozwiązania hardcore-owe można, bo to oldskul i takie tam, jednak jeżeli chodziło by mi tylko o przekopiowanie programu (bez większych zabezpieczeń), to po co się mordować? Używam CompressCopy i mnie takie sprawy nie dotyczą.
Porównałbym to do orania pola... Można ciągle łazić z pługiem za koniem, tylko po co jak se można w klimatyzowanym traktorze zrobić to szybciej.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: rafamiga w 2011.12.17, 18:21:38
Ok. Ale to nadal nie zmienia faktu, że nie dostajesz kopii co do bitu - te 27 bajtów cały czas musi tam gdzieś siedzieć. Czyli zasadniczo jeśli nie da się ze 100% pewnością znaleźć miejsca na ten kawałek procedury istnieje prawdopodobieństwo, że wstrzelimy się w coś, co jest jednak istotne dla kopiowanego programu albo pominiemy coś, co jest dla niego istotne. A jak program będzie wredny to może się przejechać przez pamięć zaraz po starcie i policzyć sumę kontrolną ;

Prawda 100-procentowej kopii na 48k nie zrobisz, ale bardzo rzadko zdarza się, że różnica w zawartości jednej linijki ekranu popsuje program, zatem można przyjąć, że program da się skopiować nawet ze "skazą".
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: matofesi w 2011.12.19, 08:17:06
A co do tego to ja nie mam zastrzeżeń ;)

Chodzi mi po prostu o to, że jakby się programista zaparł, to jest w stanie przygotować program na taśmie - używając standardowego loadera z ROMu - w taki sposób, żeby się go nie dało w żaden programowy sposób skopiować.

Takie tam dywagacje i przemyślenia, czy sam byłbym w stanie coś takiego zrobić ;)

I oczywiście zdaję sobie sprawę z tego, że kopier na 128k czy taki robiący kompresję w locie (choć tu akurat też można by mu nabruździć jakby się przyjrzeć używanemu algorytmowi ;)) sobie z tym poradzi :)
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: DDX w 2012.02.10, 16:54:53
To są wszystko późniejsze wynalazki. Copy Copy to jest matka wszystkich kopierów ;)

Dokładnie, a poza tym Copy Copy było niezastąpione przy cięciu plików na kawałki, wpisywaniu POKE'ów itp.
COPY COPY byl chyba najlepszym programem kopiujacym w momencie jego powstania - 1984 (przynajmniej wsrod tych popularych w PL) i jeszcze jakis czas potem. Jednak sens jego uzywania jako kopiera w zasadzie skonczyl sie wraz z pojawieniem sie programow kopiujacych, ktore kompresowaly/pakowaly dane w locie (poczatek ok. 1986). Po prostu w tym czasie prawe kazdy w miare swiezy program (przynajmniej gry) trzeba bylo w COPY COPY kopiowac na kilka razy, natomiast w tych kompresujacych czesto udawalo sie to na jeden raz*. Natomiast do innych celow niz samo kopiowanie, w tym przede wszystkim do dzielenia blokow (wgranie n pierwszych czy n koncowych bajtow), wstawiania POKE'ow itp. "zadan specjalnych", COPY COPY pozostal wielki :). No przynajmniej dopoki nie dysponowalo sie jakas nowoczesniejsza pamiecia masowa niz tasma, ze juz nie wspomne o emulatorach na PC.

* Hehe, pamietam wielkie oczy niektorych, ktorym sie w pale nie miescilo, jakim cudem mozna wgrac do pamieci Spectruma dluzsze "pliki" niz calkowita pojemnosc jego pamieci (tym bardziej, ze nawet nie cala pamiec ekranu byla wykorzystana na potrzeby gromadzenia danych).
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: DDX w 2012.02.11, 01:10:48
A opis mozliwosci, klawiszo- i komendologii progamu COPY COPY znajuje sie w pierwszym w ogole numerze Komputera (1/86) i mozna go znalezc np. TUTAJ (http://www.grush.one.pl/gazety.php?mode=text&title=komputer&issue=komputer.1.86&art=copycopy). Co prawda Duddie juz wczesniej zacytowal z niego jakies 97% ;), ale jednak nie wszystko.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: andy w 2012.05.01, 22:44:45
Pamiętacie NEW FORMAT COPY ?
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Duddie w 2012.05.02, 11:44:40
Pamiętamy :). Mam kilkanaście kopierów zarchiwizowanych do .TZX, podeślę niebawem do archiwum.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Gelip w 2014.08.15, 18:07:41
Szukam instrukcji używania programu Out Run Copy - nakładki TURBO do Copy Copy - Tadeusza Wilczka. Phonex w swoim artykule Mój KAPRAL - Pierwszy magnetofon Turbo w Polsce (http://www.speccy.pl/articles.php?article_id=26&c_start=0) coś tam wspomina o tym programie ale chciałbym wiedzieć jak ustawić podwójną prędkość wczytywania za pomocą PAUSE. Na google znalazłem takie coś: Turboload routine - (USR 50041: PAUSE 1-9: LOAD "")
Podobno jest to instrukcja w pliku ftp://ftp.nvg.unit.no/pub/spectrum/docs/misc/oldspeclist.txt (http://ftp://ftp.nvg.unit.no/pub/spectrum/docs/misc/oldspeclist.txt) Niestety link nie działa i nie działa również żaden inny mirror FTP, nie mogę znaleźć w internecie tego pliku oldspeclist.txt. Jak ktoś ma ten plik to niech wrzuci.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Phonex w 2014.08.15, 22:52:19
Był taki program: TURBO (czy TURBO 2?) Wilczka - nakładka na COPY COPY. Out Run Copy to COPY COPY już z wbudowanym "TURBO", zmniejszoną liczbą bloków do załadowania i dołożoną muzyką z Out Run. Samego "TURBO" niestety nie mam.

Podwójną prędkość wczytywania ustawia się PAUSE 5 (można spróbować też PAUSE 6). Taka prędkość jest ustawiona przy starcie. PAUSE 0 to prawie standard (odrobinę szybciej), przełączenie na standardowe procedury LOAD/SAVE z ROM (czyli tak jak w zwykłym COPY COPY) osiąga się pisząc samo PAUSE bez cyfry.
"TURBO" Wilczka jest tu zmodyfikowane - po pierwsze jest szybki pilot, a po drugie wyłączona jest zmiana prędkości dla SAVE. Zapis dla każdego PAUSE n jest z podwójną prędkością.

Dodatkowe miejsce w kopierze (2K - środkowa tercja ekranu) zainspirowało też innych. Na bazie Out Run Copy powstały potem Tetris Copy i Pac-Man Copy różniące się tylko dodatkiem ;) Sam kopier jest ten sam.
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Gelip w 2014.08.16, 01:05:24
Znalazłem w cache google -> Link (http://webcache.googleusercontent.com/search?q=cache:drGzVqXKIh0J:ftp://ftp.nvg.unit.no/pub/spectrum/docs/misc/speclist.txt+&cd=2&hl=pl&ct=clnk&gl=pl&client=firefox-a), że ciąg Turboload routine - (USR 50041: PAUSE 1-9: LOAD "") dotyczy pliku TURBOLD      .ZIP   (.TAP)    1,712
Swoją drogą to co się stało z serwerem FTP NVG Planet Sinclair ???

P.S. Znalazłem w końcu ten program (nakładkę) TURBOLD.TAP. Jest to program maszynowy - blok typu bytes ładowany do adresu 50000 ale nie wiem jak mam go użyć w Copy Copy
Tytuł: Odp: CopyCopy jak używać
Wiadomość wysłana przez: Phonex w 2014.08.16, 11:09:24
To nie jest ta nakładka do COPY COPY.
Tamta miała koło 500 bajtów jak pamiętam. Na pewno poniżej kilobajta

A tego TURBOLD używa się chyba tak jak instrukcja mówi ;) Tak na szybko w kodzie znalazłem odczyt dalszej części linii. Czyli trzeba napisać RANDOMIZE USR 50041: PAUSE 1-9: LOAD ""
Nawet wyświetla wybraną szybkość :)