Sunday, September 18, 2016

Notebook Floppy

Na doske NCD85 sú diery na montáž 3.5" floppy mechaniky. Na vyskúšanie je to OK. Na montáž 2x mechaník už nie tak celkom. Videl som to na Foreveri a dve mechaniky na sebe už sú teda dosť vysoké a aj ťažké, čo nie len že nelahodí oku, ale aj zaťažuje plošák.

Mal som doma zopár nevyužitých mechaník z notebookov 386/486. Notebookové mechaniky vyrábalo viac výrobcov. V priebehu času sa znižovali z 2/3 výšky bežnej až na polovičnú výšku. Konektory na pripojenie boli tiež rôzne, s rôznym počom pinov a s rozdielnym rozostupom. Väčšinou už využívali FFC/FPC konektor na vodivý pásik. Posledné mechaniky už boli všetky polovičnej výšky, a s konektorom 26-pin FFC/FPC s dosť štandardizovaným pinoutom. Preto som ich chcel vyskúšať pripojiť na NCD85. NCD85 má klasický konektor 34pin na ribbon kábel s IDC konektormi.

Na rozdiel od 5.25" mechaník sa výrobcovia pri niektorých 3.5" vrátili ku signálom, aké boli bežné pri 8" mechanikách. Znova začali implementovať signály DSKCHG, READY a podobne. V prípade mechaník TEAC FD-05HG je pridaná aj voľba otáčok. V 2.0MB móde je to štandardných 300rpm. V móde 1.6MB je to 360rpm. Toto je mód, kedy je mechanika voči radiču na nerozpoznanie od 5.25" 1.2M HD mechaniky a samozrejme aj od 8" DS/DD mechaniky. Navyše na rozdiel od 5.25" máme aj READY a ďalšie 8" signály. Tieto mechaniky sa okrem iného nachádzajú v kombinovaných čítačkách kariet s floppy mechanikou do štandardnej pozície 3.5" v PC. Možno sú aj v niektorých externých USB 3.5" mechanikách.

Navrhol som doštičku 4x5 cm s jedným IDC 34-pin konektorom a dvomi 26-pin FFC/FPC konektormi na pripojenie dvoch 26-pin mechaník. Ešte som pridal na dosku aj konektor pre +5V napájanie a dve LED a dva jumpre. LED slúžia na indikáciu signálov DISK CHANGE a READY. Jeden jumper umožňuje voľby pripojenia jedného z týchto dvoch signálov (alebo žiadneho) na pin 34. Druhý jumper umožňuje prepínať na mód 1.6MB kedy sú otáčky 360rpm.


Dve mechaniky majú výšku jednej :-)

Pripájajú sa dvomi FFC 26pin/1mm pásikmi. Tu treba dávať pozor, keď sú pásiky invertované (na protiľahlých koncoch majú vodivé plôšky na opačných stranách), je treba použiť konektory s top kontaktom - platí pre moje TEAC FD-05HG. Existujú aj konektory s bottom kontaktom.


Ozaj je to mini. Jednej mechanike chýba čelný rámik.

Plošný spoj 4 x 5cm. Zopár ich môžem poskytnúť. Známym len za poštovné. Mám naviac aj konektory a pásiky.

Pri prepnutí do módu 1.6MB dostaneme kompatibilnú radu 8", 5.25" a 3.5" mechaník, kde je možné bez zmeny používať ten istý fyzický layout sektorov na diskete. Z pohľadu radiča sa javia všetky ako klasika IBM 8" 53FD / Shugart 850. Niekorí výrobcovia software dodávali na všetkých troch médiach ten istý obraz systému :-)

Saturday, May 21, 2016

Authentic terminál CGA

80 znakový terminál bol krvý krok. Lenže ja som miloval PC/XT s CGA kartou a chcel som mať terminál, ktorý vyzerá rovnako. No a chcel som sa aj pohrať s PIC32MX. Takže som vyextrahoval font 8x8 z CGA ROM, pomenil framebuffer, upravil časovanie, pohral som sa s PLL a deličkami a podarilo sa. Prikladám foto obrazovky z CP/M s PC/XT CGA lookom. Stačí si upgradnuť firmware v ASCII termináli a užívať si nový retro vzhľad. Krásne je vidno riedke riadkovanie (192 viditeľných riadkov), typický to znak CGA. Keď už som mal CGA font, tak som to dotiahol do konca. Teraz je aj kurzor hrubý cez dva riadky a bliká rýchlejšie, tak ako na CGA, ale to na foto už nie je vidno.


Nový firmware je na starej adrese stále tu
VGA rozhranie terminálu s PC lookom je tiež možné, ale nie s 8MHz kryštálom a teda bez úpravy hardware ASCII Terminálu.

Wednesday, May 4, 2016

Authentic terminál

Kedysi v časoch domácich 8-bitových počítačov bolo znakom tých domácich to, že mali malý (to je krása slovenčiny) počet znakov na riadok obrazovky. To preto, lebo CRT televízory PAL, ani nehovorím o USA (v tomto smere vždy troška zaostalejších) a ich NTSC umožňovali čitateľné zobrazenie len niečo viac ako 40 znakov. Profesionálne počítače odlišovalo to, že zobrazili 80 znakov, čo bola podmienka, aby sa dala zobraziť celá šírka riadku ako na výstupe tlačiarne. Už prvé PC vedeli 80 znakov, takže boli profi. Môj úplne prvý počítač bol profi. PP-06 s CGA kartou vedelo 80 znakov. Samozrejme nie na televízii, ale monitore. Mal som zelenučký monitor. Bol vykuchaný z ASCII terminálu SMEP, a teda bez krytov, ale prehodený obrus cez kovové profily a zmes dosiek a káblov to spravili. Bol som profi. CP/M bolo samozrejme tiež profi, predpokladalo 80 znakov.

PC so zelenou obrazovkou bola klasika. V školách sa tiež vyskytovala, ale bez obrusu a s ozajstnými monitormi. Dnes sa v rámci zmenšovania pripájame z notebookov cez HyperTerminál, prípadne TeraTerm. Ale CP/M klasika profi by bola s vyšívaným obrusom :-) OK, stačí aj bez obrusu ale so zeleným prípadne jantárovým monitorom s dlhým dosvitom.

Takže keď som objavil Geoff ASCII Terminál vyskúšal som. Je založený na kóde z knižky Programming PIC32. Zobrazovanie, USB, emuláciu VT100 aj sériový adaptér obsluhuje jeden 40MHz 28-pinový DIP chrobák. Na vykresľovanie obrazu využíva periférie. SPI na serializáciu a DMA na prenos riadku z RAM do SPI. Synchronizačné pulzy o presnej dĺžke má na starosti tretia periféria Output Compare. Back porch interval je dosiahnutý zreťazenými DMA. Najskôr v BACK porch intervale sa prenášajú nuly a po dokončení prenosu, sa reťazovo odpáli druhé DMA, ktoré už prenáša dáta z buffra. SPI je spúšťané v tzv. framed móde, vzostupnou hranou synchronizačného pulzu. Čiže všetko pekne pospájané hardwarowo, CPU sa v podstate fláka, má na starosti len emuláciu VT100 a zápis znakov do video buffra. Originál Geoffova verzia ale nevie 80 znakov ani 24 riadkov pri výstupe na composit video. Počíta sa s pripojením na TV.

Ja mám starý Philips analógový monitor s compozit vstupom. Hravo zvláda veľa znakov na riadok. Tak ma napadlo využiť ho ako zobrazovač pre Geoffov ASCII Terminál. Takto profi to vyzerá. Firmware v PIC32 som upravil na 80 znakov, 24 riadkov. Font som upravil kozmeticky približne ako na VT100. Rozmery sú 6x12. Rozlíšenie je 480x264. Časovanie spĺňa PAL štandard. Monitor sa v pohode zosynchronizuje.

Philips so zeleným fosforom


Ako vždy je tu nejaký zádrhel. HyperTerminál na WIN7 64 sa nechce pripojiť na virtuálny sériový port cez USB. Ale TeraTerm bez problémov. Skúšal som aj WinXP 32bit, aj Win2000, nikde ten PIC32 nefunguje s HyperTerminálom.

Tera Term s farbičkou jantáru


Samotná doštička ASCII Terminálu má tiež vstup na klávesnicu. Pri aktívnom TeraTerme na Windows cez USB a zapojenej druhej klávesnici v ASCII Termináli tak vznikajú pomerne šialené kombinácie dvoch klávesníc a dvoch obrazoviek. Dá sa písať naraz na obidvoch klávesniciach a text sa samozrejme zobrazuje naraz v jantárovom PC Tera Terme a aj na profi zelenej obrazovke.

Knižka aj upravený firmvare pre 80 znakov VT100 je na stiahnutie tu. Updatuje sa podľa manuálu na Geoffovej stránke, ako pri upgrade na verziu 1.3. Návrat z VT100 na V1.3 je samozrejme kedykoľvek možný.

Skúšal som tam nahodiť font z CGA karty. CGA má font o rozmeroch 8x8. PC-CGA look by sa mi celkom páčil :-) Lenže treba upraviť riadok na 640 pixelov a znížiť počet riadkov. Vychádza to na NTSC časovanie. Treba zrýchliť SPI a tu už narážam na možnosti deličiek, frekvencie kryštálu, PLL a podobných problémov. Je to zatiaľ nedokonalé, riadok končí v 3/4 obrazovky. Písmenká su moc úzke. Pracujem na tom (možno) podľa chuti.

Dalo by sa aj viacej farieb, kedže PIC32 má 4 SPI kanály. Všetky štyri sa dajú odpáliť naraz vo framed móde. Colormite využíva tri a má osem farieb. Ale na to treba viac pinov a viac RAM ako má 28-pinový drobček.

Wednesday, April 27, 2016

Floppy Types

Kedysi sa používali 8 palcové diskety a mali kapacitu cca 80kB. Kódovanie dát bolo FM, prípadne GCR, prípadne niečo iné. Preskočme úplný pravek a poďme do dôb našeho mládí. PMD85 diskety nemalo. ATARI 800XL malo 5.25 palcovú disketu o kapacite 80kB. V ATARI ST a AMIGE sa používali DD 720kB diskety. Mali rozmer 3.5". Vtedy sa už prechádzalo na MFM kódovanie. Občas sa požívali aj v PC. Ale väčšina PC diskiet bola HD s kapacitou 1.44MB. Vysvetlím čo je DD a HD, počet stôp a čo ovplyvňujú otáčky. Vysvetlím aj prečo je rozdiel medzi 5.25" 720kB disketami v DD a HD mechanike.

RozmerHustotaStopySektoryKapacitaOtáčkykbps
5.25"DD409360kB300250
5.25"HD80151.2MB360500
3.5"DD809720kB300250
3.5"HD80181.44MB300500

Počet sektorov platí pre PC. Sektory mali veľkosť 512 byte.

Zaujímavé sú stĺpce sektory, otáčky a kbps (bits per second). Porovnaním 1 alebo 3 so 4 riadkom tabuľky vidno, že počet sektorov je dvojnásobný, preto je aj dvojnásobná bit rate. Porovnaním 1 a 2 riadku tabuľky vidno, že počet sektorov nie je dvojnásobný. 15/9 nie je 2. Ale je vyššia rýchlosť otáčania. Výpočtom (15/9) x (360/300) dostaneme 2. Preto je aj hodnota bit rate 500kps v druhom riadku správna.

Niektoré 8" diskety sú označené SD. Znamená to single density. V podstate to označenie nemá význam. Pretože hovorí len to, že disketa je vhodná pre zápis kódovaním FM (360rpm, 26 sektorov, veľkosť sektora 128 byte), bit rate 250kbps. DD znamená double density. Odvodené je to od prechodu z FM na MFM kódovanie. Prechodom na MFM (elimináciou clock pulzov) je pri tej istej frekvencii záznamu/hustote magnetických prechodov zdvojnásobená hustota informácie/kapacita a tým aj bit rate. Pri 8" to znamenalo 500kps a dvakrát vyššiu kapacitu (26 sektorov po 256 byte). Kedže bolá tá istá frekvencia, tak aj materiál diskiet ostal rovnaký. Len sa začali označovať ako DD a predávali sa drahšie :-)

Späť ku menším rozmerom 5.25" a 3.5". Počet sektorov je tu nižší, bit rate polovičné. Už sa používalo iba MFM. DD diskety boli základné. Umožňovali pri určitej rýchlosti povrchu média (300rpm a menší priemer 5.25" vs 360rpm a priemer 8")bit rate 250kbps. HD(high density) pri tej istej rýchlosti média 500kbps. (riadky tabuľky 2,4) Keď zvýšime otáčky, musíme ubrať počet sektorov. To je prípad riadku 2. Pri vyššej kontaktnej rýchlosti hláv, sú nižšie nároky na kvalitu média. Vyššiu hustotu záznamu HD umožňuje vyššia koercivita média a kvalitnejšie hlavy schopné vyššieho prúdu zápisu a tým silnejšieho magnetického poľa. (pamätá si ešte niekto na Metal kazety Type IV? max 22000Hz)(R2R dosiahol 30000Hz aj na normálkach páskach, ale rýchlost 38cm/s)

Koercivita floppy diskiet:
8" all formats: 300 oersteds
5.25" double density (360 KB): 300 oersteds
5.25" quad density (720 KB): 300 oersteds
5.25" high density (1.2 MB): 600 oersteds

3.5" double density (720 KB): 665 oersteds
3.5" high density (1.44 MB): 720 oersteds
3.5" extra-high density (2.88 MB): 900 or 1200 oersteds (unconfirmed)

Mechaniky 3.5" majú vždy 300rpm. Sektorov je buď 9 pri DD, alebo 18 pri HD. Bit rate 250kbps pri DD a 500kbps pri HD.

Mechaniky 5.25" sa otáčajú ako ktorá, ako kedy. DD majú 300rpm. HD majú 360rpm. Ale je tu ale. Niektoré HD sa dajú naswitchovať aj na 300rpm. Prípadne ešte lepšie, niektoré sa dajú naswitchovať inteligentne, aby pre HD diskety (DENSEL signál) mali 360rpm a pre DD diskety mali 300rpm. Ale to nie je štandard. Vždy treba čítať manuál ku konkrétnemu typu mechaniky.

Čo sa stane ak vložíme do 5.25" HD mechaniky DD disketu? V CP/M sa využije 80 tracks/stôp a teda budeme mať pekných 720kB kapacitu (to je tá quad density). Kedže ale HD mechaniky majú otáčky 360rpm, rýchlosť prenosu nebude 250kbps, ale 300kbps. Preto je potrebné mať v BIOS rozdielne parametre pre 720kB v DD alebo HD mechanike. Existujú aj špeciálne 5.25" DD mechaniky s 80 stopami a 300rpm. Napríklad TEAC FD-55F. Pri nej by bola bit rate štandardných 250kpbs a kapacita 720kB. Takže tá istá disketa môže mať rôzne bit rates, podľa toho ako rýchlo sa v mechanike otáča.

Tuesday, April 26, 2016

CP/M BIOS FDD + PMD32SD

CP/M na NCB85 funguje buď s PMD32SD, alebo s disketovými mechanikami, alebo s obidvomi. Osobne mám rád buď jedno alebo druhé. Driver pre každé zariadenie zaberá zbytočné miesto v RAM. Pre PMD32SD stačí nahrať na SD kartu správny obraz a CP/M nabootuje z SD karty. Pre samotné diskety je BIOS tak malý, že sa zmestí aj s CP/M do jednej EPROM a odtiaľ aj nabootuje. Problém je, že je potrebné mať pracovnú disketu CP/M.

Disketu si je možné naformátovať programom FDC.COM. To sa dá aj vtedy ak CP/M nabootuje z PMD32SD s BIOSom pre PMD32SD. Keď potom prejdeme na BIOS iba pre disketovky, tak CP/M nabehne z EPROM a prečíta obsah adresára na diskete. Funguje. CP/M je perfektne spokojné s čistučkou naformátovanou disketou. Ale je tu problém. Pretože disketa je prázdna. Okrem zabudovaných príkazov dir, type, ren, save by nič iné nebolo k dispozícii. Je potrebné dostať na disketu aspoň XMODEM. Pomocou XMODEM už je možné potom preniesť z PC na disketu čokoľvek. Aj CP/M programy ako ASM.COM, DDT.COM, PIP.COM, STAT.COM atď. A samozrejme aj vlastné programy, hry, compilátory, editory, WordStar, BASIC atď.

Lenže ako dostať na disketu ten XMODEM? Pripravil som "quick and dirty" BIOS pre rýchle odskúšanie floppy a prípravu naformátovaných disket. Bootuje z SD karty. Podporuje štyri typy diskiet. Pri boote vypíše menu.


Voľbou čísla sa nastaví typ disketovky. Tento BIOS je veľký. Moc sa mi nechcelo sa s tým hrať a preto obsahuje tabuľky pre všetky štyri typy. Napísal som ho ozaj len na nevyhnutné vytvorenie štartovacej diskety. Dalo by sa to ofajčiť placeholder tabuľkou pre jeden typ a dohratím správnych dát zvoleného typu z EPROM po voľbe.

Takže to zhrniem. Je treba nakopíropvať na SD kartu dodaný image. Potom pripojiť PMD32SD a aspoň jednu disketovú mechaniku. Nabootovať z PMD32SD, zvoliť správny typ diskety. Spustiť FDC. Naformátovať disketu, spustiť kontrolné čítanie. Ukončiť FDC. Prekopírovať na disketu XMODEM (XM5.COM a XM5V2.COM). XM5 používa sériový port 8251, XM5V2 sériový port 16552.

Vypnúť NCB85. Odpojiť PMD32SD. Dať pripravenú disketu do prvej mechaniky. Dať do NCB85 EPROM s BIOSom pre vybraný typ diskety. BIOS pre FDD je na github vo verzii 2.2

Potom sa už dá nabootovať bez PMD32SD z diskety a cez XMODEM dohrať zvyšné programy. Cez FDC si naformátovať ďalšie diskety. Prekopírovať na ne obsah už zaplnenej. Atď.

"quick and dirty" BIOS je na stiahnutie tu/tady aj s obrazom pre PMD32SD.

Typ 1 je pre 5.25" DD diskety 720kB v HD mechanike. Teda niečo čo v PC možné nebolo. V CP/M sa využije 80 tracks/stôp a tak budeme mať pekných 720kB kapacitu. Takto je možné využívať DD diskety (a dokonca výhodnejšie s dvojnásobnou kapacitou) aj vtedy ak sú k dispozícii iba HD mechaniky.

Na github je aj starší BIOS, ktorý podporuje naraz PMD32SD a jeden typ diskiet. Typ diskety sa musí voliť v kóde a skompilovať do HEX. Tento BIOS je úspornejší a nezaberá toľko miesta, pretože má iba tabuľku pre jeden typ diskiet.

Sunday, February 14, 2016

Programátor GAL22V10 za 3,- EUR

Mám čínsky programátor TL866, s ktorým som spokojný. Za tú cenu.. V zozname podporovaných obvodov má samozrejme aj GAL16V8, 20V8 a 22V10. A tak, keď mi Radek Suk ponúkal dosku na GalBlast programátor som s vďakou odmietol. To sa ukázalo ako chyba. Pretože TL866 v pohode programuje obvody 22V10 v PLCC puzdre, ale s DIL verziou si neporadí. Nerozumiem tomu. Skúšal som kúpiť GAL od troch rôznych predajcov a všetky sa správali rovnako. GAL16V8 by podľa správ z fóra mali fungovať v poriadku. Lenže GAL22V10 sú z Číny najlacnejšie.

Našiel som túto stránku http://www.bhabbott.net.nz/atfblast.html a uvedomil si, že mám v šuflíku ZIF24, konektor na DB25 ešte zo socíkovských čias a lacnú univerzálnu dosku. Pridal som KC508, BC177 a ešte nejaké odpory a jediné čo som musel kúpiť boli rezistorové siete 4k7. Po pár hodinách letovania som to premeral, opravil chyby a išlo sa na vec.



Pripojil som ho na ThinkPad600 s WIN98. Funguje skvele, akurát verify hlási chybu pri asi polovici obvodov. Ale nevyhodil som ich. Vŕtalo mi to v hlave, pretože Martin mi kedysi skúšal zopár tých obvodov a všetky fungovali. Tak ma na druhý deň napadlo, skúsiť tie akože vadné na skúšku prečítať v TL866. A všetky boli OK. Následne som ich skúsil v NCD85 a fungovali. Takže programovanie na GALBLAST prípravku a verifikácia na TL866 je tá správna kombinácia :-) Všimol som si, že pri spätnom čítaní je vo výsledku viac jednotiek ako má byť. A v GALBLAST boli originál pull up odpory 10k. Tak to bude asi tým. S 10k by to mohlo šlapať bez chyby.

Prekreslil som to aj do CADu a navrhol miniatúrny plošák 4,9x6,6cm. Dal som 2xLM317 + 7805. Tak sa dajú napätia na 12V a 14,5V doregulovať. Napájať sa to dá univerzálnym adaptérom 18-30V. Ak by sa našiel dostatok záujemcov, tak by som pár dosiek mohol dať vyrobiť, alebo poskytnúť podklady. Cena v Seedstudio by bola 15,90USD za 5 dosiek alebo 18,90 za 10. Plus poštovné atď .. Zatiaľ mi stačí aj to čo mám.

Monday, January 25, 2016

NCD85 4. MUART 8256 - 8080 Interrupts

Odskúšané, famózné, úžasné, ono to fakt funguje. 8256 dokáže spracovávať INTA signál a v správnom okamihu poslať na zbernicu patričnú RST inštrukciu. Paráda. Na skúšku som spustil 16-bitový timer T24, nastavil mu 1ms takt, 5000 ako začiatočnú hodnotu a bum. Po 5s sa vyvolalo prerušenie RST 6, blikla INTA LEDka a spustila rutina na obsluhu prerušenia. V nej je potrebné znova nastaviť timeout a v mask registri zase povoliť prerušenie od T24. To preto lebo prerušenia od timerov v 8256 sú iba jednorázové, hneď sa vypne príslušný bit v mask registri, aby nedochádzalo k opakovanému spúšťaniu. Ďalšia podivná vec je, že timer dopočíta do nuly a potom pretečie a ide od FFFF .. preto treba nastaviť aj novú začiatočnú hodnotu timeoutu.

Krásne to bliká, pretože na kratulinký signál INTA je pripojená "predlžovačka" impulzov 74123. Takže v takte 5s na mňa pomrkáva LEDka. Vyskúšal som aj prerušenie od sériového portu. Podľa očakávania, pri príjme znaku sa vyvolá príslušná rutina RST 4 a samozrejme blikne INTA LEDka.

Updatol som fotky v blogu o NCD85 1. Floppy radič, teraz sú už s takmer plne osadeným NCD85.

Pri ladení a testovaní prerušení som objavil chybu popisky na NCD. Popiska pri JUM4 je naopak, v polohe RST7.5 je v skutočnosti INT a naopak. Doplnil som to aj v blogu o NCD. Uvedomil som si ešte jeden zádrhel s konfliktným pripojením INTA signálu do PCF8584.

PCF8584 totižto tiež vie prerušovať a generovať RST inštrukciu. Zatiaľ to ani najmenej nevadí, pretože PCF používam ako I2C bus mastera a v polling režime. Ale ak by som niekedy chcel aby PCF8584 fungovalo aj ako slave (zatiaľ nechcem, napadá ma iba jedno jediné praktické využitie), tak by bolo vhodné aby pri oslovení iným masterom vyvolalo prerušenie CPU. Ak by niekto mal iba PCF8584 bez osadenej 8256, tak nie je žiadny problém. Jumper JUM3 sa nastaví na PCF (popiska INT). PCF pošle žiadosť o prerušenie a pri signále INTA vygeneruje RST 0 a všetko funguje ako má.

Ale pri osadení obidvoch obvodov PCF8584 aj 8256, sa musí kaskádovať prerušenie z PCF do vstupu EXTINT na 8256. Jumper JUM3 sa prehodí na polohu 8256. Vtedy je signál INT z PCF vedený do EXTINT vstupu 8256. Následne 8256 vygeneruje signál INT ktorý je pripojený na vstup CPU. A pri prijatí prerušenia na CPU by chceli obidvaja reagovať na signál INTA. A to by bol konflikt. Pri signále INTA som na jumper nemyslel. Tak sa asi bude musieť preškriabnuť INTA do PCFka .. a v software sa pollne interrupt register 8256, aby sa detektlo že ide o externý interrupt z PCFka. Vstup INTA na PCF mal ísť na jumper a mal sa dať voliť medzi VCC a signálom INTA z CPU.