Indrekis
Indrekis

Categories

  • retrocomputing
  • ibm_pc_compat

Tags

  • retrocomputing
  • IBM PC та сумісні
  • 86-DOS
  • SYS.COM

Насправді, ця стаття – трішки обман. Все почалося з того, що до 86-DOS я поліз, щоб глянути на їх SYS.COM, який багато раз дизасемблював для різних версій MS/PC-DOS.

Але виявилося, що версія з 86-DOS 0.34 повністю збігається з версією з 86-DOS 1.00, яку я вже дизасемблював: “Аналіз SYS.COM з попередника, 86-DOS”.

Версія з 0.11 відрізняється рівно на два байти, якщо глянути в код – адреса буфера зсунута в 0.34 на байт вперед і в 0.11 бракує $ в кінці стрічки “Bad drive specification”1.

Тобто, відносно 0.11, в 0.34 виправлено баг з виводом повідомлення про помилку, інших змін не було.

Більш цікавим виявився вміст після кінця цих файлів, але в межах останнього сектора (на жаль, не кластера)2.

Останній сектор SYS.COM з 86-DOS 0.11. Червона галочка – місце, де мав бути символ долара. Нічого після нього не мало б використовуватися в коді – це просто вміст пам’яті, який випадково потрапив на диск.
Останній сектор SYS.COM з 86-DOS 0.34. Виділено останній байт, використаний в коді.
Останній сектор SYS.COM з 86-DOS 1.00. Виділено останній байт, використаний в коді. (На жаль, для 1.10 нічого цікавого в останньому секторі немає.

Завантажити відповідні файли можна тут.

Виноски

  1. Як варіант, це може бути збій образу. Стикався з подібним – маю оригінальні диски Amstrad 1640, вони читаються без помилок, але відрізняються жменею байтів сям і там від правильних. Не знаю, як це можливо – контрольні суми секторів, ото все… Але цей варіант не видається мені ймовірним. 

  2. Розмір файлу ці ОС зберігають лише з точністю до сектора, хоч технічно їх FAT може зберігати з точністю до байту. Див. також “Misconceptions on Top of Misconceptions”: “For executable programs, this was not an issue. When loading a program, CP/M or 86-DOS loaded a certain number of records/sectors. If there was some junk in the last record (very likely), it didn’t matter because it was never executed as code and may have been overwritten by data.”.