listing ma już przeszlo 5 tys liniejek... doadlem kilka nowych procedurek... i QA rżnie glupa UNDECLARED LABEL... ale nie dla nowych etykiet tylko tych ktroe byly w porzadku.... rozumiem ze to ograniczenie samego QA... da sie to jakos obejsc?

2

da sie obejsc, uzyj XASM-a

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

3

Na pewno da się obejść, to nie Grubshy, ale nie Lewis, których łatwiej przeskoczyć niż obejść :P.

4

Jurgi, bo Cie zlapie za nogi, Grubshy za rece i kazdy z nas pojdzie w innym kierunku ;)

A co do QA: ZTCP to QA ma ograniczenie do 512 etykiet. Moze juz je dawno przekroczyles, a dopiero teraz QA sie polapalo i wali smuty. chyba najszybciej bedzie jak sie przerzucisz na inny asembler. Ja polecam jak zwykle MAE. Przynajmniej nie trzeba miec grzyba do tego.... ;)

5

lewis: mówisz jak przedstawiciel sceny c-64 ;)

gep/lamers^dial

6

LOL. W sumie masz racje. Kodowanie na Atari jest lepsze od kodowania na grzybie (czyt. dzwiek na SIDzie jest lepszy od dzwieku na Pokeyu ;) ). A emulator to **j!

7

ooooo a teraz gadasz jak Jurgi wersja PRO...;) Yo Yurgi! nołofenz... :P

gep/lamers^dial

8

eeeeeee, McMaster;- przerzuć się na TurboBasic. Właśnie, może nowa kategoria na compo. turboBasicKompo... :lol:

Kontakt: pin@usdk.pl

9

da sie obejsc, uzyj XASM-a

wlasnie zapomnialem dodac ze intersuje mnie tylko oryginale atari. wiec qasm i xasm daruje sobie.

A co do QA: ZTCP to QA ma ograniczenie do 512 etykiet. Moze juz je dawno przekroczyles, a dopiero teraz QA sie polapalo i wali smuty. chyba najszybciej bedzie jak sie przerzucisz na inny asembler. Ja polecam jak zwykle MAE. Przynajmniej nie trzeba miec grzyba do tego....

no tak tez chyba zrobie... ale troche ciezko mi bedzie sie przyzwyczaic. MAE jest w stosunku do QA mocno hm... do przodu. Ale jak dla uzytkownika QA za duzo szczescia :)

10

To nie MAE jest do przodu, tylko QA do tyłu. Asembler pokroju MAE był już w 1982 i nazywa się MAC/65. :P

Może spróbuj podzielić źródło na niezależne kawałki, asembluj osobno i połączje potem.

Zawsze mam rację, tylko nikt mnie nie słucha.

11

To ja spróbuję konstruktywnie.
Podziel kod na moduły.
Problemy, które się pojawiają:

ˇ podział pamięci - trzeba ustalić, ile zajmuje który moduł, i przydzielić mu odpowiednią ilość pamięci
ˇ linkowanie - skoro każdy moduł kompilujemy osobno, to trzeba docelowy program zlinkować (połączyć OBJy).
ˇ uruchamianie spod QA - jeżeli dobrze ustaliłeś obszary pamięci, masz szansę skompilować jeden moduł, siedzi on sobie w pamięci, a Ty pracujesz nad drugim, korzystając cały czas z pierwszego
ˇ wywoływanie funkcji - jeżeli moduły ze sobą współpracują, musisz znać dokładny adres funkcji w innych modułach. Najłatwiej zrobić dla każdego modułu coś a'la plik nagłówkowy zawierający adresy funkcji używanych z zewnątrz. Można też (skoro robisz JSR to wydajność tak bardzo nie ma znaczenia) na początku każdego modułu zrobić po prostu listę pointerów do funkcji, czyli JMPów - wtedy nie trzeba kombinować z adresami właściwych funkcji.

QA forever :)
No, chyba, że jest X-Asm :)

: 404. Stopka not found

12

no tak tez chyba zrobie... ale troche ciezko mi bedzie sie przyzwyczaic. MAE jest w stosunku do QA mocno hm... do przodu. Ale jak dla uzytkownika QA za duzo szczescia :)

To racja, ale mysle, ze po poczytaniu manuala (use google) i artow Lizarda w Syzygy przejscie nie bedzie takie straszne. Ja tez myslalem, ze bedzie ciezko, a naprawde jest latwo.

13

A ze starym dobrym MAC65 jest jeszcze mniej problemow... :) i te makra z parametrami i kompilacja warunkowa itp....

:)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

14

podajcie przyklad makra z parametrami

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

15

podajcie przyklad makra z parametrami

rozloz sobie mwa na makro

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

16

podajcie przyklad makra z parametrami w MAC65

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

17

Prosze bardzo (polecam zbior IOMAC.LIB zawierajacy caly blok WE/WY w postaci makr, to jest wycinake zawierajacy kilka makr pomocniczych i makro XIO:
(etykiety systemowe sa wczesniej inkludowane za zbioru SYSEQU)


 ; MACRO:  @CH
 ;
 ; Loads IOCB number (parameter 1) into X register.
 ;
 ; If parameter value is 0 to 7, immediate channel number
 ;   is assumed.
 ;
 ; If parameter value is > 7 then a memory location
 ;   is assumed to contain the channel number.
 ;
     .MACRO @CH
     .IF %1>7
       LDA %1
       ASL A
       ASL A
       ASL A
       ASL A
       TAX
       .ELSE
       LDX #%1*16
       .ENDIF
     .ENDM
 ;
 ;
 ; MACRO:  @CV
 ;
 ; Loads Constant or Value into accumultor (A-register)
 ;
 ; If value of parameter 1 is 0-255, @CV
 ; assumes it's an (immediate) constant.
 ;
 ; Otherwise the value is assumed to
 ; be a memory location (non-zero page).
 ;
 ;
 ;
     .MACRO @CV
     .IF %1<256
       LDA #%1
       .ELSE
       LDA %1
       .ENDIF
     .ENDM
 ;
 ;
 ;
 ;
 ; MACRO:  @FL
 ;
 ; @FL is used to establish a filespec (file name)
 ;
 ; If a literal string is passed, @FL will
 ; generate the string in line, jump
 ; around it, and place its address
 ; in the IOCB pointed to by the X-register.
 ;
 ; If a non-zero page label is passed
 ; the MACRO assumes it to be the label
 ; of a valid filespec and uses it instead.
 ;
 ;
 ;
     .MACRO @FL
     .IF %1<256
       JMP *+%1+4
 @F    .BYTE %$1,0
       LDA # <@F
       STA ICBADR,X
       LDA # >@F
       STA ICBADR+1,X
       .ELSE
       LDA # <%1
       STA ICBADR,X
       LDA # >%1
       STA ICBADR+1,X
       .ENDIF
     .ENDM
     .PAGE "   XIO macro"
 ;
 ; MACRO:  XIO
 ;
 ;  FORM:  XIO cmd,ch[,aux1,aux2][,filespec]
 ;
 ; ch is given as in the @CH macro
 ; cmd, aux1, aux2 are given as in the @CV macro
 ; filespec is given as in the @FL macro
 ;
 ; performs familiar XIO operations with/for OS/A+
 ;
 ; If aux1 is given, aux2 must also be given
 ; If aux1 and aux2 are omitted, they are set to zero
 ; If the filespec is omitted, "S:" is assumed
 ;
     .MACRO XIO
     .IF %0<2 .OR %0>5
       .ERROR "XIO: wrong number of arguments"
       .ELSE
        @CH  %2
        @CV  %1
       STA ICCOM,X ; COMMAND
       .IF %0>=4
          @CV  %3
         STA ICAUX1,X
          @CV  %4
         STA ICAUX2,X
         .ELSE
         LDA #0
         STA ICAUX1,X
         STA ICAUX2,X
         .ENDIF
       .IF %0=2 .OR %0=4
          @FL  "S:"
         .ELSE
 @@IO    .=  %0
          @FL  %$(@@IO)
         .ENDIF
       JSR CIO
       .ENDIF
     .ENDM

I jeszcze jedno z makr stosowanych przeze mnie i Pirxa:

;-------------------------------------
         .MACRO MOVE.L
;    MOVE.L    source_addr,dest_addr,length
;    Moves 'length' bytes long block of bytes
;    beginning from 'source_addr' to 'dest_addr'
;    The macro tries to create the optimal code for given data
;    CAUTION! Blocks shouldn't overlap! Macro is self-modyfying!
         .IF %3<$0100
           LDX #%3-1
@MC        LDA %1,X
           STA %2,X
           DEX
           .IF %3>$7F
             CPX #$FF
             BNE @MC
             .ELSE
             BPL @MC
             .ENDIF
           .ENDIF
         .IF %3&$FF<>$00
           .IF %3>$0100
             LDA #$00
             STA ?LI
             STA ?LI+1
?MO          LDA %1
?MO1         STA %2
             INC ?MO+1
             BNE ?MO2
             INC ?MO+2
?MO2         INC ?MO1+1
             BNE ?MO3
             INC ?MO1+2
?MO3         INC ?LI
             BNE ?MO4
             INC ?LI+1
?MO4         LDA ?LI+1
             CMP # >%3
             BNE ?MO
             LDA ?LI
             CMP # <%3
             BNE ?MO
             ;lda #0
             ;sta ?LI
             ;sta ?LI+1
             BEQ ?MO5
?LI           .WORD 0
?MO5
             .ENDIF
           .ELSE
           LDX # >%3
           LDY #$00
?MO        LDA %1,Y
?MO1       STA %2,Y
           INY
           BNE ?MO
           INC ?MO+2
           INC ?MO1+2
           DEX
           BNE ?MO
           .ENDIF
         .ENDM

No to jeszcze takie malenstwo, a jak przydatne:

; adds %1 to %2 and saves result in %3
; if there is no %3, result goes to %2
         .MACRO ADD.W
         CLC
         LDA %2
         ADC %1
         .IF %0=3
           STA %3
           .ELSE
           STA %2
           .ENDIF
         LDA %2+1
         ADC %1+1
         .IF %0=3
           STA %3+1
           .ELSE
           STA %2+1
           .ENDIF
         .ENDM

(etykiety zaczynajace sie od ? sa etykietami lokalnymi makra, a nazwy zaczynajace sie od @ sa makrami pomocniczymi w wiekszym bloku makr - np. zestaw procedor we/wy)

Zwroc uwage na kompilacje warunkowa i generowanie roznego kodu w zaleznosci od parametrow. Piszesz sobie zestaw takich makr (jak chcesz podesle wieksze zbiory) i zapominasz o typowych konstrukcjach kodu, bo nie musisz juz o nich pamietac, wplatane sa w kod w miare potrzeby jako makra wlasnie.....

Prosze mi pokazac inny, tak elastyczny assembler!!

A TU znajduje sie instrukcja do MAC65 a takze OMC - czyli odpowiednik MAC65 na PC.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

18

no bardzo ladne

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

19

Fajowskie, niemaco ;)

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

20

A to wcale nie najciekawsze, w zasadzie to duza czesc instrukcji procesora 68000 jest u mnie umakrowiona - fajne to i wygodne i wygodne.
Zreszta depaker w Operation Blood byl przepisany "kod w kod" z assemblera amigowego za pomoca makr w MAC65, a potem troszke zoptymalizowany (po kompilacji juz usuniete dublujace sie rozkazy).

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

21

zajebiste.
nawet nie wiedziałem, że takie fajne makra wspiera. Toż to silniejsze niż #define w C :)
Tylko.. Czy do wywoływania trzeba dodawać zawsze '@' ?
Czy tylko wewnątrz definicji innego makra?
EDIT: O... słówko 'zajedwabiste' mi zmieniło :)

: 404. Stopka not found

22

MAE takze potrafi takie ladne rzeczy robic (znaczy makra i asemblacja warunkowa). No i plus obsluga 816tki...

23

To @ to tylko dla ulatwienia, w zestawie procedur we/wy tak zaczynaja sie makra pomocnicze, ktore wspieraja te glowne.
W czasie pisania wywolanie makra nie rozni sie od mnemonika.

Tak to wlasnie nieznajomosc programu powoduje ze ludzie stosuja prymitywne narzedzia w stylu QA ;)  Na dodatek MAC nie ogranicza dlugosci i ilosci etykiet, a do tego wiecej kodu sie w nim jednorazowo miesci i makra mozna miec w oddzielnych plika i includowac w miare potrzeb (oczywiscie nie zajmuje to pamieci wtedy).

A lubie tez makra POKE i DPOKE :)
wtedy kod assemblerowy wyglada np:

  POKE COLBAK,0
  DPOKE DL,$4000

fane :)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

24

A mostly Mac/65 compatible cross-assembler

http://www.cs.utah.edu/~schmelze/atari/atasm/index.html

hehe, jest i na PC MAC65

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

25

Cos mi sie wydaje ze najbardziej zgodny to juz jest OMC (napisane przez Pawla Bulkowsiego z OUR 5OFT). Jedna z opcji generuje nawet dokladnie tak poszatkowany kod (MAC65 generuje plik w postaci wielu blokow binarnych o dlugosci 256b , kazdy z wlasnymi naglowkami).

A dyrektywa .INCBIN w tym ATasm wydaje mi sie dziwnie znajoma :) ... tyle ze Pawel to napisal pare lat wczesniej (zreszta w Pure C na Atari ST), az zaraz zaczne kod zrodlowy w C (na ktorym sie nie znam ;) ) porownywac.....

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.