atarionline.pl Łata do xxd - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthormono
      • CommentTime26 Aug 2011 13:08 zmieniony
       
      Zrobiłem małą łatkę do programu xxd pozwalającą na nałożenie maski na znaki ASCII pokazywane z prawej strony. Pozwala to na łatwe zorientowanie się w tekstach zapisanych w inverse video w plikach z Atari.
      xxd znajduje się w pakiecie vim-common (w ubuntu 8.04); dostarczany jest z vim więc pociągnąłem wersję 7.3 i tąż połatałem.
      A co zrobiłem? Dodałem parametr -m mask, którym podaje się maskę na znaki ASCII. Żeby pokazać znaczki zapisane w inverse wystarczy obciąć ostatni bit znaku - maska powinna być 0x7f, więc po:
      $ xxd -g 1 -m 0x7f Wizard.cmc | head

      naszym oczom powinna pokazać się sygnatura pliku CMC.
      Poniżej procedura nałożenia łaty i instalacji poprawionego programu u siebie:
      $ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
      $ tar jxf vim-7.3.tar.bz2
      $ cd vim73/src/xxd
      $ wget http ://mono.i-demo.pl/vim-7.3-xxd-1.10-atari.patch
      $ patch -p0 xxd.c vim-7.3-xxd-1.10-atari.patch
      $ make
      $ sudo install -s xxd $(which xxd || echo /usr/local/bin/)

      Edit: http z resztą ma być pisane łącznie (wstawiłem spację, bo inaczej engine forum zamieniał mi to na linka)
      Edit 2: Dodałem jeszcze switch -A do konwersji kodów wewnętrznych ANTICa na ATASCII.
      • 2:
         
        CommentAuthorjhusak
      • CommentTime26 Aug 2011 21:08 zmieniony
       
      Zacna inicjatywa, może być pomocne :) Chociaż myślę sobie, że można by prościej pisząc nowe narzędzie skryptowe (lub w C), które używa xxd wewnątrz i dokonuje translacji w locie, wtedy nie ma problemu przy aktualizacjach.
      • 3: CommentAuthormono
      • CommentTime26 Aug 2011 22:08 zmieniony
       
      Tak myślałem sobie też. I wykorzystać przetwarzanie potokowe. Można zrobić narzędzie w bashu. Takie mam do konwersji tekstów z ATASCII na PC i odwrotnie. Choć tu lepsza byłaby pewnie tablica do konwert. Albo innego iconv.

      Edit: A w ogóle to xxd można wyjąć z vima i kompilować samodzielnie zwykłym
      cc -o xxd xxd.c
      • 4:
         
        CommentAuthorjhusak
      • CommentTime27 Aug 2011 04:08 zmieniony
       
      Takie?
      export LC_ALL=C
      while [ "$1" ] ; do
      ! [ -f "$1.tmp" ] &&
      tr <"$1" "\233" "\n" >"$1.tmp" &&
      mv "$1" "$1~" &&
      mv "$1.tmp" "$1"
      shift
      done



      I na ATASCII

      export LC_ALL=C
      while [ "$1" ] ; do
      ! [ -f "$1.tmp" ] &&
      tr <"$1" "\n" "\233" | tr -d "\r" >"$1.tmp" &&
      mv "$1" "$1~" &&
      mv "$1.tmp" "$1"
      shift
      done
      • 5: CommentAuthormono
      • CommentTime27 Aug 2011 09:08 zmieniony
       
      Hehe. ATASCII to nie tylko EOL!
      Takie:
      #!/bin/bash
      CMD=$(basename $0)

      function toascii
      {
      DATA=$(cat | xxd -c 1 -g 1 | cut -f 2 -d " ")
      for d in $DATA
      do
      if [ "$d" != "9b" ]
      then
      D=$(printf "%02x" $((0x$d & 0x7f)))
      else
      D=$d
      fi
      echo -ne "\x$D"
      done
      }

      #\x1c strzalka w gore
      #\x1d strzalka w dol
      #\x1e strzalka w lewo
      #\x1f strzalka w prawo
      #\x08 trojkat w prawym dolnym rogu
      #\x88 trojkat w lewem gornym rogu
      ATARI=$(echo -ne "\x01\x03\x05\x0c\x0e\x0f\x13\x1a\x0b{\x18\`")
      UNIX=$(echo -ne "ąćęłńóśżźŁŻŹ" | iconv -t iso8859-2)
      case "${CMD}" in
      "fromatari")
      toascii | tr "${ATARI}" "${UNIX}" | atari2unix | iconv -f iso8859-2
      ;;
      "toatari")
      iconv -t iso8859-2 | unix2atari | tr "${UNIX}" "${ATARI}"
      ;;
      *)
      echo "Usage: fromatari|toatari"
      esac
      exit 0

      Konwerter nazwałem ataricvn.sh i dołączam do niego linki symboliczne fromatari i toatari.
      Nie jestem zadowolony z tego kodu, bo jest koszmarnie wolny. Twój sposób pobierania znaków jest ładniejszy. Pozwolisz, że skorzystam :)

      Edit: atari2unix i unix2atari to zwykłe tr konwertujące EOL.
      • 6:
         
        CommentAuthorjhusak
      • CommentTime27 Aug 2011 14:08 zmieniony
       
      Pozwolę, dlatego zamieściłem. A to, że ATASCII to nie tylko eol, to wiem, jednak tak mi wystarczało :)

      Ja do przetwarzania tekstów używam tylko w zasadzie: sed i awk, tr, ew. sort połączone bashem. W bashu staram się nie używać przetwarzania, bo kilkaset znaków na sekundę to niewiele.

      Jak opiszesz dwie tablice translacji, to jedno "tr" wystarczy :)