В компьютерной игре «Z00», опубликованной в «М-К» № 5, 6 за 1990 год, по адресу 0374Н записано обращение к подпрограмме, не указанной в таблице вызовов пакета подпрограмм (см. «М-К», 1990, № 2, 3, «Набор системных программ»). Поэтому данная игровая программа является немобильной, то есть жестко привязанной к одному набору системных подпрограмм («М-К», 1988, № 9, «Монитор для «Специалиста»). Для того чтобы она могла работать с различными наборами, неуказанную подпрограмму нужно добавить к самой игре, а новый адрес подпрограммы вызова занести в ячейку 0374Н.
Подпрограмма в кодах выглядит следующим образом: С5 7С CD 15 С8 7D CD 15 С8 ОЕ 20 CD 09 С8 С1 С9. После такой небольшой доработки программа становится мобильной и может работать с различными наборами системных подпрограмм.
Совместимость программного обеспечения достигается также строгим определением правил вызова системных подпрограмм и передачи их параметров. С адреса С800Н ПЭВМ «Специалист» находится таблица вызовов системных подпрограмм, состоящая из расположенных друг за другом команд безусловной передачи управления на соответствующие подпрограммы. Таким образом, в таблице каждый переход на подпрограмму имеет фиксированный адрес, в то время как сами подпрограммы могут располагаться в любой области памяти (ПЗУ или ОЗУ).
Две микроЭВМ, имеющие одинаковые таблицы вызовов системных подпрограмм, становятся программно совместимыми, а программы, обращающиеся к машинным ресурсам только через эти системные подпрограммы,— мобильными.
Мобильность программы нарушается, если она вызывает системную подпрограмму не по вышеприведенным правилам или вызывает подпрограму, не указанную в таблице вызовов, что и произошло с игровой программой «Z00».
Подробнее о совместимости программного обеспечения можно прочитать в статье Д. Горшкова и Г. Зеленко «О переносимости программ» («Радио», 1988, № 5).
С. Савощенко