Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
What Is Textmode? (polyducks.co.uk)
170 points by memorable on Feb 20, 2023 | hide | past | favorite | 45 comments



I used to be a big fan of giant ASCII art in log files, and I still like to include a big banner on server startup, but most of the cloud logging solutions like Splunk and the ELK stack don’t really handle big ASCII pictures in the middle of the log.

I was working at a big bank about ten years ago where we had a half-assed poorly implemented compute grid — some customization of a terrible IBM product. For viewing logs across all machines we had a home grown web app which would allow you to navigate through them. I realized the app didn’t sanitize the log output for display, and I started to include animated gifs and memes into my error messages. My boss told me to cut it out, I said, no, someone should fix the log viewer. It took me about an hour to fuzz inputs on our customer facing application that would generate a server error log which could execute arbitrary JavaScript on our machines. The log viewer got fixed.


> It typically uses 256 characters exemplified by the font CP437

I have fond memories of code page 437 (CP437). Code 1 is a smiley face. So is code 2. How cool is that! Codes 3 to 6 are playing card suits. The higher codes also contained line and box drawing characters. This allowed writing simple text adventure games that could be embellished with these graphical symbols. The smileys, lines, boxes, blocks, triangles, etc. could be used to add character to a text adventure game.

Shameless plug: I recently wrote a small toolkit to render CP437 characters on a HTML5 canvas for a retro-style game project I was working on.

Source: https://github.com/susam/pcface

Demo: https://susam.github.io/pcface/src/demo.html


For an example of what could be done with CP437, see Castle Adventure, an adventure game with roguelike elements which used the CP437 glyphs to represent objects and the walls of the castle itself: https://www.youtube.com/watch?v=B_xhGQbxDPg


(Nostalgia.)

I had an MS-DOS app calls SCRPAINT which was a painting app for the 80x25 text mode. You could draw lines and it would do the right thing when lines bended at right angles or crossed by looking up the junction character code for the two lines.


There’s a whole genre of PETSCII games. For example, a PETSCII version of Lemmings: https://c64online.com/c64-games/petscii-lemmings/

A couple of games with more impressive PETSCII graphics, and some background info about PETSCII, in this video: https://youtu.be/3Sv_TM4WwC0


Note that ANSI is not BBS-specific and was not _created_ for BBSs... it was already around and BBSs made heavy use of it.

EDIT: what I find is missing on the post is Teletext art (see e.g., http://teletextart.co.uk/)


Right, it was for controlling terminals originally.

I recall in the early 90s I worked for an ag chemical company as an intern. They had a horrid budgeting app written on some old crusty DB platform, I was asked to make the text interface “better”.

We accessed via VT terminal emulators, so I created a library of ANSI drawing primitives and created a primitive window / menu system out of it. It blew everyone’s mind at the time, but it was only a couple of week’s work.

* Edited to add a lot of DOS software and terminal stuff did similar things, including some nifty Terminate and Stay Resident utilities (TSR!).


In a way, the limitations of those machines made the data representation so cool.

These days everything is a flat raster buffer with every pixel being independently settable. It's incomparably more convenient but also more "boring".

Same thing with music and audio, we have enough RAM to waste to let Nyquist-Shannon take care of the problem.

I guess the lesson is boring = better?


I think at the time they were considered boring too, but now they are considered novel/unusual, which is more fun.


Yes, imposing restrictions can result in awesome and creative art! E.g. using a small (e.g. 16-color) color palette for pixel art, making art using semi-graphics block characters, music with mod trackers, ...


I've had a lot of fun fiddling with pico-8 (https://www.lexaloffle.com/pico-8.php), a virtual console with its own code, graphics and music/sound editor - heavily restricted (in terms of e.g. amount of code and graphics, it's designed so that games fit in an image file), maybe a bit more advanced than a Gameboy.

But being restricted like that made it feel more free. Don't need to think about function or variable names too much since only two dozen characters fit on screen. Graphics, just click some pixels until it looks like something.

But it's powerful enough to make games like Celeste (https://www.lexaloffle.com/bbs/?tid=2145) or even 3D games and demoscene things.


Art is creativity expressed under constraints.


> we have enough RAM to waste to let Nyquist-Shannon take care of the problem.

sorry what is this?


Nyquist theorem Shannon's theorem -> noise sampling + information encoding. Overall if I understand correctly GP says that audio is recorded without any smart techniques besides the basics. Implies that this is bad because memory resources are wasted. Does not discuss how smart techniques might waste computational resources.


I'm saying something else entirely.

Back in the day, home computers did not have enough resources to play music like modern computers do. They instead relied on custom hardware to make noise. An example is the MOS SID 6581, which was on the original C64.

Once you have enough resources this is unnecessary, because you can just make a giant sample of the entire song you want to play, and that's going to sound at least as good as analog recording (and possibly better, depending on what technology you are using to make the analog record).


The Tandy Color Computer did not have such a chip, but it did have a 6-bit DAC (Digital/Analog Converter) that could be used to both sample and play back sound. Yes, it was CPU intensive, but you could get some pretty impressive results (I recall sampling songs, and even playing music with 4-part harmony).


Watching The 8-Bit Guy's youtube channel I'm convinced the Tandy was probably the best DOS computer ever. A shame I never owned one; I went from an XT clone with monochrome graphics (the Hercules card had a charm of its own!) to an AT with a VGA videocard. I understand that the EGA emulation the VGA was capable of was similar but not exactly the same as Tandy color graphics.


It may seem weird, but the Tandy 1000 copied the graphics modes from the IBM PCjr, not the EGA standard. That included a 320x200 16 color mode, as well as 640x200 four color mode that the original CGA couldn't do (because it lacked memory). The IBM PCjr also included a sound synthesis chip (don't recall which one off the top of my head) that may also have been included in the Tandy 1000 (don't know, had the PCjr, not the Tandy).


Not at all! They are just saying that nowadays, computers and sound output devices are so powerful, that they can effectively create arbitrary sounds in the entire human hearing range. This used to not be the case: Sound was synthesized using simpler methods, which could not create arbitrary sounds, but had its very own character. Colloquially called "8 bit music" is part of that.


Here you can mix ansi and midi: https://ansiwave.net/

And it is an old project but a rather recent one, also featured on HN, see eg https://news.ycombinator.com/item?id=29671889


Got to mention https://16colo.rs/


Thanks, I didn't knew about that. Into my RSS it goes!


Great overview. I would love to see a section added about Shift_JIS (SJIS) art.

https://en.wikipedia.org/wiki/Shift_JIS_art http://text-mode.org/?tag=sjis-art


It's possible to make a full-fledged GUI using just monospace (such as console characters), minus icons. It's one possibility for making cross-platform mouse-friendly system management consoles. It won't necessarily be esthetic, but predictable and reliable, unlike DOM crap, where stuff unexpectedly wraps or overlaps unless you test the living daylights out of it.

It'd like to see someone pioneer a state-ful GUI markup language using it. When perfected, then it could be reworked into a graphical version (variable-spaced fonts) so we can get away from binary API's for regular GUI's. Then adaptors don't have to be re-written for every app language: just use XML calls.


The recent Hanukkah of Data puzzles have some truly excellent "Unicode art" (using more than just ASCII chars).

https://hanukkah.bluebird.sh

(source: I am the creator of Hanukkah of Data)


Lovely post. It’s need to see how many speciality editors there are for various flavors of Textmode graphics.

This also stood out to me:

> The creation and refinement of analogue-to-textmode filters is an art in itself closer aligned to generative art than textmode art. Depending on the textmode restriction, communities may have strong opinions against using filters (specifically in ANSI where it has a bumpy cultural history). Premade filters are sometimes used as a starting point for further refinement into textmode art.

This is exactly the GenerativeAI / AI Art debate. Apparently the TextMode community hit it earlier because their medium is lower fidelity.


There are still PETSCII art groups, some in facebook. I find them pretty impressive.

PETSCII was the first kind of computer art I made as a kid (but I didn't know how to save it to tape, so it was also ephemeral).


Does anyone know of a good library for easily making static webpages that look like old BBS ANSI graphics?

I'm fed up with the modern web and seek reduced fidelity in order to focus on content.


Maybe not exactly what you‘re looking for, but you could give https://github.com/vinibiavatti1/TuiCss a try.

More here: https://github.com/troxler/awesome-css-frameworks#specialize...


Thank you!


RIP telnet towel.blinkenlights.nl


If you want your mind truly blown, try telnet 1984.ws (if it looks scrambled, fuss with your color/escape sequence support - it's finicky).


Do you have a screenshot so I know when I have it right ?


https://shot.3e.org/ss-20230220_090247.mp4

lol, with bonus kids audio in the background, oops, didn't realize i had the mic on


It's basically a "video" of Max Headroom in full color


whaat


Still works for me (just checked).


That make me think about Textual python library. And in my teen years I used TheDraw app for ascii/ansi art and animations for my RemoteAccess BBS.


"The restriction of textmode is often what lends it its flavour. Having more or increasingly detailed characters in your font may not always give the best results."

Textmode is not only for art.

I am typing this comment from textmode.

All scripts and programs I write are also done in textmode.

It has been said that programming can be art.


ANSI/Ascii Art will always hold a special place in my heart. The Good ol' WaReZ days and of course my more embarrassing AOL Punters/Progs scene years from my early tweens.


This is a nice, short documentary on ANSI art and BBSs: https://vimeo.com/341663153


ASCII art is not always made using a monospace font. On platforms where a large proportion of users are using the same font face and size, that font can be used.

Great page!


I thought he talks about textmode in DOS :D


No love for Atari/ATASCII art?


This page uses a self-signed cert, not every day you see that in the age of letsencrypt.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: