1

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)

2

Co to znaczy "przy kolejnych próbach'?
Jesli ponownie wywołujesz ta sama procedure ktora tu wkleiles to niby czemu ma sie zapisywac cos innego skoro caly czas zapisujesz to samo do tego samego sektora?

Pokaz co robisz pomiedzy kolejnymi wywolaniami tej procki wtedy moze cos bedzie mozna powiedziec

3

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

no dopsze, ale wykluczyles emulator?

sprawdz jeszcze dla pewnosci pod altirra - moze nie jest problem po twojej stronie

przechodze na tumiwisizm

5

Chyba znam ten objaw. Emulec a800win zapisy do plików ATR jakoś buforuje, dlatego można się naciąć mając ten sam plik podpięty jednocześnie do emulatora na pececie oraz do Atari przez kabelek. Tego, że plik został poprawnie "uaktualniony" po zapisie spod emulatora, można być pewnym dopiero po tegoż emulatora zamknięciu.

Bez tego np. kopiujemy plik binarny DOS-em pod emulatorem na plik ATR, a przy próbie odczytu tego pliku z tego ATR-a na Atari dostajemy "not binary file" :P

KMK
? HEX$(6670358)

6

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

7

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

8

Podobnie robi aspeqt. Ale tu to jawnie widać.