Commodore 64 II s disketovkou 1541-II aneb zaprášený klenot ze stodoly

4. 6. 2025
Doba čtení: 12 minut

Sdílet

Dnešní článek je spíše krátkou reportáží o nečekaném přírůstku do sbírky a jeho cestě ze stodoly až do vitríny. Jelikož se jedná o stejný hardware, který jsem zde již popisoval, budu se věnovat hlavně stavu nálezu.

Počítač ze stodoly

Co se dozvíte v článku
  1. Počítač ze stodoly
  2. Popis původního nálezu
  3. Hlubší pohled
  4. Čistění disketové mechaniky
  5. Čistění počítače
  6. Jde se na to
  7. Krásný kousek do sbírky

Moje sbírka se nečekaně rozšířila o další členy. Jednoho dne se ozval spolužák ze základní školy. Našel u nich ve stodole uskladněný starý počítač, který by jinak skončil na dvoře s elektroodpadem, nicméně si pamatoval z našeho posledního třídního setkání, že se věnuji právě sbírání této techniky, a místo cesty na sběrný dvůr mne kontaktoval, zda nemám o počítač zájem. Já samozřejmě měl, a ještě jednou bych chtěl touto cestou Romanovi poděkovat, že si na mne vzpomněl, a daroval další kus historického hardwaru.

Nějaké údaje o počítači jsem měl již ze zpráv, ale detaily jsem neznal, jen že je to Commodore 64. Po převzetí se ukázalo, že se jedná o Commodore 64 II (nebo také 64 C) a disketovou mechaniku 1541-II. Obé tedy již vlastním, a již mi prošly rukama jako renovační projekty (Série o Commodore 64 a Série o Commodore 1541). Před převzetím jsem trochu doufal, že se bude jednat o výchozí model C64 (původní Breadbox), který ještě nevlastním. Ale taková drobnost mi nemůže zkazit radost z nového počítače. Tak také vzniká tento článek. O zařízení jsem se již poměrně dost vypsal v původních projektech, tedy tento bude textově poměrně chudý a krátký, a bude se spíš jednat o fotodokumentaci cesty počítače ze stodoly ke sbírkovému kusu.

Ačkoli zařízení nalezená na takovýchto místech mohou působit na první pohled značně neutěšeně, hlavně díky množství prachu a všudypřítomným kouskům trávy, v realitě to mohou být dobře přeživší kusy. Jelikož stodoly často slouží k uskladnění sena, není žádoucí v takových místech vysoká vlhkost či dokonce voda, která je jedním z největších nepřátel uskladněné elektroniky. Prach a tráva se dá odstranit, koroze se zbavuje mnohem hůře. I proto jsem zvolil název „Barn find“, tedy stodolový nález, který se používá u podobně nalezených vozidel. Samozřejmě je to platné u používaných a udržovaných stodol. Ty zapomenuté, kde již zatéká, budou podobně špatné, jako mokrý sklep.

Popis původního nálezu

To mne přivádí k prvním obrázkům nových členů sbírky. Počítač samotný byl umístěný ve zbytku boxu, zde chyběl vrchní kartón a zbyl samotný polystyrén. Ten byl značně zašpiněný, na mnoha místech se drolil a jedna polovina je uprostřed proražena. Uvnitř kromě počítače byl originální zdroj a původní videokabel. Disketová mechanika byla také v boxu, zde nechyběl vrchní karton s potiskem, uvnitř chyběla jen vrchní polovina polystyrenové skořápky. Kromě mechaniky samotné byl v boxu opět originální zdroj a sériový kabel.

Původní stav kompletu, jak se mi dostal do rukou.

Původní stav kompletu, jak se mi dostal do rukou.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Samotný počítač C64 v původním stavu.

Samotný počítač C64 v původním stavu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Balení mechaniky 1541 v původním stavu.

Balení mechaniky 1541 v původním stavu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
C64 a C1541 v nálezovém stavu.

