forum speccy.pl
ZX Spectrum => PROGRAMOWANIE => Wątek zaczęty przez: KWF w 2020.07.22, 08:16:18
-
https://8bitworkshop.com/v3.6.0/?platform=zx&file=hello.asm# - różne platformy w tym ZX Spectrum
-
Koncepcja interesująca - sam o czymś podobnym myślałem, ale dałem sobie spokój bo uznałem, że całość jest średnio niewarta świeczki między innymi z powodów dla których to coś jak dla mnie jest bezużyteczne...
A jest, bo chyba nie rozumiem koncepcji działania... Piszę kod, on mi wywala błędy, poprawiam, błędy znikają i?... Klikam guzik "RUN" i nic się nie dzieje - dziwny emulator wydaje się działać i ignorować kod, który wpisałem. Robię w nim stosowne RANDOMIZE USR i... nic się nie dzieje... DISASSEMBLY pokazuje że kod chodzi gdzieś w ROMie albo pokazuje coś w RAMie... Przeglądać się nie da, bo ogranicza podgląd chyba do jednej strony i nie znalazłem metody na przejście pod inny adres.
Interesujący pomysł i może po dopracowaniu do czegoś się nada (może teraz też się nadaje, ale raczej nie do kodowania na Spectrum). Na razie traktuję w kategoriach ciekawostki ;)
A... I jeszcze assembler jest marudny - instrukcja nie może być zapisana "od brzegu" pliku - musi mieć wcięcie, od początku linii są tylko etykiety. Nie obsługuje REPT z pasmo, DB musi mieć wyłącznie bajty jako parametry itd. ;)
-
Ciekawa sprawa dla kogoś, kto chce sobie poklikać w asm albo w C w ramach ciekawostki. IDE w przeglądarce.
To się też nadaje do szybkich testów.
Przejrzałem też inne platformy - widać znacznie bardziej rozwiniętą 'infrastrukturę' oraz ilość przykładowych programów.
-
Wspomniany na githubie projektu assembler ZMAC jest drugim znanym mi assemblerem generującym listing z czasem wykonania.
I zapisuje .tap bez zbędnych kombinacji (oraz kilka innych formatów, głównie TSR80, amsdos, raw binary i intel hex)
Do zapamiętania :)
-
Nie obsługuje REPT z pasmo, DB musi mieć wyłącznie bajty jako parametry itd. ;)
.org 0x8000
test
rept 16
.db $10
endm
.db 0,1,2,3,'0123','@@@','@'+$40
1: - 8000 .org 0x8000
2: - 8000 test
3: - 8000 10101010 rept 16
10101010
10101010
10101010
6: - 8010 00010203 .db 0,1,2,3,'0123','@@@','@'+$40
30313233
40404080
(kompilowane przez zmac 'ręcznie')
-
Chodziło mi o REPT z dwoma parametrami.
A co do DB to problem jest po obu stronach. Po mojej, bo na szybko generowałem tablicę, która w pasmo się skompiluje, ale da nie taki wynik jak oczekiwałem. Po stronie 8bitworkshopa/zmaca podanie większej niż 8 bitów danej dla DB generuje błąd zamiast wygenerować po prostu młodszy bajt.
Nie neguję sensowności całego rozwiązania - oceniam po prostu, że to nie dla mnie ;)
-
Chodziło mi o REPT z dwoma parametrami.
Aaah. Tak. Ze zmienną (i ewentualnie wartością początkową/krokiem)
Nie korzystałem nigdy, więc co jakiś czas odkrywam na nowo :)
Po stronie 8bitworkshopa/zmaca podanie większej niż 8 bitów danej dla DB generuje błąd zamiast wygenerować po prostu młodszy bajt.
Który assembler tak robi?
-
pasmo
DB Define Byte. The argument is a comma separated list of string literals or numeric expressions. The string literals are inserted in the object code, and the result of the numeric expression is inserted as a single byte, truncating it if needed.
-
http://www.retroprogramming.com/2015/10/the-matrix-digital-rain-for-zx-spectrum.html
ten kod nie zadziałał tam
-
Tam, w sensie na stronie w pierwszego postu mógł nie zadzialac. Za to bez problemów zadziałał kompilując go np za pomocą pasmo.