1.8. В о з м о ж н о с т ь р а с ш и р е н и я п р о г р а м м н о г о о б е с п е ч е н и я н а MSX - к о м п ь ю т е р а х Удачное аппаратное и программное решение определили популярность MSX-компьютеров в нашей стране. Однако широкие возможности MSX практически не описаны в отечественной литературе. В.Лашук \/fc В подготовке этого материала принимали непосредственное участие: В.С.Лашук (Владимирский государственный педагогический институт), Ю.В.Юзифович (учащийся 8-го класса, г.Куйбышев). \/fn/e 1.8.1. П о д р о б н а я к а р т а п а м я т и Самый простой способ заново сложить дорожную карту - это сложить ее по-другому. Из дорожных правил Джоунса Каждый, кому приходится работать с большим объемом информации, неизбеж- но сталкивается с проблемой нехватки памяти. Обычно считается, что объем доступной для пользователя памяти на MSX-компьютерах (RAM) составляет все- го 32 Кбайта. Однако оказывается, что действительный объем RAM гораздо больше: 64 Кбайта на компьютерах серии MSX-1 и 134 Кбайта на компьютерах серии MSX-2 ! Вся память хранится в особых устройствах, называемых с л о т а м и ("slot"-"позиция","поле","участок"). На схеме изображена слотовая к а р - т а памяти компьютера серии MSX-1 (ROM локальной сети располагается в слоте 3-1 по адресам 4000h╤53FFh): XWWWWWWRWWWWWWWRWWWWWWWRWWWWWWWRWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V V V V V С л о т 3 V VАдресаV Слот 0V Слот 1V Слот 2TWWWWWWWWWRWWWWWWWWWRWWWWWWWWWRWWWWWWWWWS V V V V V Слот 3-0V Слот 3-1V Слот 3-2V Слот 3-3V TWWWWWWUWWWWWWWUWWWWWWWUWWWWWWWUWWWWWWWWWUWWWWWWWWWUWWWWWWWWWUWWWWWWWWWS V 0000hV ROM V V V V V V V V V BASIC V V V V V RAM V V V 3FFFhV (16 V V V V V V V V VКбайтов) V V V V V V TWWWWWWUWWWWWWWUWWWWWWWUWWWWWWWUWWWWWWWWWUWWWWWWWWWUWWWWWWWWWUWWWWWWWWWS V 4000hV ROM V ROM V ROM V V ROM V V V V V BASIC V диско-V диско-V VлокальнойV V V V V (16 V вода AV вода BV V сети V RAM V V V VКбайтов) (16 V (16 V V (5 V V V V 7FFFhV VКбайтов)Кбайтов) V Кбайтов)V V V TWWWWWWUWWWWWWWUWWWWWWWUWWWWWWWUWWWWWWWWWUWWWWWWWWWUWWWWWWWWWUWWWWWWWWWS V 8000hV V ROM V ROM V V V V V V V Vдополн.Vдополн.V V V RAM V V V BFFFhV Vдисков.Vдисков.V V V V V TWWWWWWUWWWWWWWUWWWWWWWUWWWWWWWUWWWWWWWWWUWWWWWWWWWUWWWWWWWWWUWWWWWWWWWS V C000hV V V V V V RAM V V V V V V V V V(систем- V V V V V V V V V ная об- V V V FFFFhV V V V V V ласть) V V ZWWWWWWQWWWWWWWQWWWWWWWQWWWWWWWQWWWWWWWWWQWWWWWWWWWQWWWWWWWWWQWWWWWWWWW[ Итак, в MSX-компьютерах имеется ч е т ы р е слота. В свою очередь,к каждому слоту можно подключить расширитель, который содержит до ч е т ы- р е х новых (в т о р и ч н ы х) слотов. Обозначение "слот 3-1" подразуме- вает, что мы рассматриваем "подключение" к первичному слоту с номером 3 вторичного слота с номером 1. Каждый слот имеет свою м е т к у ( у к а з а т е л ь). Указатель сло- та - это двоичное число, биты которого имеют следующий смысл: XWWWRWWWRWWWRWWWRWWWRWWWRWWWRWWWY V O V 0 V 0 V 0 V O V O V O V O V ZW▌WQWWWQWWWQWWWQWWW▌WWWQWWW▌WWW[ V V ZW Номер первичного слота (2 бита) V ZWWWWWWWWW Номер вторичного слота (2 бита) TWW 0, если вторичный слот отсутствует или его номер равен нулю; ZWW 1 - можно использовать в любом случае. Например, для слота 3-2 указатель будет таким: &b 1 0 0 0 1 0 1 1 ▌ W▌W W▌W V V V не 0 2 3 Напомним Вам, что для вызова подпрограммы, написанной в машинных кодах и расположенной в некотором слоте, применяется команда ассемблера: XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V RST 30h [Указатель слота/Адрес подпрограммы] V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ На языке MSX-BASIC эту команду можно "моделировать" следующим способом: 10 CLEAR 200,&HF300:DEFUSR=&HF300 20 INPUT"Номер первичного слота";N1 30 INPUT"Номер вторичного слота";N2 40 POKE &HF300,&HF7 ' F7 - код команды RST 30h 50 POKE &HF301,&H80+N2*4+N1 ' Указатель слота 60 INPUT"Адрес ячейки";AD% 70 POKE &HF302,PEEK(VARPTR(AD%)):POKE &HF303,PEEK(VARPTR(AD%)+1) 80 POKE &HF304,&HC9: A=USR(A) 'Код команды RET и запуск программы Покажем расположение памяти в слотах для компьютеров серии MSX-2: ═) у ч и т е л ь с к и й компьютер Слот 0 Слот 1 Слот 2 Слот 3-0 Слот 3-1 Слот 3-2 Слот 3-3 0000hXWWWWWWWYXWWWWWWWWYXWWWWWWWWYXWWWWWWWYXWWWWWWWWYXWWWWWWWY V ROM VV VV VV ROM VV ROM VV V 3800hV(16 Кб)VV VV VV(16 Кб)VV(16 Кб) VV RAM VXWWWWWWWWY V BIOS VV VV VV VV VV(16 Кб)VV RAM V V BASIC VV VV VVPAINTERVV BASIC VV VV (2 Кб) V 4000hTWWWWWWWSTWWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWS V ROM VV VV VV VV ROM VV VV ROM V V(16 Кб)VV ROM VV ROM VV ROM VV(16 Кб) VV VV (14 Кб)V V VV( 16 Кб)VV( 16 Кб)VV(16 Кб)VV VV RAM VVЛок.сетьV 7800hV VV VV VV VVДисководVV(16 Кб)VTWWWWWWWWS V VV Дополн.VV Дополн.VVPAINTERVV(BASIC, VV VV RAM V V VVдисководVVдисководVV VVMSX-DOS)VV VV (2 Кб) V V VV VV VV VV VV VVЛок.сетьV 8000hTWWWWWWWSTWWWWWWWWSUWWWWWWWWSTWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWS V VV ROM VV ROM VV ROM VV VV VV ROM V V VV( 16 Кб)VV( 16 Кб)VV(16 Кб)VV VV VV (14 Кб)V V VV VV VV VV VV RAM VVЛок.сетьV B800hV VV Дополн.VV Дополн.VVPAINTERVV VV(16 Кб)VTWWWWWWWWS V VVдисководVVдисководVV VV VV VV RAM V V VV VV VV VV VV VV (2 Кб) V C000hTWWWWWWWSTWWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWS V VV VV VV ROM VV VV RAM VV V V VV VV VV(16 Кб)VV VV(16 Кб)VV V V VV VV VVPAINTERVV VV SystemVV V V VV VV VV VV VV area VV V FFFFhZWWWWWWW[ZWWWWWWWW[ZWWWWWWWW[ZWWWWWWW[ZWWWWWWWW[TWWWWWWWSZWWWWWWWW[ XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V RAM V V Записав в соответствующий порт номер пере- V V(16 Кб)V V ключаемой страницы можно установить эту V TWWWWWWWS V страницу для д о с т у п а , например: V V RAM V V &hFB WWWWWW▐ порт с адресом &hFC V V(16 Кб)V V &hFA WWWWWW▐ порт с адресом &hFD V TWWWWWWWS V &hF9 WWWWWW▐ порт с адресом &hFE V V RAM V V &hF8 WWWWWW▐ порт с адресом &hFF V V(16 Кб)V V В отключаемых страницах данные сохраняются!V TWWWWWWWS ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ V RAM V Л о г и ч е с к и е с т р а н и ц ы V(16 Кб)V XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY ZWWWWWWW[ 3 2 1 0 ░WW Номера логических страниц слота 3-2 &hFF &hFE &hFD &hFC ░WW Адрес порта, отвечающего за логическую страницу слота 3-2 XWWWWWWWWRWWWWWWWWRWWWWWWWWRWWWWWWWWRWWWWWWWWRWWWWWWWWRWWWWWWWWRWWWWWWWWY V &hC000-V &h8000-V &h4000-V &h0000-V V V V V V &hFFFF V &hBFFF V &h7FFF V &h3FFF V V V V V T W W W WVW W W W VW W W W VW W W W V W W W WVW W W W V W W W WVW W W W S V Н о м е р а с т р а н и ц RAM с л о т а 3-2 V V &hF8 V &hF9 V &hFA V &hFB V &hFC V &hFD V &hFE V &hFF V ZWWWWWWWWQWWWWWWWWQWWWWWWWWQWWWWWWWWQWWWWWWWWQWWWWWWWWQWWWWWWWWQWWWWWWWW[ 0 1 2 3 4 5 6 7 ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Ф и з и ч е с к и е с т р а н и ц ы с л о т а 3-2 и их н о м е р а ║) у ч е н и ч е с к и й компьютер Слот 0 Слот 1 Слот 2 Слот 3-0 Слот 3-1 Слот 3-2 Слот 3-3 0000hXWWWWWWWYXWWWWWWWWYXWWWWWWWWYXWWWWWWWYXWWWWWWWWYXWWWWWWWY V ROM VV VV VV ROM VV VV V 3800hV(16 Кб)VV VV VV(16 Кб)VV VV RAM VXWWWWWWWWY V BIOS VV VV VV VV VV(16 Кб)VV RAM V V BASIC VV VV VV BASIC VV VV VV (2 Кб) V 4000hTWWWWWWWSTWWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWS V ROM VV VV VV VV VV VV ROM V V(16 Кб)VV ROM VV ROM VV ROM VV ROM VV VV (14 Кб)V V VV( 16 Кб)VV( 16 Кб)VV(16 Кб)VV (16 Кб)VV RAM VVЛок.сетьV 7800hV VV VV VV VV VV(16 Кб)VTWWWWWWWWS V VV Дополн.VV Дополн.VVСистемаVVДисководVV VV RAM V V VVдисководVVдисководVV CP/M VV (BASIC,VV VV (2 Кб) V V VV VV VV VVMSX-DOS)VV VVЛок.сетьV 8000hTWWWWWWWSTWWWWWWWWSUWWWWWWWWSTWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWS V VV ROM VV ROM VV ROM VV VV VV ROM V V VV( 16 Кб)VV( 16 Кб)VV(16 Кб)VV VV VV (14 Кб)V V VV VV VV VV VV RAM VVЛок.сетьV B800hV VV Дополн.VV Дополн.VVСистемаVV VV(16 Кб)VTWWWWWWWWS V VVдисководVVдисководVV CP/M VV VV VV RAM V V VV VV VV VV VV VV (2 Кб) V C000hTWWWWWWWSTWWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWSTWWWWWWWSTWWWWWWWWS V VV VV VV ROM VV VV RAM VV V V VV VV VV(16 Кб)VV VV(16 Кб)VV V V VV VV VV VV VV SystemVV V V VV VV VVСистемаVV VV area VV V V VV VV VV CP/M VV VV VV V FFFFhZWWWWWWW[ZWWWWWWWW[ZWWWWWWWW[ZWWWWWWW[ZWWWWWWWW[TWWWWWWWSZWWWWWWWW[ V RAM V V(16 Кб)V XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY TWWWWWWWS V Нумерация физических и логических страниц V V RAM V V слота 3-2, а также адреса соответствующих V V(16 Кб)V V портов в ученическом компьютере аналогич- V TWWWWWWWS V ны учительскому компьютеру. V V RAM V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ V(16 Кб)V TWWWWWWWS V RAM V V(16 Кб)V ZWWWWWWW[ Таким образом, непосредственным сложением нетрудно получить, что общий объем памяти MSX-компьютеров составляет: XWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWRWWWWWWWWWWWY V К о м п ь ю т е р V ROM V RAM V TWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWUWWWWWWWWWWWS V MSX-1 (без дисководов)V 37 КбайтовV 64 КбайтаV TWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWUWWWWWWWWWWWS V MSX-2 (ученический) V 92 Кбайта V 134 КбайтаV TWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWUWWWWWWWWWWWS V MSX-2 (учительский) V 156 КбайтовV 134 КбайтаV ZWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWQWWWWWWWWWWW[ В слоте 0 располагаются подпрограммы BIOS, используемые как в компьюте- рах серии MSX-1, так и в компьютерах серии MSX-2. Дополнительные подпрог- раммы BIOS ("расширенный BIOS"),которые используются только в компьютерах серии MSX-2, располагаются: для учительского компьютера - в слоте 3-1, для ученического компьютера - в слоте 3-0. 1.8.2. Р а б о т а с о с л о т а м и - Боюсь, что эти подробности утомительны, но вам не разобраться в ситуации, если вы не будете в курсе моих затруднений. А.Конан Дойль. Скандал в Богемии Все адресное пространство MSX-компьютера разобъем на ч е т ы р е т.н. л о г и ч е с к и е страницы (объемом по 16 Kбайтов каждая). Пронумеруем их следующим образом: XWWWWWWWWWWWWWWWWWWWRWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWWRWWWWWWWWWWWWWY V Адреса V 0╤3FFFh V 4000h╤7FFFh V 8000h╤BFFFh V C000h╤FFFFh V TWWWWWWWWWWWWWWWWWWWUWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWWWWWWUWWWWWWWWWWWWWS VЛогическая страницаV 0 V 1 V 2 V 3 V ZWWWWWWWWWWWWWWWWWWWQWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWWWWWWQWWWWWWWWWWWWW[ Заметим, что каждый слот также можно разбить на участки объемом по 16 Кбайтов каждый, которые мы будем называть ф и з и ч е с к и м и стра- ницами памяти. Прежде чем начать работу с физической страницей памяти, ее необходимо п о д к л ю ч и т ь к некоторой логической странице адресно- го пространства, для чего выполнить следующие операции: ═) указать компьютеру н о м е р подключаемой логической страницы(тем самым мы присвоим физической странице некоторый начальный адрес). Заметим, что при включении компьютера некоторым физическим страницам памяти началь- ный адрес присваивается автоматически; ║) указать н о м е р а первичного и вторичного слотов, которым при- надлежит выбранная физическая страница памяти. Номера первичных слотов записываются в порт ввода-вывода с адресом A8h, а номера вторичных слотов - в ячейку FFFFh рабочей области (слот 3-2). Порт ввода-вывода A8h: (номера п е р в и ч н ы х слотов) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Старший W▐V O V O V O V O V O V O V O V O V░W Младший бит ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ бит WWWWW▌WWWWW WWWWW▌WWWWW WWWWW▌WWWWW WWWWW▌WWWWW V V V ZWWWWWWWY Номер слота, из которого Номер слота Номер слота Номер слота процессор берет информа- для логичес- для логичес- для логичес- цию при обращении к ло- кой страницы кой страницы кой страницы гической странице 3 с номером 2 с номером 1 с номером 0 Ячейка памяти FFFFh: (номера в т о р и ч н ы х слотов) XWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWRWWWWWY Старший W▐V O V O V O V O V O V O V O V O V░W Младший бит ZWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWWQWWWWW[ бит WWWWW▌WWWWW WWWWW▌WWWWW WWWWW▌WWWWW WWWWW▌WWWWW V V V ZWWWWWWWY Номер слота, из которого Номер слота Номер слота Номер слота процессор берет информа- для логичес- для логичес- для логичес- цию при обращении к ло- кой страницы кой страницы кой страницы гической странице 3 с номером 2 с номером 1 с номером 0 Например, если содержимое порта A8h равно &B11001001 , а содержимое ячейки FFFFh равно &B01101100 , то в этом случае: логическая страница 3 рассматривается как участок памяти из слота 3-1, логическая страница 2 рассматривается как участок памяти из слота 0-2, логическая страница 1 рассматривается как участок памяти из слота 2-3, а логическая страница 0 рассматривается как участок памяти из слота 1-0. Теперь ясно, что подпрограмма подключения памяти к адресному пространс- тву выглядит следующим образом: DI ; Запретить прерывания при работе с портами ввода-вывода LD A, Номера первичных слотов OUT (A8h),A LD A, Номера вторичных слотов LD (FFFFh),A EI ; Разрешить системные прерывания RET \/i Внимание! При чтении числа из ячейки FFFFh оно выводится в и н в е р т и р о в а н н о м виде. \/i- П р и м е р 1. 10 POKE &HFFFF, &B01101100 WWWWWWWWWWWWWW 20 PRINT BIN$(PEEK(&HFFFF)) run 10010011 Ok Теперь для того, чтобы узнать, какие вторичные слоты подключены к ад- ресному пространству, необходимо инвертировать полученный результат (заме- нить нули - единицами, а единицы - нулями). XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V Отметим, что при включении компьютера в логические страницы 0 и 1 V V "помещаются" физические страницы памяти из слота 0, а в логические V V страницы 2 и 3 "помещаются" физические страницы памяти из слота 3-2.V V Содержимое порта ввода-вывода с адресом A8h при этом становится рав-V V ным &B11110000, а истинное содержимое ячейки памяти FFFFh становит-V V ся равным &B10100000 (не забудьте про инвертирование!) V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Если до выключения компьютера на странице 1 слота 3-2 создать идентифи- катор ROM и разместить на данной странице Вашу подпрограмму, то она будет "стартовать" при включении компьютера, т.к.первое обращение идет к этой странице. П р и м е р 2. А теперь небольшой фрагмент на макроассемблере... WWWWWWWWWWWWW DEFB 0FEH ; Программа запускается с адреса &H9000 DEFW START,KONEC+END-NACH,START ORG 09000H CLS EQU 00C3H ; Очистка экрана KEYOFF EQU CLS+09H ; Отключение функциональных клавиш FORCLR EQU 0F3E9H ; Адрес цвета изображения COLOR EQU 0062H ; Установка цвета CONSOL EQU 00A2H ; Вывод символа на консоль. START: LD HL,PROM ; Адрес старта реставрируемой подпрограммы PUSH HL ; Сохранили в стеке и при встрече RET DI ; переходим на этот адрес. LD A,0A8H ; Организация страниц RАМ и ROM: LD (0FFFFH),A ; 0 страница (0000H-4000H)-BASIC (BIOS) LD A,0FCH ; 1 страница (4000H-8000H)-СЛОТB 3-2 OUT (0A8H),A ; 2 страница (8000H-C000H)-СЛОТB 3-2 LD HL,KONEC+1 ; 3 страница (C000H-FFFFH)-СЛОТB 3-2 LD DE,NACH ; Пересылка подпрограммы на начало LD BC,END-NACH; первой страницы слота 3-2 LDIR ; KONEC: RET ; ; ORG 04000H ; ; NACH: DEFM "AB" ; Идентификатор псевдо-ROM DEFW PROM ; Адрес старта подпрограммы DEFS 12 ; Зарезервировано стандартом PROM: XOR A ; CALL CLS ; CALL KEYOFF ; Установка цвета,CLS и KEYOFF LD HL,FORCLR ; CLS:KEYOFF:COLOR 15,9,9 LD (HL),0FH ; INC HL ; LD (HL),09H ; INC HL ; LD (HL),09H ; CALL COLOR ; CALL INLINE ; Печать строки на мониторе ; ... Здесь может размещаться Ваша программа. ; ... Она будет работать даже при отключении LABEL: JP LABEL ; компьютера с помощью кнопки "RESET" INLINE: LD HL,STROKA ; Подпрограмма вывода символов на консоль LD A,(HL) ; LD C,A ; OR A ; RET Z ; LD A,C ; PUSH HL ; CALL CONSOL ; POP HL ; INC HL ; JR INLINE+3 ; STROKA: DEFM "ВЫКЛЮЧИ КОМПЬЮТЕР НА МИНУТУ." NOP END: NOP \/i В н и м а н и е ! 1. Логическая страница с номером 3 ни при каких условиях не должна под- вергаться изменениям, так как в ней расположены подпрограммы-ловушки и об- ласть системных переменных. Нарушение этого условия приведет к отказу сис- темы от дальнейшего выполнения программы и ее сбросу. 2. Если для физической страницы Вы используете начальный адрес 8000h, то прежде чем подключать ее к адресному пространству, позаботьтесь о пере- мещении программы на MSX-BASIC и стека в "безопасное" место, каковым явля- ется логическая страница с номером 3. Для этого выполните программу: 10 POKE &HF676,1:POKE &HF677,&HC0:POKE &HC000,0:NEW \/i- Существует еще один способ подключения физической страницы памяти к ад- ресному пространству.Для этого воспользуйтесь подпрограммой BIOS с именем ENASLT , расположенной в слоте 0 по адресу 0024h. Обращение к ней выглядит следующим образом: LD A, Указатель слота LD HL,Начальный адрес (0000h,4000h или 8000h) CALL ENASLT RET В качестве примера приведем программу подключения физической страницы из некоторого слота к логической странице 2 адресного пространства. П р и м е р 2. WWWWWWWWWWWWWW 10 DATA 3E,00 :'LD A, Указатель слота 20 DATA 21,00,80 :'LD HL,8000h ;Начальный адрес 30 DATA CD,24,00 :'CALL ENASLT 40 DATA C9 :'RET 50 CLEAR 200,&HF300:DEFUSR=&HF300 60 FOR T=0 TO 8:READ Z$:POKE &HF300+T,VAL("&h"+Z$):NEXT 70 INPUT"Номер первичного слота";N1 80 INPUT"Номер вторичного слота";N2 90 POKE &HF301,&H80+N2*4+N1 '░WW Указатель слота 120 A=USR(A) Кстати, подобного эффекта можно достичь путем воздействия на ячейку па- мяти FFFFh в слоте 3-2: POKE &HFFFF,&H80 - активизирован слот 3-0 (для учительского компьютера); POKE &HFFFF,&HA0 - активизирован слот 3-2 (по умолчанию); POKE &HFFFF,&HB0 - активизирован слот 3-3. XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V Итак, прежде чем работать с памятью, ее необходимо явно V V распределить в адресном пространстве компьютера ! V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Существует, однако, другой способ работы со слотами,заключающийся в ис- пользовании подпрограмм BIOS, расположенных в слоте 0. В этом случае проб- лема распределения памяти снимается с пользователя и целиком возлагается на систему. Опишем работу с некоторыми из этих подпрограмм. З а п и с ь числа в RAM любого слота осуществляется путем обращения к подпрограмме с именем WRSLT , расположенной по адресу 0014h. П р и м е р 3. WWWWWWWWWWWWWW 10 DATA 3E,00 :'F300 LD A, Указатель слота 20 DATA 21,00,00 :'F302 LD HL,Адрес ячейки 30 DATA 1E,00 :'F305 LD E, Число 40 DATA CD,14,00 :'F307 CALL WRSLT 50 DATA C9 :'F30A RET 60 CLEAR 200,&HF300:DEFUSR=&HF300 70 FOR T=0 TO 10:READ Z$:POKE &HF300+T,VAL("&h"+Z$):NEXT 80 INPUT"Номер первичного слота";N1 90 INPUT"Номер вторичного слота";N2 100 POKE &HF301,&H80+N2*4+N1 '░WW Указатель слота 110 INPUT"Адрес ячейки";AD% 120 POKE &HF303,PEEK(VARPTR(AD%)):POKE &HF304,PEEK(VARPTR(AD%)+1) 130 INPUT"Какое число запишете";Q%:POKE &HF306,Q%:A=USR(A) Ч т е н и е числа из любой физической страницы, имеющей некоторый на- чальный адрес, осуществляется путем обращения к подпрограмме с именем RDSLT , расположенной по адресу 000Ch. П р и м е р 4. WWWWWWWWWWWWWW 10 DATA 3E,00 :'F300 LD A,Указатель слота 20 DATA 21,00,00 :'F302 LD HL,Адрес читаемой ячейки 30 DATA CD,0C,00 :'F305 CALL RDSLT 40 DATA 32,10,F3 :'F308 ;Запись результата в доступную ячейку ;памяти (в нашем случае &HF310) 50 DATA C9 :'F30B RET 60 CLEAR 200,&HF300:DEFUSR=&HF300 70 FOR T=0 TO 11:READ Z$:POKE &HF300+T,VAL("&h"+Z$):NEXT 80 INPUT"Номер первичного слота";N1 90 INPUT"Номер вторичного слота";N2 100 POKE &HF301,&H80+N2*4+N1 '░WW Указатель слота 110 INPUT"Адрес ячейки";AD% 120 POKE &HF303,PEEK(VARPTR(AD%)):POKE &HF304,PEEK(VARPTR(AD%)+1) 130 A=USR(A):PRINT"Вот Ваше число:";PEEK(&HF310) Посмотрев на схему расположения памяти в слотах, Вы можете заметить, что некоторые физические страницы памяти слота 3-2 в компьютерах серии MSX-2 не имеют ф и к с и р о в а н н ы х адресов. Пронумеруем все физи- ческие страницы слота 3-2 от 0 до 7 сверху вниз (в порядке следования на рисунке). Любую из этих физических страниц можно подключить к любой логической странице адресного пространства. \/i При этом не рекомендуется изменять содержимое логической страницы с но- мером 3, так как это приводит к перезагрузке системы! \/i- Подключить физические страницы слота 3-2 можно путем воздействия на порты ввода-вывода с адресами 252, 253, 254 и 255. При этом, если Вы ис- пользуете порт с адресом 252+N, то процессор подключит распределяемую фи- зическую страницу к логической странице с номером N. XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWY V Для подключения физической страницы к логической выполните команду V V OUT 252+N1,&hF8+N2 , V V где: N1 - номер логической страницы, V V N2 - номер физической страницы, V V &hF8 - число, полученное при вычитании 256 - M , V V M - число физических страниц в слоте 3-2 . V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW[ Таким образом Вы получите доступ к л ю б о й ячейке памяти в слоте 3-2 (внимательно изучите т е к с т на схеме расположения памяти в слотах)! В заключение отметим, что для доступа к физическим страницам памяти, подключенным к адресному пространству,применяются оператор POKE и функция PEEK. Кроме того, для работы с памятью компьютера серии MSX-2, подключен- ного к локальной сети, применяются операторы CALL POKE и CALL PEEK. Если адрес принадлежит отрезку [&h4000,&h7FFF], то операторы CALL POKE и CALL PEEK "работают" с памятью, которая находится в слоте 3-3 и отвеча- ет за работу локальной сети. Во всех остальных случаях действие оператора CALL POKE совпадает с действием оператора POKE, а действие оператора CALL PEEK совпадает с действием функции PEEK.