Кашу маслом не испортишь, если в нем не будет надобности, потом не долго и демонтировать.
Вид для печати
Кашу маслом не испортишь, если в нем не будет надобности, потом не долго и демонтировать.
блин сделал "заторможенный" сброс z80, понизил частоту проца в 2 раза на случай ВВ55 не успевает, запустил мини тест ВВ55 - все пофиг https://flic.kr/p/2hB6zwZ тут снял логическим анализатором основные сигналы, не пашет выдача в порт единиц и все тут, при этом такое впечатление что выходы вв55 в Z состоянии потому что если дотронуться щупом осциллографа и пальцем одновременно то видны "наводки" такие же как и просто пальцем до щупа дотронуться
вот этот тест пустил
1 0000 org 0
2 0000 F3 di
3 0001 3E 80 ld a,80h
4 0003 D3 AB out (0abh),a
5 0005 3E FC ld a,0fch
6 0007 D3 A8 out (0a8h),a
7 0009 76 halt
bigral, как бы на будущие. Раскопал тест для вас, не мой.
O_O !!! век живи и век учись, вот это чувак показал уровень!!! https://github.com/apoloval/artemisa...ter/simulation как я понял он сначала все в симуляторе запилил чтоб схему не пришлось перерисовывать
Нет там модели целой платы, так какие-то обрывки мыслей. Да и к чему это? Когда весь msx укладывается в голову ребенка (при условии что мать не бл.. и ребенок не питался с ашана).
по скорости должно пахать, я на проц 1.7mhz подал
вот переснял фото поточнее, ато на предыдущем шото D5 показывал чето 1 в первом запросе (наверно отпал при "контрольном" снимке для flickr-a, а я и не заметил, точнее заметил но токо сегодня когда опять стал возиться с платой), вот "новые" данные:
https://flic.kr/p/2hE3AqF
https://flic.kr/p/2hDZNVP
https://flic.kr/p/2hE3AoM
Все красиво. Пишем в #AB, потом в #A8. Должно работать. Банально, может PPI кирдык (или PPI попался не той системы)?
Так то чудес хватает (правда, как правила, чудеса случаются от собственной невнимательности). Я вот тут VDP1 прикручивал в FPGA. Так не как не прикручивался (квартус игнорит код VDP1 и молчит).
Нашел в чем дело, лишний 0.
vdp_ce_n_s <= '0' when cpu_addr_s( 7 downto 3) = "100110" and (io_wr_n_s = '0' or io_rd_n_s = '0') else '1';
мрак, подумал проверить PPI, сочинил sketch для ардуины:все пашет нормально PPI (правда частота тут раза в 4 ниже...)Код:/*
test i8255
arduino pin -> i8255 pin
14->~RD 5
15->~CS 6
16->ADDR[1] 8
17->ADDR[0] 9
18->~WR 36
19->RESET 35
2->D0 34
3->D1 33
4->D2 32
5->D3 31
6->D4 30
7->D5 29
8->D6 28
9->D7 27
*/
// name = arduino PIN
const int DATA[8] = {2, 3, 4, 5, 6, 7, 8, 9}; // ARDUINO PINS
const int RD_L = 14; // ~RD
const int CS_L = 15; // ~CS
const int ADDR[2] = {17, 16}; // A0..A1
const int WR_L = 18; // ~WR
const int RESET = 19; // RESET
const int delay_val = 5000;
// *** setup ***
void setup() {
Serial.begin(115200);
noInterrupts();
pinMode(LED_BUILTIN, OUTPUT);
for(int n = 0; n < 8; n++) {
pinMode(DATA[n], OUTPUT); //set D0..D7 as out pins
digitalWrite(DATA[n], HIGH); //set default D0..D7 = 1
}
for(int k = 0; k < 2; k++) {
pinMode(ADDR[k], OUTPUT); //set A0..A1 as out pins
digitalWrite(ADDR[k], HIGH); //set default A0..A1 = 1
}
//set defaults for control pins
pinMode(RD_L, OUTPUT); digitalWrite(RD_L, HIGH);
pinMode(CS_L,OUTPUT); digitalWrite(CS_L, HIGH);
pinMode(WR_L, OUTPUT); digitalWrite(WR_L, HIGH);
pinMode(RESET, OUTPUT); digitalWrite(RESET, LOW);
interrupts();
Serial.println("resetting i8255");
noInterrupts();
digitalWrite(RESET, HIGH);
digitalWrite(RESET, LOW);
delay(delay_val);
interrupts();
Serial.println("setting i8255 to out in mode0 and write clk to PA0..PA7");
noInterrupts();
writeValue(0x3, 0x80);
} //**** setup ****
//**** loop ****
void loop() {
for (unsigned int clk = 0; clk < 256; clk++) {
digitalWrite(LED_BUILTIN,HIGH);
interrupts();
Serial.print("writting:");
Serial.println(clk);
Serial.flush();
noInterrupts();
writeValue(0x0, clk);
digitalWrite(LED_BUILTIN,LOW);
}
interrupts();
Serial.print("completed.");
Serial.flush();
noInterrupts();
}; //**** loop ****
void writeValue(unsigned int address, unsigned int value) {
// set address
for (unsigned int i = 0; i < 2; i++) digitalWrite(ADDR[i],((address >> i) & 1) ? HIGH : LOW);
// set data
for (unsigned int i = 0; i < 8; i++) digitalWrite(DATA[i],((value >> i) & 1) ? HIGH : LOW);
digitalWrite(CS_L, LOW);
digitalWrite(WR_L, LOW);
digitalWrite(WR_L, HIGH);
digitalWrite(CS_L, HIGH);
} // writeValue
но блин!!! шо ж оно такое то? какой уровень на ноге RESET должен быть в рабочем состоянии PPI?