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