1,176

(27 odpowiedzi, napisanych Programowanie - 8 bit)

Sikor napisał/a:

4. Przy zachwalaniu Sparta DOS X padło stwierdzenie, że "Turbo Basic XL jest c**y, bo nie działa BGET, BLOAD itp pod tym systemem - nie wiem jak pod XBiosem, ale dla mnie to jest argument, że raczej Sparta jest c**a, bo TB XL jest - o ile mi wiadomo TB XL jest starszy, więc jak dla mnie - to sparta jest niedopracowana.

BGET działa. Natomiast prawdą jest, że nie działa BLOAD/BRUN. Długi czas myślałem, że to wina TBXL. Ale okazuje się, że to jednak wina SDX, która nigdy nie zwraca statusu $03, bo ICD olało w tym jednym punkcie specyfikację Atari (być może po prostu to przegapili). Istnieją dwa programy na krzyż od tego zależne i TBXL jest jednym z nich, a objawem jest niedziałanie - konkretnie wieszanie się - BLOAD (i BRUN). TBXL się zapętla, bo przy odczycie pliku jakże mądrze czeka na Y=$03 zamiast na EOF.

Słowem, jeśli ktoś użył gdzieś takiego argumentu, jak przytaczasz, to nie miał racji. Jestem w tej chwili w trakcie poprawiania driverów SDX i jest nadzieja, że SDX 4.46 będzie miała ten - zbędny moim zdaniem, ale niestety już wymyślony - ficzer.

Tym bardziej, że pod innymi dosami (nie wiem jak pod spartą 3.30 - plikową, pod resztą dosów które próbowałem oprócz MyDOSa) działa bez zarzutu

Pod Spartą plikową TBXL nie działa wcale, bo ten DOS zajmuje pamięć pod ROM-em. Ale gdyby działał, byłoby to samo.

Nie zmienia to faktu, że problem sam w sobie jest łatwo obejść: http://atariki.krap.pl/index.php/BINARY_LOAD

1,177

(17 odpowiedzi, napisanych Programowanie - 8 bit)

nosty napisał/a:

HA! Dodanie SEI pomoglo.

Dodalem juz po inicjalizacji wszystkiego i po wykonaniu pierwszego VBLI, kiedy wszystkie cienie zostaly przepisane.
Dalej w kodzie juz nie uzywam zapisu do cieni wiec dziala.

Zjawisko zniknelo.

A to ciekawe. Jest jeszcze jedna możliwość: chwilowa blokada NMI przez IRQ klawiatury http://atariki.krap.pl/index.php/6502#B ... zerwaniami Może jeśli wstrzelisz się w odpowiedni moment, to opuszczenie jednego DLI (albo jednego VBL-a) dałoby taki efekt?

1,178

(17 odpowiedzi, napisanych Programowanie - 8 bit)

nosty napisał/a:

Cholera... musze sie jeszcze duzo nauczyc. Nie wiem jakiego VBLI uzywam, nie wiedzialem ze sa rozne :/
Ustawiam jak nizej, inaczej nie umiem:

       ldy #<vbli
       ldx #>vbli
       lda #$06
       jsr jsetvblv
       lda #64 
       sta NMIEN

To jest OK (VBL natychmiastowe). Tylko że jak dasz SEI, zostaje (oprócz przerwań IRQ) wyłączona jeszcze druga faza VBL, tzw. opóźniona. To ona kopiuje do rejestrów I/O rejestry-cienie. Zgadywałbym, że dlatego ci to nie chce działać po SEI, bo pewnie wpisujesz adres DL do cieni, dajmy na to.

Daj SEI po zainicjowaniu wszystkiego, albo ładuj dane bezpośrednio do rejestrów scalaków.

1,179

(17 odpowiedzi, napisanych Programowanie - 8 bit)

Ad sei: czy VBL-a używasz tzw. "opóźnionego"? Jeśli tak, to faktycznie, z SEI nie zadziała. Przewieś procedurę VBL na wektor natychmiastowy. Acz problem jest raczej sprzętowy, zatem to tylko tak na wszelki wypadek.

1,180

(17 odpowiedzi, napisanych Programowanie - 8 bit)

Gdybym miał zgadywać, to pojawiają się jakieś syfy na sygnałach gniazda kartridża, które twój wynalazek interpretuje jako dodatkowe odczyty. Może to znowu nieśmiertelny problem z fi2.

1,181

(17 odpowiedzi, napisanych Programowanie - 8 bit)

Daj SEI na początku programu, zablokuje to przyjmowanie przerwań klawiatury. Jeśli zjawisko dalej będzie występowało, to znaczy, że nie powoduje go OS.

1,182

(17 odpowiedzi, napisanych Programowanie - 8 bit)

nosty: a co się stanie, jeśli "pamięć obrazu" przesuniesz z $d500 na $d580? Możesz zrobić taki eksperyment? Czy efekt wtedy też wystąpi?

Poza tym przydałyby się dodatkowe informacje: czy np. gra czeka na naciśnięcie klawisza, czy używa do tego OS-u, czy przerwania IRQ są włączone itp. Tak na oko, to OS sam w sobie przynajmniej nie czyta $d5xx przy obsłudze klawiatury, bo nie ma po co. On tej strony zresztą w ogóle raczej nie dotyka.

1,183

(60 odpowiedzi, napisanych Fabryka - 8bit)

No wypadałoby, wtedy twoje "zejdźże" miałoby odpowiednie umocowanie w rzeczywistości.

1,184

(60 odpowiedzi, napisanych Fabryka - 8bit)

Ke? Czy ja coś napisałem o "dzonie"?

1,185

(60 odpowiedzi, napisanych Fabryka - 8bit)

Uaktualnienie do wersji 1.17:

http://drac030.krap.pl/pl-inne-pliki.php

Wersji 1.16, jak widzę, zapomniałem zaanonsować, przez co połowa użytkowników programu ;) mogła ją przeoczyć. Zaanonsuję teraz: ogólnie poprawiłem dwa błędy w PC-Linku oraz dorzuciłem zwracanie statusu $03 jakże nam wszystkim potrzebnego.

1,186

(22 odpowiedzi, napisanych Programowanie - 8 bit)

To nie jest takie straszne, jak wygląda na pierwszy rzut oka, idzie się przyzwyczaić. Ale na początku są trudności :)

1,187

(22 odpowiedzi, napisanych Programowanie - 8 bit)

laoo: nie taki format miałem na myśli, kod, który jest sam z siebie position-independent, nie potrzebuje żadnego specjalnego formatu. Raczej chodziło mi o coś w rodzaju tego, co jest opisane w instrukcji od madsa - czyli niby jest, nie wiem tylko, na ile to praktyczne i przetestowane (z binariami SDX mads miewał jazdy).

1,188

(22 odpowiedzi, napisanych Programowanie - 8 bit)

laoo/ng napisał/a:

O nagłówku $FBFB dobrze wiedzieć. Szukałem czegoś takiego. Sprawdziłem i działa poprzez dodanie nagłówka z dwoma 24-bitowymi adresami do każdego bloku. Aczkolwiek wydaje mi się, że adres końca wystarczyłby 16 bitowy, ale to już szczegół.

816 co prawda nie przejedzie kodem przez granicę 64k, ale zawsze przecież można mieć w jednym bloku 64k kodu i 64k (albo więcej) danych. Więc nie jest to tak kompletnie nieprzydatne.

Przydałby się też format niezależny od położenia w pamięci, żeby można było załadować coś nie na rympał, ale tam, gdzie akurat jest wolne miejsce. To jest jeszcze do wymyślenia.

Czy mamy ten format ($FBFB) zaimplementować w SDX?

1,189

(22 odpowiedzi, napisanych Programowanie - 8 bit)

Jak pisze syscall, wiele rzeczy zostało już wymyślone, wystarczy poczytać dokumentację, zamiast kolejny raz przebijać się przez ścianę obok otwartych drzwi.

lda.b $00 = lda <$00

lda.w $00 = lda !$00

lda.l $00 = lda >$00

Z tego oczywiście pierwszy i ostatni przykład jest nie do zastosowania w madsie, jak mi się zdaje, bo tebe strzelił sobie w stopę przyjmując z rzyci wyciągniętą składnię QA za "standard".

Co do skoków JSL, wystarczy 24-bitowe adresowanie etykiet, które ma już MAE. Dużo gorszy jest brak zunifikowanego systemu ładowania czegokolwiek do wysokiej pamięci, kod i dane trzeba przepisywać i ewentualnie relokować "ręcznie", co jest uciążliwe. Natomiast format pliku sam w sobie istnieje, wzmankowany jest np. tutaj http://atariki.krap.pl/index.php/COM#AlfAssembler - nb. ten cały AlfAsm też może być jakimś punktem zaczepienia, jakkolwiek nie używałem go nigdy.

Że 65C816 z wiadrem fastu to "nie Atari", to się zgodzę - na pewno nie jest to Atari jakie znamy. Techniki programowania są zupełnie inne, i mnie się to akurat podoba, bo pokazuje to inną stronę procesorów 65xx, i czegoś trzeba się nauczyć, zamiast mielić w kółko te same zgrane od 30 lat schematy, ale też inne fajne rzeczy można robić (albo te same, tylko inaczej).

1,190

(6 odpowiedzi, napisanych Sprzęt - 16/32bit)

http://atariki.krap.pl/index.php/6850

1,191

(6 odpowiedzi, napisanych Programowanie - 8 bit)

Tak, to niekonsekwentne. Możesz poprawić.

1,192

(259 odpowiedzi, napisanych Fabryka - 8bit)

Ja to i owo piszę na PC i nie widzę specjalnej różnicy, poza tym, że program zasemblowany na Atari można uruchomić natychmiast, natomiast taki na piecu trzeba albo przesłać kabelkiem, albo odpalić emulator, co ani wygodne jak dla mnie nie jest, ani specjalnie szybkie. Pominę, że dobry pecet wstaje kilka minut no i nie znam żadnego kartridża, dzięki któremu można byłoby na nim kodować z marszu.

Jeszcze trochę i minie ćwierć wieku, jak sobie hobbystycznie programy w asmie pisuję większe, mniejsze i całkiem malutkie, i jakoś przez cały ten czas tych mitycznych, miażdżących przewag krossdewelopki na pececie (albo ST, gdzie był fajny krosasm OurSoftów, udający MAC-a/65) nie zdołałem zauważyć. Być może dlatego, że niezbyt rozumiem, do czego komu debugger ;)

Owszem, na Atari jest ciężko kodować, jak się ma tylko magnetofon, doświadczyłem tego osobiście. Dlatego też kupiłem sobie stację, potem "zorganizowałem" twardy dysk, potem dorzuciłem VBXE. Teraz jedyny niedostatek, jaki odczuwam, to brak czasu na napisanie sobie każdego narzędzia, jakiego mi na Atari brakuje :P

Dobra, dość tego offtopu, bo nas nosty pogoni (albo, co gorsza, dely).

1,193

(259 odpowiedzi, napisanych Fabryka - 8bit)

@gorgh: Ale ja biorę _wygodę_ pod uwagę: nie napisałem, że na Atari "można kodować", tylko że "można WYGODNIE kodować". I również z marszu, u mnie atari jest "gotowe do kodowania" jakieś 15 sekund od włączenia zasilania (licząc włącznie z czasem potrzebnym na wczytanie MAE).

1,194

(15 odpowiedzi, napisanych Zloty)

Jak dla mnie może być Dekanta.

1,195

(259 odpowiedzi, napisanych Fabryka - 8bit)

nosty napisał/a:

Dziwaczny pomysl w dzisiejszych czasach :)

Dziwaczny może dlatego, że w sumie na Atari już teraz można wygodnie kodować, wprawdzie nieco rozszerzonym (VBXE dla 80 kolumn tekstu, twardy dysk, SDX), ale chyba po to się właśnie montuje rozszerzenia? MAE ma bardzo wygodny edytor i szybki kompilator (nie tak szybki jak MAC/65, ale wystarczająco), nie mówię, że wszystko, ale sporo da się zrobić na Atari, a tego, czego się nie da, częściowo nie da się nie z powodu obiektywnej "niemożności", tylko z braku odpowiednich narzędzi.

Ale takimi samymi wydają mi sie edytor tekstow na male Atari (chocby najlepszy) czy nawet uzywanie slawetnej Sparty. Bo mimo zamilowania do Atari ciezko mi przychodzi uwierzenie ze ktos na tym sprzecie rzeczywiscie _pracuje_ ;)

Podchodząc maksymalistycznie, pewnie "w dzisiejszych czasach" nie da się "pracować" - jeśli przez "pracę" rozumiemy prowadzenie księgowości dużej firmy, napisanie habilitacji, montaż audio-video i co tam jeszcze ludzie na komputerach dzisiaj robią. Ale przy wykorzystaniu tych narzędzi, które istnieją, można spokojnie "pracować" w zawężonym, ośmiobitowym, kanciastym, pikselowym, brązowo-fioletowym mikro-sensie o rozdzielczości 3x5. Przykład: piszę program pod MAE, testuję go na Atari (bo i gdzie indziej), potem pod Last Wordem piszę doca, z całości robię paczuszkę *.ARC przy użyciu ARC.COM pod SDX, a pecet służy mi tylko do tego, żeby to ewentualnie wrzucić do internetu.

Da się? Da się. Dziwaczne? Nie :P

1,196

(27 odpowiedzi, napisanych Programowanie - 8 bit)

wieczor napisał/a:

przy odpowiednim zaplanowaniu można wyobrazić sobie szeregową sieć na wiele atarek połączonych w pierścień. Jak "wiele" to niestety przepustowość SIO określi :)

