estaba de paso y era para decir que los aportes de soultaker son muy buenos, los leo siempre , entiendo masomenos pero algun dia ya me voy a poner a aprender bien el lenguaje .
Esa es buenísima. Me había olvidado... era un clásico, es mas, hasta se usaban cargadores para volcar un código LM en una línea de BASIC, sabiendo que la longitud de la línea se especificaba en, si bien recuerdo, 1 o 2 bytes luego de la posición de memoria que corresponde al número de línea de la misma.¿Dónde podemos ubicar nuestro programa para Spectrum en C/M?
4. Esta era retro en la época: en la ZX-81 se acostumbraba a escribir un programa Basic con una línea REM seguida de tantos espacios como bytes utilizara nuestro programa; con POKE se cambiaban los valores de estos bytes y ejecutábamos desde la dirección. Podemos hacer lo mismo en la Spectrum, pero ojo: no olvidemos que los atributos (tinta, papel, flash) se guardan como bytes y si de casualidad un byte coincide con un control de atributos nos cambia el color para todo el listado.
10 LET T$="Retrocomputacion"
20 LET C=(32 - LEN T$)/2
30 PRINT AT 0,C T$
1000 FOR n = 1 TO LEN T$: PRINT AT F,C+N-1; T$(N);"_": NEXT N
1010 PRINT AT F,C+N-1;" "; RETURN
10 LET T=USR "A"
15 LET E$="############################"
20 FOR N=T TO T+17:READ A
30 POKE N,A: NEXT N
40 LET L=USR T
50 LET L=INT((255-L)/9)+1
60 PRINT AT 11,0; E$ ( TO L)
70 GOTO 40
80 DATA 1,0,255,17,0,0,219,254,203,119,32,1,19,16,247,66,75,201
30 let a=0:z$=""
35 for n=1 to len t$: print at f,c+n-1;t$(n);"_":next n
40 print at f,c;t$;z$;"_"
50 let a$=inkey$:if a$="" then goto 50
51 if code a$<12 or a$>"z" then goto 50
55 if inkey$=chr$ 13 then print at f,c; t$; z$; " ": return
56 if inkey$ = chr$ 12 then print at f,c,,: goto 30
57 if inkey$<>"" then goto 52
70 let z$=z$+a$
80 let a=a+1: if a>=cc then a=cc: let z$=z$( to a)
110 goto 40
print (peek 23641+256*peek 23642)
DEF FN x,y)=(1 and (x=0 and y=1)+(x=1 and y=0))+0 and (x=0 and y=0)+(x=1 and y=1)
LD A,24
LD (65535),A ; en basic: poke 65535,24
LD A,195
LD (65524),A ; en basic: poke 65524,195
LD HL, direccion de memoria de la rutina en LM
LD (65525), HL ; en basic; poke 65525, L: poke 65526, H
LD A,59
LD I,A ; cargo el registro de interrupciones con 59
IM 2 ; activo el modo de interrupcion II.
RET
PUSH HL
PUSH AF
PUSH BC
PUSH DE ; Backup de los registros.
.
.
.
RUTINA CM
.
.
.
.
POP DE
POP BC
POP AF
POP HL ; Se restaura en orden inverso por ser pila del tipo FIFO.
RETI ; En rutinas de interrupciones es mejor usar RETI que RET.
LD A,63
LD I,A
IM 1
RET