Monthly Archives: January 2026

Generic C grožis arba kaip buvo geriau prie…

Tęsiant temą. Vėl tas pats PDP11, mano amžininkas ir kartu stipriai senesnis už mane. Viskas kažkaip kitaip ir panašiai. Ir toliau bežaidžiant užkniso tie visokie oktaliniai skaičiai, keistos programos (PDPGUI) parašytos Paskalyje ir su kriptiniais vokiškais klaidų pranešimais. Todėl nutariau padaryti dalį darbų old style metodu. Tiksliau- ancient style metodu. Kaip buvo prieš 50 metų ar daugiau…

T.y. renkames gryną “C” kalbą (čia bus kažkuri gcc windowsams) ir iš seno source kodo gabaliukų (archyve.org ir randominiai linkai) ir vajėzaumarija, AI generatorium generuojam naujas C programas.

Ko man reikia:

  • Parašom programą asembleryje ir sukompiliuojam. Gaunam bin failą ir lst. Tačiau čia lst kiek keistas, nes jis labai daug ką ignoruoja, rašo visokius simbolius ir t.t. O man reikia, kad išsistatytu tikras, kanoninis asembleris. Šita funkcija neprivaloma (optional), nes kai kurios programos jau bin.
  • Radau senovinį disasemblerį [disas11, 1991?] kurį pavyko sukompiliuoti. Bet jam reikia COREDUMP failų.
  • Su AI rašom bin -> COREDUMP konverterį. Beja, coredump formatą AI pats atstatė iš dalies disas11 source kodo.
  • Disasembleris duoda keistoką output failą dis, nes teoriškai galimas savaime modifikuojantis kodas. Jis rodo alternatyvini disasemblerio kodą jei prieš tai buvusi komandą pasikeistu. Gerai, kad alternatyvinis kodas pasislinkęs per tarpiukus. Su AI rašom programinę utelę kurį išfiltruoja ir palieka tik pagrindinį kodą.
  • Pagaliau išvalytas kodas visiškai oktalinis. Tam tikslui AI rašo C kalboje kitą utelę kuri konvertuoja visus octalus į hexus.

Ir tik dabar, aš galiu palyginti šešioliktainį disasemblerį su hidros parodymais ir pagaliau suprasti, kad dar reikia apšikti kažkiek žolės, kad gautusi rezultatas.

Apie ką męs čia? Ogi kad męs ne prieš AI. Tai geras įrankis ir teisingai naudojamas veikia. Paprašai parašyti utelę (beja, čia pačio AI pasiūlymas, nes jis pabijojo konvertuoti galbūt užkopyraitintą failą) ir jis parašo. O poto sakai- o tu padaryk, kad skaičiukai būtų su leading zero, išėjimas į failą, o ne stdout ir kad kai kurios specifinės eilutės eitu kitaip. Ir tas AI vergas sugeneruoja. Programos paprastos, bet pačiam rašyti nuo nulio gautųsi gal per daug laiko. Čia atsakymai atėjo per sekundes.

A, ir dar, reikėjo binarinį failą konvertuoti į oktalinį, tinkamą pumpuoti tiesiai į CPU per ODT. Toks bin to ODT text stream konverteris.

o dabar viską sukišim į makefile ir viskas man veiks automatiškai, vieno mygtuko paspaudimu.

Microslop mikrotranzakcijos

Šiuolaikinio pasaulio realijos. Seniau arba negroja arba instaliuoji kodeką. Dabar MS tiesiog prašo pinigų. Ir tas kitiems “juokingas 1$” surenka ypač daug pinigų, nes žmonės priprato prie mikrotranzakcijų.

Kapitalizmui pavyko pakeisti žmonių mąstymą- nuomoti, o ne turėti. Gauti produktą be komponentų ir prisipirkti vėliau. Sutikti, kad produktas “suseno” ir nebeveikia, todėl reikia pirktis/nuomotis naują.

Ghidra ir PDP11

Biški užsiciklinau su savo PDP kompiuteriu. Ir nutariau vieną programą kiek kitaip paleisti. O tam reikalui reikia daryti disasemblerį. Tačiau chaotiškam listinge (LST) labai sunku susigaudyti. Tačiau pasaulis išrado gana patogias priemones, kaip Ghidra. Tačiau viena bėda- nėra modulio PDP kompiuteriams. Kažkur githube guli kažkoks tvarinys kuris tipo palaiko PDP11, bet ten pati Hidra sulaužyta dalimis (ir nesikompiliuoja) ir kiek žiūrėjau, pačio PDP modulio (language) nėra. Vėl apgavystė. Todėl biški užpykau ir nutariau pasidaryti savo, “su šliundromis ir pokeriu“. O ten tokia “rogių kalba” (SLEIGH)…

Kol kas darau tik disasseblerį, nes iki kitoko nepriaugau. Ir dar kalnas klaidų nes:

  • Aš nesuprantu rogių kalbos
  • Aš nesuprantu PDP J11 procesoriaus kalbos
  • Aš nesuprantu PDP asemblerio
  • Aš neapkenčiu aštuntainės skaičiavimo sistemos
  • Aš nesuprantu ten kažkokio p-code, kur rašosi { } skliaustukuose

Šiaip procesorius makro CISC ir kogero pilnai Ortogonalus. T.y. visos komandos turi visus adresacijos būdus. Netgi nelogiškus, su visais galimais registrais- pvz operacijos su PC veikia kaip ir su bet kuriuo registru. Tačiau operacijos su PC turi savo sintaksę suprantama žmonėm. Palyginam:

A:	MOV (PC)+,R1
	.word 5
	HALT
B:	MOV #5,R1
	HALT

Atrodo kaip skirtingos programos (A) ir (B). Tačiau listingas rodo:

11 000024 012701                  	MOV (PC)+,R1
12 000026 000005                  	.word 5
13 000030 000000                  	HALT
14 000032 012701  000005          	MOV #5,R1
15 000036 000000                  	HALT

Binarinis kodas visiškai vienodas. Paprasčiausiai iškreiptas parašymas (PC+) programoje (A) sako, kad imk reikšmę sekančia už PC ir naudok, o poto PC padidink. O programoje (B) sako, imk tiesiog skaičių ir naudok. Bet tas skaičius kaip tik ir stovi prie komandos…

O dabar įsivaizduojam, kad komanda MOV turi du parametrus. Tie parametrai gali buti su 7 skirtingom adresacijom su 7 skirtingais registrais ar tiesioginiais skaičiais. Komanda MOV gali užimti ir vieną žodį (1Word=2bytes), ir du žodžius, ir tris žodžius (6 baitus!)…

Bet kad žinotumėt koks kaifas, kaip pradeda biški viskas veikti- smegenių mankšta. Čia jums ne shortus skrolinti youtubėje.

Ai, dar nepabaigtas produktas GitHube: Ghidra PDP11 processor language file/module (slaspec).

P.S. žinokit, ta hidra moka atkompiliuoti gcc programas. Bent jau mano kurybą su STM32 gana gerai atkompiliuoja.

Su Naujais, 2026 metais!

Šiaip ne taip datempėm iki 26-tų šio šimtmečio ir tūkstantmečio metų. Baisu pagalvoti, bet ketvirtis dvidešimt pirmo amžio praėjo. 2025 metai buvo nelabai kokie bent jau dėl blogos ir šaltos vasaros. Jau nekalbant apie visus kitus niekus. Todėl va jums linkėjimas:

…gili potekstė….

Čia, galima sakyti, amžina lempa. Tai bekontaktė gyvsidabrio lempa (EDL electrodeless discharge mercury lamp arba Induction-lighting). Jos amžius priklauso tik nuo liuminiforo patvarumo ir ar nebus sudaužyta.

O toliau galerija randominių nuotraukų ir palinkėjimai prie jų: