на главную
об игре
0x10c игра отменена

Делимся исходниками

Всем привет! Пока поколение 2-х тысячных на PlayGround.ru обижается на Нотча, на западе во всю балуются с эмулятором виртуального процессора DCPU-16! Так вот почему бы и нам не заняться этим же? Ну, я начну.
Hello world:

jsr get_display ; Выполняем процедуру поиска
; дисплея.

set i, 0 ; Очищаем регистр I, потому как
; он будет выполнять роль "курсора".

set a, 0 ; Подготавливаемся к выполнению
set b, 0x8000 ; прерывания.

:main
set c, [write_hw + i] ; Записываем в регистр C код буквы, номер
; которой записан в регистр I.

ife i, 13 ; Если выведено все слово, то
set pc, end ; зациклить программу.

add i, 1 ; Прибавляем к регистру I единицу.

add c, 0xf000 ; Добавляем букве цвет и цвет фона.

set [0x8000 + i], c ; Устанавливаем в ячейку памяти, номер
; которой записан в регистр I готовый символ.

hwi [display_address] ; Вызываем прирывание в устройстве
; dilplay_address.

set pc, main ; Переходим к метке main.


:get_display
add [display_address], 1 ; Прибавляем к выделенной
; ячейки памяти display_address
; единицу.

hwq [display_address] ; "Достаем" информацию
; об устройстве, номер которого
; записан в ячейке памяти.

ifn b, 0x7349 ; Если номер устройства
ifn a, 0xf615 ; не совпадает с номером
set pc, get_display ; дисплея, то переставить
; счетчик команд к метке
; get_display.

set pc, pop ; В противном случае
; завершить выполнение процедуры.


:display_address ; Выделяем ячейку памяти
dat 0xffff ; display_address и записываем
; туда 0xffff.

:write_hw ; Выделяем ячейку памяти
dat " Hello world!" ; write_hw и записываем туда
; " Hello world!"

:end ; Бесконечный цикл.
set pc, end

Мда, только вот плохо, что убираются "лишние" пробелы.

Я в Ассемблере-DCPU еще не очень силен, так что Hello world это единственное, достойное демонстрации. Остальное надо чуть-ли не полностью переписывать.

Комментарии: 0
Ваш комментарий