Jsme si opravdu jisti tím, že to na některých strojích bylo opačně? Výpisem programu není radno se nechat zmást, tiskárny byly drahé a programy se často přepisovaly na psacích strojích ručně. A jelikož čísla se vyskytovala častěji, lenost způsobila, že se škrtalo O místo nuly (znamenalo to pokaždé vrátit se o úder zpátky a přepsat lomítkem). Jasně si vzpomínám na skripta na numerickou matematiku (která mám ještě někde na půdě), kde byly tímto způsobem prezentovány fragmenty programů ve FORTRANu 77.
Jo to je pravda, měl jsem ho zmínit, takže si aspoň přihřeju polívčičku http://www.root.cz/serialy/programovaci-jazyk-forth/
1) pamatuju jak jsem na c64 v monitoru zastavil hru, prochazel pamet a hledal v maticich 8x8 bitmapy nepratelskych figurek, kdyz jsem to za velkeho nadseni nasel
tak jsem jejich bity vymazal, takze uz nedochazelo ke kolizim s moji postavou.
pro c64 byl skvely monitor, ktery umel zobrazovat pamet jako matice 8x8, 16x16, 32x32, takze se v pameti daly hledat bitmapy.
2) po revoluci jsem si zbuhdarma koupil knihu o pascalu a dodela dlouho
jsem ji studoval, nez jsem se vubec dostal k nejakemu prekladaci pascalu,
kde jsem to mohl vyzkouset.
3) odkojeny basicem a osmibity jsem byl nemile prekvapen, kdyz jsem
se poprve dostal k pc s dosem a system hned od zacatku nereagoval
na moje pokusy zapisovat basic. pak az jsem poznal ms-dos.
3) tak na si tiez pamatam. Na vystavisti v Brne bol PC88 - nejaký klom XT s 2x360kB disketovkami a ja som sa tam snazil tukat ako na PMD85. Ale kedže osm poznal aj SM50/50tak som skusil dir a to zafungovalo a tam som zbadal cat.exe a panecku to sa mi skoro hlava zakrutila z tej super hry :-)
Pokud ano, šlo o divokou kočku napsanou pro PC platformu (původně atárko, nebo amiga?) a myslímže psáno pro fu IBM jejíž logo je v úvodu.
Tato hra má neobyčejný příběh a myslímže se traduje, že jí programátor "překlopil" na intely během tří dnů bez spánku. Autor Bill Williams mj. dělal muziku a napsal také knihu "Nahý před Bohem". Holt kumštýř.
https://en.wikipedia.org/wiki/Alley_Cat_%28video_game%29
Tak to čumím. My sme k tomu na škole nemali jedinú príručku, takže SM50/50 stál väčšinu času nepovšimnuté. Jedine ja som sa s tým zapodieval. A myslel som, že tam bol nejaký FOBOS 2. To by aj zodpovedalo CP/M 2. Jediné čo som na tom vedel obsluhovať bol BASIC, pretože bol rovnaký ako na PMD. Formát diskiet bol rovnaký ako na veľkých SM4 pretože texťáky sa dali prenášať. Tak to som fakt netušil, že som už vtedy robil na CP/M s 2x 8" disketami :-)
A taky na tom běžel český skriptovací databázový jazyk Redap, který běžel snad na všem, co se v ČSSR vyrábělo. Samotný Redap byl původně vyvíjen pro počítač řady SM, takže částečně používá příkazy AT procesoru z RSX-11. Postupně ho autor portoval na kde co a dodnes to funguje na Windows i jako 64 bitová verze. Bohužel dle mého soudu je to dílo geniálního programátora, ale špatného obchodníka, takže se to po změně režimu nijak zvlášť neprosadilo, možná ještě v době všeobecného používání FoxPro to mohlo udělat díru do světa.
Nicméně zajímavé na tom je, že to autor pořád nějak vyvíjí.
ad 2 – znám důvěrně; dostal jsem k Vánocům knížku od T. Hrušky „Pascal pro začátečníky” a až po roce jsem se dostal k AMOS Pascalu na IQ-151 a pak teprve se mi podařilo sehnat překladač pro C64. To jsem dokonce začal psát vlastní překladač ze zoufalství (v tom věku jsem ovšem asi neměl šanci na úspěch), abych nakonec po letech na VŠ dostal jako ročníkovou práci ve třeťáku napsat v Pascalu interpret Pascalu. :)
Papírový počítač vyšel v ABC daleko dříve než v roce 1986 - už někdy koncem 70. let.
ABC totiž v 80. letech přetiskovalo znovu některé své úspěšné vystřihovánky, články a seriály z minulosti, což mladší čtenáře mate. Úplně stejně to bylo třeba se seriálem Vzpoura mozků, který je také starší než si spousta lidí myslí.
Vzpomínám si, že tam někdy v roce 1980 +- 1 rok vyšel článek o panu Procesorovi, jak sedí ve své kanceláři, čte si, co má dělat, chodí si k okénku pro vstupní data a výstupy dává do jiného okénka........atd.... Řekl bych, že právě tyto záležitosti mě tenkrát jako dítě jasně nasměrovaly.
Lidem, kteří tenkrát ABC tvořili, je nutno poděkovat. Dnešní reinkarnace toho časopisu, promořená reklamou a narychlo spíchnutými články s tím nemá nic společného.
Ještě bych se rád zeptal - nemáte náhodou ta čísla ABC, kde vycházel myslím seriál o principu počítače a právě někde mezi tím byl Pan Procesor? Mně se to kdysi ztratilo při nějakém stěhování nebo to zabordelil člen rodiny, který k tomu neměl ten správný vztah.
Nechci navádět k nějakému skenování, ale třeba se to už někde v el. podobě válí...
Ano, v článku je chybička - CGS vyšel již v roce 1980 v ABC ročník 25 číslo 7 (vyšlo 1. prosince 1980) a nikoliv v roce 1986 (o kterém se zmiňuje pan Svoboda v článku Papírový počítač CGS http://www.root.cz/clanky/papirovy-pocitac-cgs/ pouze jako o roku, kdy CGS objevil a nikoliv kdy CGS vyšel; to si někdo špatně spojil dohromady). Vždyť v roce 1987 už šel na trh Didaktik Gama...
Překladače Hisoft na přednášce zmíněny nebyly?
Já se díky Hisoft C a seriálu od L. Zajíčka v Mikrobázi tenkrát naučil Céčko.
Z nějakého podivného důvodu nás tenkrát na VŠ Céčko neučili - možná nebyly k dispozici překladače? Přitom Pascal nebo Fortran byly všude...
Je také zajímavé, že se tehdy za železnou oponou vyskytoval Unix velmi zřídka(C s ním tehdy úzce souviselo), přitom třeba RSX-11 byl na každém PDP-11 nebo SM-4, které jsem potkal. A první VAX s VMS jsem potkal až někdy počátkem roku 1991.
Bylo to vše snad výsledkem embarga?
S C na SM 4-20 byl problém, protože tehdejší terminály uměly jen velká písmena a C zdánlivě nechodilo, protože vyhazovalo chyby, které se nedaly lokalizovat, protože nikoho nenapadlo, že je to tím, že C rozlišuje velká a malá písmena a na terminálu to zkontrolovat nešlo, takže když jste upravil nějaký program napsaný na dokonalejším terminálu, tak se tam do identifikátorů dostlala velká písmena. Teprve, když se začaly z Polska dovážet novější terminály i s malými písmeny, se na to přišlo :-)))
Já už se bál politického školení, ale toto je zajímavá poznámka.
To mě nenapadlo a to, že staré československé terminály neměly kompletní tabulku znaků se mně vlastně vykouřilo z hlavy. Nicméně vím bezpečně, že daleko častěji jsem seděl za terminálem, který kompletní znakovou sadu měl.
Přímo pasu po informaci, zda tady v Československu před rokem 1989 běžel nějaký Unix. V té době jsem o něm hodně četl vše co bylo dostupné a dostal se k němu jen v podobě jakéhosi raného portu Minixu snad na Atari ST(už nevím přesně), což ale nebylo plnohodnotné...
Tak hobici casto pouzivali dalnopis, tam toho taky vic nebylo nez bylo :) Vcetne "ruskeho dolaru", to si urcite pamatujes (takove kolecko s packama).
No a i modernejsi technika nekdy mela problemy, napriklad si pamatuju Epsonacky tiskarny s vypalenou cestinou do ROMky - tam tusim chybely prave slozene zavorky, pro cecko dost podstatne.
Ostatne - prave zde je duvod, proc placal pro poznamky nabizi jak {} tak i (* *).
Rozhodně ano, jmenovalo se to DEMOS a bylo to na počítačích SMEP. K Unixu tu vycházela i literatura, např. Brodský, Skočovský: „Operační systém Unix a jazyk C”, v níž se autoři podivují nad tím, že databáze vlastností terminálů na amerických unixech obsahují hromadu modelů, ale ne československé ze Zbrojovky Brno. Mimochodem jde o jednu z mála knih o OS, která je z větší části stále použitelná i dnes, po čtvrt století. Ale to je dáno asi spíš tím, že je o Unixu a o C. :)
Ta kniha od Skočovského ale vyšla až krátce po roce 1990 v Gradě, pokud si pamatuju. Doma se na ni podívám....
Nebo že by mně tehdy nějaké dřívější vydání uniklo?
DEMOS mně něco říká, asi jsem zachytil tenkrát někde nějakou zmínku, ale že to byl Unix opravdu nevím. Čí unixový OS to tenkrát vlastně zkopírovali a přejmenovali?
Já tady skoro pláču a přitom se informace o DEMOS povalují na Wikipedii :-)
https://en.m.wikipedia.org/wiki/DEMOS
Byl to ruský klon BSD.
> Přímo pasu po informaci, zda tady v Československu před rokem 1989 běžel nějaký Unix. V té době jsem o něm hodně četl vše co bylo dostupné a dostal se k němu jen v podobě
Někde běžet musel, protože tou dobou vyšla kniha: http://www.abclinuxu.cz/blog/bystroushaak/2011/5/operacni-system-unix-a-jazyk-c
Autor tam vysloveně uvádí, že unix poběží na SMEP, viz citace:
V ČSSR je k dispozici DEMOS pro minipočítače SMEP SM 52-11 a SM 52-12. V době, kdy se tato kniha objeví na trhu, bude pravděpodobně již implementován Unix na všech počítačích vyráběných a dodávaných v ČSSR jako výsledek snahy o jednotné základní programové vybavení. Toto tvrzení se týká nejen počítačů střediskových (JSEP), minipočítačů (SMEP), ale i mikropočítačů (osobní počítače a pracovní stanice). Všechny implementace budou vyhovovat doporučení X/OPEN.
Já na tuhle knihu po těch 26 letech nějak pozapomněl(pořád jsem si Skočovského spojoval s tím, co od něj vyšlo až krátce po roce 1990). Když jsem tady viděl obálku, tak jsem si vzpomněl.
Doma ji nemám, takže jsem ji tenkrát měl asi od někoho vypůjčenou nebo byla k dispozici někde ve škole...
Je ale divné, že ta zmínka o DEMOS mně v paměti nějak neuvízla(kromě názvu, který jsem si ale posledních 25 let nespojoval s Unixem). Je otázka, zda u nás DEMOS vůbec někde reálně běžel - pocházelo to z Ruska a jak už jsem psal, tady skoro všude na PDPčkách, nebo jejich klonech, byl RSX-11(tedy aspoň co jsem měl možnost vidět).
Ale na druhou stranu - Skočovský a spol. se to na něčem naučit museli...
Ale skvěle si kupodivu pamatuju na článek od Zdeňka Maříka z KS Praha v časopise Elektronika snad někdy v roce 1988, který se jmenoval: UNIX, zrozen ve znamení her.
Možná proto, že s autorem jsem se pak v 90. letech potkával v Praze na Pankráci v pobočce firmy DIGITAL a pak i při práci pro zákazníky. Dlouho jsem o něm neslyšel a na Webu je toho velmi velmi málo - viz třeba: http://www.sofsem.cz/sofsem96/business.html. Jakoby zmizel... Poslední, co teď vidím, je že v roce 2000 přispěl do jakési diskuse na Živě ohledně frekvence procesorů Alpha. Svým způsobem byl mým Velkým učitelem Unixu na Alphách :) Škoda těch mašin, nástupců VAXů...
Pane Tišnovský, vážně obdivuji, jak rychle dokážete vytvořit tak kvalitní články z nejrůznějších oblastí a pro nás čtenáře je zdarma zveřejňovat. Opravdu děkuji (a myslím, že nejen za sebe).
Mám drobnou prosbu. Myslíte, že byste si našel čas napsat i článek, jak se vyvíjí pro osmibitové počítače v současnosti? Myslím pro ty klasické domácí. Například spectrácká scéna je hodně živá.
Dik za clanek.
Jen bych dodal ze ja mel ACTION! na kazete, ale moc jsem v nem neprogramoval, protoze to dost padalo. Ale jinak myslenka to byla pekna.
Skoda ze nebyl zminen ATMAS-II. Podle me v te dobe nejlepsi assembler/editor/monitor pro ATARI. Editor mel dokonce command mode, podobne jako editor vi (ovsem mnohem jednodussi -- na vyhledani a zamenu retezcu a podobne akce to ale stacilo).
A byl to originál ACTION! nebo nějaká nepovedená konverze. Co vím (ale mohu se po těch letech mýlit), tak ACTION! byl vydáván jen na paměťovém modulu - cartridgi. Ono se hodně konvertovalo, ostatně velmi dobrý MIKRONOTES taky byl původně na cartridgi, někdo to upravil pro Turbo 2000 a BT-100 a byla z toho zajímavá kartotéka (které jsem honosně říkal databáze :-)
Monitorov v obrazovke bola cela rada, napriklad Amigo - to bol to presne ten isty debugger ako je v systeme MRS, akurat sa dal pouzit samostatne a dal sa dat do obrazovky.
Dalsi taky monitor bol napr. cesky Devastace.
A jeden som spravil aj sam - Seek memory monitor
http://busy.speccy.cz/tvorba/smm.htm
ktoreho prve tri verzie boli tiez umiestnene prave v obrazovke.
Tak on ten ASM pro I8080 (a odvozený Z80) nebyl moc složitý. Stačilo vědět, jak se bity instrukce dešifrují v řadiči.
MOV X, Y bylo tuším 01xxxyyy, čísla regisrů postupně A, M*), B, C, D, E, H, L. Takže MOV A,M bylo 01000001 -> 0x71. Z80 to mělo značený LD A,(HL)
A některý instrukce si pamatuju doteď - 0x00=NOP, 0xC9=RET, 0xCD=CALL,..
*) M byl fiktivní registr - ve skutečnosti se použil byte v paměti na adrese 256*H+L
Místo MOV M,M alias LD (HL),(HL) je HLT. A vždycky mi vrtalo hlavou, co by to na Z80ce udělalo s prefixem DD nebo FD čili (IX+d) nebo (IY+d) :-)
VĚDĚL jsem to, čestný slovo, ale přiznám se, že pro sichr jsem si to napřed ověřil, abych nenapsal koninu, už je to nějakých 30 let :)
Přesně tak, gratuluju!
Co to dělá s prefixem taky netuším, ale cross assembler pro Z80 existuje a emulátorů je taky hafo, takže to vyzkouším ASAP :-)
PS: Já si to pamatuju hlavně kvůli Aleškovi a jeho perfektnímu vyučování a písemkám. Když jsme začínali s assemblerem, tak vysvětlil registry, vysvětlil instrukci MOV a řekl "tak a teď znáte už přes čtvrtinu instrukcí 8080, to šlo rychle co?" :-)
No a další blok byl aritmetika, tam to jeden operand bralo z A, výsledek šel taky do A a 3b byly pro druhý registr, něco pro operaci (ADD, ADC, SUB, SBC, CMP,...). A takhle se to dělilo na menší a menší bloky...
Z80 to pak pěkně rozšířila o věci jako MOV L,(IX+A), SET 7,C, EX AF a podobný cheaty... Navíc proti 8080 uspořila dva brouky, dva levely napájení, na stejné frekvenci 3x vyšší výkon a vestavěný refresh DRAM... Z80 přišla o rok pozděj než I8080.
My jsme měli smůlu, že v rámci RVHP se U880A a U880B dělala v NDR a MHB8080A s tím marastem okolo v Bratislavě. Soudruzi upřednostňovali tuzemskou součástkovou základnu. Pro jednočipy taky, kralovaly obvody MHB8035, MHB8048 a MHB8748 z Tesly Piešťany... Vzpomene si někdo na rozdíl mezi nima?
Ne. 8035 pez ROM, 8048 s 1kB OTP, 8748 s 1kB EEPROM
Kouzlit s velikostí RAM u předka 8051? To je zajímavá představa...
Neumím si představit výuku na 8048 jinak, než teoreticky. Stylem "vypal a zahoď" u studenta, který si plete instrukce, by tam muselo být sakra hodně dotací z EU...
"Kouzlit s velikostí RAM u předka 8051? To je zajímavá představa..." a přece to tak je, protože existuje 8039 a 8040, kde první má 128 bajtů a druhá dokonce 256 bajtů, asi známejší je 8049 taky se 128 bajty a 2kB EPROM.
"Neumím si představit výuku na 8048 jinak, než teoreticky." - proč? To se přece normálně používalo, teď z hlavy nedám zapojení, ale v ROM byl systém (nějakej monitor) a přes sériák se nahrávaly programy do expanded RAM. Takže napíšeš v ASM na PC, přeložíš pořád ještě na PC, přes sériák přeneses do expanded RAM a jumpneš na tu novou rutinu (to zařídí monitor).
V praxi:
Program Memory is expanded beyond the resident 1K or
2K words by using the 8058 BUS feature of the MCS-48.
All program memory fetches from addresses less than
1024 (2048) occur internally with no external signals being
generated (except ALE which is always present). At
address 1024 the 8048 automatically initiates external
program memory fetches.
No, u téhle architektury je vždycky něco za něco. Je to Harvard, takže toto řešení předpokládá oddělenou paměť dat a programu (signály RD vs PSEN) a uměle spojit tyhle dva adresní prostory. Myslím, že tohle bude pro studenty pěkně matoucí, zapsat u Harvarda program do RAMky a hips, najednou je to v paměti programu, která je přece jinde...
Další věc, obětovýní dvou portů ze čtyř a zpomalenívykonávání programu.
V neposlední řadě, externí RAM je jiná, než interní (nedá se tam hodit stack,..) a jsou tam i další limitace. Třeba komplikace s předáváník parametrů funkcí na zásobníku u Cčka.
Samo rozdělení u těchhle starých plaček na ROM, XROM, RAM, IRAM, XRAM, BIT a SFR bylo pro mě na ASM 51 to nejtěžší... Šest fyzicky oddělených adresních prostorů (6x víc než u ARMu, 3x víc než u I8080 / Z80, 2x víc než u PCI). Prostě mazec.
Ono se to tak používalo, asi nejblíž tomu PMI-80 zmíněného v článku je starobylý http://www.old-computers.com/museum/computer.asp?st=1&c=564 (té kapacitě RAM nevěřte, interní byla samozřejmě menší).
http://www.root.cz/clanky/mikroradice-a-jejich-aplikace-v-jednoduchych-mikropocitacich-2/#k02
Bohužel nemůžu najít, jak vypadal kit, který se používal na střední škole u nás. Mělo to taky klávesničku, sedmisegmentový display a propojení s PC přes sériový port (což byl oproti PMI-80 luxus :-).
Jako učební pomůcka mě to přijde fajn, je to tak jednoduchý, že to pochopí skoro každej, v porovnání s Atmely si dovolím říct, že 8048 má o dost jednodušší instrukční sadu.
Presne tak.
Podle me, k vyuce naprosto nevhodne, protoze to ve studentech vyvola pocit, ze snad vsechny ty obskurni konstrukce jsou pro pocitac v nejakem skrytem smyslu podstatne. Krome toho spotrebuji spoustu usili na prekonavani tehle nastrah, takze na samotny algoritmus, pristup k reseni ulohy a to co se vlastne maji naucit uz mnoho casu nezbyde.
To je jako kdyby se na skolach tvrde vyzadovalo umet nasobit cisla v reprezentaci pomoci rimskych cislic (primo, bez prevodu). Jiste ze to procvici pamet a soustredeni, ale na druhou stranu tim zabijete cas, kdy jste se mohli naucit neco uzitecneho.
Tenkrat, kdyz nic jineho nebylo tak se da pochopit ze ucili na tom co meli, ale dnes neco takoveho ucit je zlocnin, kdyz muzete vzit ARM ktery je elegantni, prehledny a temer minimalisticky a v praxi se pouziva vic nez x48 a x51 dohromady.
To jo, ale v osmdesátých a na začátku devadesátých let to bylo jinak, to sice již 8048 byla překonaná věc, ale stále však trošku jednodušší než 8051 (my jsme dělali oboje, takže se vlastně vysvětlovali jen rozdíly). Dneska by nějaký kit s ARMem (mikrořadičová varianta) byl zajímavej, kdyby se to pojalo rozumným způsobem.
Jasne, v te dobe to schvaluju. Nic lepsiho nebylo.
Taky jsme to meli ve skole a trapili na na tom, uz ted ani nevim jestli to byla 8048 nebo 8051 (melo to instrukci nasobeni, coz mi prislo oproti 6502 jako docela pokrok).
Ale bylo to uz trochu modernizovane, kod se psal normalne na PC, dokonce to umelo krokovat program ktery bezel v tom jednocipu a na PC ukazovat hodnoty registru.
Tak to byla 8051, když to umělo násobit, protože 8048 neuměla vlastně ani odečítat :-) [tedy uměla, ale ne jedinou instrukcí, člověk si musel vyhrát s doplňkem].
Vlastně je typické, že ta násobička byla v 8051 "přilepena" navíc k jádru, na výsledky se používal speciální registr B doplňující A, trošku mě to připomíná MIPS.
No jo, uz jsem tyhle nepotrebne znalosti zapomel, koukam ;)
Prilepit nasobicku k hlavni pipeline neni uplne jednoduche. Treba na PPC to vyresili vyslovene nevhodne (z dnesniho pohledu, kdyz je mozna aby se v kazdem cyklu dokoncilo jedno nasobeni). Ale zase diky tomu zachovali stejnou sirku vsech sbernic v CPU a kod zustal 3 adresovy.
Musím souhlasit. Takový Cortex M0 s matiovou klávesnicí a sedmisegmentovkou by byla fajn.
- Jeden adresní prostor pro adresy, data a periferie. Není rozdíl, jestli appka běží v RAMce nabo v ROMce
- OpenOCD, GDB, GCC, FT2232,... - velmi levný debug
- Nemá to módy jádra jako USR, SVC, SYS,...
- Vždycky je k dispozici UART pro výpisy
Stačí napsat knihovny se správnou mírou abstrakce jako pro Arduino (stačí pro periferky na kitu) a tradá, ideální prostředek pro seznámení s C je na světě.
A k ASM jsem si osobně na ARMu čuchl jenom při psaní vlastního crt.s (nestandardní využití FIQ pro synchronizaci několika brouků), což je tak specifická věc, že se bez toho student v klidu obejde. Škola má dát základy, kdo potřebuje, ten se holt musí ponořit do hloubky.
Možná by taky stál za zmínku http://www.sapi.cz/sapi/sapi.php - nevím jak to byl rozšířený počítač, ale osmibit to byl, programovat se dal v basicu (klasika A-Z proměnné, navíc pole @(0-32767). Viděl jsem to pořizovat data pro zpracování účetnictví mamutího podniku i řídit zkoušky letadel.
Copak SAPI, ale SAPI86, to byl kousek. Klon PC, plně 16b stavebnice na kartách 20x32cm... Třeba modul s 512kiB RAM byl složen z 81 brouků v pouzdře DIL (z toho 72ks MHB4164). Ale to už byla jiná liga, než osmibitový prskolet.
Měl jsem to štěstí, že jsem měl na střední jednoho učitele, který dělal vývoj toho strojku a měl "upytlačenou" origoš dokumentaci od schémat přes výkresy desek až po výpis EEPROMek v ASM s komntářema tužkou, co je co. A podle toho jsem pak ve škole v rámci odbornýho výcviku opravoval vadný desky...
Neměl. SAPI86 byl distribuovaný projekt, takže třeba na CGA byl hrdý nnápis "TESLA STRASNICE", ale měla to narvaný třeba Metra Blansko v jejich počítačích M3Txxx,... Holt socanská náhrada za IBM PC na tehdejší technologické špičce (konec 80. let, u nás si o 286 mohli nechat jenom zdát)
Na SAPI-1 jsme také provozovali CP/M s bulharskými 8" mechanikami. Měli jsme i "zázračný" Mikropascal z KS Praha. Byl to upirátěný Turbopascal 2.0.
Já v něm tenkrát dělal také obsluhu grafického displeje a psal to v jeho inline assembleru. Dnes to své dílo hodnotím jako prasárnu, ale fungovalo to skvěle:)
Moc hezký článek .. vážně že hezký. A ta připomínka pod obrazovkou Commodore 64 je docela trefná. On Basic na C64 byl opravdu nechvalně známý, což podle mě paradoxně přispělo k daleko kvalitnější produkci programů v assembleru. Ono totiž Basic v2.0 toho moc neumožňoval ( v grafice takřka nic ) a tím donutil i ty nejlínější začínající programátory začít používat assembler.
Pamatuji si, že když jsem již docela uměl v assembleru na C64, tak jsem neznal v Basicu nic vic než PRINT a GOTO :) Kecám. ještě FOR ... ale tím mé znalosti s Basicem končily.
Nejlepší BASIC programy pro C64 byly ty, které se "napoukovaly" nejlépe v datových polích tak, že po přeložení utvořily funkční kus assemblerovského kódu a pak to mělo nějaký smysl :) a rychlost. V časopisech vycházely datové struktury přes několik stránek A5 a byla radost udělat jednu chybu v šíleném množství pouků :)
Další vývojový systém pro Z80, aneb "Dort ist alles!" - http://www.scav.cz/download/MZ-800/MZ-800_Navody/Programy/Mrs-1.txt
MRS bol skvely system, podla mna najlepsie vyvojove prostredie na pisanie programov v asembleri (a na pety mu slapal Prometheus).
Nieco o nom (navody, download) je tu:
http://busy.speccy.cz/tvorba/mrs.htm
Inak MRS bolo vytvorene pre viacero platforiem, napriklad aj pre PMD85.
Nejlepší byl Assembler Z80 od 602 ZO Svazarmu za tehdy i pro pracujícího nekřesťanských 200,-Kčs.
A komentovaný výpis ZX Spectrum od Daniela Jenne za přijatelný peníz.
Akorát jsem od Jedličky nesehnal Memory resident system, tak jsem si ho ručně opsal do sešitu přes vánoční dovolenou. Takže všech 1 600 variant instrukcí (včetně tajných) jsem ovládal z hlavy, včetně počtu taktů potřebných k vykonání instrukce.
A teď? Bez kalkulačky nedám ani 3+2....
Hezké. Vždycky jsem záviděl těm, co se mohli o počítače zajímat už řekněme v těch 80. letech, kdy jsem ještě nebyl na světe. Máte velkou výhodu, protože jdete s dobou, víte proč je dnes to tak a tak, protože to vyplává z nějaké evoluce těch procesorů apod.. Jste i lepší programátoři. Já si dokonce myslím, že může řekněme za 10-20 let nastat docela pr**er, protože budou chybět tyhle lidi chybět a budou jen javisti. Už nikdo na vývoj core věcí v asm a C.
No on to byl docela opruz, a právě proto vznikla Java. V tom osvobození od hw omezení byla výhoda. Java příštích let bude virtuální stroj pro ne-neumanovské architektury. Jinak za 20-40 let se hw i programy budou navrhovat samy, lidé je budou analyzovat, aby věděli co dělají, z programátorů se stanou policisté dohlížející na to, co dělají stroje. Kontrolní mechanismy budou zabudovány do VM, na jakém poběží, aby o něm ty stroje nevěděly :-)))
No assembler mě celkem bavil, ale přece jen budovat své vlastní objektové světy je mnohem zajímavější. Jednou Java pojede i ve vaší hlavě, propojení stroje a lidského mozku je výzva, která nás teprve čeká :-))) No jen si to představte, po síti si připojíte neuronovou síť ovládající starou sumerštinu a můžete se začíst do originálu Eposu o Gilgamešovi. Nebo připojit si modul teorie relativity, nebo strunové teorie a ihned s ní začít pracovat, jako byste jí znal roky. Pokud toto nastane, začne platit druhý Moorův zákon - znalosti lidstva se co dva roky zdvojnásobují :-)))
Mno to právěže vůbec - Java a vlastně všechny klasické algolské jazyky mají dost vážný problém s během na vícejádrových systémech, koncept instancí tříd, vláken a zamykání není to pravé do budoucnosti.
Navíc "a 20-40 let se hw i programy budou navrhovat samy", to skoro zní jako stará dobrá parodie na AI, té také dávali jen 10 let (už nekdy od roku 1950) a vono furt nic.
No v té době nebyly jen jednoduché mikroprocesory, ale taky normální počítače a operační systémy jejichž vlastnosti PC dosáhly až 20 let po té. Programování v assembleru, nebo dokonce ve strojovém kódu mikroprocesorů byla z nouze ctnost. Stejně jako problémy s přetečením paměti v C. Mnohem starší jazyky, jako například Fortran ničím takovým netrpěly, snad jen počítané GOTO pro opravdové programátory, nebo problematické používání globálních proměnných v oblasti COMMON :-) Stejně rutinní činnosti se i v assembleru řešily pomocí maker bez nějakého počítání adres, což by stejně ani nešlo, když ty systémy používaly stránkování paměti. A toto elegantně řešila Java. Před ní se de facto programovalo "objektově" i v makroassembleru, kdy "objekt" byl realizován částí názvu rutin, ovšem bez dědičnosti. Java byla jen logickým pokračováním a rozšířením těchto technik rozpracovaných dávno předtím v 70. letech.
Když přemýšlíte, taky se nestaráte o přidělování paměti ve svém mozku, vaše myšlení jede ve virtuálním stroji, stejně jako Java :-)))
Já jako embeďák v praxi už teď vidím, jak vymíráme. V práci nemůžeme hodě dlouhou dobu nikoho sehnat. Ne proto, že by mladí neprogramovali. Programují. Patlají si hry na Android. Jenomže když se jich člověk zeptá, co je to "registr periferie", co jsou to direktivy kompilátoru v C nebo na rozdíl mezi maskovatelným a nemaskovatelným přerušením, jsou mimo. Při otázce na DMA koukají jak žaba z křa...
Maximálně se našlo pár mlaďochů, co si chvilku hráli s Arduinem. Ale posadit někoho takovýho na projekt s jednočipem, kde běží multitasking, není dobrý nápad :(
Zkušenost z Linuxu je dobrá jenom na produkty s Linuxem, ostatní prostě musí mít embeďák zažitý. Jsou to prostě věci, který nejde jenom tak někde vyčíst.
Ale to jsou přece věci co se dají naučit za pár měsíců. Princip obsluhy přerušení přece není nic složitého. V rámci firemní kultury, můžete mít vypracovanou kuchařku, či rovnou framework, jak který obvod ovládat. Přece aby si to každý bastlil po svém, není dobré. Prostě zaplatíte jen pár platů bez toho, že by si hned na sebe vydělal, když ho přijmete na dobu určitou, třeba dva roky, tak ani neriskujete, že vám odejde, aniž by se vrátily počáteční náklady.
No tak embedded je dost specifická oblast v níž se zas tak moc lidí nepohybuje, takže bych to nepřeceňoval. Co tu píšeš jsou zrovna věci vysvětlitelné během pár minut (btw, "direktivy kompilátoru C" - tím myslíš makroprocesor? Nebo jen konkrétně #pragma volby?).
Mnohem problematičtější pro lidi bez embedded zkušeností je specifický způsob ladění, pokud z nějakého důvodu nelze použít různé JTAGy a STLINKy.
A z druhé strany je zase problém u embeďáků samotná programátořina. Kdykoli jsem přebíral nějaký cizí projekt, tak snad pokaždé byl z hlediska technik programování a štábní kultury neuvěřitelně zprasený. Tím myslím nevhodně pojmenované objekty, nevhodně dekomponovaný, různé hacky použité na naprosto nevhodných místech...
Takže své zkušenosti bych shrnul asi tak, že embeďák-programátor by měl vědět něco z elektroniky, ale nepotřebuje umět spočítat zesilovač nebo filtr, prostě stačí mít povědomí, co se mu po těch drátech honí na digitální úrovni a co to vyvolá v obvodech na jejich koncích za reakce. To se dá vysvětlit a ukázat poměrně snadno, pokud neví. Dále by měl vědět něco o tom, co píšeš, ale to se dá taky celkem rychle vysvětlit a navíc na konkrétní technologii.
Ale co se během pár dnů zaškolení vysvětlit nedá, to je právě ta poctivá programátořina, protože oproti PC zde pracuje s poměrně omezenými zdroji a jednoduchými nástroji (C, Forth, Assembler), proto by měl takovou tu programátorskou latinu mít v malíku - vedle klasických technik programování též vědět něco o tom, jak fungují kompilátory, uvažovat o tom, jak se jaká konstrukce na dané platformě asi přeloží, vědět, kdy smyčky nerozbalovat a kdy ano, raději testovat na nulu pokud to je možné, umět odstranit rekurzi, bezpodmínečně mít v malíku dvojkový doplněk, aritmetiku v pevné čárce, logické operace a mít cit pro to, kdy a jak je použít, jak recyklovat různé mezivýsledky atd. a to vše si spojit s konkrétní platformou, tj. má/nemá násobičku, má/nemá instrukce na dělení a pokud ano, jakým algoritmem, jak rychle a jak přesný výsledek potřebuji, jaké jsou možnosti jeho dosažení různými metodami...
Příklad z praxe - v rámci výpočtu bylo třeba zprůměrovat tři vzorky signálu a kvůli tomu, že se to nestíhalo, byl navržen redesign s rychlejším procesorem jiného typu, práce nejméně na jeden člověkorok, náklady přes milion. Přitom si stačilo uvědomit, že není třeba nic dělit, ale stačí v daném případě vynásobit fixedpointovou jednou třetinou. A to jsou ty znalosti, které během pár dní nepředáte, které dotyčný musí získat studiem projektů od mistrů a mít na to hlavu.
No tak embeded programátor používá jen operace + ,<<,>>,xor,and,or a žádné jiné a ví, že by vystačil jen s xor :-))) Jinak dělit 3 znamená v cyklu přičítat 3 dokud není větší než dělenec, což lze zrychlit tak, že podělíte 4, tedy provedete dvakrát shift vpravo a dopřičítáte trojky do výsledku, nebo to lze ještě dále urychlovat i se znalosti rozsahů vstupních dat.
Ladění je až to poslední. Na procesor bez OCD jsem nenarazil pěkně dlouho...
Ale čerti mě berou, když nějakej embeďák cpe všude float (např. na AVR v IAR je to +1kB knihoven, výkon spadne o desítky procent). Nebo se dokonce snaží vytvářet objekty dynamicky :Q Nebo když prostě ignoruje architekturu procesoru a diví se, že program vymlátí 16kiB RAM, když stack je 512B a proměnný mají 1kB...
Z toho železa, je potřeba docela dost. Zažil jsem embeďáka, který nedokázal udělat z RC článku, GPIO pinu a časovače integrační ADC. Filtry jsou jakýsi základ - embeďák občas potřebuje IIR, FIR, FFT a podobný srandy... Bez znalosti analogovýho filtru ani neví, jestli mu z ADC lezou správný hodnoty (aliasing). Musí vědět, co se stane se zvlněním napájení, když to trochu přežene s frekvencí. Musí umět měřit (někdy stač osciloskop, jindy musí vzít LA a při číslicové demodulaci PSK to bez spektrálu moc ladit nešlo). Měl by vědět, jestli zapnout spread spectrum nebo ne a proč...
Na druhou stranu, zažil jsem i machra na elektriku, dokonce s doktorátem z FEKTu, který psal něco v ASM pro AVR a potřeboval tam pole 1B dat pro maticovej displej. Aby mu to vyšlo vizuálně krásně do zdrojáku, měl za DB na každým řádku 5B. Strašně se divil, že adresa=offset+5*charcode+indexbytu jaksi nefunguje... :D
No, to už se dneska dávno rozděluje mezi elektrotechniky a programátory. Já si to taky všechno dělám sám, ale řekl bych, že to je výsada takových těch 3členných firem, jako ta naše, aby člověk musel rozumět všemu, od zesilovačů, přes zdroje po FPGA a ještě si navrhoval DPS a pak si to celé oživoval a programoval. :-)
Ale zase jak tvrdí Alan Kay, "People who are really serious about software should make their own hardware."
Njn, McConnel doporučuje učit se i programovací jazyky, který člověk nepoužívá. Aby pochytil finty, jak to dělají jinde a získal nadhled. Zvykl jsem si třeba na makro foreach a na binární množiny z Pascalu (obojí přes makra), což bych v knížce o C nenašel... A s železem je to stejný.
Ono vývoj projektu ve 2-3 lidí je efektvnější. Odpadne tolik komunikace a byrokracie... Ale to náročnější na kvalitní lidi a hlavně, manažeři si musí přeměřovat pindíky, kdo má větší projekt s větším rozpočtem a větší tlupou "ne-MBA remcajících neandrtálců" :(
V clanku je naznaceno, ze pri programovani PMI80 musel programator na papire pocitat i relativni skoky. Nemusel! ;-) PMI-80 byl postaven kolem procesoru Intel 8080 (vlastne to byla nejaka TESLA, asi MHB8080A) a ten instrukce pro relativni skoky jeste nema, skokove instrukce pracuji s absolutni adresou. Relativni skoky pridal az Zilog Z80, take je podporovaly procesory od Motoroly. Relativni adresovani na 8080 bylo docela slozite:
http://cirsovius.de/CPM/Projekte/Artikel/Programm/RelAdr/RelAdr-de.html
k PMI-80:
stačilo za každou 2.-3. instrukci dát nop. Pak měl člověk prostor na modifikaci.
Když byl program špatně, tak se nop zaměnil za nepodmíněný odskok a nic se nemuselo přepínat.
PS:
vyvolalo to ve mě vzpomínku na Ing. Macha a SPŠE Trutnov.... nejkrásnější doba, těsně po roce 90.... všechno bylo tak nové...
Jojo, BASIC-G na PMD-85a. To byly doby :)
A, mimochodem, pod CPM/M byl i Turbo Pascal 3.0 (na SHARPu MZ-800 jsem v něm psal třeba program pro tisk na plotteru Alfi :) ), takže nejen PC.
Jen ty "opravdové programátory" byl bral s nadhledem. Dnešní dětska, co si na základce dělají aplikace do mobilů, budou za 30 let taky ti Opravdoví programátoři? I když, možná jo :)
Prometeus sa mi zdal super. Kupil som ho v Povazskej Bystrici v Elektro Servise, dovazali legalne SW z CR. Pamatam si, ze casto sa uvadzalo aky je pomer medzi skompilovanym a zdrojovym kodom, bol to predsa dolezity parameter :)
Aj ZX Basic sa mi zdal super, doteraz viem vela commandov pod ktorym klavesom bol. Prvu hru, take celkom pekne puzzle som urobil v basicu a skompiloval niektorym BASIC compilatorom, len uz neviem ktorym. Skoda, ze uz ziadny SW co som vtedy pisal nemam.
To boli casy. Na strednej skole sme sa ako 14 rocni predbiehali na kolko taktovv co urobime v assembleri. (Putpixel, scroll atd)
Prometheus bol ako cesky produkt rozsireny hlavne v Cechach. Na Slovensku bolo rozsirene skor MRS ktoreho verziu 8 distribuoval Ultrasoft a potom neskor verziu 9 distribuoval Perpetum:
http://busy.speccy.cz/tvorba/mrs.htm
ZX Basic bol skvely, trufam si tvrdit ze jeden z najlepsich basicov zo vsetkych 8bitov. Jeho moznosti prekvapuju este aj dnes, napriklad nasledujuce demo "Cowina" je cele naprogramovane vyhradne v ZX Basicu:
https://www.youtube.com/watch?v=YtHbtXJ32j8
Predbiehanie sa na kolko taktov ci bajtov sa da spravit nejaky algoritmus sa robi dodnes :) Napriklad:
http://oldcomp.cz/viewtopic.php?f=100&t=2537
http://oldcomp.cz/viewtopic.php?f=124&t=2736
http://oldcomp.cz/viewtopic.php?f=100&t=2772