תשובה חלקית
יש כמה שיטות לעבודה ברזולוציה גבוהה. השיטה הראשונה והבסיסית ביותר (ולכן הכי פחות טובה) היא עבודה באמצעות bank switching. ה-buffer שנכתב לזיכרון של כרטיס המסך בכל פעם ממוקם בכתובת A000 (כתובת סגמנט כמובן, היסט 0). בד"כ גודל הבאפר הוא 64K אבל יש כרטיסים שבהם הוא 128K. בכל מקרה, בגלל שמבחינת כמות זיכרון מסך של 640x480 תופס יותר זיכרון מאשר גודל של באפר אחד, אתה צריך לבצע bank switch שממפה את הבאפר הזה למיקום אחר בזיכרון של כרטיס המסך. הבעיה עם כל הדברים האלה שהם מבוצעים בצורה שונה לכל כרטיס מסך. לכן יש את הדרייבר של VESA שפתר את הבעיה. כמובן, עם הזמן התפתחה דרך לפנות אל הזיכרון כגוש רציף (פונקציונליות שיש ב-VESA2 ואילך) וזה הקל לכולם על החיים. אני ממליץ לך להריץ דרייבר של VESA2 וללמוד את ה-interrupts של VESA. הם אומנם איטיים יחסית אבל לא משתמשים בהם בתדירות גבוהה מדי (כך עבדו כל המשחקים בדוס ברזולוציות גבוהות). הדרייבר יספק לך כתובת שאליה תוכל לכתוב שמייצגת את זיכרון כרטיס המסך בצורה לינארית. משם הדרך קצרה אפילו ללא protected mode. שאלות ?