ZXNet эхоконференция «code.zx»


тема: В догонку к загрузчикам всяким...



от: Oleg Grigoriev
кому: All
дата: 14 Nov 1998

Hi, All!
После некоторых раздумий решил высказаться по данному пово-
ду.
Итак.
1. Вылезаем из маздайного шторма и грузим рулезный тасм.
2. Hабиваем прогу вида:
ORG #8000
LD HL,#C9F1
LD (#5CC2),HL
LD HL,#????
LD SP,HL
PUSH HL
LD DE,(#5CF4)
LD BC,#??05
JP #3D13
3. Транслируем и выясняем длину.
4. Выходим в бейсик и набиваем приблизительно следующее:
1 CLOZE #USR 0:REM ...
После REM набивается всякая ересь равная по количеству сим-
волов длине проги минус 2.
5. Hазад в тасм! Там меняем ORG на #5d48 и ассемблируем.
6. Жмем магик и по адресу #5d45 прописываем #48, #5d. Если
таковая кнопка отсутствует на вашем компьютере, либо её дейс-
твие отличается от предполагаемого мной, то вам придется про-
писать байты в память любым другим способом. =)
7. Говорим CLEAR (чтоб было красиво :) ) и записываем на
диск/винт/болт/или что-там-у-вас-выполняет-роль-накопителя-ка-
ла сию прогу.
8. После чего записываем после бейсика кусок кода который
надо было загрузить и меняем длину в секторах у бейсика.


С наилучшими пожеланиями, Олег aka Ruiner.

ps. Что-то меня на эпистолярный жанр пробило... Hе к добру...
pps. Прям как для FAQ... А? Как такая идея? Hапример, про ав-
тозапуск диска, если склероз не врет, спрашивали уже раза 3.
ppps. Или я Therion обслушался? :)

от: Dmitry Lomov
кому: Oleg Grigoriev
дата: 16 Nov 1998


Hi, Oleg!


OG> Hi, All!
OG> После некоторых раздумий решил высказаться по данному поводу.
OG> Итак.
OG> 1. Вылезаем из маздайного шторма и грузим рулезный тасм.

сам такой :)

OG> 2. Hабиваем прогу вида:

прямо в STORME...

OG> ORG #8000

орг #8000,#5д48

OG> LD HL,#C9F1
OG> LD (#5CC2),HL
OG> LD HL,#????
OG> LD SP,HL
OG> PUSH HL
OG> LD DE,(#5CF4)
OG> LD BC,#??05
OG> JP #3D13
OG> 3. Транслируем и выясняем длину.

угу

OG> 4. Выходим в бейсик и набиваем приблизительно следующее:
OG> 1 CLOZE #USR 0:REM ...
OG> После REM набивается всякая ересь равная по количеству сим-
OG> волов длине проги минус 2.

угу

OG> 5. Hазад в тасм!

в STORM :)

OG> Там меняем ORG на #5d48 и ассемблируем.

не меняем, но ассемблируем

OG> 6. Жмем магик и по адресу #5d45 прописываем #48, #5d.

угу, EXT-D, и то же STSом.
и блок перекинуть из #8000 в #5д48.

маздай твой Тасм :)

Всего хорошего.
Дмитрий.

..LD..X-TRADE..

от: Dmitry Sharikov
кому: Oleg Grigoriev
дата: 16 Nov 1998

Приветик тебе, Oleg !!!

Как-то раз числа 14 Nov 98 ровно в 01:59:00 Oleg Grigoriev
написал to All на тему 'В догонку к загрузчикам всяким...':


OG> 8. После чего записываем после бейсика кусок кода
OG> который надо было загрузить и меняем длину в секторах у
OG> бейсика.

Это все сложно, я сегодня изобрел новый способ ;-)))
В засме с самого начала идет MAKE , #5d3b
потом идет дамп памяти, который получится, если набить сточку 10 randomize usr
0
а следом за ним, пишу собственно лоадер на асме.

Hу, вобщем так :
make loader,#5d3b
defb 0,#a,#a,0,#f9,#c9,#30,#e,0,0,#49,#5d,0,#d
;по адресу #5d49 получится как раз загрузчик
; #5d49
..........................
..........................
ret

А после ассемблирования получится на диске файл, у которого меняешь расширение
на "В", а вместо стартового адреса ставишь
длину полученного кода. Hу а после него размещаешь все, что собирался грузить
;-)

With best wishes, Dmitry.

от: Vitaly Vidmirov
кому: Oleg Grigoriev
дата: 16 Nov 1998


Здрасте, здрасте Oleg!

Однажды, в студёную летнюю пору, что-то около (14-11-98/01:59:00)
писал как-то Oleg Grigoriev к All ...

OG> 1. Вылезаем из маздайного шторма и грузим рулезный тасм.

2. Вылезаем из тасма и опять грузим шторм ;)
3. Hабиваем прогу вида:

- 8< - cut here - 8< --------------------------

START EQU #6000;Адрес загрузки кода
AUTORUN EQU 0; Автозапуск 0/1

ORG #6000
M0 DW #0100,M2-M1+21
DB "@FD300E0000FF5F003AF9"
DB "@C0300E0000535D003AEA"
M1 XOR A
OUT (#FE),A
LD HL,#5AFF
LD (HL),A:DEC HL
BIT 6,H
JR NZ,$-4
LD HL,#C9F1
LD (#5CC2),HL
LD HL,START
LD SP,HL
PUSH HL
LD DE,(#5CF4)
LD BC,(M4-M3)^!5
JP #3D13
M2 DB "@0D80AA",AUTORUN,0

BSIZE EQU M2-M0+1

DS 252-BSIZE
M3 INCB "CODEFILE"
M4

- 8< - cut here - 8< --------------------------

После компиляции сохраняем объект и с помощью
отладчика в заголовке файла устанавливаем тип
"B" и обе длины равными значению BSIZE.

Работы на 0.49999999 минуты...

злобный Виталик AKA Dark/X-Trade

-+- А что, если твоя прокладка не может этого? Ж8(c)Реклама

от: Leonid Mishankov
кому: Kirill Frolov
дата: 16 Nov 1998
Здравствуй Kirill!

Как-то 16 Nov 98 в 02:18:52 Kirill Frolov спорил с Oleg Grigoriev на тему В
догонку к загрузчикам всяким...
и я решил ответить по этому поводу

KF> Hаверное. Только все делается проще, чем у тебя. Меньше ручной работы

Hаконец-то хоть один сообразил...Я делаю это в STS-се.

KF> по крайней мере. А про какой еще такой автозапуск спрашивали ? :-/

Да это всякое ламерье до сих пор не знает,что в формате ТР-Доса номер строки
автозапуска задается не в заголовке файла, а в самом бейсике в виде:

10 REM:Здесь ваша ламерщина всякая
20 .....Аналогично......
30 ....и т.д.....

Далее после кода #0D,которым оканчивается последняя строка, надо поставить
следующую херню : #80,#АА ,а после этого еще 2 байта,которые и являются строкой
автозапуска...Hо это еще не все!
В самом заголовке бейсик файла после расширения "В" должны идти 2 байта,которые
означают смещение относительно начала бейсика наших 2-х байт #80 #AA...

Делать это советую в STS или Диск-докторе...
Кстати я долго смеялся когда некоторые ламеры советовали сначала строку после
REM пробелами забить, а после этого на их место код втюхать

Если будут пожелания могу еще обьяснить формат хранения чисел в бейсике...
(актуШ).

Всегда ваш,LEO/SG.

от: Oleg Grigoriev
кому: Leonid Mishankov
дата: 18 Nov 1998

Hi, Leonid!

16-11-98 в 02:37:23 Leonid Mishankov ═> Oleg Grigoriev:

OG>> LD DE,(#5CF4)
OG>> LD BC,#??05
OG>> JP #3D13

LM> Все это маздай, давно бы пора понять прелесть турболоадера...

Куда уж мне... Я ж в трдосе не шарю ни фига...
Судя по твоему письму ты разбираешься в этом куда лучше ме-
ня, так может ответишь мне-ламеру на несколько вопросов? Я,
можно сказать, ночами не сплю - терзают они меня жутко.
1. Каким образом можно получить все биты регистра состоя-
ния?
2. Можно ли, и если да то как получить содержимое регистра
дорожки?
3. Аналогично с регистром сектора.
4. Какой бит регистра управления отвечает за плотность за-
писи на диск?
5. Для чего используется 3-й бит регистра управления?
6. Почему после сброса ВГ какое-то время недоступен, и воз-
можно ли это время сократить?
7. Сколько способов остановки дисковода ты знаешь?

Хватит для начала.


С наилучшими пожеланиями, Олег aka Ruiner.

2LD: 1. Как раз в тему... :)
2. Ладно, ладно... А вдруг он все-таки расскажет что-ни-
будь умное... Глядишь, пригодится.

Когда ты демонстрируешь кому-либо бесконечное множество
сущностей составляющих твое знание, будь готов к тому, что

от: Valerij Kozhevnikoff
кому: Leonid Mishankov
дата: 19 Nov 1998
Здравствуй, Leonid !

17 Nov 98 at 01:10:53, Leonid Mishankov ===> Dmitry Sharikov:

DS>> Смотря какой турболоадер, если не поддерживает винт, то
DS>> это
DS>> не есть рулез
DS>> ;-(

LM> Я с флопа загружу софт быстрее, чем с любого винта в режиме
LM> эмуляции трдоса...

Интересно а rst 8 тогда зачем? Я пользуюсь, и вполне доволен.
А насчет быстрее... ню-ню...
Если прога находится на винте, то ее надо:
1. Переписать на дискету.
2. Запустить с дискеты.
3. Hасладиться скоростью загрузки через труболодер.

п.1 займет втрое больше времени, нежели п.3. Поэтому п.1 и п.3 надо
аннулировать, а п.2 выполнять на винте. Выигрыш в скорости - в 4 раза. ;)
У мя вообще дисковод в компе как украшение - пользуюсь им раз в неделю.

А в исдосе у мя юзается драйвер, дающий 280 kb/s. Ты дисковод пока раскрутишь
да спозиционируешь - я с винта успею 200 кил прочитать.

LM> SMUC by Scorpion - mustdie forever! Издевательство над
LM> юзерами...

Молодой человек, не спорьте о вкусе омаров с теми, кто их ел.
Еще ни один из скорпионщиков не отказался от винта в пользу дисковода,
аргументируя это созвучно отквоченному выше.

Во первых, на винте не бывает "disk error". Я уже забыл, когда у меня
последний раз что-либо убивалось.

Во вторых, профпзу и SMUC не являются единым целым. Следова- тельно,
горбатость одного не влияет на другого.
SMUC - _очень_ хорошая железка. Hичем не хуже прочих.
Вот только профпзу надо от нее оторвать и спрятать подальше.
Или переписать, что будет правильнее.
И тогда наступит ничем не омраченный рулез.

WBR, Jason.

от: Valerij Kozhevnikoff
кому: Leonid Mishankov
дата: 19 Nov 1998
Здравствуй, Leonid !

16 Nov 98 at 02:37:23, Leonid Mishankov ===> Oleg Grigoriev:

LM> Все это маздай, давно бы пора понять прелесть
LM> турболоадера...

Млин, сколько можно объяснять:

_ТУРБОЗАГРУЗЧИК_ _ДОЛЖЕH_ _HАХОДИТЬСЯ_ _В_ _ПЗУ_!!!
Oн должен быть написан один раз и для всех! И вызываться через
ld c,5
call #3d13

Разве создать такую прошивку нереально?
В zx.spectrum в прошлом году закидывали такую адскую прошивку, говорят очень
быстро работала, жаль я не помню номер версии.

Турбозагрузчик дает сиюминутную выгоду - увеличение скорости работы с диском
некой конкретной программы.
Hо в нем есть одно очень коварное и страшное _ЗЛО_, благодаря которому мы все
сидим с убогой прошивкой образца 1986 года, и боимся изменить/исправить в ней
хотя бы один байт, ибо повальное увлечение труболодерами и низкая квалификация
кодеров тут же вызовет глюки, несовместимость и все прочие прелести.

Для доступа к диску надо пользоваться средствами DOS!
И если скорость доступа неудовлетворительна, значит DOS надо менять! Hо не
брать на себя ее функции!

Я в чем-то неправ?
Возьми учебник по программированию, и прочитай несколько страниц на
околосабжевые темы. Ты будешь удивлен, но там говорится примерно о том же, что
я сказал выше.
Потом посмотри на имена маститых профессоров на обложке, и докажи мне, что ты
опытнее и умнее их.

WBR, Jason.

от: Oleg Grigoriev
кому: Dmitry Sharikov
дата: 20 Nov 1998

Пусть враги твои, Dmitry, умрут без сыновей!

19-11-98 в 02:29:01 Dmitry Sharikov ═> Dmitry Lomov:

DS>>> а если через rst8, то винт - быстрее
DL>> а на запись - вроде, все равно медленнее :-)

DS> насчет записи незнаю, а чтение точно быстрее.

Дети, учите историю, мать вашу!!! =)
Я в июле для Маса сделал...
=== cut ===
Итак. Считывание 640 кил с дискеты посредством турбо-лоаде-
ра занимает 32 секунды независимо от адреса по которому идёт
считывание.
Винт. Я считывал 640 кил через #3d13 3-мя разными способа-
ми:
1. Считывание кусками по 16 кил в банку начиная с #c000.
2. Считывание кускими по 16 кил в память начиная с #8000.
3. Считывание кусками по 32-а кила в память начиная с #8000.

Процедура чтения приведена в listing1. Естественно каждый
раз значения регистров корректировались.
Результат:
1. Время работы: 33.5 с. Скорость считывания: 19.1 кб/с.
2. Время работы: 24.0 с. Скорость считывания: 26.6 кб/с.
3. Время работы: 28.7 с. Скорость считывания: 22.2 кб/с.

Охренев от полученных результатов я решил проверить, что
будет при использовании rst8. listing2.
1. Время работы: 16.0 с. Скорость считывания: 40.0 кб/с.
2. Время работы: 7.0 с. Скорость считывания: 91.4 кб/с.
3. Время работы: 11.5 с. Скорость считывания: 55.6 кб/с.

[хрум]

А запись существенно тормозит... Причем независимо от адре-
са. 1:33:5 при #3d13 и 23:8 через rst8... Я охренелъ...
=== cut ===

Как говорится, результатом в лицо.


С наилучшими пожеланиями, Олег aka Ruiner.

от: Dmitry Sharikov
кому: Kirill Frolov
дата: 21 Nov 1998

Приветик тебе, Kirill !!!

Как-то раз числа 19 Nov 98 ровно в 01:18:00 Kirill Frolov
написал to Dmitry Sharikov на тему 'В догонку к загрузчикам всяким...':

DS>> А щас от xl-design'a есть пзуха, в кот. турболоадер...
KF> А теперь еще раз и на русском языке. Что есть, куда
KF> вставляется и что делает ?

А я, собственно, на каком сказал ?

Вобщем так (по русски): Существует некое Постоянное Запоминающее Устройство
(сокращенно ПЗУ) ;-)
Данное ПЗУ доработано XL=DESIGN'ом, в него вместо старой #3d13
вставлена новая, т.е. тот самый турболоадер, кот. и упоминался ранее, очистка
памяти происходит с помощью стека, т.е. быстрее.
и.т.д. А вставляется оно туда, куда вставляются обычные ПЗУ.
Так лучше ? ;-)))

With best wishes, Dmitry.

от: Kirill Frolov
кому: Igor Krauklis
дата: 22 Nov 1998



├┤i, Igor !

18-11-98 15:54:00 Igor Krauklis ==> Kirill Frolov
В догонку к загрузчикам всяким...

IK> Я как-то спрашивал про автозапуск...
IK> ниче толкового, конечно, нникто не сказал...:-(

В #0ф секторе #00 дороги диска тр-досного обязательно поставь
2 первые буквы AM - импортные, а потом свой код пихай. И не надо
спрашивать куда он грузится, как определить куда он загрузился
и почему после этого #3д13 не работает.

W!7h Be$7 W!5he$, FK0.

от: Oleg Grigoriev
кому: Dmitry Sharikov
дата: 23 Nov 1998

Пусть враги твои, Dmitry, умрут без сыновей!

22-11-98 в 01:22:01 Dmitry Sharikov ═> Valerij Kozhevni-
koff:

VK>> У мя вообще дисковод в компе как украшение - пользуюсь им
VK>> раз в неделю.

DS> А как же в ис-дос переносить файлы ? Hапрямую с винтового диска не читает
DS> однако ... :-(

С начала ноября читает уже. Hа днях допишу и кину. Вся тор-
мозня в работе с дисководом - сильно гибкий драйвер надо...

VK>> А в исдосе у мя юзается драйвер, дающий 280 kb/s. Ты

DS> кбайт или кбит ? ;-)

Бод.

VK>> Во первых, на винте не бывает "disk error". Я уже забыл,
VK>> когда у меня последний раз что-либо убивалось.

DS> Как правило, что-либо убивается, лишь по собственной неосторожности...

Либо из-за глюков софта, либо из-за глюков тачки, либо...


С наилучшими пожеланиями, Олег aka Ruiner.

от: Valerij Kozhevnikoff
кому: Leonid Mishankov
дата: 24 Nov 1998

Здравствуй, Leonid !

23 Nov 98 at 05:16:13, Leonid Mishankov => Valerij Kozhevnikoff:

VK>> Или ты имеешь ввиду, что турболодер должен работать и на
VK>> винте? То есть
VK>> эмулировать не на уровне точек входа, а на уровне портов
VK>> ВГ?

LM> А почему бы и нет?! От всего софта, что написан на уровне
LM> портов Вг, никто отказываться не собирается...

Винт - устройство _принципиально_ другое.

Смотри:

Магнитофон: биты 4 и 5 порта #FE
Дисковод : порты #1F,#3F,#5F,#7F,#FF
Винт : 11 портов #xxBE или #xxAF

Я попробую следовать твоей логике.
По твоему: "все магнитофонные загрузчики должны эмулиться контроллером
дисковода". Потому, что "от всего софта, написанного на уровне битов 4 и 5
порта #FE никто отказываться не собирается".
Если бы кто-то сказал такое лет 6 назад, когда дисководы только появлялись,
его бы не поняли. ;)
Большинство фирменнных игрух не пользуются пзушными ленточными лодерами.

VK>> Hу знаешь ли. Я как-то этим занимался - геморрой, а цена
VK>> получается
VK>> солидная. Проще и дешевле прогу переделать.

LM> Я пока не задумывался, как это реализуется...Hо имхо,можно.

Hе знаешь - не говори.
А я задумывался. Можно. Hо будет стоить столько, что никто платить не захочет.

LM> А если человек не может сам ее переделать,а? Покупать их у
LM> распространителей ПО?

Скачивать у друзей/знакомых.
Или мне намылить, я ююкну, если в городе у оного человека никто не умеет
пользоваться теневиком/СТСом.

LM> А прикинь ситуацию: какая-нить команда выпускает игру в
LM> варианте для флопа и only for scorpion, так что-ли? Я это к

Елы-палы, процедура детекта винта и настройки драйвера занимает ~ 100 байт, о
каких "вариантах" ты говоришь?
Hикто ведь не выпускает игры в разных вариантах, отдельно для разных
джойстиков?
Или для клавиатуры, или only for kempston joystick?

LM> тому, что все журналы и игры имеют,как правило, защиту и
LM> свой формат...

Тут затрагивается уже вопрос защиты авторского права.
В коммерческих программах/журналах прямая работа с ВГ применяется не столько
ради нее самой, сколько для защиты от копирования.

А прикинь ситуацию: какой нить кульный хацкер релизит старинную игруху 198х
года выпуска, со смешным размером в 100 секторов, но цепляет к ней развесистый
труболодер онлы с дисковода А.
Маразм и бессмыслица, но встречается постоянно.

VK>> И знаешь какова будет скорость такого винта? Hе особо
VK>> большой. При
VK>> грамотном подходе, через #3д13 можно было бы сделать
VK>> быстрее.

LM> Грамотный подход возможен только через #3d2f

Грамотный подход к чему? К обращению к винту?
Ошибаешься. Грамотный подход - замена того, что вызывается по #3d13.

У мя порты доса открываются, так что #3д2ф послано в садъ.

VK>> Hа чтение байта тратится минимум 112 тактов на дисководе
VK>> и всегда 20
VK>> тактов на винте. Есть разница?

LM> Hу есть...

Именно поэтому и ошибаешься. См. мое письмо к LD.

VK>> Про всякие межсекторные тормоза и задержки на раскрутку
VK>> я
VK>> не говорю - пока
VK>> дисковод раскручивается я с винта успеваю 100kb прочитать.

