> VDU19/src  Extended VDU 19 driver 0 NOTE: Should check *FX3/VDU21 settings and ($ have no effect if VDU disabled 2: < Select hardware to use: Fchamelion%=0:palettemate%=1 Ptarget%=palettemate% Z: dwrchv=&20E:vduQ=&26A n!load%=&FFFF0A00: mcode% &200 x: *ݤif(A%):A%:z%=-1:=opt% z%=P%:=opt% ;ݤendif:z%=-1:=opt% z%=P%-z%:P%=P%-z%:O%=O%-z%:=opt% Fݤelse:z%=-1:z%=P%:=opt% z%=P%-z%:P%=P%-z%:O%=O%-z%:z%=-1:=opt%  P=0 1:opt%=P*3+4 P%=load%:O%=mcode% [OPT opt% .go% LDA wrchv+0:STA oldwrch+1 LDA wrchv+1:STA oldwrch+2 !LDA #newvdu 255:STA wrchv+0 !LDA #newvdu 256:STA wrchv+1 LDA #0:STA flag:RTS :  .newvdu BIT vduQ:BMI check:STA flag  .oldwrch " JMP &FFFF , .oldvdu 6PLA:JMP oldwrch @ .check JPHA T LDA vduQ:CMP #255:BNE oldvdu ^LDA flag:CMP #19:BNE oldvdu h,PLA:PHA:STA &323:\ last entry of queue r \ queue |\ &31F logical colour <\ &320 physical 4-bit colour (extension options if >15) ,\ &321 red component of physical colour .\ &322 green component of physical colour -\ &323 blue component of physical colour 5LDA &31F:CMP #255:BEQ border :\ 19,-1,p,r,g,b 5LDA &320:CMP #24:BEQ borderRGB :\ 19,l,24,r,g,b 4JSR RGBtest:BEQ oldvdu :\ 19,l,p,0,0,0 : #\ 19,l,ignored,red,green,blue !OPT if(target%=palettemate%) 0 \ Select Palettemate 12-bit physical colour 3 PHP:SEI :\ Disable IRQs  TXA:PHA:TYA:PHA D LDA &31F:ASL A:ASL A:ASL A:ASL A:STA flag :\ logical colour I LDA &321:LSR A:LSR A:LSR A:LSR A:A flag:TAX :\ colour red component L LDA &322:LSR A:LSR A:LSR A:LSR A:STA flag :\ colour green component &H LDA &323: #&F0:A flag:TAY :\ colour blue component 0. LDA &360:ASL A:ASL A:ASL A:ASL A:STA flag : TXA:PHP:SEI D .palette NF STA &FE23:STY &FE23 :\ Write to palette X SEC:ADC flag:BCC palette bP PLA:TAY:PLA:TAX:PLP :\ Restore registers and IRQs lOPT endif vOPT if(target%=chamelion%) . \ Select Chameleon 12-bit physical colour  TXA:PHA E LDA #&FF:STA &FE62:LDA #&AE:STA &FE6C :\ set VIA control A LDA &31F: #&07:A #&E0:STA &FE60 :\ logical colour L LDX #2 :\ start with component 2  .chamel ; TXA:ASL A: &321,X: #&06: &321,X :\ A=%76543cc0 A ROR A:ROR A:ROR A:ROR A :\ A=%cc0-7654 = #&CF: #&0F:STA &FE60 :\ A=%cc007654 M DEX:BPL chamel :\ loop through components  LDA #&E0:STA &FE60  PLA:TAX OPT endif  .done  ;INC vduQ:PLA:RTS :\ Clear vduQ and return :  : *\ 19,-1,p,red,green,blue 4 .border >5JSR RGBtest:BEQ border3bit :\ 19,-1,p,0,0,0 H: R$\ 19,-1,ignored,red,green,blue \$\ 19,ignored,24,red,green,blue f.borderRGB pOPT if(target%=chamelion%) zP PHP:SEI:LDA #&80:STA flag :\ b7=1 to indicate 12-bit colour O LDA &321:LSR A:LSR A:LSR A:LSR A :\ physical colour red component @ A flag:STA &FE22 :\ write %xxxxrrrr Q LDA &322:LSR A:LSR A:LSR A:LSR A:STA flag :\ physical colour green component N LDA &323: #&F0 :\ physical colour blue component @ A flag:STA &FE22 :\ write %bbbbgggg  PLP OPT endif  JMP done : .\ 19,-1,physical,ignored,ignored,ignored .border3bit ZLDA &320: #&0F:STA &FE22 :\ write %0000xbgr, top nybble=0 to indicate 3-bit colour  JMP done :  .RGBtest >LDA &321:A &322:A &323:RTS :\ EQ=all RGB values are zero $ .flag:BRK .] 8% P%>&B00:"WARN: Code overrun": BB "*SAVE VDU19 ";~mcode%;" ";~O%;" ";~go%&FFFF0000;" ";~load%