1,101

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

Kod:
nbnks    = 29

    lda (dosvec),nbnks


Lizard, od kiedy istnieje taki tryb adresowania?

No co Ty!? Nie znasz trybu pośredniego z przesunięciem. ;)

Jext_on ustawia bank xxxx00xx

Tak, dokładnie. bity 2 i 3 musisz już sobie sam ustawić. Jedna tylko uwaga: jeśli Sparta pracuje w trybie Banked, to siedzi w banku xxxx11xx należącego do ostaniej grupy w T_.

Teoretycznie offset -$156 oczywiście może się zmienić w przyszłej oficjalnej wersji (ale nie w 4.30 ).

Też szukałem jakiejś zależności pomiędzy i pewnie bym ją znalazł, gdy właśnie nie fakt, że może się to zmienić z przyszłości.

1,102

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

Wektora DOSINI nie zmieniasz. DOSINI dotyczy procedury Reset, czyli wciśnięcia klawisza, lub skoku do $E474, lub $E477. Procedura Reset ustawia wszystko sama bez pomocy użytkownika. Byłoby to wygodne rozwiązanie zakończenia programu, gdyby nie fakt, że przy okazji inicjowane są na nowo wszystkie urządzenia. A to jest już czynność co najmniej niepożądana.

Wektora DOSVEC również nie dotykasz, gdyż jest to wektor procedury powrotu do DOS-u po zakończeniu programu. Wszystkie przywrócenia systemu do stanu pierwotnego wykonujesz przed skokiem przez DOSVEC.

[ Dodano: 06.05.2005 10:20:26 ]
W SpartaDOS od 4.18 do 4.20 tablica T_ siedzi pod adresem $0902, w 4.21 i 4.22 pod $904. Niezależnie od wersji dla Atari XL/XE 4 bierwsze bajty są równe zero. Od biedy można przyjąć, że T_ zaczyna się od czterech zer. Jeśli są one pod $0902, to pod tym adresem jest właśnie początek T_, a jeśli pod $0904, to adresem jest $0904. :)

Przy czym, jest to NAJGORSZE rozwiązanie z możliwych! Ale niestety najprostsze. Nie jest powiedziane (a nawet jest pewne), że w kolejnych wersjach SDX adres nie ulegnie zmianie.

Niestety, jedynym dojściem do T_ jest odwołanie do symbolu, a jego położenie jest zmienne. Problem da się jeszcze obejść w dość prymitywny sposób:

dosvec   = $0a
jext_on  = $07f1
jext_off = $07f4

portb    = $d301
nbnks    = 29

    lda (dosvec),nbnks
    beq nom
    lsr
    lsr
    pha
    tax
lp0 clc
    adc #4
    jsr jext_on
    lda portb
    sta banks,x
    jsr jext_off
    sbc #1
    dex
    bpl lp0

    pla
    tax
    lda #$ff
lp1 and banks,x
    dex
    bpl lp1
    eor #$ff
    clc
    rts
nom sec
    rts

Po takim zabiegu znacznik C=0 informuje, że jest dodatkowa pamięć, dla której bity przełączające ustawione są w akumulatorze (1), a grupy banków zapisane są w Twojej tabeli banks (można ją rozszerzyć do ogólnie stosowanej postaci). Jeśli C=1, to oznacza, że albo nie ma dodatkowych banków, albo wszystkie są zajęte (co na jedno wychodzi).

[ Dodano: 06.05.2005 10:40:46 ]

Lizard, jesli sie zgodzisz, to chetnie zastosuje w programie Twoja procedure

Po to je tu zamieszczam, by każdy chętny mógł z nich skorzystać, a nie tylko podziwiać. ;)

1,103

(7 odpowiedzi, napisanych Bałagan)

Jak kupisz monitorotelewizor zaoszczędzić pewnie trochę miejsca, ale jak Ci padie, top stracisz i TV i monitor. ;)

Poza tym, chyba 19" jest fajniejsze do 17".

1,104

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

pod warunkiem, że dysk 3,5" (karin) wejdzie do stacji 5,25" (TOMS). W sumie dyski 3,5" są nieco mniejsze

Jak jest niejszy, to chyba wejdzie bez problemu. Gorzej większy wsadzać w mniejszy. No ale, jak sie popieści, to się wszystko zmieści. :twisted:

1,105

(16 odpowiedzi, napisanych Miejsca w sieci)

Bez CSS, bez pustego obrazka (images/font2dta_05.gif)

This Page Is Valid HTML 4.01 Transitional!

Poprawnie wyświetla się w FF 1.0.3 i IE 6. Więcej nie sprawdzałem, ale nie sądzę, by coś było nie tak.

P.S.
Nic dziwnego, że strony poprawnie się wyświetlają tylko pod przeglądarką łebmajstra, gdy podchodzi się do tego jak do scenowego kodowania. :evil:

[ Dodano: 05.05.2005 12:59:47 ]
Co by było śmieszniej. Strona rozjeżdża się gdy w DTD wstawi się "Strict" zamiast "Transitional". Nie mnie jednak jest to "Transitional", a nie "Strict". :)

1,106

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

A wydawało się, że wyjście do dosa - to taka prosta rzecz

To jest akurat prosta rzecz. Tyle, że wątek wyewoluował na inny temat. ;)

1,107

(7 odpowiedzi, napisanych Bałagan)

Lizard - jest tam kto ??

Jestem, jestem. Mogę się tym zająć, wpierw musze jednak wsadzik kabelek do zasilacza stacji, sie mi bo kiedyś oberwał. :?

1,108

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

XF551 i TOMS traktują dyskietki w ten sam sposób, najpierw ścieżki na jednej stronie, potem na drugiej. Karin zdaje się obrabiała ścieżkę po obu stronach, a potem przechodziła na następną. Nie wiem jak SN, ale zdaje się, że tak samo jak XF i TOMS.

1,109

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

Zapomniałeś jeszcze do DOS-ie XE. ;) Ale czy ktoś go używa? Niemniej istnieje, więc i jego należy uwzględnić. Na szczęście separatorem katalogów również jest ">".

Aha, DOS XE nie nadaje sie do użycia w twardym dyskiem, chociaż jego file system obsługuje "duże" dyski (nie paamiętam, czy 16 MB czy mniej).

1,110

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

Tak, ale napisałeś to jako przypuszczenie, a ja przejrzyście naświetliłem temat. ;)

Z QA problem rozwiążałem kategorycznie - nie używam. :D Do Panthera z koleji naisałem krótki "skrypt" odpalany zamiast programu:

cd b:applspanther
x b:applspanther

Z tym, ze chyba kazdy w zmiennej 'path' w Sparcie ma biezacy katalog...

Katalog bieżący zawsze jest sprawdzany na końcu. Chyba, że się go dołączy gdzieś w środku lub na początku PATH. (W przeciwieństwie do takiego za przeproszeniem MS-DOS-a, gdzie katalog bieżący sprawdzany jest przed PATH.)

1,111

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

SpartaDOS X ma mechanizm zwany szlakiem poszukiwań. Jest to zmienna środowiskowa PATH, w której zapisane są katalogi, w jakich szukany jest otwierany plik (nie koniecznie wykonywalny). Polecenie OPEN #1,4+32,0,"D:twojplik.dat" spowoduje przeszukanie wszystkich katalogów zawartych w zmiennej PATH (od pierwszego do ostatniego), a na końcu katalogu bierzącego i otwarcie podanego pliku z katalogu, w którym został znaleziony jako pierwszy.

Np.
PATH=c:dos;b:programy;e:gry
Plik twojplik.dat znajduje się w katalogach: b:programy, e:gry i w katalogu bieżącym, czyli tym, w którym zajdowałeś się w momencie uruchomienia programu (np. a:moje).
Wykonanie powyższego OPEN spowoduje otwarcie pliku twojplik.dat z katalogu b:programy.

Oczywiście nie musi to być wcale ten plik, o który Ci chodziło, bo program, który go otwiera był uruchomiony przez polecenie np. c:dostoolstwojplik. Aby sprawdzić pod SpartaDOS X (tylko ta wersja!) z jakiego katalogu został uruchomiony plik należy wykonać poniższy kod:

; Przepisanie urządzenia, ścieżki i nazwy uruchomionego programu
; pod adres wskazany przez rejestry AX

auxptr =   $15
device =   $0761
name   =   $0762
path   =   $07A0

g.path sta auxptr
       stx auxptr+1
       ldy #0
       lda #'D
       sta (auxptr),y
       iny
       lda device       ; urządzenie z jakiego został uruchomiony program
       ora #$30         ; przerabiamy na jego nr ;)
       sta (auxptr),y
       iny
       lda #':
       sta (auxptr),y   ; mamy już Dn:

       iny              ; teraz przepisujemy ścieżkę
       lda path-3,y
       sta (auxptr),y
       bne *-6
       cpy #3           ; jeśli program uruchomiony z bieżącego katalogu,
       beq ?skp         ; to brak ścieżki
       lda path-4,y     ; jeśli z wykorzystaniem szlaku poszukiwań,
       jsr ckspec       ; to brak '' lub '>' na końcu ścieżki
       beq ?skp
       lda #'>
       sta (auxptr),y

?skp   ldx #-1          ; przepisujemy nazwę
?cn    inx
       cpx #8
       bcs ?id
       jsr ?cc          ; przenosimy znak nazwy
       bne ?cn

?id    lda #'.          ; kropka rozdzielająca nazwę od rozszerzenia
       sta (auxptr),y
       iny

       ldx #8
?ce    inx
       cpx #12
       bcs ?in
       jsr ?cc
       bne ?ce

?in    lda #0
       sta (auxptr),y
       rts

?cc    lda name,x
       sta (auxptr),y
       iny
       cmp #$20         ; sprawdzamy, czy spacja (koniec nazwy)
       rts

ckspec cmp #'<
       beq *+8
       cmp #'>
       beq *+4
       cmp #'
       rts

Jak widać procedura nie robi nic szczególnego. Przepisuje tylko urządzenie, ścieżkę i nazwę pliku w formie strawnej dla OPEN. Wskaźnik auxptr może być umieszczony pod dowolnym adresem na stronie 0 ($15 jest dobrą lokalizacją nie kolidującą, ani z systemem, ani z ew. inymi zmiennymi pragramu).

Powyższa procedura jest lekką modyfikacją procki umieszczonej w Config Selectorze. Tam jest nieco krótsza, gdyż korzysta z paru procedur Sparty, który tu nie można użyć ze względu na ich "ruchomy" charakter ze względu na wersję.

O wiele łatwiej jest ustalić ścieżkę pod MyDOS-em, czy dyskową wersją SpartaDOS-u. Tak jak marok dobrze kombiuje, można skorzystać z adresu bufora kanału 0 CIO.

[ Dodano: 03.05.2005 00:23:15 ]
Lewis, QA jak i wszystkie "inteligentne" programy próbujące zgadnąć skąd zostały wczytane wykładają się pod SpartaDOS-em i MyDOS-em. To dlatego, że odczytują tylko numer urządzenia z DUNIT ($0301) i wstawiają go pomiędzy "D" a ":". ;) Pod MyDOS-em "Dn:" oznacza katalog główny dysku n, a pod Spartą katalog bieżący tego dysku.

Jeśli pod Spartą jesteś w katalogu D3:ZRODLA, w zmiennej PATH masz wstawiony katalog z QA, powiedzmy Twój D2:PROG, a katalogiem bieżącym dla dysku D2: będzie akurat D2:GNIOT, to QA będzie szukał pliku QA.SET w katalogu bieżącym dysku D2:, czyli D2:GNIOT.

Po MyDOS-em (drzewo katalogów takie samo jak w powyższym przykładzie ze Spartą), QA zawsze będzie szukało QA.SET w katalogu głównym dysku D2: i nie pomogą tu kombinacje z "CHDIR".

1,112

(11 odpowiedzi, napisanych Bałagan)

Gość nie sprofanował Atari. Po prostu wymienił procesor, dorzucił trochę pamięci, zamontował twardziela i CD-ROM (interfejs KMK/JŻ), wyprowadził na zewnątrz USB z SIO2IDE, z Atari 850 porzyczył interfejsy RS232 i Centronics), dołożył drugiego Pokeya na stereo i Covoksa. I gdzie tu profanacja. :twisted:

1,113

(11 odpowiedzi, napisanych Bałagan)

To jest klasyczny przykład wkładania do malucha silnika od Mercedesa. 8)

Myszka może i fajna, ale raczej nie ergonomiczna. ;)

1,114

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

W tablicy t_ nie odnajduje pozycji, gdzie wskazane bylyby banki zajmowane przez Ramdysk.

[...]

banki zajmowane sa "od tylu" tablicy bankow, a wiec nie mozna swobodnie dobierac bankow dla Ramdysku.

Dokładnie. Banki zajmowane są ZAWSZE od końca tablicy. Uwalnia to system od trzymania dwóch wartości: pierwszego wolnego banku i liczby wszystkich banków. Wystarczy tylko jedna - liczba dostępnych.

Nie sądzę, by swobodne dobieranie banków, było aż tak niezbędne. Wg mnie nie ma znaczenia w jakiej kolejności przełączane są banki jeśli przypisane sa im indeksy zamiast warości wpisywanych do PortB.

Otoz myslalem nad zrzuceniem odpowiedzialnosci na wyznaczenie bankow niedostepnych dla programu, na uzytkownika, poprzez odpowiednie przygotowanie pliku konfiguracyjnego, doczytywanego tuz po uruchomieni programu.

A co jak użyszkodnik zapomni o stworzeniu takiego pliku. :P Poza tym, nie jest to bezpieczne ze względu na ramdysk (nie tylko pod SDX; dotyczy to również MyDOS-a i DOS-a II+/D).

Wydaje mi się, że w SpartaDOS ma najlepiej rozwiązane zarządzanie dodatkową pamięcią ze wszystkich systemów atarowskich. Przede wszystkim nie musisz sprawdzać, czy i jakie rozszerzenie jest zamontowane oraz jakie wartości przełączają pamięć.

Przed powrotem do Sparty, nalezy rozumiem przywrocic tym samym zawartosc banku podstawowego (z tablicy t_, $FF zwykle).

Zauważ, że w mojej procedurze przed przełączeniem banku jest

lda portb
pha

a na końcu

pla
sta portb

To wystarczy, by nie martwić się o przywracanie na koniec właściwego banku. Oczywiście przechowywanie takich informacji na stosie jest tylko przykładem. Równie dobrze może to być strona zerowa lub dowolna komórka pamięci poza zakresem $4000-$7FFF, ale to chyba jasne. :D

Inna zawartosc banku podstawowego moze zaistniec w jakich okolicznosciach i czy wowczas istotnie bank $FF bedzie do dyspozycji uzytkownika?

Normalnie jest to $FF. Nigdy nie spotkałem się, by bank podstawowy był zmieniany, ale jak pod T_+4 wpiszesz co innego niż $FF, to to będzie bankiem podstawowym. Jednak nie polecam takich eksperymentów, bo np. Turbo Basic (używa pamięci pod ROM-em) i MAE (korzysta z dodatkowej pamięci) wieszają komputer. Reszta, która używa tylko pamięci podstawowej (nie miącha w PortB) działa.

1,115

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

W takiej sytuacji, czy program dzialajacy wg. ponizszego scenariusza ma szanse dzialac pod Sparta w trybie banked?:

1. Zapamietanie aktualnie aktywnego pod Sparta banku.

SpartaDOS zawsze przed oddaniem programowi sterowania włącza bank podstawowy (PortB = $FF), więc nie zdążysz zanotować dodatkowego banku. 8)

2. Wybor banku wolnego i widzianego przez Sparte.
3. Wczytanie z urzadzenia zewn. danych bezposrednio do wybranego jak wyzej banku.

To da się zrobić, choć mogą być łatwe do obejścia problemy z różnymi wersjami SDX. Obecnie są dwie w użyciu: 4.20 (cartridge sprzedawany legalnie lub piracko w Polsce) i 4.22 (przywędrowała do nas w postaci pliku obrazu).

W Twoim przypadku różnica polega na różych adresach tablicy T_. W 4.20 jest to $0902, w 4.22 - $0904. Jej budowa jest następująca: ˇ 4 bajty - informacja o bankach w Atari 400/800, dla serii XL/XE są tam zera
ˇ 1 bajt - bank podstawowy (przeważnie $FF)
ˇ 1 bajt - 0 (nie znam znaczenia)
ˇ 1 bajt - bank, w którym Sparta trzyma swoje bebechy
ˇ 1 bajt - 0 (nie znam znaczenia)
ˇ 16 bajtów - maski przełączające banki
ˇ 1 bajt - maska bitów przełączających banki
Wyjaśnienia wymaga przedostania pozycja. Twórcy SpartaDOS-u wyszli z założenia, że ilość banków jest zawsze podzielna przez 4 (4, 8, 12, 16, 32 i 64), przy czym bity 2 i 3 PortB zawsze odpowiedziale są tylko i wyłącznie za przełączanie pamięci. Dlatego też, nie ma potrzeby sprawdzania dla jakiej ich kombiacji bank istnieje, bo istnieje dla każdej. Jeżeli istnieje %xxxx00xx, to na pewno obecne są również: %xxxx01xx, %xxxx10xx i %xxxx11xx.

Nie wszystkie bajty z tablicy masek są wykorzystywane w każdym systemie. Jeśli komputer ma 128 kB pamięci, to informacja o dodatkowych bankach zapisana jest w pierwszym bajcie, 192 kB - w dwóch, 256 kB - w trzech, 320 kB - w czterech, 576 kB - w ośmiu, 1088 kB - w szesnastu. Informację o ilości baków odczytasz spod adresu DPEEK(dosvec)+29. Jeśli SDX jest w trybie None lub Osram, to będzie tam liczba podzielna przez 4, jeśli Banked, to mniejsza o jeden, ponieważ Sparta po zajęciu dodatkowej pamięci zmniejsza jej dostępną ilość (to samo robi np. RAMDISK.SYS, sprawdź np.: RAMDISK.SYS I: 4 i zobacz ile zostanie wolnych banków). W moim przypadku (320 kB) w None i Osram jest tam 16, w Banked - 15.

Jak z tego korzystać? Najprościej ponumerować sobie banki od 0 do ilości dostępnych banków-1. Chcesz włączyć konkretny bank:

t_   =   $0902           ; (lub $0904, gdy SDX 4.22)
portb =  $D301

     lda portb           ; zapamiętujemy bieżący bank
     pha

     ldy newbank         ; nr banku (0 - liczba dostępych banków-1)
     tya                 ; obliczamy nr "grupy" banków
     lsr
     lsr
     tax

     tya                 ; obliczamy nr banku w "grupie"
     and #%00000011
     tay

     lda t_+8,x          ; "składamy" maskę bitową dla PortB
     ora bnkingrp,y
     eor portb
     and t_+24
     eor portb
     sta portb

     jsr doit            ; robimy co swoje na dodatkowej pamięci

     pla                 ; przywracamy pierwotny bank
     sta portb

     ...

bnkingrp .by %00001100 %00001000 %00000100 %00000000

Kawałek "składający" maskę jest modyfikacją fragmentu procedury Sparty przełączającej banki. Nie sprawdzałem jej, ale powinna działać. :)

Kod nie jest specjalnie skomplikowany. Kombinacje eor; and; eor i wcześniejsze mają służyć obliczeniu takiej wartości dla PortB, by zmieniły się tylko bity odpowiedzialne za dodatkową pamięć. Dzięki temu, przełączanie banków nie włącza/wyłącza Basica, czy systemu. Powinno się to przydać, gdy zamierzasz odłączać rom.

Przy powrocie do Sparty przywrocenie, wraz z innymi ustawieniami, poprzedniej zawartosci $d301.

Spróbuj zapomnieć o przywróceniu PortB, to bardzo szybko sobie przypomnisz. 8)

Dodatkowo chcialbym dopytac, czy bank podstawowy jest zawsze pozostawiany wolnym do wykorzystania, czy nalezy zalozyc, ze Sparta moze tam cos waznego przechowywac?

Sparta niczego nie przechowuje w tym obszarze. Wszystko co jest jej niezbędne znajduje się poniżej MemLo.

Jeszcze pytanie odnosnie otwarcia E:. Zawartosc ICAX1 i 2 pewnie okresla tryb otwarcia ekranu, czy moglym zapytac jakie konkretnie znaczenie przypisane jest tym zmiennym?

Dokładnie. W ICAX1 określasz kierunek przepływu danych: 4 - odczyt, 8 - zapis, 12 - odczyt i zapis. Urządzenie "E:" jest połączeniem ekranu (wyjście) i klawiatury (wejście), więc zawsze ustawia się go w tryb dwukierunkowy (12 w ICAX1). ICAX2 określa tryb graficzny dla ekranu (urządzenie "S:") . Ponieważ otwarcie "E:" implikuje tryb 0, to ten rejestr można spokojnie pominąć.

1,116

(50 odpowiedzi, napisanych Scena - 8bit)

People keep saying that the behavior of i = i++ is undefined

Tu, niezależnie od literatury, obstawiałbym, że i zostanie zwiększone o 1. Najpierw pod i zostanie przypisana wartość i, a potem do i zostanie dodane 1 i zapisane w i. :)

Wracając do mojego przykładu (int c = 1; c += ++c + c++): GCC pod FreeBSD i  Slackwarem oraz CC65 zwraca 7. Czy ktoś z ST/TT/F030 mógłby to sprawdzić pod Pure C? Jestem ciekawy jak Borland sie na to zapatruje.

++c jest wykonywane przed całością, a c++ na samym końcu, czyli już po przypisaniu wartości do zmiennej. Wiedząc to można stwierdzić: ˇ ++c zwiększa wartość c na 2 i to właśnie ta wartość jest brana pod uwagę
ˇ potem jest wykonywane dodawanie c + c, czyli mamy 4
ˇ c zwiększane jest o 4 (c+=4), co daje 6
ˇ na koniec c++ i mamy 7Preinkrementacja zmienia wartość zmiennej natychmiast, więc wszelkie dalsze obliczenia są wykonywane na nowej wartości. Szóstka w GCC na PPC wzięła się przez pomyłkę. :lol: Wpierw zostało wykonane c++ a później += co jest dla wg poważnym błędem. 5 w C# łatwo natomiast wytłumaczyć: c + c to dodawanie dwóch różnych zmiennych (najpierw ++c, czyli 2, potem 2+1=3, 3++ daje 4, a c += 4, to 1 + 4 = 5). 8) Dywagacje nt 5 i 6 są czysto teoretyczne. Nie sprawdzałem tego.

Zgadzam się z Mikeyem i Laoo. Jak ognia należy unikać podwójnej i więcej modyfikacji tej samej zmiennej.

1,117

(50 odpowiedzi, napisanych Scena - 8bit)

"Środowisko": ;) ˇ Windows XP SP2
ˇ cc65 V2.10.1
ˇ set CC65_INC=C:PROGRA~1CC65INCLUDE
set CC65_LIB=C:PROGRA~1CC65LIB
set LD65_CFG=C:PROGRA~1CC65LIB
ˇ nieśmiertelny program hello.c o znanej wszystkim zawartości ;)Zmienne środowiskowe wyglądają dokładnie tak jak widać.

Sekwencja:

cc65 -t atari -o hello.s hello.c
ca65 -t atari -o hello.o hello.s

działa dobrze, natomiast:

ld65 -t atari -o hello.xex hello.o atari.o atari.lib

produkuje zły plik binary - linker pod Win32 jest zwalony.

Natomiast:

cl65 -t atari -o hello.xex hello.c

daje idealny program działający pod Atari 800Win. Nie wiem, czy na prawdziwym sprzęcie też ruszy (powinien), bo gdzieś mi wcięło APE. :?

Pirx, kierunek slashy w zmiennych CC65_* nie ma znaczenia, tak samo jak nie ma znaczenia obecność slasha na końcu ścieżki (zerknij na linie 69. :oops: pliku cc65-2.10.1srccommonsearchpath.c w źródłach ;) ).

Poeksperymentowałem trochę ze slashami i, gdy zmienne zawierają '\', to też wszystko działa.

ale chyba CC65 nie uzywa INCLUDE, tylko tych swoich zmiennych???

I całe szczęście. Wyobraź sobie co by sie stało, gdybyś zapodał do CC65 stdio.h z takiego BC++, a do LD65 stdlib.lib, czy coś podobnego. :mrgreen:

Na koniec praca domowa dla beginnerów: co wyświetli taki program? ;)

#include <stdio.h>
int main()
{
int c=1;

    c+=++c+c++;
    printf("%dn",c);
    return 0;
}

Proszę najpierw ładnie w głowie, a potem sprawdzić, czy aby na pewno. :)

1,118

(50 odpowiedzi, napisanych Scena - 8bit)

"Język ANSI C" autorstwa Briana W. Kernighana i Dennisa M. Ritchiego (można kupić w księgarni albo ściągnąć w postaci pdfa z internetu)

Jak podasz adres tego pdfa, to Cię ozłocę. ;)

Juz taka mentalnosc Polakow, ze nawet jak pomoga to musza powiedziec przy okazji pare slow krytyki...

Bo w ten sposób najłatwiej odwrócić uwagę od własnego braku kompetncji. ;)

Jest jeden plus tego całego zamieszania i kąsania - ściągnąłem CC65. :)

1,119

(32 odpowiedzi, napisanych Bałagan)

Jak mogłeś deptać i truć smrodem swych nóg boginnię. Nic dziwnego, że niespodziewanie odeszła. Przynajmniej wyjaśniła się tajemnica jej śmierci. ;)

Hej Grzybson, jak tam kac poegzaminacyjny? :)

1,120

(32 odpowiedzi, napisanych Bałagan)

Jak tauś zrobi dziubek, to nie ma ... we wsi

:D
Ja tam do wszelkich egazaminów i matury podchodziłem w podkoszulku i też zdawałem. 8O

1,121

(19 odpowiedzi, napisanych Sprawy atari.area)

A możesz zacytować przykład dziecinności moderatorów lub niskiego poziomu ich wypowiedzi?

Przeczytaj dowolny RTT z dowolnego zlotu jaki odwiedizliśmy. :lol:

1,122

(50 odpowiedzi, napisanych Scena - 8bit)

Lizard, zapomniałeś dodać przestrzen nazw std

Może sie zdziwisz, ale pod Borland C++ i Borland C++ Builder taki program przechodzi bez przestrzeni nazw. Stąd mniosek, że domyślnie przyjmowana jest std, a jak chcesz inną to se zmień. :)

Może zamiast rzucać błotem w tebe, wypadałoby się trochę zastanowić jak działa preprocesor po natrafieniu na #include <plik>? Wygląda to mniej więcej tak:
1. pobierana jest zmienna CC65_INC
2. do zmiennej dodawana jest nazwa pliku poprzedzona ew. separatorem katalogu
3. wywoływana jest funkcja otwarcia pliku

Stąd wniosek, że ścieżka podana w zmiennej powinna być zapisana w postaci strawnej dla systemu, na którym odpalany jest CC65. Dla Windows XP powinno być c:ataricc65include (pojedyncze backslashe). Jeśli z tym nie działa, to należy na końcu ścieżki dodać jeszcze jeden ''.

Nie zagłębiałem się w źródła CC65, ale nie wydaje mi się, by kompilator sprawdzał system i odpowiednio ustawiał (back)slashe, więc należy zrobić to ręcznie.

Pomozcie, bo nie daje rady :(((( Wiem, zle szukam w googlu i na atariarea, ale juz lepiej nie potrafie...

Sparwdzałeś na http://www.cc65.org, a konkretnie na http://www.cc65.org/faq.php#PathProblems?

1,123

(50 odpowiedzi, napisanych Scena - 8bit)

Hehe, niedługo toczekamy się posta w stylu: :mrgreen:

Mam taki progam jak niżej i on sie nie komlikuje pod CC65, POMOCY!!!

#include <iostream>
void main()
{
   cout << "Hello łerld" << endl;
}

1,124

(19 odpowiedzi, napisanych Sprawy atari.area)

Przykład idzie z góry, od Pana Kierwnika przez Nabojkę AA (hello Lewis ;) ) i spływa łaską na nas maluczkich.

1,125

(35 odpowiedzi, napisanych Bałagan)

Vasco: jesteś japońskim turystą, więc aparat masz wczepiony w czoło, a trzask migawki wydajesz zębami. Po ciemku nie zapomnij włączyć flesza i świeć oczami. :D