Hallo DIE HARD!
Gibt es den Treiber p5driv12.s19 auch als .asm -Datei.(für EMU bzw IDE11)
Nur mal so als Frage , damit man mal was ändern kann!
Oder ist der streng Geheim?
Druckbare Version
Hallo DIE HARD!
Gibt es den Treiber p5driv12.s19 auch als .asm -Datei.(für EMU bzw IDE11)
Nur mal so als Frage , damit man mal was ändern kann!
Oder ist der streng Geheim?
Hallo DIE HARD!
hat sich schon geklärt, ich habe den Treiber per Hand disassembliert.
Kannst Du den Treiber (disassembliert oder asm) bitte in den Download-Bereich stellen? Oder ist der wirklich geheim?
Jetzt war ich doch zu ungeduldig, und deshalb habe ich den P5DRIV auch disassembliert. Ich füge ihn mal hier bei - vielleicht spart sich jemand unnötige Mühen.
PS: ich bin mir nicht sicher, dass alles stimmt, sieht aber plausibel aus.
Er liegt auf C-Robotics.de
--> http://www.c-robotics.de/ccrp5/CCRP5DOC.zip
Hier ist der Treiber:
Code:*********************************************
*** CCRP5 C-CONTROL DRIVER (by DIE HARD) ***
*********************************************
* - IR INTERFACE Byte 1-3 *****
* - PLM RATE OVERRIDE *****
* - EXTPORT DRIVER Byte 1 *****
*********************************************
* - EXTENDED VERSION, LCD DELETED
* - PA0 = COMMON DATA
* - PA1 = COMM INTERFACE CLOCK
* - PA2 = EXTPORT/LCD CLOCK
* - PA3 = EXTPORT STROBE
* - PA5 = REVERSE LEFT (0=REVERSE)
* - PA4 = REVERSE RIGHT (0=REVERSE)
*********************************************
*------------ TIMING -----------------------
* EXTPORT WRITE: 115us
*
* BASIC BYTES 1 AND 2 ARE OCCUPIED
* TRANSMIT ENTRY IS
* PORT B IST BASIC PORT 1-8
* PROGRAM USES LABEL "A"
*----- SYSTEM I/O -------
PADDR EQU $0005
PADAT EQU $0001
PLMA EQU $000A
PLMB EQU $000B
MISC EQU $000C
*----- COMM INTERFACE MEMORY -----
BUFFL EQU $00A1
BUFFH EQU $00A2
SUBCMD EQU $00A3
*--- EXTPORT INTERFACE MEMORY ----
EXTP EQU $00A4
*---- SYSTEM STATUS ----------
SYSSTAT EQU $00A5
.org $0101
*IIIIIIIIIII REVERSE RIGHT IIIIIIIIIIIIIII
REVR: BCLR 4,PADAT
BSET 3,SYSSTAT
RTS
*IIIIIIIIIII REVERSE LEFT IIIIIIIIIIIIIIII
REVL: BCLR 5,PADAT
BSET 4,SYSSTAT
RTS
*IIIIIIIIIII FORWARD RIGHT IIIIIIIIIIIIIII
FWDR: BSET 4,PADAT
BCLR 3,SYSSTAT
RTS
*IIIIIIIIII FORWARD LEFT IIIIIIIIIIIIIIIII
FWDL: BSET 5,PADAT
BCLR 4,SYSSTAT
RTS
*IIIIIIIIII ROTATE RIGHT IIIIIIIIIIIIIIIII
ROTR: BSR FWDL
BRA REVR
*IIIIIIIIII ROTATE LEFT IIIIIIIIIIIIIIIII
ROTL: BSR FWDR
BRA REVL
*IIIIIIIII MOVE BACK IIIIIIIIIIIIIIIIIIII
REV: BSR REVL
BRA REVR
*IIIIIIII MOVE FORWARD IIIIIIIIIIIIIIIIII
FWD: BSR FWDL
BRA FWDR
*IIIIIIIIIII COMNAV STATUS IIIIIIIIIIIIIII
CNSTAT: LDA #$04
STA SUBCMD
BSR XX
LDA SYSSTAT ; b0,b1,b2
AND #$F8 ; CLEAR BITS
ORA BUFFL
STA SYSSTAT
RTS
*-------- SPEED RIGHT --------------------
TXPLMB: LDA #8
LDX PLMB
BRA TXX
*-------- SPEED LEFT ---------------------
TXPLMA: LDA #7
LDX PLMA
TXX: STX BUFFL
STA BUFFH
BRA SENDTLM
*-------- SYSTEM STATUS ------------------
TXSTAT: CLR BUFFH
LDA SYSSTAT
STA BUFFL
*IIIIIIIIIII SEND TLM IIIIIIIIIIIIIIIIIII
SENDTLM: LDA BUFFL ;FORMAT
ROL A
ROL BUFFH
ROL A
ROL BUFFH
CLR SUBCMD ;->SEND
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
*III SHIFT COMMAND FRAME OUT IIII
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
XX: SEI ;NO INTERRUPTS
BSR SRQ ;REQUEST AND ACKNOWLEDGE
*------- SET LINES TO OUTPUT -------------
SFTOUT: BSR SETDOUT
*------- SOME DELAY ------
LDX #12 ;DELAY AND CLR X
ADEL: DEC x
BNE ADEL
*------ SEND SUBCOMMAND -------
LDA SUBCMD
JSR SOAKKU
*----- SEND COMMAND HI-BYTE ---
LDA BUFFH
JSR SOAKKU
*----- SEND COMMAND LO-BYTE ---
LDA BUFFL
JSR SOAKKU
*----- SET LINES TO IN -------
BCLR 0,PADDR ;DATA LINE IN
BCLR 1,PADDR ;CLOCK LINE IN
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
*III SHIFT IN 2 BYTE ANSWER IIII
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JSR SIAKKU ;GET HI-BYTE
STA BUFFH
JSR SIAKKU ;GET LO-BYTE
STA BUFFL
*----- SET LINES TO OUT
BSR SETDOUT
CLI
RTS
*---------------------------
*--- SHIFT AKKU OUT --------
*---------------------------
SOAKKU: CLRX
S1BYT: BCLR 1,PADAT ;CLOCK OUT L
LSRA ;b0 FIRST
BCLR 0,PADAT
BCC CLKOUT
BSET 0,PADAT
CLKOUT: BSET 1,PADAT ;CLOCK OUT H
INC X
CPX #$8
BNE S1BYT
RTS
*------------------------------
*--- SET DATA OUT -------
*------------------------------
*SETDOUT: BSET 1,PADDR ;SET CLOCKLINE OUT
SETDOUT: BCLR 1,PADAT ;CLOCK LO
BSET 1,PADDR ;SET CLOCKLINE OUT
BSET 0,PADDR ;SET DATALINE OUT
RTS
*-----------------------------
*--- SHIFT IN AKKU --------
*-----------------------------
SIAKKU CLRX
R1BYT: BRSET 1,PADAT,R1BYT ;WAIT CLOCK L
LSRA
CLKIN: BRCLR 1,PADAT,CLKIN ;WAIT CLOCK H
BRCLR 0,PADAT,SDT
ORA #$80
SDT: INC X
CPX #$08
BNE R1BYT
RTS
*-------------------------------
*--- REQUEST AND ACKNOWLEDGE ---
*-------------------------------
SRQ: BSR SETDOUT ;LINES TO OUT
BSET 1,PADAT ;CLOCK HI
LDX #10
DEL1: DEX ;HOLD REQUEST 36 us
BNE DEL1
*------ WAIT FOR ACKNOWLEDGE ---
BCLR 1,PADDR ;END REQUEST
LDX #10
DEL2: BRSET 1,PADAT,ACKN
DEX ;WAIT ACKN
BNE DEL2
BRA SRQ ;REPEAT AFTER TIMEOUT
*----- ACKNOWLEDGE RECEIVED ----
ACKN: BRSET 1,PADAT,ACKN ;WAIT END ACKN
RTS
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
*IIIII PLM SPEED OVERRIDE IIIIIIII
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
LDA #$0C
STA MISC
RTS
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
*IIIII EXT PORT DRIVE IIIIII
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
* REMAINS PA3=0, PA2=1
PDRIVE: LDX #8
* BSET 0,PADDR ;DATA LINE IS OUTPUT
LP2: ROL EXTP
BCLR 0,PADAT ;LO OUT
BCC LP1
BSET 0,PADAT ;HI OUT
LP1: BCLR 2,PADAT ;CLOCK
BSET 2,PADAT
DEX
BNE LP2
ROL EXTP ;
BSET 3,PADAT ;STROBE
BCLR 3,PADAT
* BCLR 0,PADDR ;DATA LINE IS INPUT
RTS
*IIIIIIIIIIII LED 1 ON IIIIIIIIIIIIIIIIIIII
*LED1ON: BSET 4,EXTP
* BRA PDRIVE
*LED2ON: BSET 5,EXTP
* BRA PDRIVE
*LED3ON: BSET 6,EXTP
* BRA PDRIVE
*LED4ON: BSET 7,EXTP
* BRA PDRIVE
*LED1OFF: BCLR 4,EXTP
* BRA PDRIVE
*LED2OFF: BCLR 5,EXTP
* BRA PDRIVE
*LED3OFF: BCLR 6,EXTP
* BRA PDRIVE
*LED4OFF: BCLR 7,EXTP
* BRA PDRIVE
ACSLO: BSR CLRF
BSET 2,EXTP
BSET 6,SYSSTAT
BRA PDRIVE
ACSHI: BSR CLRF
BSET 1,EXTP
BSET 5,SYSSTAT
BRA PDRIVE
ACSMAX: BSR CLRF
BRA PDRIVE
CLRF: BCLR 2,EXTP
BCLR 1,EXTP
BCLR 6,SYSSTAT
BCLR 5,SYSSTAT
RTS
Und hier noch der p5driv12.asm
Code:*********************************************
*** CCRP5 C-CONTROL DRIVER (by DIE HARD) ***
*********************************************
* - IR INTERFACE Byte 1-3 *****
* - PLM RATE OVERRIDE *****
* - EXTPORT DRIVER Byte 1 *****
*********************************************
* - EXTENDED VERSION, LCD DELETED
* - PA0 = COMMON DATA
* - PA1 = COMM INTERFACE CLOCK
* - PA2 = EXTPORT/LCD CLOCK
* - PA3 = EXTPORT STROBE
* - PA5 = REVERSE LEFT (0=REVERSE)
* - PA4 = REVERSE RIGHT (0=REVERSE)
*********************************************
*------------ TIMING -----------------------
* EXTPORT WRITE: 115us
*
* BASIC BYTES 1 AND 2 ARE OCCUPIED
* TRANSMIT ENTRY IS
* PORT B IST BASIC PORT 1-8
* PROGRAM USES LABEL "A"
*----- SYSTEM I/O -------
PADDR EQU $0005
PADAT EQU $0001
PLMA EQU $000A
PLMB EQU $000B
MISC EQU $000C
PBDAT EQU $0002
PBDDR EQU $0006 ;LCD BYTE PORT
*----- COMM INTERFACE MEMORY -----
BUFFL EQU $00A1
BUFFH EQU $00A2
SUBCMD EQU $00A3
*--- EXTPORT INTERFACE MEMORY ----
EXTP EQU $00A4
*--- LED PORT INTERFACE MEMORY ---
LEDP EQU $00A6
*---- SYSTEM STATUS ----------
SYSSTAT EQU $00A5
.org $0101
*IIIIIIIIIII REVERSE RIGHT IIIIIIIIIIIIIII
REVR: BCLR 4,PADAT
BSET 3,SYSSTAT
RTS
*IIIIIIIIIII REVERSE LEFT IIIIIIIIIIIIIIII
REVL: BCLR 5,PADAT
BSET 4,SYSSTAT
RTS
*IIIIIIIIIII FORWARD RIGHT IIIIIIIIIIIIIII
FWDR: BSET 4,PADAT
BCLR 3,SYSSTAT
RTS
*IIIIIIIIII FORWARD LEFT IIIIIIIIIIIIIIIII
FWDL: BSET 5,PADAT
BCLR 4,SYSSTAT
RTS
*IIIIIIIIII ROTATE RIGHT IIIIIIIIIIIIIIIII
ROTR: BSR FWDL
BRA REVR
*IIIIIIIIII ROTATE LEFT IIIIIIIIIIIIIIIII
ROTL: BSR FWDR
BRA REVL
*IIIIIIIII MOVE BACK IIIIIIIIIIIIIIIIIIII
REV: BSR REVL
BRA REVR
*IIIIIIII MOVE FORWARD IIIIIIIIIIIIIIIIII
FWD: BSR FWDL
BRA FWDR
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
*III SEND COMNAV STATUS IIII
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
CNSTAT: LDA #$04
STA SUBCMD
BSR XX
LDA SYSSTAT ; b0,b1,b2
AND #$F8 ; CLEAR BITS
ORA BUFFL
STA SYSSTAT
RTS
*-------- SPEED RIGHT --------------------
*TXPLMB: LDA #8
* LDX PLMB
* BRA TXX
*-------- SPEED LEFT ---------------------
*TXPLMA: LDA #7
* LDX PLMA
*TXX: STX BUFFL
* STA BUFFH
* BRA SENDTLM
*-------- SYSTEM STATUS ------------------
TXSTAT: CLR BUFFH
LDA SYSSTAT
STA BUFFL
*IIIIIIIIIII SEND TLM IIIIIIIIIIIIIIIIIII
SENDTLM: LDA BUFFL ;FORMAT
ROL A
ROL BUFFH
ROL A
ROL BUFFH
CLR SUBCMD ;->SEND
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
*III SHIFT COMMAND FRAME OUT ( COMNAV ) II
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
XX: SEI ;NO INTERRUPTS
BSR SRQ ;REQUEST AND ACKNOWLEDGE
*------- SET LINES TO OUTPUT -------------
SFTOUT: BSR SETDOUT
*------- SOME DELAY ------
LDX #55 ;DELAY AND CLR X36=52
ADEL: DEC x
BNE ADEL
*------ SEND SUBCOMMAND -------
LDA SUBCMD
JSR SOAKKU
*----- SEND COMMAND HI-BYTE ---
LDA BUFFH
JSR SOAKKU
*----- SEND COMMAND LO-BYTE ---
LDA BUFFL
JSR SOAKKU
*----- SET LINES TO IN -------
BCLR 0,PADDR ;DATA LINE IN
BCLR 1,PADDR ;CLOCK LINE IN
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
*III SHIFT IN 2 BYTE ANSWER IIII
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JSR SIAKKU ;GET HI-BYTE
STA BUFFH
JSR SIAKKU ;GET LO-BYTE
STA BUFFL
*----- SET LINES TO OUT
BSR SETDOUT
BSET 7,PBDAT ;USED FOR NAV EXTENSION
BCLR 7,PBDAT
EXXX: CLI
RTS
*---------------------------
*--- SHIFT AKKU OUT --------
*---------------------------
SOAKKU: CLRX
S1BYT: BSR D12 ;DELAY 12 Mhz 17cycl
BSR D12
BCLR 1,PADAT ;CLOCK OUT L
BSR D12
BSR D12
LSRA ;b0 FIRST
BCLR 0,PADAT
BCC CLKOUT
BSET 0,PADAT
CLKOUT: BSET 1,PADAT ;CLOCK OUT H
INC X ;3
CPX #$8 ;2
BNE S1BYT ;3
BSR D12
RTS
*------------------------------
*--- SET DATA OUT -------
*------------------------------
*SETDOUT: BSET 1,PADDR ;SET CLOCKLINE OUT
SETDOUT: BCLR 1,PADAT ;CLOCK LO
BSET 1,PADDR ;SET CLOCKLINE OUT
D12: BSET 0,PADDR ;SET DATALINE OUT
RTS
*-----------------------------
*--- SHIFT IN AKKU --------
*-----------------------------
SIAKKU CLRX
R1BYT: BRSET 1,PADAT,R1BYT ;WAIT CLOCK L
LSRA
CLKIN: BRCLR 1,PADAT,CLKIN ;WAIT CLOCK H
BRCLR 0,PADAT,SDT
ORA #$80
SDT: INC X
CPX #$08
BNE R1BYT
RTS
*-------------------------------
*--- REQUEST AND ACKNOWLEDGE ---
*-------------------------------
SRQ: BSR SETDOUT ;LINES TO OUT
BSET 1,PADAT ;CLOCK HI
LDX #30
DEL1: DEX ;HOLD REQUEST 36 us
BNE DEL1
*------ WAIT FOR ACKNOWLEDGE ---
BCLR 1,PADDR ;END REQUEST
LDX #30
DEL2: BRSET 1,PADAT,ACKN
DEX ;WAIT ACKN
BNE DEL2
BRA SRQ ;REPEAT AFTER TIMEOUT
*----- ACKNOWLEDGE RECEIVED ----
ACKN: BRSET 1,PADAT,ACKN ;WAIT END ACKN
RTS
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
*IIIII PLM SPEED OVERRIDE IIIIIIII
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
PLM: LDA #$0C ;2
STA MISC ;5
RTS ;6
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
*IIIII EXT/LED PORT DRIVE IIII
*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
* REMAINS PA3=0, PA2=1
PDRIVE: CLR X
BRA PD
LDRIVE: LDX #2
PD: LDA #8
* BSET 0,PADDR ;DATA LINE IS OUTPUT
LP2: ROL EXTP,X
BCLR 0,PADAT ;LO OUT
BCC LP1
BSET 0,PADAT ;HI OUT
LP1: BCLR 2,PADAT ;CLOCK
BSET 2,PADAT
DEC A
BNE LP2
ROL EXTP,X ;
* BSET 3,PADAT ;STROBE
* BCLR 3,PADAT
* BCLR 0,PADDR ;DATA LINE IS INPUT
RTS
ACSLO: BSR CLRF
BSET 2,EXTP
BSET 6,SYSSTAT
BRA PDRIVE
ACSHI: BSR CLRF
BSET 1,EXTP
BSET 5,SYSSTAT
BRA PDRIVE
ACSMAX: BSR CLRF
BRA PDRIVE
CLRF: BCLR 2,EXTP
BCLR 1,EXTP
BCLR 6,SYSSTAT
BCLR 5,SYSSTAT
RTS
Hallo DIE HARD:
Danke! Aber schon nächster Wunsch:
Könntet Ihr auf der c-robotics Seite bitte Änderungen kenntlich machen (z.B. "ZIP vom ..."), oder hier einen Hinweis posten, dass es was neues gibt?