Quote:
Quote:
Или сэкономили один байт или просто забыли, когда делали версию 2.0, что эта ячейка уже используется как константа чтения для SLOAD.
Рискну предположить, что разработчики версии 2.0 могли просто-напросто не знать о функциональном назначении ячейки BE41. Или SLOAD добавили уже после того, как разобрались с поддержкой принтера.
Известно, что в предыдущей версии был или
1) SLOAD в виде аналогичном 2.0
или
2) его функциональный аналог (возможно расположенный по другим адресам и использующий другие ячейки для хранения служебных данных)
Была ли в предыдущей версии поддержка принтера?
Если со SLOAD вариант 1) и принтера (поддержки принтера) раньше не было, то "забыли про SLOAD", если со SLOAD вариант 2) и принтер был и раньше, то "забыли про принтер"
Интересные, но маловероятные комбинации 1) и "принтер был" а также 2) и "принтера не было". В этих случаях можно было бы предположить, что процедурами обмена с магнитофоном и принтером занимались разные люди/команды, которые не общались между собой, и в итоге использовали одну и ту же ячейку для разных целей.
В принципе можно было сделать так - использовать для признака инверсии выдачи на принтер только младший бит соответствующего байта. Размер и время работы процедуры вывода символа на принтер при этом бы не изменилось (надо только поменять ora a на сдвиг), а для константы чтения разница в единицу совершенно не принципиальна (кроме единственной пары 00 и 01).
Вобще разработчики прошивки ПЗУ Львова меня удивляют. В 2.0 есть две разных процедуры рисования точки - "старая" для PLOT/DRAW и "новая". Я бы лично сделал одну, но использовал "препроцессинг" координат.
Quote:
А с какого адреса располагается в ПЗУ подпрограмма SLOAD? Велика ли она по размеру?
С какого это легко, а что касается размера - это как считать.
Обработка оператора начинается с D873 и, в том что касается чтения с магнитофона, заканчивается на D8C4. Потом идет переход на процедуру "адаптации". Тут есть некоторая неаккуратность - SLOAD корректно читает бейсик программу начиная с адреса заданного ячейками 0243-0244, а вот "адаптация" всегда идет с жестко записанного в самой процедуре (в ПЗУ) адреса. Хотя при значениях 243-244 по умолчанию все будет нормально.
В процессе работы SLOAD вызываются и другие процедуры, их размеры мне лень считать. Упомяну только процедуру чтения байта с фазовой модуляцией E5A0-E5F7.