Přeskočit na obsah

Larken Disk System

Z Wikipedie, otevřené encyklopedie

Larken Disk System je řadič disketových jednotek pro počítače Timex Sinclair 2068 vyvinutý společností Larken Automation. K řadiči je možné připojit až čtyři disketové mechaniky a 256KiB ramdisk.[1] Na disketách pro Larken Disk System byl publikován elektronický časopis Byte Power.[2]

Pro počítače Timex Sinclair 1000 a Sinclair ZX81 později vznikl disketový řadič se stejným formátem diskety Larken TS1000 Disk System.

Ovládání řadiče

[editovat | editovat zdroj]

Operačním systémem disketového řadiče je LKDOS, který je obsažen na kártridži. LKDOS existuje nejenom pro Larken Disk System, ale také pro řadič Oliger, Aerco FD-68 a Ramex Millenia K.[3] Tyto řadiče mohou být připojeny současně, což zvyšuje počet možných současně připojených disketových mechanik ovládaných pomocí LKDOSu.[4]

Používané příkazy

[editovat | editovat zdroj]

Příkazy pro ovládání Larken Disk Systemu jsou standardní příkazy Basicu, kterým předchází příkaz RANDOMIZE USR 100 nebo PRINT #4.[5] Kromě příkazů pro práci s disketovými mechanikami přidává i příkazy rozšířující možnosti Sinclair BASICu. Další příkazy jsou přidávány utilitou pro přístup k sekvenčním souborům.[6] Manuál k zařízení doporučoval používat PRINT #4.[pozn. 1]

Příkazy LKDOSu je také možné volat uložením adresy volaného příkazu na adresy 8200 a 8201 a zavolat USR 110.[pozn. 2]

Příkazy pro práci s disketovými mechanikami

[editovat | editovat zdroj]
  • RANDOMIZE USR 100: OPEN #4,"dd" – umožní používat PRINT #4 místo RANDOMIZE USR 100,
  • PRINT #4: SAVE "název souboru" – uložení souboru na disketu, fungují všechny varianty jako u verze pro ukládání na kazetu,
  • PRINT #4: LOAD "název souboru" – nahrání souboru z diskety (po zadání příkazu POKE 23728,100 se při nenalezeném souboru program nezastaví s chybovým hlášením, ale pokračuje dalším příkazem, pouze na adresu 23728 je uložena hodnota 101),
  • PRINT #4: MERGE "název souboru"
  • PRINT #4: CAT "" - katalog diskety,
  • PRINT #4: CAT "výraz" - výpis souborů, které odpovídají zadanému výrazu, lze použít zástupný znak ^, který nahrazuje jakýkoliv jeden znak,
  • PRINT #4: CAT - katalog diskety, pokud je Larken Disk System používán společně s emulátorem ZX Spectra (ZX Spectrum neumožňuje zadat příkazy CAT "" a CAT "výraz"),
  • PRINT #4: ERASE "název souboru", - smazání souboru z diskety, příkaz vyžaduje, aby za názvem souboru v uvozovkách byla uvedena čárka,
  • PRINT #4: GO TO n - výběr aktivní mechaniky (0-3 - disketové mechaniky, 4 - ramdisk),
  • PRINT #4: PRINT "název souboru" - výpis obsahu souboru,
  • PRINT #4: VERIFY - ověření stavu povrchu diskety,
  • PRINT #4: NEW - teplý autostart AUTOSTART programu,[9][pozn. 3]
  • MOVE - přejmenování souboru.[10]

Název souboru může být nejvýše 6 znaků dlouhý následovaný tečkou a dvouznakovou příponou.[11] Přípona může být:[11]

  • A - dimenzovaná proměnná,
  • B - program v Basicu,
  • C - binární data/strojový kód.

Pokud je ukládaným souborem dimenzovaná řetězcová proměnná, musí být druhým znakem přípony znak $.[11] Jinak může být druhým znakem přípony jakýkoliv znak, kromě znaku ↑, který se používá jako zástupný znak pro příkaz CAT.[11]

