Stránka 170

SCC8. SmallC – ukladanie premenných

Keď som už ukladanie hodnôt do premenných v minulých blogoch načal, tak dám aj jeden príklad. Pozrieme sa ako sa narába s rôznymi typmi premenných. Vždy keď je treba uložiť hodnotu do nejakej premennej je volaná táto metóda.…

SCC7. SmallC – symbol table

Napísať kompiler nie je jednoduché, pretože je to komplexná úloha. Je treba porozumieť viacerým častiam, ako napr. parser, generátor kódu, vyhodnocovanie výrazov a dátové štruktúry. Keď to zase na druhej strane všetko do seba zapadne, tak to konečne začne dávať zmysel.…

SCC6. SmallC – pohľad do kódu

Videli sme aký jednoduchý je kód pre príkazy. Ich implementácia v kompileri tiež patrí medzi jednoduchšie časti. Toto je zjednodušený listing. Ukazuje akým spôsobom kompiler vygeneroval postupnosť inštrukcií z predchádzajúceho článku.…

SCC5. SmallC – príkazy

Príkazy sú prekvapivo jednoduché na implementáciu. Skúsme sa pozrieť na if. Zadajme: main(){    if (1) {    } else {    }} Dostaneme: main:;if (1) { lxi h,#1 mov a,h ora l jz $2;} else { jmp $3$2:;}$3: A koniec mainu: }$1: ret Hmm je treba komentár ?…

SCC4. SmallC – funkcie

Jedna z najväčších výhod C jazyka sú lokálne premenné. Lokálne premenné nemajú miesto vo výslednej binárke, ale sa alokujú dynamicky. Počas behu programu, pri potrebe lokálnej premennej sa na zásobníku alokuje pamäť.…

SCC3. SmallC – krátky program

V minulom článku sme skúsili interaktívny režim SmallC. Teraz skúsme kratučký program a pozrieme sa na vygenerovaný kód. Spustime kompiler príkazom scc8080 -t Zadajme: int gla, glb = 3;char msg[]="hello world", glc, *glpc;method_a () {   gla = glb;   glc = 'x';   glpc = msg;}Dostaneme: ; gla = glb; lhld glb shld glado primárneho registrového páru sa načítala hodnota na adrese glb a uložila sa na adresu gla ; glc = 'x'; lxi h,#120 mov a,l sta glcdo HL sa načítalo 'x' čo je ASCII 120, všimnime si, že aj typ char sa načítava do registrového páru.…

SCC2. SmallC – deklarácie premenných

SmallC je jednopriechodový kompiler. Nežartujem. Číta C kód z textového súboru alebo konzoly. Nepoužíva lex/yacc. Ron si napísal vlastný parser, lexer a generátor kódu. Na výstupe generuje asm kód. Tento je spracovávaný asemblerom.…

SCC1. Úvod do SmallC

Bol socializmus. Hrávali sa dve hymny. Československá a sovietska. V televízii boli dva programy. Amatérske rádio prinášalo články o splnených úlohách a zjazdoch KSČ. Na viedni bežal KITT. Vrchol techniky boli sedemmelódiové digitálky.…

XT Mánia 5. FDC BIOS a disketovky

PC/XT vedelo pracovať s (malo podporu v BIOSe) mini disketami DS/DD o rozmere 5.25 palca s kapacitou 360kB (double sided - DS ,40 stôp a 9 sektorov, double density - DD).…

XT mánia 4. XT-IDE BIOS a IDE karty

Počítače PC nikdy neboli predmetom lásky zberateľov a retro nálad. Dôvod bude asi v tom, že PC zatiaľ neumrelo a ani sa nechystá na odchod. Ale časy sa predsa len menia.…

NCB85 2. XMODEM

Dotaz na Rádio Jerevan: Je pravda, že každý návštěvník Rudého náměstí v Moskvě dostane auto?Odpověď: V principu ano. Ovšem nejedná se o Rudé náměstí v Moskvě, ale o Náměstí Gorkého v Kijevě.…

NCB85 3. Cross compiled Hello World

Používať moderné IDE na vývoj pre CP/M nie je žiadna prevratná myšlienka. Fakt ale je, že to skoro nikto nerobí. Snáď preto, že starí CP/M harcovníci majú odpor k Windows, alebo možno preto, že iba nepoznajú silu a výhody moderných IDE.…

NCB85 4. Command line params

Hello World bol prvý krok. Ďalší krok je otestovanie parametrov zadávaných v príkazovom riadku CP/M. CRTSO bude trošku zložitejšie. ; Run time start off for Small C. .module CRET .area CRET (REL,CON) ;program area CRTSO is RELOCATABLE .list (err, loc, bin, eqt, cyc, lin, src, lst, md) .nlist (pag) .globl crtsoend lxi h,0 dad sp shld stksav ; save the stack pointer lhld 6 ; pick up core top lxi d,-10 ; decrease by 10 for safety dad d sphl ; set stack pointer lxi h,0x0080 push h ; line buffer is at 0080H call Xarglist lhld Xargc push h lxi h,Xargv push h call main ; call main program jmp 0 ; warm boot, reload CCPstksav: .ds 2crtsoend: .end Musel som upraviť dodaný CRTSO k SmallC pretože nefungoval.…

NCB85 5. File I/O

Prvý program Hello World overil funkčnosť konzolového I/O a cross compilácie. Druhý program otestoval spracovanie vstupných parametrov z CP/M príkazového riadku. Ďalším krokom je test file systému. Pripravil som krátky program, ktorý vypíše na konzolu obsah súboru.…

NCB85 6. CP/M 64k V2.2

Dnes ráno mi prišla doštička interface k NCB85 a PMD32SD od Martina. Kábel som už mal pripravený tak som rýchlo osadil súčiastky, naprogramoval EPROM a zapol hyperterminál. Po zapnutí som videl toto: Keby to vždy išlo takto hladko :-) Odteraz sa budem snažiť testovať a ladiť na NCB85.…

XT Mánia 5. Real Time Clock

Počítače rady XT nemajú batériu, CMOS RAM a ani čip hodiniek a kalendára. To zase nie je až také zlé, pretože už som videl zopár zničených dosiek triedy 286/386 keď vytiekla kyselina z NiCd akumulátora.…

SCC.10 printf

printf je užitočná a pomerne silná metóda, ktorá je prítomná v prekvapujúco veľa jazykoch. Okrem iných aj Fortran, Cobol, Java, PHP, Perl .. Mňa na nej vždy fascinovalo to, že má premenlivý počet parametrov.…

SCC11. SmallC – PMI80

Neuveriteľné (pre mňa) sa stalo skutočnosťou. Na jednodoskáči s klávesnicou a sedemsegmentovým displayom beží program napísaný v C. Trocha to rozpíšem. Jedná sa o PMI80. Ten program v C sa samozrejme nezadáva cez klávesnicu a ani sa nekompiluje na PMI80.…

XT Mánia 6. Ethernet

Keď som mal svoj prvý počítač, čiže slušovickú kópiu IBM PC/XT s označením PP-06, nikdy mi nechýbal internet. Všetko sa vtedy ešte prenášalo na disketách. A 5.25 palcová disketa bola celkom bežná.…

Centurion: Defender of Rome

Romulus a Remus, vlčice, cecík, mléko… protřepat, nemíchat a voilà, máme tu Řím! A když už ho tu tedy máme, tak by bylo záhodno rozšířit jeho vliv a odvážně se pustit tam,kam se dosud nikdo nevydal :) Centurion je tahová strategie s “realtime“ souboji armád na bojišti.…