Autor Wątek: Sortowanie tablicy  (Przeczytany 9930 razy)

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Sortowanie tablicy
« Odpowiedź #45 dnia: 2023.05.09, 15:48:54 »
@matofesi
Wielkie dzięki za pomoc, stawiam piwo, jeśli tylko chciałbyś przyjechać do Gdańska, oferuje tez nocleg dla 2 osób, w promocyjnej cenie i w/w piwo.

Testy będę robił dopiero po niedzieli, jutro wyjeżdżam na majówkę.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Sortowanie tablicy
« Odpowiedź #46 dnia: 2023.05.09, 15:52:13 »
Chciałem doradzić zakodowanie procedury (np. XOR 16) tak, żeby znikły te kody i wykonywanie po przeniesieniu wyżej i odkodowaniu.
Ale nie zdążyłem - okazuje się, że szybciej jest przerobić kod :D

Znalazłem też kolejny, łatwiejszy sposób na ominięcie tego problemu: ten poprzedni sposób "PRINT #2;:" nie zawsze działa, ale zawsze działa jak się dopisze w linii 31 "LIST 10000:"

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Sortowanie tablicy
« Odpowiedź #47 dnia: 2023.05.10, 07:56:00 »
Pojedynczy rekord odczytany z katalogu dyskietki ma długość 32 bajty.
Nazwa pliku to bajt 2 do 9, nie ma sensu więc sortowanie całej tablicy.
Można jakoś wymusić w kodzie głębokość sortowania?  może kolejny poke.
Pierwszy bajt jest stały i nie wpłynie na efekt sortowania, zresztą mogę go wyciąć przy tworzeniu tablicy.
Bajtów powyżej 9 nie mogę wyciąć bo są tam dodatkowe informacje o pliku.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Odp: Sortowanie tablicy
« Odpowiedź #48 dnia: 2023.05.10, 09:38:57 »
No da się... Oczywiście kosztem rozmiaru - teraz doszliśmy do 159 bajtów.

23299 przechowuje długość początkowego kawałka który ma brać do porównania. Jeśli jest tam zero, to zostanie ustawione na długość całego stringa jeśli co innego to ta wartość zostanie użyta w porównaniach i nie jest już dalej kontrolowana. Można więc zrobić dim(50,10) a potem poke 23299,20 i sorter będzie porównywał dwudziestoznakowe kawałki ale zamieniał będzie zgodnie z zadeklarowanym rozmiarem.
« Ostatnia zmiana: 2023.05.10, 10:42:28 wysłana przez matofesi »

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Sortowanie tablicy
« Odpowiedź #49 dnia: 2023.05.10, 11:19:29 »
Super, to jest teraz to o co chodziło.
(chyba że coś jeszcze wyjdzie czego nie mogę przewidzieć)

Testy niestety dopiero po niedzieli.
Jeśli chodzi o długość to już mało istotne czy 140 czy 160.

Jeszcze raz dziękuje, również innym forumowiczom
którzy aktywnie włączyli się do dyskusji.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Sortowanie tablicy
« Odpowiedź #50 dnia: 2023.06.21, 10:51:59 »
No i w końcu jest pierwsza użytkowa wersja programu
START dla FDD3000 który tworze od prawie dwóch miesięcy,
powinien on się znaleźć na każdej dyskietce działającej z TOS

Program czyta katalog dyskietki, sortuje go i wyświetla
w porcjach po 15 plików (klawisze 1,q,a,z)

Wczytanie programów (tylko basic), klawisz ENTER.

Ponadto w menu1 ogólne
I info o dostepnych dyskach
S nagranie programu START
F format na 140kB
G format na 620kB
K katalog systemowy
L wczytanie z tasmy
J kopia całej zawartości dyskietki

menu2 plikowe
K kopia pliku
U usuwanie pliku
Z zmiana nazwy pliku
I info o pliku

Program mieści się w 4kB czyli jednostce alokacji dla dysków 620kB

Program nie obsługuje katalogów i atrybutów, przynajmniej w tej wersji,
nie wiem czy warto to dorabiać bo mało kto i tak z tego korzysta,
a wydłuży to czas odczytu dyskietki, co i teraz jest na granicy akceptacji.
Poza tym program zajmie już kolejne 4kB.

Czas odczytu dyskietki można skrócić przez edycje linii 2 programu
zmieniając LET z=64, na wartość mniejszą np.32, zleży to od ilości
plików na dyskietce, w typowych zastosowaniach 140kB powinno wystarczyć
z=20, ale dla ekstremistów może być pełne 128, tyle maksymalnie plikow
może by na dyskietce.

Nie gwarantuje że program jest bez wad, więc liczę na Wasze uwagi,
powstanie wtedy kolejna poprawiona wersja.

Podziękowania dla Matofesi za wykonanie kodu sortującego tablicę z nazwami plików.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Sortowanie tablicy
« Odpowiedź #51 dnia: 2023.06.21, 10:54:11 »
Tutaj powinien być załącznik
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235