Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Ассемблер для Z80

Автор Alone Coder, октября 8, 2011, 00:50

0 Пользователи и 1 гость просматривают эту тему.

mnashe

Цитата: jvarg от октября 14, 2011, 17:21
В PDP-11 и моем Атари - нет. Даже команд процессора типа IN и OUT не было. Просто, к примеру, каждый символ или пиксель экрана соответсвует байтику в определенной области памяти. Что бы вывести символ (в текстовом режиме), нужно просто записать его код по нужному адресу. В графическом режиме аналогично с пикселями.
То же самое с экранной памятью на PC. Но на PDP-11 этот принцип распространялся гораздо шире. Там и слова состояния устройств имели адрес в памяти, не говоря уже о данных устройств ввода-вывода. Удобнее.

Цитата: jvarg от октября 14, 2011, 17:21
Это очень упрощает программирование, но тратит драгоценное адресное пространство.
Об этом тогда не думали: слишком дорогой была память.
Сколько неудобств доставило потом это расточительство... Фактически, я до сих пор от него страдаю. Переписывать всю свою программу под Windows мне некогда; думал переписать её под XMS, но и на это времени не нашёл. В итоге приходится ютиться в 500–600 kB ОЗУ, имея в компьютере в 3000 раз больше!
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

jvarg

Цитата: Python от октября 14, 2011, 17:35
Это имеет смысл не во всех случаях.
Разумеется. Но потоковый ввод-вывод это уже функция операционки, а на первых микрокомпьютерах программы, чаще всего, работали с устройствами напрямую.

Поэтому там было два выхода (зависело от аппаратной части, а не от всяких там ДОСов и т.д.) :
1) Устройства отображаются на адресное пространство;
2) Устройства работают через порты.

В первом случае легко программировать, но меньше оперативной памяти остается под саму программу. Во втором случае, соответственно - наоборот.

Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

jvarg

Цитата: RawonaM от октября 14, 2011, 17:35
Цитата: jvarg от октября 14, 2011, 17:21
Это очень упрощает программирование, но тратит драгоценное адресное пространство.
Собственно, не понял как это упрощает. Может я недопонял о чем речь.
Это упрощает именно на ассемблере. Что бы вывести строку на экран, нужно просто скопировать область памяти с исходной строкой в экранную область. Если это делать через порты - это уже куда сложней.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

jvarg

Цитата: sasza от октября 14, 2011, 17:32
Просто такова была реализация конкретных компьютеров.

Так я и написал в ответ на это:

Цитата: Python от октября 14, 2011, 13:42
Однако, ввод-вывод на чистом ассемблере реализовывался довольно неудобно. Почему и возникала необходимость подключать чужие библиотеки.

Вот это:

Цитата: jvarg от октября 14, 2011, 16:25
Смотря для какой архитектуры.

Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

Alone Coder

Цитата: jvarg от октября 14, 2011, 16:25
У вышеупомянутой PDP-11 все устройства ввода-вывода просто выглядили, как ячейки памяти в общем адресном пространстве. У Z80, ЕМНИП, тоже.
У Z80 команды IN, OUT, INI, OUTI, INIR, OTIR.
А для извращенцев ещё IND, OUTD, INDR, OTDR.

jvarg

Да, насчет Z80 я ошибся. Но я там написал ЕМНИП.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

jvarg

Цитата: Alone Coder от октября 14, 2011, 22:56
А для извращенцев ещё IND, OUTD, INDR, OTD
Я теперь даже знаю имя этих извращенцев :)
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

mnashe

Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Alone Coder

Самой грамотной системой на Z80 мне кажется MSX. Там прерывания снимаются вручную чтением порта устройства, так что прерываний может быть неограниченное количество при отсутствии контроллера прерываний как такового (в Z80 его нет).
К тому же, на MSX есть 4 окна проецирования памяти по 16 КБ (в Z80 нет сегментов). Из Спектрумов такое только на ATM Turbo 2 и ZX Evolution. Самая большая проблема на Z80 - работа с массивами больше 16 КБ. Можно, конечно, сделать хитрую обвязку, которая реализует сегментную адресацию (как на Спринтере).

sasza

Цитата: Alone Coder от октября 16, 2011, 21:58
Из Спектрумов такое только на ATM Turbo 2 и ZX Evolution.
Был ещё один подобный гибрид со страничной памятью - Profi. А ATM с дисководом и 512 КБ памяти я себе спаял, но в режиме CP/M почти не работал, так что эта память практически не использовалась.

Alone Coder

На Profi в окне 0 могла стоять только одна страница ОЗУ, в окнах 1 и 2 только по одной из двух возможных (для работы с расширенным экраном). На АТМ2 любые.

trilirium

Цитата: jvarg от октября 14, 2011, 16:25
Цитата: Python от октября 14, 2011, 13:42
Однако, ввод-вывод на чистом ассемблере реализовывался довольно неудобно. Почему и возникала необходимость подключать чужие библиотеки.
Смотря для какой архитектуры.

У вышеупомянутой PDP-11 все устройства ввода-вывода просто выглядили, как ячейки памяти в общем адресном пространстве.

Верно.

Цитата: jvarg от октября 14, 2011, 16:25У Z80, ЕМНИП, тоже. Так что вывод на внешнее устройство ничем не отличался от обычной записи данных в память.

Нет. В Z80 -- собственное пространство ввода-вывода, и нужны специальные инструкции (разные виды in и out).
Хотя технически -- шина адресов и данных одна и та же. И обмен с устройствами отличается от обмена с памятью только установкой какой-то линии на шине (кажется. IOREQ...)


trilirium

Цитата: Alone Coder от апреля  2, 2012, 20:10
/IORQ.

Ага, кажется так  ;)

(Впрочем, я только сейчас заметил, что тема мертва несколько месяцев. Похоже, обещанных уроков здесь так и не будет. А жаль!    :( :( )

Alone Coder


trilirium

А ZX-Guide -- это где? Можно ссылочку??

(Кстати, вообще, приятно удивлен, что здесь в принципе обсуждаются языки программирования. Возникло даже желание написать кое-что самому. ;)




Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр