1 REM Ins{nd av Kristoffer Eriksson <5357>    1988-06-21 18.57.50 (KERMIT)
; Fil: WINDOW.ASM 
; F|r: ABC800-familjen, se WINDOW.INF. 
; Av: Kristoffer Eriksson, "SKE" <5357>. 
; 
;-Ver--/-Datum----/-Sign-/-Kommentar---------------------------------- 
; X.00 / 84-11-21 / SKE  / WINDOW.ASM 
; 1.00 / 85-04-28 / SKE  / Klart 
; 2.00 / 88-04-16 / SKE  / \versyn. Frisl{ppning till ABC-klubben. 
;                          Mer kommentarer. Mer utskrifter vid inladdning. 
;                          Url{nkning med KILL "WND:". LU.SWID inf|rd. 
;                          F|nster slutar nu inte fungera n{r WIDTH p} CON: 
;                          {ndras. Editering av felaktig inmatning skrivs inte 
;                          l{ngre |ver av n{sta utskrift. ATTRIBUTE 4 {r inte 
;                          l{ngre fast satt i drivrutinerna. 
; 
; 
; Huvudfil som INCLUDE:ar |vriga delfiler, definierar konstanter och genomf|r 
; initiering. 
; 
; WINDOW skapar enheten WND: via vilken man kan |ppna f|nster p} bildsk{rmen. 
; F|nster |ppnas med filnamn WND:RRKKHHBB.M (Rad,kolumn,h|jd,bredd(,mode)) 
; Se vidare WINDOW.INF. 

; --------- Systemadresser. -------- 
; 
; CRT.LU {r systemets vanliga LU-block f|r sk{rmen. Isoleras h{r s} att bara 
; PROM-rutinerna utnyttjar den, medan enheten CON: och f|nstren f}r egna som 
; kopieras fram och tillbaka efter behov. PROM-rutinerna utnyttjas i botten av 
; alla f|nsterrutinerna.

ConWrite:   =     11 
Rst.Err:    =     16 
BasicTyp:   =     39 
Typ.806:    =     4                ; Basic-typ som ABC806 har. 
ConRead:    =     5 
Y.Botm:     =     65292            ; Botten av Basic-minne. 
Y.Top:      =     65294            ; Minnestak. 
Y.ComTop:   =     65328            ; Toppen av COMMON-variabler. 
LUCh:       =     65344            ; B|rjan av LU-listan. 
CRT.LU:     =     65356            ; Bildsk{rms-LU. 
DevTbA:     =     65403            ; B|rjan av enhetslistan. 
ConsI:      =     65424 


; --------- Offset i LU-block. -------- 
; 
; Ut|ver de vanliga variablerna i CON:s LU-block, har tillagts ett antal 
; egna f|r f|nsterhanteringen. 
; 
; LU.STAT: LU-status  b7  LUS.WIN   1=F|nster, 0=Vanliga sk{rmen (Till{gg) 
;                     b5  LUS.FAST  Anv{nds av CAS:.          (Ej p} CON:) 
;                     b4  LUS.ERR   Fel under st{ngning.      (Ej p} CON:) 
;                     b3  LUS.WRBL  Buffert uppdaterad.       (Ej p} CON:) 
;                     b2  LUS.IACT  Interaktiv fil, INPUT ger "?". 
;                     b1  LUS.PERM  Permanent, st{ngs ej av CLOSE utan filnr. 
;                     b0  LUS.OPN   Filen {r |ppen. 
; 
; LU.OUT53 och LU.CSIZE anv{nds p} ABC806. Inf|rlivas i WINDOW. 
; Inga officiella namn k{nda. 
; 
; LU.OUT53 (65369)   Aktuellt bildsk{rmsattribut, l{ggs ut med OUT 53. 
;                     b7            0= FLSH, 1= STDY 
;                     b6            0= ULN,  1= NULN 
;                     b5-b3         Bakgrundsf{rg 
;                     b2-b0         F|rgrundsf{rg 
; 
; LU.CSIZE (65370)   Ytterligare attributbittar. Avg|r hantering vid utskrift. 
;                     b3            0= WIDTH>40, 1= WIDTH<=40 
;                     b2            1= Dubbel bredd, EL 
;                     b1            1= Dubbel h|jd, DBLE 
;                     b0            0= Text, 1= Grafik 
; 
; LU.OLDWID anv{nds av ABC806 f|r att uppt{cka n{r sk{rmvidden {ndrats, varvid
; vissa attribut i LU.CSIZE justeras. +21 anv{nds till n}got av ABC802. 
; 
; Variablerna markerade med "Ny" nedan finnd bara i WINDOW, och anv{nds bara 
; i {kta f|nster (b7 i LU.STAT satt). 
; 
; LU.SWID samt b3 i LU.CSIZE anger vilken sk{rmvidd som g{llde n{r f|nstret 
; |ppnades. Denna anv{nds alltid vid access till f|nstret, oavsett vilken som 
; g{ller f|r hela sk{rmen, och kan inte {ndras efter |ppning. 
; 
; LU.COL0, LU.LINE0, LU.WID, LU.HIGHT anger f|nstrets placering och storlek. 
; 
; LU.ATTR anger ATTRIBUTE-v{rdet som g{llde n{r f|nstret |ppnades. Den kan 
; inte heller {ndras senare. 
; 
; LU.OUT53 och LU.CSIZE utom b3, kopieras fr}n sk{rmens aktuella v{rden n{r 
; ett f|nster |ppnas, och kan {ndras av styrkoder vid utskrift p} 806. P} 
; andra modeller anv{nds dessa inte av PROM-rutinerna, s} inget h{nder med 
; dem. b3 i LU.CSIZE anv{nds dock av WINDOW. 
; 
; LU.WSTAT inneh}ller flaggor (en flagga) f|r f|nsterhanteringen, som s{tts 
; enligt parametrarna i filnamnet vid |ppning. 

LU.STAT:    =    +3                ; Status. 
LU.DCB:     =    +4                ; Plats i enhetslistan. Tv} byte. 
LU.POS:     =    +6 
LU.COL:     =     LU.POS 
LU.LINE:    =     LU.POS + 1 
LU.WID:     =    +8                ; Sk{rm- eller f|nster-bredd. Tv} byte 
LU.FC:      =    +10               ; Aktuell/senast utf|rd IO-operation 
LU.SWID:    =    +11               ; Ny!      (LU.ISAMB) 
LU.OUT53:   =    +13               ; 806      (LU.EOF) 
LU.CSIZE:   =    +14               ; 806        -"- 
LU.OLDWID:  =    +15               ; 806,802? (LU.BUFN) 
LU.HIGHT:   =    +16               ; Ny!        -"- 
LU.COL0:    =    +17               ; Ny!      (LU.RNDRC) 
LU.LINE0:   =    +18               ; Ny!        -"- 
LU.ATTR:    =    +19               ; Ny!      (LU.RNDO) 
LU.WSTAT:   =    +20               ; Ny!      (LU.BUFH) 

LUS.WIN:    =     7                ; LU.STAT  Filen {r ett {kta f|nster. 
LUW.ERAS:   =     0                ; LU.WSTAT Radera f|nstret vid CLOSE. 


; --------- Nya l{nkar i enhetslistan ------- 
; 
; Enheten WND: l{ggs upp. [ven en ny CON: l{ggs upp. Nya CON: och WND: {r 
; synonyma och hanteras av samma drivrutin. Egentligen skulle det r{cka med 
; bara CON:, men genom WND:s existens kan man avg|ra om WINDOW {r inladdat, 
; samt uttrycka sina program klarare. 
; 
; CON: f}r ett nytt LU-block, s} att den skiljs fr}n CRT.LU som anv{nds 
; gemensamt av alla |ppna f|nster. CON.LU {r allts} privat f|r bara CON:. 

WndBotm:    ; L{gsta anv{nda adress. 

DevL{nk1:   DEFW  0                ; Plats f|r vidare-pekare 
DevNamn:    DEFM  "WND" 
            DEFW  Entry.WND 

DevL{nk2:   DEFW  DevL{nk1         ; DevTbA ska peka hit 
            DEFM  "CON" 
DevEntry:   DEFW  Entry.WND        ; Ny drivrutin f|r CON-enheten 

CON.LU:     DEFS  23,0             ; Bildsk{rms-LU och CON-LU skiljs }t. 


; --------- INCLUDE av andra filer --------- 

     INCLUDE WNDMAIN      ; Entry.WND, LUInit, CrtPos, $$ATTR.1-3, $$Entry.CRT 
     INCLUDE WNDWRITE     ; WndWr#Put, WndWr.1, CrtWr.1, AttrWrap 
     INCLUDE WNDINPUT     ; WndInput, INPUT 
     INCLUDE WNDOPEN      ; OPEN, CLOSE, RitaRam, $$ATTR.4 
     INCLUDE WNDSCRL      ; Scroll, BackScroll, CLS, CrtAdr 
     INCLUDE WNDSAVE      ; WndSave, WndRestore 

WndTop:                   ; H|gsta anv{nda adress 


; --------- Initiering av inladdad kod ----- 

            INCLUDE WNDINIT        ; Init. 
            INCLUDE FINDDEV        ; FindDev - S|k enhet i enhetslistan. 
            INCLUDE I2ASC          ; I2ASC   - Heltal DE => ASCII (HL). 
            INCLUDE ENDINIT        ; Chain.Clr, Chain.Load. 
            INCLUDE CLINEPAR       ; ClinePar. 

            REL PUSH Init 
            REL CALL 
            ORG Init 
            INCLUDE ENDREL 
