beolink 1000 kode sniffer
For en del år siden lavede jeg en b&o link kode sniffer så jeg kunne bruge min beolink 1000 fjernbetjening til at styre alt muligt. Bla en billig prosonic video 😉
Her er asm51 koden til 8031 processorer, eller atmels processorer idag.
Denne kode kan bruges til at styre en video, eller idag noget andet, idet video jo er YT.
[code lang="asm"] ;***************************************************************************** ; BEOLINK 1000 DEBUGGER. ; PROGRAMMET ER UDVIKLET TIL L’SNING AF PULSERNE P UDGANGEN AF SCART STIKKET, ; FOR STYRING AF VIDEO. ; PBEGYNDT : 3-1-91 ; BDC 8031 TEST 2 ; 3-2-91 INDFRT AUTO MESURE ROUTINE TIL MLING AF BAUD RATE ;***************************************************************************** DSEG AT 0000H MEMSIZE : DS 1 ; HVOR MANGE BYTE SKAL BEODATA DELES I ( 6 BYTES) MEMCOUNT : DS 1 ; BYTE T’LLER WA40USEC : DS 1 ; WA1_6MSEC : DS 1 ; WA4MSEC : DS 1 ; WA100MSEC : DS 1 ; ; ADDR 000BH RESEVERET AF TIMER0 INTERRUPT DSEG AT 0010H BEOCODE : DS 6 ; PLADS TIL SIDSTL’STE DATA FRA BEOLINK BITCOUNT : DS 1 ; BIT T’LLER SIDSTE : DS 1 ; SIDSTE DATA I BEOCODE SAMMENLIGNES MED TABEL BDT : DS 1 ; BYTEDATE UNDER PAKNING COUNT : DS 1 ; T’LLER TABEL POSITION WAIT : DS 1 ; VENTE DATA (MAX256uS) PTLO0 : DS 1 ; MLT TIMER DATA TIL TL0 PTHI0 : DS 1 ; " " " " TH0 BSEG AT 000H F_FLET : DBIT 1 ; SAT NR INTRUPT ROUTINE ER UDFRT 48 gg BYTEPACK: DBIT 1 ; SAT SL’NGE DER NSKES BITPAKNING RDBEO BIT P1.0 ; L’SNING AF BEODATA P SCARTSTIK EXT0 BIT P1.1 ; EXT1 BIT P1.2 ; EXT2 BIT P1.3 ; EXT3 BIT P1.4 ; EXT4 BIT P1.5 ; EXT5 BIT P1.6 ; TV_VCRNOT BIT P1.7 ; TV/VIDEO CNTLR BIT CSEG AT 0000H JMP INIT ORG 000BH ; TIMER 0 INTERRUPT JMP GOON ; HOP TIL UNDER ROUTINE INIT: ACALL MESURE ; MLER BAUD RATE START: MOV R0,#00 ; WAONPU: DJNZ R0,WAONPU ; VAIT TIL PSU OK MOV WAIT,#0FFH ; VENT 256uS MOV MEMSIZE,#06 ; 6 BYTE MEMBREDE MOV BDT,#00H ; S’TTER ALLE BIT P 0 MOV BITCOUNT,#07 ; UNDLAD 1. STARTBIT MOV R0,#010H ; FRSTE ADDR. I BEOCODE MOV MEMCOUNT,#06 ; MOV TMOD,#00000001B ; S’TTER TIMER 0 I MODE 0 MOV TL0,PTLO0 ; MOV TH0,PTHI0 ; 3,145mS clr ext5 ; RUN: JNB RDBEO,RUN ; VENT P STARTBIT DJNZ WAIT,$ ; SETB ET0 ; SETB EA ; SETB TR0 ; STARTER TIMER 0 CLR F_FLET ; CLR BYTEPACK ; LOOP: JBC BYTEPACK,PACK ; 1 = HOP PACK JBC F_FLET,FLET ; 1 = HOP FLET JMP LOOP ; PACK: DJNZ WAIT,$ ; ;SETB P1.7 ; NOP ; MOV A,BDT ; FLYTTER INDHOLD BDT TIL ACC. MOV C,RDBEO ; RLC A ; FRER CARRY IND I ACC MOV BDT,A ; FLYTTER BYTE TILBAGE I BDT ;CLR P1.7 ; NOP ; DJNZ BITCOUNT,LOOP ; MOV BITCOUNT,#08 ; MOV @R0,BDT ; FLYTTER INDHOLD FRA BDT ; TIL DEN ADDR SOM R0 PEGER P INC R0 ; FLYTTER PEGEPIND R0 EN OP DJNZ MEMCOUNT,LOOP ; S L’NGE MEMCOUNT ER >0 CLR EA ; CJNE A,SIDSTE,SLUT ; INC R0 ; INC COUNT ; DJNZ MEMCOUNT,LOOP11 ; SETB EXT3 ; JMP START ; SLUT: ACALL WAIT100M ; ACALL WAIT100M ; JMP START ; ;************************************************* ; ; S’TTER VIDEO CONTROL PORT TIL 12V ; ELLER TV 0V. ; ;************************************************* VCR: CLR TV_VCRNOT ; LOW = VIDEO RET TV: SETB TV_VCRNOT ; HI = TV RET ;************************************************* ; ; MLE ROUTINE. MLER MELLEM 2 F0RSTE BIT ; OG S’TTER TIMER 0 OP. ; INPUT = P1.0 ; ;************************************************* MESURE: MOV TMOD,#00000001 ; S’TTER TIMER0 I TIMER MODE1 MOV TL0,#00H ; MOV TH0,#00H ; JNB RDBEO,$ ; SETB TR0 ; JB RDBEO,$ ; JNB RDBEO,$ ; CLR TR0 ; MOV PTLO0,TL0 ; MOV PTHI0,TH0 ; MOV A,#0FFH ; SUBB A,TL0 ; MOV PTLO0,A ; MOV A,#0FFH ; SUBB A,TH0 ; MOV PTHI0,A ; RET ; ;************************************************ ; ; TABELER TIL FLET ROUTINE. ; ;************************************************ TABEL1: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 065H ; STOP DB 088H ; TAST TABEL2: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 066H ; START DB 044H ; TAST TABEL3: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 066H ; F.FORWARD >> DB 088H ; TAST TABEL4: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 069H ; REW << DB 088H ; TAST TABEL5: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 066H ; P DB 0A5H ; TURN DB 088H ; TAST TABEL6: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 069H ; P DB 0AAH ; GOTO DB 088H ; TAST TABEL7: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 06AH ; P DB 096H ; OFF DB 088H ; TAST TABEL8: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 059H ; P DB 055H ; A/V DB 044H ; TAST TABEL9: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 06AH ; P DB 099H ; STORE DB 044H ; TAST TABEL10: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 06AH ; P DB 055H ; < DB 044H ; TAST TABEL11: INC A ; MOVC A,@A+PC ; RET ; DB 061H ; DATA DB 0AAH ; FOR DB 0A6H ; TRYK DB 06AH ; P DB 055H ; > DB 088H ; TAST ;_______________________________________________________________________ ; ; WAIT 40 u SEC RUTINE ; ; WA40USEC: REGISTERET BRUGES TIL 40 u SEC WAIT RUTINE ;_______________________________________________________________________ ; WAIT40U: MOV WA40USEC,#20H ; WAIT40U1: DJNZ WA40USEC,WAIT40U1 ; RET ; ;_______________________________________________________________________ ; ; WAIT 1,6 M SEC RUTINE ; ; WA1_6MSEC: REGISTERET BRUGES TIL 1,6 m SEC WAIT RUTINE ;_______________________________________________________________________ ; WAIT1_6M: MOV WA1_6MSEC,#0FFH ; WAIT1_6M1: PUSH ACC ; POP ACC ; NOP ; DJNZ WA40USEC,WAIT40U1 ; RET ; ;_______________________________________________________________________ ; ; WAIT 4 m SEC RUTINE ; ; WA4MSEC: REGISTERET BRUGES TIL 4m SEC WAIT RUTINE ;_______________________________________________________________________ ; ; WAIT4M: MOV WA4MSEC,#0FFH ; PUSH ACC ; PUSH B ; WAIT4M1: MUL AB ; MUL AB ; MUL AB ; NOP ; NOP ; DJNZ WA4MSEC,WAIT4M1 ; POP B ; POP ACC ; RET ; ;______________________________________________________________________ ; ; WAIT 100 m SEC RUTINE ; ; WA100MSEC: REGISTERET BRUGES TIL 100m SEC WAIT RUTINE ;______________________________________________________________________ ; WAIT100M: MOV WA100MSEC,#05 ; PUSH ACC ; PUSH B ; WAIT100M1: MUL AB ; MUL AB ; MUL AB ; NOP ; call wait4m NOP ; DJNZ WA100MSEC,WAIT100M1 ; POP B ; POP ACC ; RET ; END ; [/code]