Orion 128 diagram. Essensen av sekvensiell avslutning

Historisk sett var den første masseproduserte amatørradiodatamaskinen Radio-86RK, som bare krevde 29 mikrokretser for å bygge. Dens betydelige begrensning var at den bare støttet tekstmodus. Orion-128 - var en logisk fortsettelse - også rettet mot montering av radioamatører, hadde mer minne (128kb versus 16) og støttet grafikkmodus: 384 × 256 (i 2 farger, 4 farger og 2 farger fra en palett på 16 farger for hver 8 piksler). Den estimerte befolkningsstørrelsen til Orions i perioden med dens høyeste popularitet er omtrent 30-40 tusen datamaskiner.

Jeg fikk Orion i 1994, og det var på Orion jeg skrev mine første programmer. Da jeg kjøpte min første PC i 1997, begynte Orion å bli mer og mer feil (den startet ikke opp første gang, jeg måtte starte på nytt mange ganger...) og til slutt sluttet den å fungere helt. Jeg kunne ikke reparere den da, og i alle disse årene lå den urørlig, men ikke glemt.

I sommer bestemte jeg meg endelig for å prøve å reparere den – det som kom ut av den (samt en gjennomgang av arkitekturen og noen programvarefunksjoner) – under kuttet.

Arkitektur

Hjertet til datamaskinen er KR580VM80A-prosessoren, en analog av Intel 8080. For å forenkle designet ble ikke prosessorstatusordet fanget opp (hvor prosessoren "snakker" når den skriver til stabelen, leser eller skriver til I/ O-porter). Det er heller ingen avbruddskontroller.

På de øverste adressene er monitorens BIOS. Den er laget på en interessant måte - alle funksjonene kalles gjennom en tabell i de høyeste minneadressene, som ganske enkelt utfører et ubetinget hopp til stedet for den faktiske implementeringen av funksjonen, og når funksjonsimplementeringer endres, forblir anropsadressene det samme, og det er fortsatt mulig å legge dem til (tabellen vokser "ned") .

I/O-porter - ble kartlagt til minne, dvs. hvis vi ved dekoding av adressen så at adressen = portadressen, skjedde det en skriving til portregisteret. Portadressene var i Monitor-området, hvor du ikke kunne skrive uansett. Porter ble laget:

0F400H - tastaturport 0F500H - brukerport nr. 1 0F600H - brukerport nr. 2 0F700H - utvidelseskortport 0F800H - grafikkmoduskontroll (kun skrive) 0F900H - minnesidebytte (kun skrive) 0FA00H - skriv kun skjermminneadressebytte ) for opptak) 0FB00H - systemport nr. 4 (kun for opptak, ikke brukt)

KR580VM80A-prosessoren har en 16-bits adressebuss, og kan følgelig bare adressere 64kb minne. sidebytteporten lar prosessoren velge gjeldende minneside. Men hvis vi bytter side, vil programmet kjøres fra en annen side på samme adresse! Fordi Det er vanskelig å jobbe under slike forhold; vanligvis gjør skjermen alt arbeidet med tilleggssider (siden den er "synlig i minnet" på alle sider), men dette er selvfølgelig ikke for raskt.

Grafikkutgang implementeres som følger: binære tellere går konstant gjennom den gjeldende videominneadressen. Multipleksere kan koble enten adressebussen til prosessoren (når den trenger det) eller adressen sortert etter tellere til minneadressepinnene. Hver videominneadresse leses 2 ganger, men hvis det var en konflikt med prosessoren, lagres ikke leseverdien (dvs. én av to - det er garantert ingen konflikt, siden prosessoren får tilgang til minnet relativt sjelden).

Videominne leses samtidig fra begge sider, og de leste 16 bitene går deretter inn i skiftregistre (parallell lasting - seriell utgang), basert på utgangen som et videosignal genereres av. I monokrom modus brukes ikke den andre siden med minne, men i fargemodus må du skrive til den andre siden. Og dette, som vi husker, går sakte, fordi... kun mulig gjennom oppfordringer til å overvåke rutiner.

Her ligger den største ulempen med Orion - tekstutgangshastigheten er veldig lav (omtrent et sekund per side med tekst i fargemodus), spesielt sammenlignet med Radio-86RK.

Reparere

Jeg hadde en fabrikkversjon av Orion, i UKNC-saken:

Fordi datamaskinen var fabrikklaget, kretskortet var forskjellig fra magasinversjonen, og det var noen forskjeller i kretsen, som ikke gjorde oppgaven enklere. På ledningene (på venstre side av brettet) hang også en K155IE5-teller - jeg ante selvfølgelig ikke hvorfor den hang der, et annet mysterium.

I følge rådet byttet jeg ut de sovjetiske keramiske kondensatorene med nye. Strømforsyningen var Orions sårpunkt (og den ga meg feil spenninger) - jeg byttet den helt ut med nye pulse. Orion krevde spenninger på +5, +12 og -5V (eller rettere sagt, disse spenningene ble påkrevd av KR580VM80A-prosessoren; alt annet trengte +5).

Men datamaskinen fungerte ikke: et tofaset klokkesignal kom til prosessoren, det var tydelig at noe skjedde på adressen og databussen, men datamaskinen fungerte ikke, det var søppel på skjermen uten tegn til bevisst aktivitet .

Min første tanke var at innholdet i monitoren hadde blitt dårligere i løpet av 20 år (det beskyttende vinduet var ikke forseglet med elektrisk tape) - jeg bestilte en TL866-programmerer, slo sammen fastvaren - og til min beklagelse passet den loggen ned til byten. Tristhet. Det var ingen ideer.

Jeg visste at hvis det var problemer med -5 og 12V spenninger, kunne prosessoren brenne ut. Derfor byttet jeg ut prosessoren og bussjåføren på databussen - men dette ga ikke noe resultat.

RAS- og CAS-signalene ligner på sannheten (siden dette er de høyest frekvenssignalene - det er også problemer med dem).

Jeg la merke til at en av bitene på databussen alltid er 1. Det viste seg at jeg ved et uhell kortsluttet den til +5V da jeg loddet kondensatorene. Først nå begynte jeg å forstå hvorfor det er en loddemaske på kretskort :)

Minnetesten fungerte, men veldig merkelig, etter å ha testet den første minnesiden, testet jeg den første på nytt, og ikke den andre. Mistanke falt på registeret til gjeldende minneside (port 0F900H) - enten fungerer ikke skrivingen, eller så bytter ikke denne verdien siden.

For å gjøre det lettere å feilsøke, skrev jeg et program i stedet for Monitor som konstant bytter minneside. Jeg tok ut den gamle EEPROM KS573RF2 fra Orion og begynte å slette... Etter en halvtime under en kvartslampe passet fastvaren fortsatt byte for byte (mer moderne EEPROM 27512 - slettet på 35-45 sekunder)... Først etter en time med steking, mikrokretsen var ren. Men da jeg prøvde å skrive det ned, hadde jeg en episk feil som det viste seg, programmereren kan produsere en programmeringsspenning som ikke er høyere enn 21V, mens KS573RF2 krever 26.

Det var selvfølgelig mulig å hacke programmereren, men jeg bestemte meg for å lodde en mer moderne flash-stasjon med elektrisk sletting - plasseringen av pinnene stemte selvfølgelig ikke, og jeg måtte lodde på ledningene ("den multi-story” kretskort passet ikke i høyden). Brytere - lar deg velge en av flere fylte skjermer, og loddes til de første ubrukte bitene av adressen med en pull-up til 0 (KS573RF2 - 2kb, 11 bits, som betyr brytere på 12-13-14 biter):

Det viste seg at i det øyeblikket dekoderen fungerer og utsteder en for skriving til sidebytteporten - blir databussen øyeblikkelig 0, og registeret har ikke tid til å skrive nummeret til den nye minnesiden (på høyre - gul - databussbit, blå - skrive strobe til porten).

Hvis du forsinker opptaksstroben litt med en kondensator, skjer opptaket, og den nødvendige minnesiden skrives til, men dette er et for skittent hack, og jeg trodde ikke på det.

Det var ingen flere ideer. Jeg la merke til at det ikke var noen data ved utgangene til to minnebrikker, så jeg erstattet dem. Det gamle PCB viste sin verste side - det ble svart når det ble loddet med hårføner (mor fortalte meg skumle eventyr om PCB som ble svart fra en hårføner - men jeg trodde det ikke), stiene falt av... A deprimerende syn. Ved avlodding uten hårføner hjalp et loddebolt med avloddepumpe (en fantastisk oppfinnelse, du smelter loddet, trykker på en knapp - og det suger opp alt, det viktigste er å ikke flekke brettet senere), og en kobberflette (loddeveke), som ble brukt til en hel haug med:

Etter å ha byttet ut minnebrikkene, sluttet plutselig alt å fungere. Igjen er det søppel på skjermen uten tegn til liv. For å være ærlig, på dette tidspunktet var jeg klar til å gi opp og innrømme at ikke alt her i livet kan gjøres.

Etter å ha undersøkt tavlen nøye med et forstørrelsesglass, klarte jeg å finne 2 kortslutninger til, noe jeg gjorde, men minnetesten begynte ikke å virke. Så oppdaget jeg ved å sjekke at det var en ny kortslutning på databussen – men etter å ha sett gjennom hele databussen fant jeg den ikke. Jeg måtte kutte en bestemt bit av databussen i biter for å begrense søket. Til slutt ble kortslutningen funnet – den viste seg å være så mikroskopisk at den knapt var synlig gjennom et forstørrelsesglass. Grunnen til at jeg klarte å oppnå kortslutninger så lett viste seg å være enkel - jeg tok feilaktig lavtsmeltende loddemetall med vismut (smeltepunkt 144 grader) i stedet for vanlig POS60-lodd. Ved kontakt med en loddebolt med en temperatur på 250 grader, kokte fluksen øyeblikkelig, og små dråper loddemetall ble spredt rundt. Og jeg lurte fortsatt på hvorfor overflaten blir matt etter lodding...

Minnetesten fungerte, og det ser ut til at kortslutningen som ble funnet under inspeksjonen løste problemet med sidebytte, nå ble ikke databussen tilbakestilt til 0 i det mest avgjørende øyeblikket, og sidebytte fungerer stabilt:

Lasting av ORDOS fra en ekstern ROM-stasjon fungerte imidlertid fortsatt ikke. Etter å ha lest 3 byte fra ROM-disken manuelt gjennom portene (kommandoer for dette er tilgjengelige i Monitor-1), så jeg at 2 databiter var feil (sammenlignet med ROM-diskbildet slått sammen på programmereren). Etter å ha loddet romdisken, startet ORDOS opp! Joy visste ingen grenser:

Imidlertid gjensto det fortsatt problemer: minnetesten viste en minnefeil på den andre siden etter oppvarming, noen ganger forsvant bildet på TV-en, spesielt ofte når du tester den andre minnesiden, og noe måtte gjøres med den mystiske K155IE5 hengende på ledningene:

Det var enkelt å bytte ut minnebrikken, men jeg måtte lide med at bildet forsvant. Mistanke falt på signalet som tillater at data kan skrives fra videominnet til (skriving der er forbudt når prosessoren får tilgang til minnet). Sporet var langt (~50 cm), og siden det ikke er noen impedanstilpasning - signalet ble reflektert fra endene av sporet, og overskred det tillatte nivået 0 i TTL-logikk (0,4V) - kan dette forårsake problemer. Derfor implementerte jeg seriell terminering - en 220 Ohm motstand ved siden av signalkilden - ringingen forsvant, men problemet gjensto:

Det som bidro til mystikken var at når oscilloskopets jord ble koblet til, stoppet bildeforsvinningen. Det viste seg at problemet lå i en dårlig 12V nettstrømforsyning, som tilsynelatende sparte på filtrering - det var mye rusk på bakken (dvs. mellom bakken og 12V-bussen er det alltid 12V, men i forhold til bakken av TVen eller oscilloskopet er det stor støy). Ved å bytte ut strømforsyningen med en bedre (fra FPGA demoboards), ble problemet fullstendig løst.

Etter å ha sporet K155IE5 på ledningene, viste det seg at den delvis erstatter K1533IE5 loddet inn i brettet. Hvorfor det var nødvendig å la henne henge på ledningene er ikke klart for meg. Jeg tok ut K1533IE5, loddet K155IE5 - og alt fungerer! 1533-serien er en borgerlig ALS, 155 er en vanlig TTL. ALS har redusert lastekapasitet og hastighet, tilsynelatende var dette den opprinnelige årsaken til utskiftingen.

Generell oversikt i ferdig form:

Et lite skjerf på venstre side -

skjema for å flytte skjermen ned (ellers er den første linjen på LCD-TVer kuttet av)

Historisk sett var den første masseproduserte amatørradiodatamaskinen Radio-86RK, som bare krevde 29 mikrokretser for å bygge. Dens betydelige begrensning var at den bare støttet tekstmodus og krevde sjetonger som var vanskelig å få tak i. Orion-128 - var en logisk fortsettelse - også rettet mot montering av radioamatører, hadde mer minne (128kb versus 16/32kb) og støttet grafikkmodus: 384 × 256 (i 2 farger, 4 farger og 2 farger fra en palett med 16 farger for hver 8 piksler). Den estimerte befolkningsstørrelsen til Orions i perioden med dens høyeste popularitet er omtrent 30-40 tusen datamaskiner.

Jeg fikk Orion i 1994, og det var på Orion jeg lanserte mine første programmer (før det måtte jeg skrive dem "på bordet"). Da jeg kjøpte min første PC i 1997, begynte Orion å bli stadig mer feilaktig (den startet ikke opp første gang, jeg måtte starte på nytt mange ganger...) og til slutt sluttet den å fungere helt. Jeg kunne ikke reparere den da, og i alle disse årene lå den urørlig, men ikke glemt.

I sommer bestemte jeg meg endelig for å prøve å reparere den – det som kom ut av den (samt en gjennomgang av arkitekturen og noen programvarefunksjoner) – under kuttet.

Arkitektur

Hjertet til datamaskinen er KR580VM80A-prosessoren, en sovjetisk analog av Intel 8080. For å forenkle designet ble ikke prosessorstatusordet fanget opp (der prosessoren "snakker" når den skriver til stabelen, leser eller skriver til I/O-portene). Det er heller ingen avbruddskontroller.

På de øverste adressene er monitorens BIOS. Den er laget på en interessant måte - alle funksjonene kalles gjennom en tabell i de høyeste minneadressene, som ganske enkelt utfører et ubetinget hopp til stedet for den faktiske implementeringen av funksjonen, og når funksjonsimplementeringer endres, forblir anropsadressene det samme, og det er fortsatt mulig å legge dem til (tabellen vokser "ned") .

I/O-porter - ble kartlagt til minne, dvs. hvis vi ved dekoding av adressen så at adressen = portadressen, skjedde det en skriving til portregisteret. Portadressene var i Monitor-området, hvor du ikke kunne skrive uansett. Porter ble laget:

0F400H - tastaturport 0F500H - brukerport nr. 1 0F600H - brukerport nr. 2 0F700H - utvidelseskortport 0F800H - grafikkmoduskontroll (kun skrive) 0F900H - minnesidebytte (kun skrive) 0FA00H - skriv kun skjermminneadressebytte ) for opptak) 0FB00H - systemport nr. 4 (kun for opptak, ikke brukt)

KR580VM80A-prosessoren har en 16-bits adressebuss, og kan følgelig bare adressere 64kb minne. sidebytteporten lar prosessoren velge gjeldende minneside. Men hvis vi bytter side, vil programmet kjøres fra en annen side på samme adresse! Fordi Det er vanskelig å jobbe under slike forhold; vanligvis gjør skjermen alt arbeidet med flere sider (siden det er "synlig i minnet" på alle sider), men dette er absolutt ikke for raskt.

Grafikkutgang implementeres som følger: binære tellere går konstant gjennom den gjeldende videominneadressen. Multipleksere kan koble enten adressebussen til prosessoren (når den trenger det) eller adressen sortert etter tellere til minneadressepinnene. Hver videominneadresse leses 2 ganger, men hvis det var en konflikt med prosessoren, lagres ikke leseverdien (dvs. én av to - det er garantert ingen konflikt, siden prosessoren får tilgang til minnet relativt sjelden).

Videominne leses samtidig fra begge sider, og de leste 16 bitene går deretter inn i skiftregistre (parallell lasting - seriell utgang), basert på utgangen som et videosignal genereres av. I monokrom modus brukes ikke den andre siden med minne, men i fargemodus må du skrive til den andre siden. Og dette, som vi husker, går sakte, fordi... kun mulig gjennom oppfordringer til å overvåke rutiner.

Her ligger den største ulempen med Orion - tekstutgangshastigheten er veldig lav (omtrent et sekund per side med tekst i fargemodus), spesielt sammenlignet med Radio-86RK. Prosessoren utfører 300-500 tusen operasjoner per sekund (med en klokkefrekvens på 2,5 MHz), og skriving til en ekstra minneside krever minst et dusin operasjoner.

La oss finne ut hva som ikke fungerer

Jeg hadde fabrikkversjonen av Orion:

Fordi datamaskinen var fabrikklaget, kretskortet var forskjellig fra magasinversjonen, og det var noen forskjeller i kretsen, som ikke gjorde oppgaven enklere. På ledningene (på venstre side av brettet) hang også en K155IE5-teller - jeg ante selvfølgelig ikke hvorfor den hang der, et annet mysterium.

I følge rådet byttet jeg ut de sovjetiske keramiske kondensatorene med nye. Strømforsyningen var Orions sårpunkt (og den ga meg feil spenninger) - jeg byttet den helt ut med nye pulse. Orion krevde spenninger på +5, +12 og -5V (eller rettere sagt, disse spenningene ble påkrevd av KR580VM80A-prosessoren; alt annet trengte +5).


Men datamaskinen fungerte ikke: et tofaset klokkesignal kom til prosessoren, det var tydelig at noe skjedde på adressen og databussen, men datamaskinen fungerte ikke, det var søppel på skjermen uten tegn til bevisst aktivitet .

Min første tanke var at innholdet i monitoren hadde blitt dårligere i løpet av 20 år (det beskyttende vinduet var ikke forseglet med elektrisk tape) - jeg bestilte en TL866-programmerer, slo sammen fastvaren - og til min beklagelse passet den loggen ned til byten. Tristhet. Det var ingen ideer.

Jeg visste at hvis det var problemer med -5 og 12V spenninger, kunne prosessoren brenne ut. Derfor byttet jeg ut prosessoren og bussjåføren på databussen - men dette ga ikke noe resultat.

RAS- og CAS-signalene ligner på sannheten (siden dette er de høyest frekvenssignalene - det er også problemer med dem).

Jeg la merke til at en av bitene på databussen alltid er 1. Det viste seg at jeg ved et uhell kortsluttet den til +5V da jeg loddet kondensatorene. Først nå begynte jeg å forstå hvorfor det er en loddemaske på kretskort :-)

Minnetesten fungerte, men veldig merkelig, etter å ha testet den første minnesiden, testet jeg den første på nytt, og ikke den andre. Mistanke falt på registeret til gjeldende minneside (port 0F900H) - enten fungerer ikke skrivingen, eller så bytter ikke denne verdien siden.

For å gjøre det lettere å feilsøke, skrev jeg et program i stedet for Monitor som konstant bytter minnesiden. Jeg tok ut den gamle EEPROM KS573RF2 fra Orion og begynte å slette... Etter en halvtime under en kvartslampe passet fastvaren fortsatt byte for byte (mer moderne EEPROM 27512 - slettet på 35-45 sekunder)... Først etter en time med steking, mikrokretsen var ren. Men da jeg prøvde å skrive det ned, hadde jeg en episk feil som det viste seg, programmereren kan produsere en programmeringsspenning som ikke er høyere enn 21V, mens KS573RF2 krever 26.

