51 Ostatnio edytowany przez pajero (2012-05-01 14:11:50)

xxl napisał/a:
pajero napisał/a:

Etykieta LDX #

kompiluje sie rozkaz z zaznaczonym trybem adresowania (natychmiastowy) ale bez argumentu.
ciekawe czy kompiluje sie tez:
lda ,x      ; strony zerowej indeksowany x
lda (),y   ; strony zero postindeksowany

Ofkoz, że nie. Wszystkie Twoje przykłady walą błędem, i to jest OK.

Acz dlaczego nie można by pisać "inx cośtam" - to przechodzić powinno.

52

xxl: ocb z tym zejsciem ze slonca? ca65 to zly assembler? co ci sie w nim nie podoba? przerasta cie? ma dokladnie to czego potrzebujesz - skladnie latwiej pozwalajaca na wylapanie bledow, o ktorych wspomniales.

xasm, czy mads maja po prostu inny postulat - zgodnosc z qa + dodatki ktorych _autorom_ brakowalo.
ca65 nie ma balastu qa.
nie rozumiem skad to przywiazanie do qa. lokalny patriotyzm?

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

53

Epi: grząski grunt. Nie boisz się utonięcia, jak ktoś spyta o konkrety?

jellonek: Nie wiem, więc pytam: czy ca65 jest rozumiany przez WUDSN i przez Altirrę? Bo jeśli nie, byłby to konkretny argument.

54

@jellonek
> ocb z tym zejsciem ze slonca?

moze wtedy przestanie Ci sie wydawac co jest dla mnie lepsze :-)


> ca65 to zly assembler?

gorszy od MADS. pierwszy argument z brzegu: brak w ca65 supportu dla niepublikowanych stabilnych (wszystkich) za to jest czesc niestabilnych ktore jawnie uznaja za stabilne. sorry.


> nie rozumiem skad to przywiazanie do qa. lokalny patriotyzm?

ja tez nie rozumiem, moze po prostu Tebe go lubi. Na szczescie juz zalatwil sprawe kodow jednobajtowych i komentarzy po nich :-)

http://atari.pl/hsc/ad.php?i=1.

55

pajero napisał/a:

Oj, prze-kombi-nujecie zaraz.
Proszę wrócić do starych zasad, "LDX #0 cośtam"  bo mi wali błędami.


Inne:
Moja sugestia - plik *.lab generuje etykiety UPCASE - proszę zrobić jak w orginale *.ASM.

Czyli, piszę:

           ORG $1730
Etykieta LDX #

to plik LAB  robi
00    1730    ETYKIETA

a winien wypluć
00    1730    Etykieta

od tego jest przełącznik -c Label case sensitivity

użyj go a będziesz miał w pliku LAB etykiety w takiej postaci jak zapisałeś, tylko miej na uwadze to że

Etykieta
etykieta

to dwie różne etykiety

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

56

może dodam jeszcze dla Tych którzy są oburzeni potrzebą użycia znaku $ dla oznaczenia wartości Hex jest alternatywa, mogą użyć 0x, Candle z lubością tego używa

dla Tych którzy są oburzeni potrzebą kończenia bloku .LOCAL czy innego podobnego tworu odpowiednią dyrektywą .ENDL mogą użyć uniwersalnej wersji i o jeden znak krótszej .END

mogą także użyć klamr znanych z C { }, byle tylko te klamry były w osobnych wierszach

.local name
{
 nop 
 nop
}

czyli dla każdego coś miłego ;)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

57

laoo: Wyprowadź mnie z błędu i niech utonę nauczywszy się czegoś.

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

58

To ostatnie jest niemiłe, miło jest tak:

.local name {
 nop 
 nop
}

:)

The problem is not the problem; the problem is your attitude about the problem

59

tebe napisał/a:

od tego jest przełącznik -c Label case sensitivity

użyj go a będziesz miał w pliku LAB etykiety w takiej postaci jak zapisałeś, tylko miej na uwadze to że

Etykieta
etykieta

to dwie różne etykiety

No i dlatego to kiepskie rozwiązanie.... jedno poprawione a napsute... :(

60

xxl napisał/a:

moze wtedy przestanie Ci sie wydawac co jest dla mnie lepsze

nigdzie nie pisalem co jest dla ciebie lepsze. pisalem jedynie co spelnia twoje wymagania...

laoo: nie wiem by jakies wsparcie ktos robil (nie wiem jakie skladnie obsluguje wusdn, ale po screenach wyglada ze to podobnie, moze?), kazdy robi na wlasna potrzebe. tj. zestaw label pod altirre pewnie by sie szybko zrobilo korzystajac z wyniku -Ln linkera przepuszczonego przez maly zaperlony kod... co do skladni - http://www.cc65.org/doc/ca65.html dokumentacja jest spora.

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

61

pudlo.


juz predzej dolly parton 30 lat temu

MM: xxl, plis, bądź tym mądrzejszym.

http://atari.pl/hsc/ad.php?i=1.

62

altirra wczytuje etykiety sama, byle by procz xex'a czy obx'a w katalogu byl jeszcze plik lab
a candle sobie z luboscia czegostam uzywa, bo ma troche wiecej assemblerow do uzywania niz mads i 6502, wiec musi wybierac to, co jest wspolne dla wielu, tak aby nie musiec sie zastanawiac jak dzis powinien zaczac pisac wartosci by byly tym co chce

amen

bebe - po co ta wycieczka?

przechodze na tumiwisizm

63

Wniosek z tego wątku płynie taki: połowa ludziów nie przeczytała manuala do MADSa :)

"Was powinny uzbrojone służby wyciągać z domów do punktów szczepień, a potem zamykać do pi* za rozpowszechnianie zagrożenia epidemicznego" - Epi 2021
"Powinno się pałować tylko tych co tego nie rozumieją. No i nie szmatki i nie chirurgiczne tylko min FFP3, to by miało jakiś sens. U mnie we firmie, to jak przychodzi bezmaskowiec, to stoi w deszczu przed firmą" - Pin 2021

64

@epi: Proszę bardzo. Nie wiem jak MADS, ale C++ ma z poprzednikiem dokładnie tyle kompatybilności ile trzeba oraz nie zawiera on żadnych nie do końca przemyślanych ficzerów dodanych z powodu braku porozumienia wśród tych, którym na nich zależało, co z kolei implikuje, że nie istnieją żadne rzekome nieoczywiste szczególne przypadki na styku tychże nieistniejących ficzerów. Nie ma również żadnych śladów nieskoordynowanego rozwoju o czym łatwo się przekonać analizując tryb pracy komisji standaryzacyjnej, a mnogość stylów programowania jest pożądaną cechą i oczywistą konsekwencją wieloparadygmatowości języka.

To oczywiście subiektywna opinia i jeżeli jednak uważasz inaczej, to fajnie jakbyś podał jakieś przykłady, do których można byłoby się odnieść, ale to już chyba w jakimś innym wątku, bo głupio tu tak perfidnie offtopikować.

65 Ostatnio edytowany przez Fox (2012-05-02 08:20:54)

Aby perfidnie nie offtopikować przeniosłem tu.

https://www.youtube.com/watch?v=jofNR_WkoCE

66

nowy mads 1.9.4 już jest http://mads.atari8.info

najważniejsza zmiana to możliwość nazywania parametrów makr, czyli większa przejrzystość kodu, łatwiej zrozumieć co makro wyczynia z parametrami

.macro SetColor val,reg
 lda :val
 sta :reg
.endm

.macro SetColor2 (arg1, arg2)
 lda #:arg1
 sta arg2
.endm

p.s.
w planach napisanie nowego kodu obsługującego pętle .REPT tak aby można było je zagnieżdżać, aktualnie aby to obejść trzeba posiłkować się makrami

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

67

Great! BTW, did you get messages I sent you on AtariAge?

68 Ostatnio edytowany przez drac030 (2012-07-11 16:19:45)

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.

KMK
? HEX$(6670358)

69 Ostatnio edytowany przez jellonek (2012-07-11 16:54:07)

bo < > nie sa wykonywane na koncu tak jak zakladales...
mlodsza czesc z LINES-1 to 19, po przemnozeniu przez 40 bedzie wieksza niz 255
starsza czesc z LINES-1 to zero, po przemnozeniu przez 40 bedzie... nadal zerem (wartosc ktora masz w kodzie wynikowym).

typowy operator precedence/order of operators bug.

inaczej piszac - poki tebe nie poprawi (a moze zostawi jako "wlasciwosc madsa" :) ) argument dla #< czy dla #> caly (profilaktycznie) ubieraj w nawiasy, jesli jest wyliczany... za duzo nawiasow raczej mu nie szkodzi.

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

70

Zamiast bajkopisarstwa - zasugeruj patcha z poprawka. Zrodla sa dostepne.

"Was powinny uzbrojone służby wyciągać z domów do punktów szczepień, a potem zamykać do pi* za rozpowszechnianie zagrożenia epidemicznego" - Epi 2021
"Powinno się pałować tylko tych co tego nie rozumieją. No i nie szmatki i nie chirurgiczne tylko min FFP3, to by miało jakiś sens. U mnie we firmie, to jak przychodzi bezmaskowiec, to stoi w deszczu przed firmą" - Pin 2021

71

wystarczy usunąć znak #

  lda <(LINES-1)*40

i będzie OK, jest to zgodne z konwencją QA

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

72

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

KMK
? HEX$(6670358)

73

czy jest jakis sposob aby asembler generowal tylko bajt kodu operacji bez operandu? inny zapis od takiego:

.byte { lda #$ff }

???

czy mozna miec zachcianke o rozdzielenie nazw NPO 1,2 i 3 bajtowych? jesli bedzie zgoda to np. na DOP (double nop), TOP (triple nop) tylko prosze nie SKB i SKW poniewaz te nopy nie przeskakuja bajtu i slowa (nastepuje odczyt spod adresu)

http://atari.pl/hsc/ad.php?i=1.

74

ad1 = przecież tak robi

  org $2000

2000 A9  dta {lda #0}
2001 AD  dta {lda $100}
2002 A5  dta {lda $10}

75

przykladowo mam org $4000 i program ktory po skompilowaniu zajmie $4000-$7fff
chcialbym, zeby mads wygenerowal po kazdych $400 bajtach naglowek pliku binarnego. jak najprosciej to zrobic?

drugi przyklad: sytuacja jak powyzej ale dodatkowo po kazdym takim bloku dodawany jest staly zdefiniowany blok z naglowkiem.

http://atari.pl/hsc/ad.php?i=1.