SUBROUTINE FULL.SCREEN(RECORD, CURRENT.LINE, LAST.LINE, CHANGED)
     TRUE = 1
     FALSE = 0
     OTHERS = TRUE
     INSERT.LINE = CHAR(27):'M'
     MIDDLE = 12
     TOP = CURRENT.LINE - 12
     BOTTOM = CURRENT.LINE + 11
     IF TOP LT 1 THEN TOP = 0
     IF BOTTOM GT LAST.LINE THEN BOTTOM = LAST.LINE + 1
     CS = @(-1)
     CEOL = @(-4)
     PRINT CS:
     FOR I = TOP TO BOTTOM
        AT = MIDDLE - (CURRENT.LINE - I)
        GOSUB PRINT.LINE
     NEXT I
     PRINT @(5,MIDDLE):
     COLUMN = 5
     ROW = MIDDLE
     LOOP
        INPUT CHAR,1:
     UNTIL (CHAR EQ CHAR(03))
        BEGIN CASE
           CASE (CHAR EQ CHAR(01))
              ROW += 1
              CURRENT.LINE += 1
              IF CURRENT.LINE GT LAST.LINE THEN CURRENT.LINE = LAST.LINE + 1
              IF ROW GT 22 THEN
                 ROW = 22
                 PRINT @(0,23)
                 AT = 23
                 GOSUB PRINT.LINE
              END
           CASE (CHAR EQ CHAR(06))
              COLUMN += 1
              IF COLUMN GT 79 THEN
                 PRINT @(5):
                 COLUMN = 5
              END
           CASE (CHAR EQ CHAR(21))
              COLUMN -= 1
              IF COLUMN LT 5 THEN
                 PRINT @(5):
                 COLUMN = 5
              END
           CASE (CHAR EQ CHAR(26))
              ROW -= 1
              CURRENT.LINE -= 1
              IF CURRENT.LINE LT 1 THEN CURRENT.LINE = 0
              IF ROW LT 0 THEN
                 ROW = 0
                 PRINT @(0,0):INSERT.LINE:
                 AT = 0
                 GOSUB PRINT.LINE
              END
           CASE CHAR EQ CHAR(27)
              INPUT CHAR,1:
              BEGIN CASE
                 CASE (CHAR EQ 'K')
                    RECORD<CURRENT.LINE> = ''
                    PRINT @(5):CEOL:
                    CHANGED = TRUE
                 CASE (CHAR EQ 'W')
                    STRING = RECORD<CURRENT.LINE>
                    ACTUAL = COLUMN - 4
                    RECORD<CURRENT.LINE> = STRING[1,ACTUAL-1]:STRING[ACTUAL+1,LEN(STRING)]
                    CHANGED = TRUE
                 CASE (CHAR EQ 'Q')
                    STRING = RECORD<CURRENT.LINE>
                    ACTUAL = COLUMN - 4
                    RECORD<CURRENT.LINE> = STRING[1,ACTUAL-1]:' ':STRING[ACTUAL,LEN(STRING)]
                    CHANGED = TRUE
              END CASE
        END CASE
     REPEAT
     PRINT @(0,23)
     RETURN
**-- PRINT.LINE
PRINT.LINE:
     BEGIN CASE
        CASE (I EQ 0)
           PRINT @(0,AT):'*TOF'
        CASE (I GT LAST.LINE)
           PRINT @(0,AT):'*EOF'
        CASE OTHERS
           PRINT @(0,AT):('0000':I)[4]:' ':RECORD<I>[1,74]:
     END CASE
  END
