Глава 1 Анатомия персонального компьютера. С точки зрения программиста все компьютеры состоят из процессора, микросхем памяти и нескольких "умных" микросхем. Основные схемные компоненты компьютера расположены на системной плате, расширения же и дополнительные компоненты вставляются в разъемы системной платы. Для подключения нескольких устройств пользователи фирменных компьютеров использовали такое чудо как INTERFACE 1. Нам же всем приходиться пользоваться такими вещами как слоты: один разъем входит, три выходят. Системная плата содержит микропроцессор Z80, который управляет всей работой, подключенные к нему оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ) и вспомогательные микросхемы. Некоторые из этих вспомогательных микросхем управляют внешними устройствами, например дисководом или принтером, другие обеспечивают работу самого микропроцессора. В этой главе мы рассмотрим роль основных микросхем и опишем их основные возможности. Следует отметить, что в разных компьютерах могут быть установлены различные варианты одной и той же микросхемы. Например, микросхема для генерации многоголосой музыки обозначается AY8910, 3AY8912 или YM2149M. Мы будем считать их одинаковыми, а их названия синонимами. 1.0 Байты и биты Минимальной единицей информации понимаемой компьютером является бит. Бит может принимать только 2 значения включен или выключен, быть или не быть (бит или не бит, если так можно сказать). На практике состояние включенного бита обозначается 1 и называется логическая единица. Выключенный бит по аналогии называется логическим нулем и обозначается 0. 8 бит составляют 1 байт. Байт является самой основной единицей информации. Почти вся информация измеряется в байтах. Один символ кодируется компьютером одним байтом и вы на основе этого можете приравнять байт и символ. Например, текст этой главы составлен из 13905 байта. 1.1 Микропроцессор Z80 Это 8-разрядный микропроцессор, разработанный компанией ZILOG(R) и управляющий работой стандартных персональных компьютеров фирмы Sinclair Research LTD. Это мозг машины, который также называют центральным процессорным устройством (ЦПУ). Почти каждый бит информации, проходящий через компьютер, обрабатывается ЦПУ. Микропроцессор управляет работой ПК, пересылая сигналы управления и данные от одной части компьютера к другой по сети электронных проводов, называемых шиной. Микросхемы памяти и интерфейсные микросхемы подключаются к шине с помощью портов ввода-вывода. Через эти порты проходят данные, которыми ЦПУ обменивается с остальными частями компьютера и с периферией. Внутри микропроцессора имеется рабочая область для обработки и передачи данных, состоящая из ... Да, из скольких регистров состоит Z80? Одни источники называют 22, другие 24 или 26. Регистров же конечно всегда одинаково, просто некоторые источники считают одни регистры как один, другие как два. Общий объем их всегда составляет 26 байт. Для однозначности будем считать их за 24 как в фирменном руководстве по Z80. Микропроцессор Z80 - лишь один из множества микропроцессоров, разработанных фирмой ZILOG. Но он является одним из самых лучших 8-разрядных процессоров, его возможности превышают вдвое возможности процессора INTEL 8080. В связи с популярностью Z80, многие фирмы закупили права на его производство. * * * Синклер во всех своих моделях использовал Z80, за исключением очень мощных компьютеров Sinclair QL и NOTEBOOK-90. Последний был признан лучшим компьютером в своем классе. * * * Микропроцессор Z80 может работать только с целыми числами. Для работы с вещественными числами необходимы специальные средства. Для математических вычислений в Спектруме используются библиотеки подпрограмм, работа с вещественными числами в которых эмитируется с помощью множества команд процессора. Такой подход требует больших затрат процессорного времени. 1.2 Вспомогательные микросхемы. Микропроцессор не может ( да и не должен) управлять всеми процессами в компьютере. Передавая выполнение определенных функций вспомогательным микросхемам, ЦПУ разгружает себя для основной работы. На эти вспомогательные микросхемы можно возложить управление потоками информации во внутренних цепях или обслуживание внешних устройств. Эти, так называемые, контроллеры устройств часто представляют отдельные платы, вставляемые в системный разъем. Изредка вспомогательные микросхемы являются программируемыми, т. е. их можно настраивать для выполнения различных задач. Чаще всего такое программирование нежелательно, однако рассматривая микросхемы по отдельности, я укажу, что же именно можно программировать. Однако в этой книге не рассматриваются вопросы, связанные с программированием конкретных микросхем, по этим вопросам вы можете обратиться к техническим справочникам. 1.2.1 Контроллер доступа к памяти В некоторых компьютерах для доступа к памяти применяется микросхема К556РТ4 или ее аналоги, в фирменном же компьютере была установлена "жуткая" микросхема ULA. Она заведовала всеми важными вещами, которые нельзя было "доверить" процессору. В данном случае "это" служит для того чтобы Вы записав значение в память, могли его оттуда прочитать (хотя, по сути дела, вы без нее даже не запишите данные в память) или для того, чтобы за адресом #001С шел адрес #001D, а не 78В7. Эта микросхема не программируется и работает в фоновом режиме, поэтому вы можете спокойно забыть все, что вы прочитали в этом параграфе. 1.2.2 Контроллер дисплея Основан указанных выше микросхемах. Он служит для получения синхронного сигнала и также не программируется. 1.2.3 Генератор тактовых импульсов. Он представляет собой микросхему + кварцевый резонатор. Он вырабатывает тактовые импульсы, управляющие микропроцессором. Его опорная частота, как правило, 14МГц. Эта частота делится другими микросхемами для получения рабочих частот. Рабочая частота стандартного микропроцессора Z80 2.5МГц, но в Спектруме его заставляют работать на 3.5МГц, что составляет одну четверть от опорной частоты. Новые члены семейства Синклера могут работать быстрее, например, мой компьютер работает на частоте 7МГц, (для сравнения микропроцессор INTEL 80286(R) работает на 6МГц). Многие контроллеры, например дисковода, используют свои кварцевые резонаторы. 1.2.4 Программируемый параллельный интерфейс ВВ55. В последних моделях используется эта микросхема. Она необходима для подключения к шине некоторых периферийных устройств. Через порты ввода-вывода этой микросхемы можно устроить общение с принтером или другим компьютером. Его можно и нужно программировать. 1.2.5 Контроллеры дисковода и принтера. Используется для управления флоппи-диском и принтером. Их можно программировать и позже будет сказано как. Контроллер дисковода основан на микросхеме К1818ВГ93, а принтера на выше указанном ВВ55. 1.2.6 Музыкальный сопроцессор AY8910 Эта микросхема применяется начиная с моделей 128К и далее. С ее помощью можно создавать великолепную музыку. Более подробно мы рассмотрим ее в свое время. 1.3 Связывающее звено: шина. Как уже упоминалось выше, в компьютерах все внутренние управляющие схемы связаны между собой с помощью совокупности соединений, называемой шиной. В действительности, это просто множество проводов общих для всех компонентов системной платы. Данные, пересылаемые от одного устройства к другому "путешествуют" по шине, пока не достигнут места назначения. Каждый байт памяти и любая из управляющих микросхем напрямую или косвенно подключены к шине. Когда дополнительное устройство вставляется в системный разъем на системной плате, оно тем самым подключается к шине и становиться полноправной частью компьютера. Любые данные, поступающие в компьютер или выводимые из него, в какой-то момент проходят по шине. Большую часть времени данные находятся в основной памяти, которая в машинах семейства Синклера многих тысяч восьмибитных ячеек памяти, а именно 131072 бит в самой минимальной модели и 8399608 в максимальной. Некоторые данные, однако, могут недолго находиться в порту ввода-вывода или в регистре, пока ЦПУ не отправит их по назначению. Порты и регистры будут рассмотрены в гл 2. Каждая ячейка памяти и каждый порт имеют свой уникальный адрес. Всякий раз при обращении к ячейке памяти или к порту этот адрес передается по шине адреса, само значение передается по шине данных. Существует также шина питания и шина контроля и управления микропроцессором, но для программиста они не представляют интереса, поэтому остановимся на двух первых. 1.3.1 Шина адреса Шина адреса всех компьютеров семейства Спектрум состоит из 16 сигнальных линий, несущих адреса ячеек памяти и портов ввода-вывода. Адресоваться можно к 65536 портам ввода-вывода и ячейкам памяти. 1.3.2 Шина данных Шина данных совместно с шиной адреса используется для передачи данных внутри компьютера. Все Спектрумы с микропроцессором Z80 имеют шину данных состоящую из 8 информационных линий, каждая из которых передает одну двоичную цифру и единицей передачи информации является 1 байт. Микропроцессор Z80 может работать с 16-ти разрядными данными, но только внутри себя. По сути дела возможности Z80 не только такие же как и у процессора INTEL 8088(R), но и в некоторых аспектах намного больше. Вообще говоря, у Z80 очень развитая система команд. 1.4 Микросхемы памяти. До сих пор мы рассматривали рассматривали ЦПУ, вспомогательные микросхемы, и лишь чуть затрагивали упоминали память. Мы намеренно отложили обсуждение памяти до конца главы, поскольку микросхемы памяти, в отличие от других микросхем, не управляют потоками данных в компьютере, а лишь хранят данные до поры. Число микросхем памяти определяет максимальный ее объем, который можно использовать для программ и данных. Но компьютер может использовать не все микросхемы памяти или частично. Это мудрое изречение следует пояснить. Дело в том, что в вашем Спектруме 48К может стоять микросхем ОЗУ на 64К, при этом использоваться будут только 48К. Иначе говоря, имея только 48К памяти, вы не сможете обращаться к остальным 16К памяти. Программисту следует также полностью придерживаться этой точки зрения и говорить не о физическом объеме памяти, а об адресуемой памяти. Z80 может обращаться к 64К и часто памяти этому и равна. Но в "128К" и PROFI физическая память многократно больше адресуемой. Подробно адресация к памяти рассматривается в 2.2. Обращение к памяти происходит с помощью 16-ти разрядного адреса. В схеме использование памяти процессором Z80 имеет "ширину" 16 бит, поскольку они передаются по 16-ти разрядной шине данных. Профессионалы представляют адреса в 16-тиричном виде, если в вас проблемы с 16-тиричной арифметикой, то загляните в приложение 1. При рассмотрении 64К (48К ОЗУ и 16К ПЗУ) памяти обычного Спектрума мы обычно делим ее на 4 блока по 16 килобайт. Такое разбиение памяти на блоки носит отчасти условных характер, однако это удобно для объяснения общей схемы распределения памяти. COOO-FFFF (49152-65535) Рабочее ОЗУ. 8000-BFFF (32768-49151) Рабочее ОЗУ. 4000-7FFF (16384-32767) Системное ОЗУ и часть рабочего ОЗУ. 0000-3FFF ( 0-16384) ПЗУ. Рис. 1.4 Схема памяти. "128К". Тут имеется 160К памяти: 128К ОЗУ (8 блоков по 16К) и 32К ПЗУ (2 блока по 16К) Вы можете изменять активную страницу памяти набором команд, но начиная с адреса #4000 по адрес #BFFF будут находиться одни и те же данные. Меняться будет только область памяти с #С000 по #FFFF. Страницы ПЗУ можно менять независимо от страниц ОЗУ. И позже мы скажем как. #7FFFF #6FFFF #5FFFF #4FFFF #3FFFF #2FFFF #1FFFF #0FFFF Станицам памяти 5 и 2 соответствуют блоки с #4000 по #7FFF и с #8000 по #BFFF соответственно. 1.5 Идеология программирования. Прежде чем перейти к следующим главам, мне хочется остановиться на общих принципах программирования персональных компьютеров. Эти общие принципы помогут вам понять, что для вас важно и полезно, и наоборот, на что можно не обращать внимания. Ключевым моментом в программировании является использование программ ПЗУ, обеспечивающих почти полный набор функций управления компьютером. Следует всегда использовать фирменно описанные точки входа в процедуры. Это дает фирме свободу для совершенствования компьютеров , а также ваша программа будет работать на всех компьютерах. Хотя управление аппаратурой на низком уровне тоже имеет свои плюсы, и дает достаточную полноту для программу. О программировании с использованием процедур ПЗУ и программировании на низком уровне можно долго дискутировать и долго приводить доводы "за" и "против". Вообще если же вам захочется использовать нестандартное программирование следует описать все это в сопроводительной документации.