; FNInput. L{ser text fr}n tangentbordet. ; (c) Copyright 85-07-17 Jan-]ke Larsson. ; ORG 0 LD C,0 ; kolumn. LD B,C ; Save start pos. (kolumn) LD H,D ; Save start address. LD L,E ; ; LOOP: XOR A LD (65506),A ; Nollst{ll KEYFLAG LD (65507),A ; Nollst{ll KEYBUFF LD A,C LD (65362),A ; pos. CALL 2 ; GETCH. ; ; Kolla om styrkommando. ; CP 8 ; <- JR Z,BACK CP 9 ; -> JR Z,FRAM CP 13 ; RETURN RET Z CP 24 ; CTRL-X JR Z,CTRLX CP 12 ; CTRL-L JR Z,CTRLL CP 192 ; Pf1 JR Z,PF1 CP 193 ; Pf2 JR Z,PF2 ; ; Ignorera paranteser vid inmatning. ; CP 40 ; '(' JR Z,LOOP CP 41 ; ')' JR Z,LOOP ; ; Kolla om ascii v{rden <32 eller >127, is}fall ignore. ; CP 32 JR C,LOOP CP 128 JR NC,LOOP ; ; Eka skrivbara tkn. ; EX DE,HL LD (HL),A EX DE,HL INC DE ; Next pos. INC C ; JR KOLL ; ; St{ll mark|r i f|rsta pos. (radera ej) ; CTRLX: LD D,H LD E,L LD C,B JR FIX ; ; St{ll mark|r i f|rsta pos. (radera inmatad text) ; CTRLL: LD D,H LD E,L ERASE: LD (HL),32 ; L{gg in space. INC HL LD A,(HL) ; Kolla om h|gerparantes. CP 41 ; JR NZ,ERASE ; Is}fall, klart. EX DE,HL JR CTRLX ; ; BACK: DEC C LD A,C LD (65362),A ; pos. DEC DE EX DE,HL LD A,(HL) EX DE,HL CP 40 JR NZ,LOOP INC DE INC C JR FIX ; FRAM: INC C LD A,C LD (65362),A ; POS. INC DE KOLL: EX DE,HL LD A,(HL) EX DE,HL CP 41 JR NZ,LOOP DEC DE DEC C ; FIX: LD A,C LD (65362),A JR LOOP ; ; Pf1, drarihop text efter mark|ren, raderar tkn. vid mark|r. ; PF1: EX DE,HL PUSH DE LD D,H LD E,L PUSH HL FLYT: INC HL LD A,(HL) CP 41 JR Z,FLYTS LD (DE),A INC DE JR FLYT FLYTS: DEC HL LD (HL),32 POP HL POP DE EX DE,HL JR FIX ; ; Pf2, skjuteris{r texten efter mark|ren, sista tkn. raderas. ; PF2: EX DE,HL PUSH DE LD D,H LD E,L PUSH BC LD B,0 HITT: INC B ; Kolla hur m}nga tkn. INC DE ; som ska flyttas. LD A,(DE) CP 41 JR NZ,HITT DEC DE DEC B LD A,B CP 0 JR Z,OK F: DEC DE ; Flytta ett steg }t h|ger. LD A,(DE) INC DE LD (DE),A DEC DE DJNZ F OK: POP BC POP DE LD (HL),32 ; Radera tkn. d{r mark|ren st}r. EX DE,HL JR FIX ; END