Det var selvfølgelig mulig å hacke programmereren, men jeg bestemte meg for å lodde en mer moderne flash-stasjon med elektrisk sletting - plasseringen av pinnene stemte selvfølgelig ikke, og jeg måtte lodde på ledningene ("den multi-story” kretskort passet ikke i høyden). Brytere - lar deg velge en av flere fylte skjermer, og loddes til de første ubrukte bitene av adressen med en pull-up til 0 (KS573RF2 - 2kb, 11 bits, som betyr brytere på 12-13-14 biter):

Det viste seg at i det øyeblikket dekoderen fungerer og utsteder en for skriving til sidebytteporten - blir databussen øyeblikkelig 0, og registeret har ikke tid til å skrive nummeret til den nye minnesiden (på høyre - gul - databussbit, blå - strobe for skriving til porten).

Hvis du forsinker opptaksstroben litt med en kondensator, skjer opptaket, og den nødvendige minnesiden skrives til, men dette er et for skittent hack, og jeg trodde ikke på det.

Det var ingen flere ideer. Jeg la merke til at det ikke var noen data ved utgangene til to minnebrikker, så jeg erstattet dem. Det gamle PCB viste sin verste side - det ble svart når det ble loddet med hårføner (mor fortalte meg skumle eventyr om PCB som ble svart fra en hårføner - men jeg trodde det ikke), stiene falt av... A deprimerende syn. Ved avlodding uten hårføner hjalp et loddebolt med avloddepumpe (en fantastisk oppfinnelse, du smelter loddet, trykker på en knapp - og det suger opp alt, det viktigste er å ikke flekke brettet senere), og en kobberflette (loddeveke), som ble brukt til en hel haug med:

Etter å ha byttet ut minnebrikkene, sluttet plutselig alt å fungere. Igjen er det søppel på skjermen uten tegn til liv. For å være ærlig, på dette tidspunktet var jeg klar til å gi opp og innrømme at ikke alt her i livet kan gjøres.

Etter å ha undersøkt tavlen nøye med et forstørrelsesglass, klarte jeg å finne 2 kortslutninger til, noe jeg gjorde, men minnetesten begynte ikke å virke. Da sjekket jeg fullstendig at det var en ny kortslutning på databussen - men etter å ha sett gjennom hele databussen fant jeg den ikke. Jeg måtte kutte en bestemt bit av databussen i biter for å begrense søket. Til slutt ble kortslutningen funnet – den viste seg å være så mikroskopisk at den knapt var synlig gjennom et forstørrelsesglass. Grunnen til at jeg klarte å oppnå kortslutninger så lett viste seg å være enkel - jeg tok feilaktig lavtsmeltende loddemetall med vismut (smeltepunkt 144 grader) i stedet for vanlig POS60-lodd. Ved kontakt med en loddebolt med en temperatur på 250 grader, kokte flussen øyeblikkelig og spredte små dråper loddemetall rundt. Og jeg lurte fortsatt på hvorfor overflaten blir matt etter lodding...

Minnetesten fungerte, og det ser ut til at kortslutningen som ble funnet under inspeksjonen løste problemet med sidebytte, nå ble ikke databussen tilbakestilt til 0 i det mest avgjørende øyeblikket, og sidebytte fungerer stabilt:

Lasting av ORDOS fra en ekstern ROM-stasjon fungerte imidlertid fortsatt ikke. Etter å ha lest 3 byte fra ROM-disken manuelt gjennom portene (kommandoer for dette er tilgjengelige i Monitor-1), så jeg at 2 databiter var feil (sammenlignet med ROM-diskbildet slått sammen på programmereren). Etter å ha loddet romdisken, startet ORDOS opp! Joy visste ingen grenser:

Imidlertid gjensto det fortsatt problemer: minnetesten viste en minnefeil på den andre siden etter oppvarming, noen ganger forsvant bildet på TV-en, spesielt ofte når du tester den andre minnesiden, og noe måtte gjøres med den mystiske K155IE5 hengende på ledningene:

Det var enkelt å bytte ut minnebrikken, men jeg måtte lide med at bildet forsvant. Mistanke falt på signalet som tillater at data kan skrives fra videominnet til (skriving der er forbudt når prosessoren får tilgang til minnet). Sporet var langt (~50 cm), og siden det ikke er noen impedanstilpasning - signalet ble reflektert fra endene av sporet, og overskred det tillatte nivået 0 i TTL-logikk (0,4V) - kan dette forårsake problemer. Derfor implementerte jeg seriell terminering - en 220 Ohm motstand ved siden av signalkilden - ringingen forsvant, men problemet gjensto:

Essensen av sekvensiell avslutning

La oss anta at den karakteristiske impedansen til sporet er 220 ohm. Uten terminering vil en 5V-puls nå enden av sporet, bli reflektert, og den øyeblikkelige spenningen der vil være 10V. Det meste vil selvsagt kuttes av beskyttelsesdiodene inne i mikrokretsen, men det vil være en støt på opptil 10V. Hvis vi plasserer en 220 Ohm motstand ved siden av signalkilden, så vil 2,5V gå langs sporet (siden vi har en spenningsdeler), når 2,5V når enden av sporet og reflekteres tilbake, vil vi få 5V, nøyaktig så mye som trengs.

Den karakteristiske impedansen til et spor avhenger av dets bredde og nærhet til bakken for tynne spor uten en jordpolygon under den, er den høy, hundrevis av ohm.


Det som bidro til mystikken var at når oscilloskopets jord ble koblet til, stoppet bildeforsvinningen. Det viste seg at problemet lå i en dårlig 12V nettstrømforsyning, som tilsynelatende sparte på filtrering - det var mye rusk på bakken (dvs. mellom bakken og 12V-bussen er det alltid 12V, men i forhold til bakken av TVen eller oscilloskopet er det stor støy). Ved å bytte ut strømforsyningen med en bedre (fra FPGA demoboards), ble problemet fullstendig løst.

Etter å ha sporet K155IE5 på ledningene, viste det seg at den delvis erstatter K1533IE5 loddet inn i brettet. Hvorfor det var nødvendig å la henne henge på ledningene er ikke klart for meg. Jeg tok ut K1533IE5, loddet K155IE5 - og alt fungerer! 1533-serien er en borgerlig ALS, 155 er en vanlig TTL. ALS har redusert lastekapasitet og hastighet, tilsynelatende var dette den opprinnelige årsaken til utskiftingen.

Historisk sett var den første masseproduserte amatørradiodatamaskinen Radio-86RK, som bare krevde 29 mikrokretser for å bygge. Dens betydelige begrensning var at den bare støttet tekstmodus og krevde sjetonger som var vanskelig å få tak i. Orion-128 - var en logisk fortsettelse - også rettet mot montering av radioamatører, hadde mer minne (128kb versus 16/32kb) og støttet grafikkmodus: 384 × 256 (i 2 farger, 4 farger og 2 farger fra en palett med 16 farger for hver 8 piksler). Den estimerte befolkningsstørrelsen til Orions i perioden med dens høyeste popularitet er omtrent 30-40 tusen datamaskiner.

Jeg fikk Orion i 1994, og det var på Orion jeg lanserte mine første programmer (før det måtte jeg skrive dem "på bordet"). Da jeg kjøpte min første PC i 1997, begynte Orion å bli stadig mer feilaktig (den startet ikke opp første gang, jeg måtte starte på nytt mange ganger...) og til slutt sluttet den å fungere helt. Jeg kunne ikke reparere den da, og i alle disse årene lå den urørlig, men ikke glemt.

I sommer bestemte jeg meg endelig for å prøve å reparere den – det som kom ut av den (samt en gjennomgang av arkitekturen og noen programvarefunksjoner) – under kuttet.

Arkitektur

Hjertet til datamaskinen er KR580VM80A-prosessoren, en sovjetisk analog av Intel 8080. For å forenkle designet ble ikke prosessorstatusordet fanget opp (der prosessoren "snakker" når den skriver til stabelen, leser eller skriver til I/O-portene). Det er heller ingen avbruddskontroller.

På de øverste adressene er monitorens BIOS. Den er laget på en interessant måte - alle funksjonene kalles gjennom en tabell i de høyeste minneadressene, som ganske enkelt utfører et ubetinget hopp til stedet for den faktiske implementeringen av funksjonen, og når funksjonsimplementeringer endres, forblir anropsadressene det samme, og det er fortsatt mulig å legge dem til (tabellen vokser "ned") .

I/O-porter - ble kartlagt til minne, dvs. hvis vi ved dekoding av adressen så at adressen = portadressen, skjedde det en skriving til portregisteret. Portadressene var i Monitor-området, hvor du ikke kunne skrive uansett. Porter ble laget:

0F400H - tastaturport 0F500H - brukerport nr. 1 0F600H - brukerport nr. 2 0F700H - utvidelseskortport 0F800H - grafikkmoduskontroll (kun skrive) 0F900H - minnesidebytte (kun skrive) 0FA00H - skriv kun skjermminneadressebytte ) for opptak) 0FB00H - systemport nr. 4 (kun for opptak, ikke brukt)

KR580VM80A-prosessoren har en 16-bits adressebuss, og kan følgelig bare adressere 64kb minne. sidebytteporten lar prosessoren velge gjeldende minneside. Men hvis vi bytter side, vil programmet kjøres fra en annen side på samme adresse! Fordi Det er vanskelig å jobbe under slike forhold; vanligvis gjør skjermen alt arbeidet med flere sider (siden det er "synlig i minnet" på alle sider), men dette er absolutt ikke for raskt.

Grafikkutgang implementeres som følger: binære tellere går konstant gjennom den gjeldende videominneadressen. Multipleksere kan koble enten adressebussen til prosessoren (når den trenger det) eller adressen sortert etter tellere til minneadressepinnene. Hver videominneadresse leses 2 ganger, men hvis det var en konflikt med prosessoren, lagres ikke leseverdien (dvs. én av to - det er garantert ingen konflikt, siden prosessoren får tilgang til minnet relativt sjelden).

Videominne leses samtidig fra begge sider, og de leste 16 bitene går deretter inn i skiftregistre (parallell lasting - seriell utgang), basert på utgangen som et videosignal genereres av. I monokrom modus brukes ikke den andre siden med minne, men i fargemodus må du skrive til den andre siden. Og dette, som vi husker, går sakte, fordi... kun mulig gjennom oppfordringer til å overvåke rutiner.

Her ligger den største ulempen med Orion - tekstutgangshastigheten er veldig lav (omtrent et sekund per side med tekst i fargemodus), spesielt sammenlignet med Radio-86RK. Prosessoren utfører 300-500 tusen operasjoner per sekund (med en klokkefrekvens på 2,5 MHz), og skriving til en ekstra minneside krever minst et dusin operasjoner.

La oss finne ut hva som ikke fungerer

Jeg hadde fabrikkversjonen av Orion:

Fordi datamaskinen var fabrikklaget, kretskortet var forskjellig fra magasinversjonen, og det var noen forskjeller i kretsen, som ikke gjorde oppgaven enklere. På ledningene (på venstre side av brettet) hang også en K155IE5-teller - jeg ante selvfølgelig ikke hvorfor den hang der, et annet mysterium.

I følge rådet byttet jeg ut de sovjetiske keramiske kondensatorene med nye. Strømforsyningen var Orions sårpunkt (og den ga meg feil spenninger) - jeg byttet den helt ut med nye pulse. Orion krevde spenninger på +5, +12 og -5V (eller rettere sagt, disse spenningene ble påkrevd av KR580VM80A-prosessoren; alt annet trengte +5).


Men datamaskinen fungerte ikke: et tofaset klokkesignal kom til prosessoren, det var tydelig at noe skjedde på adressen og databussen, men datamaskinen fungerte ikke, det var søppel på skjermen uten tegn til bevisst aktivitet .

Min første tanke var at innholdet i monitoren hadde blitt dårligere i løpet av 20 år (det beskyttende vinduet var ikke forseglet med elektrisk tape) - jeg bestilte en TL866-programmerer, slo sammen fastvaren - og til min beklagelse passet den loggen ned til byten. Tristhet. Det var ingen ideer.

Jeg visste at hvis det var problemer med -5 og 12V spenninger, kunne prosessoren brenne ut. Derfor byttet jeg ut prosessoren og bussjåføren på databussen - men dette ga ikke noe resultat.

RAS- og CAS-signalene ligner på sannheten (siden dette er de høyest frekvenssignalene - det er også problemer med dem).

Jeg la merke til at en av bitene på databussen alltid er 1. Det viste seg at jeg ved et uhell kortsluttet den til +5V da jeg loddet kondensatorene. Først nå begynte jeg å forstå hvorfor det er en loddemaske på kretskort :-)

Minnetesten fungerte, men veldig merkelig, etter å ha testet den første minnesiden, testet jeg den første på nytt, og ikke den andre. Mistanke falt på registeret til gjeldende minneside (port 0F900H) - enten fungerer ikke skrivingen, eller så bytter ikke denne verdien siden.

For å gjøre det lettere å feilsøke, skrev jeg et program i stedet for Monitor som konstant bytter minnesiden. Jeg tok ut den gamle EEPROM KS573RF2 fra Orion og begynte å slette... Etter en halvtime under en kvartslampe passet fastvaren fortsatt byte for byte (mer moderne EEPROM 27512 - slettet på 35-45 sekunder)... Først etter en time med steking, mikrokretsen var ren. Men da jeg prøvde å skrive det ned, hadde jeg en episk feil som det viste seg, programmereren kan produsere en programmeringsspenning som ikke er høyere enn 21V, mens KS573RF2 krever 26.

