Autor
|
Tema: En contrar ASM del 12f508/509 del chip de PSX (Leído 4,233 veces)
|
Meta
|
Hola:
¿Alguien tiene a estas alturas el .asm del chip de PSX de cualquier versión?
Quiero analizar el código por curiosidad. La verdad me cuesta encontrar ese sea .hex o .asm.
Saludos.
|
|
|
En línea
|
|
|
|
|
Meta
|
El código es este: ;+-------------------------------------------------------------------------+ ;¦ 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
A alguien le puede ayudar.
|
|
|
En línea
|
|
|
|
|
|