C64 a C1541 v nálezovém stavu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Tedy pokud jde o počítač, jedná se prakticky o kompletní obsah balení, až na manuály.

Hlubší pohled

Jako první jsem začal zkoumat boxy a polystyrény, ve kterých se mi dostaly do rukou. Box, ve kterém byla disketová mechanika byl sice vizuálně v nelichotivém stavu, ale strukturálně v pořádku, jen povolené lepidlo. Nebude se jednat o nějaký nádherný sbírkový box, ale jeho téměř kompletnost volá po zachování. Jiný příběh to byl s polystyrénem, ve kterém byl samotný počítač. Ten nejenom, že neměl vrchní kartón s potiskem, ale byl i ve velkém proražený skrz.

Při pokusu jej očistit jsem zjistil, že nejenom není možné z něj zašlou špínu dostat, ale že polystyrén se působením vnějších vlivů rozpadá již při letmém dotyku. To spolu s masivní neopravitelnou dírou znamenalo, že již nemá tento kus cenu zachovávat. Vizuálně toho měl již hodně za sebou, a všude kam se položil, tak zůstávaly ležet jeho kusy.

Jiný případ byl hardware samotný. Sice na první pohled značně zašpiněný, spousta prachu a zbytků sena, nicméně při důkladnějším pohledu se zdálo, že pod vrstvou špíny se schovávají jinak velmi zachovalé kusy. Navíc v kompletní sestavě, včetně originálních zdrojů a kabelů.

Jako vždy, zdroje vyčistím a zachovám, nicméně používat je nebudu. Na toto mám nový spínaný zdroj, a zdroje pro C64 jsou známé tím, že při poruše zničí často i počítač samotný. Pokud bych chtěl používat originální zdroj, pořídil bych si mezikus, který hlídá napětí, a v případě poruchy bezpečně odpojí počítač. Já to řešil zmíněným kompletním zdrojem.

Čistění disketové mechaniky

Jako první jsem si vzal do parády disketovou mechaniku, která je jednodušší na celkový servis. Očividně nebudu první, kdo viděl útroby, protože záruční samolepka na zadní straně je již přerušená. Aspoň mi odpadá starost o její zachování. Po rozmontování celé mechaniky, což je opravdu záležitostí pár křížových dobře dostupných šroubků, na mne vykoukl až překvapivě čistý vnitřek. Dovnitř napadalo naprosté minimum nepořádku. Také bylo na první pohled vidět, z jakého (aspoň jednoho) důvodu šla původní návštěva. Bylo tam očividně dodáno mazivo na zavírací mechanismus jednotky. To není neobvyklé, pokud nejde disk snadno zajistit/odjistit, bývá to nejčastější problém, že západka příliš drhne.

Detail zašpinění vrchního krytu mechaniky 1541.

Detail zašpinění vrchního krytu mechaniky 1541.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Stav po prvním otevření.

Stav po prvním otevření.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
A stav po odstranění samotné mechaniky.

A stav po odstranění samotné mechaniky.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Jinak vnitřek mechaniky stejný, jako u předchozího projektu, včetně zmíněné dopájené diody na drátku. Vnitřní komponenty stačilo ofoukat vzduchem, konektory vypláchnout sprejem na kontakty. Obnovil jsem i mazivo dráhy a zavíracího mechanismu, sice vše chodilo v pořádku, ale když už dělám repasi, tak kompletní.

Vnitřní komponenty tedy byly vcelku rychle připravené. Pak už jen po složení odzkoušet, to jsem nechtěl ještě před rozebráním, protože jsem nevěděl, kolik nepořádku mohlo být uvnitř.

Mezitím přišel čas na plastové části krytu, ty jako první dostaly vlahou koupel s kapkou jaru, abych odstranil špínu na povrchu a odmastil. Po důkladném dočištění, kdy někde se ten prach opravdu držel, se kryt posunul přímo do retrobrightingové lázně. Po dohromady zhruba 1,5denní koupeli různých částí zbývalo vše jen opláchnout, osušit, a ošetřit čistící pěnou. Dokumentaci procesu a rozdíl před/po můžete porovnat zde:

Prvotní čištění plastů krytu.

Prvotní čištění plastů krytu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Stav po základním vyčištění.

Stav po základním vyčištění.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Vyčištěné interní komponenty.

Vyčištěné interní komponenty.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Po kompletním procesu mohu konstatovat, že tohle je aktuálně nejhezčí kus hardwaru. Mechanika vypadá doslova jako nová, kryty jsou ve skvělém stavu bez škrábanců, i retrobrighting se velmi povedl, tentokrát jsem nešetřil peroxidem, který jsem i průběžně doléval, jakmile se přestaly objevovat bubliny na povrchu. Mám z toho vážně radost.

Samotné testování funkčnosti si nechávám až na konec, zatím ukládám.

Čistění počítače

Ohledně čistění počítače to bylo zpočátku trochu složitější, neboť pro retrobrighting mám zatím k dispozici pouze malý box, kam se vejde tak akorát tak ta disketová mechanika. Znamenalo si to tedy nejdřív vyrobit další ve větší velikosti. Šel jsem na to úplně stejným způsobem.

LED pásek se skutečnými UV diodami (tedy nejen imitující barvu), topítko stačí jedno, to si přehodím dle potřeby, trafo pro LED také, to mám na konektorech. K tomu plastový box dostatečné velikosti. Dávám opět dva do sebe, kdyby vnitřní praskl, ať to není všude.

Bližší pohled na počítač v původním stavu.

Bližší pohled na počítač v původním stavu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
A ještě jeden pohled na počítač v původním stavu.

A ještě jeden pohled na počítač v původním stavu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Stav desky elektroniky po prvotním otevření.

Stav desky elektroniky po prvotním otevření.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Detail na desku s navátým nepořádkem.

Detail na desku s navátým nepořádkem.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Čištění počítače začíná opět kompletní rozborkou, potřebuje oddělit veškeré plastové kryty od sebe, oddělit základní desku, z klávesnice vytahat všechny hmatníky, aby bylo možné jej jeden po druhém očistit. U tohoto modelu jdou naštěstí hmatníky oddělit snadno a šetrně jen rukou. Pod nimi se skrývá pružina, tu to chce u procesu nezdeformovat (a hlavně neztratit!). Pozor na to, že pod mezerníkem je pružina s jinou tuhostí.

Na vrchním krytu je ručně psaná lepená poznámka, ta přijde pryč, je třeba ji odstranit důkladně i se zbytky lepidla. Na odstranění samolepek se hodí nastříkat je klasickou WD40, která lepidlo rozpustí a jde snadno dolů. Nevýhoda je, že se také vše okolo umastí, je třeba pak důkladně odmastit. Druhá varianta je odstranit pomalu vše co jde ručně, a zbytky lepidla odstranit pomocí alkoholu. Také funkční, jen většinou více pracné. V tomto případě jsem zvolil pracnější metodu, neboť samolepka je hned nad mřížkováním, kam by mi „wédéčko“ zateklo, a musel bych odmašťovat i ze spár.

Detail na samolepku s rukou napsanými příkazy.

Detail na samolepku s rukou napsanými příkazy. Může mi někdo zběhlejší v programování v diskuzi osvětlit, k čemu tyto příkazy sloužily?

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Proces čistění již standardní. Desku elektroniky ofoukat stlačeným plynem, případně štětečkem dočistit usazeniny. Konektory opět potěšit řádnou dávkou spreje na kontakty. Nijak větší zásah k čistění nebyl třeba, byl tam pouze prach. Akorát se degradovalo lepidlo kontrolní samolepky, tu jsem pomocí oboustranné lepící pásky vrátil zpět.

Bázovou desku klávesnice také důkladně otřít pod hmatníky a odstranit prach ze spodní strany.

Detail na desku klávesnice v původním stavu.

Detail na desku klávesnice v původním stavu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Detail ihned po vyčištění.

Detail ihned po vyčištění.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Následuje cesta plastových dílů do koupele, tentokrát kvůli jejich velikosti rovnou do vany. Následovalo drhnutí pomocí jemného kartáčku, dokud nebylo vše usazené odstraněno. Už po usušení bylo vidět, že až na drobné škrábance na spodní části krytu a chybějícím dvěma gumovým nohám je kryt ve vynikajícím stavu.

Prvotní čištění plastů počítače C64.

Prvotní čištění plastů počítače C64.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Mezitím jsem měl připravenu novou větší lázeň a dostatek peroxidu.

Retrobrightingová lázeň krytu počítače.

Retrobrightingová lázeň krytu počítače.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Retrobrightingová lázeň kláves. Ty mají bohužel tendenci takto plavat.

Retrobrightingová lázeň kláves. Ty mají bohužel tendenci takto plavat.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

V případě klávesnice je třeba lázeň co chvíli promíchat, neboť klávesy se tak různě působením bublin nadzvedávají nad hladinu, tak aby účinek byl na všechny strany.

Výsledek je opět působivý, počítač vypadá jako nový, kryt je opravdu ve velmi působivě zachovalém stavu. Pak už jen zbývalo složit vše zpět dohromady, včetně klávesnice, což bývá ta nejvíc uspokojující práce, když vše do sebe zapadá.

Nejdřív tu máme očištěnou základní desku počítače:

Vyčištěná základní deska.

Vyčištěná základní deska.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Hmatníky:

Finální sušení kláves, které již budou připraveny k vrácení zpět.

Finální sušení kláves, které již budou připraveny k vrácení zpět.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Plasty:

Připravený spodní díl krytu, odstraněny dvě původní lepivé bílé přístrojové nohy a nahrazeny novými z průhledného materiálu.

Připravený spodní díl krytu, odstraněny dvě původní lepivé bílé přístrojové nohy a nahrazeny novými z průhledného materiálu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Vrchní díl krytu ve finální údržbě pěnou.

Vrchní díl krytu ve finální údržbě pěnou.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

A teď už jen složit:

Složené vnitřní komponenty počítače.

Složené vnitřní komponenty počítače.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Zkompletovaný počítač bez hmatníků kláves.

Zkompletovaný počítač bez hmatníků kláves.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Pěkně kousek po kousku...

Pěkně kousek po kousku…

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
A hotovo.

A hotovo.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Poslední drobností, která mi zbývala, bylo očištění napájecích zdrojů a kabelů. Ty budou uloženy a nepoužívány, neboť v ně nemám důvěru (opět není možné je bez poškození rozebrat).

Zdroj pro 1541 v původním stavu.

Zdroj pro 1541 v původním stavu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Zdroj pro C64 v původním stavu.

Zdroj pro C64 v původním stavu.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Množství špíny na kabelech bývá opravdu velké.

Množství špíny na kabelech bývá opravdu velké.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

A nakonec tu máme celou originální sestavu včetně kabeláže:

Kompletní set.

Kompletní set.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Jde se na to

No a zbývá ještě poslední věc: vše vyzkoušet. První přišel na řadu počítač, jen zapojit veškerou nutnou kabeláž a spustit. Během okamžiku se objevila známá plocha a počítač byl připraven k použití.

Nabootovaný počítač s vloženou cartridge.

Nabootovaný počítač s vloženou cartridge.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Druhá přišla na řadu mechanika, přepnout spínač, a ouha – kontrolky zůstaly svítit a byl slyšet zvuk neustále otáčejícího se pohonu plotny. To značí jediné – interní systém se korektně neinicializuje. Zkusil jsem základní diagnostiku, změřit napájení za přepínačem (který mě vypekl posledně), znovu prošel veškeré kontakty a přesadil čipy v paticích. Stále stejné chování.

Bohužel jsem neměl čas na důkladnější diagnostiku, ale otevírá se tu seznam vícero možností:

  1. Osobně se mi nezdají stále patice pro zmíněné čipy, i když jsem očistil nohy obou čipů, tak do patic zajíždějí stále s nepříjemně zadrhávajícím pocitem. Mohl by být špatný nějaký z kontaktů, to mám v plánu proměřit, na to stačí obyčejný multimetr. To by byla celkem rychlá a nenákladná oprava, jen vyměnit patice.
  2. Dle rychlého průzkumu internetu bývá tento problém způsoben vadným CPU, ROM pamětí, případně dalšími čipy, v tomto pořadí. Znamenalo by to sehnat nové čipy a vyměnit. To není nijak rentabilní, protože při rychlém prohledání internetu není zrovna přehršel nabídek, a hlavně třeba takové CPU se pohybuje mezi 500–600 Kč v přepočtu + 150–350 Kč doprava. Vzhledem k tomu, že jsem původní funkční mechaniku koupil za necelých 1500 Kč, je díl v ceně více než půl kompletní mechaniky příliš (a vadný nemusí být jen jeden čip, pokud došlo k přepětí ze strany zdroje).
  3. Zkombinovat mechaniky, které mám doma. Moje funkční mechanika má poškozený kryt a není v tak dobrém stavu. Tato má kryt v excelentním stavu, ale pokaženou elektroniku. Tedy bych vytvořil jeden perfektní kus, a druhý by zůstal jako zdroj dílů pro případnou opravu mechaniky původní, případně pokud bych se dostal k nějakým náhradním čipům, mohl bych později zprovoznit i tuto.

Minimálně ale aspoň můžeme porovnat před/po:

A poslední detail, stav krytu mechaniky 1541 jak se mi dostal do rukou, a poté, jak vypadá finální výsledek.

A poslední detail, stav krytu mechaniky 1541 jak se mi dostal do rukou, a poté, jak vypadá finální výsledek.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0

Každopádně funkční mechaniku mám, a není třeba to řešit ihned. Tedy jsem ještě k počítači připojil funkční FDD a vyzkoušel načíst hru, zda bude korektně fungovat i SID atp. Vše proběhlo zcela bez obtíží, včetně připojené cartridge, tedy počítač je v excelentním stavu, technicky i vizuálně. Zaujal tedy místo ve vitríně jako výstavní kus, a můj současný kus se odsunul do krabice do skladu. Nicméně mi bude sloužit jako „pracovní“ zařízení, už jen díky tomu, že jsem u něj provedl úpravu s posílením chlazení čipů, takže je lépe připraven pro náročné úkoly.

zabbix_tip

Krásný kousek do sbírky

Tím bych tento krátký projekt uzavřel, osud mechaniky rozhodnu, jakmile budu mít chvíli provést důkladnější diagnostiku, zda patice skutečně tvoří vodivé spojení všech pinů, a zda probíhá po sběrnici vůbec nějaký elektronický život.

Každopádně jsem velmi vděčný za nový kus hardwaru, hlavně v takto excelentním vizuálním stavu, a ještě jednou díky Romanovi, že na mne myslel, a neposlal vše zbytečně na likvidaci.

Herní test.

Herní test.

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Můj původní C64-II (nahoře) a aktuální projekt (dole).

Můj původní C64-II (nahoře) a aktuální projekt (dole).

Autor: Michal Tauchman, podle licence: CC BY-SA 4.0
Neutrální ikona do widgetu na odběr článků ze seriálů

Zajímá vás toto téma? Chcete se o něm dozvědět víc?

Objednejte si upozornění na nově vydané články do vašeho mailu. Žádný článek vám tak neuteče.


Autor článku

Nadšenec do IT technologií současných i minulých.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }