aav8 wrote:Начал вписывать в таблицу кое-какие команды - и столкнулся
с проблемой - что у Z80 есть 2-х байтовые команды...
И 3-х байтовые - тоже есть...
aav8 wrote:Теперь у меня вопросы/ответы:
В какой момент увеличивать/увеличивается счетчк косанд?
Сразу после выдачи адреса на шину...
aav8 wrote:Проверка прерываний происходит тамже или где-то
в последнем такте команды?
Это точно написано в мануале, для z80 - я просто не помню...
aav8 wrote:Захват шины (ПДП) - явление синхронное или несинхронное?
- наверное синхронное, но возможно в любом цикле или такте.
Асинхронное, но через регистры привязывают к Ф2, а вот когда точно проверяют -
на диаграмме в описании обычно показывают...
aav8 wrote:Чиркните несколько строчек кода на ассеблере
для i8080 которым можно будет протестировать хотя-бы
часть команд.
А как ты будешь убеждаться, что они правильно работают?
В принципе - могу выложить
asm-программу, где есть
все команды i8080, я использовал
её как тест ядра эмулятора...
Тебе в
asm-виде или сразу в
bin?
Кладу в бинарнике:
TEST8080.BIN
Там программы нет как таковой, коды нарастают от 0 до 255, учтены неопубликованные.
В 2-х и 3-байтных командах 2-й и 3-й байты = 00Н.
На
asm это вот что:
Code: Select all
NOP
LXI B,0000H
STAX B
INX B
INR B
DCR B
MVI B,00H
RLC
NOP
DAD B
LDAX B
DCX B
INR C
DCR C
MVI C,00H
RRC
NOP
LXI D,0000H
STAX D
INX D
INR D
DCR D
MVI D,00H
RAL
NOP
DAD D
LDAX D
DCX D
INR E
DCR E
MVI E,00H
RAR
NOP
LXI H,0000H
SHLD 0000H
INX H
INR H
DCR H
MVI H,00H
DAA
NOP
DAD H
LHLD 0000H
DCX H
INR L
DCR L
MVI L,00H
CMA
NOP
LXI SP,0000H
STA 0000H
INX SP
INR M
DCR M
MVI M,00H
STC
NOP
DAD SP
LDA 0000H
DCX SP
INR A
DCR A
MVI A,00H
CMC
MOV B,B
MOV B,C
MOV B,D
MOV B,E
MOV B,H
MOV B,L
MOV B,M
MOV B,A
MOV C,B
MOV C,C
MOV C,D
MOV C,E
MOV C,H
MOV C,L
MOV C,M
MOV C,A
MOV D,B
MOV D,C
MOV D,D
MOV D,E
MOV D,H
MOV D,L
MOV D,M
MOV D,A
MOV E,B
MOV E,C
MOV E,D
MOV E,E
MOV E,H
MOV E,L
MOV E,M
MOV E,A
MOV H,B
MOV H,C
MOV H,D
MOV H,E
MOV H,H
MOV H,L
MOV H,M
MOV H,A
MOV L,B
MOV L,C
MOV L,D
MOV L,E
MOV L,H
MOV L,L
MOV L,M
MOV L,A
MOV M,B
MOV M,C
MOV M,D
MOV M,E
MOV M,H
MOV M,L
HLT
MOV M,A
MOV A,B
MOV A,C
MOV A,D
MOV A,E
MOV A,H
MOV A,L
MOV A,M
MOV A,A
ADD B
ADD C
ADD D
ADD E
ADD H
ADD L
ADD M
ADD A
ADC B
ADC C
ADC D
ADC E
ADC H
ADC L
ADC M
ADC A
SUB B
SUB C
SUB D
SUB E
SUB H
SUB L
SUB M
SUB A
SBB B
SBB C
SBB D
SBB E
SBB H
SBB L
SBB M
SBB A
ANA B
ANA C
ANA D
ANA E
ANA H
ANA L
ANA M
ANA A
XRA B
XRA C
XRA D
XRA E
XRA H
XRA L
XRA M
XRA A
ORA B
ORA C
ORA D
ORA E
ORA H
ORA L
ORA M
ORA A
CMP B
CMP C
CMP D
CMP E
CMP H
CMP L
CMP M
CMP A
RNZ
POP B
JNZ 0000H
JMP 0000H
CNZ 0000H
PUSH B
ADI 00H
RST 0
RZ
RET
JZ 0000H
JMP 0EE11H
CZ 0000H
CALL 0AA55H
ACI 00H
RST 1
RNC
POP D
JNC 0000H
OUT 00H
CNC 0000H
PUSH D
SUI 00H
RST 2
RC
RET
JC 0000H
IN 00H
CC 0000H
CALL 0BB44H
SBI 00H
RST 3
RPO
POP H
JPO 0000H
XTHL
CPO 0000H
PUSH H
ANI 00H
RST 4
RPE
PCHL
JPE 0000H
XCHG
CPE 0000H
CALL 0CC33H
XRI 00H
RST 5
RP
POP PSW
JP 0000H
DI
CP 0000H
PUSH PSW
ORI 00H
RST 6
RM
SPHL
JM 0000H
EI
CM 0000H
CALL 0DD22H
CPI 00H
RST 7
PS. Кое-где нули во 2-м и 3-м байтах я заменял, оказывется, в тестовых целях... Это не ошибки. 