Kvůli nové „vlastnosti“ :-) redakčního systému se mi nepodařilo do článku vložit některé fotografie v plném rozlišení, takže některé ofocené Basicové programy nemusí být čitelné. Původní fotografie v původním rozlišení naleznete zde
Kvůli nové „vlastnosti“ :-) redakčního systému se mi nepodařilo do článku vložit některé fotografie v plném rozlišení, takže některé ofocené Basicové programy nemusí být čitelné. Původní fotografie v původním rozlišení naleznete zde
Pro mě by to bylo složitější (a pravděpodobně i pro lidi, co si chtějí fotky prohlédnout) a stejně by to nevyřešilo problém redakčního systému. Nicméně s těmi fotografiemi si může každý dělat co chce a v případě naskenování celého VTM by se DJVu nebo PDF s vloženými binárními TIFFy hodilo, to samozřejmě.
– Ačkoliv Forth je jazykem, který v současnosti používám nejčastěji (vedle Assembleru a C), stále váhám, jedná-li se o vyšší nebo nižší jazyk. BASIC byl považován za nižší jazyk, totéž Assembler, Pascal za vyšší jazyk, C za nejnižší z vyšších jazyků (resp. nízkoúrovňový jazyk). Ale Forth? Při vší úctě – lidem, kteří o něm mnoho nevědí, obvykle říkávám, že jde vlastně jen o hodně vychytaný makroassembler. Zkrátka kdybych měl porovnávat mezi BASICem používaným běžně na 8bitech a Forthem, řekl bych, že Forth je o kategorii níže proti BASICu. Ovšem na druhou stranu bych řekl, že jeho filosofie je v mnoha ohledech stavěná stejným způsobem, jako třeba u Lispu („vše je seznam“ – „vše je slovo“, prefixová notace – postfixová notace, možnost neomezeně jazyk syntakticky rozšiřovat pomocí maker – pomocí definujících slov, jednoduchá základní kostra jazyka, definování mnoha základních struktur jazyka v jazyku samém, interaktivita, homoikoničnost, jednoduchost překladače, atp.), který je považován za vyšší jazyk.
– Nejedná se ve výpisu programu na řešení soustav lineárních rovnic o překlep? Ten algoritmus znám pod názvem Gauss-Seidelova metoda, nikoli Sidelova.
– IQ-151 bylo obvykle vybaveno pouze 32 KB RAM, nikoli 64. Ale i 32 KB verze se dala dopájením 4116 do volných pozic na základní desce snadno rozšířit, protože monitor si velikost dostupné RAM testoval po resetu.
– Po resetu zůstal zachován nejen obsah RAM v modulech, ale i na základní desce. Ačkoli v modulech byla instalována SRAM, zatímco uvnitř počítače DRAM, reset netrval tak dlouho, aby se stihl obsah DRAM znehodnotit. Pouze pár proměnných monitoru a BASICu se po resetu inicializovalo. Díky tomu bylo možné i po nechtěném resetu obnovit např. program v BASICu a pokračovat v práci.
Dovolím si s tím Forthem trošku oponovat. Na jednu stranu to v počátcích vypadá jako makroassembler nějakého zásobníkového procesoru, na stranu druhou je to však jazyk s velmi silnými vyjadřovacími schopnostmi (a hlavně s možností tvorby dalších syntaktických konstrukcí), v mnoha ohledech mnohem výš než Basic.
Shrnmě si vlastnosti typických „osmibitových“ Basiců (pozor – modernější BASICy už jsou někde jinde):
1) číslování řádků + skoky na řádky pomocí GOTO (absolutní adresování!!!, toto překoná prakticky jakýkoli assembler)
2) strukturované smyčky – pouze „for“, nic jiného
3) strukturované rozeskoky – žádné v případě, že se příkaz nevleze na jeden řádek
4) uživatelské procedury a funkce (pojmenované) – většinou žádné, pouze GOSUB na řádku (opět absolutní adresování a opět se tato věc dělá mnohem lépe v assembleru či Forthu – tam je to úplně nejjednodušší)
5) parametry funkcí a procedur? většinou jen přes globální proměnné (!)
6) uživatelské datové typy? v naprosté většině žádné
7) + dvě specialitky: automatické deklarace proměnných + automatické inicializace proměnných, na což se aspon jednou nachytal snad každý programátor
[Zatímco například body 1, 2 a 3 se dají ještě zkousnout, jsou body 4, 6 a 7 dohromady zabijácké při tvorbě delších programů]
Výše uvedené vlastnosti vedly (pokud nebyl programátor hodně důsledný) ke vzniku špagetového kodu. Forth je naproti tomu orientován především směrem k tvorbě nových slov (=funkcím), jejichž tělo je docela krátké, umožnuje tvorbu uživatelských datových typů, nových strukturovaných konstrukcí (speciální smyčky atd.).
PS: mým prvním jazykem byl BASIC, takže jsem mu samozřejmě vděčný za to, co jsem se naučil, ale při psaní větších aplikací se člověk už opravdu zamotal a od nějakých 5000 řádkových aplikací se to kvůli bodům 4. 6 a 7 skoro nedalo rozumně zvládnout
Těch pěkných komixů tam bylo víc, ale tahle hláška byla fakt asi nejlepší :-)
Na to VTM vzpomínám i proto, že právě ono nastartovalo mojí IT kariéru. Měl jsem ho ještě předtím, než jsem měl přístup k počítači. Pak jsem se na příměstském táboře dostal k ZX spectru. A právě podle popisu v tomhle VTM jsem na něm napsal program, který se uživatele ptal na kvízové otázky a vyhodnocoval odpovědi. Bez jakéhokoli dalšího vysvětlování „jak to programování vlastně funguje“ :-)
Když už jsme u těch starých počítačových knížek a jejich ilustrací – pamatujete na časopis ROBIK? Ty Jiránkovy kreslené vtipy (nebo kdo to maloval) mě vždycky rozsekaly. :-) Poznámka ze školy: „Sprostě nadává v jazyce BASIC.“ nebo scénka matka s klukem u psychologa: „Kamarádí se jen se svým počítačem…“
Krom toho, řešily se tam zajímavé úlohy z algoritmizace…
Děti se na základních až středních školách učily po obligátním BASICu LOGO (kdo si prošel tímhle jazykem, tomu později vůbec nepřišel Lisp tak obskurní, jako jiným lidem), Pascal, Assembler (resp. stroják – proto jsme měli nařízené čtverečkované sešity, které jsme si měli nalajnovat na 4 sloupce :-) Kua, jestli už stárnu, nebo co, ale stejně mi připadá, že těm generacím po nás, co si touhle osmibitovou školou už neprošly, něco chybí. Už přemýšlejí jinak – rád bych řekl, že ani ne hůř, ani ne líp, prostě jinak. Ale fakt, že nad některými jejich přístupy k řešení problémů (mnohdy klasických!) mi zůstává rozum stát a váhám, neměl-li to být jen nevalný pokus o vtip, mi nedovoluje být tak tolerantní, jak bych si přál.
Hodil jsem ho sem, bez jakychkoli uprav
http://photo.uloziste.com/?fotka=d8d8cf1b5f4ab028.jpg&d=170281fb06fdb21e&size=3
btw: ten papir je za ta leta docela nasedly a porad me nebylo jasny, co je na tom casopisu tak divneho, kdyz si ho po letech procitam. Potom me to tuklo – proste tam je jen text, vtipky a zadne barevne reklamy, docela odpocinkove poctenicko :-)
rika: ,,hele, veverka, bez od toho, nerozumis tomu'' (jeste dnes tu hlasku pouzivam)
nebo se mi libil vtip, kde v letajicim taliri nad zemi leti dva mimozemstani a jeden rika: ,,jestli neovladaji BASIC jsme ztraceni''
vtipy tam byly fakt dobre, jeste nekde doma ten vytisk mam, protoze jsem jeden z tech jirankovych obrazku pouzil na oznameni o promoci. myslim, ze to byl ten jak buh vyhani adama a evu z raje se slovy: ,,bezte a ucte se programovat''
Ty nejpodarenejsi vtipky z VTMka jsem vcera ofotil, zde jsou: http://photo.uloziste.com/?tag=vtm
Rád bych napravil chybu v článku uvedenou: konvence, že znak 10 = LF a 13 = CR nepochází z CP/M, ale ze starší (a hlavně nesouvisející) normy ASCII. Viz http://en.wikipedia.org/wiki/Ascii#ASCII_control_characters.
MRS = Memory Resident System byl:
- editor
- assembler
- linker
- správce knihoven
- debuger
Nahrál se z kazety na PMD, pak celý seděl v paměti a vše bylo k dispozici, dovolovalo to vyvinout program pěkně po kouscích, slinkovat a uložit na kazetu a to vše s použitím daleko méně paměti než nějaký AMOS ;-)
Jo, jo…
MRS byl zatraceně dobrý software. Já jej poznal ve verzi pro ZX-Spectrum. Byla k němu docela dobrá dokumentace. O prázdinách po letním semestru tuším v roce 1988 (poslední velké prázdniny) jsem si přivydělával jako pomocná síla na stavbě :-). Zedníci v prostojích hulili a chlastali pivo a já studoval dokumentaci a kód z MRS :-). Nechápali co to tam čtu a nejspíš mě měli za mimozemšťana.
Hezké vzpomínky…uteklo to tak rychle, až člověku mrazí.
Ty voe… :-)
Uplne na me dychly ty stare casy.
Je ovsem otazka v cem jsem toho napsal vice. Vedle MRS jsem casto pouzival svatou dvojici Gens/Mons (poznal jsem je mnohem driv nez MRS), doplnenou Lamacovym editorem, ktery jsem pak nahradil svym vlastnim, kde jsem pouzil rutiny pro 64 zn. na radek od Adamka. Take jsem casto pouzival vyborny debuger, ktery se jmenoval Mon – doted nevim, kdo ho napsal, protoze tam autor uveden nebyl.
Mimochodem, co je dnes s Lamacem a Adamkem? Adamek uz byl tenkrat „starsi“ pan, ale Lamac byl priblizne v mem veku, tak mozna jeste nejak aktivne pusobi…Jejich krestni jmena si jiz nepamatuji.
Jirka Lamač už tehdy působil pod zkratkou LEC. Pokud to není shoda jmen, tak později založil stejnojmennou firmu http://www.lec.cz/en/indexo.php (pamatuju, jak Pod Juliskou říkal, že ho kybernetika baví víc než VT, čemuž by i odpovídalo zaměření LEC.cz)
Ja jsem to pouzival na zapojenich s 8051. Ten mikroradic mel vyvedenej signal ALE, takze to bylo hodne jednoduchy. Ted uz si presne nevzpominam, jak byly alokovany porty, ale tusim P0 pro data (d0-d7) a spodni bajt adresy, P1 nebo P2 pro horni bajt adresy. U vetsiny pameti musel byt predrazen zachytny registr (latch), nektere ale akceptovaly ALE primo, takze mely latch uvnitr.
Takova pamet se pouziva v i8061/i8065, kteryzto se nachazi v drtive vetsine ridicich jednotek motoru vozidel Ford (EEC-IV, EEC-V) do roku 2004. Vede tam tusim 8+4 signalu (8data,4control). Jsou v tech jednotkach i specialni pameti, az na posledni typ, kde je i28f200.
http://en.wikipedia.org/wiki/Intel_8061
Je to odvozenina od i8096 / i196 specificka pro Ford Motor Company (FoMoCo). Opravdu chutovka na praci :-). Programovali to v C– (ano, C minus minus, takovy hybrid mezi asm a C).
ono tych C– existuje viacero (viem asi o piatich alebo siestich roznych). mojim najoblubenejsim, aj ked uz dalej nevyvijanym je programovaci jazyk c– na tvorbu programovacich jazykov :)
keby to bolo dotiahnute do konca, bola by to vcelku dobra vec pre ludi, co obcas niekde nieco potrebuju sparsovat, alebo prelozit nejaky kus kodu.
Nepatri to zrovna ke grafice, ale muzete mi nekdo objasnit jak se zapisovalo u ruznych pocitacu (ZX Spectrum, Atari, C64) na kazetu? Tedy konkretne jak to bylo modulovane, atd.
Era 8bitu mne minula, zacinal jsem na PC XT. Ted' se k tomu ale nejak vracim a o vikendu jsem si koupil par 8bitaku na aukru, tak mne to zacina zajimat.
na ruznych pocitacich ruzne? Nekdy se pouzival zapis dvoji frekvenci (jednicka byla dejme tomu 2000 Hz, nula 1000 Hz), ale nekdy take primo binarni zapis s tim, ze nuly a jednicky byly ruzne dlouhe impulsy. Samozrejme kazeta i zesilovac maji nejake frekvencni omezeni, takze na kazetach nebyly ciste „obdelniky“, ale to az tak nevadilo. Take kalibrace na delky impulsu se provadely pri nacitani hlavicky i kazde(?) hrany, takze treba nevadilo, kdyz kazetak mel kolisavou rychlost.
Vetsinou se zapisovalo monofonne, ale par frajirku melo i stereo upravu, takze na pasce byly 4 stopy (dve ctene z jedne strany, dalsi dve pri obraceni kazety).
Tak me napada, ze kdyby se pouzivala fazova modulace jak u modemu, tak by se na kazetu veslo mnohem vic dat.
To jo asi mas pravdu. Na kazetach SONY z Tuzexu byla trvanlivost zaznamu v Turbo 2000 (Atari) okolo peti let, to je dobry. Mel jsem taky Maxwellky, ale ty mely mekke pasky, takze se vytlacovaly diry v pripade, ze jsem po nahrati programu zapomel vypnout kazetak, takze ty sly na hudbu. No a potom Emgetonky to je kapitola sama pro sebe :-), dobry tak jako nahrada za moderni /dev/null a /dev/random :-)
Nekdy to nebylo tak hrozne, ze by ti to hned ubrousilo magnetickou hlavu, protoze se stavalo, ze se paska zasekla, takze ji motorek neutahl a tudiz se nic nebrousilo :-)
Takove malickosti, jako ze se zasekla namotavaci civka (a posunovaci „jehla“ za magnetickou hlavou fungovala), takze jsi tahal 20 metru pasky z vnitrnosti kazetaku, byly na skoro dennim poradku.
Kdysi dávno jsemdo svěho atari kazetaku, z nouze (respektive v blahé nevědomosti), koupil dvě tyto kazety. Prodávaly se v menší délce (jedna měla mám dojem 20minut) a šli v pohodě sehnat. Na mojí omluvu budiž řečeno, že to byla hned první kazeta k počítači koupená. Nic to nebrousilo ani se to nenamotávalo, ale neudrželo to často záznam ani do druhého dne. Zkoušel jsem na to nahrát zvuk, ale šumělo to jako blázen. Pak už se kupovali buď kazety vozené z „raichu“ z druhé ruky, nobo z tuzexu, případně se později v normálních obchodech začaly objevovat kazety zahraniční produkce…
Teda ja jsem nedavno po mnoha letech vytahl Atari a ze skrine a v klidu prectu temer vse co jsem tam ulozil v roce 1988 (pokud se teda tlaci do vhodneho mista dvirek kazetaku, ale tuhle vlastnost mel i tenkrat). Samozrejme ze ze zahranicnich kazet. U Emgetonek se ten pasek nejak prilepil sam k sobe (coz udajne lze opravit susenim pri zvysene teplote, ale nezkousel jsem to).
Mel jsem upravu kazetaku zvanou SUPER-TURBO (dokazalo az 6000 Bd, ale to uz bylo nespolehlive, takze jsem pouzival standardnich 2000 Bd).
Nektery zaznamy se sice uz precist nedaji (bad checksum), ale od vseho jsem mel aspon 2 nebo 3 kopie, takze si nekdy az budu mit cas napisu vicekanalovy viterbiho dekoder a z tech 3 kopii se to treba uz podari (na PC) obnovit.
My měli u Didaktiku Gama také nějakou formu Turba, ale narozdíl od Atari to nebylo realizováno pomocí cartridge, ale další ROMkou připájenou na původní. Také na další integrované obvody s logickými funkcemi byly napájeny další a celé to bylo různě propojeno a doplněno dvěma přepínači – jedním na přepínání ROMky a druhým na ruční přepnutí paměťové banky. Celé to tvořilo dosti nepřehledné vrabčí hnízdo.
Neví někdo o této úpravě nějaké podrobnosti? Zajímalo by mě schéma, jak bylo časté a tak, jaká byla výsledná přenosová rychlost a tak…
Na jedno „turbo“ si vzpomínám – jednalo se ovšem o speciální formát kopíráku GAMA copy, které sloužilo pouze pro zálohování. Je možné, že to někdo zadrátoval – nikdy jsem se s tím ovšem nesetkal, a ani neznám nikoho, kdo by to měl v počítači. Didaktik byl na tyhle úpravy dost citlivý. Ten můj nepřežil rozšíření na Lamačovo CP/M. Resp. přežil ale brzo po pájení se začal loupat tišťák.
U různých různě. :-) Základní myšlenka byla, že se na vstup magneťáku posílal obdélníkový signál, při čtení se naopak signál z magneťáku prohnal přes hradlo aby se zTTLkoval a takto upravený šel obvykle na pin nějaké V/V brány. Vlastní formát už záležel na počítači – některé rozlišovaly úroveň signálu (to byla ta horší varianta, neboť signál s opačnou polaritou to nedokázalo zpracovat), některé reagovaly na hranu. Obvykle se používala modulace obdélníková FSK. Data se obvykle sestavovala do nějakých bloků, opatřených hlavičkou a kontrolním součtem (žádné CRC, používal se prostý průběžný součet atp.), přičemž blok obvykle začínal několik sekund dlouhým pilotním signálem sestávajícím z posloupnosti střídajících se jedniček a nul ke kalibraci SW demodulátoru (někdy byl tento pilotní signál až nepochopitelně dlouhý, třeba 10 s). Běžně se modulační rychlosti pohybovaly kolem 200–600 Bd. Pak existovaly různé kopírovací programy – „turba“ – které zaváděly vlastní formát – což obvykle zahrnovalo podstatně kratší pilotní signál, vícestavovou modulaci atp. a ve výsledku to rychlost přenosu dat zvyšovalo několikanásobně. Obvyklé doby nahrávání programu byly řádově minuty.
Koukám, že mnoho lidí už odpovědělo, tak jen dodám ze svý zkušenosti
ZX Spectrum sledoval změny signálu 1 – 0 a zpět 0 – 1. Měří se, kolik se napočítá cyklů mezi celou jednou periodou. Krátká perioda (málo cyklů) odpovídá logické nule, dlouhá perioda (hodně cyklů) je logická jedna.
Zaváděcí signál u ZX Spectrum je myslím posloupnost jedniček a je zakončen nulou, za ním následují přímo data posílána po 8 bitech. Posledním osmice bitů je kontrolní součet.
Dál bych si ještě vzpoměl, že každý blok měl zaváděcí signál, následovaný jedním bitem nuly (jak jsem napsal) a následoval typ bloku jako bajt, jeho velikost, a buď vlastní data, nebo další metadata. ZX Spectrum rozlišoval typy bloků „Program, Data, Bytes“. Typický program tak většinou začínal blokem Program uvozující, že bude následovat basicovský program, pak pokračoval datový blok. Někdy následoval další blok „bytes“ obsahující další binární data.
Pamětníci si jistě vzpomenou na typické spektrácké vrčení, které by se dalo zapsat asi takto.
tůůůůůůkřt … tůůůůůkšřkřšřkšřkšřšřškřkkkřšřšřšřiiiřšřiiii
tůůůůůůkřt … tůůůůůkřšřšřřššššišiřiřiřiišiřiřišiišřřši…
Mam jeste otazku, nebyl by ochoten mi nekdo prehrat nejakou pasku na Atari, ZX Spectrum, Didaktik Gama a M a pripadne i C64 ? Jsem z Prahy, neco proti tomu budu umet urcite nabidnout.
Je realne pripojit k temto pocitacum i walkmana, nebo se to nenahrava pres line-in-out ? Mam tam dat nejaky kondenzator na filtraci DC, nebo tam muzu pustit primo vstup ze sluchatek?
Omlouvam se za hloupe otazky, ale jak jsem psal, 8bity jsou mi cizi (tedy pokud nepocitame MCUcka…). Navic mam doma jen to Atari, zbytek je teprve na ceste.
Na ebay.de take biduji na Robotronovi a na ebay.co.uk ACORN ELECTRON :-).
Nikdy by mě nenapadlo, že se to dá taky napsat. Pro pamětníky (ale i ostatní)
http://www.youtube.com/watch?v=zlsDmALohQQ
Já si toho na svém Spectru tolik neužil, protože jsem měl stroj s integrovanou 3,5 palcovou disketovou mechanikou a z ní jednak zvuky nevycházely a druhak byla rychlejší, než kazeťák.
tys ten clanek necetl vid? IQ-151 je zhovadilost, o tom se psalo minule (a autor byl napaden, ze pomlouva skvely socialisticky vyrobek – tak ted nevim), dnes je rec o AMOSu (operacni system – nic spolecneho s hardwarem), coz je opravdu dost dobry system a neni se cemu divit, ze cesi jsou v programovani docela dobri.
Mat: Opice by stěží dokázaly vyrobit procesor. O tom byl můj příspěvek.
atarist: Nic takového jsem nepsal, zkuste nečíst mezi řádky a chtít chápat. Dotklo se mě, že autor s vervou agitátora hodil do jednoho pytle v něčem špatný režim a ty lidi, co tady tvořili počítače a programy. Ať už byl režim jakýkoliv, a já jsem přesvědčen, že je nedoceněný, naši tvůrci HW i SW byli na světové úrovni. Pokud vám připadá, že je snad ostuda, že měli procesor 5 let pozadu za americkým, tak si uvědomte, že 99% států na náš výkon zíralo s otevřenou hubou, tedy aspoň ti chytří z nich, kteří chápali, co to procesor je.
Klasiká implememtace BDOS/CCP byla pro 8080. Mám pocit, ale fakt ne jistotu, že Lamač přepisoval ještě BDOS – z důvodu portu na Z80. Bohužel manuály, které jsem si schoval, mám někde hluboko ve sklepě a kód už je někde pryč.
V každém případě jsem to nemyslel tak, že by Lamač vynalezl CP/M. Jen se tu používaly dvě implementace – Trollerova a Lamačova. Navíc vzhledem k možnostem tehdejšího hw byl BIOS nějakým způsobem souměřitelný (velikostně/významově) s BDOSem a CCP.
Na Z80 fungoval bez problémů původní kód BDOS/CCP. Pokud někdo cítil potřebu do toho zasahovat, tak nejspíš jenom proto aby rozšířil funkčnost bez toho aby se nafouknul kód. Možná to Lamač potřeboval, netuším. Z původního příspěvku to vypadalo, že Lamač napsal CPM a to mně přišlo úsměvné. Ale koneckonců je to dneska už stejně jedno.
CP/M byl standart, pro ktery existovalo mnoho programu (pozdeji se s CP/M vyvinul MS-DOS). ZX-Spectrum nemohlo bezet CP/M, protoze ten vyzadoval RAM od adrersy 0 a od adresy 0×100 se zavadel program (dodnes prezilo u COM souboru v MS-DOS?) Klasicke ZX-Spectrum ma od adresy 0 16kB ROM s BASIC.
Takze aby ZX-Spectrum mohlo provozovat CP/M, bylo nejprve treba provest HW upravu mapovani pameti; take se zvetsila kapacita RAM v ZX-Spectru na 80, 144, 272 anebo 528kB.
Disketove jednotky byly nedostupne (drahe, jen za valuty, atd). Pro ZX-Spectrum exisovaly „levne“ Microdrive jednotky. A pan Lamac upravil CP/M pro ZX-Spectrum tak, ze pracoval s Microdrive, coz nebylo vubec snadne; mimo jine formatoval kartiridge tak, ze meli o nekolik procent vyssi kapacitu nez originalni format. Pokud tomu dobre rozumim, vlastne rozsril CP/M o RTOS jadro, ktere na pozadi prenaselo data mezi bufery v pameti ZXS a Microdrive, takze „pomala“ Microdrive jednotka nebrzdila uzivatelsky SW; ve vysledku byla rychlost Microdrive srovnatelna s disketovou jednotkou, tenkrat snad jeste s 5.25". Pokud ZXS zapsalo data na Microdrive, mohlo trvat az 50s nez se data skutecne zapsala na cartridge, ale ZXS nemusel cekat, vse bezelo na pozadi. Pozdejsi verze CP/M pro ZXS ktere spolupracovaly s disketovou jednotkou byly uz docela nudne v porovani s verzi, ktera fungovala s Microrive…
Tyto informace jsme se pred casem docetl v casopise Microbaze venovane CP/M pro ZXS; knizecka velikosti A5.
Ale ja jsem prece v clanku o IQ-cku nepsal i <b>vsech</b> pocitacich vyrabenych v CSSR, naopak si treba myslim, ze Ondra, Didaktiky Gama|M|Kompakt a predevsim SAPI-1 se povedly. Ovsem IQ-151 se zcela urcite nepovedlo, myslenka modularniho pocitace byla dobra, ale realizace strasna. Jo a netvrdim to jenom ja (co taky muzu kecat, kdyz mi bylo v dobe rozkvetu IQ-cka stezi 15 let ze?) ale i doboby tisk, coz je docela zajimave, protoze okolo 1986 se jeste moc nase vyrobky verejne nekritizovaly a kdyz uz tak stylem, ze se sice nepovedlo, ale mohou za to subdodavatele.
Nebylo to reseni s osmibitovejma Atarkama? Videl jsem o tom dokument, proste meli na VF modulator Atarka pripojeny zesilovac a vysilali v ramci jedne vesnice (±). K tomu nejakej program vyuzivajici moznosti Atarka v tomto ohledu – scrollujici text ve VBI, barevna duha, ruzne textove rezimy na jedne obrazovce, vypadalo to docela dobre (na co vetsi rozliseni nez 320×200 pri prenosu textu) a vlastne to poridili za babku.
Na osmibitech jsem nic neprogramoval, jen si pamatuju, jak jsem v Prioru koupil jednu 5.25" disketu za 150Kčs a pak ji málem uvařil v mechanica když jsem celé odpoledne zapisoval na Atari ST800 do databáze všechny názvy článků z časopisů Amaterské rádio, VTM, atp. Nějak se teplem zkroutila a málem jsem ji nedostal z mechaniky ven.
?Mam jeste otazku na zdejsi znalce: Jak se loadovalo z pasky, nyni ne jaka tam byla modulace, ale technicky se delo co? Nacetly se bloky z pasky az do nejakeho EndOfTape, ukladalo se to do RAM a pak se to cele spustilo?
Na nejakych youtube videich se ZX Spectrum vidim a slyslim, ze uzivatel zacal nahravat, najednou se tam objevilo logo hry, a nahravani pokracuje. Jak je toto udelane? nacte se z pasky jen kousek (loader), ten se spusti, zobrazi obrazovku, a potom pokracuje v nahravani
U většiny her se nahrávaly tři bloky – první byl loader v BASICu, ten se po spuštění automaticky spustil a inicioval nahrávání ostatních částí a finální spuštění nahraného kódu. Dalším blokem byl screen – většinou se data přímo nahrávala do videoram, a posledním blokem byla samotná hra. Existovaly ruzné variace, navíc tady většinou nekolovaly originální hry ale cracky.
Jiné domácí 8bity měly „jen“ loader ve strojáku (v ROM) a nahrával se přímo program do RAM a teprve pak se pustil. Už se nepamatuji, jestli to mělo nějakou hlavičku, která dopředu říkala, jak je program dlouhý a kam se má po nahrání přesunout.
Později se začaly objevovat různá turba na zrychlení nahrávání, což byl v podstatě upravaný loader. Každopádně pokud si programátor udělal vlastní loader, tak (přinejmenším na strojích s Z80A) si víceméně mohl v průběhu nahrávání dělat co chtěl (házet datama, hrát hudbu, kreslit atd. co procesor stíhal).
Mimochodem pro mladší ročníky by mohlo být zajímavé, že ty pruhy v pozadí (border) v průběhu nahrávání nejsou dělané bitmapou. Pro border byl dedikovaný jeden barevný atribut, který říkal, jakou má border barvu jako celek.
Efektu z pruhy se docilovalo změnou tohoto atributu (ať už byl přes port nebo paměť) rychleji něž snímková frekvence obrazovky.
Dokonce jsem viděl, jak si někdo dal práci s časováním a vykreslil 6 stínovaných (na ČB monitoru) trubek v borderu, které pěkně plynule přes sebe rolovaly nahoru-dolů.
Na každém počítači se to dělalo trochu jinak. Jak už bylo řečeno – hlavička + data, přičemž ve hlavičce bylo cosi jako název, typ dat, kontrolní součet, počet bajtů v datovém bloku a obvykle ještě adresa, od které se mají data ukládat do paměti.
Hlavně v tom nehledej žádné složitosti – všechno bylo tak jednoduché, jak to jen jde – nejjednodušší loader (což zahrnuje softwarovou demodulaci a ukládání dat do RAM) se dal napsat na nějakých 60 bajtů ve strojáku.
Pokud jde o různé triky při nahrávání, tak to opět záviselo na konkrétním počítači – např. u toho Spectra se to dělalo buď tak, že celý program začínal jednoduchoučkým prográmkem, který zajistil nahrání obrázku (prostě blok dat, který se nahrál do videoram, vlastně hardcopy obrazovky uložený na pásek), a poté vlastního programu. Ale zajímavějších efektů se dalo dosáhnout tím, že úvodním blokem byl kód vlastního loaderu, který nahrazoval originální rutinu v ROM, a pomocí této vlastní rutiny se nahrál zbytek. Myšlenka vycházela z toho, že loader vlastně většinu času (speciálně u Spectra) akorát čeká na hranu signálu, znamenající rozhraní mezi jednotlivými bity, takže by v rámci tohoto čekání mohl dělat něco užitečného – např. něco vypisovat nebo kreslit na obrazovku – odměřovat čas do konce nahrávání, vypisovat nějaký úvodní komentář apod. Samozřejmě to muselo být rozdělené tak, aby se elementární krok toho algoritmu vždy vešel do časové mezery mezi hranami signálu.
A pokud ještě špekuluješ nad těmi pruhy po kraji obrazovky, tak to fungovalo jako monitor signálu z magneťáku a řešeno to bylo tak, že při každé hraně loader akorát změnil bajt, znamenající barvu rámečku okolo obrazovky. Obvod, generující videosignál, před vykreslením každého obrazovkového řádku akorát zkontroloval tuto barvu a podle pozice paprsku na obrazovce tam buď kopíroval videoram, nebo jen barvu z tohoto bajtu, čímž vytvořil rámeček. Protože řádková frekvence televize je asi o řád větší než frekvence hran signálu z kazeťáku, stihlo se mezi sousedními hranami vykreslit jen několik řádků stejnou barvou, takže výsledným efektem je vlastně takový osciloskop v binárním režimu s časovou základnou rovnou řádkové frekvenci TV. Pomalé střídání barev celého rámečku před příchodem vlastního signálu je způsobeno opakovaným přetékáním čítače, sloužícího k odměřování značek pro nuly a jedničky. Primitivní, ale funkční.
Pro nahrávání obrazovky měl Spectrum v BASICu dokonce speciální příkaz: LOAD „název“ SCREEN$, ale u těch her to zobrazování při nahrávání fungovalo trochu jinak. Je to odvozené z rozložení paměti tohohle počítače (adresy jsou desítkově a nevypisoval jsem všechny podrobnosti):
*----------------------------------------------
| ROM (16 KiB)
| 00000 – 16383 interpret BASICu
*----------------------------------------------
| RAM (48 KiB)
| 16384 – 23295 obrazovka
| 23296 – 23754 systémové proměnné
| 23755 – začíná program v BASICu
| (obvykle, pokud není připojen microdrive),
| za ním jsou basicové proměnné,
| pak následuje pracovní prostor a zásobník.
| 65535 – konec paměti
*----------------------------------------------
Do počítače se nejdříve nahrál krátký prográmek v BASICu, obvykle jeden řádek, který zajistil samotné nahrávání hry. To začalo od adresy 16384, nejprve se nahrála obrazovka a potom se plynule pokračovalo do zbytku paměti, stále v jednom bloku třeba až na její úplný konec, celých 48 KiB. To trvalo něco přes pět minut.