Autor Tema: Fast Loaders.  (Leído 7470 veces)

Silicebit

  • Commodorero
  • **
  • Mensajes: 35
    • Ver Perfil
Fast Loaders.
« 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.
Commodoriano desde 1986.

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Fast Loaders.
« Respuesta #1 en: Diciembre 08, 2010, 16:09:39 »
hola silicebit, Este: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!

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Fast Loaders.
« Respuesta #2 en: Diciembre 11, 2010, 09:51:29 »
creo que el que te comenté no es exactamente lo que buscabas...

he encontrado un fastloader mejor, aquí:

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

Iapetus

  • Desarrolladores
  • Commodoremaníaco
  • ******
  • Mensajes: 158
    • Ver Perfil
Fast Loaders.
« Respuesta #3 en: Diciembre 12, 2010, 12:17:35 »
Yo nunca he usado loaders pero siempre me han dicho que este es el mejor:

Loader de Krill

Silicebit

  • Commodorero
  • **
  • Mensajes: 35
    • Ver Perfil
Fast Loaders.
« Respuesta #4 en: Diciembre 19, 2010, 13:13:53 »
Cita de: "lobogris"
creo que el que te comenté no es exactamente lo que buscabas...

he encontrado un fastloader mejor, aquí:

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.
Commodoriano desde 1986.

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Fast Loaders.
« Respuesta #5 en: Diciembre 19, 2010, 20:38:40 »
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.

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Fast Loaders.
« Respuesta #6 en: Diciembre 30, 2010, 22:59:25 »
@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.

Silicebit

  • Commodorero
  • **
  • Mensajes: 35
    • Ver Perfil
Fast Loaders.
« Respuesta #7 en: Enero 07, 2011, 21:42:03 »
Cita de: "lobogris"
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!!!!
Commodoriano desde 1986.

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Fast Loaders.
« Respuesta #8 en: Enero 08, 2011, 00:10:29 »
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!

Silicebit

  • Commodorero
  • **
  • Mensajes: 35
    • Ver Perfil
Fast Loaders.
« Respuesta #9 en: Enero 08, 2011, 12:47:45 »
Cita de: "lobogris"
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.
Commodoriano desde 1986.

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Fast Loaders.
« Respuesta #10 en: Enero 08, 2011, 17:13:58 »
ya lo creo que esos NOP sirven para sincronizar. ahi esta la clave, seguramente... muchas gracias !

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Fast Loaders.
« Respuesta #11 en: Abril 15, 2011, 01:48:54 »
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.

lobogris

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 453
  • Programador
    • Ver Perfil
    • http://back2theretro.blogspot.com
Fast Loaders.
« Respuesta #12 en: Abril 15, 2011, 10:28:55 »
no hay momento mejor para hacer cosas que ahora que estas parado. :wink: