1 REM Ins{nd av Kristoffer Eriksson SYSOP <5357>    1986-11-10 03.11.32 (DUMP)
; Fil: BKSCROLL.ASM
; Av:  Kristoffer Eriksson, "SKE" <5357>, 1986.
; F|r: ABC800-serien.
;
;-Ver--/-Datum----/-Sign-/-Kommentar----------------------------------
; 1.00 / 86-11-10 / SKE  / BKSCROLL
;
; Bak}tscroll av sk{rmen. En rutin f|r vanliga 80-teckenssk{rmar, och en
; som f|rhoppningsvis fungerar p} ABC800C. Automatiskt val av rutin g|rs,
; vilket ocks} "f|rhoppningsvis" fungerar.
;
; Anv{nds i VISAUTIL f|r ABC800.

MaskinTyp:  =     39
LineWidth:  =     65364
AttribPort: =     53

BackScroll: LD    A,(MaskinTyp)       ; Anropspunkt. Avg|r vilken typ av
            CP    2                   ; bildminne som anv{nds. 2 = ABC800C (?)
            JR    Z,Tkn40
            CP    10                  ; 10 = ABC800 obest{md typ?, 1 = ABC800M
            JR    NZ,Tkn80
            LD    A,(LineWidth)
            CP    41
            JR    C,Tkn40

Tkn80:      IN    A,(AttribPort)
            EX    AF,AF'
            LD    HL,30720 + (23*80) - 1 ;Fr}n sista radens sista tecken.
            LD    DE,30720 + (24*80) - 1 ;Till n{st sista radens sista tecken.
            LD    BC,23*80               ;Flytta 23 rader.
            LDDR
            LD    DE,30720               ;Blanka |versta raden.
            LD    BC,79
            XOR   A
            OUT   (AttribPort),A      ; Den nya raden ska ha attribut 0.
            CALL  BlankaRad
            EX    AF,AF'
            OUT   (AttribPort),A      ; ]terst{ll attributporten.
            RET

Tkn40:      LD    IX,RadTabellSlut
            LD    A,24
Loop:       LD    BC,40
            LD    E,(IX-2)
            LD    D,(IX-1)
            DEC   A
            JP    Z,BlankaRad1
            LD    L,(IX-4)
            LD    H,(IX-3)
            LDIR
            DEC   IX
            DEC   IX
            JR    Loop

BlankaRad1: DEC   BC
BlankaRad:  LD    H,D
            LD    L,E
            LD    (HL),' '
            INC   DE
            LDIR
            RET

RadTabell:  DEFW  31744
            DEFW  31872
            DEFW  32000
            DEFW  32128
            DEFW  32256
            DEFW  32384
            DEFW  32512
            DEFW  32640
            DEFW  31784
            DEFW  31912
            DEFW  32040
            DEFW  32168
            DEFW  32296
            DEFW  32424
            DEFW  32552
            DEFW  32680
            DEFW  31824
            DEFW  31952
            DEFW  32080
            DEFW  32208
            DEFW  32336
            DEFW  32464
            DEFW  32592
            DEFW  32720
RadTabellSlut:
