Av: Anders Franz`n <5258> 1985-05-08 21.44.24 +-----------------------+ ! ! ! TED av medlem <5258> ! ! Teknisk beskrivning ! ! Stockholm maj 1985 ! ! ! +-----------------------+ Denna tekniska beskrivning behandlar TED's logik samt hur programmet, som {r skrivet i assembler, {r uppbyggt. 1 Datafl|de ------------ Texten i editorn slussas fr}n tangent- bordet via en buffert till RAM-minnet d{r den sparas. Fl|det g}r }t andra h}llet d} en rad h{mtas fr}n minnet via bufferten till bildsk{rmen. F|r- h}llandet illustreras av denna bild: tangent ---> buffert ---> minne (TANGENT) (FR]NBUFF) minne ---> buffert ---> sk{rm (TILLBUFF) (EDITOR) (SKRIVRAD) Texten inom parenteserna anger namnen p} de rutiner som administrerar trans- porten av text. Anledningen till upp- delningen av fl|det {r tidsvinsten. D} en uppdatering av en rad sker fr}n tangentbordet uppdateras bufferten som dock ej sparas i minnet just nu. Detta sker f|rst d} vi flyttar mark|ren till en annan rad eller g}r ur editorn. Om en rad ska skrivas ut p} sk{rmen s} finns den kanske redan i bufferten. D} beh|ver s|kning ej ske i minnet. Enligt bilden finns tv} rutiner f|r utskrift av rader p} bildsk{rm. EDITOR fyller hela bildsk{rmen med en sida (flera rader) medan SKRIVRAD skriver ut senaste uppdaterade raden (en rad). 2 Datalagring ---------------- Texten packas innan den placeras i minnet. Det inneb{r att flera mellan- slag i en f|ljd ers{tts med en byte. Denna byte, vars sjunde bit {r ett- st{lld, inneh}ller antalet space. Ev mellanslag sist i en rad lagras ej. Raderna ligger packade i minnet sekventiellt. Formatet p} en rad {r: F|rsta byten talar om l{ngden p} den packade raden och l{ngdbyten. Efter den sista raden ligger en nolla som talar om att inga fler rader finns. 3 Viktiga rutiner ------------------ H{r f|ljer en beskrivning av vad vissa viktiga rutiner g|r: INIT Avs{tter RAM-minne }t editorn, l{nkar in "TED:" i enhetslista och initierar vissa variabler. MENY Visar meny p} sk{rmen samt hoppar till rutin beroende p} |nskem}l av anv{ndare. L[SFIL L{ser in en textfil till editorn. SKRIVFIL Sparar texten i editorn p} fil. FILCONTR Anropas d} fil ska |ppnas, l{sas, skrivas eller st{ngas. Rutinen tar hand om ev fel som annars skulle gett BASIC- tolken kommandot. Tack vare detta g}r vi ej ut ur editorn t ex d} fil ej hittas. EDITOR Skriver ut en sida p} bild- sk{rmen. Anropar rutinen TANGENT. TANGENT Placerar mark|r p} bildsk{rm, v{ntar p} tangenttryck samt hoppar till r{tt tangentrutin. D} t ex h|gerpil trycks ned sker ett hopp till h|gerpils- rutinen. TECKEN Uppdaterar rad i buffert samt skriver raden p} sk{rm (anropar rutinen SKRIVRAD). TILLBUFF Letar reda p} |nskad rad och packar upp och placerar den i bufferten. Om raden redan finns i bufferten sker ej s|kning och uppackning. FR]NBUFF Packar raden i bufferten, sorterar in den i minnet, kontrollerar om minnet {r fullt samt tar bort ev blankrader sist i texten. 4 Viktiga variabler -------------------- F|r att fungera anv{nder sig TED av flera variabler. H{r beskrivs n}gra av dem: TXT Adress till den plats i minnet d{r den sekventiella m{ngden av packade rader b|rjar. EOT Pekar p} byten efter den sista packade raden. Den byten inne- h}ller alltid en nolla. MAX Det h|gsta v{rdet som EOT f}r anta. Ber{knas av INIT. RAD Radnummer p} den rad d{r mark|r befinner sig. KOL Kolumn som mark|r befinner sig i. BRAD Nummer p} den rad som befinner sig i bufferten. PRAD Adress till den packade raden i minnet f|r den rad som finns i bufferten. \VERST Radnr p} den rad som visas |verst p} sida d} editorn {r satt i scrollmode. \VERST m}ste uppdateras varje g}ng scroll sker. Det finns ingen variabel som ber{ttar vilken sida vi befinner oss p} i texten. Sidnumret ber{knas av rutinen EDITOR varje g}ng den anropas. F|rutom variabler finns det dessutom flaggor som t ex talar om hurvida INS- mode {r p} eller inte. 5 K{llkoden ------------ K{llkoden till TED {r uppdelad i }tta filer. Om n}gon tycker att k{llkoden ser lustig ut beror det p} att den {r avsedd f|r en assemblator kallad ASS som {r hemgjord. Det torde vara ganska l{tt att anpassa programmet f|r ABC800. Det som beh|ver {ndras {r antagligen tilldelningen av minnesutrymme, bildsk{rmshantering och filhantering. Programmets logik b|r f|rbli of|r{ndrad. Det kan vara bra med en TED-standard !