Indrekis
Indrekis

Categories

  • retrocomputing
  • ibm_pc_compat

Tags

  • retrocomputing
  • IBM PC та сумісні
  • DOS
  • QEMM
  • Compaq Portable

Знову ж, завдяки учаснику спільноти ретрокомп’ютерщиків – засновнику Віртуального музею комп’ютерного андеграунду маємо два варіанти Compaq Portable III, з 286 та Compaq Portable 386.

Перший мій, другий – Львівського Музею Комп’ютерних Технологій.

Вони дуже схожі, насправді. Згідно Вікі, компанія поспішала випустити на ринок портативний комп’ютер, а в наявності мала хіба материнські плати 286-го, тому спершу випустила варіант з ними, до готовності новішої плати. Тому, далі в тексті я буду їх розрізняти за типом процесора – 386 чи 286.

Обережно – далі 20 Мб фотографій, більшість з яких, на жаль, неякісні або й жахливі.

Compaq Portable III, 286, фото з журналу “Australian Personal Computer”, Volume 8, Number 6, June 1987. Мій зараз помітно жовтіший. Зверніть увагу на розкладку клавіатури.

Загальний опис

  Compaq Portable III Compaq Portable 386
Рік випуску 1987 1987
Дата в BIOS (моїх) 18 серпня 1987 28 січня 1988
CPU 286 386
Тактова частота, МГц 12 20
Опціональний FPU/частота МГц 287/8 (присутній в моєму) 387/20 (відсутній)
Дисководи, “заводські” 1 / 5.25 / 1.2 Мб 1 / 5.25 / 1.2 Мб
Дисководи, зараз 1 / 5.25 / 1.2 Мб 1 / 3.5 / 1.44 Мб
HDD, “заводські” 20 / 40 Мб 40 / 100 Мб
HDD, зараз 43 Мб (type 10) 100 Мб (type 45)
RAM, зараз 640 Кб 4 Мб
Вбудована відеокарта, (див. далі) MDA та CGA MDA та CGA
Ціна, на момент виходу $4999/20Мб, $5799/40Мб $7999/40Мб, $9999/100Мб
Ціна, в доларах 2023 $13512, $15674 $21621, $27026
Маса 9.1 кг 9.1-9.5 (з 100 Мб HDD) кг
Споживання 145 Вт 145-150 Вт
  • Плазмовий дисплей з діагоналлю 10 дюймів.
    • Доволі гарний. Офіційно – бурштиновий.
    • Подруга сказала, що в нього дуже агресивний монітор, то зразу сформулювалося: “все ж, пекельне полум’я плазми палає”. :=)
    • Рухомий – можна змінювати положення відносно корпуса.
    • Про відеокарти розповім трохи далі – там складно.
  • Маю ISA Expansions Slot із двома 16-бітовими слотами ($199).
    • Підключив VGA-карту і мережеву карту – просто кайф!
    • Восьмибітовий AST Rampage працює, природно, лише як EMS та потребує драйвер.
    • Шістнадцятибітова AST Advantage1 теж працює без проблем, як XMS.
      • Моя на 3 Мб, завдяки “дочірній платі” Advantage-Pak. Тому вона товстенька, і приєднати потім VGA чи мережеву карту вдається ледь-ледь – та лише тому, що вони сучасніші (початку 90-х) і коротші.
  • Клавіатура приємна, достатньо стандартна в 386, але дивна в 286.
    • Зокрема, в 286, Esc – на малій цифровій2, над Home, а Enter на ній немає, замість нього – великий плюс.
    • Видається, ніби сумісна з стандартною AT/DIN.
    • Проблем, характерних для Tandy 1400 LT – надмірної чутливості чи частоти повторів, не спостерігаю.
  • Зовнішні порти мінімалістичні:
    • RGBI для зовнішнього кольорового монітора.
    • Один COM-порт (названий в документації “asynchronous communications (serial) interface”).
    • Один LPT-порт (“Parallel interface”).
  • Вбудований RTC.
  • Автоматично обирає живлення 110/220В.
  • Важкенькі! Забуваєш, що Tandy 1400 LT важким здавався…
  • Для нього компанія випускала кастомізований MS-DOS 3.2, який коштував додаткових 162 долари.

На корпусі три світлодіоди, один – живлення, два інших – активність першого та другого “контейнерів”. Якщо в контейнері 1.2 Мб 5.25” дисковод, документація обіцяє, що коли використовується 1.2Мб дискета, він світиться зеленим, а якщо 360Кб – помаранчевим, однак, не спостерігаю цього, можливо, внаслідок ремонту.

На 286 встановлено FDD Epson SD-700A – 5.25” FDD стандартної товщини там не поміститься.

До теми схожості. 386 ліворуч. (Клікабельно).
Вперше я цей 386-й побачив на виставці.

Документація дуже детальна, з фотографіями всіх важливих частин. Значну частину її можна побачити на minuszerodegrees. За потреби – маю локальну копію, звертайтеся.

Самотестування повідомляє коди помилок, описані в документації. Portable III Operations Guide
Конфігурація 286, використовується MDA-адаптер.
Конфігурація 386, використовується CGA-адаптер.

Опціональні розширення

Окрім згаданого вище розширювача з двома ISA портами (expander unit), виготовлялася велика кількість додаткових опцій. Перераховувати всі не буду, див. документацію, зокрема “Operations Guide”, відзначу лише деякі:

  • Розширювачі пам’яті, див. далі.
    • На жаль, поки жодного з них не зміг знайти для 286, довелося плати AST використовувати…
    • 386-й має 4 Мб, тому, згідно схеми, мав би вміщати розширювачі пам’яті – не розбирав, щоб випадково не зламати.
  • Expander unit з 40 Мб носієм – змінним картриджем з магнітною стрічкою, для резервного копіювання.
  • Альтернативний 360 Кб 3.5” FDD. (Тому 386-й з 3.5” не такий вже “анахронічний”, та й 1.44Мб-варіант згадується в “COMPAQ 80286-Based Products Technical Reference Guide”).
  • Внутрішні модеми на 1200 чи 2400 бод.
  • Додаткові порти, відеокарта (для розширювача ISA), монітор, підставка, чохол.
Діаграма можливих оновлень пам’яті для 286 варіанту, взято тут. Зауважте, потребує додаткових плат-адаптерів.
Діаграма можливих оновлень пам’яті для 386 варіанту, взято тут. Потребує додаткових плат-адаптерів.
“Бутерброд” з двох плат розширення по 4 Мб для 386. Фото взято тут.

Щодо вартості такого розширення пам’яті, ціну я поки в каталогах не знайшов, автор фото вище оцінює в $ 10 000 – згідно Memory Prices 1957+, помилятися більше, ніж вдвічі не мав би. Та й ціна самого комп’ютера співмірна. Отож, глянув я на інфляцію – 10 000 доларів 1987 це майже $ 26 000 сучасних [4], потім – ціну золота в 1987 та й виявив, що плата помітно дорожча за золото – за $10 000 можна було купити приблизно 630 грам (хоча її точної ваги не знаю – тут трохи є ваг, але не цих плат).

Налаштування та продуктивність

Продуктивність

Теорія

Згідно документації, частоти процесора, для 286 варіанту:

  • HIGH – 12 МГц,
  • FAST3 – 8 МГц, для сумісності,
  • AUTO – 12 в нормі, і 8, коли активний дисковод. Документація стверджує, що це потрібно деяким програмам, підозрюю – для якогось захисту від копіювання.
  • Значення за замовчуванням – під час ввімкнення, обирається джампером.
  • Документація стверджує, що розширювач завжди працює на 8 МГц.

Документація стверджує, що Ctrl-Alt-\ – переключає між режимами. Також можна переключати за допомогою утиліти MODE від Compaq DOS: MODE SPE[ed][=][FAS[t]|HIG[h]|AUT[o]].

Для 386 аналогічні подробиці поки не вдалося знайти, не виключаю, через неуважність.

Практика

Для перевірки тактової частоти використовував CheckIt 4.10 – як його “висновок” щодо частоти, так і виміряну ним швидкодію, а також, як допоміжний метод4, вивід утиліти MODE.

  • 286-й пищить раз під час завантаження – це мало б означати AUTO режим, однак, частота 8 МГц.
    • На перший погляд, шоткат Ctrl-Alt-\ не справляє жодного впливу.
    • Ймовірно, причина – нетипове розташування джамперів після ремонту, не став розбирати, щоб не зламати5.
    • Присутність чи відсутність розширювача (expansion unit) не впливає.
  • 386-й пищить двічі, частота 20 МГц.
    • На шоткат реагує не кожен раз і дуже дивно – мізерною зміною продуктивності. Можливо, я некоректно ставив експеримент, і взагалі щось інше відбувалося.
    • В документації про якісь переключення не швидкодії не знайшов згадок, але міг впустити.
  • Однак, все виявилося не так просто.

Розбиратися довелося довго. Спочатку пробував за допомогою переривань – API BIOS та портів, використовуючи документацію та статті в Інтернеті, нічого не виходило. Успіху вдалося досягнути аж після застосування MODE.COM з Compaq DOS 3.31, дизасемлювання його та, потім, трасування 16h-го переривання. Кумедно, хоча часту правильних дій я робив і раніше, очевидно, щось впускав, тому не зауважив результату. Далі опишу вже кінцевий результат.

Використання MODE

Для використання MODE.COM з Compaq DOS 3.31 під DOS 6.226, скопіював цей файл в MODECMPQ.COM і додав його до виключень в таблиці SETVER7.

MODE від Compaq DOS 3.31 дозволив змінити частоту:

  • MODE SPEED=HIGH – встановило тактову частоту 12МГц на 286,
    • При цьому, Ctrl-Alt-\ дозволяє знизити частоту, але не підвищити, навіть під Compaq DOS 3.31 – якщо завантажити цю версію з дискети8.
  • MODE SPEED=FAST – на 386, чомусь, згідно CheckIt, встановлює 17.52 МГц.
    • Однак, хоча різниця між 17.52 МГц та 20 МГц невелика, продуктивність впала помітно сильніше – див. далі. Конкретні значення близькі до отриманих для 286 / 8 МГц
      • Можливо, CheckIt помилково визначив частоту – в інших випадках отримані числа приблизно відповідають очікуванням, або діють ще якісь механізми сумісності в FAST режимі. В будь якому випадку, саме тому потрібно дивитися і на виміряну швидкодію.
    • На клавіатурну комбінацію не реагує, режими не змінює.
  • Режим COMMON, очікувано, ігнорується9 на 286.
    • Якщо в 86-й порт записати 0, за допомогою виводу портів можна змусити MODE казати “SPEED=COMMON” на 286, однак, швидкодія залишається на рівні FAST.
      • Обробник переривання 16h для зміни швидкодії записує в 86-й порт 8 – встановлює 3-й біт, забороняючи COMMON режим (див. далі), але виглядає, що для цієї машини це ні на що не впливає.
    • Для 386, якщо скористатися перериванням, COMMON встановлюється, але має лише трішки меншу продуктивність, ніж FAST.
Ось що каже про Ctrl-Alt-\ “COMPAQ 80286-Based Products Technical Reference Guide” – документація на трохи старіші машини. Враховуючи не стандартне розташування джампера на моїй 286, це відповідає поведінці, яка спостерігається.

Переключення з використанням int 16h та портів

Для керування режимами цих комп’ютерів, зокрема, частотою процесора, надаються низькорівневі засоби, бути портів вводу-виводу та перериваннями. Вони (частково) документовані ентузіастами:

  • На сторінці John Elliott,
  • PORTS.A з Ralf Brown interrupt list,
  • Int 16/AH=F3h – “Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)”
  • Int 16/AH=F0h – “Compaq 386 and newer - SET CPU SPEED”,
  • Int 16/AH=F1h – “Compaq 386 and newer - READ CURRENT CPU SPEED”
    • Що не зовсім правда, Portable III з 286 їх ніби теж підтримує, принаймні, помилки не видає, і повернене значення – відповідає стану справ, 8 МГц.

Читав список переривань Ральфа Брауна в дитинстві та й оті “Vendor-specific BIOS Extensions” здавалися такими привабливо-загадковими – на “Пошуках” були свої, але я про них не мав даних, а інші машини були “нудними” клонами PC AT, без того всього. Аж ото щойно отримав нагоду спробувати :-)

Стверджується, що вивід в порт клавіатури, 0x6410, таких значень керує частотою процесора:

  • 0A1h – “встановити 6MHz”, (встановлює FAST)
  • 0A2h – “встановити 8MHz” (HIGH),
  • 0A3h – “встановити 16MHz”, (встановлює 12МГц11, HIGH)
  • 0A4h – переключити частоту на альтернативну.

Однак, експерименти показують – це працює лише для 286-го, хоча, згідно наведених частот – писався не для нього.

Змінюємо швидкодію на 286, за допомогою портів. Зміна швидкодії також контролювалася CheckIt.

Трасування обробника int 16h показує, що 386-й для зміни частоти:

  • В FAST:
    • Читає значення з порта 0x86, але, фактично, його ігнорує, записує туди 0x2712.
    • Забороняє переривання.
    • Виводить в 0x4B 0x92.
    • Виводить в 0x4A 0x27 (перевіряючи якусь умову перед тим).
    • Дозволяє переривання.
  • В HIGH (опускаючи маніпуляцію перериваннями та перевірки):
    • Виводить в 0x86 0x67.
    • Виводить в 0x4B 0x92.
  • В AUTO:
    • Виводить в 0x86 0xE7.
    • Виводить в 0x4B 0x92.
Приклад трасування mov ax, 0F001h/int 16h на 386.

Поверхневі експерименти вказують, що хоча, щоб збити з пантелику MODE, достатньо змінювали лише 86-й порт, для зміни швидкодії ніби потрібні й інші. Також, не перевіряв, чи дії обробника int 16h залежать від попереднього стану комп’ютера.

Маємо ілюстрацію, хай – банальну, що використання переривань BIOS дає вищий рівень сумісності, ніж портів безпосередньо.

Отож, перейдемо до того, як змінити частоту з використанням “переривання сервісів клавіатури”, int 16h:

  mov ax, 0F003h  ; переключити на альтернативну частоту
      ; 0F002 -- HIGH, 0F001 -- FAST, 0F008 -- AUTO, 
      ; вказання вручну -- 0F009
      ;  див. також http://www.ctyme.com/intr/rb-1916.htm
  int 16h 

Подивитися поточну:

  mov ah, 0F1h   ; прочитати поточну частоту -- в AL, згідно таблиці з лінку вище
  int 16h

А ось цей старіший API не працює:

  ; трасування показує -- не реалізований на 386.
  ; і лише дивиться на 86-й порт на 286 -- судячи по всьому, і там не працюватиме.
  mov ax, 0F301h ; встановити 8 МГц, 0F300h -- 6 МГц
  int 16h

Для виконання команд використав DEBUG.COM, а, оскільки, вже забув подробиці, скористався цими інструкціями.

Переключаємо режим, за допомогою mov ax, 0F001h/int 16h на 286.

Виглядає, що описане в документації як: “переключити на альтернативну ‘швидкодію’-частоту”, будь-яким із способів – шоткатом, MODE, відповідним викликом чи виводом у порт, працює лише як “повернути до значення за замовчуванням”. Принаймні, так воно себе поводить в мене, за нестандартного розташування джамперів.

Результати тестування

Для тестування використовую Checkit 4.10. Видно, що FPU – це таки сила!

Конфігурація Опис CPU/FPU Dhrystones Whetstones
Portable III / FAST 286/8МГц + 287 1454 (4.23 PC XT) 245800 (37.24 PC XT)
Portable III / HIGH 286/11.77МГц + 287 2240 (6.51 PC XT) 270200 (40.95 PC XT)
Portable 386 / FAST 386/17.52МГц, без 387 1493 (4.34 PC XT) 29900 (4.54 PC XT)
Portable 386 / HIGH 386/20МГц, без 387 4361 (12.68 PC XT) 84100 (12.75 PC XT)
Portable 386 / HIGH + QEMM 386/20МГц, без 387 4361 (12.68 PC XT) 65700 (9.96 PC XT)
Portable 386 / HIGH + QEMM, іноді, після Ctrl-Alt-\ 386/20МГц, без 387 4250 (12.35 PC XT) 64400 (37.24 PC XT)

Як видно, коли завантажено QEMM, цілочисельна продуктивність не змінюється (хоча, оцінка Checkit тактової частоти “зменшується” з 20МГц до 19.99МГц), однак, продуктивність floating-point обчислень з використанням емуляції співпроцесора (яка включає виникнення переривань відсутності співпроцесора), зменшується суттєво – на 22% від початкової. Причина зрозуміла – QEMM “тримає” процесор в режимі v8086, де обробка переривань помітно складніша, але результат, все ж, був несподіваним.

Максимальна швидкодія для 286.
Максимальна швидкодія для 386.

Наявність HIMEM не впливала на результати для 386.

На 386, за ручного задання швидкодії: 1 (мінімальна), давала 597 Dhrystones, 2 – 664, 3 – 746, 4 – 814, 10 – 1280, а максимальна, 50 – відповідала HIGH, 4361. Повну табуляцію полінувався робити. :-) На 286 вона повністю ігнорується – в тому числі, й MODE не бачить змін.

Мінімальна швидкодія для 386.

Коли на 286 завантажено пакетний драйвер (?!!), хоча частота детектується як 11.77 МГц, продуктивність паде до 2181 Dhrystones / 270000 Whetstones.

Іноді, після натискання Ctrl-Alt-\, швидкодія падала на 2.5% – це мізер, але 386 – один із останніх процесорів сімейства x86, де такі тести мають високу відтворюваність, тому це дивно. Але детальніше не досліджував, через важку відтворюваність самого експерименту. Можливо, таке падіння спричиняло взагалі щось інше, хоча, очевидні речі, типу наявності-відсутності в пам’яті певних резидентів чи VC.COM, перевірив.

Порівнюючи продуктивність на цілих числах з переможцями поміж моїх XT – стаціонарного та лептопа, які ще й, випадково, однолітки:

a/b Amstrad 1640 Tandy 1400 LT Portable III/8 Portable III/12 Portable 386
Amstrad 1640 1.00 1.33 0.51 0.33 0.17
Tandy 1400 LT 0.75 1.00 0.385 0.25 0.13
Portable III/8 1.95 2.60 1.00 0.65 0.33
Portable III/12 3.00 4.00 1.54 1.00 0.51
Portable 386/20 5.85 7.79 3.00 1.95 1.00
Додатково          
Рік 1987 1987 1987 -“- 1987
Ціна в доларах 2023 $5133 $4332 $15674 -“- $27026 + ціна RAM, ще тисяч 20…

Таким чином, у вас, в 1987, був вибір13: або був повноцінний лептоп – з батареєю, але без HDD і повільний, або комп’ютер, зручний в переносці, але без батареї, з HDD і потужний – але більше, ніж втричі дорожчий. (Взяв ціну для моделей, ближчих до наявних в мене).

Графіка

Теорія

Підтримує дві різних відеокарти. Режим за замовчуванням – CGA чи MDA, теж обирається джампером.

Однак, фактично, відеокарта – не зовсім CGA, є розширенням від Compaq, з додатковим режимом 640х400 (включаючи текстовий режим з 80х25). Шрифти (8x8 чи 8x16)14, на відміну від CGA, в оперативній пам’яті, його можна змінювати.

Крім SETUP, для керування, яка ж відеокарта використовується, можна використовувати “рідний” MODE та спеціалізовану утиліту ADAPT.COM.

Знайти ці утиліти було важко – всілякі файли типу “Microsoft MS-DOS 3.20 (1987) [Compaq OEM] (5.25-360k).7z” з Winworldpc.com не містять їх, як і архів з діагностичними програмами. Випадково, шукаючи CEMM, натрапив на PCjs.

Практика

Мій 286-й варіантвмикається як MDA.

Ймовірно, MDA через положення цього джампера 2-3. Взято тут.

Перші спроби змінювати режим згідно інструкцій в Інтернеті, з використанням портів чи переривань, не спрацювали. Змінити вдалося лише за допомогою MODE.COM15 з Compaq DOS 3.31 – див. “використання mode” для частоти CPU:

MODE SELECT = CGA
MODE SELECT = MDA 

Також, всі засоби підтримують різноманітні конфігурування зручності плазмового дисплею – детальніше у них не занурюватимуся.

Налаштування властивостей зображення (тексту) у конфігураторі SETUP.EXE. Зроблено на 286.
Налаштування резидентної частини ADAPT.COM. Зроблено на 386.

Переключення з використанням портів та int 10h – теорія

