TI Basic, 169 167 bytes
1→X 1→Y 1→S 1→T While 1 ClrHome Output(Y,X,"* S(X>1 and X<20)+(X=1)-(X=20→S T(Y>1 and Y<10)+(Y=1)-(Y=10→T X+S→X Y+T→Y For(N,1,20,19 For(O,1,10,9 Output(O,N,"+ End End For(N,2,19 For(O,1,10,9 Output(O,N,"- End End For(O,2,9 Output(O,1,"| Output(O,20,"| End End #TI Basic, 169 167 bytes 1→X 1→Y 1→S 1→T While 1 ClrHome Output(Y,X,"* S(X>1 and X<20)+(X=1)-(X=20→S T(Y>1 and Y<10)+(Y=1)-(Y=10→T X+S→X Y+T→Y For(N,1,20,19 For(O,1,10,9 Output(O,N,"+ End End For(N,2,19 For(O,1,10,9 Output(O,N,"- End End For(O,2,9 Output(O,1,"| Output(O,20,"| End End HorriblyHorribly slow, but it works.