Zanim się użycie VBXE rozpowszechni na dobre, chciałbym zadać temat dzielenia się przez programy pamięcią tej karty. Przyszło mi to do głowy, bo robię ostatnie przymiarki przed napisaniem korzystającego z VBXE rezydenta i z pewnych powodów uśmiecha mi się załadowanie go w całości (tzn. kod i wszystko) do pamięci VBXE "MEMAC B". Chodzi o to, żeby w przypadku zajęcia kawałka pamięci VBXE inny program też chcący z niej korzystać, mógł uniknąć zniszczenia zajętego obszaru. Oczywiście dotyczyłoby to tylko tych programów, które po zakończeniu się wracają do DOS-u i/albo nie potrzebują całości pamięci VBXE, a tylko jakiejś części.
Wymyśliłem, żeby pierwszy program, który rezydentnie ładuje coś do VBXE, wpisywał pod adres $000000 jakąś magiczną wartość, a pod adres $000003 - pierwszy wolny adres w pamieci VBXE "nad" sobą. Następny pobierałby ten adres i sprawdzał, czy jest tam magic, jeśli nie, to wpisywał swój magic i swój wskaźnik do wolnej pamięci, a jeśli tak, to przeskakiwał następny kawałek, sprawdzał itd. w pętli aż do znalezienia wolnego miejsca albo końca RAM-u karty.
Jedyny problem to, że przy resecie trzeba byłoby te znaczniki pokasować, co oznacza kolejnego rezydenta, który to będzie robił i nie wiem, czy nie kładzie całej koncepcji.
W każdym razie alternatywa to trzymanie takiego rezydentnego programu w dwóch kopiach w pamięci, tzn. w ext RAM-ie normalnym, skąd przy każdym resecie przeładowywałoby się go do pamięci VBXE.
Szkoda, że MEMAC A bankuje się w obszarze $2000-$3FFF. Gdyby to było $4000-$5FFF (albo $6000-$7FFF), byłoby łatwiej napisać rezydenta, który ma kod w ext RAM-ie, ale np. pamięć obrazu w pamięci VBXE (wyjasniam dlaczego: bo programy sa "przyzwyczajone", że pod $4000-$7FFF bankuje się pamięć, więc istnieje tendencja do tego, żeby unikać umieszczania tam handlerów przerwań - a pod $2000-$3FFF takiego ograniczenia do tej pory nie było).
Wszystkie moje wywody dotyczą oczywiście softu, który działa pod DOS-em i korzysta z OS-u np. w celu wczytania directory itp.
? HEX$(6670358)