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