{"id":350,"date":"2026-03-06T22:15:22","date_gmt":"2026-03-06T22:15:22","guid":{"rendered":"https:\/\/hackcuba.net\/?p=350"},"modified":"2026-03-06T22:15:22","modified_gmt":"2026-03-06T22:15:22","slug":"guis-en-modo-texto-en-la-era-de-ms-dos","status":"publish","type":"post","link":"https:\/\/hackcuba.net\/?p=350","title":{"rendered":"GUIs en modo texto en la era de MS-DOS"},"content":{"rendered":"\n<p>En la \u00e9poca de MS-DOS desde principios de los a\u00f1os 80, como suced\u00eda antes con CP\/M y era tambi\u00e9n la norma en otros sistemas operativos, los usuarios sol\u00edan usar una interfaz de comandos para interactuar con la computadora.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>La interfaz de comandos consiste en un indicador conformado por uno o m\u00e1s s\u00edmbolos, por lo com\u00fan de color blanco sobre la pantalla oscura de la computadora; dicho s\u00edmbolo o conjunto de s\u00edmbolos se denomina prompt y sirve para sugerir a los usuarios del sistema que \u00e9ste est\u00e1 esperando por una orden o comando de lo cual se deriva el nombre de la interfaz; estas \u00f3rdenes o comandos se indican escribiendo el nombre de los comandos, los cuales pueden ser internos o procesados por el mismo int\u00e9rprete de comandos, o pueden ser externos o consistentes en programas independientes.<\/p>\n\n\n\n<p>El usuario del sistema puede escribir un comando seguido o no de una serie de par\u00e1metros para especificar m\u00e1s detalles sobre la operaci\u00f3n a realizar y terminar la entrada presionando la tecla del teclado. La orden dada por el usuario es entonces procesada por el int\u00e9rprete de comandos del sistema operativo (COMMAND.COM en MS-DOS) y si no hay un error de sintaxis en la pantalla se pueden obtener los resultados tambi\u00e9n en forma de texto.<\/p>\n\n\n\n<p>En todo caso, como este m\u00e9todo para interactuar con la computadora era un tanto primitivo y no permit\u00eda mucha productividad, y adem\u00e1s resultaba m\u00e1s engorroso para usuarios no relacionados con la inform\u00e1tica dado los obligaba a recordar muchos detalles retardando el aprendizaje con el consiguiente aumento de los costos de capacitaci\u00f3n, muchos programas comenzaron pronto a utilizar por su cuenta alguna forma de interfaz de usuario m\u00e1s elaborada y adecuada para conseguir sus objetivos.<\/p>\n\n\n\n<p>Las interfaces gr\u00e1ficas de usuario o GUI (Graphical User Interfase) pod\u00edan solucionar el problema de la interacci\u00f3n m\u00e1s sencilla con el sistema porque se basan en el principio WYSIWYG (What You See Is What You Get) y por tanto facilitan recordar las opciones o funcionalidades disponibles en los programas. En MS-DOS estuvieron disponibles a nivel de sistema operativo s\u00f3lo a partir de 1985 cuando se pudo acceder a Windows 1.0 que no tuvo mucho \u00e9xito de todos modos debido a distintos factores. Pero la idea no era algo tan nuevo para los a\u00f1os 80 puesto toda la teor\u00eda hab\u00eda sido presentada d\u00e9cadas antes y tambi\u00e9n se hab\u00eda implementado desde finales de los 70s y de forma comercial desde principios de los 80s en una instituci\u00f3n de nombre Xerox PARC situada en Palo Alto, California.<\/p>\n\n\n\n<p>En adici\u00f3n a las caras computadoras Xerox Alto y Xerox Star de Xerox PARC, Apple present\u00f3 Apple Lisa en 1983, una computadora basada en una GUI si bien algo costosa todav\u00eda, y m\u00e1s tarde en 1984 sac\u00f3 al mercado Macintosh con su sistema operativo Mac OS, tambi\u00e9n basado en una GUI y a un precio m\u00e1s m\u00f3dico, lo cual permiti\u00f3 se convirtiera en la primera computadora con una interfaz gr\u00e1fica en tener \u00e9xito a pesar de no soportar colores.<\/p>\n\n\n\n<p>Pero sin importar esos casos m\u00e1s bien aislados, en el ecosistema de MS-DOS, por muchos a\u00f1os se sigui\u00f3 apostando por la interfaz de comandos a nivel del sistema operativo.<\/p>\n\n\n\n<p>El estado de cosas descrito no era una casualidad, una GUI consume recursos tanto de procesador como de memoria y esos eran recursos escasos, por un lado por la potencia reducida de los microprocesadores de la \u00e9poca como el 8088, y por otro porque por correr MS-DOS en modo real no ten\u00eda acceso a toda la memoria disponible m\u00e1s all\u00e1 del primer megabyte incluso si esta estuviera disponible.<\/p>\n\n\n\n<p>De todas formas, como la \u00fanica forma de expandir el uso de las microcomputadoras a un p\u00fablico m\u00e1s heterog\u00e9neo result\u00f3 ser el dise\u00f1o de interfaces gr\u00e1ficas, de modo a dichos usuarios no especializados les costara menos esfuerzo usar estos poderosos dispositivos en la soluci\u00f3n de problemas propios de su \u00e1rea de actividad y pudieran lograrlo con m\u00e1s productividad, como se ha dicho los desarrolladores de software empezaron a incluir dichas interfaces a nivel de los programas dise\u00f1ados por ellos a pesar de no existir soporte del sistema operativo para ellas o de ese soporte no ser recomendable en todas las situaciones.<\/p>\n\n\n\n<p>Las interfaces gr\u00e1ficas usadas a nivel de los programas en MS-DOS tambi\u00e9n estaban por lo general basadas en texto debido a las limitaciones mencionadas en la capacidad de procesamiento de los microprocesadores y en la disponibilidad de memoria, teniendo en cuenta que una interfaz gr\u00e1fica basada en caracteres ASCII resulta mucho m\u00e1s ligera en comparaci\u00f3n con otra consistente en el trazado de l\u00edneas, rect\u00e1ngulos y otros gr\u00e1ficos o incluso im\u00e1genes de mapas de bits.<\/p>\n\n\n\n<p>Es posible mencionar algunos programas cl\u00e1sicos como el famoso Norton Commander todos ellos basados en una interfaz de usuario en modo texto.<\/p>\n\n\n\n<p>En muchos lenguajes de programaci\u00f3n tambi\u00e9n se inclu\u00eda alguna forma de dise\u00f1ar una interfaz gr\u00e1fica en modo texto con men\u00fas y otras funcionalidades afines, si bien esto era posible implementarlo en casi todos los entornos de programaci\u00f3n para MS-DOS de una forma m\u00e1s o menos simple, porque en una interfaz en modo texto se trata nada m\u00e1s de escribir texto y ciertos caracteres extendidos en la pantalla adem\u00e1s de utilizar algunos colores para resaltar determinados elementos.<\/p>\n\n\n\n<p>En particular en los sistemas xBase derivados de dBase II era bastante sencillo de implementar una interfaz en modo texto como puede verse en las l\u00edneas de c\u00f3digo FoxBASE expuestas a continuaci\u00f3n; por medio de este c\u00f3digo se presenta un men\u00fa en pantalla con un submen\u00fa en el men\u00fa Listado y se muestran recuadros de mensaje como resultado de la interacci\u00f3n con los men\u00fas Alta y Salir:\u200b<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: vb; title: ; notranslate\" title=\"\">\nSET STATUS OFF\nSET SCOREBOARD OFF\nSET TALK OFF\nSTORE .F. TO ExitFlag\nDO WHILE .NOT. ExitFlag\n    SET COLOR TO W\/B\n    CLEAR\n    SET COLOR TO W+\/BG, N\/W, W\n    @ 0,0 SAY SPACE(80)\n    @ 24,0 SAY SPACE(80)\n    SET MESSAGE TO 24 CENTER\n    @ 0,1 PROMPT &quot;ALTA &quot; MESSAGE &quot;Alta de usuarios &quot;\n    @ 0,6 PROMPT &quot;BAJA &quot; MESSAGE &quot;Baja de usuarios &quot;\n    @ 0,11 PROMPT &quot;LISTADO &quot; MESSAGE &quot;Listado DESDE\/HASTA&quot;\n    @ 0,19 PROMPT &quot;SALIR &quot; MESSAGE &quot;Salir del programa&quot;\n    MENU TO Option\n    SET PROCEDURE TO MsgUtils\n    STORE 0 TO MsgButton\n    DO CASE \n        CASE Option = 1\n            DO MsgBox WITH &quot;Escogi\u00f3 dar alta&quot;, &quot;Aceptar&quot;, &quot;Cancelar&quot;, &quot;&quot;, .F., MsgButton\n        CASE Option = 2\n        CASE Option = 3\n            @ 2,12 Prompt &quot;Personas &quot; Message &quot;Lista las personas&quot;\n            @ 3,12 prompt &quot;Mascotas &quot; message &quot;Lista las mascotas&quot;\n            @ 1,11, 4,21 BOX\n            MENU TO SubOption\n        CASE Option = 4\n            DO MsgBox WITH &quot;\u00bfEst\u00e1 seguro de salir del sistema?&quot;, &quot;S\u00ed&quot;, &quot;No&quot;, &quot;&quot;, .F., MsgButton\n            IF MsgButton = 1\n                ExitFlag = .T.\n            ENDIF\n    ENDCASE\n    CLOSE PROCEDURE\nENDDO\nSET TALK ON\nSET SCOREBOARD ON\nSET STATUS ON\nSET COLOR TO\nCLEAR\n<\/pre><\/div>\n\n\n<p>Por supuesto, en este caso se trata de algo bastante sencillo, y en el c\u00f3digo tambi\u00e9n se ha omitido la definici\u00f3n del procedimiento MsgBox en MsgUtils encargado de conformar y mostrar el mencionado recuadro del mensaje para los usuarios.<br><br>En la imagen expuesta puede observarse el resultado obtenido por medio del c\u00f3digo presentado donde tambi\u00e9n se puede ver el cuadro de mensaje invocado por el men\u00fa Salir para comprobar si de verdad se tiene la intenci\u00f3n de terminar el programa.\u200b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/foxplus_gui.webp\" alt=\"\" class=\"wp-image-351\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/foxplus_gui.webp 640w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/foxplus_gui-300x188.webp 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p>\u00bfQu\u00e9 puedes comentar sobre esta forma de interactuar con los usuarios en la \u00e9poca de MS-DOS?<br><br>\u00bfQu\u00e9 programas con una interfaz de usuario en modo texto has usado adem\u00e1s del casi omnipresente Norton Commander?\u200b<\/p>\n\n\n\n<p>Tomado de <a href=\"http:\/\/fcuba.net\" data-type=\"link\" data-id=\"fcuba.net\">ForosCuba<\/a> del tema <a href=\"https:\/\/fcuba.net\/tema\/guis-en-modo-texto-en-la-era-de-ms-dos.34771\/\" data-type=\"link\" data-id=\"https:\/\/fcuba.net\/tema\/guis-en-modo-texto-en-la-era-de-ms-dos.34771\/\">https:\/\/fcuba.net\/tema\/guis-en-modo-texto-en-la-era-de-ms-dos.34771\/<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En la \u00e9poca de MS-DOS desde principios de los a\u00f1os 80, como suced\u00eda antes con CP\/M y era<\/p>\n","protected":false},"author":2,"featured_media":351,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59],"tags":[88,122],"class_list":["post-350","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigos","tag-codigos","tag-foxpro"],"_links":{"self":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=350"}],"version-history":[{"count":1,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/350\/revisions"}],"predecessor-version":[{"id":352,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/350\/revisions\/352"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/media\/351"}],"wp:attachment":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}