Привет!
>> смысл запуска timer.exe в том. что он показывает время исполнения команд в на разнгых частотах в разной
>> памяти (озу и кэш). результаты с железного Спринтера дадут почву к размышлению о том, что как в эмуляторе
>> эмулируется работа с памятю. сейчас есть версия, что нет эмуляции вэйтов.
>>
>> таймер может показать разницу в исполнении в озу и в кэше.
Хорошо, ради благого дела:
Code: Select all
*** Test timing CMOS ***
Turbo ON
INC/DEC HL in Main RAM: 9.607 MHz in 32 CMOS Second
PUSH/POP in Main RAM: 8.171 MHz in 34 CMOS Second
INC/DEC HL in FastRAM: 20.419 MHz in 36 CMOS Second
PUSH/POP in FastRAM: 20.419 MHz in 38 CMOS Second
Turbo OFF
INC/DEC HL in Main RAM: 3.522 MHz in 40 CMOS Second
PUSH/POP in Main RAM: 3.522 MHz in 42 CMOS Second
INC/DEC HL in FastRAM: 3.522 MHz in 44 CMOS Second
PUSH/POP in FastRAM: 3.522 MHz in 46 CMOS Second
*** More long pauses ***
Turbo ON
INC/DEC HL in Main RAM: 9.95 MHz in 48 CMOS Second
PUSH/POP in Main RAM: 8.14 MHz in 50 CMOS Second
INC/DEC HL in FastRAM: 20.94 MHz in 52 CMOS Second
PUSH/POP in FastRAM: 20.94 MHz in 54 CMOS Second
Turbo OFF
INC/DEC HL in Main RAM: 3.49 MHz in 56 CMOS Second
PUSH/POP in Main RAM: 3.49 MHz in 58 CMOS Second
INC/DEC HL in FastRAM: 3.49 MHz in 00 CMOS Second
PUSH/POP in FastRAM: 3.50 MHz in 02 CMOS Second
>> есть так же версия о том (я лично не знаю так это или нет), что дешифратор Спринтера копируется в озу и далее
>> работа уже через него с портами. поскольку память вейтовая, то и доступ к портам медленный.
Если ты имеешь ввиду страницу дешифрации портов, насколько я помню имеется такая #40 и она принадлежит ОЗУ.
Писал себе шпаргалку когда-то по этой теме:
Code: Select all
-------------------------------------------------------------------------------
VI> У тебя в документации на Спринтер (файлик "INFO_012.TXT")
VI> говорится об адресах DCP. Это просто комбинация битов, поступающих
VI> на вход м/с дешифратора или что-то другое ?.
Ivan Mak:
DCP - это фактически ОЗУ, на адреса которого подаются часть адресов с процессора
и некоторые другие сигналы. С выхода ОЗУ получается код, который
соответствует некоему устройству.
-------------------------------------------------------------------------------
Номер страницы дешифрации портов равен 40h. Эта страница состоит из 4 карт памяти. Переключение на одну из 4-х карт происходит через системный порт 7Ch/3Ch записью соотв. значений 04h,07h,14h,1Ch. Начальное значение 04h.
Назначение порта производится записью соответствующего байта в карту памяти. Так, для того, чтобы назначить на некий адрес, скажем 7785h некий порт, первым делом следует убедиться, что этот порт не пересекается ни с какими другими портами. Это можно узнать, прочитав в карте памяти по адресу, соответствующему этому порту. Если в этом месте нуль, значит порт не занят и его можно использовать для своих целей. Однако может оказаться, что не занятый порт относится к одному из внутренних портов кристалла Z84C15, а их нельзя использовать. Об этом надо помнить.
И так, из назначаемого адреса XXXX надо выделить следующие биты 0,1,2,7,13,5,6,14,15. Для 7785h (0111011110000101) это будет:
Биты Значение
1. 0 1
2. 1 0
3. 2 1
4. 7 1
5. 13 1
6. 5 0
7. 6 0
8. 14 1
9. 15 0
10. 9 x не имеет значения
11. 10 x не имеет значения
12. 11 x не имеет значения
Получился рассчитанный адрес 009Dh (если вместо "x" поставить нули). По этому смещению, от начала карты памяти, необходимо посмотреть значение, чтобы узнать, свободен порт или нет.
>> про слайдшоу уже понял, ожидаемо, спасибо.
Ok. Ожидаемо, но надежда уходит последней. Конечно лучше было бы, чтобы хоть какое-то видео нормально крутилось. Видимо оно (видео/анимация) для Спринтера заказано.
>> своего спринтера я видимо криво собрал, он здох через пару месяцев после сборки и его проще теперь выкинуть.
Понимаю тебя. Я тут как-то не так давно паял видео-dac "adv7125" (8-ми битные шины R,G,B цветов) на свою платку к дев-борде Altera DE1, как и у ПЛИС, там шаг между пинами 0.5мм - опыта нет в таких делах, так я запарился центровать ее и после запаять без припойных перемычек. На ютубе есть видео по такой теме, но без опыта пайки подобных штук никак не обойтись, хоть тысячу видео пересмотри. А ты может плохо промыл плату, типа активный флюс сделал свое дело...
>> я нашёл ещё пустую платку, буду покупать и собирать по новой всё.
А есть возможность не трахаться с 2002-м или 2003-м Спринтерами, а собрать 2000-й ?. Правда на счет доступной прошивки к нему я не уверен, есть она в общедоступных сорцах или нет. Там хоть железо работает (озу не шумит на шинах и все-такое), несмотря на то, что клава с din-портом и мышка com-овская. У Ивана-то не осталось 2000-х Спринтеров ?. Кста, сейчас глянул на алиэкспрессе память "AS7C1024-12JC", там она за 500-600 руб за партию 10 шт. Вроде как народ (из zx.pk.ru на "втором пришествии") жаловался на ее труднодоставаемость.
>> есть мысль, перенести либо дос либо дешифратор в кэш.
Дерзай и расти над собой
>> и ещё спросить хотел: продай своего спринтера?
Не продам. Это ж память о тех временах, как бальзам на сердце