Згідно статті John Elliott, порт тільки для читання, 17C6h, містить інформацію про підтримувані режими:

  • 0: 0 – підтримується CGA, 1 – ні.
  • 1-2: зарезервовано.
  • 3: 0 – підтримується MDA.
  • 4: 0 – підтримується BitBlt engine16.
  • 5: 0 – є режим з 132 стовпцями.
  • 6: 0 – є режим 640x480x256.
  • 7: 0 – є 8-бітовий DAC.

Спробував.

І на 286, і на 386, завжди повертає: 0xE6 – 1110 0110b, є CGA, MDA i BitBlt engine.

Порт для читання 1BC6h – про тип монітору:

  • 0-3: тип зовнішнього,
  • 4-7: внутрішнього,

згідно кодів:

  • 0 – немає,
  • 1 – монітор з двома режимами (dual-mode monitor)
  • 2 – CGA, 640x200,
  • 3 – Compaq Color monitor,
  • 4 – плоска панель з 640x400.
  • Див. також: INT 10h/AX=BF03h.

І на 286, і на 386, очікувано, завжди 0x42 – 0100 0010b, 640x400 / CGA.

Те ж виводить, для всіх портів, з підключеною VGA.

Для керування корисним буде порт 13C6h, доступний і на читання і на запис:

  • 0-2: Master mode, 0=CGA 1=EGA 3=MDA.
  • 3: 1 – активний внутрішній монітор, 0 – зовнішній.
  • 6: 0 – доступні розширені відео-функції Compaq (INT 10h / AX = 0BFh).

На 286:

  • після ввімкнення/MDA: 0x0B – 0000 1011, внутрішній монітор, MDA.
  • в режимі CGA: 08 – 0000 1000, внутрішній монітор, CGA.

На 386: аналогічно, відповідно до режиму.

Також, в тій статті описано керування шрифтами, зовнішнім дисплеєм і т.д. – можливо, придасться, якщо буду дописувати конфігуратор.

Вміст портів керування відео, на 286.
Вміст портів керування відео, на 386.

За допомогою довідника переривань Ральфа Брауна склав список потенційно релевантних розширень BIOS/int 10h:

Переключення з використанням портів та int 10h – практика

Почав я з того, що записував у порт 13C6h значення для нового режиму. Нічого з того не вийшло. Потім я здогадався також змінити відеорежим викликом Int 10/AH=00h – не допомогло. Знову довелося дизасемблювати MODE.COM.

Цікаво, що коли спробувати переключити режим виводом в порт чи викликом переривання з-під DEBUG.COM, зображення залишається незмінним, ігноруючи наступний вивід, але можна ввести команду повернення до початкового стану наосліп – вивід відновиться, однак, на екрані не буде того, що виводилося в проміжку. Враховуючи пост-знання, така поведінка природна, але спочатку дуже дивувала.

Якщо так “завмерло” через переривання – вивід у порт значення за замовчуванням виправляє ситуацію. Ця поведінка підтверджується дизасемблюванням та трасуванням обробника – нічого іншого він не робить.

Послідовність дій, яку виконує MODE.COM для зміни режиму – відкидаючи всілякі перевірки:

  1. Викликом Int 10/AX=BF02h – Set master mode of current controller, змінює режим.
    • Обробник int 10h, власне, лише встановлює потрібні біти в порт 13C6h – після всіляких перевірок.
  2. Оновлює байт за адресою 410h.
    • Ось це я не робив до того, як почав дизасемблювати.
  3. Змінює відеорежим, викликом Int 10/AH=00h.

Останнім штрихом була потреба оновити байт за адресою 410h, де зберігається “список апаратури17. Цей ж список повертає (в AL) виклик int 11h. Його біти 4 і 5 містять код відеорежиму, на який, очевидно, покладається BIOS:

  • 00 – EGA, VGA, PGA тощо.
  • 01 – 40x25, кольоровий.
  • 10 – 80x25, кольоровий.
  • 11 – 80x25, монохромний.

Зокрема, тому певне DEBUG.COM не може нічого вивести, коли тут некоректне значення.

Цікаво, що коли завантажений QEMM, MODE.COM від Compaq не може змінити відеокарту, каже “Adapter boards conflict”. Виглядає, це пов’язане із тим, що перед переключенням, він перевіряє – чи можна писати у відповідну відеопам’ять, 0xB0000 чи 0xB8000, цільового режиму. Спроба зробити дірку “дірку” в обох областях ключем /X не допомогла, стало гірше – тепер просто зависає, замість повідомити про помилку. Певне BIOS ще щось таке “несподіване” для “гіпервізора” робить.

Для перевірки написав дві простенькі програмки. Для перехову до використання CGA:

; Proof of concept: tool to change Compaq Portable III video to use CGA
; No checks are performed.

   .MODEL tiny
   .CODE
   
ORG 0100h

start: 
   push    cs
   pop     ds       

   mov     dx, 13C6h 
   in  	   al, dx
   and     al, 0F8h       ; Often AL == 08h
   out     dx, al
   
   push    ds
   mov     ax, 40h        ; BIOS Data Area segment
   mov     ds, ax         ; https://stanislavs.org/helppc/bios_data_area.html
   and     byte ptr ds:10h, 0CFh ; 
   or      byte ptr ds:10h, 20h  ; Set bits 4-5 to 10b, color 80x25
   pop     ds
   
   mov     ax, 3          ; Set video mode to 80x25/16 colors (CGA)
   int     10h            ; http://www.ctyme.com/intr/rb-0069.htm#Table10

   
   mov     ax, 4C00h      ; DOS terminate program function with 00 exit code.
   int     21h          
   
END start 

та (лише відмінна частина), для переходу до використання MDA:

   mov     dx, 13C6h 
   in  	   al, dx
   and     al, 0F8h       ; Often AL == 0Bh
   or      al, 03h              
   out     dx, al
   
   push    ds
   mov     ax, 40h        ; BIOS Data Area segment
   mov     ds, ax         ; https://stanislavs.org/helppc/bios_data_area.html
   and     byte ptr ds:10h, 0CFh
   or      byte ptr ds:10h, 30h  ; Set bits 4-5 to 10b, mono 80x25
   pop     ds

   mov     ax, 7          ; Set video mode to 80x25/mono (MDA)
   int     10h            ; http://www.ctyme.com/intr/rb-0069.htm#Table10

Асемблював TASM версії 3.118, скориставшись ключем /t для створення .COM-файлу:

tasm setcga
tlink setcga /t

Під QEMM ці утилітки теж не працюють, навіть прапорець /X для адрес CGA i MDA не допоміг.

Продуктивність

Вимірював за допомогою CheckIt 4.10:

  286/8 МГц 286/12 МГц 386/Slow (8 МГц?) 386/20 МГц 386/Slow + QEMM 386/20 МГц + QEMM
