Итак, в этом эмуляторе есть много разных полей, кнопок и чекбоксов. Я буду говорить о них по мере необходимости.
Первое поле, которое нам понадобится - это поле Assembly. Туда мы пишем наш код.
Второе, нужное нам поле - это поле Screen. Туда выводится все из видеопамяти. Видеопамять в этом эмуляторе начинается с 0х8000 адреса. О видеопамяти скажу немного позже.
Сначала, напишем простейший код:
; Simple test by x0m9k SET A, 0x10 SET B, 10 SET C, 0xBF : end SET PC, end
Нажимаем кнопку Reset, и Assembly (F9). Reset - сбрасывает процессор. Assembly - компилирует наш код в машинный.
В поле Messages отображаются сообщения самого эмулятора.
После того, как мы скомпилируем наш код в машинный, в поле Disassembly появится дизассамблированый (операция обратная компиляции) код.
Что бы заставить нашу программу запустится, нужно поставить флажок в чекбоксе Running. Чтобы остановить программу снимаем этот флажок. Для отладки, можно исполнять программу пошагово, нажимая Single Step или же F7. Кстати, чекбокс Follow заставляет "следить" за выполнением программы. Т.е. текущая исполняемая строка будет подсвечиваться.
После того, как мы запустим программу, в центре будут отображаться значения наших регистров. В моем случае это:
A - 16 B - 10 C - 191
Поле Memory Dump - память.
Итак, теперь подробнее о видеопамяти. Как я уже сказал, видеопамять начинается с адреса 0x8000. Это не стандартная спецификация. Размер экрана 32х16.
И так, как же написать нужный нам символ, нужным цветом? Очень просто! Мы просто устанавливаем значение ячейки видеопамяти на нужное число.
Число составляется данным образом: 0xfbcc f - цвет символа b - цвет фона cc - код символа
Мы сейчас напишем простую программу выводящую все символы. Docendo discimus ("Обучая, обучаемся сами"). Кстати, здесь используется стандартная ASCII кодировка.
Итак, переходим к нашей программе, выводящую все символы. Вот она:
; Simple symbols test by x0m9k : start SET B, 0x8000; Устанавливаем регистр B в начало видеопамяти. Зачем, поймете позже SET C, 0xf000 ; Устанавливаем начальный символ
: code ; Начало цикла SET [B], C ; Устанавливаем ячейку
IFE B, 0xf0ff ; Если мы уже напечатали последний символ... SET PC, end ; ... то завершаем программу. ; Иначе, продолжаем цикл. ADD C, 1 ; Прибавляем единичку - получаем код следующего символа. ADD B, 1 ; Вот, зачем нужно было использовать регистр B - ; чтобы получать следующее ячейку памяти в цикле. SET PC, code ; Возвращаемся в начало цикла.
: end SET PC, end ; Циклим программу в конце, чтобы не было проблем
Чтобы ускорить выполнение этого кода, можно поставить флажок на Cycle Extract - он отключает обновление всех полей, кроме экрана.
И напоследок, несколько полезных вещей. Если хотите увидеть экран больше, то вам в View -> User Screen. Видеопамять не стирается при нажатии Reset. Нужно использовать CPU -> Full Reset.