Commodore manía
Commodore 64 => Desarrollo => Mensaje iniciado por: Silicebit en Diciembre 08, 2010, 11:53:52
-
Muy buenas.
Necesito un poco de ayuda para elegir un "fast loader" para La carretera. Estuve mirando varios, pero todos ellos ponen en blanco la pantalla y necesito que se vea lo que hay en pantalla mientras se estan cargando algunos datos del juego. Me vendría muy bien uno que ocupe poco y sea fácil de utilizar (llamar desde código máquina).
¿Alguno que me pueda valer?
Un saludo.
-
hola silicebit, Este:http://cadaver.homeftp.net/tools.htm (http://cadaver.homeftp.net/tools.htm) es muy bueno y perfectamente compatible con todos los c64 y multiples unidades de disco (incluso soporta REU's y superCPU)
Este fastloader de covertbitops, es del autor de los Metalwarrior. El cargador acepta leer directamente ficheros exomizados y los va poniendo en memoria conforme los carga, muy útil.
Si tienes dudas con exomizer, puedo ayudarte, pues recientemente me he montado un sistema para usarlo con bitmaps y luego decompactarlo desde el juego, en c64.
Respecto a los efectos que haga mientras carga, tienes los ficheros fuente, asi que los puedes adaptar a tu gusto. No he usado todavía ese cargador de Coverbitops, pero le eche un ojo al listado asm, y es el que voy a utilizar en mis proyectos, seguramente.
Salu2!
-
creo que el que te comenté no es exactamente lo que buscabas...
he encontrado un fastloader mejor, aquí:
http://sta.c64.org/stadisk1.zip (http://sta.c64.org/stadisk1.zip)
En ese disco encontrarás el star loader, tiene varias versiones, una de ellas incluso te permite relocalizar el codigo del cargador. Tan solo habria que readaptarlo con un monitor de CM y grabarte el código OBJ en la posicion de memoria que lo hayas relocalizado. Yo lo voy a probar, y intentaré de incluirle una rutina para añadirle barras de colores en el borde cuando lo tenga dominado.
Este no desconecta la pantalla y es muy rápido. Un programa que tardaba unos 30 segundos lo carga en unos 5 segundos!
todos los star loader funcionan invocando al SYS correspondiente (indicado cuando lo cargas)
y el de dirección configurable (Star Turbo relocator) funciona asi:
lo cargas, y haces SYS 2064,xxxx
y se copiara el cargador en xxxx+$500
luego lo grabas con un monitor y lo invocas con esa direccion.
(AUNQUE lo he probado y esta version me da SYNTAX ERROR, no se por que...)
El Star loader, te modifica la rutina LOAD del kernal, por lo que tan solo usandola ya te beneficias de la carga rápida.
En basic por ejemplo con LOAD "",8,[1] o JSR $FFD5
-
Yo nunca he usado loaders pero siempre me han dicho que este es el mejor:
Loader de Krill (http://noname.c64.org/csdb/release/?id=78348)
-
creo que el que te comenté no es exactamente lo que buscabas...
he encontrado un fastloader mejor, aquí:
http://sta.c64.org/stadisk1.zip (http://sta.c64.org/stadisk1.zip)
En ese disco encontrarás el star loader, tiene varias versiones, una de ellas incluso te permite relocalizar el codigo del cargador. Tan solo habria que readaptarlo con un monitor de CM y grabarte el código OBJ en la posicion de memoria que lo hayas relocalizado. Yo lo voy a probar, y intentaré de incluirle una rutina para añadirle barras de colores en el borde cuando lo tenga dominado.
Este no desconecta la pantalla y es muy rápido. Un programa que tardaba unos 30 segundos lo carga en unos 5 segundos!
¡Gracias lobogris y Wood! He mirado el Star turbo y me ha venido al pelo, ya lo he destripado y he conseguido hacer un fast loader que tan sólo ocupa 3 bloques en disco (menos de 800 bytes). :)
El Star turbo no sólo es un fast loader, también es un fast saver, he quitado todas las rutinas que se dedicaban a salvar y me he quedado con las de carga. También lo he compactado un poco, pues tenía mucha basura entre varias de sus subrutinas, y es muy rápido, un programa de 65 bloques (algo más de 16K) lo carga en apenas 10 segundos, cuando ése mismo programa tarda en cargarse algo más de 40 segundos sin cargador.
He probado el Star Turbo relocator y también me da SYNTAX ERROR. :(
Un saludo.
-
Me alegro que te haya servido, Alfonso.
Yo ahora uso uno que se llama Quick155, publicado en la revista americana Compute's Gazette, aunque te desconecta la pantalla está muy optimizado.
Aun así mi favorito es el Star Turbo. Pero pesa mucho! si pudieras mandarme a mi correo tu readaptación (con algunas explicaciones tecnicas de como lo usas tu) te lo agredecería.
-
@Silicebit Ya sé que buscabas un fastloader sencillo y con unas características determinadas... pero aparte de esto y como complemento a este post, por si puede interesar a los programadores de nuevos juegos o programas para C64 me gustaria añadir lo siguiente acerca de los Fastloaders:
Actualmente solo hay unos pocos fastloaders decentes, aseguraos de no usar los erroneos, o hacerlos opcionales por que muchos fastloaders harian nuestros programas incompatibles con el mundo NTSC, y con muchos de los nuevos dispositivos de almacenamiento que estan saliendo para el C64, ¡lo cual seria una pena!
Yo recomiendo (según he podido observar, estudiando sus características)
estos dos:
el que dije al principio y el que dijo Sandro:
- Covert Bitops loader system - un poco complicado de programar, pero el más potente y completo.
- DreamLoad - fácil de usar, pero con una única limitación: tienes que desconectar todas las disqueteras y dejar solo una. Viene excelentemente documentado y es muy bueno tambien (mi preferido y el que más os recomendaria, por que la desventaja dicha no es tan importante)
Respecto a la compatibilidad, ya sea usando estos fastloaders o los loaders normales del kernal, es importante saber que es mejor usar $ba como número de dispositivo en lugar de usar el número 8, ya que esa dirección de la página cero siempre guarda el dispositivo actual que el usuario está usando, sea 8 o cualquier otro, por lo que nos aseguramos el tiro de que funcione en todos las posibles configuraciones que tengan los usuarios potenciales.
-
si pudieras mandarme a mi correo tu readaptación (con algunas explicaciones tecnicas de como lo usas tu) te lo agredecería.
Buenas lobogris.
Aquí tienes un buen "ladrillo". :)
[code]La dirección $0400 es la que he usado para La carretera.
.C:0400 A9 03 LDA #$03
.C:0402 85 31 STA $31
.C:0404 20 46 01 JSR $0146
.C:0407 AD 6D 02 LDA $026D
.C:040a 0D 00 1C ORA $1C00
.C:040d 8D 00 1C STA $1C00
.C:0410 A9 04 LDA #$04
.C:0412 2C 00 18 BIT $1800
.C:0415 D0 5B BNE $0472
.C:0417 10 F9 BPL $0412
.C:0419 B1 30 LDA ($30),Y
.C:041b 48 PHA
.C:041c 4A LSR A
.C:041d 4A LSR A
.C:041e 4A LSR A
.C:041f 4A LSR A
.C:0420 AA TAX
.C:0421 BD F0 05 LDA $05F0,X
.C:0424 85 70 STA $70
.C:0426 68 PLA
.C:0427 29 0F AND #$0F
.C:0429 AA TAX
.C:042a A9 18 LDA #$18
.C:042c 8D 00 18 STA $1800
.C:042f 2C 00 18 BIT $1800
.C:0432 30 FB BMI $042F
.C:0434 BD F0 05 LDA $05F0,X
.C:0437 8D 00 18 STA $1800
.C:043a 0A ASL A
.C:043b 29 0F AND #$0F
.C:043d 8D 00 18 STA $1800
.C:0440 AD 70 00 LDA $0070
.C:0443 8D 00 18 STA $1800
.C:0446 0A ASL A
.C:0447 29 0F AND #$0F
.C:0449 8D 00 18 STA $1800
.C:044c EA NOP
.C:044d A9 00 LDA #$00
.C:044f 8D 00 18 STA $1800
.C:0452 C8 INY
.C:0453 D0 BB BNE $0410
.C:0455 B1 30 LDA ($30),Y
.C:0457 F0 19 BEQ $0472
.C:0459 A9 02 LDA #$02
.C:045b 85 8D STA $8D
.C:045d A5 F9 LDA $F9
.C:045f 0A ASL A
.C:0460 AA TAX
.C:0461 C8 INY
.C:0462 B1 30 LDA ($30),Y
.C:0464 95 07 STA $07,X
.C:0466 88 DEY
.C:0467 B1 30 LDA ($30),Y
.C:0469 D5 06 CMP $06,X
.C:046b 95 06 STA $06,X
.C:046d F0 91 BEQ $0400
.C:046f A9 00 LDA #$00
.C:0471 2C A9 01 BIT $01A9
.C:0474 4C 69 F9 JMP $F969
.C:0477 00 BRK
.C:0478 00 BRK
.C:0479 00 BRK
.C:047a 00 BRK
.C:047b 00 BRK
.C:047c 00 BRK
.C:047d 00 BRK
.C:047e 00 BRK
.C:047f 00 BRK
.C:0480 A0 38 LDY #$38
.C:0482 B9 D1 F4 LDA $F4D1,Y
.C:0485 99 46 01 STA $0146,Y
.C:0488 88 DEY
.C:0489 10 F7 BPL $0482
.C:048b A0 36 LDY #$36
.C:048d B9 F8 D5 LDA $D5F8,Y
.C:0490 99 80 01 STA $0180,Y
.C:0493 88 DEY
.C:0494 10 F7 BPL $048D
.C:0496 A9 60 LDA #$60
.C:0498 8D 7A 01 STA $017A
.C:049b 8D B7 01 STA $01B7
.C:049e A6 7F LDX $7F
.C:04a0 BD CA FE LDA $FECA,X
.C:04a3 8D 6D 02 STA $026D
.C:04a6 A9 01 LDA #$01
.C:04a8 95 1C STA $1C,X
.C:04aa A9 10 LDA #$10
.C:04ac 8D 07 1C STA $1C07
.C:04af A9 02 LDA #$02
.C:04b1 85 F9 STA $F9
.C:04b3 0A ASL A
.C:04b4 AA TAX
.C:04b5 A5 18 LDA $18
.C:04b7 C9 12 CMP #$12
.C:04b9 F0 32 BEQ $04ED
.C:04bb 95 06 STA $06,X
.C:04bd A5 19 LDA $19
.C:04bf 95 07 STA $07,X
.C:04c1 A9 02 LDA #$02
.C:04c3 85 8D STA $8D
.C:04c5 A6 F9 LDX $F9
.C:04c7 A9 E0 LDA #$E0
.C:04c9 20 7D D5 JSR $D57D
.C:04cc B5 00 LDA $00,X
.C:04ce 30 FC BMI $04CC
.C:04d0 C9 00 CMP #$00
.C:04d2 F0 ED BEQ $04C1
.C:04d4 C9 01 CMP #$01
.C:04d6 F0 15 BEQ $04ED
.C:04d8 20 80 01 JSR $0180
.C:04db 90 F3 BCC $04D0
.C:04dd C6 8D DEC $8D
.C:04df F0 07 BEQ $04E8
.C:04e1 A9 C0 LDA #$C0
.C:04e3 20 8C D5 JSR $D58C
.C:04e6 D0 DD BNE $04C5
.C:04e8 A6 F9 LDX $F9
.C:04ea 4C 0A E6 JMP $E60A
.C:04ed 4C 08 D0 JMP $D008
.C:04f0 0F 07 0D SLO $0D07
.C:04f3 05 0B ORA $0B
.C:04f5 03 09 SLO ($09,X)
.C:04f7 01 0E ORA ($0E,X)
.C:04f9 06 0C ASL $0C
.C:04fb 04 0A NOOP $0A
.C:04fd 02 JAM
.C:04fe 08 PHP
.C:04ff 00 BRK
.C:0500 A9 FC LDA #$FC
.C:0502 2C A9 FE BIT $FEA9
.C:0505 85 A5 STA $A5
.C:0507 78 SEI
.C:0508 20 C0 03 JSR $03C0
.C:050b B0 3E BCS $054B
.C:050d 85 A4 STA $A4
.C:050f 20 C0 03 JSR $03C0
.C:0512 B0 37 BCS $054B
.C:0514 38 SEC
.C:0515 65 A5 ADC $A5
.C:0517 A4 A4 LDY $A4
.C:0519 D0 02 BNE $051D
.C:051b 85 A5 STA $A5
.C:051d 4C A0 03 JMP $03A0
.C:0520 A2 27 LDX #$27
.C:0522 20 C0 03 JSR $03C0
.C:0525 B0 24 BCS $054B
.C:0527 A0 00 LDY #$00
.C:0529 84 01 STY $01
.C:052b 91 AE STA ($AE),Y
.C:052d 86 01 STX $01
.C:052f D0 1A BNE $054B
.C:0531 E6 AE INC $AE
.C:0533 D0 02 BNE $0537
.C:0535 E6 AF INC $AF
.C:0537 C6 A5 DEC $A5
.C:0539 D0 E7 BNE $0522
.C:053b 58 CLI
.C:053c 20 E1 FF JSR $FFE1
.C:053f F0 07 BEQ $0548
.C:0541 A5 A4 LDA $A4
.C:0543 D0 BE BNE $0503
.C:0545 A2 80 LDX #$80
.C:0547 2C A2 00 BIT $00A2
.C:054a 2C A2 1D BIT $1DA2
.C:054d A9 97 LDA #$97
.C:054f 8D 00 DD STA $DD00
.C:0552 20 B3 EE JSR $EEB3
.C:0555 58 CLI
.C:0556 8A TXA
.C:0557 30 02 BMI $055B
.C:0559 38 SEC
.C:055a 60 RTS
.C:055b A9 00 LDA #$00
.C:055d 4C A9 F5 JMP $F5A9
.C:0560 20 C0 03 JSR $03C0
.C:0563 B0 E6 BCS $054B
.C:0565 85 AE STA $AE
.C:0567 20 C0 03 JSR $03C0
.C:056a B0 DF BCS $054B
.C:056c A4 AF LDY $AF
.C:056e D0 06 BNE $0576
.C:0570 A5 C3 LDA $C3
.C:0572 85 AE STA $AE
.C:0574 A5 C4 LDA $C4
.C:0576 85 AF STA $AF
.C:0578 A9 2C LDA #$2C
.C:057a 8D 5D 03 STA $035D
.C:057d 4C 60 03 JMP $0360
.C:0580 A9 0F LDA #$0F
.C:0582 8D 00 DD STA $DD00
.C:0585 2C 00 DD BIT $DD00
.C:0588 10 FB BPL $0585
.C:058a 70 30 BVS $05BC
.C:058c AD 12 D0 LDA $D012
.C:058f C9 31 CMP #$31
.C:0591 90 06 BCC $0599
.C:0593 29 06 AND #$06
.C:0595 C9 02 CMP #$02
.C:0597 F0 F3 BEQ $058C
.C:0599 A9 07 LDA #$07
.C:059b 8D 00 DD STA $DD00
.C:059e EA NOP
.C:059f EA NOP
.C:05a0 EA NOP
.C:05a1 EA NOP
.C:05a2 EA NOP
.C:05a3 EA NOP
.C:05a4 EA NOP
.C:05a5 AD 00 DD LDA $DD00
.C:05a8 4A LSR A
.C:05a9 4A LSR A
.C:05aa 4D 00 DD EOR $DD00
.C:05ad 4A LSR A
.C:05ae 4A LSR A
.C:05af 4D 00 DD EOR $DD00
.C:05b2 4A LSR A
.C:05b3 4A LSR A
.C:05b4 4D 00 DD EOR $DD00
.C:05b7 49 06 EOR #$06
.C:05b9 18 CLC
.C:05ba 60 RTS
.C:05bb 00 BRK
.C:05bc A9 00 LDA #$00
.C:05be 38 SEC
.C:05bf 60 RTS
.C:05c0 85 93 STA $93
.C:05c2 A5 B9 LDA $B9
.C:05c4 85 AF STA $AF
.C:05c6 A9 60 LDA #$60
.C:05c8 85 B9 STA $B9
.C:05ca 20 D5 F3 JSR $F3D5
.C:05cd A5 90 LDA $90
.C:05cf 10 03 BPL $05D4
.C:05d1 4C 07 F7 JMP $F707
.C:05d4 A5 BA LDA $BA
.C:05d6 20 B4 FF JSR $FFB4
.C:05d9 A5 B9 LDA $B9
.C:05db 20 96 FF JSR $FF96
.C:05de 20 A5 FF JSR $FFA5
.C:05e1 A5 90 LDA $90
.C:05e3 F0 03 BEQ $05E8
.C:05e5 4C 04 F7 JMP $F704
.C:05e8 A0 00 LDY #$00
.C:05ea A2 05 LDX #$05
.C:05ec A9 57 LDA #$57
.C:05ee 20 2C 06 JSR $062C
.C:05f1 85 A4 STA $A4
.C:05f3 B9 00 04 LDA $0400,Y
.C:05f6 20 A8 FF JSR $FFA8
.C:05f9 C8 INY
.C:05fa C6 A4 DEC $A4
.C:05fc D0 F5 BNE $05F3
.C:05fe 20 AE FF JSR $FFAE
.C:0601 98 TYA
.C:0602 D0 E6 BNE $05EA
.C:0604 A0 80 LDY #$80
.C:0606 A2 05 LDX #$05
.C:0608 A9 45 LDA #$45
.C:060a 20 2C 06 JSR $062C
.C:060d 20 AE FF JSR $FFAE
.C:0610 A0 40 LDY #$40
.C:0612 B9 C0 04 LDA $04C0,Y
.C:0615 99 00 03 STA $0300,Y
.C:0618 C8 INY
.C:0619 D0 F7 BNE $0612
.C:061b A5 93 LDA $93
.C:061d F0 0A BEQ $0629
.C:061f A9 D1 LDA #$D1
.C:0621 8D 6B 03 STA $036B
.C:0624 A9 1C LDA #$1C
.C:0626 8D 8C 03 STA $038C
.C:0629 4C 40 03 JMP $0340
.C:062c 48 PHA
.C:062d A5 BA LDA $BA
.C:062f 20 B1 FF JSR $FFB1
.C:0632 A9 6F LDA #$6F
.C:0634 20 93 FF JSR $FF93
.C:0637 A9 4D LDA #$4D
.C:0639 20 A8 FF JSR $FFA8
.C:063c A9 2D LDA #$2D
.C:063e 20 A8 FF JSR $FFA8
.C:0641 68 PLA
.C:0642 20 A8 FF JSR $FFA8
.C:0645 98 TYA
.C:0646 20 A8 FF JSR $FFA8
.C:0649 8A TXA
.C:064a 20 A8 FF JSR $FFA8
.C:064d A9 20 LDA #$20
.C:064f 4C A8 FF JMP $FFA8
DIRECCIONES IMPORTANTES
• $0400 - $04FF: Rutina que se transfiere, a través del puerto IEC, a la memoria de la unidad de disco.
• $0500 - $05BF: Rutina que se mueve a la dirección $0340 y después se salta a ella para ponerse en contacto con la unidad de disco. La rutina anterior y ésta corren altamente sincronizadas entre sí.
• $05C0: Entrada al fast loader.
• $062C: Subrutina que se encarga de transferir datos por el puerto IEC. Es usada para transferir algunos datos a la memoria de la unidad de disco.
Para mover el fast loader a otro sitio hay que cambiar las direcciones siguientes a la nueva ubicación:
• $05EE: JSR $062C
• $05F3: LDA $0400,Y
• $060A: JSR $062C
• $0612: LDA $04C0,Y[/quote]
Para llamarla yo hago lo siguiente:
[code].C:0736 A6 BA LDX $BA
.C:0738 A0 01 LDY #$01
.C:073a 20 BA FF JSR $FFBA
.C:073d A9 aa LDA #$AA (longitud nombre fichero)
.C:073f A2 xx LDX #$XX (Byte bajo dirección nombre fichero)
.C:0741 A0 yy LDY #$YY (Byte alto dirección nombre fichero)
.C:0743 20 BD FF JSR $FFBD
.C:0746 A9 00 LDA #$00
.C:0748 4C zz zz JMP $ZZZZ (dirección entrada al fast loader)
Probablemente las instrucciones LDX $BA, LDY #$01 y JSR $FFBA no hagan falta si nuestro programa va a cargar algún fichero desde la misma unidad, pero yo las he dejado ya que no molestan.[/quote]
Sólo hay un par de problemas con el Star turbo, no funciona en máquinas NTSC y no funciona si hay más de una unidad de disco conectada.
¡¡¡¡A disfrutar y feliz año a todos!!!!
-
muchas gracias Alfonso, va bien tener un fastloader de rápida aplicación, aunque solo sirva para máquinas PAL de una sola disquetera. Es una lástima eso si! yo ya te digo, que en el futuro trataré de usar el Dreamloader, para llegar al mayor público posible.
A lo mejor un dia me da por investigar para hacer la versión NTSC de lo que me das hecho aquí.
Buen trabajo hackeando :wink:
¡Feliz año!
-
A lo mejor un dia me da por investigar para hacer la versión NTSC de lo que me das hecho aquí.
Pues para ayudarte un poquito ahí van las rutinas implicadas en la transferencia de datos :) :
[code]Ésta corre en el C64 y su posición inicial es la $0340 su dirección de llamada es la misma.
.C:0340 A9 FC LDA #$FC
.C:0342 2C A9 FE BIT $FEA9
.C:0345 85 A5 STA $A5
.C:0347 78 SEI
.C:0348 20 C0 03 JSR $03C0
.C:034b B0 3E BCS $038B
.C:034d 85 A4 STA $A4
.C:034f 20 C0 03 JSR $03C0
.C:0352 B0 37 BCS $038B
.C:0354 38 SEC
.C:0355 65 A5 ADC $A5
.C:0357 A4 A4 LDY $A4
.C:0359 D0 02 BNE $035D
.C:035b 85 A5 STA $A5
.C:035d 2C A0 03 BIT $03A0
.C:0360 A2 27 LDX #$27
.C:0362 20 C0 03 JSR $03C0
.C:0365 B0 24 BCS $038B
.C:0367 A0 00 LDY #$00
.C:0369 84 01 STY $01
.C:036b 91 AE STA ($AE),Y
.C:036d 86 01 STX $01
.C:036f D0 1A BNE $038B
.C:0371 E6 AE INC $AE
.C:0373 D0 02 BNE $0377
.C:0375 E6 AF INC $AF
.C:0377 C6 A5 DEC $A5
.C:0379 D0 E7 BNE $0362
.C:037b 58 CLI
.C:037c 20 E1 FF JSR $FFE1
.C:037f F0 07 BEQ $0388
.C:0381 A5 A4 LDA $A4
.C:0383 D0 BE BNE $0343
.C:0385 A2 80 LDX #$80
.C:0387 2C A2 00 BIT $00A2
.C:038a 2C A2 1D BIT $1DA2
.C:038d A9 97 LDA #$97
.C:038f 8D 00 DD STA $DD00
.C:0392 20 B3 EE JSR $EEB3
.C:0395 58 CLI
.C:0396 8A TXA
.C:0397 30 02 BMI $039B
.C:0399 38 SEC
.C:039a 60 RTS
.C:039b A9 00 LDA #$00
.C:039d 4C A9 F5 JMP $F5A9
.C:03a0 20 C0 03 JSR $03C0
.C:03a3 B0 E6 BCS $038B
.C:03a5 85 AE STA $AE
.C:03a7 20 C0 03 JSR $03C0
.C:03aa B0 DF BCS $038B
.C:03ac A4 AF LDY $AF
.C:03ae D0 06 BNE $03B6
.C:03b0 A5 C3 LDA $C3
.C:03b2 85 AE STA $AE
.C:03b4 A5 C4 LDA $C4
.C:03b6 85 AF STA $AF
.C:03b8 A9 2C LDA #$2C
.C:03ba 8D 5D 03 STA $035D
.C:03bd 4C 60 03 JMP $0360
.C:03c0 A9 0F LDA #$0F
.C:03c2 8D 00 DD STA $DD00
.C:03c5 2C 00 DD BIT $DD00
.C:03c8 10 FB BPL $03C5
.C:03ca 70 30 BVS $03FC
.C:03cc AD 12 D0 LDA $D012
.C:03cf C9 31 CMP #$31
.C:03d1 90 06 BCC $03D9
.C:03d3 29 06 AND #$06
.C:03d5 C9 02 CMP #$02
.C:03d7 F0 F3 BEQ $03CC
.C:03d9 A9 07 LDA #$07
.C:03db 8D 00 DD STA $DD00
.C:03de EA NOP
.C:03df EA NOP
.C:03e0 EA NOP
.C:03e1 EA NOP
.C:03e2 EA NOP
.C:03e3 EA NOP
.C:03e4 EA NOP
.C:03e5 AD 00 DD LDA $DD00
.C:03e8 4A LSR A
.C:03e9 4A LSR A
.C:03ea 4D 00 DD EOR $DD00
.C:03ed 4A LSR A
.C:03ee 4A LSR A
.C:03ef 4D 00 DD EOR $DD00
.C:03f2 4A LSR A
.C:03f3 4A LSR A
.C:03f4 4D 00 DD EOR $DD00
.C:03f7 49 06 EOR #$06
.C:03f9 18 CLC
.C:03fa 60 RTS
.C:03fb 00 BRK
.C:03fc A9 00 LDA #$00
.C:03fe 38 SEC
.C:03ff 60 RTS[/quote]
[code]Ésta otra corre en la memoria de la unidad de disco, es transferida a la memoria de la unidad mediante la orden M-W a partir de la posición $0500 y es llamada en $0580 mediante la orden M-E.
.C:0500 A9 03 LDA #$03
.C:0502 85 31 STA $31
.C:0504 20 46 01 JSR $0146
.C:0507 AD 6D 02 LDA $026D
.C:050a 0D 00 1C ORA $1C00
.C:050d 8D 00 1C STA $1C00
.C:0510 A9 04 LDA #$04
.C:0512 2C 00 18 BIT $1800
.C:0515 D0 5B BNE $0572
.C:0517 10 F9 BPL $0512
.C:0519 B1 30 LDA ($30),Y
.C:051b 48 PHA
.C:051c 4A LSR A
.C:051d 4A LSR A
.C:051e 4A LSR A
.C:051f 4A LSR A
.C:0520 AA TAX
.C:0521 BD F0 05 LDA $05F0,X
.C:0524 85 70 STA $70
.C:0526 68 PLA
.C:0527 29 0F AND #$0F
.C:0529 AA TAX
.C:052a A9 18 LDA #$18
.C:052c 8D 00 18 STA $1800
.C:052f 2C 00 18 BIT $1800
.C:0532 30 FB BMI $052F
.C:0534 BD F0 05 LDA $05F0,X
.C:0537 8D 00 18 STA $1800
.C:053a 0A ASL A
.C:053b 29 0F AND #$0F
.C:053d 8D 00 18 STA $1800
.C:0540 AD 70 00 LDA $0070
.C:0543 8D 00 18 STA $1800
.C:0546 0A ASL A
.C:0547 29 0F AND #$0F
.C:0549 8D 00 18 STA $1800
.C:054c EA NOP
.C:054d A9 00 LDA #$00
.C:054f 8D 00 18 STA $1800
.C:0552 C8 INY
.C:0553 D0 BB BNE $0510
.C:0555 B1 30 LDA ($30),Y
.C:0557 F0 19 BEQ $0572
.C:0559 A9 02 LDA #$02
.C:055b 85 8D STA $8D
.C:055d A5 F9 LDA $F9
.C:055f 0A ASL A
.C:0560 AA TAX
.C:0561 C8 INY
.C:0562 B1 30 LDA ($30),Y
.C:0564 95 07 STA $07,X
.C:0566 88 DEY
.C:0567 B1 30 LDA ($30),Y
.C:0569 D5 06 CMP $06,X
.C:056b 95 06 STA $06,X
.C:056d F0 91 BEQ $0500
.C:056f A9 00 LDA #$00
.C:0571 2C A9 01 BIT $01A9
.C:0574 4C 69 F9 JMP $F969
.C:0577 00 BRK
.C:0578 00 BRK
.C:0579 00 BRK
.C:057a 00 BRK
.C:057b 00 BRK
.C:057c 00 BRK
.C:057d 00 BRK
.C:057e 00 BRK
.C:057f 00 BRK
.C:0580 A0 38 LDY #$38
.C:0582 B9 D1 F4 LDA $F4D1,Y
.C:0585 99 46 01 STA $0146,Y
.C:0588 88 DEY
.C:0589 10 F7 BPL $0582
.C:058b A0 36 LDY #$36
.C:058d B9 F8 D5 LDA $D5F8,Y
.C:0590 99 80 01 STA $0180,Y
.C:0593 88 DEY
.C:0594 10 F7 BPL $058D
.C:0596 A9 60 LDA #$60
.C:0598 8D 7A 01 STA $017A
.C:059b 8D B7 01 STA $01B7
.C:059e A6 7F LDX $7F
.C:05a0 BD CA FE LDA $FECA,X
.C:05a3 8D 6D 02 STA $026D
.C:05a6 A9 01 LDA #$01
.C:05a8 95 1C STA $1C,X
.C:05aa A9 10 LDA #$10
.C:05ac 8D 07 1C STA $1C07
.C:05af A9 02 LDA #$02
.C:05b1 85 F9 STA $F9
.C:05b3 0A ASL A
.C:05b4 AA TAX
.C:05b5 A5 18 LDA $18
.C:05b7 C9 12 CMP #$12
.C:05b9 F0 32 BEQ $05ED
.C:05bb 95 06 STA $06,X
.C:05bd A5 19 LDA $19
.C:05bf 95 07 STA $07,X
.C:05c1 A9 02 LDA #$02
.C:05c3 85 8D STA $8D
.C:05c5 A6 F9 LDX $F9
.C:05c7 A9 E0 LDA #$E0
.C:05c9 20 7D D5 JSR $D57D
.C:05cc B5 00 LDA $00,X
.C:05ce 30 FC BMI $05CC
.C:05d0 C9 00 CMP #$00
.C:05d2 F0 ED BEQ $05C1
.C:05d4 C9 01 CMP #$01
.C:05d6 F0 15 BEQ $05ED
.C:05d8 20 80 01 JSR $0180
.C:05db 90 F3 BCC $05D0
.C:05dd C6 8D DEC $8D
.C:05df F0 07 BEQ $05E8
.C:05e1 A9 C0 LDA #$C0
.C:05e3 20 8C D5 JSR $D58C
.C:05e6 D0 DD BNE $05C5
.C:05e8 A6 F9 LDX $F9
.C:05ea 4C 0A E6 JMP $E60A
.C:05ed 4C 08 D0 JMP $D008
>C:05f0 0f 07 0d 05 0b 03 09 01 0e 06 0c 04
>C:05fc 0a 02 08 00[/quote]
Fíjate en el STA $DD00 de la posición $03DB, y los NOPs que hay hasta el LDA $DD00 de la posición $03E5 en la rutina que corre en el C64. Me da en la nariz, no estoy seguro, que ésos NOPs están ahí para ajustar el tiempo de sincronización entre las dos partes.
La diferencia entre una máquina PAL y una NTSC, es que el 6510 en la NTSC corre algo más rápido que el de la PAL y ése puede ser el problema.
Saludos.
-
ya lo creo que esos NOP sirven para sincronizar. ahi esta la clave, seguramente... muchas gracias !
-
Es todo mas simple de lo que parece Rulas, lo que pasa es que para hacer una cosa sencilla hay que explicarselo TODO a la maquina, como si fuera tonta (en realidad inteligencia, como ya todos sabemos no tiene, xD)
de ahi que un listado en ensamblador tenga tantisimas instrucciones, pero cuando sabes lo que hace cada una y conoces un poco el mapa de memoria, resulta todo muy comprensible.
Poco a poco, Rulas! el primer dia que vi un listado de estos me caia de culo :D jaja
Y recuerda que cualquier duda, aqui me tienes.
-
no hay momento mejor para hacer cosas que ahora que estas parado. :wink: