Mini Expander (FD1771 HW emulace + 4 disky)


Video Genie System EG3003 EACA International

Karta verne emuluje puvodni Expander EG3014 vcetne disketovych mechanik pro pocitace Video Genie System EG3003 (EACA) nebo System 80 (Dick Smith). Oba pocitace jsou klony legendarniho pocitace TRS-80 (Tandy Corporation - Radio Shack).

Hlavni motivaci vzniku teto karty bylo umoznit plnohodnotne a komfortni studium vyvoje a schopnosti puvodnich diskovych operacnich systemu techto pocitacu a to od jejich samotneho prvopocatku. Pro tyto legendarni osobni pocitace vzniklo uz v dobe konce 70 a pocatkem 80 let nekolik diskovych operacnich systemu a velke mnozstvi programoveho vybaveni. I kdyz existuje mnoho skvelych softwarovych emulatoru techto pocitacu, nejde jimi nahradit zazitek a zkusenosti pri praci na skutecnem pocitaci (opravdu vim co pisi). Bez Expanderu (primarne diskoveho radice) a disketovych mechanik to opravdu nejde a nejenom proto vznikla tato alternativni karta.

Cilem tedy bylo vyvinout pokud mozno malou dobovou rozsirujici kartu, ktera bude verne a spolehlive emuluvat na hardwarove urovni Expander vcetne k nemu pripojenych disketovych mechanik.

Zakladni funkci teto karty jsou:


System 80 Dick Smith Electronics TRS-80 Tandy Corporation

HW emulation FD1771


Vývoj, výroba a prodej příslušenství, rozšiřujících karet a doplňkových periferií

Puvodni Expander byl osazen jednim z prvnich cipu od Western Digital a to FD1771. Tento cip mel implementovany nektere funkce (vlastnosti), ktere se v pozdejsich radicich uz neobjevovaly, proto jej bylo tezke v budoucnu jednoduse nahradit. Nase karta si klade za cil plnou emulaci na logicke (sektorove) urovni, tak aby bylo dasazeno potrebne kompatibility.

Naopak na strane disketove mechaniky emulovaneho FD1771 je implementovano rozhrani pro pametove cipy ROM/RAM nahrazujici stare diskety. Na prvni pohled by se mohlo zdat, ze jde o ROM/RAM disk, ale ve skutecnosti je to mnohem slozitejsi. Fyzickou zaznamovou magnetickou vrstvu sice nemame a tudiz se o ni nemusime starat, na druhou stranu nam tato vrstva pro spravnou funkci radice chybi.

Ve vysledku byly implementovany vsechny povely (funkce puvodniho radice) mimo "Read Address", "Read Track", "Write Track". Tyto funkce se primarne vyuzivaji pro fyzicke formatovani a nizkourovnove kopirovani disket, coz v nasem pripade neni zajimave. Primarni kompatibilita je overovana na hlavnich diskovych operacnich systemech TRSDOS 2.3, NEWDOS/80 2.0 a LDOS 5.3.1 ve verzich urcenych pro Model I.

Samozrejme ze funguji i programy s primym pristupem na radic, jenom nesmi vyuzivat vyse uvedene 3 nizkourovnove prikazy.

Realizace disket v podobe ROM/RAM pametovych cipu


Karta ma dve 40 pinove patice s tzv. nulovou silou vlozeni (vybavene packou). Ty jsou urceny pro ROM (EPROM) cipove disky, tedy trvale Read Only. Patice jsou urceny pouze pro obvody v pouzdrech DIL32 a osazuji se cipy o velikosti 128, 256 a 512 kB (napriklad 27100, 272001, 274001). Cipove disky (pamet) lze vymenovat za provozu, musi se jenom pockat, az se nebude cist nebo zapisovat na zadne disky (aktivita je videt na osazenych signalizacnich LED).

Dalsi dve standardni patice jsou urceny pro trvale zalohovanou RAM (SRAM) a jsou standardne vybaveny obvodem (cipem) o kapacite 512 kB. Interni instalovana baterie vydrzi s timto zapojenim minimalne 10 let, ale v nasich jinych resenich tyto baterie funguji jiz pres 30 let a stale maji dostatek energie a napeti na zalohovani podobnych pameti SRAM. Tyto baterie nas pravdepodobne preziji. Dulezity je obvod kolem teto pameti, ktery zarucuje vysokou odolnost a ochranu obsahu pri nahlych zmenach napeti (typicky zapnuti a nenadale vypnuti). Pokud napriklad zapisujete a dojde k vypadku napajeni, pak se pri nejhorsim zapisy nedokonci a v neznamem stavu zustane pouze aktualne zapisovany byt. Bez tohoto obvodu vedlo opakovane testovani s prerusovanym napajenim pri aktualnim zapisu k obcasnemu nahodnemu prepsani jinych bajtu, i kdyz s velmi nizkou pravdepodobnosti. Po dokonceni zapojeni obvodu uz nedoslo behem opakovanych testu k zadnemu nahodnemu prepsani.

Kazde fyzicke pozici (pameti) lze nastavit (jumperem):

ROM/RAM cip disky maji svou geometrii (format) dany zapojenim a nastavenim jumperu, ale jejich maximalni velikosti jsou:

Maximalni celkova kapacita diskety je 16 x 256 x 128 (nebo 32 x 256 x 64), tedy 524 288 kB. Realna kapacita je dana zvolenou geometrii danou primarne DOS, takze pri 10 sektorech po 256 bytech a pri 80 stopach je to 204 800 kB. Optimalni je tedy volit format s 16 sektory na stopu a stranu. Ale i v pripade mene efektivni geometrie bude mozne nevyuzite sektory vyuzit (pripravujeme priklady a utilitu).

Volba geometrie pro velke formaty disket


S ohledem na prenositelnost emulovanych disket mezi jednotlivymi DOS (primarne mam na mysli NEWDOS/80 verze 2.0 a LDOS verze 5.3.1.) je optimalni volit velky format pouze s 15 sektory na stopu a stranu. Sice nevyuzijeme vsech 16 sektoru, ale tato volba umoznuje zvolit velikost alokacni jednotky 5 sektoru na GRANULE, coz je standardem pro NEWDOS/80. LDOS ma sice volitelnou velikost GRANULE, tak by bylo mozne vyuzit vsech 16 sektoru na stopu a stranu, ale zase ma omezeni na maximalne 96 stop. Navic pri velikosti 8 sektoru na GRANULE tento format uz v NEWDOS/80 urcite neprecteme.

S ohledem na vyuzitelnost maximalni kapacity diskety a pri kompatibilni volbe 5 sektoru na GRANULE jsou vhodne tyto tri velke formaty disket:

  1. pro jednostrannou disketu:
    • 256 bytu na sektor
    • 15 sektoru na stopu
    • 96 stop
    • kapacita 256*15*96 = 368 640 kB
    • celkova dostupna kapacita pri osazeni vsech 4 jednostrannych disket je: 4x 368 640 = 1 474 560 kB
      (jednostranny format umoznuje vyuzit vsechny 4 mechaniky)

    Dale oznacuji jako: SSDD-96 (podporuje NEWDOS/80 a LDOS)


NEWDOS/80 : PDRIVE,0,x,TI=C,TD=G,TC=96,SPT=15,TSR=3,GPL=3,DDSL=17,DDGA=3
LDOS 5:3.1: DCT <- C3 FB 45 07 0x FF 5F 0E 44 11
						(x - valid drive number)


  1. pro jednostrannou disketu:
    • 256 bytu na sektor
    • 15 sektoru na stopu
    • 128 stop
    • kapacita 256*15*128 = 491 520 kB
    • celkova dostupna kapacita pri osazeni vsech 4 jednostrannych disket je: 4x 491 520 = 1 966 080 kB
      (jednostranny format umoznuje vyuzit vsechny 4 mechaniky)

    Dale oznacuji jako: SSDD-128 (podporuje NEWDOS/80)


NEWDOS/80 : PDRIVE,0,x,TI=C,TD=G,TC=128,SPT=15,TSR=3,GPL=3,DDSL=17,DDGA=3
LDOS 5:3.1: DCT (does not support)
						(x - valid drive number)


  1. pro oboustrannou disketu:
    • 256 bytu na sektor
    • 30 sektoru na stopu (15 sektoru na jednu stranu)
    • 64 stop
    • kapacita: 256*15*64*2 = 491 520 kB
    • celkova dostupna kapacita pri osazeni vsech 3 oboustrannych disket je: 3x 491 520 = 1 474 560 kB
      (oboustranny format umoznuje vyuzit maximalne 3 mechaniky, nebot signal pro volbu 4 mechaniky se vyuziva pro vyber stran)

    Dale oznacuji jako: DSDD-64 (podporuje NEWDOS/80 a LDOS)


NEWDOS/80 : PDRIVE,0,x,TI=C,TD=G,TC=64,SPT=30,TSR=3,GPL=6,DDSL=17,DDGA=6
LDOS 5:3.1: DCT <- C3 FB 45 47 6x FF 3F 0E 44 11
						(x - valid drive number)

Proc tedy uvazovat o oboustrannych disketach, kdyz celkova vyuzitelna kapacita pri osazeni 3 jednotek je nizsi nebo stejna? Samozrejme krome duvodu vlastniho studia moznosti jednotlivych DOS je tu i jeden prakticky duvod a to je velikost adresare, presneji maximalni pocet souboru na diskete. Adresar techto starych disket je standardne vzdy ulozen na 17 stope a maximalni pocet souboru na diskete je: (pocet sektoru na jednu stopu - 2) * 8. Jedna adresarova polozka zabira 32 bytu, proto se na jeden sektor vejde 256/32 = 8 zaznamu. A proc je pocet sektoru -2? Prvni sektor obsahuje vzdy GAT tabulku (Granule Allocation Table) a druhy sektor HIT tabulku (Hash Index Table) a pro vlastni adresar se pouziji zbyvajici sektory na stope.

O formatu disket na logicke (sektorove) urovni pro jednotlive DOS budu podrobneji psat pozdeji. V tuto chvili jeste ale prozradim, ze pro SSDD a DSDD diskety s 15 sektory na stopu a stranu, je pro dosazeni plne kompatibility mezi NEWDOS/80 a LDOS nutny zapis 1 bajtu do sektoru s HIT tabulkou (adresa 1FH v ramci sektoru), ktery pri kontrole utilitou dircheck ze strany LDOSu je oznacen jako chybny. Neni se ale ceho bat, opravdu to nicemu nebude vadit (pouze se nam snizi pocet moznych souboru na diskete o -1).

Pokud tedy vzorecek preneseme na jednotlive formaty tak ziskame:

Pro celkovou vyuzitelnost souboru na diskete si musime jeste uvedomit, ze DOS vzdy rezervuje prvni dva zaznamy v prvnich 8 sektorech adresare pro systemove soubory (SYS), takze realne mame pro ostatni soubory k dispozici:

Volba/preference techto dvou velkych formatu disket ma tedy smysl. Na zaver jeste prehlednou rekapitulaci celkovych kapacit a maximalniho poctu souboru pri plnem osazeni mechanik:

  1. pro 4x SSDD-96 - celkova kapacita: 1 474 560, celkem souboru: 352 (416)
  2. pro 4x SSDD-128 - celkova kapacita: 1 966 080, celkem souboru: 352 (416)
  3. pro 3x DSDD-64 - celkova kapacita: 1 474 560, celkem souboru: 624 (672)

Rozsireni operacni pameti pocitace o 32 kB

Generovani vsech potrebnych preruseni

Rozhrani pro synchronni seriovou komunikaci (pridavny modul)


Nas mini Expander byl vyvijen tak, aby splnil nekolik zasadnich pozadavku:

  1. verna emulace puvodniho Expanderu EG3014 vcetne ctyr disketovych mechanik
  2. dobove provedeni (zapojeni, soucastky a vlastni vyroba odpovidaji pocatku 90 let), tak aby bylo mozne tento kus hardware umistit a provozovat v muzeu, retro labu bez naruseni autenticnosti
  3. kompaktni a mini provedeni umoznujici umisteni mini Expander primo na horni rovnou plochu techto pocitacu, coz vyuzijeme pro ukazky, seminare ale i pro moznost zapujcit komplet pro studium
  4. moznost napajet primo ze stareho pocitace pres rozsirujici (expansion) konektoru. To vyzaduje omezit dlouhodobou spotrebu pod 2W. Pokud mate radi kompaktni minimalisticka reseni, pak kazda komponenta navic to narusuje. Na druhou stranu nejenom puvodni usmernovaci diody ve zdroji techto pocitacu budou mit o nejaky stupen vic (cca o 2 az 3 stupne Celsia namerite vyssi teplotu na chladici 5V stabilizatoru - 7805)

Skloubit vsechny tyto pozadavky nebylo uplne tak jednoduche, coz dokazuje i celkova doba vyvoje a testovani, ktera nakonec presahla puvodne planovanou dobu sesti mesicu. V prubehu vyvoje muselo byt ucineno nekolik zasadnich rozhodnuti a jednim z techto rozhodnuti bylo, zda umistit na mini Expander komunikacni port a pripadne jaky. Kriticka se ukazala slozitost celkove emulace radice FD1771 s ohledem na moznosti prvnich programovatelnych hradlovych poli te doby (omezene mnozstvi programovatelne logiky a omezeny pocet pinu). Ve finale bylo jasne, bud seriovy nebo paralelni port, oba soucasne nelze implementovat. Pro volbu serioveho portu jasne hovorila potreba moznosti zalohovani a obnovy dat. Pro volbu paralelniho portu naopak potreba prezentaci a vlastnich ukazek vyuziti pocitace, kde tiskarna vzdy byla jeho zakladni periferii, bez ktere to nedava moc smysl. Samozrejme je vzdy mozne porty implementovat jako samostatne rozsireni, ale to bylo proti zameru kompaktniho reseni. Nakonec zvitezil paralelni port. Tech duvodu bylo vice, ale jako zasadni se ukazala moznost plnohodnotne implementace rozhrani pro tiskarnu pri zachovani potrebne velikosti a moznosti napajeni.

Ale co seriova komunikace, bez ktere nelze zalohovat ani obnovovat data? Neni se ceho bat, nas mini Expander opravdu dekoduje/adresuje pouze pro paralelni port, ale jeho provedeni umoznuje osadit rozsirujici modul (desticku) s paralelnim portem nebo rozsirujici modul (desticku) se seriovym rozhranim ale trochu v jine podobe, nez asi budete zvykli. Pro standardni seriovou komunikaci potrebujeme krome dekoderu adresy, vhodne hodiny (krystalovy oscilator), implementovat obvod typu UART a samozrejme ziskat potrebne napeti typicky +-6V az +-12V. A to uz bylo nad ramec moznosti programovatelnych obvodu, pozadovane velikosti mini Expanderu ale i moznosti omezeneho napajeni primo pres rozsirujici konektor (expansion) techto starych pocitacu.

Synchronni seriova komunikace


Nase reseni umoznuje synchronni komunikaci s protistranou, ktera ma standardni RS-232 komunikacni port. Pro komunikaci se vyuzivaji pouze ridici signaly DTR, RTS (vstupni signaly) a DSR, CTS (vystupni signaly). Vhodne zapojeni rozsirujiciho modulu a vhodny komunikacni protokol umoznuje oboustrannou komunikaci bez implementace obvodu UART, bez potrebneho komunikacniho napeti (typicky +-6V az +-12V) a bez potreby nastavovat komunikacni rychlost (jde o plne synchronni protokol pomoci 2 vstupnich a 2 vystupnich pinu). Samozrejme se vyuziva standardni seriovy modemovy kabel (nekrizene vodice) se standardnim konektorem CANON 25 pinu samec na strane pripojeni k nasemu mini Expanderu.

