1

Sciagnalem sobie przykladowe kody zrodlowe w Action! (*.ACT) i zaczalem wlasne proby. Rzecz w tym, ze wolalbym kodowac pod windą w notatniku czy innym edytorze a nie w edytorze Action! na Atari (darujcie sobie zlosliwosci - odwyklem).

Tyle, ze znaki konca linii w standardzie Atari to $9B a zaden edytor jaki znam pod windę tak ich nie interpretuje.
W tej chwili radze sobie tak, ze zmieniam w edytorze HEX pod windą $9B na windowsowy koniec linii ($0D 0A), pisze kod, a nastepnie zamieniam $0D 0A na $9B wrzucam w ATR'a i wgrywam pod Action! na emulcu.
Ale to bardzo uciazliwe.

Czy ktos zna edytor freeware pod windę, gdzie mozna zdefiniowac znak konca linii?
Albo jakis sposob na zautomatywoanie/ uproszczenie tej konwersji.
Dzieki.

2

mozesz pisac uzywajac crimson editora - umozliwia pisanie pod windows z unixowym koncem linii.
potem konwertujesz eol uzywajac 'tr' (z cygwina): tr "\n" "`echo '\233'`" < "$in" > $out

choc tr przekonwertuje chyba takze windowsowy koniec linii na atarowski.

3

Arek, a może wystarczy konwerter memopad? Możesz pisać w czymkolwiek pod Win i konwertować na ATASCII (i odwrotnie).  Autor pisze też że pracuje nad dodaniem możliwości edycji plików.

<-- Kontakt przez "E-mail" gdyż albowiem moja skrzynka "PW" jest pełna i zaprawdę nie mam czego usunąć.

--== Kup Pan/i dyskietkę http://www.atari.org.pl/forum/viewtopic.php?id=18887 ==--

4 Ostatnio edytowany przez nosty (2008-11-22 00:18:29)

Niestety Memo Pad nie ma edytora! A konwerter to ja mam, tylko jak pisalem nie jest to wygodne: edytowac w jedym, konwertowac w drugim i jeszcze wrzucac do ATR'a.

A przy okazji:

jakim cudem takie cos dziala w Action??

CARD ARRAY TABELA(1)
TABELA(0) = "JEDEN"
TABELA(1) = "DWA"

W ksiazce "Jezyki Atari XL/XE cz.2" czytam, ze definicja ARRAY moze zawierac tylko typy proste, a CARD to liczba 2 bajtowa, z zakresu 0 - 65535. Czyli definiujac "CARD ARRAY TABELA(1)" powinnismy rezerwowac jedynie 4 bajty (po 1 liczbie dwubajtowej w kazdej komorce tabeli).
Jak wiec mozna do poszczegolnych pozycji tej tablicy wstawiac ciagi tekstow?

5 Ostatnio edytowany przez xxl (2008-11-22 07:46:00)

nie wstawiasz ciagow tekstoych tylko adresy tych ciagow, czyli po 2 bajty.

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

6

Czyli to sa raczej stale a nie zmienne?
Bo co jesli w przykladzie powyzej bede chcial dalej w kodzie zmienic wartosc pozycji 0 na taką: TABELA(0) = "JEDEEEEEEEEEEEEEEEEEEN" ?
Przeciez pamiec sie nie rozciagnie zeby zmiescic dodane znaki?

7

"jeden" i "jeeeeden" maja rozne adresy, zmienisz tylko wskaznik, albo uzywajac adresu "jeden" mozesz zmienic zawartosc tylko na poczatku zdefiniuj jej dlugosc na maksymalna jaka chcesz pozniej zmieniac. ale jezeli to ma byc tylko tekst to lepiej zmieniaj sam adres w zmiennej tabela.

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

8

action nie znam, ale na czuja to dziala tak:
tabela(0)="jeden" - card w 'tabela' na pozycji 0 wskazuje adres lancucha zawierajacego 'jeden' (wskaznik w niektorych jezykach sie to zwie),
jesli robisz teraz takie przypisanie: tabela(0)='dwa', to nie mieniasz zawartosci wczesniejszego lancucha, tylko podajesz nowy adres do tablicy na pozycji 0 (tym samym absolutnie nie ma znaczenia dlugosc nowego lancucha).
a pytanie, czy mozna zmieniac (w action) zawartosc samego lancucha 'jeden' (badz 'dwa'), to juz inna broszka, i tego nie wiem.

9

nosty: pewnie Ci się to nie przyda, ale jeżeli masz dostęp do Perla, to możesz spróbować użyć takich dwóch prostych skrypcików:

#!/usr/bin/perl
while(<ARGV>)
{
    s/\x9b/\n/g;
    print;
}
#!/usr/bin/perl
while(<ARGV>)
{
    s/\n/\x9b/;
    print;
}

Pierwszy zamienia $9b na newline (w Twoim przypadku $13+$10), drugi na odwrót. Teraz wystarczy np. w edytorze dodać sobie skrót klawiszowy wywołujący skrypt i po kłopocie :)
No ale mało który użytkownik windy korzysta z Perla... :(

800 XE + CA 2001; Portfolio; 1040 STfm; Lynx II
Psion Organiser II XP, LZ64; Series 3a, 3c, 5mx; Siena; Workabout; HP 95LX, 200LX, 620LX; Amiga 1200; Amstrad NC100, NC200; Game Boy Color
http://palmtop.cosi.com.pl -- nie tylko o Atari Portfolio

10

a to emulec nie ma konwertera koncow linii? wydawalo mi sie ze gdzies w helpie jest (dawno emulca widzialem)

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

11

A co powiecie na to, żeby napisać handler urządzenia, które będzie automatycznym konwerterem piec->Atari? Mógłbym coś takiego spróbować skrobnąć, tylko ktoś by mi musiał pomóc, bo nigdy w życiu nie pisałem handlerów ;)

800 XE + CA 2001; Portfolio; 1040 STfm; Lynx II
Psion Organiser II XP, LZ64; Series 3a, 3c, 5mx; Siena; Workabout; HP 95LX, 200LX, 620LX; Amiga 1200; Amstrad NC100, NC200; Game Boy Color
http://palmtop.cosi.com.pl -- nie tylko o Atari Portfolio

12

Cosi, dzieki, ale Perl by jeszcze bardziej skomplikowal sprawe :) (Zreszta nienawidze dranstwa, a niestety w pracy czasami musze cos poprawiac w tym jezyku pod unixem).

Wiecie co byloby najlepsze? Zmiana w pluginie do Total Commandera (bo tego uzywam), zeby sie dalo ustawic, ze jesli kopiuje do/z ATR'a plik o konkretnym rozszerzeniu (*.txt, *.act) to w locie nastepuje konwersja znakow konca linii.

Albo edytor dla programisty, gdzie znak konca linii bylby definiowalny w opcjach! Ja takiego nie znalazlem i stad ten watek.

No jeszcze lepszy bylby kompilator Action! pod winde, ale to juz przesada ;)

13 Ostatnio edytowany przez nosty (2008-11-22 19:28:21)

@XXL, @Bober - dalej wyglada to dla mnie dziwnie i nielogicznie.

Jesli w kodzie przypisuje "JEDEN" a potem "JEEEEDEN" to oba ciagi istnieja jawnie w momencie kompilacji (maja adresy fizyczne) i rzeczywiscie mozna przypisac ich adresy w do TABELA(0).

Ale kod nizej nie powinien dzialac. A dziala (sprawdzilem).
Zauwazcie do do TABELA(0) w petli nie przypisujemy liczby tylko jej konwersje do ciagu znakow!

PROC MAIN()
CARD ARRAY TABELA(1)
CARD J
TABELA(0) = "A"
TABELA(1) = "B"
FOR J=1 to 60000
DO
  StrC(J,TABELA(0))
  PrintE(TABELA(0))
OD
RETURN

14

1. mozesz opisac, co dokladniej robia funkcje StrC i PrintE? jak pisalem, na action sie nie znam.
2. moze to co prawda wynikac z tych obu funkcji, ale opiesz, dlaczego to ma wg ciebie nie dzialac?
3. swego czasu do franny dodalem opcje konwertowania plikow tekstowych atari<->unix. jesli ktos by reflektowal, to na sf wrzuce nowsza wersje.

15

StrC konwertuje liczbe dwubajtowa na ciag tekstowy (czyli z 1 robi sie tekst "1" o dlugosci 1 znaku, a z 60000 robi sie teskt "60000" o dlugosci 5 znakow).
PrintE po prostu drukuje na ekranie ciag tekstowy.

A ma nie dzialac dlatego, ze w petli przypisujemy DYNAMICZNIE do pozycji 0 tabeli generowane w locie ciagi tekstowe o roznej dlugosci (od 1 do 5 znakow). Nie moze to dzialac tak, ze do tabeli wpisywane sa ich adresy przy kompilacji, bo w momencie kompilacji nie istnieja.

To moze dzialac tylko w jeden sposob: w momencie przypisania nowej wartosci tekstowej do TABELA(0), wartosc ta jest umieszczana gdzies w wolnej pamieci i jej adres (dwa bajty) jest wpisywany do tabeli, a pamiec zajeta przez poprzednia wartosc jest zwalniana.
Ale po 60000 takich operacji pamiec Atari bylaby totalnie poszatkowana.
Zreszta to jest sprzeczne z sama idea poczatkowego deklarowania zmiennych i kompilacji i byloby strasznie niewydajne.

16

1. dzieki za wyjasnienie.
2. poprawne to nie jest - fakt, ale niekoniecznie doprowadzi do wylotu/zwisu. zauwaz, ze tabela(0) wskazuje na jakis adres, pod ktorym pierwotnie znajduje sie tekst 'a'. strc nadpisuje ten tekst (i kilka kolejnych bajtow), 60000 razy to robi, ale ciagle w ten sam obszar - nigdzie nie zmieniasz zawartosci samej tabeli. szczesliwie nie ma tam zadnych krytycznych danych, wiec program dziala. pewnie gdyby program byl wiekszy to moglbys miec pewne problemy (tdc ma tu pewne doswiadczenia ;) ).

17

nosty napisał/a:

Wiecie co byloby najlepsze? Zmiana w pluginie do Total Commandera (bo tego uzywam), zeby sie dalo ustawic, ze jesli kopiuje do/z ATR'a plik o konkretnym rozszerzeniu (*.txt, *.act) to w locie nastepuje konwersja znakow konca linii.

Chcecie - dopisze taką OPCJE do plugina.... wydaje się proste...

18

No ja BARDZO prosze jesli to nie jest duzy problem.
Pewnie do przerzucania programu w roznych basicach tez by sie przydalo...

19

nosty napisał/a:

Cosi, dzieki, ale Perl by jeszcze bardziej skomplikowal sprawe :) (Zreszta nienawidze dranstwa, a niestety w pracy czasami musze cos poprawiac w tym jezyku pod unixem).

No mozesz uzyc PHP jak perferujesz bardziej niz Perl.
Ja tam do skryptow shellowych wole Perla.

20

Ale co za roznica PHP, Perl, czy HEX Editor (ktorego teraz uzywam)? Chodzi wlasnie o to zeby wyeliminowac ten krok wogole. I zmiana pajero w pluginie to zalatwi. I bedzie good :)

21

pajero napisał/a:
nosty napisał/a:

Wiecie co byloby najlepsze? Zmiana w pluginie do Total Commandera (bo tego uzywam), zeby sie dalo ustawic, ze jesli kopiuje do/z ATR'a plik o konkretnym rozszerzeniu (*.txt, *.act) to w locie nastepuje konwersja znakow konca linii.

Chcecie - dopisze taką OPCJE do plugina.... wydaje się proste...

Kcemy, ladnie prosiemy :)

<-- Kontakt przez "E-mail" gdyż albowiem moja skrzynka "PW" jest pełna i zaprawdę nie mam czego usunąć.

--== Kup Pan/i dyskietkę http://www.atari.org.pl/forum/viewtopic.php?id=18887 ==--

22

Do Atr to łatwo, Enter to 155.
A z Atr to jak kończyć linie, /r/n czy /r czy inaczej jeszcze ??

23

Nie wiem co to /r/n ale konwersja musi byc do formatu windowsowego CR LF ($0D 0A) lub unixowego - LF. Kazdy porzadny edytor obsluguje oba standardy.
Wazne, zeby mozna bylo w opcjach wybrac dla jakich plikow (z jakim rozszerzeniem) ma byc wykonywana ta konwersja.

24

no właśnie o to się pytałem :lol:

25

nosty napisał/a:

Nie wiem co to /r/n

\n  Match newline
\r  Match return