PDA

Просмотр полной версии : Определение номера дисковода



goodboy
09.04.2005, 15:04
Решил посоветоваться:
как я понял в переменной TRDOS #5D16, хранится копия регистра #FF
два младших бита указывают на номер дисковода
начало лоадера получается примерно такое:

A,(#5D16)
AND #03
OR #3C
(LETTER),A

LD A,D
OR A
RRA
LD C,A
LD A,(LETTER)
JR NC,$+2
RES 4,A
IX,#2F4D ; установка головки ?
................
всё правильно ???
можно написать короче ???

Spectre
09.04.2005, 18:35
Решил посоветоваться:
как я понял в переменной TRDOS #5D16, хранится копия регистра #FF
два младших бита указывают на номер дисковода
начало лоадера получается примерно такое:

Там реально хранится номер дисковода, так что AND 3 можно и не делать. Но я на всякий случай делаю. :)


A,(#5D16)
AND #03
OR #3C
(LETTER),A

LD A,D
OR A
RRA
LD C,A
LD A,(LETTER)
JR NC,$+2
RES 4,A
IX,#2F4D ; установка головки ?
................
всё правильно ???
можно написать короче ???

Можно.


LD A,(#5D16)
AND 3
LD (DRIVE+1),A
...
LD A,D
RRA
LD A,#2C
JR NC,$+4
LD A,#3C
DRIVE OR 0
...


Доки сейчас под рукой нет, поэтому могу где-нибудь ошибиться.

Faster
21.06.2005, 23:54
Там реально хранится номер дисковода, так что AND 3 можно и не делать. Но я на всякий случай делаю. :)



Можно.


LD A,(#5D16)
AND 3
LD (DRIVE+1),A
...
LD A,D
RRA
LD A,#2C
JR NC,$+4
LD A,#3C
DRIVE OR 0
...


Доки сейчас под рукой нет, поэтому могу где-нибудь ошибиться.

:D

Это делается еще круче:

LD A,(#5CF6) ;дисковод
OR #2C
LD (DRIVE+#1),A
...
LD A,D
SRL A
LD C,#7F
LD SP,TABLE
JP (HL) - выбор дорожки
DRIVE LD A,#2C
JR C,$+#4
OR #10
JP (HL) - вычисление стороны
LABEL LD A,#18
JP (HL) - позиционирование
...