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.
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]
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]
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]
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 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:
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;.
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]
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.[15] 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í.[15] Tiskový ovladač je až na 50 bytů celý uložen v EPROM, 50 bytů v RAM je automaticky inicializováno.[15] Ovladač umožňuje nastavit levý okraj, automatický line feed a délku řádku.[15] 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.[15] Pro tisk je možné použít buď paralelní tiskárnu nebo tiskárnu TS 2040 nebo obě tiskárny současně.[15] NMI nově umožňuje vybrat mezi uložením obsahu celé paměti včetně obsahu obrazovky nebo celé paměti bez obsahu obrazovky.[15]
V roce 1988 vytvořil Bob Mitchel nezávislé rutiny pro LOAD a SAVE, aby nemusel spoléhat na původní LKDOS.[16]
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.[17]
adresa | funkce | |
---|---|---|
138 | 008A | čtení řetězce na adrese 8226 a vyhodnocení, jestli se jedná o platný název souboru[19] |
141 | 008D | nalezení ukončovacího znaku příkazu Basicu[19] |
144 | 0090 | čtení čísla a jeho uložení do registru BC[19] |
156 | 0096 | čtení řetězce na adrese 8226 o délce nejvýše 10 znaků[19] |
186 | 00BA | zakázání kártridže LKDOSu a ukončení[19] |
00C6 | operace SAVE[19] | |
00CC | operace LOAD[19] |
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).[19] rst 8 v LKDOSu také funguje normálně.[19]
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.[20] 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).[20] 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).[20] Ten bylo nutné připojit k desce tištěného spoje samostatným vodičem.[20]
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.[20]
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í:[20]
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:[20]
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.[20] 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.[20]
Obsluha ramdisku byla přidána do LKDOS EPROM verze 2.[20] 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.[20] Kvůli obsluze ramdisku, byl z EPROM odstraněna proporcionální znaková sada pro okna, která byla přítomna v EPROM verze 1.[20] 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
.[20]
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ů.[20]
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]
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ř.PRINT #4
také mohlo kolidovat s některými jinými perifériemi, např. se Zebra Talkerem, který #4 používal také.[7]
PRINT #4: POKE 8200,adresa: LET b=USR 110
, kde adresa je adresa volaného příkazu.[8]
PRINT #4: GO TO 4: PRINT #4: NEW
[9]