Código: Seleccionar todo
A=0
M=16
A=A+1
Código: Seleccionar todo
A=0
M=16
*=$4000
INICIO
LDA #A
ADC #1
CMP #M
BEQ SALGO
JMP INICIO
SALGO
LDA #$49
JSR $2B0
RTS
Código: Seleccionar todo
A=0
M=16
A=A+1
Código: Seleccionar todo
A=0
M=16
*=$4000
INICIO
LDA #A
ADC #1
CMP #M
BEQ SALGO
JMP INICIO
SALGO
LDA #$49
JSR $2B0
RTS
entre estas lineas se encuentra el formato de la pantalla, donde me dirijo a la posición de memoria (según manual assembly programming for the atari computers) pagina 164, donde explica como se puede imprimir en pantallaINICIO
; INDICAMOS EL FORMATO DE LA PAGINA
;LIMPIAMOS LA PANTALLA
LDX #LIMPIO&255
LDY #LIMPIO/256
JSR $C642
.........
;LINEA 6-D
LDX #21
LDY #36
JSR CURXY
LDX #TOTSEC&255
LDY #TOTSEC/256
JSR $C642
Código: Seleccionar todo
; INDICAMOS LOS CAMPOS EN G6
LDA #6
STA 39975
LDA #6
STA 39976
LDA #6
STA 39984
LDA #6
STA 39985
con esto me simplifico la vida para realizar los mismo que en basic el position, así ubico donde yo quiera el cursor dentro de la pantalla de 40 columnas X 21 lineas que es el margen que uso en caracteres modo 0 y 20 columnas x12 lineas en modo 6 entonces con LDX le digo linea 4 y LDY columna 9, el row esta con valor 84 y el col=85, que es la posición de memoria de margen derecho, según mapping atari y el 85 por lineas.CURXY
STX ROW
STY COL
RTS
Código: Seleccionar todo
;INGRESAMOS EL TITULO
LDX #4
LDY #9
JSR CURXY
LDX #ENCU&255
LDY #ENCU/256
JSR $C642
LDX #4
LDY #9
JSR CURXY
LDA #VSNAME/256
LDX #VSNAME&255
JSR INPSTR
Código: Seleccionar todo
LEOCONSOLA
LDA CONSOLA
CMP #0
BEQ TERMINO
JMP LEOCONSOLA
Código: Seleccionar todo
TERMINO
RTS
necesito crear ese bucle después de esto para ver cuantos bancos tiene mi atari y lo reconozca como un 130 o un 800xl con expansión e imprimirlo en pantalla, por eso te pedí si podías publicar el código del sitre para ver como se podía sacar lo mas principal que es esto mas de como cargaste y grabaste los juegos. Bueno esa es la idea, porque comence con asm, porque me di cuenta que a pesar de que los códigos están en basic, lamentablemente todo se refiere a trabajar con asm por las usr que utiliza y para comprender bien el funcionamiento del atari no hay nada mejor que assembler.INICIO
; INDICAMOS EL FORMATO DE LA PAGINA
Código: Seleccionar todo
setBank
TAX ; asume que acumulador trae el número de banco, con 0=memoria principal.
LDA bancos,X
STA 54017
RTS
bancos
.BYTE 178,162,166,170,174,194,198,202,206,226,230,234,238,130,134,138,142
Código: Seleccionar todo
1 M=16:DIM B(M+1):FOR I=0 TO M:READ X:B(I)=X:NEXT I
2 DATA 177,161,165,169,173,193,197,201,205,225,229,233,237,129,133,137,141
3 FOR I=0 TO M:POKE 54017,B(I):PRINT I,B(I):POKE 17000,B(I):NEXT I
4 FOR I=0 TO M:POKE 54017,B(I):PRINT I,B(I),PEEK(17000):NEXT I
Lo que tienes que hacer para obtener el máximo M para esa tabla es esto otro:dogdark escribió:y quiero hacer esto
para obtener el valor de m y con eso después me manejo los valores de bancos y bytes totalesCódigo: Seleccionar todo
1 M=16:DIM B(M+1):FOR I=0 TO M:READ X:B(I)=X:NEXT I 2 DATA 177,161,165,169,173,193,197,201,205,225,229,233,237,129,133,137,141 3 FOR I=0 TO M:POKE 54017,B(I):PRINT I,B(I):POKE 17000,B(I):NEXT I 4 FOR I=0 TO M:POKE 54017,B(I):PRINT I,B(I),PEEK(17000):NEXT I
Código: Seleccionar todo
1 M=16:DIM B(M+1):FOR I=0 TO M:READ X:B(I)=X:NEXT I
2 DATA 177,161,165,169,173,193,197,201,205,225,229,233,237,129,133,137,141
3 FOR I=M TO 0 STEP -1:POKE 54017,B(I):POKE 22222,B(I):NEXT I
4 FOR I=1 TO M:POKE 54017,B(I):IF PEEK(22222)=B(I) THEN NEXT I
5 IF I<=M THEN M=I-1:POP
6 PRINT M
Código: Seleccionar todo
;1 M=16:DIM B(M+1):FOR I=0 TO M:READ X:B(I)=X:NEXT I
;2 DATA 177,161,165,169,173,193,197,201,205,225,229,233,237,129,133,137,141
MAX = 16 ;CONSTANTE
ORG $600
M
.BYTE MAX
B
.BYTE 177,161,165,169,173,193,197,201,205,225,229,233,237,129,133,137,141
;3 FOR I=M TO 0 STEP -1:POKE 54017,B(I):POKE 22222,B(I):NEXT I
LDY #MAX
NEXT3
LDA B,Y
STA 54017
STA 22222
DEY
BMI NEXT3
;4 FOR I=1 TO M:POKE 54017,B(I):IF PEEK(22222)=B(I) THEN NEXT I
;5 IF I<=M THEN M=I-1:POP
;6 PRINT M
LDY #1
NEXT4
LDA B,Y
STA 54017
CMP 22222
BNE DISTINTO
INY
CPY #MAX+1
BNE NEXT4
DISTINTO
DEY
STY M
Código: Seleccionar todo
M=USR(ADR(RUTINA$),ADR(TABLA$))
De acuerdo a la documentación de esa macro:dogdark escribió:estoy usando la misma libreria, la de kernel y la tengo cargada en la pagina $6000, por lo tanto si trate de usar el prinum, hay que pasar 3 variables %1,%2,%3, trate de realizarlo de la siguiente manera
PRINUM M
me sale error BAD PARAMETER al compilar
PRINUM M,0,0
al compilar no da error pero al ejecutar sale FATAL ERROR #175 que no se que error será, no tengo la tabla de errores de asm.
El IOCB channer es el canal donde hiciste el OPEN, pero que por defecto en GR.0 es el cero.PRINUM v1,adr,v2
Purpose: To print out an integer of a given length to a specified channel.
Params:
v1 - the IOCB channel
adr - the address of the integer
v2 - the width of the number in characters.
Example:
1000 PRINUM 0,VALADR,5
Código: Seleccionar todo
PRINUM 0,M,2
Código: Seleccionar todo
0120 .OPT LIST
0130 *= $0600
0140 MAX = 16
0150 M
0160 .BYTE MAX
0170 B
0180 .BYTE 177,161,165,169,173,193,197,201,205,225,229,233,237,129,133,137,141
0190 LDY #MAX
0200 NEXT3
0210 LDA B,Y
0220 STA 54017
0230 STA 22222
0240 DEY
0250 BMI NEXT3
0260 LDY #1
0270 NEXT4
0280 LDA B,Y
0290 STA 54017
0300 CMP 22222
0310 BNE DISTINTO
0320 INY
0330 CPY #MAX+1
0340 BNE NEXT4
0350 DISTINTO
0360 DEY
0370 STY M
0380 *= $6000
0390 .INCLUDE #D:KERNEL.M65
0400 INICIO
0410 GR 0
0420 POKE 710,0
0430 POKE 709,14
0440 POS 6,0
0450 PRINT "EMPEZAMOS CON EL CODIGO"
0460 POS 2,2
0470 PRINT "IMPRIMOS EL NUMERO DE BANCOS"
0480 PRINUM 0,M,2
0490 RTS
0500 *= $02E0
0510 .WORD INICIO
Aquí veo 3 cosas:dogdark escribió:al poner PRINUM 0,M,16
me salio esto
(11 espacios en blanco)45328
Código: Seleccionar todo
0100 ;SAVE#D:DOG2.ASM
0110 ;ASM,#P:,#D:DOG2.EXE
0120 MAX = 16
0130 .OPT LIST
0140 *= $3000
0150 .INCLUDE #D:KERNEL.M65
0160 *= $0600
0170 M
0180 .BYTE MAX
0190 B
0200 .BYTE 177,161,165,169,173,193,197,201,205,225,229,233,237,129,133,137,141
0210 MEMORIA
0220 LDY #MAX
0230 NEXT3
0240 LDA B,Y
0250 STA 54017
0260 STA 22222
0270 DEY
0280 BMI NEXT3
0290 LDY #1
0300 NEXT4
0310 LDA B,Y
0320 STA 54017
0330 STA 22222
0340 BNE DISTINTO
0350 INY
0360 CPY #MAX+1
0370 BNE NEXT4
0380 DISTINTO
0390 DEY
0400 STY M
0410 JMP GRAFICA
0420 INICIO
0430 JMP MEMORIA
0440 *= $6000
0450 GRAFICA
0460 GR 0
0470 POKE 710,0
0480 POKE 709,14
0490 POS 0,0
0500 PRINT "PRUEBA DE DOG2"
0510 RTS
0520 *= $02E0
0530 .WORD INICIO
Código: Seleccionar todo
LDA B
STA 54017