1,551

(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,552

(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,553

(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,554

(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,555

(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,556

(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,557

(11 odpowiedzi, napisanych Bałagan)

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

1,558

(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,559

(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,560

(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,561

(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,562

(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,563

(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,564

(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,565

(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,566

(10 odpowiedzi, napisanych Bałagan)

Coś ściemniasz, hebanowy Pinku. ;)

1,567

(35 odpowiedzi, napisanych Miejsca w sieci)

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

1,568

(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,569

(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,570

(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.

1,571

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

I jeszcze jedno do KBCODES (764 - $02FC). Jak już zrobisz:

lda $02FC ; 764

i zapragniesz mieć z tego ATASCII, to zrób jeszcze to:

tay       ; kod klawisza nadal w akumulatorze
lda ($79),y

Pod adresem $79 (KEYDEFP) jest adres tablicy konwersji kodów klawiatury na ASCII.

Metoda podana przez TeBe jest ok, ale nie jest tak elegancka jak moja, no i nie będziesz miał tego ładnego kliku wciśniętego klawisza. :mrgreen:

1,572

(39 odpowiedzi, napisanych Bałagan)

Mam więcej takich ciekawostek historycznych - np czy wiecie, że przy produkcji 'dość masowej' pierwszych automatów 'na monetę' PONG pracowali hipisi i jarali grass? A Bushnell im na to pozwalał

Tia, ale to były bardzo wadliwe automaty i często się psuły. A dlaczego, niech ktoś inny dopisze, bo tę historię wszyscy znają, podobnie jak to, że różnice kapitału początkowego wahają się od $50 do $500 w zależności od wieku opowiadającego. ;) A założycieli było trzech. :p

1,573

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

Ty się nie pytaj jaki bug, ty się pytaj kiedy service pack. :->

1,574

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

Jak najprosciej i najbardziej poprawnie czytac klawiature? Dajcie wskazowke bo nie chce sie na slepo zapedzic w jakis zalulek bez wyjscia i stracic 3 dni pracy.

Najprościej:

getchar lda $E425
        pha
        lda $E424
        pha
        rts

Wywołujesz prockę poprze JSR GETKEY i dostajesz kod ATASCII w akumulatorze. Kod otrzymujesz w ten, a nie inny sposób, ponieważ adresy w tablicy wektorów procedur obsługi urządzeń zmniejszone są o jeden, czyli świetnie nadają się do umieszczenia na stosie i wywołania przez RTS.

Gdybyś chciał odczytać łańcuch znaków, to robisz to tak:

gets ldx #$00     ; kanał #0
     lda #$05     ; rozkaz get line dla CIO
     sta $0342,x
     lda #<str    ; adres bufora na linię
     sta $0344,x
     lda #>str
     sta $0345,x
     lda #<strlen ; długość linii
     sta $0348,x
     lda #>strlen
     sta $0349,x
     jmp $E456    ; GO ;)

Kanał #0 jest zawsze otwarty dla programów i obsługuje standardową konsolę :lol: (urządzenie E: otwarte dla wejścia/wyjścia, czyli klawiatury/ekranu). Długość linii, wbrew obiekowym opiniom, lepiej podać dokładnie (niektórzy wpisują tylko starszy bajt, tak, by wartość 16-bitowa pod $0348 była różna od zera). Pozwoli to ustrzec przed modnym ostatnio błędem przepełnienia bufora. ;) W zasadzie nie ma możliwości wpisania jdnorazowo tekstu dłuższego niż 120 znaków (jedna linia logiczna - 3 linie ekranu).

Ad.2 Mógłbyś sprecyzować dokładniej. Nie bardzo łapię o co chodzi. :idea:

1,575

(19 odpowiedzi, napisanych Emulacja - 8bit)

Inne DOSy sam rozszyfruj?

Polecam SpartaDOS we wszystkich odmianach. :)