1

Temat: [skrypt] Atari Basic - kolorowanie składni

Witam :)
Na razie malutka przymiarka do atarowskiej działalności - skrypt (klasa PHP 5) kolorujący składnię programów w Atari Basicu. Działanie jest proste: podajemy niesformatowany tekst, otrzymujemy sformatowany w postaci HTML. Przykład działania można zobaczyć na mojej stronie; tekst który pojawia się w ramce można skopiować np. do Worda.
Na razie skrypt jest bardzo biedny - nie koloruje słów kluczowych "upchniętych" bez odstępów, za to koloruje słowa kluczowe w komentarzach i cudzysłowach. To jest do dopracowania. Zastanawiam się też nad dodaniem obsługi kodu ATASCII.
Liczę na komentarze, również krytyczne, zwłaszcza na opinie dotyczące sensu robienia czegoś takiego.
Strona ze skryptem do pobrania i przetestowania (Ksq 0.0.1):
http://cosi.com.pl/skrypty.php
Pozdrowienia!

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

Odp: [skrypt] Atari Basic - kolorowanie składni

A moze kolorowac Turbo Basic XL?

Kaz/Rohar
Prowadzę stronę dla obłąkanych: http://atari.online.pl/

3

Odp: [skrypt] Atari Basic - kolorowanie składni

... E e... to zamęt wprowadza, Oko nie lubi takich skoków, tekst ma być jednolity wtedy łatwiej przyswajalny.

4

Odp: [skrypt] Atari Basic - kolorowanie składni

Zenon - chyba Twoje oko ;P
Kazde inne dobrze sie czuje majac punkty orientacyjne pozwalajace na szybsza orientacje w przewijanym kodzie.
Dlatego wszystkie edytory dla programistow maja kolorowanie skladni.

5

Odp: [skrypt] Atari Basic - kolorowanie składni

Kaz: Na razie nie, ale to jest kwestia zamiany jednego arraya. O ile oczywiście TB XL ma podobne reguły składniowe jak jego starszy brat :)

Zenon/Dial: Dzięki bogom za edytor Kate ;) Gdyby nie kolorowanie składni w PHP/Perlu, to zapłakałbym się chyba szukając pierwszego lepszego buga. Druga sprawa to prezentacja kodu - na przykład na forum. Forum php.pl ma kolorowanie kodu w postach dzięki wbudowanej w PHP funkcji highlight_string().

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

6

Odp: [skrypt] Atari Basic - kolorowanie składni

Pozwolę sobie mały OT... Jakim sposobem wkleić napisany pod blaszakiem kod do naszego emulka? Nie widzę takiej opcji w emulku, a za bardzo nie wiem w jakim formacie powinienem zapisać plik tekstowy na dyskietce (makeATRem), aby potem go zgrabnie wczytać. Jak to zrobić odwrotnie? Czyżby był jakiś fajny konwerterek txt2xxx?

Pozdrawiam
Maciej

7

Odp: [skrypt] Atari Basic - kolorowanie składni

da się z hdd... ENTER"H1:mojplik.bas" nie pamiętam, jakie znaki końca wiersza trzeba było wymusić.

//EDIT:

LIST"H1:MY.BAS"

daje taką postać pliku:
[ansi]10 REM ATARI FILE?20 PRINT "TO EST TEKS"?[/ansi]
czyli "<cr><lf>" windowsowskie trzeba reg_repl na ">"

Ostatnio edytowany przez maw (2008-03-03 01:55:49)

___
Press play on tape...

8

Odp: [skrypt] Atari Basic - kolorowanie składni

Do tego co napisał maw, dodam jeszcze dwa naprawdę króciutkie skrypciki w Perlu:
- ten zamienia atarowskie znaki końca linii na linuksowy $13 (można zmienić na windowsowy CR/LF, zamieniając \n na \n\r):

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

- a ten odwrotnie:

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

W Basicu wymiana plików z pecetem odbywa się oczywiście poprzez LIST/ENTER. Action! też zapisuje swoje pliki w formacie ATASCII.

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

