Anders lagar en gammal dator (-relaterad pryl)
Re: Anders lagar en gammal dator (-relaterad pryl)
Är det datorerna från något företag i Hammarbyhamnen som sysslade med virning?
- anders_bzn
- Inlägg: 5892
- Blev medlem: 17 december 2008, 19:22:18
- Ort: Kävlinge
- Kontakt:
Re: Anders lagar en gammal dator (-relaterad pryl)
Inte var jag vet. De kommer från företaget Kretsplanering som gjorde PCB CAD åt andra företag. De satt i Osram huset i Hammarbyhamnen.
Re: Anders lagar en gammal dator (-relaterad pryl)
Hammarby var rätt i alla fall, du/ni hämtade lite av mina överskottskretsar i Nyköping på vägen ner.
- anders_bzn
- Inlägg: 5892
- Blev medlem: 17 december 2008, 19:22:18
- Ort: Kävlinge
- Kontakt:
Re: Anders lagar en gammal dator (-relaterad pryl)
Det stämmer! Vi såg på vägen tillbaks. Det borde varit 2017. Men de två första maskinerna stod i Hammarby, den sista borde vi hämtat i Västberga (om jag minns rätt, söder om stan i alla fall).
- anders_bzn
- Inlägg: 5892
- Blev medlem: 17 december 2008, 19:22:18
- Ort: Kävlinge
- Kontakt:
Re: Anders lagar en gammal dator (-relaterad pryl)
Så, nu var det dags att laga ett konsolkort, samma som jag lagade innan (viewtopic.php?p=1869776#p1869776), med då insåg jag inte att det hade mer än ett fel. När man hade detta kort i datorn så gick datorn inte igång, den ska autostarta så att konsolemulatorn kör. Det gjorde den inte. Detta sköts av boot-rommet och gör att man kan manipulera minne och starta datorn från valfri adress precis som med frontpanelen fast från sin serieterminal. Kortet är inte nödvändigt för funktionen av datorn om man inte vill använda frontpanelen.
Efter lite tanke och studerande av schemat så insåg jag att kortet inte ska kunna få datorn att stanna om man inte aktivt tryckt på CNTRL+HLT/SS knappen. Nu fungerade ju en massa andra saker som att göra examine/deposit i minnet på valfri adress så det borde vara något enkelt. Jag mätte och såg att HALT REQ L signalen var just låg. Det borde den inte vara så jag kollare båda sidor på bussdrivaren av signalen. Den borde inte vara låg, men eftersom det är en open collector signal vet man ju inte om någon annan håller ner den. Så då sätter man en tejpbit över kontaktfingret och testar. Då startade datorn.
De visade sig vara en inringade bussdrivaren DEC8881 som var kass. Med den bytt så fungerade kortet som det skulle!
DEC8881 eller N8881 är den bussdrivare som är ökänd för att gå sönder. Jag har bytt en hög sådana i PDP-8/A...
Näst på tur står tre seriekort som jag vet är trasiga. Sen har jag två fungerande kortuppsättningar till PDP-11/34
Efter lite tanke och studerande av schemat så insåg jag att kortet inte ska kunna få datorn att stanna om man inte aktivt tryckt på CNTRL+HLT/SS knappen. Nu fungerade ju en massa andra saker som att göra examine/deposit i minnet på valfri adress så det borde vara något enkelt. Jag mätte och såg att HALT REQ L signalen var just låg. Det borde den inte vara så jag kollare båda sidor på bussdrivaren av signalen. Den borde inte vara låg, men eftersom det är en open collector signal vet man ju inte om någon annan håller ner den. Så då sätter man en tejpbit över kontaktfingret och testar. Då startade datorn.
De visade sig vara en inringade bussdrivaren DEC8881 som var kass. Med den bytt så fungerade kortet som det skulle!
DEC8881 eller N8881 är den bussdrivare som är ökänd för att gå sönder. Jag har bytt en hög sådana i PDP-8/A...
Näst på tur står tre seriekort som jag vet är trasiga. Sen har jag två fungerande kortuppsättningar till PDP-11/34
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Anders lagar en gammal dator (-relaterad pryl)
Snyggt jobbat som vanligt Anders
Ser fram mot ett att se den lajv
Ser fram mot ett att se den lajv
- anders_bzn
- Inlägg: 5892
- Blev medlem: 17 december 2008, 19:22:18
- Ort: Kävlinge
- Kontakt:
Re: Anders lagar en gammal dator (-relaterad pryl)
Jag lagar vidare. Jag har en liten hög kort kvar som inte är testade eller inte fungerar.
* 3st DL11-W seriekort
* 2st DR11 parallellkort (dessa vet jag inte vad jag ska göra med)
* 1st PC11 interface till PC05 pappersremsläsare/stans, detta kan jag inte testa utan PC05 så det får vänta lite
Så jag börjar med DL11-W!
Chat GPT är hygglig (bättre än mig) på PDP11 assembler. Jag bad den skriva ett program som skickar ut A-Z på serieporten i en oändlig loop.
Detta assemblerar man och sedan matar man in det i minnet. Enkelt första test.
Först kortet. Jag noterade att koden körde som den skulle men inga tecken kom ut. Eftersom programmet snurrade som det skulle så verkade ju buss-delen av kortet vara okej, så jag mätte på UART:en. Där såg jag att man klockade in data, men alldeles för ofta. Snabbare än vad det tar att skicka ett tecken och UART:en har ingen buffer. Mätte på READY-pinnen på UART:en den låg och flöt på 2,5V. Konstigt. Jag lossade kretsen efter för att se om den lastade ner utgången, men det var inte problemet. Bytte UART:en sen fungerade kortet! Nästa kort, detta fungerade som det första. Men här noterade jag att programet aldrig skrev ett nytt tecken eftersom READY flaggan aldrig nollställdes i registret. Det gjorde den inte heller på UART:en då jag bytte den. Sen fungerade kortet! Efter detta så vill man ju testa att RX också fungerar så det blev ett nytt program som bara ekar tillbaks tecknet man skickar till datorn.
Detta progremmet är lite onödigt komplicerat, man kan ju förlita sig på att det inte tar längre tid att skicka ett tecken än att ta emot ett nytt... Nu kan man i och för sig ställa in olika baudrates på RX och TX men det har jag inte.
Även detta programmet fungerar på båda korten.
Det tredje kortet då? Jo det var ett lite svårare fall. Jag behövde beställa en pryl, så jag skriver om det när det är lagat...
* 3st DL11-W seriekort
* 2st DR11 parallellkort (dessa vet jag inte vad jag ska göra med)
* 1st PC11 interface till PC05 pappersremsläsare/stans, detta kan jag inte testa utan PC05 så det får vänta lite
Så jag börjar med DL11-W!
Chat GPT är hygglig (bättre än mig) på PDP11 assembler. Jag bad den skriva ett program som skickar ut A-Z på serieporten i en oändlig loop.
Kod: Markera allt
.TITLE AZLOOP
.ASECT
.GLOBL START
RCSR = 1776500
RBUF = 1776502
XCSR = 1776504
XBUF = 1776506
START:
MOV #'A, R0 ; Current character = 'A'
MAIN:
WAIT:
BIT #200, @#XCSR ; Test transmitter ready (bit 7)
BEQ WAIT ; Loop until ready
MOVB R0, @#XBUF ; Send character (byte write!)
INC R0 ; Next letter
CMP R0, #'Z+1
BNE MAIN
MOV #'A, R0 ; Restart at 'A'
BR MAIN ; Infinite loop
.END START
Först kortet. Jag noterade att koden körde som den skulle men inga tecken kom ut. Eftersom programmet snurrade som det skulle så verkade ju buss-delen av kortet vara okej, så jag mätte på UART:en. Där såg jag att man klockade in data, men alldeles för ofta. Snabbare än vad det tar att skicka ett tecken och UART:en har ingen buffer. Mätte på READY-pinnen på UART:en den låg och flöt på 2,5V. Konstigt. Jag lossade kretsen efter för att se om den lastade ner utgången, men det var inte problemet. Bytte UART:en sen fungerade kortet! Nästa kort, detta fungerade som det första. Men här noterade jag att programet aldrig skrev ett nytt tecken eftersom READY flaggan aldrig nollställdes i registret. Det gjorde den inte heller på UART:en då jag bytte den. Sen fungerade kortet! Efter detta så vill man ju testa att RX också fungerar så det blev ett nytt program som bara ekar tillbaks tecknet man skickar till datorn.
Detta progremmet är lite onödigt komplicerat, man kan ju förlita sig på att det inte tar längre tid att skicka ett tecken än att ta emot ett nytt... Nu kan man i och för sig ställa in olika baudrates på RX och TX men det har jag inte.
Kod: Markera allt
.TITLE ECHO
.ASECT
.GLOBL START
RCSR = 1776500
RBUF = 1776502
XCSR = 1776504
XBUF = 1776506
START:
MAIN:
; --- Wait for character received ---
RXWAIT:
BIT #200, @#RCSR ; Receiver Done?
BEQ RXWAIT ; No -> keep waiting
MOVB @#RBUF, R0 ; Read character
; (Reading clears Done bit)
; --- Wait for transmitter ready ---
TXWAIT:
BIT #200, @#XCSR ; Transmitter Ready?
BEQ TXWAIT
MOVB R0, @#XBUF ; Send it back
BR MAIN ; Repeat forever
.END START
Det tredje kortet då? Jo det var ett lite svårare fall. Jag behövde beställa en pryl, så jag skriver om det när det är lagat...
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Anders lagar en gammal dator (-relaterad pryl)
Kul.
Bara en liten detalj. Att ready-flaggan är på bit 7 är ingen slump. Det gör det möjligt att testa mycket enklare än. Man gör istället , följt av BPL eller BMI beroende på om man är intresserad av att flaggan är satt eller clearad.
Men man kan ju inte räkna med att AI-verktyg ska kunna allt...
Bara en liten detalj. Att ready-flaggan är på bit 7 är ingen slump. Det gör det möjligt att testa mycket enklare än
Kod: Markera allt
BIT #200,@#REGKod: Markera allt
TSTB @#REGMen man kan ju inte räkna med att AI-verktyg ska kunna allt...
- anders_bzn
- Inlägg: 5892
- Blev medlem: 17 december 2008, 19:22:18
- Ort: Kävlinge
- Kontakt:
Re: Anders lagar en gammal dator (-relaterad pryl)
Smart! Så de har en egen instruktion för att testa just denna biten! Så spar man ett ord i minnet, jag antar att det är vinsten plus att man dessutom slipper lägga tid på att hämta 0200 från minnet!
- anders_bzn
- Inlägg: 5892
- Blev medlem: 17 december 2008, 19:22:18
- Ort: Kävlinge
- Kontakt:
Re: Anders lagar en gammal dator (-relaterad pryl)
Så då var sista kortet lagat. När man satte det i datorn så fick jag inte CPU:n att köra vettig, Uniprobe-kortets lysdioder skvallrade om att SACK signalen var aktiv, alltid. Det kunde snabbt konstateras att drivkretsen på seriekortet höll den låg och att en bussdrivare DEC8881 var kass. Den byttes och då gick det att köra program. Konstiga saker hände, ett tag fick jag ut konsolemulatorns output på båda serieterminalerna. Jag funderade på om kortet var byglat rätt, det var det men två DIP switchblock visade sig vara kass. Det kom nya från electrokit idag som löddes dit och sedan fungerade det igen!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Anders lagar en gammal dator (-relaterad pryl)
Tja, TSTB kan ju användas för alla möjliga ändamål, när man är intresserad av bytear. Men som sagt, testa högsta bitten i en byte, eller ett ord, kan göras enkelt tack vare TST(B), och det kan man säga är lite småstandardiserat på kontrollrar. Höga bitten i ordet är ofta en summering av fel-bittar, och höga bitten i första byten ofta en ready-flagga.anders_bzn skrev: ↑3 mars 2026, 20:28:38 Smart! Så de har en egen instruktion för att testa just denna biten! Så spar man ett ord i minnet, jag antar att det är vinsten plus att man dessutom slipper lägga tid på att hämta 0200 från minnet!
Re: Anders lagar en gammal dator (-relaterad pryl)
Intressant! Detta är väl sannolikt förebilden för 6502-instruktionen BIT som kopierar bit 6 och 7 till två flaggor. Att den i sin tur kopierar just de bitarna, och sannolikt även varför PDP kopierar just de bitarna, torde väl vara att kopiering av just de bitarna är vad som ändå görs vid (vissa/alla?) aritmetiska operationer. Högsta biten är ju minus-bit för "signed"-nummer, och den näst högsta biten används på något vis som jag glömt hur det fungerarbqt skrev: ↑3 mars 2026, 01:39:08 Kul.
Bara en liten detalj. Att ready-flaggan är på bit 7 är ingen slump. Det gör det möjligt att testa mycket enklare än. Man gör iställetKod: Markera allt
BIT #200,@#REG, följt av BPL eller BMI beroende på om man är intresserad av att flaggan är satt eller clearad.Kod: Markera allt
TSTB @#REG
Men man kan ju inte räkna med att AI-verktyg ska kunna allt...![]()
Anders:
Trevligt att du får mer och mer att fungera!
Fråga: Sparar du trasiga kretsar och märker på dem vad felet är?
Tänker att nån gång i framtiden så kanske det uppstår faktiskt brist på kretsarna. Då skulle man t.ex. kunna bara klippa benen på de bitar/delar av bussdrivarna som är trasiga, och piggyback:a två drivare med olika trasiga bitar/delar för att få en fungerande. Likaså för de två trasiga UART:arna så verkar det väl rimligt att det kan fungera att dels klippa signalen som ändå bara verkade vara flytande, och sätta seriemotstånd till databusspinnen på den krets som gav felaktigt svar vid läsning av statusregistret. Visst, man ber väl i princip att fler delar av kretsarna ska gå sönder, men utan att undersöka dem med typ (elektron)mikroskop så är det nog svårt att veta om konstaterat delvis trasiga kretsar har större risk att gå sönder mer än risken att en idag fungerande krets går sönder i framtiden.
Anekdot, ursäkta om det är en upprepning: I början av 90-talet då en VIC 20 var värd så lite att det var tveksamt att köpa en 6522-VIA-krets för ett par tior plus frakt från Elfa så tog jag två trasiga 6522, med varsin I/O-pinne trasig, och klippte de trasiga pinnarna och satte seriemotstånd på databussen på de bitar som motsvarar de trasiga bitarna. Vid skrivning så skrivs såklart data till båda kretsarna, men då man läser från dem så gör motstånden att den krets som har fungerande I/O-pinne för den biten "vinner" varpå datorn fungerade korrekt
Re: Anders lagar en gammal dator (-relaterad pryl)
Hum? TST(B) "kopierar" inga bitar. Det är en instruktion som bara testar en byte eller ett ord. Och "testa" innebär i princip att byten eller ordet jämförs mot noll. Så Z och N flaggorna sätts därefter. V och C nollställs. Men poängen är just att högsta bitten ju reflekterar om värdet är negativt, så N-flaggan sätts ju därmed direkt beroende på vad högsta bitten är. Så bit 7 och bit 15 är dom två bittar som kan testas lite enklare.
Men t.ex. en klassiker som strlen blir i PDP-11 assembler:
Men t.ex. en klassiker som strlen blir i PDP-11 assembler:
Kod: Markera allt
STRLEN: MOV R0,-(SP)
10$: TSTB (R0)+
BNE 10$
SUB (SP)+,R0
RETURN
Re: Anders lagar en gammal dator (-relaterad pryl)
Det är väl en semantisk fråga, men rent praktiskt kopieras ju bit 7 till en av flaggorna.
Re: Anders lagar en gammal dator (-relaterad pryl)
Sant. Men det var också lite en kommentar eftersom det pratades om att kopiera både bit 6 och 7, vilket skulle antyda något mer som definitivt inte händer på en PDP-11 i alla fall. 6502 kan jag inte kommentera mycket om alls.
Och om du gör en TST (inte TSTB) så är det ju bit 15. Så det är egentligen MSB vi pratar om. Men ja, man kan mycket väl beskriva det som att TST kopierar MSB till N-flaggan. Men min poäng var också att avsikten med insturktionen är inte att kopiera bara MSB. Det är en instruktion som tittar på hela argumentet och sätter flaggor baserat på det. Så den används för mer/annat än att bara titta på MSB.
