You didn't analyse the original BASIC routines correctly (especially the exit to READY).
Banking is a very complicated business.
When you used your original program you missed any output on VDC screen.
But you can find the remnants of your efforts in RAM 0 at $D600/$D601 (VDC register address)
Change all jumps from $16ba to $16b7
and add one line to your "READY"-exit:
d 16b7
. 016b7 20 45 a8 jsr $a845
. 016ba a2 00 ldx #$00
. 016bc bd 80 14 lda $1480,x
. 016bf c9 01 cmp #$01
. 016c1 f0 07 beq $16ca
. 016c3 20 d2 ff jsr $ffd2
. 016c6 e8 inx
. 016c7 4c bc 16 jmp $16bc
. 016ca 60 rts
Or shift the code from 16ba three bytes down and set the new line as 16ba
jsr a845 makes MMU conf reg = 0 (Bank 15)
Why is that necessary for 80 column? (and not for 40 column)
Writing on VIC-creen is writing in memory => no problem
Writing to VDC-screen is writing via I/O-Register to external RAM => you need Bank 15
Executing BASIC-Line (also in READY-Mode) disables I/O and enables Charset/RAM 0 (that's done by the BASIC routine before your extension is executed)
Your extension sees RAM 0 (Bank 0) and KERNAL/BASIC/CHARSET only. But no I/O.
You have to reset Bank 15 configuration before printing to VDC!
That's all.
Regards WTE