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]