Речь, наверное, о конвертации на лету папки с хобетными файлами в образ и обратно. Кстати, потенциально очень полезная фича. Но только это же не ерунда типа ленточных traps, тут придется навертеть килограммы эвристик, и то работать будет не всегда.
Речь, наверное, о конвертации на лету папки с хобетными файлами в образ и обратно. Кстати, потенциально очень полезная фича. Но только это же не ерунда типа ленточных traps, тут придется навертеть килограммы эвристик, и то работать будет не всегда.
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
Не прошло и двух лет, как я добрался до еще тогда обещанной темы.
Кидаю сюда полную схему дешифрации портов АТМ1:
Обозначения адресных линий в портах здесь следующие:
"1" или "0" - однозначная обязательная установка или сброс соответствующего адреса при выборе порта.
"X" - значение этого адреса может меняться в зависимости от задач пользователя.
"n" - значение этих линий неопределено и в дешифрации адреса порта они не участвуют.
Также просьба уделить внимание описанию сигнала CPNET в порту out #FDFD.
Порт out #FE: (выборка: %nnnnnnnn XXXnX1n0)
Как и на любом Спектруме он управляет бордюром и звуком -
D0-D2 - цвет бордюра (8 цветов) – BRG
D3 - запись сигнала на магнитофон
D4 - управление звуковым каналом ("бипером")
D5-D7 - не используются.
Кроме стандартных функций введены новые, путем сброса в "0" некоторых адресных линий порта:
A7=0(именно адресная шина: то есть вывод не в #FE, а, например, в #7E! Не путать с шиной данных!!! В дальнейшем адресные шины будут обозначаться An: а шины данных - Dn) - CPUS: выключение ПЗУ, вместо него с адреса #0000 включается страница 0, а с адреса #4000 - страница 4 вместо страницы 5 с экраном(экран как и прежде располагается в 5(7) странице ОЗУ, но для доступа к нему необходимо включать эти страницы в верхней памяти по #7FFD). Это, естественно, нужно в CP/M, но ничто не мешает использовать его в обычном режиме. Правда в этом режиме недоступны порты TR-DOS, так что для работы с дисководом нужно прыгать в обычный режим: устанавливая в порте #FE линию A7 в единицу. Также не действует переключение ПЗУ через #7FFD (хотя ОЗУ, экраны, защелка верхней памяти работают): но попытавшись изменить через #7FFD сигнал ROM2: и включив позже ПЗУ обратно, вы увидите, что ваш труд не пропал даром!
A6 - RG0(A6=1 - RG0=1 и наоборот)
и
A5 - RG1(также как и с A6)
включение расширенных экранов, кроме того именно при обнулении RG0 происходит перепутывание памяти. Комбинации:
RG0=1 RG1=1 - sinclair-режим 256x192
RG0=0 RG1=1 - режим 640x200, атрибут на байт.
RG0=0 RG1=0 - режим 320x200, 16 цветов, аналог EGA.
RG0=1 RG1=0 - не используется...
-----------
A3 - Включение BRIGHT 1 для бордюра! То есть на бордюр можно выводить не 8, а 16 цветов!
(Значение бита инверсно, то есть A3=0 - BRIGHT1, A3=1 - BRIGHT0)
Маленькое НО: использование обнуления старших адресов порта #FE является не совсем удачным, так как возникла несовместимость с достаточно большим, пусть и не фатально, количеством ПО, которое вываливается в высокую графику и виснет из-за перепутывания памяти... Я это "вылечил" тумблером, которые когда надо блокировали обнуление при обращении к #FE адресов A7,6,5...
Порт in #FE: (выборка: %XXXXXXXX nnnnn1n0)
как и в стандартном Спектруме:
D0-D4 - чтение одной из пяти клавиш полуряда клавиатуры.
A8-A15 - выбор полурядов клавиатуры, путем сброса соответствующего бита в ноль.
D5 - "готовность АЦП" (аналогично #7FFD.7 для turbo 2+)
D6 - чтение сигнала с магнитофона.
Исключение -
D7 - это системный сигнал Z. Он активизируется (устанавливается в "1") строго через определенное время после INT. На этом строится защита ПЗУ CP/M в АТМ - оно закодировано (вернее та часть, которая перекидывается позднее в ОЗУ): и ключом к коду является подученное число тактов до установки Z.
Порт out #FB (выборка: %nnnnnnnn Xnnnn0n1) - вывод на принтер (centronix):
D0-D7 - данные. Также по #FB работает встроенный COVOX
A7=0 - строб данных, то есть вывод в на принтер осуществляется выводом в этот порт трижды -
OUT (#FB), A
OUT (#7B), A
OUT (#FB), A
А вообще-то это стандартный LPRINT III
Порт in #FB (выборка: %nnnnnnnn Xnnnn0n1) - чтение CENTRONIX:
D7 - BUSY с принтера ("0" - свободен, "1" - занят)
D6 - ULINE - для встроенного модема
D0-D5 - всегда в "1"
A7 - "1" - так называемый CPSYS: включение страницы ПЗУ под номером 0 с прошитой CP/M.
"0" - работа в стандартных для Спектрума страницах ПЗУ...
Всего в ПЗУ 27512 таких страниц 4 –
0 - CP/M
1 - TR-DOS 5.03
2 - BASIC 128
3 - BASIC 48
Включение CPSYS также блокирует переключение ПЗУ через #7FFD с сохранением выведенного числа до отключения этого режима. Зато сохраняется возможность доступа к портам TR-DOS (без включения ПЗУ TR-DOS). Для этого просто надо сделать CALL в промежуток от 15616 до 15871, где организованы нужные подпрограммы. Стандартным же образом доступ к этим портам и прекращается - путем выхода за пределы 16383.
В зависимости от режима работы карта памяти выглядит так:
Mode Sp-128 Sp-48 TR-DOS CP/M-sys CP/M-users
ROMs ROM2=0 ROM2=1 ROM2=0(!) ROM2=x ROM2=x
#0000 ROM-2 ROM-3 ROM-1 ROM-0 RAM-0
#4000 RAM-5 RAM-5 RAM-5 RAM-5 RAM-4
#8000 RAM-2 RAM-2 RAM-2 RAM-2 RAM-2
#C000 #7FFD-pgs #7FFD-pgs #7FFD-pgs RAM 1 or 3 RAM-3
Порт in/out #FA (выборка: %nnnnnnnn nnnnn0n0) - идет на внешний разъем - и представляет собой нечто похожее на системную шину:
Число выводимое/вводимое в/из него это D0-D7, а число выведенное в порт принтера #FB - это шина адреса A0-A7. К этому порту подключался программатор UNIPROG той же фирмы МикроАРТ.
Порт out #7FFD (выборка: %0nnnnn1n nnnnnn0n) - такой же как и в других Спектрумах:
D0-D2 - выбор одной из восьми страниц по 16Кб из 128Кб по адресу #C000.
D3 - номер видеостраницы
D4 - выбор одной из двух страниц ПЗУ: при 0 - BASIC-128, при 1 - BASIC-48
D5 - при равенстве 1 - блокирует порт #7FFD для совместимости со Спектрумом-48.
D6-D7 - не используются.
Порт in #7FFD (выборка: %0nnnnn1n nnnnnn0n) - для встроенного модема:
D0 – BELL
D1-D7 - всегда в "1"
Порты для AY (#FFFD и #BFFD) также стандартные...
(выборка: %11nnnn1n nnnnnn0n и %10nnnn1n nnnnnn0n соответственно)
Все остальные дополнительные порты образуются из порта #FD плюс
обнуление A9, что приводит к зависанию компьютера при использовании "половинки" #FD при переключении памяти и выводе звука на AY в программах для Пентагона... "Вылечил" тумблером, отрубающим A9 когда надо вручную...
Вот эти порты:
Порт out #7DFD (выборка: %0nnnnn0n nnnnnn0n) - порт палитры:
какой цвет из 16-ти в данный момент выводится на монитор (то есть лежит на шине данных контроллера графики), тот и подлежит замене. То есть это или текущий цвет бордюра, или текущий выводимый атрибут (или INK, или PAPER - в зависимости от того. Был ли установлен бит пикселя или нет).
D0-D5 – BRGbrg
Все биты цвета инверсны!!! То есть 0 - цвет включен, 1 - выключен.
brg - цвета с пониженной интенсивностью, раза в два тусклее цвета в режиме BRIGHT 0.
BRG - цвета обычной яркости - BRIGHT 0
При включении одновременно битов BRG и brg получается цвет повышенной яркости - BRIGHT 1.
Таким образом, каждый цвет из RGB имеет 4 градации яркости - от черного до BRIGHT1. Путем комбинации этих 6 битов и получаем 64 самых разнообразных оттенка.
Порт in #7DFD (выборка: %0nnnnn0n nnnnnn0n) - чтение с АЦП (covox наоборот):
D0-D7 - данные.
Порт out #FDFD (выборка: %1nnnnn0n nnnnnn0n) - системный:
D0-D1 - переключение расширенной памяти до 512Кб
D2 - ROM-диск, включение дополнительных 4-х страниц пзу, если в компе стоит не 27512, а 271000, а уж что ты туда прошьешь... Располагаются выше основных четырех страниц. В ATM-2 для использования этого наворота в CP/M прошит драйвер, а в ATM-1 "забыли"... Типа крутись сам...
D3 - CPNET - для нереализованных сетевых возможностей... Только лишь будучи установлен, приводит к зависанию при попытке обратиться к TR-DOS, ибо в этом случае при попытке обратиться в промежуток адресов РЗУ #3Dxx происходит переход не в ПЗУ TR-DOS (страница 1 в ROM-прошивке), а в ПЗУ CP/M (страница 0 в ROM-прошивке). В свое время авторы ПЗУ планировали вставить туда перехватчик обращений к портам TR-DOS, но так и не довели дело до конца, а аппаратная «мулька» осталась... Поэтому всегда это сигнал надо держать в "0"
D4 – TON
D5 – TNAB
эти биты для модема...
Порт in #FDFD (выборка: %1nnnnn0n nnnnnn0n) – НЕЗАДЕЙСТВОВАННЫЙ. Сигнал выборки на схеме дешифратора присутствует, но никуда не ведет. Теоретически возможно использовать под свои нужды.
Порты in/out #xF (выборка: %nnnnnnnn XXXnnn11) – порты BETA-disk интерфейса (#1F, #3F, #5F, #7F и #FF) – ТЕНЕВЫЕ.
Максагор, NedoPC group
ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
[ZX rulezzz 4reva!!!]
http://atmturbo.nedopc.com
http://vk.com/atmturbo
http://maksagor.livejournal.com
http://moskprf.ru
[СССР][Коммунизм][КПРФ] ну [ZX], естественно...
Del
Последний раз редактировалось апро; 30.03.2017 в 23:39.
CodePlex закрывается.
ZXMAK2 будет на GitHub переезжать?
подкажите, можно ли как-то запустить картридж игры The Sword of Ianna на ZXMAK2?
стандартные картриджи типа Panama Joe (размером 16,384 байт) удавалось запустить переименовнием их в 48.rom, закидыванием в архив roms.pak/ZX048 и переключением модели на ZX Spectrum 48.
а вот как быть The Sword of Ianna? картридж весит 524,288 байт.
Последний раз редактировалось abelenki; 01.10.2017 в 10:50.
инфа есть как переключать страницы?
Там, в общем, codeplex.com помер, сейчас работает только на чтение.
Я выдрал оттуда репозиторий со всеми коммитами и сконвертил в git. "Выдрал" - это самое подходящее слово, потому что из-за невероятно странной логики работы TFS с регистром в файловых именах и ещё более странной codeplex-овской схемы сопряжения TFS с svn сделать это нормальным путем - через "git-svn clone" оказалось невозможно.
На гитхабе уже было несколько зеркал, но все они представляют собой лишь снапшот определенной ревизии. Тут же вся история сохранена полностью. 1000 с лишним коммитов, жалко терять. ZXMAK, если будешь переезжать на гитхаб - форкай, сэкономишь время.
https://github.com/atsidaev/ZXMAK2
Плюс взял на себя наглость собрать рабочий эмуль из последней версии, что была в оригинальном репозитории. Там со времён последнего релиза было много изменений.
https://github.com/atsidaev/ZXMAK2/r...g/v2.9.2.40437
Последний раз редактировалось Eltaron; 24.01.2018 в 19:27.
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
а что вообще случилось, куда делся автор ?
также как и Кладов - потерял интерес, или что-то другое ?
Так ядро работает отлично, и 48К-128К модели сэмулированы. Это то, чего хватает 95% пользователей. Или разве остались какие-то проблемы?
У меня, к примеру, других эмулей даже и не стоит.
А эмуляцию других клонов или периферии можно реализовывать и без автора. Там же очень приятная плагинная архитектура, где наружу торчит этакий ZX-BUS.
Да и в целом внутри всё хорошо распилено на блоки и уровни абстрацкии. Сорцы и доступны, и понятны. А у Кладова совсем наоборот, и непонятны, и недоступны
Граф Дракула наш кумир, патамушта он вомпир!
VKINK 9 : BORDER NOT PI
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)