Ready/Run

Takie sobie archiwum listingów ze starych magazynów komputerowych


Kopiowanie z Atrybutami
  • Język programu: Basic
  • Platforma: ZX Spectrum
  • Kod zamieszczono w Bajtek 05/1989
  • Autor listingu: Marcin Borkowski
  • Listing nadesłał: Faust

Stan listingu:

0
Listing niesprawdzony - świeżo po OCR lub przepisaniu

Czy pamiętacie moje ostatnie kłopoty? Wyobraźcie sobie, że nie skończyły się one wcale w momencie napisania programu kopiującego ekran w trybie graficznym. Przypominam — wszystko zaczęło się od pożyczenia drukarki Seikosha GP-500AS. Jak wiadomo, apetyt rośnie w miarę jedzenia. Zapragnąłem skopiować ekran tak, by było widać, że jest kolorowy.

Znacie Art Studio? Jest to taki program do rysowania. Teoretycznie pośród jego wielu możliwości figuruje opcja PRINT, umożliwiająca wydrukowanie zawartości ekranu w taki sposób, by różnym kolorom punktów na ekranie odpowiadały różne kombinacje punktów na papierze (jeden punkt ekranu odpowiada wtedy na papierze kwadratowi składającemu się — w zależności od możliwości drukarki — z czterech lub dziewięciu punktów). Napisałem „teoretycznie“, bo jak wiadomo komputery wcale nie ułatwiają życia swoim właścicielom. Zawsze znajdzie się powód, dla którego nie da się zrobić tego, co teoretycznie powinno dać się zrobić bez żadnego problemu. Tak samo było tym razem. Pogięła się taśma magnetofonowa. Samo Art Studio dało się wczytać, ale już program instalujący je dla różnych konfiguracji sprzętowych — nie.
Ci z Was, którzy czytali ostatni artykuł, już wiedzą czym to się skończyło i następnego zdania mogą nie czytać. Jak to zwykle w takich sytuacjach bywa, musiałem sam napisać program robiący to, co było mi potrzebne. Niestety, tym razem problem nie da się rozwiązać w taki sam sposób jak poprzednio. Żeby skopiować ekran punkt po punkcie, wystarczyło go pokroić na paski o szerokości siedmiu pikseli i każdy taki pasek wysłać na drukarkę. Teraz ekran musiałby być pokrojony na paski o szerokości trzech i pół pikseli (możliwości Seikoshy pozwalają tylko na zastąpienie każdego punktu kwadratem dwa na dwa), cała operacja byłaby bardzo skomplikowana. Zabrałem się więc do pracy w inny sposób. Pokroiłem na paski to, co miało być na wydruku — łatwo jest sprawdzić, czy punktowi na papierze odpowiada na ekranie punkt o kolorze tła, czy o kolorze tuszu.
Początkowo miałem zamiar napisać program w Basic-u, żeby sprawdzić algorytm, ale bardzo szybko zrezygnowałem. Pierwsze próby wykazały, że na kompletny wydruk trzeba by czekać kilka godzin. Dlatego też zdecydowałem się na sam program w kodzie maszynowym. Tak samo jak w poprzednim artykule, oprócz wydruku z asemblera, zamieszczam program ładujący w Basic-u — program nie jest relokowany, uruchamia się go przez PRINT#4;USR 60000, po otwarciu strumienia instrukcjami OPEN #4; „B“: FORMAT „B“;9600.