es la única página que me quedaría limpia para poder trabajar por que desde la $4000 hasta la $FFFF, la ocuparía la generación de la memoria y la $0600 por que me aconsejo que la rutina debe ir ahí.
si revisamos el código, ya mas ordenado todo empieza con la carga del kernel, en la $3000 y después el código de memoria en $0600. donde comienza en INICIO con un GR 0, para limpiar la pantalla, después imprimo un mensaje par ver si funciona el kernel, uso un jsr para llamar la rutina de memoria y volver a imprimir un mensaje de bancos cargados. todo va bien hasta antes del jsr después cuando retorna, todo mal. te dejo el código y una imagen de como se ve al ejecutar.
Código: Seleccionar todo
0100 ;SAVE#D:DOG2.ASM
0110 ;ASM,#P:,#D:DOG2.EXE
0120 .OPT LIST
0130 *= $3000
0140 .INCLUDE #D:KERNEL.M65
0150 INICIO
0160 GR 0
0170 POKE 710,4
0180 POKE 712,4
0190 POS 0,0
0200 PRINT "CARGO BANCOS"
0210 JSR MEMORIA
0220 POS 0,2
0230 PRINT "BANCOS CARGADOS"
0240 RTS
0250 *= $0600
0260 MAX = 16
0270 M
0280 .BYTE MAX
0290 B
0300 .BYTE 177,161,165,169,173,193,197,201,205,225,229,233,237,129,133,137,141
0310 MEMORIA
0320 LDY #MAX
0330 NEXT3
0340 LDA B,Y
0350 STA 54017
0360 STA 22222
0370 DEY
0380 BMI NEXT3
0390 LDY #1
0400 NEXT4
0410 LDA B,Y
0420 STA 54017
0430 CMP 22222
0440 BNE DISTINTO
0450 INY
0460 CPY #MAX+1
0470 BNE NEXT4
0480 DISTINTO
0490 DEY
0500 STY M
0510 LDA B
0520 STA 54017
0530 RTS
0540 *= $02E0
0550 .WORD INICIO