User Tag List

Показано с 1 по 10 из 222

Тема: Атари ассемблер

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2Atari1974

    http://mixinc.net/atari/mae.htm - Это Инструкция одновременно для 02 и 816, что чудовищно!

    Не умею загружать на форум вложения...
    Даю ссылку на atr с тремя 40/64/80 режимами Е:

    http://atariage.com/forums/index.php...tach_id=487399

    - - - Добавлено - - -

    Способ взаимодействия Атари с устройствами.

    Я наверное неоднократно предпринимал попытки рассказать о том, что Атарьские инженеры - вообще говоря, гениальны! Чего стоит один Стив Возняк, который работал на Атари.

    Не вдаваясь в холивары по поводу Атари, Эпл, и Амига, попробую рассказать о взаимодействии ВНЕШНИХ устройств с Атари.

    Во первых, они - ВНЕШНИЕ, а значит, придётся иметь дело с Вводом/Выводом.
    Во вторых, они - РАЗНЫЕ, а значит, обладают разными опциями, которые должен задать Именно Программист.

    Гениальные Атарьские Инженегры ПРЕДУСМОТРЕЛИ эти особенности и спроектировали УНИВЕРСАЛЬНУЮ систему Централизованного Ввода/Вывода.
    (Как им это удалось?..)

    Идея была простой.
    При I/O машинка должна знать/обрабатывать следующие вещи:

    1. Как компу распознавать обращение к именно этому устройству? (по именам!)
    2. Это устройство ввода, или это устройство вывода?
    Затем, соответственно генерировать номер ошибки... (Если не срослось...)
    3. Если устройств много, нужен порядковый номер.
    4. Если устройство НЕ СТАНДАРТНОЕ, то нужны дополнительные опции его работы.

    Ну, а задав эти вещи, можно запускать универсальную программу.

    Итак, универсальная... А почему? Потому, что применяется и для своих Атарьских внутренних и внешних устройств! Ничего идеологического не нужно менять!

    Это я к тому, что при включении Атари, хотите Вы или нет, ИСПОЛЬЗУЮТСЯ
    1. Редактор
    2. Возможность вывода на графику
    3. Кассетник, Принтер, и пр.

    По цифрам каналов ввода/вывода это 0, 6, 7.
    (Ясно, что если чего-то нет, то не используется и можно их программировать... [Но при загрузке инициализируется всегда!]) Пардон, если нет картриджа, так как он главнее!

    Кроме этого, AtariOS и Бейсик сами произвольно используют что-то из Ввода/Вывода!!! для внутренних нужд! (Это относится к опциям, а не к вводу/выводу, но они запросто могут переписать Ваши коды,если не убережётесь.)

    Итак, Атари CIO. Централизованный Ввод/Вывод!

    С точки зрения пользователя, работает так:
    Если правильно задать инициализацию и передать управление правильному Вектору (Это такая фигня, которая содержит переходы на обработчики(handlers), то есть JMP <адрес>.), тогда всё произойдёт само собой и Вы в шоколаде.

    Если нет, то Ваш обработчик ошибок (А Вы его написали?) выдаст ошибку ввода/вывода, которая легко распознаётся по номеру и всегда больше 127.
    Это пгтому, что до 127 - это ошибки Бейсика, а после - ошибки устройств.

    Как написать Инициализацию?

    В Атари максимально может быть одновременно работающих устройств 8!
    Программист решает, будет ли он работать с текстом или нет, будет ли он выводить графику, будет ли он работать только с дисководом...

    В зависимости от этого, определяется количество и нумерация свободных устройств.

    Откуда берёт данные программа Централизованная ввода/вывода?

    Из Базы Данных
    Как и любая База Данных, она строго структурированна и определена.

    Блоков в ней 8 - по числу устройств, Записей в каждом блоке 16 (с избытком)

    Начинается она в Атари с адреса $0340!

    Называется IOCB (Input Output Control Block)

    Поля в Базе всегда строго определены, для универсальности.
    Ёрзать с устройствами можно, пользуясь ДОПОЛНИТЕЛЬНЫМИ полями, или, модификаторами.

    Вот структура этой Базы данных:

    ; CIO Equates
    IOCB .or $0340
    ICHID .ds 1 ; Handler ID
    ICDNO .ds 1 ; Number
    ICCOM .ds 1 ; Command
    ICSTA .ds 1 ; Status
    ICBAL .ds 1 ; Lo BufAdr
    ICBAH .ds 1 ; Hi BufAdr
    ICPTL .ds 1 ; Lo PutAdr
    ICPTH .ds 1 ; Hi PutAdr
    ICBLL .ds 1 ; Lo BufLen
    ICBLH .ds 1 ; Hi BufLen
    ICAX1 .ds 1 ; Aux 1
    ICAX2 .ds 1 ; Aux 2
    ICAX3 .ds 1 ; Aux 3
    ICAX4 .ds 1 ; Aux 4
    ICAX5 .ds 1 ; Aux 5
    ICAX6 .ds 1 ; Aux 6

    Поясню, .or в MAE Assembler = Origin
    .ds в MAE Assembler = Define Space, Size

    Далее, для прикола...
    Атарьские Гении поняли, что если длина блока Базы данных будет ровно 16 байт, то тогда программисту не нужно будет ничего считать!

    То есть: Предполагая адресацию к полям, такую как
    CMD ADDR,X

    мы, для нулевого устройства имеем

    LDX #$00

    Для Первого
    LDX #$10

    Для Второго
    LDX #$20
    ...


    На сегодня - всё.
    Удачи!
    Последний раз редактировалось ezswift; 21.01.2017 в 20:05.
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ПК8000 - Ассемблер
    от scaraby в разделе ПК8000
    Ответов: 9
    Последнее: 16.12.2018, 11:00
  2. Ассемблер для 48к на ленте
    от newart в разделе Программирование
    Ответов: 37
    Последнее: 20.09.2015, 22:48
  3. Переведите на ассемблер
    от Руслан в разделе Программирование
    Ответов: 2
    Последнее: 06.08.2012, 23:41
  4. Ассемблер Z-80
    от sergey2b в разделе Пресса
    Ответов: 12
    Последнее: 11.07.2011, 23:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •