1,601

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

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

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

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

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

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

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

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

(10 odpowiedzi, napisanych Bałagan)

Coś ściemniasz, hebanowy Pinku. ;)

1,610

(35 odpowiedzi, napisanych Miejsca w sieci)

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

1,611

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

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

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

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

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

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

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

1,617

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

(19 odpowiedzi, napisanych Emulacja - 8bit)

Inne DOSy sam rozszyfruj?

Polecam SpartaDOS we wszystkich odmianach. :)

1,619

(10 odpowiedzi, napisanych Bałagan)

Sprawdź to sobie na stronie poswięconej dyskietką.

W sprawach naprawy staci dyskiet trza udać się do najbliszego kościuła w celi poświęcenia strony dyskietom.[pisowania na modłę cytowanego powyżej forum]

Kasjo zapodał zajefajne forum. Chyba siem zapiszem, jest tam zresztom niejaki Pinokio. To nasz Pinokio tam jest?

<ROTFL2>

[ Dodano: 14.11.2004 12:47:40 ]
To się nazywa ciekawy temat. 1416 postów na temat "Co ugrzęzło w stacji dysków?"

1,620

(16 odpowiedzi, napisanych Emulacja - 8bit)

to nie zaimplementowałeś 816???

1,621

(20 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

Dobra, olać mangę. Fajny copyright: If you rip this from animebgx and put it on your own site you suck. :D

1,622

(16 odpowiedzi, napisanych Emulacja - 8bit)

emu_xl, czy jakoś tak na Falcona. Jak chcesz na grzybie, to odpalasz Aranyma (emu Flaszki), a na nim Emu XL (emul małego Atari). Dema raczej na tym nie pójdą, ale OS-a możesz przetestować.

1,623

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

Pewnie Atari z tym w obudowie Atari. :)

Pinek: obawiam się, że już nie przejdzie numer tupu: ldxy #text, jsr putline.

1,624

(20 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

A gdzie Ty tam widziałeś Japończyka. Toć to tam są dwie kobitki. Dodam, jescze, że Japonki mają duże i płaskie tyłki.

1,625

(20 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

PS na pocieszenie link do innego obrazka na który możecie sobie popatrzeć i pocieszyć wasze strapione oczka :>

Od razu widać, że japońce mają małe oczy, a japonki małe biusty, duże tyłki i krótkie nogi. I maja z tego powodu kompleks. :twisted: