Просмотр полной версии : переменная BASIC 23681
White_Hunter
30.03.2011, 10:10
Ниже приведен текст программы, после выполнения которой в середине экрана очень крупным шрифтом появляется надпись: GOOD LUCK TO YOU
10 REM CRACKED BY MIHAILENKO VADIM MINSK 1991
20 FOR I=72 TO 79
25 POKE 23681, I
30 LPRINT "GOOD LUCK TO YOU"
40 NEXT I
В данном случае авторы используют команду вывода на печатающее устройство LPRINT для поэтапного высвечивания на экране вышеуказанной надписи.
Самым любопытным является то, что системная переменная, используемая в этой программе, в фирменном описании компьютера (автор - Виккерс) охарактеризована, как неиспользующаяся.
Вопрос, как оно работает ? :)
В этой переменной находится старший адрес буфера принтера. В этом цикле этот адрес подменяется на 0x48..0x4F, что соответствует средней трети экрана.
White_Hunter
30.03.2011, 11:48
Titus, ты гигамозг! :)
ну и стоит сказать, что не на всех компах это работает (может зависнуть).
плюс, если будет ZX-Printer, то и на него напечатается это 8 раз...
ну и стоит сказать, что не на всех компах это работает (может зависнуть).
зависнет,если зацепит адрес бейсик программы или стэк.
на скорпах просто виснет насмерть
почему?
другая организация памяти.
23681, 64 до 88 (64*256=16384 начало экранной области)
вероятнее всего системные переменные иначе рассположены (у меня где-то брошура была с описанием всех переменных, но то для 48к)
на кае виснет потому, что там есть драйвер принтера.
он ждёт ответа от принтера, но так как принтера нет, то и висит.
вроде если понажимать на пробел, то большие буквы всё-таки допечатаются.
думаю на скорпе тоже самое.
Titus, ты гигамозг! :)
Глупости. Я просто посмотрел в описание переменных бейсика)))
White_Hunter
31.03.2011, 14:08
Глупости. Я просто посмотрел в описание переменных бейсика)))
PR СС: адрес 23680 IY + 70 (5С80И)
Это младший байт используемого в данный момент адреса буфера
принтера. Идентична "DF СС: адреса 23684/5 IY + 48 (5С84/5Ю" и
для буфера принтера может быть смещена изменением так называе-
мого неиспользованного байта, описанного ниже, который на самом
деле является старшим байтом системной переменной "PR СС". К
сожалению он сбрасывается по окончании печати каждой строки,
чтобы указать начальный адрес. Поэтому необходима осторожность,
если он перемещался.
NOT USED: адрес 23681 IY + 71 (5C81h)
Обычно не используется, если буфер принтера на обычном месте
(см. "PR СС"). Может быть использована, но только как указано
выше.
В одном из номеров ZX-Review был этот пример под названием " Чтобы это значило". Походу так никто и не смог ответить :) кроме тебя.
В одном из номеров ZX-Review был этот пример под названием " Чтобы это значило". Походу так никто и не смог ответить :) кроме тебя.
Странно, я открыл книжку Ларченко и Родионова 'ZX Spectrum & TR-DOS' и сразу нашел)
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot