microchip

santiago22@centrum.cz santiago22@centrum.cz
Pondělí Březen 28 17:46:10 CEST 2005


Zacinam se ucit s microchip MPlabem 7.x Zacinam ho nenavidet, stahl jsem z internetu nekolik asm souboru a ani jeden se mi nepodarilo prelozit. Kdyz jsem vychytal vsechny chyby a errory tak mi sice nahlasil ze build succeeded bez warningu a erroru ale jaksi vysledny hex soubor ma jen 30B oproti 1KB jak by ho spravne v porovnani s existujicim hex souborem od puvodniho autora mel mit. Mohl by jste se nekdo zkusit prelozit prilozeny asm soubor a rict mi kde delam chybu? Dekuju. Prikladam i puvodni hex soubor od autora a muj i jeho lst soubor. 

Ludek A. Tomasek
------------- další část ---------------
;
;  CREATED BY ACKMAN	APPE V3c.0
;
;  ADAPTADOR DE MANDO DE PSX PARA AMIGA CON EMULACION DE PAD CD32
;  PROCESADOR PIC16F84/10 MHZ
;
;bug en la rutina de comunicacion con el pad solucionado...
;
		DEVICE 16C84, XT_OSC, PROTECT_OFF, WDT_OFF

;  LITERALS

;  REGISTROS
TX_D		EQU	0X10	;CONTIENE EL BYTE A TRANSMITIR AL PAD PSX
OUT		EQU	0X11	;CONTIENE EL BYTE A PONER EN EL JOYSTIC DE AMIGA EN MODO NORMAL
FLAG		EQU	0X12	;REGISTRO DE FLAG INTERNOS DEL PROGRAMA
CONT3		EQU	0X13	;CONTADOR GENERICO 3
CONT2		EQU	0X14	;CONTADOR GENERICO 2
CONT1		EQU	0X15	;CONTADOR GENERICO 1
CD32TX		EQU	0X16	;CONTIENE EL DATO A TRANSMITIR AL AMIGA EN MODO CD32
BYTE2		EQU	0X17	;CONTIENE EL SEGUNDO BYTE UTIL RECIBIDO DEL PAD PSX
BYTE1		EQU	0X18	;CONTIENE EL PRIMER BYTE UTIL RECIBIDO DEL PAD PSX
BYTE		EQU	0X19	;CONTIENE EL BYTE QUE SE ESTA RECIBIENDO DEL PAD PSX
ALMACENS	EQU	0X1A	;CONTIENE EL VALOR DEL STATUS DURANTE LAS IRQ
ALMACENW	EQU	0X1B	;CONTIEN EL VALOR DE W DURANTE LAS IRQ
FIREVEL		EQU	0X1C	;CONTIEN LA VELOCIDAD DEL AUTOFIRE A MAS VALOR= MENOS VELOCIDAD
CD32TXB		EQU	0X1D 	;REGISTRO DE RESGUARDO DE VALOR A TRANSMITIR EN MODO CD32

; PORTA
DATA		EQU	0X00	;PIN 17		ENTRADA DE DATOS DEL PAD PSX
COMM		EQU	0X01	;PIN 18		SALIDA DE DATOS AL PAD PSX
CLK		EQU	0X02	;PIN 1		SALIDA DE SINCRONISMO AL PAD
ATT		EQU	0X03	;PIN 2		SALIDA DE ENABLE AL PAD, PARA LLAMAR SU ATENCION
ACK		EQU	0X04	;PIN 3		ENTRADA DE RECONOCIMIENTO DEL PAD

; PORTB				        MODO	NORMAL		CD32
FIRE2		EQU	0X00	;PIN 6		NO USE		ENABLE CD32
UP		EQU	0X01	;PIN 7		UP		--
LEFT		EQU	0X02	;PIN 8		LEFT		--	
DOWN		EQU	0X03	;PIN 9		DOWN		--
RIGHT		EQU	0X04	;PIN 10		RIGHT		--
FIRE1		EQU	0X05	;PIN 11		FIRE 1		DATA OUT
FIRE0		EQU	0X06	;PIN 12		FIRE 1		CLOCK IN
NCONN		EQU	0X07	;PIN 13		--		--	
							


;
STATUS		EQU     3	; REGISTRO DE ESTADO
PORTA   	EQU     5	; REGISTRO DEL PUERTO A
PORTB   	EQU     6	; REGISTRO DEL PUERTO B
TRISA   	EQU     H'85'	; REGISTRO DE FUNCION PUERTO A 1=IN, 0=OUT
TRISB   	EQU     H'86'	; REGISTRO DE FUNCION PUERTO B 1=IN, 0=OUT
RP1     	EQU     6	; REGISTRO DE SELECCION DE BANCO, JUNTO CON RP0
RP0     	EQU     5	; IDEM RP1 00=B0, 01=B1, 10=B2, 11=B3
OPTION  	EQU     H'81'	; REGISTRO DE OPCIONES
INTCON		EQU	H'0B'	; REGISTRO DE ESTADO DE INTERRUPCIONES
Z		EQU	H'02'	; INDICADOR DE ZERO DE REGISTRO STATUS
C		EQU	H'00'	; INDICADOR DE ACARREO DE 8 BIT
DC		EQU	H'01'	; INDICADOR DE ACARREO DE LOS 4 BIT DE MENOS PESO
TMR0		EQU	H'01'	; REGISTRO DEL TEMPORIZADOR PRINCIPAL
;**** BITS DEL REGISTRO DE OPCIONES OPTION
RBPU		EQU 	7	;BIT DE CONEXION DE CARGAS PULL-UP PORTB (1=QUITADAS)
INTEDG		EQU	6 	;TIPO DE FLANCO DE INTERRUPCION EXTERNA (1= ASCENDENTE)
T0CS 		EQU	5	;FUENTE DE RELOG PARA TMR0 (1=EXTERNO)
T0SE		EQU	4	;TIPO DE FLANCO PARA TMR0 (1=DESCENDENTE)
PSA		EQU	3	;ASIGNACION DEL DIVISOR (1=WDT; 0=TMR0)
PS2		EQU 	2	;VALOR DEL PREDIVISOR
PS1		EQU	1	;
PS0		EQU	0	;
;**** BITS DEL REGISTRO DE INTERRUPCIONES INTCON
GIE		EQU	7	;BIT DE HABILITACION DE INTERRUPCIONES
PEIE		EQU	6	;BIT DE ACTIVACION DEL COMPARADOR
T0IE		EQU	5	;BIT ACTIVACION DE INTERRUPCION DE TMR0
INTE		EQU	4	;BIT ACTIVACION DE INTERRUPCION EXTERNA
RBIE		EQU	3	;BIT DE ACTIVACION DE PORTB
T0IF		EQU	2	;FLAG REBOSAMIENTO DE TMR0
INTF		EQU	1	;FLAG DE ESTADO INTERRUPCION EXTERNA
RBIF		EQU	0	;FLAG DE ESTADO INTERRUPCION PORTB

	NOP	
	CALL	PUERTOS
	CALL	DEFECTO
	GOTO	MAIN

CD32OUT:			;RUTINA DE ATENCION A IRQ
	MOVWF	ALMACENW	;GUARDA CONTENIDO DE W
	BSF	STATUS,RP0	;PONE FIRE0 COMO ENTRADA
	BSF	PORTB,FIRE0	;PONER FIRE0 COMO ENTRADA DE RELOG
	BCF	STATUS,RP0

WCLKE: 	BTFSC	PORTB,FIRE2	;ESPERA A QUE LA LINEA DE RELOG ESTE A 1
	GOTO	SALIR32		;Y COMPRUEBA QUE NO SE HAYA TERMINADO LA TRANSMISION
	BTFSS	PORTB,FIRE0
	GOTO	WCLKE	
	
TX32A:	BTFSS	CD32TX,0
	BCF	PORTB,FIRE1	;MANDA 0
	BTFSC	CD32TX,0
	BSF	PORTB,FIRE1	;MANDA 1
	RRF	CD32TX,F	;ROTA EL BYTE A MANDAR 

WCLKU:  BTFSC	PORTB,FIRE2	;ESPERA QUE LA LINEA DE RELOG ESTE A 0
	GOTO	SALIR32
	BTFSC	PORTB,FIRE0
	GOTO	WCLKU
        GOTO	WCLKE		;REPITE LA RUTINA

SALIR32:
	BSF	STATUS,RP0	;RESTABLECE F0 COMO SALIDA
	BCF	PORTB,FIRE0
	BCF	STATUS,RP0
;	MOVF	OUT,W		;COLOCA LOS DATOS EN LA SALIDA COMO ANTES DE LA IRQ
;	MOVWF	PORTB
	MOVF	CD32TXB,W	;RESTABLECE EL REGISTRO CD32TX, POR SI SE PRODUCE OTRA IRQ TEMPRANA
	MOVWF	CD32TX
	SWAPF	ALMACENW,F	;RESTAURA EL VALOR DE W COMO ANTES DE LA IRQ
	SWAPF	ALMACENW,W	;
	BCF	INTCON,INTF	;BORRA EL FLAG DE INTERRUPCION EXTERNA
	RETFIE

MAIN:
	CALL	PAD
	CALL	BIGDELAY
	CALL	BIGDELAY
	CALL	JOYOUT
	CALL	BIGDELAY
	CALL	PREP32
	CALL	BIGDELAY
	GOTO	MAIN

PAD:				;RUTINA DE LECTURA DE DATOS DEL PAD
	BCF	PORTA,ATT	;LLAMA LA ATENCION DEL PAD
	CALL	BIGDELAY	;ESPERA UN POCO
	MOVLW	0X01		;MANDA UN 01 AL PAD PARA RESETEARLO
	MOVWF	TX_D
	CALL	TX_RX
	CALL	BIGDELAY	;ESPERA OTRO POCO
	MOVLW	0X42		;MANDA UN 42 PARA PEDIR LOS DATOS DEL PAD
	MOVWF	TX_D
	CALL	TX_RX		; SIMULTANEAMENTE SE RECIBE EL TIPO DE PAD CONECTADO
				; 0X41=PAD DIGITAL/ 0X23=NEGCOM/ 0X73=ANALOGICO ROJO
				; 0X53=ANALOGICO VERDE/ 0X23=RATON PSX
				;**** PROXIMAMENTE SE DEBERIA HACER  COMPATIBILIDAD*****
	CALL	BIGDELAY	;ESPERA UN POCO
	CALL	TX_RX		; SE ENVIA UN DATO VACIO FF
				;SIMULTANEAMENTE SE RECIBE UN 0X5A INDICANDO QUE SE VA A TRANSMITIR
	CALL	BIGDELAY	;SE ESPERA OTRO POCO MAS
	CALL	TX_RX		;SE RECIBE EL PRIMER BYTE UTIL
	MOVF	BYTE,W
	MOVWF	BYTE1		;Y SE GUARDA EN EL REGISTRO BYTE1
	CALL	BIGDELAY	;OTRA PAUSA
	CALL	TX_RX		;SE RECIBE EL SEGUNDO BYTE UTIL
	MOVF	BYTE,W
	MOVWF	BYTE2		;Y SE GUARDA EN EL REGISTRO BYTE2
	CALL	BIGDELAY	;OTRA PEQUEŃA PAUSA
	BSF	PORTA,ATT	;SE DEJA LIBRE EL PAD, SE LE LIBERA DE ATENCION
	RETURN	




; CRONOCGRAMA DEL PROTOCOLO PARA MANDAR Y RECIBIR UN BYTE 
;        BIT0  BIT1  BIT2  BIT3  BIT4  BIT5  BIT6  BIT7
;clock---___---___---___---___---___---___---___---___------------
;data ---000000111111222222333333444444555555666666777777---------
;           *     *     *     *     *     *     *     *
;comm ---000000111111222222333333444444555555666666777777---------
;ack  ------------------------------------------------------___---
;        |-4ľS-|

TX_RX:				;RUTINA QUE TRANSMITE Y RECIBE SIMULTANEAMENTE UN BYTE AL PAD
	MOVLW	0X08		;PONE EL NUMERO DE BIT A TRANSMITIR EN EL CONTADOR 3
	MOVWF	CONT3
LOOP_1:
	BCF	PORTA,CLK	;PONE A NIVEL BAJO LA LINEA DE RELOG
	BTFSC	TX_D,0		;PONE EL VALOR ADECUADO EN LA LINEA COMM
	BSF	PORTA,COMM
	BTFSS	TX_D,0
	BCF	PORTA,COMM
	RRF	TX_D,F		;ROTA EL BYTE A MANDAR
	RRF	BYTE,F		;ROTA EL BYTE A RECIBIR
	NOP			;ESPERA SIN HACER NADA AL MENOS 1.5 uS
	NOP
	NOP
	NOP
	NOP
	NOP	
	BCF	BYTE,7		
	BSF	PORTA,CLK	;PONE A UNO LA LINEA DE RELOG
	BTFSC	PORTA,DATA	;LEE EL DATO PRESENTE EN LA LINEA DATA
	BSF	BYTE,7
;	BSF	PORTA,CLK	;PONE A UNO LA LINEA DE RELOG
	NOP			;ESPERA SI HACER NADA AL MENOS 1.5uD
	NOP
	NOP
	NOP
	NOP
	NOP

	DECFSZ	CONT3,F		;COMPRUEBA SI ERA EL ULTIMO BIT
	GOTO	LOOP_1		;SI NO ES EL ULTIMO LEE EL SIGUIENTE
	MOVLW	0XFF		;SI ES EL ULTIMO CARGA FF EN EL REGISTRO A TRANSMITIR
	MOVWF	TX_D
	BSF	PORTA,COMM	;Y DEJA LA LINEA COMM A NIVEL ALTO
	RETURN	


;	CONTENIDO DE LOS BYTES TRANSMITIDOS POR EL PAD DIGITAL Y ANALOGICO ROJO
;	BIT7	BIT6	BIT5	BIT4	BIT3	BIT2	BIT1	BIT0
;BYTE1	IZQDA	ABAJO	DRCHA	ARRBA	STAR	-	-	SELECT
;BITE2	(|_|)	(X)	(O)	(/\)	R1	L1	R2	L2


;	CONTENIDO DEL BYTE DE TRANSMISION AL AMIGA EN MODO CD32
;	BIT7	BIT6	BIT5	BIT4	BIT3	BIT2	BIT1	BIT0
;CD32TX			PLAY	<<	>>	VERDE	AMRLL	ROJO
;EQU			START	L1	R1	(|_|)	(/\)	(X)



;EL BOTON AZUL NO ES NECESARIO TRANSMITIRLO QUE EQUIVALE A (O)

JOYOUT:
	MOVLW	0XFF
	MOVWF	OUT
	BTFSS	BYTE1,4		;SI SE PULSA ARRIBA
	BCF	OUT,UP
	BTFSS	BYTE1,5		;SI SE PULSA DERECHA
	BCF	OUT,RIGHT
	BTFSS	BYTE1,6		;SI SE PULSA ABAJO
	BCF	OUT,DOWN
	BTFSS	BYTE1,7		;SI SE PULSA IZQUIERDA
	BCF	OUT,LEFT	
	BTFSS	BYTE2,1		;SI SE PULSA R2
	CALL	AUTOFIRE
	BTFSS	BYTE2,5		;SI SE PULSA (O)
	BCF	OUT,FIRE1
	BTFSS	BYTE2,6		;SI SE PULSA (X)
	BCF	OUT,FIRE0
	MOVF	OUT,W
	MOVWF	PORTB
	RETURN	
AUTOFIRE:
	DECFSZ	FIREVEL,F
	RETURN	
	BCF	BYTE2,6
	MOVLW	0X04		;ESTE VALOR AJUSTA LA VELOCIDAD DE AUTOFIRE -=+VEL
	MOVWF	FIREVEL
	RETURN	

;
PREP32:
	;RUTINA TRADUCTORA DE PSX A PROTOCOLO CD32
	BSF	CD32TX,6
	BSF	CD32TX,7
	BTFSS	BYTE1,3		;SI SE PULSA STAR
	BCF	CD32TX,5	;EQUIVALE A PLAY/PAUSA
	BTFSS	BYTE2,2		;SI SE PULSA L1
	BCF	CD32TX,4	;EQUVALE A <<
	BTFSS	BYTE2,3		;SI SE PULSA R1
	BCF	CD32TX,3	;EQUVALE A >>
	BTFSS	BYTE2,4		;SI SE PULSA TRIANGULO
	BCF	CD32TX,1	;EQUVALE A AMARILLO	
	BTFSS	BYTE2,7		;SI SE PULSA CUADRADO 
	BCF     CD32TX,2        ;EQUIVALE A VERDE
	BTFSS	BYTE2,6		;SI SE PULSA (X)
	BCF	CD32TX,0	;EQUIVALE A ROJO
	BTFSC	BYTE1,3		;SI NO SE PULSA STAR
	BSF	CD32TX,5	;EQUIVALE A PLAY/PAUSA
	BTFSC	BYTE2,2		;SI NO SE PULSA L1
	BSF	CD32TX,4	;EQUVALE A <<
	BTFSC	BYTE2,3		;SI NO SE PULSA R1
	BSF	CD32TX,3	;EQUVALE A >>
	BTFSC	BYTE2,4		;SI NO SE PULSA TRIANGULO
	BSF	CD32TX,1	;EQUVALE A AMARILLO	
	BTFSC	BYTE2,7		;SI NO SE PULSA CUADRADO 
	BSF     CD32TX,2        ;EQUIVALE A VERDE
	BTFSC	BYTE2,6		;SI NO SE PULSA (X)
	BSF	CD32TX,0	;EQUIVALE A ROJO
	MOVF	CD32TX,W
	MOVWF	CD32TXB
	RETURN

PUERTOS:
	;ASIGNACION DE LAS PATILLAS DE I/O

	BSF	STATUS,RP0
	BSF	PORTA,DATA
	BCF	PORTA,COMM
	BCF	PORTA,CLK
	BCF	PORTA,ATT
	BCF	PORTB,FIRE0
	BCF	PORTB,FIRE1
	BSF	PORTB,FIRE2
	BCF	PORTB,UP
	BCF	PORTB,DOWN
	BCF	PORTB,LEFT
	BCF	PORTB,RIGHT
	BCF	OPTION,INTEDG
	BSF	OPTION,RBPU
	BCF	STATUS,RP0

	RETURN	

DEFECTO:
	;ASIGNACION DE VALORES POR DEFECTO A REGISTROS Y PATILLAS
	;INICIALIZACION DE INTERRUPCIONES
	BSF	PORTA,ATT
	BSF	PORTA,CLK
	BSF	PORTA,COMM
	MOVLW	0X02
	MOVWF	FIREVEL
	BCF	INTCON,INTF
	BSF	INTCON,GIE
	BSF	INTCON,INTE

	RETURN	
	
DELAY:
	MOVWF	CONT1
LOOP1:
	DECFSZ	CONT1,F
	GOTO	LOOP1
	RETURN	
BIGDELAY:
	MOVLW	0X0A
	MOVWF	CONT2
	MOVLW	0X0A
LOOP2:
	CALL	DELAY
	DECFSZ	CONT2,F
	GOTO	LOOP2
	RETURN
	END
------------- další část ---------------
:1000000000009220A2201F289B008316061783124F
:1000100006181628061F0828161C8612161886169B
:10002000960C06181628061B112808288316061396
:1000300083121D0896009B0E1B0E8B1009002720B3
:10004000AF20AF205C20AF207520AF201F28851186
:10005000AF20013090003D20AF20423090003D2085
:10006000AF203D20AF203D2019089800AF203D2053
:1000700019089700AF208515080008309300051176
:1000800010188514101C8510900C990C00000000AD
:1000900000000000000000009913051505189917CD
:1000A000000000000000000000000000930B3F284B
:1000B000FF30900085140800FF309100181E911049
:1000C000981E1112181F9111981F1111971C6F2063
:1000D000971E9112171F11131108860008009C0B20
:1000E0000800171304309C00080016179617981D77
:1000F0009612171D1612971D9611171E9610971F10
:100100001611171F16109819961617191616971903
:100110009615171A9614971B1615171B1614160802
:100120009D0008008316051485100511851106131E
:100130008612061486108611061106120113811705
:100140008312080085150515851402309C008B105C
:100150008B170B1608009500950BAC2808000A3089
:1001600094000A30AB20940BB2280800FF3FFF3FF9
:10400000FF3FFF3FFF3FFF3FFF3FFF3FFF3FF93FC6
:00000001FF
------------- další část ---------------
MPASM  4.00 Released                                 PSX2.ASM   3-28-2005  17:39:52         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 ;
;  CREATED BY ACKMAN  APPE V3c.0
;
;  ADAPTADOR DE MANDO DE PSX PARA AMIGA CON EMULACION DE PAD CD32
;
                              PROCESADOR PIC16F84/10 MHZ
;
;bug en la rutina de comunicacion con el pad solucionado...
;
   
                      00002         END
MPASM  4.00 Released                                 PSX2.ASM   3-28-2005  17:39:52         PAGE  2


SYMBOL TABLE
  LABEL                             VALUE 

__16F84A                          00000001


MEMORY USAGE MAP ('X' = Used,  '-' = Unused)


All other memory blocks unused.

Program Memory Words Used:     0
Program Memory Words Free:  1024


Errors   :     0
Warnings :     0 reported,     0 suppressed
Messages :     0 reported,     0 suppressed


------------- další část ---------------
#PIC V1.0 (c)1997 J.Petroglou	LIST FILE
#file: appe_v3dma.asm
#date: Fri Jul 14 17:37:16 2000
#pic : PIC16C84
ADDR CODE	 SRCLINE SOURCECODE

0000             000001 ;
0000             000002 ;  CREATED BY ACKMAN	APPE V3c.0
0000             000003 ;
0000             000004 ;  ADAPTADOR DE MANDO DE PSX PARA AMIGA CON EMULACION DE PAD CD32
0000             000005 ;  PROCESADOR PIC16F84/10 MHZ
0000             000006 ;
0000             000007 ;bug en la rutina de comunicacion con el pad solucionado...
0000             000008 ;
0000             000009 		DEVICE 16C84, XT_OSC, PROTECT_OFF, WDT_OFF
0000             000010 
0000             000011 ;  LITERALS
0000             000012 
0000             000013 ;  REGISTROS
0000             000014 TX_D		EQU	0X10	;CONTIENE EL BYTE A TRANSMITIR AL PAD PSX
0000             000015 OUT		EQU	0X11	;CONTIENE EL BYTE A PONER EN EL JOYSTIC DE AMIGA EN MODO NORMAL
0000             000016 FLAG		EQU	0X12	;REGISTRO DE FLAG INTERNOS DEL PROGRAMA
0000             000017 CONT3		EQU	0X13	;CONTADOR GENERICO 3
0000             000018 CONT2		EQU	0X14	;CONTADOR GENERICO 2
0000             000019 CONT1		EQU	0X15	;CONTADOR GENERICO 1
0000             000020 CD32TX		EQU	0X16	;CONTIENE EL DATO A TRANSMITIR AL AMIGA EN MODO CD32
0000             000021 BYTE2		EQU	0X17	;CONTIENE EL SEGUNDO BYTE UTIL RECIBIDO DEL PAD PSX
0000             000022 BYTE1		EQU	0X18	;CONTIENE EL PRIMER BYTE UTIL RECIBIDO DEL PAD PSX
0000             000023 BYTE		EQU	0X19	;CONTIENE EL BYTE QUE SE ESTA RECIBIENDO DEL PAD PSX
0000             000024 ALMACENS	EQU	0X1A	;CONTIENE EL VALOR DEL STATUS DURANTE LAS IRQ
0000             000025 ALMACENW	EQU	0X1B	;CONTIEN EL VALOR DE W DURANTE LAS IRQ
0000             000026 FIREVEL		EQU	0X1C	;CONTIEN LA VELOCIDAD DEL AUTOFIRE A MAS VALOR= MENOS VELOCIDAD
0000             000027 CD32TXB		EQU	0X1D 	;REGISTRO DE RESGUARDO DE VALOR A TRANSMITIR EN MODO CD32
0000             000028 
0000             000029 ; PORTA
0000             000030 DATA		EQU	0X00	;PIN 17		ENTRADA DE DATOS DEL PAD PSX
0000             000031 COMM		EQU	0X01	;PIN 18		SALIDA DE DATOS AL PAD PSX
0000             000032 CLK		EQU	0X02	;PIN 1		SALIDA DE SINCRONISMO AL PAD
0000             000033 ATT		EQU	0X03	;PIN 2		SALIDA DE ENABLE AL PAD, PARA LLAMAR SU ATENCION
0000             000034 ACK		EQU	0X04	;PIN 3		ENTRADA DE RECONOCIMIENTO DEL PAD
0000             000035 
0000             000036 ; PORTB				        MODO	NORMAL		CD32
0000             000037 FIRE2		EQU	0X00	;PIN 6		NO USE		ENABLE CD32
0000             000038 UP		EQU	0X01	;PIN 7		UP		--
0000             000039 LEFT		EQU	0X02	;PIN 8		LEFT		--	
0000             000040 DOWN		EQU	0X03	;PIN 9		DOWN		--
0000             000041 RIGHT		EQU	0X04	;PIN 10		RIGHT		--
0000             000042 FIRE1		EQU	0X05	;PIN 11		FIRE 1		DATA OUT
0000             000043 FIRE0		EQU	0X06	;PIN 12		FIRE 1		CLOCK IN
0000             000044 NCONN		EQU	0X07	;PIN 13		--		--	
0000             000045 							
0000             000046 
0000             000047 
0000             000048 ;
0000             000049 STATUS		EQU     3	; REGISTRO DE ESTADO
0000             000050 PORTA   	EQU     5	; REGISTRO DEL PUERTO A
0000             000051 PORTB   	EQU     6	; REGISTRO DEL PUERTO B
0000             000052 TRISA   	EQU     H'85'	; REGISTRO DE FUNCION PUERTO A 1=IN, 0=OUT
0000             000053 TRISB   	EQU     H'86'	; REGISTRO DE FUNCION PUERTO B 1=IN, 0=OUT
0000             000054 RP1     	EQU     6	; REGISTRO DE SELECCION DE BANCO, JUNTO CON RP0
0000             000055 RP0     	EQU     5	; IDEM RP1 00=B0, 01=B1, 10=B2, 11=B3
0000             000056 OPTION  	EQU     H'81'	; REGISTRO DE OPCIONES
0000             000057 INTCON		EQU	H'0B'	; REGISTRO DE ESTADO DE INTERRUPCIONES
0000             000058 Z		EQU	H'02'	; INDICADOR DE ZERO DE REGISTRO STATUS
0000             000059 C		EQU	H'00'	; INDICADOR DE ACARREO DE 8 BIT
0000             000060 DC		EQU	H'01'	; INDICADOR DE ACARREO DE LOS 4 BIT DE MENOS PESO
0000             000061 TMR0		EQU	H'01'	; REGISTRO DEL TEMPORIZADOR PRINCIPAL
0000             000062 ;**** BITS DEL REGISTRO DE OPCIONES OPTION
0000             000063 RBPU		EQU 	7	;BIT DE CONEXION DE CARGAS PULL-UP PORTB (1=QUITADAS)
0000             000064 INTEDG		EQU	6 	;TIPO DE FLANCO DE INTERRUPCION EXTERNA (1= ASCENDENTE)
0000             000065 T0CS 		EQU	5	;FUENTE DE RELOG PARA TMR0 (1=EXTERNO)
0000             000066 T0SE		EQU	4	;TIPO DE FLANCO PARA TMR0 (1=DESCENDENTE)
0000             000067 PSA		EQU	3	;ASIGNACION DEL DIVISOR (1=WDT; 0=TMR0)
0000             000068 PS2		EQU 	2	;VALOR DEL PREDIVISOR
0000             000069 PS1		EQU	1	;
0000             000070 PS0		EQU	0	;
0000             000071 ;**** BITS DEL REGISTRO DE INTERRUPCIONES INTCON
0000             000072 GIE		EQU	7	;BIT DE HABILITACION DE INTERRUPCIONES
0000             000073 PEIE		EQU	6	;BIT DE ACTIVACION DEL COMPARADOR
0000             000074 T0IE		EQU	5	;BIT ACTIVACION DE INTERRUPCION DE TMR0
0000             000075 INTE		EQU	4	;BIT ACTIVACION DE INTERRUPCION EXTERNA
0000             000076 RBIE		EQU	3	;BIT DE ACTIVACION DE PORTB
0000             000077 T0IF		EQU	2	;FLAG REBOSAMIENTO DE TMR0
0000             000078 INTF		EQU	1	;FLAG DE ESTADO INTERRUPCION EXTERNA
0000             000079 RBIF		EQU	0	;FLAG DE ESTADO INTERRUPCION PORTB
0000             000080 
0000 0000        000081 	NOP	
0001 2092        000082 	CALL	PUERTOS
0002 20A2        000083 	CALL	DEFECTO
0003 281F        000084 	GOTO	MAIN
0004             000085 
0004             000086 CD32OUT:			;RUTINA DE ATENCION A IRQ
0004 009B        000087 	MOVWF	ALMACENW	;GUARDA CONTENIDO DE W
0005 1683        000088 	BSF	STATUS,RP0	;PONE FIRE0 COMO ENTRADA
0006 1706        000089 	BSF	PORTB,FIRE0	;PONER FIRE0 COMO ENTRADA DE RELOG
0007 1283        000090 	BCF	STATUS,RP0
0008             000091 
0008 1806        000092 WCLKE: 	BTFSC	PORTB,FIRE2	;ESPERA A QUE LA LINEA DE RELOG ESTE A 1
0009 2816        000093 	GOTO	SALIR32		;Y COMPRUEBA QUE NO SE HAYA TERMINADO LA TRANSMISION
000A 1F06        000094 	BTFSS	PORTB,FIRE0
000B 2808        000095 	GOTO	WCLKE	
000C             000096 	
000C 1C16        000097 TX32A:	BTFSS	CD32TX,0
000D 1286        000098 	BCF	PORTB,FIRE1	;MANDA 0
000E 1816        000099 	BTFSC	CD32TX,0
000F 1686        000100 	BSF	PORTB,FIRE1	;MANDA 1
0010 0C96        000101 	RRF	CD32TX,F	;ROTA EL BYTE A MANDAR 
0011             000102 
0011 1806        000103 WCLKU:  BTFSC	PORTB,FIRE2	;ESPERA QUE LA LINEA DE RELOG ESTE A 0
0012 2816        000104 	GOTO	SALIR32
0013 1B06        000105 	BTFSC	PORTB,FIRE0
0014 2811        000106 	GOTO	WCLKU
0015 2808        000107         GOTO	WCLKE		;REPITE LA RUTINA
0016             000108 
0016             000109 SALIR32:
0016 1683        000110 	BSF	STATUS,RP0	;RESTABLECE F0 COMO SALIDA
0017 1306        000111 	BCF	PORTB,FIRE0
0018 1283        000112 	BCF	STATUS,RP0
0019             000113 ;	MOVF	OUT,W		;COLOCA LOS DATOS EN LA SALIDA COMO ANTES DE LA IRQ
0019             000114 ;	MOVWF	PORTB
0019 081D        000115 	MOVF	CD32TXB,W	;RESTABLECE EL REGISTRO CD32TX, POR SI SE PRODUCE OTRA IRQ TEMPRANA
001A 0096        000116 	MOVWF	CD32TX
001B 0E9B        000117 	SWAPF	ALMACENW,F	;RESTAURA EL VALOR DE W COMO ANTES DE LA IRQ
001C 0E1B        000118 	SWAPF	ALMACENW,W	;
001D 108B        000119 	BCF	INTCON,INTF	;BORRA EL FLAG DE INTERRUPCION EXTERNA
001E 0009        000120 	RETFIE
001F             000121 
001F             000122 MAIN:
001F 2027        000123 	CALL	PAD
0020 20AF        000124 	CALL	BIGDELAY
0021 20AF        000125 	CALL	BIGDELAY
0022 205C        000126 	CALL	JOYOUT
0023 20AF        000127 	CALL	BIGDELAY
0024 2075        000128 	CALL	PREP32
0025 20AF        000129 	CALL	BIGDELAY
0026 281F        000130 	GOTO	MAIN
0027             000131 
0027             000132 PAD:				;RUTINA DE LECTURA DE DATOS DEL PAD
0027 1185        000133 	BCF	PORTA,ATT	;LLAMA LA ATENCION DEL PAD
0028 20AF        000134 	CALL	BIGDELAY	;ESPERA UN POCO
0029 3001        000135 	MOVLW	0X01		;MANDA UN 01 AL PAD PARA RESETEARLO
002A 0090        000136 	MOVWF	TX_D
002B 203D        000137 	CALL	TX_RX
002C 20AF        000138 	CALL	BIGDELAY	;ESPERA OTRO POCO
002D 3042        000139 	MOVLW	0X42		;MANDA UN 42 PARA PEDIR LOS DATOS DEL PAD
002E 0090        000140 	MOVWF	TX_D
002F 203D        000141 	CALL	TX_RX		; SIMULTANEAMENTE SE RECIBE EL TIPO DE PAD CONECTADO
0030             000142 				; 0X41=PAD DIGITAL/ 0X23=NEGCOM/ 0X73=ANALOGICO ROJO
0030             000143 				; 0X53=ANALOGICO VERDE/ 0X23=RATON PSX
0030             000144 				;**** PROXIMAMENTE SE DEBERIA HACER  COMPATIBILIDAD*****
0030 20AF        000145 	CALL	BIGDELAY	;ESPERA UN POCO
0031 203D        000146 	CALL	TX_RX		; SE ENVIA UN DATO VACIO FF
0032             000147 				;SIMULTANEAMENTE SE RECIBE UN 0X5A INDICANDO QUE SE VA A TRANSMITIR
0032 20AF        000148 	CALL	BIGDELAY	;SE ESPERA OTRO POCO MAS
0033 203D        000149 	CALL	TX_RX		;SE RECIBE EL PRIMER BYTE UTIL
0034 0819        000150 	MOVF	BYTE,W
0035 0098        000151 	MOVWF	BYTE1		;Y SE GUARDA EN EL REGISTRO BYTE1
0036 20AF        000152 	CALL	BIGDELAY	;OTRA PAUSA
0037 203D        000153 	CALL	TX_RX		;SE RECIBE EL SEGUNDO BYTE UTIL
0038 0819        000154 	MOVF	BYTE,W
0039 0097        000155 	MOVWF	BYTE2		;Y SE GUARDA EN EL REGISTRO BYTE2
003A 20AF        000156 	CALL	BIGDELAY	;OTRA PEQUEŃA PAUSA
003B 1585        000157 	BSF	PORTA,ATT	;SE DEJA LIBRE EL PAD, SE LE LIBERA DE ATENCION
003C 0008        000158 	RETURN	
003D             000159 
003D             000160 
003D             000161 
003D             000162 
003D             000163 ; CRONOCGRAMA DEL PROTOCOLO PARA MANDAR Y RECIBIR UN BYTE 
003D             000164 ;        BIT0  BIT1  BIT2  BIT3  BIT4  BIT5  BIT6  BIT7
003D             000165 ;clock---___---___---___---___---___---___---___---___------------
003D             000166 ;data ---000000111111222222333333444444555555666666777777---------
003D             000167 ;           *     *     *     *     *     *     *     *
003D             000168 ;comm ---000000111111222222333333444444555555666666777777---------
003D             000169 ;ack  ------------------------------------------------------___---
003D             000170 ;        |-4ľS-|
003D             000171 
003D             000172 TX_RX:				;RUTINA QUE TRANSMITE Y RECIBE SIMULTANEAMENTE UN BYTE AL PAD
003D 3008        000173 	MOVLW	0X08		;PONE EL NUMERO DE BIT A TRANSMITIR EN EL CONTADOR 3
003E 0093        000174 	MOVWF	CONT3
003F             000175 LOOP_1:
003F 1105        000176 	BCF	PORTA,CLK	;PONE A NIVEL BAJO LA LINEA DE RELOG
0040 1810        000177 	BTFSC	TX_D,0		;PONE EL VALOR ADECUADO EN LA LINEA COMM
0041 1485        000178 	BSF	PORTA,COMM
0042 1C10        000179 	BTFSS	TX_D,0
0043 1085        000180 	BCF	PORTA,COMM
0044 0C90        000181 	RRF	TX_D,F		;ROTA EL BYTE A MANDAR
0045 0C99        000182 	RRF	BYTE,F		;ROTA EL BYTE A RECIBIR
0046 0000        000183 	NOP			;ESPERA SIN HACER NADA AL MENOS 1.5 uS
0047 0000        000184 	NOP
0048 0000        000185 	NOP
0049 0000        000186 	NOP
004A 0000        000187 	NOP
004B 0000        000188 	NOP	
004C 1399        000189 	BCF	BYTE,7		
004D 1505        000190 	BSF	PORTA,CLK	;PONE A UNO LA LINEA DE RELOG
004E 1805        000191 	BTFSC	PORTA,DATA	;LEE EL DATO PRESENTE EN LA LINEA DATA
004F 1799        000192 	BSF	BYTE,7
0050             000193 ;	BSF	PORTA,CLK	;PONE A UNO LA LINEA DE RELOG
0050 0000        000194 	NOP			;ESPERA SI HACER NADA AL MENOS 1.5uD
0051 0000        000195 	NOP
0052 0000        000196 	NOP
0053 0000        000197 	NOP
0054 0000        000198 	NOP
0055 0000        000199 	NOP
0056             000200 
0056 0B93        000201 	DECFSZ	CONT3,F		;COMPRUEBA SI ERA EL ULTIMO BIT
0057 283F        000202 	GOTO	LOOP_1		;SI NO ES EL ULTIMO LEE EL SIGUIENTE
0058 30FF        000203 	MOVLW	0XFF		;SI ES EL ULTIMO CARGA FF EN EL REGISTRO A TRANSMITIR
0059 0090        000204 	MOVWF	TX_D
005A 1485        000205 	BSF	PORTA,COMM	;Y DEJA LA LINEA COMM A NIVEL ALTO
005B 0008        000206 	RETURN	
005C             000207 
005C             000208 
005C             000209 ;	CONTENIDO DE LOS BYTES TRANSMITIDOS POR EL PAD DIGITAL Y ANALOGICO ROJO
005C             000210 ;	BIT7	BIT6	BIT5	BIT4	BIT3	BIT2	BIT1	BIT0
005C             000211 ;BYTE1	IZQDA	ABAJO	DRCHA	ARRBA	STAR	-	-	SELECT
005C             000212 ;BITE2	(|_|)	(X)	(O)	(/\)	R1	L1	R2	L2
005C             000213 
005C             000214 
005C             000215 ;	CONTENIDO DEL BYTE DE TRANSMISION AL AMIGA EN MODO CD32
005C             000216 ;	BIT7	BIT6	BIT5	BIT4	BIT3	BIT2	BIT1	BIT0
005C             000217 ;CD32TX			PLAY	<<	>>	VERDE	AMRLL	ROJO
005C             000218 ;EQU			START	L1	R1	(|_|)	(/\)	(X)
005C             000219 
005C             000220 
005C             000221 
005C             000222 ;EL BOTON AZUL NO ES NECESARIO TRANSMITIRLO QUE EQUIVALE A (O)
005C             000223 
005C             000224 JOYOUT:
005C 30FF        000225 	MOVLW	0XFF
005D 0091        000226 	MOVWF	OUT
005E 1E18        000227 	BTFSS	BYTE1,4		;SI SE PULSA ARRIBA
005F 1091        000228 	BCF	OUT,UP
0060 1E98        000229 	BTFSS	BYTE1,5		;SI SE PULSA DERECHA
0061 1211        000230 	BCF	OUT,RIGHT
0062 1F18        000231 	BTFSS	BYTE1,6		;SI SE PULSA ABAJO
0063 1191        000232 	BCF	OUT,DOWN
0064 1F98        000233 	BTFSS	BYTE1,7		;SI SE PULSA IZQUIERDA
0065 1111        000234 	BCF	OUT,LEFT	
0066 1C97        000235 	BTFSS	BYTE2,1		;SI SE PULSA R2
0067 206F        000236 	CALL	AUTOFIRE
0068 1E97        000237 	BTFSS	BYTE2,5		;SI SE PULSA (O)
0069 1291        000238 	BCF	OUT,FIRE1
006A 1F17        000239 	BTFSS	BYTE2,6		;SI SE PULSA (X)
006B 1311        000240 	BCF	OUT,FIRE0
006C 0811        000241 	MOVF	OUT,W
006D 0086        000242 	MOVWF	PORTB
006E 0008        000243 	RETURN	
006F             000244 AUTOFIRE:
006F 0B9C        000245 	DECFSZ	FIREVEL,F
0070 0008        000246 	RETURN	
0071 1317        000247 	BCF	BYTE2,6
0072 3004        000248 	MOVLW	0X04		;ESTE VALOR AJUSTA LA VELOCIDAD DE AUTOFIRE -=+VEL
0073 009C        000249 	MOVWF	FIREVEL
0074 0008        000250 	RETURN	
0075             000251 
0075             000252 ;
0075             000253 PREP32:
0075             000254 	;RUTINA TRADUCTORA DE PSX A PROTOCOLO CD32
0075 1716        000255 	BSF	CD32TX,6
0076 1796        000256 	BSF	CD32TX,7
0077 1D98        000257 	BTFSS	BYTE1,3		;SI SE PULSA STAR
0078 1296        000258 	BCF	CD32TX,5	;EQUIVALE A PLAY/PAUSA
0079 1D17        000259 	BTFSS	BYTE2,2		;SI SE PULSA L1
007A 1216        000260 	BCF	CD32TX,4	;EQUVALE A <<
007B 1D97        000261 	BTFSS	BYTE2,3		;SI SE PULSA R1
007C 1196        000262 	BCF	CD32TX,3	;EQUVALE A >>
007D 1E17        000263 	BTFSS	BYTE2,4		;SI SE PULSA TRIANGULO
007E 1096        000264 	BCF	CD32TX,1	;EQUVALE A AMARILLO	
007F 1F97        000265 	BTFSS	BYTE2,7		;SI SE PULSA CUADRADO 
0080 1116        000266 	BCF     CD32TX,2        ;EQUIVALE A VERDE
0081 1F17        000267 	BTFSS	BYTE2,6		;SI SE PULSA (X)
0082 1016        000268 	BCF	CD32TX,0	;EQUIVALE A ROJO
0083 1998        000269 	BTFSC	BYTE1,3		;SI NO SE PULSA STAR
0084 1696        000270 	BSF	CD32TX,5	;EQUIVALE A PLAY/PAUSA
0085 1917        000271 	BTFSC	BYTE2,2		;SI NO SE PULSA L1
0086 1616        000272 	BSF	CD32TX,4	;EQUVALE A <<
0087 1997        000273 	BTFSC	BYTE2,3		;SI NO SE PULSA R1
0088 1596        000274 	BSF	CD32TX,3	;EQUVALE A >>
0089 1A17        000275 	BTFSC	BYTE2,4		;SI NO SE PULSA TRIANGULO
008A 1496        000276 	BSF	CD32TX,1	;EQUVALE A AMARILLO	
008B 1B97        000277 	BTFSC	BYTE2,7		;SI NO SE PULSA CUADRADO 
008C 1516        000278 	BSF     CD32TX,2        ;EQUIVALE A VERDE
008D 1B17        000279 	BTFSC	BYTE2,6		;SI NO SE PULSA (X)
008E 1416        000280 	BSF	CD32TX,0	;EQUIVALE A ROJO
008F 0816        000281 	MOVF	CD32TX,W
0090 009D        000282 	MOVWF	CD32TXB
0091 0008        000283 	RETURN
0092             000284 
0092             000285 PUERTOS:
0092             000286 	;ASIGNACION DE LAS PATILLAS DE I/O
0092             000287 
0092 1683        000288 	BSF	STATUS,RP0
0093 1405        000289 	BSF	PORTA,DATA
0094 1085        000290 	BCF	PORTA,COMM
0095 1105        000291 	BCF	PORTA,CLK
0096 1185        000292 	BCF	PORTA,ATT
0097 1306        000293 	BCF	PORTB,FIRE0
0098 1286        000294 	BCF	PORTB,FIRE1
0099 1406        000295 	BSF	PORTB,FIRE2
009A 1086        000296 	BCF	PORTB,UP
009B 1186        000297 	BCF	PORTB,DOWN
009C 1106        000298 	BCF	PORTB,LEFT
009D 1206        000299 	BCF	PORTB,RIGHT
009E 1301        000300 	BCF	OPTION,INTEDG
009F 1781        000301 	BSF	OPTION,RBPU
00A0 1283        000302 	BCF	STATUS,RP0
00A1             000303 
00A1 0008        000304 	RETURN	
00A2             000305 
00A2             000306 DEFECTO:
00A2             000307 	;ASIGNACION DE VALORES POR DEFECTO A REGISTROS Y PATILLAS
00A2             000308 	;INICIALIZACION DE INTERRUPCIONES
00A2 1585        000309 	BSF	PORTA,ATT
00A3 1505        000310 	BSF	PORTA,CLK
00A4 1485        000311 	BSF	PORTA,COMM
00A5 3002        000312 	MOVLW	0X02
00A6 009C        000313 	MOVWF	FIREVEL
00A7 108B        000314 	BCF	INTCON,INTF
00A8 178B        000315 	BSF	INTCON,GIE
00A9 160B        000316 	BSF	INTCON,INTE
00AA             000317 
00AA 0008        000318 	RETURN	
00AB             000319 	
00AB             000320 DELAY:
00AB 0095        000321 	MOVWF	CONT1
00AC             000322 LOOP1:
00AC 0B95        000323 	DECFSZ	CONT1,F
00AD 28AC        000324 	GOTO	LOOP1
00AE 0008        000325 	RETURN	
00AF             000326 BIGDELAY:
00AF 300A        000327 	MOVLW	0X0A
00B0 0094        000328 	MOVWF	CONT2
00B1 300A        000329 	MOVLW	0X0A
00B2             000330 LOOP2:
00B2 20AB        000331 	CALL	DELAY
00B3 0B94        000332 	DECFSZ	CONT2,F
00B4 28B2        000333 	GOTO	LOOP2
00B5 0008        000334 	RETURN	
00B6             000335 	END


Used Symbols
-----------------------------------------
TX_D                             00000010
OUT                              00000011
FLAG                             00000012
CONT3                            00000013
CONT2                            00000014
CONT1                            00000015
CD32TX                           00000016
BYTE2                            00000017
BYTE1                            00000018
BYTE                             00000019
ALMACENS                         0000001A
ALMACENW                         0000001B
FIREVEL                          0000001C
CD32TXB                          0000001D
DATA                             00000000
COMM                             00000001
CLK                              00000002
ATT                              00000003
ACK                              00000004
FIRE2                            00000000
UP                               00000001
LEFT                             00000002
DOWN                             00000003
RIGHT                            00000004
FIRE1                            00000005
FIRE0                            00000006
NCONN                            00000007
STATUS                           00000003
PORTA                            00000005
PORTB                            00000006
TRISA                            00000085
TRISB                            00000086
RP1                              00000006
RP0                              00000005
OPTION                           00000081
INTCON                           0000000B
Z                                00000002
C                                00000000
DC                               00000001
TMR0                             00000001
RBPU                             00000007
INTEDG                           00000006
T0CS                             00000005
T0SE                             00000004
PSA                              00000003
PS2                              00000002
PS1                              00000001
PS0                              00000000
GIE                              00000007
PEIE                             00000006
T0IE                             00000005
INTE                             00000004
RBIE                             00000003
T0IF                             00000002
INTF                             00000001
RBIF                             00000000
CD32OUT                          00000004
WCLKE                            00000008
TX32A                            0000000C
WCLKU                            00000011
SALIR32                          00000016
MAIN                             0000001F
PAD                              00000027
TX_RX                            0000003D
LOOP_1                           0000003F
JOYOUT                           0000005C
AUTOFIRE                         0000006F
PREP32                           00000075
PUERTOS                          00000092
DEFECTO                          000000A2
DELAY                            000000AB
LOOP1                            000000AC
BIGDELAY                         000000AF
LOOP2                            000000B2


Used Defines
-----------------------------------------


PROGRAM MEMORY USAGE TABLE:	'-' = not used  'X' = used

0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXX----------
00C0 : ---------------- ---------------- ---------------- ----------------
0100 : ---------------- ---------------- ---------------- ----------------
0140 : ---------------- ---------------- ---------------- ----------------
0180 : ---------------- ---------------- ---------------- ----------------
01C0 : ---------------- ---------------- ---------------- ----------------
0200 : ---------------- ---------------- ---------------- ----------------
0240 : ---------------- ---------------- ---------------- ----------------
0280 : ---------------- ---------------- ---------------- ----------------
02C0 : ---------------- ---------------- ---------------- ----------------
0300 : ---------------- ---------------- ---------------- ----------------
0340 : ---------------- ---------------- ---------------- ----------------
0380 : ---------------- ---------------- ---------------- ----------------
03C0 : ---------------- ---------------- ---------------- ----------------

Program Memory Words Used:  0182
Program Memory Words Free:  0842

Errors: 0


Další informace o konferenci Hw-list