' MUXprog.bas ' BS1 code for Setsnest 20x20 AV Matrix switch ' ' v0.1 12/17/2002 ' First working version ' DIRS = %00000111 SYMBOL Mux1 = %01111000 'input 1 'SYMBOL Mux2 = %01111001 'input 2 'SYMBOL Mux3 = %01111010 'input 3 SYMBOL strobe = 0 SYMBOL data = Pin1 SYMBOL clock = 2 SYMBOL I = B2 SYMBOL J = B3 SYMBOL SerData = B4 SYMBOL Pwidth = B5 'reset clock and strobe lines to low Low clock Low strobe ' Init all outputs to input 1 B0 = Mux1 'input 3 has no video Gosub shiftout For J = 1 to 21 B0 = Mux1 'input 1 Gosub shiftout Next J pulsout strobe,1 'Gosub checkvid ' Main program main: serout 6,N2400,("Matrix ready:") 'debug "Matrix ready:", CR serin 7,N2400,SerData if SerData = 86 Then checkvid if SerData = 66 Then binmode if SerData = 67 Then charmode goto main binmode: For J = 1 to 21 serin 7,N2400,SerData 'debug #J,SerData,CR if SerData = 76 then latch B0 = SerData Gosub shiftout Next J pulsout strobe,1 goto main charmode: For J = 1 to 21 serin 7,N2400,#SerData 'debug #J,SerData, CR if SerData = 76 then latch B0 = SerData Gosub shiftout Next J pulsout strobe,1 goto main latch: pulsout strobe,1 goto main shiftout: For I = 1 to 8 data = Bit0 toggle clock B0 = B0 / 2 toggle clock Next I Return checkvid: pulsin 3,0,Pwidth if Pwidth = 0 Then novid 'Debug "video detected", CR serout 6,N2400,(#1,13,10) goto main novid: 'Debug "no video", CR serout 6,N2400,(#0,13,10) goto main