MDA/BIOS 3110 4642 2766 8240
vs PC-XT 4.59 6.86 4.09 12.17
MDA/Direct 4078 7255 2627 7050
vs PC-XT 0.82 1.45 0.53 1.41
CGA/BIOS 3052 4642 2776 8039 1982 5886
vs PC-XT 4.51 6.86 4.09 11.87 2.93 8.69
CGA/Direct 17944 26916 17303 50629 17303 50629
vs PC-XT 3.59 5.38 3.46 10.13 3.46 10.13
VGA/BIOS 2084 2514   2698    
vs PC-XT 3.08 3.71   3.99    
VGA/Direct 17944 26916   50629    
vs PC-XT 3.59 5.38   10.13    

VGA картка – в розширювачі, Trident 9016×2/4 LT2 (1991), 16-бітова ISA. З QEMM тестувався лише CGA – режим переключити утруднено, коли він активний. Цікаво, що швидкість процесора зберігається за гарячого перевантаження.

Деякі спостереження з таблиці:

  • Зростання продуктивності MDA Direct-доступу для 286 помітно більше, ніж якби вона зростала лінійно з частотою (4078*1.5 = 6117). Не дуже розумію, що могло б це спричинити.
  • Для інших режимів і способів використовувати вбудовані відеокарти 286-го, пропорція приблизно 1.5, хоч і не точно.
  • Взявши за основу відношення цілочисельної продуктивності для двох режимів 386-го, 2.92, MDA Direct-доступ, навпаки, повільніший від очікувань (2.7), а решта – близько до очікуваного.
  • За наявності QEMM, прямий доступ із тією ж швидкістю відбувається – точно, а ось з використанням переривань – майже на 30% повільніше.

Open source замінник MODECMPQ.COM

Хоча скористатися MODE.COM від Compaq можна, це не завжди зручно. Крім того, для перевірки досліджень вище, написав код переключення швидкодії та використовуваної відеокарти.

Також, додав переключення “зовнішній-внутрішній дисплей”, однак, враховуючи мороку зробити все правильно для інших засобів, без можливості випробувати це, не думаю, що воно працюватиме.

Використання мого конфігуратора, на 286.

Джерельні тексти та виконавчі файли доступні на github: “Compaq Portable III and Portable 386 mode change utility”.

MAME підтримує Compaq Portable III з CGA та оригінальний Compaq Portable 1983-го; мій улюблений PCEm підтримує Compaq Portable Plus, Compaq Deskpro, Compaq Portable II, Compaq Deskpro 386; PCjs – Portable, DeskPro 286, DeskPro 386, LTE/286. Тобто, який-не-який вибір є, можливо, колись розширю функціонал – якщо буде попит.

Конфігуратор від Compaq

Для конфігурування використовується спеціальна утиліта19, що дозволяє, поміж іншого, вказати, які дисководи та HDD є, сконфігурувати візуальні атрибути тексту та подивитися подробиці, типу наявного співпроцесора 287. Більш детально побачити цю інформацію можна за допомогою іншої утиліти диску діагностики – INSPECT.EXE. Також, DIAG.EXE вміє робити певні тести.

Всі ті утиліти дуже не люблять QEMM386. SETUP та INSPECT падуть зі словами “Packed file is corrupt” – певне, наслідок тієї магії, що мені дизасемблювати їх заважає, а DIAG запускається, і чесно каже: “The system is in protected mode” та пропонує завершитися.

Також, DIAG.EXE на 386 зависає за присутності HIMEM.SYS, на 286 з тим проблем не має.

Колекція таких утиліт є на PCjs – див. також інші підрозділи, ліворуч, в під-меню Diagnostics/COMPAQ.

Далі трохи фото конфігуратора – для довідки.

Конфігуратор від Compaq. Запущено на 386 – видно по характерній горизонтальній смужці, дефекту матриці.
Конфігуратор від Compaq - 2. Запущено на 386. Одна із смужок зверху “справжня” (вона подвійна, але на фото це не дуже видно), інша – дефект.
Конфігуратор від Compaq - 3. Не всі наявні пункти можна змінити. Запущено на 286.
Конфігуратор від Compaq - 4. Режими виведення тексту. Запущено на 386.
Конфігуратор від Compaq - 5, інформація про модулі пам’яті. Запущено на 386.
Вивід INSPECT.EXE, запущено на 286.
Вивід DIAG.EXE – ревізія BIOS, запущено на 286.
Вивід DIAG.EXE – ревізія BIOS, запущено на 386.

Коли підключив VGA карту через розширювач, виявилося, що він ще й кольоровий. Коли є зовнішня карта, обираєш відео-адаптер, питається “чи є монітор, на який ви дивитеся, головним?”, якщо відповісти – ні, каже – читайте інструкції до відеокарти…

Аномалія HDD на 286

HDD в комп’ютері не “рідний”, і з ним виникли певні труднощі. INSPECT.EXE бачить, що це CONNER CP-3000, на 42MB, з рідним форматом. Цей HDD мав би сприймати CHS 980/5/17.

Проблема в тому, що конфігуратор наполягає, що код HDD має бути 22 – згідно цієї таблички кодів HDD для BIOS Portable III, це (CHS): 805/6/17, однак ініціалізуватися так той диск відмовляється (природно)!

Тривалий час використовував код 43, 805/4/26 – і воно якось працювало! Загадка, чесно кажучи. На ньому якась кількість бедів, то для контролю переформатував як код 10 чи 17 (відрізняються хіба “Write precompensation”): 980/5/17 – теж все ОК, але беди справжні, не наслідок невірної геометрії.

Вміст CMOS

Поверхнево, вміст CMOS схожий на стандартний IBM PC AT, зокрема – тип HDD зберігається за зміщенням 12h (якщо він менше 14) та 19h (16 і більше), а FDD – 10h, перша контрольна сума теж, 2Eh-2Fh. Зміна налаштувань відображення тексту з Half-Intensity на Reverse Video, крім контрольної суми, змінює біти в 39h та 3Dh. Детальніше поки не вникав.

Сам конфігуратор чи то захищений якимось захистом від копіювання чи дебагу, чи то якось бавиться з оверлеями – виконавчий код вантажить з диску, тому перша спроба реверсингу не дала результатів.

Можливо, колись, під настрій, спробую відтворити конфігурування апаратури.

Вивід INSPECT.EXE – вміст CMOS, запущено на 286.
Вивід INSPECT.EXE – вміст CMOS, запущено на 386. Видно процес оновлення екрану. Також, комп’ютер вже добре ‘‘прогрівся’’ і дві смужки дефекту матриці розділилися. Іноді ше третя, в нижній третині з’являється, і ще один дефектик, який тут є, але описувати задовго буде.

CMOS на 286 (контрольна сума 2A9, перших 64 і других 64 байти збігаються):

17 fd 17 9e 00 05 00 01  01 80 26 02 50 80 00 00 
20 00 f0 00 33 80 02 00  00 2b 00 00 00 00 00 00 
00 00 00 00 25 00 00 00  00 00 00 00 0f 85 02 a9 
00 00 19 e0 00 00 00 00  00 00 00 00 00 00 00 d7 

CMOS на 386 (контрольна сума 2DB, перших 64 і других 64 байти збігаються):

46 FF 24 00 22 00 07 15   01 24 26 02 70 80 00 00 
40 00 F0 00 21 80 02 00   0C 2D 00 00 00 00 00 00 
00 00 00 00 33 00 00 00   00 08 00 00 0F 85 02 DB 
00 0C 20 80 00 00 00 00   00 00 00 00 00 00 00 00 

Файли для завантаження

Архів [Microsoft_MS-DOS_3.31(Compaq_OEM_Rev_G).zip](/retrocomputing/ibm_pc_compat/files/CompaqPortable3/Microsoft_MS-DOS_3.31(Compaq_OEM_Rev_G).zip) містить:

  • оригінальні образи з WinWorld: FASTART.IMG, OPER.IMG, STARTUP.IMG;
  • ALL_1_20.IMG – 5.25”/1.2Мб образ, всі файли DOS разом, та утиліти конфігурування, але без EDLIN – не поміщався,
  • ALL_1_44.IMG – 3.5”/1.44Мб образ, з утилітами конфігурування.

Файл sp0308.zip – оригінальний архів конфігуратора, що підтримує всі старі системи (новіший, sp0316.zip, вже частину викинув), вміє створювати дискету для конфігурування. На практиці це не зручно, тому зразу – готовий образ, Compaq_Diagnostic_Disk_8.00_RevB_SP0308.img (720 Кб), та обрізаний варіант, лише з конфігурацією, але без діагностики, на 360 Кб.

COMPAQ-UTILS-072789.img – інші користувацькі утиліти Compaq, від 1989 року: ADAPT.COM, CHARSET.COM, CEMM.EXE, VDISK.SYS тощо.

Ремарка: в сучасних антивірусів на ці архіви може істерика ставатися… Впевнений, вірусів там немає, але є бінарники з доволі низькорівневим кодом.

Експерименти з розширювачем

Підключити його вимагає помітного механічного зусилля та акуратності – пластмасові фіксатори ламаються. Якщо буде потрібно (ці модулі доволі рідкісні) – пишіть, спробую детальніше пояснити процес. Але ідейно все просто – відсунути захисну засувку ззаду, під’єднати до роз’єму та зафіксувати, підсунувши планку внизу розширювача.

У всьому решта – звичайні 16-бітові ISA слоти. Підключав відеокарти, мережеві карти, на 286 – 8-бітову та 16-бітову карти розширення пам’яті від AST: Rampage та Advantage. Аномалій, принаймні, пов’язаних з розширювачем, не трапилося.

Конфігурування мережі чи Rampage тут описувати не буду, до машини воно не особливо прив’язано.

Хіба що, виявилося – Power Point та інші засоби презентування для Windows 3.xx потребують, мінімум, стандартного режиму (використання 16-бітового захищеного режиму) і мінімум – EGA. Тому, без модуля розширювача (для відеокарти, на обох) і AST Advantage чи “рідних” розширювачів пам’яті презентувати з-під Windows не вдасться. AST Rampage не допомагає – Windows для роботи в standard mode потребує мінімум 1 Мб пам’яті (640 Кб базово та 256 Кб extended (XMS) пам’яті), і expanded (EMS) йому в тому не допомагає.

Чи захоче працювати на 640x400, Compaq Plasma – не знаю, в свій час забув спробувати, а зайвий раз підключати розширювач не хочу, через крихкість пластику.

Після підключення зовнішньої відеокарти хоче, щоб запустили SETUP – просить під час завантаження, хоча ніби від цього нічого не змінюється. Ретельно не тестував.

На 286, мої утиліти “SETMDA” чи “setmode video=mda” спричиняють переключення на вбудований дисплей, setmode video=cga – повертає на зовнішній, при тому, внутрішній починає мигати. А ось modecmpq select=mda не має ефекту, а modecmpq select нічого не виводить, ймовірно, через ретельнішу діагностику поточного стану системи. В будь-якому випадку, вміст регістрів, що виводить setmode – не змінюється.

На 386, на жаль, VGA-відеокарта відмовилася працювати як належить:

  • Під час ініціалізації її BIOS виводить чорно-біле зображення.
  • Тест пам’яті в Checkit виявляє помилки (16 рівно) – а відеокарта справна, перевірено.
  • Зі всіх режимів, лише режим 7 виводить на VGA і зовнішній дисплей, решта – на вбудований.

Можливо, причина в розташуванні джамерів, і MDA за замовчуванням якраз дозволяє 286-му нормально працювати з зовнішньою VGA. Якісь такі натяки траплялися мені в документації…

На 286, навпаки – 7-й, та 0F режим виводиться на вбудований дисплей, решта на зовнішній. Але це швидше нагадує поведінку комп’ютера з двома відеокартами.

В обох випадках, вміст на вбудованому дисплеї зберігався, коли переходило до VGA, але на VGA зникав, коли виводило на вбудований.

Досвід експлуатації

Обидва

Volkov Commander працює звично. Dos Navigator мигає, за стандартної палітри і налаштувань відображення дисплею за замовчуванням. Звичайно, потрібно обрати монохромну чи “laptop” палітру.

Утиліти типу DOSKEY/EDOSKEY, COM-мишки, як з мікрософтівським драйвером, так і з CuteMouse (CTMOUSE.EXE) тощо, працюють.

(E)DOSKEY, належно сконфігурований – дуже зручна штука! Шкода, що я його освоїв, коли це вже тотально неактуально було.

Volkov Commander , запущено на 286.
Dos Navigator 1.51, запущено на 286.
Turbo Pascal 7.0 (1992), запущено на 286.
Turbo Basic 1.0 (1987), запущено на 386, але працює і на 286.
Славнозвісний дебагер – DB.COM.

386

Перше, з чого почав – боротьба за “нижню” пам’ять. Все ж, це 386 – багато більш гнучкий процесор, з сторінковою пам’яттю.

Певне, кращий драйвер різних видів пам’яті – QEMM386. Він, в цілому, працює. Однак:

  • З Windows 3.11 подружити його не вдалося – трішки подробиць далі.
    • Windows 2.xx проблем з ним не має.
  • Quickboot20 не працює.

Враховуючи, що раніше з такими проблемами не стикався, підозрюю – вони є наслідоком особливостей цієї машини.

Також, спробував CEMM – все ж, перший менеджер пам’яті для 386, що використовував v86, та ще й від Compaq. Ну, він працює – але, це лише емулятор EMS, тому не заглиблювався поки:

  • Windows з ним немає проблеми, якщо не всю пам’ять віддати на EMS.
  • Якщо завантажити одночасно CEMM та HIMEM – mem висне, а Checkit повідомлятиме про “A20 Hardware error”.
    • Все ж, відсутність підтримки VCPI і т.д., дається взнаки.

Результати боротьби за “нижню”, основну пам’ять, наступні, за умови присутності, мінімум, SETVER, SMARTDRV, DOSKEY, CTMOUSE (детальніше див. різні варіанти конфігурації нижче), MS DOS 6.22:

  • За використання QEMM386, DOS-UP.SYS, (+HIMEM.SYS):
    • 736 Кб основної пам’яті.
    • З неї вільно – 730 Кб.
    • Весь “залишок” DOS в основній пам’яті, разом із заглушками відповідних інструментів – 6528 байт.
  • Лише HIMEM.SYS:
    • 640 Кб основної.
    • 570 Кб вільно.
    • Ядро DOS та резидентна частина COMMAND.COM займають близько 20 Кб21, а все разом – як згадані вище утиліти, так і SHARE та IFSHLP, 70 Кб.
  • Відсутність HIMEM.SYS:
    • Вільно 561 Кб основної.
Карта пам’яті з QEMM – кращий результат, з точки зору максимізації основної пам’яті. Отримана викликом mem /c. (Карти інших випадків – див. внизу, після конфігурації).

Використана конфігурація така:

CONFIG.SYS:

[MENU]
menuitem=QEMM, QEMM386 
menuitem=CEMM, Compaq CEMM
menuitem=WIN311, HIMEM, conf. for WIN311
menuitem=WIN211, HIMEM, conf. for WIN211
menudefault=QEMM,5
 
[QEMM]
FILES=40
BUFFERS=20,0
LASTDRIVE=Z
STACKS=9,256
NUMLOCK=OFF
device=c:\qemm9\dosdata.sys
REM X -- exclude for Win X=BC00-CBFF or B800-C7FF
DEVICE=C:\QEMM9\QEMM386.SYS RAM BE:N R:1 
REM Was test for MODE select=cga/mda X=B000-B0FF X=B800-BBFF
device=c:\qemm9\dos-up.sys @c:\qemm9\dos-up.dat
DEVICE=C:\QEMM9\LOADHI.SYS /R:1 /SIZE=11520 C:\QEMM9\QDPMI.SYS SWAPFILE=DPMI.SWP SWAPSIZE=1024
device=c:\qemm9\loadhi.sys /R:1 c:\dos\setver.exe
DEVICE=C:\QEMM9\LOADHI.SYS /R:1 /SIZE=4848 C:\WIN311W\IFSHLP.SYS
SHELL=C:\QEMM9\LOADHI.COM /R:1 C:\COMMAND.COM C:\ /P
DOS=HIGH

[CEMM]
FILES=40
BUFFERS=20,0
LASTDRIVE=Z
STACKS=9,256
NUMLOCK=OFF
device=c:\compaq\cemm.exe 512 auto
devicehigh=c:\win311w\himem.sys
devicehigh=c:\dos\setver.exe
devicehigh=C:\WIN311W\IFSHLP.SYS
SHELL=C:\COMMAND.COM C:\ /P
DOS=HIGH,UMB
 
[WIN311]
DOS=HIGH,UMB
FILES=40
BUFFERS=20,0
LASTDRIVE=Z
STACKS=9,256
NUMLOCK=OFF
devicehigh=c:\win311w\himem.sys
devicehigh=c:\dos\setver.exe
device=C:\WIN311W\smartdrv.exe 2048 512
 
[WIN211]
DOS=UMB
FILES=40
device=c:\win211\himem.sys
devicehigh=c:\dos\setver.exe

AUTOEXEC.BAT:

@ECHO OFF
PROMPT=$P$G
PATH C:\EXCEL40;C:\WINWORD2;C:\QEMM9;C:\WIN311W;C:\DOS\;C:\VC;C:\DN
set TEMP=C:\TEMP

GOTO %CONFIG%

:QEMM
C:\QEMM9\LOADHI /R:1 C:\WIN311W\SMARTDRV.EXE 
C:\QEMM9\LOADHI /R:1 C:\EDOSKEY\DOSKEY.COM
C:\QEMM9\LOADHI /R:1 C:\UTILS\CTMOUSE.EXE
GOTO AFT

:CEMM
lh C:\win311w\smartdrv.exe
lh C:\EDOSKEY\DOSKEY.COM
LH C:\UTILS\CTMOUSE.EXE
GOTO AFT

:WIN311
lh C:\win311w\smartdrv.exe
lh C:\EDOSKEY\DOSKEY.COM
LH C:\UTILS\CTMOUSE.EXE
LH C:\DOS\SHARE.EXE
GOTO AFT

:WIN211
PATH C:\WIN211;%PATH%
C:\EDOSKEY\DOSKEY.COM
C:\UTILS\CTMOUSE.EXE

:AFT

REM ALMOST CGA -- KEYRUS DOES NOT WORKS
rem keyrus.com
rem sc

DOS-UP.DAT – конфігурація для DOS-UP.SYS:

DOSDATA=1
INSTALL=1
STACKS=1
LASTDRIV=1
BUFFERS=1
FCBS=1
FILES=1
Windows 2.0 на 386, з QEMM.
Завантаження CEMM 4.01. Видно, що поділ на Expanded i Extended пам’ять – фіксований.
А ось QEMM (тут з HIMEM.SYS) з 4Мб “робить” 3 Мб Extended і 3.6 Мб Expanded. :-)
В QEMM гарний конфігуратор для Windows (тут – під 3.11). На жаль, він не допоміг.
Перетягуємо DOS вверх, за допомогою DOS-UP з пакету QEMM.
Карта пам’яті, з використанням HIMEM.SYS, DOS=HIGH, UMB. Отримано за допомогою mem /c.
Карта пам’яті без HIMEM.SYS чи інших менеджерів пам’яті. Отримано за допомогою mem /c.
Карта пам’яті вікна DOS під Windows. Видно модулі, власне, Windows. Отримано за допомогою mem /c.

Windows 3.11

Хотів спробувати найновіший Windows, адекватний для таких систем – 3.1122.

Ця версія Windows не має підтримки CGA з коробки, але відповідний драйвер існує: CGA Display Driver for Windows for Workgroups 3.11. Ним і скористався.

Також, згідно “Installing Windows 3.1 / 3.11 on the Portable 386”, вдалося поставити Plasma-драйвер.

На жаль, “подружити” його з QEMM386 не вдалося, не зважаючи на тривалі експерименти – і згідно “Q92660: Using Windows 3.1 with Quarterdeck QEMM386”, і випробувавши багато різних версій QEMM (9.01, 7.5, 6.02) та DOS (5.0, 6.22), і з ключами X=BC00-CBFF і/або B800-C7FF. При чому, підказки Windows, типу прохання використати SystemROMBreakPoint=false, які він видавав за в деяких випадках, не допомагають. Можливо, причина в драйвері CGA?

А ось з CEMM проблем не має, але це значно менш гнучка утиліта, ніж CEMM.

Якщо використовувати CGA, вікно DOS не створює – каже 386 System display type mismatch, але з драйвером Plasma – може.

Borland Delphi першої версії вдалося заінсталювати і навіть трішки покористуватися, але, насправді, на CGA вона майже не придатна до використання – дрібні літери, у шрифтах губляться штрихи і важко роздивитися. А ось з plasma-драйвером, цілком гарно виглядає, хоч і гальмує.