Maximalni prenosove rychlosti souviseji se zvolenym komunikacnim protokolem a s moznostmi hardware pocitacu. Vysilani/zalohovani je vzdy rychlejsi nez prijimani/obnovovani z pohledu naseho stareho pocitace. Je to dano tim, ze pokud vysilame, nadrazeny pocitac (prijimac) nam primarne dodava pres signaly DTR a RTS potrebne napeti +-6V az +-12V a potvrzeni o prijeti dalsiho bitu provede pouze prehozenim urovni mezi DTR a RTS. Pro uspesne napajeni modulu jsou vzdy potreba pouze rozdilne urovne na techto signalech. Naopak pokud prijimame, tak primarne signaly DTR a RTS slouzi pro komunikaci a pro ziskani potrebneho napeti na nasledne potvrzovani, potrebujeme preci jenom trochu vice casu (pro ziskani potrebne napeti pro napetovou pumpu na nasem modulu).

V nasem soucasnem pouziti (verze python komunikacniho programu v nadrazenem pocitaci) je dosahovano techto prenosovych rychlosti:

Ano neni to zadna zavratna rychlost, ale napriklad pro zazalohovani souboru o velikosti 64 kB potrebujeme cca 115 sekund a to vzhledem na moznosti te doby neni zas az tak moc. Naopak vyhodou tohoto reseni je uspesne vyuzivani pro komunikaci, kde neni k dispozici seriovy port (opravdu staci pouze 2 vstupni a 2 vystupni piny s TTL urovni a k tomu nas maly seriovy modul).

Rozhrani pro tiskarnu (pridavny modul)

Doplnkovy software


Protoze emulace diskety probiha na logicke (sektorove) urovni, nelze vyuzit programy, ktere vyuzivaji nizkourovnove funkce radice ("Read Address", "Read Track", "Write Track"). Tyto nizkourovnove funkce se standardne vyuzivaji pro fyzicke formatovani nebo nizkourovnove kopirovani disket. Proto soucasti mini Expanderu jsou nasledujici doplnkove utility.


LDOS Ready
DIR /CMD:2
Drive :2 RETROTIK 09/16/92  80S1 Free=  116.2/  200.0 Fi= 36/ 64
Filespec      Attrib  LRL #Recs EOF DE File Size  MOD Date Time
----------------------------------------------------------------
BACDRV/CMD   ----+ AL 256     4  67  1 s=    1.2 16-Sep-84
CLRDSK/CMD   ----+ AL 256     4  35  1 s=    1.2 16-Sep-84
CPDRV/CMD    ----+ AL 256     5  51  1 s=    1.2 16-Sep-84
CRTDSK/CMD   ----+ AL 256     8 154  1 s=    2.5 16-Sep-84
PCOMIN/CMD   ----+ AL 256     4  14  1 s=    1.2 16-Sep-84
PCOMOUT/CMD  ----+ AL 256     3 122  1 s=    1.2 16-Sep-84
RESDRV/CMD   ----+ AL 256     5 239  1 s=    1.2 16-Sep-84

LDOS Ready

Vsechny dodavane utility jsou urcene pouze pro nas mini Expander a je mozne pouzit na vetsine DOS urcenych pro tyto pocitace. Primarne jsou u nas vyuzivane a testovane v TRSDOS verze 2.3, NEWDOS/80 verze 2.0, LDOS verze 5.3.1, ale neni zadny duvod aby nefungovaly i pod jinymi DOS.

CRTDSK/CMD


Zakladni utilitou je CRTDSK/CMD, ktera je urcena pro prvotni inicializaci RAM cip disku. Touto utilitou provede defakto formatovani emulovane diskety v pozadovane geometrii a od teto doby ji muzete pouzivat. Vlastni inicializace prepisuje na emulovane diskete pouze 0 a 17 stopu a ostatni sektory zustavaji beze zmen (nejsou umyslne prepisovany). Pokud tedy udelame nasledne DUMP sektoru diskety, mohou tam byt puvodni stara data, nebo naopak nahodna data a ne ocekavane e5H nebo 00H. Pokud budete potrebovat kompletne promazat (vycistit) disketu, je na to urcena jina utilita.

Utility v soucasne dobe podporuji nasledujici geometrie (formaty) disket:

  1. Sides:1 ,Tracks: 40, Sectors:10 (SSSD-40)
  2. Sides:1 ,Tracks: 80, Sectors:10 (SSSD-80)
  3. Sides:1 ,Tracks: 80, Sectors:15 (SSDD-80)
  4. Sides:1 ,Tracks: 96, Sectors:15 (SSDD-96)
  5. Sides:1 ,Tracks:128, Sectors:15 (SSDD-128)
  6. Sides:2 ,Tracks: 64, Sectors:30 (DSDD-64)

Vsechny uvedene geometrie maji toto spolecne:

Samozrejme by bylo mozne zvolit i dalsi mozne geometrie, ale plati omezeni uvedene vyse (maximalne 16 sektoru na stopu a stranu, maximalne 128 stop pro jednostrannou a 64 stop pro dvoustranou disketu).

Jedny z dalsim zajimavych geometrii by mohly byt formaty SSSD-64, nebo SSDD-64. Zatim ale necham na vas (na vasem zamysleni), co maji tyto geometrie za vyhodu v ramci pouziti na nasem mini Expanderu.

Pripadne rozsireni nasich utilit o dalsi geometrie disket nebude zadny problem.


LDOS Ready
CRTDSK
CREATE DISK (Ver:0.30)
Target (0..3):1
1) Sides:1 ,Tracks: 40, Sectors:10 (SS,SD)
2) Sides:1 ,Tracks: 80, Sectors:10 (SS,SD)
3) Sides:1 ,Tracks: 80, Sectors:15 (SS,DD)
4) Sides:1 ,Tracks: 96, Sectors:15 (SS,DD)
5) Sides:1 ,Tracks:128, Sectors:15 (SS,DD)
6) Sides:2 ,Tracks: 64, Sectors:30 (DS,DD)
Select:3
Any data on drive :1, will by destroyed!
Continue?:Y
START...
INI:...............OK
INI:...............OK
WRT:.....OK
...END

LDOS Ready

CPDRV/CMD


Dalsi utilita kopiruje cely obsah emulovane diskety (vsechny sektory dle zvolene geometrie) ze zdrojove do cilove mechaniky (tedy kopirujeme 1:1 na sektorove urovni). Timto zpusobem lze take inicializovat RAM cip disk, ale mnohem castejsi vyuziti je nakopirovat systemovou bootovaci disketu z ROM cip disku do RAM cip disku. Bootovani emulovane diskety s RAM cip disku vam umoznuje menit/ladit konfiguraci DOS bootovaci diskety. Konfigurace je vetsinou ulozena ve 3. sektoru na 0 stope diskety (ale nejenom tam). Lze si tak napriklad zvolit format ostatnich disket dle jednotlivych mechanik (toto casto vyuzivame v nasem retro labu).

Na rozdil od inicializace pomoci utility CRTDSK uz operace kopirovani cele diskety trva dele, a pro velkou geometrii DSDD (15 sektoru na 64 stopach po obou stranach diskety), je doba potrebna na provedeni kolem 210 sekund (cca 19 kBit/sec). Ten cas neni o mnoho kratsi nez realna disketa s realnym radicem. Primarne je to dano moznostmi hardware stareho pocitace (standardni puvodni zapojeni radice nepodporuje DMA) a trochu i umyslne nasim vlastnim designem tohoto mini Expanderu (jde nam preci o "vernou emulaci").


NEWDOS/80 READY
CPDRV
COPY DISK DRIVE (Ver:0.24)
Source (0..3):0
Target (0..3):1
1) Sides:1 ,Tracks: 40, Sectors:10 (SS,SD)
2) Sides:1 ,Tracks: 80, Sectors:10 (SS,SD)
3) Sides:1 ,Tracks: 80, Sectors:15 (SS,DD)
4) Sides:1 ,Tracks: 96, Sectors:15 (SS,DD)
5) Sides:1 ,Tracks:128, Sectors:15 (SS,DD)
6) Sides:2 ,Tracks: 64, Sectors:30 (DS,DD)
Select:1
Any data on drive :1, will by destroyed!
Continue?:Y
S..........T..........T..          ..T..........TE
ALL COPY OK!

NEWDOS/80 READY

CLRDSK/CMD


Tato treti utilita umoznuje nevratne smazat obsah emulovane diskety ve vybrane mechanice. Utilita kompletne prepise bytem 00H vsechny sektory dle zvoleneho formatu. Na rozdil od prvnich dvou vyse uvedenych utilit, se zde primo nevybira geometrie disku. Standardne utilita smaze prvnich 10 sektoru na prvnich 80 stopach. Ale pokud zvolite "Clear everything" dovoli vam premazat vsech 16 sektoru na 128 stopach pro jednostrannou disketu, nebo na 64 stopach pro oboustrannou disketu. Ze neni zadny mozny zpusob pripadneho navratu zpet asi neni nutne zduraznovat.


LDOS Ready
CLRDSK
CLEAR DISK (Ver:0.13)
Target (0..3):1
Clear everything?:Y
Double sided?:Y
Any data on drive :1, will by destroyed!
Continue?:Y
S...............T..          ..T...............TE
ALL CLEAR OK!

LDOS Ready


Oblast utilit pro zalohovani a obnovu dat


Nas mini Expander vyuziva ROM a RAM cip disky:

Nas mini Expander umoznuje osadit rozsirujici modul (desticku). V soucasne dobe mame dva moduly, prvni ktery umozni pripojeni tiskarny pres paralelni kabel a druhy, ktery umozni pripojit nadrazeny pocitac pro obousmernou vymenu dat pres seriovy modemovy kabel. Zvolene reseni seriove komunikace muzeme oznacit jako plne synchronni komunikace bez pouziti obvodu typu UART na strane mini Expanderu. Nadrazeny pocitac slouzi soucasne k napaji komunikacni casti naseho serioveho modulu. Vice podrobnosti najdete v samostatne casti Seriovy synchronni komunikacni modul.

PCOMOUT/CMD a PCOMIN/CMD


Tyto dve zakladni komunikacni utility umoznuji odeslat nebo naopak prijmout vybrany soubor s protistranou (s nadrazenym pocitacem). Vzdy nejdrive zadame uplne jmeno souboru vcetne cisla mechaniky (napriklad "PCOMIN/ASM:1" a nasledne jsme vyzvani aktivovat vysilac/prijimac (komunikacni program nadrazeneho pocitace). Po potvrzeni aktivace probehne vlastni komunikace. Prvotni aktivace komunikacniho programu nadrazeneho pocitace souvisi nejenom s inicializaci ridicich signalu, ale i s napajenim naseho modulu.

Pokud jako ja vyvijite, popisujete nebo dokumentujete na techto starych pocitacich doporucuji nove verze programu, manualu a ostatnich vytvorenych souboru pravidelne zalohovat. Toto doporuceni nesouvisi s nasim mini Expanderem, ktery oproti realnemu Expanderu s realnymi disketami dosahuje opravdu velmi vysokou spolehlivost. Od dokonceni vyvoje mini Expanderu, se za celou dobu cca 8 mesicniho intenzivniho testovani neobjevil jediny problem se ztratou jedineho bajtu. Ale souvisi s obcasnou nedokonalosti nekterych verzi puvodnich programu a pak je tu nas lidsky faktor, kdy kazdy obcas udelame nejakou tu chybu (prepiseme si nas soubor jinym obsahem, tedy spleteme se ve jmene souboru).


NEWDOS/80 READY
PCOMOUT
COMMUNICATION OUTPUT (Ver:0.14)
IniCom
File name:TEST/TXT:2
Prepare receiver then press any key (X Cancel)
OK...
.......................            .....................END

NEWDOS/80 READY


LDOS Ready
PCOMIN
COMMUNICATION INPUT (Ver:0.18)
IniCom
File name:TEST/TXT:2
File exists!
Prepare transmitter then press any key (X Cancel)
OK...
.................          .....................END

LDOS Ready

BACDRV/CMD a RESDRV/CMD


Tyto dalsi dve komunikacni utility umozni zazalohovat nebo obnovit cely obsah vybrane emulovane diskety (uplna kopie vsech sektoru dle vybrane geometrie, tedy opet muzeme rici kopie 1:1). Utility podporuji vyse popsane geometrie (viz utilita CRTDSK). Neni ale zadny problem obnovit v ramci zvolenych formatu SSSD, SSDD, DSDD i geometrie s nizsim pocet stop. Pokud napriklad zvolite obnovu formatu SSSD-80, muzete na nadrazenem pocitaci zvolit napriklad image SSSD-35 (typicky systemovou disketu TRSDOS 2.3) a prijimaci cast utility RESDRV sama upozorni na detekci ukoncovaci sekvence a vy pouhym potvrzenim ukoncovaci sekvence dokoncite dany prenos.

Pro komunikaci se vyuziva specialni komunikacni protokol, popsany nize v samostatne kapitole, je v ramci nasi podpory mini Expanderu postupne vyvijen software pro nadrazene komunikacni pocitace dle platforem (tak jak je mame v nasem muzeu). Prvotni overovaci software vzniknul na platforme Linux pod skriptovacim jazykem Python. Ano, neni to zrovna platforma do muzea, i kdyz nas hardware na kterem to bezi uz pomalu ano (PC/AT s procesorem 386SX), ale bylo to v dane chvili asi nejjednodussi reseni. Urcite v teto chvili planujeme vyvinout software pro platformu MS-DOS (PC/XT), RSX (PDP-11) a pravdepodobne i pro AMIGA OS. PDP-11 je opravdu v nasem muzeu/labu centralnim pocitacem a proto dava smysl jej vyuzit pro dobove zalohovani i obnovu dat (bude to typicky dobovy nadrazeny pocitac).


LDOS Ready
BACDRV
BACKUP DISK DRIVE (Ver:0.19)
IniCom
Source (0..3):1
1) Sides:1 ,Tracks: 40, Sectors:10 (SS,SD)
2) Sides:1 ,Tracks: 80, Sectors:10 (SS,SD)
3) Sides:1 ,Tracks: 80, Sectors:15 (SS,DD)
4) Sides:1 ,Tracks: 96, Sectors:15 (SS,DD)
5) Sides:1 ,Tracks:128, Sectors:15 (SS,DD)
6) Sides:2 ,Tracks: 64, Sectors:30 (DS,DD)
Select:1
Prepare receiver then press any key (X Cancel)
S..........T..........T..          ..T..........TE
ALL BACKUP OK!

LDOS Ready


NEWDOS/80 READY
RESDRV
RESTORE DISK DRIVE (Ver:0.24)
IniCom
Target (0..3):1
1) Sides:1 ,Tracks: 40, Sectors:10 (SS,SD)
2) Sides:1 ,Tracks: 80, Sectors:10 (SS,SD)
3) Sides:1 ,Tracks: 80, Sectors:15 (SS,DD)
4) Sides:1 ,Tracks: 96, Sectors:15 (SS,DD)
5) Sides:1 ,Tracks:128, Sectors:15 (SS,DD)
6) Sides:2 ,Tracks: 64, Sectors:30 (DS,DD)
Select:1
Any data on drive :1, will by destroyed!
Prepare transmitter then press any key (X Cancel)
S..........T..........T..........T..          ..T
Termination sequence detected prematurely, continue?:N
Canceled!

NEWDOS/80 READY

Samozrejme vsechny dodavane utility, ale i komunikacni software nadrazeneho pocitace, poskytujeme i ve zdrojovem kodu.

Diagnostika mini Expanderu


Soucasti dodavky mini Expanderu je ROM cipovy disk (EPROMka) s nasimi "RetroTik Utility". Tento disk je ve formatu SSSD-80 (10 sektoru na stopu, 80 stop). Pri tomto formatu nejsou vyuzity zbyvajici sektory cip disku na stope, proto jsme tento disk opatrili vlastnim zavadecem a do volnych sektoru umistili nasi vyvinout diagnostiku pouze pro nas mini Expander.

Diagnostika byla vyvinuta za ucelem:

Nase deska plosneho spoje s oznacenim CZRT-VG3-0103 (zaklad mini Expanderu) ma povrchovou upravu olovnaty HAL (SnPb) a pri jejim osazovani se vyuziva samozrejme olovnaty cin. Hlavnim duvodem je osazovani dobovych soucastek a pouziti technologie dobove vyroby. I kdyz pouzivame nove (nepouzite) dobove soucastky, casto ale stari vice jak 30 let, je to asi jedina moznost, jak opravdu vyrabet kvalitne. Asi neni tajemstvim, ze napriklad pro vyrobu v oblastech letectvi, kosmickeho prumyslu ale i mediciny je tato technologie stale vyuzivana. Vsechny dobove soucastky, pred osazenim vzdy dukladne testujeme a vyrobenou kartu vzdy nekolik dni intenzivne pouzivame a opakovane testujeme. Presto z principu musime poskytnout pouze omezenou zaruku prave z duvodu pouziti dobovych soucastek. Nase dlouhodobe zkusenosti s pouzitim dobovych soucastek a dobovou vyrobou jsou ale velice dobre. Pokud uzivatel bude mit jakekoli podezreni na funkcnost, je tato diagnostika jeho velkym pomocnikem.

Diagnostika se uspesne vyuzila pri testovani mini Expanderu na dalsich starych kusech pocitacu kompatibilnich s legendarnim pocitacem TRS-80. Opakovane byla timto zpusobem diagnostikovana zavada, ktera se jinak neprojevovala (nespolehlive vodive kontakty primych konektoru pocitacu, nebo nedostatecne stabilni/tvrde puvodni zdroje techto pocitacu).

Diagnostiku spustite nasledovne:

Po dokonceni testu pameti by vam mela nabehnout zakladni obrazovka diagnostiky:


RETROTIK DIAGNOSTICS ROM DISK (V.:03)
-------------------------------------

MENU:

1) CHECKING FLOPPY CONTROLLER
2) DISKETTE DRIVES SELECTION CHECK AND STATUS
3) CHECKING INTERRUPT
4) RESTORE DISKETTE (RAM CHIP DISK) FROM SERIAL PORT

SELECT:

CHECKING FLOPPY CONTROLLER


Pod touto volbou se skryva zakladni diagnotika naseho mini Expanderu. Jedna se o kompletni test emulovaneho diskoveho radice FD1171. Postupne jsou otestovany zakladni registry radice, dale kontrola generovani indexovych impulsu a nasledne vsechny implementovane povely krome zapisoveho.


CHECKING FLOPPY CONTROLLER

TRACK REGISTER: .......OK
SECTOR REGISTER: ....OK
DATA REGISTER: ........OK
INDEX: ................................OK
CMD RESTORE: ............OK
CMD SEEK: ............OK
CMD STEP: +............-............OK
CMD FORCE INTERRUPT: ................................OK
CMD READ: ........................................OK

FINISH (PRESS ANY KEY TO CONTINUE)

DISKETTE DRIVES SELECTION CHECK AND STATUS


Pomoci teto volby se postupne adresuji vsechny mechaniky (0 az 3) a pro kazdou mechaniku se zjistuji nasledujici informace:

  1. aktualni nastaveni jumperu Read Only (obdoba klasickeho prelepovani vyrezu na diskete)
    • SETTING: READ/WRITE (jumper pritomen >> vyrez neni prelepen)
    • SETTING: READ-ONLY (jumper nepritomen >> vyrez prelepen)
  1. pritomnost diskety (ROM/RAM cipovy disk)
    • DISKETTE: PRESENT (cipovy disk vlozen)
    • DISKETTE: BLANK (cipovy disk nepritomen, nebo obsahuje na vybranych dulezitych stopach same 00H)
  1. realna moznost zapisovatelnosti na disk
    • WRITABLE: YES (vybran RAM cip disk s povolenym signalem WRITE >> jumper pro WRITE pritomen)
    • WRITABLE: NO (vybran ROM cip disk, nebo RAM cip disk s nepovolenym signalem WRITE >> jumper pro WRITE nepritomen)

Kontrola neprobiha okamzite po zvoleni, ale az po stlaceni libovolneho tlacitka. To dovoluje pripadne jeste vymenit ROM cip disk(y) v patici s packou pred zahajenim testu.


DISKETTE DRIVES SELECTION CHECK AND STATUS

STARTING (PRESS ANY KEY TO CONTINUE)

DRIVE 0 - ACTUAL SETTING: READ/WRITE
 - CHECKING ........ DISKETTE: PRESENT ..  WRITABLE: NO
DRIVE 1 - ACTUAL SETTING: READ/WRITE
 - CHECKING ........ DISKETTE: PRESENT ... WRITABLE: YES
DRIVE 2 - ACTUAL SETTING: READ/WRITE
 - CHECKING ........ DISKETTE: PRESENT ..  WRITABLE: NO
DRIVE 3 - ACTUAL SETTING: READ-ONLY
 - CHECKING ........ DISKETTE: BLANK   ..  WRITABLE: NO

FINISH (PRESS ANY KEY TO CONTINUE)

CHECKING INTERRUPT


Pomoci teto volby se postupne overi spravnost generovani preruseni pro jednotlive funkce naseho mini Expanderu. Nejdrive jsou to preruseni od casovace a nasledne se sleduje generovani nebo naopak negenerovani preruseni pri ruznych stavech prubehu jednotlivych povelu diskoveho radice.


CHECKING INTERRUPT

CLOCK: .................................................. OK
FLOPPY DISK CONTROLLER:
- CMD TYPE  I: ............................................. OK
- CMD TYPE II: ............................................ OK
- CMD TYPE IV: .................. OK

FINISH (PRESS ANY KEY TO CONTINUE)

RESTORE DISKETTE (RAM CHIP DISK) FROM SERIAL PORT


Tato volba byla do diagnostiky doplnena az nasledne, ale jeji vyuzitelnost se ukazala jako velmi prinosna. Jedna se v podstate jiz o vyse zminenou utilitu RESDRV/CMD, ktera se ale nemusi spoustet pres funkcni DOS, ale je primo spoustena v ramci naseho ROM cip disku RetroTik utility.

Aktualne se vyuziva pro:



RESTORE DISK DRIVE (Ver:0.20)
IniCom
Target (0..3):2
1) Sides:1 ,Tracks: 40, Sectors:10 (SS,SD)
2) Sides:1 ,Tracks: 80, Sectors:10 (SS,SD)
3) Sides:1 ,Tracks: 80, Sectors:15 (SS,DD)
4) Sides:1 ,Tracks: 96, Sectors:15 (SS,DD)
5) Sides:1 ,Tracks:128, Sectors:15 (SS,DD)
6) Sides:2 ,Tracks: 64, Sectors:30 (DS,DD)
Select:4
Any data on drive :2, will by destroyed!
Prepare transmitter then press any key (X Cancel)

Videa

Prvotni inicializace RAM cip disku:


Utilita CRTDSK je rychla, prepisuje pouze vybrane sektory. Ostatni sektory zustavaji beze zmen.

NEWDOS/80: dir, crtdsk, dir, dircheck, copy, dir, dircheck[Video 1]



TRSDOS: DIR, CRTDSK, DIR, FREE, COPY, DIR, FREE[Video 2]



LDOS: DIR, CRTDSK, DIR, FREE, COPY, DIR, FREE[Video 3]



Utilita CPDRV kopiruje vsechny sektory na vsech stopach (track). Samozrejme to trva mnohem dele, a pro 200 kB disketu (80 stop po 10 sektorech s 256 bytu) je potreba cca 85 s. Video je zkracene.

NEWDOS/80: dir, cpdrv, dir, dircheck[Video 4]

Ukazka programu pracujicich s disketou:


FDCTEST je pekny testovaci program napsany v BASICu. V ukazce zadavam povely: Drive, Status, step-In, step-Out, Restore. V horni casti je krasne videt, ze TRACK registr je 7 bitovy a SECTOR registr je 4 bitovy.

NEWDOS/80: dir, basic, run fdctest[Video 5]



Rychlost se meni v zavislosti na konkretnim DOS, a dle predpokladu je puvodni TRDOS nejpomalejsi, viz pomale nahravani ukazkoveho programu TEST2/BAS (program delky 118 radek). V BASICu v NEWDOS/80 se program nahraje za cca 3 sekundy. Video je zkracene.

TRSDOS: DIR, BASIC, RUN TEST2/BAS[Video 6]

Realna ukazka prace s programem EDTASM vcetna zalohohy a obnovy zdrojoveho souboru


V nasledujicim prikladu upravime zdrojovy program, prelozime a nasledne ulozime ve spustitelnem formatu (/CMD). Vsechny nove verze ukladame na disk :2 a nasledne finalni zdrojovy program (/ASM) zazalohujeme pomoci utility PCOMOUT na vzdaleny pocitac.

NEWDOS/80: dir, lc, edtasm, dir, clear, load, debug, dump, dir, pcomout[Video 7]



Po zjisteni, ze nemame dostupnou utilitu PCOMOUT, obnovime jeji zdrojovy program (/ASM) pomoci utility PCOMIN ze vzdaleneho pocitace. Nasledne prelozime pomoci programu EDTASM a po vytvoreni souboru /CMD spustime.

NEWDOS/80: dir, pcomout, pcomin, dir, edtasm, load, dump, pcomout[Video 8]

Ukazka utilit pro zalohovani a moznost nasledne obnovy diskety s vyuzitim synchronniho komunikacniho modulu:


V soucasne dobe zazalohovat celou 200 kB disketu na vzdaleny pocitac trva necelych 9 minut (cca 390 B/s). Video je zkracene.

NEWDOS/80: dir, bacdrv, dir[Video 9]




Obnova diskety ze vzdaleneho pocitace je vzdy pomalejsi, dano komunikacnim rozhranim a protokolem. Video je zkracene.

LDOS: DIR, RESDRV, DIR[Video 10]

A jak to vypada v praxi pri praci s Mini Expanderem


TRSDOS: DIR, FREE. LDOS: DIR. NEWDOS/80: dir, kill, dir.[Video 11]