Que turbo C acepte el far.

8 envíos / 0 nuevos
Último envío
#1 Dom, 11/09/2016 - 14:45
Percontator
Imagen de Percontator
Desconectado/a
colaborador
se unió: 20/03/16

Que turbo C acepte el far.

 

 

 Un reto para programadores.

 

 Hola a todos.    (Ah, mira, un subforo que estreno yo ).

 Después de unas semanas fuera ya he vuelto.
 ... Y traigo problemas nuevos. 

 

 Como tengo ya por costumbre, durante las vacaciones me convierto en "programador", (ansi C, pelado).
 ... y como sea que me gustan los equipos antiguos, intento vivir la experiencia de como era
 hacerlo "a la antiga usanza e manera".
 Para ello cuento con un portátil de los de entonces (Toshiba CS2110), (un 486, dx no crea, :)  ),
 un s.o. ms-dos 5.00, y un turbo c (2.0 ó asi), cedido por la propia Borland.

 A pesar de sus pequeñas manias y algún problemilla, he de confesar que funciona sorprendentemente
 bien, y además es muy agradable y fácil de trabajar con el.
 Y además sin windows!, ni siquiera uno antiguo. Sin "telemetrias", sin sp's, sin espionajes en red,
 sin nada, solo el toshiba el programa y yo. :). (­Chupate esa Redmond! ).
 Aunque este año ... (Con un bug hemos topado, amigo Sancho).

 Intenté‚ entrar al modo gráfico que parece que tiene, y que está soportado por el header
 graphics.h. Me ilustré‚ con los ejemplos que hay en las web sobre como hacerlo, incluso
 encontre un tutorial sobre como hacerlo en el turbo C, con sus ejemplos de código.

 Recorté‚ y pegué‚ el primero de los ejemplos, para ver como va eso. Y plaff!, la primera en
 la frente.
 Me tiró un montón de errores, ­del header!, no del código.
 No es la primera vez que me pasa, (con 1 ó 2 errores, tantos nunca), y entonces copiaba
 la declaración que necesitaba, la pegaba en el programa. Y listos.
 Esta vez hay muchas declaraciones implicadas que las necesito, y no puedo usarlas.

 Al final resulta que los errores, (ejemplo mas abajo), los produce la partícula "far"
 que usan dichas declaraciones.  :(   [confused]
 Después de mirar internet, (no venía en mis textos), parece que es algo que se usaba
 con arquitecturas y s.o. muy antiguos y que era para evitar los errores de segmento.
 (Bueno, no es un 8086, ni un dos 2.x ó 3.x, pero está a solo a unas 3 generaciones).

 En muchos escritos decían que se podían retirar los far y no pasa nada.
 Yo lo intenté‚ con una copia editada del header. Y los errores desde luego desaparecieron,
 todo ok.
 Pero al intentar correr el código, (paso a paso), sencillamente se reinicia la computadora
 cuando llego al initgraph.
 Lo intenté‚ montando una copia de todo en un laptop PIII que tengo, y msdos 6.22, por la edad no será ,
 y se queda clavado cuando llega al initgraph.

 
 O sea, que necesito si o si que el turbo C reconozca sus propios far como una parte
 correcta de la orden, pero no tengo ni idea de donde se gestiona la aceptación de cosas
 como esta que no veo por ningún fichero, ni sale en ninguno de los menus help del programa.

 ¿ Alguien puede orientarme de donde hay que tocar para que acepte sus propios far ?.

 ___________________________________________________________________________________

 Pongo como ejemplo los 4 primeros errores. (Y hay uno por cada linea que lleva el far).
 el número que hay delante es la línea del header en donde está  el error, debajo están
 los errores que da.

 

 241 void far _Cdecl arc(intx,inty, int stangle, int endangle, int radius);
	size of structure or array not known.
	declaration sintax error.
 
 243 far _Cdecl bar(int left, int top, int right, int botom);
	size of structure or array not known.
	declaration sintax error.

 244 void far _Cdecl bar3d (int left, int top, int right, int botom, int depth, int topflag);
	size of structure or array not known.
	declaration sintax error.

 246 far _Cdecl circle(int x, int y, int radius);
	size of structure or array not known.
	declaration sintax error.

 

 En todos ellos el punto de la linea marcado es la apertura del parentesis.

 

 

 Saludos a todos.  Espero que hayais tenido una buenas vacaciones.

 

Mié, 14/09/2016 - 14:05
NerveNet
Imagen de NerveNet
Desconectado/a
colaborador
se unió: 14/03/16

Bueno, bueno, bueno,...

No te prometo nada, voy a ver si saco tiempo durante el fin de semana y miro el Turbo C++ 3.0 que tengo funcionando en una DOSBOX, algún programa gráfico tengo hecho con él de los años '90.

 

En la época en que usaba el Turbo C++ 3.0 lo primero que había que definir antes de programar es qué tipo de ejecutable en función del modelo de memoría pretendías utilizar en equipos con procesadores compatibles con el 8086/88.

Hay varios modelos de memoria, un ejecutable .com por ejemplo tenía todos los punteros y funciones en el mismo segmento de memoria (64KB), es decir del tipo near, un .exe disponía de distintos tipos de modelo de memoría a cada cual más rocambolesco con punteros y/o funciones near, far, huge,...

Ten presente que el 8086/88 es una chapuza de procesador, una especie de 8080 mejorado con operaciones y registros de 16 bits, pero con un enmierde total en cuanto a modelo de gestión de memoria más parecido a un procesador de 8 bits con truco que a un procesador de 16 bits de verdad. Motorola lo hizo mucho mejor con su 68000, claro que tuvo que romper por completo con su línea anterior de procesadores. Intel simplemente continuó vendiendo la misma basura que vendía a mediados de los '70 a comienzos de los '80, ahora, entonces de 16 bits.

 

Lo dicho, te lo miro y te cuento algo este fin de semana.

 

A un clic de distancia de ti...

Jue, 15/09/2016 - 13:40
Percontator
Imagen de Percontator
Desconectado/a
colaborador
se unió: 20/03/16

 

  El mio es C solo, sin los pluses, (lo mismo ni existian por entonces), y 2.0, que fué lo nás que pude conseguir cuando lo miré.

 En cuanto a lo modos de compilación y generación, lo tengo puesto en 286, que aunque yo trabaje con un 486, es lo más

 avanzado que sale en el menu.

 El modelo lo tengo, no recuerdo bien si en small o tiny, y optimizado para ¿tamaño?, (creo).

 Este fin de semana lo repasaré.

 

 

 

 @ Berbellon  (en  ¿que haces?).

  El tiny C. Me suena este nombre. Creo que es una de las opciones que se barajaron cuando empezé con todo esto, y luego se hizo

 alguna prueba con el cuando choqué por primera vez con alguna de las excentricidades de turbo C.

 Pero al final me quedé con el turbo C, que me parecia mas avanzado y versatil.

 

 ... A ver si aún tendré que ver si sigue por ahi. 

 

 

 

Jue, 15/09/2016 - 18:36
NerveNet
Imagen de NerveNet
Desconectado/a
colaborador
se unió: 14/03/16

Lo que tengo es el Turbo C++ 3.0 original con su libro y disquetes de instalación de 3.5" y5.25".

Tiene un IDE en modo texto muy bueno, soporta dos monitores, de forma que en uno tienes el IDE (tarjeta de vídeo MDA) y en el otro monitor (un VGA p.e.) para ejecutar y depurar el programa.

Si quieres algo parecido busca por RHIDE y Delorie (DJGPP), mira aquí https://en.m.wikipedia.org/wiki/DJGPP

 

A un clic de distancia de ti...

Dom, 18/09/2016 - 13:51
Percontator
Imagen de Percontator
Desconectado/a
colaborador
se unió: 20/03/16

 

 Gracias por la indicación ya me los visitaré.

 

 Una pregunta, Este turbo C++ 3.0 que dices ¿sirve además para C simple, (ansi, del de K&R, sin pluses), o solo el C "moderno" (C++) ?.

 Entiendo que el 3.0 debe estar libre ahora en alguno de estos dos sitios.

 

Mar, 20/09/2016 - 19:38 (Responder a #5)
NerveNet
Imagen de NerveNet
Desconectado/a
colaborador
se unió: 14/03/16

Soporta C++ y C (K&R), el manual de Turbo C++ 3.0 es realmente un curso completo de C y C++.

A un clic de distancia de ti...

Jue, 22/09/2016 - 14:18
Percontator
Imagen de Percontator
Desconectado/a
colaborador
se unió: 20/03/16

 

 Gracias.

Ahora estoy en lo de bajar, leer, y luego evaluar a los candidatos propuestos, y algun otro.  Pero ya haré una busqueda del 3.0, a ver si hoy dia ya se puede descargar.

 

 A ver si lo tengo realmente a un click de distancia.  :D

 

 

 [añadido]  Ah, pues si, ya lo he encontrado, y como es pequeño, pues "pa la saca". smiley

  ( Pequeño. Quién les iba a decir entonces que un programa que necesita 3 disquettes lo ibamos a considerar "calderilla", laugh)

 [/añadido]

 

_____________________________________

 Porque asi, para el 2.0 que tengo instalado ¿ no se avista ninguna opción de que acepte el far de sus propias librerias ?.

 

 

Dom, 25/09/2016 - 14:33
Percontator
Imagen de Percontator
Desconectado/a
colaborador
se unió: 20/03/16

 

 

 Este fin de semana me he tirado al rio y he instalado directamente el turbo C++ 3.0 que descargué.
 Al fin y al cabo viene recomendado, trae referencias, y ya lo tengo conocido.

 La primera impresión no ha sido mala. Lo probé con un "hola mundo" y algunos programillas más
 de cuando estaba aprendiendo el lenguaje y siguiendo el tutorial.
 Funciona, compila, produce los .exe correctos. Bien.
 He tenido un problemita al llegar a uno que necesita un .prj, y es que según te explican,
 el formato es diferente de la simple mención de los archivos que usaba el 2.0.
 He probado a reformarlos con el ' extern "C" declaración ' según explican pero aún me dice
 que no es un .prj válido.
 Que le haremos, ya me lo miraré luego. Por suerte lo que quiero probar no necesita ningún prj.

 Vamos a ello. Lo he dispuesto todo, cargo el ejemplo, compilo, y ....
 Error!. O errores, porque son un montón, y según creo en las mismas lineas que aparecen
 en el otro. Solo un ligero cambio en los mensajes de error. A saber, y por cada línea con far:

 

Size of far is unknown or zero.
	Declaration sintax error.

¿Qué es esto?, por el amor de Dios!, "ce n'est pas possible!".

 

 Temiendo que pueda haber algún error o inadaptación en el ejemplo, aunque lo errores los da
 para la libreria, no el código fuente, decido que nada mejor que visitar el subdirectorio
 de 'examples' y buscar si hay alguna demo de gráficos.
 Lo he probado con barchart.c, con plotemp.c, y finalmente con bgidemo.c, (que además me da
 dos o tres errores para dos.h  ).

 En todos ellos salen los mismos errores para la libreria gráfica.
 ¿Cómo es posible?, es una versión nueva, en una instalación totalmente nueva,
 en el disco y lugar que me han pedido, está usando sus propios ejemplos de muestra, sus
 programas y drivers, y su propio 'graphics.h', en una versión que aseguran que da
 total soporte a los far. Y aún asi me sigue dando problemas con ellos.

 

 

 "Esto es un infierno. No me siento los gráficos. Ayudame".