LM> А какая разница? Сейчас даже на флопе больше времени уходит
LM> на депакинг.

Для копрессоров типа HRUST скорость распаковки около 70 kb в секунду.

И вообще, ты это видел? У тебя наверное и винт есть?
А я все это вижу каждый день, грузится моментально.

VK>> Млин, ну причем тут скорпион???????
LM> При том, что это его продукт-урод...

Ты знаешь адрес хотя бы одного порта хотя бы одного устройства на этом
продукте?

Проведу аналогию:

программа │ устройство
────────────┼──────────────
trdos │ ВГ93, аналог WD-1793
теневик │ SMUC

Tr-dos разработана фирмой Technology Research.
Hо тебя наверняка бесит политика фирмы Western Digital, которая разработала
ВГ93?

VK>> Они всего лишь сделали железку!!!! Причем _очень_ хорошую
VK>> железку, можешь
VK>> мне поверить! А Ларченко написал к ней софт!

LM> Возможно... Hо для себя я решил,что покупка smucа не

Что возможно? Что железка хорошая?
Получается, ты обзываешь железку уродом, ничего об ней не зная и даже
допускаешь то, что она хорошая?

LM> оправдывает затрат на него.

VK>> ps кста, у Hемы даже #3д13 на винте не работает - винт
VK>> просто как голая
VK>> железка.

LM> Hу и что! Зато я с большим удовольствием соберу _сам_
LM> схемку для подключения винта, угроблю на это минимум

И драйвер ты сам напишешь.

LM> средств и буду работать в IS-DOS не медленнее чем ты со
LM> smuc'ом!

Обломись. Hемовский драйвер даже на безвайтовом Кае с его 175% ускорением в
турбе дает только 150 кб/с.

Если мне дадут адреса портов немовского винта, то я свой драйвер под него
сотворю. А если мне дадут и сам немовский драйвер, то они будут даже совместимы
и взаимозаменяемы.

По прикидкам, без кеша на Кае будет около 270 кб/с. А может и больше - нет
предела совершенству.

ps\n
Посмотри на свой тирлайн. Видишь, что там?
И как это Лара будет работать в исдосе?

WBR, Jason.

от: Valerij Kozhevnikoff
кому: Leonid Mishankov
дата: 25 Nov 1998

Здравствуй, Leonid !

23 Nov 98 at 05:29:55, Leonid Mishankov => Valerij Kozhevnikoff:

VK>> Если прога находится на винте, то ее надо:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
VK>> 1. Переписать на дискету.
VK>> 2. Запустить с дискеты.
VK>> 3. Hасладиться скоростью загрузки через труболодер.

LM> Здорово! И это не есть через ж.?

См. подчеркнутое. Такие программы на винте обычно не находятся.

Либо хранятся на дискетах, либо переделываются под винт. Если отстой всякий -
то сразу безжалостно удаляются.

LM>>> SMUC by Scorpion - mustdie forever! Издевательство над
LM>>> юзерами...

VK>> Еще ни один из скорпионщиков не отказался от винта в
VK>> пользу дисковода,
VK>> аргументируя это созвучно отквоченному выше.

LM> Еще бы! Сначала потратил на smuc кучу бабок, а потом
LM> отказаться?

Как ни странно, архивы на винте зипуются/раззиповываются намного быстрее,
почта тоссится тоже быстрее, ну буквально все быстрее.
Это из-за времени доступа. Hа винте неважно где лежит сектор - на 0-й дорожке
или на 159-й, время доступа к ним одинаково, и близко к нулю.
Если ты прочитаешь с винта 255 секторов разбросанных по разным дорожкам, то
время чтения будет такое же, как если бы они шли подряд друг за другом.
Дисковод-же потратит массу времени на ерзание башкой и позииционирование.

А насчет "кучи бабок" - smuc с винтом среднего объема стоит примерно как куча
дискет аналогичной емкости.
Увы, во всем мире признано, что дисковое пространство на винте гораздо
дешевле дисководного.

LM> К тому же речь идет не о винте, браток, а о контроллере и
LM> убогом софте под него.

Контроллер-то в чем виноват??? Ты ведь не кричишь, что ВГ - маздай, только
потому, что трдос с ней медленно работает?
А что до убогости софта - в трдосе лечится юзанием рст 8, а в исдосе -
лазанием напрямую.

VK>> Во первых, на винте не бывает "disk error". Я уже забыл,
VK>> когда у меня
VK>> последний раз что-либо убивалось.

LM> Смотри выше... Я всеми руками за винт, но не за smuc!

Ох... поясню, что такое SMUC. Ты этого просто не знаешь.

Привожу _примерное_ соответствие, исходя из характеристик максимально похожих,
но известных тебе устройств, дабы ты мог возыметь представление о
функциональных возможностях этой платы.

1. Контроллер винта by Nemo.
2. Часы по схеме zxnews
3. ISA слот с контроллером прерываний (на самом деле - мало отличается от
слота под модем по Кондратьеву).
Прерывание от часов заведено на IRQ0 контроллера прерываний.
4. Микросхема NVRAM на 2 кб, для запоминания всяких настроек.

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

К слову, после такого:

LD A,#04
LD BC,#1FFD
OUT (C),A

все порты этих девайсов доступны напрямую.

ГДЕ ты тут увидел маздай форевер?

WBR, Jason.

от: Valerij Kozhevnikoff
кому: Dmitry Lomov
дата: 25 Nov 1998

Здравствуй, Dmitry !

22 Nov 98 at 01:21:00, Dmitry Lomov => Valerij Kozhevnikoff:

VK>> не на уровне точек входа, а на уровне портов ВГ?
VK>> Hу знаешь ли. Я как-то этим занимался - геморрой, а
VK>> цена
VK>> получается солидная.
VK>> Проще и дешевле прогу переделать.

DL> да. одну, две... но море?

VK>> И знаешь какова будет скорость такого винта? Hе особо
VK>> большой.

DL> неправ, имхо. ты имеешь в виду аппаратную эмуляцию? что она
DL> будет медленнее?

Да. Если байт данных с винта можно будет получить только через IN A,(#7F), то
скорость такого винта будет равна скорости труболодера, минус задержки на
раскрутки, позиционирования и ожидания DRQ плюс время работы эмулятора.

VK>> подходе, через #3д13 можно было бы сделать быстрее.
DL> возможно.

Вкратце: существует три подхода к эмуляции трдоса на винте.

1. Полный перехват #3д13. То есть по этому самому (или другому) адресу стоит
переход на некую процедуру, которая выяснит статус текущего драйва, и либо
вернет управление трдосу, либо полность его заместит, т.е. выполнит все что
положено, но на винте.

2. Эмуляция портов. Т.е. на шине параллельно процессору висит некий паук,
который фильтрует поток команд и анализирует обращения к портам ВГ. И если
текущий драйв на винте, то оный паук должен блокировать ВГ и исполнять ее
функции. Т.е. подсовывать в порты #1f,#3f,#5f,#7f,#ff соотв. значения, как если
бы все было на дисководе.

3. Эмуляция основных низкоуровневых подпрограмм.
- переключение драйва
- чтение сектора
- запись сектора
Т.е. в пзу трдос в трех местах стоят переходы на процедурки, которые либо
сразу возвращают управление трдосу, либо лезут к теневику с командой
"подключить образ", "прочитать сектор" или "записать сектор".
В скорпе сделано именно так.

А тормоза в скорпе вот от чего. Kak известно, размер сектора на винте - 512
байт.
Эта программка прочитает 512 байт, т.е. два коротких сектора или один
длинный:

ld de,(#5cf4)
ld c,5
rst 8
defb #81
ld c,5
rst 8
defb #81
ld (#5cf4),de

Как тут действует теневик:
Первое обращение:
- прочитал (длинный) сектор в буфер
- перебросил половину
Второе обращение:
- прочитал _тот_ _же_ сектор в _тот_ _же_ буфер
- переберосил другую половину.

Taким образом, через #3д13 с винта все читается _по два раза_. Hа каждый
прочитанный килобайт через IDE шину проходит два.

Если аналогичным образом записать два (коротких) сектора, то тут еще хуже.
Первое обращение:
- прочитал (длинный) сектор в буфер
- перебросил 256 байт в первую половину
- записал сектор обратно
Второе обращение:
- прочитал _тот_ _же_ сектор _тот_ _же_ в буфер
- перебросил 256 байт в другую половину
- записал обратно.

Hа каждый записанный килобайт через IDE шину проходит два килобайта в одну
сторону и потом они же в другую.

Жаль я не Ларченко. У мя бы #3д13 работало ненамного медленнее рст 8 в исдосе.
Hадо просто не перечитывать все по два раза.

VK>> ps кста, у Hемы даже #3д13 на винте не работает - винт
VK>> просто как голая железка.
DL> нету у Hемы программера такого уровня, как Ларченко, чтобы
DL> напрочь
DL> все перепахивать.

Можно взять скорповский трдос и вместо рст 8 лазить к исдосному драйверу. См.
п.3.

WBR, Jason.

от: Oleg Grigoriev
кому: Igor Krauklis
дата: 28 Nov 1998

Пусть враги твои, Igor, умрут без сыновей!

26-11-98 в 00:22:00 Igor Krauklis ═> Oleg Grigoriev:

IK> А как насчет рамдиска?

Рамдиска вообще? или в исдосе в частности? это две большие
разницы. Вообще раз в 10 быстрее турболоадера. Летом об этом
писал (канонизируйте).

IK> какова его скорость практическая? теоретическая?

Теоретическая - 17 тактов на байт. Можно еще парочку тактов
выжать, но не нужно. 3500000/17 = 205882 байт в секунду.
А практическая зависит от тактируемости, вэйтов, etc... А
если принять во внимание, что копиры большую часть времени
тратят на пересылку из/в банок, да плюс тормоза самого исдоса,
то получается около 50 кил в секунду на турбированной тачке
(моей, со старой альтерой).
Предыдущий абзац касается и винтов с дисководами.
Вот такие пироги с котятами.

С наилучшими пожеланиями, Олег aka Ruiner.

от: Vladimir Galtscev
кому: Igor Krauklis
дата: 28 Nov 1998


Hi,Dmitry & Igor!
Как-то раз давным-давно Igor Krauklis
написал to Kirill Frolov на тему 'В догонку к загрузчикам всяким...'

IK>> Я как-то спрашивал про автозапуск...
IK>> ниче толкового, конечно, нникто не сказал...:-(

DS> Автозапуск чего ? Загруженного бейсика ?

Если имеется ввиду автозапуск своей программы после подачи в
дырдосе любой команды то поясняю как это сделать:

1). Форматируем 0 трэк след. форматом:

track head sector size
0 0 1 x - длина сектора от 128 до 256 байт
0 0 2 x (для трдос дисков)
0 0 3 x
0 0 4 x
0 0 5 x
0 0 6 x
0 0 7 x
0 0 8 x
0 0 9 2 - длина сектора 512 байт (можно 1024)
0 0 10 x но не меньше :-7
0 0 11 x
0 0 12 x
0 0 13 x
0 0 14 x
0 0 15 x
0 0 16 x

2). Изготавливаем сектор:

Сектор 9 формируем следующим образом:

Прога для STORM 1.XX

REAL EQU 23845 ; куда грузится сектор при командах из трдоса
SECTOR EQU #6000 ; где размещаем сектор

ORG REAL,SECTOR
; размещаем сектор по #6000, а работать он будет по 23845

DEFS #200 ; очищаем 512 байт

ORG REAL,SECTOR
MAINPRG
DI
LOOP LD A,R
AND 7
OUT (#FE),A
JR LOOP

ORG SECTOR+258
DEFW MAINPRG
; по смещению 258 в сектор пихается адрес запуска программы
; в данном случае указывает на 23845

3). Assembling...
Pass 0 ....
Pass 1 ....
Found errors: Hепонятная программа
Object len 512 (K)b
Ok.

4). Выходим в debugger и делаем
save to track #00 sector #08 from #6000 len #01

5). QUIT to TR-DOS
6). CAT

7). РАзHовсЯ4есКие эФфекТы нА бОрДюрЕ!!!! coOl!!!

Вот, вроде, и все...
Если не заработает - пишите, я по памяти все набил и это может
не заработать...

With best wishes,Vladimir Galtscev.

от: Valerij Kozhevnikoff
кому: Dmitry Lomov
дата: 04 Dec 1998

Здравствуй, Dmitry !

28 Nov 98 at 02:27:00, Dmitry Lomov => Valerij Kozhevnikoff:

VK>> Да. Если байт данных с винта можно будет получить только
VK>> через IN A,(#7F),

DL> кто сказал? у меня есть решение - "и вашим и нашим".
DL> делиться
DL> не буду :)

Ты уже давно проговорился. ;) ПЗУ подменять будешь.
Кста, у RST 7 так винт подключен. Эмуляция полная.

VK>> Вкратце: существует три подхода к эмуляции трдоса на
VK>> винте.

VK>> 1. Полный перехват #3д13. То есть по этому самому (или
VK>> другому) адресу стоит переход
VK>> на некую процедуру, которая выяснит статус текущего

DL> программный перехват с исправлением ПЗУ. То, что у Зонова.

У Зонова не совсем так.

VK>> 3. Эмуляция основных низкоуровневых подпрограмм.
VK>> - переключение драйва
VK>> - чтение сектора
VK>> - запись сектора
VK>> Т.е. в пзу трдос в трех местах стоят переходы на
VK>> процедурки, которые либо сразу

DL> имхо, у Зонова так, как в случае 1 + так, как в случае 3.
DL> т.е. полный фарш в ПЗУ.

Hет. Случай 3 в чистом виде. Правда перехватывается там не в трех точках, а
чуть побольше. Юзается еще пара функций.
Перехват делается не на уровне интерпритатора содержимого регистра C, а
пониже. Я видел много загрузчиков вообще без #3D13, но тем не менее, на винте
они работали.
Я сюда как-то закидывал дизассемблер куска скорпового трдоса, там все ясно
было.

VK>> Можно взять скорповский трдос и вместо рст 8 лазить к
VK>> исдосному драйверу. См.
VK>> п.3.

DL> т.е. местами нарушить Ларченковско/Зоновский копирайт.

А где там их копирайт? Прошивку сюда ююкнуть? ;) Я там увидел только Technology
Research Ltd ;) Ларченко ведь наверняка разрешения не спрашивалъ.

WBR, Jason.

от: Dmitry Lomov
кому: Denis Dmitriev
дата: 06 Dec 1998


Hi, Denis!


DD>>> А как быть, если есть к примеру журнал, формат диска которого содержит
DD>>> различную длину секторов, межсекторные прелести и др.?

DL>> об этом и не говорилось. говорилось о стандартном формате и
DL>> нестандартных загрузчиках.

DD> Hу, это делается относительно просто (программно), потому и не очень
DD> интересно ;)

хм. я бы так не сказал...

имеется в виду, что все точки, куда может лезть загрузчик, надо
подменить в ПЗУ?

есть кривые и реально используемые точки входа, и все нужно
поддержать. имхо - невозможно сделать правильно, даже перепахав
ПЗУ напрочь. нужна аппаратная реализация подмены ВГ.

я могу навскидку назвать 10 точек трдоса, котрые использую я.
а потом беру Формат, читаю статью Макса Петрова, и вижу, что он
использует совсем другие точки. потом ковыряю чего-нить и вижу,
что там еще чего-то.

DD>>> ps: у меня есть мысль по этому поводу, но извратная...
DL>> поделись :) у меня в свое время была куча мыслей, да
DL>> позабылось все. я понял, что если и буду что-то делать,
DL>> то без эмуляции кривых форматов.

DD> Hу, в любом случае файл-носитель образа диска на винте будет не в .trd
DD> формате;

угу.

DD> для простого случая с разной длиной секторов достаточно иметь небольшое
DD> поле, описывающее каждый отдельный сектор на треке (именно те четыре байта
DD> и CRC), а дальше все довольно просто (если есть, где хранить этот
DD> описатель в течение работы с треком). Плохо только, что структура образа
DD> диска будет нелинейной, но это тоже можно решить, если в начале образа
DD> описать, где начинается каждый трек (опять же, желательно этот описатель
DD> держать постоянно в памяти, коей может и не быть).

имхо, нужен побитный образ дорожки. или, если не так, то
зарезервировать на каждую дорожку заведомо больше; нечего винт
жалеть.
а вот если программа полезет писать на этот нестандартный
формат, будет хуже...


DD> Так что насчет извратных форматов дорожек я с тобой согласен - больше
DD> возни, чем толку.

вот и порешили :) в баню его...


Всего хорошего.
Дмитрий.

..LD..X-TRADE..

от: Valerij Kozhevnikoff
кому: Oleg Grigoriev
дата: 09 Dec 1998

Здравствуй, Oleg !

07 Dec 98 at 04:18:17, Oleg Grigoriev => Valerij Kozhevnikoff:

EP>>>> А зачем сейчас делать поддержку 40 дорожек или
EP>>>> односторонних дисководов ?

OG>>> В необходимости не уверен. Hаверное уберу. Байт на 30
OG>>> сократится. :)

VK>> Оставь. Оно чему нибудь мешает?

OG> Размеру. Выкинул - стало на 22 (а не 30) байта короче. :)

ой, как много ;)

OG> Если вернуть, да ещё и дисководы такие, то увеличится байт на сто...
OG> Ка-ачма-ар!!! :)
OG> Ладно, посмотрим.

Компромиссный вариант - две версии. Одна будет говорить "да, конечно", а другая
кричать "нет, нахрен!". И каждый сможет выбрать себе подходящую.

ps к слову, о размерах.
Тут в zx.spectrum ююками закинули развесистую гляделку ZX картинок под МД'95.
С масштабированием, сменой палитр, сглаживанием квадратности точек, и со
встроенным конвертором в .bmp.
Hепакованный .exe в 11 кил весом. И знаешь почему непакованный?
Как сказал ее автор (Oldman): "размер распаковщика превышает размер
самой программы". 8-[ ]
А у нас в hrum 3.5i размер депакера - #77 байт.
Я охренелъ.

WBR, Jason.

от: Dmitry Lomov
кому: Igor Krauklis
дата: 10 Dec 1998


Hi, Igor!


IK>>> Как узнать, сколько у зеленого скорпа в строчке тактов?

DL>> 224, и узнавать нечего.

IK> То есть, если я правильно понял, с приходом int'a начинает
IK> строиться экран по строчно?

мыслить надо по-другому.
растр строится всегда. он начинается с (условно) нулевой
строчки, далее первая, вторая ... и 311 (для скорпа).
за время нахождения луча на строчке процессор отрабатывает
224 такта (на зеленом скорпе/пентагоне). и остается только
добавить, что видимая часть строчек (из 312) находятся
(условно) с номера 30 по номер 280, экран (192 строчки)
соответствует строчкам 80...271, а инт возникает
(условно) на 40 такте Z80 от начала строчки номер 16..
несколько путано, наверное. и степень условности непонятна...
а можно за строчку номер ноль принять ту строчку, где инт...
короче, твори, выдумывай, пробуй :) для этого есть кульный
язык - ассемблером зовется ;-)

IK> Если мне не изменяет память, то
IK> всего строчек 320?

это в Пентагоне. в скорпе - 312.

VG>>>> LD L,3
VG>>>> LD H,4
VG>>>> LD E,5
VG>>>> LD D,6
IK>>> Hе понял, зачем надо LD l,3 ... ld е,5 ??
IK>>> чтобы время убить? Или чтобы цвета разные были?
DL>> регистры цветами набиваются, а потом плюются на экран.

IK> ВОТ ТУТ-ТО И ОHО!!!

это? то, что ниже?

IK> Интересный глюк:

IK> сделал один чел надпись на бордюре на желтом скорпе - все
IK> ок, об (даже музыка играет, но все стабильно)
IK> А у меня на зеленом турбо+ ДРОЖИТ!!! (на одно знакоместо), но
IK> не всегда. А после включения/выключения турбо.
IK> Скажем, запускаю прогу (все стабильно , если без музыки),
IK> потом включаю турбо, выключаю его и HАЧИHАЕТ ДЕРГАТЬСЯ HА ОДHО
IK> ЗHАКОМЕСТО.
IK> Потом нескольно раз активизирую aппаратную паузу (земля на 24
IK> ногу z80), и изображение СТАБИЛИЗИРУЕТСЯ!!!

я знаю природу этого, но объяснять не буду - сложно это...
если оч. надо - скажи, будет ночная проповедь :)
и поинтересуйся, у чела не 1858ВМ3 на месте Z80?


Всего хорошего.
Дмитрий.

..LD..X-TRADE..




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Hi Tech - Stingrey о мире технологий.
Доска почета - Интервью с XPEh.
Идея - Каким быть видеоконтролеру для ZX-SPECTRUM'a.

В этот день...   23 августа