KEY 140,STRING$(8,CHR$(224))+CHR$(250)+"run"+CHR$(34)+CHR$(13)
Teraz tylko po cat najeżdżasz kursorem na 1szy znak nazwy pliku i wciskasz ctrl+enter a plik sie uruchamia.
mam to zrobione tyle, że tylko dla pierwszej kolumny bo dałem 250 również na początku żeby nie trzeba było ustawiać pierwszego znaku. ... i chyba to nie działa.
Do kompletu na ctrl ze strzałkami <- i -> dodać kody które przeskakują kursorem o całą kolumnę na wyświetlanym katalogu, co by łatwiej trafić w pierwszy znak nazwy pliku w sąsiednich kolumnach. 
mam skrupuły

zastępować ctrl+ArrowLeft może większe mniejsze to powinno być? ctrl+Arrow wraca do początku linii tak włączałem BASy. Copy potem CTRL ArrowLeft ENTER
Nie czaję na czym polega ta kompresja obrazka. Jaki duży może być ten obrazek w osobnym ROMie, jaką metodą go skompresować i jak wyświetlić?
jest to metoda RLE
[1-127*][DN]...[128+(1-127*)][DN1][DN2]....[DNx]...[0]
bajty identyczne są pogrupowane w dwubajtowe pary NxBajt czyli krotność takiego samego bajtu, w porywach 127 bajtów tła zapisze się jako 127, 0
drugi rodzaj grup to bajty które nie daja sie skompresować pierwszy bajt podaje ile jest takich bajtów 1-127 i ma ustawiony bit 7 potem następuje sekwencja tych bajtów. Bajt sterujący o wartości 0 kończy obrazek.
Kompresja jest wydajna o ile mamy znaczną część ciągów bajtów identycznych. puste 16Kb ekranu to 259 bajtów

przygotowuje jakiś util do tego. niemam jeszcze dorobione żeby ta procedura w ROMie sama czytała rozdzielczość tego obrazka. narazie tam jest na sztywno miejsce na ekranie i wielkość 10x5 znaków mode 1. Jeżeli zostajemy w romie dodatkowym i nie kisimy sie w tym jednym kilo AMSDOSa to obrazków pełnoekranowych zmieścimy tam kilka. Nawet animacje można zrobić.
Załączam pierwsze wersje tego Utilu. jest w basicu z procedurą maszynową.
Kolejne procedury S2O, O2K, K2O, O2S gdzie S to screen, O to Obrazek rozkompresowany, K obrazek skompresowany.
Obrazek rozkompresowany jest zapisany linia po linii, inaczej niż w pierwszych wersjach w tym wątku.
;z pamieci na ekran
org #9200
;call&9200,&AdresOnScreen,@tablica_nieskompresowana
ld h,(IX+3)
ld l,(IX+2)
;ld de, ;src
;ld hl, ;trg
ld c,0
ld b,5 ;Y bajtow
nextL2:
push bc
ld b,8
push hl
nextL:
push bc
ld bc,20 ;X bajtow
push hl
ex de,hl
ldir
ex de,hl
pop hl
ld bc,2048
add hl,bc
pop bc
djnz nextL
pop hl
ld c,80
add hl,bc
pop bc
djnz nextL2
ret
;z ekranu do pamieci
org #9230
;call&9230,@tablica_nieskompresowana,&AdresOnScreen
ld h,(IX+3)
ld l,(IX+2)
ex de,hl
;ld de,#4000;trg
;ld hl,#c000;src;
ld bc,#0500 ;Y bajtow
nextS2:
push bc
ld b,8
push hl
nextS:
push bc
ld bc,20 ;X bajtow
push hl
ldir
pop hl
ld bc,2048
add hl,bc
pop bc
djnz nextS
pop hl
ld c,80
add hl,bc
pop bc
djnz nextS2
ret
;############### RLE dekompresor #################
org #9260
;call&9260,@tablica_nieskompresowana, @tablica_kompresji
ld h,(IX+3)
ld l,(IX+2)
;ld hl,kompres ;
;ld de,dekompres ;
ex de,hl
NextD:
ld a,(hl)
add 0
ret z
ld c,a
inc hl
bit 7,c
jp z,rle
res 7,c
ld b,0
ldir
jr nextD
rle:
ld b,c
ld a,(hl)
p1:
ld (de),A
inc de
djnz p1
inc hl
jr nextD
;################### RLE kompresor ###############
org #9290
;call&9290,@tablica_kompresji, @source, wielkosc_obrazka,@wielkosc_po_kompresji
di
ld iY,0
add iY,SP
ld SP,IX
pop bc
pop IX
pop HL
pop de
ld sp,iy
ei
push bc ;adres w 4 parametrze
push de ;adres w 1 parametrze tabl_kompr
;ld hl, ;obrazek linia po linii
;ld de, ;obrazek skompresowany
ld bc,#ffff ; -1
push bc
;ld ix, ;wielkosc obrazka-1
dec ix
start:
EX (SP), HL ;|
ex de,hl ;|
inc ix ;|
add ix,de ;|-- takie jazdy z dekrementacja licznika
ex de,hl ;| w rejestrze, ktory nie obsluguje flag
EX (SP), HL ;| nie mozna od niego odejmowac,
jr c,not_end ;| nie mozna dodawac rejestru HL
xor a
ld (DE),A
inc de
pop bc ; -1
ex hl,de ;
pop de ;adr tablicy_kompr
cp a
sbc hl,de
ex de,hl
pop hl
ld (hl),e
inc hl
ld (hl),d
ret
not_end:
ld B,0
LD A,(HL)
tesame:
inc b
bit 7,b
jr nz,end127
;+++++++++++++++++++++++++
EX (SP), HL
ex de,hl
add IX,de
ex de,hl
EX (SP), HL
jr nc,end_tsame
inc hl
ld c,(hl)
cp c
jr z,tesame
jr end_tsame
end127:
dec b
end_tsame:
;push bc ; b -licznik , c -ostatnia dana
dec b
jr z,licz_rozne
inc b
push AF
ld a,b
ld (de),A
inc de
pop af
ld (de),A
inc de
jr start
;***********************************************
licz_rozne:
ld b,1
push de
pop iY
inc de
ld (de),A
p2:
bit 7,b
jr nz,end_rozne
inc b
ld A,c
inc de
ld (de),A
;+++++++++++++++++++++++++++++++
EX (SP), HL
ex de,hl
add IX,de
ex de,hl
EX (SP), HL
jr nc,set_rozne
inc hl
ld c,(HL)
cp c
jr nz,p2
jr set_rozne
end_rozne:
dec b
;jr z,start
set_rozne:
set 7,b
ld (iY+0),b
ld a,c
inc de
jr start
ret