Inspirován MS-DOSem a operačními systémy jiných „velkých“ počítačů, LKDOS nemá příkazy pro formátování diskety a pro kopírování souborů z jedné diskety na jinou, tyto jsou prováděny samostatnými programy.[12] Dalším důvodem pro nezakomponováním příkazu pro kopírování souborů na jinou disketu bylo, že se autor snažil, aby LKDOS byl kompatibilní i s jinými systémy, takže řešení v ROM by mohlo být příliš složité.[12] Kopírování souborů z jedné diskety na jinou vyžaduje alespoň dvě disketové mechaniky.

Příkazy rozšiřující možnosti Sinclair BASICu

[editovat | editovat zdroj]
  • PRINT #4: DRAW šířka, výška, vzor - nakreslení obdélníku vyplněného zadaným vzorem[pozn. 4],
  • PRINT #4: CIRCLE x, y, vzor - vyplnění uzavřené oblasti daným vzorem, začíná na pozici o souřadnicích x, y,
  • PRINT #4: INK n - okamžitá změna barvy písma celého obrazu,
  • PRINT #4: PAPER n - okamžitá barva podkladu celého obrazu,
  • PRINT #4: POKE adresa, data - uložení 16bitového čísla na zvolenou adresu,
  • PRINT #4: OPEN #n, "zařízení" - připojení zvoleného kanálu na příslušnou linku, zařízení může být:
    • w0, w1, w2 - textové okno na obrazovce,
    • lp - paralelní port tiskového interface Aerco,[pozn. 5]
  • PRINT #4: CLOSE #n - zavření linky (pouze pro linky otevřené příkazem PRINT #4: OPEN #n, "zařízení", nikoliv pro linky otevřené standardním příkazem OPEN #n, "zařízení"),
  • PRINT #4: INPUT #okno, y levého horního rohu, x levého horního rohu, x pravého spodního rohu, y pravého spodního rohu - definice velikosti okna v tiskových souřadnicích příkazu PRINT,
  • PRINT #4: CLEAR okno - smazání obsahu okna (CLS okna).

Příkazy utility pro přístup k sekvenčním souborům

[editovat | editovat zdroj]

Příkazy utility pro přístup k sekvenčním souborům mají stejnou strukturu jako příkazy LKDOSu, pouze místo RANDOMIZE USR 100 nebo PRINT #4 jim předchází RANDOMIZE USR 26800:

  • RANDOMIZE USR 26800: OPEN #n, "název souboru", OUT - připojení výstupního sekvenčního souboru na linku n,
  • RANDOMIZE USR 26800: OPEN #n, "název souboru", RND - připojení vstupně výstupního souboru s náhodným přístupem na linku n,
  • RANDOMIZE USR 26800; DATA n, velikost záznamu - nastavení velikosti záznamu vstupně výstupního souboru s náhodným přístupem připojeného na linku n,
  • RANDOMIZE USR 26800: CLOSE #n - zavření souboru připojeného na linku n,
  • LET x = USR 26800: DATA n, velikost záznamu, "hledaný výraz" – nalezení hledaného výrazu ve vstupně výstupním souboru s náhodným přístupem připojeném na lince n, v x je vrácena relativní poloha záznamu obsahující hledaný výraz vzhledem k aktuálnímu záznamu,
  • RANDOMIZE USR 26800: LIST – výpis aktuálně otevřených linek a na ně připojených souborů.

V případě výsupního sekvenčního souboru mohou být data přidávána na konec souboru, příp. může být vytvořen soubor nový, ale data z něho nemohou být čtena. V případě vstupně výstupního souboru s náhodným přístupem mohou být data zapisována i čtena, ale nemůže být měněna délka souboru. Pozice pro zápis a pro čtení může být nastavena příkazem PRINT #n; TAB pořadí záznamu;.

Současné používání LKDOSu a jiných DOSů

[editovat | editovat zdroj]

LKDOS existuje i pro jiné diskové systémy a je možné současně používat LKDOS i původní DOS daného disketového systému. Při současném používání RAMEX DOSu a LKDOSu není pro spouštění příkazů LKDOSu používat PRINT #4, protože příkazy RAMEX DOSu se volají také s použitím PRINT #4. Je proto nutné používat PRINT #4 pro volání příkazů RAMEX DOSu a pro LKDOS používat RANDOMIZE USR 100.[14]

Pro umožňění současného používání LKDOSu a AERCO DOSu je nutné pro AERCO DOS zablokovat signál NMI.[14]

Pro současné používání LKDOSu verze O3 a diskového systému Oliger je nutné mít u systému Oliger ROM verze alespoň 2.54, při použití systému Oliger s ROM verze 2.53 dochází ke smazání stopy s adresářem.[15] Při spuštění počítače je nutné deaktivovat desku ROM řadiče Oliger, čímž počítač nastartuje do stavu, kdy mechaniky řadiče Oliger jsou ovládány LKDOSem.[15] Po následné aktivaci desky ROM řadiče Oliger a zadání příkazu RESTORE /s je následně aktivován i DOS řadiče Oliger.[15] Pro formátování disket pro Larken Disk System je nutné místo programu FORMAT.Bo použít program FORMAT.B1.[15]

Podrobnější informace naleznete v článku LogiCall.

Pro zjednodušení načítání programů je možné použít program LogiCall spouštěný autostartem. Po spuštění LogiCallu je zobrazen katalog disku a program se zeptá na číslo mechaniky.[15] S pomocí kurzových šipek je možné vybrat program se má spustit, při pohybu v katalogu se název aktuálního programu zobrazuje vedle dotazu na program.[15] Spuštění vybraného programu je pak provedeno pomocí klávesy Enter.[15] Kromě spouštění programů program také umí zobrazovat kopie obrazovky s příponou .C$ a zobrazovat obsah textových souborů s příponami .CT a .Cm.[15]

První generace systému byla založena na DOSu v EPROM, která se připojovala od adresy 63488 a potřebné soubory na disketě.[11] Druhá fáze první generace byla založena na kártridži, která se připojovala do oblasti ROM, když se pracovalo s disketou.[11] První generace umožňovala formátovat diskety na kapacitu 160 KiB a na disketu bylo možné uložit 50 souborů.[11]

Druhá generace disketového řadiče byla založena na kártridži a desce interfacu, který se připojoval vertikálně za počítač.[11] Druhá generace umožňovala formátovat diskety na kapacitu přes 400 KiB.

V listopadu 1988 byla vydána LKDOS EPROM verze 3.[16] Tato verze přinesla mimo jiné obsluhu sekvenčních souborů, příkaz pro přejmenování souborů, vylepšený ovladač tisku, vylepšené ukládání souborů přes NMI, uživatelem definované příkazy, příkazy pro ramdisk a rychlejší inicializaci po zapnutí.[16] Tiskový ovladač je až na 50 bytů celý uložen v EPROM, 50 bytů v RAM je automaticky inicializováno.[16] Ovladač umožňuje nastavit levý okraj, automatický line feed a délku řádku.[16] Pomocí POKE je možné přepínat mezi tiskem přes tiskový interface Aerco, Oliger, Tasman, A&J, nebo uživatelem definovaný tiskový interface.[16] Pro tisk je možné použít buď paralelní tiskárnu nebo tiskárnu TS 2040 nebo obě tiskárny současně.[16] NMI nově umožňuje vybrat mezi uložením obsahu celé paměti včetně obsahu obrazovky nebo celé paměti bez obsahu obrazovky.[16]

V roce 1988 vytvořil Bob Mitchel nezávislé rutiny pro LOAD a SAVE, aby nemusel spoléhat na původní LKDOS.[17]

Stará verze Larken Disk Systemu využívala buď přímo port 31 nebo alespoň využívala bit A5 adresové sběrnice, což způsobovalo kolize při současném připojení Larken Disk Systemu a interface pro Kempston joystick k počítači.[18]

Technické informace

[editovat | editovat zdroj]
  • kapacita diskety: 400 KiB (oboustranná disketa, 40 stop), 200 KiB (jednostranná disketa, 40 stop), 800 KiB (oboustranná disketa, 80 stop),
  • čip řadiče: WD1770,[19]
  • ROM: 8 KiB EPROM,[5]
  • RAM: 8 KiB,[5]
  • plně průchozí systémový konektor pro připojení dalších periférií,[4]
  • port pro Kempston joystick.[4]

Adresář disketového systému obsahuje pro každý soubor několik ukazatelů (podobně jako MS-DOS), takže může docházet k fragmentaci souborů.[20] Pro odstranění fragmentace je nutné soubory zkopírovat na jinou disketu.[20] Soubory mají na začátku záhlaví, které mimo jiné obsahuje CRC.[20] CRC je v záhlaví kvůli ramdisku, disketové řadič počítá vlastní CRC.[20]

Systémové proměnné

[editovat | editovat zdroj]
  • 8194 - příznak, zda byla funkce spuštěna z Basicu (obsahuje hodnotu 1) nebo z NMI (obsahuje hodnotu 1). Některé příkazy nastavují příznak na hodnotu 11.[21]

Vstupní body některých rutin

[editovat | editovat zdroj]
adresa funkce
138 008A čtení řetězce na adrese 8226 a vyhodnocení, jestli se jedná o platný název souboru[21]
141 008D nalezení ukončovacího znaku příkazu Basicu[21]
144 0090 čtení čísla a jeho uložení do registru BC[21]
156 0096 čtení řetězce na adrese 8226 o délce nejvýše 10 znaků[21]
186 00BA zakázání kártridže LKDOSu a ukončení[21]
00C6 operace SAVE[21]
00CC operace LOAD[21]

LKDOS také implementuje rst 32 (čtení následujícího znaku za znakem na který ukazuje systémová proměnná CH ADD s vynecháním mezer a řídicích kódů), ale už neimplementuje rst 24 (čtení znaku, na který ukazuje systémová proměnná CH ADD).[21] rst 8 v LKDOSu také funguje normálně.[21]

Ramdisk byl dodáván na samostatné desce bez pamětí RAM, ty bylo nutné zakoupit samostatně. Ramdisk byl zálohovaný dvěma bateriemi AAA.[22] Pro paměti byly obsaženy čtyři patice, do kterých bylo možné instalovat až 128 KiB paměti (čtyři čipy o velikosti 32 KiB, označené jako A - D).[22] Pro dalších 128 KiB paměti bylo nutné druhou čtveřici pamětí připájet na první čtveřici pamětí, kromě pinu 20 (chip select).[22] Ten bylo nutné připojit k desce tištěného spoje samostatným vodičem.[22]

Paměť ramdisku se připojuje do horních 32 KiB DOCK paměti, což způsobuje konflikt s kátridžemi AROS a s pamětí řadiče FD-68.[22]

Ke ovládání paměti ramdisku je použit port 7. Význam jednotlivých bitů hodnot odeslaných na tento port je následující:[22]

Port 7 6 5 4 3 2 1 0
7   zákaz zápisu do ramdisku       výběr použitého čipu paměti

Hodnota bitů 0, 1 a 2 vybírá jednotlivé čipy následujícím způsobem:[22]

hodnota bitů 7 3 5 1 6 2 4 0
vybraný čip A B C D E F G H

Po jakémkoliv použití ramdisku je nakonec vybrán čip H.[22] Díky tomu může být do čipu H nahrán AROS program, který pak funguje stejně, jako kdyby byl na AROS kártridži.[22]

Obsluha ramdisku byla přidána do LKDOS EPROM verze 2.[22] Při připojeném ramdisku je možné při startu počítače stisknutím klávesy J vybrat ramdisk jako výchozí disketovou jednotku, není pak nutné použít GOTO 4.[22] Kvůli obsluze ramdisku, byl z EPROM odstraněna proporcionální znaková sada pro okna, která byla přítomna v EPROM verze 1.[22] Pro použití této sady ji bylo nutné nahrát do paměti počítače a aktivovat příkazem PRINT #4: POKE 8219,Chars-256.[22]

Před prvním použitím ramdisku je nutné ramdisk inicializovat příkazem PRINT #4: GO TO 4: PRINT #4: FORMAT "n", kde n je počet instalovaných paměťových čipů.[22]

Známé problémy

[editovat | editovat zdroj]

V případě připojeného současného použití LKDOSu a A&J Printer Interface se při pokusu uložit data příkazem SAVE na kazetu se systém zhroutil.[12] Oprava tohoto problému nebyla plánována.[12]

Některé základní desky Larken ramdisku měly naletovanou jednu diodu obráceně, což způsobovalo rychlé vybití baterie a CRC chyby při použití příkazu RANDOMIZE USER 100: VERIFY "".[23]

Při zobrazení katalogu příkazem CAT "" se kromě seznamu souborů mohl objevit společně CRC chybou.[24] V tomto případě to znamená, že došlo k CRC chybě a seznam souborů je starý seznam z předcházejícího spuštění příkazu CAT "".[24]

  1. Doporučení používat PRINT #4 vyplývalo z toho, že k jeho zapsání je potřeba méně stisků kláves, než k napsání RANDOMIZE USER 100 a podle manuálu měl také zabrat méně paměti.[7] Pro autostart program, který neprováděl mnoho operací a kde bylo potřeba pamětí šetřit, např.
    10 RANDOMIZE USR VAL "100": OPEN # VAL "4", "dd"
    20 PRINT # VAL "4": LOAD "L.B1"
    zabralo 41 bajtů, zatímco
    10 LET h=CODE "d"
    20 RANDOMIZE USR h: LOAD "L.B1"
    zabere pouze 28 bajtů.[7] Použití PRINT #4 také mohlo kolidovat s některými jinými perifériemi, např. se Zebra Talkerem, který #4 používal také.[7]
  2. Pro uložení dvoubytové hodnoty je možné využít příkaz POKE LKDOSu a příkazy tak volat PRINT #4: POKE 8200,adresa: LET b=USR 110, kde adresa je adresa volaného příkazu.[8]
  3. Pro spuštění autostart programu z ramdisku bylo možné použít PRINT #4: GO TO 4: PRINT #4: NEW[9]
  4. vzor se zadává čísly 0 - 9 pro výběr předdefinovaného vzoru nebo číslem deset pro výběr uživatelem definovaného vzoru definovaným osmi byty od adresy 23540.[11]
  5. Uživatelům bylo doporučováno pro tisk na této tiskárně použít #5, aby bylo možné přepínat mezi tiskem na obrazovku, tiskem na tiskárně Timex Sinclair 2040 a tiskem na tiskárně připojené přes tento tiskový interface.[13]
  1. MOBLEY, John Mark. Vintage Computer Festival Midwest 2011. CoCo~123. 2011, roč. 31, čís. 2, s. 28–35. Dostupné v archivu pořízeném dne 2014-03-08. ((anglicky))  Archivováno 8. 3. 2014 na Wayback Machine.
  2. Sinclair and Timex Projects Page (anglicky) na oocities.org
  3. Larken LKDOS Cartridges Archivováno 26. 6. 2012 na Wayback Machine. na World of Spectrum
  4. a b c Timex Sinclair 2068 Official and Unofficial Peripherals Archivováno 9. 12. 2013 na Wayback Machine. (anglicky) na timexsinclair.org
  5. a b c KENNY, Larry. Larken disk drive. Příprava vydání Solly, David. Navan: Larken Electronics, 1988. Dostupné v archivu pořízeném dne 2009-03-28. ((anglicky)) Version L3F.  Archivováno 28. 3. 2009 na Wayback Machine.
  6. KENNY, Larry. Larken Sequential/Random Access File Utility.. Navan: Larken Electronics, 1988. Dostupné v archivu pořízeném dne 2009-03-28. ((anglicky))  Archivováno 28. 3. 2009 na Wayback Machine.
  7. a b c SWOGER, Bob. More INPUT on AUTOSTART and other LarKen Thoughts. Update Magazine. July 1993, s. 4. Informace o článku dostupné na More INPUT on AUTOSTART and other LarKen Thoughts, Timex/Sinclair.com, cit. 2024-04-12. Dostupné online. ((anglicky)) 
  8. Bob's Notebook. Sinc-Link. 1989, roč. 7, čís. 2 (Mar.-Apr. '89), s. 3-4. Dostupné online. ((anglicky)) 
  9. a b CHAMBERS, George. Larken Ramdisk for the TS 2068. Update Magazine. October 1988, s. 35. Informace o článku dostupné na Larken Ramdisk for the TS 2068, Timex/Sinclair.com, cit. 2024-04-10. Dostupné online. ((anglicky)) 
  10. MITCHELL, Bob. MSCRIPT Version 5.3 for Larken DOS. Update Magazine. October 1988, s. 34. Dostupné online. ((anglicky)) 
  11. a b c d e f g h i CHAMBERS, G. F. Larken DSK400 Disk Operating System. TS·2068 Up·date. January 1988, s. 10-11. Dostupné online. ((anglicky)) 
  12. a b c d GOWAN, Ron. Larken Lines. Sinc-Link. 1989, roč. 7, čís. 2 (Mar.-Apr. '89), s. 5. Dostupné online. ((anglicky)) 
  13. CHAMBERS, G. Larken Notes. Sinc-Link. 1989, roč. 7, čís. 2 (Mar.-Apr. '89), s. 5. Dostupné online. ((anglicky)) 
  14. a b GOWEN, Rod. Larken Lines. The Plotter. March 1988, roč. 6, čís. 3, s. 4-5. Informace o článku dostupné na Larken Lines, Timex/Sinclair.com, cit. 2024-04-30. Dostupné online. ((anglicky)) 
  15. a b c d e f g h LAMBERT, Don. Oliger proposes Detente with Larken. ZXir QLive Alive!. 1991, roč. 1, čís. 1 (Spring 1991), s. 6–9. Informace o článku dostupné na Oliger proposes Detente with Larken, Timex/Sinclair.com, cit. 2024-07-23. Dostupné online. ((anglicky)) 
  16. a b c d e f g LKDOS Version 3. Update Magazine. January 1989, s. 7. Informace o článku dostupné na LDOS Version 3, Timex/Sinclair.com, cit. 2024-06-03. Dostupné online. ((anglicky)) 
  17. CHAMBERS, George. Larken LOAD/SAVE Routines. Sinc-Link. 1988, roč. 6, čís. 1 (Jan-Feb), s. 11. V článku je původní LKDOS nazýván jako LDOS64. Dostupné online. ((anglicky)) 
  18. ZANNESE, Renato. Diskdriving with a Joystick. Sinc-Link. 1988, roč. 6, čís. 1 (Jan-Feb), s. 9. Informace o článku dostupné na Diskdriving with a Joystick, Timex/Sinclair.com, cit. 2024-06-11. Dostupné online. ((anglicky)) 
  19. Sinclair Hardware Fact Sheet, version 1.2 na World of Spectrum, původně dostupné na [1][nedostupný zdroj]
  20. a b c d PEDERSEN, Bill. LKDOS vs JLO SAFE. Update Magazine. April 1992, s. 4-5. Informace o článku dostupné na LKDOS vs JLO SAFE, Timex/Sinclair.com, cit. 2024-07-23. Dostupné online. ((anglicky)) 
  21. a b c d e f g h i j GUNHOUSE, Steven. Setting Up LKDOS User-Defined Commands. Sinc-Link. 1989, roč. 9, čís. 5 (Sept.-Oct. '91), s. 14-16. Informace o článku dostupné na Setting up LKDOS User-Defined Commands, Timex/Sinclair.com, cit. 2024-06-03. Dostupné online. ((anglicky)) 
  22. a b c d e f g h i j k l m n KENNY, Larry. Adding the Larken RAMDisk to an Existing LKDOS System. [s.l.]: [s.n.], 1985. Dostupné online. S. 4. ((anglicky)) Informace o monografii dostupné na Adding the Larken RAMDisk to an Existing LKDOS System, Timex/Sinclair.com, cit. 2024-06-03. 
  23. G.F.C. Larken Ramdisk (Bug Alert). Sinc-Link. 1988, roč. 7, čís. 3 (May-June '89), s. 20. Informace o článku dostupné na LARKEN RAMdisk (Bug Alert), Timex/Sinclair.com, cit. 2024-08-18. Dostupné online. ((anglicky)) 
  24. a b CHAMBERS, George. Larken Tip. Sinc-Link. 1988, roč. 7, čís. 3 (May-June '89), s. 20. Informace o článku dostupné na Larken Tip, Timex/Sinclair.com, cit. 2024-08-18. Dostupné online. ((anglicky)) 

Externí odkazy

[editovat | editovat zdroj]