DESEMPOLVANDO NHP 3.6 (AYUDA)

Software y Juegos para retro-computadores, bueeeno... casi puros juegos :-)
Avatar de Usuario
parche
Mensajes: 79
Registrado: Lun Feb 11, 2013 2:50 pm

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por parche » Mié Nov 13, 2019 6:41 am

Han sido días complicados acá. Por si no lo saben, trabajo en el Ejército. Se supone que soy Adminstrador de Base Dato pero estoy a cargo de toda la arquitectura del Sistema de Educación a Distancia.

He estado preocupado que no los hackeen. Este Sistema fué clave en el actuar de militares durante el toque de queda. Actuaron de la mejor forma posible ya que tienen muchos cursos de DDHH y son requisito para el ascenso.

Como somos entidad del Ejercito, han hackeado varias páginas acá pero nosotros hasta ahora invictos.

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por dogdark » Vie Nov 15, 2019 3:02 pm

Bueno tío,,, ya habrán tiempos más tranquilos para analizar todo y con más calma, lo importante es que este bien, un lugar como el suyo es complicado de mantener en linea y sin hackeos,,, cuando se pueda, veamos esto paso a paso,, yo por lo menos ya realice el primer paso que necesitaba, ahora estamos realizando mejoras, para mantener vivo el sistema de casetes para los que somos amantes, aunque digan que esto se esta acabando, somos pocos los que queremos revivir lo que había y dejar nuevas versiones. De todas maneras se agradece enormemente la buena voluntad de su parte.

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por dogdark » Lun Nov 18, 2019 5:26 pm

Un pequeño avance con el proyecto,,, cambio de velocidades, 4 primeros bloques a 600 baudios, load y carga de juego a 1150, probado en atari real, carga al 90%, si la casetera esta bien regulada pasa de una.


Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por dogdark » Jue Dic 05, 2019 2:28 pm

yo de nuevo..... bueno siguiendo con el proyecto de a poco en una nueva versión pero con la misma tematica y estetica, me encontré con el siguiente problema, que puede que a vitico le haya pasado, dejaremos como ejemplo el goonies, como este juegos u otros son de carga solo para 130xe.
a) en primera instancia ya se modificó tanto el asm principal como el loader para que permitiera la carga de archivos superiores a 250 bloques y que tengan más de 65534 bytes. (logrado).
b)quedo soportando el uso de 4 bancos de memoria más el principal (logrado).
c)se bajo de 252 bytes de data del juego a 251 para colocar otro byte mas para el contador y sobrepasar los 256 bloques restantes(logrado).

Paso a documentar el problema y si es posible alguna aclaración del tema.

goonies comienza con la carga y en su primer bloque aparece la portada del mismo juego, que tengo entendido que ejecuta un sistema de carga para que la data restante se empiece a cargar en los bancos de memoria restante del atari, es como un organizador.

loader del copiador, obliga a que esta portada se elimine y aparezca el dli del copiador nuevamente con la data del nombre y los bloques restantes de lo que se esta cargando, existiendo un pito lento, así avanza como 4 bloques mas descarga y el archivo se cuelga,,, alguna idea en la que me puedan ayudar u orientación al respecto,,, plis..
pd: los demás juegos que tengo comprimidos y procesados para lecturas de casete funcionan bien.
pd2: Vitoco.... en el sitre uso el mismo xex y carga sin problemas.

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por vitoco » Jue Dic 05, 2019 11:02 pm

Mi primera impresión es que tu loader está chocando con la data cargada (el juego).

No sé exactamente dónde está almacenado el loader, pero por los primeros post de este hilo, parece ser que en $CC00. Al comparar con lo siguiente no se ve colisión explícita, aunque no sé si la rutina inicial hace algo en la memoria donde tienes el loader.

Código: Seleccionar todo

Analizando "GOONIESX.XEX"...
65535 [$FFFF] (binhead)
47872-48089 [$BB00-$BBD9] (218) PROG/DATA
738-739 [$02E2-$02E3] (2) -> 47872 [$BB00]
65535 [$FFFF] (binhead)
38656-39167 [$9700-$98FF] (512) PROG/DATA
65535 [$FFFF] (binhead)
39424-39543 [$9A00-$9A77] (120) PROG/DATA
54017-54017 [$D301-$D301] (1) $E3 "11100011"
65535 [$FFFF] (binhead)
16384-31487 [$4000-$7AFF] (15104) PROG/DATA
54017-54017 [$D301-$D301] (1) $E7 "11100111"
65535 [$FFFF] (binhead)
16384-27135 [$4000-$69FF] (10752) PROG/DATA
54017-54017 [$D301-$D301] (1) $EB "11101011"
65535 [$FFFF] (binhead)
16384-32383 [$4000-$7E7F] (16000) PROG/DATA
54017-54017 [$D301-$D301] (1) $EF "11101111"
65535 [$FFFF] (binhead)
16384-25983 [$4000-$657F] (9600) PROG/DATA
54017-54017 [$D301-$D301] (1) $FF "11111111"
65535 [$FFFF] (binhead)
24576-38655 [$6000-$96FF] (14080) PROG/DATA
65535 [$FFFF] (binhead)
5888-12031 [$1700-$2EFF] (6144) PROG/DATA
65535 [$FFFF] (binhead)
1536-1578 [$0600-$062A] (43) PROG/DATA
736-737 [$02E0-$02E1] (2) -> 1536 [$0600]
Algo que me di cuenta en tu loader es que manipula $D301, y que de la estructura del XEX puedes ver que también lo usa para forzar la carga de datos del juego directamente sobre cada bloque de memoria extendida. Tal vez tengas un conflicto ahí.

Eso es lo que se me ocurre por ahora sin mirar más código...

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por dogdark » Vie Dic 06, 2019 12:06 am

este es el código del loader
esta en $CC00, pero al desamblar te aparece el código en $0244
El xex del copiador lo estoy trabajando en MYDOS4.53

Código: Seleccionar todo

BAFER = $0700
BUFAUX = $0800
?RUTINA = BUFAUX+JUMP-RUTINA
GENDAT = $47
;
	ORG $CC00
	.BYTE $55,$55
    LDY #$00
    STY $0244
    INY
    STY $09
    JSR RECUPERO
    JMP START
NBYTES
    .BYTE 251   ;$FC
FLAGY
    .BYTE 0
FINISH
    .BYTE 0,0
MMMSIOV
    .BYTE $60,$00,$52,$40
    .WORD BAFER
    .BYTE $23,$00
    .WORD $0100
    .BYTE $00,$80
DLIST
    .BYTE $70,$70,$70,$42
    .WORD MENSAJE
    .BYTE $70,$06,$70,$02,$70,$70
    .BYTE $70,$70,$06,$70,$70,$06
    .BYTE $70,$46
DLERR
    .WORD NAME
    .BYTE $70,$70,$70,$70,$02,$70
    .BYTE $06
    .BYTE $41
    .WORD DLIST
MENSAJE
	.SB "PARA COMPUTADORAS XL-XE-256K  BY DOGDARK"
    .SB " "
    .SB +128,"dogdark"
    .SB "  softwares "
    .SB "CODE PARCHE NEGRO & FIXED WILLYSOFT 2019"
    .SB "      PRESENTA      "
    .SB "--ACA VA EL TITULO--"
NAME
 	.SB "                    "
    .SB "     cargara dentro de "
CONTADOR
    .SB "000 Bloques.     "
	.SB " "
	.SB +128,"sistemas"
	.SB " stac 2019 "
MERR
    .SB "  -  E R R O R  -   "
    .SB " Retroceda 3 vueltas y presione  START  "
    .SB " "
    .SB +128,"sistemas"
	.SB " stac 2019 "
TIEMPO
    LDA #$40
    STA $D40E
    LDX #$E4
    LDY #$5F
    LDA #$06
    JSR $E45C
    RTS
LNEW
    LDX #$04
XNEW
    LDA $02C4,X
    STA PFIN+1,X
    DEX
    BPL XNEW
    LDA $0230
    STA PFIN+6
    LDA $0231
    STA PFIN+7
    LDA 559     ;$022F
    STA PFIN+8
    LDA 756     ;$02F4
    STA PFIN+9
    LDA 755     ;$02F3
    STA PFIN+10
    RTS
NEWL
    LDX #$04
YNEW
    LDA PFIN+1,X
    STA $02C4,X
    DEX
    BPL YNEW
    LDA PFIN+6
    STA $0230
    LDA PFIN+7
    STA $0231
    LDA PFIN+8
    STA 559
    LDA PFIN+9
    STA 756
    LDA PFIN+10
    STA 755
    RTS
NEWDL
    LDX # <DLIST
    LDA # >DLIST
    STX $0230
    STX $D402
    STA $0231
    STA $D403
    LDA #$22
    STA 559
    STA $D400
    LDA #224
    STA 756
    STA $D409
    LDA #$02
    STA 755
    STA $D401
    LDX #$04
COLORLOOP
    LDA TABLA,X
    STA $02C4,X
    STA $D016,X
    DEX
    BPL COLORLOOP
    LDA # <NAME
    LDX # >NAME
    STA DLERR
    STX DLERR+1
;
;    LDX #$CD
;    LDY #$D7
;    LDA #$06
;    JSR $E45C
;
;    LDX #$E5
;    LDY #$CD
;    LDA #$C0
;    STX $0200
;    STY $0201
;    STA $D40E
    RTS
;    LDA #$00
;    STA NOSEPO
    LDA $02C6
    STA NOSEPOR02
    JMP $E45F
;
;    PHA
;    TXA
;    PHA
;    LDX NOSEPO
;    LDA NOSEPO01,X
;    STA $D40A
;    STA $D01A
;    INC NOSEPO
;    PLA
;    TAX
;    PLA
;    RTI
;NOSEPO
;    .BYTE 0
;NOSEPO01
;    .BYTE $52,$72,$B4,$EA,$32
NOSEPOR02
    .BYTE $FF,$FF
TABLA
    .BYTE $28,$CA,$00,$44,$00
CONCHAT
    LDA # <MERR
    LDX # >MERR
	STA DLERR
    STX DLERR+1
    RTS
ERROR
    JSR CONCHAT
    LDA #$3C
    STA $D302
    LDA #$FD
    JSR $F2B0
VUELTA
    LDA 53279
    CMP #$06
    BNE VUELTA
    JSR SEARCH
    JMP GRAB
SEARCH
    LDA #$34
    STA $D302
    LDX #$10
    STX $021C
SPEED
    LDX $021C
    BNE SPEED
SIGUE
    LDX #$FD
    STX $14
BUSCA
    LDA $D20F
    AND #$10
    BEQ SIGUE
    LDX $14
    BNE BUSCA
    JMP NEWDL
GBYTE
    CPY NBYTES
    BEQ GRAB
    TYA
    EOR BAFER+4,Y
    EOR GENDAT
    INC GENDAT
    INY
    RTS
GRAB
    LDA $D40B
    BNE GRAB
    LDA PFIN
    BEQ BYE
GRAB2    
    JSR LNEW
    JSR NEWDL
?GRAB
    LDX #$0B
MSIO
    LDA MMMSIOV,X
    STA $0300,X
    DEX
    BPL MSIO
    JSR $E459
    BMI ERROR
    LDA BAFER+2
    CMP PFIN
    BCC ERROR
    BEQ RETURN
    JMP ?GRAB
RETURN
    LDA BAFER+255
    STA NBYTES
    LDX #$02
C01
    LDA CONTADOR,X
    CMP #$10
    BNE C02
    LDA #$19
    STA CONTADOR,X
    DEX
    BPL C01
C02
    DEC CONTADOR,X
    JSR NEWL
    DEC PFIN
    LDY #$00
    STY 77
    JMP GBYTE
BYE
	LDA PFIN+11
	CMP #$00
	BEQ ?BYE
	DEC PFIN+11
	JMP GRAB2
?BYE
    JSR TIEMPO
    LDA #$3C
    LDX #$00
    LDY #$60
    STA $D302
    TXS
    STY BAFER
    JMP ($02E0)
START
    LDY NBYTES
LOOP
    JSR GBYTE
    STA MEMORY+1
    JSR GBYTE
    STA MEMORY+2
    AND MEMORY+1
    CMP #$FF
    BEQ LOOP
    JSR GBYTE
    STA FINISH
    JSR GBYTE
    STA FINISH+1
MBTM
    JSR GBYTE
MEMORY
    STA $FFFF
    LDA MEMORY+1
    CMP FINISH
    BNE OK
    LDA MEMORY+2
    CMP FINISH+1
    BEQ VERFIN
OK
    INC MEMORY+1
    BNE NIM
    INC MEMORY+2
NIM
    JMP MBTM
VERFIN
    LDA $02E2
    ORA $02E3
    BEQ LOOP
    LDX #$F0
    TXS
    STY FLAGY
    JSR TIEMPO
    JSR NEWL
    JSR RINIT
    JSR LNEW
    JSR SEARCH
    LDY FLAGY
    LDX #$00
    TXS
    STX $02E2
    STX $02E3
    JMP LOOP
RINIT
    LDX #PFIN-RUTINA-1
MVRUT
    LDA RUTINA,X
    STA BUFAUX,X
    DEX
    BPL MVRUT
    JMP BUFAUX
RUTINA
    LDA #$3C
    STA $D302
    JSR ?RUTINA
    LDA #$FE
    STA $D301
    RTS
JUMP
    JMP ($02E2)
PFIN
    .BYTE $00,$00,$00,$00,$00,$00
    .BYTE $00,$00,$00,$00,$00,$00
RECUPERO
    JSR LNEW
    LDX #$0B
RECUPER02
    LDA FINRECUPERO,X
    STA $0300,X
    DEX
    BPL RECUPER02
    JSR $E459
    BPL RECUPERO03
    LDA #$3C
    STA $D302
    LDA $D301
    AND #$FD
    STA $D301
    JMP $0400
RECUPERO03
    LDX #$13
RECUPERO04
    LDA FINRECUPERO+2,X
RECUPERO05
    STA NAME,X
    DEX
    BPL RECUPERO04
    LDX #$02
RECUPERO06
    LDA FINRECUPERO+22,X
    STA CONTADOR,X
    DEX
    BPL RECUPERO06
    LDX #$03
    LDA FINRECUPERO+25
    STX $41
    STA PFIN
    LDA FINRECUPERO+26
    STA PFIN+11
    LDY #$7F
    LDA #$00
RECUPERO07
    STA $0400,Y
    DEY
    BPL RECUPERO07
    JSR NEWDL
    JMP NEWL
FINRECUPERO
    .BYTE $60,$00,$52,$40
    .WORD FINRECUPERO
    .BYTE $23,$00
    .WORD 27
    .BYTE $00,$80
No se si la dirección $D301 tendría alguna complejidad ya que yo la uso para realizar el cambio de bancos usando el xmem como ejemplo
; SAVE #D:MEM256K.ASM
;RECONOCEDOR DE BANCOS
;BY VITOCO
MAX = 16
BANKOS
.WORD MAX
MEMORY
.BYTE $00,$00,$00
B
.BYTE 177,161,165,169,173
.BYTE 193,197,201,205,225
.BYTE 229,233,237,129,133
.BYTE 137,141
LIMPIO.MEMORY
LDA #$00
STA MEMORY
STA MEMORY+1
STA MEMORY+2
RTS
MEMORIA
LDY #MAX
BUSCO1
LDA B,Y
STA 54017
STA 22222
DEY
BPL BUSCO1
LDY #1
BUSCO2
LDA B,Y
STA 54017
CMP 22222
BNE DISTINTO
INY
CPY #MAX+1
BNE BUSCO2
DISTINTO
LDA B
STA 54017
STY BANKOS
JSR LIMPIO.MEMORY
LDX BANKOS
DEX
DISTINTO2
CLC
LDA MEMORY
ADC #$00
STA MEMORY
LDA MEMORY+1
ADC #$40
STA MEMORY+1
LDA MEMORY+2
ADC #$00
STA MEMORY+2
DEX
BPL DISTINTO2
RTS
BANCA
.BYTE 0
CAMBIOBANCO
LDX BANCA
LDA B,X
STA $D301
CPX BANKOS
BEQ ERRORBANCOS
INX
STX BANCA
RTS
Y también la uso para la velocidad, ya que esta estructurada principalmente así.
Analizando "GOONIESX.XEX"...
65535 [$FFFF] (binhead)
47872-48089 [$BB00-$BBD9] (218) PROG/DATA
738-739 [$02E2-$02E3] (2) -> 47872 [$BB00]
65535 [$FFFF] (binhead)
38656-39167 [$9700-$98FF] (512) PROG/DATA
65535 [$FFFF] (binhead)
39424-39543 [$9A00-$9A77] (120) PROG/DATA
54017-54017 [$D301-$D301] (1) $E3 "11100011"
65535 [$FFFF] (binhead)
16384-31487 [$4000-$7AFF] (15104) PROG/DATA
54017-54017 [$D301-$D301] (1) $E7 "11100111"
65535 [$FFFF] (binhead)
16384-27135 [$4000-$69FF] (10752) PROG/DATA
54017-54017 [$D301-$D301] (1) $EB "11101011"
65535 [$FFFF] (binhead)
16384-32383 [$4000-$7E7F] (16000) PROG/DATA
54017-54017 [$D301-$D301] (1) $EF "11101111"
65535 [$FFFF] (binhead)
16384-25983 [$4000-$657F] (9600) PROG/DATA
54017-54017 [$D301-$D301] (1) $FF "11111111"
65535 [$FFFF] (binhead)
24576-38655 [$6000-$96FF] (14080) PROG/DATA
65535 [$FFFF] (binhead)
5888-12031 [$1700-$2EFF] (6144) PROG/DATA
65535 [$FFFF] (binhead)
1536-1578 [$0600-$062A] (43) PROG/DATA
736-737 [$02E0-$02E1] (2) -> 1536 [$0600]
voy a adjuntar el código completo que esta en mads, programado en assembler a la antigua, que no es el mismo que el copiador anterior el ultra,,, este es un proyecto para 256k y no para 130xe.

al realizar también el cambio de bancos se descontrola la velocidad, porque meto otro byte en la misma posición, pero como ambos van donde mismo no puedo jugar con la velocidad en otro lado. ahí estoy complicado. me interesa lo primero la carga del archivo,donde lo estoy pisando... porque he revisado y no me logro dar cuenta,,, son esos momentos en que te bloqueas y a veces es algo tan simple.
ultra256k.zip
código fuente ultra256k
(10.73 KiB) Descargado 130 veces

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por vitoco » Vie Dic 06, 2019 10:19 am

Gracias por los fuentes. Estuve mirando muy por encima y es demasiado enredado determinar qué compone el loader a nivel de fuentes, pues me llama la atención que el código referencia direcciones de memoria fuera de él. Supongo que él mismo copia porciones de si mismo hacia otros lados o que hay código que fue cargado desde otros ASM.

Además manipula PORTB ($D301), aparentemente para habilitar el BASIC en una parte del código. ¿Para qué? ¿Sólo protección anti pirateo o hay algo más ahí?

Al parecer requiere que la ROM del SO esté copiada en la RAM y modificada durante el proceso de carga, pues en otro lado desabilita la ROM, el BASIC y los bancos de memoria extendida de una, lo que se confirma dices que se te descontrola la velocidad (pero no sé si te refieres en el loader o previamente en el grabador). Si es así, el XEX del Goonies va a volver el SO a ROM 5 veces durante la carga y podría ser el motivo por el que se cuelga.

Por lo tanto, si el loader usa una copia modificada de la ROM activa en la RAM, tal vez lo que necesitas es modificar el XEX del Goonies para que en cada cambio de banco el bit 0 esté en valor 0 y no 1. Eso lo podrías hacer buscando la secuencia de bytes $01-$D3-$01-$D3-$XX-$FF-$FF con $XX cada uno de los bancos $E3, $E7, $EB, $EF y $FF, y restarle 1 dejando $XX como $E2, $E6, $EA, $EE y $FE respectivamente.

Ojo que en todo momento estoy hablando del loader, porque sí me quedó claro que el grabador sí hace uso de una versión modificada de la ROM en la RAM.

Espero te sirva...

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por dogdark » Vie Dic 06, 2019 3:49 pm

si es medio enredado el código,,, empezaremos desde cero nuevamente,,, porque creo que el problema esta en el cambio de bancos del copiador..

te dejare adjunto el copiador más 2 cas de prueba...

estructura del copiador:
kem2.asm (original del nhp36) - copia la rom a la ram desde $CC00 hacia adelante. esa fué mi consulta anterior sobre la copia de roma ram desde donde empezaba hasta donde llegaba.
loader.asm (modificada con nueva portada) - con los cambios realizados por ayuda del vitoco, funcional para todos los juegos.
nuevas...
hexascii.asm - nos permite poder pasar bytes a números atascii, consultada en este foro y ayuda de xt5.
memo256k.asm - rutina que nos permite poder identificar la cantidad de bancos adicionales encontrados en un atari, código generado por vitoco, desde 1 a 17 bancos.

Lo primero que realice fue modificar el dli para dejarlo personal con una nueva cara en el copiador,donde existirá dos titulos, obviamente se agrega uno que aun no esta anexado, por que empece de nuevo para ver donde se me genera el error. Primeras pruebas con dos juegos, alien ambush y draconus 3, con ambos comienza la carga y finaliza con estos y apareciendo en la pantalla jugable.
Segundo cambio fue alterar la velocidad con un codigo compartido por willysoft que nos permite poder generar la velocidad de los primeros 4 bloques a 800 baudios y desde ahi graba a 1170 baudios, prueba con ambos juegos todo ok.

Código: Seleccionar todo

BAUD.800
    LDA # <B00800
    JSR BAUD.M1
    LDA # >B00800
    JMP BAUD.M2
BAUD.1170
    LDA # <B01170
    JSR BAUD.M1
    LDA # >B01170
BAUD.M2
    STA $EBA8
    STA $FD46
    STA $FCE1
    RTS
BAUD.M1
    STA $EBA3
    STA $FD41
    STA $FCDC
    RTS
este código esta al principio y para ser ejecutado siempre debe pasar $FE en $d301

Código: Seleccionar todo

    LDA #$FE
    STA $D301
    JSR BAUD.800
Para implementar este código lo tuve que introducir desde GAUTO en donde comienza el proceso de grabación, ahí esta implementado y llamo la rutina con un jsr a BAUD.800, y antes de que se produzca el espacio para pasar a grabar el loader llamo a la rutina BAUD.1170, y despues pasa a NHPUT donde se graba la data del juego a 252 bytes por bloque, hasta ahi todo ok, grabado de ambos juegos y probados aparecen en pantalla juagable.
ahoraaaaa viene lo bueno...

Código: Seleccionar todo

CAMBIOBANCO
	STA MOM
	STX MOM+1
	STY MOM+2
	LDX BANCA
	LDA B,X
	STA $D301
	CPX BANKOS
	BEQ ERRORBANCOS
	INX
	STX BANCA
	LDA MOM
	LDX MOM+1
	LDY MOM+2
	RTS
Esta rutina nos permite poder realizar los cambios de bancos de memoria y se aplica en FGET donde nos carga la data en memoria desde $4000 hasta $4FFF, según sea el banco disponible, comenzando desde el 177. la carga se realiza sin problema, mostrando en pantalla cual es el portb en el cual se esta ingresando, que se muestra a través de la rutina ESPORTB, que trabaja a la par con hexascii.asm donde pasamos los bytes a atascii.
MOM almacena los valores de x y a, por que generalmente son diferentes y hay que mantenerlos y como son alterados dentro de la rutina de CAMBIOBANCO estos los guardo ahí y los vuelvo a cargar a posterior.
En BANCA se guarda el valor del banco a buscar desde 0 hasta lo encontrado, 1 al 17, siendo seteado a cero antes de ser usada la rutina. ejemplo en FGET esta seteado junto a LEN(cantidad de bytes leidos).
Aplico lo mismo pero en la parte de grabación,, en

Código: Seleccionar todo

GBYTE
	CPY BANQUEO+255
    BEQ EGRAB
    TYA
M
    EOR BAFER,X
    EOR ..........
    ........
    BNE EXNHPIT
    INC M+2
    BPL EXNHPIT
    PHA
    JSR CAMBIOBANCO
    LDA # >BAFER
    STA M+2
    PLA
originalmente donde esta el llamado a la rutina JSR CAMBIOBANCO esta
CLC
LDA $D301
ADC #$04
STA $D301

Ya realizados estos cambios solo alien ambush aparece en pantalla y jugable, pero Draconus que necesita un cambio de banco este no aparece al final de la carga del juego.

respecto a que deshabilita el basic, lo hace al final del código, que al presionar reset, el programa empieza de nuevo, pero los valores ya existentes no se borran, queda con los mismos internos.
Adjuntos
TURBO.zip
(283.84 KiB) Descargado 113 veces

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por dogdark » Sab Dic 07, 2019 4:39 am

vitoco escribió:
Vie Dic 06, 2019 10:19 am
Por lo tanto, si el loader usa una copia modificada de la ROM activa en la RAM, tal vez lo que necesitas es modificar el XEX del Goonies para que en cada cambio de banco el bit 0 esté en valor 0 y no 1. Eso lo podrías hacer buscando la secuencia de bytes $01-$D3-$01-$D3-$XX-$FF-$FF con $XX cada uno de los bancos $E3, $E7, $EB, $EF y $FF, y restarle 1 dejando $XX como $E2, $E6, $EA, $EE y $FE respectivamente.
Realizada la modificación y solo da problemas al final, se cuelga...no parte el juego.... antes no pasaba del 4 bloque.
GOONIES_MOD_cas.zip
(71.65 KiB) Descargado 128 veces
realice todo de nuevo para ver si era problema de código fuente del copiador, con altos y bajos logre calibrar la velocidad y los bancos de memoria, pude jugar con ellos, también debí modificar de nuevo el loader... ¿Porque?... porque desde el archivo principal, estaba enviando mal los datos al loader,,, lo que corresponde es enviar 1.- 2 bytes $55,$55
2-. 1 byte contador low
3-. 1 byte contador high,
4*. 252 bytes de data
5-. 1 byte final.
y tanto como modifique el fuente principal, tambien tuve que modificar el loader para dejarlos compartibles, desde ahi, ya pude cargar juegos como por ejemplo alien ambush, draconus 3, estos dos apareciendo en pantalla jugable, probe con Goonies y commando 256k, ambos dieron problemas.

Lo otro,,, en los 3 primeros bloques de la carga del juego llamada como pagina 7, se realiza la carga de la rom a la ram modificada, porque se necesita para trabajar con las velocidades en la carga del loader y de la data de los bloques. yo creo que ahí esta el problema final. mas rato te envió los códigos fuentes por wazzup.

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por vitoco » Lun Dic 09, 2019 12:12 am

Estuve haciendo un poco de traza a tu .CAS y me aburrí... :oops:

Lo que pasa es que no sé por qué en Altirra no pude configurar que cargara la data rápidamente como lo hace con el .CAS grabado con SITRE, pero me imagino que Altirra se da cuenta que el SO está modificado y por eso suenan todos sus pitos y no lo hace con parche propio del SIO.

Efectivamente vi cómo cargaba los 3 primeros bloques en la página 7 y mitad de la 8, y cómo desde ahí copiaba la ROM en la RAM y después le borraba algunos pedazos de código en $ED85 y reemplazaba otro más en $ECEF, pero no tengo idea exactamente para qué (ok, sé que es para aumentar los baudios, pero no sé qué es lo que corrige del S.O.). SITRE no requiere modificar la ROM para cargar, ya que al grabar aumenta los baudios sólo a un nivel en que el S.O. normal y sin pichicatas puede detectarlo y administrarlo, pero nunca calculé a cuantos baudios lo dejé.

La página 7, después de cargar el loader, se usa como buffer para cargar los bloques, y e ndemás, vi que también se ponía algo de código en la página 8.

También vi que aún hay interrupciones en la pantalla, pero no sé para qué. Supongo que originalmente era para el arco iris, pero si no está, ¿para qué se quedó?

Sí noté que en algún momento se perdió el control y la traza comenzó a andar erráticamente fuera de la zona del loader y del S.O. No sé si se deba a que alguna interrupción se activó en algún momento crítico de la carga o que la pila de la CPU quedó con basura e hizo un RTI hacia donde no debía... no sé... no lo pude reproducir.

Tengo la sensación que la última parte del XEX está chocando con el código que el loader puso en la página 8, pues el juego carga en página 6 y después eso hace un movimiento de memoria para bajar lo que se cargó en $1700 hasta $700, pisndo la página 8.

También podría ser que lo que le falta al loader es volver a dejar la ROM como memoria oficial después de terminar la carga y antes de pasarle el control al juego.

Hay harto para entretenerse...

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por dogdark » Mar Dic 10, 2019 8:48 pm

Como el sistema de carga loader, esta dando problemas por el sistema que copia la rom a la ram y este produce conflictos, tengo que si o si eliminar la rom a ram desde los primeros bloques de carga que van en el casette. También cambie el editor con el que estaba trabajando por que me daba problemas y volví al mítico edit plus.

la primera etapa que se graba en el casete consta de 3 bloques donde va la roma ram y una mini portada,este bloque va en $0700, la modifique por 1 solo bloque con código simple y sin portada.

Código: Seleccionar todo

	*= $0700
INICIO
	.BYTE 0,1
	.WORD INICIO
	.WORD $0400
	LDA #0
	STA 559
	STA 54272
	STA 580
	CLC
	RTS
	.SBYTE "SISTEMAS COMPUTACIONALES ATARI"
	.SBYTE "BY DOGDARK 2019 & VITOCO"
el segundo bloque quedó de la siguiente manera, no se si estará funcional, al probarlo no me da error, pero el loader no me carga

Código: Seleccionar todo

	*=$0400
	LDX #11
COPY
	LDA DATA,X
	STA $0300,X
	DEX
	BPL COPY
	JSR 58457          
	BPL NOJMP          
	JMP 58487
NOJMP
	JMP NOJMP
DATA
	.BYTE $60,$00,$52,$40
	.BYTE $00,$07		;indico donde inicia la pagina loader
	.BYTE $23,$00
	.WORD $AAAA		;byte que paso por defecto
				        ;para el largo del loader
	.BYTE $00,$80
código del loader que estoy armando, que no funciona,, algo pasa aquí... por lo menos debería aparecer la pantalla.

en estos dos últimos pueden haber fallos.
y el código del loader

Código: Seleccionar todo

	* = $06FE
	.BYTE $55,$55
	LDX #$00
	TXS
	STX 580
	INX
	STX $09
	JSR RECUPERO
	JMP START
DESCUENTO
	.BYTE 0,0
NBYTES
	.BYTE 252
DLIST
	.BYTE $70,$70,$70,$42
	.WORD MENSAJE
	.BYTE $70,$06,$70,$02,$70,$70
	.BYTE $70,$70,$06,$70,$70,$06
	.BYTE $70,$06
	.BYTE $70,$70,$70,$70,$02,$70
	.BYTE $06
	.BYTE $41
	.WORD DLIST
MENSAJE
	.SBYTE "PARA COMPUTADORAS XL-XE-256K  BY DOGDARK"
	.SBYTE " "
	.SBYTE +128,"dogdark"
	.SBYTE "  softwares "
	.SBYTE "  AGRADECIMIENTOS A VITOCO Y WILLYSOFT  "
	.SBYTE "      PRESENTA      "
NAME
	.SBYTE "--ACA VA EL TITULO--"
NAME2
 	.SBYTE "--ACA VA EL TITULO--"
	.SBYTE "     cargara dentro de "
CONTADOR
	.SBYTE "0000 Bloques.    "
	.SBYTE " "
	.SBYTE +128,"sistemas"
	.SBYTE " stac 2019 "
MERR
	.SBYTE "  -  E R R O R  -   "
	.SBYTE " Retroceda 3 vueltas y presione  START  "
	.SBYTE " "
	.SBYTE +128,"sistemas"
	.SBYTE " stac 2019 "
CDL
	LDX # <DLIST
	LDY # >DLIST
	LDA $02
	STX $0230
	STX $D402
	STY $0231
	STY $D403
	STA $02C6
	STA $02C8
	STA $D018
	RTS
START
	LDY NBYTES
LOOP
	JMP LOOP
PFIN
	.BYTE 0,0,0,0,0,0,0,0,0,0,0
RECUPERO
	LDX #11
MNANB
	LDA DSIO,X
	STA $0300,X
	DEX
	BPL MNANB
	JSR $E459
	BPL PONDATA
	JMP $E477
PONDATA
	LDX #19
PONDATA2
	LDA DSIO+2,X
	STA NAME,X
	DEX
	BPL PONDATA2
	LDX #19
PONDATA3
	LDA DSIO+22,X
	STA NAME2,X
	DEX
	BPL PONDATA3
	LDX #3
PONDATA4
	LDA DSIO+42,X
	STA CONTADOR,X
	DEX
	BPL PONDATA4
	LDA DSIO+46
	STA DESCUENTO
	LDA DSIO+47
	STA DESCUENTO+1
	LDX #3
	STX $41
	LDX #$22
	STX 559
	STX $D400
	LDX #$00
	TXA
CLP4
	STA $0400,X
	INX
	BPL CLP4
	STA $06FE
	STA $06FF
	JMP CDL
DSIO
	.BYTE $60,$00,$50,$40
	.WORD DSIO
	.BYTE $23,$00
	.WORD 48		;26
	.BYTE $00,$80

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por dogdark » Mié Dic 11, 2019 6:57 am

primer error encontrado.... estaba pasado como en 80 bytes en el loader en el display list, tuve que eliminar varias lineas .SBYTE......

Avatar de Usuario
Suppawer
Mensajes: 96
Registrado: Vie Abr 26, 2013 10:02 pm

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por Suppawer » Mié Dic 11, 2019 8:52 am

dogdark escribió: primer error encontrado.... estaba pasado como en 80 bytes en el loader en el display list, tuve que eliminar varias lineas .SBYTE......

Pensaba que con los cambios que habías hecho al principio, ya no existían limitantes:

Spoiler: MOSTRAR
dogdark escribió:dejo como apunte, la dirección que me nombraban $CDD7, no tiene label
dogdark escribió:apunta directamente al LDA #$00
dogdark escribió:le agregaré como label RUTNOSEPO
y cambiare el $CD y el $D7
dogdark escribió:Antes
LDX #<RUTNOSEPO
LDY #>RUTNOSEPO
AHORA
LDX #>RUTNOSEPO
LDY #<RUTNOSEPO

PD: Hace semanas que estoy luchando con el nhp256 (M65), para poder también hacer modificaciones al dlist
Tengo el problema que tuviste al principio con el nhp36:
dogdark escribió:cual es mi problema. Que al realizar algún cambio al dlist este no se ejecuta o después no realiza carga alguna a posterior.
Igual, cualquier ayuda es bienvenida.
NHP256.rar
(6.2 KiB) Descargado 131 veces

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por dogdark » Mié Dic 11, 2019 4:23 pm

lo primero,,, en que editor estas trabajando,,,, en este proyecto estamos usando tanto wudsn o edit plus y con extensiones .asm,,, la extensión .m65 no lo pude abrir,, por eso siempre mencionen en que ide trabajan cuando compartan algún archivo, para echar una mano,,, el nhp256 ya lo desempolvé completo, si no lo he liberado, es por que algo me faltaba,, mmmm que no me recuerdo,, por algo se colgaba.... cuando me acuerde te digo.

Avatar de Usuario
Suppawer
Mensajes: 96
Registrado: Vie Abr 26, 2013 10:02 pm

Re: DESEMPOLVANDO NHP 3.6 (AYUDA)

Mensaje por Suppawer » Mié Dic 11, 2019 11:26 pm

Vi tu versión 2.56 "desempolvada" para Mads. Me será de mucha ayuda. Gracias!
Suerte en tu proyecto actual.

PD: El archivo .m65 que había subido, era la versión Atari Mac65 del nhp 2.56.

Responder