1 REM Ins{nd av Kristoffer Eriksson SYSOP <5357>    1986-08-06 12.02.49 (DUMP)
CONFI; Fil: CONFIL0.ASM
; Av:  Kristoffer Eriksson, "SKE" <5357>, 1986.
;
;-Ver--/-Datum----/-Sign-/-Kommentar----------------------------------
; 1.00 / 86-08-04 / SKE  /
; 1.01 / 86-08-06 / SKE  / Kolumnr{knaren kopieras mellan LU.
; 1.02 / 86-08-07 / SKE  / Uppstartmeddelande p} fil nummer 0 (ej LU 65356).
;
; L{gger upp en ny enhet "CON:" som alltid k|r p} normal-LU:n f|r fil0,
; s} att utskrift p} "CON:" fungerar {ven i en remoterutin.

Y.LUCH:     =     65344               ; Start av LU-kedjan.
Crt.LU:     =     65356               ; Bildsk{rmens LU (normalt fil 0).
Crt.WID:    =     65364               ; Skr{mbredd.
LU.LU:      =    +2                   ; Filnummeroffset i LU-block.
LU.DCB:     =    +4                   ; Entrypoint.
LU.POS:     =    +6                   ; Radposition.

PtrSav.BT:  DEFW  0                   ; Gamla pekare: Y.BOTM

Dev.L{nk:   DEFW  0                   ; Plats f|r vidarepekaren i listan.
            DEFM  "CON"               ; Enhetens namn.
            DEFW  Drivrutin

Temp:       DEFW  0                   ; Lagrar undan IX.

Drivrutin:  CP    2
            RET Z                     ; Inga {ndringar vid CLOSE.
            JR  C OPEN
            PUSH  HL
            PUSH  AF
            LD    (Temp),IX
            LD    HL,(Y.LUCH)
LULoop:     LD    A,H                 ; S|k upp fil nr 0.
            OR    L
            JR Z  NoFile0             ; Avbryt om listan tar slut.
            PUSH  HL
            POP   IX
            LD    L,(IX)
            LD    H,(IX+1)
            LD    A,(IX+LU.LU)
            AND   A
            JR NZ LULoop
            LD    L,(IX+LU.DCB)       ; Entrypoint f|r fil 0.
            LD    H,(IX+LU.DCB+1)
            LD    A,(HL)
            INC   HL
            LD    H,(HL)
            LD    L,A                 ; HL = Anropsadress ur enhetslistan.
            LD    (CallAdr+1),HL
            POP   AF
            POP   HL
CallAdr:    CALL  0                   ; Anropa drivrutinen f|r fil 0.
            PUSH  AF
            LD    A,(IX+LU.Pos)       ; Kopiera aktuell position.
            LD    IX,(Temp)           ; ]terst{ll IX.
            LD    (IX+LU.Pos),A
            POP   AF
            RET

OPEN:       LD    A,(CRT.WID)         ; Vid |ppning C <- bredd.
            LD    C,A
            AND   A
            RET

NoFile0:    POP   AF
            POP   HL
            LD    A,32                ; Error 32 = Filen ej |ppnad.
            SCF
            LD    IX,(Temp)
            RET

;_ Initiering                             _
Conwrite:   =     11
HLbuf1:     =     81
IO:         =     90
Y.Botm:     =     65292               ; Botten av BASIC-minnet.
Y.Comtop:   =     65328               ; Toppen av COMMON-variablerna.
DevTba:     =     65403               ; Enhetslistan.

Init:       CALL  Clinepar            ; C = L{ngd, A = F|rsta tecken, Carry
            CALL  Chain.Clr
            CALL  Chain.Load         ; Chain-fil sist p} raden.

L{nkain:    LD    HL,(DevTba)
            LD    (Dev.L{nk),HL
            LD    HL,Dev.L{nk
            LD    (DevTba),HL

            LD    HL,(Y.Botm)
            LD    (Ptrsav.Bt),HL
            LD    HL,Init             ; Skydda programmet fr}n |verskrivning.
            LD    (Y.Botm),HL
            LD    (Y.Comtop),HL
            LD    IX,Crt.LU          ; Anv{nds som "huvud"-LU till utskriften.
            LD    HL,Itext
            LD    BC,Itextend-Itext
            LD    A,4
            CALL  Drivrutin           ; Skriv meddelandet p} fil 0.
            RET

            INCLUDE CLINEPAR         ; Hitta kommandoraden.
            INCLUDE ENDINIT          ; Initiering av filnamn }t ENDREL

Itext:      DEFM  "CONFIL0 Ver 1.02 har laddats! Av Kristoffer Eriksson 1986."
            DEFB  13, 10
Itextend:
