Well I've looked at the difference between FW523 and FW692 and there are 8 sections that are changed; however the code is replicated 4 times for each buffer (A,B,C.D) so there are actually only 2 changes.
Code:
ian@FX503VD:~/MPLABXProjects/OrtonView.X$ git diff fw523 mk14vdu.asm
diff --git a/mk14vdu.asm b/mk14vdu.asm
index 27b9ffd..e2e21df 100644
--- a/mk14vdu.asm
+++ b/mk14vdu.asm
@@ -1131,12 +1131,12 @@ DTXTA CLRF INDF
BSF RCSTA,SPEN ; CALL DTXTA = 209~
MOVF TBGND,W
MOVWF TXREG
- DELAY 2
- BCF PORTA,NENIN
+ DELAY 3^M
MOVWF TXREG
DELAY 7
MOVWF TXREG
- DELAY 2
+ DELAY 1^M
+ BCF PORTA,NENIN^M
MOVF PCLATH,W
MOVWF PCHSAV
MOVF FNTPGE,W
:
: [snipped]
:
@@ -1714,8 +1714,8 @@ L401 BCF PORTC,NSYNC
; Expects index 0..7 in FNTPGE
DGRFA BSF INDF,0 ; CALL DGRFA = 210~
CALL OFFBUS
- DELAY 1
BSF RCSTA,SPEN
+ DELAY 1^M
MOVF TBGND,W
MOVWF TXREG
MOVF PCLATH,W
:
: [snipped]
:
In the first section, the PIC has just disconnected from the bus (the 2 statements before the diif output) and the point it drops NENIN is moved to after it starts outputting the blank space before the text on the line, so there is a
longer interval the bus is floating before NENIN is sent to 0 and the SC/MP can access the bus.
In the second section, the (small) delay after coming off the bus in preparation for outputting a graphics line is moved to after enabling the serial port and before starting to transmit the blank area before the graphics (Giving more time for the serial port to initialise?)
Given that FW692 has less of a problem with corruption of memory (it would appear) then I would suggest the 2nd change is not involved but the 1st one is what caused the apparent change in behaiviour. Is it possible that it is the time that the VDU spends getting off the bus that is the problem, not getting on the bus? The fact that it hasn't completely cured the problem might just mean that a similar change might be needed when the 4 buffers are being pre-charged as Karen puts it.
Thoughts?