├── .gitignore
├── LICENSE.txt
├── README.md
├── README.png
├── README1.png
├── README2.png
├── README3.png
├── compile.sh
├── js
├── floppy.js
├── harddisk.js
├── jsTerm.js
├── nanochess_font_ecma94_1_8x16.png
├── transputer_emulator.html
└── transputer_emulator.js
├── library.len
├── m3d
├── BOLACRIS.M3D
├── EJEMPLO.M3D
├── LOGO.M3D
├── NUEVO2.M3D
├── NUEVO2U.M3D
├── P.M3D
└── PISO.M3D
├── make_compiler.sh
├── os
├── ARRANQUE.CMG
├── ARRANQUE.LEN
├── EDITOR.C
├── ENSG10.C
├── ENSG10.CMG
├── INTERFAZ.C
├── MAESTRO.CMG
├── MAESTRO.LEN
├── MENSAJES.LEN
├── MONITOR.C
├── SOM32.C
├── STDIO.LEN
├── STDIO2.LEN
├── STDIO3.LEN
├── TC.C
├── TC.CMG
├── TC2.C
├── TC2.CMG
├── assemble_os.sh
├── bin2c.c
├── build_disk.sh
├── buildboot.c
├── cc.cmg
├── cc.len
├── disk.img
├── editor.cmg
├── editor.len
├── empty_disk.img
├── ensg10.len
├── interfaz.cmg
├── interfaz.len
├── monitor.cmg
├── monitor.len
├── run_os.sh
├── som32.bin
├── som32.len
├── tc.len
├── tc.sh
└── tc2.len
├── os_final
├── MAESTRO.CMG
├── MAESTRO.LEN
├── build_f1.sh
├── build_f2.sh
├── build_hd.sh
├── build_js.sh
├── extractimage.c
├── floppy.img
├── harddisk.img
├── run_os_v2.sh
└── tree
│ ├── Checar.p
│ ├── Compara.p
│ ├── Conjunto.p
│ ├── DARC.p
│ ├── DZIP.p
│ ├── Desarrollo
│ ├── Ajedrez.c
│ ├── Ajedrez.p
│ ├── Reloj.c
│ ├── Reloj.p
│ ├── Tetris.c
│ └── Tetris.p
│ ├── Dibujo_3D
│ ├── Animacion_tetera
│ ├── Cara
│ ├── Cara_feliz
│ ├── Copa
│ ├── Cubo
│ ├── Escena
│ ├── Escena_ajedrez
│ ├── Escena_ajedrez.2
│ ├── Escena_cara
│ ├── Escena_cara_feliz
│ ├── Escena_caras
│ ├── Escena_copa
│ ├── Escena_cubo
│ ├── Escena_esfera
│ ├── Escena_objetos
│ ├── Escena_peon
│ ├── Escena_tetera
│ ├── Escena_tetera.2
│ ├── Escena_tetera.3
│ ├── Esfera
│ ├── P.M3D
│ ├── P1.M3D
│ ├── P2.M3D
│ ├── P3.M3D
│ ├── Peon
│ ├── Plano
│ ├── Prueba.M3D
│ ├── Tablero
│ ├── Toroide
│ ├── Utah.teapot
│ ├── p.PIX
│ ├── p1.PIX
│ └── prueba.PIX
│ ├── Divide.p
│ ├── Documentos
│ ├── Archivo.doc
│ ├── Detalles.doc
│ ├── Ens.doc
│ ├── Peticiones.doc
│ ├── Programas.doc
│ ├── Servicios.doc
│ ├── Trabajo.doc
│ └── Transputer.doc
│ ├── Editor.p
│ ├── Ejecutable.p
│ ├── Ens.p
│ ├── GZIP.p
│ ├── Hora.p
│ ├── Info.p
│ ├── Interfaz.p
│ ├── Modela.p
│ ├── Monitor.p
│ ├── Pruebas
│ └── float.c
│ ├── SOM.32.bin
│ ├── TAR.p
│ ├── Vaciado.p
│ ├── c
│ ├── CC.c
│ ├── CCanasin.c
│ ├── CCexpr.c
│ ├── CCgencod.c
│ ├── CCinter.c
│ ├── CCvarios.c
│ ├── CCvars.c
│ ├── CPC.c
│ ├── Checar.c
│ ├── Compara.c
│ ├── Concat.c
│ ├── Conjunto.c
│ ├── Copiador.c
│ ├── DARC.c
│ ├── DZIP.c
│ ├── Divide.c
│ ├── Editor.c
│ ├── Efem.c
│ ├── Ejecutable.c
│ ├── Ens.c
│ ├── Explode.c
│ ├── Filtro.c
│ ├── GZIP.C
│ ├── Hora.c
│ ├── Inflate.c
│ ├── Info.c
│ ├── Interfaz.c
│ ├── Libro.c
│ ├── M3D.c
│ ├── Modela.c
│ ├── Monitor.c
│ ├── Prepara.c
│ ├── Semana_santa.c
│ ├── Som32.c
│ ├── TAR.c
│ ├── Unreduce.c
│ ├── Unshrink.c
│ ├── Vaciado.c
│ └── halt.c
│ ├── cc.p
│ ├── concat.p
│ ├── halt.p
│ ├── lib
│ ├── E.len
│ ├── Graf.len
│ ├── MAT.len
│ ├── Mensajes.len
│ └── Stdio.len
│ └── m3d.p
├── pascal
├── ANALEXIC.PAS
├── Animales.pas
├── DECLARAC.PAS
├── ERRORES.PAS
├── EXPRESIO.PAS
├── GENCODIG.PAS
├── Hanoi.pas
├── JULIA.PAS
├── M3D.PAS
├── PRINCIPA.PAS
├── SENTENCI.PAS
├── VARIABLE.PAS
├── original
│ ├── ANALEXIC.PAS
│ ├── Animales.pas
│ ├── DECLARAC.PAS
│ ├── ERRORES.PAS
│ ├── EXPRESIO.PAS
│ ├── GENCODIG.PAS
│ ├── Hanoi.pas
│ ├── PRINCIPA.PAS
│ ├── SENTENCI.PAS
│ └── VARIABLE.PAS
├── pascal.cmg
└── pascal0.cmg
├── tasm.c
├── tem.c
└── tram
├── Animales.pas
├── COMM.COM
├── NUEVO2.M3D
├── animales.cmg
├── comm.asm
├── comm2.asm
├── comm2.com
├── m3d.cmg
├── pascal.cmg
├── startup.asm
├── test1.asm
└── test1.bin
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | os/.DS_Store
3 | tem
4 | tasm
5 | *.o
6 | os/buildboot
7 | os/bin2c
8 |
9 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Transputer emulator, transputer assembler, and transputer Pascal compiler
2 | Copyright (c) 1993-2025 Oscar Toledo G. http://nanochess.org/
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without
6 | modification, are permitted provided that the following conditions are met:
7 |
8 | 1. Redistributions of source code must retain the above copyright notice, this
9 | list of conditions and the following disclaimer.
10 | 2. Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
18 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 |
--------------------------------------------------------------------------------
/README.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/README.png
--------------------------------------------------------------------------------
/README1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/README1.png
--------------------------------------------------------------------------------
/README2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/README2.png
--------------------------------------------------------------------------------
/README3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/README3.png
--------------------------------------------------------------------------------
/compile.sh:
--------------------------------------------------------------------------------
1 | ./tem pascal/pascal.cmg $1.pas >$1.len
2 | ./tasm $1.len $1.cmg library.len
3 |
--------------------------------------------------------------------------------
/js/nanochess_font_ecma94_1_8x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/js/nanochess_font_ecma94_1_8x16.png
--------------------------------------------------------------------------------
/js/transputer_emulator.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Transputer emulator by nanochess (2025)
4 |
5 |
6 |
7 |
8 |
169 |
170 |
171 |
172 |
173 |
178 |
179 |
180 |
181 |
--------------------------------------------------------------------------------
/m3d/BOLACRIS.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X = 320
3 | Y = 200
4 |
5 |
6 | CUADROS
7 | NUMERO = 1
8 |
9 |
10 | AMBIENTE
11 | LOCAL = 0.650 0.650 0.650
12 | REFLEJO = 0.250 0.250 0.250
13 | TRANS = 0.950 0.950 0.950
14 | MINIMO = 0.030 0.030 0.030
15 | MAXIMO = 1.000 1.000 1.000
16 | RECUR = 4
17 |
18 |
19 | LAMPARAS
20 | REFLEJO = FALSO
21 | REFLAMP = 0.000 0.000 0.000
22 | EFECDIST= 0.050
23 |
24 |
25 | OBSERVADOR
26 | LENTE = 3.500
27 | LOC = 0.000 -800.000 140.000
28 | ROTADO = -2.500
29 | GIRO = 6.000
30 |
31 |
32 | CIELO
33 | HORIZ = 0.400 0.500 0.600
34 | ZENITH = 0.750 0.800 0.900
35 | NUBES = VERDADERO
36 |
37 |
38 | MATERIAL
39 | TIPO = AGUA
40 | TEXTURA = ONDASMAR
41 | RFLAMB = 0.100 0.100 0.100
42 | RFLDIF = 0.100 0.400 0.250
43 | RFLESP = 0.100 0.100 0.100
44 | BRILLO = 8.000
45 | TRANS = 0.000 0.000 0.000
46 | INDICE = 1.000
47 | AMPLITUD= 0.300
48 | FASE = 0.000
49 |
50 |
51 | MATERIAL
52 | TIPO = CROMO
53 | TEXTURA = ONDAS
54 | RFLAMB = 0.200 0.200 0.200
55 | RFLDIF = 0.500 0.500 0.500
56 | RFLESP = 0.300 0.300 0.300
57 | BRILLO = 25.000
58 | TRANS = 0.000 0.000 0.000
59 | INDICE = 1.000
60 | AMPLITUD= 0.400
61 | FASE = 0.000
62 | POSX = 0.000
63 | POSY = 0.000
64 | POSZ = 0.000
65 |
66 |
67 | MATERIAL
68 | TIPO = VIDRIO
69 | TEXTURA = SUAVE
70 | RFLAMB = 0.050 0.050 0.050
71 | RFLDIF = 0.050 0.050 0.050
72 | RFLESP = 0.850 0.850 0.850
73 | BRILLO = 50.000
74 | TRANS = 0.920 0.920 0.920
75 | INDICE = 1.333
76 |
77 |
78 | PISO
79 | MAT = AGUA
80 |
81 |
82 | LAMPARA
83 | LOC = -350.000 -350.000 400.000
84 | RADIO = 100.000
85 | INTENS = 0.880 0.880 0.840
86 |
87 |
88 | ESFERA
89 | LOC = 0.000 0.000 70.000
90 | RADIO = 70.000
91 | MAT = CROMO
92 |
93 |
94 | ESFERA
95 | LOC = -50.000 -170.000 85.000
96 | RADIO = 70.000
97 | MAT = VIDRIO
98 |
99 |
100 | FINCUADRO
101 |
--------------------------------------------------------------------------------
/m3d/EJEMPLO.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X=320
3 | Y=200
4 |
5 | CUADROS
6 | NUMERO=1
7 |
8 | AMBIENTE
9 | LOCAL=0.75 0.75 0.75
10 | REFLEJO=0.30 0.30 0.30
11 | TRANS=0 0 0
12 | MINIMO=0.03 0.03 0.03
13 | MAXIMO=1 1 1
14 | RECUR=5
15 |
16 | LAMPARAS
17 | REFLEJO=FALSO
18 | REFLAMP=0 0 0
19 | EFECDIST=0.5
20 |
21 | OBSERVADOR
22 | LENTE=3.2
23 | LOC=0 -660 220
24 | ROTADO=0
25 | GIRO=16
26 |
27 | MATERIAL
28 | TIPO=AJEDREZADO
29 | TEXTURA=ALTERNADO
30 | RFLAMB=0.1 0.1 0.1
31 | RFLDIF=0.7 0.7 0.7
32 | RFLESP=0.2 0.2 0.2
33 | BRILLO=2
34 | TRANS=0 0 0
35 | INDICE=1
36 | CUADRO1=1 0.7 0.5
37 | CUADRO2=0 0.5 0.8
38 | CUADRO=0.012
39 |
40 | PISO
41 | MAT=AJEDREZADO
42 |
43 | LAMPARA
44 | LOC=350 -350 350
45 | RADIO=50
46 | INTENS=0.8 0.8 0.8
47 |
48 | FINCUADRO
49 |
--------------------------------------------------------------------------------
/m3d/LOGO.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X=640
3 | Y=400
4 |
5 | CUADROS
6 | NUMERO=1
7 |
8 | AMBIENTE
9 | LOCAL=0.75 0.75 0.75
10 | REFLEJO=0.30 0.30 0.30
11 | TRANS=0 0 0
12 | MINIMO=0.03 0.03 0.03
13 | MAXIMO=1 1 1
14 | RECUR=5
15 |
16 | LAMPARAS
17 | REFLEJO=FALSO
18 | REFLAMP=0 0 0
19 | EFECDIST=0.05
20 |
21 | OBSERVADOR
22 | LENTE=3.2
23 | LOC=0 -100 0
24 | ROTADO=0
25 | GIRO=0
26 |
27 | MATERIAL
28 | TIPO=COLOR1
29 | TEXTURA=SUAVE
30 | RFLAMB=0.3 0.2 0.1
31 | RFLDIF=0.5 0.4 0.3
32 | RFLESP=0.3 0.2 0.1
33 | BRILLO=20
34 | TRANS=0 0 0
35 | INDICE=1.0
36 |
37 | MATERIAL
38 | TIPO=COLOR2
39 | TEXTURA=SUAVE
40 | RFLAMB=0.1 0.2 0.3
41 | RFLDIF=0.3 0.4 0.5
42 | RFLESP=0.1 0.2 0.3
43 | BRILLO=20
44 | TRANS=0 0 0
45 | INDICE=1.0
46 |
47 | MATERIAL
48 | TIPO=COLOR3
49 | TEXTURA=SUAVE
50 | RFLAMB=0.1 0.3 0.2
51 | RFLDIF=0.3 0.5 0.4
52 | RFLESP=0.1 0.3 0.2
53 | BRILLO=20
54 | TRANS=0 0 0
55 | INDICE=1.0
56 |
57 | LAMPARA
58 | LOC=350 -350 350
59 | RADIO=50
60 | INTENS=0.8 0.8 0.8
61 |
62 | ESFERA
63 | LOC=5 0 -5
64 | RADIO=8
65 | MAT=COLOR1
66 |
67 | ESFERA
68 | LOC=0 0 5
69 | RADIO=8
70 | MAT=COLOR2
71 |
72 | ESFERA
73 | LOC=-5 0 -5
74 | RADIO=8
75 | MAT=COLOR3
76 |
77 | PRUEBAESFERA
78 |
79 | FINCUADRO
80 |
--------------------------------------------------------------------------------
/m3d/NUEVO2.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X=320
3 | Y=200
4 |
5 | CUADROS
6 | NUMERO=1
7 |
8 | AMBIENTE
9 | LOCAL=0.75 0.75 0.75
10 | REFLEJO=0.30 0.30 0.30
11 | TRANS=0 0 0
12 | MINIMO=0.03 0.03 0.03
13 | MAXIMO=1 1 1
14 | RECUR=5
15 |
16 | LAMPARAS
17 | REFLEJO=FALSO
18 | REFLAMP=0 0 0
19 | EFECDIST=0.05
20 |
21 | OBSERVADOR
22 | LENTE=3.2
23 | LOC=0 -660 220
24 | ROTADO=0
25 | GIRO=16
26 |
27 | MATERIAL
28 | TIPO=AJEDREZADO
29 | TEXTURA=ALTERNADO
30 | RFLAMB=0.1 0.1 0.1
31 | RFLDIF=0.7 0.7 0.7
32 | RFLESP=0.2 0.2 0.2
33 | BRILLO=2
34 | TRANS=0 0 0
35 | INDICE=1
36 | CUADRO1=1 0.7 0.5
37 | CUADRO2=0 0.5 0.8
38 | CUADRO=0.012
39 |
40 | MATERIAL
41 | TIPO=VERDE
42 | TEXTURA=SUAVE
43 | RFLAMB=0.05 0.2 0.05
44 | RFLDIF=0.1 0.5 0.1
45 | RFLESP=0.1 0.3 0.1
46 | BRILLO=20
47 | TRANS=0 0 0
48 | INDICE=1.0
49 |
50 | MATERIAL
51 | TIPO=BLANCO
52 | TEXTURA=SUAVE
53 | RFLAMB=0.2 0.2 0.2
54 | RFLDIF=0.5 0.5 0.5
55 | RFLESP=0.3 0.3 0.3
56 | BRILLO=10
57 | TRANS=0 0 0
58 | INDICE=1.0
59 |
60 | MATERIAL
61 | TIPO=ROJO
62 | TEXTURA=SUAVE
63 | RFLAMB=0.2 0.05 0.05
64 | RFLDIF=0.5 0.1 0.1
65 | RFLESP=0.3 0.1 0.1
66 | BRILLO=5
67 | TRANS=0 0 0
68 | INDICE=1.0
69 |
70 | PISO
71 | MAT=AJEDREZADO
72 |
73 | LAMPARA
74 | LOC=350 -350 350
75 | RADIO=50
76 | INTENS=0.8 0.8 0.8
77 |
78 | LAMPARA
79 | LOC=-350 -350 350
80 | RADIO=50
81 | INTENS=0.8 0.8 0.8
82 |
83 | ESFERA
84 | LOC=0 0 90
85 | RADIO=40
86 | MAT=BLANCO
87 |
88 | ESFERA
89 | LOC=100 -10 70
90 | RADIO=40
91 | MAT=ROJO
92 |
93 | ESFERA
94 | LOC=-100 10 50
95 | RADIO=40
96 | MAT=VERDE
97 |
98 | PRUEBAESFERA
99 |
100 | FINCUADRO
101 |
--------------------------------------------------------------------------------
/m3d/NUEVO2U.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X=640
3 | Y=480
4 |
5 | CUADROS
6 | NUMERO=1
7 |
8 | AMBIENTE
9 | LOCAL=0.75 0.75 0.75
10 | REFLEJO=0.30 0.30 0.30
11 | TRANS=0 0 0
12 | MINIMO=0.03 0.03 0.03
13 | MAXIMO=1 1 1
14 | RECUR=5
15 |
16 | LAMPARAS
17 | REFLEJO=FALSO
18 | REFLAMP=0 0 0
19 | EFECDIST=0.05
20 |
21 | OBSERVADOR
22 | LENTE=3.2
23 | LOC=0 -660 220
24 | ROTADO=0
25 | GIRO=16
26 |
27 | MATERIAL
28 | TIPO=AJEDREZADO
29 | TEXTURA=ALTERNADO
30 | RFLAMB=0.1 0.1 0.1
31 | RFLDIF=0.7 0.7 0.7
32 | RFLESP=0.2 0.2 0.2
33 | BRILLO=2
34 | TRANS=0 0 0
35 | INDICE=1
36 | CUADRO1=1 0.7 0.5
37 | CUADRO2=0 0.5 0.8
38 | CUADRO=0.012
39 |
40 | MATERIAL
41 | TIPO=VERDE
42 | TEXTURA=SUAVE
43 | RFLAMB=0.05 0.2 0.05
44 | RFLDIF=0.1 0.5 0.1
45 | RFLESP=0.1 0.3 0.1
46 | BRILLO=20
47 | TRANS=0 0 0
48 | INDICE=1.0
49 |
50 | MATERIAL
51 | TIPO=BLANCO
52 | TEXTURA=SUAVE
53 | RFLAMB=0.2 0.2 0.2
54 | RFLDIF=0.5 0.5 0.5
55 | RFLESP=0.3 0.3 0.3
56 | BRILLO=10
57 | TRANS=0 0 0
58 | INDICE=1.0
59 |
60 | MATERIAL
61 | TIPO=ROJO
62 | TEXTURA=SUAVE
63 | RFLAMB=0.2 0.05 0.05
64 | RFLDIF=0.5 0.1 0.1
65 | RFLESP=0.3 0.1 0.1
66 | BRILLO=5
67 | TRANS=0 0 0
68 | INDICE=1.0
69 |
70 | PISO
71 | MAT=AJEDREZADO
72 |
73 | LAMPARA
74 | LOC=350 -350 350
75 | RADIO=50
76 | INTENS=0.8 0.8 0.8
77 |
78 | LAMPARA
79 | LOC=-350 -350 350
80 | RADIO=50
81 | INTENS=0.8 0.8 0.8
82 |
83 | ESFERA
84 | LOC=0 0 90
85 | RADIO=40
86 | MAT=BLANCO
87 |
88 | ESFERA
89 | LOC=100 -10 70
90 | RADIO=40
91 | MAT=ROJO
92 |
93 | ESFERA
94 | LOC=-100 10 50
95 | RADIO=40
96 | MAT=VERDE
97 |
98 | PRUEBAESFERA
99 |
100 | FINCUADRO
101 |
--------------------------------------------------------------------------------
/m3d/P.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X=640
3 | Y=480
4 |
5 | CUADROS
6 | NUMERO=1
7 |
8 | AMBIENTE
9 | LOCAL=0.75 0.75 0.75
10 | REFLEJO=0.25 0.25 0.25
11 | TRANS=0 0 0
12 | MINIMO=0.03 0.03 0.03
13 | MAXIMO=1 1 1
14 | RECUR=2
15 |
16 | LAMPARAS
17 | REFLEJO=FALSO
18 | REFLAMP=0 0 0
19 | EFECDIST=0.5
20 |
21 | MATERIAL
22 | TIPO=AJEDREZADO
23 | TEXTURA=ALTERNADO
24 | RFLAMB=0.1 0.1 0.1
25 | RFLDIF=0.7 0.7 0.7
26 | RFLESP=0.2 0.2 0.2
27 | BRILLO=2
28 | TRANS=0 0 0
29 | INDICE=1
30 | CUADRO1=1 0.7 0.5
31 | CUADRO2=0 0.5 0.8
32 | CUADRO=0.012
33 |
34 | MATERIAL
35 | TIPO=BLANCO
36 | TEXTURA=SUAVE
37 | RFLAMB=0.2 0.2 0.2
38 | RFLDIF=0.8 0.8 0.8
39 | RFLESP=0.0 0.0 0.0
40 | BRILLO=25
41 | TRANS=0.0 0.0 0.0
42 | INDICE=1.0
43 |
44 | {piso}
45 | PISO
46 | MAT=AJEDREZADO
47 |
48 | PRUEBAESFERA
49 |
50 | OBSERVADOR
51 | LENTE=3.2
52 | LOC=-250 200 150
53 | ROTADO=120
54 | GIRO=16
55 |
56 | LAMPARA
57 | LOC=-350 300 350
58 | RADIO=100
59 | INTENS=0.95 0.95 0.91
60 |
61 | LAMPARA
62 | LOC=350 300 350
63 | RADIO=100
64 | INTENS=0.95 0.95 0.91
65 |
66 | ESFERA
67 | LOC=0.0 4.8 93.3
68 | RADIO=10.0
69 | MAT=BLANCO
70 |
71 | CILINDRO
72 | LOCBASE=0.0 1.8 77.3
73 | RADIO=5.0
74 | LOCFIN=0.0 4.8 93.3
75 | MAT=BLANCO
76 |
77 | CILINDRO
78 | LOCBASE=-17.3 1.8 77.3
79 | RADIO=5.0
80 | LOCFIN=17.3 1.8 77.3
81 | MAT=BLANCO
82 |
83 | ESFERA
84 | LOC=-17.3 1.8 77.3
85 | RADIO=5.0
86 | MAT=BLANCO
87 |
88 | ESFERA
89 | LOC=17.3 1.8 77.3
90 | RADIO=5.0
91 | MAT=BLANCO
92 |
93 | CILINDRO
94 | LOCBASE=0.0 0.0 48.3
95 | RADIO=5.0
96 | LOCFIN=0.0 1.8 77.3
97 | MAT=BLANCO
98 |
99 | CILINDRO
100 | LOCBASE=-6.8 0.0 48.3
101 | RADIO=5.0
102 | LOCFIN=6.8 0.0 48.3
103 | MAT=BLANCO
104 |
105 | ESFERA
106 | LOC=-6.8 0.0 48.3
107 | RADIO=5.0
108 | MAT=BLANCO
109 |
110 | ESFERA
111 | LOC=6.8 0.0 48.3
112 | RADIO=5.0
113 | MAT=BLANCO
114 |
115 | CILINDRO
116 | LOCBASE=-17.3 1.8 77.3
117 | RADIO=5.0
118 | LOCFIN=-17.3 2.8 57.3
119 | MAT=BLANCO
120 |
121 | ESFERA
122 | LOC=-17.3 2.8 57.3
123 | RADIO=5.0
124 | MAT=BLANCO
125 |
126 | CILINDRO
127 | LOCBASE=-17.3 2.8 57.3
128 | RADIO=5.0
129 | LOCFIN=-17.3 8.8 41.3
130 | MAT=BLANCO
131 |
132 | CILINDRO
133 | LOCBASE=17.3 1.8 77.3
134 | RADIO=5.0
135 | LOCFIN=17.3 -2.8 58.3
136 | MAT=BLANCO
137 |
138 | ESFERA
139 | LOC=17.3 -2.8 58.3
140 | RADIO=5.0
141 | MAT=BLANCO
142 |
143 | CILINDRO
144 | LOCBASE=17.3 -2.8 58.3
145 | RADIO=5.0
146 | LOCFIN=17.3 -4.8 42.3
147 | MAT=BLANCO
148 |
149 | CILINDRO
150 | LOCBASE=6.8 0.0 48.3
151 | RADIO=5.0
152 | LOCFIN=6.8 7.8 26.3
153 | MAT=BLANCO
154 |
155 | ESFERA
156 | LOC=6.8 7.8 26.3
157 | RADIO=5.0
158 | MAT=BLANCO
159 |
160 | CILINDRO
161 | LOCBASE=6.8 7.8 26.3
162 | RADIO=5.0
163 | LOCFIN=6.8 10.8 2.3
164 | MAT=BLANCO
165 |
166 | CILINDRO
167 | LOCBASE=-6.8 0.0 48.3
168 | RADIO=5.0
169 | LOCFIN=-6.8 -2.8 23.3
170 | MAT=BLANCO
171 |
172 | ESFERA
173 | LOC=-6.8 -2.8 23.3
174 | RADIO=5.0
175 | MAT=BLANCO
176 |
177 | CILINDRO
178 | LOCBASE=-6.8 -2.8 23.3
179 | RADIO=5.0
180 | LOCFIN=-6.8 -12.8 1.3
181 | MAT=BLANCO
182 |
183 | FINCUADRO
184 |
--------------------------------------------------------------------------------
/m3d/PISO.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X=640
3 | Y=400
4 |
5 | CUADROS
6 | NUMERO=1
7 |
8 | AMBIENTE
9 | LOCAL=0.75 0.75 0.75
10 | REFLEJO=0.30 0.30 0.30
11 | TRANS=0 0 0
12 | MINIMO=0.03 0.03 0.03
13 | MAXIMO=1 1 1
14 | RECUR=5
15 |
16 | LAMPARAS
17 | REFLEJO=FALSE
18 | REFLAMP=0 0 0
19 | EFECDIST=0.5
20 |
21 | OBSERVADOR
22 | LENTE=3.2
23 | LOC=0 -660 220
24 | ROTADO=0
25 | GIRO=16
26 |
27 | MATERIAL
28 | TIPO=AJEDREZADO
29 | TEXTURA=ONDASAGUA
30 | RFLAMB=0.0 0.8 0.9
31 | RFLDIF=0.0 0.3 0.4
32 | RFLESP=0.0 0.2 0.3
33 | BRILLO=2
34 | TRANS=0 0 0
35 | INDICE=1
36 | AMPLONDA = 0.300
37 | FASEONDA = 0.1
38 | POSXONDA = 0.0
39 | POSYONDA = 0.0
40 |
41 | MATERIAL
42 | TIPO=BLANCO
43 | TEXTURA=SUAVE
44 | RFLAMB=0.6 0.6 0.6
45 | RFLDIF=0.4 0.4 0.4
46 | RFLESP=0.2 0.2 0.2
47 | BRILLO=10
48 | TRANS=0 0 0
49 | INDICE=1.0
50 |
51 | PISO
52 | MAT=AJEDREZADO
53 |
54 | LAMPARA
55 | LOC=350 -350 350
56 | RADIO=50
57 | INTENS=0.8 0.8 0.8
58 |
59 | LAMPARA
60 | LOC=-350 -350 350
61 | RADIO=50
62 | INTENS=0.8 0.8 0.8
63 |
64 | ESFERA
65 | LOC=0 0 90
66 | RADIO=40
67 | MAT=BLANCO
68 |
69 | PRUEBAESFERA
70 |
71 | FINCUADRO
72 |
--------------------------------------------------------------------------------
/make_compiler.sh:
--------------------------------------------------------------------------------
1 | ./tem pascal/pascal.cmg pascal/variable.pas pascal/errores.pas pascal/analexic.pas pascal/gencodig.pas pascal/expresio.pas pascal/sentenci.pas pascal/declarac.pas pascal/principa.pas >pascal.len
2 | ./tasm pascal.len pascal.cmg library.len
3 |
--------------------------------------------------------------------------------
/os/ARRANQUE.CMG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/ARRANQUE.CMG
--------------------------------------------------------------------------------
/os/ARRANQUE.LEN:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/ARRANQUE.LEN
--------------------------------------------------------------------------------
/os/EDITOR.C:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/EDITOR.C
--------------------------------------------------------------------------------
/os/ENSG10.C:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/ENSG10.C
--------------------------------------------------------------------------------
/os/ENSG10.CMG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/ENSG10.CMG
--------------------------------------------------------------------------------
/os/INTERFAZ.C:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/INTERFAZ.C
--------------------------------------------------------------------------------
/os/MAESTRO.CMG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/MAESTRO.CMG
--------------------------------------------------------------------------------
/os/MAESTRO.LEN:
--------------------------------------------------------------------------------
1 | ; 19-jun-1995
2 |
3 | ;
4 | ; MAnejo de Entrada y Salida de TRansputer por Oscar toledo gutierrez.
5 | ;
6 | ; (MAESTRO)
7 | ;
8 | ; Se supone que esto comienza en 8000:0100.
9 | ;
10 | ENTRADA:
11 | SSER: equ 64
12 | ESER: equ 65
13 | SBAJ: equ 66
14 | EBAJ: equ 67
15 | AVID: equ 68
16 | SEMA: equ 69
17 |
18 | bsub ; Reserva para el punto de servicio. (uso con out)
19 | bsub
20 | bsub
21 | bsub
22 | bsub ; Respuesta del punto de servicio. (uso con in)
23 | bsub
24 | bsub
25 | bsub
26 | bsub ; Reserva para el acceso a bajo nivel. (uso con out)
27 | bsub
28 | bsub
29 | bsub
30 | bsub ; Respuesta del acceso a bajo nivel. (uso con in)
31 | bsub
32 | bsub
33 | bsub
34 | bsub ; Reserva para el apuntador de video.
35 | bsub
36 | bsub
37 | bsub
38 | bsub ; Semaforo. 0 = Nadie usa el canal.
39 | bsub ; 1 = Se esta refrescando la pantalla.
40 | bsub ; 2 = Lo esta usando el disco o el teclado.
41 | bsub
42 |
43 | mint
44 | mint
45 | stnl SSER
46 | mint
47 | mint
48 | stnl ESER
49 | mint
50 | mint
51 | stnl SBAJ
52 | mint
53 | mint
54 | stnl EBAJ
55 | ajw -2000 ; Bytes para el video.
56 | ldlp 0
57 | mint
58 | stnl AVID
59 | ajw -2 ; Limpia el video.
60 | ldlp 2
61 | stl 0
62 | ldc 1000
63 | stl 1
64 | BN1:
65 | ldc 0x07200720
66 | ldl 0
67 | stnl 0
68 | ldl 0
69 | adc 3
70 | stl 0
71 | ldlp 0
72 | ldc BN2-BN1
73 | lend
74 | BN2:
75 | ldlp 1002
76 | stl 0
77 | ldc 1000
78 | stl 1
79 | BN3:
80 | ldc 0x20072007
81 | ldl 0
82 | stnl 0
83 | ldl 0
84 | adc 3
85 | stl 0
86 | ldlp 0
87 | ldc BN4-BN3
88 | lend
89 | BN4:
90 | ajw 2
91 | ldc 0
92 | mint
93 | stnl SEMA
94 | ldc REFRESCO-PROC1
95 | ldpi
96 | PROC1:
97 | ldlp -16
98 | stnl -1
99 | ldlp -16
100 | runp
101 | ldc ENTSAL-PROC2
102 | ldpi
103 | PROC2:
104 | ldlp -32
105 | stnl -1
106 | ldlp -32
107 | runp
108 | ldc COMIENZO-PROC3
109 | ldlp -48
110 | startp
111 | PROC3:
112 | PROC4:
113 | ldc 1000000
114 | ldtimer
115 | sum
116 | tin
117 | j PROC4
118 |
119 | REFRESCO:
120 | ajw -8
121 | mint
122 | ldnl AVID
123 | stl 6
124 | mint
125 | ldnl AVID
126 | ldnlp 1000
127 | stl 1
128 | R4:
129 | ldc 50000
130 | ldtimer
131 | sum
132 | tin
133 | ldl 6
134 | stl 2
135 | ldl 1
136 | stl 3
137 | ldc 0
138 | stl 4
139 | R3:
140 | ldl 4
141 | ldc 25
142 | diff
143 | cj R4
144 | ldc 0
145 | stl 5
146 | R1:
147 | ldl 5
148 | ldc 160
149 | diff
150 | cj R2
151 | ldl 2
152 | ldnl 0
153 | ldl 3
154 | ldnl 0
155 | diff
156 | eqc 0
157 | cj REF
158 | ldl 2
159 | ldnlp 1
160 | stl 2
161 | ldl 3
162 | ldnlp 1
163 | stl 3
164 | ldl 5
165 | ldnlp 1
166 | stl 5
167 | j R1
168 | R2:
169 | ldl 4
170 | adc 1
171 | stl 4
172 | j R3
173 |
174 | REF:
175 | mint
176 | ldnl SEMA
177 | cj REF1
178 | ldc 1000
179 | ldtimer
180 | sum
181 | tin
182 | j REF
183 | REF1:
184 | ldc 1
185 | mint
186 | stnl SEMA
187 | ldl 2
188 | ldl 5
189 | diff
190 | stl 2
191 | ldl 3
192 | ldl 5
193 | diff
194 | stl 3
195 | ldl 2
196 | ldl 3
197 | ldc 160
198 | move
199 | mint
200 | ldnlp 0
201 | ldc 0x30
202 | outbyte
203 | mint
204 | ldnlp 0
205 | ldc 0x34
206 | outbyte
207 | mint
208 | ldnlp 0
209 | ldl 4
210 | outbyte
211 | ldl 3
212 | ldc 160
213 | call ENVIO
214 | ldc 0
215 | mint
216 | stnl SEMA
217 | ldl 2
218 | adc 160
219 | stl 2
220 | ldl 3
221 | adc 160
222 | stl 3
223 | j R2
224 |
225 | ENTSAL:
226 | ajw -4
227 | E1:
228 | ldlp 0
229 | mint
230 | ldnlp SBAJ
231 | ldc 4
232 | in
233 | E2:
234 | mint
235 | ldnl SEMA
236 | cj E3
237 | ldc 1000
238 | ldtimer
239 | sum
240 | tin
241 | j E2
242 | E3:
243 | ldc 2
244 | mint
245 | stnl SEMA
246 | ldl 0
247 | lb
248 | stl 1
249 | ldl 1
250 | ldc 1
251 | diff
252 | cj LEESEC
253 | ldl 1
254 | ldc 2
255 | diff
256 | cj ESCSEC
257 | ldl 1
258 | ldc 3
259 | diff
260 | cj FORPIS
261 | ldl 1
262 | ldc 5
263 | diff
264 | cj CHETEC
265 | ldl 1
266 | ldc 6
267 | diff
268 | cj OBTHOR
269 | ldl 1
270 | ldc 7
271 | diff
272 | cj POSCUR
273 | ldl 1
274 | ldc 8
275 | diff
276 | cj FORCUR
277 | j E6
278 | E4:
279 | ldl 0
280 | ldl 1
281 | call ENVIO
282 | ldl 2
283 | cj E6
284 | ldl 0
285 | mint
286 | ldnlp 4
287 | ldl 2
288 | in
289 | E6:
290 | mint
291 | ldnlp EBAJ
292 | ldc 0
293 | outbyte
294 | ldc 0
295 | mint
296 | stnl SEMA
297 | j E1
298 |
299 | LEESEC:
300 | ldc 4
301 | stl 1
302 | ldc 513
303 | stl 2
304 | j E4
305 |
306 | ESCSEC:
307 | ldc 516
308 | stl 1
309 | ldc 1
310 | stl 2
311 | j E4
312 |
313 | FORPIS:
314 | ldc 3
315 | stl 1
316 | ldc 1
317 | stl 2
318 | j E4
319 |
320 | CHETEC:
321 | ldc 1
322 | stl 1
323 | ldc 1
324 | stl 2
325 | j E4
326 |
327 | OBTHOR:
328 | ldc 1
329 | stl 1
330 | ldc 6
331 | stl 2
332 | j E4
333 |
334 | POSCUR:
335 | ldc 3
336 | stl 1
337 | ldc 0
338 | stl 2
339 | j E4
340 |
341 | FORCUR:
342 | ldc 3
343 | stl 1
344 | ldc 0
345 | stl 2
346 | j E4
347 |
348 | ENVIO:
349 | ajw -1
350 | ENVIO3:
351 | ldl 2
352 | cj ENVIO2
353 | mint
354 | ldnlp 0
355 | ldl 3
356 | lb
357 | ldc 4
358 | shr
359 | adc 0x30
360 | outbyte
361 | mint
362 | ldnlp 0
363 | ldl 3
364 | lb
365 | ldc 15
366 | and
367 | adc 0x30
368 | outbyte
369 | ldl 3
370 | adc 1
371 | stl 3
372 | ldl 2
373 | adc -1
374 | stl 2
375 | j ENVIO3
376 | ENVIO2:
377 | ajw 1
378 | ret
379 |
380 | ;
381 | ; Ejecuta una secuencia de boot.
382 | ;
383 | ; Carga la pista 0, lado 0, sector 1.
384 | ;
385 |
386 | A_VIDEO: equ 68
387 | E_MAESTRO: equ 66
388 | S_MAESTRO: equ 67
389 |
390 | COMIENZO:
391 | ajw -144
392 | ARRANQUE2:
393 | ldc 0 ; Arranque.
394 | ldlp 16
395 | call LEESECTOR
396 | ldlp 16
397 | stl 0
398 | ldc FINPROG-F1
399 | ldpi
400 | F1:
401 | adc 15
402 | ldc 15
403 | not
404 | and
405 | stl 1
406 | ldlp 16
407 | ldc 510
408 | bsub
409 | lb
410 | eqc 0x12
411 | cj F4
412 | ldlp 16
413 | ldc 511
414 | bsub
415 | lb
416 | eqc 0x34
417 | cj F4
418 | ldlp 16
419 | ldl 1
420 | ldc 512
421 | move
422 | ldl 1
423 | ajw 144
424 | gcall
425 |
426 | F4:
427 | mint
428 | ldnl A_VIDEO
429 | ldc ERROR1-F6
430 | ldpi
431 | F6:
432 | call PONE
433 | call ETECLA
434 | j ARRANQUE2
435 |
436 | PONE:
437 | ldl 1
438 | lb
439 | cj PONE1
440 | ldl 1
441 | lb
442 | ldl 2
443 | sb
444 | ldl 1
445 | adc 1
446 | stl 1
447 | ldl 2
448 | adc 2
449 | stl 2
450 | j PONE
451 | PONE1:
452 | ret
453 |
454 | ETECLA:
455 | ajw -2
456 | ETECLA1:
457 | ldc 5
458 | stl 0
459 | ldlp 0
460 | stl 1
461 | ldlp 1
462 | mint
463 | ldnlp E_MAESTRO
464 | ldc 4
465 | out
466 | ldlp 1
467 | mint
468 | ldnlp S_MAESTRO
469 | ldc 1
470 | in
471 | ldl 0
472 | cj ETECLA1
473 | ajw 2
474 | ret
475 |
476 | LEESECTOR:
477 | ldl 1
478 | adc -1
479 | stl 1
480 | ldc 0x01
481 | ldl 1
482 | sb
483 | ldl 2
484 | ldc 36
485 | div
486 | ldl 1
487 | adc 1
488 | sb
489 | ldl 2
490 | ldc 18
491 | div
492 | ldc 2
493 | rem
494 | ldl 1
495 | adc 2
496 | sb
497 | ldl 2
498 | ldc 18
499 | rem
500 | adc 1
501 | ldl 1
502 | adc 3
503 | sb
504 | ldl 1
505 | stl 2
506 | ldlp 2
507 | mint
508 | ldnlp E_MAESTRO
509 | ldc 4
510 | out
511 | ldlp 2
512 | mint
513 | ldnlp S_MAESTRO
514 | ldc 1
515 | in
516 | ret
517 |
518 | ERROR1:
519 | db 'Inserte un disco '
520 | db 'con sistema '
521 | db 'operativo, '
522 | db 'y pulse una '
523 | db 'tecla...'
524 | db 0
525 |
526 | FINPROG:
527 |
--------------------------------------------------------------------------------
/os/MENSAJES.LEN:
--------------------------------------------------------------------------------
1 | ; 11-jul-1995
2 |
3 | ;
4 | ; Rutinas para mandar y recibir mensajes.
5 | ;
6 | ; mandar(canal, *mensaje, bytes)
7 | ;
8 | qmandar:
9 | ldl 3
10 | ldl 2
11 | ldl 4
12 | out
13 | ret
14 |
15 | ;
16 | ; recibir(canal, *mensaje, bytes)
17 | ;
18 | qrecibir:
19 | ldl 3
20 | ldl 2
21 | ldl 4
22 | in
23 | ret
24 |
25 | ;
26 | ; memcpy(destino, origen, bytes)
27 | ;
28 | qmemcpy:
29 | ldl 3
30 | ldl 2
31 | ldl 4
32 | move
33 | ret
34 |
35 | ;
36 | ; memset(destino, byte, cuantos)
37 | ;
38 | qmemset:
39 | ldl 4
40 | cj memset
41 | ldl 3
42 | ldl 2
43 | sb
44 | ldl 2
45 | adc 1
46 | stl 2
47 | ldl 4
48 | adc -1
49 | stl 4
50 | j qmemset
51 | memset:
52 | ret
53 |
54 | q_finprog:
55 | ldc FINPROG-P2
56 | ldpi
57 | P2:
58 | adc 15
59 | ldc -16
60 | and
61 | ret
62 |
63 | ;
64 | ; inicia_tarea(direccion, workspace, argc, argv)
65 | ;
66 | qinicia_tarea:
67 | ldl 4
68 | ldl 3
69 | stnl 1
70 | ldl 5
71 | ldl 3
72 | stnl 2
73 | ldl 2
74 | ldl 3
75 | stnl 0
76 | ldc MITAREA-P1
77 | ldl 3
78 | startp
79 | P1:
80 | ret
81 | MITAREA:
82 | ajw -4
83 | ldc 7
84 | ldpi
85 | stl 0
86 | ldl 5
87 | stl 2
88 | ldl 6
89 | stl 3
90 | ldl 4
91 | gcall
92 | stopp
93 |
94 | FINPROG:
95 |
--------------------------------------------------------------------------------
/os/MONITOR.C:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/MONITOR.C
--------------------------------------------------------------------------------
/os/SOM32.C:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/SOM32.C
--------------------------------------------------------------------------------
/os/STDIO.LEN:
--------------------------------------------------------------------------------
1 | ; 09-jun-1995
2 |
3 | ;
4 | ; Libreria de soporte para los programas escritos en C.
5 | ;
6 |
7 | qzexit:
8 | ldl 1
9 | ldnlp -4
10 | gajw
11 | ret
12 |
13 | qzgets:
14 | ldl 4
15 | stl 1
16 | ldl 1
17 | stl 2
18 | P2:
19 | call LEECANAL
20 | stl 3
21 | ldl 3
22 | eqc 8
23 | cj P1
24 | ldl 2
25 | ldl 1
26 | diff
27 | cj P2
28 | ldc 8
29 | call ESCRIBECANAL
30 | ldl 2
31 | adc -1
32 | stl 2
33 | j P2
34 | P1:
35 | ldl 3
36 | eqc 13
37 | cj P3
38 | ldc 0
39 | ldl 2
40 | sb
41 | ldc 13
42 | call ESCRIBECANAL
43 | ldc 10
44 | call ESCRIBECANAL
45 | ret
46 | P3:
47 | ldl 3
48 | call ESCRIBECANAL
49 | ldl 3
50 | ldl 2
51 | sb
52 | ldl 2
53 | adc 1
54 | stl 2
55 | j P2
56 |
57 | qzputchar:
58 | ldl 4
59 | call ESCRIBECANAL
60 | ret
61 |
62 | qzfopen:
63 | ldc 28
64 | call ESCRIBECANAL
65 | ldl 5
66 | call ESCRIBECADENA
67 | ldl 4
68 | call ESCRIBECADENA
69 | call LEECANALP
70 | ret
71 |
72 | qzfclose:
73 | ldc 29
74 | call ESCRIBECANAL
75 | ldl 4
76 | call ESCRIBECANAL
77 | call LEECANALP
78 | ret
79 |
80 | qzfputc:
81 | ldc 30
82 | call ESCRIBECANAL
83 | ldl 4
84 | call ESCRIBECANAL
85 | ldl 5
86 | call ESCRIBECANAL
87 | call LEECANALP
88 | ret
89 |
90 | qzfgetc:
91 | ldc 31
92 | call ESCRIBECANAL
93 | ldl 4
94 | call ESCRIBECANAL
95 | call LEECANALP
96 | ret
97 |
98 | ENTRADA: equ 0 ; Canal de entrada
99 | ; donde la terminal pone
100 | ; los datos del teclado.
101 | ;
102 | ; Poner 0-3, para los canales
103 | ; 0-3 respectivamente
104 |
105 | SALIDA: equ 0 ; Canal de salida
106 | ; donde la terminal recibe
107 | ; los datos para ilustrarlos.
108 | ;
109 | ; Poner 0-3, para los canales
110 | ; 0-3 respectivamente.
111 |
112 | ;
113 | ; Las siguientes definiciones
114 | ; no deben ser alteradas, pues
115 | ; indican la posicion local de
116 | ; los registros despues de una
117 | ; llamada.
118 | ;
119 | A: equ 1
120 | B: equ 2
121 | C: equ 3
122 |
123 | ; Obtencion de un caracter
124 | ; por el canal definido hacia el
125 | ; registro A.
126 | ;
127 | LEECANAL:
128 | ldc 0
129 | stl A
130 | ldlp A
131 | mint
132 | ldnlp ENTRADA+4
133 | ldc 1
134 | in
135 | ldl A
136 | ret
137 |
138 | ; Obtencion de una palabra
139 | ; por el canal definido hacia el
140 | ; registro A.
141 | ;
142 | LEECANALP:
143 | ldc 0
144 | stl A
145 | ldlp A
146 | mint
147 | ldnlp ENTRADA+4
148 | ldc 2
149 | in
150 | ldl A
151 | ldc 0x8000
152 | xword
153 | ret
154 |
155 | ; Envio de un caracter
156 | ; del registro A por el
157 | ; canal definido.
158 | ;
159 | ESCRIBECANAL:
160 | ldlp A
161 | mint
162 | ldnlp SALIDA
163 | ldc 1
164 | out
165 | ret
166 |
167 | ;
168 | ; Escribe una cadena terminada en 0
169 | ; en el canal de salida definido.
170 | ;
171 | ESCRIBECADENA:
172 | ldl 1
173 | lb
174 | call ESCRIBECANAL
175 | ldl 1
176 | lb
177 | ldl 1
178 | adc 1
179 | stl 1
180 | eqc 0
181 | cj ESCRIBECADENA
182 | ret
183 |
--------------------------------------------------------------------------------
/os/STDIO2.LEN:
--------------------------------------------------------------------------------
1 | ; 10-jun-1995
2 |
3 | ;
4 | ; Libreria de soporte para los programas escritos en C.
5 | ;
6 |
7 | q_llamada:
8 | ldl 2
9 | ajw -4
10 | ldc 2
11 | ldpi
12 | stl 0
13 | gcall
14 | ajw -3
15 | stl 0
16 | stl 1
17 | stl 2
18 | ldl 0
19 | ldl 6
20 | stnl 0
21 | ldl 1
22 | ldl 7
23 | stnl 0
24 | ldl 2
25 | ldl 8
26 | stnl 0
27 | ldlp 0
28 | ldl 9
29 | stnl 0
30 | ajw 3
31 | ret
32 |
33 | q_finprog:
34 | ldc FINPROG-P4
35 | ldpi
36 | P4:
37 | ret
38 |
39 | qexit:
40 | ldl 1
41 | ldnlp -4
42 | gajw
43 | ret
44 |
45 | qgetchar:
46 | call LEECANAL
47 | ret
48 |
49 | qputs:
50 | ldl 2
51 | call ESCRIBECAD2
52 | ret
53 |
54 | qgets:
55 | ldl 2
56 | stl 1
57 | ldl 1
58 | stl 2
59 | P2:
60 | call LEECANAL
61 | stl 3
62 | ldl 3
63 | eqc 8
64 | cj P1
65 | ldl 2
66 | ldl 1
67 | diff
68 | cj P2
69 | ldc 8
70 | call ESCRIBECANAL
71 | ldl 2
72 | adc -1
73 | stl 2
74 | j P2
75 | P1:
76 | ldl 3
77 | eqc 13
78 | cj P3
79 | ldc 0
80 | ldl 2
81 | sb
82 | ldc 13
83 | call ESCRIBECANAL
84 | ldc 10
85 | call ESCRIBECANAL
86 | ret
87 | P3:
88 | ldl 3
89 | call ESCRIBECANAL
90 | ldl 3
91 | ldl 2
92 | sb
93 | ldl 2
94 | adc 1
95 | stl 2
96 | j P2
97 |
98 | qputchar:
99 | ldl 2
100 | call ESCRIBECANAL
101 | ret
102 |
103 | qfopen:
104 | ldc 28
105 | call ESCRIBECANAL
106 | ldl 2
107 | call ESCRIBECADENA
108 | ldl 3
109 | call ESCRIBECADENA
110 | call LEECANALP
111 | ret
112 |
113 | qfclose:
114 | ldc 29
115 | call ESCRIBECANAL
116 | ldl 2
117 | call ESCRIBECANAL
118 | call LEECANALP
119 | ret
120 |
121 | qfputc:
122 | ldc 30
123 | call ESCRIBECANAL
124 | ldl 3
125 | call ESCRIBECANAL
126 | ldl 2
127 | call ESCRIBECANAL
128 | call LEECANALP
129 | ret
130 |
131 | qfgetc:
132 | ldc 31
133 | call ESCRIBECANAL
134 | ldl 2
135 | call ESCRIBECANAL
136 | call LEECANALP
137 | ret
138 |
139 | ENTRADA: equ 0 ; Canal de entrada
140 | ; donde la terminal pone
141 | ; los datos del teclado.
142 | ;
143 | ; Poner 0-3, para los canales
144 | ; 0-3 respectivamente
145 |
146 | SALIDA: equ 0 ; Canal de salida
147 | ; donde la terminal recibe
148 | ; los datos para ilustrarlos.
149 | ;
150 | ; Poner 0-3, para los canales
151 | ; 0-3 respectivamente.
152 |
153 | ;
154 | ; Las siguientes definiciones
155 | ; no deben ser alteradas, pues
156 | ; indican la posicion local de
157 | ; los registros despues de una
158 | ; llamada.
159 | ;
160 | A: equ 1
161 | B: equ 2
162 | C: equ 3
163 |
164 | ; Obtencion de un caracter
165 | ; por el canal definido hacia el
166 | ; registro A.
167 | ;
168 | LEECANAL:
169 | ldc 0
170 | stl A
171 | ldlp A
172 | mint
173 | ldnlp ENTRADA+4
174 | ldc 1
175 | in
176 | ldl A
177 | ret
178 |
179 | ; Obtencion de una palabra
180 | ; por el canal definido hacia el
181 | ; registro A.
182 | ;
183 | LEECANALP:
184 | ldc 0
185 | stl A
186 | ldlp A
187 | mint
188 | ldnlp ENTRADA+4
189 | ldc 2
190 | in
191 | ldl A
192 | ldc 0x8000
193 | xword
194 | ret
195 |
196 | ; Envio de un caracter
197 | ; del registro A por el
198 | ; canal definido.
199 | ;
200 | ESCRIBECANAL:
201 | ldlp A
202 | mint
203 | ldnlp SALIDA
204 | ldc 1
205 | out
206 | ret
207 |
208 | ;
209 | ; Escribe una cadena terminada en 0
210 | ; en el canal de salida definido.
211 | ;
212 | ESCRIBECADENA:
213 | ldl 1
214 | lb
215 | call ESCRIBECANAL
216 | ldl 1
217 | lb
218 | ldl 1
219 | adc 1
220 | stl 1
221 | eqc 0
222 | cj ESCRIBECADENA
223 | ret
224 |
225 | ;
226 | ; Escribe una cadena terminada en 0
227 | ; en el canal de salida definido.
228 | ;
229 | ESCRIBECAD2:
230 | ldl 1
231 | lb
232 | cj ESCRIBECAD3
233 | ldl 1
234 | lb
235 | call ESCRIBECANAL
236 | ldl 1
237 | adc 1
238 | stl 1
239 | j ESCRIBECAD2
240 | ESCRIBECAD3:
241 | ret
242 |
243 | FINPROG:
244 |
--------------------------------------------------------------------------------
/os/STDIO3.LEN:
--------------------------------------------------------------------------------
1 | ; 15-jun-1995
2 |
3 | ;
4 | ; Libreria de soporte para los programas escritos en C.
5 | ;
6 |
7 | q_llamada:
8 | ldl 2
9 | ajw -4
10 | ldc 2
11 | ldpi
12 | stl 0
13 | gcall
14 | ajw -3
15 | stl 0
16 | stl 1
17 | stl 2
18 | ldl 0
19 | ldl 6
20 | stnl 0
21 | ldl 1
22 | ldl 7
23 | stnl 0
24 | ldl 2
25 | ldl 8
26 | stnl 0
27 | ldlp 0
28 | ldl 9
29 | stnl 0
30 | ajw 3
31 | ret
32 |
33 | q_finprog:
34 | ldc FINPROG-P4
35 | ldpi
36 | P4:
37 | ret
38 |
39 | qexit:
40 | ldl 1
41 | ldnlp -4
42 | gajw
43 | ret
44 |
45 | qgetchar:
46 | ldc 5
47 | stl 1
48 | ldlp 1
49 | call EMENSAJE
50 | stl 1
51 | ldl 1
52 | cj qgetchar
53 | ldl 1
54 | ret
55 |
56 | qputs:
57 | ldl 2
58 | lb
59 | cj puts
60 | ldl 2
61 | lb
62 | ldl 1
63 | call qputchar
64 | ldl 2
65 | adc 1
66 | stl 2
67 | j qputs
68 | puts:
69 | ret
70 |
71 | qgets:
72 | ldl 2
73 | stl 1
74 | ldl 1
75 | stl 2
76 | P2:
77 | call qgetchar
78 | stl 3
79 | ldl 3
80 | eqc 8
81 | cj P1
82 | ldl 2
83 | ldl 1
84 | diff
85 | cj P2
86 | ldc 8
87 | ldc 0
88 | call qputchar
89 | ldl 2
90 | adc -1
91 | stl 2
92 | j P2
93 | P1:
94 | ldl 3
95 | eqc 13
96 | cj P3
97 | ldc 0
98 | ldl 2
99 | sb
100 | ldc 13
101 | ldc 0
102 | call qputchar
103 | ldc 10
104 | ldc 0
105 | call qputchar
106 | ret
107 | P3:
108 | ldl 3
109 | ldc 0
110 | call qputchar
111 | ldl 3
112 | ldl 2
113 | sb
114 | ldl 2
115 | adc 1
116 | stl 2
117 | j P2
118 |
119 | qputchar:
120 | ldc 6
121 | ldlp 1
122 | sb
123 | ldl 2
124 | ldlp 1
125 | adc 1
126 | sb
127 | ldlp 1
128 | call EMENSAJE
129 | ret
130 |
131 | qfopen:
132 | ajw -16
133 | ldlp 2
134 | adc 1
135 | stl 1
136 | ldc 1
137 | ldlp 2
138 | sb
139 | fopen1:
140 | ldl 18
141 | lb
142 | dup
143 | ldl 1
144 | sb
145 | ldl 18
146 | adc 1
147 | stl 18
148 | ldl 1
149 | adc 1
150 | stl 1
151 | eqc 0
152 | cj fopen1
153 | fopen2:
154 | ldl 19
155 | lb
156 | dup
157 | ldl 1
158 | sb
159 | ldl 19
160 | adc 1
161 | stl 19
162 | ldl 1
163 | adc 1
164 | stl 1
165 | eqc 0
166 | cj fopen2
167 | ldlp 2
168 | call EMENSAJE
169 | ajw 16
170 | ret
171 |
172 | qfclose:
173 | ldc 2
174 | ldlp 1
175 | sb
176 | ldl 2
177 | ldlp 1
178 | adc 1
179 | sb
180 | ldlp 1
181 | call EMENSAJE
182 | ret
183 |
184 | qfputc:
185 | ldc 4
186 | ldlp 1
187 | sb
188 | ldl 2
189 | ldlp 1
190 | adc 1
191 | sb
192 | ldl 3
193 | ldlp 1
194 | adc 2
195 | sb
196 | ldlp 1
197 | call EMENSAJE
198 | ret
199 |
200 | qfgetc:
201 | ldc 3
202 | ldlp 1
203 | sb
204 | ldl 2
205 | ldlp 1
206 | adc 1
207 | sb
208 | ldlp 1
209 | call EMENSAJE
210 | ret
211 |
212 | EMENSAJE:
213 | ajw -1
214 | mint
215 | ldnlp 64
216 | ldl 2
217 | outword
218 | ldc 0
219 | stl 2
220 | ldlp 2
221 | mint
222 | ldnlp 65
223 | ldc 2
224 | in
225 | ldl 2
226 | ldc 0x8000
227 | xword
228 | ajw 1
229 | ret
230 |
231 | ;
232 | ; Rutinas para mandar y recibir mensajes.
233 | ;
234 | ; mandar(canal, *mensaje, bytes)
235 | ;
236 | qmandar:
237 | ldl 3
238 | ldl 2
239 | ldl 4
240 | out
241 | ret
242 |
243 | ;
244 | ; recibir(canal, *mensaje, bytes)
245 | ;
246 | qrecibir:
247 | ldl 3
248 | ldl 2
249 | ldl 4
250 | in
251 | ret
252 |
253 | ;
254 | ; memcpy(destino, origen, bytes)
255 | ;
256 | qmemcpy:
257 | ldl 3
258 | ldl 2
259 | ldl 4
260 | move
261 | ret
262 |
263 | ;
264 | ; memset(destino, byte, cuantos)
265 | ;
266 | qmemset:
267 | ldl 4
268 | cj memset
269 | ldl 3
270 | ldl 2
271 | sb
272 | ldl 2
273 | adc 1
274 | stl 2
275 | ldl 4
276 | adc -1
277 | stl 4
278 | j qmemset
279 | memset:
280 | ret
281 |
282 | FINPROG:
283 |
--------------------------------------------------------------------------------
/os/TC.C:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/TC.C
--------------------------------------------------------------------------------
/os/TC.CMG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/TC.CMG
--------------------------------------------------------------------------------
/os/TC2.C:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/TC2.C
--------------------------------------------------------------------------------
/os/TC2.CMG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/TC2.CMG
--------------------------------------------------------------------------------
/os/assemble_os.sh:
--------------------------------------------------------------------------------
1 | ../tasm MAESTRO.LEN MAESTRO.CMG
2 | ../tasm ARRANQUE.LEN ARRANQUE.CMG
3 | ../tasm som32.len som32.bin MENSAJES.LEN
4 | ../tasm interfaz.len interfaz.cmg STDIO3.LEN
5 | ../tasm ensg10.len ensg10.cmg STDIO3.LEN
6 | ../tasm editor.len editor.cmg STDIO3.LEN
7 | ../tasm cc.len cc.cmg STDIO3.LEN
8 | ../tasm monitor.len monitor.cmg STDIO3.LEN
9 |
10 |
--------------------------------------------------------------------------------
/os/bin2c.c:
--------------------------------------------------------------------------------
1 | /*
2 | ** Convert binary to C format
3 | **
4 | ** by Oscar Toledo G.
5 | **
6 | ** Creation date: Mar/05/2025.
7 | */
8 |
9 | #include
10 | #include
11 | #include
12 |
13 | char base64_encode[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
14 |
15 | /*
16 | ** Main program
17 | */
18 | int main(int argc, char *argv[])
19 | {
20 | FILE *input;
21 | FILE *output;
22 | int c;
23 | int num;
24 | int decimal;
25 | int spaces;
26 | int maximum_bytes;
27 | int javascript;
28 | int base64;
29 |
30 | decimal = 0;
31 | spaces = 0;
32 | maximum_bytes = -1;
33 | javascript = 0;
34 | base64 = 0;
35 | if (argc < 3) {
36 | fprintf(stderr, "Usage: bin2c [options] input.bin output.c [name]\n");
37 | fprintf(stderr, " -d Use decimal for numbers.\n");
38 | fprintf(stderr, " -l value Maximum of bytes read from input file.\n");
39 | fprintf(stderr, " -s Remove spaces from output file.\n");
40 | fprintf(stderr, " -j Generate array for Javascript.\n");
41 | fprintf(stderr, " -b Generate base64 string for Javascript.\n");
42 | exit(1);
43 | }
44 | while (c < argc && argv[c][0] == '-') {
45 | if (toupper(argv[c][1]) == 'D') {
46 | decimal = 1;
47 | } else if (toupper(argv[c][1]) == 'L') {
48 | c++;
49 | if (c >= argc) {
50 | fprintf(stderr, "Wrong argument for -l\n");
51 | exit(1);
52 | }
53 | maximum_bytes = atoi(argv[c]);
54 | } else if (toupper(argv[c][1]) == 'S') {
55 | spaces = 1;
56 | } else if (toupper(argv[c][1]) == 'J') {
57 | javascript = 1;
58 | } else if (toupper(argv[c][1]) == 'B') {
59 | base64 = 1;
60 | } else {
61 | fprintf(stderr, "Wrong argument %s\n", argv[c]);
62 | exit(1);
63 | }
64 | c++;
65 | }
66 | if (c >= argc) {
67 | fprintf(stderr, "Missing input file\n");
68 | exit(1);
69 | }
70 | input = fopen(argv[c], "rb");
71 | if (input == NULL) {
72 | fprintf(stderr, "Couldn't open '%s' for input.\n", argv[c]);
73 | exit(1);
74 | }
75 | c++;
76 | if (c >= argc) {
77 | fprintf(stderr, "Missing output file\n");
78 | exit(1);
79 | }
80 | output = fopen(argv[c], "w");
81 | if (output == NULL) {
82 | fprintf(stderr, "Couldn't open '%s' for output.\n", argv[c]);
83 | exit(1);
84 | }
85 | c++;
86 | if (javascript && base64) {
87 | fprintf(output, "var %s = \"", c >= argc ? "binary" : argv[c]);
88 | while (1) {
89 | if (maximum_bytes == 0)
90 | break;
91 | c = fgetc(input);
92 | if (c == EOF) {
93 | break;
94 | }
95 | if (maximum_bytes != -1 && maximum_bytes != 0)
96 | maximum_bytes--;
97 | num = (c & 0xff) << 16;
98 | c = fgetc(input);
99 | if (c == EOF) {
100 | c = 0;
101 | }
102 | if (maximum_bytes != -1 && maximum_bytes != 0)
103 | maximum_bytes--;
104 | num |= (c & 0xff) << 8;
105 | c = fgetc(input);
106 | if (c == EOF) {
107 | c = 0;
108 | }
109 | if (maximum_bytes != -1 && maximum_bytes != 0)
110 | maximum_bytes--;
111 | num |= (c & 0xff);
112 | fputc(base64_encode[(num >> 18) & 0x3f], output);
113 | fputc(base64_encode[(num >> 12) & 0x3f], output);
114 | fputc(base64_encode[(num >> 6) & 0x3f], output);
115 | fputc(base64_encode[num & 0x3f], output);
116 | }
117 | fprintf(output, "\";\n");
118 | } else {
119 | if (base64) {
120 | fprintf(stderr, "base64 isn't supported for C language\n");
121 | exit(1);
122 | }
123 | if (javascript) {
124 | fprintf(output, "var %s = [\n", c >= argc ? "binary" : argv[c]);
125 | } else {
126 | fprintf(output, "unsigned char %s[] = {\n", c >= argc ? "binary" : argv[c]);
127 | }
128 | num = 0;
129 | while (1) {
130 | c = fgetc(input);
131 | if (c == EOF || maximum_bytes != -1 && maximum_bytes-- == 0) {
132 | if ((num & 7) != 0)
133 | fprintf(output, "\n");
134 | break;
135 | }
136 | if ((num & 7) == 0) {
137 | if (spaces) {
138 | /* Nothing */
139 | } else {
140 | fprintf(output, "\t");
141 | }
142 | }
143 | if (spaces) {
144 | if (decimal)
145 | fprintf(output, "%d,", c);
146 | else
147 | fprintf(output, "0x%02x,", c);
148 | } else {
149 | if (decimal)
150 | fprintf(output, "%d, ", c);
151 | else
152 | fprintf(output, "0x%02x, ", c);
153 | }
154 | if ((num & 7) == 7)
155 | fprintf(output, "\n");
156 | num++;
157 | }
158 | if (javascript)
159 | fprintf(output, "];\n");
160 | else
161 | fprintf(output, "};\n");
162 | }
163 | fclose(output);
164 | fclose(input);
165 | exit(0);
166 | }
167 |
168 |
--------------------------------------------------------------------------------
/os/build_disk.sh:
--------------------------------------------------------------------------------
1 | ./buildboot disk.img ARRANQUE.CMG som32.bin interfaz.cmg cc.cmg INTERFAZ.C EDITOR.C TC2.C ENSG10.C editor.cmg ensg10.cmg monitor.cmg STDIO3.LEN
2 |
--------------------------------------------------------------------------------
/os/cc.cmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/cc.cmg
--------------------------------------------------------------------------------
/os/cc.len:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/cc.len
--------------------------------------------------------------------------------
/os/disk.img:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/disk.img
--------------------------------------------------------------------------------
/os/editor.cmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/editor.cmg
--------------------------------------------------------------------------------
/os/editor.len:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/editor.len
--------------------------------------------------------------------------------
/os/interfaz.cmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/interfaz.cmg
--------------------------------------------------------------------------------
/os/monitor.cmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/monitor.cmg
--------------------------------------------------------------------------------
/os/run_os.sh:
--------------------------------------------------------------------------------
1 | ../tem -os maestro.cmg disk.img
2 |
3 |
--------------------------------------------------------------------------------
/os/som32.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/som32.bin
--------------------------------------------------------------------------------
/os/som32.len:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/som32.len
--------------------------------------------------------------------------------
/os/tc.sh:
--------------------------------------------------------------------------------
1 | ../tem -cc tc2.cmg
2 |
3 |
--------------------------------------------------------------------------------
/os/tc2.len:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os/tc2.len
--------------------------------------------------------------------------------
/os_final/MAESTRO.CMG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/MAESTRO.CMG
--------------------------------------------------------------------------------
/os_final/MAESTRO.LEN:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/MAESTRO.LEN
--------------------------------------------------------------------------------
/os_final/build_f1.sh:
--------------------------------------------------------------------------------
1 | ../transputer/os/buildboot -fd -v2 floppy.img . tree/SOM.32.bin tree/Halt.p tree/Interfaz.p tree/Editor.p tree/CC.p tree/Ens.p tree/Ejecutable.p tree/Info.p tree/C/CC.c tree/C/CCanasin.c tree/C/CCexpr.c tree/C/CCgencod.c tree/C/CCinter.c tree/C/CCvarios.c tree/C/CCvars.c tree/C/Checar.c tree/C/Compara.c tree/C/Concat.c tree/C/Conjunto.c tree/C/Copiador.c tree/C/CPC.c tree/C/DARC.c tree/C/Divide.c tree/C/DZIP.c tree/C/Editor.c tree/C/Efem.c tree/C/Ejecutable.c tree/C/Ens.c tree/C/Explode.c tree/C/Filtro.c tree/C/GZIP.C tree/C/Hora.c tree/C/Inflate.c tree/C/Info.c tree/C/Interfaz.c tree/C/Libro.c tree/C/Monitor.c tree/C/Prepara.c tree/C/Semana_santa.c tree/C/Som32.c tree/C/TAR.c tree/C/Unreduce.c tree/C/Unshrink.c tree/C/Vaciado.c tree/lib/E.len tree/lib/Graf.len tree/lib/MAT.len tree/lib/Mensajes.len tree/lib/Stdio.len
2 |
3 |
--------------------------------------------------------------------------------
/os_final/build_f2.sh:
--------------------------------------------------------------------------------
1 | ../transputer/os/buildboot -fd -v2 floppy.img . tree/SOM.32.bin tree/Halt.p tree/Desarrollo/Ajedrez.c tree/Desarrollo/Reloj.c tree/Desarrollo/Tetris.c tree/C/Modelado.c tree/C/M3D.c tree/Dibujo_3D/* tree/Documentos/Archivo.doc tree/Documentos/Detalles.doc tree/Documentos/Ens.doc tree/Documentos/Peticiones.doc tree/Documentos/Programas.doc tree/Documentos/Servicios.doc tree/Documentos/Trabajo.doc tree/Documentos/Transputer.doc
--------------------------------------------------------------------------------
/os_final/build_hd.sh:
--------------------------------------------------------------------------------
1 | ../transputer/os/buildboot -hd -v2 harddisk.img . tree/Interfaz.p
2 |
3 |
--------------------------------------------------------------------------------
/os_final/build_js.sh:
--------------------------------------------------------------------------------
1 | ../os/bin2c -d -s -l 3293184 -j -b harddisk.img harddisk.js harddisk_image
2 | ../os/bin2c -d -s -l 16384 -j -b floppy.img floppy.js floppy_image
3 |
--------------------------------------------------------------------------------
/os_final/extractimage.c:
--------------------------------------------------------------------------------
1 | /*
2 | ** Extract all the files from a SOM32 drive
3 | **
4 | ** (c) Copyright 2025 Oscar Toledo G.
5 | **
6 | ** Creation date: Mar/12/2025.
7 | */
8 |
9 | #include
10 | #include
11 | #include
12 |
13 | #include /* POSIX */
14 |
15 | #define SECTOR_SIZE 512
16 |
17 | char path[4096];
18 |
19 | unsigned char boot[512];
20 | unsigned char *fat;
21 |
22 | int sectors_per_block;
23 | int max_blocks;
24 | int fat_sector;
25 | int fat_size;
26 | int fat_entry;
27 |
28 | void extract_directory(char *, int);
29 |
30 | #define read_32(addr) ((addr)[0] | ((addr)[1] << 8) | ((addr)[2] << 16) | ((addr)[3] << 24))
31 |
32 | FILE *input;
33 |
34 | /*
35 | ** Main program
36 | */
37 | int main(int argc, char *argv[])
38 | {
39 |
40 | if (argc != 2) {
41 | fprintf(stderr, "Usage: extractimage harddisk.img\n");
42 | exit(1);
43 | }
44 | input = fopen(argv[1], "rb");
45 | if (input == NULL) {
46 | fprintf(stderr, "Couldn't open '%s' for input\n", argv[1]);
47 | exit(1);
48 | }
49 | fread(boot, 1, 512, input);
50 | if (boot[510] != 0x12 && boot[511] != 0x34) {
51 | fprintf(stderr, "Not a disk with SOM32 format\n");
52 | exit(1);
53 | }
54 | sectors_per_block = read_32(boot + 24);
55 | max_blocks = read_32(boot + 28);
56 | fat_sector = read_32(boot + 32);
57 | fat_size = read_32(boot + 36);
58 | fat_entry = read_32(boot + 40);
59 | fat = malloc(fat_size * SECTOR_SIZE);
60 | if (fat == NULL) {
61 | fprintf(stderr, "Couldn't allocate FAT\n");
62 | exit(1);
63 | }
64 | fseek(input, fat_sector * SECTOR_SIZE, SEEK_SET);
65 | fread(fat, 1, fat_size * SECTOR_SIZE, input);
66 | extract_directory(path, read_32(boot + 44));
67 | free(fat);
68 | fclose(input);
69 | exit(0);
70 | }
71 |
72 | /*
73 | ** Read FAT
74 | */
75 | int read_fat(int block)
76 | {
77 | if (fat_entry == 1)
78 | return fat[block];
79 | return fat[block * 2] | (fat[block * 2 + 1] << 8);
80 | }
81 |
82 | /*
83 | ** Extract directory
84 | */
85 | void extract_directory(char *subpath, int block)
86 | {
87 | unsigned char *dir;
88 | unsigned char *entry;
89 | unsigned char *buffer;
90 | int file_block;
91 | int file_size;
92 | int remaining;
93 | FILE *output;
94 |
95 | dir = malloc(sectors_per_block * SECTOR_SIZE * 2);
96 | if (dir == NULL) {
97 | fprintf(stderr, "Couldn't allocate directory block\n");
98 | exit(1);
99 | }
100 | buffer = dir + sectors_per_block * SECTOR_SIZE;
101 | while (1) {
102 | fseek(input, block * sectors_per_block * SECTOR_SIZE, SEEK_SET);
103 | fread(dir, 1, sectors_per_block * SECTOR_SIZE, input);
104 | entry = dir;
105 | do {
106 | if (entry[0] == 0) {
107 | free(dir);
108 | return;
109 | }
110 | if (entry[0] != 0x80) { /* Not deleted */
111 | strcpy(subpath, (char *) entry);
112 | if (entry[48] & 0x08) { /* Subdirectory */
113 | mkdir(path, 0744);
114 | strcat(subpath, "/");
115 | fprintf(stderr, "%s\n", path);
116 | extract_directory(path + strlen(path), read_32(entry + 56));
117 | } else {
118 | file_block = read_32(entry + 56);
119 | file_size = read_32(entry + 60);
120 | fprintf(stderr, "%s (%d bytes)...\n", path, file_size);
121 | output = fopen(path, "wb");
122 | if (output != NULL) {
123 | while (file_size) {
124 | remaining = (file_size > sectors_per_block * SECTOR_SIZE) ? sectors_per_block * SECTOR_SIZE : file_size;
125 | fseek(input, file_block * sectors_per_block * SECTOR_SIZE, SEEK_SET);
126 | fread(buffer, 1, remaining, input);
127 | fwrite(buffer, 1, remaining, output);
128 | file_block = read_fat(file_block);
129 | if (file_block == 0xffffffff)
130 | break;
131 | file_size -= remaining;
132 | }
133 | fclose(output);
134 | }
135 | }
136 | }
137 | entry += 64;
138 | } while (entry < dir + sectors_per_block * SECTOR_SIZE) ;
139 | block = read_fat(block);
140 | if (block == 0xffffffff)
141 | break;
142 | }
143 | free(dir);
144 | }
145 |
146 |
--------------------------------------------------------------------------------
/os_final/floppy.img:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/floppy.img
--------------------------------------------------------------------------------
/os_final/harddisk.img:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/harddisk.img
--------------------------------------------------------------------------------
/os_final/run_os_v2.sh:
--------------------------------------------------------------------------------
1 | ../tem -os2 maestro.cmg floppy.img harddisk.img
2 |
3 |
--------------------------------------------------------------------------------
/os_final/tree/Checar.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Checar.p
--------------------------------------------------------------------------------
/os_final/tree/Compara.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Compara.p
--------------------------------------------------------------------------------
/os_final/tree/Conjunto.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Conjunto.p
--------------------------------------------------------------------------------
/os_final/tree/DARC.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/DARC.p
--------------------------------------------------------------------------------
/os_final/tree/DZIP.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/DZIP.p
--------------------------------------------------------------------------------
/os_final/tree/Desarrollo/Ajedrez.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Desarrollo/Ajedrez.c
--------------------------------------------------------------------------------
/os_final/tree/Desarrollo/Ajedrez.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Desarrollo/Ajedrez.p
--------------------------------------------------------------------------------
/os_final/tree/Desarrollo/Reloj.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Desarrollo/Reloj.c
--------------------------------------------------------------------------------
/os_final/tree/Desarrollo/Reloj.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Desarrollo/Reloj.p
--------------------------------------------------------------------------------
/os_final/tree/Desarrollo/Tetris.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Desarrollo/Tetris.c
--------------------------------------------------------------------------------
/os_final/tree/Desarrollo/Tetris.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Desarrollo/Tetris.p
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Animacion_tetera:
--------------------------------------------------------------------------------
1 | 36 640 480 2
2 |
3 | 1 0 0 500 500
4 | 200 40
5 | 100 30
6 |
7 | 1
8 |
9 | 1
10 | C:/Dibujo_3D/Utah.teapot
11 | 0
12 | 0.1 0.1 0.1
13 | 1.0 0.85 0.6
14 | 0.5 0.5 0.4
15 | 10
16 | 40.0 40.0 40.0
17 | 0.0 0.0 0.0
18 | 0.0 0.0 0.0
19 |
20 | 1 0 0 500 500
21 | 200 40
22 | 100 30
23 |
24 | 1
25 |
26 | 1
27 | C:/Dibujo_3D/Utah.teapot
28 | 0
29 | 0.1 0.1 0.1
30 | 1.0 0.85 0.6
31 | 0.5 0.5 0.4
32 | 10
33 | 40.0 40.0 40.0
34 | 10.0 0.0 0.0
35 | 0.0 0.0 0.0
36 |
37 | 1 0 0 500 500
38 | 200 40
39 | 100 30
40 |
41 | 1
42 |
43 | 1
44 | C:/Dibujo_3D/Utah.teapot
45 | 0
46 | 0.1 0.1 0.1
47 | 1.0 0.85 0.6
48 | 0.5 0.5 0.4
49 | 10
50 | 40.0 40.0 40.0
51 | 20.0 0.0 0.0
52 | 0.0 0.0 0.0
53 |
54 | 1 0 0 500 500
55 | 200 40
56 | 100 30
57 |
58 | 1
59 |
60 | 1
61 | C:/Dibujo_3D/Utah.teapot
62 | 0
63 | 0.1 0.1 0.1
64 | 1.0 0.85 0.6
65 | 0.5 0.5 0.4
66 | 10
67 | 40.0 40.0 40.0
68 | 30.0 0.0 0.0
69 | 0.0 0.0 0.0
70 |
71 | 1 0 0 500 500
72 | 200 40
73 | 100 30
74 |
75 | 1
76 |
77 | 1
78 | C:/Dibujo_3D/Utah.teapot
79 | 0
80 | 0.1 0.1 0.1
81 | 1.0 0.85 0.6
82 | 0.5 0.5 0.4
83 | 10
84 | 40.0 40.0 40.0
85 | 40.0 0.0 0.0
86 | 0.0 0.0 0.0
87 |
88 | 1 0 0 500 500
89 | 200 40
90 | 100 30
91 |
92 | 1
93 |
94 | 1
95 | C:/Dibujo_3D/Utah.teapot
96 | 0
97 | 0.1 0.1 0.1
98 | 1.0 0.85 0.6
99 | 0.5 0.5 0.4
100 | 10
101 | 40.0 40.0 40.0
102 | 50.0 0.0 0.0
103 | 0.0 0.0 0.0
104 |
105 | 1 0 0 500 500
106 | 200 40
107 | 100 30
108 |
109 | 1
110 |
111 | 1
112 | C:/Dibujo_3D/Utah.teapot
113 | 0
114 | 0.1 0.1 0.1
115 | 1.0 0.85 0.6
116 | 0.5 0.5 0.4
117 | 10
118 | 40.0 40.0 40.0
119 | 60.0 0.0 0.0
120 | 0.0 0.0 0.0
121 |
122 | 1 0 0 500 500
123 | 200 40
124 | 100 30
125 |
126 | 1
127 |
128 | 1
129 | C:/Dibujo_3D/Utah.teapot
130 | 0
131 | 0.1 0.1 0.1
132 | 1.0 0.85 0.6
133 | 0.5 0.5 0.4
134 | 10
135 | 40.0 40.0 40.0
136 | 70.0 0.0 0.0
137 | 0.0 0.0 0.0
138 |
139 | 1 0 0 500 500
140 | 200 40
141 | 100 30
142 |
143 | 1
144 |
145 | 1
146 | C:/Dibujo_3D/Utah.teapot
147 | 0
148 | 0.1 0.1 0.1
149 | 1.0 0.85 0.6
150 | 0.5 0.5 0.4
151 | 10
152 | 40.0 40.0 40.0
153 | 80.0 0.0 0.0
154 | 0.0 0.0 0.0
155 |
156 | 1 0 0 500 500
157 | 200 40
158 | 100 30
159 |
160 | 1
161 |
162 | 1
163 | C:/Dibujo_3D/Utah.teapot
164 | 0
165 | 0.1 0.1 0.1
166 | 1.0 0.85 0.6
167 | 0.5 0.5 0.4
168 | 10
169 | 40.0 40.0 40.0
170 | 90.0 0.0 0.0
171 | 0.0 0.0 0.0
172 |
173 | 1 0 0 500 500
174 | 200 40
175 | 100 30
176 |
177 | 1
178 |
179 | 1
180 | C:/Dibujo_3D/Utah.teapot
181 | 0
182 | 0.1 0.1 0.1
183 | 1.0 0.85 0.6
184 | 0.5 0.5 0.4
185 | 10
186 | 40.0 40.0 40.0
187 | 100.0 0.0 0.0
188 | 0.0 0.0 0.0
189 |
190 | 1 0 0 500 500
191 | 200 40
192 | 100 30
193 |
194 | 1
195 |
196 | 1
197 | C:/Dibujo_3D/Utah.teapot
198 | 0
199 | 0.1 0.1 0.1
200 | 1.0 0.85 0.6
201 | 0.5 0.5 0.4
202 | 10
203 | 40.0 40.0 40.0
204 | 110.0 0.0 0.0
205 | 0.0 0.0 0.0
206 |
207 | 1 0 0 500 500
208 | 200 40
209 | 100 30
210 |
211 | 1
212 |
213 | 1
214 | C:/Dibujo_3D/Utah.teapot
215 | 0
216 | 0.1 0.1 0.1
217 | 1.0 0.85 0.6
218 | 0.5 0.5 0.4
219 | 10
220 | 40.0 40.0 40.0
221 | 120.0 0.0 0.0
222 | 0.0 0.0 0.0
223 |
224 | 1 0 0 500 500
225 | 200 40
226 | 100 30
227 |
228 | 1
229 |
230 | 1
231 | C:/Dibujo_3D/Utah.teapot
232 | 0
233 | 0.1 0.1 0.1
234 | 1.0 0.85 0.6
235 | 0.5 0.5 0.4
236 | 10
237 | 40.0 40.0 40.0
238 | 130.0 0.0 0.0
239 | 0.0 0.0 0.0
240 |
241 | 1 0 0 500 500
242 | 200 40
243 | 100 30
244 |
245 | 1
246 |
247 | 1
248 | C:/Dibujo_3D/Utah.teapot
249 | 0
250 | 0.1 0.1 0.1
251 | 1.0 0.85 0.6
252 | 0.5 0.5 0.4
253 | 10
254 | 40.0 40.0 40.0
255 | 140.0 0.0 0.0
256 | 0.0 0.0 0.0
257 |
258 | 1 0 0 500 500
259 | 200 40
260 | 100 30
261 |
262 | 1
263 |
264 | 1
265 | C:/Dibujo_3D/Utah.teapot
266 | 0
267 | 0.1 0.1 0.1
268 | 1.0 0.85 0.6
269 | 0.5 0.5 0.4
270 | 10
271 | 40.0 40.0 40.0
272 | 150.0 0.0 0.0
273 | 0.0 0.0 0.0
274 |
275 | 1 0 0 500 500
276 | 200 40
277 | 100 30
278 |
279 | 1
280 |
281 | 1
282 | C:/Dibujo_3D/Utah.teapot
283 | 0
284 | 0.1 0.1 0.1
285 | 1.0 0.85 0.6
286 | 0.5 0.5 0.4
287 | 10
288 | 40.0 40.0 40.0
289 | 160.0 0.0 0.0
290 | 0.0 0.0 0.0
291 |
292 | 1 0 0 500 500
293 | 200 40
294 | 100 30
295 |
296 | 1
297 |
298 | 1
299 | C:/Dibujo_3D/Utah.teapot
300 | 0
301 | 0.1 0.1 0.1
302 | 1.0 0.85 0.6
303 | 0.5 0.5 0.4
304 | 10
305 | 40.0 40.0 40.0
306 | 170.0 0.0 0.0
307 | 0.0 0.0 0.0
308 |
309 | 1 0 0 500 500
310 | 200 40
311 | 100 30
312 |
313 | 1
314 |
315 | 1
316 | C:/Dibujo_3D/Utah.teapot
317 | 0
318 | 0.1 0.1 0.1
319 | 1.0 0.85 0.6
320 | 0.5 0.5 0.4
321 | 10
322 | 40.0 40.0 40.0
323 | 180.0 0.0 0.0
324 | 0.0 0.0 0.0
325 |
326 | 1 0 0 500 500
327 | 200 40
328 | 100 30
329 |
330 | 1
331 |
332 | 1
333 | C:/Dibujo_3D/Utah.teapot
334 | 0
335 | 0.1 0.1 0.1
336 | 1.0 0.85 0.6
337 | 0.5 0.5 0.4
338 | 10
339 | 40.0 40.0 40.0
340 | 190.0 0.0 0.0
341 | 0.0 0.0 0.0
342 |
343 | 1 0 0 500 500
344 | 200 40
345 | 100 30
346 |
347 | 1
348 |
349 | 1
350 | C:/Dibujo_3D/Utah.teapot
351 | 0
352 | 0.1 0.1 0.1
353 | 1.0 0.85 0.6
354 | 0.5 0.5 0.4
355 | 10
356 | 40.0 40.0 40.0
357 | 200.0 0.0 0.0
358 | 0.0 0.0 0.0
359 |
360 | 1 0 0 500 500
361 | 200 40
362 | 100 30
363 |
364 | 1
365 |
366 | 1
367 | C:/Dibujo_3D/Utah.teapot
368 | 0
369 | 0.1 0.1 0.1
370 | 1.0 0.85 0.6
371 | 0.5 0.5 0.4
372 | 10
373 | 40.0 40.0 40.0
374 | 210.0 0.0 0.0
375 | 0.0 0.0 0.0
376 |
377 | 1 0 0 500 500
378 | 200 40
379 | 100 30
380 |
381 | 1
382 |
383 | 1
384 | C:/Dibujo_3D/Utah.teapot
385 | 0
386 | 0.1 0.1 0.1
387 | 1.0 0.85 0.6
388 | 0.5 0.5 0.4
389 | 10
390 | 40.0 40.0 40.0
391 | 220.0 0.0 0.0
392 | 0.0 0.0 0.0
393 |
394 | 1 0 0 500 500
395 | 200 40
396 | 100 30
397 |
398 | 1
399 |
400 | 1
401 | C:/Dibujo_3D/Utah.teapot
402 | 0
403 | 0.1 0.1 0.1
404 | 1.0 0.85 0.6
405 | 0.5 0.5 0.4
406 | 10
407 | 40.0 40.0 40.0
408 | 230.0 0.0 0.0
409 | 0.0 0.0 0.0
410 |
411 | 1 0 0 500 500
412 | 200 40
413 | 100 30
414 |
415 | 1
416 |
417 | 1
418 | C:/Dibujo_3D/Utah.teapot
419 | 0
420 | 0.1 0.1 0.1
421 | 1.0 0.85 0.6
422 | 0.5 0.5 0.4
423 | 10
424 | 40.0 40.0 40.0
425 | 240.0 0.0 0.0
426 | 0.0 0.0 0.0
427 |
428 | 1 0 0 500 500
429 | 200 40
430 | 100 30
431 |
432 | 1
433 |
434 | 1
435 | C:/Dibujo_3D/Utah.teapot
436 | 0
437 | 0.1 0.1 0.1
438 | 1.0 0.85 0.6
439 | 0.5 0.5 0.4
440 | 10
441 | 40.0 40.0 40.0
442 | 250.0 0.0 0.0
443 | 0.0 0.0 0.0
444 |
445 | 1 0 0 500 500
446 | 200 40
447 | 100 30
448 |
449 | 1
450 |
451 | 1
452 | C:/Dibujo_3D/Utah.teapot
453 | 0
454 | 0.1 0.1 0.1
455 | 1.0 0.85 0.6
456 | 0.5 0.5 0.4
457 | 10
458 | 40.0 40.0 40.0
459 | 260.0 0.0 0.0
460 | 0.0 0.0 0.0
461 |
462 | 1 0 0 500 500
463 | 200 40
464 | 100 30
465 |
466 | 1
467 |
468 | 1
469 | C:/Dibujo_3D/Utah.teapot
470 | 0
471 | 0.1 0.1 0.1
472 | 1.0 0.85 0.6
473 | 0.5 0.5 0.4
474 | 10
475 | 40.0 40.0 40.0
476 | 270.0 0.0 0.0
477 | 0.0 0.0 0.0
478 |
479 | 1 0 0 500 500
480 | 200 40
481 | 100 30
482 |
483 | 1
484 |
485 | 1
486 | C:/Dibujo_3D/Utah.teapot
487 | 0
488 | 0.1 0.1 0.1
489 | 1.0 0.85 0.6
490 | 0.5 0.5 0.4
491 | 10
492 | 40.0 40.0 40.0
493 | 280.0 0.0 0.0
494 | 0.0 0.0 0.0
495 |
496 | 1 0 0 500 500
497 | 200 40
498 | 100 30
499 |
500 | 1
501 |
502 | 1
503 | C:/Dibujo_3D/Utah.teapot
504 | 0
505 | 0.1 0.1 0.1
506 | 1.0 0.85 0.6
507 | 0.5 0.5 0.4
508 | 10
509 | 40.0 40.0 40.0
510 | 290.0 0.0 0.0
511 | 0.0 0.0 0.0
512 |
513 | 1 0 0 500 500
514 | 200 40
515 | 100 30
516 |
517 | 1
518 |
519 | 1
520 | C:/Dibujo_3D/Utah.teapot
521 | 0
522 | 0.1 0.1 0.1
523 | 1.0 0.85 0.6
524 | 0.5 0.5 0.4
525 | 10
526 | 40.0 40.0 40.0
527 | 300.0 0.0 0.0
528 | 0.0 0.0 0.0
529 |
530 | 1 0 0 500 500
531 | 200 40
532 | 100 30
533 |
534 | 1
535 |
536 | 1
537 | C:/Dibujo_3D/Utah.teapot
538 | 0
539 | 0.1 0.1 0.1
540 | 1.0 0.85 0.6
541 | 0.5 0.5 0.4
542 | 10
543 | 40.0 40.0 40.0
544 | 310.0 0.0 0.0
545 | 0.0 0.0 0.0
546 |
547 | 1 0 0 500 500
548 | 200 40
549 | 100 30
550 |
551 | 1
552 |
553 | 1
554 | C:/Dibujo_3D/Utah.teapot
555 | 0
556 | 0.1 0.1 0.1
557 | 1.0 0.85 0.6
558 | 0.5 0.5 0.4
559 | 10
560 | 40.0 40.0 40.0
561 | 320.0 0.0 0.0
562 | 0.0 0.0 0.0
563 |
564 | 1 0 0 500 500
565 | 200 40
566 | 100 30
567 |
568 | 1
569 |
570 | 1
571 | C:/Dibujo_3D/Utah.teapot
572 | 0
573 | 0.1 0.1 0.1
574 | 1.0 0.85 0.6
575 | 0.5 0.5 0.4
576 | 10
577 | 40.0 40.0 40.0
578 | 330.0 0.0 0.0
579 | 0.0 0.0 0.0
580 |
581 | 1 0 0 500 500
582 | 200 40
583 | 100 30
584 |
585 | 1
586 |
587 | 1
588 | C:/Dibujo_3D/Utah.teapot
589 | 0
590 | 0.1 0.1 0.1
591 | 1.0 0.85 0.6
592 | 0.5 0.5 0.4
593 | 10
594 | 40.0 40.0 40.0
595 | 340.0 0.0 0.0
596 | 0.0 0.0 0.0
597 |
598 | 1 0 0 500 500
599 | 200 40
600 | 100 30
601 |
602 | 1
603 |
604 | 1
605 | C:/Dibujo_3D/Utah.teapot
606 | 0
607 | 0.1 0.1 0.1
608 | 1.0 0.85 0.6
609 | 0.5 0.5 0.4
610 | 10
611 | 40.0 40.0 40.0
612 | 350.0 0.0 0.0
613 | 0.0 0.0 0.0
614 |
615 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Cara:
--------------------------------------------------------------------------------
1 | Cara
2 | 180 148
3 | 0.0000 -0.4755 0.9851
4 | 0.1909 -0.4202 1.0000
5 | 0.3628 -0.3316 0.9644
6 | 0.5346 -0.1593 0.9117
7 | 0.0000 -0.5097 0.7190
8 | 0.1909 -0.4650 0.7243
9 | 0.3628 -0.3617 0.7323
10 | 0.5473 -0.1915 0.7120
11 | 0.6874 0.0402 0.7081
12 | -0.0001 -0.4790 0.4570
13 | 0.1718 -0.4393 0.4808
14 | 0.3819 -0.3487 0.5117
15 | 0.5346 -0.2364 0.5352
16 | 0.6747 -0.0457 0.4875
17 | 0.7001 0.0280 0.4215
18 | 0.7638 0.1941 0.5517
19 | 0.0000 -0.4534 0.3123
20 | 0.1718 -0.2828 0.2658
21 | 0.2482 -0.3042 0.3457
22 | 0.3946 -0.3075 0.3580
23 | 0.4710 -0.2536 0.3659
24 | 0.5410 -0.1250 0.3410
25 | 0.5442 -0.0852 0.3154
26 | 0.6937 0.0357 0.3314
27 | 0.7829 0.1788 0.3631
28 | 0.7829 0.3694 0.4142
29 | 0.3819 -0.2285 0.1617
30 | 0.4773 -0.1609 0.1798
31 | 0.5410 -0.0835 0.2598
32 | -0.0001 -0.5618 0.0526
33 | 0.0763 -0.5384 0.0391
34 | 0.1336 -0.3309 0.0519
35 | 0.2736 -0.2587 0.0284
36 | 0.4455 -0.1632 0.0408
37 | 0.6810 0.0797 0.1916
38 | 0.7574 0.2253 0.1647
39 | 0.7638 0.4485 0.2047
40 | -0.0001 -0.6653 -0.1267
41 | 0.1082 -0.5620 -0.1188
42 | 0.3246 -0.3266 -0.1611
43 | 0.4964 -0.2376 -0.1735
44 | 0.6492 -0.1085 -0.1389
45 | 0.7320 0.0501 -0.0668
46 | 0.7829 0.2069 -0.0247
47 | 0.7829 0.4805 0.0485
48 | 0.7829 0.6311 0.0889
49 | -0.0001 -0.6250 -0.2279
50 | 0.1082 -0.5627 -0.1651
51 | 0.3246 -0.3167 -0.1980
52 | 0.5092 -0.2147 -0.2959
53 | 0.6492 -0.0726 -0.2973
54 | 0.7383 0.0965 -0.2520
55 | 0.7638 0.2533 -0.2100
56 | 0.7638 0.4807 -0.1491
57 | 0.7638 0.6652 -0.0997
58 | -0.0001 -0.4702 -0.4368
59 | 0.1909 -0.3631 -0.4674
60 | 0.2673 -0.2486 -0.5257
61 | 0.4964 -0.1589 -0.4918
62 | 0.6110 -0.0482 -0.4622
63 | 0.6683 0.0592 -0.4202
64 | 0.7065 0.2174 -0.3712
65 | 0.7065 0.4080 -0.3202
66 | 0.7065 0.5924 -0.2707
67 | -0.0001 -0.4527 -0.6496
68 | 0.1909 -0.3720 -0.5819
69 | -0.0001 -0.3812 -0.7688
70 | 0.1909 -0.3308 -0.7355
71 | 0.3246 -0.2419 -0.6985
72 | 0.4582 -0.1312 -0.6689
73 | 0.5346 -0.0267 -0.6409
74 | 0.5983 0.0778 -0.6129
75 | 0.6110 0.2377 -0.5701
76 | 0.6110 0.4222 -0.5206
77 | -0.0001 -0.3588 -1.0000
78 | 0.1718 -0.3157 -0.9885
79 | 0.2705 -0.2223 -0.9437
80 | 0.3309 -0.1168 -0.8825
81 | 0.3819 0.0088 -0.8225
82 | 0.5028 0.0936 -0.7701
83 | 0.5346 0.2553 -0.6971
84 | 0.0572 -0.4317 0.3049
85 | 0.1209 -0.4313 0.0085
86 | 0.1909 -0.4353 -0.1243
87 | 0.1909 -0.4274 -0.2277
88 | -0.0001 -0.5035 -0.2876
89 | 0.0000 -0.4135 -0.5007
90 | 0.1909 -0.3549 -0.4982
91 | 0.0000 -0.4135 -0.5007
92 | 0.1909 -0.3549 -0.4982
93 | 0.0000 -0.4755 0.9851
94 | -0.1910 -0.4202 1.0000
95 | -0.3629 -0.3316 0.9644
96 | -0.5347 -0.1593 0.9117
97 | 0.0000 -0.5097 0.7190
98 | -0.1910 -0.4650 0.7243
99 | -0.3629 -0.3617 0.7323
100 | -0.5475 -0.1915 0.7120
101 | -0.6875 0.0402 0.7081
102 | -0.0001 -0.4790 0.4570
103 | -0.1719 -0.4393 0.4808
104 | -0.3820 -0.3487 0.5117
105 | -0.5347 -0.2364 0.5352
106 | -0.6748 -0.0457 0.4875
107 | -0.7002 0.0280 0.4215
108 | -0.7639 0.1941 0.5517
109 | 0.0000 -0.4534 0.3123
110 | -0.1719 -0.2828 0.2658
111 | -0.2483 -0.3042 0.3457
112 | -0.3947 -0.3075 0.3580
113 | -0.4711 -0.2536 0.3659
114 | -0.5411 -0.1250 0.3410
115 | -0.5443 -0.0852 0.3154
116 | -0.6939 0.0357 0.3314
117 | -0.7830 0.1788 0.3631
118 | -0.7830 0.3694 0.4142
119 | -0.3820 -0.2285 0.1617
120 | -0.4774 -0.1609 0.1798
121 | -0.5411 -0.0835 0.2598
122 | -0.0001 -0.5618 0.0526
123 | -0.0764 -0.5384 0.0391
124 | -0.1337 -0.3309 0.0519
125 | -0.2738 -0.2587 0.0284
126 | -0.4456 -0.1632 0.0408
127 | -0.6811 0.0798 0.1916
128 | -0.7575 0.2253 0.1647
129 | -0.7639 0.4485 0.2047
130 | -0.0001 -0.6653 -0.1267
131 | -0.1083 -0.5620 -0.1188
132 | -0.3247 -0.3266 -0.1611
133 | -0.4965 -0.2376 -0.1735
134 | -0.6493 -0.1085 -0.1389
135 | -0.7321 0.0501 -0.0668
136 | -0.7830 0.2069 -0.0247
137 | -0.7830 0.4805 0.0485
138 | -0.7830 0.6311 0.0889
139 | -0.0001 -0.6250 -0.2279
140 | -0.1083 -0.5627 -0.1651
141 | -0.3247 -0.3167 -0.1980
142 | -0.5093 -0.2147 -0.2959
143 | -0.6493 -0.0726 -0.2973
144 | -0.7384 0.0965 -0.2520
145 | -0.7639 0.2533 -0.2100
146 | -0.7639 0.4807 -0.1491
147 | -0.7639 0.6652 -0.0997
148 | -0.0001 -0.4702 -0.4368
149 | -0.1910 -0.3631 -0.4674
150 | -0.2674 -0.2486 -0.5257
151 | -0.4965 -0.1589 -0.4918
152 | -0.6111 -0.0482 -0.4622
153 | -0.6684 0.0592 -0.4202
154 | -0.7066 0.2174 -0.3712
155 | -0.7066 0.4080 -0.3202
156 | -0.7066 0.5924 -0.2707
157 | -0.0001 -0.4527 -0.6496
158 | -0.1910 -0.3720 -0.5819
159 | -0.0001 -0.3812 -0.7688
160 | -0.1910 -0.3308 -0.7355
161 | -0.3247 -0.2419 -0.6985
162 | -0.4583 -0.1312 -0.6689
163 | -0.5347 -0.0267 -0.6409
164 | -0.5984 0.0779 -0.6129
165 | -0.6111 0.2377 -0.5701
166 | -0.6111 0.4221 -0.5206
167 | -0.0001 -0.3588 -1.0000
168 | -0.1719 -0.3157 -0.9885
169 | -0.2706 -0.2223 -0.9437
170 | -0.3310 -0.1168 -0.8825
171 | -0.3820 0.0088 -0.8225
172 | -0.5029 0.0936 -0.7701
173 | -0.5347 0.2553 -0.6971
174 | -0.0573 -0.4317 0.3049
175 | -0.1210 -0.4313 0.0085
176 | -0.1910 -0.4353 -0.1243
177 | -0.1910 -0.4273 -0.2277
178 | -0.0001 -0.5035 -0.2876
179 | 0.0000 -0.4135 -0.5007
180 | -0.1910 -0.3549 -0.4982
181 | 0.0000 -0.4135 -0.5007
182 | -0.1910 -0.3549 -0.4982
183 | 4 2 1 5 6
184 | 4 3 2 6 7
185 | 4 4 3 7 8
186 | 3 9 4 8
187 | 4 6 5 10 11
188 | 4 7 6 11 12
189 | 4 8 7 12 13
190 | 4 9 8 13 14
191 | 4 16 9 14 15
192 | 4 11 10 17 18
193 | 3 11 18 19
194 | 4 12 11 19 20
195 | 4 13 12 20 21
196 | 4 14 13 21 22
197 | 4 15 14 22 23
198 | 3 15 23 24
199 | 3 11 82 18
200 | 4 16 15 24 25
201 | 3 16 25 26
202 | 4 82 17 30 31
203 | 4 18 82 31 83
204 | 3 18 83 32
205 | 4 27 18 32 33
206 | 4 28 27 33 34
207 | 4 29 28 34 35
208 | 4 23 29 35 24
209 | 4 25 24 35 36
210 | 4 26 25 36 37
211 | 4 31 30 38 39
212 | 4 83 31 39 84
213 | 4 32 83 84 40
214 | 4 33 32 40 41
215 | 4 34 33 41 42
216 | 4 35 34 42 43
217 | 4 36 35 43 44
218 | 4 37 36 44 45
219 | 3 37 45 46
220 | 4 39 38 47 48
221 | 4 84 39 48 85
222 | 4 40 84 85 49
223 | 4 41 40 49 50
224 | 4 42 41 50 51
225 | 4 43 42 51 52
226 | 4 44 43 52 53
227 | 4 45 44 53 54
228 | 4 46 45 54 55
229 | 4 48 47 86 85
230 | 4 85 86 56 57
231 | 4 49 85 57 58
232 | 4 50 49 58 59
233 | 4 51 50 59 60
234 | 4 52 51 60 61
235 | 4 53 52 61 62
236 | 4 54 53 62 63
237 | 4 55 54 63 64
238 | 4 66 65 67 68
239 | 4 58 66 68 69
240 | 4 59 58 69 70
241 | 4 60 59 70 71
242 | 4 61 60 71 72
243 | 4 62 61 72 73
244 | 4 63 62 73 74
245 | 3 64 63 74
246 | 4 68 67 75 76
247 | 4 69 68 76 77
248 | 4 70 69 77 78
249 | 4 71 70 78 79
250 | 4 72 71 79 80
251 | 4 73 72 80 81
252 | 3 74 73 81
253 | 4 57 56 87 88
254 | 3 58 57 88
255 | 4 90 89 65 66
256 | 3 58 90 66
257 | 4 96 5 1 92
258 | 4 97 96 92 93
259 | 4 98 97 93 94
260 | 3 98 94 99
261 | 4 101 10 5 96
262 | 4 102 101 96 97
263 | 4 103 102 97 98
264 | 4 104 103 98 99
265 | 4 105 104 99 106
266 | 4 108 17 10 101
267 | 3 109 108 101
268 | 4 110 109 101 102
269 | 4 111 110 102 103
270 | 4 112 111 103 104
271 | 4 113 112 104 105
272 | 3 114 113 105
273 | 3 108 172 101
274 | 4 115 114 105 106
275 | 3 116 115 106
276 | 4 121 30 17 172
277 | 4 173 121 172 108
278 | 3 122 173 108
279 | 4 123 122 108 117
280 | 4 124 123 117 118
281 | 4 125 124 118 119
282 | 4 114 125 119 113
283 | 4 126 125 114 115
284 | 4 127 126 115 116
285 | 4 129 38 30 121
286 | 4 174 129 121 173
287 | 4 130 174 173 122
288 | 4 131 130 122 123
289 | 4 132 131 123 124
290 | 4 133 132 124 125
291 | 4 134 133 125 126
292 | 4 135 134 126 127
293 | 3 136 135 127
294 | 4 138 47 38 129
295 | 4 175 138 129 174
296 | 4 139 175 174 130
297 | 4 140 139 130 131
298 | 4 141 140 131 132
299 | 4 142 141 132 133
300 | 4 143 142 133 134
301 | 4 144 143 134 135
302 | 4 145 144 135 136
303 | 4 175 86 47 138
304 | 4 147 56 86 175
305 | 4 148 147 175 139
306 | 4 149 148 139 140
307 | 4 150 149 140 141
308 | 4 151 150 141 142
309 | 4 152 151 142 143
310 | 4 153 152 143 144
311 | 4 154 153 144 145
312 | 4 158 67 65 156
313 | 4 159 158 156 148
314 | 4 160 159 148 149
315 | 4 161 160 149 150
316 | 4 162 161 150 151
317 | 4 163 162 151 152
318 | 4 164 163 152 153
319 | 3 164 153 154
320 | 4 166 75 67 158
321 | 4 167 166 158 159
322 | 4 168 167 159 160
323 | 4 169 168 160 161
324 | 4 170 169 161 162
325 | 4 171 170 162 163
326 | 3 171 163 164
327 | 4 178 87 56 147
328 | 3 178 147 148
329 | 4 156 65 89 180
330 | 3 156 180 148
331 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Cara_feliz:
--------------------------------------------------------------------------------
1 | Cara feliz
2 | 180 148
3 | 0.0057 -0.4468 0.9868
4 | 0.1945 -0.3845 1.0000
5 | 0.3632 -0.2915 0.9614
6 | 0.5291 -0.1156 0.9027
7 | 0.0078 -0.4908 0.7223
8 | 0.1969 -0.4395 0.7264
9 | 0.3650 -0.3301 0.7308
10 | 0.5436 -0.1547 0.7045
11 | 0.6755 0.0812 0.6923
12 | 0.0076 -0.4700 0.4595
13 | 0.1778 -0.4235 0.4822
14 | 0.3844 -0.3247 0.5101
15 | 0.5330 -0.2065 0.5296
16 | 0.6665 -0.0131 0.4751
17 | 0.6896 0.0589 0.4066
18 | 0.7470 0.2317 0.5305
19 | 0.0072 -0.4499 0.3141
20 | 0.1731 -0.2754 0.2616
21 | 0.2499 -0.2911 0.3423
22 | 0.3961 -0.2889 0.3550
23 | 0.4706 -0.2322 0.3610
24 | 0.5361 -0.1024 0.3315
25 | 0.5381 -0.0635 0.3045
26 | 0.6832 0.0629 0.3162
27 | 0.7672 0.2100 0.3427
28 | 0.7605 0.4021 0.3866
29 | 0.3814 -0.2179 0.1560
30 | 0.4743 -0.1464 0.1718
31 | 0.5350 -0.0640 0.2490
32 | 0.0117 -0.5677 0.0588
33 | 0.0873 -0.5422 0.0446
34 | 0.1373 -0.3327 0.0497
35 | 0.2748 -0.2567 0.0238
36 | 0.4431 -0.1550 0.0330
37 | 0.6695 0.1012 0.1750
38 | 0.7409 0.2482 0.1428
39 | 0.7394 0.4727 0.1745
40 | 0.0159 -0.6777 -0.1164
41 | 0.1204 -0.5705 -0.1121
42 | 0.3286 -0.3297 -0.1628
43 | 0.4972 -0.2354 -0.1782
44 | 0.6452 -0.1000 -0.1481
45 | 0.7222 0.0638 -0.0818
46 | 0.7675 0.2236 -0.0456
47 | 0.7579 0.4994 0.0173
48 | 0.7526 0.6513 0.0520
49 | 0.0148 -0.6412 -0.2190
50 | 0.1206 -0.5730 -0.1584
51 | 0.3284 -0.3212 -0.2000
52 | 0.5096 -0.2167 -0.3012
53 | 0.6445 -0.0701 -0.3077
54 | 0.7276 0.1034 -0.2686
55 | 0.7475 0.2623 -0.2324
56 | 0.7395 0.4916 -0.1801
57 | 0.7330 0.6776 -0.1376
58 | 0.0102 -0.4945 -0.4334
59 | 0.1977 -0.3949 -0.4118
60 | 0.3550 -0.3478 -0.3367
61 | 0.4956 -0.1687 -0.4990
62 | 0.6061 -0.0532 -0.4732
63 | 0.6595 0.0574 -0.4353
64 | 0.6920 0.2185 -0.3922
65 | 0.6853 0.4106 -0.3483
66 | 0.6788 0.5966 -0.3058
67 | 0.0082 -0.4230 -0.6324
68 | 0.1982 -0.4024 -0.5505
69 | 0.0082 -0.4181 -0.7683
70 | 0.1971 -0.3599 -0.7366
71 | 0.3275 -0.2652 -0.7027
72 | 0.4571 -0.1490 -0.6769
73 | 0.5297 -0.0411 -0.6527
74 | 0.5896 0.0665 -0.6285
75 | 0.5966 0.2281 -0.5917
76 | 0.5901 0.4140 -0.5492
77 | 0.0082 -0.4043 -1.0001
78 | 0.1784 -0.3550 -0.9898
79 | 0.2735 -0.2567 -0.9484
80 | 0.3301 -0.1470 -0.8910
81 | 0.3765 -0.0177 -0.8357
82 | 0.4942 0.0731 -0.7863
83 | 0.5202 0.2383 -0.7194
84 | 0.0636 -0.4265 0.3061
85 | 0.1282 -0.4350 0.0101
86 | 0.1987 -0.4414 -0.1223
87 | 0.1988 -0.4374 -0.2258
88 | 0.0109 -0.5222 -0.2831
89 | 0.0085 -0.4403 -0.4993
90 | 0.1975 -0.3878 -0.4428
91 | 0.0083 -0.4318 -0.5366
92 | 0.1972 -0.3765 -0.4924
93 | 0.0057 -0.4468 0.9868
94 | -0.1870 -0.3977 0.9992
95 | -0.3615 -0.3165 0.9600
96 | -0.5389 -0.1524 0.9006
97 | 0.0078 -0.4908 0.7223
98 | -0.1845 -0.4526 0.7256
99 | -0.3597 -0.3551 0.7293
100 | -0.5499 -0.1924 0.7023
101 | -0.6977 0.0339 0.6896
102 | 0.0076 -0.4700 0.4595
103 | -0.1655 -0.4354 0.4815
104 | -0.3785 -0.3510 0.5085
105 | -0.5350 -0.2433 0.5275
106 | -0.6813 -0.0596 0.4724
107 | -0.7090 0.0106 0.4038
108 | -0.7787 0.1791 0.5275
109 | 0.0072 -0.4499 0.3141
110 | -0.1702 -0.2872 0.2609
111 | -0.2460 -0.3082 0.3414
112 | -0.3921 -0.3161 0.3535
113 | -0.4703 -0.2646 0.3591
114 | -0.5446 -0.1397 0.3294
115 | -0.5490 -0.1010 0.3023
116 | -0.7027 0.0151 0.3134
117 | -0.7967 0.1560 0.3396
118 | -0.8034 0.3482 0.3835
119 | -0.3815 -0.2442 0.1545
120 | -0.4792 -0.1793 0.1699
121 | -0.5457 -0.1013 0.2468
122 | 0.0117 -0.5677 0.0588
123 | -0.0653 -0.5475 0.0443
124 | -0.1297 -0.3419 0.0492
125 | -0.2719 -0.2756 0.0227
126 | -0.4469 -0.1857 0.0312
127 | -0.6910 0.0543 0.1722
128 | -0.7722 0.1960 0.1398
129 | -0.7863 0.4201 0.1714
130 | 0.0159 -0.6777 -0.1164
131 | -0.0958 -0.5780 -0.1126
132 | -0.3199 -0.3521 -0.1641
133 | -0.4945 -0.2697 -0.1801
134 | -0.6516 -0.1448 -0.1507
135 | -0.7400 0.0134 -0.0848
136 | -0.7964 0.1697 -0.0488
137 | -0.8060 0.4455 0.0142
138 | -0.8113 0.5973 0.0489
139 | 0.0148 -0.6412 -0.2190
140 | -0.0956 -0.5805 -0.1588
141 | -0.3201 -0.3436 -0.2013
142 | -0.5076 -0.2518 -0.3032
143 | -0.6524 -0.1149 -0.3103
144 | -0.7473 0.0525 -0.2715
145 | -0.7783 0.2097 -0.2355
146 | -0.7863 0.4390 -0.1831
147 | -0.7928 0.6249 -0.1407
148 | 0.0102 -0.4945 -0.4334
149 | -0.1838 -0.4081 -0.4126
150 | -0.3443 -0.3719 -0.3381
151 | -0.4962 -0.2030 -0.5009
152 | -0.6145 -0.0953 -0.4757
153 | -0.6755 0.0114 -0.4379
154 | -0.7193 0.1698 -0.3950
155 | -0.7260 0.3620 -0.3511
156 | -0.7325 0.5479 -0.3087
157 | 0.0082 -0.4230 -0.6324
158 | -0.1832 -0.4156 -0.5513
159 | 0.0082 -0.4181 -0.7683
160 | -0.1843 -0.3731 -0.7373
161 | -0.3210 -0.2876 -0.7040
162 | -0.4584 -0.1806 -0.6788
163 | -0.5384 -0.0779 -0.6549
164 | -0.6056 0.0253 -0.6309
165 | -0.6240 0.1860 -0.5941
166 | -0.6305 0.3719 -0.5517
167 | 0.0082 -0.4043 -1.0001
168 | -0.1649 -0.3669 -0.9905
169 | -0.2668 -0.2753 -0.9494
170 | -0.3310 -0.1698 -0.8924
171 | -0.3864 -0.0440 -0.8372
172 | -0.5103 0.0384 -0.7883
173 | -0.5479 0.2014 -0.7216
174 | -0.0508 -0.4304 0.3058
175 | -0.1134 -0.4433 0.0096
176 | -0.1827 -0.4546 -0.1230
177 | -0.1827 -0.4505 -0.2265
178 | 0.0109 -0.5222 -0.2831
179 | 0.0085 -0.4403 -0.4993
180 | -0.1840 -0.4010 -0.4436
181 | 0.0083 -0.4318 -0.5366
182 | -0.1842 -0.3897 -0.4932
183 | 4 2 1 5 6
184 | 4 3 2 6 7
185 | 4 4 3 7 8
186 | 3 9 4 8
187 | 4 6 5 10 11
188 | 4 7 6 11 12
189 | 4 8 7 12 13
190 | 4 9 8 13 14
191 | 4 16 9 14 15
192 | 4 11 10 17 18
193 | 3 11 18 19
194 | 4 12 11 19 20
195 | 4 13 12 20 21
196 | 4 14 13 21 22
197 | 4 15 14 22 23
198 | 3 15 23 24
199 | 3 11 82 18
200 | 4 16 15 24 25
201 | 3 16 25 26
202 | 4 82 17 30 31
203 | 4 18 82 31 83
204 | 3 18 83 32
205 | 4 27 18 32 33
206 | 4 28 27 33 34
207 | 4 29 28 34 35
208 | 4 23 29 35 24
209 | 4 25 24 35 36
210 | 4 26 25 36 37
211 | 4 31 30 38 39
212 | 4 83 31 39 84
213 | 4 32 83 84 40
214 | 4 33 32 40 41
215 | 4 34 33 41 42
216 | 4 35 34 42 43
217 | 4 36 35 43 44
218 | 4 37 36 44 45
219 | 3 37 45 46
220 | 4 39 38 47 48
221 | 4 84 39 48 85
222 | 4 40 84 85 49
223 | 4 41 40 49 50
224 | 4 42 41 50 51
225 | 4 43 42 51 52
226 | 4 44 43 52 53
227 | 4 45 44 53 54
228 | 4 46 45 54 55
229 | 4 48 47 86 85
230 | 4 85 86 56 57
231 | 4 49 85 57 58
232 | 4 50 49 58 59
233 | 4 51 50 59 60
234 | 4 52 51 60 61
235 | 4 53 52 61 62
236 | 4 54 53 62 63
237 | 4 55 54 63 64
238 | 4 66 65 67 68
239 | 4 58 66 68 69
240 | 4 59 58 69 70
241 | 4 60 59 70 71
242 | 4 61 60 71 72
243 | 4 62 61 72 73
244 | 4 63 62 73 74
245 | 3 64 63 74
246 | 4 68 67 75 76
247 | 4 69 68 76 77
248 | 4 70 69 77 78
249 | 4 71 70 78 79
250 | 4 72 71 79 80
251 | 4 73 72 80 81
252 | 3 74 73 81
253 | 4 57 56 87 88
254 | 3 58 57 88
255 | 4 90 89 65 66
256 | 3 58 90 66
257 | 4 96 5 1 92
258 | 4 97 96 92 93
259 | 4 98 97 93 94
260 | 3 98 94 99
261 | 4 101 10 5 96
262 | 4 102 101 96 97
263 | 4 103 102 97 98
264 | 4 104 103 98 99
265 | 4 105 104 99 106
266 | 4 108 17 10 101
267 | 3 109 108 101
268 | 4 110 109 101 102
269 | 4 111 110 102 103
270 | 4 112 111 103 104
271 | 4 113 112 104 105
272 | 3 114 113 105
273 | 3 108 172 101
274 | 4 115 114 105 106
275 | 3 116 115 106
276 | 4 121 30 17 172
277 | 4 173 121 172 108
278 | 3 122 173 108
279 | 4 123 122 108 117
280 | 4 124 123 117 118
281 | 4 125 124 118 119
282 | 4 114 125 119 113
283 | 4 126 125 114 115
284 | 4 127 126 115 116
285 | 4 129 38 30 121
286 | 4 174 129 121 173
287 | 4 130 174 173 122
288 | 4 131 130 122 123
289 | 4 132 131 123 124
290 | 4 133 132 124 125
291 | 4 134 133 125 126
292 | 4 135 134 126 127
293 | 3 136 135 127
294 | 4 138 47 38 129
295 | 4 175 138 129 174
296 | 4 139 175 174 130
297 | 4 140 139 130 131
298 | 4 141 140 131 132
299 | 4 142 141 132 133
300 | 4 143 142 133 134
301 | 4 144 143 134 135
302 | 4 145 144 135 136
303 | 4 175 86 47 138
304 | 4 147 56 86 175
305 | 4 148 147 175 139
306 | 4 149 148 139 140
307 | 4 150 149 140 141
308 | 4 151 150 141 142
309 | 4 152 151 142 143
310 | 4 153 152 143 144
311 | 4 154 153 144 145
312 | 4 158 67 65 156
313 | 4 159 158 156 148
314 | 4 160 159 148 149
315 | 4 161 160 149 150
316 | 4 162 161 150 151
317 | 4 163 162 151 152
318 | 4 164 163 152 153
319 | 3 164 153 154
320 | 4 166 75 67 158
321 | 4 167 166 158 159
322 | 4 168 167 159 160
323 | 4 169 168 160 161
324 | 4 170 169 161 162
325 | 4 171 170 162 163
326 | 3 171 163 164
327 | 4 178 87 56 147
328 | 3 178 147 148
329 | 4 156 65 89 180
330 | 3 156 180 148
331 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Cubo:
--------------------------------------------------------------------------------
1 | Cubo
2 | 6
3 | 1 1 1 1 -1 1 1 -1 -1 1 1 -1
4 | 1 1 1 1 1 -1 -1 1 -1 -1 1 1
5 | 1 1 1 -1 1 1 -1 -1 1 1 -1 1
6 | 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1
7 | 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1
8 | -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1
9 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 200 40
5 | 100 30
6 |
7 | 8
8 |
9 | 1
10 | C:/Dibujo_3D/Utah.teapot
11 | 0
12 | 0.1 0.1 0.1
13 | 1.0 0.85 0.6
14 | 0.5 0.5 0.4
15 | 10
16 | 25.0 25.0 25.0
17 | 0.0 0.0 0.0
18 | 0.0 0.0 0.0
19 |
20 | 0
21 | C:/Dibujo_3D/Cubo
22 | 0
23 | 0.1 0.1 0.1
24 | 1.0 1.0 1.0
25 | 0.5 0.5 0.5
26 | 10
27 | 100.0 100.0 10.0
28 | 0.0 0.0 0.0
29 | 0.0 0.0 10.0
30 |
31 | 0
32 | C:/Dibujo_3D/Cubo
33 | 0
34 | 0.1 0.1 0.1
35 | 1.0 1.0 1.0
36 | 0.5 0.5 0.5
37 | 10
38 | 10.0 10.0 50.0
39 | 0.0 0.0 0.0
40 | -90.0 -90.0 70.0
41 |
42 | 0
43 | C:/Dibujo_3D/Cubo
44 | 0
45 | 0.1 0.1 0.1
46 | 1.0 1.0 1.0
47 | 0.5 0.5 0.5
48 | 10
49 | 10.0 10.0 50.0
50 | 0.0 0.0 0.0
51 | 90.0 90.0 70.0
52 |
53 | 0
54 | C:/Dibujo_3D/Cubo
55 | 0
56 | 0.1 0.1 0.1
57 | 1.0 1.0 1.0
58 | 0.5 0.5 0.5
59 | 10
60 | 10.0 10.0 50.0
61 | 0.0 0.0 0.0
62 | -90.0 90.0 70.0
63 |
64 | 0
65 | C:/Dibujo_3D/Cubo
66 | 0
67 | 0.1 0.1 0.1
68 | 1.0 1.0 1.0
69 | 0.5 0.5 0.5
70 | 10
71 | 10.0 10.0 50.0
72 | 0.0 0.0 0.0
73 | 90.0 -90.0 70.0
74 |
75 | 0
76 | C:/Dibujo_3D/Plano
77 | 0
78 | 0.1 0.1 0.1
79 | 0.0 0.0 1.0
80 | 0.0 0.0 0.5
81 | 10
82 | 150.0 150.0 150.0
83 | 0.0 0.0 0.0
84 | 0.0 0.0 120.0
85 |
86 | 0
87 | C:/Dibujo_3D/Plano
88 | 0
89 | 0.1 0.1 0.1
90 | 0.0 0.0 1.0
91 | 0.0 0.5 0.5
92 | 10
93 | 150.0 150.0 150.0
94 | 90.0 0.0 0.0
95 | 0.0 150.0 -30.0
96 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_ajedrez:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 245 40
5 | 100 30
6 |
7 | 3
8 |
9 | 0
10 | C:/Dibujo_3D/Peon
11 | 0
12 | 0.2 0.15 0.1
13 | 1.0 0.85 0.6
14 | 0.5 0.5 0.4
15 | 10
16 | 9.0 9.0 9.0
17 | 0.0 20.0 20.0
18 | 0.0 0.0 -40.0
19 |
20 | 0
21 | C:/Dibujo_3D/Tablero
22 | 0
23 | 0.2 0.2 0.2
24 | 1.0 1.0 1.0
25 | 0.5 0.5 0.5
26 | 10
27 | 50.0 50.0 50.0
28 | 0.0 0.0 0.0
29 | 0.0 0.0 0.0
30 |
31 | 0
32 | C:/Dibujo_3D/Tablero
33 | 0
34 | 0.2 0.0 0.0
35 | 1.0 0.0 0.0
36 | 0.5 0.0 0.0
37 | 10
38 | 50.0 50.0 50.0
39 | 0.0 0.0 90.0
40 | 0.0 0.0 0.0
41 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_ajedrez.2:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 245 40
5 | 100 30
6 |
7 | 3
8 |
9 | 0
10 | C:/Dibujo_3D/Peon
11 | 0
12 | 0.2 0.15 0.1
13 | 1.0 0.85 0.6
14 | 0.5 0.5 0.4
15 | 10
16 | 6.0 6.0 6.0
17 | 0.0 0.0 0.0
18 | -125.0 125.0 0.0
19 |
20 | 0
21 | C:/Dibujo_3D/Tablero
22 | 0
23 | 0.2 0.2 0.2
24 | 1.0 1.0 1.0
25 | 0.5 0.5 0.5
26 | 10
27 | 50.0 50.0 50.0
28 | 0.0 0.0 0.0
29 | 0.0 0.0 0.0
30 |
31 | 0
32 | C:/Dibujo_3D/Tablero
33 | 0
34 | 0.2 0.0 0.0
35 | 1.0 0.0 0.0
36 | 0.5 0.0 0.0
37 | 10
38 | 50.0 50.0 50.0
39 | 0.0 0.0 90.0
40 | 0.0 0.0 0.0
41 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_cara:
--------------------------------------------------------------------------------
1 | 1 320 200 1
2 |
3 | 0 0 0 500 500
4 | 0 0
5 | 120 60
6 |
7 | 1
8 |
9 | 2
10 | C:/Dibujo_3D/Cara
11 | 0
12 | 0.2 0.14 0.16
13 | 1.0 0.75 0.8
14 | 0.0 0.0 0.0
15 | 20
16 | 100.0 100.0 100.0
17 | 0.0 0.0 0.0
18 | 0.0 0.0 0.0
19 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_cara_feliz:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 0 0 0 500 500
4 | 0 0
5 | 120 60
6 |
7 | 1
8 |
9 | 2
10 | C:/Dibujo_3D/Cara_feliz
11 | 0
12 | 0.2 0.15 0.1
13 | 1.0 0.75 0.8
14 | 0.0 0.0 0.0
15 | 20
16 | 100.0 100.0 100.0
17 | 0.0 0.0 0.0
18 | 0.0 0.0 0.0
19 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_caras:
--------------------------------------------------------------------------------
1 | 1 640 480 1
2 |
3 | 0 0 0 500 500
4 | 0 0
5 | 120 60
6 |
7 | 2
8 |
9 | 2
10 | C:/Dibujo_3D/Cara
11 | 0
12 | 0.2 0.14 0.16
13 | 1.0 0.75 0.8
14 | 0.0 0.0 0.0
15 | 20
16 | 100.0 100.0 100.0
17 | 0.0 0.0 0.0
18 | -100.0 0.0 0.0
19 |
20 | 2
21 | C:/Dibujo_3D/Cara_feliz
22 | 0
23 | 0.2 0.14 0.16
24 | 1.0 0.75 0.8
25 | 0.0 0.0 0.0
26 | 20
27 | 100.0 100.0 100.0
28 | 0.0 0.0 0.0
29 | 100.0 0.0 0.0
30 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_copa:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 30 20
5 | 0 0
6 |
7 | 1
8 |
9 | 0
10 | C:/Dibujo_3D/Copa
11 | 0
12 | 0.0 0.0 0.1
13 | 0.1 0.3 1.0
14 | 0.05 0.1 0.3
15 | 10
16 | 6.0 6.0 6.0
17 | -30.0 -20.0 -10.0
18 | 0.0 0.0 0.0
19 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_cubo:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 210 25
5 | 45 45
6 |
7 | 1
8 |
9 | 0
10 | C:/Dibujo_3d/Cubo
11 | 0
12 | 0.1 0.1 0.1
13 | 1.0 0.0 0.0
14 | 0.4 0.4 0.4
15 | 10
16 | 30.0 30.0 30.0
17 | 0.0 0.0 0.0
18 | 0.0 0.0 0.0
19 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_esfera:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 210 25
5 | 45 45
6 |
7 | 2
8 |
9 | 0
10 | C:/Dibujo_3D/esfera
11 | 0
12 | 0.1 0.1 0.1
13 | 1.0 0.85 0.6
14 | 0.5 0.5 0.4
15 | 10
16 | 60.0 60.0 60.0
17 | 0.0 0.0 0.0
18 | 0.0 0.0 0.0
19 |
20 | 0
21 | C:/Dibujo_3D/Plano
22 | 0
23 | 0.1 0.1 0.1
24 | 1.0 1.0 1.0
25 | 0.5 0.5 0.5
26 | 10
27 | 100.0 100.0 100.0
28 | 0.0 0.0 0.0
29 | 0.0 0.0 0.0
30 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_objetos:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 245 40
5 | 100 30
6 |
7 | 3
8 |
9 | 1
10 | C:/Dibujo_3D/Utah.teapot
11 | 0
12 | 0.1 0.1 0.1
13 | 1.0 0.85 0.6
14 | 0.5 0.5 0.4
15 | 10
16 | 30.0 30.0 30.0
17 | 0.0 0.0 0.0
18 | 0.0 0.0 0.0
19 |
20 | 0
21 | C:/Dibujo_3D/Cubo
22 | 0
23 | 0.1 0.1 0.1
24 | 1.0 0.0 0.0
25 | 0.5 0.0 0.0
26 | 10
27 | 20.0 20.0 20.0
28 | 30.0 20.0 10.0
29 | -20.0 -120.0 -120.0
30 |
31 | 0
32 | C:/Dibujo_3D/Plano
33 | 0
34 | 0.1 0.1 0.1
35 | 1.0 1.0 1.0
36 | 0.5 0.5 0.5
37 | 10
38 | 100.0 100.0 100.0
39 | 0.0 0.0 0.0
40 | 0.0 0.0 0.0
41 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_peon:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 30 20
5 | 0 0
6 |
7 | 1
8 |
9 | 0
10 | C:/Dibujo_3D/Peon
11 | 0
12 | 0.2 0.15 0.1
13 | 1.0 0.85 0.6
14 | 0.5 0.5 0.4
15 | 10
16 | 15.0 15.0 15.0
17 | 0.0 20.0 20.0
18 | 0.0 0.0 0.0
19 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_tetera:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 200 40
5 | 100 30
6 |
7 | 1
8 |
9 | 1
10 | C:/Dibujo_3D/Utah.teapot
11 | 0
12 | 0.1 0.1 0.1
13 | 1.0 0.85 0.6
14 | 0.5 0.5 0.4
15 | 10
16 | 60.0 60.0 60.0
17 | 0.0 0.0 0.0
18 | 0.0 0.0 0.0
19 |
20 | 0
21 | C:/Dibujo_3D/Plano
22 | 0
23 | 0.1 0.1 0.1
24 | 1.0 1.0 1.0
25 | 0.5 0.5 0.5
26 | 10
27 | 100.0 100.0 100.0
28 | 0.0 0.0 0.0
29 | 0.0 0.0 0.0
30 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_tetera.2:
--------------------------------------------------------------------------------
1 | 1 640 480 2
2 |
3 | 1 0 0 500 500
4 | 0 0
5 | 0 0
6 |
7 | 1
8 |
9 | 1
10 | C:/Dibujo_3D/Utah.teapot
11 | 0
12 | 0.2 0.1 0.0
13 | 1.0 0.7 0.0
14 | 0.5 0.25 0.0
15 | 100
16 | 60.0 60.0 60.0
17 | -40.0 30.0 10.0
18 | 0.0 0.0 0.0
19 |
20 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Escena_tetera.3:
--------------------------------------------------------------------------------
1 | 1 640 480 1
2 |
3 | 1 0 0 500 500
4 | 0 0
5 | 0 0
6 |
7 | 4
8 |
9 | 1
10 | C:/Dibujo_3D/Utah.teapot
11 | 0
12 | 0.2 0.1 0.0
13 | 1.0 0.7 0.0
14 | 0.5 0.25 0.0
15 | 100
16 | 30.0 30.0 30.0
17 | -40.0 30.0 10.0
18 | 0.0 0.0 0.0
19 |
20 | 1
21 | C:/Dibujo_3D/Utah.teapot
22 | 0
23 | 0.2 0.1 0.0
24 | 0.0 0.7 1.0
25 | 0.0 0.5 0.25
26 | 100
27 | 30.0 30.0 30.0
28 | 0.0 -30.0 0.0
29 | 200.0 200.0 0.0
30 |
31 | 1
32 | C:/Dibujo_3D/Utah.teapot
33 | 0
34 | 0.2 0.1 0.0
35 | 0.0 1.0 0.7
36 | 0.5 0.25 0.0
37 | 100
38 | 30.0 30.0 30.0
39 | 30.0 0.0 0.0
40 | -150.0 0.0 200.0
41 |
42 | 1
43 | C:/Dibujo_3D/Utah.teapot
44 | 0
45 | 0.2 0.1 0.0
46 | 0.7 0.0 0.7
47 | 0.0 0.25 0.5
48 | 100
49 | 30.0 30.0 30.0
50 | 50.0 20.0 -10.0
51 | 80.0 -150.0 100.0
52 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/P.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X=320
3 | Y=240
4 |
5 | CUADROS
6 | NUMERO=1
7 |
8 | AMBIENTE
9 | LOCAL=0.75 0.75 0.75
10 | REFLEJO=0.25 0.25 0.25
11 | TRANS=0 0 0
12 | MINIMO=0.03 0.03 0.03
13 | MAXIMO=1 1 1
14 | RECUR=4
15 |
16 | LAMPARAS
17 | REFLEJO=FALSO
18 | REFLAMP=0 0 0
19 | EFECDIST=0.5
20 |
21 | MATERIAL
22 | TIPO=AJEDREZADO
23 | TEXTURA=ALTERNADO
24 | RFLAMB=0.2 0.2 0.2
25 | RFLDIF=0.7 0.7 0.7
26 | RFLESP=0.3 0.3 0.3
27 | BRILLO=2
28 | TRANS=0.0 0.0 0.0
29 | INDICE=1.0
30 | CUADRO1=1.0 0.0 0.0
31 | CUADRO2=0.0 1.0 1.0
32 | CUADRO=0.0714
33 |
34 | MATERIAL
35 | TIPO=BLANCO
36 | TEXTURA=SUAVE
37 | RFLAMB=0.2 0.2 0.2
38 | RFLDIF=0.8 0.8 0.8
39 | RFLESP=0.0 0.0 0.0
40 | BRILLO=25
41 | TRANS=0.0 0.0 0.0
42 | INDICE=1.0
43 |
44 | {piso}
45 | PISO
46 | MAT=AJEDREZADO
47 |
48 | PRUEBAESFERA
49 |
50 | OBSERVADOR
51 | LENTE=3.2
52 | LOC=-250 200 150
53 | ROTADO=120
54 | GIRO=16
55 |
56 | LAMPARA
57 | LOC=-350 300 350
58 | RADIO=100
59 | INTENS=0.95 0.95 0.91
60 |
61 | LAMPARA
62 | LOC=350 300 350
63 | RADIO=100
64 | INTENS=0.95 0.95 0.91
65 |
66 | ESFERA
67 | LOC=0.0 4.8 93.3
68 | RADIO=10.0
69 | MAT=BLANCO
70 |
71 | CILINDRO
72 | LOCBASE=0.0 1.8 77.3
73 | RADIO=5.0
74 | LOCFIN=0.0 4.8 93.3
75 | MAT=BLANCO
76 |
77 | CILINDRO
78 | LOCBASE=-17.3 1.8 77.3
79 | RADIO=5.0
80 | LOCFIN=17.3 1.8 77.3
81 | MAT=BLANCO
82 |
83 | ESFERA
84 | LOC=-17.3 1.8 77.3
85 | RADIO=5.0
86 | MAT=BLANCO
87 |
88 | ESFERA
89 | LOC=17.3 1.8 77.3
90 | RADIO=5.0
91 | MAT=BLANCO
92 |
93 | CILINDRO
94 | LOCBASE=0.0 0.0 48.3
95 | RADIO=5.0
96 | LOCFIN=0.0 1.8 77.3
97 | MAT=BLANCO
98 |
99 | CILINDRO
100 | LOCBASE=-6.8 0.0 48.3
101 | RADIO=5.0
102 | LOCFIN=6.8 0.0 48.3
103 | MAT=BLANCO
104 |
105 | ESFERA
106 | LOC=-6.8 0.0 48.3
107 | RADIO=5.0
108 | MAT=BLANCO
109 |
110 | ESFERA
111 | LOC=6.8 0.0 48.3
112 | RADIO=5.0
113 | MAT=BLANCO
114 |
115 | CILINDRO
116 | LOCBASE=-17.3 1.8 77.3
117 | RADIO=5.0
118 | LOCFIN=-17.3 2.8 57.3
119 | MAT=BLANCO
120 |
121 | ESFERA
122 | LOC=-17.3 2.8 57.3
123 | RADIO=5.0
124 | MAT=BLANCO
125 |
126 | CILINDRO
127 | LOCBASE=-17.3 2.8 57.3
128 | RADIO=5.0
129 | LOCFIN=-17.3 8.8 41.3
130 | MAT=BLANCO
131 |
132 | CILINDRO
133 | LOCBASE=17.3 1.8 77.3
134 | RADIO=5.0
135 | LOCFIN=17.3 -2.8 58.3
136 | MAT=BLANCO
137 |
138 | ESFERA
139 | LOC=17.3 -2.8 58.3
140 | RADIO=5.0
141 | MAT=BLANCO
142 |
143 | CILINDRO
144 | LOCBASE=17.3 -2.8 58.3
145 | RADIO=5.0
146 | LOCFIN=17.3 -4.8 42.3
147 | MAT=BLANCO
148 |
149 | CILINDRO
150 | LOCBASE=6.8 0.0 48.3
151 | RADIO=5.0
152 | LOCFIN=6.8 7.8 26.3
153 | MAT=BLANCO
154 |
155 | ESFERA
156 | LOC=6.8 7.8 26.3
157 | RADIO=5.0
158 | MAT=BLANCO
159 |
160 | CILINDRO
161 | LOCBASE=6.8 7.8 26.3
162 | RADIO=5.0
163 | LOCFIN=6.8 10.8 2.3
164 | MAT=BLANCO
165 |
166 | CILINDRO
167 | LOCBASE=-6.8 0.0 48.3
168 | RADIO=5.0
169 | LOCFIN=-6.8 -2.8 23.3
170 | MAT=BLANCO
171 |
172 | ESFERA
173 | LOC=-6.8 -2.8 23.3
174 | RADIO=5.0
175 | MAT=BLANCO
176 |
177 | CILINDRO
178 | LOCBASE=-6.8 -2.8 23.3
179 | RADIO=5.0
180 | LOCFIN=-6.8 -12.8 1.3
181 | MAT=BLANCO
182 |
183 | FINCUADRO
184 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Plano:
--------------------------------------------------------------------------------
1 | Plano
2 | 1
3 | -1 -1 0 1 -1 0 1 1 0 -1 1 0
4 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Prueba.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X=320
3 | Y=240
4 |
5 | CUADROS
6 | NUMERO=1
7 |
8 | AMBIENTE
9 | LOCAL=0.75 0.75 0.75
10 | REFLEJO=0.25 0.25 0.25
11 | TRANS=0 0 0
12 | MINIMO=0.03 0.03 0.03
13 | MAXIMO=1 1 1
14 | RECUR=2
15 |
16 | LAMPARAS
17 | REFLEJO=FALSO
18 | REFLAMP=0 0 0
19 | EFECDIST=0.5
20 |
21 | MATERIAL
22 | TIPO=AJEDREZADO
23 | TEXTURA=IMAGEN
24 | RFLAMB=0.2 0.2 0.2
25 | RFLDIF=0.7 0.7 0.7
26 | RFLESP=0.3 0.3 0.3
27 | BRILLO=2
28 | TRANS=0.0 0.0 0.0
29 | INDICE=1.0
30 |
31 | MATERIAL
32 | TIPO=BLANCO
33 | TEXTURA=SUAVE
34 | RFLAMB=0.2 0.2 0.2
35 | RFLDIF=0.8 0.8 0.8
36 | RFLESP=0.0 0.0 0.0
37 | BRILLO=25
38 | TRANS=0.0 0.0 0.0
39 | INDICE=1.0
40 |
41 | {piso}
42 | PISO
43 | MAT=AJEDREZADO
44 |
45 | PRUEBAESFERA
46 |
47 | OBSERVADOR
48 | LENTE=3.2
49 | LOC=-250 200 150
50 | ROTADO=120
51 | GIRO=16
52 |
53 | LAMPARA
54 | LOC=-350 300 350
55 | RADIO=100
56 | INTENS=0.95 0.95 0.91
57 |
58 | LAMPARA
59 | LOC=350 300 350
60 | RADIO=100
61 | INTENS=0.95 0.95 0.91
62 |
63 | ESFERA
64 | LOC=0.0 4.8 93.3
65 | RADIO=10.0
66 | MAT=BLANCO
67 |
68 | CILINDRO
69 | LOCBASE=0.0 1.8 77.3
70 | RADIO=5.0
71 | LOCFIN=0.0 4.8 93.3
72 | MAT=BLANCO
73 |
74 | CILINDRO
75 | LOCBASE=-17.3 1.8 77.3
76 | RADIO=5.0
77 | LOCFIN=17.3 1.8 77.3
78 | MAT=BLANCO
79 |
80 | ESFERA
81 | LOC=-17.3 1.8 77.3
82 | RADIO=5.0
83 | MAT=BLANCO
84 |
85 | ESFERA
86 | LOC=17.3 1.8 77.3
87 | RADIO=5.0
88 | MAT=BLANCO
89 |
90 | CILINDRO
91 | LOCBASE=0.0 0.0 48.3
92 | RADIO=5.0
93 | LOCFIN=0.0 1.8 77.3
94 | MAT=BLANCO
95 |
96 | CILINDRO
97 | LOCBASE=-6.8 0.0 48.3
98 | RADIO=5.0
99 | LOCFIN=6.8 0.0 48.3
100 | MAT=BLANCO
101 |
102 | ESFERA
103 | LOC=-6.8 0.0 48.3
104 | RADIO=5.0
105 | MAT=BLANCO
106 |
107 | ESFERA
108 | LOC=6.8 0.0 48.3
109 | RADIO=5.0
110 | MAT=BLANCO
111 |
112 | CILINDRO
113 | LOCBASE=-17.3 1.8 77.3
114 | RADIO=5.0
115 | LOCFIN=-17.3 2.8 57.3
116 | MAT=BLANCO
117 |
118 | ESFERA
119 | LOC=-17.3 2.8 57.3
120 | RADIO=5.0
121 | MAT=BLANCO
122 |
123 | CILINDRO
124 | LOCBASE=-17.3 2.8 57.3
125 | RADIO=5.0
126 | LOCFIN=-17.3 8.8 41.3
127 | MAT=BLANCO
128 |
129 | CILINDRO
130 | LOCBASE=17.3 1.8 77.3
131 | RADIO=5.0
132 | LOCFIN=17.3 -2.8 58.3
133 | MAT=BLANCO
134 |
135 | ESFERA
136 | LOC=17.3 -2.8 58.3
137 | RADIO=5.0
138 | MAT=BLANCO
139 |
140 | CILINDRO
141 | LOCBASE=17.3 -2.8 58.3
142 | RADIO=5.0
143 | LOCFIN=17.3 -4.8 42.3
144 | MAT=BLANCO
145 |
146 | CILINDRO
147 | LOCBASE=6.8 0.0 48.3
148 | RADIO=5.0
149 | LOCFIN=6.8 7.8 26.3
150 | MAT=BLANCO
151 |
152 | ESFERA
153 | LOC=6.8 7.8 26.3
154 | RADIO=5.0
155 | MAT=BLANCO
156 |
157 | CILINDRO
158 | LOCBASE=6.8 7.8 26.3
159 | RADIO=5.0
160 | LOCFIN=6.8 10.8 2.3
161 | MAT=BLANCO
162 |
163 | CILINDRO
164 | LOCBASE=-6.8 0.0 48.3
165 | RADIO=5.0
166 | LOCFIN=-6.8 -2.8 23.3
167 | MAT=BLANCO
168 |
169 | ESFERA
170 | LOC=-6.8 -2.8 23.3
171 | RADIO=5.0
172 | MAT=BLANCO
173 |
174 | CILINDRO
175 | LOCBASE=-6.8 -2.8 23.3
176 | RADIO=5.0
177 | LOCFIN=-6.8 -12.8 1.3
178 | MAT=BLANCO
179 |
180 | FINCUADRO
181 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/Tablero:
--------------------------------------------------------------------------------
1 | Tablero
2 | 32
3 | -4 -4 0 -3 -4 0 -3 -3 0 -4 -3 0
4 | -2 -4 0 -1 -4 0 -1 -3 0 -2 -3 0
5 | 0 -4 0 1 -4 0 1 -3 0 0 -3 0
6 | 2 -4 0 3 -4 0 3 -3 0 2 -3 0
7 | -3 -3 0 -2 -3 0 -2 -2 0 -3 -2 0
8 | -1 -3 0 0 -3 0 0 -2 0 -1 -2 0
9 | 1 -3 0 2 -3 0 2 -2 0 1 -2 0
10 | 3 -3 0 4 -3 0 4 -2 0 3 -2 0
11 | -4 -2 0 -3 -2 0 -3 -1 0 -4 -1 0
12 | -2 -2 0 -1 -2 0 -1 -1 0 -2 -1 0
13 | 0 -2 0 1 -2 0 1 -1 0 0 -1 0
14 | 2 -2 0 3 -2 0 3 -1 0 2 -1 0
15 | -3 -1 0 -2 -1 0 -2 0 0 -3 0 0
16 | -1 -1 0 0 -1 0 0 0 0 -1 0 0
17 | 1 -1 0 2 -1 0 2 0 0 1 0 0
18 | 3 -1 0 4 -1 0 4 0 0 3 0 0
19 | -4 0 0 -3 0 0 -3 1 0 -4 1 0
20 | -2 0 0 -1 0 0 -1 1 0 -2 1 0
21 | 0 0 0 1 0 0 1 1 0 0 1 0
22 | 2 0 0 3 0 0 3 1 0 2 1 0
23 | -3 1 0 -2 1 0 -2 2 0 -3 2 0
24 | -1 1 0 0 1 0 0 2 0 -1 2 0
25 | 1 1 0 2 1 0 2 2 0 1 2 0
26 | 3 1 0 4 1 0 4 2 0 3 2 0
27 | -4 2 0 -3 2 0 -3 3 0 -4 3 0
28 | -2 2 0 -1 2 0 -1 3 0 -2 3 0
29 | 0 2 0 1 2 0 1 3 0 0 3 0
30 | 2 2 0 3 2 0 3 3 0 2 3 0
31 | -3 3 0 -2 3 0 -2 4 0 -3 4 0
32 | -1 3 0 0 3 0 0 4 0 -1 4 0
33 | 1 3 0 2 3 0 2 4 0 1 4 0
34 | 3 3 0 4 3 0 4 4 0 3 4 0
35 |
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/p.PIX:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Dibujo_3D/p.PIX
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/p1.PIX:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Dibujo_3D/p1.PIX
--------------------------------------------------------------------------------
/os_final/tree/Dibujo_3D/prueba.PIX:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Dibujo_3D/prueba.PIX
--------------------------------------------------------------------------------
/os_final/tree/Divide.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Divide.p
--------------------------------------------------------------------------------
/os_final/tree/Documentos/Archivo.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Documentos/Archivo.doc
--------------------------------------------------------------------------------
/os_final/tree/Documentos/Detalles.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Documentos/Detalles.doc
--------------------------------------------------------------------------------
/os_final/tree/Documentos/Ens.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Documentos/Ens.doc
--------------------------------------------------------------------------------
/os_final/tree/Documentos/Peticiones.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Documentos/Peticiones.doc
--------------------------------------------------------------------------------
/os_final/tree/Documentos/Programas.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Documentos/Programas.doc
--------------------------------------------------------------------------------
/os_final/tree/Documentos/Servicios.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Documentos/Servicios.doc
--------------------------------------------------------------------------------
/os_final/tree/Documentos/Trabajo.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Documentos/Trabajo.doc
--------------------------------------------------------------------------------
/os_final/tree/Documentos/Transputer.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Documentos/Transputer.doc
--------------------------------------------------------------------------------
/os_final/tree/Editor.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Editor.p
--------------------------------------------------------------------------------
/os_final/tree/Ejecutable.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Ejecutable.p
--------------------------------------------------------------------------------
/os_final/tree/Ens.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Ens.p
--------------------------------------------------------------------------------
/os_final/tree/GZIP.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/GZIP.p
--------------------------------------------------------------------------------
/os_final/tree/Hora.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Hora.p
--------------------------------------------------------------------------------
/os_final/tree/Info.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Info.p
--------------------------------------------------------------------------------
/os_final/tree/Interfaz.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Interfaz.p
--------------------------------------------------------------------------------
/os_final/tree/Modela.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Modela.p
--------------------------------------------------------------------------------
/os_final/tree/Monitor.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Monitor.p
--------------------------------------------------------------------------------
/os_final/tree/Pruebas/float.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Pruebas/float.c
--------------------------------------------------------------------------------
/os_final/tree/SOM.32.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/SOM.32.bin
--------------------------------------------------------------------------------
/os_final/tree/TAR.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/TAR.p
--------------------------------------------------------------------------------
/os_final/tree/Vaciado.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/Vaciado.p
--------------------------------------------------------------------------------
/os_final/tree/c/CC.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/CC.c
--------------------------------------------------------------------------------
/os_final/tree/c/CCanasin.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/CCanasin.c
--------------------------------------------------------------------------------
/os_final/tree/c/CCexpr.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/CCexpr.c
--------------------------------------------------------------------------------
/os_final/tree/c/CCgencod.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/CCgencod.c
--------------------------------------------------------------------------------
/os_final/tree/c/CCinter.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/CCinter.c
--------------------------------------------------------------------------------
/os_final/tree/c/CCvarios.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/CCvarios.c
--------------------------------------------------------------------------------
/os_final/tree/c/CCvars.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/CCvars.c
--------------------------------------------------------------------------------
/os_final/tree/c/CPC.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/CPC.c
--------------------------------------------------------------------------------
/os_final/tree/c/Checar.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Checar.c
--------------------------------------------------------------------------------
/os_final/tree/c/Compara.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Compara.c
--------------------------------------------------------------------------------
/os_final/tree/c/Concat.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Concat.c
--------------------------------------------------------------------------------
/os_final/tree/c/Conjunto.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Conjunto.c
--------------------------------------------------------------------------------
/os_final/tree/c/Copiador.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Copiador.c
--------------------------------------------------------------------------------
/os_final/tree/c/DARC.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/DARC.c
--------------------------------------------------------------------------------
/os_final/tree/c/DZIP.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/DZIP.c
--------------------------------------------------------------------------------
/os_final/tree/c/Divide.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Divide.c
--------------------------------------------------------------------------------
/os_final/tree/c/Editor.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Editor.c
--------------------------------------------------------------------------------
/os_final/tree/c/Efem.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Efem.c
--------------------------------------------------------------------------------
/os_final/tree/c/Ejecutable.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Ejecutable.c
--------------------------------------------------------------------------------
/os_final/tree/c/Ens.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Ens.c
--------------------------------------------------------------------------------
/os_final/tree/c/Filtro.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Filtro.c
--------------------------------------------------------------------------------
/os_final/tree/c/GZIP.C:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/GZIP.C
--------------------------------------------------------------------------------
/os_final/tree/c/Hora.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Hora.c
--------------------------------------------------------------------------------
/os_final/tree/c/Inflate.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Inflate.c
--------------------------------------------------------------------------------
/os_final/tree/c/Info.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Info.c
--------------------------------------------------------------------------------
/os_final/tree/c/Interfaz.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Interfaz.c
--------------------------------------------------------------------------------
/os_final/tree/c/Libro.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Libro.c
--------------------------------------------------------------------------------
/os_final/tree/c/M3D.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/M3D.c
--------------------------------------------------------------------------------
/os_final/tree/c/Modela.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Modela.c
--------------------------------------------------------------------------------
/os_final/tree/c/Monitor.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Monitor.c
--------------------------------------------------------------------------------
/os_final/tree/c/Prepara.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Prepara.c
--------------------------------------------------------------------------------
/os_final/tree/c/Semana_santa.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Semana_santa.c
--------------------------------------------------------------------------------
/os_final/tree/c/Som32.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Som32.c
--------------------------------------------------------------------------------
/os_final/tree/c/TAR.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/TAR.c
--------------------------------------------------------------------------------
/os_final/tree/c/Unreduce.c:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------
2 |
3 | unreduce.c
4 |
5 | The Reducing algorithm is actually a combination of two distinct algorithms.
6 | The first algorithm compresses repeated byte sequences, and the second al-
7 | gorithm takes the compressed stream from the first algorithm and applies a
8 | probabilistic compression method.
9 |
10 | ---------------------------------------------------------------------------*/
11 |
12 | #define READBIT(n,d) {while(bk<(n)){bb|=((ulg)NEXTBYTE)<>=(n);bk-=(n);}
14 |
15 | /**************************************/
16 | /* UnReduce Defines, Typedefs, etc. */
17 | /**************************************/
18 |
19 | #define DLE 144
20 |
21 | typedef byte f_array[64]; /* for followers[256][64] */
22 |
23 | static void LoadFollowers __((void));
24 | /* void flush OF((unsigned)); /* routine from inflate.c */
25 |
26 |
27 |
28 | /*******************************/
29 | /* UnReduce Global Variables */
30 | /*******************************/
31 |
32 | f_array *followers; /* shared work space */
33 |
34 | byte Slen[256];
35 | int factor;
36 |
37 | int L_table[5];
38 |
39 | int D_shift[5];
40 | int D_mask[5];
41 |
42 | int B_table[256];
43 |
44 |
45 | /*************************/
46 | /* Function unReduce() */
47 | /*************************/
48 |
49 | void unReduce() /* expand probabilistically reduced data */
50 | {
51 | register int lchar = 0;
52 | int nchar;
53 | int ExState = 0;
54 | int V = 0;
55 | int Len = 0;
56 | longint s = tam_sin_comprimir; /* number of bytes left to decompress */
57 | unsigned w = 0; /* position in output window slide[] */
58 | unsigned u = 1; /* true if slide[] unflushed */
59 | int a,b;
60 |
61 | bb = 0;
62 | bk = 0;
63 | L_table[0] = 0;
64 | L_table[1] = 0x7f;
65 | L_table[2] = 0x3f;
66 | L_table[3] = 0x1f;
67 | L_table[4] = 0x0f;
68 |
69 | D_shift[0] = 0;
70 | D_shift[1] = 0x07;
71 | D_shift[2] = 0x06;
72 | D_shift[3] = 0x05;
73 | D_shift[4] = 0x04;
74 |
75 | D_mask[0] = 0;
76 | D_mask[1] = 0x01;
77 | D_mask[2] = 0x03;
78 | D_mask[3] = 0x07;
79 | D_mask[4] = 0x0f;
80 |
81 | mask_bits[0] = 0;
82 | mask_bits[1] = 0x1;
83 | mask_bits[2] = 0x3;
84 | mask_bits[3] = 0x7;
85 | mask_bits[4] = 0xf;
86 | mask_bits[5] = 0x1f;
87 | mask_bits[6] = 0x3f;
88 | mask_bits[7] = 0x7f;
89 | mask_bits[8] = 0xff;
90 | mask_bits[9] = 0x1ff;
91 | mask_bits[10] = 0x3ff;
92 | mask_bits[11] = 0x7ff;
93 | mask_bits[12] = 0xfff;
94 | mask_bits[13] = 0x1fff;
95 | mask_bits[14] = 0x3fff;
96 | mask_bits[15] = 0x7fff;
97 | mask_bits[16] = 0xffff;
98 |
99 | a = 0;
100 | B_table[a++] = 8;
101 | for(b = 0; b < 2; b++)
102 | B_table[a++] = 1;
103 | for(b = 0; b < 2; b++)
104 | B_table[a++] = 2;
105 | for(b = 0; b < 4; b++)
106 | B_table[a++] = 3;
107 | for(b = 0; b < 8; b++)
108 | B_table[a++] = 4;
109 | for(b = 0; b < 16; b++)
110 | B_table[a++] = 5;
111 | for(b = 0; b < 32; b++)
112 | B_table[a++] = 6;
113 | for(b = 0; b < 64; b++)
114 | B_table[a++] = 7;
115 | for(b = 0; b < 127; b++)
116 | B_table[a++] = 8;
117 |
118 | followers = (f_array *) (ventana + 0x4000);
119 |
120 | factor = eb_central[6] - 1;
121 | LoadFollowers();
122 |
123 | while (s > 0 /* && (!zipeof) */) {
124 | if (Slen[lchar] == 0)
125 | READBIT(8, nchar) /* ; */
126 | else {
127 | READBIT(1, nchar);
128 | if (nchar != 0)
129 | READBIT(8, nchar) /* ; */
130 | else {
131 | int follower;
132 | int bitsneeded = B_table[Slen[lchar]];
133 | READBIT(bitsneeded, follower);
134 | nchar = followers[lchar][follower];
135 | }
136 | }
137 | /* expand the resulting byte */
138 | switch (ExState) {
139 |
140 | case 0:
141 | if (nchar != DLE) {
142 | s--;
143 | ventana[w++] = (byte) nchar;
144 | if (w == 0x4000) {
145 | flush(w);
146 | w = u = 0;
147 | }
148 | }
149 | else
150 | ExState = 1;
151 | break;
152 |
153 | case 1:
154 | if (nchar != 0) {
155 | V = nchar;
156 | Len = V & L_table[factor];
157 | if (Len == L_table[factor])
158 | ExState = 2;
159 | else
160 | ExState = 3;
161 | } else {
162 | s--;
163 | ventana[w++] = DLE;
164 | if (w == 0x4000)
165 | {
166 | flush(w);
167 | w = u = 0;
168 | }
169 | ExState = 0;
170 | }
171 | break;
172 |
173 | case 2:{
174 | Len += nchar;
175 | ExState = 3;
176 | }
177 | break;
178 |
179 | case 3:{
180 | register unsigned e;
181 | register unsigned n = Len + 3;
182 | register unsigned d = w - ((((V >> D_shift[factor]) &
183 | D_mask[factor]) << 8) + nchar + 1);
184 |
185 | s -= n;
186 | do {
187 | n -= (e = (e = 0x4000 - ((d &= 0x3fff) > w ? d : w)) > n ?
188 | n : e);
189 | if (u && w <= d)
190 | {
191 | memset(ventana + w, 0, e);
192 | w += e;
193 | d += e;
194 | }
195 | else
196 | if (w - d < e) /* (assume unsigned comparison) */
197 | do { /* slow to avoid memcpy() overlap */
198 | ventana[w++] = ventana[d++];
199 | } while (--e);
200 | else
201 | {
202 | memcpy(ventana + w, ventana + d, e);
203 | w += e;
204 | d += e;
205 | }
206 | if (w == 0x4000)
207 | {
208 | flush(w);
209 | w = u = 0;
210 | }
211 | } while (n);
212 |
213 | ExState = 0;
214 | }
215 | break;
216 | }
217 |
218 | /* store character for next iteration */
219 | lchar = nchar;
220 | }
221 |
222 | /* flush out slide */
223 | flush(w);
224 | }
225 |
226 |
227 |
228 |
229 |
230 | /******************************/
231 | /* Function LoadFollowers() */
232 | /******************************/
233 |
234 | static void LoadFollowers()
235 | {
236 | register int x;
237 | register int i;
238 |
239 | for (x = 255; x >= 0; x--) {
240 | READBIT(6, Slen[x]);
241 | for (i = 0; (byte) i < Slen[x]; i++) {
242 | READBIT(8, followers[x][i]);
243 | }
244 | }
245 | }
246 |
--------------------------------------------------------------------------------
/os_final/tree/c/Unshrink.c:
--------------------------------------------------------------------------------
1 | /*---------------------------------------------------------------------------
2 |
3 | unshrink.c
4 |
5 | Shrinking is a Dynamic Lempel-Ziv-Welch compression algorithm with partial
6 | clearing.
7 |
8 | ---------------------------------------------------------------------------*/
9 |
10 |
11 | #define MAX_BITS 13 /* used in unShrink() */
12 | #define HSIZE (1 << MAX_BITS) /* size of global work area */
13 |
14 | union work {
15 | struct {
16 | short *Prefix_of; /* (8194 * sizeof(short)) */
17 | byte *Suffix_of; /* also s-f length_nodes (smaller) */
18 | byte *Stack; /* also s-f distance_nodes (smaller) */
19 | } shrink;
20 | };
21 | union work area;
22 |
23 | # define prefix_of area.shrink.Prefix_of
24 | # define suffix_of area.shrink.Suffix_of
25 | # define stack area.shrink.Stack
26 |
27 |
28 | /*************************************/
29 | /* UnShrink Defines, Globals, etc. */
30 | /*************************************/
31 |
32 | /* MAX_BITS 13 (in unzip.h; defines size of global work area) */
33 | #define INIT_BITS 9
34 | #define FIRST_ENT 257
35 | #define CLEAR 256
36 | #define GetCode(dest) READBIT(codesize,dest)
37 |
38 | static void partial_clear __((void)); /* local prototype */
39 |
40 | int codesize, maxcode, maxcodemax, free_ent;
41 |
42 |
43 |
44 |
45 | /*************************/
46 | /* Function unShrink() */
47 | /*************************/
48 |
49 | void unShrink()
50 | {
51 | register int code;
52 | register int stackp;
53 | int finchar;
54 | int oldcode;
55 | int incode;
56 |
57 |
58 | bb = 0;
59 | bk = 0;
60 | zipeof = 0;
61 |
62 | memset(ventana, 0, 32776);
63 | prefix_of = ventana;
64 | suffix_of = ventana + ((HSIZE + 2) * sizeof(short));
65 | stack = ventana + ((HSIZE + 2) * sizeof(short)) + HSIZE + 2;
66 |
67 | mask_bits[0] = 0;
68 | mask_bits[1] = 0x1;
69 | mask_bits[2] = 0x3;
70 | mask_bits[3] = 0x7;
71 | mask_bits[4] = 0xf;
72 | mask_bits[5] = 0x1f;
73 | mask_bits[6] = 0x3f;
74 | mask_bits[7] = 0x7f;
75 | mask_bits[8] = 0xff;
76 | mask_bits[9] = 0x1ff;
77 | mask_bits[10] = 0x3ff;
78 | mask_bits[11] = 0x7ff;
79 | mask_bits[12] = 0xfff;
80 | mask_bits[13] = 0x1fff;
81 | mask_bits[14] = 0x3fff;
82 | mask_bits[15] = 0x7fff;
83 | mask_bits[16] = 0xffff;
84 |
85 | /* decompress the file */
86 | codesize = INIT_BITS;
87 | maxcode = (1 << codesize) - 1;
88 | maxcodemax = HSIZE; /* (1 << MAX_BITS) */
89 | free_ent = FIRST_ENT;
90 |
91 | code = maxcodemax;
92 | do {
93 | prefix_of[code] = -1;
94 | } while (--code > 255);
95 | /*
96 | OvdL: -Ox with SCO's 3.2.0 cc gives
97 | a. warning: overflow in constant multiplication
98 | b. segmentation fault (core dumped) when using the executable
99 | for (code = maxcodemax; code > 255; code--)
100 | prefix_of[code] = -1;
101 | */
102 |
103 | for (code = 255; code >= 0; code--) {
104 | prefix_of[code] = 0;
105 | suffix_of[code] = (byte) code;
106 | }
107 |
108 | GetCode(oldcode);
109 | if (zipeof) {
110 | return;
111 | }
112 |
113 | finchar = oldcode;
114 |
115 | fputc(finchar, archivo_nuevo);
116 | calcula_crc(&finchar, 1);
117 |
118 | stackp = HSIZE;
119 |
120 | while (!zipeof) {
121 | GetCode(code);
122 | if (zipeof) {
123 | return;
124 | }
125 |
126 | while (code == CLEAR) {
127 | GetCode(code);
128 | switch (code) {
129 | case 1:
130 | codesize++;
131 | if (codesize == MAX_BITS)
132 | maxcode = maxcodemax;
133 | else
134 | maxcode = (1 << codesize) - 1;
135 | break;
136 |
137 | case 2:
138 | partial_clear();
139 | break;
140 | }
141 |
142 | GetCode(code);
143 | if (zipeof) {
144 | return;
145 | }
146 | }
147 |
148 |
149 | /* special case for KwKwK string */
150 | incode = code;
151 | if (prefix_of[code] == -1) {
152 | stack[--stackp] = (byte) finchar;
153 | code = oldcode;
154 | }
155 | /* generate output characters in reverse order */
156 | while (code >= FIRST_ENT) {
157 | if (prefix_of[code] == -1) {
158 | stack[--stackp] = (byte) finchar;
159 | code = oldcode;
160 | } else {
161 | stack[--stackp] = suffix_of[code];
162 | code = prefix_of[code];
163 | }
164 | }
165 |
166 | finchar = suffix_of[code];
167 | stack[--stackp] = (byte) finchar;
168 |
169 |
170 | /* and put them out in forward order, block copy */
171 | /*
172 | if ((HSIZE - stackp + outcnt) < OUTBUFSIZ) {
173 | memcpy(outptr, &stack[stackp], HSIZE - stackp);
174 | outptr += HSIZE - stackp;
175 | outcnt += HSIZE - stackp;
176 | stackp = HSIZE;
177 | }
178 | else
179 | */
180 | /* output byte by byte if we can't go by blocks */
181 | calcula_crc(stack + stackp, HSIZE - stackp);
182 | while (stackp < HSIZE) {
183 | if(fputc(stack[stackp++], archivo_nuevo) == -1) {
184 | color(15);
185 | puts(" Error de escritura\r\n");
186 | return;
187 | }
188 | }
189 |
190 | /* generate new entry */
191 | code = free_ent;
192 | if (code < maxcodemax) {
193 | prefix_of[code] = oldcode;
194 | suffix_of[code] = (byte) finchar;
195 |
196 | do
197 | code++;
198 | while ((code < maxcodemax) && (prefix_of[code] != -1));
199 |
200 | free_ent = code;
201 | }
202 | /* remember previous code */
203 | oldcode = incode;
204 | }
205 | }
206 |
207 |
208 |
209 | /******************************/
210 | /* Function partial_clear() */
211 | /******************************/
212 |
213 | static void partial_clear()
214 | {
215 | register int pr;
216 | register int cd;
217 |
218 | /* mark all nodes as potentially unused */
219 | for (cd = FIRST_ENT; cd < free_ent; cd++)
220 | prefix_of[cd] |= 0x8000;
221 |
222 | /* unmark those that are used by other nodes */
223 | for (cd = FIRST_ENT; cd < free_ent; cd++) {
224 | pr = prefix_of[cd] & 0x7fff; /* reference to another node? */
225 | if (pr >= FIRST_ENT) /* flag node as referenced */
226 | prefix_of[pr] &= 0x7fff;
227 | }
228 |
229 | /* clear the ones that are still marked */
230 | for (cd = FIRST_ENT; cd < free_ent; cd++)
231 | if ((prefix_of[cd] & 0x8000) != 0)
232 | prefix_of[cd] = -1;
233 |
234 | /* find first cleared node as next free_ent */
235 | cd = FIRST_ENT;
236 | while ((cd < maxcodemax) && (prefix_of[cd] != -1))
237 | cd++;
238 | free_ent = cd;
239 | }
240 |
--------------------------------------------------------------------------------
/os_final/tree/c/Vaciado.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/Vaciado.c
--------------------------------------------------------------------------------
/os_final/tree/c/halt.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/c/halt.c
--------------------------------------------------------------------------------
/os_final/tree/cc.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/cc.p
--------------------------------------------------------------------------------
/os_final/tree/concat.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/concat.p
--------------------------------------------------------------------------------
/os_final/tree/halt.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/halt.p
--------------------------------------------------------------------------------
/os_final/tree/lib/E.len:
--------------------------------------------------------------------------------
1 | db 0x4f,0x54,0x42,0x45
2 | db 0x08,0x03,0x19,0x96
3 | ; Tam codigo ejecutable
4 | dw 1985
5 | ; Tam extra
6 | dw 0
7 | ; Tam pila
8 | dw 1024
9 | ; Tam datos
10 | dw 1124
11 | ; Relleno
12 | db 0x00,0x00,0x00,0x00
13 | db 0x00,0x00,0x00,0x00
14 | db 0x00,0x00,0x00,0x00
15 | db 0x00,0x00,0x00,0x00
16 | db 0x00,0x00,0x00,0x00
17 | db 0x00,0x00,0x00,0x00
18 | db 0x00,0x00,0x00,0x00
19 | db 0x00,0x00,0x00,0x00
20 | db 0x00,0x00,0x00,0x00
21 | db 0x00,0x00,0x00,0x00
22 |
--------------------------------------------------------------------------------
/os_final/tree/lib/Graf.len:
--------------------------------------------------------------------------------
1 | qmodo_texto:
2 | ldc 0x11
3 | ldlp 2
4 | sb
5 | ajw -1
6 | call disponible
7 | mint
8 | ldnlp 66
9 | ldlp 3
10 | outword
11 | ldlp 2
12 | mint
13 | ldnlp 67
14 | ldc 1
15 | in
16 | ldc 0
17 | mint
18 | stnl 71
19 | ajw 1
20 | qforza_actualizacion:
21 | mint
22 | ldnl 68
23 | ldnlp 1000
24 | dup
25 | stl 1
26 | ldnlp 25
27 | stl 2
28 | q:
29 | ldc -1
30 | ldl 1
31 | stnl 0
32 | ldl 1
33 | ldnlp 1
34 | stl 1
35 | ldl 1
36 | ldl 2
37 | diff
38 | eqc 0
39 | cj q
40 | ret
41 |
42 | qmodo_grafico:
43 | ldc 0x10
44 | ldlp 2
45 | sb
46 | ajw -1
47 | call disponible
48 | mint
49 | ldnlp 66
50 | ldlp 3
51 | outword
52 | ldlp 2
53 | mint
54 | ldnlp 67
55 | ldc 1
56 | in
57 | ldc 0
58 | mint
59 | stnl 71
60 | ajw 1
61 | j qforza_actualizacion
62 |
63 | qdibuja_pixel:
64 | ajw -3
65 | ldc 0x12
66 | ldlp 1
67 | sb
68 | ldl 5
69 | ldlp 1
70 | adc 1
71 | sb
72 | ldl 5
73 | ldc 8
74 | shr
75 | ldlp 1
76 | adc 2
77 | sb
78 | ldl 6
79 | ldlp 1
80 | adc 3
81 | sb
82 | ldl 6
83 | ldc 8
84 | shr
85 | ldlp 2
86 | sb
87 | ldl 7
88 | ldlp 2
89 | adc 1
90 | sb
91 | ldl 8
92 | ldlp 2
93 | adc 2
94 | sb
95 | ldl 9
96 | ldlp 2
97 | adc 3
98 | sb
99 | call disponible
100 | mint
101 | ldnlp 66
102 | ldlp 1
103 | outword
104 | ldlp 1
105 | mint
106 | ldnlp 67
107 | ldc 1
108 | in
109 | ldc 0
110 | mint
111 | stnl 71
112 | ajw 3
113 | ret
114 |
115 | qdibuja_pixel_256:
116 | ajw -3
117 | ldc 0x13
118 | ldlp 1
119 | sb
120 | ldl 5
121 | ldlp 1
122 | adc 1
123 | sb
124 | ldl 5
125 | ldc 8
126 | shr
127 | ldlp 1
128 | adc 2
129 | sb
130 | ldl 6
131 | ldlp 1
132 | adc 3
133 | sb
134 | ldl 6
135 | ldc 8
136 | shr
137 | ldlp 2
138 | sb
139 | ldl 7
140 | ldlp 2
141 | adc 1
142 | sb
143 | call disponible
144 | mint
145 | ldnlp 66
146 | ldlp 1
147 | outword
148 | ldlp 1
149 | mint
150 | ldnlp 67
151 | ldc 1
152 | in
153 | ldc 0
154 | mint
155 | stnl 71
156 | ajw 3
157 | ret
158 |
159 | qvacia_bloque_256:
160 | ajw -1
161 | vacia_bloque_256:
162 | mint
163 | ldnl 69
164 | cj vacia_bloque
165 | j vacia_bloque_256
166 | vacia_bloque:
167 | ldc 1
168 | mint
169 | stnl 69
170 | mint
171 | ldc 0x00003431
172 | outword
173 | mint
174 | ldl 3
175 | outword
176 | mint
177 | ldl 4
178 | outword
179 | mint
180 | ldl 5
181 | outword
182 | mint
183 | ldl 6
184 | outword
185 | ldl 5
186 | ldl 6
187 | prod
188 | ldl 7
189 | rev
190 | mint
191 | rev
192 | out
193 | ldc 0
194 | mint
195 | stnl 69
196 | ajw 1
197 | ret
198 |
199 | disponible:
200 | mint
201 | ldnl 71
202 | cj disponible1
203 | j disponible
204 | disponible1:
205 | ldc 1
206 | mint
207 | stnl 71
208 | ret
209 |
--------------------------------------------------------------------------------
/os_final/tree/lib/MAT.len:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/lib/MAT.len
--------------------------------------------------------------------------------
/os_final/tree/lib/Mensajes.len:
--------------------------------------------------------------------------------
1 | ;
2 | ; Rutinas para mandar y recibir mensajes.
3 | ;
4 | ; Para uso por el Sistema Operativo Mexicano de 32 bits.
5 | ;
6 | ; ctrl_maestro(mensaje)
7 | ;
8 | qctrl_maestro:
9 | ldl 2
10 | ajw -1
11 | stl 0
12 | EMENSAJ3:
13 | mint
14 | ldnl 71
15 | cj EMENSAJ4
16 | ldc 500
17 | ldtimer
18 | sum
19 | tin
20 | j EMENSAJ3
21 | EMENSAJ4:
22 | ldc 1
23 | mint
24 | stnl 71
25 | ldlp 0
26 | mint
27 | ldnlp 66
28 | ldc 4
29 | out
30 | ldlp 0
31 | mint
32 | ldnlp 67
33 | ldc 1
34 | in
35 | ldc 0
36 | mint
37 | stnl 71
38 | ajw 1
39 | ret
40 |
41 | ;
42 | ; mandar(canal, *mensaje, bytes)
43 | ;
44 | qmandar:
45 | ldl 3
46 | ldl 2
47 | ldl 4
48 | out
49 | ret
50 |
51 | ;
52 | ; recibir(canal, *mensaje, bytes)
53 | ;
54 | qrecibir:
55 | ldl 3
56 | ldl 2
57 | ldl 4
58 | in
59 | ret
60 |
61 | ;
62 | ; memcpy(destino, origen, bytes)
63 | ;
64 | qmemcpy:
65 | ldl 3
66 | ldl 2
67 | ldl 4
68 | move
69 | ret
70 |
71 | ;
72 | ; memset(destino, byte, cuantos)
73 | ;
74 | qmemset:
75 | ldl 4
76 | cj memset
77 | ldl 3
78 | ldl 2
79 | sb
80 | ldl 2
81 | adc 1
82 | stl 2
83 | ldl 4
84 | adc -1
85 | stl 4
86 | j qmemset
87 | memset:
88 | ret
89 |
90 | q_finprog:
91 | ldc FINPROG-P2
92 | ldpi
93 | P2:
94 | adc 15
95 | ldc -16
96 | and
97 | ret
98 |
99 | ;
100 | ; inicia_tarea(direccion, workspace)
101 | ; La tarea siempre inicia en prioridad baja. (1)
102 | ;
103 | qinicia_tarea:
104 | ldl 2
105 | ldl 3
106 | stnl 0
107 | ldc MITAREA-P1
108 | ldpi
109 | P1:
110 | ldl 3
111 | stnl -1
112 | ldl 3
113 | ldc -4
114 | and
115 | ldc 1
116 | or
117 | runp
118 | ret
119 | MITAREA:
120 | ldl 0
121 | ldc 2
122 | ldpi
123 | stl 0
124 | gcall
125 | ajw -2
126 | ldc 22
127 | ldlp 1
128 | adc 3
129 | sb
130 | MITAREA1:
131 | mint
132 | ldnl 70
133 | cj MITAREA2
134 | j MITAREA1
135 | MITAREA2:
136 | ldc 1
137 | mint
138 | stnl 70
139 | mint
140 | ldnlp 64
141 | ldlp 1
142 | adc 3
143 | outword
144 | ldlp 0
145 | mint
146 | ldnlp 65
147 | ldc 4
148 | in
149 | ldc 0
150 | mint
151 | stnl 70
152 | stopp
153 |
154 | FINPROG:
155 |
--------------------------------------------------------------------------------
/os_final/tree/lib/Stdio.len:
--------------------------------------------------------------------------------
1 | ;
2 | ; Libreria de soporte para los programas escritos en C.
3 | ;
4 |
5 | qexecp:
6 | ldlp 0
7 | ldl 2
8 | stnl 4
9 | ldc 7
10 | ldpi
11 | ldl 2
12 | stnl 0
13 | ldl 2
14 | gajw
15 | ldl 1
16 | gcall
17 | ldl 0
18 | gajw
19 | ret
20 |
21 | qcheca_tecla:
22 | ldc 0x05
23 | ldlp 1
24 | adc 3
25 | sb
26 | j EMENSAJE
27 |
28 | qcheca_int:
29 | call qcheca_tecla
30 | stl 2
31 | ldl 2
32 | eqc 3
33 | cj checa_int
34 | ldc 1
35 | ldl 1
36 | call qexit
37 | checa_int:
38 | ldl 2
39 | ret
40 |
41 | qclock:
42 | ldtimer
43 | ret
44 |
45 | qrand:
46 | ldtimer
47 | mint
48 | ldc 1
49 | diff
50 | and
51 | ret
52 |
53 | qespera_tiempo:
54 | ldl 2
55 | ldtimer
56 | sum
57 | tin
58 | ret
59 |
60 | qfread:
61 | ldc 0x13
62 | ldlp 1
63 | adc 3
64 | sb
65 | j EMENSAJE
66 |
67 | qmalloc:
68 | ldc 0x15
69 | ldlp 1
70 | adc 3
71 | sb
72 | j EMENSAJE
73 |
74 | qfree:
75 | ldc 0x16
76 | ldlp 1
77 | adc 3
78 | sb
79 | j EMENSAJE
80 |
81 | qexec:
82 | ldc 0x18
83 | ldlp 1
84 | adc 3
85 | sb
86 | j EMENSAJE
87 |
88 | qexecm:
89 | ldc 0x17
90 | ldlp 1
91 | adc 3
92 | sb
93 | j EMENSAJE
94 |
95 | qmemoria_disponib:
96 | ldc 0x19
97 | ldlp 1
98 | adc 3
99 | sb
100 | j EMENSAJE
101 |
102 | qfwrite:
103 | ldc 0x14
104 | ldlp 1
105 | adc 3
106 | sb
107 | j EMENSAJE
108 |
109 | q_llamada:
110 | ldl 2
111 | ajw -4
112 | ldc 2
113 | ldpi
114 | stl 0
115 | gcall
116 | ajw -3
117 | stl 0
118 | stl 1
119 | stl 2
120 | ldl 0
121 | ldl 6
122 | stnl 0
123 | ldl 1
124 | ldl 7
125 | stnl 0
126 | ldl 2
127 | ldl 8
128 | stnl 0
129 | ldlp 0
130 | ldl 9
131 | stnl 0
132 | ajw 3
133 | ret
134 |
135 | qexit:
136 | ldl 1
137 | ldnlp -4
138 | gajw
139 | ret
140 |
141 | qgetchar:
142 | call qcheca_tecla
143 | stl 1
144 | ldl 1
145 | cj qgetchar
146 | ldl 1
147 | ret
148 |
149 | qftell:
150 | ldc 17
151 | ldlp 1
152 | adc 3
153 | sb
154 | j EMENSAJE
155 |
156 | qputs:
157 | ldl 2
158 | lb
159 | cj puts
160 | ldl 2
161 | lb
162 | ldl 1
163 | call qputchar
164 | ldl 2
165 | adc 1
166 | stl 2
167 | j qputs
168 | puts:
169 | ret
170 |
171 | qgets:
172 | ldl 2
173 | stl 1
174 | ldl 1
175 | stl 2
176 | P2:
177 | call qgetchar
178 | stl 3
179 | ldl 3
180 | eqc 8
181 | cj P1
182 | ldl 2
183 | ldl 1
184 | diff
185 | cj P2
186 | ldc 8
187 | ldc 0
188 | call qputchar
189 | ldl 2
190 | adc -1
191 | stl 2
192 | j P2
193 | P1:
194 | ldl 3
195 | eqc 13
196 | cj P3
197 | ldc 0
198 | ldl 2
199 | sb
200 | ldc 13
201 | ldc 0
202 | call qputchar
203 | ldc 10
204 | ldc 0
205 | call qputchar
206 | ret
207 | P3:
208 | ldl 3
209 | ldc 0
210 | call qputchar
211 | ldl 3
212 | ldl 2
213 | sb
214 | ldl 2
215 | adc 1
216 | stl 2
217 | j P2
218 |
219 | qputchar:
220 | testerr
221 | ldc 6
222 | ldlp 1
223 | adc 3
224 | sb
225 | j EMENSAJE
226 |
227 | qfseek:
228 | ldc 16
229 | ldlp 1
230 | adc 3
231 | sb
232 | j EMENSAJE
233 |
234 | qimprime:
235 | ldc 18
236 | ldlp 1
237 | adc 3
238 | sb
239 | j EMENSAJE
240 |
241 | qcrea_dir:
242 | ldc 13
243 | ldlp 1
244 | adc 3
245 | sb
246 | j EMENSAJE
247 |
248 | qborra_dir:
249 | ldc 14
250 | ldlp 1
251 | adc 3
252 | sb
253 | j EMENSAJE
254 |
255 | qatributo:
256 | ldc 15
257 | ldlp 1
258 | adc 3
259 | sb
260 | j EMENSAJE
261 |
262 | qvolumen:
263 | ldc 12
264 | ldlp 1
265 | adc 3
266 | sb
267 | j EMENSAJE
268 |
269 | qespacio_libre:
270 | ldc 11
271 | ldlp 1
272 | adc 3
273 | sb
274 | j EMENSAJE
275 |
276 | qabre_dir:
277 | ldc 10
278 | ldlp 1
279 | adc 3
280 | sb
281 | j EMENSAJE
282 |
283 | qremove:
284 | ldc 7
285 | ldlp 1
286 | adc 3
287 | sb
288 | j EMENSAJE
289 |
290 | qrename:
291 | ldc 8
292 | ldlp 1
293 | adc 3
294 | sb
295 | j EMENSAJE
296 |
297 | qhora:
298 | ldc 9
299 | ldlp 1
300 | adc 3
301 | sb
302 | j EMENSAJE
303 |
304 | qfclose:
305 | ldc 2
306 | ldlp 1
307 | adc 3
308 | sb
309 | j EMENSAJE
310 |
311 | qfgetc:
312 | ldc 3
313 | ldlp 1
314 | adc 3
315 | sb
316 | j EMENSAJE
317 |
318 | qfputc:
319 | ldc 4
320 | ldlp 1
321 | adc 3
322 | sb
323 | j EMENSAJE
324 |
325 | qfopen:
326 | ldc 1
327 | ldlp 1
328 | adc 3
329 | sb
330 |
331 | EMENSAJE:
332 | ajw -1
333 | EMENSAJ1:
334 | mint
335 | ldnl 70
336 | cj EMENSAJ2
337 | j EMENSAJ1
338 | EMENSAJ2:
339 | ldc 1
340 | mint
341 | stnl 70
342 | mint
343 | ldnlp 64
344 | ldlp 2
345 | adc 3
346 | outword
347 | ldlp 2
348 | mint
349 | ldnlp 65
350 | ldc 4
351 | in
352 | ldc 0
353 | mint
354 | stnl 70
355 | ldl 2
356 | ajw 1
357 | ret
358 |
359 | ;
360 | ; Rutinas para mandar y recibir mensajes.
361 | ;
362 | ; ctrl_maestro(mensaje)
363 | ;
364 | qctrl_maestro:
365 | ldl 2
366 | ajw -1
367 | stl 0
368 | EMENSAJ3:
369 | mint
370 | ldnl 71
371 | cj EMENSAJ4
372 | j EMENSAJ3
373 | EMENSAJ4:
374 | ldc 1
375 | mint
376 | stnl 71
377 | ldlp 0
378 | mint
379 | ldnlp 66
380 | ldc 4
381 | out
382 | ldlp 0
383 | mint
384 | ldnlp 67
385 | ldc 1
386 | in
387 | ldc 0
388 | mint
389 | stnl 71
390 | ajw 1
391 | ret
392 |
393 | ;
394 | ; mandar(canal, *mensaje, bytes)
395 | ;
396 | qmandar:
397 | ldl 3
398 | ldl 2
399 | ldl 4
400 | out
401 | ret
402 |
403 | ;
404 | ; recibir(canal, *mensaje, bytes)
405 | ;
406 | qrecibir:
407 | ldl 3
408 | ldl 2
409 | ldl 4
410 | in
411 | ret
412 |
413 | ;
414 | ; memcpy(destino, origen, bytes)
415 | ;
416 | qmemcpy:
417 | ldl 3
418 | ldl 2
419 | ldl 4
420 | move
421 | ret
422 |
423 | ;
424 | ; memset(destino, byte, cuantos)
425 | ;
426 | qmemset:
427 | ldl 4
428 | cj memset
429 | ldl 3
430 | ldl 2
431 | sb
432 | ldl 2
433 | adc 1
434 | stl 2
435 | ldl 4
436 | adc -1
437 | stl 4
438 | j qmemset
439 | memset:
440 | ret
441 |
442 | ;
443 | ; memzero(destino, cuantos)
444 | ;
445 | qmemzero:
446 | ldl 3
447 | cj memset
448 | ldc 0
449 | ldl 2
450 | sb
451 | ldl 2
452 | adc 1
453 | stl 2
454 | ldl 3
455 | adc -1
456 | stl 3
457 | j qmemzero
458 |
459 | q_finprog:
460 | ldc FINPROG-P4
461 | ldpi
462 | P4:
463 | adc 15
464 | ldc -16
465 | and
466 | ret
467 |
468 | ;
469 | ; inicia_tarea(direccion, workspace, argc, argv)
470 | ;
471 | qinicia_tarea:
472 | ldl 2
473 | ldl 3
474 | stnl 0
475 | ldl 4
476 | ldl 3
477 | stnl 1
478 | ldl 5
479 | ldl 3
480 | stnl 2
481 | ldc MITAREA-P5
482 | ldl 3
483 | startp
484 | P5:
485 | ret
486 | MITAREA:
487 | ajw -4
488 | ldc 7
489 | ldpi
490 | stl 0
491 | ldl 5
492 | stl 2
493 | ldl 6
494 | stl 3
495 | ldl 4
496 | gcall
497 | stopp
498 |
499 | FINPROG:
500 |
--------------------------------------------------------------------------------
/os_final/tree/m3d.p:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/os_final/tree/m3d.p
--------------------------------------------------------------------------------
/pascal/ANALEXIC.PAS:
--------------------------------------------------------------------------------
1 | { Programa: Compilador de Pascal para el Inmos T805 }
2 | { }
3 | { Módulo : Analizador Léxico }
4 | { }
5 | { (c) Copyright 1993-1994 Oscar Toledo G. }
6 | { Todos los derechos reservados. }
7 |
8 | { Inicializa el analizador léxico }
9 | PROCEDURE inicanalex;
10 | BEGIN
11 | pal[1]:='AND';
12 | pal[2]:='ARRAY';
13 | pal[3]:='ASM';
14 | pal[4]:='BEGIN';
15 | pal[5]:='CASE';
16 | pal[6]:='CONST';
17 | pal[7]:='DIV';
18 | pal[8]:='DO';
19 | pal[9]:='DOWNTO';
20 | pal[10]:='ELSE';
21 | pal[11]:='END';
22 | pal[12]:='FILE'; { No terminado }
23 | pal[13]:='FOR';
24 | pal[14]:='FORWARD';
25 | pal[15]:='FUNCTION';
26 | pal[16]:='GOTO';
27 | pal[17]:='IF';
28 | pal[18]:='IN';
29 | pal[19]:='LABEL';
30 | pal[20]:='MOD';
31 | pal[21]:='NIL';
32 | pal[22]:='NOT';
33 | pal[23]:='OF';
34 | pal[24]:='OR';
35 | pal[25]:='PACKED'; { Sin efecto }
36 | pal[26]:='PROCEDURE';
37 | pal[27]:='PROGRAM';
38 | pal[28]:='RECORD';
39 | pal[29]:='REPEAT';
40 | pal[30]:='SET';
41 | pal[31]:='SHL';
42 | pal[32]:='SHR';
43 | pal[33]:='STRING';
44 | pal[34]:='THEN';
45 | pal[35]:='TO';
46 | pal[36]:='TYPE';
47 | pal[37]:='UNTIL';
48 | pal[38]:='VAR';
49 | pal[39]:='WHILE';
50 | pal[40]:='WITH';
51 | pal[41]:='XOR';
52 | pal[42]:='_FINPROG';
53 | linact:=0; { Inicializa el contador de lineas }
54 | caract:=' '; { Forza la lectura de un caracter }
55 | aplin:=1; { Empieza en el 1er. caracter de la linea ficticia }
56 | tamlin:=1; { Tamaño ficticio de linea (para forzar carga de linea) }
57 | END;
58 |
59 | { Obtiene una linea de la entrada }
60 | PROCEDURE obtlin;
61 | VAR car:CHAR;
62 | BEGIN
63 | linact:=linact+1;
64 | write(chr(1),linact:4,' ');
65 | linea:='';
66 | WHILE NOT (eoln OR eof) DO
67 | BEGIN
68 | read(car);
69 | write(car);
70 | IF car<>chr(8) THEN linea:=linea+car
71 | ELSE linea:=copy(linea,1,length(linea)-1)
72 | END;
73 | writeln;
74 | IF NOT eof THEN readln { Absorbe el fin de linea }
75 | ELSE linea:=linea+chr(26); { Caracter indicador de fin de archivo }
76 | linea:=linea+' ';
77 | tamlin:=length(linea);
78 | aplin:=0;
79 | IF length(linea)>4 THEN
80 | IF (linea[1]='{') AND (linea[2]='$') AND
81 | (linea[3]='1') AND (linea[4]='}') THEN optcc:=TRUE
82 | END;
83 |
84 | { Obtiene un caracter }
85 | PROCEDURE obtcar;
86 | BEGIN
87 | IF aplin>=tamlin THEN obtlin; { Excedio la linea, obtener otra linea }
88 | aplin:=aplin+1; { Avanza el apuntador }
89 | caract:=linea[aplin] { Toma el caracter }
90 | END;
91 |
92 | { Obtiene un lexema }
93 | PROCEDURE obtlex;
94 | VAR
95 | caractm:CHAR;
96 | min,cen,max:INTEGER;
97 | conteo,conteo2:INTEGER;
98 | fraccion,divisor,signo,exponente:INTEGER;
99 | numproc:REAL;
100 | er:BOOLEAN;
101 | BEGIN
102 | WHILE caract=' ' DO obtcar; { Ignora espacios }
103 | lexema:=CERROR;
104 | numero:=0;
105 | cadena:='';
106 | caractm:=caract;
107 | IF (caractm>='a') AND (caractm<='z') THEN
108 | caractm:=chr(ord(caractm)-32);
109 | IF ((caractm>='A') AND { Detecta identificadores }
110 | (caractm<='Z')) OR (caractm='_') THEN
111 | BEGIN
112 | REPEAT
113 | IF length(cadena)<255 THEN cadena:=cadena+caractm ELSE errorlex(1);
114 | obtcar;
115 | caractm:=caract;
116 | IF (caractm>='a') AND (caractm<='z') THEN
117 | caractm:=chr(ord(caractm)-32)
118 | UNTIL ((caractm<'0') OR (caractm>'9')) AND
119 | ((caractm<'A') OR (caractm>'Z')) AND (caractm<>'_');
120 | min:=1; { Busqueda binaria para saber }
121 | max:=palres; { si es una palabra reservada }
122 | REPEAT
123 | cen:=(min+max) DIV 2;
124 | IF cadena<=pal[cen] THEN max:=cen-1;
125 | IF cadena>=pal[cen] THEN min:=cen+1
126 | UNTIL min>max;
127 | IF (min-1)<=max THEN lexema:=CIDENT
128 | ELSE lexema:=comlex(min-2)
129 | END
130 | ELSE IF caract='{' THEN { Ignora los comentarios }
131 | BEGIN
132 | er:=FALSE;
133 | WHILE (caract<>'}') AND NOT er DO
134 | BEGIN
135 | obtcar;
136 | IF aplin=tamlin THEN { Detecta fin de linea (error) }
137 | BEGIN
138 | errorlex(4);
139 | er:=TRUE
140 | END;
141 | END;
142 | obtcar;
143 | obtlex
144 | END
145 | ELSE IF caract='''' THEN { Procesa una cadena alfanúmerica }
146 | BEGIN
147 | lexema:=CCAD;
148 | conteo2:=1;
149 | WHILE conteo2=1 DO
150 | BEGIN
151 | obtcar;
152 | IF aplin=tamlin THEN { Detecta fin de linea (error) }
153 | BEGIN
154 | errorlex(2);
155 | conteo2:=0
156 | END
157 | ELSE
158 | BEGIN
159 | IF caract='''' THEN { Detecta doble ' }
160 | BEGIN
161 | obtcar;
162 | IF caract<>'''' THEN conteo2:=0
163 | END;
164 | IF conteo2=1 THEN
165 | IF length(cadena)<255 THEN cadena:=cadena+caract ELSE errorlex(1);
166 | END;
167 | END;
168 | END
169 | ELSE IF caract='"' THEN { Procesa una cadena alfanúmerica }
170 | BEGIN
171 | lexema:=CCAD;
172 | conteo2:=1;
173 | WHILE conteo2=1 DO
174 | BEGIN
175 | obtcar;
176 | IF aplin=tamlin THEN { Detecta fin de linea (error) }
177 | BEGIN
178 | errorlex(7);
179 | conteo2:=0
180 | END
181 | ELSE
182 | BEGIN
183 | IF caract='"' THEN { Detecta doble " }
184 | BEGIN
185 | obtcar;
186 | IF caract<>'"' THEN conteo2:=0
187 | END;
188 | IF conteo2=1 THEN
189 | IF length(cadena)<255 THEN cadena:=cadena+caract ELSE errorlex(1);
190 | END;
191 | END;
192 | END
193 | ELSE IF (caract>='0') AND { Procesa números enteros/reales }
194 | (caract<='9') THEN
195 | BEGIN
196 | lexema:=CNUM; { Hasta aquí es un número entero }
197 | REPEAT { Procesa el número }
198 | cadena:=cadena+caract;
199 | numero:=numero*10+(ord(caract)-48);
200 | obtcar
201 | UNTIL (caract<'0') OR (caract>'9');
202 | IF (linea[aplin]='.') AND { Sí encuentra un punto se asegura }
203 | (linea[aplin+1]<>'.') THEN { que no sea de un subrango. }
204 | BEGIN
205 | obtcar;
206 | IF (caract<'0') OR { Se necesita un digito despues del punto }
207 | (caract>'9') THEN errorlex(3)
208 | ELSE
209 | BEGIN
210 | numproc:=numero; { Se encontro que es número real }
211 | lexema:=CNUMREAL;
212 | fraccion:=0; { Calcula la fracción }
213 | divisor:=1;
214 | REPEAT
215 | fraccion:=fraccion*10+(ord(caract)-48);
216 | divisor:=divisor*10;
217 | obtcar
218 | UNTIL (caract<'0') OR (caract>'9');
219 | numproc:=numproc+fraccion/divisor;
220 | END;
221 | END;
222 | IF (caract='E') OR (caract='e') THEN { Procesa el exponente }
223 | BEGIN
224 | IF lexema<>CNUMREAL THEN { Verifica posible conversión }
225 | BEGIN
226 | numproc:=numero;
227 | lexema:=CNUMREAL
228 | END;
229 | obtcar;
230 | signo:=0; { Verifica signo del exponente }
231 | IF caract='-' THEN signo:=1;
232 | IF (caract='-') OR (caract='+') THEN obtcar;
233 | IF (caract<'0') OR (caract>'9') THEN errorlex(3)
234 | ELSE
235 | BEGIN
236 | exponente:=0;
237 | REPEAT
238 | exponente:=exponente*10+(ord(caract)-48);
239 | obtcar
240 | UNTIL (caract<'0') OR (caract>'9');
241 | IF signo=1 THEN exponente:=-exponente;
242 | IF exponente<0 THEN
243 | BEGIN
244 | REPEAT
245 | numproc:=numproc/10;
246 | exponente:=exponente+1
247 | UNTIL exponente=0;
248 | END
249 | ELSE IF exponente>0 THEN
250 | BEGIN
251 | REPEAT
252 | numproc:=numproc*10;
253 | exponente:=exponente-1
254 | UNTIL exponente=0;
255 | END;
256 | END;
257 | END;
258 | IF lexema=CNUMREAL THEN numreal.valor:=numproc;
259 | END
260 | ELSE IF caract='$' THEN { Procesa números hexadecimales }
261 | BEGIN
262 | lexema:=CNUM;
263 | obtcar;
264 | caractm:=caract;
265 | IF (caractm>='a') AND (caractm<='z') THEN
266 | caractm:=chr(ord(caractm)-32);
267 | IF (caractm>='0') AND (caractm<='9') OR
268 | (caractm>='A') AND (caractm<='F') THEN
269 | BEGIN
270 | REPEAT
271 | conteo:=ord(caractm)-48;
272 | IF conteo>9 THEN conteo:=conteo-7;
273 | numero:=(numero SHL 4)+conteo; { Los parentesis no son necesarios }
274 | obtcar;
275 | caractm:=caract;
276 | IF (caractm>='a') AND (caractm<='z') THEN
277 | caractm:=chr(ord(caractm)-32);
278 | UNTIL ((caractm<'0') OR (caractm>'9')) AND
279 | ((caractm<'A') OR (caractm>'F'))
280 | END
281 | ELSE errorlex(5);
282 | END
283 | ELSE
284 | BEGIN
285 | caractm:=caract;
286 | obtcar;
287 | CASE caractm OF
288 | '+': lexema:=CMAS;
289 | '-': lexema:=CMENOS;
290 | '*': lexema:=CPOR;
291 | '/': lexema:=CDIVIDE;
292 | '^': lexema:=CAPUNTA;
293 | '(': lexema:=CPARENI;
294 | ')': lexema:=CPAREND;
295 | '[': lexema:=CLLAVEI;
296 | ']': lexema:=CLLAVED;
297 | ';': lexema:=CPUNTOYCOMA;
298 | ',': lexema:=CCOMA;
299 | '=': lexema:=CIGUAL;
300 | ':': { Verifica := }
301 | IF caract='=' THEN
302 | BEGIN
303 | lexema:=CASIGNA;
304 | obtcar
305 | END
306 | ELSE lexema:=CDOSPUNTOS;
307 | '.': { Verifica .. }
308 | IF caract='.' THEN
309 | BEGIN
310 | lexema:=CPUNTOPUNTO;
311 | obtcar
312 | END
313 | ELSE lexema:=CPUNTO;
314 | '<': { Verifica <= o <> }
315 | IF caract='=' THEN
316 | BEGIN
317 | lexema:=CMENORIGUAL;
318 | obtcar
319 | END
320 | ELSE IF caract='>' THEN
321 | BEGIN
322 | lexema:=CNOIGUAL;
323 | obtcar
324 | END
325 | ELSE lexema:=CMENOR;
326 | '>': { Verifica >= }
327 | IF caract='=' THEN
328 | BEGIN
329 | lexema:=CMAYORIGUAL;
330 | obtcar
331 | END
332 | ELSE lexema:=CMAYOR
333 | ELSE
334 | BEGIN
335 | IF caractm=chr(26) THEN lexema:=CFINDEARCHIVO
336 | ELSE
337 | BEGIN
338 | errorlex(6);
339 | lexema:=CERROR
340 | END
341 | END
342 | END
343 | END
344 | END;
345 |
346 |
--------------------------------------------------------------------------------
/pascal/ERRORES.PAS:
--------------------------------------------------------------------------------
1 | { Programa: Compilador de Pascal para el Inmos T805 }
2 | { }
3 | { Módulo : Mensajes de Errores }
4 | { }
5 | { (c) Copyright 1993-1994 Oscar Toledo G. }
6 | { Todos los derechos reservados. }
7 |
8 | { Posibles errores léxicos }
9 | PROCEDURE errorlex(error:INTEGER);
10 | VAR contador:INTEGER;
11 | BEGIN
12 | write(chr(2));
13 | FOR contador:=1 TO 5+aplin DO
14 | write(' ');
15 | writeln('/\');
16 | write(chr(2));
17 | CASE error OF
18 | 1: writeln('Cadena demasiado larga');
19 | 2: writeln('Falta el '' de cerrado');
20 | 3: writeln('Número invalido');
21 | 4: writeln('Falta }');
22 | 5: writeln('Falta número hexadecimal');
23 | 6: writeln('Caracter invalido');
24 | 7: writeln('Falta el " de cerrado')
25 | END;
26 | END;
27 |
28 | { Posibles errores sintácticos y semanticos }
29 | PROCEDURE error(errnum:INTEGER);
30 | VAR
31 | contador:INTEGER;
32 | BEGIN
33 | write(chr(2));
34 | FOR contador:=1 TO 5+aplin DO write(' ');
35 | writeln('/\');
36 | write(chr(2));
37 | CASE errnum OF
38 | 1: writeln('Etiqueta inexistente');
39 | 2: writeln('Falta constante');
40 | 3: writeln('Falta ''=''');
41 | 4: writeln('Falta identificador');
42 | 5: writeln('Falta '':'' o '';''');
43 | 6: writeln('No computable');
44 | 7: writeln('Franja invalida');
45 | 8: writeln('No se puede usar subscripto');
46 | 9: writeln('Falta ''.''');
47 | 10: writeln('Falta '';''');
48 | 11: writeln('Identificador no declarado');
49 | 12: writeln('Identificador ilegal');
50 | 13: writeln('Falta '':=''');
51 | 14: writeln('Tipos incompatibles');
52 | 15: writeln('El mínimo es mayor que el máximo');
53 | 16: writeln('Falta ''THEN''');
54 | 17: writeln('Falta '';'' o ''END''');
55 | 18: writeln('Falta ''DO''');
56 | 19: writeln('Simbolo incorrecto');
57 | 20: writeln('Falta operador relacional');
58 | 21: writeln('Uso de procedimiento en expresión');
59 | 22: writeln('Falta '')''');
60 | 23: writeln('Factor ilegal');
61 | 24: writeln('La variable no es apuntador');
62 | 25: writeln('Falta ''BEGIN''');
63 | 26: writeln('Falta ''OF''');
64 | 27: writeln('Identificador redefinido');
65 | 28: writeln('Falta ''TO'' o ''DOWNTO''');
66 | 29: writeln('Apuntador a un tipo indefinido');
67 | 30: writeln('Numero fuera de rango');
68 | 31: writeln('Falta ''(''');
69 | 33: writeln('Falta ''[''');
70 | 34: writeln('Falta '']''');
71 | 35: writeln('Numero equivocado de parametros');
72 | 36: writeln('Tipo de dato no reconocido');
73 | 37: writeln('Falta ''PROGRAM''');
74 | 38: writeln('No es matriz ni variable');
75 | 39: writeln('Falta ''..''');
76 | 40: writeln('Variable invalida');
77 | 41: writeln('Paso invalido de argumento');
78 | 42: writeln('Cadena vacia');
79 | 43: writeln('Operador incorrecto');
80 | 44: writeln('Tabla de identificadores excedida');
81 | 45: writeln('Tabla de constantes excedida');
82 | 46: writeln('Tabla de datos excedida');
83 | 47: writeln('Tabla de cadenas excedida');
84 | 48: writeln('Tabla literal de cadenas excedida');
85 | 49: writeln('Expresión demasiado compleja');
86 | 50: writeln('Anidamiento muy profundo');
87 | 51: BEGIN
88 | writeln('No se pueden poner etiquetas');
89 | writeln('dentro de un FOR o CASE')
90 | END;
91 | 52: writeln('Falta ''('' o '';''');
92 | 255: writeln('Error fatal en el compilador')
93 | END;
94 | write(chr(3)) { Indica error en compilación }
95 | END;
96 |
97 |
--------------------------------------------------------------------------------
/pascal/Hanoi.pas:
--------------------------------------------------------------------------------
1 | PROGRAM HANOI (INPUT, OUTPUT);
2 |
3 | CONST
4 | CASOS=3;
5 |
6 | TYPE
7 | SITIOS=(ORIGEN,DESTINO,TRABAJO);
8 | RANGO=1..CASOS;
9 |
10 | VAR
11 | TORRES:ARRAY[RANGO,SITIOS] OF INTEGER;
12 | I:INTEGER;
13 | J:SITIOS;
14 | DEPURA:BOOLEAN;
15 |
16 | PROCEDURE MOVEDISCO ( LUGORG, LUGDES : SITIOS );
17 | VAR
18 | BUSCAR:BOOLEAN;
19 | I,J:INTEGER;
20 |
21 | FUNCTION ELEMENTO (VAR I :INTEGER; COL:SITIOS) : BOOLEAN;
22 | VAR BUSCAR:BOOLEAN;
23 | BEGIN
24 | IF DEPURA THEN WRITELN('++ENTRA ELEMENTO');
25 | BUSCAR:=TRUE;
26 | I:=1;
27 | WHILE (I<=CASOS) AND BUSCAR DO
28 | IF TORRES[I,COL]<>0 THEN BUSCAR:=FALSE
29 | ELSE I:=I+1;
30 | ELEMENTO:=BUSCAR;
31 | IF DEPURA THEN WRITELN('++FIN ELEMENTO,I,BUSCAR=',I,BUSCAR)
32 | END;
33 |
34 | BEGIN
35 | IF DEPURA THEN WRITELN('++ENTRA MOVEDISCO');
36 | BUSCAR:=ELEMENTO(I,LUGORG);
37 | IF BUSCAR THEN WRITELN('MOVEDISCO,ERROR LOGICO');
38 | BUSCAR:=ELEMENTO(J,LUGDES);
39 | IF BUSCAR THEN J:=CASOS ELSE J:=J-1;
40 | IF DEPURA THEN WRITELN('++MOVEDISCO I A J',I:4,J:4);
41 | TORRES[J,LUGDES]:=TORRES[I,LUGORG];
42 | TORRES[I,LUGORG]:=0;
43 | IF DEPURA THEN WRITELN('++FIN MOVEDISCO')
44 | END;
45 |
46 | PROCEDURE LISTDISCO;
47 | CONST
48 | PALOS=' I I I';
49 | BASE1='---------------------------------------';
50 | BASE2='I I';
51 | L=6;
52 | BLANCO=' ';
53 | ASTER='***********';
54 | VAR
55 | I,N1,N2,N3:INTEGER;
56 | BEGIN
57 | WRITELN;
58 | WRITELN(PALOS);
59 | FOR I:=1 TO CASOS DO
60 | BEGIN
61 | N1:=TORRES[I,ORIGEN];
62 | N2:=TORRES[I,DESTINO];
63 | N3:=TORRES[I,TRABAJO];
64 | WRITELN(
65 | BLANCO:(L-N1), ASTER:(N1), 'I', ASTER:(N1),BLANCO:(L-N1),
66 | BLANCO:(L-N2), ASTER:(N2), 'I', ASTER:(N2),BLANCO:(L-N2),
67 | BLANCO:(L-N3), ASTER:(N3), 'I', ASTER:(N3) )
68 | END;
69 | WRITELN(BASE1);
70 | WRITELN(BASE2);
71 | WRITELN(BASE1)
72 | END;
73 |
74 | PROCEDURE MOVER(N:INTEGER; N1,N2,N3:SITIOS);
75 | BEGIN
76 | IF DEPURA THEN WRITELN('++ENTRA MOVER,N=',N:4);
77 | IF N=1 THEN MOVEDISCO(N1,N2) ELSE
78 | BEGIN
79 | MOVER(N-1,N1,N3,N2);
80 | LISTDISCO;
81 | MOVEDISCO(N1,N2);
82 | LISTDISCO;
83 | MOVER(N-1,N3,N2,N1)
84 | END;
85 | IF DEPURA THEN WRITELN('++FIN MOVER,N=',N:4)
86 | END;
87 |
88 | BEGIN
89 | WRITELN('***COMIENZA EL PROGRAMA***,CASOS=',CASOS:4);
90 | DEPURA:=TRUE;
91 | FOR I:=1 TO CASOS DO
92 | FOR J:=ORIGEN TO TRABAJO DO
93 | TORRES[I,J]:=0;
94 | FOR I:=1 TO CASOS DO
95 | TORRES[I,ORIGEN]:=I;
96 | WRITELN(' SITUACION DE PARTIDA');
97 | LISTDISCO;
98 | MOVER(CASOS,ORIGEN,DESTINO,TRABAJO);
99 | WRITELN(' SITUACION FINAL');
100 | LISTDISCO;
101 | WRITELN('***FIN DEL PROGRAMA***')
102 | END.
103 |
104 |
--------------------------------------------------------------------------------
/pascal/JULIA.PAS:
--------------------------------------------------------------------------------
1 | {From the book Programming in 3 Dimensions: }
2 | { 3-D Graphics, Ray Tracing, and Animation. Watkins & Sharp. M&T Books}
3 | {Port by Oscar Toledo G.}
4 | {Last revision: Feb/24/1994}
5 |
6 | PROGRAM uno;
7 |
8 | PROCEDURE initgraphics;
9 | BEGIN
10 | write(chr(27),'[G')
11 | END;
12 |
13 | PROCEDURE exitgraphics;
14 | BEGIN
15 | readln;
16 | write(chr(27),'[T')
17 | END;
18 |
19 | PROCEDURE plot(xp,yp,r,g,b:integer);
20 | BEGIN
21 | write(chr(27),'[',xp:0,';',yp:0,';',r:0,';',g:0,';',b:0,'P');
22 | END;
23 |
24 | PROCEDURE pixel(xp,yp,val:integer);
25 | BEGIN
26 | plot(xp-1,yp-1,val,val,val);
27 | END;
28 |
29 | PROCEDURE Julia (rmin,rmax,imin,imax:real; n,it:integer);
30 | VAR
31 | rg,ig,cr,ci,zr,zi:real;
32 | cnt:integer;
33 | zm:real;
34 | zrp,zip:real;
35 | i,j:integer;
36 | BEGIN
37 | rg:=(rmax-rmin)/n;
38 | ig:=(imax-imin)/n;
39 | FOR i:=1 TO n DO
40 | BEGIN
41 | FOR j:=1 TO n DO
42 | BEGIN
43 | cr:=(j*rg)+rmin;
44 | ci:=(i*ig)+imin;
45 | cnt:=0;
46 | zr:=cr;
47 | zi:=ci;
48 | zm:=sqrt(sqr(zr)+sqr(zi));
49 | IF zm>2.0 THEN pixel(i,j,0)
50 | ELSE
51 | BEGIN
52 | WHILE (cnt127 THEN cnt:=-256+cnt;
63 | pixel(i,j,cnt);
64 | END;
65 | END;
66 | END;
67 | END;
68 |
69 | BEGIN
70 | initgraphics;
71 | julia(-0.7235,-0.7160,0.2175,0.2250,512,255);
72 | { readln;} {things were rendered directly to screen}
73 | exitgraphics;
74 | END.
75 |
--------------------------------------------------------------------------------
/pascal/PRINCIPA.PAS:
--------------------------------------------------------------------------------
1 | { Programa: Compilador de Pascal para el Inmos T805 }
2 | { }
3 | { Módulo : Controlador Maestro }
4 | { }
5 | { (c) Copyright 1993-1994 Oscar Toledo G. }
6 | { Todos los derechos reservados. }
7 |
8 | { Procesa un bloque }
9 | PROCEDURE bloque;
10 | VAR ultsim2,apulit2,pila2,posproc2:INTEGER;
11 | BEGIN
12 | ultsim2:=ultsim;
13 | apulit2:=apulit;
14 | pila2:=pila;
15 | posproc2:=posproc;
16 | posproc:=parb;
17 | pila:=1;
18 | IF profact>maxniv THEN error(50);
19 | IF lexema=CLABEL THEN plabel;
20 | IF lexema=CCONST THEN pconst;
21 | dentrotype:=TRUE;
22 | IF lexema=CTYPE THEN ptype;
23 | dentrotype:=FALSE;
24 | IF lexema=CVAR THEN pvar;
25 | pparinf[profact]:=pila;
26 | WHILE (lexema=CPROCEDURE) OR
27 | (lexema=CFUNCTION) DO
28 | IF lexema=CPROCEDURE THEN pproc ELSE pfunc;
29 | IF lexema=CBEGIN THEN pbegin ELSE error(25);
30 | posproc:=posproc2;
31 | pila:=pila2;
32 | apulit:=apulit2;
33 | ultsim:=ultsim2
34 | END;
35 |
36 | { Procesa el encabezado PROGRAM }
37 | PROCEDURE sprogram;
38 | BEGIN
39 | compsig(CPROGRAM,37);
40 | compsig(CIDENT,4);
41 | obtlex;
42 | IF lexema=CPARENI THEN
43 | BEGIN
44 | REPEAT
45 | compsig(CIDENT,4);
46 | obtlex
47 | UNTIL lexema<>CCOMA;
48 | compara(CPAREND,22);
49 | obtlex
50 | END;
51 | compara(CPUNTOYCOMA,52);
52 | obtlex;
53 | writeln('j INIC');
54 | val[0]:=geneti;
55 | bloque(0);
56 | writeln('INIC:');
57 | writeln('ajw -(NUMCONS+NUMCONSLIB)');
58 | writeln('ldc CONSLIB-CONS1');
59 | writeln('ldpi');
60 | writeln('CONS1:');
61 | writeln('ldlp 0');
62 | writeln('ldc NUMCONSLIB*4');
63 | writeln('move');
64 | IF apucons>0 THEN
65 | BEGIN
66 | { Carga las constantes del programa (si existen) }
67 | writeln('ldc CONS-CONS2');
68 | writeln('ldpi');
69 | writeln('CONS2:');
70 | writeln('ldlp NUMCONSLIB');
71 | writeln('ldc NUMCONS*4');
72 | writeln('move');
73 | END;
74 | { Inicialización para los procedimientos NEW, DISPOSE, EOF y EOLN }
75 | writeln('call DINAMICA');
76 | writeln('ajw -5');
77 | writeln('stl 1'); { Apuntador a lista de bloques (NEW y DISPOSE) }
78 | writeln('stl 2'); { Apuntador a memoria libre }
79 | writeln('mint'); { Indica que no se ha asignado ningun bloque }
80 | writeln('stl 3');
81 | writeln('mint'); { Indica que no hay ningun caracter en el buffer }
82 | writeln('stl 4');
83 | writeln('ldc 0x3F579834');
84 | writeln('stl 0'); { Número aleatorio de comienzo }
85 | { Llama al programa principal con un apuntador a la tabla de constantes }
86 | writeln('ldlp 5+NUMCONSLIB');
87 | writeln('call P1');
88 | writeln('ajw NUMCONS+NUMCONSLIB+5');
89 | { Retorna al llamador }
90 | writeln('ret')
91 | END;
92 |
93 | { Genera la lista de constantes compiladas }
94 | PROCEDURE listacons;
95 | VAR contador,contador2:INTEGER;
96 | BEGIN
97 | writeln('CONS:');
98 | FOR contador:=0 TO apucons-1 DO
99 | BEGIN
100 | write('db ');
101 | FOR contador2:=1 TO 4 DO
102 | BEGIN
103 | write(ord(constantes[contador].bytes[contador2]):0);
104 | IF contador2<4 THEN write(',');
105 | END;
106 | writeln;
107 | END;
108 | writeln('NUMCONS:');
109 | writeln('equ ',apucons:0);
110 | { Esta etiqueta es muy útil para insertar datos extras junto con un }
111 | { programa Pascal y accederlos con _FINPROG }
112 | writeln('FINPROG:')
113 | END;
114 |
115 | { Inicialización de tipos básicos }
116 | PROCEDURE inicializa;
117 | BEGIN
118 | cadena:='INTEGER'; { Tipo INTEGER }
119 | declara('T');
120 | num[ultsim]:=4;
121 | tipo[ultsim]:=ultsim+1;
122 | cadena:=''; { Subrango -2147483647 .. 2147483647 }
123 | declara('B');
124 | min[ultsim]:=$80000000;
125 | max[ultsim]:=$7FFFFFFF;
126 | num[ultsim]:=4;
127 | tipo[ultsim]:=2;
128 | cadena:='CHAR'; { Tipo CHAR }
129 | declara('T');
130 | num[ultsim]:=1;
131 | tipo[ultsim]:=ultsim+1;
132 | cadena:=''; { Subrango 0 .. 255 }
133 | declara('B');
134 | min[ultsim]:=0;
135 | max[ultsim]:=255;
136 | num[ultsim]:=1;
137 | tipo[ultsim]:=4;
138 | cadena:='REAL'; { Tipo REAL }
139 | declara('T');
140 | num[ultsim]:=4;
141 | tipo[ultsim]:=ultsim+1;
142 | cadena:=''; { es un tipo básico }
143 | declara('I');
144 | num[ultsim]:=4;
145 | tipo[ultsim]:=6;
146 | cadena:='BOOLEAN'; { Tipo BOOLEAN }
147 | declara('T');
148 | num[ultsim]:=4;
149 | tipo[ultsim]:=ultsim+1;
150 | cadena:=''; { enumerador }
151 | declara('E');
152 | tipo[ultsim]:=2;
153 | num[ultsim]:=4;
154 | min[ultsim]:=0;
155 | max[ultsim]:=1;
156 | prox[ultsim]:=ultsim+1;
157 | cadena:='FALSE'; { 0=FALSE }
158 | declara('C');
159 | num[ultsim]:=4;
160 | tipo[ultsim]:=8;
161 | val[ultsim]:=0;
162 | prox[ultsim]:=ultsim+1;
163 | cadena:='TRUE'; { 1=TRUE }
164 | declara('C');
165 | num[ultsim]:=4;
166 | tipo[ultsim]:=8;
167 | val[ultsim]:=1;
168 | prox[ultsim]:=0;
169 | cadena:=''; { Tipo vacio para NIL }
170 | declara('D');
171 | num[ultsim]:=4;
172 | tipo[ultsim]:=ultsim;
173 | min[ultsim]:=1;
174 | cadena:='MAXINT'; { MAXINT }
175 | declara('C');
176 | num[ultsim]:=4;
177 | tipo[ultsim]:=2;
178 | val[ultsim]:=$7FFFFFFF;
179 | cadena:='MININT'; { MININT }
180 | declara('C');
181 | num[ultsim]:=4;
182 | tipo[ultsim]:=2;
183 | val[ultsim]:=$80000000;
184 | cadena:='BYTE'; { Tipo BYTE }
185 | declara('T');
186 | num[ultsim]:=1;
187 | tipo[ultsim]:=4;
188 | cadena:='WORD'; { Tipo WORD }
189 | declara('T');
190 | num[ultsim]:=4;
191 | tipo[ultsim]:=2;
192 | cadena:='TEXT'; { TEXT = FILE OF CHAR }
193 | declara('O');
194 | num[ultsim]:=40;
195 | tipo[ultsim]:=4;
196 | cadena:=''; { Uso para tipos de conjuntos }
197 | declara('S');
198 | num[ultsim]:=32;
199 | tipo[ultsim]:=ultsim;
200 | cadena:=''; { Uso para operaciones STRING }
201 | declara('N');
202 | num[ultsim]:=256;
203 | tipo[ultsim]:=ultsim
204 | END;
205 |
206 | { Programa principal }
207 |
208 | BEGIN
209 | inicanalex; { Inicializa el analizador léxico }
210 | profact:=0; { Profundidad de anidamiento }
211 | apulit:=1; { Apuntador al buffer literal }
212 | literal[0]:=chr(0); { Ahorra espacio en literales vacios }
213 | proxeti:=0; { Proxima etiqueta a usar }
214 | ultsim:=0; { ×ltimo identificador definido }
215 | numpar:=0; { Número de parametros del procedimiento }
216 | clase[0]:='G'; { Esto evita problemas en la busqueda }
217 | apucons:=0; { Número constantes definidas }
218 | aajw:=FALSE; { Todavía no hay ajw a optimizar }
219 | oajw:=0;
220 | optcc:=FALSE; { Optimación corto-circuito desactivada }
221 | escontrol:=FALSE; { No esta dentro de IF, WHILE o REPEAT }
222 | afps:=FALSE; { Todavía no hay asignación res. función real }
223 | astl:=FALSE; { Todavía no hay asignación res. función entera }
224 | aenl:=FALSE; { Todavía no se carga el enlace estático }
225 | twith:=0; { Indica que no hay ningun WITH }
226 | pwith:=0; { Apuntador al apuntador para el WITH }
227 | cadact:=0; { Ninguna cadena en el programa }
228 | cadlit:=0; { Almacenamiento de cadenas vacio }
229 | proxcad:=1; { Proxima cadena a sacar del almacenamiento }
230 | inicializa; { Inicializa tipos básicos }
231 | sprogram; { Procesa bloque PROGRAM }
232 | compara(CPUNTO,9); { Verífica que exista el punto de final }
233 | listacons; { Lista las constantes }
234 | write(chr(4)) { Indica fin de compilación }
235 | END.
236 |
237 |
--------------------------------------------------------------------------------
/pascal/original/ERRORES.PAS:
--------------------------------------------------------------------------------
1 | { Programa: Compilador de Pascal para el Inmos T805 }
2 | { }
3 | { Módulo : Mensajes de Errores }
4 | { }
5 | { (c) Copyright 1993-1994 Oscar Toledo G. }
6 | { Todos los derechos reservados. }
7 |
8 | { Posibles errores léxicos }
9 | PROCEDURE errorlex(error:INTEGER);
10 | VAR contador:INTEGER;
11 | BEGIN
12 | write(chr(2));
13 | FOR contador:=1 TO 5+aplin DO
14 | write(' ');
15 | writeln('/\');
16 | write(chr(2));
17 | CASE error OF
18 | 1: writeln('Cadena demasiado larga');
19 | 2: writeln('Falta el '' de cerrado');
20 | 3: writeln('Número invalido');
21 | 4: writeln('Falta }');
22 | 5: writeln('Falta número hexadecimal');
23 | 6: writeln('Caracter invalido');
24 | 7: writeln('Falta el " de cerrado')
25 | END;
26 | END;
27 |
28 | { Posibles errores sintácticos y semanticos }
29 | PROCEDURE error(errnum:INTEGER);
30 | VAR
31 | contador:INTEGER;
32 | BEGIN
33 | write(chr(2));
34 | FOR contador:=1 TO 5+aplin DO write(' ');
35 | writeln('/\');
36 | write(chr(2));
37 | CASE errnum OF
38 | 1: writeln('Etiqueta inexistente');
39 | 2: writeln('Falta constante');
40 | 3: writeln('Falta ''=''');
41 | 4: writeln('Falta identificador');
42 | 5: writeln('Falta '':'' o '';''');
43 | 6: writeln('No computable');
44 | 7: writeln('Franja invalida');
45 | 8: writeln('No se puede usar subscripto');
46 | 9: writeln('Falta ''.''');
47 | 10: writeln('Falta '';''');
48 | 11: writeln('Identificador no declarado');
49 | 12: writeln('Identificador ilegal');
50 | 13: writeln('Falta '':=''');
51 | 14: writeln('Tipos incompatibles');
52 | 15: writeln('El mínimo es mayor que el máximo');
53 | 16: writeln('Falta ''THEN''');
54 | 17: writeln('Falta '';'' o ''END''');
55 | 18: writeln('Falta ''DO''');
56 | 19: writeln('Simbolo incorrecto');
57 | 20: writeln('Falta operador relacional');
58 | 21: writeln('Uso de procedimiento en expresión');
59 | 22: writeln('Falta '')''');
60 | 23: writeln('Factor ilegal');
61 | 24: writeln('La variable no es apuntador');
62 | 25: writeln('Falta ''BEGIN''');
63 | 26: writeln('Falta ''OF''');
64 | 27: writeln('Identificador redefinido');
65 | 28: writeln('Falta ''TO'' o ''DOWNTO''');
66 | 29: writeln('Apuntador a un tipo indefinido');
67 | 30: writeln('Numero fuera de rango');
68 | 31: writeln('Falta ''(''');
69 | 33: writeln('Falta ''[''');
70 | 34: writeln('Falta '']''');
71 | 35: writeln('Numero equivocado de parametros');
72 | 36: writeln('Tipo de dato no reconocido');
73 | 37: writeln('Falta ''PROGRAM''');
74 | 38: writeln('No es matriz ni variable');
75 | 39: writeln('Falta ''..''');
76 | 40: writeln('Variable invalida');
77 | 41: writeln('Paso invalido de argumento');
78 | 42: writeln('Cadena vacia');
79 | 43: writeln('Operador incorrecto');
80 | 44: writeln('Tabla de identificadores excedida');
81 | 45: writeln('Tabla de constantes excedida');
82 | 46: writeln('Tabla de datos excedida');
83 | 47: writeln('Tabla de cadenas excedida');
84 | 48: writeln('Tabla literal de cadenas excedida');
85 | 49: writeln('Expresión demasiado compleja');
86 | 50: writeln('Anidamiento muy profundo');
87 | 51: BEGIN
88 | writeln('No se pueden poner etiquetas');
89 | writeln('dentro de un FOR o CASE')
90 | END;
91 | 52: writeln('Falta ''('' o '';''');
92 | 255: writeln('Error fatal en el compilador')
93 | END;
94 | write(chr(3)) { Indica error en compilación }
95 | END;
96 |
97 |
--------------------------------------------------------------------------------
/pascal/original/Hanoi.pas:
--------------------------------------------------------------------------------
1 | PROGRAM HANOI (INPUT, OUTPUT);
2 |
3 | CONST
4 | CASOS=3;
5 |
6 | TYPE
7 | SITIOS=(ORIGEN,DESTINO,TRABAJO);
8 | RANGO=1..CASOS;
9 |
10 | VAR
11 | TORRES:ARRAY[RANGO,SITIOS] OF INTEGER;
12 | I:INTEGER;
13 | J:SITIOS;
14 | DEPURA:BOOLEAN;
15 |
16 | PROCEDURE MOVEDISCO ( LUGORG, LUGDES : SITIOS );
17 | VAR
18 | BUSCAR:BOOLEAN;
19 | I,J:INTEGER;
20 |
21 | FUNCTION ELEMENTO (VAR I :INTEGER; COL:SITIOS) : BOOLEAN;
22 | VAR BUSCAR:BOOLEAN;
23 | BEGIN
24 | IF DEPURA THEN WRITELN('++ENTRA ELEMENTO');
25 | BUSCAR:=TRUE;
26 | I:=1;
27 | WHILE (I<=CASOS) AND BUSCAR DO
28 | IF TORRES[I,COL]<>0 THEN BUSCAR:=FALSE
29 | ELSE I:=I+1;
30 | ELEMENTO:=BUSCAR;
31 | IF DEPURA THEN WRITELN('++FIN ELEMENTO,I,BUSCAR=',I,BUSCAR)
32 | END;
33 |
34 | BEGIN
35 | IF DEPURA THEN WRITELN('++ENTRA MOVEDISCO');
36 | BUSCAR:=ELEMENTO(I,LUGORG);
37 | IF BUSCAR THEN WRITELN('MOVEDISCO,ERROR LOGICO');
38 | BUSCAR:=ELEMENTO(J,LUGDES);
39 | IF BUSCAR THEN J:=CASOS ELSE J:=J-1;
40 | IF DEPURA THEN WRITELN('++MOVEDISCO I A J',I:4,J:4);
41 | TORRES[J,LUGDES]:=TORRES[I,LUGORG];
42 | TORRES[I,LUGORG]:=0;
43 | IF DEPURA THEN WRITELN('++FIN MOVEDISCO')
44 | END;
45 |
46 | PROCEDURE LISTDISCO;
47 | CONST
48 | PALOS=' I I I';
49 | BASE1='---------------------------------------';
50 | BASE2='I I';
51 | L=6;
52 | BLANCO=' ';
53 | ASTER='***********';
54 | VAR
55 | I,N1,N2,N3:INTEGER;
56 | BEGIN
57 | WRITELN;
58 | WRITELN(PALOS);
59 | FOR I:=1 TO CASOS DO
60 | BEGIN
61 | N1:=TORRES[I,ORIGEN];
62 | N2:=TORRES[I,DESTINO];
63 | N3:=TORRES[I,TRABAJO];
64 | WRITELN(
65 | BLANCO:(L-N1), ASTER:(N1), 'I', ASTER:(N1),BLANCO:(L-N1),
66 | BLANCO:(L-N2), ASTER:(N2), 'I', ASTER:(N2),BLANCO:(L-N2),
67 | BLANCO:(L-N3), ASTER:(N3), 'I', ASTER:(N3) )
68 | END;
69 | WRITELN(BASE1);
70 | WRITELN(BASE2);
71 | WRITELN(BASE1)
72 | END;
73 |
74 | PROCEDURE MOVER(N:INTEGER; N1,N2,N3:SITIOS);
75 | BEGIN
76 | IF DEPURA THEN WRITELN('++ENTRA MOVER,N=',N:4);
77 | IF N=1 THEN MOVEDISCO(N1,N2) ELSE
78 | BEGIN
79 | MOVER(N-1,N1,N3,N2);
80 | LISTDISCO;
81 | MOVEDISCO(N1,N2);
82 | LISTDISCO;
83 | MOVER(N-1,N3,N2,N1)
84 | END;
85 | IF DEPURA THEN WRITELN('++FIN MOVER,N=',N:4)
86 | END;
87 |
88 | BEGIN
89 | WRITELN('***COMIENZA EL PROGRAMA***,CASOS=',CASOS:4);
90 | DEPURA:=TRUE;
91 | FOR I:=1 TO CASOS DO
92 | FOR J:=ORIGEN TO TRABAJO DO
93 | TORRES[I,J]:=0;
94 | FOR I:=1 TO CASOS DO
95 | TORRES[I,ORIGEN]:=I;
96 | WRITELN(' SITUACION DE PARTIDA');
97 | LISTDISCO;
98 | MOVER(CASOS,ORIGEN,DESTINO,TRABAJO);
99 | WRITELN(' SITUACION FINAL');
100 | LISTDISCO;
101 | WRITELN('***FIN DEL PROGRAMA***')
102 | END.
103 |
104 |
--------------------------------------------------------------------------------
/pascal/original/PRINCIPA.PAS:
--------------------------------------------------------------------------------
1 | { Programa: Compilador de Pascal para el Inmos T805 }
2 | { }
3 | { Módulo : Controlador Maestro }
4 | { }
5 | { (c) Copyright 1993-1994 Oscar Toledo G. }
6 | { Todos los derechos reservados. }
7 |
8 | { Procesa un bloque }
9 | PROCEDURE bloque;
10 | VAR ultsim2,apulit2,pila2,posproc2:INTEGER;
11 | BEGIN
12 | ultsim2:=ultsim;
13 | apulit2:=apulit;
14 | pila2:=pila;
15 | posproc2:=posproc;
16 | posproc:=parb;
17 | pila:=1;
18 | IF profact>maxniv THEN error(50);
19 | IF lexema=CLABEL THEN plabel;
20 | IF lexema=CCONST THEN pconst;
21 | dentrotype:=TRUE;
22 | IF lexema=CTYPE THEN ptype;
23 | dentrotype:=FALSE;
24 | IF lexema=CVAR THEN pvar;
25 | pparinf[profact]:=pila;
26 | WHILE (lexema=CPROCEDURE) OR
27 | (lexema=CFUNCTION) DO
28 | IF lexema=CPROCEDURE THEN pproc ELSE pfunc;
29 | IF lexema=CBEGIN THEN pbegin ELSE error(25);
30 | posproc:=posproc2;
31 | pila:=pila2;
32 | apulit:=apulit2;
33 | ultsim:=ultsim2
34 | END;
35 |
36 | { Procesa el encabezado PROGRAM }
37 | PROCEDURE sprogram;
38 | BEGIN
39 | compsig(CPROGRAM,37);
40 | compsig(CIDENT,4);
41 | obtlex;
42 | IF lexema=CPARENI THEN
43 | BEGIN
44 | REPEAT
45 | compsig(CIDENT,4);
46 | obtlex
47 | UNTIL lexema<>CCOMA;
48 | compara(CPAREND,22);
49 | obtlex
50 | END;
51 | compara(CPUNTOYCOMA,52);
52 | obtlex;
53 | writeln('j INIC');
54 | val[0]:=geneti;
55 | bloque(0);
56 | writeln('INIC:');
57 | writeln('ajw -(NUMCONS+NUMCONSLIB)');
58 | writeln('ldc CONSLIB-CONS1');
59 | writeln('ldpi');
60 | writeln('CONS1:');
61 | writeln('ldlp 0');
62 | writeln('ldc NUMCONSLIB*4');
63 | writeln('move');
64 | IF apucons>0 THEN
65 | BEGIN
66 | { Carga las constantes del programa (si existen) }
67 | writeln('ldc CONS-CONS2');
68 | writeln('ldpi');
69 | writeln('CONS2:');
70 | writeln('ldlp NUMCONSLIB');
71 | writeln('ldc NUMCONS*4');
72 | writeln('move');
73 | END;
74 | { Inicialización para los procedimientos NEW, DISPOSE, EOF y EOLN }
75 | writeln('call DINAMICA');
76 | writeln('ajw -5');
77 | writeln('stl 1'); { Apuntador a lista de bloques (NEW y DISPOSE) }
78 | writeln('stl 2'); { Apuntador a memoria libre }
79 | writeln('mint'); { Indica que no se ha asignado ningun bloque }
80 | writeln('stl 3');
81 | writeln('mint'); { Indica que no hay ningun caracter en el buffer }
82 | writeln('stl 4');
83 | writeln('ldc 0x3F579834');
84 | writeln('stl 0'); { Número aleatorio de comienzo }
85 | { Llama al programa principal con un apuntador a la tabla de constantes }
86 | writeln('ldlp 5+NUMCONSLIB');
87 | writeln('call P1');
88 | writeln('ajw NUMCONS+NUMCONSLIB+5');
89 | { Retorna al llamador }
90 | writeln('ret')
91 | END;
92 |
93 | { Genera la lista de constantes compiladas }
94 | PROCEDURE listacons;
95 | VAR contador,contador2:INTEGER;
96 | BEGIN
97 | writeln('CONS:');
98 | FOR contador:=0 TO apucons-1 DO
99 | BEGIN
100 | write('db ');
101 | FOR contador2:=1 TO 4 DO
102 | BEGIN
103 | write(ord(constantes[contador].bytes[contador2]):0);
104 | IF contador2<4 THEN write(',');
105 | END;
106 | writeln;
107 | END;
108 | writeln('NUMCONS:');
109 | writeln('equ ',apucons:0);
110 | { Esta etiqueta es muy útil para insertar datos extras junto con un }
111 | { programa Pascal y accederlos con _FINPROG }
112 | writeln('FINPROG:')
113 | END;
114 |
115 | { Inicialización de tipos básicos }
116 | PROCEDURE inicializa;
117 | BEGIN
118 | cadena:='INTEGER'; { Tipo INTEGER }
119 | declara('T');
120 | num[ultsim]:=4;
121 | tipo[ultsim]:=ultsim+1;
122 | cadena:=''; { Subrango -2147483647 .. 2147483647 }
123 | declara('B');
124 | min[ultsim]:=$80000000;
125 | max[ultsim]:=$7FFFFFFF;
126 | num[ultsim]:=4;
127 | tipo[ultsim]:=2;
128 | cadena:='CHAR'; { Tipo CHAR }
129 | declara('T');
130 | num[ultsim]:=1;
131 | tipo[ultsim]:=ultsim+1;
132 | cadena:=''; { Subrango 0 .. 255 }
133 | declara('B');
134 | min[ultsim]:=0;
135 | max[ultsim]:=255;
136 | num[ultsim]:=1;
137 | tipo[ultsim]:=4;
138 | cadena:='REAL'; { Tipo REAL }
139 | declara('T');
140 | num[ultsim]:=4;
141 | tipo[ultsim]:=ultsim+1;
142 | cadena:=''; { es un tipo básico }
143 | declara('I');
144 | num[ultsim]:=4;
145 | tipo[ultsim]:=6;
146 | cadena:='BOOLEAN'; { Tipo BOOLEAN }
147 | declara('T');
148 | num[ultsim]:=4;
149 | tipo[ultsim]:=ultsim+1;
150 | cadena:=''; { enumerador }
151 | declara('E');
152 | tipo[ultsim]:=2;
153 | num[ultsim]:=4;
154 | min[ultsim]:=0;
155 | max[ultsim]:=1;
156 | prox[ultsim]:=ultsim+1;
157 | cadena:='FALSE'; { 0=FALSE }
158 | declara('C');
159 | num[ultsim]:=4;
160 | tipo[ultsim]:=8;
161 | val[ultsim]:=0;
162 | prox[ultsim]:=ultsim+1;
163 | cadena:='TRUE'; { 1=TRUE }
164 | declara('C');
165 | num[ultsim]:=4;
166 | tipo[ultsim]:=8;
167 | val[ultsim]:=1;
168 | prox[ultsim]:=0;
169 | cadena:=''; { Tipo vacio para NIL }
170 | declara('D');
171 | num[ultsim]:=4;
172 | tipo[ultsim]:=ultsim;
173 | min[ultsim]:=1;
174 | cadena:='MAXINT'; { MAXINT }
175 | declara('C');
176 | num[ultsim]:=4;
177 | tipo[ultsim]:=2;
178 | val[ultsim]:=$7FFFFFFF;
179 | cadena:='MININT'; { MININT }
180 | declara('C');
181 | num[ultsim]:=4;
182 | tipo[ultsim]:=2;
183 | val[ultsim]:=$80000000;
184 | cadena:='BYTE'; { Tipo BYTE }
185 | declara('T');
186 | num[ultsim]:=1;
187 | tipo[ultsim]:=4;
188 | cadena:='WORD'; { Tipo WORD }
189 | declara('T');
190 | num[ultsim]:=4;
191 | tipo[ultsim]:=2;
192 | cadena:='TEXT'; { TEXT = FILE OF CHAR }
193 | declara('O');
194 | num[ultsim]:=40;
195 | tipo[ultsim]:=4;
196 | cadena:=''; { Uso para tipos de conjuntos }
197 | declara('S');
198 | num[ultsim]:=32;
199 | tipo[ultsim]:=ultsim;
200 | cadena:=''; { Uso para operaciones STRING }
201 | declara('N');
202 | num[ultsim]:=256;
203 | tipo[ultsim]:=ultsim
204 | END;
205 |
206 | { Programa principal }
207 |
208 | BEGIN
209 | inicanalex; { Inicializa el analizador léxico }
210 | profact:=0; { Profundidad de anidamiento }
211 | apulit:=1; { Apuntador al buffer literal }
212 | literal[0]:=chr(0); { Ahorra espacio en literales vacios }
213 | proxeti:=0; { Proxima etiqueta a usar }
214 | ultsim:=0; { ×ltimo identificador definido }
215 | numpar:=0; { Número de parametros del procedimiento }
216 | clase[0]:='G'; { Esto evita problemas en la busqueda }
217 | apucons:=0; { Número constantes definidas }
218 | aajw:=FALSE; { Todavía no hay ajw a optimizar }
219 | oajw:=0;
220 | optcc:=FALSE; { Optimación corto-circuito desactivada }
221 | escontrol:=FALSE; { No esta dentro de IF, WHILE o REPEAT }
222 | afps:=FALSE; { Todavía no hay asignación res. función real }
223 | astl:=FALSE; { Todavía no hay asignación res. función entera }
224 | aenl:=FALSE; { Todavía no se carga el enlace estático }
225 | twith:=0; { Indica que no hay ningun WITH }
226 | pwith:=0; { Apuntador al apuntador para el WITH }
227 | cadact:=0; { Ninguna cadena en el programa }
228 | cadlit:=0; { Almacenamiento de cadenas vacio }
229 | proxcad:=1; { Proxima cadena a sacar del almacenamiento }
230 | inicializa; { Inicializa tipos básicos }
231 | sprogram; { Procesa bloque PROGRAM }
232 | compara(CPUNTO,9); { Verífica que exista el punto de final }
233 | listacons; { Lista las constantes }
234 | write(chr(4)) { Indica fin de compilación }
235 | END.
236 |
237 |
--------------------------------------------------------------------------------
/pascal/pascal.cmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/pascal/pascal.cmg
--------------------------------------------------------------------------------
/pascal/pascal0.cmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/pascal/pascal0.cmg
--------------------------------------------------------------------------------
/tram/COMM.COM:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/tram/COMM.COM
--------------------------------------------------------------------------------
/tram/NUEVO2.M3D:
--------------------------------------------------------------------------------
1 | RESOLUCION
2 | X=320
3 | Y=200
4 |
5 | CUADROS
6 | NUMERO=1
7 |
8 | AMBIENTE
9 | LOCAL=0.75 0.75 0.75
10 | REFLEJO=0.30 0.30 0.30
11 | TRANS=0 0 0
12 | MINIMO=0.03 0.03 0.03
13 | MAXIMO=1 1 1
14 | RECUR=5
15 |
16 | LAMPARAS
17 | REFLEJO=FALSO
18 | REFLAMP=0 0 0
19 | EFECDIST=0.05
20 |
21 | OBSERVADOR
22 | LENTE=3.2
23 | LOC=0 -660 220
24 | ROTADO=0
25 | GIRO=16
26 |
27 | MATERIAL
28 | TIPO=AJEDREZADO
29 | TEXTURA=ALTERNADO
30 | RFLAMB=0.1 0.1 0.1
31 | RFLDIF=0.7 0.7 0.7
32 | RFLESP=0.2 0.2 0.2
33 | BRILLO=2
34 | TRANS=0 0 0
35 | INDICE=1
36 | CUADRO1=1 0.7 0.5
37 | CUADRO2=0 0.5 0.8
38 | CUADRO=0.012
39 |
40 | MATERIAL
41 | TIPO=VERDE
42 | TEXTURA=SUAVE
43 | RFLAMB=0.05 0.2 0.05
44 | RFLDIF=0.1 0.5 0.1
45 | RFLESP=0.1 0.3 0.1
46 | BRILLO=20
47 | TRANS=0 0 0
48 | INDICE=1.0
49 |
50 | MATERIAL
51 | TIPO=BLANCO
52 | TEXTURA=SUAVE
53 | RFLAMB=0.2 0.2 0.2
54 | RFLDIF=0.5 0.5 0.5
55 | RFLESP=0.3 0.3 0.3
56 | BRILLO=10
57 | TRANS=0 0 0
58 | INDICE=1.0
59 |
60 | MATERIAL
61 | TIPO=ROJO
62 | TEXTURA=SUAVE
63 | RFLAMB=0.2 0.05 0.05
64 | RFLDIF=0.5 0.1 0.1
65 | RFLESP=0.3 0.1 0.1
66 | BRILLO=5
67 | TRANS=0 0 0
68 | INDICE=1.0
69 |
70 | PISO
71 | MAT=AJEDREZADO
72 |
73 | LAMPARA
74 | LOC=350 -350 350
75 | RADIO=50
76 | INTENS=0.8 0.8 0.8
77 |
78 | LAMPARA
79 | LOC=-350 -350 350
80 | RADIO=50
81 | INTENS=0.8 0.8 0.8
82 |
83 | ESFERA
84 | LOC=0 0 90
85 | RADIO=40
86 | MAT=BLANCO
87 |
88 | ESFERA
89 | LOC=100 -10 70
90 | RADIO=40
91 | MAT=ROJO
92 |
93 | ESFERA
94 | LOC=-100 10 50
95 | RADIO=40
96 | MAT=VERDE
97 |
98 | PRUEBAESFERA
99 |
100 | FINCUADRO
101 |
--------------------------------------------------------------------------------
/tram/animales.cmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/tram/animales.cmg
--------------------------------------------------------------------------------
/tram/comm.asm:
--------------------------------------------------------------------------------
1 | ;
2 | ; Transputer interface for my Pascal compiler and Ray Tracer.
3 | ;
4 | ; by Oscar Toledo G.
5 | ; https://nanochess.org/
6 | ;
7 | ; Creation date: May/31/2025.
8 | ;
9 |
10 | org 0x0100
11 |
12 | ;
13 | ; This is written for an ISA board compatible with Inmos B004
14 | ;
15 | ; 0x0150 - Connected to Inmos C011 communication chip.
16 | ; 0x0160 - Reset pin for transputer board
17 | ; 0x0161 - Analyse pin for transputer board
18 | ;
19 | ; I'm supposing the C011 chips is connected to link 0 of the transputer chip.
20 | ;
21 | ; Also that you are using an Inmos T805 transputer (the one I used when I
22 | ; developed my software)
23 | ;
24 |
25 | call bootstrap
26 |
27 | mov al,[arguments]
28 | or al,al
29 | mov al,0
30 | je .3
31 | mov al,1
32 | .3:
33 | mov byte [mode],al
34 | mov byte [status],0
35 | mov word [pointer],0
36 | mov word [output],buffer
37 |
38 | main_loop:
39 | mov dx,0x0153
40 | in al,dx
41 | test al,0x01 ; Ready to send data?
42 | je .19 ; No, jump.
43 |
44 | mov al,[mode]
45 | cmp al,1 ; Pascal mode?
46 | je .20 ; Yes, jump.
47 | ; Simple mode then.
48 | mov ah,0x01
49 | int 0x16 ; Key available?
50 | je .19 ; No, jump.
51 |
52 | mov ah,0x00 ; Read key.
53 | int 0x16
54 | mov dx,0x151
55 | out dx,al ; Send to transputer.
56 | .19:
57 | jmp .1
58 |
59 | .20:
60 | ;
61 | ; Send more data to the transputer input.
62 | ;
63 | cld
64 | mov si,[pointer] ; Get file pointer.
65 | mov al,[status]
66 | test al,1
67 | je .3
68 | and al,0xfe
69 | mov [status],al
70 | mov al,0x0a
71 | jmp .6
72 | .3:
73 | test si,si
74 | jne .2
75 | mov al,[0x0080] ; Another file ready?
76 | test al,al
77 | jne .12
78 | mov al,0x1a ; Send end-of-file
79 | jmp .6
80 |
81 | .12:
82 | mov dx,arguments
83 | call load_file
84 |
85 | call move_arguments
86 |
87 | mov si,[pointer]
88 | .2: lodsb
89 | cmp al,0x0d
90 | je .5
91 | cmp al,0x0a
92 | jne .6
93 | mov al,[status]
94 | or al,1
95 | mov [status],al
96 | mov al,0x0d
97 | inc word [size]
98 |
99 | .6: mov dx,0x0151
100 | out dx,al
101 |
102 | .5: mov [pointer],si
103 | dec word [size]
104 | jne main_loop
105 | xor si,si
106 | mov [pointer],si
107 | jmp main_loop
108 |
109 | ;
110 | ; Handle transputer output
111 | ;
112 | .1:
113 | mov dx,0x0152
114 | in al,dx
115 | test al,0x01
116 | jne .21
117 | jmp main_loop
118 | .21:
119 | mov dx,0x0150
120 | in al,dx
121 | cmp byte [mode],0
122 | jne .26
123 | mov ah,0x0e
124 | mov bx,0x0007
125 | int 0x10
126 | jmp main_loop
127 | .26:
128 | mov di,[output]
129 | stosb
130 | mov [output],di
131 | cmp al,0x04
132 | je .7
133 | cmp al,0x0a ; End of line?
134 | je .7 ; Yes, jump.
135 | cmp al,0x41 ; If last byte is letter...
136 | jb .15
137 | cmp al,0x7b
138 | jnb .15
139 | cmp al,0x5b
140 | jb .25
141 | cmp al,0x61
142 | jnb .25
143 | .15:
144 | jmp main_loop
145 | .25:
146 | mov al,[buffer]
147 | cmp al,0x1b ; ...and first byte is Esc?
148 | jne .15 ; No, keep saving data.
149 | .7:
150 | mov si,buffer
151 | lodsb
152 | cmp al,0x01 ; Source code?
153 | jne .8
154 | mov ah,0x40
155 | mov bx,0x0002 ; STDERR
156 | mov cx,[output]
157 | sub cx,si
158 | mov dx,si
159 | int 0x21
160 | push cs
161 | pop ds
162 | push cs
163 | pop es
164 | mov word [output],buffer
165 | jmp main_loop
166 |
167 | .8: cmp al,0x02 ; Error?
168 | jne .9
169 | mov ah,0x40
170 | mov bx,0x0002 ; STDERR
171 | mov cx,[output]
172 | sub cx,si
173 | mov dx,si
174 | int 0x21
175 | push cs
176 | pop ds
177 | push cs
178 | pop es
179 | mov word [output],buffer
180 | jmp main_loop
181 |
182 | .9: cmp al,0x03 ; End of compilation (error)?
183 | jne .10
184 | mov ah,0x40
185 | mov bx,0x0002 ; STDERR
186 | mov dx,message_1_start
187 | mov cx,message_1_end
188 | sub cx,dx
189 | int 0x21
190 | int 0x20
191 |
192 | .10: cmp al,0x04 ; End of compilation (all good)?
193 | jne .11
194 | mov ah,0x40
195 | mov bx,0x0002 ; STDERR
196 | mov dx,message_2_start
197 | mov cx,message_2_end
198 | sub cx,dx
199 | int 0x21
200 | int 0x20
201 | .11:
202 | cmp al,0x1b ; Escape sequence?
203 | je .22
204 | jmp .14
205 | .22:
206 | mov bx,[output]
207 | mov al,[bx-1]
208 | cmp al,0x47 ; G
209 | jne .16
210 | mov ax,$0013 ; Graphics mode
211 | int $10
212 | jmp .17
213 | .16:
214 | cmp al,0x54 ; T
215 | jne .18
216 | mov ax,$0002 ; Text mode
217 | int $10
218 | jmp .17
219 | .18:
220 | cmp al,0x50 ; P
221 | je .24
222 | jmp .17
223 | .24:
224 |
225 | mov al,[si]
226 | cmp al,'['
227 | jne $+3
228 | inc si
229 |
230 | call atoi
231 | cmp ax,320
232 | jnb .23
233 | push ax
234 | mov al,[si]
235 | cmp al,';'
236 | jne $+3
237 | inc si
238 |
239 | call atoi
240 | pop bx
241 | cmp ax,200
242 | jnb .23
243 | mov cx,320
244 | mul cx
245 | add ax,bx
246 | push ax
247 |
248 | mov al,[si]
249 | cmp al,';'
250 | jne $+3
251 | inc si
252 | call atoi
253 | mov cx,30
254 | mul cx
255 | push ax
256 |
257 | mov al,[si]
258 | cmp al,';'
259 | jne $+3
260 | inc si
261 | call atoi
262 | mov cx,59
263 | mul cx
264 | push ax
265 |
266 | mov al,[si]
267 | cmp al,';'
268 | jne $+3
269 | inc si
270 | call atoi
271 | mov cx,11
272 | mul cx
273 | pop bx
274 | add ax,bx
275 | pop bx
276 | add ax,bx
277 | xor dx,dx
278 | mov cx,1600
279 | div cx
280 | add al,$10
281 | pop bx
282 |
283 | push ds
284 | mov cx,0xa000
285 | mov ds,cx
286 | mov [bx],al
287 | pop ds
288 | .23:
289 | mov word [output],buffer
290 | jmp main_loop
291 | .14:
292 | dec si
293 | mov ah,0x40
294 | mov bx,0x0001 ; STDOUT
295 | mov dx,si
296 | mov cx,[output]
297 | sub cx,dx
298 | int 0x21
299 | .17:
300 | mov word [output],buffer
301 | jmp main_loop
302 |
303 | atoi:
304 | xor ax,ax
305 | .1:
306 | mov bl,[si]
307 | cmp bl,0x30
308 | jb .2
309 | cmp bl,0x3a
310 | jnb .2
311 | sub bl,0x30
312 | mov bh,0
313 | mov cx,10
314 | mul cx
315 | add ax,bx
316 | inc si
317 | jmp .1
318 | .2:
319 | ret
320 |
321 | message_1_start:
322 | db "Compilation error!",0x0d,0x0a
323 | message_1_end:
324 |
325 | message_2_start:
326 | db "Compilation successful!",0x0d,0x0a
327 | message_2_end:
328 |
329 | %include "startup.asm"
330 |
331 | input: equ $
332 | pointer: equ $+2
333 | size: equ $+4
334 | mode: equ $+6
335 | status: equ $+7
336 | output: equ $+8
337 |
338 | buffer: equ $+0x000a
339 | buffer_end: equ $+0x040a
340 | input_data: equ $+0x040a
341 |
--------------------------------------------------------------------------------
/tram/comm2.asm:
--------------------------------------------------------------------------------
1 | ;
2 | ; Transputer interface for my small operating system.
3 | ;
4 | ; by Oscar Toledo G.
5 | ; https://nanochess.org/
6 | ;
7 | ; Creation date: Jun/04/2025.
8 | ;
9 |
10 | org 0x0100
11 |
12 | ;
13 | ; This program allows to use my basic operating system as intended at
14 | ; the time (1995) It uses a 1.44mb floppy disk as the drive for the
15 | ; operating system. You can do complete cycles of editing, compilation,
16 | ; assembly, and execution without exiting from the operating system.
17 | ;
18 | ; Usage instructions:
19 | ; * Copy the os/disk.img file into a real 1.44 mb floppy.
20 | ; * Make sure you have os/maestro.cmg in the same directory as this program.
21 | ; * Run this program as: comm2 maestro.cmg
22 | ;
23 |
24 | ;
25 | ; This is written for an ISA board compatible with Inmos B004
26 | ;
27 | ; 0x0150 - Connected to Inmos C011 communication chip.
28 | ; 0x0160 - Reset pin for transputer board
29 | ; 0x0161 - Analyse pin for transputer board
30 | ;
31 | ; I'm supposing the C011 chips is connected to link 0 of the transputer chip.
32 | ;
33 | ; Also that you are using an Inmos T805 transputer (the one I used when I
34 | ; developed my software)
35 | ;
36 |
37 | call bootstrap
38 |
39 | mov ax,0x0002
40 | int 0x10
41 |
42 | mov byte [status],0
43 | mov word [pointer],0
44 | mov word [output],buffer
45 |
46 | handle_service:
47 | mov bx,buffer
48 | xor bp,bp
49 | main_loop:
50 | ;
51 | ; Wait for the transputer to ask for a service
52 | ;
53 | mov dx,0x0152
54 | in al,dx
55 | test al,0x01
56 | je main_loop
57 | mov dx,0x0150
58 | in al,dx ; Read byte
59 | mov [bx],al
60 | inc bx
61 | test bp,bp ; Known limit?
62 | je read_service ; No, jump.
63 | cmp bx,bp ; Reached limit?
64 | jb main_loop ; No, wait for more data.
65 | handle_now:
66 | jmp di
67 |
68 | ; The first time we need to know the message size
69 | read_service:
70 | cmp bx,buffer+2 ; Wait for two bytes.
71 | jb main_loop
72 | mov si,buffer
73 | call read_pseudohex ; Read the service code.
74 | cmp al,0x01
75 | jb .2
76 | cmp al,0x09
77 | jb .3
78 | .2:
79 | mov bx,message_1
80 | call show_message
81 | int 0x20
82 |
83 | .3: mov ah,0
84 | shl ax,1
85 | shl ax,1
86 | mov bx,services_length-4 ; Index into the table.
87 | add bx,ax
88 | mov ax,[bx]
89 | mov di,[bx+2] ; di = service routine.
90 | cmp ax,2
91 | je handle_now
92 | add ax,buffer
93 | xchg ax,bp ; bp = expected pointer.
94 | mov bx,buffer+2
95 | jmp main_loop
96 |
97 | ;
98 | ; Read a pseudo-hexadecimal byte
99 | ;
100 | read_pseudohex:
101 | lodsb
102 | shl al,1
103 | shl al,1
104 | shl al,1
105 | shl al,1 ; High nibble.
106 | mov ah,al
107 | lodsb
108 | and al,0x0f ; Low nibble.
109 | or al,ah
110 | ret
111 |
112 | ;
113 | ; Read a sector from the floppy disk.
114 | ;
115 | read_sector:
116 | mov si,buffer+2
117 | call read_pseudohex
118 | mov ch,al ; Track
119 | call read_pseudohex
120 | mov dh,al ; Head
121 | call read_pseudohex
122 | mov cl,al ; Sector
123 | .2: mov dl,0
124 | mov ax,0x0201
125 | push ds
126 | push es
127 | mov bx,buffer+1
128 | int 0x13
129 | pop es
130 | pop ds
131 | jnb .1
132 | cmp ah,0x06 ; Disk change?
133 | je .2
134 | stc
135 | .1:
136 | mov al,0
137 | adc al,0
138 | mov [buffer],al
139 | cld
140 | mov si,buffer
141 | mov cx,513
142 | send_response:
143 | lodsb
144 | call write_byte
145 | loop send_response
146 | jmp handle_service
147 |
148 | ;
149 | ; Write a sector to the floppy disk.
150 | ;
151 | write_sector:
152 | mov si,buffer+2
153 | call read_pseudohex
154 | mov ch,al ; Track
155 | call read_pseudohex
156 | mov dh,al ; Head
157 | call read_pseudohex
158 | mov cl,al ; Sector
159 | mov dl,0
160 | push cx
161 | push dx
162 | mov bx,buffer
163 | mov cx,512
164 | .0: call read_pseudohex
165 | mov [bx],al
166 | inc bx
167 | loop .0
168 | pop dx
169 | pop cx
170 | .2:
171 | mov ax,0x0301
172 | push ds
173 | push es
174 | mov bx,buffer
175 | int 0x13
176 | pop es
177 | pop ds
178 | jnb .1
179 | cmp ah,0x06 ; Disk change
180 | je .2
181 | stc
182 | .1:
183 | mov al,0
184 | adc al,0
185 | mov [buffer],al
186 | cld
187 | mov si,buffer
188 | mov cx,1
189 | jmp send_response
190 |
191 | ;
192 | ; Format a track (floppy disk 1.44mb)
193 | ;
194 | format_track:
195 | mov si,buffer+2
196 | call read_pseudohex
197 | mov ch,al ; Track
198 | call read_pseudohex
199 | mov dh,al ; Head
200 | mov bx,buffer
201 | mov ah,1
202 | .2:
203 | mov [bx],ch ; Track
204 | inc bx
205 | mov [bx],dh ; Head
206 | inc bx
207 | mov [bx],ah ; Sector
208 | inc bx
209 | mov byte [bx],2 ; 512-bytes
210 | inc bx
211 | inc ah
212 | cmp ah,19
213 | jne .2
214 |
215 | mov ax,0x0512
216 | mov cl,0x01
217 | mov dl,0x00
218 | mov bx,buffer
219 | push ds
220 | push es
221 | int 0x13
222 | pop es
223 | pop ds
224 | jnb .1
225 |
226 | .1:
227 | mov al,0
228 | adc al,0
229 | mov [buffer],al
230 | cld
231 | mov si,buffer
232 | mov cx,1
233 | jmp send_response
234 |
235 | ;
236 | ; Update one line on the screen.
237 | ;
238 | update_screen:
239 | mov si,buffer+2
240 | lodsb
241 | mov ah,160
242 | mul ah
243 | mov di,ax
244 | push es
245 | mov ax,0xb800
246 | mov es,ax
247 | mov cx,80
248 | .1:
249 | call read_pseudohex
250 | stosb
251 | call read_pseudohex
252 | stosb
253 | loop .1
254 |
255 | pop es
256 | jmp handle_service
257 |
258 | ;
259 | ; Get pressed key status.
260 | ;
261 | pressed_key:
262 | mov ah,0x01
263 | int 0x16
264 | je .1
265 | mov ah,0x00
266 | int 0x16
267 | mov bx,scancode
268 | .4:
269 | mov dh,[bx]
270 | test dh,dh
271 | jz .2
272 | cmp ah,dh
273 | jne .3
274 | mov al,[bx+1]
275 | jmp .2
276 |
277 | .3: inc bx
278 | inc bx
279 | jmp .4
280 | .1:
281 | mov al,0x00
282 | .2:
283 | mov [buffer],al
284 | cld
285 | mov si,buffer
286 | mov cx,1
287 | jmp send_response
288 |
289 | scancode:
290 | db 0x3b,0x01
291 | db 0x3c,0x02
292 | db 0x3d,0x03
293 | db 0x3e,0x04
294 | db 0x3f,0x05
295 | db 0x40,0x06
296 | db 0x41,0x07
297 | db 0x42,0x08
298 | db 0x43,0x09
299 | db 0x44,0x0a
300 | db 0x85,0x0b
301 | db 0x86,0x0c
302 | db 0x47,0x17
303 | db 0x48,0x18
304 | db 0x49,0x19
305 | db 0x4b,0x14
306 | db 0x4c,0x15
307 | db 0x4d,0x16
308 | db 0x4f,0x11
309 | db 0x50,0x12
310 | db 0x51,0x13
311 | db 0x52,0x10
312 | db 0x53,0x0e
313 | db 0x00
314 |
315 | ;
316 | ; Get current time.
317 | ;
318 | get_time:
319 | mov ah,0x02
320 | int 0x1a
321 | mov al,dh
322 | call bcd2bin
323 | mov [buffer],al
324 | mov al,cl
325 | call bcd2bin
326 | mov [buffer+1],al
327 | mov al,ch
328 | call bcd2bin
329 | mov [buffer+2],al
330 | mov ah,0x04
331 | int 0x1a
332 | mov al,dl
333 | call bcd2bin
334 | mov [buffer+3],al
335 | mov al,dh
336 | call bcd2bin
337 | mov [buffer+4],al
338 | mov al,ch
339 | call bcd2bin
340 | mov ah,100
341 | mul ah
342 | mov bx,ax
343 | mov al,cl
344 | call bcd2bin
345 | mov ah,0
346 | add ax,bx
347 | sub ax,1900
348 | mov [buffer+5],al
349 | cld
350 | mov si,buffer
351 | mov cx,6
352 | jmp send_response
353 |
354 | ;
355 | ; AL contains a BCD byte.
356 | ; (One digit in the top nibble, one digit in the bottom nibble)
357 | bcd2bin:
358 | mov ah,al
359 | and al,0x0f ; Extract the lower nibble (0-9)
360 | shr ah,1
361 | shr ah,1
362 | shr ah,1
363 | and ah,0xfe ; Shift the upper nibble (0-9) keep x2
364 | add al,ah ; x2
365 | add al,ah ; x4
366 | add al,ah ; x6
367 | add al,ah ; x8
368 | add al,ah ; x10
369 | ret
370 |
371 | ;
372 | ; Set the current cursor position.
373 | ;
374 | cursor_position:
375 | mov si,buffer+2
376 | call read_pseudohex
377 | push ax
378 | call read_pseudohex
379 | mov bh,al
380 | pop ax
381 | mov bl,al
382 | mov ax,bx
383 | xor dx,dx
384 | mov cx,80
385 | div cx
386 | mov dh,al
387 | mov bh,0
388 | mov ah,0x02
389 | int 0x10
390 | jmp handle_service
391 |
392 | ;
393 | ; Set the cursor shape.
394 | ;
395 | cursor_shape:
396 | mov si,buffer+2
397 | call read_pseudohex
398 | push ax
399 | call read_pseudohex
400 | mov cl,al
401 | pop ax
402 | mov ch,al
403 | mov ah,0x01
404 | int 0x10
405 | jmp handle_service
406 |
407 | ;
408 | ; Show a message
409 | ;
410 | show_message:
411 | mov al,[bx]
412 | or al,al
413 | je .1
414 | push bx
415 | mov ah,0x0e
416 | mov bx,0x0007
417 | int 0x10
418 | pop bx
419 | inc bx
420 | jmp show_message
421 | .1:
422 | ret
423 |
424 | message_1:
425 | db "Unhandled service code",0x0d,0x0a
426 |
427 | services_length:
428 | dw 8,read_sector ; 01: Read sector
429 | dw 1032,write_sector ; 02: Write sector
430 | dw 6,format_track ; 03: Format track (floppy disk)
431 | dw 323,update_screen ; 04: Update screen
432 | dw 2,pressed_key ; 05: Pressed key
433 | dw 2,get_time ; 06: Get time
434 | dw 6,cursor_position ; 07: Cursor position
435 | dw 6,cursor_shape ; 08: Cursor shape
436 |
437 | %include "startup.asm"
438 |
439 | input: equ $
440 | pointer: equ $+2
441 | size: equ $+4
442 | mode: equ $+6
443 | status: equ $+7
444 | output: equ $+8
445 |
446 | buffer: equ $+0x000a
447 | buffer_end: equ $+0x000a+1152
448 | input_data: equ $+0x000a+1152
449 |
--------------------------------------------------------------------------------
/tram/comm2.com:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/tram/comm2.com
--------------------------------------------------------------------------------
/tram/m3d.cmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/tram/m3d.cmg
--------------------------------------------------------------------------------
/tram/pascal.cmg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/tram/pascal.cmg
--------------------------------------------------------------------------------
/tram/startup.asm:
--------------------------------------------------------------------------------
1 | ;
2 | ; Start up code and bootstrap for transputer
3 | ;
4 | ; by Oscar Toledo G.
5 | ;
6 | ; Creation date: Jun/04/2025.
7 | ;
8 |
9 | arguments: equ 0x0080
10 |
11 | ;
12 | ; Bootstrap code.
13 | ; Get initial image filename from the command line.
14 | ;
15 | bootstrap:
16 | push cs
17 | push cs
18 | pop ds
19 | pop es
20 | call parse_arguments
21 |
22 | call reset_transputer
23 |
24 | mov dx,arguments ; File name.
25 | call load_file
26 |
27 | call move_arguments
28 |
29 | ; New position in dx:ax (file length)
30 | ; Give this info to the boot loader.
31 | mov ax,[size]
32 | mov bl,al
33 | and bl,0x0f
34 | or [boot_image+64],bl
35 | mov cl,4
36 | shr ax,cl
37 | mov bl,al
38 | and bl,0x0f
39 | or [boot_image+63],bl
40 | shr ax,cl
41 | mov bl,al
42 | and bl,0x0f
43 | or [boot_image+62],bl
44 | shr ax,cl
45 | mov bl,al
46 | and bl,0x0f
47 | or [boot_image+61],bl
48 |
49 | ;
50 | ; Send the bootstrap code to the transputer
51 | ;
52 | mov cx,boot_image_end-boot_image
53 | mov al,cl
54 | call write_byte
55 | mov bx,boot_image
56 | .1:
57 | mov al,[bx]
58 | call write_byte
59 | inc bx
60 | loop .1
61 |
62 | call wait_a_little
63 | call wait_a_little
64 |
65 | ;
66 | ; Send the main program to the transputer
67 | ;
68 | mov cx,[size]
69 | mov bx,input_data
70 | .2:
71 | mov al,[bx]
72 | call write_byte
73 | inc bx
74 | loop .2
75 |
76 | call wait_a_little
77 | jmp wait_a_little
78 |
79 | ;
80 | ; Parse arguments.
81 | ;
82 | parse_arguments:
83 | cld
84 | mov si,0x0081
85 | mov di,0x0080
86 | .1:
87 | lodsb
88 | cmp al,0x0d
89 | je .5
90 | cmp al,' '
91 | je .1
92 | .2:
93 | stosb
94 | lodsb
95 | cmp al,0x0d
96 | je .3
97 | cmp al,' '
98 | jne .2
99 | .3: push ax
100 | xor al,al
101 | stosb
102 | pop ax
103 | cmp al,0x0d
104 | jne .1
105 | .5:
106 | xor al,al
107 | stosb
108 | ret
109 |
110 | ;
111 | ; Move arguments.
112 | ;
113 | move_arguments:
114 | cld
115 | mov si,0x0080
116 | mov di,0x0080
117 | .1: lodsb
118 | cmp al,0
119 | je .4
120 | .5:
121 | lodsb
122 | cmp al,0
123 | jne .5
124 |
125 | .2: lodsb
126 | cmp al,0
127 | je .4
128 | stosb
129 | .3:
130 | lodsb
131 | stosb
132 | cmp al,0
133 | jne .3
134 | jmp .2
135 |
136 | .4: stosb
137 | ret
138 |
139 | ;
140 | ; Load a complete file into memory.
141 | ;
142 | load_file:
143 | push cs
144 | pop ds
145 | push cs
146 | pop es
147 | mov ax,0x3d00 ; Open file, read only.
148 | int 0x21
149 | jb dos_error
150 | mov [input],ax
151 |
152 | mov ax,0x4202 ; Go to end of file.
153 | mov bx,[input]
154 | xor cx,cx
155 | xor dx,dx
156 | int 0x21
157 | mov [size],ax
158 |
159 | mov ax,0x4200 ; Go to start of file.
160 | mov bx,[input]
161 | xor cx,cx
162 | xor dx,dx
163 | int 0x21
164 |
165 | mov ah,0x3f ; Read file.
166 | mov bx,[input]
167 | mov cx,[size]
168 | mov dx,input_data
169 | mov [pointer],dx
170 | int 0x21
171 |
172 | mov bx,[input]
173 | mov ah,0x3e ; Close file.
174 | int 0x21
175 |
176 | xor bx,bx
177 | mov [input],bx
178 | push cs
179 | pop ds
180 | push cs
181 | pop es
182 | ret
183 |
184 | ;
185 | ; Report DOS error and exit.
186 | ;
187 | dos_error:
188 | mov ah,0x40
189 | mov bx,0x0002 ; STDERR
190 | mov dx,message_0_start
191 | mov cx,message_0_end
192 | sub cx,dx
193 | int 0x21
194 | int 0x20
195 |
196 | message_0_start:
197 | db "Unable to open file",0x0d,0x0a
198 | message_0_end:
199 |
200 | ;
201 | ; >>>>>>>>>>>>>>>>>>>>
202 | ; Start of the transputer code.
203 | ; >>>>>>>>>>>>>>>>>>>>
204 | ;
205 |
206 | ;
207 | ; Reset transputer.
208 | ;
209 | reset_transputer:
210 | ; Initial state
211 | mov dx,0x0160
212 | mov al,0
213 | out dx,al
214 | mov dx,0x0161
215 | mov al,0 ; We don't want "analyse"
216 | out dx,al
217 | call wait_a_little
218 | call wait_a_little
219 |
220 | ; Reset
221 | mov dx,0x0160
222 | mov al,1
223 | out dx,al
224 | call wait_a_little
225 | call wait_a_little
226 | call wait_a_little
227 | call wait_a_little
228 |
229 | ; Deassert reset
230 | mov dx,0x0160
231 | mov al,0
232 | out dx,al
233 | call wait_a_little
234 | call wait_a_little
235 | call wait_a_little
236 | call wait_a_little
237 | call wait_a_little
238 | call wait_a_little
239 | call wait_a_little
240 | call wait_a_little
241 | ret
242 |
243 | ;
244 | ; Wait 1/18.2 sec.
245 | ;
246 | wait_a_little:
247 | mov ah,0x00 ; Read real-time clock.
248 | int 0x1a
249 | mov bx,dx
250 | .1:
251 | mov ah,0x00 ; Read real-time clock.
252 | int 0x1a
253 | cmp dx,bx
254 | je .1
255 | ret
256 |
257 | ;
258 | ; Write byte via link
259 | ;
260 | write_byte:
261 | push ax
262 | mov dx,0x0153
263 | .1: in al,dx
264 | test al,1
265 | je .1
266 | pop ax
267 | mov dx,0x0151
268 | out dx,al
269 | ret
270 |
271 | ;
272 | ; Read byte via link
273 | ;
274 | read_byte:
275 | push ax
276 | mov dx,0x0152
277 | .1: in al,dx
278 | test al,1
279 | je .1
280 | pop ax
281 | mov dx,0x0150
282 | in al,dx
283 | ret
284 |
285 | boot_image:
286 | db 0x24, 0xf2 ; mint
287 | db 0x22, 0x20, 0x2f, 0x2f, 0x88 ; adc 0x20ff8
288 | db 0x23, 0xfc ; gajw
289 | db 0x22, 0xf9 ; testerr
290 | db 0x25, 0xf7 ; clrhalterr
291 | db 0x29, 0xfc ; fptesterr
292 | db 0x24, 0xf2 ; mint
293 | db 0x21, 0xf8 ; sthf
294 | db 0x24, 0xf2 ; mint
295 | db 0x21, 0xfc ; stlf
296 | db 0x24, 0xf2 ; mint
297 | db 0x24, 0xf2 ; mint
298 | db 0xe9 ; stnl 9
299 | db 0x24, 0xf2 ; mint
300 | db 0x24, 0xf2 ; mint
301 | db 0xea ; stnl 10
302 | db 0x40 ; ldc 0
303 | db 0x25, 0xf4 ; sttimer
304 | db 0x27, 0xfa ; timerdisableh
305 | db 0x27, 0xfb ; timerdisablel
306 | db 0x40 ; ldc 0
307 | db 0xd0 ; stl 0
308 | db 0x49 ; ldc 9
309 | db 0xd1 ; stl 1
310 | db 0x70 ; ldl 0
311 | db 0x24, 0xf2 ; mint
312 | db 0xfa ; wsub
313 | db 0x21, 0xf2 ; resetch
314 | db 0x10 ; ldlp 0
315 | db 0x4a ; ldc 10
316 | db 0x22, 0xf1 ; lend
317 | db 0x24, 0xf2 ; mint
318 | db 0x24, 0x50 ; ldnlp 64
319 | db 0x24, 0xf2 ; mint
320 | db 0x54 ; ldnlp 4
321 | db 0x20, 0x20, 0x20, 0x40 ; ldc initial_code_length
322 | db 0xf7 ; in
323 | db 0x24, 0x9c ; call 0x80000100
324 | db 0x2f, 0xff ;0x60, 0x0c
325 | boot_image_end:
326 |
327 |
--------------------------------------------------------------------------------
/tram/test1.asm:
--------------------------------------------------------------------------------
1 | ;
2 | ; Programa de prueba de transputer
3 | ;
4 | ; por Oscar Toledo G.
5 | ; https://nanochess.org/
6 | ;
7 | ; Fecha de creación: 21-may-2025.
8 | ;
9 |
10 | ;
11 | ; Código de inicialización.
12 | ;
13 | ; De mi emulador de transputer en
14 | ; https://github.com/nanochess/transputer
15 | ;
16 | ; Ensamblar con tasm, disponible en el mismo lugar.
17 | ;
18 | mint
19 | adc 0x0ffc
20 | gajw
21 | testerr
22 | clrhalterr
23 | fptesterror
24 | mint
25 | sthf
26 | mint
27 | stlf
28 | mint
29 | mint
30 | stnl 9
31 | mint
32 | mint
33 | stnl 10
34 | ldc 0
35 | sttimer
36 | timerdisableh
37 | timerdisablel
38 | ldc 0
39 | stl 0
40 | ldc 9
41 | stl 1
42 | ldl 0
43 | mint
44 | wsub
45 | resetch
46 | ldlp 0
47 | ldc 10
48 | lend
49 | ;
50 | ; Comienza nuestro código
51 | ;
52 | mint
53 | ldc 0x6f6e616e ; ASCII "nano"
54 | outword
55 | detenerse:
56 | j detenerse
57 |
--------------------------------------------------------------------------------
/tram/test1.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nanochess/transputer/67480b100ca234914980d00fd212baa0e332556c/tram/test1.bin
--------------------------------------------------------------------------------