JMPTBL: WORD CTRL.H-JMPTBL ;^H (BACKSPACE, LEFT-ARROW)
WORD CTRL.L-JMPTBL ;^L (RIGHT ARROW)
WORD CTRL.K-JMPTBL ;^K (UP-ARROW)
WORD CTRL.J-JMPTBL ;^J (LINE FEED, DOWN-ARROW)
WORD CTRL.M-JMPTBL ;^M (RETURN)
WORD CTRL.U-JMPTBL ;^U
WORD CTRL.N-JMPTBL ;^N
WORD CTRL.Y-JMPTBL ;^Y
WORD RETURN-JMPTBL ;<ESC>
0
CTRL.H: CMPW COL,#1
BGT 10$
CMPW ROW,#1
JLE GETKEY
MOVW MAXCOL(A4),COL
DEC ROW
JMP GETIDX
10$: DEC COL
DEC INDEX
LEFT
JMP GETKEY
CTRL.L: CMPW COL,MAXCOL(A4)
BLT 10$
CMPW ROW,MAXROW(A4)
JGE GETKEY
MOV #1,COL
INC ROW
JMP GETIDX
10$: INC COL
INC INDEX
RIGHT
JMP GETKEY
CTRL.Y: MOV INDEX,A0
MOV COL,D0
MOVB #40,D1 ;put space in D1
10$: MOVB #40,(A0)+ ;store space
TTY ;print space
INC D0 ;add one to temp. column!!!
CMPW D0,MAXCOL(A4) ;end of line?
BLE 10$ ; no
JMP ADRESS ;re-address cursor and continue
NOP
;Set INDEX using ROW, COL, MAXROW, MAXCOL
GETIDX: MOV ROW,D0
DEC D0
MUL D0,MAXCOL(A4)
AND #177777,D0
ADD COL,D0
DEC D0
MOV HOME(A4),INDEX
ADD D0,INDEX