SANDBOX - программа, написанная на ассемблере M68K под Сегу, для тестирования и отладки кода, экспериментов или просто изучения команд ассемблера M68K. Это целая среда с необходимыми средствами отладки - возможностью просмотра регастров, оперативной памяти. Но самое главное, при написании кода вы сможете воспользоваться дополнительными командами, для вывода текста, значений регистров и даже приостановки программы в любом месте.
Размещайте свои программы в папке Proj, все ASM-файлы в этой папке будут включены в ROM во время компиляции.
Для компиляции вызывайте build.bat. Когда РОМ успешно построится, в папке появятся файлы sandbox.bin и sandbox.lst. Запустите SANDBOX в эмуляторе, очень советую для этой цели использовать Regen, так как у него самая точная эмуляция, которая покажет все ошибки в ваших программах, которые могут произойти на реальном железе. После открытия РОМа в эмуляторе, выберите любую программу и нажмите START для запуска.
Перед началом работы с программой, ознакомьтесь с этими примечаниями, чтобы избежать некоторых неурядиц в будущем:
Выводит заданную строку в консоль.
Примеры:
out "I'm writing text in the console!" out 'Now the calculations will be done'
Выводит численное значение в консоль.
Можно также комбинировать несколько параметров операторами "+" или "|" (но мне нравится плюсик), так что, если вы хотите отобразить число в двоичной системе и убрать нули слева, можно написать: bin+trim.
Примеры:
move.b #$FF,d0 ; move $FF to d0 outb d0,signed ; display it as signed number outw #$1010 ; display in default mode: unsigned hex outl #$-1000000,dec+signed ; this will display the number as signed decimal
Переходит на следующую строку.
Очищает консоль.
Прерывает программу до нажатия кнопки "С". Когда программа приостановлена, вы можете переключаться к другим вкладкам в SANDBOX'е, например "RAM" или "Registers" для просмотра состояния памяти и регистров.
Внимание: Не вызывайте эту команду из суброутин (когда вы вызвали bsr/jsr).
Примеры:
pause ; you can pause here bsr.s Subprogram pause ; you can pause here rts Subprogram: pause ; this will cause fatal error rts ; ----------------------- moveq #5,d0 Loop: delay 10 ; Cycle, not subprogram. You can delay it here! dbf d0,Loop ; ----------------------- move.w d0,-(sp) ; move d0 into the stack pause ; ERROR!!! move.w (sp)+,d0 ; get d0 from the stack pause ; correct!
Задерживает программу на заданное количество кадров.
Внимание: Не вызывайте эту команду из суброутин.