PDP-11 manija

Jau kiek rašiau apie DEC DC J-11 procesorių. Jis kaip ir beveik veikia, bet kartu ir neveikia. Matyt nukentėjo ir mechaniškai (žiauriai pabrauktas viršus), ir elektriškai (niekas neatmeta to fakto, kad jis jau buvo blogas). O ir amžius elektronikai gana solidus.

Čia mano eksperimentinė plokštė. Alteros CPLD sukonstravau šiokį tokį CPU “aprišimą” ir teoriškai jis turėjo paleisti mano mikro programą ar pasileisti į amžiną “NOP” ciklą. Tačiau procesorius pyktybiškai daro savo darbą ir iššoka į debug konsolę – ODT. Kas tai yr? Ogi tai monitoriaus “programa” leidžianti serial terminalo pagalba redaguoti atmintį, paleisti programas ir ką nors dar. Toks daiGtas kaip WozMon pas Apple 1 kompiuterį. Tik čia ne softas, o pačio CPU silikone, mikrokode parašytas softas. Kad jis veiktu nereikia nei atminties, nei kokio ROM. Reikia tik specifinės UART mikroschemos ir kelių mikroschemų. Į debug režimą galima papulti kai lūžta procesorius, HALT komanda arba “blinken lights” mygtukais.

Pas mane nėra nei blinkenlights, nei UART konsolės. Todėl teko panaudoti logini analizatorių. Gaunasi maždaug taip:

Gaila, kad loginis analizatorius labai nestabilus ir tik 16 kanalų

Tie skaičiukai “7772”, “7564”, “7566” tai oktaliniai gabalai adreso. Tikri adresai: o17777772, Peripheral Interrupt Request Register; o177564; Console send status (aka TPS); o177566; Console send buffer (aka TPB).
Tai čia procikas uždraudžia pertraukimus, pasitikrina ar galima siųsti simbolį ir išsiunčia simbolį per terminalą. Duomenis irgi galima pasitikrinti- ten nusipaišo “command promptas”. Tačiau aš norėjau kito režimo. Vadinasi arba nenuskaitė blinken lights, arba susihaliucionavo HALT koja arba lūžo procesorius.

Tačiau pastebėjau, kad režimas kinta nuo “taktilinio” debuginimo- priklausomai kur priglaustas pirščiukas, CPU režimai buvo kitokie. Nepadėjo net ir procesoriaus litavimas (kad ir kaip tai keistai skamba). Vistiek sistema nestabili. Kas baisiausia- problemos priklauso nuo A17… A22 kojų kurios yra …. tik išėjimai. Priklausomai ar tas kojas patempi į pliusą ar žemę. Nebent CPU manualas meluoja.

Gal pasileido? Reikia viską analizuotis pagal fucking manualą

O čia kas kažkelintą kartą pasirodo kažkas įdomiau. Kogero taip veikia mano programa, kuri pabėga iš savo ciklo ir užsišoka ant NOP komandos. Ko pasekoje CPU adresas didėja ir tas labai gerai matosi ant dekoduotos (pas šiuos CPU adresas ir data yra multipleksuojamos per tas pačias kojas) adresų šynos. Čia 16 bitų procesorius ir jo NOP komanda yra 2 baitų ilgio. Todėl A0 (čia D0) nesikeičia. Keistokai atrodo WR lygis (beja, pas šį prociką nėra nei RD nei WR kojyčių. Čia irgi reikia dekoduoti). Bet šis režimas nestabiliai pasileidžia. Nu nėra mano procesorius stabilus.

Ko pasekoje supsichavau ir nusipirkai eBay DC J11 (PDP 11/72) procesoriaus plokštę (tipo veikiančia) su būtent tokiu pat CPU. (minus 155 pinigai) ir kiek vėliau Q-Bus atminties plokštę (minus 75 pinigai)… Dar negavau.

Galvoju šiandien, kaip aš sujungsiu tas plokštes- aš gi Q-Bus backplane neturiu. Nueinu apie 16:00 į elektronikos sandėlį ir žiūrau… bl… panašu, kad guli gal ir PDP11 backpleinas. Pakėliau- surudijęs, sulankstytas, kažkoks ne PDP. Bet kištukų kiekis atitinka. Pasidėjau į slaptavietę.
Žiūrau sau į tą kalną plokščių, jei yra backpleinas, tai gal kokia plokštelė atsiras. Radau kažkokia, analoginę lyg ir panaši, bet auksiniai kontaktai nukirpti. Dar pakuičiau ir net širdis sustojo. Va:

Mano lobis

Tai silpnesio modelio PDP-11/23 procesoriaus plokštė su F-11 čipsetu. 18 bitų adresacija, be MMU (vadinasi mažai RAM), be FPU. Bet ALU dalis lygtai yra. Buvo baisi, išploviau su muilu, distiliuotu vandeniu ir izopropilo alkoholiu.

Ir baigėsi darbo valandos. Reikės rytoj kažkaip įsiprašyti ir kaulyti, kad leistu man rankutėmis perrinkti gal toną beviltiškų PCB. Gal netyčia rasiu ir kitas dalis, tinka net ir be auksinių kontaktų. Man labai reikėtu ODT ir ROM. Aišku ir koks nors RAM nepamaišytu. Aš panikuoju, todėl ir rašau. Nes bet kurią savaitės dieną gali išvežti viską sunaikinimui.

2 replies on “PDP-11 manija”

  1. gali būti, kad mano “programa” klaidinga ir aš sukeliu bus error. Bet tai nenusako pasileidimo nestabilumo.

    7772 //Peripheral Interrupt Request Register
    5200 // ? INC R0 – cia gi duomenys?
    0002
    5200 // ? INC R0 – cia gi duomenys?
    7746 // cache control reg
    5200 // ? INC R0 – cia gi duomenys?
    7744 // memory system error
    5200 // ? INC R0
    7766 // CPU error reg RW
    5200 // ? INC R0
    0220
    5200 // ? INC R0
    0000
    5200 // ? INC R0
    7560 // Console read status
    0230
    5200 // ? INC R0
    3000 // gali buti adresas 173000 instrukcija MOV #1,R0
    3002 // gali buti adresas 173002 instrukcijos MOV #1,R0 skaicius #1
    3004 // gali buti adresas 173004 instrukcija INC R0
    3006 // gali buti adresas 173006 instrukcija MOV R0, @#1235
    3010 // gali buti adresas 173010 instrukcija JMP #0004
    3012 // gali buti adresas 173012 instrukcijos JMP #0004 operandas 4
    3014 // gali buti adresas 173014, cia jau turi buti NOP
    1235 // rasymas i adresa 1235?
    3014 // NOP
    0004 // JMP i 00004?
    3014 // NOP
    0006 // adresas 0006? turi buti MOV R0,@#1235. Cia matyt luzta
    7776 //CPU status reg
    7774 //MMR0 – MMU reg
    3014 // NOP
    7772 //Peripheral Interrupt Request Register
    5200 // ? INC R0
    0014
    5200 // ? INC R0
    0016
    5200 // ? INC R0
    7772 //Peripheral Interrupt Request Register
    7770 //CPU state reg /HALT
    5200 // ? INC R0
    0004
    0240
    0004
    0242
    0004
    7766 // CPU error reg RW
    7764 // CPU Control Register
    0004
    7762 // CPU Control Register (CCR2 – diagnostic/microcode control)
    0004
    0240
    0242
    0240
    7762 // CPU Control Register (CCR2 – diagnostic/microcode control)
    7760 // CPU Control Register (CCR0)
    0240
    7756 // CPU Diagnostic/Control Register (CCR – diagnostic functions)
    0000
    0240
    0004
    0240
    0006
    0240
    0004
    0002
    0240
    0000
    0240
    5200 // ? INC R0
    0014
    5200 // ? INC R0
    0016
    5200 // ? INC R0
    0000
    7766 // CPU error reg RW
    5200 // ? INC R0
    7744 // memory system error
    5200 // ? INC R0
    0004
    0240
    0004
    0242
    0004
    7774 //MMR0 – MMU reg
    7772 //Peripheral Interrupt Request Register
    0004
    7772 //Peripheral Interrupt Request Register
    0004
    7770 //CPU state reg /HALT
    0004
    0240
    0242
    0246
    0250
    0252
    0254
    0256
    0260
    0262
    0264
    0266
    0270

Leave a Reply

Your email address will not be published. Required fields are marked *