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 !