Я изредка включаю его. Кроме того из продвинутой 8-ми битки, у меня только он. Орион-ПРО не в счет
>> а ещё - какие исходники есть у тебя твоих и не твоих наработок?
Есть сорцы от Игоря Жадинеца (из Беларуси) - его OrgAsm (ассемблер) и Demon (дебаггер). Сорцы оргасма не последней версии. Больше нету ничего.
>> не думал фара допилить?
Нет. В те времена я хотел его вообще заново переписать, чтобы он ничего своего в окружение ДОС-а не добавлял, а пользовался только тем, что есть в системе. Сейчас у меня в голове свой компьютер
>> дропбокс это типа аналог яндекс диска. или наоборот. не важно. там у меня профинское хранилище.
>> ещё куски спринтера туда вот поскидывал.
Ясно.
P.S. До кучи, проверил скорость копирования с твоей ДОС. Винт IBM 6-ти гиговый, с диска "C:" на "D:" копировал (в FN) файл размером 1.434.010 байт - на прежней ДОС копирование заняло 60 сек, на твоей ДОС заняло 24 сек.
От Ивана:
------------------------------------------------------------
В стандаpтной конфигуpации скоpость HDD поpядка 600кб/сек, опpеделяется
командой INI и вайтом во вpемя цикла чтения/записи поpта.
. . . .
в экспеpиментах она уже достигала 2.1Mb сек...
------------------------------------------------------------
P.S.S. Попробывал кусок от твоего паровозного FLC-файла, размером в 1.4 метра (80 кадров) проиграть с RAM-диска, первое проигрывание несколько медленнее последующих (флик-плейер играет по кругу). Лучше чем с винта, но все-равно затыкается. Вроде нормально начинает крутить, но на каждом ~2-3 кадре (на глаз) происходит затык. Думаю это время подкачки видео с диска в плейер. Если хочешь глянь сорцы плейера, на сколько кадров там буфер, будешь точнее знать на сколько кадров хватает нормальной прокрутки.
Утилку на Си писал себе (совсем простенькую) по теме дешифрации портов, ниже ее сорц. Прикрепить здесь готовый exe-шник - облом (спасибо Шаосу за наше счастливое детство), поэтому приходится извращаться.
Code: Select all
#include <stdio.h>
// Вычисленный адрес
struct {
unsigned a1 : 1; // 0-й бит
unsigned a2 : 1; // 1
unsigned a3 : 1; // 2
unsigned a4 : 1; // 7
unsigned a5 : 1; // 13
unsigned a6 : 1; // 5
unsigned a7 : 1; // 6
unsigned a8 : 1; // 14
unsigned a9 : 1; // 15
} addr;
// Введенный адрес
struct {
unsigned a1 : 1; // 0-й бит
unsigned a2 : 1; // 1
unsigned a3 : 1; // 2
unsigned a4 : 1;
unsigned a5 : 1;
unsigned a6 : 1; // 5
unsigned a7 : 1; // 6
unsigned a8 : 1; // 7
unsigned a9 : 1;
unsigned a10 : 1;
unsigned a11 : 1;
unsigned a12 : 1;
unsigned a13 : 1;
unsigned a14 : 1; // 13
unsigned a15 : 1; // 14
unsigned a16 : 1; // 15
} addr1;
void main()
{
printf("Утилита вычисления адреса смещения для карты памяти в странице\n");
printf("дешифрации портов Спринтера при назначении адреса нового порта.\n\n");
printf("Введите hex-адрес (от 1 до 4 цифр): ____\b\b\b\b");
scanf("%4X",&addr1);
if(addr1.a1 == 1)
addr.a1 = 1;
if(addr1.a2 == 1)
addr.a2 = 1;
if(addr1.a3 == 1)
addr.a3 = 1;
if(addr1.a8 == 1)
addr.a4 = 1;
if(addr1.a14 == 1)
addr.a5 = 1;
if(addr1.a6 == 1)
addr.a6 = 1;
if(addr1.a7 == 1)
addr.a7 = 1;
if(addr1.a15 == 1)
addr.a8 = 1;
if(addr1.a16 == 1)
addr.a9 = 1;
printf("Вычисленный hex-адрес: %04Xh\n",addr);
}