Bardzo dawno temu - w 1988 roku albo 1989? - widziałem na wystawie w Pałacu Kultury pokazową sieć zestawioną z kilkunastu atarek. To było pod hasłem "Atari dla szkoły" czy coś takiego, że niby konkurencja dla Elwro 800 Juniora (z jego Junetem), toteż całość ekspozycji udawała klasę szkolną, jeden komputer nauczycielski i ileś uczniowskich. Całość została przygotowana przez PZ Karen, ale na żadną prezentację się nie załapałem, więc nie wiem, czy i jak to działało. No i więcej o tym nie słyszałem.

Może jer by coś na ten temat wiedział?

1,197

(9 odpowiedzi, napisanych Bałagan)

Może:

mount -t msdos /dev/fd0 katalog

gdzie 'katalog' to katalog, w którym będzie widać pliki znajdujące się na dyskietce.

Zamiast 'msdos' możesz musieć podać 'msdosfs'.

Do formatowania nie potrzebujesz dyskietki montować, wystarczy ją włożyć do stacji i zadać:

fdformat -f 720 /dev/fd0

Powinno pójść (mimo że komendy są z FreeBSD, a nie Linuxa). Potem jeszcze (zapomniałem) będziesz potrzebował zainicjować system plików, np. tak:

newfs_msdos /dev/fd0

I dopiero jak to się uda, możesz montować.

1,198

(126 odpowiedzi, napisanych Fabryka - 8bit)

Tebe, z całym szacunkiem, gdybym chciał używać chorej składni QA, wybrałbym inny asembler.

1,199

(126 odpowiedzi, napisanych Fabryka - 8bit)

Coś, co wygląda na błąd w madsie. Program przykładowy:

;
LINES = 20

          org $80

dupa    .ds 2

          blk reloc main

start     lda #<(LINES-1)*40
          sta dupa
          lda #>(LINES-1)*40
          sta dupa+1
          rts

Program powinien obliczyć wartość (LINES-1)*40 = 19*40 = 760, oraz umieścić ją jako młodszy i starszy bajt pod adresem "dupa" i "dupa+1".

Przy próbie asemblacji wyskakuje komunikat:

start   lda #<(LINES-1)*40
dupa.s (10) ERROR: Value out of range

Tymczasem Value nie jest out of range, bo operatory '<' i '>' są (albo: powinny być) brane pod uwagę jako ostatnie. Powinno mu zatem wyjść $F8 z pierwszego wyrażenia i $02 z drugiego (mł. i starszy bajt wartości $02F8 = 760).

Ale to nie koniec.

Powyższy program poprawiamy tak, żeby się kompilował, tzn. w linii, gdzie wyskakuje błąd, dodajemy nawiasy:

;
LINES = 20

          org $80

dupa    .ds 2

          blk reloc main

start     lda #<((LINES-1)*40)
          sta dupa
          lda #>(LINES-1)*40
          sta dupa+1
          rts

Błąd nie wyskakuje, co dziwne, bo powinien się pojawić dokładnie taki sam dwie linijki niżej. Listing:

mads 1.9.4
     1                          ;
     2 = 0014                   LINES = 20
     3
     4                                  org $80
     5
     6 = 0080                   dupa    .ds 2
     7
     8 0082 FE FF 01 00                 blk reloc main
     9
    10 0000,0009> A9 F8         start   lda #<((LINES-1)*40)
    11 0002 85 80                       sta dupa
    12 0004 A9 00                       lda #>(LINES-1)*40
    13 0006 85 81                       sta dupa+1
    14 0008 60                          rts

Pierwsza linijka skompilowała się dobrze, jest LDA #$F8. Co do drugiej, co prawda komunikatu o błędzie nie ma, ale kod jest zły, bo zamiast LDA #$02 w kodzie wynikowym jest LDA #$00.

1,200

(1 odpowiedzi, napisanych Software, Gry - 16/32bit)

Cześć

Czy ktoś mógłby mi zdradzić, jakie wartości ustawia ST w pierwszym bajcie bootsektora dyskietki? Zdaje się, że jest tu różnica pomiędzy TOS-ami (od TOS 1.4 było chyba inaczej?), w każdym razie gdyby ktoś mógł podać te wartości dla dyskietek świeżo sformatowanych pod TOS 1 (tu może z podziałem na wcześniejsze od 1.04 i późniejsze odeń), 2, 3 i 4, to byłbym wdzięczny.

Wygóglałem, że ten bajt powinien mieć wartość $60, ale coś mi się mgliście przypomina, że na dyskietkach formatowanych w Falconie było tam coś innego.