; TEXT-EDITOR                       1/8
; Anders Franz`n <5258>
; Stockholm april 1985
; Uppdaterad juli 1985


SPACE    EQU  34:74     Mellanslag
DEVROT   EQU  254:10
BOFA     EQU  254:28
EOFA     EQU  254:30
HEAP     EQU  254:32
STACK    EQU  254:39
BUFF1    EQU  254:64    160 bytes
BUFF2    EQU  254:224   160 bytes


; Initieringsrutinen placeras i en
; kassettbuffert, d} initieringen {r
; gjord beh|vs ju ej rutinen l{ngre.
; P} detta vis sparas drygt 100 bytes.

         ORG  251:0     Kassettbuff ett

INIT     LD   HL,(STACK) Spara 256 bytes
         LD   DE,1:0     f|r stack!
         AND  A
         SBC  HL,DE
         LD   (HL),1    NEW
         LD   (BOFA),HL
         LD   (EOFA),HL
         INC  HL
         LD   (HEAP),HL CLEAR
         DEC  HL
         DEC  HL
         LD   (MAX),HL  Max f|r text
         LD   HL,SLUT   Start f|r text
         LD   (TXT),HL
         LD   (EOT),HL  Sista tkn i text
         LD   (HL),0    Slutm{rke
         LD   A,(1:216) Sk{rmbredd 40/80
         LD   (L[NGD),A S{tt radl{ngd
         LD   HL,FILNAMN Inget default
         LD   (HL),13    filnamn finns
         LD   HL,(DEVROT)
         LD   DE,L[NK
INIT1    LD   A,H       Slut p}
         OR   L         enhets-lista ?
         JRZ  INIT2     Ja, hoppa
         PUSH HL
         AND  A
         SBC  HL,DE     Finns TED: redan
         POP  HL        i listan ?
         JPZ  MENY      Ja, hoppa
         LD   A,(HL)    Adress till
         INC  HL        n{sta l{nk
         LD   H,(HL)
         LD   L,A
         JR   INIT1     Leta vidare

INIT2    LD   HL,(DEVROT)
         LD   (L[NK),HL Spara TED: i
         LD   HL,L[NK   enhetslistan
         LD   (DEVROT),HL
         JP   MENY


; Nu f|ljer huvudprogrammet som alltid
; ligger under BOFA som h|jts av INIT.

;        ORG  128:0   anv{nds om 32K
         ORG  192:0   annars f|r 16K


;Fasta hoppadresser f|r extra rutiner
         JP   R[KNA
         JP   TILLBUFF
         JP   SPARRAD

JPTAB    JP   MENY
         JP   MENY
         JP   MENY
         JP   MENY
         JP   MENY
         JP   MENY
         JP   MENY
         JP   MENY
         JP   MENY

L[NK     DEFS 2
         DEFM "TED"
         DEFW JPTAB

; R{kna antal rader som finns i TED
R[KNA    XOR  A
         LD   E,A
         LD   D,A
         LD   B,A
         LD   HL,(TXT)  Peka p} rad ett
         DEC  DE
R[K1     INC  DE        \ka r{knare
         LD   C,(HL)    L{ngd p} raden
         ADD  HL,BC     Peka p} n{sta
         CP   C         Slut?
         JRNZ R[K1      Nej, upprepa
         RET


; Diverse variabler:

TEDSTACK DEFW 0  Stackv{rde vid MENY
BRAD     DEFW 0  Rad som finns i buffert
PRAD     DEFW 0  Den radens prad
SRAD     DEFW 0  Rad p} sk{rm f|r BRAD
SAKNAS   DEFW 0  Antal saknade rader
TXT      DEFW 0  Pekar p} f|rsta praden
EOT      DEFW 0  Byten efter sista prad
MAX      DEFW 0  Maxv{rde f|r EOT
RAD      DEFW 1  Rad som mark|r {r p}
KOL      DEFW 0  dito kolumn
L[NGD    DEFW 0  L{ngd p} rader
\VERST   DEFW 0  Rad |verst p} sida
SIDSTORL DEFW 0  Antal rader p} en sida
SIDNR    DEFW 0  Aktuell sida som visas
HMARG    DEFW 0  Position h|germarginal
S\KACK   DEFW 0  Antal lyckade s|kningar
FILFLG   DEFB 0  Flagga "fil l{ses"
MAXFLG   DEFB 0  Flagga "KOL {r p} max"
SPRFLG   DEFB 0  Flagga "text {ndrad"
SCRFLG   DEFB 0  Flagga "scroll-mode"
T\MFLG   DEFB 0  Flagga "t|m sk{rm"
INSFLG   DEFB 0  Flagga "insert-mode"
S\KFLG   DEFB 0  Flagga "s|kning p}g}r"
SIDFLG   DEFB 0  Flagga "sidvisning"
BYTFLG   DEFB 0  Flagga "utbyte p}g}r"
KOPFLG   DEFB 0  Flagga "kopiering"
ORDFLG   DEFB 0  Flagga "ord-mode"
KLKFLG   DEFB 0  Flagga "tangentklick"
HLPFLG   DEFB 1  Flagga "aktuell hlprad"

FILNAMN  DEFS 25 Plats f|r filnamn

;Observera att platsen f|r filnamnet
;{r l{ngre {n max antal tecken att
;knappa in. Detta f|r att extension
;".TXT" ska kunna l{ggas sist utan att
;TAB-raden nedan f|rst|rs !

TABRAD1  DEFM "1...5...10...15...20"
         DEFM "...25...30...35...40"
         DEFM "...45...50...55...60"
         DEFM "...65...70...75...80"
         DEFM "...85...90...95..100"
         DEFM "..105..110..115..120"
         DEFM "..125..130..135..140"
         DEFM "..145..150..155..160"
TABRAD2  DEFM "1...5...10...15...20"
         DEFM "...25...30...35...40"
         DEFM "...45...50...55...60"
         DEFM "...65...70...75...80"
         DEFM "...85...90...95..100"
         DEFM "..105..110..115..120"
         DEFM "..125..130..135..140"
         DEFM "..145..150..155..160"