9

Odp: [skrypt] Atari Basic - kolorowanie składni

Skrypt nie zmienia wielkości znaków w nazwie zmiennej. Generalnie na wielkie litery można zmieniać wszystko co występuje poza cudzysłowami i nie jest komentarzem.

BTW:
0x0d - \r (13) - koniec wiersza w MacOS
0x0a - \n (10) - koniec wiersza w uniksach
0x0d, 0x0a - \r\n (13, 10) - koniec wiersza w DOS-ie i Windows

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

10

Odp: [skrypt] Atari Basic - kolorowanie składni

scalak napisał/a:

Pozwolę sobie mały OT... Jakim sposobem wkleić napisany pod blaszakiem kod do naszego emulka? Nie widzę takiej opcji w emulku, a za bardzo nie wiem w jakim formacie powinienem zapisać plik tekstowy na dyskietce (makeATRem), aby potem go zgrabnie wczytać. Jak to zrobić odwrotnie? Czyżby był jakiś fajny konwerterek txt2xxx?

To może ja pomogę. Można to zrobić tak: Gdy mamy gotowy tekst programu zapisujemy go jako plik "txt". Następnie trzeba zrobić konwersję do Atascii ze względu na inny sposób kodowania końca linii. Tutaj można się posłużyć emulatorem Atari800win. Wchodzimy w opcję "Convert", "Ascii to Atascii", wskazujemy plik i wybieramy opcję "EOL only". Potem uruchamiam program "MakeATR" i dodaję skonwertowany plik do dyskietki (pliku atr). Potem podpinamy plik do stacji dysków w emulatorze i wczytujemy program Basicową komendą "Enter"

Jak zrobić odwrotnie? Czyli wylistować program do powiedzmy windowsowego notatnika? Jest w emulatorze plugin do drukarki. Trzeba go skonfigurować aby wysyłał tekst do programu Notanik. Sorki, nie powiem z pamięci co tam trzeba wybrać i zaznaczyć. Jest to dosyć proste. Jakbyś sobie nie radził to daj znać to wtedy sprawdzę i napiszę co tam dokładnie trzeba zrobić.
Potem wystarczy wpisać w basicu
LIST "P:" i po chwili otworzy się nam okienko Notatnika z listingiem programu.

11

Odp: [skrypt] Atari Basic - kolorowanie składni

Lizard: cholera, ja cały czas żyłem w przeświadczeniu, że uniksowy newline ma kod $13 :D
Dzięki za sugestię, faktycznie zmienne też można "powiększyć", to nie C ;)

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

Odp: [skrypt] Atari Basic - kolorowanie składni

Dziękuje wszystkim za pomoc! Przetestowałem metodę Urborga jest miodzio.

13

Odp: [skrypt] Atari Basic - kolorowanie składni

Cosi napisał/a:

Dzięki za sugestię, faktycznie zmienne też można "powiększyć", to nie C ;)

Ogólnie. Atari Basic rozumie tylko wielkie litery. Próba wpisania instrukcji lub nazwy zmiennej małymi literami kończy się błędem.

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

14

Odp: [skrypt] Atari Basic - kolorowanie składni

Lizard napisał/a:

Próba wpisania instrukcji lub nazwy zmiennej małymi literami kończy się błędem.

a pomyśleć, że to tylko różnica jednego bitu...

___
Press play on tape...

15

Odp: [skrypt] Atari Basic - kolorowanie składni

OIDP, to można było za to wprowadzać instrukcje w inwersie i to też różnica jednego bitu, z tym tylko, że siódmy bit łatwiej sprawdzić niż "bit wielkości znaku".

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

16

Odp: [skrypt] Atari Basic - kolorowanie składni

chyba tak samo latwo - rozkazem BIT ?

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

17

Odp: [skrypt] Atari Basic - kolorowanie składni

właśnie - co to za różnica siódmy czy szósty (jeżeli się nie mylę) bit ?

//EDIT: nie mylę się:

? CHR$(65)
? CHR$(65+32)
? CHR$(65+32+128)

Ostatnio edytowany przez maw (2008-03-06 11:18:53)

___
Press play on tape...

18

Odp: [skrypt] Atari Basic - kolorowanie składni

? CHR$(123)
? CHR$(123-32)
? CHR$(96)
? CHR$(96-32)
Zawsze mam rację, tylko nikt mnie nie słucha.

19

Odp: [skrypt] Atari Basic - kolorowanie składni

Lizard, czego to ma dowodzić ? :|

0x20: 00100000
---------------------
0x7B: 01111011
- 0x20:
0x5B: 01011011

0x60: 01100000
- 0x20:
0x40: 01000000

Ostatnio edytowany przez maw (2008-03-06 17:37:47)

___
Press play on tape...

20

Odp: [skrypt] Atari Basic - kolorowanie składni

xxl, pobierając bajt z pamięci od razu "widzisz" stan siódmego bitu. W przypadku piątego nie jest już tak łatwo.

maw, "dowiodłem", że nie można ot tak dodawać/odejmować lub ustawiać/kasować piątego (a nie szóstego) bitu jeśli naszym celem jest zmiana wielkości litery. W przypadku zamiany znaku w inwersie na normalny nie musimy, a nawet nie powinniśmy sprawdzać, czy bit jest ustawiony.

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

21

Odp: [skrypt] Atari Basic - kolorowanie składni

to moze jednym zamachem zalatwic male i inverse:

lda znak
and #%01011111

chyba basic xe mozna tak ustawic, ze nie rozroznia malych/duzych/inverse.

do Cosi:
nie patrzylem na skrypt ale rozumiem, ze czyta on TEKST i formatuje? gdzies na sieci znalazlem instrukcje jak czytac stokenizowany program basica (nawet kilku dialektow na atari z przykladowym programem) dodalem do atariki ale chyba ktos wykasowal - mozna to przeciez odnalezc.
a gdybys tak napisal programik czytajacy stokenizowanego basica i kolorowal skladnie? hmmm, a gdybys tak napisal programik ktory moze zapisywac stokenizowanego basica? mielibysmy na pc crossTurboBasicaXL :-)

czyta to Tebe?

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

22

Odp: [skrypt] Atari Basic - kolorowanie składni

Lizard, ascii też został zbudowany w oparciu o bloki znaków, jeżeli wiemy, że interesuje nas konkretny blok znaków, to spokojnie możemy operację na bitach zrobić - co pokazuje maskowanie xxla i moje podkreślenie+pogrubienia. To co Ty pokazałeś zadziałało, ale na kompletnie innym bloku znaków.

//EDIT: tak, piąty, nie szósty - jak napisałem na początku

Ostatnio edytowany przez maw (2008-03-07 12:10:07)

___
Press play on tape...

23

Odp: [skrypt] Atari Basic - kolorowanie składni

xxl: Tak, istotnie, zrobiłem to w najprostszy sposób, tzn. wczytuję plik do zmiennej tekstowej i za pomocą wyrażeń regularnych wydłubuję słowa kluczowe z zastrzeżeniem pewnych warunków. Przyznaję, że trochę utknąłem na warunku wyciągającym tylko słowa _poza_ cudzysłowami - może ktoś zna wyrażenia regularne Perla?
Czytanie/zapisywanie stokenizowanego Basica to świetny pomysł, ale: 1) trochę się mija z celem mojego skrypciku, 2) na razie skupiłem się na większym, dużo ciekawszym i chyba pożyteczniejszym projekcie, którym się pochwalę może w ten weekend :)

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

24

Odp: [skrypt] Atari Basic - kolorowanie składni

A propos stokenizowanego zapisu Basica: De Re Atari - 10 rozdział

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

25

Odp: [skrypt] Atari Basic - kolorowanie składni

A propos stokenizowanego zapisu w BASIC-u, sto lat temu opisał to po polsku Zientara, a lista tokenów razem z (krótkim, przyznaję) omówieniem struktury programu jest od pięćdziesięciu lat w Atariki ;)

KMK
? HEX$(6670358)