elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  Mejorar el Mod8 para PS2
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mejorar el Mod8 para PS2  (Leído 2,749 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Mejorar el Mod8 para PS2
« en: 13 Julio 2008, 02:46 am »

Hola.

Me gustaría contactar con el que documentó este ASM del PIC12C508 si tiene un diagrama de flujo para entenderlo mejor. Ya que utiliza retardos y para verlo en el MPLAB es un tostón. Su e-mail abajo no funciona.


Código:
;+-------------------------------------------------------------------------+
;¦ MYC.ASM ¦ DESENSAMBLADO DE 8MODCHIP.HEX PARA PSX2 POR MANOLO Y COMPAÑIA ¦
;+-------------------------------------------------------------------------+

;  NOTA:
;* Para visualizar este fichero correctamente, usa el edit del dos
;  o el bloc de notas del windows con el tipo de fuente 'terminal'
;* El objeto de realizar el desensamblado y comentado del código fuente,
;  del 8modchip.hex es con el fin de que todos conozcamos como funciona
;  y podamos perfeccionarlo y modificarlo entre todos a nuestro antojo.
;* Espero que al publicarlo en el foro, las mentes pensantes colaboren.
;* Desconozco quien es el autor del hex original pero le felicito por su
;  programa.
;* Según aparezcan nuevas versiones del modchip se irán desensamblando
;  y publicando.
;* Por favor poner vuestras experiencias en el foro para que lo vea todo
;  el mundo.
;* los tiempos de las rutinas son muy críticos.
;* El codigo está más ordenado que en el 8modchip.hex pero es el mismo
;  únicamete se han suprimido los caracteres de la tabla que no se usan
;  para la versión europea.
;* Sugerencias de assembler o hard: jiglesias@arrakis.es
;--------------------------------------------------------------------------

;                   +----------------------------------+
;                   ¦ ESQUEMA DE CONEXIONES PIC12C509A ¦
;                   +----------------------------------+
;
;                            +------+  +------+
;                            ¦      +--+      ¦
;                       +5V ¦¦1  PIC12C509A  8¦¦ MASA
;                            ¦                ¦
;                     SWAPX ¦¦2 GPIO5  GPIO0 7¦¦ DVDIN=0                     
;                            ¦                ¦
;                  DVDOUT=1 ¦¦3 GPIO4  GPIO1 6¦¦ TXSCEE   
;                            ¦                ¦
;                  /RESET=0 ¦¦4 GPIO3  GPIO2 5¦¦ SWAPY     
;                            ¦                ¦
;                            +----------------+
;           
; 1 - +5VCC  - SIN COMENTARIOS
; 2 - SWAPX  - SOLO LO USA LA OPCION 3 PARA LA APERTURA Y CIERRE DEL DVD
; 3 - DVDOUT - ES IGUAL A 1 CUANDO LA BANDEJA DEL DVD ESTA SALIENDO
; 4 - /RESET - ES IGUAL A 0 CUANDO PULSAMOS EL RESET DE LA PS2
; 5 - SWAPY  - SOLO LO USA LA OPCION 3 PARA LA APERTURA Y CIERRE DEL DVD
; 6 - TXSCEE - ES POR DONDE TRANSMITE VIA SERIE "SCEE"
; 7 - DVDIN  - ES IGUAL A 0 CUANDO LA BANDEJA DEL DVD ESTA ENTRANDO
; 8 - MASA   - SIN COMENTARIOS
;--------------------------------------------------------------------------

;+---------------------------------+
;¦ PROCESADOR A EMPLEAR PIC12C509A ¦
;+---------------------------------+
P509A EQU 1          ;0=PIC12C508A 1=PIC12C509A
 IF        P509A
 list      p=12c509A
 include   "p12c509A.inc"
 ELSE
 list      p=12c508A
 include   "p12c508A.inc"
 ENDIF

;+-----------------------------------+
;¦ FUSIBLES, WASDOG, OSCILADOR ETC.. ¦
;+-----------------------------------+
 __FUSES _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC

;+------------------+
;¦ NOTACION DECIMAL ¦
;+------------------+
 radix   dec
;--------------------------------------------------------------------------

;+--------------------------+
;¦ VARIABLES DE RAM INTERNA ¦
;+--------------------------+
 cblock 0x0B
        RAM_0B  ;CONTADOR PAUSA
        RAM_0C  ;CONTADOR CARGA DEL DVD
        RAM_0D  ;CONTADOR PAUSA
        RAM_0E  ;CANTIDAD DE BYTES A ENVIAR DE LA TABLA
        RAM_0F  ;CANTIDAD DE BITS A ENVIAR DEL BYTE
        RAM_10  ;NO UTILIZADA
        RAM_11  ;CONTADOR W EN PAUSA Wx199
        RAM_12  ;CONTADOR 199 EN PAUSA Wx199
        RAM_13  ;BYTE LEIDO DE LA TABLA
        RAM_14  ;PUNTERO DEL BYTE DE LA TABLA
        RAM_15  ;MASCARA ESTADO DE LOS BIT DEL PUERTO
 endc
;--------------------------------------------------------------------------

;+-----------------+
;¦ VECTOR DE RESET ¦
;+-----------------+
org 0x00
        movwf   OSCCAL          ;CALIBRA EL OSCILADOR INTERNO
        goto    COMIENZO        ;SALTA LA COMIENZO DEL PROGRAMA
;--------------------------------------------------------------------------

;+--------------------------------------+
;¦ VERSION DEL PROGRAMA (CODIGO INUTIL) ¦
;+--------------------------------------+
        retlw   'M'
        retlw   'A'
        retlw   'N'
        retlw   'O'
        retlw   'L'
        retlw   'O'
        retlw   ' '
        retlw   'Y'
        retlw   ' '
        retlw   'C'
        retlw   'O'
        retlw   'M'
        retlw   'P'
        retlw   'A'
        retlw   'Ñ'
        retlw   'I'
        retlw   'A'
;--------------------------------------------------------------------------

;+-----------------------+
;¦ COMIENZO DEL PROGRAMA ¦
;+-----------------------+
COMIENZO
        movlw   b'11000010'     ;CONFIGURA TMR0 PRESCALER = 1:8
        option                  ;OSCILADOR = 4MHZ

        movlw   255             ;INICIALIZA TODOS LOS PUERTOS
        movwf   RAM_15          ;EN ALTO Y RAM_15
tris GPIO ;
;--------------------------------------------------------------------------

;+----------------------------------------+
;¦ PAUSA DE ENCENDIDO DE 414 MILISEGUNDOS ¦
;+----------------------------------------+
        movlw   2               ;100 MILISEGUNDOS
        movwf   RAM_0D          ;
ETI_107 call    PAUSA50MSG      ;       +
        decfsz  RAM_0D,F        ;
        goto    ETI_107         ;
        movlw   6               ;300 MILISEGUNDOS
        movwf   RAM_0D          ;
ETI_10C call    PAUSA50MSG      ;       +
        decfsz  RAM_0D,F        ;
        goto    ETI_10C         ;
        movlw   14              ;14 MILISEGUNDOS
        call    PAUSAWX1MSG     ;
;--------------------------------------------------------------------------

;+------------------------------------------------------------------+
;¦ LECTURA DE LAS 3 OPCIONES CON EL PULSADOR DE RESET DE LA CONSOLA ¦
;+------------------------------------------------------------------+
;OPCION1 EL RESET NO HA SIDO PULSADO
;-----------------------------------
        btfsc   GPIO,3          ;SI EL RESET NO ESTA PULSADO
        goto    OPCION1         ;SALTA A OPCION1

;OPCION2 EL RESET HA SIDO PULSADO Y SE HA SOLTADO ANTES DE 7,5 SEGUNDOS
;----------------------------------------------------------------------
        movlw   150             ;
        movwf   RAM_0D          ;
ETI_115 btfsc   GPIO,3          ;
        goto    OPCION2         ;SALTA A OPCION2 AL LEVANTAR EL RESET
        call    PAUSA50MSG      ;
        decfsz  RAM_0D,F        ;
        goto    ETI_115         ;

;OPCION3 EL RESET HA SIDO PULSADO Y NO SE HA SOLTADO ANTES DE 7,5 SEGUNDOS
;-------------------------------------------------------------------------
        goto    OPCION3         ;SI CONTINUA PULSADO SALTA A OPCION3
;--------------------------------------------------------------------------

;+---------------------------------------------------+
;¦ OPCION 1 (RESET NO PULSADO) EL MODCHIP SE         ¦
;¦ DESHABILITA Y SOLO PODEMOS USAR JUEGOS ORIGINALES ¦
;+---------------------------------------------------+
OPCION1
        movlw   b'00111111'     ;INICIALIZA TODOS LOS
        tris    GPIO            ;PUERTOS EN ALTO Y
        sleep                   ;DESHABILITA EL MODCHIP
;--------------------------------------------------------------------------

;+------------------------------------------------------------------------+
;¦ OPCION 2 (RESET PULSADO DESPUES DE 1 SEG. Y SOLTADO ANTES DE 7,5 SEG.) ¦
;¦ JUEGOS (PSX1 DIRECTOS) Y (PSX2 SIN PROTECCION ANTIMODCHIP CON AR1.3)   ¦
;+------------------------------------------------------------------------+
OPCION2
        bcf     GPIO,1          ;INICIALIZA PUERTO TXSERIE EN ALTO
        bcf     RAM_15,1        ;
        movf    RAM_15,W        ;
tris GPIO ;

        call    PAUSA50MSG      ;PAUSA CADA 100 TRANSMISIONES

        movlw   100             ;100 VECES
        movwf   RAM_0C          ;REPETIRA LA TRANSMISION
ETI_122
        btfsc   GPIO,0          ;SI EN ESTOS MOMENTOS LA BANDEJA DEL
        goto    ETI_04C         ;DVD YA ESTA DENTRO TRANSMITE SCEE

        clrf    RAM_14          ;INICIALIZA PUNTERO A TABLA Y
        call    ENVIASCEE       ;TRANSMITE VIA SERIE 100 VECES 'SCEE'
        call    SUB_04C         ;LUEGO ESPERARA A QUE METAMOS OTRO JUEGO
        goto    ETI_122         ;ANTES DE VOLVER A TRANSMITIR 100 VECES
SUB_04C
ETI_04C
        btfsc   GPIO,0          ;SI EN ESTOS MOMENTOS LA BANDEJA DEL
        goto    ETI_050         ;DVD AUN NO ESTA DENTRO SALE
        decfsz  RAM_0C,F        ;SI YA ESTA DENTRO RETORNA HASTA
        retlw   3               ;TRANSMITIR LAS 100 VECES 'SCEE'

ETI_050 movlw   b'00111111'     ;INICIALIZA TODOS PUERTOS
        tris    GPIO            ;COMO ENTRADAS
ETI_052
        btfss   GPIO,4          ;ESPERA A QUE PULSEMOS LA APERTURA
        goto    ETI_052         ;DE LA BANDEJA DEL DVD

        movlw   250             ;ESPERAMOS UN TIEMPO A LA CONSOLA PARA
        call    PAUSAWX1MSG     ;QUE TERMINE DE ABRIR LA BANDEJA DEL DVD

        btfss   GPIO,4          ;SI LA BANDEJA DEL DVD TODAVIA NO ESTA
        goto    ETI_052         ;ABRIENDOSE REPITE LA OPERACION

ETI_058
        btfsc   GPIO,4          ;SI LA BANDEJA DEL DVD ESTA ABRIENDOSE
        goto    ETI_058         ;SE ASEGURA A QUE SE ABRA DEL TODO

        movlw   24              ;PAUSA DE 6 SEGUNDOS PARA QUE
        movwf   RAM_0B          ;PONGAMOS EL JUEGO EN LA BANDEJA Y
ETI_05C movlw   250             ;PULSEMOS EL BOTON PARA INTRIDUCIRLO
        call    PAUSAWX1MSG     ;EN LA CONSOLA
        decfsz  RAM_0B,F        ;
        goto    ETI_05C         ;

        btfsc   GPIO,0          ;SI LA BANDEJA DEL DVD ESTA TODAVIA FUERA
        goto    ETI_052         ;REPITE LA OPERACION

        goto    OPCION2         ;CUANDO EL DVD YA ESTA DENTRO SALTA OPCION2
                                ;Y COMIENZAN LAS TRANSMISIONES DE 'SCEE'
;--------------------------------------------------------------------------

;+--------------------------------------------------------------------------+
;¦ OPCION 3 (RESET PULSADO DESPUES DE 1 SEG. Y SOLTADO DESPUES DE 7,5 SEG.) ¦
;¦ JUEGOS PSX2 CON PROTECCION ANTIMODCHIP CON AR1.3                         ¦
;+--------------------------------------------------------------------------+
OPCION3
        btfss   GPIO,3          ;ESPERA A QUE SOLTEMOS EL
        goto    OPCION3         ;BOTON DE RESET

        movlw   255             ;INICIALIZA RAM_15 Y TODOS
        movwf   RAM_15          ;LOS PUERTOS
        tris    GPIO            ;EN ALTO

        movlw   80              ;EL MODCHIP FUERZA A LA CONSOLA
        movwf   RAM_0B          ;PARA QUE EXPULSE LA BANDEJA DEL DVD
ETI_132 movlw   b'00100100'     ;                 "
        movwf   GPIO            ;                 "
        movlw   b'11011011'     ;                 "
        tris    GPIO            ;                 "
        movlw   10              ;                 "
        call    PAUSAWX1MSG     ;                 "
        movlw   b'00100000'     ;                 "
        movwf   GPIO            ;                 "
        movlw   b'00011011'     ;                 "
        tris    GPIO            ;                 "
        movlw   10              ;                 "
        call    PAUSAWX1MSG     ;                 "
        decfsz  RAM_0B,F        ;                 "
        goto    ETI_132         ;                 "
        movlw   b'00111111'     ;                 "
        tris    GPIO            ;                 "

        movlw   16              ;PAUSA PARA QUE LA BANDEJA DEL DVD
        movwf   RAM_0B          ;ESTE 4 SEGUNDOS ABIERTA Y NOS DE
ETI_144 movlw   250             ;TIEMPO A PONER EL JUEGO EN ELLA
        call    PAUSAWX1MSG     ;                 "
        decfsz  RAM_0B,F        ;                 "
        goto    ETI_144         ;                 "

        movlw   80              ;EL MODCHIP FUERZA A LA CONSOLA
        movwf   RAM_0B          ;PARA QUE INTRODUZCA LA BANDEJA DEL DVD
ETI_14A movlw   b'00010100'     ;                 "
        movwf   GPIO            ;                 "
        movlw   b'11101011'     ;                 "
        tris    GPIO            ;                 "
        movlw   10              ;                 "
        call    PAUSAWX1MSG     ;                 "
        movlw   b'00010000'     ;                 "
        movwf   GPIO            ;                 "
        movlw   b'11101011'     ;                 "
        tris    GPIO            ;                 "
        movlw   10              ;                 "
        call    PAUSAWX1MSG     ;                 "
        decfsz  RAM_0B,F        ;                 "
        goto    ETI_14A         ;                 "
        movlw   b'00111111'     ;                 "
        tris    GPIO            ;                 "

        goto    OPCION1         ;DESHABILITA AL MODCHIP Y YA PODEMOS
                                ;EJECUTAR EL JUEGO CON EL MENU DEL AR1.3
;--------------------------------------------------------------------------

;+---------------------------------------------------------------------+
;¦ TRANSMITE VIA SERIE 'SCEE' CON 8 BIT DE DATOS Y 2 DE STOP A 250 BPS ¦
;+---------------------------------------------------------------------+
ENVIASCEE
        movwf   RAM_0D          ;SALVA W EN RAM_0D (INUTIL PUES NO LO USA)

        movlw   72              ;72 MILISEGUNDOS DE ESPACIO ENTRE BYTES
        call    PAUSAWX1MSG     ;

        movlw   4               ;ENVIAREMOS 4 BYTES
        movwf   RAM_0E          ;DE LA TABLA
ETI_068
        movf    RAM_14,W        ;LEEMOS 1 BYTE DE
        call    TABLA           ;LA TABLA
        movwf   RAM_13          ;EN RAM_13
        comf    RAM_13,F        ;

        movlw   8               ;ENVIAREMOS 8
        movwf   RAM_0F          ;BITS DE CADA BYTE

        bsf     RAM_15,1        ;ENVIA EL BIT DE START VIA SERIE
        movf    RAM_15,W        ;
tris GPIO ;

        movlw   4               ;4 MILISEGUNDOS DEL ANCHO DEL BIT DE START
        call    PAUSAWX1MSG     ;

ETI_073
        rrf     RAM_13,F        ;ENVIA 1 BIT DEL BYTE VIA SERIE
        movlw   b'11111000'     ;
movwf GPIO ;
        btfsc   STATUS,0        ;
        bsf     RAM_15,1        ;
        btfss   STATUS,0        ;
        bcf     RAM_15,1        ;
        movf    RAM_15,W        ;
tris GPIO ;

        movlw   4               ;4 MILISEGUNDOS DEL ANCHO DEL BIT
        call    PAUSAWX1MSG     ;

        decfsz  RAM_0F,F        ;CONTINUAMOS HASTA
        goto    ETI_073         ;ENVIAR LOS 8 BITS DEL BYTE

        bcf     RAM_15,1        ;ENVIA 2 BITS DE STOP
        movf    RAM_15,W        ;
tris GPIO ;

        movlw   8               ;8 MILISEGUNDOS DEL ANCHO DE
        call    PAUSAWX1MSG     ;LOS 2 BITS DE STOP

        incf    RAM_14,F        ;INCREMENTA PUNTERO DE LA TABLA

        decfsz  RAM_0E,F        ;CONTINUA HASTA
        goto    ETI_068         ;ENVIAR LOS 4 BYTES DE LA TABLA
        retlw   3               ;RETORNA CON W=03H
TABLA   addwf   PCL,F           ;TABLA PARA LA PS2 EUROPEA
        retlw   'S'
        retlw   'C'
        retlw   'E'
        retlw   'E'
;--------------------------------------------------------------------------

;+--------------------------+
;¦ PAUSA DE 50 MILISEGUNDOS ¦
;+--------------------------+
PAUSA50MSG
        movlw   50             
;+------------------------------+
;¦ PAUSA DE (W x 1 MILISEGUNDO) ¦
;+------------------------------+
PAUSAWX1MSG
        movwf   RAM_11         
ETI_042 movlw   199             
        movwf   RAM_12         
ETI_044 nop                     
        clrwdt                 
        decfsz  RAM_12,F       
        goto    ETI_044         
        nop                     
        decfsz  RAM_11,F       
        goto    ETI_042         
        retlw   3               
;--------------------------------------------------------------------------

end

Saludos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mejorar Senpir para la versión 2.0
Electrónica
Meta 0 4,619 Último mensaje 17 Enero 2014, 20:20 pm
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines