Październik 25, 2014

Konwersja ATASCII/ UTF-8.

Na podstawie tablicy konwersji z patcha Mono do libiconv, napisałem skrypt w Pythonie do konwersji do i z ATASCII. Może się komuś przyda :).

#!/usr/bin/python3
import sys

if len(sys.argv) != 3:
    print("Usage:", sys.argv[0], "--unicode||--atascii")
    exit(0)

d = {0: 9829, 1: 9500, 2: 9621, 3: 9496, 4: 9508, 5: 9488, 6: 9585, 7: 9586, 8: 9698,
    9: 9623, 10: 9699, 11: 9629, 12: 9624, 13: 9620, 14: 9601, 15: 9622, 16: 9827,
    17: 9484, 18: 9472, 19: 9532, 20: 9679, 21: 9604, 22: 9615, 23: 9516, 24: 9524,
    25: 9612, 26: 9492, 27: 9243, 28: 8593, 29: 8595, 30: 8592, 31: 8594, 32: 32,
    33: 33, 34: 34, 35: 35, 36: 36, 37: 37, 38: 38, 39: 39, 40: 40, 41: 41, 42: 42,
    43: 43, 44: 44, 45: 45, 46: 46, 47: 47, 48: 48, 49: 49, 50: 50, 51: 51, 52: 52,
    53: 53, 54: 54, 55: 55, 56: 56, 57: 57, 58: 58, 59: 59, 60: 60, 61: 61, 62: 62,
    63: 63, 64: 64, 65: 65, 66: 66, 67: 67, 68: 68, 69: 69, 70: 70, 71: 71, 72: 72,
    73: 73, 74: 74, 75: 75, 76: 76, 77: 77, 78: 78, 79: 79, 80: 80, 81: 81, 82: 82,
    83: 83, 84: 84, 85: 85, 86: 86, 87: 87, 88: 88, 89: 89, 90: 90, 91: 91, 92: 92,
    93: 93, 94: 94, 95: 95, 96: 9830, 97: 97, 98: 98, 99: 99, 100: 100, 101: 101,
    102: 102, 103: 103, 104: 104, 105: 105, 106: 106, 107: 107, 108: 108, 109: 109,
    110: 110, 111: 111, 112: 112, 113: 113, 114: 114, 115: 115, 116: 116, 117: 117,
    118: 118, 119: 119, 120: 120, 121: 121, 122: 122, 123: 9824, 124: 124, 125: 8624,
    126: 9664, 127: 9654, 128: 9829, 129: 9500, 130: 9609, 131: 9496, 132: 9508,
    133: 9488, 134: 9585, 135: 9586, 136: 9700, 137: 9627, 138: 9701, 139: 9625,
    140: 9631, 141: 9607, 142: 9601, 143: 9628, 144: 9827, 145: 9484, 146: 9472,
    147: 9532, 148: 9679, 149: 9600, 150: 9615, 151: 9516, 152: 9524, 153: 9616,
    154: 9492, 155: 10, 156: 8593, 157: 8595, 158: 8592, 159: 8594, 160: 9608,
    161: 33, 162: 34, 163: 35, 164: 36, 165: 37, 166: 38, 167: 39, 168: 40, 169: 41,
    170: 42, 171: 43, 172: 44, 173: 45, 174: 46, 175: 47, 176: 48, 177: 49, 178: 50,
    179: 51, 180: 52, 181: 53, 182: 54, 183: 55, 184: 56, 185: 57, 186: 58, 187: 59,
    188: 60, 189: 61, 190: 62, 191: 63, 192: 64, 193: 65, 194: 66, 195: 67, 196: 68,
    197: 69, 198: 70, 199: 71, 200: 72, 201: 73, 202: 74, 203: 75, 204: 76, 205: 77,
    206: 78, 207: 79, 208: 80, 209: 81, 210: 82, 211: 83, 212: 84, 213: 85, 214: 86,
    215: 87, 216: 88, 217: 89, 218: 90, 219: 91, 220: 92, 221: 93, 222: 94, 223: 95,
    224: 9830, 225: 97, 226: 98, 227: 99, 228: 100, 229: 101, 230: 102, 231: 103,
    232: 104, 233: 105, 234: 106, 235: 107, 236: 108, 237: 109, 238: 110, 239: 111,
    240: 112, 241: 113, 242: 114, 243: 115, 244: 116, 245: 117, 246: 118, 247: 119,
    248: 120, 249: 121, 250: 122, 251: 9824, 252: 124, 253: 8624, 254: 9664, 255: 9654}

mode=0

if sys.argv[1] == '--unicode':
 f = open(sys.argv[2], 'rb')
 output=str()
 mode=1
else:
 f = open(sys.argv[2], 'r', encoding='utf-8')
 output=bytearray()

def overwrite():
  if mode==1:
   f = open(sys.argv[2], 'w', encoding='utf-8')
  else:
   f = open(sys.argv[2], 'bw')
  f.write(output)
  f.close()

lines = f.read()
f.close()

if mode==1:
 for i in lines:
  if i in d:
   output+=chr(d[i])

if mode == 0:
 import collections
 sd = collections.OrderedDict(sorted(d.items()))
 dinv = {}
 for k,v in sd.items():
  if v not in dinv:
   dinv[v] = k
 for i in lines:
  if ord(i) in dinv:
   output.append(dinv[ord(i)])

overwrite()

A tutaj statyczne binarki iconv dla Linuksa i Windows z najnowszym patchem dodającym kodowania:

ATARI ATARIST RISCOS-LATIN1 ATARI8 ATARI8-ATASCII ATARI8-GRAPH ATASCII ATARI8-ATASCII2 ATARI8-INT  ATASCII2 ATARI8-KAREN ATARI8-PL ATARI8-AWP ATARI8-XLENT ATARI8-PANTHER ATARI8-PE ATARI8-CAPEK ATARI8-CZ ATARI8-TCHEKO ZX80 ZX 81 ZX82 ZXSPECTRUM ZX82-PL ZXSPECTRUM-PL PETSCII PETSCII-UC PETSCII-LC CP867 CP895 KAMENICKY  KEYBCS2 

Wrzesień 28, 2014

Fuse / Hatari / Atari800 / Vice / Snes9x-gtk z padem na USB.

Testowałem ostatnio Fuse (emulator ZX Spectrum), Hatari (emulator ST), Atari800,  Vice (emulator Commodore) i Snes9x-gtk/zsnes (emulatory Super Nintendo). Ku mojemu zdziwieniu we wszystkich tych emulatorach idealnie działa pad Speedlink Thunderstrike, ktory jest przez system widziany jako standardowy joy, dostępny przez /dev/input/js0.

W Fuse, w opcjach Peripherials – > General włączamy interfejs Kempston, a potem w ustawieniach joysticka, wystarczy wybrać typ joya Kempston.

Fuse zasługuje na osobną wzmiankę, bo jest to chyba najlepszy emulator dla PC jaki widziałem do tej pory. Nie działała mi opcja –full-screen, pomimo że binarka fuse była zlinkowana z SDL. Okazało się, że aby fuse używał SDL do gui, trzeba kompilować z –with-sdl. Po dodaniu tej opcji program traci menu okienkowe, pojawia się za to menu ekranowe w stylu Spectrum 128K jak na powyższych screenach, obsługiwane za pomocą joysticka :).

Tak swoją drogą jakby ktoś miał zbędnego spectruma, chętnie przygarnę.

Atari800 dziala out-of-the-box (co mnie chyba najbardziej zdziwilo i ucieszylo), a w Hatari w ustawieniach joya trzeba wybrać „use real joystick”, emulator sam wykrywa pada.

Emulatory to dobra rzecz. Np jak tv jest okupowany przez żonę lub dzieci.

Sierpień 16, 2014

Slacko.

Zainstalowałem dziś na próbę na pendrajwie Slacko Puppy. Jak sama nazwa wskazuje – Puppy na bazie Slackware (i zgodny z nim). Oczywiście ma toto działać na Eee PC 901.

Działa sprytnie. Cały live-obraz zajmuje 160MB i Slacko ładuje go w całości do pamięci. Można dodawać oprogramowanie, można stworzyć własne iso na podstawie tego co w pamięci. Chyba się zaprzyjaźnimy.

Slacko_2014-08-16_021453

Jeden zauważony problem: firmware do karty wifi Ralink RT2860 nie może być dowiązaniem symbolicznym do /lib/modules/all-firmware/rt2x00/lib/firmware/rt2860.bin jak to sie zwykle robi. Trzeba go skopiować do /lib/firmware inaczej moduł go nie załaduje. Opis problemu znalazłem na forum Ubuntu (wpis sprzed 2 lat) więc to pewnie przypadłość kernela 3.4.82. W Archu ta karta działa a firmware jest podlinkowany jak wyżej.

Małe, kompletne distro w sam raz dla Eee PC

Tagi:
Sierpień 13, 2014

ZX Spectrum 128 na MIST!

Kolejny prezent od Tilla Harbauma – tym razem port rdzenia Mike’a Stirlinga z dodaną obsługą emulacji magnetofonu (pliki csw) i joysticka via Kempston. Jest to drugi po atari800 rdzeń, który sprawił mi ogromną frajdę, ponieważ zawsze chciałem mieć Spectruma (koledzy ze SP117 w Krakowie pewnie pamiętają lekcje WF ze Spectrum w roli głównej :)). I prawdę mówiąc gumiak to był pierwszy komputer jaki widziałem w życiu…

Jest jeszcze jedna rzecz o której muszę wspomnieć: XXL i jego porty gier ze Spectruma (grałem w Jetpac i Deathchase). Teraz dopiero widzę jak bardzo niedoceniany jest za te konwersje na małe Atari.

 

 

Tagi: ,
Lipiec 20, 2014

Effectus na starych linuksach.

Zdarza mi się ostatnio testować i kompilować (na prośbę przesympatycznego autora) Effectusa, czyli cross compiler Atari Action! na PC dla Linuksa.

