Вход

Просмотр полной версии : Вектор-06Ц: Операционные системы



Страницы : 1 [2]

KTSerg
09.04.2020, 05:54
Может быть "System PRogramm"-файлы это что-то типа подгружаемых драйверов в формате, позволяющем грузить их в любой адрес памяти...

ivagor
09.04.2020, 08:52
Попробовал классику mdos31, оригинальный t72 и упомянутый Усковым mdos311 (BIOS 3.11.F.11) - все они по B SID грузят SID.SPR и все реагируют на B без аргумента печатью ерунды. Пара попробованных досов Филиппова (F51 и F14.3) на B без аргумента реагируют просто возвратом в командную строку, в варианте с аргументом успешно грузят.
А вот os-t72kd2.rom похоже при B c аргументом (когда на диске реально есть такой файл с расширением SPR) портит диск. В таком случае определенно лучше убрать эту команду.

Improver
09.04.2020, 09:54
Прикольно, действительно Филипповские досы не виснут по команде B и SID.SPR загрузился.Надо будет сравнить МДОСы Филипова и Т72, что там было пропатчено, и обновить МДОС в Т-72. :)

В t72 есть еще команды неизвестного (мне) назначения, хорошо бы прояснить их назначение и способ использования или убрать.А какие именно? Там в МДОСе есть команды: <A>, <B>, <D>, <E>, <K>, <O>, <U>, кроме того, есть цифровые команды пользователя в БДОСе:
- команда "0" устанавливает параметры ввода/вывода
- команда "1" запись файла из оперативной памяти на диск
- команда "5" переименовывает файлы
- команда "8" проверка/форматирование электронного диска
- команда "9" (доб.) назначение дискет НЖМД на диски А: и Б:
Или есть ещё секретные хитроспрятанные команды?

- - - Добавлено - - -


И еще кое что забыл. Не работает INITIAL.SUB.Это моё безобразие... Для отвязки Т-72 от обязательной необходимости наличия дискеты при старте, Т-72 теперь ищет INITIALC.SUB на квазидиске. В принципе, это можно вернуть назад, если надо. Или пока можно после старта руками вводить команду "<A:INITIAL.SUB".

ivagor
09.04.2020, 09:58
А какие именно?
Я не вникал, просто увидел список в исходнике

.db 05Ah ; <Z> (offset 0340h) 00
.db 05Ch ; <\> (offset 0341h) 01
.db 04Eh ; <N> (offset 0342h) 02
.db 04Fh ; <O> (offset 0343h) 03
.db 045h ; <E> (offset 0344h) 04
.db 061h ; <a> (offset 0345h) 05
.db 037h ; <7> (offset 0346h) 06
.db 062h ; <b> (offset 0347h) 07
.db 036h ; <6> (offset 0348h) 08
.db 044h ; <D> (offset 0349h) 09
.db 043h ; <C> (offset 034Ah) 0A
.db 041h ; <A> (offset 034Bh) 0B
.db 042h ; <B> (offset 034Ch) 0C
.db 04Bh ; <K> (offset 034Dh) 0D
.db 048h ; <H> (offset 034Eh) 0E
L_F84F: .db 04Ah ; <J> (offset 034Fh) 0F ^^^
Может тут не все буквы соответсвуют командам.

Improver
09.04.2020, 10:48
Я не вникал, просто увидел список в исходникеЭти команды в БСВВ, тоже их назначение глубоко не раскапывал, но, скорее всего, это даже не команды, а ключи к команде "0", нечто для управления параметрами вывода на экран и прочего...

- - - Добавлено - - -

Вот назначение этих ключей:

.db 05Ah ; 00 Установить латинский набор
.db 05Ch ; 01 Установить русско-латинский набор (КОИ-7)
.db 04Eh ; 02 Включение неэффективного опроса клавиатуры с установкой цветовой палитры прикаждом прерывании (предусмотрена для некорректно написанных программ, где установка цвета осуществляется не управляющей последовательностью)
.db 04Fh ; 03 Включение опроса клавиатуры с отключением записи таблицы цветов при прерываниях. Экономится до 5% времени ЦП. Режим установлен в ДОС по умолчанию.
.db 045h ; 04 Очистить экран и установить латинский набор символов знакогенератора
.db 061h ; 05 Установить режим вывода символов в позитиве
.db 037h ; 06 Установить режим вывода символов в позитиве
.db 062h ; 07 Установить режим вывода символов в негативе
.db 036h ; 08 Установить режим вывода символов в негативе
.db 044h ; 09 Курсор смещается на позицию влево
.db 043h ; 0A Курсор смещается на позицию вправо
.db 041h ; 0B Курсор смещается на позицию вверх
.db 042h ; 0C Курсор смещается на позицию вниз
.db 04Bh ; 0D Удалить часть строки, начиная с позции курсора и до конца
.db 048h ; 0E Курсор помещается в левый верхний угол
L_F84F: .db 04Ah ; 0F Очистить экран ^^^

ivagor
09.04.2020, 11:13
Я попытался тестить копирование под ASC.COM, и - при выходе из ASC.COM палитра остается от нее, и в консоли разные части букв разных цветов.
Возможно поможет команда
0 4E A
(цифра 0, не буква O)

b2m
09.04.2020, 11:47
Вот назначение этих ключей
Ну, это же второй символ в Esc-последовательности. Можно выполнить командой ноль: 0 NN A

ivagor
09.04.2020, 11:51
Improver, желательно изменить переключение регистров по аналогии с тем, как патчили T34 - чтобы одиночное нажатие РУС/ЛАТ и СС переключало соответственно русский/латинский и большие/маленькие. А то нажимать три клавиши одновременно неудобно, а в emu, например, нажатие shift+ctrl+s вызовет диалог сохранения скриншота вместо ввода маленькой русской буквы "c".

b2m
09.04.2020, 12:10
Там в МДОСе есть команды: <A>, <B>, <D>, <E>, <K>, <O>, <U>
Там, кстати, есть косяк: список должен заканчиваться нулевым байтом. Вот п/п поиска буквы:

L_C3FF: MVI B, 000h
L_C401: MOV A, M
ORA A
RZ
CMP C
JZ L_C40D
INX H
INR B
JMP L_C401
L_C40D: MOV A, B
STC
RET

На данный момент других букв от A до Z до ближайшего нуля нет, но младший байт адреса в какой-нибудь ссылке может таковым оказаться, если код будет смещаться.

- - - Добавлено - - -


Надо будет сравнить МДОСы Филипова и Т72, что там было пропатчено
Насколько я понял, вызов "в никуда" должен был выводить сообщение об ошибке. В пропатченной версии вызывается код обработчика команды E, он и выводит сообщение.

Improver
09.04.2020, 13:04
Там, кстати, есть косяк: список должен заканчиваться нулевым байтом.Этот баг был и в Т-34 и, подозреваю, в других МДОСах, надо исправить.


Насколько я понял, вызов "в никуда" должен был выводить сообщение об ошибке. В пропатченной версии вызывается код обработчика команды E, он и выводит сообщение.Т.е. там вместо "CALL L_CB01" можно сделать вывод ошибки типа "Неверное имя", как обычно сообщается на неправильные параметры команды? Так сделано у Филипова?

b2m
09.04.2020, 13:09
Так сделано у Филипова?
Вроде да, но могу ошибаться.

ivagor
09.04.2020, 14:08
В F51 выполнение команды B начинается с адреса BBDE. Он там забил нулями CALL (кроме одного байта, который трактуется как команда ORA A) перед последним JMP.
Список букв команд (BA65-BA6B) в F51 тоже без нуля.

- - - Добавлено - - -

В F14.3 все аналогично и по тем же адресам.

b2m
09.04.2020, 14:42
Я смотрел файл рядом с докой от Ускова md311f11.com, там проблемный участок выглядит так:

CALL 0D3AAh; L_DAAA
JMP 0BB3Bh
0BB3Bh имеется в таблице для переходов команд, соответствует команде Е.

Это и есть правка Ускова.

ivagor
09.04.2020, 15:26
Получается mdos311 с BIOS 3.11.F.11 - это (старая, раньше F14.3 и F51) версия Филиппова. Команда B там работает примерно как в других досах, без аргументов печатает пургу, с правильным аргментом грузит .SPR
А MD311F11 - это версия Филиппова доработанная Усковым. Но она работает не совсем так как я ожидал. Команда B и без аргументов и с правильным аргументом при наличии соответствующего файла на диске печатает "B?".

- - - Добавлено - - -

Увидел, Усков сменил букву команды B на S и эта команда работает правильно.

- - - Добавлено - - -

Если сравнивать патчи этой команды Филиппова и Ускова, то вариант Ускова чуть лучше, т.к. при запуске без аргумента печатает NO FILES. Но теперь, когда жажда знаний более-менее утолена и с командой почти разобрались (кроме формата SPR, хотя думаю при желании тут изучение SIDа поможет), может пора выпилить B/S?

Improver
09.04.2020, 16:52
Я тоже там немного поигрался с ДОСами, вариант Ускова как-то информативнее получается... По этому методу можно заменить в тексте "CALL L_CB01" на "JMP L_C24C" и убрать следующий "JMP L_DAAA", но это решает только половину проблемы. Надо восстанавливать работу команды "В", полезная, по сути, штука.

b2m
09.04.2020, 20:50
Надо восстанавливать работу команды "В", полезная, по сути, штука.
В картотеке есть исходники Филлипова, и там есть его дизассемблированный вариант микродоса (в файле bdos.zip). Причём там метки имеют смысл, и это даёт ответы практически на все вопросы.
Ещё заметил, что собственно микродос при загрузке перемещается (т.е. корректируются старшие байты адресов, там есть битовая карта), а драйвер диска и биос пересылаются как есть. У тебя-же всё пересылается как есть. Хорошо это или плохо - не знаю. А в оригинале микродоса никакой проблемы с командой "В" нет.

ivagor
09.04.2020, 20:56
собственно микродос при загрузке перемещается (т.е. корректируются старшие байты адресов, там есть битовая карта), а драйвер диска и биос пересылаются как есть. У тебя-же всё пересылается как есть.
Отказ от коррекции адресов на этапе инициализации - одно из отличий T34 (и T72, как наследника)
"ОС хранится в неперемещаемом, неупакованном формате, в область рабочих адресов она пересылается без дополнительных преобразований, чем достигается сокращение времени инициализации при холодном старте."

b2m
09.04.2020, 21:24
Посмотрел дизассемблированный вариант, метка THISADRESSISERROR наводит на мысли. В оригинале тоже ошибка. Возможно там должен быть адрес начала процедуры, куда эта метка попадает, но тогда перед вызовом нехватает задания номера ошибки в регистре А (там оказывается 20h и адрес текстовой строки читается чёрте-какой). Я пробовал в отладчике число 9, выдаётся более-менее осмысленный текст.


одно из отличий T34 (и T72, как наследника)
А чем T34 и T72 различаются?

ivagor
09.04.2020, 21:49
Из отличий T34 и T72 точно знаю только одно - в T72 немного оптимизирован вывод символов и по этому критерию T72 уступает только РДСу (по крайней мере по моим замерам).
Еще в стартовом сообщении T72 появилось упоминание альтернативной кодировки ГОСТа наряду с КОИ8, но как они переключаются - я не знаю.

- - - Добавлено - - -

Ну и еще пропала совместимость с CO.COM

Improver
10.04.2020, 10:52
Из отличий T34 и T72 точно знаю только одно - в T72 немного оптимизирован вывод символов и по этому критерию T72 уступает только РДСу (по крайней мере по моим замерам).
Там тоже есть ньюанс: вывод только латиницы Т-72 быстрее, чем вывод кирилицы...

Ещё отличия Т-72 от Т-34:
- все сообщения выводятся на русском
- имеется возможность настраивать какой-то параметр драйвера флоповода через команду "0 <число> W", но из-за совпадения с командой настройки скорости записи на магнитную ленту, это не работало.
- ну и ещё куча мелких патчей системы. :)


Еще в стартовом сообщении T72 появилось упоминание альтернативной кодировки ГОСТа наряду с КОИ8, но как они переключаются - я не знаю.
Про ГОСТ упоминаний не нашёл, а вот это упоминание в доках на Т-34, не оно?
1В, 5В Ё Установить набор КОИ-8 (основной)
0F или 1В, 5А Ё Установить латинский набор
0Е Ё Установить русский набор
1В, 5С Ё Установить русско-латинский набор
Ё (КОИ-7)

ivagor
10.04.2020, 12:54
Оказалось, что в T72
1B 5A - КОИ-8
1B 5C - Альтернативная (CP866)

ivagor
11.04.2020, 07:58
Почитал про SPR (https://www.seasip.info/Cpm/prl.html) и немного потрассировал (проще начать с D452) загрузку SID.SPR в DOSF143. На описание внимание можно не сильно обращать, реально дос берет два адреса по смещениям 0001 и 0004, использует их для определения адреса загрузки и смещения таблицы индикаторов коррекции адресов. Загружает, корректирует и запускает.
Не про spr. В описании F143 упомянуто "включение клавиатуры для редактора QWERTY/JCUKEN". Сходу я не понял, что именно там переключается.

b2m
11.04.2020, 14:30
Получается, микродос в оригинале (как и SID) компилировался как .SPR, чтобы получить код и таблицу. А потом PRL заголовок заменялся на код перемещения.

ivagor
11.04.2020, 14:58
Процедура коррекции адресов в инициализаторе классических досов и загрузчике spr практически идентичная. Ну и теперь понятно, что за PRL, RSP и SPR упоминаются в линковщике.

- - - Добавлено - - -

Кстати, считаю оценку Ускова "... удалось разобраться в структуре .SPR-файла ... Структура эта оказалась довольно сложной." сильно преувеличенной.

- - - Добавлено - - -

Думаю авторы Draw не знали про классические spr и поэтому так назвали свой формат картинок.

electroscat
13.04.2020, 18:52
Дорогие друзья !

Прошу помощи.. Вашим опытным взглядам мои глупые ошибки сразу будут заметны, уверен...

Хотел пропатчить mdos31h вдохновившись тем, что ошибка собственно известна, и подробно описана, более того - есть исходники T-72 c патчем (еще не LBA)... вобщем, вытащил из бинарника BDOS, который в бинарнике сидит по адресам 3400H - 468EH, после перетаскивается по адресам В800H - FF8D и от туда работает. Дизассемблировал его (если это можно так назвать), получил файл orgD800H_3400H-468EH_BDOS_original.asm который компилится в точно такую же область, и в нем нашел куски, которые описываются в сообщении b2m (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055312&viewfull=1#post1055312) и все что с ним связано, и заменил по аналогии на код из исходников первой версии T-72 без "заворота" из сообщения от ivagor (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055456&viewfull=1#post1055456) .... код конечно в целом отличается, тем не менее, логически, вроде все должно ратотать.. но что то пошло не так.. Из за того, что я в целом, очень поверхностно знаком с работой HDD, мои попытки понять это при помощи трассировки кода в отладчике особо не дали результатов. Получал два варианта - первый (не сохранился) - когда система говорит о ошибке, просит продолжить или игнорировать, а второй, когда загружается, и выдает на команду D - no files... Наверняка, вам, как специалистам в этом, тем более знающим этот код, будет не трудно понять, что я там сделал не так. В целом, если вы этого делать не будете, ничего страшного, я продолжу его ковырять... Я не стремлюсь к каким то серьезным результатам, целью этого патча не является создать что то совершенное и быстрое, достаточно просто заставить ось видеть хотя бы 2 гб CF, то есть чисто практический интерес, и встроить эту ось в ПЗУ своего вектора. Да и в целом, наверняка не только я обрадуюсь наличию такой оси для вектора...

В папке на яндекс диске (https://yadi.sk/d/Beuaxi7sQSLTbw) находятся:

1. mdos31hp_32BFH_80_2D.rom файл оси, которая встроена в ПЗУ, с патчем на "СБР+БЛК" и желто-сиий колор.
2. mdos31hp_32BFH_80_2D_HDD2GB.rom файл оси, которую я пропатчил измененным кодом, говорит NO FILES
3. orgD800H_3400H-468EH_BDOS_original.asm файл дизассемблированный BDOS ОС mdos31h
4. orgD800H_3400H-468EH_BDOS_second_ver.asm файл дизассемблированный BDOS ОС mdos31h с моими попытками его пропатчить (вот)
5. orgD800H_3400H-468E‬H_BDOS.rom файл BDOS оригинальный, вырезанный из операционной системы mdos31hp_32BFH_80_2D.rom (1.)





LD85F:
cpi 0A5H
jnc LD853
xthl
inx h
mov e,m
inx h
mov d,m
inx h
mov a,m
pop h

LD86C:
dad d ; (h, l) + (BC) -> (h, l)
aci 000H ; A + data8 + C -> A

; mov e,l
; mov l,h
; mov h,a ; (HL,E) = (A,HL)

mov e,a ; (E,HL)

call LD9D9 ; проверка готовности НЖМД, получение кода ошибки и RET

jz LD9F8 ; обработка ошибки ?

;+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++
sectors:
mvi b,16
mov a,e
call div
inr a
out 53h ;sector
xra a
heads:
mvi b,4
call div
out 56h ;head
mov a,h
out 055h ;cyl (High)
mov a,l
out 054h ;cyl (Low)
;+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++

jmp Lnext_00

.db $00, $00, $00, $00, $00, $00, $00, $00

;----------------------------------------------------------------------------------------
; push d
; call LD8F3
; out 055H
; pop d
; mov h,l
; mov l,e
; call LD8F3
; out 054H
;----------------------------------------------------------------------------------------
;----------------------------------------------------------------------------------------
; lxi d,0FF00H
; call LD904
; lxi d,0010H
; call LD8FC
; out 056H
; mov a,l
; inr a
; out 053H
;----------------------------------------------------------------------------------------

Lnext_00:
mvi a,002H
out 052H
pop d
lxi h,0EB00H
mvi a,020H
inr e
dcr e
jz LD8A9
mvi a,030H
LD8A9:
out 057H
mvi c,002H

LD8AD:
call LD9D9 ; проверка готовности НЖМД, получение кода ошибки и RET
jz LD9F9 ; обработка ошибки ?
in 057H
ani 008H
jz LD9F9 ; обработка ошибки ?
mvi b,002H
LD8BC:
inr e
dcr e
jnz LD8CF
LD8C1:
in 050H
mov m,a
inr l
in 058H
mov m,a
inr l
jnz LD8C1
jmp LD8DC
;
LD8CF:
inr l
mov a,m
out 058H
dcr l
mov a,m
out 050H
inr l
inr l
jnz LD8CF
LD8DC:
inr h
dcr b
jnz LD8BC
dcr c
jnz LD8AD
call LD9D9 ; проверка готовности НЖМД, получение кода ошибки и RET
jz LD9F9 ; обработка ошибки ?
ani 0DDH
cpi 050H
rz
jmp LD9F9 ; обработка ошибки ?
;

;+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++

div:
MVI C,16 ; HL=AHL/B, A=AHL%B
L1: DAD H
ADC A
JC L2
CMP B
JC L3
L2: SUB B
INR L
L3: DCR C
JNZ L1
RET
;+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++

.db $00, $00, $00, $00, $00, $00, $00, $00

;----------------------------------------------------------------------------------------
;LD8F3:
; lxi d,0FC00H
; call LD904
; lxi d,00040H
;LD8FC:
; mvi b,0FFH
;LD8FE:
; add b
; dad d
; jnc LD8FE
; ret
;----------------------------------------------------------------------------------------
;----------------------------------------------------------------------------------------
;LD904:
; xra a
; mvi b,010H
;LD907:
; add b
; dad d
; jc LD907
; ret
;----------------------------------------------------------------------------------------
;
call LE474
lda 0080H
ana a
jz LD980
lxi d,005DH
call LE0BB
mov b,h
mov c,l
lxi d,0FFCFH
dad d
jc LE0B5
lda 005CH
ana a
jnz LD931
lda 0004H
inr a
LD931:
dcr a
cpi 002H
jz LE0B5
cmc
sbi 000H
cpi 004H
jnc LE0B5
mov e,a
mvi d,000H
LD942:
mov a,d
call LD9B2
mov a,m
cmp c
jnz LD954
inx h
mov a,m
sub b
jnz LD954
mov m,a
dcx h
mov m,a
LD954:
inr d
mov a,d
cpi 004H
jnz LD942
mov a,e
call LD9B2
mov m,c
inx h
mov m,b
inx h
push h
lxi h,0F3BEH
mvi a,0FFH
inx b
LD96A:
lxi d,00622H
dad d
aci 000H
dcx b
mov d,a
mov a,b
ora c
mov a,d
jnz LD96A
xchg
pop h
mov m,e
inx h
mov m,d
inx h
mov m,a
ret

*
*
*

LD9F8:
pop psw
LD9F9:
in 057H
rrc
in 051H
jc LDA02
xra a
LDA02:
mov b,a
in 057H
ani 020H
ora b
mov b,a
in 057H
ani 0C0H
cpi 040H
mov a,b
jz LDA15
ori 010H
LDA15:
out 05FH
jmp LE6AB

*
*
*

LE6AB:
sta XE873
lda XE867
cpi 006H
jz LE6C2
xra a
sta XE874
sta XE87A
mvi a,001H
sta XE872
LE6C2:
lda XE873
ana a
ret





В целом, старался очень аккуратно патчить, оригинальный код остался на своих местах по своим адресам, адреса ссылок соответствуют их названиям.
Моего понимания таки еще не хватает для такого рода операций, тем не менее, если кто то поможет, буду очень благодарен !!! Если нет, в целом, я и так вам очень благодарен за то что вы делаете, за то, чем вы меня вдохновляете !!!

Спасибо!

И кстати, еще вопрос, посоветуйте какой нибудь хороший дизассемблер. Я пользуюсь DASMX130, уверен, есть что то более совершенное, посоветуйте пожалуйста что нибудь ?!?

Improver
14.04.2020, 08:34
И кстати, еще вопрос, посоветуйте какой нибудь хороший дизассемблер. Я пользуюсь DASMX130, уверен, есть что то более совершенное, посоветуйте пожалуйста что нибудь ?!?Я мельком посмотрел Ваши исходники, в принципе DASMX даёт неплохой результат, можно пользоваться. Просто в качестве альтернативы могу поделиться тем, чем пользуюсь сам -- DASM580 (72187), который я написал когда-то давно-давно...

И по поводу патча МДОС, вопрос: если взять полученные Вами исходники без патча (orgD800H_3400H-468EH_BDOS_original.asm), то откомпилированный с них бинарник полностью совпадает с бинарником из MДОС (orgD800H_3400H-468E‬H_BDOS.rom)? Я бы начал копать отсюда...

Второе, что следует сделать, это разобраться с командами PCHL (их там 5 штук), и дизассемблиролвать подпрограммы, на которые они ссылаются. Вполне возможно, что Ваш патч затрагивает их работу, но из-за того, что в исходнике они показаны, как наборы данных, в них ссылки не исправляются при перекомпиляции и вылезает ошибка.

ivagor
14.04.2020, 09:48
По образцу Improvera патчнул FH51 в режим LBA, заворота больше нет.

- - - Добавлено - - -

Добавил патч рестарта.

b2m
14.04.2020, 09:58
но что то пошло не так
А количество секторов и головок по адресам sectors+1 и heads+1 в коде инициализации устанавливаются?

electroscat
14.04.2020, 11:25
Я мельком посмотрел Ваши исходники, в принципе DASMX даёт неплохой результат, можно пользоваться. Просто в качестве альтернативы могу поделиться тем, чем пользуюсь сам -- DASM580 (72187), который я написал когда-то давно-давно...

Спасибо за ссылочку, посмотрю обязательно !


И по поводу патча МДОС, вопрос: если взять полученные Вами исходники без патча (orgD800H_3400H-468EH_BDOS_original.asm), то откомпилированный с них бинарник полностью совпадает с бинарником из MДОС (orgD800H_3400H-468E‬H_BDOS.rom)? Я бы начал копать отсюда...

Да, я добился идентичности, оригинальный текст компилится, я сравниваю его с вырезанным куском, HEX редактор заявляет об идентичности файлов.



Второе, что следует сделать, это разобраться с командами PCHL (их там 5 штук), и дизассемблиролвать подпрограммы, на которые они ссылаются. Вполне возможно, что Ваш патч затрагивает их работу, но из-за того, что в исходнике они показаны, как наборы данных, в них ссылки не исправляются при перекомпиляции и вылезает ошибка.

На счет этого я не подумал, поищу, спасибо за направление!

- - - Добавлено - - -


А количество секторов и головок по адресам sectors+1 и heads+1 в коде инициализации устанавливаются?

Вот наверное я на это вчера и наткнулся, это похоже оно и есть, нашел участок кода, как раз там, где были адреса "LXI B, XXX" в LD8F3. там у меня оказался кусок кода, и он постоянно "портился" при анализе в дебагере, ... в итоге, я понял, что по этим адресам что то пишется. Похоже это и есть адреса, осталось только найти от куда они пишутся, или по крайней мере, засунуть в эти места переменные, из которых потом брать эти значения. Сейчас я там просто массив нулей расположил, и обозначил две переменных в этом массиве, код расположил так, чтобы его по этим адресам не было, ну и как раз нулей там столько, чтобы восстановить оригинальные адреса всего оставшегося кода.

Подскажите пожалуйста, sectors+1 и heads+1 - это:




sectors:
mvi b, 16
mov a,e
call LD879
inr a
out 53h
xra a
heads:
mvi b,4
call LD879
out 56h
mov a,h
out 055h
mov a,l
out 054h


в этом коде... Наверняка я что то не так понимаю... в этом коде вроде не куда патчить адреса... пока не понятно, можете чуть пояснить? И "в коде инициализации" это за пределами BDOS? это тот код, который распределяет по памяти куски системы после загрузки бинарника, он патчит код на предмет адресов ?

b2m
14.04.2020, 12:09
код, который распределяет по памяти куски системы после загрузки бинарника, он патчит код на предмет адресов ?
Нет, по-моему это чуть позже. После пересылки запускается инициализация, это в самом начале BDOS. Поищи в коде Improvera, где он пишет в sectors+1 и heads+1.

Improver
14.04.2020, 12:48
там у меня оказался кусок кода, и он постоянно "портился" при анализе в дебагере, ... в итоге, я понял, что по этим адресам что то пишется.Это выполняется запись количества секторов и головок в соответствии с конфигурацией НЖМД, в МДОС31Н этот код выполняется из процедуры инициализации (см. тут с адреса L_468E (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1053911&viewfull=1#post1053911)), в отличие от того, что я сделал в Т-72. Для нормальной работы нужно поправить ещё и инициализацию МДОС.

electroscat
14.04.2020, 13:13
Это выполняется запись количества секторов и головок в соответствии с конфигурацией НЖМД, в МДОС31Н этот код выполняется из процедуры инициализации (см. тут с адреса L_468E (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1053911&viewfull=1#post1053911)), в отличие от того, что я сделал в Т-72. Для нормальной работы нужно поправить ещё и инициализацию МДОС.

Эти адреса в mdos31h пересылаются в пару регистров "DE", новом варианте их тоже нужно туда переслать ?

Improver
14.04.2020, 13:27
Эти адреса в mdos31h пересылаются в пару регистров "DE", новом варианте их тоже нужно туда переслать ?В новом варианте нужно записать считанное с диска количество секторов и головок по адресам sectors+1 и heads+1 соответственно, а также инвертированное максимальное количество дискет по адресу 0D920h:

;----------------------------------------------------------------------------------------

call LE474
lda 0080H
ana a
jz LD980
lxi d,005DH
call LE0BB
mov b,h
mov c,l
lxi d,0FFCFH
dad d
jc LE0B5
lda 005CH
ana a
jnz LD931
lda 0004H
inr a
LD931:
dcr a
В старом варианте там ещё рассчитывались произведения головок на секторов и пр., теперь это уже не нужно.

З.Ы. Это коммент, если Вас по какой-то причине не устраивает вариант Ivagor-а (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1056863&viewfull=1#post1056863). :)

electroscat
14.04.2020, 14:26
Вас по какой-то причине не устраивает вариант Ivagor-а (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1056863&viewfull=1#post1056863). :)

Он меня очень устраивает, но есть один момент, который все портит в этой оси... При старте с квазидиска она не запускает INITIAL.COM. То есть, первый раз, если ось запускается c HDD или командной строки - файл INITIAL.COM отрабатывает, в нем автоматически делается 1 48 OS.COM, и все далее по списку. А потом, при нажатии "БЛК+СБР" - система грузится с квазидиска, показывает A> _ и все, дальше все ручками..... Это одинаково работает на реальном векторе и в эмуляторе. Эта система была бы идеальным вариантом, но вот этот момент портит все.. Если бы это устранить, то и смысла не было бы мне ковыряться в mdos31h.. Ну кроме саморазвития и самообразования разве что )))

В целом, положив на С INITIAL.COM получил его запуск, то есть, можно конечно на A в INITIAL.COM прописать copy A:X.SUB C:INITIAL.SUB - и положить как X.SUB - файл без строки "COPY ..." специально для C, чтоб не копировал в следующий раз.. эффект будет достаточным, но как то заморочено, и в некоторых случаях copy будет спрашивать, перезаписать ли ей файл, или пропустить... А интересно, при старте из ПЗУ где система будет искать INITIAL.COM ? Нада попробовать. В идеале конечно, если бы она его искала на A. так вроде стабильнее, чтоли..

- - - Добавлено - - -

Простите мне мое невежество, а чем отличаются FH51LBA от FH51LBAreset ?

Improver
14.04.2020, 14:48
Готова свежая версия Т-72, может работать с одним и с двумя КД, с НЖМД в режиме LBA, и теперь ещё вернул работу с дискетами. Что ещё в списке изменений:

- Добавлена проверка наличия подключённого НЖМД, и в случае его отсутствия у дисков А: и В: выставляется обращение к флопикам, а также нулевое значение максимальной дискеты для команды "9". Таким образом, система работает и без НЖМД, но только время старта при этом немного увеличивается за счёт попыток найти жёсткий диск.

- По настоятельным просьбам electroscat, теперь система при старте, если не найден файл "C:INITIALC.SUB", проверяет наличие и выполняет файл "A:INITIAL.SUB". Но, правда, он ищется только на НЖМД, это сделано для устранения зависания системы при старте без дискет.

- Пропатчил запуск команды "В" без параметров... Но пока только это, с работой самой команды ещё не разобрался. Тут такой ньюанс выплыл: если сдвинуть код МДОСа после адреса L_CC49, то начинает глючить ASC, хотя всё остальное работает, вроде, так что сейчас этот патч выглядит, как замена на NOP лишних команд.

- Попутно исправил некритичную ошибку МДОС, замеченную b2m, теперь список команд МДОС оканчивается нулём.

Сам драйвер НГМД, добавленный в БДОС, хотя и практически полностью повторяет код из старой версии Т-72, но требует ещё доработок и оптимизации, а может даже полной переделки... Плюс, хочу обратить внимание, что для его размещения пришлось буфер обмена с флопиками вынести в диапазон 0BC00h -- 0BFFFh, непосредственно перед МДОСом.

Архив с бинарной версией и исходниками Т-72: 72191

- - - Добавлено - - -


А интересно, при старте из ПЗУ где система будет искать INITIAL.COM ?INITIAL.SUB? Старт из ПЗУ не должен отличаться от любых других вариантов запуска, так что будет искать тамже, где обычно.


Простите мне мое невежество, а чем отличаются FH51LBA от FH51LBAreset ?В последнем сделан патч на "БЛК-СБРОС"...

- - - Добавлено - - -


По образцу Improvera патчнул FH51 в режим LBA, заворота больше нет.Теперь остаётся пропатчить РДС 3, для полного комплекта... ;)

electroscat
14.04.2020, 15:26
INITIAL.SUB? Старт из ПЗУ не должен отличаться от любых других вариантов запуска, так что будет.

И я о том же...

При старте с квазидиска она не запускает INITIAL.COM с A, только с С. То есть, первый раз, если ось запускается c загрузочной области HDD или командной строки, с диска А - файл INITIAL.COM отрабатывает, в нем автоматически делается 1 48 OS.COM, и все далее по списку. А потом, при нажатии "БЛК+СБР" - система грузится с квазидиска, показывает A> _ и все, дальше все ручками. Только при наличии INITIAL.SUB на C система его видит в этом случае, и запускает. Это одинаково работает на реальном векторе и в эмуляторе.

По этой причине мне и стало интересно, где система будет искать INITIAL.SUB при загрузке из ПЗУ.

В целом FH51LBA полностью работоспособна, потестил ее, записал на 140 дискету кучу картинок, и все они читаются, так же она увидела то что я писал на 50 и 100 дискету при тесте T-72LBA. Более того, в этой оси отлично работают FDIR и DELETE. Идеальный вариант, если он начнет искать INITIAL.SUB только на A, то это будет на данный момент наиболее практичная ось из законченных. И еще, совсем обнаглею... если бы вместе с чтением INITIAL.SUB c A была версия в сине - желтом цвете со старта - то и вообще было бы круто.. Но последний пункт я и сам смогу решить наверняка.

Спасибо ivagor (https://zx-pk.ru/members/4074-ivagor.html) за прекрасную доработку !


Теперь остаётся пропатчить РДС 3, для полного комплекта... ;)

и mdos31H ...

- - - Добавлено - - -


- Добавлена проверка наличия подключённого НЖМД, и в случае его отсутствия у дисков А: и В: выставляется обращение к флопикам, а также нулевое значение максимальной дискеты для команды "9". Таким образом, система работает и без НЖМД, но только время старта при этом немного увеличивается за счёт попыток найти жёсткий диск.

Вот это круто !!! Теперь это идеальный вариант системы и для записи в ПЗУ !!!


- По настоятельным просьбам electroscat, теперь система при старте, если не найден файл "C:INITIALC.SUB", проверяет наличие и выполняет файл "A:INITIAL.SUB". Но, правда, он ищется только на НЖМД, это сделано для устранения зависания системы при старте без дискет.

И это тоже очень полезный момент !!! очень благодарен !

ivagor
14.04.2020, 16:22
Вспомнил еще одну вещь, которую возможно надо патчить в FH51. Реальщики писали про какие-то проблемы с линией reset где-то там, что ее вроде для некоторых приводов надо отсоединять или что-то в этом духе. Про FH51 не знаю, есть тут это проблема или нет.

electroscat
14.04.2020, 16:30
какие-то проблемы с линией reset где-то там, что ее вроде для некоторых приводов надо отсоединять или что-то в этом духе.

Это при подключении HDD к комбодевайсу, не знаю, может и к реальному контроллеру HDD, схемы вроде идентичны, я например пока не резанул 1 ногу (RESET) у меня система вообще HDD не увидела. Кто то выше писал, помоему, пор победу в этой сфере, возможно Improver (https://zx-pk.ru/members/8649-improver.html) в T-72 это победил, н не уверен, кто то писал.


Да, вот тут. (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055251&viewfull=1#post1055251)

ivagor
14.04.2020, 16:34
Improver исправил (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055251&viewfull=1#post1055251), но я не сравнивал, что именно он исправил и есть ли эта проблема в FH51.

electroscat
14.04.2020, 16:39
Могу на досуге потестировать, припаять 1 вывод к шине. Только по позже, не сегодня. И T-72 новый за одно тоже проверю.

Кстати, почему T-72 ? Теперь это T-14 "Армата" или как минимум T-90 по приемственности. :)

Improver
14.04.2020, 17:06
Improver, желательно изменить переключение регистров по аналогии с тем, как патчили T34 - чтобы одиночное нажатие РУС/ЛАТ и СС переключало соответственно русский/латинский и большие/маленькие.Я бы ещё индикатор "РУС" задействовал к тому же, но что-то начал смотреть БСВВ, как поправить клавиатуру, а там всё шибко мудрёно сделано, просто так не разберёшься... :( А есть информация по этому патчу для Т-34?

- - - Добавлено - - -


Вспомнил еще одну вещь, которую возможно надо патчить в FH51. Реальщики писали про какие-то проблемы с линией reset где-то там, что ее вроде для некоторых приводов надо отсоединять или что-то в этом духе. Про FH51 не знаю, есть тут это проблема или нет.Я исправлял, а в FH51 проблема с линией reset, скорее всего, сохранилась. Надо переделать код проверки готовности НЖМД, лучше работает в таком виде:

; ПП проверки готовности НЖМД
L_D9D9: PUSH D
PUSH B
MVI D, 005h ; пять раз...
L_D9DD: IN 057h ; Регистр данных. Чтение данных в буфер сектора контроллера
ANI 0C0h ; 1100 0000
CPI 040h ; 0100 0000 устройство готово к операции
JZ L_D9F2 ; >> выход из цикла, при выходе A=40h
DCX B
MOV A, B
ORA C
JNZ L_D9DD ; цикл на 65536 попыток
DCR D
JNZ L_D9DD ; цикл на 5*65536 попыток, при выходе A,B,C,D=0
L_D9F2: ANA A ; устанавливаем признаки по А
POP B
POP D
JZ L_D9F8 ; получение кода ошибки и RET
IN 057h ; Регистр данных. Чтение данных в буфер сектора контроллера
RET
;
; ПП чтения ошибки
L_D9F8: POP PSW ; чистка стека
L_D9F9: IN 057h ; Регистр данных. Чтение данных в буфер сектора контроллера
RRC ; сдвиг вправо, бит 0 заносится в признак С.
IN 051h ; Чтение: Регистр ошибок. Содержит признаки последней ошибки.
JC L_DA02 ; если предыдущая команда закончилась с ошибкой
XRA A ; ошибки нет
L_DA02: MOV B, A ; В = код ошибки
IN 057h ; Регистр данных. Чтение данных в буфер сектора контроллера
MOV C, A ; сохраняем результат
ANI 020h ; выделяем ошибку "сбой записи"
ORA B
MOV B, A ; дополняем код ошибки в В
MOV A, C ; восст. Регистр данных.
ANI 0C0h ; выделение сигналов "устройство готово" и "занято"
CPI 040h ; уст.Z если "готово"
MOV A, B ; код ошибки в А
JZ L_E6AB ; переход, если сигнал "готово" (?было на L_DA15)
MVI A, 010h ; 1xH = сброс на цилиндр 0 (x = step rate) (?было ORI)
xxDA15: OUT 05Fh ; Системный сброс (лучше не пользоваться, сходство с 57Н без обнуления микросхем жесткого диска).
L_E6AB: STA L_E873 ; сохраняем код ошибки
ANA A ; устанавливаем признаки по ошибке
RET
Весь секрет -- минимальное использование "OUT 05Fh", у меня он вызывается только в самом крайнем случае.

- - - Добавлено - - -


Кстати, почему T-72 ? Теперь это T-14 "Армата" или как минимум T-90 по приемственности.Вот вычистим от всех багов, тогда будет Т-90 или Армата, а пока пусть модификацией называется... :)

ivagor
14.04.2020, 17:25
А есть информация по этому патчу для Т-34?
Информации нет, но вроде версии в базисе патченые. В 34 язык переключается по F5, в 35 - РУС/ЛАТ.


Весь секрет -- минимальное использование "OUT 05Fh", у меня он вызывается только в самом крайнем случае.
Если я правильно понял, надо убрать out 5Fh из процедуры проверки готовности и оставить в процедуре чтения ошибки. В FH51 аналогично mdos31h, out 5Fh в процедуре проверки готовности есть.

Improver
14.04.2020, 17:54
Если я правильно понял, надо убрать out 5Fh из процедуры проверки готовности и оставить в процедуре чтения ошибки.Да, ещё поправить адрес перехода и одну команду (см.последние пять строк приведённого кода).

ivagor
14.04.2020, 18:23
Правильно я понял, что от L_E6AB можно оставить пару команд?

Improver
14.04.2020, 18:36
Я имел в виду вот эти правки:

JZ L_E6AB ; <<-- было на xxDA15
MVI A, 010h ; <<-- было ORI??
xxDA15: OUT 05Fh
L_E6AB: ...А то в исходном варианте тут диск ресетился даже если был сигнал "готов".

ivagor
14.04.2020, 18:44
Различия в процедурах я не сразу, но разглядел, вопрос вызвало то, что в E6AB в mdos31h заметно больше пары команд, неужели они все лишние?

electroscat
14.04.2020, 18:58
Нашел баг в FH51, думаю, такой же будет и в других системах.. Причем, наверное это даже и не баг, а недоделка какая то программистов прошлого.... При инициализации получается 144 полных дискеты и одна не полная. Последнюю полную я потестил, работает исключительно, все читается и пишется. При тестировании "неполной" ASC показала ее обьем такой же как у полной. Ну это не к системе, а к разработчикам ASC. Тем не менее, при копировании на неполную дискету все "скопировалось", сообщений о том что DISCK FULL или NO SPACE не было. Но при обращении к крайним файлам BDOS System error - и игнорировать Y\N ... Ну и при форматировании последней дискеты DELETE - программа подвисает, прекращается "моргание" светодиода через некоторое время после старта и программа перестает отвечать. Помогает "блк+сбр". Собственно, тут заморачиваться, на мой взгляд не стоит... Обьем памяти достаточный для всего, что есть для вектора, даже, наверное 256 мб... Может просто не показывать последнюю дискету вообще ? Пусть будет их не 145H (325) а 144H (324) - на 256 мб диске ? это же проще, просто количество дискет -1..

ivagor
14.04.2020, 19:14
Максимальное число дискет досы читают из "системного" сектора, сколько там записано, столько и разрешат использовать.

- - - Добавлено - - -

Т.е. в данном конкретном случае надо уменьшить на 1 значение в образе по смещению 84h-85h.

electroscat
14.04.2020, 19:38
Т.е. в данном конкретном случае надо уменьшить на 1 значение в образе по смещению 84h-85h.

Спасибо! Да, как вариант, 100% подходит такое решение !

Improver
14.04.2020, 19:38
Различия в процедурах я не сразу, но разглядел, вопрос вызвало то, что в E6AB в mdos31h заметно больше пары команд, неужели они все лишние?А... Они стали лишними, когда я переделал драйвер, в FH51 пусть лучше останутся (если не менять всё полностью), на линию reset они не влияют.

ivagor
14.04.2020, 20:02
Экспериментальная хака FH51 на тему IDEшного reset. Если что не так, то есть предыдущие варианты (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1056863&viewfull=1#post1056863).

electroscat
14.04.2020, 22:29
Заработала mdos31Hp2G.com. потестил. Медленнее конечно копирует, но не кртично. Удивительно, что инициализация HDD происходит не из BDOS а отдельным куском, который скорее к конфигуратору системы относится, а не к BDOS. Спасибо всем огромное за помощь !!!

Обошелся в общем исходниками БДОС и конфигуратора. Откомпилил два куска, BDOS и часть гонфигуратора, которая HDD инициализирует, сопряг их по адресам, так как они в разных файлах, адреса в ручную прописал, откомпилил, и в HEX редакторе все на свои места прилепил к рабочей системе. Если кому интересно, файл md31hp2g.com вот тут (https://yadi.sk/d/Beuaxi7sQSLTbw). Там же все, что потребовалось для того чтобы пропатчить, дизассемблированный код, куски оригинальные, куски патченные и т.д., все там.

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

Спасибо за вдохновение !

Похоже горячая фаза сражения за mdos31h закончилась, возьму измором, потихоньку, изучив код... Надеюсь в этой жизни таки закончить, не хочу из за этого доса опять сюда вернуться, в "РФ" ))))

KTSerg
15.04.2020, 05:17
А как проверяется наличие/отсутствие заворота образа, при тестировании дискет с номерами 50, 100, 144 (которые тут были упомянуты) ?
Я так понимаю, что (при наличии заворота) дискета 43 заворачивается и портит первую, и т.д. Возможно примерно 86-я снова портит первую. А при проверке на 50-ой, потом тестируется целостность 7-ой дискеты, после записи на 100-ю, проверяется 24-ая, при записи на 144-ую проверять 15-ую, или как ?

(Номера дискет "на вскидку" - могу путать, пардонте - только проснулся)...

ivagor
15.04.2020, 09:51
Внедрил достижения Improvera (LBA и патч ресета IDE) в РДС 3.02, теперь это 3.03. Еще можно ускорить вывод символов (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=950946&viewfull=1#post950946), но это когда-нибудь потом.

electroscat
15.04.2020, 12:22
при записи на 144-ую проверять 15-ую, или как ?

(Номера дискет "на вскидку" - могу путать, пардонте - только проснулся)...

после записи на 144 дискету FDIR *.* показал мусор в заголовках примерно 28 - 40 дискет на непатченной системе, то есть раскидало на какую то часть диска наверное то что было записано.
Патченный дос такого эффекта не имеет, мусор в заголоках не появляется. Это касаемо FH51, в T-72 так же как в RDS - FDIR не работает, там просматривать диапазон дисков вручную похоже нужно, и проверять записанное, ну или записать в этих системах, проверить читабельность, а FDIR запустить уже в FH51, эффект тот же думаю будет.

- - - Добавлено - - -


Внедрил достижения Improvera (LBA и патч ресета IDE) в РДС 3.02, теперь это 3.03. Еще можно ускорить вывод символов (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=950946&viewfull=1#post950946), но это когда-нибудь потом.

Ось работает с 256 мб CF картой, заполнял 100,110,120,130,140,144 дискеты, информация читабельна, так же читабельна и в FH51, мусора нет, нигде, в общем, трудоспособный вариант, спасибо!

electroscat
16.04.2020, 23:22
Доброго времени ! Всем прекрасного настроения !

С mdos31 не так все просто > читаю сектор в буфер при инициализации, выделяю в нем кол-во секторов и головок с ED80H и ED81H, патчу ими функцию деления, для получения адреса, и .... все... на запрос списка файлов на диске "А" ошибка "10" в переменной ошибки - после ввода рассчитанного адреса в порты контроллера и попытке чтения секторов,.... и вывод мусора на экран, вместо списка файлов... Киньте ссылочку плиз, на коды ошибок и назначение портов... Помню, в каких то темах на форуме находил, но сейчас уже голова не соображает, не могу что то найти... Если не сложно, дайте плиз информацию, по портам и кодам ошибок ! Заранее очень благодарен !

Сравнил с T72 2GB - и понял, в A,HL - в mdos31 в функцию деления 24/8 приходит "мусор", видимо с этим связана ошибка, буду искать дальше...
Тем не менее, вопрос про ссылку на информацию о портах и ошибках HDD в векторе актуален.

KTSerg
17.04.2020, 16:29
Загрузил из этой ветки все (что увидел) модификации ДОСов, собрал для каждого образы с одной дискетой, физикой: 10/4/42 для экспериментов на эмуляторах.
Разобрался как подключать образ HDD только в ve27 и emu.
Скачивал архивы с ДОСами: rds303, t72hl, и варианты fh51*.
В emu запустились все, но с t72hl и fh51lba - что-то не понравилось.
В ve27:
rds303 стартонула, но сыплет ошибки диска;
с t72hl видит только квазидиск;
варианты fh51* вообще не запустились :(

В обоих эмулях без проблем загружался с HDD, и работал только старый добрый FH5.1 из древнего архива :)

ivagor
17.04.2020, 16:57
ve27 скорее всего не поддерживает lba.

В emu запустились все, но с t72hl и fh51lba - что-то не понравилось.
Проверял в emu, работали.
Учитывая, что t72hl успешно проверял на реале Improver, а rds303 - electroscat, (а в emu я), то в emu все должно работать.

- - - Добавлено - - -

Модифицированные fh51 electroscat тоже успешно проверял, только я не понял, на реале или в эмуляторе.

- - - Добавлено - - -

Эти версии (1 (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055411&viewfull=1#post1055411), 2 (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055456&viewfull=1#post1055456)) в принципе должны работать и в ve27

electroscat
17.04.2020, 17:06
Модифицированные fh51 electroscat тоже успешно проверял, только я не понял, на реале или в эмуляторе.

Комплексно проверял, сначала в EMU проверил, запустилось, сразу же записал это в образ, который накатил на CF карту, и далее уже проверял на реальном векторе с комбодевайсом. В итоге, могу абсолютно точно сказать, работает и в реале и в "Башкирии".. Разбирал 17 дискет с "BASIC" программами, из архива В.Фиронова, писал их с дискеты на дискету, в разные места диска, из 17 дискет в итоге получил 7 или 8, не потому что что то не докопировалось, а потому что отфильтровал много повторяющегося. И еще, буду доделывать, реально там на 3 - 5 дисков полных информации. Половину этого делал на реальном векторе, половину на эмуляторе. Все осталось в живых, вроде бы, подавляющее большинство программ работают. Так же копировал объемные картинки, по 20 - 32 кб, запускал, тоже все работает. В общем, и на реале и в виртуале проблем не было, На реале - под РДС в основном, немного в FH51. А на эмуляторе наоборот. Тем не менее, и то и другое работает и на реальном векторе и на эмуляторе.

KTSerg
17.04.2020, 18:27
Я для эксперимента делал образ на одну дискету с не большими значениями секторов/головок. Оказалось что это есть проблема. По крайней мере долго не мог вообще заставить ДОС загрузиться с образа.
Начал разглядывать исходник загрузчика... оказалось, что для загрузки ДОСа отслеживается количество секторов на голову, после переполнения увеличивается номер головы, но при переполнении номеров голов, не происходит увеличение дорожки. Видимо подразумевалось, что загружаемая программа уместится на одну дорожку. Для больших образов с большими значениями секторов/головок это действительно так. Но у меня сначала ДОС на одну дорожку не помещался ( оказалось что секторов*головок*512 < размера ДОСа )... кто бы знал... :)

ivagor
17.04.2020, 18:34
KTSerg, в ve27 LBAшные варианты работают?

KTSerg
17.04.2020, 19:37
KTSerg, в ve27 LBAшные варианты работают?
Да эти t72hp и t72hp2 работают.
А почему "fdir *.*" не во всех версиях работает (в hp и hp2 тоже не работает) ?
И ещё странный момент, в этих t72*, после старта, по команде "9" сообщается, что "B: 0005" - что за 5-ая дискета? при переключении на диск B: - начинают сыпаться ошибки диска.

ivagor
17.04.2020, 19:46
Да эти t72hp и t72hp2 работают.
Они как раз не LBAшные, значит все же в ve27 LBA не поддерживается.

Improver
17.04.2020, 19:50
А почему "fdir *.*" не во всех версиях работает (в hp и hp2 тоже не работает) ?Не работает во всех мдосах, в т.ч. РДС, кроме mdos31h и 30h, если не ошибаюсь. И проблема с Т72 не в драйвере жёсткого диска, а в небольшой несовместимости с выводом информации, как я понимаю. Я начал копать fdir, он заработал, но пока стабильного результатов нет. Почемуто часто выводит одно содержимое на все дискеты...

И ещё странный момент, после старта, по команде "9" сообщается, что "B: 0005" - что за 5-ая дискета? при переключении на диск B: - начинают сыпаться ошибки диска.Это моя подстава... Для разнообразия я там задал в начальных установках системы, чтобы на В: подключалась пятая дискета, можно изменить. А что за ошибки сыпятся? А в других досах на пятой дискете всё нормально показывается?

KTSerg
17.04.2020, 20:29
...
Это моя подстава... Для разнообразия я там задал в начальных установках системы, чтобы на В: подключалась пятая дискета, можно изменить. А что за ошибки сыпятся? А в других досах на пятой дискете всё нормально показывается?
Не, просто этой дискеты в образе физически нет. Я ж грю, образ экскриментальный, на одну дискету. ;)
Ни чего страшного, просто обычно В: не определён, а тут номер за пределами размеров образа...

- - - Добавлено - - -


Они как раз не LBAшные, значит все же в ve27 LBA не поддерживается.
Да меня собственно emu - устраивает, экраном не дёргает, запускается в окне.
Единственно, в ve27 активность всех дисков видно - удобно для контроля при отладке программ с доступом к дискам.

- - - Добавлено - - -


Не работает во всех мдосах, в т.ч. РДС, кроме mdos31h и 30h, если не ошибаюсь. И проблема с Т72 не в драйвере жёсткого диска, а в небольшой несовместимости с выводом информации,...
Что-то припоминаю... когда разбирался с утилитами для работы с HDD, копался в исходниках, там попадались какие-то странные (с точки зрения обычного МДоса) вызовы функции для вывода текста на экран. Специфические они были какие-то.

electroscat
18.04.2020, 20:20
Доброго времени друзья!

Поделюсь немного затыком по mdos31h, читаю в буфер два сектора, все отлично. Решил читать именно два сектора как в оригинале, потому что чтобы сказать системе, что прочитан только один сектор - нужно дизассемблировать и разбирать остальной код, или его часть. В итоге, читаю в буфер с EB00 по EEFF - все отлично читается, и выводится на экран (если например чтение вызвано командой D) в виде названий файлов. Все четко. после этого читаются следующие два сектора, но читаются они с адреса второго сектора, который уже был прочитан, и выведен на экран, все что было в буфере в адреса ED00 - EF00 (второй сектор) повторно читается уже по адресу EB00 - ECFF, и следующий сектор с адреса ED00 по EEFF свежий... В итоге половина информации на экране задвоенная, и естественно, ничего не работает. Точнее, маленькие текстовые файлы удается выводить на экран, которые в один сектор помещаются, читается initial.sub - но в лучшем случае он ничего не запускает, в худьшем - уносит куда то ..

Может у кого то есть мысли по этому поводу? От куда формируются переменные XE86D и XE86F? В тексте не нашел что либо, что могло бы сертезно влиять на эти переменные, однако же в переменной XE86F, в младшем разряде как раз и есть отличие на 1 от того, что приходит в непатченной оси..
Если кому то любопытно будет взглянуть на имеющийся код, или куски или сам mDos31 c текущими изменениями - все тут! (https://yadi.sk/d/Beuaxi7sQSLTbw)

На этом, пока остановился, будет время продолжу поиски.

И еще, засунул в ПЗУ загрузчика FH51LBA - и обновил тут (https://yadi.sk/d/Da_D6vfaeuGB3w). Микросхемы уже в Москве, скоро потестирую на реальном векторе. При загрузке из ПЗУ система ищет INITIAL.SUB на A:, а вот после записи ее на системную область С: ищет на С:... по этому пришлось прописать у себя инит, который копирует слегка измененный инит на C. Не очень красиво, но работает. Если будет возможность исправить этот баг, пожалуйста, сделайте, если система инит будет только на А: искать, или не найдя на С: таки искать на A: - будет супер просто, потому что на реале заморочено стартовать с подгруженным из файла квазидиском ))

KTSerg
18.04.2020, 21:46
...При загрузке из ПЗУ система ищет INITIAL.SUB на A:, а вот после записи ее на системную область С: ищет на С:... по этому пришлось прописать у себя инит, который копирует слегка измененный инит на C. Не очень красиво, но работает. Если будет возможность исправить этот баг, пожалуйста, сделайте, если система инит будет только на А: ...
Не вижу проблемы.
С моей точки зрения логичный вариант.
При первом старте инит запускается с А: - записывает OS.COM, копирует на C: "рабочий" инит, в котором нет копирования OS на С:, а предусмотрен запуск рабочих программ, если это надо.
При повторном запуске, система грузится уже с Кваза, и инит исполняется уже "рабочий".
Или в что не в тему?

electroscat
18.04.2020, 22:08
При первом старте инит запускается с А: - записывает OS.COM, копирует на C: "рабочий" инит, в котором нет копирования OS на С:, а предусмотрен запуск рабочих программ, если это надо.
При повторном запуске, система грузится уже с Кваза, и инит исполняется уже "рабочий".
Или в что не в тему?

Вот я именно так и сделал сейчас.. Но это лишнее, ведь скорость загрузки инита и всех программ с квазидиска и с HDD - одинакова, а иногда мне кажется что с HDD все грузится даже быстрее. Ну а тут еще расход времени на копирование, и прочее, при первом старте. Ну и... есть у меня INITIAL.SUB на A: и проблем никаких, для всех систем кроме РДС исчерпывающий. А тут получается, что все системы, старшующие с таким инитом будут копировать на C версию инита и что либо еще, а зачем ?
Если бы зто было стандартом для всех систем, то да, но если это в одной системе так, а в остальных ненужные действия - то увы, не айс... В целом, решение Improver (https://zx-pk.ru/members/8649-improver.html) в T 72 наверное самое оптимальное - есть инит на C: - от туда, если нет - то с А:... Вариант с инитом на C: удобен на виртуалке возможно, а на реальном векторе, ну так ...

KTSerg
19.04.2020, 04:21
... В целом, решение Improver в T 72 наверное самое оптимальное - есть инит на C: - от туда, если нет - то с А:... Вариант с инитом на C: удобен на виртуалке возможно, а на реальном векторе, ну так ...
При использовании виртуалки, EDD уже забит нужным софтом, и при первом запуске его (нужный софт) не нужно дополнительно копировать с FDD(HDD).
А на реальном, при первом запуске - рутина... копирование нужного с FDD(HDD) на EDD, эту задачу и решает инит на А:. При последующих запусках, инит с С: делает только необходимое (уже без перезаписи софта).
Значит по идее, система с двумя инитами более полезна как раз на реале, а не на виртуалке.

Но это лишь догадки, т.к. этой фичей не пользуюсь :(

Возможно, нужно выслушать автора этой идеи. И тогда будет ясен замысел творца ;)
А то получается как в том анекдоте:
- Вы не любите ... ? Да Вы просто не умеете их готовить!

electroscat
19.04.2020, 09:38
На реале с HDD квазидиск вообще нужен исключительно для системных нужд, у меня даже была идея, если бы я решил создать свой ДОС, я бы квазидиск полностью отвел под ОЗУ и системные нужды, потому что HDD работает на мой взгляд быстрее чем квазидиск, и места на нем гораздо больше и т.д. А с квазидиском системе проще работать, по моим ощущениям. Ещё, образ HDD легко переносится в эмулятор и обратно, и тут тоже нужно чтобы все было совместимо, по этому и в эмуляторе у меня квазидиск пустой и не используется никак, кроме записи на него оси на системные дорожки. В целом, это мое мнение, а так, на вкус и цвет фломастеры разные. Ну и я не утверждаю, что так или иначе правильно, просто делюсь мнением, вот.

Improver
20.04.2020, 09:24
Возможно, нужно выслушать автора этой идеи. И тогда будет ясен замысел творцаСразу хочу сказать, что идея с INITIALC.SUB на КД и INITIAL.SUB на А: не моя, она ещё была реализована на Т-34 (а может и ранее). Единственное, что я сделал в последней версии Т-72, это то, что совместил оба варианта. Ну а в остальном, да, это удобно на реале, в определённой степени удобно и в эмуляторе, хотя я не могу похвастать продвинутым использованием системы этих скриптов начальной загрузки. По большому счёту, у меня там выполняется только изменение цвета текста, да команда "D", для напоминания содержимого диска, и обе эти команды для меня совершенно не принципиальны на старте. И копировать при каждом холодном старте что-то на С: совсем не обязательно.


если бы я решил создать свой ДОС, я бы квазидиск полностью отвел под ОЗУ и системные нуждыПолностью под ОЗУ можно отвести только ERAM, но если хотите выжать всё ОЗУ из квазидиска, то незачем изобретать велосипед, можно просто попробовать МДОС и программы, предназначенные для КД с доработкой Баркаря (http://www.sensi.org/scalar/categories/barkar/). А под системные нужды и временные файлы квазидиск и так был рассчитан изначально.

И ещё такой момент по КД, могу похвалиться... На моём КД уже больше года хранится информация, каждый раз включая Вектор я вижу, что всё на месте, так что и систему я оттуда гружу, и утилитки, и нужные программы. Батарейка реально добавляет юзабельности квазидиску, превращая его в просто диск. :)

electroscat
20.04.2020, 11:08
Полностью под ОЗУ можно отвести только ERAM, но если хотите выжать всё ОЗУ из квазидиска, то незачем изобретать велосипед, можно просто попробовать МДОС и программы, предназначенные для КД с доработкой Баркаря (http://www.sensi.org/scalar/categories/barkar/). А под системные нужды и временные файлы квазидиск и так был рассчитан изначально.

Почитал описание КД Баркаря в радиолюбителе, в целом, штука интересная, было бы круто, если бы появилась прошивка для комбодевайса c такими доработками, но.. на сколько я понял, КД с такими переделками уже не работает с обычными операционными системами, вот тут и есть все неудобство.. В общем, если бы не ограничения во времени, то наверняка можно было бы реализовать на плис схему, которая смогла бы переключаться из режима Баркаря в режим не модифицированного КД, ну и чуть модифицировать систему, использующюю КД Баркаря - чтобы переключала плис в режим КД Баркаря. Идея такая промелькнула, но времени на реализацию вряд ли найду, и заниматься этим скорее не буду.


И ещё такой момент по КД, могу похвалиться... На моём КД уже больше года хранится информация, каждый раз включая Вектор я вижу, что всё на месте, так что и систему я оттуда гружу, и утилитки, и нужные программы. Батарейка реально добавляет юзабельности квазидиску, превращая его в просто диск. :)

У вас аккумулятор с контроллером заряда подключен к памяти КД ? Это в целом можно и на комбодевайсе реализовать наверное. Посмотрю схему. Спасибо !

ivagor
20.04.2020, 11:12
Combodevice, если я не путаю, поддерживает доработку Баркаря. Во всех современных эмуляторах в качестве кваза (если не брать экзотические конфиги) именно Баркарь и все работает. Про FPH51 я забыл, надо будет доработать (LBA и прочее), это лучший дос для дискового бейсика.

electroscat
20.04.2020, 11:21
Внедрил достижения Improvera (LBA и патч ресета IDE) в РДС 3.02, теперь это 3.03. Еще можно ускорить вывод символов (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=950946&viewfull=1#post950946), но это когда-нибудь потом.

А можно ли внедрить в эту прекрасную систему возможность запуска какого нибудь батника при старте, по аналогии с INITIAL.SUB у других систем ? причем только при первом запуске, этого будет вполне достаточно.

- - - Добавлено - - -


Combodevice, если я не путаю, поддерживает доработку Баркаря.

Вот это поворот... :) то есть квазидиск с доработкой баркаря работает так же как и не доработанный, но если есть доработка и поддержка в ДОСе - то можно всю экранное ОЗУ переносить на КД ?


Во всех современных эмуляторах в качестве кваза (если не брать экзотические конфиги) именно Баркарь и все работает.

Спасибо за информацию !

Improver
20.04.2020, 11:23
КД с такими переделками уже не работает с обычными операционными системамиПрекрасно работает.


У вас аккумулятор с контроллером заряда подключен к памяти КД ?Там всё гораздо проще. Просто два диода и батарейка, подключённая на питание памяти SRAM: вот тут схема (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=996956&viewfull=1#post996956).


Это в целом можно и на комбодевайсе реализовать наверное.Можно, конечно.

ivagor
20.04.2020, 11:27
можно ли внедрить в эту прекрасную систему возможность запуска какого нибудь батника при старте, по аналогии с INITIAL.SUB у других систем ?
Затрудняюсь сказать, не изучал это направление и оно, если честно, за пределами сферы моих интересов.


Вот это поворот
В этой теме (https://zx-pk.ru/threads/29377-kvazidisk-dorabotka-barkarya.html) можно скачать пару тестов.

ivagor
20.04.2020, 17:27
Внедрил в FPH51 модификации Improvera (LBA и "меньше 5F") и пропатчил рестарт доса, увеличил цифру версии, чтобы отличать.

electroscat
20.04.2020, 19:11
Внедрил в FPH51 модификации Improvera (LBA и "меньше 5F") и пропатчил рестарт доса, увеличил цифру версии, чтобы отличать.

У меня эта штука на реале даже не запустилась, только черный экран после нажатия "блк+сбр", а в эмуляторе все работает. То есть получается, что в комбодевайсе КД не имеет доработок Баркаря ? Я ведь правильно понимаю, это ДОС с поддержкой КД Баркаря? А есть еще какие нибудь отличия от, например, FH51 ?

ivagor
20.04.2020, 19:13
electroscat, а что говорят про комбодевайс тесты из той темы (https://zx-pk.ru/threads/29377-kvazidisk-dorabotka-barkarya.html)?

electroscat
20.04.2020, 20:03
electroscat, а что говорят про комбодевайс тесты из той темы (https://zx-pk.ru/threads/29377-kvazidisk-dorabotka-barkarya.html)?

lord runer работает, бейсик не пробовал пока, а Jet Set с поддержкой КД Баркаря под Z80.

FPH511 ведет себя точно так же как и FPH52-LBA....

ivagor
20.04.2020, 20:20
electroscat, я про тест KTSerg (https://zx-pk.ru/threads/29377-kvazidisk-dorabotka-barkarya.html?p=973560&viewfull=1#post973560) и свой (https://zx-pk.ru/threads/29377-kvazidisk-dorabotka-barkarya.html?p=973583&viewfull=1#post973583).

Syntal
20.04.2020, 20:51
electroscat, а что говорят про комбодевайс тесты из той темы (https://zx-pk.ru/threads/29377-kvazidisk-dorabotka-barkarya.html)?

Доработка Баркаря изначально в Combodevice присутствует. Я проверял с тестами KTSerg, может конечно не со всеми. Если что-то не пашет дайте знать!

electroscat
20.04.2020, 22:31
Тесты работают, но что они показывают, не понятно ))

https://sun9-57.userapi.com/c857624/v857624432/1dda34/J8r6t-sBgzw.jpghttps://sun9-46.userapi.com/c855720/v855720432/22176e/MJzp7w2BYHw.jpg

ivagor
21.04.2020, 07:36
electroscat, авторы, в частности я, скорее всего смогут интерпретировать результаты, но эти результаты хотелось бы сначала узнать. Или в форме описаний отличий от картинок из эмуляторов (может даже картинка на реале совпадает с вариантом VV, например. С emu точно не совпадает, т.к. в этом случае дос FPH бы работал) или просто фото с реала.

electroscat
21.04.2020, 09:51
Из реала снимки были в прошлом сообщении,..

В VV тест с желтыми кубиками точно такой же как и на реале:

https://sun9-70.userapi.com/c856028/v856028072/201521/OmXOmK9FLSY.jpg

а тест с плюсами и минусами отличается неколько, выглядит вот так:

https://sun9-56.userapi.com/c857128/v857128072/16cd27/rqoNpTqWPqs.jpg

а вот скрины из EMU:

https://sun9-14.userapi.com/c856028/v856028072/2014ed/HnmgWFuHd9w.jpghttps://sun9-19.userapi.com/c856028/v856028072/201519/iiY-Dqm7x6U.jpg

интересно, в EMU тест с плюсами и минусами похож немного, но не на 100%, 1 в 1, а с кубиками отличается сильно.

Improver
21.04.2020, 09:57
Загрузчик операционной системы с НЖМД с поддержкой LBA: 72303
Предназначен для загрузки "с магнитофона" на Векторах с прошивкой без поддержки НЖМД, исходный код после небольшой настройки можно использовать в своих загрузчиках. Бинарник состоит из двух частей, подпрограммы пересылки в рабочую область (0C000h) и собственно загрузчика. Работает с любыми дисковыми МДОС и РДС, в том числе может запускаться из под ДОС в виде COM-файла, проверял в эмуляторе EMU и на реале. Умеет грузить программы из загрузочной области по заданному там адресу, т.е. не обязательно в 00100h.

Кстати, ivagor, в этом загрузчике реализовал "потоковую" загрузку, с НЖМД грузятся подряд сразу все сектора с операционкой, работает без проблем. :)

ivagor
21.04.2020, 10:15
Improver, я загрузчики с hdd не трогал, это кто-то другой постарался.
electroscat, к сожалению я не вижу картинок, ни в предыдущем сообщении ни в последнем.

Improver
21.04.2020, 10:45
Improver, я загрузчики с hdd не трогал, это кто-то другой постарался.Я не про загрузчики, это был ответ на тот познавательный вопрос (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055502&viewfull=1#post1055502)... И ещё, если выставить режим "читать 255 секторов", то процесс чтения этим числом не ограничится, будет читать до отмены, не ошибаюсь.

- - - Добавлено - - -

И немного занудства... electroscat, вопросы по работе КД на комбодевайсе лучше обсуждать в соответствующей теме (https://zx-pk.ru/threads/22217-combodevice.html). :)

ivagor
21.04.2020, 10:51
Я не про загрузчики, это был ответ на тот познавательный вопрос
Второпях пропустил запятую при чтении и очень удивился, теперь понятно

electroscat
21.04.2020, 10:51
electroscat, к сожалению я не вижу картинок, ни в предыдущем сообщении ни в последнем.

Может на яндекс диске сможете посмотреть, вот ссылка (https://yadi.sk/d/EtMQTQdJJuUQig).

ivagor
21.04.2020, 10:53
Может на яндекс диске сможете посмотреть, тут.
Ссылку не вижу и перейти не могу, увы.

electroscat
21.04.2020, 10:54
Вот ссылка. (https://yadi.sk/d/EtMQTQdJJuUQig)

ivagor
21.04.2020, 11:02
Получается в комбодевайсе перепутаны старшие биты порта 10h. Чтобы заработали досы FPH надо чтобы было как в emu

Ramiros
21.04.2020, 11:18
Вот ссылка. (https://yadi.sk/d/EtMQTQdJJuUQig) Скачай свежую версию VV, в ней КД работает правильно.

b2m
21.04.2020, 11:43
Получается в комбодевайсе перепутаны старшие биты порта 10h.
Если точнее, то D7 и D5.

ivagor
21.04.2020, 11:48
А по моему D6 и D7

b2m
21.04.2020, 11:53
Ты опять прав, я попутал.

electroscat
21.04.2020, 12:07
Подскажите пожалуйста, а практически как это можно исправить ? Достаточно ли поменять что то в схеме прошивки плис, или нужно резать дорожки и паять мгтф к плате комбодевайса ?

b2m
21.04.2020, 12:35
Поверхностно посмотрел схему комбодевайса, вроде достаточно поменять прошивку.
Почитал тему про комбодевайс, прошивка делалась схемным вводом, исходника на Verilog нет. Тут я пас.

electroscat
21.04.2020, 13:20
Доработка Баркаря изначально в Combodevice присутствует. Я проверял с тестами KTSerg, может конечно не со всеми. Если что-то не пашет дайте знать!

Дорогой товарищь !

Обнаружилась ошибка в комбодевайсе... Посмотрите пожалуйста. Кстати, у меня прошивка не основная, а с исправлением под форматирование FDD, может вы эти исправления в какой то старой версии исходников сделали ? (прошил не исправленной прошивкой, тесты показывают то же самое)... Жаль в прок не прошил себе еще и стандартную прошивку, опять нужно будет ставить Quartus.. Прошью стандартную прошивку, и попробую еще. Побитно стандартная и исправленная под флоп сильно отличаются, хотя всего навсего схематически выкинута одна микросхема.. или две.

ivagor
21.04.2020, 15:37
если выставить режим "читать 255 секторов", то процесс чтения этим числом не ограничится, будет читать до отмены, не ошибаюсь.
Это было бы здорово, но судя по примеру (https://wiki.osdev.org/ATA_PIO_Mode#ATA_Driver) в pio28 можно прочитать 1-256 секторов, в pio48 - 1-65536. Но я совсем не специалист по hdd, возможно я что-то недопонял.

Improver
21.04.2020, 17:00
Это было бы здорово, но судя по примеру (https://wiki.osdev.org/ATA_PIO_Mode#ATA_Driver) в pio28 можно прочитать 1-256 секторов, в pio48 - 1-65536. Но я совсем не специалист по hdd, возможно я что-то недопонял.Да, там верно написано, это я всё перепутал, после 256-го считанного сектора надо будет заново выставлять параметры. Это получается, что через каждые 128 килобайт будет небольшая задержка на выставление параметров чтения НЖМД, в целом неплохо...

ivagor
22.04.2020, 08:08
Пара не сильно глубоких мыслей про скорость чтения.
В пределе (полностью развернутый цикл) чтение стремится к 28 байтам/такт. С использованием z80 можно оптимизировать до 22 тактов/байт. Для достижения аналогичной скорости с 8080 можно было сделать чтение данных hdd с использованием команды pop, но какой контроллер есть такой уж есть.

Improver
22.04.2020, 16:05
ivagor, интересно, какая теоретическия скорость чтения у флоповодов и у КД? Если её тоже выразить в тактах на байт... И есть ли серьёзные отличия в скорости чтения в разных ОС?

ivagor
22.04.2020, 16:33
Про теоретическую скорость чтения с реального дисковода так сразу затрудняюсь сказать, но могу привести оценки сверху по максимальной скорости чтения в ДОСах:
"Большая" процедура чтения
mdos31 - 68 тактов/байт
"Короткая" процедура чтения
f51 - 80 тактов/байт
t34, t72 - 76 тактов/байт
При оценке считал, что ожидание готовности данных от дисковода всегда говорит "готов", чтение идет в максимальном темпе, что вряд ли соответствует реальности. Но можно видеть, что даже при таком допущении процедура чтения с fdd примерно в 2 раза (или даже >2 раз) медленнее процедуры чтения с hdd (сравниваю с этими (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055656&viewfull=1#post1055656) цифрами, в классике Фролова чтение с hdd было медленнее).

- - - Добавлено - - -


в классике Фролова чтение с hdd было медленнее
Хотя нет, в FH51 у него было 34 такта/байт

LeoN65816
23.04.2020, 01:34
интересно, какая теоретическия скорость чтения у флоповодов и у КД? Если её тоже выразить в тактах на байт...
ВГ93 выплёвывает байты каждые 32 мкс, итого 96 тактов/байт.

electroscat
24.04.2020, 17:34
Залил предоставленную Syntal (https://zx-pk.ru/members/1553-syntal.html) обновленную прошивку - и все заработало как надо, тест показывает соответствие тестам в EMU. В связи с этим заработала FPH52. Все запустилось. Разницы в целом не понял, я так понимаю, поддержка квазидиска Баркаря в совокупе с операционной системой его поддерживающей дает возможность запускать более обьемные программы, до 46 или 48 кб ? Если честно, не пойму чем проверить, у меня и так вроде все запускалось. Подскажите пожалуйста, чем можно проверить конкретные блага, предоставляемые FPH52 ?

А, вот, кинул перемычку на RESET, теперь он подключенный, и все работает, пробовал последние версии T72, FH51, R3 и FPH52, ничего не подвисает... Начинаю даже думать, что это Transcend 128 mb карта только с сигналом RESET не дружила, и портила файлы при записи... Было дело.. МОжет те карты которые я использую этим не страдают..

И еще, о минусах... И у T72, и у FPH52 есть разные проблемы с ASC... У Т72 после перемонтирования диска 9 А:2 например (с любого на любой) из ASC выкидывает, показывает курсор > без буквы диска, и из этого реально выйти только блк+сбр. ПРичем шрифт в досе кусочно в цветах ASC.
Предложения (дружеские) было бы неплохо, чтобы T72 после вызова рестарта системы прописывал свою стандартную цветовую таблицу в РУ2. Понятно, что время, нужно ожидать прерывания, потом по 4 - 6 раз перезаписывать каждый цвет... Но зато всегда все красиво )))
Ну а по поводу того что ASC вылетает при наборе 9 A:X тут вряд ли что поделаешь, похоже та версия которая у меня не вылетает, и на FH51 не вылетает, как то заточена в этом под mdos31 - а FH51 на него во многом похож... В T72 этот "патч" не работает. В целом, другие версии ASC вылетают и в перечисленных досах при вводе этой команды... ПО этому тут ничего по моему особо не сделаешь..

Касаемо FPH52 - она стартует на ура, все показывает и даже при смене диска не вылетает из ASC. НО при перезапуске системы (ввод+блк и запуск с квазидиска) ASC просто не показывает файлы, а при нажатии БЛК+СБР пишет на черном экране read error в рамочке... и при остальных перезапусках (стартах системы с квазидиска) делает то же самое сразу... И только повторный старт с HDD до перезапуска с квазидиска этого эффекта лишает. Как то так.

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

И по сему мы вроде как подошли к написанию, или адаптации чего либо более менее адекватного под существующие системы.

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

Спасибо Вам огромное друзья что занимаетесь всем этим, и прошу вас меня простить, за то что моя квалификация не очень позволяет во всем этом учавствовать на уровне, на котором хотелось бы :v2_dizzy_heart:

ivagor
24.04.2020, 17:44
чем можно проверить конкретные блага, предоставляемые FPH52 ?
Есть пара досовских программ, использующих преимущества FPH, из них одна действительно важная - это спецверсия дискового бейсика BASDFP, которую можно взять например здесь (http://www.sensi.org/scalar/ware/687/). В ней дисковые операции без таких задержек, как в "обычном" дисковом бейсике.


Предложения (дружеские) было бы неплохо, чтобы T72 после вызова рестарта системы прописывал свою стандартную цветовую таблицу в РУ2.
Можно прописать в INITIAL.SUB соответствующую команду (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055827&viewfull=1#post1055827)

Если сравнивать CO и ASC, то CO имхо круче, зато ASC заметно универсальнее в плане поддержки ДОСов.

electroscat
24.04.2020, 18:44
Можно прописать в INITIAL.SUB соответствующую команду (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1055827&viewfull=1#post1055827)
Да, это сработало, теперь цвет по крайней мере остается таким же как и был до запуска ASC, спасибо !

ВОт, проявилось, с RESET - при подключенном RESET почему то не могу писать на жесткий диск, пока не отпаял перемычку - так и не смог поправить INITIAL.SUB. Правил в ED.COM - вроде сохраняет, при попытке загрузиться изменений нет... Потом попробовал сохнанить изменения - и загрузить сразу другой файл, но все повисло... Ну и в целом нестабильно даже система загружается, раз в пять - шесть загрузок может не стартануть система, или вообще показать какие то желто - синие полосы вертикальные вместо системы.. В общем, с RESERом мне кажется в апаратную часть упирается все, не в програмную, потому что общая нестабильность заметна.. Не важно какая система, даже до системы, и загрузчик даже раз не стартанул... Вот.Так что можно просить Syntal чтобы задействовал вывод идущий на RESET - для переключения памяти в режим второго квазидиска :) ПОтому как без RESET все устойчиво и прекрасно работает !! А с ним вот наоборот..

electroscat
24.04.2020, 20:47
Если сравнивать CO и ASC, то CO имхо круче, зато ASC заметно универсальнее в плане поддержки ДОСов.

Я в этом и не на секунду не сомневаюсь. Но, ASC конкретно с HDD вообще не приспособленна работать, только одна версия найдена, которая по крайней мере после команды перемонтирования диска не вылетает, и то только в 2х системах это происходит.. То есть касаемо HDD - не так уж она и универсальна.. Ну а говорить о каких то специальных элементах для управления перемонтированием дисков, как например в Vector Comander говорить вообще не приходится..

Improver
28.04.2020, 12:57
Новая версия Т-72, проверял на реале и эмуляторе:

1. Первая попытка создать некую модульность для ОС, теперь в специальном файле определений "equates.inc" можно настроить режимы компиляции системы, для чего служат две первые строки, "#DEFINE NoFDD" и "#DEFINE NoHDD". Раскомментировав первую строку можно отключить добавление драйвера флоповода, а вторая отключает добавление драйвера НЖМД. Всего, выходит, можно получить четыре варианта системы, но вот только в чисто-квазидисковой буквы дисков А: и В: остаются, при обращении к ним выдаётся ошибка.

2. По пожеланию ivagor изменено переключение клавиатуры русский/латинский, теперь это работает так:
- одиночное нажатие клавиши РУС/ЛАТ -- переключение языка клавиатуры
- нажатие РУС/ЛАТ и любой клавиши -- изменение языка клавиатуры без переключения
- нажатие СС и любой клавиши -- изменение регистра символов (заглавные/маленькие)
- нажатие СС + Ф5 -- переключение регистра символов, типа капслок.
- комбинации на переключение кодовых страниц (АР2 + СС, АР2 + РУС/ЛАТ и т.д.) сохранились, как в предыдущих версиях. (Как и что там переключается затрудняюсь сказать, т.к. на эмуляторе проверить сложно, винда эти комбинации перехватывает, а на реале забываю поиграться.)

3. Ну и как обычно, исправил найденные баги и добавил новые. :)

Архив с исходниками: 72417
Внутри архива дополнительно есть папка "Variants" откомпилированными тремя альтернативными вариантами системы:
os-t72f.rom -- только флоповоды
os-t72h.rom -- только жёсткий диск
os-t72k.rom -- только квазидиск (один или два)

ivagor
28.04.2020, 13:08
Пока не пробовал, но осудить (или просто спросить) уже хочется

- одиночное нажатие клавиши РУС/ЛАТ -- переключение языка клавиатуры
- нажатие РУС/ЛАТ и любой клавиши -- изменение языка клавиатуры без переключения
- нажатие СС и любой клавиши -- изменение регистра символов (заглавные/маленькие)
- нажатие СС + Ф5 -- переключение регистра символов, типа капслок.
Правильно ли я понимаю, что
1. Нажатие и отпускание только РУС/ЛАТ сменит язык
2. Нажатие РУС/ЛАТ + буквенная клавиша сменит язык на время ввода буквы
3. Нажатие СС + буквенная клавиша сменит регистр на время ввода буквы
4. Нажатие СС+F5 сменит регистр
Смущает разница п. 1 и 4. Может в обоих случаях сделать +F5 или наоборот в обоих случаях только нажатие и отпускание одной клавиши (РУС/ЛАТ или СС), чтобы было единообразно?

Improver
28.04.2020, 13:16
Правильно ли я понимаю, что...Да, всё так и есть.


Смущает разница п. 1 и 4. Может в обоих случаях сделать +F5 или наоборот в обоих случаях только нажатие и отпускание одной клавиши (РУС/ЛАТ или СС), чтобы было единообразно?До этого так и было, переключение по +Ф5. :) Можно сделать и переключение регистра одиночным нажатием СС, но я не вижу особого смысла -- это потребует выполнения дополнительных команд во время прерывания, а само это переключение на Векторе будет практически невостребованым. Как капслок на ПС. :) Вернуть обратно перключалку по +Ф5?

ivagor
28.04.2020, 13:28
Идею понял, тогда можно ли зафиксировать и оставить изменения кроме одного - сменить CC+F5 на F5?

Improver
28.04.2020, 13:46
сменить CC+F5 на F5?Можно, если это ни у кого больше не вызывает возражений.

electroscat
06.05.2020, 20:31
Доброго времени дорогие товарищи! Модернизирован комбодевайс до двух квазидисков, вчера и сегодня утюжу его разными тестами, ошибок пока не выявилось, все работает исключительно, вот тут (https://yadi.sk/d/fyKSR_HCb3cADQ) можно посмотреть результаты тестов и работы (загрузки) T72. Тест Ivagor на доработку Баркаря работает и на 10 порту и перекомпиленный на 11 порт, одинаково, результат как в EMU. Пробовал разными способами копировать файлы с квазидиска, на квазидиск, запускать с него, изменять, копировать в разных носителей на квазидиск и обратно, заполнять диск D до конца, форматировать и т.д. С файлами все идеально работает. Нашел несколько странностей в работе T72 с квазидиском D, но чтобы понять, странности это в работе оси или конкретного решения по квазидиску - нужно проделать то же в эмуляторе, и тут у меня к вам вопрос... Как сэмулировать в EMU (Башкирии) два квазидиска? Подскажите пожалуйста ?

b2m
06.05.2020, 23:17
Как сэмулировать в EMU (Башкирии) два квазидиска?
Вот в этом сообщении (https://zx-pk.ru/threads/8399-f-a-q-po-emulyatoru-bashkiriya-2m.html?p=1028293&viewfull=1#post1028293) есть конфиг.

electroscat
07.05.2020, 00:25
Таки да, тест в эмуляторе подтвердил, что это не схемотехническое решение виной в таком проявлении, в эмуляторе T72 ведет себя таким же образом..

- Эксперимент таков - копирую любой, заведомо более объемный диск на диск D при помощи утилиты COPY.com Естественно, через какое то время получаю надпись disck full, или типа того... после этого форматирую диск командой 8 D: F - и при попытке что то записать на диск D получаю Output disk full, не смотря на то, что перед этим команда D показала на диске D - нет файлов. То есть, диск отформатирован, файлов нет, но для системы он так и остался полным. То же самое происходит с диском C. Если удалять файлы командой E *.* - результат в корне другой, файлы удаляются, и можно что то писать, но форматирование не дает такого эффекта. Когда пытаешься писать на диск после форматирования, получаешь сообщение что на диске нету места, но в заголовке остаются имена файлов, файлы не запускаются,.. иногда их запуск уносит куда то...

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

Так что комбодевайс теперь тоже с двумя квазидисками. Готов тестировать T72 по полной программе на реальном векторе:)

Ну и таки назревает все больше и больше потребность в хорошем файловом менеджере для T72, ибо ASC вообще не понимает D диск.. только консоль ...

KTSerg
07.05.2020, 07:13
...
Ну и таки назревает все больше и больше потребность в хорошем файловом менеджере для T72, ибо ASC вообще не понимает D диск.. только консоль ...
Ещё раз спрошу, а файловый менеджер от CP/M тоже не работает ?
Или просто нужны какие-то специфические функции, которые есть только в ASC ?

electroscat
07.05.2020, 08:13
Ещё раз спрошу, а файловый менеджер от CP/M тоже не работает ?

Прошу простить мне моё непонимание, а о каком файловом менеджере идёт речь?



Или просто нужны какие-то специфические функции, которые есть только в ASC ?

Не принципиально, скорее наоборот, в АSC функций не хватает, она не может работать с перемонтированием дискеты HDD (9 А:Х) и не предлагает при смене диска второй квазидиск (D).

KTSerg
07.05.2020, 08:45
Прошу простить мне моё непонимание, а о каком файловом менеджере идёт речь?
Wash.com если мне склероз не изменяет. И вообще не помню, чтобы в 90-ых пользовался (для копирования файлов) на Векторе чем-то другим.

Не принципиально, скорее наоборот, в АSC функций не хватает, она не может работать с перемонтированием дискеты HDD (9 А:Х) и не предлагает при смене диска второй квазидиск (D).
Ну думаю перемонтирование дискет ни один стандартный менеджер не поддерживает, если только он уже не адаптирован для работы с HDD.

ASC вроде уже "ковыряли" (изучали) может есть возможность адаптировать для HDD ?

Improver
07.05.2020, 09:15
- Эксперимент таков -Спасибо, за найденный баг, надо будет найти и устранить. :)


Ну и таки назревает все больше и больше потребность в хорошем файловом менеджере для T72, ибо ASC вообще не понимает D диск.. только консоль ...Кстати говоря, ASC не понимает и диск Е: (в тех системах, где он присутствует)...

ivagor
07.05.2020, 09:34
ASC можно грубо хакнуть, как написано в Vector-user 13. Чтобы на правой панели после старта показывал диск D нужно по смещению 3D97h сменить 03 на 04, для диска E - на 05. Но эта хака не касается смены диска, это отдельная задача. Т.е. стартовали и правый диск не меняем.

KTSerg
07.05.2020, 11:59
ASC можно грубо хакнуть, ...
Я так понял, что исходников рабочего варианта ASC нет, шоб не хакать, а провести глубокую модернизацию...

ivagor
07.05.2020, 12:03
Попробую ближе к вечеру глянуть

Improver
07.05.2020, 13:04
Новая версия Т-72, в архиве все варианты и исходники: 72520
Исправлен баг с "нет места" на КД после "8 х: F" -- просто добавил сброс дисковой системы МДОС после форматирования. Ну и немного переделал проверку параметров при запуске команды "8".

И ещё, поздравляю всех с Днём Радио! :)

ivagor
07.05.2020, 16:39
Вариант ASC, позволяющий выбирать диски A-E. Проверка наличия дисков не производится, при отсутствии зависнет, но это, как я понимаю, справедливо и для оригинальной версии ASC.

Более корректный вариант A-D здесь (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1061807&viewfull=1#post1061807)

KTSerg
08.05.2020, 06:21
Новая версия Т-72, ...
Исправлен баг с "нет места" на КД ...
Попробовал с этим ДОСом использовать "wash", на эмуляторе с подключенными FDD, HDD, и двумя квазами.
Между дисками переходит, с любого на любой копирует.
Естественно переназначить диски в самом wash нет возможности.

- - - Добавлено - - -


Вариант ASC, позволяющий выбирать диски A-E. ...
Быстро не нашел в каких ещё ДОСах есть поддержка диска Е.
Нашел только старый MDOSHDD.
Но переключаясь в нём на диск Е происходит переход на диск С.

Нужно уже как-то классифицировать все имеющиеся ДОСы и иметь к ним описания, чего умеют, чего не умеют...

ivagor
08.05.2020, 08:30
Нашел только старый MDOSHDD.
Но переключаясь в нём на диск Е происходит переход на диск С.
Интересно, в этом (http://sensi.org/scalar/ware/756/) досе E: - синоним B:

- - - Добавлено - - -

WASH не пробовал, но еще есть POWER (хотя это не "файловый менеджер"), им тоже можно копировать файлы (и не только).

Improver
08.05.2020, 08:55
Интересно, в этом досе E: - синоним B:Это если сделать "9 E:0"? Да, аналогично на D: подключается первый флоповод.

ivagor
08.05.2020, 09:11
Это если сделать "9 E:0"?
Там E:=B: по умолчанию при старте, менять не пробовал.

Improver, пара предложений по T-72.
1. Раз 2xКваз становится фактически стандартом на память>256 Кб, то может попробовать сделать драйвер, который способен оперировать с двумя квазами как с одним диском? При наличии hdd это наверно не так нужно, но без hdd такой вариант может оказаться востребованным.
Если фантазировать совсем без привязки к реальности, то было бы круто сделать возможность настройки размера диска на квазе, а лучше на квазах. Например диск 128 Кб, остальное остается железно для программ.
2. По аналогии с драйверами fdd и hdd можно сделать отключаемый драйвер диска в квазе. Размещение самого доса в квазе при этом останется, но диска там не будет (как в cp/m-53).

Improver
08.05.2020, 09:19
Нужно уже как-то классифицировать все имеющиеся ДОСы и иметь к ним описания, чего умеют, чего не умеют...Некоторая классификация есть в таблице в первом сообщении в этой теме, её только надо дополнить и расширить.

- - - Добавлено - - -


Там E:=B: по умолчанию при стартеДа, при старте на Е: назначена нулевая дискета, что равнозначно физическому флоповоду. Но при переназначении на другие дискеты НЖМД Е: уже не будет равно В:.

ivagor
08.05.2020, 09:34
Там физический дисковод A: назначен на D:, физический B: на B: и E:. Понятно, что можно задать через 9 другие номера дискет и будет обращаться к hdd, но не знаю насчет возможности сопоставления других букв с физическим дисководом A:.

KTSerg
08.05.2020, 09:45
...
1. Раз 2xКваз становится фактически стандартом на память>256 Кб, то может попробовать сделать драйвер, который способен оперировать с двумя квазами как с одним диском? ...
Это в корне изменит файловую систему кваза. Включая размер служебных секторов, области контрольных сумм, и т.д.. Произойдёт смещение всех данных.
Я могу уже ошибаться, но мне кажется, что кваз на 256КБ имеет сектор 1КБ и в директории номер одного сектора занимает один байт. Если диск будет 512КБ, то нужно будет или сектор делать 2КБ, или отводить 2 байта под номер сектора, в общем много вариантов глобальных изменений.
Проще оставить квазы разными дисками. :)

Improver
08.05.2020, 10:00
1. Раз 2xКваз становится фактически стандартом на память>256 Кб, то может попробовать сделать драйвер, который способен оперировать с двумя квазами как с одним диском? При наличии hdd это наверно не так нужно, но без hdd такой вариант может оказаться востребованным.Это хорошая идея, но я от неё отказался, т.к. возникает проблема с совместимостью формата квазидиска в разных ДОСах. С другой стороны, РДС тоже форматирует КД по-своему. Думаю да, надо будет что-то сделать в этом направлении, раз уж теперь и комбодевайс имеет два КД.


Если фантазировать совсем без привязки к реальности, то было бы круто сделать возможность настройки размера диска на квазе, а лучше на квазах. Например диск 128 Кб, остальное остается железно для программ.Для начала, думаю, для программ можно выделять второй КД целиком, это сейчас проще реализовать. Если будет мало, то тогда регулировать размер КД блоками в 64 Кб...


2. По аналогии с драйверами fdd и hdd можно сделать отключаемый драйвер диска в квазе. Размещение самого доса в квазе при этом останется, но диска там не будет (как в cp/m-53).Это тоже можно, но я пока не вижу необходимости полного отключения буквы диска на КД, с учётом реализации изменений выше.

- - - Добавлено - - -


Если диск будет 512КБ, то нужно будет или сектор делать 2КБ, или отводить 2 байта под номер сектора, в общем много вариантов глобальных изменений.Есть ещё один вариант: сделать как бы объединение дисков в БДОС, а служебные области, размер секторов и директории на обоих КД оставить там, где они есть. Но это пока на уровне идеи...

ivagor
08.05.2020, 10:53
возникает проблема с совместимостью формата квазидиска в разных ДОСах. С другой стороны, РДС тоже форматирует КД по-своему.
У DOS FP (для Баркаря) тоже несовместимый формат квазидиска.

регулировать размер КД блоками в 64 Кб
Хороший вариант.

Насчет полного отключения диска в квазе. Тут, конечно, есть простейшая альтернатива (и так уже многие делали, в т.ч. я) - при необходимости кваз используется программой для своих нужд, пользователя предупреждаем об этом, а кто не спрятался - я не виноват.

- - - Добавлено - - -

Ну и объединение квазов в один диск может быть с ограничениями. Если запретить файлам пересекать границу физического кваза (т.е. файл целиком на том квазе или на этом) то скорее всего это снимет большую часть проблем с форматом диска.

b2m
08.05.2020, 11:03
запретить файлам пересекать границу физического кваза
Это-ж придётся недописанный файл на другой кваз переносить, такую операцию в БИОСе не сделаешь, придётся ДОС допиливать.

ivagor
08.05.2020, 11:26
Можно предложить простой (тупой) вариант - если места на одном квазе не хватает, то рапортуем ошибку и при следующем создании файла создаем его на другом квазе. Но пользователю такое поведение не понравится, пожалуй вместо такого подхода лучше два диска.

ivagor
08.05.2020, 13:46
Возник вопрос - а для каких конкретно программ критично наличие "старой" организации файловой системы квазидиска? Уже сейчас можно выявить такие программы запуская их в FP или в РДС. CP/M-ной классике, про которую я в первую очередь думал (какие-нибудь компиляторы), предлагая объединенный кваз, скорее всего без разницы.

Improver
08.05.2020, 14:03
Возник вопрос - а для каких конкретно программ критично наличие "старой" организации файловой системы квазидиска?Если не брать в расчёт программы, то возможны такие варианты:
- Запуск другой версии МДОС для проверки чего-либо. В случае несовместимости понадобится форматировать КД с потерей данных на нём.
- Запуск с отсоединённым вторым диском. Тут, скорее всего, тоже потребуется форматирование КД.

KTSerg
08.05.2020, 14:06
Возник вопрос - а для каких конкретно программ критично наличие "старой" организации файловой системы квазидиска? ...
Это однозначно сам-трест программы, которые минуя ДОС лезут в файловую систему.
Я в 90-ых писал комплект утилит, для "скриншотов" и последующей их печати на принтере.
Там в загрузчик делалась "закладка", которая записывала экранную область в конец кваза, потом запускалась утилита, которая эту "копию экрана" переписывала в обычный (упакованный) файл и восстанавливала контрольные суммы "испорченных" секторов. А потом можно было запустить программку, которая уже позволяла просматривать файлы картинок и выводить их на печать на принтер, уже не помню сколько там было градаций от белого до чёрного.

ivagor
08.05.2020, 14:24
Думаю, что если каким-то программам нужна определенная организация файловой системы кваза, то их надо запускать в досах, которые обеспечивают эту организацию.
А для запуска cp/m-овских программ (и не только для них) с 2xКваза можно сделать дос с любой организацией файловой системы.
Не то чтобы лично мне такой дос был бы очень нужен, но если бы он был для вектора, то было бы неплохо.

- - - Добавлено - - -

Или даже так - было бы здорово иметь дос, способный поддержать не только 256 Кб кваза, но и больше (512, 1024 и т.д.). COMANовцы же сделали такой дос для ERAM.
А в современных условиях можно было бы сделать пару сменных драйверов для доса - один для 2xКваза, другой для ERAM (по крайей мере для эмулятора).

KTSerg
08.05.2020, 14:43
Думаю, что если каким-то программам нужна определенная организация файловой системы кваза, то их надо запускать в досах, которые обеспечивают эту организацию.
А для запуска cp/m-овских программ (и не только для них) с 2xКваза можно сделать дос с любой организацией файловой системы.
Не то чтобы лично мне такой дос был бы очень нужен, но если бы он был для вектора, то было бы неплохо.

- - - Добавлено - - -

Или даже так - было бы здорово иметь дос, способный поддержать не только 256 Кб кваза, но и больше (512, 1024 и т.д.). COMANовцы же сделали такой дос для ERAM.
А в современных условиях можно было бы сделать пару сменных драйверов для доса - один для 2xКваза, другой для ERAM (по крайей мере для эмулятора).

Полностью согласен по всем пунктам.
Ни в коем случае не утверждаю, что дескать если есть "вредные" программы, чего-то там требующие, те не нужно идти дальше.
Тем более, что как уже было упомянуто, на данный момент уже существует далеко не один вариант раскладки кваза...

electroscat
08.05.2020, 17:43
Вариант ASC, позволяющий выбирать диски A-E. Проверка наличия дисков не производится, при отсутствии зависнет, но это, как я понимаю, справедливо и для оригинальной версии ASC.

Сравнивал эту ASC с той которая у меня есть, в целом, код очень похож, но к той что у меня еще сзади прикручен ряд функий, которые, возможно, помогают ей не вываливаться, когда в MDOS3.1 и FH51 набирают команду 9 A:X (перемонтирования) в t72 это не работает, но возможно этот "прицепчег" поможет доработать таким же образом ASC и под t72 ? Если кому интересно, тут можно скачать (https://yadi.sk/d/pZ72dBb3XmT8DQ) программу с патчем, выдерживающюю перемонтирование диска в MDOS3.1 и FH51, и продолжающюю работать.

И просьба есть еще, мне много ABCDE, хватило бы и ABCD - нет ли в наличии версии без E ? Или где в коде можно поправить, где удалить букву из меню я нашел, но где код который перебирает 5 букв, и реально поменять на 4 - не нашел, если есть возможность - подскажите плз ...

ivagor
08.05.2020, 18:32
Версия A-D. ASC не идеален, сейчас попробовал все имеющиеся версии и они не показывают часть файлов на диске, хотя по команде D доса все видно.
В версии A-E я кое-что недопеределал, удалил.

electroscat
08.05.2020, 19:07
Версия A-D.

Спасибо огромное ! Это прям то что надо ! Хоть и без перемонтирования, но в целом, очень хороший вариант программы ! Спасибо !

ivagor
08.05.2020, 19:28
Меня все же очень смущает, что ASC (все доступные версии) показывает не все файлы на диске. Хотя бы понять, чем отличаются показываемые файлы от "скрываемых".

KTSerg
08.05.2020, 21:12
Меня все же очень смущает, что ASC (все доступные версии) показывает не все файлы на диске. Хотя бы понять, чем отличаются показываемые файлы от "скрываемых".
Я с этим столкнулся когда тестировал свою запускалку (смотрелку HDD).
Первый намёк, все скрываемые ASC файлы имеют размер кратный 16КБ ;)
Короче. Я заметил, что если у файла в директории одна запись полностью использована, а второй (пустой) нет, то этот файл ASC не покажет, а ДОС командой "d" покажет.

electroscat
08.05.2020, 21:40
Новая версия Т-72, в архиве все варианты и исходники: 72520
Исправлен баг с "нет места" на КД после "8 х: F" -- просто добавил сброс дисковой системы МДОС после форматирования. Ну и немного переделал проверку параметров при запуске команды "8".

Огромное спасибо ! Система все лучше и лучше становится, попробовал просмотрщик графики DEMO-SPR.COM - и он работает, хотя на какой то из версий T72 я его пробовал, и результата не получил, при переходе из режима просмотра в DOS - программа висла...
В этой версии два квазидиска комбодевайса работают устойчиво, удивительно, в целом, там просто зеркалируется все, и в зависимости от порта вызова триггер запоминает, "верхнюю" часть микросхемы использовать или "нижнюю", тем не менее, огромное количество тестов в разных режимах и интерпретациях, и копирование в разных направлениях с разных дисков и на разные диски выявили устойчивую работу схемы. Следующая незначительная доработка будет в энергонезависимости квазидисков, уже нашел разьем для батарейки 2032...

electroscat
09.05.2020, 02:30
Wash.com если мне склероз не изменяет. И вообще не помню, чтобы в 90-ых пользовался (для копирования файлов) на Векторе чем-то другим.

А где скачать этот wash.com ? Интресно посмотреть что это за штуковина такая...

В 90 е я пользовался NC.COM, который работал только с DOS301 помоему. Он часы реального времени поддерживал даже, но все время показывал 00:00 в верхнем правом углу в следствии их отсутствия.. И очень долго рисовал имена файлов....

KTSerg
09.05.2020, 05:29
А где скачать этот wash.com ? Интресно посмотреть что это за штуковина такая...
...
К нему нужно привыкнуть. И должен быть правильно выставлен набор знакогенератора, чтобы правильно отображались англицкие большие и маленькие бцквы.

- - - Добавлено - - -


Меня все же очень смущает, что ASC (все доступные версии) показывает не все файлы на диске. Хотя бы понять, чем отличаются показываемые файлы от "скрываемых".
Есть у меня смутные подозрения, что это такая особенность генератора дискет эмулятора VV.
На дискетах сформированных этим эмулятором, файлы размером 16КБ - не имеют ещё одной пустой записи. Которая по идее должна быть. Т.к. при её отсутствии нет гарантии что файл прочитан полностью.
Полагаю, что признаком "последней записи" файла в директории служит указание количества блоков (последний байт в строке с именем файла) в записи менее 80h.

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

ivagor
09.05.2020, 07:22
Масштаб трагедии с отсутствием нормальных коммандеров для hdd оказался сильно преувеличен. VC3 из комплекта РДС может все (ну или по крайней мере самое необходимое) - выбирать дискету на hdd (или дисковод при номере дискеты 0000), выбирать user. И, кстати, показывает все файлы на том диске, на котором их пропускал ASC.

electroscat
09.05.2020, 09:37
VC3 из комплекта РДС может все (ну или по крайней мере самое необходимое) - выбирать дискету на hdd (или дисковод при номере дискеты 0000), выбирать user.

Да, он хорош, это факт. Но не работает под Т-72.. Ну и ещё, этот специфический способ запуска программ, через "(УС+ВК)+ВК", а в остальном, да, он прекрасен. И вот эта его фишка, что переписанный на "С" он становится резидентным - это вообще огромнейший жирный плюс... Работал бы он везде - цены бы ему не было.

Ramiros
09.05.2020, 13:05
На всякий случай, конвертер папки в образ FDD в VV имеет некоторые ограничения связанные с файловой системой микродоса, вот копипаста из мануала к VV:
File->Drive A: (B:)->Open Folder as FDD Image…
Открыть папку как образ FDD. (Папка на лету конвертируется в одноименный образ *.fdd,
после чего этот образ автоматом загружается в эмулятор. Далее все действия производятся с
файлом образа, а открываемая папка в любом случае остается без изменений).
Если в открываемой папке есть файлы, превышающие допустимый размер, они будут
проигнорированы. Размер папки не должен превышать 800 Кбайт, в противном случае какие то
файлы будут проигнорированы. Если имена файлов длинные, они преобразуются к виду 8.3.
Нужно понимать, что таблица размещения файлов МИКРОДОСа не позволяет записать на
один диск более 128 файлов, даже если их суммарный размер будет менее 800 Кбайт. К тому же
файловая система МИКРОДОСа не поддерживает вложенных папок.
Если в открываемой папке есть файл с именем boot.com (boot.rom или boot.r0m) то он
запишется в загрузочную область (файл не должен превышать 40 КБайт).

KTSerg
09.05.2020, 16:58
На всякий случай, конвертер папки в образ FDD в VV имеет некоторые ограничения связанные с файловой системой микродоса, вот копипаста из мануала к VV:
...

Это всё понятно и к этим ограничениям вопросов нет.
Попадалась версия ASC размером ровно 16Кб.
Если только один этот файл положить в отдельную папку. Открыть эту папку эмулятором, запустить из ДОСа этот самый ASC, то когда он запустится, то покажет, что на дискете нет файлов.
Я с ASC не очень знаком, по этому сначала подумал, что он сам себя прячет. Потом попалась версия ASC большего размера и он проявился на дискете... вот тут поползли разные мыслишки...
На размер фала ASC я обратил внимание позднее, когда начал анализировать его пропажу из списка файлов дискеты.

ivagor
09.05.2020, 17:01
Я копировал файлы в образ дискеты плагином для Total Commander (odiwcx) Error404, не создавал диск в VV, т.е. скорее все же проблема в ASC.

KTSerg
09.05.2020, 20:55
Я копировал файлы в образ дискеты плагином для Total Commander (odiwcx) Error404, не создавал диск в VV, т.е. скорее все же проблема в ASC.
А какой размер файлов которые у тебя ASC не показывает?
Директорй дискеты смотрел, симптомы те-же, что я привёл, или нет?

ivagor
09.05.2020, 21:01
Он не показывал файлы длиной 16384 байта. Дискету (каталог) я не стал смотреть.

KTSerg
09.05.2020, 21:04
Сейчас в ДОСе дал команду 1 40 test.tst
в результате в директории появилось две записи:
A0C0: 00 54 45 53 54 20 20 20 │ 20 54 53 54 00 00 00 80 TEST TST Ђ
A0D0: 20 00 21 00 22 00 23 00 │ 24 00 25 00 26 00 27 00 ! " # $ % & '
A0E0: 00 54 45 53 54 20 20 20 │ 20 54 53 54 01 00 00 00 TEST TST☺
A0F0: 00 00 00 00 00 00 00 00 │ 00 00 00 00 00 00 00 00

Так делает сам ДОС, полагаю, что так правильно.
А когда второй (пустой) записи нет, то файл не виден в ASC.

electroscat
09.05.2020, 21:59
У меня такая проблема была когда я дискеты записывал при помощи MST. Иногда по пол дискеты не видно было. Вообще MST странная штука. И образы не все видит, и дискеты векторовские не все может показать. Автор заявляет, что на векторе MicroDOS а MST написана для СР\М - а их таблицы размещения файлов отличаются, точно не помню, но вроде в MicroDOS на две системных дорожки больше, и по этому есть разного рода проблемы. Он так же сказал, что изменять программу не собирается, так как MicroDOS ему не важен.
Как то нужно было сделать подборку ASC с разными палитрами, записывал по 8 файлов с PC через MST, а на реале видел по два... Тогда не догадался, что разные варианты ASC были, и несколько как раз 16384 байт, их похоже я и не видел.. Если честно не помню уже как вышел из ситуации, скорее всего, записал программы непосредственно на образ CF в эмуляторе, или может заливал через LOADROM+ предварительно прогнав файлы через rom2wav.
На реале такого эффекта не наблюдаю, только когда MST пользовался было такое.

KTSerg
10.05.2020, 04:45
Чёт я по ходу "сломал"... а чё сломал - не могу понять...
В emu с конфигом на 2 КД перестали запускаться Т72.
Другие ОС запускаются, а Т72 на отрез отказываются.
На экране (в стеке) появляется два байта типа адреса возврата из подпрограммы 0113h или 0123h.
А вариант Т72к заполняет стеком (двумя точками 0110h или 0120h) весь экран.
И всё.
Возвращаю конфиг на 1 КД и Т72 начинает запускаться как ни в чём не бывало...

KTSerg
10.05.2020, 09:17
Да, он хорош, это факт. Но не работает под Т-72.. Ну и ещё, этот специфический способ запуска программ, через "(УС+ВК)+ВК", ...

А разве (в VC3) просто ВК не запускает файлы?
Я переписал на КД три файла vc.* , там есть файл vc.ext, в нём реакция на расширения. Для СОМ-прописан запуск файла.

electroscat
10.05.2020, 11:08
А разве (в VC3) просто ВК не запускает файлы?
Я переписал на КД три файла vc.* , там есть файл vc.ext, в нём реакция на расширения. Для СОМ-прописан запуск файла.

Нашел файл, да, так гораздо лучше, работает, благодарю !

- - - Добавлено - - -


К нему нужно привыкнуть. И должен быть правильно выставлен набор знакогенератора, чтобы правильно отображались англицкие большие и маленькие бцквы.

Спасибо !
Да, специфическая программа, может конечно если привыкнуть - то не плохо, функционал в порядке. Но первое впечатление противоречивое... все же ASC чуть удобнее.

electroscat
12.05.2020, 20:09
Доброго времени дорогие друзья !

Поковырялся сегодня в версии ASC которая адекватно реагирует на команду 9, а теперь еще и 8 (добавил еще одну проверку),... Там все просто, с адреса 4100H (смещение 4000 в HEX редакторе) дописан следующий код :



org 04100H
;
di
lxi h, 00080H
mov a, m

cpi 039H
jz GO
cpi 038H
jz GO


jmp L4149


GO:
lxi d, 04181H

L410D:
mov a, m
stax d
inx h
inx d
ana a
jnz L410D
xchg
mvi m, 00DH
dcx h
mvi m, 00DH
inx h
inx h
mvi m, 000H
mvi a, 004H
sta 4180h
mvi a, 085H
sta 4200h
lxi h, 4180h
shld 4201h
mvi c, 032H
lxi d, 4200h
call 0005h
ei
hlt
lxi d, 04280H
mvi c, 00AH
call 0005h
mvi a, 002H
sta 297Ch
jmp 0100h

L4149:
jmp 0005h
;


Адресс ссылки на эту подпрограмму вписан вместо адреса системного вызова CALL 0005H по смещению 395F в HEX редакторе.

Но, под mdos3.1 и FH51 - это прекрасно работает, а вот под T72 выполняет последний в коде CALL 0005h и уже не возвращается на строчку mvi a, 002H. При этом, набранная в командной строке команда выполняется, то есть переданная системе команда сформированная в системном буфере по адр. 4180H вполне передается и воспринимается системой, но после выполнения иногда на экране наблюдается какой то кратковременный выброс пискелей, иногда не наблюдается, и после появляется курсор ">_" без буквы диска, знак подчеркивания мигает, нет управления клавишами, но реакция системы в виде звуков на нажатие есть. И вернуть ситему к жизни может только "блк+сбр", после нажатия "блк+сбр" в следующей строке появляется курсор с текущим диском "A>_" и система продолжает работать с штатном режиме.... А в mdos3.1 и FH51 подпрограмма в итоге после выполнения команды 9 A:X или 8 - запускается заново с 100H. На вскидку определить в чем проблема у меня не получилось, знания системных вызовов мои оставляют желать лучшего. По идее, это же не должно сильно отличаться в разных системах... Я пытался это все пролистать в отладчике эмулятора, но толку от этого немного, несколько миллионнов операций просмотреть и понять что там происходит для меня пока сложно .. ))) Я продолжу в целом, но думаю, наверняка среди вас все гораздо лучше меня разбираются в системных вызовах микродоса... Может глянете, почему такой эффект ?

Еще, не могу понять, что за запрос с параметром 32H в регистре C? По крайей мере в стандартном описании системных функций CP\M я такой функции не нашел, 28H последняя... Может это какая то специальная функция, имеющая место быть только в microdos3.1 и FH51, которая делает возможным такой финт... Хотя эта функция выполняется и в T72...

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

Improver
13.05.2020, 08:42
что за запрос с параметром 32H в регистре CЭто исполнение операций расширенной БДОС, в регистре DE передаётся ссылка на параметр вызова, которая там равна 4200h. А данные по этому адресу, в свою очередь, ссылаются на строку по адресу 4180h. Есть серьёзное подозрение, что МДОС в Т-72 немного по-другому обрабатывает эти вызовы.


в стандартном описании системных функций CP\M я такой функции не нашел, 28H последняяВот тут (http://zxpress.ru/book_articles.php?id=2322) немного больше функций описано, правда кое-где есть отличия от Векторовских ОС.

electroscat
13.05.2020, 15:01
Есть серьёзное подозрение, что МДОС в Т-72 немного по-другому обрабатывает эти вызовы.

Наверняка нет доков никаких по работе T72 с этим (32H) вызовом ?



Вот тут (http://zxpress.ru/book_articles.php?id=2322) немного больше функций описано, правда кое-где есть отличия от Векторовских ОС.

В частности по вызовам 32H на выполнение 8 и 9 - 100% отличия есть.

Огромное спасибо за ответ, стало понятнее что происходит в подпрограмме с 4000H !!!

electroscat
16.05.2020, 07:04
Доброго времени ! Расковырял DEMO-SPR - на мой взгляд самую лучшую по сервисным возможностям смотрелку графики для вектора. Ковырял на тему - заставить видеть диск D, и использовать для проверки записи и чтения с диска D в OS-T72, в которой программа прекрасно работает !!! Вместе с тем, устранил еще пару глюков в программе, как то, не возможность выйти по "X" если нет .spr файлов на дисках. В общем, кому нужно - все доступно тут (https://yadi.sk/d/UbI75A36L9Qvcw), включая исходники, а тут (https://yadi.sk/d/iIQSy-YonQ1XSQ) еще можно качнуть несколько картинок патриотического содержания на пробу.. :) Всем хорошего настроения !

electroscat
26.05.2020, 15:21
Попробовал сегодня системы FH51 и T72 с твердотелом IDE SSD на 512 мб. Отлично работает, на борту 651 полных дискет (28BH). Копирование, запись, чтение, форматирование, все работает! Спасибо за доработки систем до LBA режима!

Диск: Industrial PQ1 DiskOnModule - 512 mb, так же проверял с Industrial PQ1 DiskOnModule - 64 mb - прекрасно работает.

electroscat
20.06.2020, 16:08
Доброго времени дорогие друзья! Подскажите, чем кодировка системы программно меняется ? Поясню, столкнулся с проблемой, вызываю под OS-T72 последней версии программу FORMAT2.COM или FORMAT3.COM - форматирую дискету, и после этого кодовая таблица другя, вызываю, например, DEMO-SPR.COM - и вместо русских букв - псевдографика.. Подскажите пожалуйста, что искать в теле программы FORMAT2(3) - запись в какой то порт определенного бита, или CALL 0005H с определенным содержимым регистров ?
За одно хочу русифицировать программу на нормальный русский :) Мне сейчас програма актуальна, я на неделе переделал мультикарту (комбодевайс) под MB8877 вместо КР1818ВГ93 - не просто это мне далось, три ночи не спал... Тем не менее, все получилось, и я тестирую форматирование, запись, чтение и т.д. По этому програмка актуальна. И она для тестов гораздо больше подходит чем REANIMAT.COM потому как к ошибкам более критична.. Вот.
Подскажите, как кодировка системы программно меняется ?

KTSerg
20.06.2020, 17:14
... Подскажите пожалуйста, что искать в теле программы FORMAT2(3) - ... CALL 0005H с определенным содержимым регистров ? ...
Ага CALL 0005h, в DE должен быть адрес буфера с последовательностью команд, для смены регистра, например: 1Bh, 5Ch (или другие команды для других знакогенераторов).

electroscat
22.06.2020, 14:26
Если интересно кому либо - format2 и sysgen в KOI8-R тут (https://yadi.sk/d/OspLThZtbXYVIg).

Сегодня еще чуть подправил FORMAT2.COM чтоб под РДС корректно выводило псевдографику, обновил архив.

electroscat
23.07.2020, 02:17
Доброго времени друзья! Подключил к вектору HDD Segate ST38410A 16383 cyl, 16 heads, 63 sectors. LBA 16,841,664, то есть максимум... Работает, на ура, заворотов нет. 10520 дискет (2918H). Тестировал в OS-T72HL.COM, FH51.COM... Из проблем: DELETE.COM может работать с дискетой, с максимальным номером FFFH... то есть, для форматирования дискет после FFF нужно тащить диск на PC, лезть в открытом доступе на него, и заполнять области E5. Так же, INITHDD.COM "нашел" только 2000h (8192) клайстера из 4000h (16383). Похоже эта программа не рассчитана на диски большего обьема, в целом, в 95 году, когда она была написана - таких и не было. в 1997 году я еще сидя за Вектором, собирал 5Х86, в целом, меня вполне устроил для начала HDD на 40 мб... с WIN 3.11 на борту... Диск который я тестировал сейчас - 2000 года выпуска. В целом, логично. В остальном все складывается очень неплохо, и система и контроллер работают прекрасно. Прикладываю фото экспонатов и скриншоты программ, и вот тут (https://youtu.be/cN4JZjQ_ZnU) можно посмотреть подробный отчет о тестах. Там правда не только HDD, тем не менее, по HDD там во второй половине достаточно подробный отчет. Ну и переделка систем под LBA вполне себя оправдывает и на 100% работоспособна.

https://s8.hostingkartinok.com/uploads/thumbs/2020/07/19afbc4ba83a57f42f08f9d11005dcb6.png (https://hostingkartinok.com/show-image.php?id=19afbc4ba83a57f42f08f9d11005dcb6) https://s8.hostingkartinok.com/uploads/thumbs/2020/07/03a15bf131f393bcaefadaa4050871af.png (https://hostingkartinok.com/show-image.php?id=03a15bf131f393bcaefadaa4050871af) https://s8.hostingkartinok.com/uploads/thumbs/2020/07/08d22f119b2d1ac3443d41a8b1de59af.png (https://hostingkartinok.com/show-image.php?id=08d22f119b2d1ac3443d41a8b1de59af) https://s8.hostingkartinok.com/uploads/thumbs/2020/07/7077abb407d76bff54671b46ac8795c6.png (https://hostingkartinok.com/show-image.php?id=7077abb407d76bff54671b46ac8795c6)

Improver
23.07.2020, 16:21
Обнаружил проблемку с Т-72 -- в ней не работают почти все программы для обращения к магнитофону (load*.com/save*.com и их вариации). Причина -- из БСВВ были исключены процедуры обращения к магнитофону, причём в Т-34 все они ещё присутствовали. Работают только те программы, которые для этого имеют свои собственные подпрограммы, например, LROM.COM. Добавлять работу с магнитофоном в Т-72 я не вижу смысла, да и места там для этого нет, поэтому пошёл другим путём, дополнил программку LOADDOS.COM подпрограммой чтения байта с магнитофона, ну и немного доработал, не особо углубляясь в детали.

Вот что получилось (в архиве бинарный файл и исходники): LDOS.7z (см.ниже (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1074454&viewfull=1#post1074454))

Новая версия грузит данные в формате ДОС, но в работе константу чтения из БСВВ (адрес 0FFC5h) не использует, поэтому может работать в любой версии МДОС, в том числе и в РДС, проверял.

Ту же самую процедуру можно выполнить и с другими программами, но пока я не вижу в этом необходимости.

Improver
27.07.2020, 13:39
Нашёл ошибку в программе -- пропустил случайно один RNZ, из-за чего не грузились файлы больше 256 байт.
Исправленная версия LDOS: 73163

electroscat
27.07.2020, 22:09
Эта программа типа loadrom+.com? Я все с "кассет" загружаю в файлы при помощи loadrom+.com, проблем не было. А, пробовал как то передавать из реала в эмулятор при помощи команды 2 и 3, это действительно не заработало.

Improver
28.07.2020, 08:17
Эта программа типа loadrom+.com?Да, типа, только формат записи другой. Я изредка пользуюсь форматом ДОС для заливки в Вектор небольших файлов. Формат ROM более долгий по времени, но по сравнению с другими форматами он устойчивее к помехам и сбоям. Кстати, для загрузки в формате ROM мне показалось более удобным использование программки LROM -- там есть автоопределение скорости, в отличие от LOADROM. Есть ещё относительно новый и быстрый формат записи FM9, но его я ещё пока не освоил.


А, пробовал как то передавать из реала в эмулятор при помощи команды 2 и 3, это действительно не заработало.Команды 2 и 3 почти во всех досах повырезаны, реально они работали только в первых версиях, например в чистоквазидисковом МДОС 2.0а (http://www.sensi.org/scalar/ware/755/), может в этом причина?

Improver
17.08.2020, 14:17
Некоторое время назад тут обсуждали возможность объединения двух квази-дисков в один, вот решил сделать новый МДОС Т-72, с двойным КД... Что тут получается:

- Номер дорожки и номер сектора МДОС передаёт в размере одного байта, стандартный формат КД предусматривает 236 дорожек по 8 секторов, поэтому нельзя просто так взять и увеличить количество дорожек КД, надо увеличивать число секторов на дорожку до 16.

- Размер кластера КД стандартного формата равен 1кБ, его тоже оставить таким же не получится, т.к. в этом случае на двух КД будет 486 кластеров, а по стандартам CP/M (и МикроДОС) для дисков с общим числом кластеров >256, размер кластера должен быть минимум 2кБ.

- Ну и ко всему прочему, кроме проблем, которые я назвал тут (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1061781&viewfull=1#post1061781), вылезла ещё одна: при изменении формата КД не будет работать загрузка с него ОС.

Пытаясь решить все эти ньюансы, пришёл к такому варианту:

Порт 11 Адрес Порт 10
+------------+-- 3FFFF --+------------+
| не исп. | (Банк 0) | не исп. |
+------------+-- 3FFC0 | |
| Конт.суммы | 3FEC0 --+------------+
| | | Конт.суммы |
+------------+-- 3F000 --+------------+
| Каталог | | Каталог 10 |
| д.0,с.1 -- | | д.255,с.1--|
| д.1,с.16 | | д.255,с.16 |
| | 3E800 --+------------+
| | | Данные |
| | | д.126,с.1--|
| | | д.126,с.16 |
+------------+-- 3E000 --+------------+
| Данные | | Подэкраная |
| д.2,с.1 -- | | область |
| д.29,с.16 | 3A000 --+------------+
| | | Данные |
| | | д.127,с.1--|
| | | д.146,с.16 |
| | | |
+============+-- 30000 --+============+
| Данные | (Банк 1) | Данные |
| д.30,с.1-- | | д.147,с.1--|
| д.61,с.16 | | д.178,с.16 |
| | | |
+============+-- 20000 --+============+
| Данные | (Банк 2) | Данные |
| д.62,с.1-- | | д.179,с.1--|
| д.93,с.16 | | д.210,с.16 |
| | | |
+============+-- 10000 --+============+
| Данные | (Банк 3) | Данные |
| д.94,с.1-- | | д.211,с.1--|
| д.125,с.16 | | д.242,с.16 |
| | | |
+------------+-- 00000 --+------------+
Порт 10 Адрес
+------------+ 3FFFF
| не исп. | (Банк 0)
+------------+ 3FEC0
| Конт.суммы |
+------------+ 3F000
| Каталог |
| д.0,с.1 -- |
| д.1,с.8 |
+------------+ 3E800
| Данные |
| д.2,с.1 -- |
| д.3,с.8 |
+------------+ 3E000
| Подэкраная |
| область |
+------------+ 3A000
| Данные |
| д.4,с.1 -- |
| д.43,с.8 |
| |
+============+ 30000
| Данные | (Банк 1)
| д.44,с.1-- |
| д.107,с.8 |
| |
+============+ 20000
| Данные | (Банк 2)
| д.108,с.1--|
| д.171,с.8 |
| |
+============+ 10000
| Данные | (Банк 3)
| д.172,с.1--|
| д.235,с.8 |
| |
+------------+ 00000
Небольшое разъяснение:

- Первым в системе (по заполнению) делаем диск на порту 11, подэкранную область выделяем на КД на порту 10, как и ранее.

- Формат объединённого диска: 243 дорожки по 16 секторов, размер кластера 2кБ, директория может иметь до 128 записей и располагается в первых двух кластерах.

- Области с контрольными суммами секторов располагаются на стандартных местах, у каждого КД своя.

- Область с записями директории на КД на порту 10 оставляем в стандартном месте. В работе она не используется, но если файл OS.COM расположить на кластерах КД на порту 10 и сделать в этой области соответствующую запись, то можно грузить систему с КД стандартным загрузчиком.

- Разделение файлов между дисками никак не обрабатывается, но можно делать в области директории на КД на порту 10 соответствующие записи, что эти сектора заняты и при загрузке других ОС такие файлы не портились.

В общем, основные проблемы, кажется, решены -- объём диска С: максимален, КД остаётся загрузочным, может сохранять инфу при загрузке других ОС... Единственное, нужно будет ещё написать пару утилит для копирования файлов и системы на квази-дисках.

Архив с исходниками и откопилированными вариантами ОС Т-72: 73291
t72iFHK.rom -- поддержка НЖМД и НГМД
t72iFK.rom -- поддержка НГМД
t72iHK.rom -- поддержка НЖМД
t72iK.rom -- ОС без драйверов НГМД и НЖМД, только два квазидиска.

Примечания к версии:

1. Система запускается только в конфигурации с двумя КД, если они не были обнаружены, то выводится ошибка.

2. При запуске с нажатой клавишей "УС" форматируется только КД на порту 11.

3. В этой версии немного по-другому работает команда "8", вот варианты её использования:
- "8" или "8 C:" -- тестирование обоих КД.
- "8 10" и "8 11" -- тестирование КД на порту 10 и 11 соотвественно.
- "8 C: F", "8 10 F" и "8 11 F" -- форматирование обоих КД, на порту 10 и на порту 11 соответственно.

electroscat
17.08.2020, 19:13
Ничесе... Круто! Протестирую на неделе обязательно. Спасибо!

Improver
13.03.2021, 20:07
Решил опробовать на практике распаковщик (https://zx-pk.ru/threads/29679-szhatie-dannykh.html?p=1105615&viewfull=1#post1105615) ivagor-а и собрал МДОС Т-72 с упаковкой блоков в lzsa1, вот что получилось (все варианты и исходники, как обычно): 74933

Проверил на эмуляторе и живом Векторе. По сравнению с неупакованным вариантом (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1061646&viewfull=1#post1061646), МДОС стал запускаться дольше примерно на 800 тыс. тактов процессора (или ~0,26 сек., что просто незаметно), но сама программа сократилась примерно на 2 кБ.

electroscat
14.03.2021, 13:51
Команды 2 и 3 почти во всех досах повырезаны, реально они работали только в первых версиях, например в чистоквазидисковом МДОС 2.0а (http://www.sensi.org/scalar/ware/755/), может в этом причина?

Кстати, недавна нужно было установить соединение между реальным Вектором и эмулятором, как оказалось в операционной системе МикроДОС 3.1H команды 2 и 3 работают, и именно их я использовал для практически "сетевого соединения" между эмулятором и реальным Вектором.. Жаль что так и не получилось доработать эту систему до поддержки дисков LBA и второго квазидиска... Система то ведь очень даже неплохая.. Да и в остальных системах, доработанных до LBA (FH51, РДС3) - поддержка второго кваза не помешает, 100%.

Improver
15.03.2021, 12:01
Кстати, недавна нужно было установить соединение между реальным Вектором и эмулятором, как оказалось в операционной системе МикроДОС 3.1H команды 2 и 3 работают, и именно их я использовал для практически "сетевого соединения" между эмулятором и реальным Вектором..Забавная вещь, наверно, получилась. Когда-то давно я мечтал также, по магнитофонным входам/выходам, связать два реальных Вектора. :)


Жаль что так и не получилось доработать эту систему до поддержки дисков LBA и второго квазидиска... Система то ведь очень даже неплохая..Неплохая, но по своим возможностям не имеет кардинальных отличий от Т-34 и Т-72, не вижу особого смысла развивать её, пусть лучше останется в своём исходном виде. Сам я этот МДОС тоже держу на диске, на всякий случай.


Да и в остальных системах, доработанных до LBA (FH51, РДС3) - поддержка второго кваза не помешает, 100%.А это было бы интереснее, надо будет подумать над этим, в свободное время...

electroscat
15.03.2021, 13:52
Неплохая, но по своим возможностям не имеет кардинальных отличий от Т-34 и Т-72, не вижу особого смысла развивать её, пусть лучше останется в своём исходном виде. Сам я этот МДОС тоже держу на диске, на всякий случай.

Да, различий не много, поддержка 4х дисков, что в целом реализовано в T72, если учесть 2 кваза, немного другая реакция системы на системные запросы, и наличие команд 2 и 3 - что в целом можно компенсировать внешними модулями. Может есть что то еще, но я не нашел пока. Мне она просто импонирует, привык к ней ))) по этому и пробовал в ней поковыряться.. Но увы терпения не хватает..


А это было бы интереснее, надо будет подумать над этим, в свободное время...

Тоже в целом было бы круто, особенно в РДС это просто необходимо. РДС - по функциональности кое в чем гораздо продвинутее.. Резидентный VC - вообще сказка, и то что система запоминает пути, и после перезагрузки восстанавливает резидентный VC с текущим диском - очень круто ! Прослушивать аудио в ней просто супер удобно, не нужно после каждого воспроизведения набирать имя плеера и файла или запускать ASC - просто вышел, и попал в VC на то же место. То же самое с программами на бейсике, просто вышел из бейстка и попал туда где был, запускай следующюю программу. А просмотр и редактирование текстов - тоже на самом высоком уровне.. Система для комфортной работы в общем.....

Есть у РДС и минусы конечно, но тем не менее, для некоторых задач она незаменима.

Если бы в T72 по такому же принципу возможно было встроить CO.COM с запоминанием текущего диска и при перезагрузке возвратом на то же место...

GGunLemon
09.04.2021, 22:21
Добрый день,
здесь лежат исходники РДС, VC и других моих программ для Вектора: https://github.com/Vitaly-Vyunov/vector

Возможно, кому-то пригодятся.

Виталий

Error404
18.04.2021, 13:44
Добрый день,
здесь лежат исходники РДС, VC и других моих программ для Вектора: https://github.com/Vitaly-Vyunov/vector

Возможно, кому-то пригодятся.

Виталий

Интересно. VC.COM стандартное приложение CP/M (BDOS/BIOS) или где-то таки работает по аппаратуре (IO, video, mem, port) ?

electroscat
18.04.2021, 18:13
Интересно. VC.COM стандартное приложение CP/M (BDOS/BIOS) или где-то таки работает по аппаратуре (IO, video, mem, port) ?

Скорее стандартное, резидентное приложение РДС-3, мне кажется это отдельная ось, мало что имеющая общего с CP/M... многие приложения из CP/M работают, простые, но обратная совместимость не наблюдается, Ну и на сколько я понимаю VC.COM использует максимум отличий и наворотов, вряд ли его реально портировать в CP/M.

ivagor
19.04.2021, 06:09
многие приложения из CP/M работают, простые
А какие сложные не работают?

- - - Добавлено - - -


обратная совместимость не наблюдается
Как может выглядеть обратная совместимость в подобных случаях? Приложение ориентированное специально на вектор работает и в классическом CP/M на каком-нибудь роботроне?

electroscat
19.04.2021, 08:58
А какие сложные не работают?

Не работают практически все приложения в которых есть обращение к дисками, сразу вспомнил demo-spr, reanimator, ...

- - - Добавлено - - -


Как может выглядеть обратная совместимость в подобных случаях? Приложение ориентированное специально на вектор работает и в классическом CP/M на каком-нибудь роботроне?

Нет... Например бейсик, написанный для РДС не работает нигде больше. Тот же VC.COM.... Утилиты для РДС типа GS работают только в РДС. Возможно автор и взял за основу какие либо исходники CP/M. Но в документации он не позиционирует систему как клон CP/M, а описывает ее как совершенно самостоятельную систему. Ну это мои предположения, или выводы сделанные из эксплуатации системы. И они вполне могут быть ошибочным.

ivagor
19.04.2021, 09:09
Не работают практически все приложения в которых есть обращение к дисками, сразу вспомнил demo-spr, reanimator, ...
Т.е. не работают программы, написанные специально для вектора для другой ветки операционных систем.

Например бейсик, написанный для РДС не работает нигде больше. Тот же VC.COM.... Утилиты для РДС типа GS работают только в РДС.
И вариант дискового бейсика 2.5 для микродоса не будет работать в cp/m. CO.COM работает только в t34 и т.д.

Т.е. претензии к РДС не как к CP/M, а по несовместимости ее с другими вариантами векторовских досов. Они (другие векторовские досы) и между собой не вполне совместимы.
А в качестве CP/M рдс потенциально лучшая на векторе, там самая большая область TPA, самый быстрый вывод символов.

electroscat
19.04.2021, 09:21
У меня претензий нет к РДС, для многих задач она действительно лучшая на Векторе. Видимо моё понимание в отношении этого абстрактное. Значит CP/M, прошу прощения за дезинформацию.

ivagor
19.04.2021, 10:30
Просто я понял вопрос Error404 как относящийся к совместимости с "общечеловеческими" сипиэмами, вряд ли его интересует внутривекторовская совместимость досов. А если говорить о внутривекторовской, то тут не спорю, рдс не самая совместимая, но это и понятно, это оборотная сторона ее дополнительных возможностей и того, что она появилась поздно.

Error404
19.04.2021, 21:12
А интересовался с конкретной целью - запустится ли VC например на Орионе. Так-то нет никаких причин делать командер несовместимым, для всех его функций стандартных вызовов CP/M вполне достаточно.

ivagor
20.04.2021, 06:02
Error404, тогда можно предположить, что для ориона есть коммандер использующий только стандартные функции cp/m, есть такой?

Error404
25.04.2021, 00:23
Error404, тогда можно предположить, что для ориона есть коммандер использующий только стандартные функции cp/m, есть такой?

Так то полно СПМ-овских начала-середины 80х. Но они либо однопанельные, либо а-ля Power. Т.е. ничего выдающегося для хотя бы конца 80х годов прошлого столетия.
Есть двух-панельные, но сильнозависимые от драйвера консоли (набора искейп-пследовательностей, которые могут иметь расширения) но таки в остальном работающие через BDOS/BIOS.
Когда-то у меня была коллекция, в т.ч. два вполне системно-независимых (не сильно продвинутых) наковырял я сам. Но потом в силу увлечения красивостями и ускорением от них остались только "Орион-only" версии.
Еще есть кучка работающих прямо по аппаратуре типа Bridge Panels разного авторства.
Зоопарк еще тот, поэтому и интересуюсь - может кто-то написал по стандартам и притом с красивостями.

ivagor
25.04.2021, 12:09
Смутно помню общесипиэмовские коммандеры (wash, sweep, еще что-то есть), но практика показывает, что при наличии "родных" коммандеров люди в основном пользуются ими, т.к. они удобнее и выглядят более современно и красиво. Наверняка можно написать что-то вроде wash или sweep, только получше, проблема с желающими писать, да и пользоваться.

Improver
19.05.2021, 13:58
Собрал РДС по исходникам Виталия (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1112657&viewfull=1#post1112657)...
Для начала, как всё это складывается в один COM-файл, на примере РДС 3.02:
0100h +-----------------
| rdsh
03F0h +-----------------
| мусор
0400h +-----------------
| загрузчик с КД
0500h +-----------------
| bdos
1300h +-----------------
| bios (b7h)
24C0h +-----------------
| шрифт
2F00h +-----------------
| disp
3806h +-----------------
| мусор
3900h +-----------------
| virt
3D22h +-----------------
| мусор
4300h +-----------------
| vird7
4380h +-----------------
| мусор
4500h +-----------------
| ???
4580h +-----------------
| ccph
4EDAh +-----------------
| мусор
+-----------------Замечу, что загрузчик с КД и шрифты отсутствуют в исходниках, но это не беда -- их легко вытянуть из бинарника. А в остальном, исходники здорово помогают с разбором системы, пусть они даже и без комментариев.
Вот собранный из исходников (без мусора) вариант РДС 3.02: 75431

Ну и, как продолжение всего этого, собрал свой вариант РДС. Отличия от предыдущих версий:

- Обращение к НЖМД выполняется в LBA-режиме, как в версии 3.03 (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1057127&viewfull=1#post1057127), только я немного почистил алгоритмы, убрал ставшее ненужным сохранение характеристик НЖМД.

- Переделал формат квази-диска, теперь он полностью совпадает с форматом МДОСа, можно переключаться из одной системы в другую без форматирования, и в то же время сохранён весь функционал РДС. Сделано это методом создания файла RDS.SYS в секторах 180-195 КД, которые используются для размещения системы. Простое решение -- сектора есть, их нумерация на КД не смещена и система не может быть затёрта (пока файл RDS.SYS существует). Тут только один минус: из-за того, что обращение к этой области выполняется мимо дисковой системы, контрольные суммы секторов нарушаются, но не думаю, что это критично, можно будет как-то поправлять потом...

- При запуске системы из COM-файла теперь на КД создаётся/перезаписывается файл COMMAND.SYS, т.е. исключена ситуация, когда выдаётся ошибка, что он не найден системой (при запуске без форматирования КД).

- Загрузчик OS.COM также копируется на КД, но если не выполнялось форматирование, ему даётся имя RDS.COM, чтобы не затирать установленную до этого на КД систему. Если понадобится, то можно потом просто переименовать его вручную.

- Большая часть системы сжата в архив lzsa1, для её запуска используется распаковщик ivagor-а (https://zx-pk.ru/threads/29679-szhatie-dannykh.html?p=1105961&viewfull=1#post1105961), это позволило уменьшить размер файла с системой с 20 до 14 кБ.

Новая версия РДС 3.04 в архиве с исходниками: 75432

Теперь в планах добавить в РДС поддержку двух КД... :)

ivagor
19.05.2021, 14:24
Есть еще пожелание к РДС. Недавно svofski адаптировал сталкера с ДВК (https://zx-pk.ru/threads/29331-igra-quot-zona-quot-na-dvk.html) и для одной из промежуточных версий нужно было много памяти в cp/m. РДС тут был одним из хороших вариантов, но мешало использование ячейки памяти 000Fh для служебных целей. Хакнул РДС (перенес 000F в 0003), тот сталкер заработал (хакнутый вариант рдс я не выкладывал). Собственно пожелание - убрать служебную ячейку из диапазона 0008-0037h, некоторые сипиэмные программы могут заменять rst группой и желательно такие программы уважить.

electroscat
19.05.2021, 14:50
Спасибо огромное!!! Это величайший вклад, теперь РДС можно сделать лучшей системой для Вектора!!!

Круто бы было еще заставить при старте искать какой нибудь AUTOEXEC.BAT... Лично мне этого очень не хватает... И еще, ну это уже такое,... индикация процесса копирования в VC.COM. Ну и конечно, да, поддержка второго кваза... На мой взгляд, это все, что нужно поправить в этой системе, в остальном она идеальная!

Improver
19.05.2021, 15:54
убрать служебную ячейку из диапазона 0008-0037РДС активно использует эти ячейки, и CP/M тоже:
Как известно в ОС СР/М в этой области памяти зарезервированы следующие адреса
0-2 - "горячий" старт ОС,
3 - байт конфигурации,
4 - номер текущего диска и области пользователя,
5-7 - переход на диспетчер функций BDOS,
38h-3Ah - переход на обработку прерывания по кадровому импульсу (в "Вектор 06Ц"),
5Ch-7Fh - зарезервированы для БУФ файла,
80h-0FFh - зарезервированы под область DMA.

В РДС добавлены следующие ячейки:
8-0Аh - переход на диспетчер функций BDOS,добавлен для короткого вызова BDOS - командой RST 1,а также зарезервирован для расширения функций BDOS.
0Bh-0Dh - признак РДС (три байта в КОИ-8 - "РДС"),для того чтобы программа смогла определить (если надо),что она работает именно в РДС.
0Eh - версия РДС,старшая тетрада - номер версии,младшая - номер коррекции.
0Fh - слово включения резидентной части РДС,байт выводимый в порт 10h.В данной версии ОС,РДС находится в нулевой зоне квазидиска,соответственно слово включения будет - 20h.
3Bh - копия порта 10h,используется при обращении к резидентной части РДС.(См. также п.8)
3Ch - слово возврата из резидентной части РДС,после холодного старта и для полной СР/М-совместимости установлено в 23h,но может быть изменено (например,если его установить в 0,то по адресам с 0A000h по 0DFFFh
будут находится 2 и 3 экранные плоскости).
3Dh - коды ошибок BIOS,если при обмене с диском не было ошибок,устанавливается в 0.В основном эта ячейка предназначена для режима работы РДС номер 1.
3Eh - номер текущего режима РДС (биты 0-6),в данной версии использутся только режимы 0 и 1,бит 7 зарезервирован для переключения режимов
3Fh - номер режима обработки ошибок BIOS при обмене информацией с дисками.Номера 0 и 2 используются только в режиме 0 РДС,номер 1 - в любом.Номер 0 (установлен при холодном старте) - ошибки обрабатывает BIOS,вывоводится сообщение типа - "BIOS ERROR,CONTINUE ?",номер 2 - ошибки передаются
для обработки BDOS,номер 1 - BDOS и BIOS игнорируют ошибки,их обработка поручается программе пользователя,в ячейке 3Dh - код ошибки.
40h-5Bh - зарезервированы в режиме номер 1.
Кроме того,в сегменте РДС (то есть в данной версии зона 0) по адресу 0А000h находятся три слова,которые содержат адреса частей РДС интересных для программиста.По адресу 0А000h - адрес начала кода BIOS,0А002h - адрес начала BIOS дисплэя (РК-консоль) и 0А004 - адрес начала знакогенератора.
Сложно будет куда-то распихать все ячейки из этого диапазона, не ломая логику РДС и так, чтобы другие программы для РДС не перестали работать. Да и выше область памяти используется... Может проще запускать без ОС и возвращаться по БЛК-ВВОД?


Круто бы было еще заставить при старте искать какой нибудь AUTOEXEC.BATДа, кстати, полезная функция, надо будет посмотреть, как туда это внедрить.


индикация процесса копирования в VC.COMЭто когда очередь дойдёт до VC... :)

ivagor
19.05.2021, 16:08
Как известно в ОС СР/М в этой области памяти зарезервированы следующие адреса
0-2 - "горячий" старт ОС,
3 - байт конфигурации,
4 - номер текущего диска и области пользователя,
5-7 - переход на диспетчер функций BDOS,
38h-3Ah - переход на обработку прерывания по кадровому импульсу (в "Вектор 06Ц"),
5Ch-7Fh - зарезервированы для БУФ файла,
80h-0FFh - зарезервированы под область DMA.
Возможно я поторопился перенести в 0003, но видно, что официально cp/m диапазон 8-37h сам не трогает


В РДС добавлены следующие ячейки:
Проблема, которую я предлагаю попробовать решить - запуск некоторых сипиэмных программ в РДС и этим сипиэмным программам уникальные РДСные ячейки не нужны, даже наоборот, нужно чтобы РДС туда не лез. По тому, что я видел, критичная ячейка 000F, ее очень желательно переместить за пределы 8-37h, но это конечно не обязательно, всегда при большом желании можно хакнуть.

Improver
19.05.2021, 18:50
критичная ячейка 000F, ее очень желательно переместить за пределы 8-37hЗа пределами всё достаточно плотно, но если нужно сдвинуть всего один байт, то можно попробовать поменять её местами с ячейкой 3Dh, куда пишутся коды ошибок BIOS, они, по крайней мере, возникают не так часто...

ivagor
19.05.2021, 20:23
можно попробовать поменять её местами с ячейкой 3Dh
Возможно лучше с 3Fh.

electroscat
20.05.2021, 00:35
Погонял системку... Какая прелесть ! Никаких форматирований, переход из одной в другую систему - секунды... Супер ! Спасибо огромное ! В целом, автоекзек нужен только на холодный старт, при горячем старте VC переписанный при помощи .bat файла с рядом нужных файлов на C: запускается сам.
Появилась идея, комплексная. Можно один квазидиск отвести например под T72, а второй под РДС. Ну и в загрузчике чуток поменять, чтобы например при нажатой комбинации F1+F3 для загрузки использовался квазидиск D, RDS а без нажатия стартовала T72 с квазидиска С. Я мог бы ПЗУ загрузчика поковырять, исходники есть.
Не знаю, на сколько практична такая идея, кто как считает ?

Improver
20.05.2021, 08:22
Можно один квазидиск отвести например под T72, а второй под РДС. Ну и в загрузчике чуток поменять, чтобы например при нажатой комбинации F1+F3 для загрузки использовался квазидиск D, RDS а без нажатия стартовала T72 с квазидиска С. Я мог бы ПЗУ загрузчика поковырять, исходники есть.
Не знаю, на сколько практична такая идея, кто как считает ?Можно проще сделать, если через загрузчик: стандартно грузится файл os.com, а с комбинацией клавиш -- rds.com. И тогда будет не обязательно раскидывать системы по квазам. :)

Тут ещё над одной дилеммой голову ломаю, как лучше сделать два КД, объединённые в один диск, или два отдельных, C: и D:? В первом случае будет удобнее использовать, а во втором легче сделать определение наличия оборудования и автоматическую конфигурацию при запуске...

KTSerg
20.05.2021, 08:35
...
Тут ещё над одной дилеммой голову ломаю, как лучше сделать два КД, объединённые в один диск, или два отдельных, C: и D:? В первом случае будет удобнее использовать, а во втором легче сделать определение наличия оборудования и автоматическую конфигурацию при запуске...
Сложности есть в реализации и одного и другого варианта, и они уже обсуждались.
Для объединения, стандартная область КС маловата.
Надо думать ещё будет ли второй диск иметь теневую область экранного адресного пространства ОЗУ как стандартный диск, или весь будет доступен для файловой системы. это всё отразится на алгоритмах ДОСа.

Диск D: вроде как "стандартизировали" для НЖМД, или нет ?
Если "не ломать" структуру диска "С:", то просится просто объединить в один диск С: . С размещением каталога и области КС в тех-же адресах, для унификации алгоритмов.
Но могу ошибаться, т.к. со структурой квазидиска работал только в рамках своих программ, работавших с ним (КвазиДиском) без ДОСа.

electroscat
20.05.2021, 09:59
Можно проще сделать, если через загрузчик: стандартно грузится файл os.com, а с комбинацией клавиш -- rds.com. И тогда будет не обязательно раскидывать системы по квазам. :)

Вчера пробовал переименовать RDS.COM в OS.COM - все равно получил загрузку T72. Загрузку RDS получил только после ее холодного старта с форматированием. Пробовал в т72 набирать 1 4 RDS.COM - все равно грузится Т72. но когда после получения загрузки RDS304 с квазидиска перехожу в t72 и набираю 1 30 t72-lh.com - она начинает грузиться с квазидиска при перезагрузке. Не разобрался еще с этим.


Тут ещё над одной дилеммой голову ломаю, как лучше сделать два КД, объединённые в один диск, или два отдельных, C: и D:? В первом случае будет удобнее использовать, а во втором легче сделать определение наличия оборудования и автоматическую конфигурацию при запуске...

По мне так и 2 КД норм. Главное чтобы они в доступе были оба.

Кстати, проделал такое - форматирую кд в T72, загружаю RDS304, запускаю там VC3, потом снова запускаю Т72, набираю 8 С: и получаю некоторое количество ошибок на квазидиске в диапазоне ER=02 D=02 SHW=80 OP=04 NS=01 T=B4...EB S=8...1 (для T=B4 S=6...1) A2=CE A1=EC. От раза к разу повторяется, с чем это может быть связано ?

Improver
20.05.2021, 10:23
Вчера пробовал переименовать RDS.COM в OS.COM - все равно получил загрузку T72. Загрузку RDS получил только после ее холодного старта с форматированием.Надо будет глянуть загрузчик, вроде там не обязательно было иметь OS.COM первой записью в директории, значит должно грузить...


Кстати, проделал такое - форматирую кд в T72, загружаю RDS304, запускаю там VC3, потом снова запускаю Т72, набираю 8 С: и получаю некоторое количество ошибок на квазидиске в диапазоне ER=02 D=02 SHW=80 OP=04 NS=01 T=B4...EB S=8...1 (для T=B4 S=6...1) A2=CE A1=EC. От раза к разу повторяется, с чем это может быть связано ?Да, я об этом писал (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1117662&viewfull=1#post1117662) -- это происходит от того, что РДС обращается напрямую к памяти КД, минуя BDOS, поэтому контрольные суммы секторов 180-195 (0B4h-0C3h) сбиваются. В РДС также будет та же ошибка при выполнении "test". В этих секторах располагается файл RDS.SYS, так что пока ничего страшного...

KTSerg
20.05.2021, 10:30
Надо будет глянуть загрузчик, вроде там не обязательно было иметь OS.COM первой записью в директории, значит должно грузить...
...
Штатный загрузчик однозначно проверяет наличие первой записи на КД именно OS.COM, и начинает грузить только при наличии такой записи.

Improver
20.05.2021, 11:02
electroscat, KTSerg, сейчас глянул -- да, загрузчику, похоже, не только надо наличие OS.COM, но и чтобы он был первой записью. Надо будет улучшить загрузчик, чтобы он просматривал всю директорию. :)

electroscat
20.05.2021, 12:45
electroscat, KTSerg, сейчас глянул -- да, загрузчику, похоже, не только надо наличие OS.COM, но и чтобы он был первой записью. Надо будет улучшить загрузчик, чтобы он просматривал всю директорию. :)

У меня создалось ощущение, что в загрузчике от тимсофт имя не имеет значения, только расположение. Когда меняю имена местами - тоже грузится, не изменно, то что было после форматирования записано. перестает грузиться только когда файл удален.. Точнее не файл удален, а имя удалено из списка. То есть получается, что загрузчик по наличию os.com понимает просто наличие оси на кваздиске, а потом начинает грузить первую запись, не зависимо от того, какое у нее имя.

KTSerg
20.05.2021, 14:28
electroscat, KTSerg, сейчас глянул -- да, загрузчику, похоже, не только надо наличие OS.COM, но и чтобы он был первой записью. Надо будет улучшить загрузчик, чтобы он просматривал всю директорию. :)
Мне кажется более универсальный вариант, это написать мультизагрузчик для КД, обзывать его os.com, записывать его на диск первым, а уже он что-бы грузил то-что нужно, не зависимо от того где нужный файл находится на КД.
Перелопатить начальный загрузчик конечно можно, но это не универсальный вариант. Особенно если на реале ещё штатный загрузчик стоит.

Improver
20.05.2021, 14:40
KTSerg, да, тоже неплохой вариант.

electroscat
20.05.2021, 17:22
Мне кажется более универсальный вариант, это написать мультизагрузчик для КД, обзывать его os.com, записывать его на диск первым, а уже он что-бы грузил то-что нужно, не зависимо от того где нужный файл находится на КД.
Перелопатить начальный загрузчик конечно можно, но это не универсальный вариант. Особенно если на реале ещё штатный загрузчик стоит.

Отличная идея ! Это типа утилитка такая, которая пишет загрузчик в бут сектор квазидиска, и к нему файл конфигурации, где можно указать систему, которая будет следующей загружаться? Было бы хорошо, чтобы не нужно было в текстовых файлах копаться, как, пока не понимаю. Какой нибудь резидент например написать, чтобы при определенной комбинации клавиш изменял загружаемую систему... ))

KTSerg
21.05.2021, 05:46
Отличная идея ! Это типа утилитка такая, которая пишет загрузчик в бут сектор квазидиска, и к нему файл конфигурации, где можно указать систему, которая будет следующей загружаться? ...
Это может быть утилита, которая имеет функционал первичной настройки, и собственной модификации.
Например:
первый старт из под ДОСа;
проверка состояния КД, проверка на необходимость настройки или штатную работу в режиме загрузчика;
запрос у пользователя - какие программы запускать, с каким приоритетом;
модификация своего кода (запись выбранных имен файлов и выбранного приоритета в область данных);
запись себя в начало КД с именем os.com;
копирование на КД выбранных пользователем файлов (ДОСов);
Если запуск был в режиме загрузчика, опросить горячие клавиши, либо загрузить с КД и запустить приоритетный ДОС, либо загрузить альтернативный с заменой приоритета на последующие перезапуски либо без изменения приоритета (разовая замена ДОС).

ну, как-то так... видится...
Я не в курсе, есть-ли особенные требования у РДС, типа набор необходимых файлов и их расположение. Но думаю и этому можно утилиту научить.

Improver
21.05.2021, 06:52
KTSerg, я думаю, самое время вспомнить про Вашу программу-мультизапускалку (https://zx-pk.ru/threads/31686-vektor-06ts-programmka-multizapuskalka.html). :)

KTSerg
21.05.2021, 07:04
KTSerg, я думаю, самое время вспомнить про Вашу программу-мультизапускалку (https://zx-pk.ru/threads/31686-vektor-06ts-programmka-multizapuskalka.html). :)
Она не совсем подходит для данной задачи, или совсем не подходит для КД, т.к. не умеет с ним работать.

Improver
21.05.2021, 08:25
Она не совсем подходит для данной задачи, или совсем не подходит для КД, т.к. не умеет с ним работать.Это не большая проблема, поддержку КД можно добавить... Зато она уже умеет обращаться с файловой системой cp/m и имеет свой интерфейс. Думаю, при небольшой доработке она сможет выполнять и перечисленные выше функции загрузчика.

KTSerg
21.05.2021, 08:54
Это не большая проблема, поддержку КД можно добавить... Зато она уже умеет обращаться с файловой системой cp/m и имеет свой интерфейс. Думаю, при небольшой доработке она сможет выполнять и перечисленные выше функции загрузчика.
"умеет обращаться с файловой системой cp/m" - это слишком громко сказано.
Читает сектора НЖМД, разбирает директорий.
Можно конечно и поддержку КД добавить, но будет ли удобно пользоваться...

Improver
21.05.2021, 10:28
Читает сектора НЖМД, разбирает директорий.Для загрузчика этого более чем достаточно, писать на диск там же не надо.


Можно конечно и поддержку КД добавить, но будет ли удобно пользоваться...Сложно так сразу сказать, смотря что получится в итоге. Если сделать быстрый "запуск по умолчанию" и вывод полного списка по горячей клавише, например, при удержании УС, то, думаю, да.

KTSerg
21.05.2021, 10:39
... Если сделать быстрый "запуск по умолчанию" и вывод полного списка по горячей клавише, например, при удержании УС, то, думаю, да.
В принципе, если загрузчик умеет сам читать и НЖМД и КД, то запускаемые ДОСы могут даже не находиться на КД (если это не требуется для их работоспособности).
УС в некоторых начальных загрузчиках уже занят - не удаляет память - будет слишком много мусора.

Improver
21.05.2021, 17:09
запускаемые ДОСы могут даже не находиться на КДДа, это тоже будет плюсом.


УС в некоторых начальных загрузчиках уже занят - не удаляет память - будет слишком много мусора.Если на Векторе нет автозапуска, то не критично. Получится примерно так: нажимаем БЛК-ВВОД, из ПЗУ грузится Векторовский загрузчик, который находит на КД и загружает "мультизапускалку", и потом ждёт БЛК-СБРОС. Если нажать УС-БЛК-СБРОС, то будет показан полный список всех вариантов, просто БЛК-СБРОС -- запуск проги по дефолту. Ну а если на Векторе есть автозапуск, тогда для тех же целей можно, например, использовать клавишу РУС/ЛАТ, или СС -- на их одиночное нажатие загрузчики не реагируют, вроде...

Improver
04.06.2021, 16:25
Свежая версия РДС, бинарник с исходниками: 75564

Второй квазидиск ещё пока не добавил, пофиксил баги:


Сделал исправление контрольных сумм секторов под системой на квазидиске, правда, по описанным выше причинам, полностью исправить это невозможно, но количество ошибок по команде TEST (или 8 в МДОС) существенно сократилось.
Исправил работу команды HDD -- в предыдущих версиях была ошибка: запуск без параметров с любого диска, кроме А: вызывал сброс на 0 предыдущего диска (т.е. если, например, запустить HDD с диска В:, то вместо вывода конфигурации диску А: будет назначена нулевая дискета).
Исправил ошибку переключения на несуществующий диск (например, D: ), которая приводила к зависанию системы на этой ошибке до полного сброса.
Дополнил функционал команды TEST, теперь она может исправлять ошибки на квази-диске, для этого нужно к команде добавить ключик R:

TEST R
или
TEST C:R
Ну и, кроме того, немного ускорил работу программы тестирования КД.
Сделал защиту на запись треков 180-195 квазидиска, в которых расположена система, на всякий случай.
Дополнил документацию на РДС и приложил её в комплект к системе.
Немного улучшил работу системы с командной строкой: теперь по нажатию клавиш "вверх" или "вниз" в командную строку копируются символы предыдущей выполненной команды (если буфер не был очищен). Собственно, этой функции мне серьёзно недоставало во всех версиях Векторовских ДОСов, теперь в случае ошибочного ввода легче исправить и повторить последнюю команду.
Дальше, думаю, можно будет сделать второй буфер для запоминания командной строки, может даже изменить работу стрелок "влево" и "вправо" для редактирования команд.


И по поводу освобождения ячейки 15...

критичная ячейка 000F, ее очень желательно переместить за пределы 8-37h
Это трогать пока не стал... Технически это сделать легко, но если её переместить, то тогда перестанут работать все программы, написанные под РДС. Их немного, но патчить понадобится все, поэтому пока что эта ячейка пусть останется на месте.

ivagor
04.06.2021, 17:03
если её переместить, то тогда перестанут работать все программы, написанные под РДС.
Как это проявляется (переставание работать) на примере какой-нибудь программы? Просто после моей хаки 0F я (очень поверхностно) тестировал и программы работали. Или проблема в 3F?

Improver
04.06.2021, 17:37
Как это проявляется (переставание работать) на примере какой-нибудь программы? Просто после моей хаки 0F я (очень поверхностно) тестировал и программы работали. Или проблема в 3F?Проблема в 0F, точнее не проблема. Все программы, которые обращаются к функциям РДС, делают это примерно так:

. . .
DI
LDA 15
OUT 10H
. . . ; тут идёт обращение к функциям или ячейкам с параметрами РДС
LDA 3CH ;отключение "сегмента" РДС.
OUT 10H
EI
. . .
Можете глянуть это, например, в исходниках VC3, там эта конструкция встречается в четырёх местах... В общем, их нужно просто все пропатчить под другой адрес, но пока этого не сделано, думаю, можно пока не перемещать -- это сейчас не так критично.

И ещё, менять лучше всё-таки на 3Dh, а не на 3Fh -- к этой ячейке система обращается гораздо чаще.

ivagor
04.06.2021, 18:13
Понятно, тогда снимаю свое предложение, хакнутый рдс для использования в качестве cp/m с большим tpa у меня есть, если что. vc3 я пробовал и в хакнутом досе он работал (проверял только выбор и запуск программы), это интересно, надо будет разобраться, как это получается, но когда-нибудь потом.

Improver
10.02.2022, 15:08
Обновил РДС до версии 3.06, изменения такие:

Добавлена поддержка двух квази-дисков с автоопределением наличия второго КД при старте. Второй квази-диск должен быть подключён на порт 11h, в системе показывается, как диск D:.
Дополнена документация.
Содержимое COMMAND.SYS в бинарном файле теперь хранится тоже в упакованном виде, что ещё немного уменьшило его размер.
Исправлены найденные ошибки.

Работу протестировал в эмуляторе и на реальном Векторе -- критических ошибок нет, вроде, но есть один глюк, не пойму с чем связанный: на Векторе иногда не работает фиксация состояния "РУС/ЛАТ" и "СС" (маленькие/большие буквы), т.е. нажимаешь кнопку РУС или СС с любой буквой -- переключение есть, а одиночное нажатие как будто не срабатывает. А потом, через некоторое время, всё начинает работать... В эмуляторе такого эффекта нет вообще.

Кто хочет протестировать, вот архив с бинарником и документацией: 76997
Исходные коды к РДС тоже выкладываю, только я решил сделать форк исходникам Виталия Вьюнова на гитхабе, поэтому их теперь можно забрать там: https://github.com/ImproverX/RDS

b2m
10.02.2022, 16:25
нажимаешь кнопку РУС или СС с любой буквой -- переключение есть, а одиночное нажатие как будто не срабатывает
Дребезг контактов? В эмуляторе не реализовано :)

Improver
10.02.2022, 16:37
Дребезг контактов? В эмуляторе не реализовано :)Вот тоже надеюсь на этот вариант, если ни у кого больше не повторится -- значит, виноват мой Вектор.:(

Improver
17.05.2022, 09:37
Очередное обновление РДС, основных изменений, по сути, два:

Команда ОС "TEST" дополнена ключиком "F" для форматирования квази-диска.
Т.е. для того, чтобы отформатировать диск D: надо ввести команду "TEST D:F". Можно таким же методом отформатировать и диск С:, и даже система после этого некоторое время останется работоспособной, но делать это не советую, т.к. будут удалены все файлы, в том числе "COMMAND.SYS" и "RDS.SYS", необходимые для нормального функционирования, лучше отформатировать диск запуском с нажатой кнопкой "УС".
Добавлен поиск и исполнение файла AUTOEXEC.BAT при старте системы. Файл ищется сначала на квази-диске C:, если там нет, то на диске A:.

Проверил в эмуляторе и на железе -- глюков нет, вроде. Архив с бинарником и документацией: 77348
Исходные коды к РДС, как и прежде, можно забрать на гитхабе: https://github.com/ImproverX/RDS

KTSerg
17.05.2022, 10:49
Очередное обновление РДС, ...
Добавлен поиск и исполнение файла AUTOEXEC.BAT при старте системы. Файл ищется сначала на квази-диске C:, если там нет, то на диске A:.
...
Это хорошо, когда AUTOEXEC.BAT на диске С: имеет приоритет при перезапуске, ведь он тогда может отличаться от AUTOEXEC.BAT расположенного на диске А:.
Меня всегда напрягало, когда при перезагрузке, командный файл, каждый раз перезаписывал OS.COM на КД.

electroscat
17.05.2022, 12:38
Это хорошо, когда AUTOEXEC.BAT на диске С: имеет приоритет при перезапуске, ведь он тогда может отличаться от AUTOEXEC.BAT расположенного на диске А:.
Меня всегда напрягало, когда при перезагрузке, командный файл, каждый раз перезаписывал OS.COM на КД.

100%, это есть в новой Т72 - и это очень удобно, если доступен на диске C то значит система уже работала, и работа прожолжается, это мега удобно, а для РДС - это удлобно в тройне, потому что много чего нужно копировать на С, типа файловый менеджер, редактор и т.д. Я вообще все это батником запускал сручную, теперь, благодаря Improver (https://zx-pk.ru/members/8649-improver.html) все это будет стартовать из autoexec.bat. Огромное спасибо Improver (https://zx-pk.ru/members/8649-improver.html) !!!

- - - Добавлено - - -

Было бы круто, если бы в VC для РДС можно было на второй квазидиск попадать, этого не хватает. Но в целом, и без этого системка просто идеальная со всеми последними изменениями !!!

Improver
17.05.2022, 14:35
Было бы круто, если бы в VC для РДС можно было на второй квазидиск попадать, этого не хватает.Это тогда надо браться за развитие VC3. :)

ivagor
17.05.2022, 16:15
Не очень изящно, но на первый взгляд работает.

electroscat
21.05.2022, 15:47
Столкнулся с такой штукой, в VC не запускаются программы просто по ВК, нужно сначала нажать СС+ВК а потом ВК... Как то уже исправлял в файле VC.EXT помоему, но могу путать что то. Попробовал подложить файл со старого настроенного VC3 этому исправленному, но увы, то же самое. Подскажите, как исправить, чтобы COM и EXE запускались по ВК без лишних движений ?

В остальном, все работает, диск D в доступе, спасибо!!!

- - - Добавлено - - -

autoexec.bat - просто супер сила !!!

Improver
24.05.2022, 11:29
Я уже писал тут (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1146755&viewfull=1#post1146755), что в РДС на реальном железе есть проблема с переключением РУС/ЛАТ, вот сейчас выясняются интересные подробности... Проблема эта, как оказалось, совсем не связана с дребезгом, причина скорее в самой схеме: на ёмкостной клавиатуре как будто всегда нажаты клавиши, поэтому простая проверка состояния клавиатуры, как в РДС, выдаёт вместо кода FF (ничего не нажато) почти случайные значения, чаще всего это 41h, 43h или 00h (на моём Векторе). И, самое интересное, это совершенно не влияет на работу клавиатуры -- ни одна программа на Векторе не сигнализирует о "залипших" клавишах, в том числе и "Тест устройств". Я даже не могу сказать, было ли это изначально, или проявилось со временем.

Проверить клавиатуру можно вот такой простой программкой:

.org 0100h
START: DI
LXI H,0C008h
LXI D,0C000h ; область экрана C000-DFFF
MVI A,8AH
OUT 0
XRA A
OUT 3
LOOP: IN 2
STAX D ; пишем считанное значение в экран
MVI M,81h ; стираем (для наглядности)
INX D
INX H
INR A
JZ START ; возврат к началу, если "клавиши не нажаты" (=FFh)
MVI A,0E0h ; конец экранной области, старший байт
CMP H
JNZ L_NXT
MVI H,0C0h ; возврат к началу экрана
L_NXT: CMP D
JNZ LOOP
MVI D,0C0h ; возврат к началу экрана
JMP LOOP
.end
Запустить этот тест можно из монитора-отладчика, либо загрузить, как ROM. В случае "залипания" клавиатуры по экрану будет быстро бежать блок 8 байт * 81h, как у меня на живом Векторе, а в эмуляторах он просто висит в начале экрана и двигается только при нажатии клавиш.

Пока, думаю, в РДС надо будет исправить подпрограмму чтения клавиатуры, чтобы при получении по "IN 2" кода, отличного от FFh проверялась вся клавиатура, а потом делался вывод по нажатиям на РУС/ЛАТ и СС.

ivagor
24.05.2022, 12:27
Если я правильно понял, проблема возникает при попытке узнать единомоментно (активировав все ряды) статус клавиатуры. Вроде в векторовских программах это не было особо распространено, опрашивали каждый ряд отдельно.

Improver
24.05.2022, 13:35
проблема возникает при попытке узнать единомоментно (активировав все ряды) статус клавиатурыИменно так. Есть два варианта схемы ёмкостной клавиатуры Вектора, у меня астраханская схема (http://www.sensi.org/scalar/ware/514/), возможно в другом варианте этого бага нет... Или у меня просто конденсаторы посохли, от чего таймеры в клавиатуре глючат.


Вроде в векторовских программах это не было особо распространено, опрашивали каждый ряд отдельно.Ну как не распространено... Было достаточно часто, в той же Т-34/Т-72 есть, эта проверка использовалась для обхода опроса всей клавиатуры в подпрограмме обработки прерывания. Просто там, с этим багом, каждый раз исполняется проверка всех клавиш, и в результате баг не заметен. А в играх да, скорее всего, опрашивали только клавиши управления, там эта глобальная проверка не обязательна.

Improver
26.05.2022, 09:48
Исправил работу РДС с клавиатурой, теперь клавиши РУС/ЛАТ и СС нормально отрабатывают и на моём Векторе. Ну и попутно оптимизировал алгоритмы -- полная проверка клавиатуры выполняется примерно на 20% быстрее, и на 75% быстрее при отсутствии нажатий (по сравнению с предыдущей версией).

Архив с РДС: 77384
Исходники на гитхабе (https://github.com/ImproverX/RDS) обновлены.

Improver
18.07.2022, 13:35
Обновил РДС в соответствии с патчем ivagorа (https://zx-pk.ru/threads/34508-80-simvolov-v-stroke-i-rezhim-512-tochek-voobshche.html?p=1158574&viewfull=1#post1158574), что ускорило отрисовку символов на экране.

Тестовый вывод 2240 символов (коды 255...32, 10 раз) даёт среднюю скорость примерно 820 символов в секунду против 788 сим./сек. в прошлой версии. Тестировал вот этой программкой (с исходниками): 77592

Архив с РДС: 77591
Исходники на гитхабе (https://github.com/ImproverX/RDS) обновлены.

Improver
18.12.2023, 09:59
На телеграм-канале, посвящённом Вектору, была интересная ссылка на архив ПО (https://drilnet.github.io/downloads/vector-06c/downloads.html), и там есть несколько неизвестных вариантов МДОСа, а именно:

MikroDOS ver.3.1, монитор ver.5.1, режим 64 х 32, г. Харьков, 1993г. (https://drilnet.github.io/downloads/vector-06c/system-disk-1-fls/SCRV51.COM):
79938

MikroDOS ver.3.1, монитор ver.4.1, режим 32 х 32, г. Харьков, 1992г. (https://drilnet.github.io/downloads/vector-06c/system-disk-1-fls/SCRV41.COM):
79939
Тот самый легендарный "цветной мдос"?

Ну и ещё есть немного всяких утилит под МДОС, в том числе, например, Работа с дисками MS-DOS. (C) Терентьев С.В. (г. Харьков, 1995г.). (https://drilnet.github.io/downloads/vector-06c/system-disk-1-fls/COMMAND.COM):
79940

ivagor
18.12.2023, 10:28
Наверно мне надо завязывать приводить (https://zx-pk.ru/threads/8394-kartoteka-po-dlya-vektora-06ts.html?p=1149477&viewfull=1#post1149477) ссылки на находки, их как-будто не было.

Improver
18.12.2023, 11:21
Наверно мне надо завязыватьНе, всё забывается, всё теряется, поэтому лучше два раза повторить одно и то же, в разных местах. :)

aGGreSSor
11.12.2025, 19:47
Вопрос по МикроДОС (стихи). Насколько мне известно, существует два способа обеспечить автостарт с диска МикроДОС.

Первый: прописать COM-файл в файле INITIAL.SUB, служащий неким аналогом AUTOEXEC.BAT.
Здесь есть проблема, независимо от версии МикроДОС, после завершения обработки INITIAL.SUB или после возврата из запущенного приложения (если оно было одно), в консоль выводится строчка @@@@@@@@@@@@@@@@@@@@@@@@@@@@. Этих символов @ будет тем больше, чем больше приложений (команд) было выполнено в INITIAL.SUB. Судя по всему это фича.
Вопрос: как заткнуть этот "фонтан"? Что надо обнулить?

Второй: прописать в системных дорожка МикроДОС, с каким-то (не знаю каким) смещением имя файла, который мы хотим автостартовать с диска. Видел такие fdd-образы на Базисе, но ещё не анализировал.
Как я понимаю, необходимо изменить, например, MDBOLD47.COM (или от какой-нибудь Т-72), а затем SYSGEN-ом его записать, типа: SYSGEN A:MDBOLD56.COM A:100
Но там же, наверняка, CRC, или пофиг (похоже что пофиг, попробовал поменять INITIAL SUB найденный поиском по бинарнику - удалось)?
Вопрос: М.б. уже известно конкретное смещение на примере какой-нибудь МикроДОС?

Ramiros
11.12.2025, 23:20
Bootsector имеет служебную информацию, по которой загрузчик смотрит куда грузить (правда далеко не все зарузчики смотрят, большинство просто грузят с 100h адреса)
struct BootSector
{
WORD LoadAddress;
WORD RunAddress;
WORD LoadSectorCount;
BYTE SizeDisk; /* 0-5.25", 1-8" */
BYTE Density; /* 0-FM, 1-MFM */
BYTE TpI; /* 0-48 TpI, 1-96 TpI, 2-135 TpI */
BYTE SkewFactor; /* 1-no sector tranlation else = len(_SecTran) */
BYTE SecSize; /* 0-128, 1-256, 2-512, 3-1024 */
BYTE InSide; /* 0-single, 1-double */
WORD SecPerTrack;
WORD TrkPerDisk;
/*DPB*/
WORD SPT; /* logical sector(128) per track */
BYTE BSH; /* block shift */
BYTE BLM; /* block shift mask */
BYTE EXM; /* extent mask EXM=(BLM+1)*128/1024 - 1 - [DSM/256] */
WORD DSM; /* disk size - 1 */
WORD DRM; /* dir entry - 1 */
WORD AL; /* dir allocation */
WORD CKS; /* dir check table size CKS=(DRM+1)/4; 0 for fixed disk */
WORD OFS; /* offset, reserved tracks count */
BYTE CheckSum;
BYTE SecTran[96];
};

svofski
12.12.2025, 01:30
Вопрос: как заткнуть этот "фонтан"? Что надо обнулить?
Просто в МикроДОС нет размера файла в байтах, только в секторах. Поэтому текстовые файлы надо затыкать ^Z в конце.