ZX Spectrum > PROGRAMOWANIE
Konkurs dla programistów ;)
Tygrys:
Każdy programujący w asemblerze zna taką procedurkę:
--- Kod: --- inc h
ld a,h
and 7
ret nz
ld a,l
add a,32
ld e,l
ret c
ld a,h
sub 8
ld h,a
ret
--- Koniec kodu ---
Zdaniem jest napisanie odpowiednika w języku C.
Dodam, że ja znam rozwiązanie ;-). Jestem ciekaw waszych sposobów.
pear:
Nie to, żebym się czepiał, ale wypadałoby podać co jest wejściem, a co wyjściem.
RafalM:
To jest standardowa procedura przejścia o jedną linię niżej w pamięci ekranu Spectrum.
Argument: HL, zwracana wartość:HL.
A w C pisał nie będę bo pomysłu nie mam, przepisałbym operacja po operacji kod z asemblera ;)
Tygrys:
pear, dzięki za uwagę, Fakt, nie każdy musi kojarzyć tą procedurę.
Tak jak napisał Rafał, wejściem jest adres pamięci VIDEO w rejestrze HL. Wynikiem działania jest adres pamięci dla linii poniżej. Działanie na zasadzie y=y+1
Co do języków programowania, to w sumie może być każdy inny wysokiego poziomu, jak chociażby BASIC.
Po rozwiązaniu tego zadania, będzie kolejne. Mam nadzieję, że inni również się przyłączą do zabawy ;)
Gryzor:
Za malo danych wejsciowych do rozwiazania zadania :-)
To ma byc w C na ZXa czy w generycznie w Ansi C np.
unsigned int func(unsigned int x);
ja bym uzyl #def i przepisal w assemblerze :-)
Nawigacja
[#] Następna strona
Idź do wersji pełnej