Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Alquimista 1997.
Esta es una recopilacin de la informacin recogida durante
varios aos basada en un estudio ms o menos profundo de
la calculadora CASIO FX-850P. Algunos captulos han sido
proporcionados de manera desinteresada por terceras
personas. Otros han sido completados en menor o mayor
parte. Gracias a todos ellos.
Todava pueden existir muchas ms funciones ocultas de la
calculadora. Aqu se han intentado ver la mayora de ellas
(puede que todas). No obstante el estudio de esta gua
puede abrir nuevos horizontes en la comprensin de las
estructuras de la calculadora.
El lector experimentar un control ms elevado de la
calculadora, para as dar uso segn su conveniencia.
Precaucin:
Al
acceder
muchas
de
estas
nuevas
ANEXO I - GUA
ANEXO I - GUA
DIRECCIONAMIENTO DE LA MEMORIA
RAM
Es posible direccionar la memoria RAM desde un rango de
-32769 hasta 65536 (exclusivas ambas direcciones).
Las direcciones negativas se suman a 65536, siendo esta
nueva direccin la definitiva.
Ej.- direccin
-1
(-1+65536)
65535
de
un
PC,
posee
diversas
maneras
de
direccionamiento.
Si queremos direccionar un byte en el segmento 0 y la
posicin 1024, esta direccin se expresar de la siguiente
manera :
0 :1024.
ANEXO I - GUA
ANEXO I - GUA
ANEXO I - GUA
TABLA DE
PUNTEROS
El sistema guarda la informacin primordial para el manejo
de programas, variables, zonas de memoria especiales y
punteros.
Esta informacin es de un valor muy especial tanto para el
usuario como para el sistema.
Sabiendo utilizar los punteros se puede tomar un control
casi total de la calculadora, as como lograr algunos efectos
interesantes.
Direcci
n
0: 0000
0: 0512
0: 0768
0: 0512
0: 1024
0: 1610
0: 1613
0: 1616
0: 1619
0: 1627
0: 1628
0: 1629
0: 1630
Descripcin
BUFFER de pantalla.
BUFFER de entrada de comandos,0.
BUFFER VALF( ) ( 155 bytes ),0.
BUFFER de entrada de comandos,0.
Modo de almacenamiento frmulas (Function
Memory),0.
Puntero del puntero del programa donde se ha
realizado en el ltimo comando PB (compatibilidad
PB-100).
SEG+DIR de READ#.
Puntero del puntero del ltimo programa en el que
se ha estado en BASIC.
Puntero parmetros para INPUT (Texto si hay, sino
variable).
Despus de una edicin si es 13 ha sido pulsado
EXE, si es 253 se ha pulsado shift +EXE.
=0 LIB apagado; >0 LIB encendido.
Modo angular; 0=DEG; 1 =RAD; 2=GRA.
Si es igual a 0 DEFM apagado; >0 DEFM
encendido.
ANEXO I - GUA
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
0:
1673
1676
1682
1685
1688
1691
1697
1700
1703
1706
1709
1712
1715
1718
1737
1750
0:
0:
0:
0:
0:
1753
1759
1762
1767
1774
0:
0:
0:
0:
1776
1785
1820
1858
0: 1867
0: 4095
9
5: 6340
6
ANEXO I - GUA
ANEXO I - GUA
ALMACENAMIENTO DE VARIABLES Y
PUNTEROS
Este captulo mostrar como se almacenan en la memoria
RAM las variables, los punteros y las tablas de punteros de
programa, librera y banco de datos (MEMO).
El comienzo de la tabla de variables viene dado por el
puntero de inicio de la tabla de variables en la direccin
[0:1697] (ver captulo Tabla de Punteros). Antes de pasar a
describir
la
aprenderemos
estructura
a
de
obtener
los
la
tabla
de
punteros,
as
variables
como
su
estructura.
La estructura de un puntero es la siguiente: (cada cuadro es
un byte)
LSB
MSB
BL
P=PEEK(LSB)+256*PEEK(MSB)
La variable P ser la direccin de memoria deseada.
El Segmento Bloque se usar con la instruccin DEFSEG de
BASIC.
DEFSEG=BL*4096
De este modo tendremos una direccin de memoria con
segmento: desplazamiento.
El segmento 0 corresponde a la RAM y los segmentos 4, 5 a
la ROM.
Volviendo a la estructura de las variables calcularemos el
inicio de la tabla de variables por el procedimiento descrito
anteriormente:
PI=PEEK1697+256*PEE1698
El punto de inicio PI es la direccin de memoria donde
estar ubicada la primera variable.
Usando tambin el puntero, ltimo byte de la tabla de
variables, de la tabla de punteros tendremos la direccin
donde termina la ltima variable.
PF=PEEK1700+256*PEE1701
ANEXO I - GUA
10
ANEXO I - GUA
11
PI
PF
Variable Variable
Variable Variable
string
=4 si es un Nmero
=8 si es una matriz de
strings
ANEXO I - GUA
12
Longitud
Nombre
Direcci
Hexadecimal/
Ascii
nombre
14
53
n
6E 27
(1*16+4=20=&H14)
CHR$(53)=S
&H276E
.Sn'
34
43 48 32
76 27
34 43 48 32 76 27
(3*16+4=52=&H34)
C+H+2
&H2776
4CH2v'
40
43 48 41 52
C0 0C
40 43 48 41 52 C0
(4*16+0)=64=&H40
C+H+A+R
&H0CC0
14 53 6E 27
0C
@CHAR.
LT
JK
HI
FG
1 BYTE
DE
BC
0A
ANEXO I - GUA
13
MN
100-
ABS(XY)
100-
1
6
ABS(XY)
ABS(XY)
ABS(XY)
Ejemplo 1:
Variable XX=-0.23456789012
En memoria se hace una conversin a notacin
cientfica:
conversin: -2.3456789012E-1
Memoria:
99
05
12
90
78
56
34
02
ANEXO I - GUA
14
Ejemplo 2:
Variable XX=-0.23456789012E-18
En memoria se hace una conversin a notacin
cientfica:
conversin: -2.3456789012E-19
Memoria:
81
05
12
90
78
56
34
02
Ejemplo 3:
Variable XX=256789012E-18
En memoria se hace una conversin a notacin
cientfica:
conversin: 2.56789012E-10
Memoria:
90
00
00
12
90
78
56
02
ANEXO I - GUA
15
Letras ASCII
ANEXO I - GUA
16
Inicio de la ROM
Direccin de inicio
librera
Direccin final de
librera
Dir. Hexadecimal
0000
0010
0020
0030
0040
0050
0060
0070
0080
0090
00A0
00B0
00C0
00D0
00E0
00F0
0100
0110
0120
0130
0140
0150
0160
43
00
FF
04
00
2D
AD
00
3B
56
00
A5
86
00
3C
9B
15
15
14
14
14
18
00
4D
00
FF
24
00
2A
33
20
4D
43
00
A7
D3
20
93
99
78
6B
4B
6F
59
AB
00
04
04
FF
E0
FE
08
35
00
4B
46
FE
0C
D5
00
98
92
15
15
14
14
15
00
00
FF
40
FF
05
00
A1
38
F6
4A
44
00
9E
D8
13
96
91
77
6C
49
6A
7A
00
00
FF
00
FF
24
DC
89
28
F2
49
52
DC
8C
A4
F3
5B
24
15
15
14
16
15
00
00
ASCII
01
04
FF
E0
DB
F5
87
0E
55
45
DB
F5
9D
04
27
23
79
6D
81
9B
7F
00
00
56
60
FF
05
DA
DF
DA
AE
1D
0F
DA
DF
DA
83
02
0F
19
15
14
14
15
00
00
0B
01
FF
BD
03
00
FC
80
1F
0F
03
00
FC
AF
1F
1A
A3
6E
6D
7C
67
00
00
1B
04
FF
F7
2F
0D
2E
2C
4E
58
A8
FD
9C
3F
9F
9A
19
15
14
15
15
00
00
00
B0
FF
05
5E
2B
30
3A
42
5A
A3
A6
D0
3E
A0
8F
97
6F
82
93
7D
00
00
57
01
FF
BD
8A
36
32
3D
48
53
8D
D6
D2
40
95
90
18
15
14
14
18
7F
00
55
04
FF
F7
F0
39
31
4C
47
41
F0
D9
D1
97
94
8E
9C
70
8D
AC
A7
CC
00
30
FF
FF
05
FA
29
34
50
59
57
FA
A2
D4
5C
26
22
15
14
17
15
18
7F
00
30
FF
FF
00
DE
88
37
4F
54
51
DE
8B
D7
5D
25
21
60
4A
47
63
A8
CE
00
30
FF
90
00
DD
F4
85
12
1E
FF
DD
F4
84
11
0B
FF
15
14
14
14
18
7F
00
31
FF
05
06
00
00
81
1C
FB
00
00
00
82
06
FB
00
AC
A3
57
6C
AA
D2
00
CM....V...WU0001
...@..`........
...............
.$.$......
...../^.
-*...+69).
358(..02147
. .. :=LPO..
;MKJIU..NBHGYT.
VCFDRE..XZSAWQ..
......
....
.
. ...?>@\]..
<['.. &%.
$#.."!..
.x.w.y....`.
.k.l.m.n.o.p.J.
.K.I..m...G.W
.o.j..|...c.l
.Y.z..g.}...
.........
................
ANEXO I - GUA
17
0170
0180
0190
01A0
01B0
01C0
01D0
01E0
01F0
0200
0210
0220
0230
0240
0250
0260
0270
0280
0290
02A0
02B0
02C0
02D0
02E0
02F0
0300
0310
0320
0330
0340
0350
0360
0370
0380
0390
03A0
03B0
03C0
03D0
03E0
03F0
0400
0410
0420
0430
0440
0450
0460
0470
00
B6
F7
FF
B2
BA
C2
CA
D3
DB
E3
EB
EF
F7
FF
07
0D
15
1D
25
29
48
6B
95
BB
E7
0E
31
51
72
85
8F
8F
8F
8F
8F
90
3C
45
4E
62
72
EE
5B
20
20
49
20
41
00
FE
05
FF
03
03
03
03
03
03
03
03
03
03
03
04
04
04
04
04
04
04
04
04
04
04
05
05
05
05
05
05
05
05
05
05
05
E2
2D
4F
63
73
40
26
54
4C
4E
52
4C
00
05
DB
FF
B3
BB
C3
CB
D4
DC
E4
EC
F0
F8
00
08
0E
16
1E
26
2D
4C
6F
99
BF
EC
14
35
56
76
89
8F
8F
8F
8F
8F
20
30
45
50
64
74
F0
5F
41
4F
54
4F
28
00
B6
F7
FF
03
03
03
03
03
03
03
03
03
03
04
04
04
04
04
04
04
04
04
04
04
04
05
05
05
05
05
05
05
05
05
05
2B
31
41
51
65
75
9F
27
4E
47
20
55
4D
00
FE
05
FF
B4
BC
C4
CC
D5
DD
E5
ED
F1
F9
01
09
0F
17
1F
27
31
50
73
9E
C4
F1
18
38
5A
7A
8F
8F
8F
8F
8F
8F
2D
32
42
52
66
76
E8
A5
20
20
46
4E
49
00
05
DB
FF
03
03
03
03
03
03
03
03
03
03
04
04
04
04
04
04
04
04
04
04
04
04
05
05
05
05
05
05
05
05
05
05
2A
33
43
53
67
77
E4
5D
41
4C
52
44
44
00
B6
F7
FF
B5
BD
C5
CD
D6
DE
E6
ED
F2
FA
02
09
10
18
20
28
35
54
7A
A3
CA
F5
1C
3C
5E
81
8F
8F
8F
8F
8F
8F
2F
34
44
54
68
78
E9
87
53
4E
41
28
24
00
FE
05
FF
03
03
03
03
03
03
03
03
03
03
04
04
04
04
04
04
04
04
04
04
04
04
05
05
05
05
05
05
05
05
05
05
E3
35
45
55
69
79
EA
EF
4E
20
43
52
28
00
05
FF
FF
B6
BE
C6
CE
D7
DF
E7
ED
F3
FB
03
09
11
19
21
29
39
59
81
A8
D1
F8
20
41
64
85
8F
8F
8F
8F
8F
8F
21
36
46
56
6A
7A
EB
86
20
45
20
41
24
00
B6
FF
FF
03
03
03
03
03
03
03
03
03
03
04
04
04
04
04
04
04
04
04
04
04
04
05
05
05
05
05
05
05
05
05
05
22
37
47
57
6B
3F
8D
53
41
58
41
4E
2C
00
FE
FF
FF
B7
BF
C7
CF
D8
E0
E8
EE
F4
FC
04
0A
12
1A
22
29
3D
5D
85
AF
D8
FD
26
45
68
85
8F
8F
8F
8F
8F
8F
23
38
48
58
6C
2C
85
49
43
50
42
23
49
00
05
FF
FF
03
03
03
03
03
03
03
03
03
03
04
04
04
04
04
04
04
04
04
04
04
04
05
05
05
05
05
05
05
05
05
05
24
39
49
59
6D
3B
E5
4E
53
20
53
4C
4E
00
B6
FF
FF
B8
C0
C8
D0
D9
E1
E9
EE
F5
FD
05
0B
13
1B
23
29
41
61
89
B2
DB
05
2B
49
6B
85
8F
8F
8F
8F
8F
8F
3E
2E
4A
5A
6E
3A
E6
20
20
53
20
45
4B
00
FE
FF
F9
03
03
03
03
03
03
03
03
03
03
04
04
04
04
04
04
04
04
04
04
04
05
05
05
05
05
05
05
05
05
05
05
E0
E7
4B
8A
6F
ED
25
43
41
51
53
4E
45
00
05
FF
F7
B9
C1
C9
D2
DA
E2
EA
EF
F6
FE
06
0C
14
1C
24
29
45
67
8F
B7
E1
0A
2D
4D
6E
85
8F
8F
8F
8F
8F
90
3D
29
4C
8E
70
84
5C
4F
54
52
47
28
59
00
BD
FF
05
03
03
03
03
03
03
03
03
03
03
04
04
04
04
04
04
04
04
04
04
04
05
05
05
05
05
05
05
05
05
05
05
E1
28
4D
61
71
DF
EC
53
4E
20
4E
56
24
................
..........
...........
..............
........
........
........
........
........
........
........
........
........
...........
................
................
................
................
...... .!.".#.$.
%.&.'.(.).).).).
).-.1.5.9.=.A.E.
H.L.P.T.Y.].a.g.
k.o.s.z.....
........
........
...........
........ .&.+.-.
1.5.8.<.A.E.I.M.
Q.V.Z.^.d.h.k.n.
r.v.z......
........
........
........
........
........
........
. +-*/!"#$>=
<0123456789.)(
E-EABCDEFGHIJKLM
NOPQRSTUVWXYZa
bcdefghijklmnopq
rstuvwxyz?;:
@%\
[&_']SIN COS
TAN ASN ACS ATN
LOG LN EXP SQR
INT FRAC ABS SGN
ROUND(RAN#LEN(V
AL(MID$($ INKEY$
ANEXO I - GUA
18
0480
0490
04A0
04B0
04C0
04D0
04E0
04F0
0500
0510
0520
0530
0540
0550
0560
0570
0580
20
54
52
4C
45
20
20
20
54
45
43
20
20
20
52
53
20
43
48
24
4C
58
52
49
45
4F
41
4C
50
4E
44
49
53
3F
53
45
28
42
54
45
4E
4E
52
52
45
4F
50
45
46
3F
3F
52
4E
44
45
20
54
50
44
45
20
41
4C
52
46
59
3F
3F
20
20
4D
45
20
55
55
20
20
53
52
28
28
4D
4C
3F
20
20
44
53
50
47
52
54
4F
44
45
20
48
3F
20
49
20
44
54
45
24
20
4F
4E
20
4E
41
54
44
59
3F
53
53
3F
49
4F
47
28
4C
54
20
4D
20
54
20
45
50
3F
41
54
3F
4D
20
28
4D
45
4F
49
4F
52
41
3F
46
52
20
56
52
3F
20
20
48
49
54
20
46
44
45
20
3F
4D
45
4E
45
55
20
45
53
45
44
20
20
20
45
41
52
3F
20
43
43
4C
4E
57
52
54
58
24
46
47
50
20
44
45
20
26
28
52
4F
4E
52
41
45
24
28
4F
4F
52
53
20
4D
3F
48
46
28
41
45
49
53
50
28
24
52
53
49
54
52
20
3F
43
41
3F
44
57
54
45
20
53
2C
20
55
4E
4F
45
43
3F
55
43
3F
56
50
45
20
20
54
41
4E
42
54
50
53
4C
20
52
54
3F
45
41
23
3
CSR TO STEP
THEN DEG(HEX$(ST
R$(DMS$(MID$($A
LLBEEP LET FOR N
EXT GOTO GOSUB
RETURN IF PRINT
INPUT MODE STOP
END ON READ RES
TORE DATA REM CL
EAR SET ??? ???
CLEAR DEFM &HCUR
POL(HYPREC(FACT
NPR(??? NCR(???
DEFM SAVELOADVE
RIFYLISTRUNNEWPA
SS??? ??? WRITE#
??? DIM ERASE :
ANEXO I - GUA
19
LOCALIZACIN DE LA BIBLIOTECA
(LIBRERIAS)
La biblioteca de programas se compone de 116 programas
diferentes segn el manual de usuario.
Existen, sin embargo, varios programas no documentados y
rutinas que son llamados desde otras libreras. Esto hace un
total de 141 programas distintos.
Estos programas estn localizados en mdulos de memoria
ROM, llegando a ocupar 128 Kb (2 mdulos de 64 Kb).
Para obtener su localizacin exacta es necesario obtener de
la tabla de punteros de biblioteca la informacin necesaria
(Direccin de inicio, final, Nombre de la librera)
La tabla de punteros de libreras esta compuesta de grupos
de quince bytes, tantos como libreras hay. Esta tabla se
encuentra en el segmento 5 de memoria ROM.
El programa de ejemplo de localizacin podra ser el
siguiente:
10 DEFSEG=5*4096
; Direccionar segmento 5
20 NL=1:D=NL*15
30 P=63406+D
40 INICIO=PEEKP+256*PEEK(P+1
50 FIN=PEEK(P+3)+256*PEEK(P+4
60 NUM$=CHR$(PEEK(P+7))+CHR$(PEEK(P+8))+CHR$(PEEK(P+9))+
CHR$(PEEK(P+10))+ CHR$(PEEK(P+11))
70 PRINT NUM$
ANEXO I - GUA
20
N. Librera
Inicio
Final
0400
0800
0900
1000
5010
5020
5040
5050
5060
5080
5090
5100
5200
5220
5230
5250
5260
5270
5280
5290
4:01424
4:03286
4:04416
4:08268
4:09475
4:10181
4:10632
4:12287
4:13497
4:15487
4:16595
4:17770
4:23006
4:24276
4:25521
4:26378
4:27099
4:27952
4:28946
4:29791
4:03285
4:04415
4:08267
4:09474
4:10180
4:10631
4:12286
4:13496
4:15486
4:16594
4:17769
4:23005
4:24275
4:25520
4:26377
4:27098
4:27951
4:28945
4:29790
4:31029
Longitud
1861
1129
3851
1206
0705
0450
1654
1209
1989
1107
1174
5235
1269
1244
0856
0720
0852
0993
0844
1238
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
ANEXO I - GUA
21
5300
5350
5510
5520
5530
5540
5550
5560
5570
5600
5605
5610
5615
5620
5625
5630
5635
5650
5655
5660
5665
5670
5675
5700
5705
5710
5715
5720
5725
5730
5735
5740
5745
5750
4:31030
4:33197
4:36467
4:37093
4:37485
4:37849
4:38359
4:39154
4:39588
4:41304
4:42142
4:42513
4:43124
4:43387
4:43985
4:44405
4:44737
4:45445
4:45715
4:46163
4:46602
4:46950
4:47338
4:47736
4:48014
4:48444
4:48790
4:49131
4:49476
4:49900
4:50306
4:50675
4:51166
4:51537
4:33196
4:36466
4:37092
4:37484
4:37848
4:38358
4:39153
4:39587
4:41303
4:42141
4:42512
4:43123
4:43386
4:43984
4:44404
4:44736
4:45444
4:45714
4:46162
4:46601
4:46949
4:47337
4:47735
4:48013
4:48443
4:48789
4:49130
4:49475
4:49899
4:50305
4:50674
4:51165
4:51536
4:52187
2166
3269
0625
0391
0363
0509
0794
0433
1715
0837
0370
0610
0262
0597
0419
0331
0707
0269
0447
0438
0347
0387
0397
0277
0429
0345
0340
0344
0423
0405
0368
0490
0370
0650
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
ANEXO I - GUA
22
5760
5800
5810
5820
5830
5840
5900
5910
5920
5930
5932
5934
5936
5938
5950
5960
5970
5980
6210
6220
6230
6240
6310
6320
6330
6410
6420
6430
6440
6450
6460
6500
6510
6520
4:52188
4:53605
4:54971
4:56759
4:58362
4:59958
4:61808
5:1166
5:3488
5:4375
5:5801
5:7003
5:8200
5:9508
5:10561
5:12474
5:13498
5:16383
5:17332
5:17677
5:18129
5:18578
5:19130
5:19633
5:20095
5:20642
5:21007
5:21477
5:21946
5:22516
5:22681
5:22880
5:24427
5:24452
4:53604
4:54970
4:56758
4:58361
4:59957
4:61807
5:1165
5:3487
5:4374
5:5800
5:7002
5:8199
5:9507
5:10560
5:12473
5:13497
5:16382
5:17331
5:17676
5:18128
5:18577
5:19129
5:19632
5:20094
5:20641
5:21006
5:21476
5:21945
5:22515
5:22680
5:22879
5:24426
5:24451
5:24476
1416
1365
1787
1602
1595
1849
4892
2321
0886
1425
1201
1196
1307
1052
1912
1023
2884
0948
0344
0451
0448
0551
0502
0461
0546
0364
0469
0468
0569
0164
0198
1546
0024
0024
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
ANEXO I - GUA
23
6530
6540
6610
6620
6630
6640
6650
6660
6670
6680
6710
6711
6712
6720
6721
6722
6730
6731
6732
6740
6741
6742
6750
6751
6752
6760
6761
6762
6770
6771
6772
K0630
M6510
M6710
5:24477
5:24502
5:24527
5:25310
5:26100
5:26861
5:27628
5:28698
5:29845
5:30458
5:31230
5:31257
5:31283
5:31309
5:31336
5:31362
5:31388
5:31415
5:31441
5:31467
5:31494
5:31520
5:31546
5:31573
5:31599
5:31625
5:31652
5:31678
5:31704
5:31731
5:31757
5:31783
5:39376
5:43179
5:24501
5:24526
5:25309
5:26099
5:26860
5:27627
5:28697
5:29844
5:30457
5:31229
5:31256
5:31282
5:31308
5:31335
5:31361
5:31387
5:31414
5:31440
5:31466
5:31493
5:31519
5:31545
5:31572
5:31598
5:31624
5:31651
5:31677
5:31703
5:31730
5:31756
5:31782
5:39375
5:43178
5:44181
0024
0024
0782
0789
0760
0766
1069
1146
0612
0771
0026
0025
0025
0026
0025
0025
0026
0025
0025
0026
0025
0025
0026
0025
0025
0026
0025
0025
0026
0025
0025
7592
3802
1002
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
bytes
ANEXO I - GUA
24
M6720
M6730
M6740
M6750
M6760
M6770
S6020
S6030
S6210
S6220
S6230
S6240
S6310
S6320
S6330
S6410
S6420
S6430
S6440
5:44182
5:45200
5:46340
5:47588
5:48887
5:49734
5:50666
5:51950
5:53239
5:53552
5:53900
5:54136
5:54702
5:54891
5:55008
5:55312
5:55661
5:56154
5:56676
5:45199
5:46339
5:47587
5:48886
5:49733
5:50665
5:51949
5:53238
5:53551
5:53899
5:54135
5:54701
5:54890
5:55007
5:55311
5:55660
5:56153
5:56675
5:57379
1017 bytes
1139 bytes
1247 bytes
1298 bytes
0846 bytes
0931 bytes
1283 bytes
1288 bytes
0312 bytes
0347 bytes
0235 bytes
0565 bytes
0188 bytes
0116 bytes
0303 bytes
0348 bytes
0492 bytes
0521 bytes
0703 bytes
ANEXO I - GUA
25
LIBRERAS NO
DOCUMENTADAS
Existen varios programas de la biblioteca (libreras) no
documentados.
Estos
programas
corresponden
los
de
la
nmeros:
0400
->Programa
de
testeo
calculadora
0800 ->Programa para la impresora
0900 -> Convertidor de PB100 a FX-850P
Para acceder a los programas basta (desde el MODE 0)
teclear el nmero y pulsar la tecla LIB.
Es posible tambin acceder a la librera de men por su
propio nmero de programa.
K0630 -> Men de libreras
Los listados siguientes corresponden a las libreras no
documentadas:
Librera: 0400
10
20
30
40
50
70
80
100
Test de la calculadora
CLEAR:CLS:DEFSEG=0:K=PEEK(&H6B4)/4+PEEK(&H6B5)*64
IF K<32 THENK1=8:K2=K-K1
IF K=32 OR K=64 THENK1=32:K2=K-K1
IF K=40THENPOKE&H8000,10:POKE0,0:IFPEEK&HA000=10THENK1=32:K2=8
ELSEK1=8: K2=32
PRINT"Main";K1;TAB(8);"Kbyte Option";K2;"Kbyte";:PRINT:A=64:D=1:A1=0
GOSUB1000:A=A+A:D=(D+D)MOD256:IF A<K*1024 THEN70
FORI=1 TO9:A=K*1024-A1-1:IF I=5 OR I=9 THEND=&H80 ELSE D=&H20
GOSUB1010:IF A1=0 THENA1=1 ELSEA1=A1*2
ANEXO I - GUA
26
110
120
130
160
170
180
190
191
192
193
194
200
201
202
203
210
220
230
250
280
290
320
330
350
360
390
410
420
430
460
470
490
510
520
1000
1010
1020
1030
1000
0
NEXT
A=K*1024-A1-1:GOSUB1000:A1=A1*2:IF A1<K*1024 THEN120
PRINT" OK RAM";:GOSUB10000:PRINT:DEFSEG=&H4000
ROM=(PEEK(4)+1+PEEK(5)*256)*2
IF PEEK(0)<>&H43 THENPRINT"NG ROM 1";:GOTO1030
IF ROM<>1024 THEN200
D1=PEEK(&H5955):D2=PEEK&HA6AA:D3=PEEK&HFFFF:DEFSEG=&H5000
D4=PEEK0:D5=PEEK&H5955:D6=PEEK&HA6AA
IF PEEK&HFFFF<>&H20 THENPRINT"NG ROM 2";:GOTO1030
PRINT"OK 512K*2 ROM?";:PRINT
PRINTRIGHT$(HEX$(D1),2);" ";RIGHT$(HEX$(D2),2);" ";RIGHT$(HEX$(D3),2);"
";
RIGHT$(HEX$(D4),2);" ";RIGHT$(HEX$(D5),2);" ";RIGHT$(HEX$
(D6),2);"";:GOTO210
IF PEEK(ROM*128-1)<>&H20 THENPRINT"NG ROM 1";:GOTO1030
D1=PEEK&H5955:IF ROM=256 THEND2=PEEK&H26AA ELSE
D2=PEEK&HA6AA
PRINT"OK";STR$(ROM);"K ROM?";:PRINT
PRINTRIGHT$(HEX$(D1),2);" ";RIGHT$(HEX$(D2),2);" ";
GOSUB10000
CLS:FOR I=0 TO 63:PRINTCHR$(&HFF);:NEXT:LOCATE 0,0
DEFCHR$(&HFF)="FFFFFFFFFF":GOSUB10000:DEFCHR$
(&HFF)="0000000000": GOSUB10000
DEFCHR$(&HFF)="AA55AA55AA":GOSUB10000:DEFCHR$
(&HFF)="55AA55AA55":TRON: GOSUB10000:TROFF
CLS:PRINT"Printer CHECK";:LPRINT:GOSUB10000
LPRINT"Main";K1;"Kbyte Option";K2;"Kbyte"
FOR I=32 TO 255:IF I=&H7F THENI=&H80
LPRINTCHR$(I);:NEXT:LPRINT
PRINT"RS 232C CHECK";:PRINT:GOSUB10000
OPEN "COM0:5,E,8,2,C,D,C,B,N" AS #1:PRINT#1,123:INPUT #1,D
CLOSE:IF D<> 123 THENPRINT"NG RS 232C";:GOTO1030
PRINT"OK RS 232C";:GOSUB10000:PRINT
PRINT"MT CHECK <REC>";:PRINT:GOSUB10000
OPEN "CAS0:TEST" FOR OUTPUT AS #1:PRINT#1,"ABC":CLOSE
PRINT"MT <REW> and <PLAY>";:PRINT:GOSUB10000
OPEN "CAS0:TEST" FOR INPUT AS #1:INPUT #1,A$:CLOSE
IF A$<>"ABC" THENPRINT"NG MT";:PRINT:GOTO1030
PRINT"OK MT";:PRINT
END
POKE A,D
IF PEEKA=D THENRETURN
IF A>=K1 THENPRINT"NG RAM 2"; ELSE PRINT "NG RAM 1";
BEEP:GOTO1030
BEEP:IF INPUT$(1,@)=CHR$(0) THEN10000ELSE RETURN
ANEXO I - GUA
27
Librera: 0800
(carga de caracteres)
10
DATA1E,28,A8,28,1E,0,2,7C,80,0,8,4,FE,80,80,0,20,40,80,0,C6,AA,92,82,C6,
72,8E,80,8E,72,AA,54,AA,54,AA,FE,FE,FE,FE,FE,1C,22,22,1C,22,7E,88,A4,A4,
58,20,1E,20,40,40,14,2A,2A,2A,0,3C,52,52,3C,0,3E,8,8,30,8,1C,22,22,5C,80,
20
18,26,3C,64,18,F8,88,F8,0,0
DATA48,F8,8,0,0,B8,A8,E8,0,0,A8,A8,F8,0,0,E0,20,F8,0,0,E8,A8,B8,0,0,F8,A8,
B8,0,0,C0,80,F8,0,0,F8,A8,F8,0,0,E8,A8,F8,0,0,20,70,20,0,0,20,20,20,0,0,78,
30
20,40,38,0,48,50,28,48,0,20, 20,0,0,F8,10,10,54,10,10
DATAA,4A,2A,1A,A,A,1A,2A,4A,A,28,68,38,2C,28,20,40,FE,40,20,10,38,54,10
,10,8,4,FE,4,8,10,10,54,38,10,22,3C,20,3E,22,18,3A,7E,3A,18,38,7C,3E,7C,3
8,18,3C,7E,3C,18,18,7A,7E,7A,18,7C,44,44,44,7C,38,44,44,44,38,8,18,28,18
40
,8,40,20,10,8,4,44,28,10,28,44
DATAFE,90,F0,92,FE,24,DC,54,7E,54,FE,A8,A8,AA,FE,FE,92,92,92,FE,50,50,7
E,90,10,84,F8,A0,A2,BC,12,7E,92,82,42,38,44,FE,44,28,22,22,FA,22,22,88,8
50
8,BE,88,88,3E,22,3E,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
CLS:PRINT"Down
load .....";:a$=CHR$(27):b$=CHR$(0):LPRINTa$;":";b$;b$;b$;a$;
60
"%"; CHR$(1);b$;:x=128:GOSUB60:x=224:GOSUB60:CLS:END
LPRINTa$;"&";b$;CHR$(x);CHR$(x+31);:FORi=x TOx+31:LPRINTCHR$(139);:
FORj=1TO5:READc$:LPRINTCHR$(VAL("&H"+c$));b$;:NEXT:LPRINTb$;:NEXT:
RETURN
ANEXO I - GUA
28
Librera: 0900
850P
10
20
30
50
70
90
110
120
200
210
220
230
240
250
260
270
280
290
300
410
430
460
470
490
500
510
520
530
540
550
560
570
MODE8:DEFSEG=0:GOTO110
GOSUB20
OPENp$ FORINPUTAS#1:IFASC(INPUT$(1,1))<>2 THENCLOSE:GOTO30
ELSERETURN
IFg$="" THENRETURN ELSEGOSUB70:FORk=1 TOLEN(g$):k$=MID$(g$,k,1):
MODE32(k$): NEXT:g$="":FORl=0 Tok-2:g$=g$+CHR$(PEEK(l+768)):NEXT:
RETURN
POKE768,0:POKE769,0:POKE1608,0:POKE1609,3:RETURN
n=PEEK(e):e=e-1:RETURN
n$="":a=2:a$="":j$="":i=0:p$="":m=512:f$="":c$="":o=0:g=0:e=0:d=0:e$
=""
p=0:b$="":k=0:g$="":c=0:w=0:u=0:v=0:s=0:o$="":i$="":q=0:h$="":r=0:m
$="":k$="":h=0:f=0: t=0:l=0:b=0:x=0:y=0:n=0:d$=""
IFPEEK(m)=32 THENm=m+1:GOTO200
IFPEEK(m)=4 ANDPEEK(m+1)=180 THENf$="VF":GOSUB2190:GOSUB2120:
GOSUB2220: GOTO410
IFPEEK(m)<>4 ORPEEK(m+1)<>179 THENa
n=PEEK(m+a):IFn=32 THENa=a+1:GOTO230
IFn=0 ORn=34 ORn=48 ORn=49 THENf$="PF":GOSUB2190:GOSUB2120:
GOSUB2220: GOTO410
IFn=7
ANDPEEK(m+a+1)=187THENf$="AF":a=a+2:GOSUB2190:GOSUB2120:
GOSUB2220:GOTO410
IFn=35 THENf$="MF":a=a+1:GOSUB2190:GOSUB2120 ELSEa
n=PEEK(m+a)
IFn=0 THENg=0:GOTO410
IFn=32 THENa=a+1:GOTO270
IFn=44 THENa=a+1:GOSUB2250:IFn=77 THENg=1:GOSUB2220 ELSEa ELSEa
a=1709:o=(PEEK(a+1))*256+(PEEK(a))-1:f=o:e=o:h=o-FRE(1)+1
FORd=1867 TO1874:e$=e$+CHR$(PEEKd):NEXT
b$="":a$="":OPENp$ FORINPUTAS#1:p=ASC(INPUT$(1,1)):IFp<144
THENCLOSE: GOTO460
b$=INPUT$(10,1):CLOSE
IFp MOD16=15 THENa$="":GOTO510
FORk=1 TO8:j$=MID$(b$,k,1):IFj$<>CHR$(7) THENa$=a$+j$:NEXT
i=ASC(MID$(b$,10)):c=VAL("&h"+MID$(HEX$(p),3,1))-8
IFc=<2 THENn$="MF":GOTO560
IFc=6 THENn$="VF":GOTO560
IFc=3ORc=7 THENn$="AF":GOTO560
n$="PF"
g$=a$:GOSUB50:b$=g$:PRINTb$;TAB(9);n$;:PRINT
IFf$<>n$ THEN460
ANEXO I - GUA
29
580
600
710
720
730
735
740
750
760
810
1010
1020
1030
1110
1130
1140
1160
1170
1180
1182
1184
1186
1188
1190
1192
1194
1196
1223
1225
1230
1240
2030
2040
2050
2060
2080
2090
2100
2120
2130
2140
2150
ANEXO I - GUA
30
2160
2170
2190
2195
2200
2220
2230
2250
5000
6010
6020
6030
6040
6060
6070
6075
6080
6090
6100
1001
0
1002
0
1003
0
1004
0
1005
0
1007
0
1008
0
1008
5
1009
0
1010
0
1011
0
1012
0
1013
0
n=PEEK(m+a):IFn=34 THENa=a+1:c$=LEFT$(c$,8):RETURN
IFn=0 THENc$=LEFT$(c$,8):RETURN ELSEc$=c$+CHR$(n):a=a+1:GOTO2160
n=PEEK(m+a):IFn=48 ORn=49 THENp$="PMT"+CHR$(n)+":":a=a+1:RETURN
IFn=32 THENa=a+1:GOTO2190
p$="PMT0:":RETURN
n=PEEK(m+a):IFn=0 THENRETURN
IFn=32 THENa=a+1:GOTO2220 ELSEa
n=PEEK(m+a):a=a+1:IFn=32 THEN2250 ELSERETURN
j$=j$+"ST error":GOTO5000
IFg=1THEN6040
RESTORE#
RESTORE#"",1,6060:WRITE#:GOTO6030
RESTORE#CHR$(26),0,6060:READ$
GOSUB70:e=o
GOSUB90:IFn=240 THENEND
IFPEEK(1608)>=247 THEN5000
IFn<>255 THENh$=CHR$(n):MODE32(h$):GOTO6070
GOSUB2090:k=768:s=256*PEEK(1609)+PEEK(1608):l$=""
IFk=s THENWRITE#l$:GOTO6060 ELSEl$=l$+CHR$
(PEEK(k)):k=k+1:GOTO6100
e=o:j=0:a=0:IFi\16>0 THEN10100
IFa=0 THENPRINT"GET ";(e-f-1)/8;"data";:PRINT:PRINT "Converting...";
IFe<f+5 THENEND
GOSUB70:n=PEEK(e-7):IFn>10 THEN10070
FORk=0 TO7:GOSUB90:POKE768+k,n:NEXT:MODE34("A("+STR$(j)
+")"+CHR$(0)):
j=j+1: GOTO10030
a=n\16
FORk=0 TO7:GOSUB90:a=a-1:IFa>=0 THENMODE32(CHR$(n))
NEXT
MODE34("A$("+STR$(j)+")"+CHR$(0)):j=j+1:GOTO10030
GOSUB90:b=n:a=30:IF(i\16)=14 THENa=62
PRINT"GET $,";(e-f-a-2)/8;"data";:PRINT:PRINT"Converting...";:GOSUB70
FORk=0 TOa:GOSUB90:b=b-1:IFb>=0 THENMODE32(CHR$(n))
NEXT:MODE34("$"+CHR$(0)):GOTO10030
ANEXO I - GUA
31
modos
especiales
aqu
mostrados
no
estn
completos
introducir
lneas
nuevas
de
programas.
Estos comandos tienen el formato MODE 3x, siendo la x el
comando especial.
En
realidad
estos
modos
no
se
pueden
ejecutar
Saltar a la ROM.
2)
3)
ANEXO I - GUA
32
lneas
posteriores).
Por
ejemplo
podremos,
desde
el
reasignar
la
memoria
(moviendo
bloques
de
MODE30( )
Borra el programa especificado como si usramos el
comando NEW de BASIC.
Sintaxis :
MODE30( k$ )
k$ : Parmetro de tipo string (cadena de texto).
Introducir en k$ un valor entre 0 y 9.
Nota: No sirve usar otra variable distinta a k$. (Se puede
usar otra variable pero asignndosele despus a la
variable k$. Ej.- P$=0:k$=P$)
ANEXO I - GUA
33
que
deseamos
borrar.
Los
programas
ANEXO I - GUA
34
MODE31( )
Introduce la lnea en formato ASCIIZ de la direccin
768 en el programa especificado.
Sintaxis :
MODE31( m$ )
m$ : Parmetro de tipo string (cadena de texto).
Introducir en m$ un valor entre 0 y 9.
Se coloca en el Buffer de la funcin VALF la lnea a introducir
(en la direccin 768). La lnea estar en formato ASCIIZ, es
decir, una cadena de texto terminada con el valor 0.
Las lneas a implementar en el programa que ejecutemos
sern:
Iniciar la variable m$ con un valor entre 0 y 9 (Ej.- m$=5)
1140 GOSUB1150
1150 DEFSEG=0:p=PEEK1685+256*PEEK1686:POKEp+5,215:POKEp+6
:POKEp+7,4:POKE1608,0:POKE1609,3:RETURN
1160 RETURN
Poner en la direccin de memoria 768 la lnea introducir
ANEXO I - GUA
35
MODE32( )
Similar al MODE30.
Sintaxis :
MODE32( k$ )
k$ : Parmetro de tipo string (cadena de texto).
Introducir en k$ un valor entre 0 y 9.
Nota: No sirve usar otra variable distinta a k$. (Se puede
usar otra variable pero asignndosele despus a la
variable k$. Ej.- P$=0:k$=P$)
k$ tiene que ser un carcter no un entero. (Ej.- 0 no es
correcto, hay que poner 0.
Se va a emplear el ahorro de caracteres.
10 k$=5:GOSUB 20:END:REM borrar el programa 5
20 GOSUB 21
21 DEFSEG=0:a=PEEK1685+256*PEEK1686:FORb=0TO7:POKEa+b,
VAL(MID$(204247005050000200117004,b*3+1,3:NEXT:FORb=0
TO1:Ifb;RETURNELSEa=PEEK1682+256*PEEK1683:POKEa,212:
POKEa+1,17:POKEa+2,4:RETURN:NEXT
ANEXO I - GUA
36
MODE33( )
Copia de un bloque de bytes de una parte a otra de la
memoria.
Sintaxis :
MODE33(Param1,Param2,Param3)
Param1 :
origen.
Param2 :
destino.
Param3 : representa la direccin de memoria de
origen ms un desplazamiento.
(Param3-Param1)=n de bytes a copiar.
Debido a su caracterstica de funcin oculta sta tiene que
ser llamada de una manera un tanto especial. Los
parmetros de entrada tienen que ser unas variables fijas.
Param1= f+1
Param2= t
Param3= r
Todas las variables usadas son de tipo entero.
ANEXO I - GUA
37
Param3=Param1+17
0 :1000h
MEMORIA
0 :1
Param2
Descripcin detallada
Esta funcin no puede ser accedida directamente desde el
modo de operacin BASIC o modo CAL. Por esto se ha de
acceder a esta funcin cediendo el control a un programa
de la librera.
ANEXO I - GUA
38
Retorno de la subrutina
ANEXO I - GUA
39
25 ON ERROR GOTO 20
30 GOSUB XX :RESUME ZZ
direccin
es
la
4 :7004
que
se
expresa
como
ANEXO I - GUA
40
ANEXO I - GUA
41
INICIO
INICIO+x+1
INICIO+x+y+2
FIN
Lon
x
y
z
Num
ab
cd
ef
Car
32
32
32
BASIC (codificado)
.
.
.
Zero
0
0
0
ANEXO I - GUA
42
Descripcin
Dos puntos (: ) para separar instrucciones
Comienzo de comentario (REM) o ()
Representa instrucciones de salto (GOTO,GOSUB, ON ,
THEN, ELSE). Va acompaado por un nmero de 2 bytes o
por una variable.
TOKENS (instrucciones BASIC codificadas)
Direccin+segmento
del
puntero
del
programa llamador.
N de lnea
del GOSUB
Direccin+segmento
del separador tras el
GOSUB ( : , 0 )
ANEXO I - GUA
43
Tabla FOR
La pila de esta instruccin est dispuesta de 26 en 26 bytes
( ver captulo Tabla de Punteros para encontrar la cabeza
y la cola de la pila).
FOR Variable de control
incremento]: :NEXT
=Valor
Inicial
TO
Valor
Final
[STEP
Memoria
Step
N lnea
Direccin+segment
del FOR
o separador tras el
NEXT
Direccin+segment
o separador tras el
FOR
Direccin+segmento
de la variable de
control
Valor Final
La estructura es la siguiente:
Inicio de MEMO
Final de MEMO
Registro 1, 13, 10
Registro 2, 13, 10
Registro n, 13, 10
26
x
ANEXO I - GUA
44
Valor
04
05
06
Tipo
Programacin general BASIC
Operaciones matemticas
Operaciones de cadenas de texto y entrada de
07
teclado
Operadores lgicos, de bucles y de comparacin
ANEXO I - GUA
45
A
Instruccin
ABS
ACS
ALL
AND
ANGLE
AS
ASC
ASN
ATN
Cdigo
5,123
5,111
7,187
7,196
4,110
7,188
5,148
5,110
5,112
carcter ASCII
_{
_o
_
_
_n
_
_
_n
_p
Instruccin
BEEP
Cdigo
4,112
carcter ASCII
_p
Instruccin
CALC$
CALCJMP
CHR$
CLEAR
CLOSE
CLS
COS
CSR
CUR
Cdigo
6,173
4,159
6,160
4,106
4,114
4,113
5,108
7,184
5,99
carcter ASCII
_
_
_
_j
_r
_q
_l
_
_c
ANEXO I - GUA
46
Instruccin
DATA
DEF
DEFM
DEFSEG
DEG
DIM
DMS$
Cdigo
4,128
4,118
4,119
4,120
5,56
4,124
6,151
carcter ASCII
_
_v
_w
_x
_8
_|
_
Instruccin
EDIT
ELSE
END
EOF
ERASE
ERL
ERR
ERROR
EXP
Cdigo
4,111
*7,72
4,135
5,138
4,133
5,79
5,80
4,134
5,121
carcter ASCII
_o
_H
_
_
_
_O
_P
_
_y
Instruccin
FACT
FIX
FOR
FRAC
FRE
Cdigo
5,103
5,126
4,129
5,127
5,141
carcter ASCII
_g
_~
_
_
_
Instruccin
GOSUB
GOTO
Cdigo
4,74
4,73
carcter ASCII
_J
_I
ANEXO I - GUA
47
H
Instruccin
HEX$
HYP
HYPACS
HYPASN
HYPATN
HYPCOS
HYPSIN
HYPTAN
Cdigo
6,163
5,172
5,117
5,116
5,118
5,114
5,113
5,115
carcter ASCII
_
_
_u
_t
_v
_r
_q
_s
Instruccin
IF
INKEY$
INPUT
INT
Cdigo
4,141
6,168
6,155
5,125
carcter ASCII
_
_
_
_}
Instruccin
KEY
Cdigo
6,169
carcter ASCII
_
Instruccin
LEFT$
LEN
LET
LIST
LLIST
LN
Cdigo
6,158
5,149
4,143
4,87
4,88
5,119
carcter ASCII
_
_
_
_W
_X
_w
ANEXO I - GUA
48
LOAD
LOG
LPRINT
4,89
5,120
4,164
_Y
_x
_
Instruccin
MID
MID$
MOD
MODE
Cdigo
6,154
6,156
7,199
4,176
carcter ASCII
_
_
_
_
Instruccin
NCR
NEW
NEXT
NOT
NPR
Cdigo
5,171
4,107
4,130
7,195
5,170
carcter ASCII
_
_k
_
_
_
Instruccin
ON
OPEN
OR
OUT
Cdigo
4,154
4,151
7,194
4,153
carcter ASCII
_
_
_
_
Instruccin
PASS
PBGET
PBLOAD
Cdigo
4,83
4,180
4,179
carcter ASCII
_S
_
_
ANEXO I - GUA
49
PEEK
PI
POKE
POL
PRINT
PUT
5,134
5,96
4,99
5,168
4,163
4,165
_
_`
_c
_
_
_
Instruccin
RAN#
READ
REC
REM
RESTORE
RESUME
RETURN
RIGHT$
RND
ROUND
RUN
Cdigo
5,147
4,168
5,167
4,169
4,77
4,76
4,75
6,157
5,145
5,144
4,109
carcter ASCII
_
_
_
_
_M
_L
K
_
_
_
_m
Instruccin
SAVE
SET
SGN
SIN
SQR
STEP
STOP
STR$
Cdigo
4,108
4,172
5,124
5,107
5,122
7,192
4,174
6,161
carcter ASCII
_l
_k
_|
_k
_z
_
_
_
ANEXO I - GUA
50
Instruccin
TAB
TAN
THEN
TO
TROFF
TRON
Cdigo
7,182
5,109
7,71
7,193
4,95
4,93
carcter ASCII
_
_m
_G
_
__]
Instruccin
VAC
VAL
VALF
VAR
VERIFY
Cdigo
4,122
5,150
5,146
4,178
4,96
carcter ASCII
_z
_
_
_
_`
Instruccin
WRITE#
Cdigo
4,78
carcter ASCII
_N
Instruccin
XOR
Cdigo
7,198
carcter ASCII
_
ANEXO I - GUA
51
52
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
CLEAR
NEW
SAVE
RUN
ANGLE
EDIT
BEEP
CLS
CLOSE
DEF
DEFM
DEFSEG
VAC
DIM
SIN
COS
TAN
ASN
ACS
ATN
HYPSIN
HYPCOS
HYPTAN
HYPASN
HYPACS
HYPATN
LN
LOG
EXP
SQR
ABS
SGN
INT
FIX
FRAC
DATA
FOR
NEXT
ERASE
ERROR
END
PEEK
EOF
IF
FRE
LET
LOCATE
ROUND
RND
ANEXO I - GUA
53
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
VALF
RAN#
ASC
LEN
VAL
OPEN
DMS$
OUT
ON
DEG
MID
INPUT
MID$
RIGHT$
LEFT$
CALCJMP
CHR$
STR$
PRINT
LPRINT
PUT
READ
REM
SET
HEX$
REC
POL
INKEY$
KEY
NPR
NCR
HYP
CALC$
STOP
MODE
VAR
PBLOAD
PBGET
TAB
CSR
ANEXO I - GUA
54
186
187
188
189
190
191
192
193
194
195
196
197
198
199
ALL
AS
STEP
TO
NOT
AND
OR
XOR
MOD
ANEXO I - GUA
55
COMANDOS NUEVOS
<=250)
Variable -> perteneciente al rango
a~z; A~Z;a$~z$;A$~Z$
Utilidad: Introducir un mximo nmero n de caracteres.
El signo ? no aparece al pedir la variable.
Ejemplo.-
10 PRINTEdad?;:INPUT@3;edad
ANEXO I - GUA
56
Instruccin: INPUT$( n, @)
n
<=250)
@ -> Carcter comodn.
Utilidad: Para elegir opciones en los programas. Elimina un
barrido al refrescar la pantalla. Para usar claves de acceso al
programa, ya que introduce un mximo nmero n de
caracteres sin ser visualizados.
Ejemplo.-
PRINT(1)
Introducir
datosTAB(0(2)Calcular;
10
op=VAL(INPUT$(1,@)):ONop
GOTO100,200:
GOTO 10
100 REM Introducir datos
200 REM Calcular
Tambin se puede emplear la instruccin para provocar una
pausa en el programa:
10 PRINTPulsa una tecla para seguir;
20 $=INPUT$(1,@)
30 REM continuar el programa
ANEXO I - GUA
57
Instruccin: CALC$
10 CALC$=AREA=BASE*ALTURA
Instruccin: CALCJMP
10 CALC$=AREA=BASE*ALTURA
20 CALCJMP
58
ANEXO I - GUA
59
Instruccin: DEFCHR$(n)
n ->nmero, rango 252 <=n<=255
una
mejor
clarificacin
ver
captulo
Cambiar
Caracteres Ascii.
Ejemplo.-
10 DEFCHR$(252)=FFFFFFFFFF
20 PRINT CHR$(252);
ANEXO I - GUA
60
CDIGOS DE TECLAS
ESPECIALES
Cdigos de teclado para teclas especiales:
El cdigo de las teclas se puede obtener con la
sentencia:
T=ASC(KEY)
Tecla
Cdigo
ENG
MEMO
MODE
CALC
LIB
MENU
S (SHIFT)
IN
OUT
SHIFT+EXE
E
hexadecimal
242
251
240
250
252
218
14
244
245
253
69
(Exponencial)
ANS
246
ANEXO I - GUA
61
OPTIMIZACIN DE
CARACTERES
A la hora de introducir los programas es posible reducir la
memoria usada.
Los espacios en blanco entre comandos son usados como
bytes desperdiciados.
Este ahorro de espacio puede resultar beneficioso para
aquellos usuarios que no dispongan de la ampliacin de
memoria RP-33.
Al mismo tiempo el ahorro de bytes se traduce en ahorro de
edicin, ya que podemos escribir casi todos los comandos e
instrucciones juntos.
Esto va a redundar en una perdida de legibilidad. Quizs
este modo de programar debera de ser usado por
programadores ms expertos.
Se van a mostrar varios ejemplos de ahorro de bytes:
Eliminacin
de
parntesis
sobrantes,
signos
de
62
10
CHR$
(9);Escribe
tu
nombre+TAB(0);
Con ahorro:
10
PRINTCHR$
(9Escribe
tu
nombreTAB(0;
Ejemplo 2:
Sin ahorro:
Con ahorro:
Ejemplo 3:
Sin ahorro:
Con ahorro:
Ejemplo 4:
Sin ahorro:
Con ahorro:
50 PRINT Z$;G$;X$;A$;B$;C$;
50 PRINTZ$G$X$A$B$C$;
Ejemplo 5:
Cuando hay una instruccin condicional del tipo:
IF THEN GOTO 100 se puede reducir THEN GOTO
por GOTO.
Sin ahorro:
ANEXO I - GUA
63
Con ahorro:
10 IFX>200GOTO200
Ejemplo 6:
Para estructuras complejas aqu tenemos el siguiente
ejemplo.
Sin ahorro:
Con ahorro:
50
FB=0ORG$=GOTO30ELSEIFXMOD2+BM
OD2
=0;X=X/2
FOR I=1 TO 10
FOR H=A TO B
Con ahorro:
FORI=1TO10
FORH=A TOB (Ntese el espacio entre A y
TO)
ANEXO I - GUA
64
calculadoras
con
poca
memoria
para
programadores ms expertos.
ANEXO I - GUA
65
CAMBIAR CARACTERES
ASCII
La calculadora se reserva para su uso los cuatro ltimos
caracteres de su cdigo ASCII. Usando el comando DEFCHR$
(n) (Ver captulo Comandos Nuevos) se pueden redefinir los
caracteres.
Un carcter representado en la pantalla es una malla de 5x7
puntos, como se muestra en la figura.
ANEXO I - GUA
66
&H1
20*1=1
23*0=
0
22*0=0
1
Fila
virtual
2 *0=0
&H10
&H0
20*0=0
23*0=
0
22*1=4
21*1=2
&H7
20*1=1
&H7C
2 *1=
8
22*1=4
1
2 *0=0
0
2 *0=0 67
&HC
ANEXO I - GUA
23*0=
0
22*0=0
&H0
21*0=0
20*0=0
&H00
2 *0=
0
22*0=0
&H0
2 *0=0
20*0=0
ANEXO I - GUA
68
(A$,X*2+3:PRINTCHR$(11CHR$(5B$;
8040 C$=LEFT$(A$,X*2)+MID$(HEX$(CXORM),3)+MID$
(A$,X*2+3:F=0:LOCATE3,1:PRINTMID$("",2+(0=(C ANDM,1;
8050 F=1-F:IFF;DEFCHR$(255)=C$ELSEDEFCHR$(255)=B$
8060 T=ASC(KEY:IFT=0GOTO8050ELSEIFT=30ANDM<128;M=M*2ELSEIFT=31AND
M2
;M=M\2ELSEIFT=29ANDX>0;A$=B$:X=X-1:GOTO8020ELSEIFT=28ANDX<4;
8065
8070
8075
8076
8077
8080
8090
8100
A$=B$:X=X+1:GOTO8020
IFT>27ANDT<32GOTO8030
IFT=13;C=C XORM
IFT=244GOTO8090
IFT=245GOTO8100
IFT>64ANDT<91;LOCATE0,1:PRINTCHR$(T;
GOTO8030
CALC$=B$:PRINTCHR$(11CHR$(6"CALC";:$=INPUT$(1,@:GOTO8030
ONERRORGOTO8105:DEFCHR$(252)=CALC$:$="Seguir, Borrar o CALC
(S,B,C)?"
:F=1:GOTO8110
8105 $="Seguir o Borrar (S,B) ?":F=0:RESUME8110
8110 PRINTCHR$(11CHR$(5$;
8120 $=INPUT$(1:IF$="S"GOTO8030ELSEIF$="B"GOTO8000ELSEIF$="C"ANDF=1
;A$=CALC$:GOTO8020ELSE8120
ANEXO I - GUA
69
programas ms
optimizados.
Un ejemplo de forma manual sera la de insertar lneas
conteniendo datos en el programa P9 hasta totalizar el
tamao total en bytes de la librera para despus pasar byte
a byte la informacin al P9. El clculo de datos a introducir
lo realiza el programa nuestro.
ANEXO I - GUA
70
4055
4060
4070
Explicacin:
En la lnea 4010 obtenemos el inicio y el final del P9,
mirando en la tabla de punteros de programas (ver
captulo Tabla de Punteros).
ANEXO I - GUA
71
mira en la tabla el
ANEXO I - GUA
72
CCAL$=CALC$:PRI=1:GOTO 4000
REM Insertar una linea en el P9 (llamada a Sistema MODE31)
m$="9"
GOSUB 1150
DEFSEG=0:PE=PEEK1685+256*PEEK1686:POKEPE+5,215:
POKEPE+6,26:POKEPE+7,4:POKE1608,0:POKE1609,3:RETURN
RETURN
REM Pasar CALC$ al Buffer VALF (llamada a sistema MODE33)
a=1024:b=768:c=LEN(CALC$):GOSUB 3005
GOSUB 3020:RESUME3010
RETURN
DEFSEG=0:ONERRORGOTO
3020:POKE1759,92:POKE1760,27:
POKE1761,4:f=a-1:e=c+f:o=b+c-1:jcsoft
CLS:REM Pasa programa de libreria a P9
DEFSEG=0:P=PEEK1712+256*PEEK1713:I=PEEKP+256*PEEK
(P+1:F=PEEK(P+3)+256*PEEK(P+4
IFPRI;CLS:PRINT"Numero de
libreria ?"TAB(0;:INPUT@5;R$:PRI=0
CLS:DEFSEG=5*4096:FORD=63413TO2^16STEP15:S$="
FORN=D TOD-1+LEN(R$:S$=S$+CHR$(PEEKN:NEXT
CLS:PRINTD-7;S$;:IFR$<>S$;NEXT:END
CLS:D=D7:A=PEEKD+256*PEEK(D+1:B=PEEK(D+3)+256*PEEK
(D+4:IFB-A>F-I;CALC$="DATA":FORN=1TO200:CALC$=CALC$
ANEXO I - GUA
73
4055
4060
4070
5000
5010
+
"J":NEXT:PRINT"Introduciendo en P9"(B-A-F+I)\204+1TAB(0"
veces la linea de OUT";:in=(B-A-F+I)\204+1:GOTO 5000
PRINT"Pasando"B-A"bytes";TAB(0;:ONERRORGOTO 4060
C=4096*PEEK(D+2:FORN=0TOB-A:DEFSEG=C:B=PEEK(A+N:
DEFSEG=0:POKEI+N,B:PRINTCHR$(5N;:NEXT
BEEP:CLS:CALC$=CCAL$:END
FOR R=1 TO in:AA$=CALC$:CALC$=STR$(R)+" "+CALC$:
GOSUB 3000:GOSUB1000:CALC$=AA$:NEXTR
GOTO 4000
Explicacin:
Es vlido todo lo citado para el programa anterior menos en
lo referente a la edicin.
El proceso automtico seguido es el de llenar la variable
CALC$ de Function Memory con el nmero de lnea y
moverlo a la direccin 768 de la memoria (donde se
encuentra el Buffer de la funcin VALF) usando la llamada a
sistema MODE33 (ver captulo Llamadas de Sistema). Una
vez hecho esto introducimos la lnea en el P9 con la llamada
al sistema MODE31. Una vez terminado se pasar byte a
byte la librera al P9.
ANEXO I - GUA
74
Ejemplo1:
Ejemplo2:
Ejemplo3:
ANEXO I - GUA
75
Mensaje de
Significado
Correccin
error
error
10
NF Error
No se encontr la
Introducir un nmero
(Error NF)
librera especificada
de librera existente
(Error Not
Found)
ANEXO I - GUA
76
ELIMINAR CONTRASEA
A veces el uso de una contrasea entraa el riesgo de que
sta permanezca en el olvido.
La contrasea se almacena en la RAM como una cadena
ASCIIZ de 8 bytes, es decir, una cadena de texto de 8 bytes
ms el byte cero.
El mtodo de eliminacin de la contrasea es de lo ms
simple.
Lo primero que hay que hacer es localizar la direccin de
memoria donde se aloja la misma.
Lo segundo es llenar el primer byte de esa direccin con el
carcter cero.
Para el primer paso en el captulo Tabla de Punteros
podemos conocer la direccin donde se aloja la contrasea.
Esta direccin es la 1867.
Basta usar la instruccin POKE1867,0 y la contrasea estar
eliminada. As de simple.
ANEXO I - GUA
77
OCULTAR EL BANCO DE
DATOS(MEMO)
Este apartado sirve para ocultar el banco de datos (MEMO)
hacindola parecer vaca.
Hay que tener en cuenta unos detalles a la hora de ocultar
MEMO. Es indispensable una vez oculta, no volver a escribir
en el banco de datos, porque podemos desestabilizar el
sistema.
El procedimiento es similar a la eliminacin de la contrasea
(ver captulo Eliminar contrasea ). Consiste en cambiar el
primer byte de MEMO a cero (o a otro byte menor que 32).
Se aconseja en el primer byte de MEMO escribir un
carcter espacio antes de cambiar a cero.
Un programa podra ser el siguiente:
10
20
30
CLS:DEFSEG=0
P=PEEK1703+256*PEEK1704
IFPEEKP=0;PRINTMemo oculta o vacaTAB(0Deseas
recuperarla
40
(S/N)?;:INPUT@2;$:IF$=SOR$=s;POKEP,32:END
PRINTDeseas ocultar la
MEMO(S/N)?;:INPUT@2;$:IF$=SOR$=s
;POKEP,0:END
ANEXO I - GUA
78
LONGITUD DE LOS
PROGRAMAS
Para llevar un control de la memoria ocupada por los
programas no se ha implementado ninguna funcin.
No obstante en esta gua extraoficial se ha puesto remedio
para ello.
Para conocer la longitud de los programas los punteros de
los programas nos pueden servir (Ver captulo Tabla de
Punteros).
Cada estructura de programa consta de 15 bytes de
informacin. Estas van desde el P9 al P0, continuando
despus con la informacin del Banco de Datos (MEMO).
[xxxx] Lo que hay en la direccin xxxx (vara segn la cantidad de
RAM
[1709] [1712]
[1715]
MEMO P9 P8 P7 P6 P5 P4 P3 P2 P1 P0
15
bytes
INICIO
B
L
FINAL
B
L
8
0
32
32
32
32
32
32
ANEXO I - GUA
79
CLEAR:DEFSEG=0:GOSUB100:P=PEEK1712+256*PEEK1713+DESP
I=PEEKP+256*PEEK(P+1
F=PEEK(P+3)+256*PEEK(P+4
IFR;R$="MEMO"ELSER$="P"+P$
CLS:PRINT"Longitud: Fisica="F-I;TAB(8": Logica="F-I-1"
bytes";:LOCATE2,1:PRINTR$:
100
GOTO10
CLS:PRINTCHR$(9"Longitud de programas"TAB(0"(M)EMO /N. PROGRAMA ?";:
110
120
130
140
150
INPUT@2;P$
PP=VAL(P$
IFP$="M";DESP=-15:R=1:RETURN
IFPP<0ORPP>9GOTO100
IFASC(P$>57ORASC(P$<48GOTO100
DESP=15*(15-(PP+6:RETURN
ANEXO I - GUA
80
16
conectores
14 conectores
1 /2
Read/Write
Chip Select 2
Chip Select
Direccin 8
Direccin 9
Direccin 11
Output Enable
Direccin 10
Chip Select 1
Datos 8
Datos 7
Datos 6
Datos 5
Datos 3
Datos 4
SPI
W/R
CS2
CS
AD8
AD9
AD11
OE
AD10
CS1
ID8
ID7
ID6
ID5
ID3
ID4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
VPP
VPP
CS3
AD12
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
ID1
ID2
Vss
Vss
Alimentacin
Alimentacin
Chip Select 3
Direccin 12
Direccin 7
Direccin 6
Direccin 5
Direccin 4
Direccin 3
Direccin 2
Direccin 1
Direccin 1
Datos 1
Datos 2
0 Voltios (Masa)
0 Voltios (Masa)
ANEXO I - GUA
81
CONECTOR DE PERIFRICOS
El esquema de conexin es el siguiente :
IO4
IO3
IO5
IO2
10
10
IO6
IO1
11
11
IO7
bit 0 cursor
AD0
12
12
IO8
bit 2 cursor
AD2
13
13
14
14
OE
. Impresora
BUSYBUSY
. Impresora
preparada
para
recibir
preparada para
recibir
datos
datos
A cero al abrirse
un canal de RS
232 C
Salida SAVE/RS
232C
RD/W
R
+5 V
0V
pasos a cero por
El conector deGND
perifricos
de la2cada
calculadora
no es un
carcter a
conector estndar. La marca CASIOimpresora
tiene su propia interfaz
15
15
ANEXO I - GUA
82
ANEXO I - GUA
83
ndice
INTRODUCCIN............................................................................................................
DIRECCIONAMIENTO DE LA MEMORIA RAM..................................................................
TABLA DE PUNTEROS...................................................................................................
ALMACENAMIENTO DE VARIABLES Y PUNTEROS..........................................................
LISTADO DE LA MEMORIA ROM....................................................................................
LOCALIZACIN DE LA BIBLIOTECA (LIBRERAS)...........................................................
LIBRERAS NO DOCUMENTADAS...................................................................................
LLAMADAS DE SISTEMA: MODOS ESPECIALES............................................................
ESTRUCTURA INTERNA DE PROGRAMAS Y MEMO........................................................
CODIFICACIN DE LOS COMANDOS BASIC...................................................................
COMANDOS NUEVOS...................................................................................................
CDIGOS DE TECLAS ESPECIALES...............................................................................
OPTIMIZACIN DE CARACTERES..................................................................................
CAMBIAR CARACTERES ASCII.......................................................................................
PASO DE UN LIBRERA AL PROGRAMA P9.....................................................................
ACCESO A LIBRERAS DESDE BASIC.............................................................................
ELIMINAR CONTRASEA...............................................................................................
OCULTAR EL BANCO DE DATOS(MEMO).......................................................................
LONGITUD DE LOS PROGRAMAS..................................................................................
CONECTOR DE LA AMPLIACIN DE RAM (RP-33)..........................................................
CONECTOR DE PERIFRICOS........................................................................................
ANEXO I - GUA
84