10 REM > lcd/s v1.01
   20 REM Redirect VDU to LCD display
   30 REM Syntax: lcd (ON|OFF)
   40 :
   50 REM Sends to existing VDU driver,
   60 REM then if VPOS in top four lines
   70 REM copies MODE 7 display to LCD
   80 :
   90 base%=&FC80
  100 FOR P=0 TO 1
  110   P%=&900
  120   [OPT P*3
  130   .start
  140   JSR old:PHA
  150   LDA &355:CMP #7:BNE ignore \ Not MODE 7
  160   LDA &319:SBC &30B
  170   CMP #4:BCS ignore \ Not top four lines
  180   TYA:PHA:TXA:PHA
  190   JSR disp
  200   PLA:TAX:PLA:TAY
  210   .ignore
  220   PLA:RTS
  230   .old
  240   JMP (oldv)
  250   .disp
  260   LDA #2:JSR comm
  270   LDX #0:LDY #0:.loop
  280   LDA &7C50,X:JSR data
  290   INX:INY
  300   CPY #40:BNE next
  310   .loop2
  320   LDA #32:JSR data
  330   INY:CPY #64:BNE loop2
  340   LDY #0
  350   .next
  360   CPX #80:BNE loop
  370   LDA #2:JSR commX
  380   LDX #0:LDY #0:.loopX
  390   LDA &7C00,X:JSR dataX
  400   INX:INY
  410   CPY #40:BNE nextX
  420   .loop2X
  430   LDA #32:JSR dataX
  440   INY:CPY #64:BNE loop2X
  450   LDY #0
  460   .nextX
  470   CPX #80:BNE loopX
  480   RTS
  490   .commX
  500   BIT base%+2:BMI commX
  510   STA base%+2:LDA #13
  520   .comm2X
  530   BIT base%+2:BMI comm2X
  540   STA base%+2:RTS
  550   .dataX
  560   BIT base%+2:BMI dataX
  570   STA base%+3:RTS
  580   .comm
  590   BIT base%+0:BMI comm
  600   STA base%+0:LDA #13
  610   .comm2
  620   BIT base%+0:BMI comm2
  630   STA base%+0:RTS
  640   .data
  650   BIT base%+0:BMI data
  660   STA base%+1:RTS
  670   .go%
  680   LDA #1:LDX #&A8:LDY #0
  690   JSR &FFDA:LDA (&A8),Y
  700   CMP #13:BEQ link_on
  710   INY:LDA (&A8),Y:AND #&DF
  720   CMP #ASC"F":BNE link_on
  730   LDA oldv+0:STA &20E
  740   LDA oldv+1:STA &20F
  750   RTS
  760   .link_on
  770   LDA &20E:STA oldv+0
  780   LDA &20F:STA oldv+1
  790   LDA #start AND 255:STA &20E
  800   LDA #start DIV 256:STA &20F
  810   RTS
  820   .oldv
  830 ]NEXT
  840 PRINT"*SAVE lcd FFFF0900 ";~P%OR&FFFF0000;" ";~go%OR&FFFF0000