1

(7 odpowiedzi, napisanych Programowanie - 8 bit)

Drac, chyba pisaliśmy w tym samym czasie :P

2

(7 odpowiedzi, napisanych Programowanie - 8 bit)

Dzięki za pomoc, problem się rozwiązał. Jak to zwykle bywa rozwiązanie było proste - emulator musi pamiętać obraz dyskietki gdzieś w pamięci i dopiero po jej odłączeniu bądź wyłączeniu emulca zapisuje dane do .ATR :D

3

(7 odpowiedzi, napisanych Programowanie - 8 bit)

Nie chodzi o to, że zapisuje się coś innego tylko o to, że nic się nie zapisuje. Tą procedurkę mam skompilowaną do pliku .XEX. Podłączam plik .ATR do emulatora jako stację D1: (alt+1) po czym wykonuję plik .XEX (alt+X). Podglądam plik .ATR i widzę zapisane dane. Po kolejnym wykonaniu pliku .XEX emulator tak samo pokazuje, że stacja pracuje, ale właśnie wtedy plik pozostaje niezmieniony. Nie chodzi o to, że dane są te same, bo w procedurze nic nie zmieniłem, ale o to, że dane już nie są zapisywane. Wiem to po dacie modyfikacji pliku, ale dla pewności pomiędzy 2 wykonaniami tego XEX'a podmieniłem plik .ATR na "czysty" i taki pozostał :-(. Dopiero restart emulatora pozwala znów zapisać te dane na dysk.

4

(7 odpowiedzi, napisanych Programowanie - 8 bit)

Czy ktoś może mi pomóc w zakodowaniu zapisu na dyskietkę? Korzystam z procedury JSIOINT pod $E459. Z odczytem jest wszystko OK pod warunkiem, że w emulatorze Atari800Win Plus 4.0 jest włączona opcja SIO patch. Kiedy emulacja stacji dysków pracuje z rzeczywistą prędkością mogę czekać w nieskończoność i nic się nie załaduje.
Większy problem jest z zapisem. Wykonuję program wg kodu:

lda #$31
sta $0300
lda #$01
sta $0301
lda #$50
sta $0302
lda #$80
sta $0303
lda <$4000 ;zapis obszaru od $4000
sta $0304
lda >$4000
sta $0305
lda #$08
sta $0306
lda <$100 ;długośc bloku 256 bajtów
sta $0308
lda >$100
sta $0309
lda <$ff ;zapis na sektor nr 255
sta $030a
lda >$ff
sta $030b
jsr $E459

Po skompilowaniu programu dane zapisują się tylko za pierwszym razem. Przy kolejnych próbach plik .atr się nie zmienia. Sprawdzałem datę modyfikacji i dane w miejscu tego sektora.
Dyskietkę stworzyłem programem MakeATR jako DD (720 sektorów po 256 bajtów)