1 REM Ins{nd av Kristoffer Eriksson <5357> 1988-06-21 19.00.07 (KERMIT) ; Fil: WNDINPUT.ASM ; Av: Kristoffer Eriksson, "SKE" <5357>. ; ;-Ver--/-Datum----/-Sign-/-Kommentar---------------------------------- ; X.00 / 84-12-03 / SKE / WNDINPUT ; 1.00 / 85-05-28 / SKE / ; 2.00 / 88-04-17 / SKE / Anv{nds nu {ven n{r CON: inte {r ett f|nster. ; DE beh|ver nog inte skyddas, s} n}gra PUSH-POP ; har blivit indragna. ; ; Kopia av input-rutinen i PROM f|r CON: (CONREAD), modifierad f|r att {ven ; klara f|nster. ; ; (TABPTR)- och DE-initiering g|rs bara vid anrop direkt fr}n drivrutin- ; interfacet. Vid andra tillf{llen har man redan v{rden d{r, som ger m|jlighet ; att editera tidigare inmatad text. Se ConsI.Ny i WNDMAIN. ; ; HL = Inbuffert ; DE = Default-str{ng, tempor{rt ; C = Max inmatningsl{ngd ; B = Antal kvarvarande platser i inbufferten, teckennedr{kning. EXTERN WndInput, INPUT LUS.WIN: = 7 ; LU.STAT Filen {r ett {kta f|nster. IOCM.WRA: = 4 ; Funktionskod PRINT. IOCM.RDA: = 3 ; Funktionskod INPUT. IOCM.RDC: = 5 ; Funktionskod GET. TABPTR: = 65504 ; Intern variabel, defaultstr{ngspekare. ConsI: = 65424 ; GET-rutin ; Interface till drivrutiner. ; LU-initiering g|rs vid utskrift i WndInput, s} det beh|vs inte h{r. INPUT: LD DE,CR$ LD (TABPTR),DE ; Inmatningsrutin. WndInput: LD B,C Loop1: CALL Backa ; Backa vid <- och vid full buffert. Loop2: PUSH HL PUSH BC LD HL,Buf LD BC,1 LD A,IOCM.RDC CALL Entry.WND ; GET, med r{tt sk{rmvidd och position. LD A,(Buf) POP BC POP HL CP 3 JR Z Klart CP 13 CR$: = * - 1 JR Z Klart CP 24 JR Z CE#FF CP 12 JR Z CE#FF CP 11 ; Reverse LF JR Z CE#FF CP 8 JR Z Loop1 CP 9 JR NZ X2 LD DE,(TABPTR) ; ->, h{mta n{sta tecken ur default-buffert LD A,(DE) CP 13 JR Z Loop2 INC DE LD (TABPTR),DE X2: CP 32 JR C Loop2 CP 128 JR NC PF LD (HL),A ; Lagra tecknet i inbufferten. INC HL Visa: PUSH BC ; Visa det inmatade tecknet i A. PUSH HL LD HL,Buf LD (HL),A LD BC,1 LD A,IOCM.WRA CALL Entry.WND ; Utskrift av tecken i A. POP HL POP BC DJNZ Loop2 ; Forts{tt om bufferten inte {r full. JR Loop1 ; Radera annars senaste tecken o forts{tt. CE#FF: PUSH AF BLoop: CALL Backa ; Rensa hela inbufferten, och radera JR NZ BLoop ; p} sk{rmen, f|r CE och FF. POP AF CP 24 JR Z Loop2 INC B JR Visa ; F|r FF: Visa FF s} sk{rmen rensas. PF: LD A,53 ; Funktionstangenter ger Error 53. SCF Klart: LD (HL),13 ;Avsluta inbufferten. LD (IX+LU.FC),IOCM.RDA ; ]terst{ll till "INPUT" LD DE,(TABPTR) ; Ifall n}gon rutin v{ntar sig att DE ska RET ; vara kvar. ; Backa ett tecken p} sk{rm och i inbuffert. Backa: LD A,B CP C RET Z PUSH HL PUSH BC LD HL,Backa$ LD BC,3 LD A,IOCM.WRA CALL Entry.WND ; Utskrift p} samma fil som inmatning POP BC ; g|rs fr}n, s} LU-hanteringen st{mmer. POP HL DEC HL INC B RET Backa$: DEFB 8," ",8 Buf: DEFB 0 ; CONSI- och PRINT-buffert.