OFFTOP: Ох уж эта строчная "к"... Мы ее всегда фиксили на кружке. :)
Вид для печати
OFFTOP: Ох уж эта строчная "к"... Мы ее всегда фиксили на кружке. :)
Пожалуйста
Код нужно вставить в начало подпрограмм : загрузки DOS и смены дисков FDCКод:;; REKALIBR
; FFF1H порт мотора 1= ВКЛ , 0= ВЫКЛ
; перемещает головку на один шаг STEP+ без контроля готовности диска , затем на TRACK00
; CPU i8080/85
;
; SYR-ALEX 03-06-2018
RKALIBR: MVI A,01H ; включаем
STA FFF1H ; мотор
MVI A,53H ; делаем STEP+1
STA FFE8H ; без контроля готовности диска
MVI H,20H ; пауза
RKALIBR_P: DCX H ; необходима что бы
MOV A,L ; контроллер успел
ORA H ; сделать
JNZ RKALIBR_P ; шаг
MVI A,03H ; отправляем головку
STA FFE8H ; на TRACK00
MVI A,OOH ; выключаем
STA FFF1H ; мотор
RET ; возврат
Вот дизассемблированный исходник DOS Специалиста МХ от Vinxru и меня. Правда в мнемонике Z80. Здесь наверное, коды нужно в ставить в программу инициализации дискеты и смены диска, соответственно метки MK1 и M0D. Сам MX-DOS находится на каждой дискете и DOS грузит его с дискеты в память по адресу #e400 и запускается отсюда же. Буду искать свободное место в прошивке.
Вот в мнемонике Z80
- - - Добавлено - - -Код:; REKALIBR
; FFF1H порт мотора 1= ВКЛ , 0= ВЫКЛ
; перемещает головку на один шаг STEP+ без контроля готовности диска , затем на TRACK00
; CPU z80
;
; SYR-ALEX 03-06-2018
RKALIBR: LD A,#01 ; включаем
LD (#FFF1),A ; мотор
LD A,#53 ; делаем STEP+1
LD (#FFE8),A ; без контроля готовности диска
LD H,#20 ; пауза
RKALIBR_P: DEC HL ; необходима что бы
LD A,L ; контроллер успел
OR H ; сделать
JP NZ,RKALIBR_P ; шаг
LD A,#03 ; отправляем головку
LD (#FFE8),A ; на TRACK00
LD A,#OO ; выключаем
LD (#FFF1),A ; мотор
RET ; возврат
Вставил в инициализацию :
В переключение дисков :Код:; подпрограмма инициализации дисковода
; вход: [А] - =#00 - запустится DOS,
; = не #00 - запустится дисковод и произойдет вытаскивание DOS с дискеты и уход в программу
MK1 pop af
call RKALIBR
push af
ld b, a
call LC885 ; команда восстановление
ld a, #01
ld (SID), a ; установить сторону диска
ld (Cek), a ; и сектора
ld h, #13 ; 4871*10mkc
GXD dec hl
ld a, l
or h
jp nz, GXD
ld (SID), a ; установить сторону диска
Как то так . Если при компиляции адреса не собьются , то будет счастье.Код:; подпрограмма переключения дисководов
M0D ld a, (LC7FD)
xor #01
ld (LC7FD), a ; номер дисковода
ld (#fff3), a ; номер дисковода
call RKALIBR ; ре калибровка
LC885 ld a, #01
ld (PD0), a ; регистр команды
LC88A ld a, (PD0) ; регистр состояния
rra ; сдвиг вправо аккумулятора
jp nc, LC88A
LC891 ld a, (PD0) ; регистр состояния
rra
jp c, LC891
ret
Нет места, нет места...:v2_dizzy_facepalm:
Вот эти подпрограммы уже используются для работы, назначение не ясно, какая-то работа с RAM/ROM-дисками:
Можно убрать подпрограммы работы с принтером:Цитата:
C0C jp M05 ; С-байт на ленту
C24 jp MUC ; чтение заголовка с ленты
или забрать место под какие-то символы работы с принтером:Цитата:
C3F jp PSI ; C-символ на принтер
C42 jp BAU ; A-байт на принтер
Чем жертвуем?Цитата:
TZN defb #ee,#d0,#d1,#e6,#d4,#d5,#e4,#d3
defb #e5,#d8,#d9,#da,#db,#dc,#dd,#de
defb #df,#ef,#e0,#e1,#e2,#e3,#d6,#d2
defb #ec,#eb,#d7,#e8,#ed,#e9,#e7,#ea
defb #ce,#b0,#b1,#c6,#b4,#b5,#c4,#b3
defb #c5,#b8,#b9,#ba,#bb,#bc,#bd,#be
defb #bf,#cf,#c0,#c1,#c2,#c3,#b6,#b2
defb #cc,#cb,#b7,#c8,#cd,#c9,#c7,#ca
Конечно принтером .
Да никак был в отпуске, сегодня приехал. Сделаю.
SYR-ALEX, переделка кода в прошивке ещё нужна?
Так точно . Надо доделывать проект затянувшийся почти на 30 лет:v2_dizzy_ironic: