Metai baiginėjasi…
Ir pagrindinis Naujų metų projektas bus čia:
Va toks metų pabaigos fotopostas.
Papuolė į rankas tokia maža ISA PCB su keliais čipais. Su magišku užrašu “Y2000”. Ir iškarto trenkė nostalgija, apie tai, kaip visi panikavo, kad kompiuteriai 2000-taisiais metais išprotės, nes metai tik dviženklis skaičius. Aišku buvo bėdų su tais metais, bet daugelis panikuotojų nepagalvojo, kad technologija smarkiai tobulėja ir kompai pradėjo labai greitai morališkai senti.
O tiems, kurie strigo su sena technika, atsirado visokie BIOS pataisymai. O jei nėra BIOS pataisymo, va jums papildoma plokštė su ROM. (Kitos mikroschemos tik supaprastina ROM pajungimą prie ISA linijų)
Nutariau pažiūrėti, kas tos mikroschemos viduje. Viduje labai mažai kodo, tai buvo kaip tik, kad pasimokinti Hidros (GHIDRA) programos vartojimo.
ISA PCB yra 8 bitų. Vadinasi suderinama su pačiais primityviausiais x86 procesoriais. Vadinasi kiek rimtesni procesoriai turi veikti “REAL MODE” režime. x86 procesoriaus kodas vos vos panašus į Z80 ir tikrai panašus į 8086. Hidra išardė kodą. O internetai padėjo atpažinti- pirmi trys baitai tai 55 AA 10. “55AA” tai signatūra, o 10 tai programos ROM dydis (kart 512 baitų, h100). O nuo 4 baito prasideda pati programa.
Konkreti Y2K PCB darė šitą: išvalo ekraną (rodos), parašo užrašą, nuskaito dalį RAM ir kažką paskaičiuoją ir jei nepavyko, sako error ir išeina, nuskaito RTC per BIOS, nuskaito RTC tiesiogai, palygina, ir jei kažkas gaunasi arba rašo, kad kompas suderinamas su Y2K arba bando (?) pačinti BIOSą. Čia jau spėlioju, nes mano žinio gana trumpos čia.
Kilo mintis padaryti va taip:
Copy-paste kažkiek asemblerio mnemonikų… ir kaip sukompiliuoti? Internetai sako, kad standartinis GCC, su raktažodžiais tipo “-m16 -nostdlib -ffreestanding” turi gaminti x86, 16bitų, REAL kodą. Ir tikrai, kopijuotas kodas iš Hidros susikompiliavo. Toliau teko kankintis su LD.exe ir visokiais loaderiais, kad gautųsi ROM image, o ne exe failas. Tai irgi buvo pilnas nuotykių žaidimas kuris nepavyko iki galo.
Tačiau kodas neveikė realiuose kompiuteriuose.
Ir pasirodo, kad JOKS GCC nesugeba generuoti teisingą 16 bitų, REAL MODE kodą. Iš principo. Binarinių failų palyginimas parodė, kad CALL, RETF ir gal kitokios instrukcijos generuojamas 32 bitų. Tas 32 bitų kodas “kaip ir suderinamas”, bet kai paleidi iš BIOSo, tai tikrai nesuderinamas. Ir nesvarbu koks procesorius- 486DX irgi nesuprato.
Rašyti softą be CALL kaip ir sunkoka. Gerai, kad čia tik kelios eilutės- išvalyti ekraną, per BIOSą (TTY režime) išspjauti tekstą ir nuskaityti ANYKEY iš klaviatūros. Teko viską perrašyti tiesiogiai. Ir rankutėmis įkelti “RETF” teisingą kodą programos gale. Kodu nesidalinu, nes jis baisus, nesuprantamas ir ten per daug POP/PUSH (kopijavau iš tikrų paprogramių, kur išsaugoja registrus). Svarbu veikia.
ROMas turi primityviausią kontrolinę, 8 bitų, sumą. Todėl reikią paskutinį baitą ROMe kaitalioti tol, kol suma nepasidaro 00.
O dar radau keistą PCI plokštę iš Izraelio- kažkoks tipo “security”. Pati PCB tai kastruota tinklo plokštė su BOOT ROM. Jei bus azarto, bus galima pasinagrinėti šitą kodą.
Taigi, be normalaus asemblerio, koduoti ROMą labai sunku. O tiek turėjau planų- panaudoti C kalbą ROMe ir PC kompiuterį panaudoti kaip mikrokontrolerį. Kam? Ogi smalsu. Nebent PCI kompiuteriai jau tikrai valgo 32 bitus ROMe.
O grynai asembleris tai NASM. Jam puikiausiai kompiliuojasi. Tikriausiai komentaruose bus pilnas komplektas NASM kompiliatoriui.
P.S. Originalus Y2000 ROMas.
Jau trečia krosnis genda dėl to pačio gedimo. Pirmas kartas buvo 2020 metais, antras- 2021. O dabar, 2024 metų pabaigoje ir vėl.
Šį kartą video variantas. Nes tai jau tipinis gedimas. Lėtas darbas, nes žiūriu serialą ir kartu remontuoju.
Video nepilnai chronologiška- kažkuriuo metu buvo savaitės pertrauka, nes tingėjau važiuoti ir pirkti kondensatorius. O rezistorius palikau originalius, nes tokių neturiu ir nežinau ar galima mažą kiekį nusipirkti. O ir šiaip jie geri. Milžiniškas – fliuso ar kanifolijos kiekis ant PCB? Nežinau, klauskit kinų. O štai mano fliusas uždžiuvo.
Ir nebijokit, kad čiupinu tipo 400V maitinimo pusę. Daugelis impulsinių maitblokių pasileidžia nuo ~30V.
Gavosi beveik ASMR filmukas.
Pagaliau! Iš kokio šešto karto pavyko rasti 386 kuris pasileido. Aišku čia ne originalus intelio, bet Amd klonas ir pavadinimas tikriausiai toks: Lucky Star 386SXA.
PCB buvo gera, nes kažkas pašalino batareiką. Ir … pakeliui pašalino RTC, BIOS ir klaviatūros kontrolerio čipus. Aišku dar ir išlupo RAM tiesiai, nulauždamas visus fiksavimo elementus. BIOSą lygtai radau internete- kiek naujesnės versijos PCB, bet su tuom pačiu (tikriausiai) čipsetu. Ir iš Laimingos žvaigždės pavirto Aceriu. Nors pirmuosiuose testavimuose veikė ir su kito, DX kompiuterio BIOSu. (Čia 16 ir 32 bitų skirtumas, jei ką). Klaviatūros kontroleris kažkoks atsitiktinis, iš naujesnio kompiuterio. Nusprendžiau, jei pradžioje parašyta “AMI”, tai bus suderinamas su “American Megatrends”. VGA plokštė irgi kiek apkramtyta- biški nėra RAM čipų. Tai ne visos spalvos veikia.
Kas įdomiausia, kompiuteris veikia nuo vieno maitinimo- nuo 5V. Ir ima kiek daugiau nei 10W, čia su VGA ir kieto disko plokšte. HDD plokštė tai naujadaras, skirtas XT kompiuteriams. Tačiau pasirodo, suderinamas su 386 kompiuteriu.
Turiu nulenkti galvą Taivanio kompiuterių “unifikavimui”- sukišus atsitiktines detales kompas vis tiek pasileido (a, dar RTC, tai košerinis Motorolos čipas). Ir net pasileido Windows 95. Leidosi ir 98, bet pradėjo pykti dėl draiverių ir šiaip čia viskas labai lėtai veikia- čia 33MHz papimpintas 286 (386SX).