Komputery z Z80 > AMSTRAD

Modyfikacja ROM-u w CPC

<< < (2/4) > >>

McArti0:
Spoko to nasza zabawa w wolnym czasie. Kuriozalne jest już to, że odpowiedz dostałeś po ponad 5 latach  ;D

A oto gotowiec ...  :D :P 8) :o

OS6128mod.ROM
AMSDOSmod3.ROM

do wypełnienia jest tabelka userKeys w AMSDOSmod3.ROM od adresu &1C00 (w pamięci CPC &DC00)
pod adresem &1C86 (&DC86)  trzeba wpisać długość tabelki w bajtach.

skorzystałem z funkcji bios
&B90F ustawianie romu (w C podajemy nr AMSDOSA 7, a w B dostajemy ustawienie poprzedniego stanu ), i
&B90C powrót do poprzedniego stanu (w A podajemy poprzedni stan)

ZbyniuR:
ŁAŁ - Szacun i dzięki. :)
Muszę poszukać gdzie miałem ten Basic który mi modyfikował te klawisze co chciałem.

Chodziło mi o ułatwienia przy edycji Basica i przy uruchamianiu programów.
Np klawisz TAB przy edycji Basica do niczego sie nie przydaje, a jeśli ktoś grzebie w listingu to często przerywa program listuje go i uruchamia na nowo, dlatego wygodnie jest mieć pod Tab słówko run z enterem (ale bez cudzysa jak jest na enter), Tab+shift to  mode 2:list   a Tab+Shift to  cat

A do uruchamiania plików ze stacji np  run"disc  albo |cpm   co byłoby odpowiednikiem run" który sie sprawdza ale tylko w magnecie. Albo jeszcze fajniej po wpisaniu cat przydałyby sie klawisze z funkcjami do przeskakiwania kursorem do następnej kolumny na widocznej liście plików, oraz klawisz z funkcją która jeśli umieścimy kursor na początku nazwy pliku i go wciśniemy to skopiuje nam nazwę tego pliku i go uruchomi.
Musiałbym znaleźć czas i natchnienie i to potestować.

A z tej kilobajtowej dziury zostało 133 bajty, rozumiem że opis modyfikacji ma zostać. Normalnie CPC pozwala by wszystkie zmodyfikowane funkcje razem nie zajmowały więcej niż 255 znaków, łącznie z tymi bajtami które wskazują długość poszczególnych funkcji. A czy te FF-y formatują, nie sądzę bo puste sektory są wypełniane znaczkiem liścia czyli 229 (&E5). :)

Ech gdyby tak jeszcze dało sie dorobić obrazek powitalny, trzymany w dodatkowym 16K bloczku ROM. W emulcu taki obrazek byłby łatwy do dodania, ale w realnym CPC byłoby to dostępne tylko dla posiadaczy ROM-boxa. I mogłyby powstawać fanowskie obrazki startowe jak do FutureOS-a. :)


McArti0:
Na wszystkie UserKeys mamy razem 133 bajty tak wygląda w RAM ta tablica. Pozostałe 19 bajtów są zerowe. razem 152 bajty i koniec, ściana. Basic nie pozwala zapełnić nawet tych 19 bajtów.

key 0,space$(105)
Improper argument
key 0,space$(104)
Ready

chodzi mi po głowie wyprowadzenie tej tablicy poza b590. sprawdze czy to działa.

W Amsdosie zostało około 1024-133-1=890 bajtów. 890/8=111 znaków mod2 = 55 mod1 =grafika 5x10 znaków, może troche mniej bo kod kopiujący trzeba tu wcisnąć

ZbyniuR:
Ok mój błąd chyba tylko raz doszedłem do granic tej tablicy jak robiłem klawisze jak w Spectrum by całe Basicowe słówka wyświetlał jednym kliknięciem i starczyło mi na po słówku dla każdego z 26 liter.  Robiłem też kiedyś arabską klawiaturę aby znaki pisały sie od prawej do lewej, to do każdej z 22 liter funkcja dodawała dwie strzałki, ale to było nawet mniej.
Teraz widzę że wszystkie funkcje razem (bez bajtów długości) mogą mieć max 120 bajtów.
Ale spoko to też jest sporo miejsca do popisu. :)

A gdyby chcieć to zwiększać to wpierw trzeba by modyfikować procedury które obsługują te funkcje a potem szukać dla nich miejsca w RAM. Owszem są takie miejsca, (z tych poniżej pamięci obrazu), ale niektóre programy robią z nich użytek, bo to obszary które sie nie kasują przy resecie. Raczej nie ma potrzeby.

McArti0:
Sprawdziłem.

&b62b,L_adr
&b62c,H_adr

adres tablicy do tych komórek. i mamy 255 znaków na każdy UserKey.

zaniedbujemy komórki adresu bajtu po tabeli. ( b62d(e),  b62f(30) )

co prawda Basic może taką tablice używać, ale ograniczenie na 104 znaki nadal istnieje dla komendy key.

ps. jeżeli w b62d(e) wpiszemy  adres bajtu po tabeli [maks.możliwy zakres] a w b62f(30) adres bajtu po dotychczasowym użyciu. ...

TO DZIAŁA KEY 0,space$(255)  !!!!!!!!!!!!!!!!!!!!!! niema ograniczenia na długość stringu!

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

[*] Poprzednia strona

Idź do wersji pełnej