480 IF MID$(IN$,WL,1)=" " THEN WL=WL-1: IF WL>0 THEN 480
490 IF RV THEN COLOR RFG,RBG ELSE COLOR FG,BG
LOCATE QY,QX,1: PRINT IN$;
510 LOCATE QY,QX+WI-1
520 IF (DT OR TM) AND ((MID$(IN$,WI,1)="/") OR (MID$(IN$,WI,1)=":")) THEN WI=WI+1 : LOCATE QY,QX+WI-1
530 W$=INKEY$: DEF SEG=&H40: QK=PEEK(&H17) AND 96:
IF QK1<>QK THEN LOCATE 25,73: COLOR RFG,RBG : PRINT LOCKS$(QK/32);: QK1=QK: SOUND 400+QK,.3: GOTO 590
IF DATSW THEN CALL DISDATE
IF W$="" THEN 530
KY=0
IF ES THEN LOCATE 24,1 : COLOR FG,BG: PRINT SPC(40); : LOCATE QY,QX+WI-1 : ES=NO : IF RV THEN COLOR RFG,RBG
IF LEN(W$)=1 THEN 660 ELSE KY= ASC(RIGHT$(W$,1))
IF KY>=F1 AND KY<=F10 THEN RETURN
IF KY= CTRL.RT THEN 860
IF KY= CTRL.LF THEN 860
IF KY= PG.UP THEN 860
IF KY= PG.DN THEN 860
IF KY= RT.CURSOR AND (AP OR DT OR TM) THEN WI=WI-(WI<(WL+1)): GOTO 510
IF KY= LF.CURSOR AND AP THEN WI=WI+(WI> 1): GOTO 510
IF KY= LF.CURSOR AND (DT OR TM) THEN IF (WI>1) THEN WI=(WI-1+(("/"=MID$(IN$,WI-1,1)) XOR (":"=MID$(IN$,WI-1,1)))) : GOTO 510
IF NOT AP THEN 520
IF KY= INS.KEY THEN IF INSERT=NO THEN INSERT=YES: LOCATE,,,CU1,CU2: GOTO 490 ELSE INSERT=NO: LOCATE,,,CU2: GOTO 520
REM IF KY= LF.CURSOR THEN WI=WI+(WI> 1): GOTO 510
IF KY= DEL.KEY THEN IF WL<>0 AND WI<=FL AND WL>=WI THEN IN$= LEFT$(IN$,WI-1)+RIGHT$(IN$,FL-WI)+" ": WL=WL-1: TRANSFER=YES : GOTO 490
IF INSERT THEN INSERT=NO: LOCATE,,,CU2
IF KY= CTRL.HOME THEN WI=1: GOTO 510
IF KY= CTRL.END THEN WI= WL+1: GOTO 510
IF KY= HOME THEN IN$=LEFT$(IN$,WI-1)+SPACE$(FL-WI+1): WL=WI-1: TRANSFER=YES : GOTO 490
GOTO 510
590 IF RV THEN COLOR RFG,RBG ELSE COLOR FG,BG
GOTO 510
660 IF W$= NTR$ THEN 860
IF W$= ESC$ THEN KY=ESC : RETURN
IF WI>FL THEN IF W$<> BKSP$ THEN ERROR 101 : GOTO 510
730 IF AP AND NOT CP THEN IF W$>=" " AND W$<="~" THEN 750
IF NM THEN IF W$>="0" AND W$<="9" THEN 750
IF NM THEN IF WI=1 AND W$="-" THEN 750
IF DC THEN IF W$="." AND DP=0 THEN DP=1 : GOTO 770
IF AP AND CP THEN IF W$>="a" AND W$<="z" THEN W$=CHR$(ASC(W$)-32): GOTO 750 ELSE IF W$>=" " AND W$<"a" THEN 750
IF W$=BKSP$ AND NOT (DT OR TM) THEN IF WI>1 THEN MID$(IN$,WI-1,1)=" " : WL=WL-1 : WI=WI-1 : DP=DP+(DP>0) : LOCATE ,QX+WI-1: PRINT " ";: TRANSFER=YES : GOTO 510
IF W$=BKSP$ AND (DT OR TM) THEN IF WI>1 THEN N=(("/"=MID$(IN$,WI-1,1)) XOR (":"=MID$(IN$,WI-1,1))) : MID$(IN$,WI-1+N,1)=" " : WL=WL-1+N : WI=WI-1+N : DP=DP+(DP>0) : LOCATE ,QX+WI-1: PRINT " ";: TRANSFER=YES : GOTO 510
IF NM THEN IF W$<>BKSP$ THEN ERROR 103
GOTO 510
750 IF NOT DC THEN 770 ELSE IF DP=0 AND W$<>"." AND WI=FL-2 THEN 520
IF DP=0 THEN 770 ELSE IF DP=3 THEN 520 ELSE DP=DP+1
770 IF NOT INSERT THEN MID$(IN$,WI,1)=W$: TRANSFER=YES : GOTO 790
IF WL < FL THEN WL=WL+1: IN$= LEFT$( LEFT$(IN$,WI-1) +W$ +RIGHT$(IN$,FL-WI+1), FL): WI=WI+1 : TRANSFER=YES : GOTO 490 ELSE 520
790 IF DT OR TM OR (WI>1) THEN 820
IN$=W$+SPACE$(FL-1) : IF W$<>"." THEN DP=0
LOCATE,QX: PRINT IN$;: LOCATE,QX: WL=1
820 PRINT W$;
WI=WI+1: IF WI>WL THEN WL=WI-1
GOTO 520
860 COLOR FG,BG: LOCATE QY,QX,,CU2: INSERT=NO
IF KY<>0 THEN 960
IF WL=0 AND NOT ED THEN ERROR 102 : GOTO 510
IF FX AND WL<>0 AND WL<FL THEN ERROR 104 : GOTO 510
IF (NOT TRANSFER) AND (NOT DT) AND (NOT TM) AND ((WL=0 AND EDITMODE) OR (WL<>0)) THEN RETURN
IF DC THEN 900
IF DT THEN F$=LEFT$(IN$,2)+MID$(IN$,4,2)+RIGHT$(IN$,2) : CALL CHKDAT (F$,ED) : IF ES THEN 510 ELSE RETURN
IF TM THEN F$=LEFT$(IN$,2)+RIGHT$(IN$,2) : CALL CHKTIM (F$,ED) : IF ES THEN 510 ELSE RETURN
IF NM THEN 930
F$=LEFT$(IN$+SPACE$(FL),FL): PRINT F$; : RETURN
900 WHILE LEFT$(IN$,1)="0"
IN$=RIGHT$(IN$,FL-1)+" " : WL=WL-1
WEND
IF WL>0 THEN IN$=LEFT$(IN$,WL)+MID$(".00",DP+1,3-DP) ELSE IN$=DEF$ : WL=4 : DP=3
IN$=SPACE$(FL-WL-(3-DP))+IN$: PRINT IN$;
F$=LEFT$(IN$,FL-3)+RIGHT$(IN$,2) : RETURN
930 WHILE LEFT$(IN$,1)="0"
IN$=RIGHT$(IN$,FL-1)+" " : WL=WL-1
WEND
IF WL>0 THEN F$=SPACE$(FL-WL)+LEFT$(IN$,WL) ELSE F$=SPACE$(FL-1)+DEF$
PRINT F$; : RETURN
960 IF WL<>0 AND F$="" THEN 510
IF KY<>CTRL.LF AND NOT ED THEN ERROR 102 : GOTO 510
IN$= SPACE$(FL)
IF F$="" THEN PRINT IN$; : RETURN
IF NOT DC THEN 970
IF F$<>SPACE$(FL-1) THEN IN$=LEFT$(F$,FL-3)+"."+RIGHT$(F$,2) : PRINT IN$; : RETURN