На ВМ1.
Код:000001
@776/122540 177777
@1000/177777 10011
001002/000000
@R6/177574 1000
@R7/000001 1000
@R0/160134 0
@R1/000000 160000
RS/000000 341
@/000341
@P
000003
@776/000341
Вид для печати
На ВМ1.
Код:000001
@776/122540 177777
@1000/177777 10011
001002/000000
@R6/177574 1000
@R7/000001 1000
@R0/160134 0
@R1/000000 160000
RS/000000 341
@/000341
@P
000003
@776/000341
Попробовал загрузится с прошивки от платы И4 Эл.60. На приводе DX вылетает, на DY пробует читать и встает, чего-то ждет.
Загрузчик
Реализован так:
Код:case CMD_EMPTY:
{
switch( nCMD_Phase )
{
case 1:
{
nCMD_WordCount = wDATA & 0xFF;
nCMD_Phase = 2;
bTR = true;
}
break;
case 2:
{
nCMD_BufAddr = wDATA;
nCMD_BufAddr |= nCMD_ExtAddrBits;
nCMD_Phase = 0;
bTR = false;
if( ( bCMD_DoubleDensity && nCMD_WordCount > 128 )
|| ( !bCMD_DoubleDensity && nCMD_WordCount > 64 ) )
{
nLastErrorCode = 0230;
wRXES |= BIT_10;
CMD_Done_Error();
}
else
{
int nBytes = nCMD_WordCount * 2;
for( int i = 0 ; i < nBytes ; i++ )
{
dword addr = nCMD_BufAddr + i;
if( !*pb22bit ) { addr &= 0xFFFF; }
if( !abWriteAccess[addr] )
{
wRXES |= BIT_11;
return CMD_Done_Error();
}
BYTE( addr ) = SectorBuf[i];
}
CMD_Done();
}
}
break;
}
}
break;
Потому что это кусок загрузчика DX. Он доходит до чтения прочитанного сектора из буфера контроллера и осуществляет переход за пределы кода.
Оригинал из прошивки ДВК-1 выглядит так:
Код:ROM:173000 Mov #100247, R2
ROM:173004
ROM:173004 loc_173004: ; CODE XREF: ROM:173046
ROM:173004 ; ROM:173064
ROM:173004 Mov #177170, R1
ROM:173010
ROM:173010 loc_173010: ; CODE XREF: ROM:173012
ROM:173010 BiTB R2, (R1)
ROM:173012 BEq loc_173010
ROM:173014 MovB #^B111, R3
ROM:173020 Mov R1, R0
ROM:173022 Mov R2, (R0)+
ROM:173024 Br loc_173032
ROM:173026 ; ---------------------------------------------------------------
ROM:173026
ROM:173026 loc_173026: ; CODE XREF: ROM:173050
ROM:173026 Mov #1, (R0)
ROM:173032
ROM:173032 loc_173032: ; CODE XREF: ROM:173024
ROM:173032 ASR R3
ROM:173034 BCS loc_173042
ROM:173036 MovB (PC)+, (R1)
ROM:173040 ; ---------------------------------------------------------------
ROM:173040
ROM:173040 loc_173040: ; CODE XREF: ROM:173054
ROM:173040 MovB (R0), (R3)+
ROM:173042
ROM:173042 loc_173042: ; CODE XREF: ROM:173034
ROM:173042 ; ROM:173036
ROM:173042 BiT R2, (R1)
ROM:173044 BEq loc_173042
ROM:173046 BMi loc_173004
ROM:173050 BCS loc_173026
ROM:173052 TstB (R1)
ROM:173054 BMi loc_173040
ROM:173056 Clr R0
ROM:173060 Cmp #240, (R0)
ROM:173064 BNE loc_173004
ROM:173066 CmpB #247, R2
ROM:173072 AdC R0
ROM:173074 Clr @#177674 ; CPC
ROM:173100 Mov #340, @#177676 ; CPSW
ROM:173106 START
Если контроллер DY - он может работать и с 16-разрядной, и с 18-разрядной шиной. Про ВП1-033 не вполне понятно - он может выбирать одиночную/двойную плотность и работать с ДМА? Если нет - тогда только DX.
Вроде как загрузчик был битый. Более того, этот кусок совпадает с куском кода прошивки 055 с адреса 022.
Исправленный загрузчик- здесь.
Да, вроде только DX. Непонятно кому предназначался код загрузчика DY в прошивке 055.
Ну и DY думаю что может в PIO работать без DMA.