2,251

(64 odpowiedzi, napisanych Emulacja - 8bit)

Albo CP/M z LDW pod emulatorem.

2,252

(64 odpowiedzi, napisanych Emulacja - 8bit)

A co ma się dziać, jak w emulatorze wciśniesz F12/F7?

2,253

(341 odpowiedzi, napisanych Fabryka - 8bit)

Oczywiście. Wtedy kiedy będzie można ją już kupić.

2,254

(57 odpowiedzi, napisanych Fabryka - 8bit)

Kernelowy support dla tablicy partycji msdos (to nie są moduły) też wyświetla informacje, ale dopiero po wykryciu i zarejestrowaniu wszystkich partycji.
Kolejne partycje w linijce:

sd 33:0:0:0: [sdb] sdb: sdb1 sdb2

są generowane za pomocą put_partition(), po czym po rozpoznaniu wszystkich partycji w osobnej pętli generowane są już szczegółowe informacje. Tak to będzie u mnie też zrobione.
Kończy się właśnie pisać support do APT.
Generalnie na razie support dla tych tablicy partycji jest okrojony do rozpoznania tablicy partycji i udostępnienia partycji w /dev/. Żaden program typu [C]FDISK na razie nie potrafi manipulować taką tablicą.

2,255

(14 odpowiedzi, napisanych Bałagan)

Na przyrodzie Pythona.

2,256

(138 odpowiedzi, napisanych Zloty)

Hehe. To w kategorii beeper!

2,257

(57 odpowiedzi, napisanych Fabryka - 8bit)

Mam paczki, które wygenerowałem w opisany wyżej sposób i mogę je udostępnić (amd_64), ale pewnie nie każdy ma taką architekturę. No i ja dla potrzeb SIO2BSD ustawiam sobie jeszcze 1kHz zegar systemowy.

@jellonek: No właśnie kompletnie nie rozumiem dlaczego nie aktualizuje initrd. Niby paczki przygotowałem zgodnie z literą, a tu przy reboot zaskoczenie.
Na Atari 400/800 pewnie działają :) Zmienię na Atari 8-bit. APT (dla SIDE i nowych IDE+) będzie wkrótce obsługiwany.

@Amun-Ra: Dzięki za info o module-assistant. Ja wiem, że najfajniej się instaluje paczkę z managera, ale nie umiem póki co ich przygotować stąd te sążniste opisy instalacji każdego pacza :)

P.S. Paczki (z kmk/idea support + 1khz timer) są wystawione. Instalacja teraz wygląda tak:

$ su -
# cd /usr/src/
# wget linux-headers-2.6.32.46+drm33.20_1khz+atari8_amd64.deb
# wget linux-image-2.6.32.46+drm33.20_1khz+atari8_amd64.deb
# dpkg -i linux-headers-2.6.32.46+drm33.20_1khz+atari8_amd64.deb
# dpkg -i linux-image-2.6.32.46+drm33.20_1khz+atari8_amd64.deb
# update-initramfs -c -k 2.6.32.46+drm33.20
# update-grub

2,258

(57 odpowiedzi, napisanych Fabryka - 8bit)

Zrobiłem patch na kernel linuxowy w wersji 2.6.32, który implementuje support dla partycji KMK/IDEA.
Oto jak się to zachowuje po włożeniu karty CF z 4ma partycjami SDX:

$ tail -F /var/log/syslog
Oct 26 03:49:05 ox kernel: [  123.766072] pcmcia_socket pcmcia_socket0: pccard: PCMCIA card inserted into slot 0
Oct 26 03:49:05 ox kernel: [  123.766088] pcmcia_socket pcmcia_socket0: cs: memory probe 0x0c0000-0x0fffff: excluding 0xc0000-0xd3fff 0xe0000-0xfffff
Oct 26 03:49:05 ox kernel: [  123.771870] pcmcia_socket pcmcia_socket0: cs: memory probe 0x60000000-0x60ffffff: excluding 0x60000000-0x60ffffff
Oct 26 03:49:05 ox kernel: [  123.771906] pcmcia_socket pcmcia_socket0: cs: memory probe 0xa0000000-0xa0ffffff: excluding 0xa0000000-0xa0ffffff
Oct 26 03:49:05 ox kernel: [  123.771940] pcmcia_socket pcmcia_socket0: cs: memory probe 0xc0000000-0xc7ffffff: excluding 0xc0000000-0xc7ffffff
Oct 26 03:49:05 ox kernel: [  123.771978] pcmcia_socket pcmcia_socket0: cs: memory probe 0xe4100000-0xe43fffff: excluding 0xe4100000-0xe415ffff
Oct 26 03:49:05 ox kernel: [  123.783511] pcmcia 0.0: pcmcia: registering new device pcmcia0.0
Oct 26 03:49:05 ox kernel: [  123.824014] scsi7 : pata_pcmcia
Oct 26 03:49:05 ox kernel: [  123.824087] ata7: PATA max PIO0 cmd 0x6110 ctl 0x611e irq 18
Oct 26 03:49:06 ox kernel: [  123.976913] ata7.00: CFA: SanDisk SDCFX-2048, HDX 4.03, max PIO6
Oct 26 03:49:06 ox kernel: [  123.976922] ata7.00: 4001760 sectors, multi 0: LBA 
Oct 26 03:49:06 ox kernel: [  123.977790] ata7.00: configured for PIO0
Oct 26 03:49:06 ox kernel: [  123.978056] scsi 7:0:0:0: Direct-Access     ATA      SanDisk SDCFX-20 HDX  PQ: 0 ANSI: 5
Oct 26 03:49:06 ox kernel: [  123.978444] sd 7:0:0:0: Attached scsi generic sg3 type 0
Oct 26 03:49:06 ox kernel: [  123.978613] sd 7:0:0:0: [sdb] 4001760 512-byte logical blocks: (2.04 GB/1.90 GiB)
Oct 26 03:49:06 ox kernel: [  123.978728] sd 7:0:0:0: [sdb] Write Protect is off
Oct 26 03:49:06 ox kernel: [  123.978735] sd 7:0:0:0: [sdb] Mode Sense: 00 3a 00 00
Oct 26 03:49:06 ox kernel: [  123.978798] sd 7:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[b]Oct 26 03:49:06 ox kernel: [  123.979216]  sdb:Discovering Atari KMK/IDEA partition table OK
Oct 26 03:49:06 ox kernel: [  123.992429] Hard disk size is 4001760
Oct 26 03:49:06 ox kernel: [  123.992438] Partition 0 (pbeg 0, plen 65535, pclsize $80, pindex 0, pstats $80) in slot 1 sdb1 added
Oct 26 03:49:06 ox kernel: [  123.992450] Partition 1 (pbeg 65535, plen 65535, pclsize $80, pindex 0, pstats $80) in slot 2 sdb2 added
Oct 26 03:49:06 ox kernel: [  123.992460] Partition 2 (pbeg 131070, plen 65535, pclsize $80, pindex 0, pstats $80) in slot 3 sdb3 added
Oct 26 03:49:06 ox kernel: [  123.992470] Partition 3 (pbeg 196605, plen 65535, pclsize $80, pindex 0, pstats $80) in slot 4 sdb4 added
Oct 26 03:49:06 ox kernel: [  123.992480] Partition 4 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 5 passed
Oct 26 03:49:06 ox kernel: [  123.992488] Partition 5 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 6 passed
Oct 26 03:49:06 ox kernel: [  123.992496] Partition 6 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 7 passed
Oct 26 03:49:06 ox kernel: [  123.992503] Partition 7 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 8 passed
Oct 26 03:49:06 ox kernel: [  123.992511] Partition 8 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 9 passed
Oct 26 03:49:06 ox kernel: [  123.992518] Partition 9 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 10 passed
Oct 26 03:49:06 ox kernel: [  123.992526] Partition 10 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 11 passed
Oct 26 03:49:06 ox kernel: [  123.992534] Partition 11 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 12 passed
Oct 26 03:49:06 ox kernel: [  123.992542] Partition 12 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 13 passed
Oct 26 03:49:06 ox kernel: [  123.992550] Partition 13 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 14 passed
Oct 26 03:49:06 ox kernel: [  123.992558] Partition 14 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 15 passed
Oct 26 03:49:06 ox kernel: [  123.992565] Partition 15 (pbeg 0, plen 0, pclsize $00, pindex 0, pstats $00) in slot 16 passed[/b]
Oct 26 03:49:06 ox kernel: [  123.994343] sd 7:0:0:0: [sdb] Attached SCSI removable disk

$ ls -ltra /dev/
razem 1
drwxr-xr-x   2 root root           120 2011-10-26 03:49 bsg
drwxr-xr-x  16 root root          4180 2011-10-26 03:49 .
crw-rw----   1 root disk       21,   3 2011-10-26 03:49 sg3
drwxr-xr-x   2 root root          3600 2011-10-26 03:49 char
[b]brw-rw----   1 root disk        8,  20 2011-10-26 03:49 sdb4
brw-rw----   1 root disk        8,  17 2011-10-26 03:49 sdb1
brw-rw----   1 root disk        8,  19 2011-10-26 03:49 sdb3
brw-rw----   1 root disk        8,  18 2011-10-26 03:49 sdb2[/b]
drwxr-xr-x   2 root root           800 2011-10-26 03:49 block
[b]brw-rw----   1 root disk        8,  16 2011-10-26 03:49 sdb[/b]
drwxr-xr-x   6 root root           140 2011-10-26 03:49 .udev
crw-------   1 root root        5,   1 2011-10-26 03:49 console
crw-------   1 root root        4,   1 2011-10-26 03:49 tty1
crw-rw-rw-   1 root tty         5,   2 2011-10-26 03:50 ptmx

$ xxd -g 1 /dev/sdb1 | head -32
0000000: 00 01 00 04 e0 07 4c 40 04 12 00 ff ff 54 9b 10  ......L@.....T..
0000010: 02 00 d6 3b a3 03 48 44 44 20 20 20 20 20 01 01  ...;..HDD     ..
0000020: 21 00 02 fe 00 01 23 34 00 00 00 00 00 00 00 00  !.....#4........
0000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000040: a2 01 a9 00 95 9e 95 96 bd 21 04 95 92 95 9a ca  .........!......
0000050: 10 f0 cd 08 03 f0 0b 8d 08 03 a5 93 8d 09 03 20  ............... 
0000060: e5 04 a9 00 85 90 18 65 92 85 98 a9 30 85 91 65  .......e....0..e
0000070: 93 85 99 20 f0 04 85 a4 20 f0 04 25 a4 c9 ff d0  ... .... ..%....
0000080: 3a a9 cd 8d e2 02 a9 05 8d e3 02 20 f0 04 85 a0  :.......... ....
0000090: 20 f0 04 85 a1 05 a0 f0 1c 20 f0 04 38 e5 a0 48   ........ ..8..H
00000a0: 08 20 f0 04 28 e5 a1 85 a3 68 85 a2 20 69 05 20  . ..(....h.. i. 
00000b0: b8 04 4c 81 04 6c e0 02 6c e2 02 a9 ce a2 05 8d  ..L..l..l.......
00000c0: 44 03 8e 45 03 a9 0f 8d 48 03 a9 09 8d 42 03 a2  D..E....H....B..
00000d0: 00 20 56 e4 4c d4 04 8d 04 03 8e 05 03 ad 0a 03  . V.L...........
00000e0: 0d 0b 03 f0 d6 a0 40 8c 03 03 20 59 e4 30 cc 60  ......@... Y.0.`
00000f0: a9 00 85 a3 85 a2 a5 9e 05 9f f0 15 a0 00 b1 9c  ................
0000100: 48 e6 9c d0 02 e6 9d a5 9e d0 02 c6 9f c6 9e 68  H..............h
0000110: 60 20 a7 05 a5 9a c5 a2 a5 9b e5 a3 90 1b a5 98  ` ..............
0000120: a6 99 20 d7 04 a2 01 b5 98 95 9c b5 9a 95 9e ca  .. .............
0000130: 10 f5 a0 00 b1 9c 4c 00 05 a5 a0 a6 a1 20 d7 04  ......L...... ..
0000140: a5 a0 18 6d 08 03 85 a0 a5 a1 6d 09 03 85 a1 38  ...m......m....8
0000150: a5 a2 ed 08 03 85 a2 a5 a3 ed 09 03 85 a3 4c 11  ..............L.
0000160: 05 a5 a2 d0 02 c6 a3 c6 a2 20 f6 04 a0 00 91 a0  ......... ......
0000170: e6 a0 d0 02 e6 a1 a5 a2 05 a3 d0 e5 60 a2 01 bd  ............`...
0000180: 28 04 9d 0a 03 b5 90 95 94 b5 92 95 96 ca 10 ef  (...............
0000190: a5 90 a6 91 20 d7 04 a0 01 b1 94 99 28 04 88 10  .... .......(...
00001a0: f8 20 b7 05 20 b7 05 a5 96 05 97 f0 d0 a0 01 b1  . .. ...........
00001b0: 94 99 0a 03 88 10 f8 a5 94 18 69 02 85 94 90 02  ..........i.....
00001c0: e6 95 a5 96 38 e9 02 85 96 b0 02 c6 97 60 45 72  ....8........`Er
00001d0: 72 6f e9 3a 20 6e 6f 20 44 4f 53 9b 00 00 00 00  ro.: no DOS.....
00001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

$ xxd -g 1 /dev/sdb2 | head -32
0000000: 00 01 00 04 e0 07 4c 40 04 12 00 ff ff 7c 00 10  ......L@.....|..
0000010: 02 00 9f ff 14 00 4d 45 44 49 41 20 20 20 01 01  ......MEDIA   ..
0000020: 21 00 02 fe 00 01 0a 85 00 00 00 00 00 00 00 00  !...............
0000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0000040: a2 01 a9 00 95 9e 95 96 bd 21 04 95 92 95 9a ca  .........!......
0000050: 10 f0 cd 08 03 f0 0b 8d 08 03 a5 93 8d 09 03 20  ............... 
0000060: e5 04 a9 00 85 90 18 65 92 85 98 a9 30 85 91 65  .......e....0..e
0000070: 93 85 99 20 f0 04 85 a4 20 f0 04 25 a4 c9 ff d0  ... .... ..%....
0000080: 3a a9 cd 8d e2 02 a9 05 8d e3 02 20 f0 04 85 a0  :.......... ....
0000090: 20 f0 04 85 a1 05 a0 f0 1c 20 f0 04 38 e5 a0 48   ........ ..8..H
00000a0: 08 20 f0 04 28 e5 a1 85 a3 68 85 a2 20 69 05 20  . ..(....h.. i. 
00000b0: b8 04 4c 81 04 6c e0 02 6c e2 02 a9 ce a2 05 8d  ..L..l..l.......
00000c0: 44 03 8e 45 03 a9 0f 8d 48 03 a9 09 8d 42 03 a2  D..E....H....B..
00000d0: 00 20 56 e4 4c d4 04 8d 04 03 8e 05 03 ad 0a 03  . V.L...........
00000e0: 0d 0b 03 f0 d6 a0 40 8c 03 03 20 59 e4 30 cc 60  ......@... Y.0.`
00000f0: a9 00 85 a3 85 a2 a5 9e 05 9f f0 15 a0 00 b1 9c  ................
0000100: 48 e6 9c d0 02 e6 9d a5 9e d0 02 c6 9f c6 9e 68  H..............h
0000110: 60 20 a7 05 a5 9a c5 a2 a5 9b e5 a3 90 1b a5 98  ` ..............
0000120: a6 99 20 d7 04 a2 01 b5 98 95 9c b5 9a 95 9e ca  .. .............
0000130: 10 f5 a0 00 b1 9c 4c 00 05 a5 a0 a6 a1 20 d7 04  ......L...... ..
0000140: a5 a0 18 6d 08 03 85 a0 a5 a1 6d 09 03 85 a1 38  ...m......m....8
0000150: a5 a2 ed 08 03 85 a2 a5 a3 ed 09 03 85 a3 4c 11  ..............L.
0000160: 05 a5 a2 d0 02 c6 a3 c6 a2 20 f6 04 a0 00 91 a0  ......... ......
0000170: e6 a0 d0 02 e6 a1 a5 a2 05 a3 d0 e5 60 a2 01 bd  ............`...
0000180: 28 04 9d 0a 03 b5 90 95 94 b5 92 95 96 ca 10 ef  (...............
0000190: a5 90 a6 91 20 d7 04 a0 01 b1 94 99 28 04 88 10  .... .......(...
00001a0: f8 20 b7 05 20 b7 05 a5 96 05 97 f0 d0 a0 01 b1  . .. ...........
00001b0: 94 99 0a 03 88 10 f8 a5 94 18 69 02 85 94 90 02  ..........i.....
00001c0: e6 95 a5 96 38 e9 02 85 96 b0 02 c6 97 60 45 72  ....8........`Er
00001d0: 72 6f 72 3a 20 6e 6f 20 44 4f 53 9b 00 00 00 00  ror: no DOS.....
00001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

Partycje są sformatowane z 512-bajtowymi sektorami i widać, że rozpoznawane są 4 istniejące. Nie mam niestety żadnej partycji mydłosowej, żeby sprawdzić jak ataridosfs współpracuje z urządzeniem /dev/sdbN.
Procedura instalacji:

$ apt-get install linux-source-2.6.32
$ su -
# cd /usr/src/
# tar jxf linux-source-2.6.32.tar.bz2
# wget http://mono.i-demo.pl/fuse/linux-source-2.6.32-atari8fs.diff
# patch -p0 linux-source-2.6.32-atari8fs.diff
# cd linux-source-2.6.32
# make menuconfig

W tym miejscu należy wejść do menu "File systems->Partition types" i zaznaczyć opcję "Atari XL/XE partition table support".
Po wyjściu i zapisaniu konfiguracji dalej:

# make-kpkg clean
# make-kpkg --initrd --revision=atari8 kernel_image kernel_headers modules_image
# dpkg -i linux-headers-2.6.32.46+drm33.20_atari8_amd64.deb
# dpkg -i linux-image-2.6.32.46+drm33.20_atari8_amd64.deb
# update-initramfs -c -k 2.6.32.46+drm33.20
# update-grub

Potem reboot i po starcie można się cieszyć partycjami KMK/IDEA widocznymi pod linuxem.
Suffiks ".46+drm33.20_*_amd64" zależy oczywiście od konkretnej wersji kernela - ponieważ ściągaliśmy go z repozytorium (Ubuntu 10.04 Lucid). Można łatę nałożyć na standardowy kernel i też powinna działać - patch dodaje pliki atari8.* i modyfikuje pliki check.c, Makefile i Kconfig w podkatalogu fs/partition/.
Procedurę instalacji robiłem wg:
- http://uel.jogger.pl/2006/08/05/how-to- … my-kernel/ oraz
- http://peb.pl/linux/854255-kompilacja-k … -04-a.html
bo okazało się, że nie był tworzony plik initrd.img*.

Zapraszam do testowania i zgłaszania życzeń i zażaleń.

2,259

(57 odpowiedzi, napisanych Fabryka - 8bit)

@jellonek: To prawda. Dlatego dawno już napisałem, że biblioteka jest wspaniałą rzeczą i jeśli będzie, to chętnie z niej skorzystam w swoich programach. Wszystkiego naraz nie dam rady zrobić, a gdybym teraz zaczął zespołowo robić bibliotekę, to w czasie odwlekłyby się narzędzia dla moich fsów i jest duża szansa, że (jak mówi draco) projekt nie zostanie ukończony nawet w jakiejś satysfakcjonującej części.
@Amun-Ra: Masz rację. Wg takiego wzorca jest zrobione chociażby testowanie rodzaju tablicy partycji w kernelu.

Edit: Rozwojem biblioteki mogę się zająć po ukończeniu fsów.

2,260

(57 odpowiedzi, napisanych Fabryka - 8bit)

Amun-Ra napisał/a:

Moim zdaniem lepiej byłoby zrobić program obsługujący obrazy z interfejsem a'la zip/rar niż mount/mkfs/fsck.

Kiedy mamy osobne mount/mkfs/fsck mogą działać mechanizmy systemowe, które wywołują odpowiedni program na odpowiednim rodzaju fsa. Ale jedno drugiego nie wyklucza - można porobić linki symboliczne o odpowiednich nazwach tak, jak to jest w SIO2BSD z mkatr. Chodziło mi raczej o to, że w jednym programie mamy wszystko napakowane, kupę ifów w procedurach na rózne rodzaje fsów, co świadczy o złym projekcie, bo więcej wyjątków niż reguł. Ale może się upieram niepotrzebnie.

Adam Klobukowski napisał/a:

Biblioteka to znacznie lepszy pomysł

Biblioteka jak najbardziej, fs służy do czego innego i z biblioteki chętnie skorzysta. Prototyp ma tę zaletę, że nie przywiązuje się do własnych rozwiązań (tak, jak dogłębnie przemyślany i zaprojektowany system).

Drac030 napisał/a:

No, jak chcesz. Ja bym na Twoim miejscu plwał na estetykę kodu, jeśli miałoby to zaowocować konsekwentnym działaniem programu.

:) Hmmmmm. A może by i rzucić to wszystko plwając na estetykę kodu (i pojechać w bieszczady)?

2,261

(57 odpowiedzi, napisanych Fabryka - 8bit)

No tak, ale o ile Atari DOSy 1,2.x,XL,MyDOS nie różnią się wiele, o tyle SpartaDOS ma zupełnie inny FS. A DOS XE jest syntezą obydwu podejść. Ja wydzieliłbym osobno Atari DOSy, Spartę i XE. Co do DOSów 3 i 4 to musiałbym się głębiej przyjrzeć, żeby wyrobić sobie zdanie. Wpakowanie wszystkiego do jednego pliku skończy się osobnymi procedurami na odczyt choćby sektora (z linkiem i bez linku), na odczyt VTOC, mapy sektorów pliku i katalogu, odczyt struktur katalogu itd. Zrobi się zamieszanie. A tak to jest szansa na poprawę czytelności tego kodu co mam i zrobienie z niego ludzi.

2,262

(57 odpowiedzi, napisanych Fabryka - 8bit)

@drac030: Chętniej zrobiłbym pośrednika, który rozpoznawałby format i używał konkretnego specjalizowanego drivera - mógłby to nawet być skrypt shellowy nazwany mount.a8fs i taką nazwę (a8fs) podawałoby się mountowi.
Ataridosfs można też rozbić na osobne fsy, ale naprawdę różnice są tak niewielkie, że wydaje mi się, że szkoda to robić.
A może są jakieś zalety takiego rozwiązania prócz trzymania wszystkiego w jednym miejscu?

2,263

(57 odpowiedzi, napisanych Fabryka - 8bit)

@xxl: Faktycznie w chwili obecnej zapisanie inicjalizera na dysku jest dość problematyczne. Można to zrobić wykorzystując obraz udostępniony atrfsem w krokach:
1. stat - sprawdzić rozmiar sektora i ich ilość
2. jeśli 256 to pierwsze 3 sektory mają 128b, wpp mają rozmiar jak inne sektory (chyba, że dysk był montowany z -f, wtedy trzeba liczyć)
3. 3 pierwsze sektory zapisać za pomocą dd if=inicjalizer of=image bs=128 count=3
W sytuacji gdy inicjalizer zajmuje więcej miejsca zaczyna się problem, bo trzeba modyfikować vtoc samodzielnie itp. - masa zachodu.
Faktycznie zapis sektorów jest w kodzie trzeba by tylko wystawić go np. jakimś ioctlem (to samo z odczytem sektorów) i napisać mały programik do tego, bo w systemie nie ma możliwości oidp (dd zapisuje bloki danych, ale nie zamarkuje już sektora we VTOC a to by taki programik robił).
Jeśli chodzi o zapis własnego katalogu - jeśli znasz filesystem, to nikt Ci nie zabroni pisać po obrazie (tym udostępnianym przez atrfs) ile dusza zapragnie, ale to można sobie w zasadzie robić nawet na samym ATRze - atrfs daje tu tylko to, że nie musisz analizować nagłówka (potrzebne informacje są dostępne przez stat), no i w następnej wersji będzie automatycznie przy każdym zapisie liczyło crc (jeśli jest użyty).

@epi,fox: Oczywiście nie mam żadnych obiekcji co do stworzenia porządnej biblioteki do manipulacji obrazami i fsami. Ztcw to epi ma już coś porządnie zaczętego - można by to pociągnąć dalej i potem wykorzystać w moich programikach. Też jestem zdania, że należy zacząć od Traca i analizy. Akurat ten fs jest moją przymiarką do FUSE (inaczej do końca życia nie wiedziałbym jak to działa i czy da się w tym coś napisać, jak szybko i czy i jakie są z tym problemy ;]).

Jeśli idzie o "6 instrukcji" to zauważcie, że 2 mounty są potrzebne tylko podczas montowania obrazu który jest w atr. Analoogicznie się ma sprawa z montowaniem dowolnego czegoś co mamy w pliku .img (używa się tylko /dev/loop do tego), ale ilość instrukcji pozostaje niezmienna. Jeśli będziemy mieć support do APT w kernelu i odpowiednie reguły w udev, to podłączając hdd przez usb, lub wkładając cf do kompa montowanie odbywać się będzie jak w przypadku cdromu - automatycznie i bez ingerencji użytkownika.
Faktycznie jest tak, jak mówi Drac030 - cel, jak mi przyświeca to zrobienie mechanizmu systemowego tak, żeby nie pisać kolejnego narzędzia, które w pewnej chwili rozbroi mnie sowimi ograniczeniami. Ponieważ mamy zwykłe obrazy i zwykłe fsy, to robimy systemowy support dla obrazów i fsów. I to wystarczy, a do kopiowania, przeglądania, czy innego psucia niech ktoś sobie używa co tam lubi.

W planach jest narzędzie pomocnicze, które powie jaki (i czy w ogóle) FS jest na zamontowanym (przez atrfs, lub na partycji) obrazie. Oraz drugie, które zależnie od rozpoznanego fsa zamontuje co trzeba jednym poleceniem. Nawiasem mówiąc mount jest dość elastyczny:

$ mount -t fuse#ataridosfs,fuse#spartadosfs image mountpoint

co spowoduje próbę zamontowania najpierw ataridosfsa a jeśli się to nie uda to spartadosfs. Trzeba by sprawdzić czy mój fs jest pod tym kątem przygotowany, ale na pewno nie jest to jakiś problem w implementacji.

Nie jest to całkiem tak, że sam fs wystarczy, potrzebne są dodatkowe narzędzia:
- mkfs.* do tworzenia filesystemu (czyli odpowiednik funkcji FORMAT dla konkretnego DOSa, a mkatr dla atrfs),
- fsck.* do testowania integralności i czynności naprawczych (taki odpowiednik CLX, VTOCFIX i pewnie jeszcze kilku narzędzi).
Ale nie od razu Kraków zbudowano.

A na koniec powiem, że zapominacie że nie ja pierwszy napisałem coś działającego. Jest plugin Pajero na windowsa, a ja ciągle używam FRANNY autorstwa Bobera, które bardzo mi się przydaje (wielkie dzięki). Poza tym support dla ATR i FSów jest w AspeQt, jest też w SIO2BSD. Może zamiast pisać od nowa coś swojego warto byłoby się lepiej przyjrzeć już istniejącym projektom i zrobić coś na ich bazie/pomóc w rozwoju?

2,264

(57 odpowiedzi, napisanych Fabryka - 8bit)

Ja nie umiem :) Ale znam kogoś, kto potrafi :P.

2,265

(57 odpowiedzi, napisanych Fabryka - 8bit)

@epi: Masz rację. I dałoby się to bez problemu zrobić. Po prostu zacząłem to robić w C i tak już zostało :P Warto to zrefaktorować do Ć.
A jak tam z działaniem Ć we FreeBSD?

Edit: A kod na pewno będzie refaktorowany.

2,266

(57 odpowiedzi, napisanych Fabryka - 8bit)

APT: http://drac030.krap.pl/APT_spec.pdf
Ciągły plik to zwykły regularny plik - kernel udostępnia zaś widziane partycje, jako urządzenia w strukturze /dev/.

2,267

(57 odpowiedzi, napisanych Fabryka - 8bit)

Plan jest taki, żeby atari8fs składało się z:
- modułu kernela obsługującego tablicę partycji APT i udostępniającego w systemie partycje Atari z CF/SD/MMC/HDD,
- filesystemów ataridosfs i spartadosfs obsługujących konkretne FSy Atari,
- filesystemów atrfs, dcmfs, xfdfs, profs (zacząłem od najpopularniejszego) montujących obrazy dysków dostępnych w plikach o wymienionych formatach w takiej postaci, jak będzie ją udostępniał kernel obsługujący APT.
Tak więc atrfs służy tylko do udostępnienia obrazu dyskietki zapisanej w formacie .ATR, jako ciągłego pliku (może nie powinien to być FS - liczę na jakieś sugestie) i udostępnia w strukturze stat informację o parametrach "nośnika". Sam ataridosfs (a w przyszłości również spartadosfs) ma korzystać z gołego ciągłego pliku. Najlepiej gdyby działało to tak, jak montuje się obrazy .img (loop), ale póki co nie wiem jak to działa i muszę się naumieć.
Te FSy można by zaimplementować jako moduły kernela, ale wybrałem FUSE bo gdyby ktoś w przyszłości napisał jego implementację dla windowsa (+ obsługę APT), to mogłoby to działać też i tam.

Edit: Może się okazać, że FUSE nie było dobrym pomysłem dlatego kod jest napisany w C, żeby można było łatwiej go wsadzić do modułu kernela.

Edit 2: Potem można by też zdefiniować reguły dla udeva do automatycznego montowania zasobów z Atari z nośników wymiennych - wtedy user nie musiałby już kompletnie nic robić z linii poleceń.

2,268

(57 odpowiedzi, napisanych Fabryka - 8bit)

@Amun-Ra: Zbadam temat. Póki co na własną rękę można użyć checkinstall i podać odpowiednie dane.
@drac030: Dzięki za procedurę instalacji. FS dla Sparty w planach :)

Czy znalazłby się ktoś, kto przetłumaczyłby na języki obce (w tym en) README i *.man (będą w następnej wersji)?

2,269

(57 odpowiedzi, napisanych Fabryka - 8bit)

Proudly presents dwa narzędzia dla Linuxa/Unixa pozwalające na pracę z obrazami dyskietek kompatybilnymi z Atari DOS.
Są to dwa filesystemy zaimplementowane z użyciem biblioteki FUSE.

1. ATRFS
Pozwala na zamontowanie obrazu dysku ATR (w wersji APE lub SIO2PC) jako ciągły plik w filesystemie.

$ atrfs exemplum.atr mountpoint

Rozpoznaje to oczywiście rodzaj atra, a za pomocą opcji można go zmusić do traktowania sektorów 1..3 dysku DD jako 256b (zazwyczaj samo się zorientuje że ma taki obraz).

2. ATARIDOSFS
Pozwala na zamontowanie pliku z obrazem dysku (np. partycji dysku Atari XL/XE w przyszłości, lub pliku udostępnianego przez ATRFS) z systemem plików kompatybilnym z Atari DOS:
- Atari DOS 1,
- Atari DOS 2,
- Atari DOS 2.5,
- My DOS.

$ ataridosfs image mountpoint

Tutaj też detekcja następuje samoczynnie, ale parametrem -o dos można wymusić konkretny rodzaj DOSa (zazwyczaj niepotrzebne).
Po zamontowaniu w mountpoint pojawia się struktura katalogów tak, jak ją widać na Atari. Można kopiować pliki, tworzyć katalogi, usuwać, zmieniać nazwy, zabezpieczać pliki/katalogi, przesuwać aż do chwili kiedy skończy się miejsce na obrazie.

Ponieważ to wersja prealfabeta to należy uważać z wielodostępem, bo prawdopodobnie skaszani dysk.

Instalacja
Należy dociągnąć pakiety:
- libfuse-dev
- fuse-utils
np za pomocą:

$ sudo apt-get install libfuse-dev fuse-utils

oraz wykonać:

$ mkdir atari8fs-0.3
$ cd atari8fs-0.3
$ wget http://mono.i-demo.pl/fuse/atari8fs-0.3.tar.gz
$ tar zxf atari8fs-0.3.tar.gz
$ make clean all install

Paczka dostępna tutaj.

Enjoy i send bugs&requests please.

P.S. Jak tego użyć z konkretnym atrem, żeby mieć pliki w katalogu widzianym przez system:

$ mkdir images ataridisk
$ atrfs exemplum.atr images
$ ataridosfs images/exemplum ataridisk  

i w ataridisk są pliczki.
Koniec pracy:

$ fusermount -u ataridisk
$ fusermount -u images
$ rmdir ataridisk images

UWAGA miłośnicy okienek
Pliki można sobie kopiować dowolnym okienkowym managerem. Wcale NIE TRZEBA używać konsoli i cp, mv, truncate, rm, mkdir, rmdir, stat.

2,270

(358 odpowiedzi, napisanych Sprzęt - 8bit)

A będzie działać z tym: http://www.nightfallcrew.com/05/04/2011 … pressions/ ?

2,271

(7 odpowiedzi, napisanych Sprzęt - 16/32bit)

A dział to nie "Sprzęt - 16bit"?

2,272

(41 odpowiedzi, napisanych Sprzęt - 8bit)

Czy można by u Ciebie zamówić taką obudowę na ideplusa?

2,273

(138 odpowiedzi, napisanych Zloty)

Popieram.

2,274

(142 odpowiedzi, napisanych Sprzęt - 16/32bit)

Tylko, że on to tłumaczył atarowcowi... :D

Ja taką poprosiłbym również.