Versión actual: CHARM_Z8.BAS
- BAS (interpret.): 2320 bytes
- BIN (compilado): 2195 bytes +19 (vars)
- ORG: 49582
- Compilado con: Hisoft BASIC 1.2 Plus 3 Version
Requiere del CharAde Engine cargado en memoria e inicializado.
Requiere de un mapa (*.cam, *.cmm) cargado en memoria y ejecutado.
Cargado en RAM desde C: y copiado a M: por LOADER.BAS
Cargado en RAM desde M: y ejecutado por MAIN.BAS
---------------------------------------------------------------------------------
1 REM # CHARM 2 REM # CharAde Module 3 REM #######################
-----------------------------------------------------Metacomandos de Hisoft BASIC
---------------------------------------------------------------------------------
4 REM : INT+ F,C,D,X <---------Vars. POSINT 5 REM : LEN G$<=5 7 REM : USR 49582 <------------------ORG 8 REM : OPEN #
-------------------------------------------------------------------------------------- 9 LET F=0: LET C=0: LET D=0: LET G$="xy,z_": LPRINT ("=v63v" AND PEEK 62961=0)+ <---IF_G$p_THEN_sprite
("=v64v" AND PEEK 62961=1)+
("=v62v" AND PEEK 62961=2)+
("=v61v" AND PEEK 62961=3)
10 LET F=1-F: POKE 62964,(PEEK 62962)-(4*INT ((PEEK 62962)/4)): <----W=(X-(4*INT(X/4)) POKE 62965,(PEEK 62963)-(4*INT ((PEEK 62963)/4)): <----Z=(Y-(4*INT(Y/4)) LPRINT ":";CHR$ (INT ((PEEK 62963)/4)); <----Actualiza CharAde
CHR$ (INT ((PEEK 62962)/4)); <--------(y,x)map_mode
";";CHR$ (PEEK 62965); <---------------------
CHR$ (PEEK 62964); <------(z,w)foreground
"@BE?";G$; <img(sprite)_&_inputch
")": <-foreground_to_screen
IF C>19 AND D>64 THEN
IF PEEK 62958=1 AND INT (RND*10)<3 THEN <---IF_RND(on)_&_RND<3
POKE 62959,0: <--------Salida tipo 0 STOP :
REM Rnd
20 IF (ATTR (10,17)=48 AND PEEK 62961=0) OR <-IF_ATTR_DER=amarillo
(ATTR (10,14)=48 AND PEEK 62961=1) OR <-| _ATTR_IZQ=amarillo
(ATTR (9,15)=48 AND PEEK 62961=2) OR <-| _ATTR_ARR=amarillo
(ATTR (12,15)=23 AND PEEK 62961=3) THEN <-| _ATTR_ABA= blanco
POKE 62959,1: <--------Salida tipo 1 STOP : REM Attr
30 LET D= CODE INKEY$: <--Lectura del teclado IF D=80 THEN <------------------DER
LPRINT "=v63v": <-----Actualiza_sprite POKE 62961,0: <--------Actualiza G$p IF ATTR (10,17)<32 AND ATTR (11,17)<32 THEN
POKE 62962,(PEEK 62962)+1: <----------Actualiza X LET G$="xy,"+("z_" AND F=0)+("vw" AND F=1): LET C=C+1
40 IF D=79 THEN <------------------IZQ
LPRINT "=v64v": <-----Actualiza_sprite POKE 62961,1: <--------Actualiza G$p IF ATTR (10,14)<32 AND ATTR (11,14)<32 THEN
POKE 62962,(PEEK 62962)-1: <----------Actualiza X LET G$="xy,"+("z_" AND F=0)+("vw" AND F=1): LET C=C+1
50 IF D=81 THEN <------------------ARR
LPRINT "=v62v": <-----Actualiza_sprite POKE 62961,2: <--------Actualiza G$p IF ATTR (9,15)<32 AND ATTR (9,16)<32 THEN
POKE 62963,(PEEK 62963)-1: <----------Actualiza Y LET G$="xy,"+("z_" AND F=0)+("vw" AND F=1):
LET C=C+1
60 IF D=65 THEN <------------------ABA
LPRINT "=v61v": <-----Actualiza_sprite
POKE 62961,3: <--------Actualiza G$p
IF ATTR (12,15)<32 AND ATTR (12,16)<32 THEN
POKE 62963,(PEEK 62963)+1: <----------Actualiza Y
LET G$="xy,"+("z_" AND F=0)+("vw" AND F=1):
LET C=C+1
<-------------IF_SPC_& 65 IF D=32 AND ((ATTR (10,17)=49 AND PEEK 62961=0) OR <-IF_ATTR_DER=amarillo
(ATTR (10,14)=49 AND PEEK 62961=1) OR <-| _ATTR_IZQ=amarillo
(ATTR (9,15)=49 AND PEEK 62961=2) OR <-| _ATTR_ARR=amarillo
(ATTR (12,15)=49 AND PEEK 62961=3)) THEN <-| _ATTR_ABA=amarillo
POKE 62959,2: <--------Salida tipo 2 STOP : REM Space+Attr
70 IF D=73 THEN <------------------"I"
POKE 62959,3: <--------Salida tipo 3 STOP : REM Info
90 IF ((PEEK 62962)=0 OR
(PEEK 62962)=36 OR
(PEEK 62963)=0 OR
(PEEK 62963)=71) AND PEEK 62960>2 THEN <----------V>0 = Limit
POKE 62959,4: <--------Salida tipo 4 STOP : REM Limit
100 FOR X=0 TO 65280: <----------------Pausa NEXT X
104 IF D<65 THEN <-------------Pausa_AY
LPRINT
106 IF PEEK 62957=1 THEN <----------IF_ANIM(on)
LPRINT ("=r41r" AND F=0)+("=r42r" AND F=1)
110 LET C=C-(10 AND C=21): GO TO 10
---------------------------------------------------------------------------------
Variables numéricas: F, C, D, X
Variables alfanuméricas: G$
El programa emplea un área de memoria como tabla de variables de 9 bytes:
Algunas de estas direcciones son consultadas también desde MAIN.BAS y otros programas.