1,551

(38 odpowiedzi, napisanych Zloty)

Wymagane ? co najmniej MyDOS.

A dlaczego akurat ten DOS?

1,552

(38 odpowiedzi, napisanych Software, Gry - 8bit)

Główne procedury systemu są wywoływane poprzez tablicę skoków. Oznacza to, że adresy ich są jednakowe we wszystkich wersjach Atari.

Jasne, że nie można winić Zientary za to, że książka, którą przepisywał zawiera błędy. ;) Zwróć uwagę, że mowa tu o głównych procedurach. Funkcje wskazywane przez wskaźniki zawarte w tablicy wektorów obsługi urządzeń nie są procedurami głównymi. Dostęp do nich wszystkich uzyskuje się przez skok do $E456. Dla operacji na pojedyńczych bajtach jest to jednak rozwiązanie najwolniejsze i dlatego stosuje się wektory pod $E400. Dla przykładu odczyt/zapis pliku na dysku:
wykonanie BGET #kanał, adres, długość spowoduje wywołanie przez główną procedurę CIO (tę w ROM-ie) procedury odczytu/zapisu pojedynczego bajtu przez sterownik dyskowy (czyli DOS). DOS sprawdza wtedy, czy rzeczywiście chodzi o jeden bajt, czy cały blok. Jeśli blok, to przeprowadza transmisję całości, a następnie poprzez modyfikację rejestrów systemowych oszukuje CIO tak, że ta myśli, że już wywołała Get/Put Byte odpowiednią ilość razy. Gdyby nie ta sztuczka, to byśmy sobie czekali i czekali. Nawet najszybszy twardziel niewiele by tu pomógł.

1,553

(19 odpowiedzi, napisanych Bałagan)

Hmm, głupia sprawa, bo pod Firefoksem wylatuje to co podaje Mikey, a w tym samym czasie pod IE otwiera się właściwa strona. Pewnie Microsoft wziął hostage na tę domenę i zmusił, by otwierała się tylko pod IE. ;)

1,554

(35 odpowiedzi, napisanych Miejsca w sieci)

Bo to dokładnie na tę modłę było i tworząc powyższe wzorowałem sie na przytoczonym przez Ciebie oryginale.

Tytlko tu k... nikt nie chce współpracować. :twisted:

1,555

(38 odpowiedzi, napisanych Software, Gry - 8bit)

Mówi się, że to co dla jednych zaletą, dla drugich wadą.

Zaletą jest dla ludzi mądrych - potrafią skorzystać, wadą - dla pozostałych. :twisted:

1,556

(38 odpowiedzi, napisanych Software, Gry - 8bit)

W Linii poleceń HiDOS'a chciałem zrobić obsługę np. historii poleceń, tylko że jeżeli użyję "E:", to bede ograniczony - nic niebede mógł robić jak OS'ROM czeka na naciśnięcie klawisza.

A co chcesz robić w tym czasie?

Pewnie ścigać się z userem. Czy user zdąży wcisnąć następny klawisz, czy ja szybciej zgadnę i wyświetlę na ekranie. :D

[ Dodano: 16.11.2004 15:45:26 ]
Casper: jak już Draco wspomniał, "legalna" jest nie tylko tablica skoków pod $E450, ale też parę innych rzeczy. Np. pamięć od $0000 - $05FF, $E000 - $E44F, $FFFA - $FFFF. ;)

Zientara zrobił błąd podając adresy procedur systemowych. Każdy myśli, że jak WZ napisał, to moż skakać do $Fxyz i zawsze będzie działać. :/

1,557

(35 odpowiedzi, napisanych Miejsca w sieci)

Nie jestem modem i inną nabjką, więc proszę pozotałych czytelników forum o nie pisanie więcej w tym wątku, gdyż postanowiłem go zamknąć, ale z powodu braku upraniwń nie mogę tego zrobić. Dlatego proszę o dostowsowanie się do mojego postulatu o nie pisanie więcej w tym wątku, gdyż wątek ten został zamknięty przeze mnie.

Dziękuje bardzo za współpracę i dostosowanie się do mojej prośby i nie pisanie już więcej w tym zamkniętym przeze mnie wątku. ;)

1,558

(6 odpowiedzi, napisanych Sprzęt - 8bit)

LDW 2000 ma gorszą mechanikę od CA 2001. I zdaje się, że to jedyna różnica pomiędzy nimi. Pomijając oczywiście wygląd zewnętrzny, cenę i zapewne wersję sterownika. :)

1,559

(35 odpowiedzi, napisanych Miejsca w sieci)

... żebym ja mial takie problemy.

Mogę się z Tobą podzielić. :twisted:

Współczesne procesory mają pewnie zapisane w sobue czym są. :) Takie informacje można zapewne wyciągnąć jakimś rozkazem lub grupą rozkazów. Ustalenie szybkości zegara odbywa się poprzez odpytanie chipseta o szybkość FSB i wielkość mnożnika. Sprawdzenie ilości pamięci tak samo. To są tylko przypuszczenia, bo aż tak się nie zagłębiałem. Nie sądzę, by sprawdzanie procesora polegało na testowaniu jakie rozkazy się wykonują, a jakie są nielegalne. Chociaż i to nie jest wykluczone, bo nie wszystkie modele CPU, na których może ruszyć Windows mają takie ficzery.

Widzę, że charakter forum z Atari 8-bit zmienił się na Windows logo and system properties in About box... :mrgreen:

1,560

(6 odpowiedzi, napisanych Sprzęt - 8bit)

Na zdjęciach jest 1050. Raczej nie przerobiona (tak tylko strzelam ;) ). Do tej stacji pasuje zasilacz od XF551 (stacja) i Atari 850 (4*RS232+Centronics).

1,561

(23 odpowiedzi, napisanych Scena - 8bit)

Co tam. Teraz jesteśmy starsi panowie, ale choć nie to zdrowie, choć szron na głowie, to w sercach ciągle maj. :D

1,562

(11 odpowiedzi, napisanych Bałagan)

r0l0, ciekawe co na to gościu co już dał >200. :mrgreen: - to pewnie jego mina.

1,563

(38 odpowiedzi, napisanych Software, Gry - 8bit)

proszę bardzo - wstaw sobie to do procki TeBe lub Lizarda - albo mojej

Akurat wszystkie moje przykłady (2 sztuki + poniższy) są z klikiem klawiatury.

I TO NAPISAŁA OSOBA, KTÓRA UŻYWA TYLKO LEGALNYCH I ELEGANCKICH SKOKÓW Z TABLICY SYSTEMU OPERACYJNEGO.

Proszę bardzo. Oto procedura korzystająca w sposób legalny z tablicy wektorów obsługi urządzeń i nawet z tablicy skoków:

getc ldx #'K
     jsr $E486   ; JNEWDEVC
     lda $031A,x ; HATABS
     sta $80
     lda $031B,x
     sta $81
     ldy #$05
     lda ($80),y
     pha
     dey
     lda ($80),y
     pha
     rts

Jeśli nie podoba Ci się każdorazowy skoko do JNEWDEVC, to pamiętaj, że HATABS jest w RAM-ie i w każdej chwili może być zmieniona (nawet w czasie działania programu, niezależnie od niego).

Funkcja działa dokładnie tak samo jak pierwsza przedstawiona przeze mnie.

Jeśli chcesz wiedzieć, to CIOLIB opisywane w Syzygy #7 korzysta z powyższej metody dla funkcji FGETC i GETC. Dla analogicznych FPUTC i PUTC są prostsze metody.

1,564

(175 odpowiedzi, napisanych Zloty)

I to akurat 40%. Pewnie na zlot przybędzie po spożyciu 95% i stwierdzi, że na 100% jest pijany. :mrgreen:

1,565

(35 odpowiedzi, napisanych Miejsca w sieci)

Nie wiem co zapisane jest w rejestrze, ale procesor i pamięć chyba nie. U mnie przy wyświetlaniu włąściwości systemu pojawia się całe okienko, a dopiero po dłuższej chwili namysłu procezsor, zegar i pamięć. Wygląda to tak, jakby testował za każdym razem ( :?: ).

Wersja systemu na pewno jest zapisana w rejestrze, ale nie wiem czy w postaci takiej jak jest pokazywana na ekranie. Może jest to kod wersji?

1,566

(38 odpowiedzi, napisanych Software, Gry - 8bit)

Wracając do tematu. Najlepsze motody opierają się na specyfikacji systemu i dlatego proponuję jeszcze jedną metodę odczytu klawiatury:

; Initialize reading
      ldx #$50    ; open IOCB for Keyboard
      lda #$03    ; IOCB open
      sta $0342,x ; ICCMD (char)
      lda #<kb.id
      sta $0344,x ; ICBUFA (ushort)
      lda #>kb.id
      sta $0345,x
      lda #$04    ; open for reading
      sta $034A,x
      jsr $E456   ; JCIOMAIN

;     ...
; some code here
;     ...

kb.id .by "K:" 0

; Keyboard reading
getc  ldx #$50
      lda #$07    ; IOCB get bytes
      sta $0342,x
      lda #$00
      sta $0348,x
      sta $0349,x
      jmp $E456

; Called by exit() function
kbcls ldx #$50
      lda #$0C    ; IOCB close
      sta #0342,x
      jmp $E456

Po wyjściu z GETC kod ATASCII znajduje się w akumulatorze.

Powyższą metodą będziemy mieli pewność, że klawiaturę poprawnie odczytamy zawsze, niezależnie od wersji systemu i jego położenia w pamięci (oczywiście pewne adresy muszą być zachowane, np. tablica skoków).

:!: Więcej :!:
:!: Jeśli ktoś przeniesie system operacyjny z Atari na Commodore, to powyższy kod ruszy bez żadnych zmian. :!:

[ Dodano: 15.11.2004 11:35:21 ]

(choc choroba nie mam clicka po nacisnieciu.... badam sprawe).

My Ci zawsze dobrze doradzimy. :) Przy mojej klik musi być!

1,567

(38 odpowiedzi, napisanych Software, Gry - 8bit)

Nie, by bym napisał DoS. To nie będzie podsystem obsługi dysków, ale system ładowany z dysku. Wyczuwasz, tę subtelną różnicę?

1,568

(38 odpowiedzi, napisanych Software, Gry - 8bit)

Yhh, to ja zaczynam czarno widzieć tego DOS-a...

A Ty myślisz, żę poco Casper pisze własne sterowniki do Twojego HDD? To nie będzie Dos, a dOS. :D

1,569

(38 odpowiedzi, napisanych Software, Gry - 8bit)

Tia. I bardzo uprościło Tobie i wielu innym wychodzenie z programu przez JMP $E474.


Rozumiem, że Twój post, to przyzanie się, że nie potrafisz korzystać z funkcji systemu operacyjnego? :oops:

1,570

(19 odpowiedzi, napisanych Emulacja - 8bit)

Jurgi: make me understand, co takiego ma w sobie 2.0f czego nie ma 2.0, że go tak bardzo polecasz?

1,571

(10 odpowiedzi, napisanych Bałagan)

Coś ściemniasz, hebanowy Pinku. ;)

1,572

(35 odpowiedzi, napisanych Miejsca w sieci)

No tak, tak często z tego korzytam, że aż zapomniałem, że obrazek jest pod monitorem. ;)

1,573

(38 odpowiedzi, napisanych Software, Gry - 8bit)

lda $d20f - bit 3 skasowany, znaczy ze wciśnięto jakiś klawisz.
and #$04
eor #$04
beq *+4 - jeśli nie naciśnięto to powrót z podprocedury

I żeś babola strzelił, bo nie bit trzeci, tylko drugi. I po co to EOR #$04? Po wciśnięciu klawisza:$D20F = $FB; potem AND #$04 i akumulator = 0; EOR #$04 sprawi, że akumulator = 4 i BEQ nie skoczy, a procka wyjdzie jakby klawisz nie był wciśnięty. Nie żebym się czepiał, ale pamiętam, że błędy w przykładach bardzo utrudniały mi kiedyś naukę asma. ;)

hmmm... - użyteczne przy własnych procedurach, jeśli mam kod w pamięci RAM pod ROM'em - a ja z tego nagminnie kożystam Very Happy

Niom, i tylko wtedy, choć jest prosty sposób na przełączanie ROMu na RAM  i z powrotem bez ryzyka padu kompa. Opis w Syzygy #7.

Generalnie jestem zwolennikiem korzystania z tego co oferuje system: ˇ po co wyważać otwarte drzwi
ˇ system zrobi to samo co my, i to bez pisania dodatkowego kodu (vide 1)
ˇ system jest sprawdzony i raczej trudno natrafić na błąd (vide 1)
ˇ system, wbrew opini Krógera, nie jest po to by go olewać, bo vide 1

1,574

(35 odpowiedzi, napisanych Miejsca w sieci)

Jurgi ma rację. Logo i dane o licencji można ustawić w rejestrze, każdy WinTweaker to potrafi, ale wersję systemu, zegar i ilość pamięci raczej fotchłop lub inny pain.

1,575

(38 odpowiedzi, napisanych Software, Gry - 8bit)

Masz jmp a nie jsr, więc powrót nastąpi za miejsce, w którym napiszesz jsr gets. ;)

     jsr gets
     bmi error     ; tutaj wróci jmp $E456 z GETS
     ...
gets ldx #$00     ; kanał #0
     ...
; tutaj procedurka podana wcześniej
     jmp $E456    ; GO ;) 

BMI ERROR nie wzięło się przypadkowo, bo gdy nastąpi błąd lub user wciśnie Break, to znacznik N będzie ustawiony, a rejestr Y będzie zawierał numer błędu (w przypadku uzycia klawisza Break - 128, $80). Dodatm tylko, że wszystkie systemowe numery błędów są większe od 127 (mają ustawiony najstarszy bit) i są zwracane w rejestrze Y.