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 !