Author Topic: Ассемблер для Z80  (Read 17107 times)

0 Members and 1 Guest are viewing this topic.

Offline mnashe

  • Administrator
  • *
  • Posts: 40733
    • Библиотека
« Reply #75on: October 14, 2011, 18:43 »
В PDP-11 и моем Атари - нет. Даже команд процессора типа IN и OUT не было. Просто, к примеру, каждый символ или пиксель экрана соответсвует байтику в определенной области памяти. Что бы вывести символ (в текстовом режиме), нужно просто записать его код по нужному адресу. В графическом режиме аналогично с пикселями.
То же самое с экранной памятью на PC. Но на PDP-11 этот принцип распространялся гораздо шире. Там и слова состояния устройств имели адрес в памяти, не говоря уже о данных устройств ввода-вывода. Удобнее.

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

Offline jvarg

  • Posts: 12470
« Reply #76on: October 14, 2011, 18:47 »
Это имеет смысл не во всех случаях.
Разумеется. Но потоковый ввод-вывод это уже функция операционки, а на первых микрокомпьютерах программы, чаще всего, работали с устройствами напрямую.

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

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

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

« Reply #77on: October 14, 2011, 18:55 »
Это очень упрощает программирование, но тратит драгоценное адресное пространство.
Собственно, не понял как это упрощает. Может я недопонял о чем речь.
Это упрощает именно на ассемблере. Что бы вывести строку на экран, нужно просто скопировать область памяти с исходной строкой в экранную область. Если это делать через порты - это уже куда сложней.
Все бояться быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

« Reply #78on: October 14, 2011, 18:57 »
Просто такова была реализация конкретных компьютеров.

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

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

Вот это:

Смотря для какой архитектуры.

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

Offline Alone Coder

  • Posts: 22548
    • Орфовики
« Reply #79on: October 14, 2011, 23:56 »
У вышеупомянутой PDP-11 все устройства ввода-вывода просто выглядили, как ячейки памяти в общем адресном пространстве. У Z80, ЕМНИП, тоже.
У Z80 команды IN, OUT, INI, OUTI, INIR, OTIR.
А для извращенцев ещё IND, OUTD, INDR, OTDR.

Offline jvarg

  • Posts: 12470
« Reply #80on: October 15, 2011, 07:38 »
Да, насчет Z80 я ошибся. Но я там написал ЕМНИП.
Все бояться быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

« Reply #81on: October 16, 2011, 19:04 »
А для извращенцев ещё IND, OUTD, INDR, OTD
Я теперь даже знаю имя этих извращенцев :)
Все бояться быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

Offline mnashe

  • Administrator
  • *
  • Posts: 40733
    • Библиотека
שָׁלוֹם עֲלֵיכֶם!

Offline Alone Coder

  • Posts: 22548
    • Орфовики
« Reply #83on: October 16, 2011, 22:58 »
Самой грамотной системой на Z80 мне кажется MSX. Там прерывания снимаются вручную чтением порта устройства, так что прерываний может быть неограниченное количество при отсутствии контроллера прерываний как такового (в Z80 его нет).
К тому же, на MSX есть 4 окна проецирования памяти по 16 КБ (в Z80 нет сегментов). Из Спектрумов такое только на ATM Turbo 2 и ZX Evolution. Самая большая проблема на Z80 - работа с массивами больше 16 КБ. Можно, конечно, сделать хитрую обвязку, которая реализует сегментную адресацию (как на Спринтере).

Offline sasza

  • Posts: 7631
« Reply #84on: October 16, 2011, 23:52 »
Из Спектрумов такое только на ATM Turbo 2 и ZX Evolution.
Был ещё один подобный гибрид со страничной памятью - Profi. А ATM с дисководом и 512 КБ памяти я себе спаял, но в режиме CP/M почти не работал, так что эта память практически не использовалась.

Offline Alone Coder

  • Posts: 22548
    • Орфовики
« Reply #85on: October 16, 2011, 23:54 »
На Profi в окне 0 могла стоять только одна страница ОЗУ, в окнах 1 и 2 только по одной из двух возможных (для работы с расширенным экраном). На АТМ2 любые.

Offline trilirium

  • Posts: 46
« Reply #86on: April 2, 2012, 20:49 »
Однако, ввод-вывод на чистом ассемблере реализовывался довольно неудобно. Почему и возникала необходимость подключать чужие библиотеки.
Смотря для какой архитектуры.

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

Верно.

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

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

Offline Alone Coder

  • Posts: 22548
    • Орфовики
« Reply #87on: April 2, 2012, 21:10 »
/IORQ.

Offline trilirium

  • Posts: 46
« Reply #88on: April 2, 2012, 21:32 »
/IORQ.

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

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

Offline Alone Coder

  • Posts: 22548
    • Орфовики
« Reply #89on: April 3, 2012, 19:46 »
Уроки были в ZX-Guide :)

Offline trilirium

  • Posts: 46
« Reply #90on: April 4, 2012, 12:21 »
А ZX-Guide -- это где? Можно ссылочку??

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

Offline isa_shi

  • Posts: 33
« Reply #91on: April 22, 2014, 12:58 »
Offtop
Z-80 рулит!

Offline Alone Coder

  • Posts: 22548
    • Орфовики
« Reply #92on: April 26, 2014, 14:26 »
А ZX-Guide -- это где? Можно ссылочку??
http://zxdn.narod.ru/coding/zg14asmt.txt

« Reply #93on: April 27, 2014, 14:31 »

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: