Про скроллинг посмотрю когда мозги посвежее будут. ЕМНИП (а сейчас очень даже ИП), первые 8 линий экрананевозбранно"выскролливаются" в ПЗУ. Про калькулятор:
Суть примерно в том, что калькулятор использует процедуру распаковки упакованных констант для пропуска констант в таблице (они все разной длины). Распаковывает пропускаемые константы в ПЗУ с #0000. Самый простой способ лечения: "распаковывать" в какое-нибудь другое безобидное место (LD DE,+0000), кандидат на ненужное место - байты #ff с адреса #0013. Если важно не "писать" в ПЗУ совсем, я бы переписал таблицу констант с #32C5 в распакованном виде в свободные ячейки и переписал бы skip-cons целиком.Код:33F7 SKIP-CONS AND A The subroutine returns if the 33F8 SKIP-NEXT RET Z parameter is zero, or when the requested constant has been reached. PUSH AF Save the parameter. PUSH DE Save the result pointer. LD DE,+0000 The dummy address. CALL 33C8,STK-CONST Perform imaginary stacking of an expanded constant. POP DE Restore the result pointer. POP AF Restore the parameter. DEC A Count the loops. JR 33F8,SKIP-NEXT Jump back to consider the value of the counter.
Кстати, процедура нехило так тормозит весь BASIC, ибо помещение констант (0, 1, 0.5, pi/2, 10) на стек используется весьма часто, а stk-const нифига не простая.




Ответить с цитированием