Zastanawiałem się jak wypada kompatybilność statycznych binarek, które kompiluje na Archu. No i wg moich ustaleń na wszystkim co ma glibc w wersji 2 powinno działać.
Testy przeprowadziłem na dystrybucji którą znam i której kiedyś używałem: Slackware w wersjach 1.0.1, 2.2.1 i 7.0.

Wybór był nieprzypadkowy. Na początku myślałem, że wystarczy w kernelu obsługa formatu binarnego ELF. Slackware 1.0.1 z kernelem 0.99.12 jeszcze tego formatu nie obsługiwał. Kolejny, czyli Slackware 2.2.1 miał już kernel 1.2.1 czyli ELF na 100% obsługiwany. Segfaulty sugerowały, że to jednak libc się gryzie. Kiedyś dawno zrobiłem taki eksperyment na potrzeby dyskusji o ABI kernela i moje programiki działały z kernelem 0.1, ale one nie używały libc, tylko wprost funkcje os-u.

Pierwszym Slackiem z glibc2 była wersja 7, od ktorej zaczęła się moja poważniejsza przygoda z Linuksem. Rok 1999, full-wypas kernel 2.2. No i jak się spodziewałem, binarki effectusa i madsa zadziałały bez problemu.

A tak swoją drogą instalacja Linuksa z 1993 w 2014 to ciekawe doświadczenie. Qemu nie jest w stanie zaemulować kontrolera scsi, czy też obsługiwanego 20 lat temu CD romu, ale to nie problem. Można stworzyć obraz dysku w pliku (dd) i w nim utworzyć system plików, np msdos. W ten sposób stworzyłem dysk zawierający wszystkie serie pakietow (można taki obraz zamontować z -o loop=/dev/loop0), który potem montowałem w trakcie instalacji do /root/dos, a instalator pozwala na instalację pakietów ze wskazanego, wcześniej zamontowanego nośnika. Wygodne to i szybkie rozwiązanie, a dziala chyba we wszystkich wersjach Slackware.

Niesamowite jest to, jak przyjemnym w użytkowaniu był Slackware już w 93 roku ubiegłego stulecia…

A działanie binarek effectusa/madsa  na dystrybucji z 1999 roku, czyli sprzed 15 lat daje do myślenia.

Tagi:
Lipiec 7, 2014

FPGA64 na Mist.

No i jest. Bez obsługi stacji, działa z tzw „prg file injectorem”, czyli ładowaniem programu bezpośrednio do pamięci. Pierwszy wydłubany prg z pliku d64 jak widać na zrzutach działa. Co ciekawe mam urywające się nieco scrolle zarówno na Atari z VBXE, jak i atari800 na Mist, a FPGA64 scrolluje się póki co całkowicie płynnie… Wypada temat podrążyć u źródła, bo obraz z konwertera poza tym scrollem jest perfekcyjny.

Na uwagę zasługuje też menu osd z możliwością zmiany rdzenia (jak w core st i minimig).

Wreszcie będę mógł porownać C64 do mojego ulubionego Atari :).

 

Tagi: ,
Czerwiec 30, 2014

Atari 2600 na Mist.

Nie wyśpię się dzisiaj. Jakby idealnego core a800 było mało, to dziś pojawił się port a2601:

https://retromaster.wordpress.com/a2601/

https://code.google.com/p/mist-board/source/browse/trunk/bin/cores/a2600/readme.txt?spec=svn287&r=287

Jeszcze tylko C64 i będzie komplet.

Tagi:
Maj 24, 2014

Mist: ZX81

Bardzo mnie ta zmiana w changelogu ucieszyła:

https://code.google.com/p/mist-board/source/detail?r=274

Teraz tylko jeszcze core C64 i MIST będzie najlepszym na świecie projektem retro-FPGA.

Update:

No i się podziało https://code.google.com/p/mist-board/source/list

1. Nowy core atari800 – mistrzostwo, działa pięknie. Nawet beep’em all XXL-a w końcu udało się odpalić (xbios na Side nie działa). Zgodność z oryginałem jak dla mnie 100%. Są tryby turbo, 4MB ramu. Pojawił się nawet core z wyjściem RGB więc zrobię odpowiedni kabel  i podłącze się do tv bez konwertera.

2. Do odpalenia c64 niestety brakuje obsługi stacji 1541. Kod opensource który jest nie jest zgodny licencyjnie z tym rdzeniem, więc trzeba by go napisać od nowa, a szkoda.

 

Tagi:
Kwiecień 25, 2014

Best DT cover ever!

Zawsze lubiłem zamiłowanie do „odd time signatures” Mike’a Portnoya, ale w tym wykonaniu… respect!

Kwiecień 19, 2014

Następne pokolenie atarowców.

Moje młode zajawiły się na Boulder Dash-a. Zwłaszcza Kuba (4 lata). I o dziwo radzi sobie calkiem nieźle. Minęło 40 minut a on dalej próbuje uciec przed kamykami :).

No i dla Kuby Boulder Dash to zabawa w kucanego berka w telewizorze :)

PS: Dzisiaj ponad godzinę wałkował Robbo i Boulder Dasha na zmianę. Niezły zawodnik.

Tagi:
Obserwuj

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.