Speccy - наш выбор!  
ZXPRESS
ZXTUNES
Virtual TR-DOS
World of Spectrum
ZX Spectrum Old Demos •

Go Back   Speccy - наш выбор! > ZX Spectrum Software > Программирование

Reply
 
Thread Tools Display Modes
Old 2nd August 2007, 03:20   #1
Veteran
 
Join Date: 16th November 2005
Location: Санкт-Петербург
Posts: 1,725
Thanks: 1,256
Thanked 634 Times in 294 Posts
Evgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to behold
Default Ищу процедуру выключения мотора дисковода.

У меня следующая ситуация: есть процедурка (почти идентичная оригинальной TR-DOS'ной - нету только проверки на кнопку Break) по определению наличия диска в дисководе.

Так вот. Как корректно отключить мотор дисковода, если диска в дисководе нету?

Буду весьма признателен за куслчек кода
__________________
Scorpion ZS-256 Turbo, SMUC v2.A, HDD 40Gb, GS 2Mb, ZXMC1v25, TSFM,
FDD 5'25 Teac x2, FDD 3'5 Sony, VGA&PAL v3.0, PC Keyboard & Mouse
Evgeny Muchkin is offline   Reply With Quote
Old 2nd August 2007, 12:11   #2
Master
 
Join Date: 27th April 2005
Location: Москва
Posts: 869
Thanks: 0
Thanked 6 Times in 5 Posts
Sonic is on a distinguished road
Default

Посмотри дизассемблер ПЗУ, я сейчас не помню адрес, она там есть. Загружаешь номер дисковода кажется в A и вызываешь ее через #3D2F.
Она там вызывается при входе в командный процессор (#3D00).
__________________
Pentagon-128 + AY + Kempston
Бабло побеждает зло!
Sonic is offline   Reply With Quote
Old 2nd August 2007, 12:47   #3
Guru
 
Join Date: 14th January 2005
Location: Ekaterinburg
Posts: 2,340
Thanks: 74
Thanked 633 Times in 358 Posts
caro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to behold
Default

Quote:
Originally Posted by Sonic View Post
Посмотри дизассемблер ПЗУ, я сейчас не помню адрес, она там есть. Загружаешь номер дисковода кажется в A и вызываешь ее через #3D2F.
Вот она:
Code:
; ПРОЦЕДУРА из TRDOS 5.03 и выше
; ИММИТАЦИЯ УСТАНОВКИ ДИСКА ДЛЯ ОТКЛЮЧЕНИЯ
; МОТОРА ДИСКОВОДА
; В (A) код определяющий номер дисковода:
; 0 - A:, 1 - B:, 2 - C:, 3 - D: 
L02B9:	LD	B,32		;32/2 ИМПУЛЬСА ПО INDEX
L02BB:	PUSH	BC
	XOR	1000B		;ИНВЕРСИЯ INDEX
	OUT	(FDCUP),A
	PUSH	AF
	LD	A,5
	CALL	DELA		;ПАУЗА DT*5
	POP	AF
	POP	BC
	DJNZ	L02BB		;ПОВТОРЯТЬ 32 РАЗА
	RET
caro is offline   Reply With Quote
Old 2nd August 2007, 12:58   #4
Veteran
 
Join Date: 16th November 2005
Location: Санкт-Петербург
Posts: 1,725
Thanks: 1,256
Thanked 634 Times in 294 Posts
Evgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to behold
Default

То что нужно! Спасибо, уважаемые коллеги!
__________________
Scorpion ZS-256 Turbo, SMUC v2.A, HDD 40Gb, GS 2Mb, ZXMC1v25, TSFM,
FDD 5'25 Teac x2, FDD 3'5 Sony, VGA&PAL v3.0, PC Keyboard & Mouse
Evgeny Muchkin is offline   Reply With Quote
Old 2nd August 2007, 15:22   #5
Master
 
Join Date: 27th April 2005
Location: Москва
Posts: 869
Thanks: 0
Thanked 6 Times in 5 Posts
Sonic is on a distinguished road
Default

Кстати, интересно...
Во-первых, вижу комментарий "5.03 и выше". Разве в 5.01 не было? Она не останавливала дисковод?
Во-вторых, ВГ93 использовалась кроме Спека практически во всех бытовых машинах. А как там с этим поступали? В схемах их контроллеров нет имитации IP.
__________________
Pentagon-128 + AY + Kempston
Бабло побеждает зло!
Sonic is offline   Reply With Quote
Old 2nd August 2007, 15:30   #6
Guru
 
Join Date: 14th January 2005
Location: Ekaterinburg
Posts: 2,340
Thanks: 74
Thanked 633 Times in 358 Posts
caro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to beholdcaro is a splendid one to behold
Default

Quote:
Originally Posted by Sonic View Post
Кстати, интересно...
Во-первых, вижу комментарий "5.03 и выше". Разве в 5.01 не было? Она не останавливала дисковод?
В версии 5.01 эта же процедура расположена с адреса 02ABh.

Quote:
Originally Posted by Sonic View Post
Во-вторых, ВГ93 использовалась кроме Спека практически во всех бытовых машинах. А как там с этим поступали? В схемах их контроллеров нет имитации IP.
Например в контроллере Корвета, для управления мотором есть отдельный бит в управляющем регистре.
Этим битом и включается/выключается мотор.
caro is offline   Reply With Quote
Old 2nd August 2007, 19:46   #7
Veteran
 
Join Date: 16th November 2005
Location: Санкт-Петербург
Posts: 1,725
Thanks: 1,256
Thanked 634 Times in 294 Posts
Evgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to behold
Default

Еще у меня вопросец образовался.

Ситуация такая:
В дисководах A и B стоят диски. В портах TR-DOS и FF записаны значения касающиеся дисковода A. Теперь нужно перенастроиться на дисковод B - выставить регистры дорожки и сектора в правильные значения для B.
Как это сделать не используя команду Восстановление?
__________________
Scorpion ZS-256 Turbo, SMUC v2.A, HDD 40Gb, GS 2Mb, ZXMC1v25, TSFM,
FDD 5'25 Teac x2, FDD 3'5 Sony, VGA&PAL v3.0, PC Keyboard & Mouse
Evgeny Muchkin is offline   Reply With Quote
Old 3rd August 2007, 10:34   #8
Veteran
 
GriV's Avatar
 
Join Date: 18th February 2005
Location: Набережные Челны
Posts: 1,556
Thanks: 598
Thanked 115 Times in 75 Posts
GriV has a spectacular aura aboutGriV has a spectacular aura aboutGriV has a spectacular aura about
Default

Странный код честно говоря. Помню что когда мне надо было остановить привод я смотрел как это было сделано в BestView. Изза чего кстати он и не работает на R80 под которым я пишу преимущественно - он использует команду восстановления вслед за которой сразу же (!) без всяких пауз идёт команда экстренного безусловного останова. Почему не работает в эмулях - да всё просто - эмулятор в отличие от реала успевает выполнить эту команду %) восстановления. Помню что в своей View для гашения привода я использовал немного другой алгоритм - любой из реалов и эмулей отрабатывал это корректней чем алгоритм из BestView - вначале восстановление и сброс, затем позиционирование на ту дорожку, где головка находилась до команды восстановления и так же принудительный сброс. На самом деле мотор остановится ещё на первой команде, вторая нужна чтобы дурные эмуляторы не глючили.
Пауза же в BestView была, но только в процедуре определения диска в флопике - там так же даётся команда восстановления, вслед за которой - после паузы - запускается подпрограмма IN_1F, опять же лучше почитать статьи Ивана Рощина, как он это делал и из каких соображений задавалась пауза.


Ага, вот счас специально посмотрел в своей п/п чтения дисков, завершалась она так:
LD A,(#5CF5)
AND A
RRA ; задаётся номер физической дорожки
LD C,#7F
CALL OUTCA
LD A,#18 ; команда позиционирования с загрузкой - бит h=1
LD C,#1F
CALL OUTCA
LD A,#D0 ; команда принудительного прерывания
JP OUTCA

и
OUTCA LD IX,OUTC
JP TO_DOS
; OUTC есть
OUTC EQU #2A53

Ага, я похоже изменил алгоритм - вместо того чтобы два раза позиционироваться - вначале на нулевую потом на основную дорожку, сразу ставил позиционирование на основную дорожку.
__________________
Биты рулят лучше байтов, байты рулят шустрее!
View, Звук, Цвет
GriV is offline   Reply With Quote
Old 3rd August 2007, 10:58   #9
Master
 
Join Date: 27th April 2005
Location: Москва
Posts: 869
Thanks: 0
Thanked 6 Times in 5 Posts
Sonic is on a distinguished road
Default

Ничего странного. Команда прерывания отключает мотор только при присутствии диска. Это багофича у ВГ93 такая - останов мотора происходит после прошествия скольких-то индексных импульсов.
Указанный код гарантированно формирует пачку импульсов на выводе IP. Для этого в контроллере диод стоит между каким-то из битов порта #FF и IP.
__________________
Pentagon-128 + AY + Kempston
Бабло побеждает зло!
Sonic is offline   Reply With Quote
Old 4th August 2007, 02:04   #10
Veteran
 
Join Date: 16th November 2005
Location: Санкт-Петербург
Posts: 1,725
Thanks: 1,256
Thanked 634 Times in 294 Posts
Evgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to beholdEvgeny Muchkin is a splendid one to behold
Default

А я как же я?
__________________
Scorpion ZS-256 Turbo, SMUC v2.A, HDD 40Gb, GS 2Mb, ZXMC1v25, TSFM,
FDD 5'25 Teac x2, FDD 3'5 Sony, VGA&PAL v3.0, PC Keyboard & Mouse
Evgeny Muchkin is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +4. The time now is 05:34.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Map Яндекс.Метрика