Word чи Excel працюють добре, а ось софт презентації – ні. Всі випробувані приклади потребують Windows стандартного режиму та, мінімум, EGA. При чому, якщо PowerPoint сказав про це до інсталяції, то Aldus Persuasion – після, дуже переконливо…

Далі фотографії.

Інсталюємо Windows 3.11.
Інсталюємо Windows 3.11 – 2.
Видно і віртуальн пам’ять.
Program Manager – CGA.
Program Manager – Compaq Plasma.
Котики!
WinSleuth – цікава утиліта діагностики для 16-бітових Windows. Коли я вперше цей комп’ютер побачив на виставці, там якраз цю утиліту показували.
Так виглядає спроба запустити програму DOS на CGA.
А на plasma – працює, і, завдяки процесору 386, її можна запускати у вікні.
Інсталюємо Delphi, CGA.
Так Delphi виглядає на CGA.
А так – на plasma.
Запущнена програма Delphi, CGA.
Запущнена програма Delphi, plasma.
Так Delphi виглядає на Plasma.
Visual Basic 1.00 (1991), Plasma. В цей момент під’єднано зовнішню VGA карту, але 386-й виводити на неї графік відмовився.
MS Word, CGA.
MS Excel, CGA.
Чогось сподобався мені вигляд цього діалогу, CGA.
Total Commander 5.51, CGA.
Total Commander 5.51, plasma. Цікаво, як змінилося візуальне представлення діалогу, через зміну роздільної здатності з 640x200 на 640x400.
Total Commander 5.51, Plasma – список файлів.
Norton Commander for Windows 2.0P (1991).
PowerPoint, CGA.
Aldus Persuasion інсталюється, CGA.
Але не запускається, CGA.

286

“Битви за пам’ять” – в майбутньому, оскільки без додаткових модулів, її тільки 640 Кб. Тому зразу перейдемо до Windows.

Windows 3.00

Вікно DOS запускає успішно, але – ну, як 286, повноекранно і працювати в один момент часу може лише одне.

Щоб розпізнало “стандартну” COM-порт мишку, використав “Logitech bus or PS/2-style” драйвер.

Чомусь на цій машині “Compaq Portable Driver” не працює (ні вбудований, ні той, що використав для Windows 3.1123). Використовую CGA, що постачався з Windows, на вбудованому дисплеї та VGA на зовнішньому.

Windows 3.00 на 286, 640 Кб RAM, CGA. За таких умов Windows відмовляється використовувати захищений режим.
Windows 3.00 на 286, з AST Advantage (+3 Мб) та VGA картою і відповідним драйвером. Захищений режим 286-го використано.
Windows 3.00 на 286, VGA карта, але драйвер CGA. Він – чорно-білий, не підтримує здатність відеокарти виводити кольори.
Файловий менеджер Windows 3.00 на 286.
Write з Windows 3.00 на 286 – як трибут до його ліквідації Microsoft на днях.
Paintbrush зі Windows 3.00 на 286.

Підсумок

Цікаві машинки! Та ще й, як на мене, дуже гарні. Друзі казали, нагадує щось військово-ядерне з фільмів часів Холодної війни.

Подвійно цікаві в контексті епохи – безумно дорогі, на передньому краї тодішніх технологій. Зараз я їх використовував із помітно сучаснішим за комп’ютери, софтом – вибір в 1987 був певне помітно скромнішим. Обмежитися “period correct” програмним забезпеченням, певне, було б цікавим досвідом – але поки неохота, ця стаття й так майже рік писалася, а з софтом 87-го було б помітно сумніше.

Сповільнення від QEMM коду, що покладається на переривання, здивувавла – не думав, що воно аж настільки помітне. Хоча, в Windows 95 все багато гірше

В принципі, в 1990-х, для мене така машина була б просто мрією. Але й коштували вони як квартира.

Планую колись провести одну з пар, користуючись одним із них – в деяких аудиторіях ще є VGA коннектор. :-)

Посилання

Виноски

  1. Детальна інструкція тут

  2. Як не дивно, Esc там видався мені доволі зручним – почав на звичайній клавіатурі іноді його там шукати. 

  3. Такі назви, ймовірно, через те, що в Compaq Portable II були режими FAST (8 MHz) та COMMON (6 MHz). 286 в режимі COMMON працювати не хоче, а 386 – ну, щось таке є. 

  4. Оскільки її можна збити з пантелику, див. далі. 

  5. Доволі незґрабний в такому. 

  6. Найбільше використовую саме цю версію, зокрема, через підтримку Boot-меню, тому вона на HDD. 

  7. Для тих, хто не застав тих темних часів: утиліти DOS відмовляються працювати з “чужою” версією самої операційної системи, та й інші програми її можуть перевіряти. SETVER.EXE дозволяє повідомляти, вказаним програмам потрібну їм версію – в надії, що все працюватиме. Програми вказуються за іменем виконавчого файлу, без шляху, тому mode.com довелося перейменувати. Файл SETVER.EXE завантажується як драйвер, а таблиця відповідності записується в нього самого, його викликом вже як програми. 

  8. Перевіряв версію, що обробка цієї комбінації реалізована десь в DOS, а не в BIOS машини. Можна, звичайно, глянути в код BIOS, але поки не дійшли руки. 

  9. Можливо, є сенс поекспериментувати з MODE чи повним кодом int 16, але думаю – він апаратно цього не вміє. 

  10. Нестандартне використання – в IBM PC це порт “keyboard controller read status” (читання)/”keyboard controller input buffer” (запис), але й інші машини його ще для чогось використовують (PORTS.A зі списку Ральфа Брауна згадує Amstrad/Schneider PC1512, AMI BIOS тощо) 

  11. Ймовірно, частоти вказані для конкретної моделі, а сам інтерфейс існував для ширшого класу. 

  12. Взагалі, трасування обробників переривань не справляло враження, що їх код є гарно написаним… 

  13. Звичайно, дані, які я тут використав, неповні, але приблизно відповідають реальності – ціни альтернатив були співмірними. 

  14. Деякі подробиці є в Інтернеті, тому є маленький шанс, що колись зроблю кирилізатор. Але – після Osborne… 

  15. Нагадаю, названий мною, для спрощення, MODECMPQ.COM – так буде на фото. 

  16. Хтось знає, що це означає для Compaq Portable?.. 

  17. Точніше, це два байти, частина BDA – BIOS Data Area, але нас цікавить молодший. Старі добрі часи, коли автори IBM PC оптимістично вважали – пари байт для цього вистачить… 

  18. Він першим під руку трапився. 

  19. Досить типово в попередні часи, але вже дещо дискусійно в 1987 – хоча, згадуючи IBM PS/2, може то такий тренд був… 

  20. А зручна штука, я про неї менше року тому довідався – зацінив. 

  21. Але пам’ятаємо, що COMMAND.COM ще має транзієнтну частину у верхній частині звичайної пам’яті, яку перевантажує за потреби. 

  22. Windows 95, певне, поставити можна, але це – знущання. 

  23. Для цього довелося їх розархівувати за допомогою EXPAND.EXE – SETUP з 3.00 цього не вміє, на відміну від пізніших.