В качестве предисловия, я действительно не хочу точного решения моей проблемы, только указания. Я не хочу, чтобы ты давал мне код. Это не домашнее задание, это просто упражнение, которое я пытаюсь решить.
Я просто хочу, чтобы вы рассказали мне, как получить доступ к VDU и напрямую изменить персонажа на том же экране.
Экран разделен на 25 строк и 80 столбцов. Символы, отображаемые на экрана хранятся в специальной памяти, называемой памятью VDU (не путать с обычными объем памяти). Каждый символ, отображаемый на экране, занимает два байта в памяти VDU.
Первый из этих байтов содержит значение ASCII отображаемого символа, тогда как второй байт содержит цвет, в котором отображается символ. Например, значение ASCII символа, присутствующего в нулевой строке и нулевом столбце на экране, сохраняется в ячейке с номером 0xB8000000
.
Следовательно, цвет этого символа будет присутствовать в ячейке с номером 0xB8000000 + 1
. Точно так же значение ASCII символа в строке 0, столбец 1 будет в местоположении 0xB8000000 + 2
, а его цвет - в 0xB8000000 + 3
.
Моя задача:
Обладая этими знаниями, написать программу, которая при выполнении будет преобразовывать каждую заглавную букву на экране в строчную букву и каждую строчную букву в заглавную.Процедура должна останавливаться в тот момент, когда пользователь нажимает клавишу на клавиатуре. Это действие безудержного вируса под названием «Танцующие куклы». (Для монохромного адаптера используйте 0xB0000000 вместо 0xB8000000.)
На самом деле у меня нет идеи создать этот код. Я застрял даже на том, чтобы начать.