Det var selvfølgelig mulig å hacke programmereren, men jeg bestemte meg for å lodde en mer moderne flash-stasjon med elektrisk sletting - plasseringen av pinnene stemte selvfølgelig ikke, og jeg måtte lodde på ledningene ("den multi-story” kretskort passet ikke i høyden). Brytere - lar deg velge en av flere fylte skjermer, og loddes til de første ubrukte bitene av adressen med en pull-up til 0 (KS573RF2 - 2kb, 11 bits, som betyr brytere på 12-13-14 biter):

Det viste seg at i det øyeblikket dekoderen fungerer og utsteder en for skriving til sidebytteporten - blir databussen øyeblikkelig 0, og registeret har ikke tid til å skrive nummeret til den nye minnesiden (på høyre - gul - databussbit, blå - strobe for skriving til porten).

Hvis du forsinker opptaksstroben litt med en kondensator, skjer opptaket, og den nødvendige minnesiden skrives til, men dette er et for skittent hack, og jeg trodde ikke på det.

Det var ingen flere ideer. Jeg la merke til at det ikke var noen data ved utgangene til to minnebrikker, så jeg erstattet dem. Det gamle PCB viste sin verste side - det ble svart når det ble loddet med hårføner (mor fortalte meg skumle eventyr om PCB som ble svart fra en hårføner - men jeg trodde det ikke), stiene falt av... A deprimerende syn. Ved avlodding uten hårføner hjalp et loddebolt med avloddepumpe (en fantastisk oppfinnelse, du smelter loddet, trykker på en knapp - og det suger opp alt, det viktigste er å ikke flekke brettet senere), og en kobberflette (loddeveke), som ble brukt til en hel haug med:

Etter å ha byttet ut minnebrikkene, sluttet plutselig alt å fungere. Igjen er det søppel på skjermen uten tegn til liv. For å være ærlig, på dette tidspunktet var jeg klar til å gi opp og innrømme at ikke alt her i livet kan gjøres.

Etter å ha undersøkt tavlen nøye med et forstørrelsesglass, klarte jeg å finne 2 kortslutninger til, noe jeg gjorde, men minnetesten begynte ikke å virke. Da sjekket jeg fullstendig at det var en ny kortslutning på databussen - men etter å ha sett gjennom hele databussen fant jeg den ikke. Jeg måtte kutte en bestemt bit av databussen i biter for å begrense søket. Til slutt ble kortslutningen funnet – den viste seg å være så mikroskopisk at den knapt var synlig gjennom et forstørrelsesglass. Grunnen til at jeg klarte å oppnå kortslutninger så lett viste seg å være enkel - jeg tok feilaktig lavtsmeltende loddemetall med vismut (smeltepunkt 144 grader) i stedet for vanlig POS60-lodd. Ved kontakt med en loddebolt med en temperatur på 250 grader, kokte flussen øyeblikkelig og spredte små dråper loddemetall rundt. Og jeg lurte fortsatt på hvorfor overflaten blir matt etter lodding...

Minnetesten fungerte, og det ser ut til at kortslutningen som ble funnet under inspeksjonen løste problemet med sidebytte, nå ble ikke databussen tilbakestilt til 0 i det mest avgjørende øyeblikket, og sidebytte fungerer stabilt:

Lasting av ORDOS fra en ekstern ROM-stasjon fungerte imidlertid fortsatt ikke. Etter å ha lest 3 byte fra ROM-disken manuelt gjennom portene (kommandoer for dette er tilgjengelige i Monitor-1), så jeg at 2 databiter var feil (sammenlignet med ROM-diskbildet slått sammen på programmereren). Etter å ha loddet romdisken, startet ORDOS opp! Joy visste ingen grenser:

Imidlertid gjensto det fortsatt problemer: minnetesten viste en minnefeil på den andre siden etter oppvarming, noen ganger forsvant bildet på TV-en, spesielt ofte når du tester den andre minnesiden, og noe måtte gjøres med den mystiske K155IE5 hengende på ledningene:

Det var enkelt å bytte ut minnebrikken, men jeg måtte lide med at bildet forsvant. Mistanke falt på signalet som tillater at data kan skrives fra videominnet til (skriving der er forbudt når prosessoren får tilgang til minnet). Sporet var langt (~50 cm), og siden det ikke er noen impedanstilpasning - signalet ble reflektert fra endene av sporet, og overskred det tillatte nivået 0 i TTL-logikk (0,4V) - kan dette forårsake problemer. Derfor implementerte jeg seriell terminering - en 220 Ohm motstand ved siden av signalkilden - ringingen forsvant, men problemet gjensto:

Essensen av sekvensiell avslutning

La oss anta at den karakteristiske impedansen til sporet er 220 ohm. Uten terminering vil en 5V-puls nå enden av sporet, bli reflektert, og den øyeblikkelige spenningen der vil være 10V. Det meste vil selvsagt kuttes av beskyttelsesdiodene inne i mikrokretsen, men det vil være en støt på opptil 10V. Hvis vi plasserer en 220 Ohm motstand ved siden av signalkilden, så vil 2,5V gå langs sporet (siden vi har en spenningsdeler), når 2,5V når enden av sporet og reflekteres tilbake, vil vi få 5V, nøyaktig så mye som trengs.

Den karakteristiske impedansen til et spor avhenger av dets bredde og nærhet til bakken for tynne spor uten en jordpolygon under den, er den høy, hundrevis av ohm.


Det som bidro til mystikken var at når oscilloskopets jord ble koblet til, stoppet bildeforsvinningen. Det viste seg at problemet lå i en dårlig 12V nettstrømforsyning, som tilsynelatende sparte på filtrering - det var mye rusk på bakken (dvs. mellom bakken og 12V-bussen er det alltid 12V, men i forhold til bakken av TVen eller oscilloskopet er det stor støy). Ved å bytte ut strømforsyningen med en bedre (fra FPGA demoboards), ble problemet fullstendig løst.

Etter å ha sporet K155IE5 på ledningene, viste det seg at den delvis erstatter K1533IE5 loddet inn i brettet. Hvorfor det var nødvendig å la henne henge på ledningene er ikke klart for meg. Jeg tok ut K1533IE5, loddet K155IE5 - og alt fungerer! 1533-serien er en borgerlig ALS, 155 er en vanlig TTL. ALS har redusert lastekapasitet og hastighet, tilsynelatende var dette den opprinnelige årsaken til utskiftingen.

Denne delen vil beskrive et datamaskinalternativ for UKNC-saken. Jeg forstår fortsatt innholdet på denne siden :)

Kort spesifikasjon:

CPU

KR580VM80A

Litt dybde

Ytelse (OP./SEC.)

0,5 millioner register-til-register-operasjoner

VÆR

128 KB

ROM

2 KB

Grafikk

384x256 piksler, opptil 16 farger

Tegngenerator

nedlastbar

Visningsenhet

husholdnings-TV

Eksternt minne

kassettopptaker, ROM-disk

Lyd

enkanals pipetone

operativsystem

system MONITOR

Prosjekt:

1. Originalt elektrisk kretsskjema i PCAD 4.5-format - last ned
2. Originalt kretskort i PCAD 4.5-format - last ned
3. Originalt bibliotek med elementer i PCAD 4.5-format - last ned
4. Originalt kretsskjema, kretskort og montasjetegning i png-format - last ned
5. Konvertering av det originale kretskortet i PCAD2002-format, - nedlasting
6. Omtegnet originalt elektrisk kretsskjema i PCAD2002-format - last ned
7. Originalt kretskort i PCAD2002-format, lenket til diagrammet fra punkt 6 - last ned
8. Omtegnet originalt elektrisk kretsskjema i pdf-format - last ned
9. Korte merknader om å sette sammen en datamaskin i henhold til originaldiagrammet i pdf-format. Det anbefales på det sterkeste at du gjør deg kjent med dem før du starter monteringsprosessen.
- last ned
10. Rettet montasjetegning av originalkretsen i pdf-format. Det anbefales sterkt å bygge en datamaskin med den.

- last ned 11. Bibliotek med elementer i PCAD2002-format - last ned

OBS: den originale kretsen og kortet inneholder feil, som et resultat av at datamaskinen ikke vil fungere, dette gjelder punkt 1..8. Det anbefales ikke å bruke dem til produksjon av brett. Takk: Sugonyako V., Safronov V., Konenkov K.
- for å lage en datamaskin Orion-128
Chunin Roman (CHRV)- for å bevare arven etter Orion

Akimov Sergey (Feil404)

- for hengivenhet til Orion og for det faktum at han med sin aktivitet ikke lar oss glemme denne strålende datamaskinen Emulator 3000.
Du kan også se på utseendet til emulatoren:

Hvis du har informasjon om følgende datamaskiner, vennligst kontakt forfatteren (eugeneprogrammer !@! mail.ru):
  • Corvette
  • BK-0010
  • BK-0011M
  • UK-NC
  • Agat-7
  • Agat-9
  • Orion-128
  • Partner 01.01
  • Apogee BK-01
  • Alle andre som ikke er på den emulerte listen

Beskrivelse

Emulator 3000 (eller E3000) er en emulator av sovjetiske og utenlandske datamaskiner som Mikrosha, Vector-06Ts, Pyldin-601 og andre. Programmet kjører på Windows 95/98/NT/ME/2000/XP operativsystemer.

Muligheter

For øyeblikket emulerer programmet:

  • Mikro-80
  • Radio-86RK
  • Mikrosha
  • YUT-88
  • Partner 01.01
  • Apogee BK-01
  • Spesialist
  • MX-spesialist
  • Orion-128
  • Vector-06TS, [Programmer og spill i WinRAR 3.0-format]
  • Basjkiria-2M
  • Lviv PK-01
  • ZX Spectrum 48
  • ZX Spectrum 128
  • ZX Spectrum +2
  • ZX Spectrum +2A
  • ZX Spectrum +3
  • ZX Spectrum +3E
  • ZX Spectrum +4
  • ZX Pentagon 512K (for øyeblikket deaktivert)
  • ZX Scorpio 256K (deaktivert foreløpig)
  • ZX Pro 1024K (deaktivert for nå)
  • Commodore 64
  • Elektronikk BK-0010
  • Elektronikk BK-0010.01
  • Elektronikk BK-0011M
  • Pyldin-601
  • Pyldin-601U
  • Pyldin-601A
  • Pyldin-601M
  • Pyldin-601T
  • Agat-7 (for tiden en analog av Agat-9)
  • Agat-9
  • Koleko Visjon
  • Dandy

Systemkrav

For å kjøre programmet anbefales det:
Prosessor: Pentium II 233 MHz og høyere.
Minne: 32 MB eller mer.
Video: Enhver 16/24/32-biters videomodus, hvilken som helst videoakselerator.
DirectDraw-støtte er også nødvendig.
DirectSound-støtte anbefales, men ikke nødvendig.

Laster

Merk: Den nye versjonen må pakkes ut i en ny tom katalog, det vil si uten den gamle versjonen.

Du kan finne programvare for alle emulerte datamaskiner på andre nettsteder dedikert til emulatorer. Her kan du laste ned programmer og spill for enkelte datamaskiner:

  • MX-spesialist
    Last ned WinRAR 3.0-arkiv. Størrelse 600 KB. Alle programmene i dette arkivet er hentet fra Alexander Shevtsovs nettsted (http://avshsoftware.by.ru/). Last ned WinRAR 3.20 i arkivet. Størrelse 363 KB. Alle diskettbilder i dette arkivet er hentet fra Alexander Shevtsovs nettsted (http://avshsoftware.by.ru/).
  • Vector-06TS
    Last ned WinRAR 3.0-arkiv. Størrelse 2,6 MB. Alle programmer i dette arkivet er hentet fra nettstedet til Alexander Timoshenko (http://www.vector06c.narod.ru/). Last ned WinRAR 3.20 i arkivet. Størrelse 2,8 MB. Alle diskettbilder i dette arkivet er hentet fra nettstedet til Alexander Timoshenko (http://www.vector06c.narod.ru/).
  • Sugonyako V., Safronov V., Konenkov K.
    Last ned WinRAR 3.20 i arkivet. Størrelse 1,9 MB. Alle programmene som er i dette arkivet ble sendt av Andrey Markelov (http://www.markelov.net/, http://www.rus-emulators.ru/).
  • BK-0010 og BK-0011
    Du kan abonnere på nyhetsbrevet dedikert til datamaskiner i BC-serien. For å gjøre dette, send først en e-post til [e-postbeskyttet]. Emnet og innholdet i dette brevet kan være hva som helst. Da vil du motta en bekreftelse. Deretter, i henhold til instruksjonene, send et nytt brev. Det er det, du abonnerer!

Nøkkelord

datamaskinemulator, hjemmedatamaskin, hjemmedatamaskiner, hjemmedatamaskinemulator, hjemmedatamaskinemulator, hjemmedatamaskiner, hjemmedatamaskin.