Всё там просто

Очень простое объяснение на вопрос «Как кодить под спек» от VBI
Вот память, по ней ходит проц. Берёт байт, смотрит, что за байт. Что-то выполняет, либо добирает недостающее и выполняет. Вот эти байты нужно ЗАКОДИТЬ.
А у проца есть несколько ячеек памяти, чтобы помнить, что делать, регистры называются. Вот в них данные командами подгружаются.Ну и есть байты операций над данными в этих регистрах. А дальше — свабодаааа...
Про регистры. Это переменные, просто переменных только небольшое количество. Например, ну 8 штук. Есть одна переменная (регистр) которая говорит с какого места памяти брать байт (команду) на выполнение – называется Program Counter, PC. Меняется процом или командой перехода. Есть рег аккумулятора А, который участвует в очень большом количестве вычислений, т.е. под него много команд заточили. Один его минус — он 8бит. И есть такой набор, состоящий из 2 пар регистров, которые можно юзать по отдельности, а можно сразу парой, что даёт нам 16 бит. И еще PC — 16 бит. Вот из-за него мы можем перемещаться по памяти, которая зациклена от 0 до 65535, т.е. максимальное значение +1 даёт нам врап на 0. Колечко такое.
Ещё чтобы понимать чо делать в процессе вычислений придумали флаги. Флаги — это биты, которые устанавливаются / сбрасываются из-за каких-то действий проца (выполнения команд). Они у нас в 8 битах всего и пристыкованы к аккомулятору, что даёт нам пару — AF — аккумулятор и флаг, 16 бит пара.

Ну а дальше начинаются уже детали. Другими словами, по регистрам, у нас все регистры являются регистровыми парами и все по 16 бит — это шина адреса. Так как у нас память кольцом и ограничена 16ю битами РС, то мы можем расположить наши байты в этих пределах. Это и будет адрес в памяти, где будет размещён результат «компиляции».
Теперь конкретно по памяти давай глянем. У спека есть следующая разбивка: при включении проца, РС у него сброшен, адрес 0. В результате всё начинает выполняться с этого адреса, там у нас РОМ, зашитые подпрограммы, бейсики и т.д. С адреса #4000 (16384) у нас начинается экран. Любые данные с 4000 будут выглядеть точками на экране. Включенный бит — точка, выключенный — нет точки. 1 байт — 8 точек, 8 бит. Потом, с #5800, у нас идёт область атрибутов, специально для клешинга. Там своя разбивка — один байт разделён на 3 блока — 0-7 цвет точке, 0-7 цвет фона, мигание и яркость. Занимает это всё #300 байт, 768. Дальше пошли системные переменные и область незанятая. В спеке ты можешь всю эту память — от 4000 и до FFFF использовать как память кода/данных, потому спек был 48к, хотя реально он 64к :)
А дальше — сюда
Все вопросы задавать автору :D
3 комментария
А можно так про программинг под TS-Conf? Типо «Hello world» под разные фичи. Для совсем неофитов.