Thursday, May 17, 2018

FreeDOS - how i installed FreeDOS 1.0 with only a few floppy disks and a usb drive.

Installing FreeDOS normally is quite easy compared to MS-DOS. just insert the live CD and for the most part just follow the on-screen instructions.

But i had a problem a few years back when i decided to install freedos on my IBM Thinkpad 600E with its 400Mhz P2 and 224MB ram. The dvd drive was as dead as a doorknob.

But somehow i did it. and how i did starts with a special FreeDOS floppy i put together.


Ram disk, floppy disk.

Once upon a time, that thinkpad had windows 2000 on it. with an NTFS partition. so i wasn't exactly in a good place to actually setup freedos on it.

What i ended up doing at first is i took SRDISK and unzip and a freedos boot floppy to make a basic ramdisk of a very minimal freedos setup. (this is important later)

This ramdisk, once booted, is crazy-fast. and most importantly i can swap the floppy disk while its running. and even load extra zip archives off floppy disks into the ramdisk.

What this has to do with installing freedos.

So, with the help of my trusty ramdisk floppy, when i went to install freedos, i did the formatting, set aside an extra partition for a second os if needed, and installed a bootloader.

Problem: how am i supposed to get the utilities and such on this thing?
This computer only has a hard drive and a floppy drive to boot from. and out of the box that's all FreeDOS off a floppy disk sees, but it /does/ have a single usb port.

So. i took the packages off the freedos 1.0 iso and bundled then into 1 zipped filetree along with some other things, and put them on a usb drive. One floppy disk with usb drivers later and i copied the zip into ram. extract it to the freedos partition and after some tweaking everything went smoothly from there.

The ramdisk might not have been necessary, but i had already made it a bit before deciding to install freedos on that thinkpad, so i figured having a bit of extra workspace would help. 

Tuesday, May 15, 2018

Zoxenpher & gopherspace - new features and an introduction to the gopher.


What is this gopherspace stuff anyways?

Gopher itself is a protocol for accessing information on the internet. Its similar to the world wide web in that respect. But in just about every other respect gopher is very different.

Gopher is made up of a system of menus, rather than many pages of html markup and complex scripts.  This first difference does mean gopher can run on a very low end system. I mean very low end, like the embedded system inside your smart toaster. Of course, not every gopher client is built alike, and they can very  wildly in what they support, and whether they even properly render it. (Arachne for example, a dos web browser, renders comment lines as links for whatever reason.)

There are gopher clients for Android, Modern PCs, web browsers, FreeDOS, and even the Commodore 64.

Gopher's simplicity and elegance may not wow with glamor or fancy styling, but its definitely useful when you need, say, weather reports when the power is out and you want to save battery by not running your web browser. or you want to look something up and are concerned about bandwidth usage. Or even if you just want to explore an online world that's a bit different for a change.



Zoxenpher: A gopherspace client.
Zoxenpher is a python/pygame-based gopherspace client.

as the screenshot suggests, it uses a multiwindow paradigm. (infact it uses a pygame windowing framework i had designed previously)


The gopher menus in zoxenpher now have gopher type icons for each link, as does a curious window hiding behind the large gopher menu in the center.

Bookmarks. It may not seem like much, but bookmarks can make or break a browser, and turns out thats true for gopher clients too. on top of the bookmark buttons visible in the menu windows, shift-clicking a link will let a user bookmark links too.

Zoxenpher has in-line image previewing and a dedicated image viewer when there are simply too many images to preview (default preview limit is 10)

The usual sort of small features like url entry boxes, help system, buttons to reload and return to the server root of a menu and so on, are also present.

Zoxenpher on github

Wednesday, May 9, 2018

Zoxenpher: A python/pygame gopher client.

Introduction:
Im not about to give you a history lesson on gopherspace, (perhaps that would be best in a separate blog post) but what i am going to do is introduce my gopher client: Zoxenpher

Basic UI:
Zoxenpher is powered by a virtual window manager framework of mine, Strazoloid-WM, and features a "desktop-like" UI paradigm. each "window" can be dragged via the title bar, and when applicable, resized via the extra bar at the bottom of the frame. the small square in the left of the title bar, likewise, closes the window.

Opening a gopher window is as simple as right clicking a menu link, or clicking the suspicious "new" button in the upper left hand corner.



Some other bits and bobs:

  • Zoxenpher features image support, with in-menu preview of up to 10 images. (the remaining images can be opened in a separate window manually)
  • Search queries thought gopherspace will open a query box when clicked, that will prompt the user for a search query.
  • Zoxenpher isn't entirely finished, but it is more-or-less capable of browsing gopherspace.
Zoxenpher on Github

Friday, May 4, 2018

python lib showcase: pyg-to-term

pygtotermlib.py is a python library of mine that converts pygame surfaces to block-graphics (think ansi-art), ready to be printed to a *nix-style terminal.

So what can you do with it?

The chart on the right shows the 5 main conversion modes. (interpolation options for the first and third modes not shown)

The second and fourth options use 256-color escape sequences, while the last one uses 24bit-color escape sequences.

While these modes allow nicer output, there is a catch: not all terminals will actually show these modes properly.

pyg-to-term on Github

Wednesday, March 14, 2018

Desutezeoid v1.7.1 Release


Desutezeoid has come a long way from its humble beginnings. Starting as just a experimental logic system that i originally developed for v5 of my maze engine (Now Rhennevad Maze). V1.7.1 Continues Desutezeoid's saga of improvement with a host of new features. the details are too much for a blog post, so here are some big ones:

Pausing, Resuming, Taking Breaks
pause menu
Like many adventure engines of old, Desutezeoid now has a proper save-state system. This is accessible from the new pause menu (ESCAPE key). the engine now also includes autosave and autoload functionality. Pause menu times are automatically calculated to extend timeout forks, and this is also exposed to the plugins through the new pause and resume calls.

Invman: items, objects, doughnuts and widgets.
Invman, SBTCVM's new inventor manager system, provides advanced item management based on ID strings called "itemids". the system provides forks to determine if the player is holding or has an item, as well as managing the player's inventory. A core object type, "actionrect", similar to an invisible box tag, is provided to streamline object actions.


Start screen, featuring a DZA script animation.
DZA: The Desutezeoid Animation System. 
As one of the most ground-breaking changes in v1.7.1, DZA allows frame-by-frame animations with looping, conditional loops, keyid manipulation and sound playback, in the form of new *.dza scripts.








Effects, Shaders and more!
Desutezeoid now also comes with a slew of special effect plugins, from Scanline emulation, to rain, to the pictured rainbow bubble effect.






In Conclusion: 
Desutezeoid is a much more capable engine than it was in the past. From save states to Shaders, v1.7.1 is a long way from Desutezeoid versions of old.




Downloads:
https://github.com/ThomasTheSpaceFox/Desutezeoid/releases/tag/v1.7.1

Wednesday, January 31, 2018

F.S.S.S. - A python array-based software synth

FSSS (or Floored Square Simple Synth) is a python array-based software synthesizer.

https://github.com/ThomasTheSpaceFox/Floored-Square-Simple-Synth/releases/latest

This synthesizer uses a generated-sample-based method of sound generation.

FSSDL (Floored Square Simple Drum Loop)


FSSS with default parameters.
FSSS features a wide variety of parameters. from stack synthesis method to waveform flooring method, to even several base waveforms.


FSSS also comes with FSSDL. A simple drum sequencer. With bass, snare, and hithat sounds, configurable cells per beat and beats per minute, and 8 and 16 cell display modes.



FSSS's main synth has a guide of its various key macros on the top of the screen. along with a waveform display, and parameter display at the bottom.


To play music with the synth, use the upper and lower two rows of keys.

(the arrangement is similar to several other music creation software, such as LMMS)


As for how it sounds, its probably best used for chiptune-esq music.

Monday, December 18, 2017

Dosbox 0.74 is over 7 years old... and it shows...

DosBox is quite a nifty program. Dos games galore... For years I've used dosbox, and its worked fine.  Though to be fair i never tried compiling it until running into a segmentation fault on an Ubuntu xenial-based distro. boy was i in for a surprise.

Oh boy....

That segmentation fault occurred on my part when i tried running my favorite DOS PC kart racer: Wacky Wheels.

So i download the sources and extract them... then i ran make, only to see it sputter out in an avalanche of errors... Thats when i found out that the "stable" 0.74 wont even compile on GCC 4.6 and newer. (and that xenial-based distro is running 5.4)

So then, i found a patch that would fix the error that was keeping it from compiling, and sure enough it compiled...  So, I was eager to see if my now-patched dosbox 0.74 would work better than the one from the repo...

nope.

Well I tried.

That is also when it occurred to me that dosbox 0.74 is already over 7 years old, and it seems its age is catching up to it...

The fault appears to be in dosbox itself, as some games like Duke Nukem 3D work without a hitch. I do have a hunch that those errors in cpu.cpp might not have been entirely fixed by that patch...

another thing i knoticed while compiling dosbox after the patch is the at least dozens of warnings that seem to be related to mismatched integer types... whether thats what caused the segmentation fault is beyond this mostly-python programmer, but i figured id mention it.

Conclusion:
 
Now, This blogger has more questions than answers:
  • What has taken so long? 
  • Are there any forks or such I should look into?
  • Why does the dosbox download page not even mention the compiling issues?
  • anyone else run into problems with dosbox? (feel free to comment below)
Also, while I wouldn't expect any of the dosbox developers to somehow happen across my blog, if by some chance, perhaps some more light on the situation could be cast?

In the meantime, my trusty IBM Thinkpad 600E will have to do.

Monday, November 20, 2017

web browsing... in DOS

Web browsing... in DOS


modern browsing in dos isn't exactly a cakewalk, i mean sure, being able to do some minimal things in, say links, can be a huge help, but you can only do so much on today's internet without HTML5, javascript, and ipv6...

Dillo

Dillo Splash screen - Dillo

Dillo, a super-lightweight browser that is mainly developed for unix-like systems, has a fork for dos, or rather a fork of a windows port that isn't associated with the main dillo development team, and that has various bugs, but at least has tabs and multiple windows... I give it credit for that much...

The user interface is similar to the standard *nix Dillo,  with FLTK, css, and the usual screen layout. the bookmarks work like a drop-down menu instead of a DPI-generated webpage. One thing not found in the "official" dillo, is a configuration dialog. a useful feature. though this version of dillo lags when the mouse is over certain elements of the ui like links and text boxes. noticeable even on a 397Mhz Pentium II, and can make dillo for dos nearly unusable in a slower VirtualBox vm.

unfortunately, even this ports upstream, unix-like cousin, is still working on implementing https, and this port has a few strange issues, such as the file loading dialog spitting out junk into the path box when you try to navigate or even press backspace, and on occasion the browser will just crash, leaving the user unceremoniously at a DJGPP fault screen...

Arachne

FreeDOS website - arachne

Arachne is an impressive dos internet suite, that has quite a few interesting features, and even its own add-ons, it has a file manager, a "desktop", bookmarks, ftp support, email, and even partial gopher support.

The user interface is responsive enough, even if it looks a tad dated in 2017. While links is designed with a minimalist UI, arachne is clean on the other end of the spectrum, with fancy features like "virtual screen" scrolling, an a huge sidebar to the right of the screen. Arachne is somewhat unusual in that most of its features and setup screens work like local web pages.

The problem is, the web browsing isn't exactly up to modern standards, lacking even https, and also suffers from some rather dated design decisions, decisions that might have made sense in its day, but in 2017... not so much...

jpeg and png images are converted to bitmaps before being cached, (yes you read that right) and if your system doesn't have its temp folder on a ramdisk, expect delays... and the lack of https support means that many webpages fail to load at all, even when they are ipv4...

links

FreeDOS website - links

links is by far my most-used dos browser, like the other browsers here, it can't do ipv6, (though thats actually a network stack limitation, as links on other systems can load ipv6 just fine)

The user interface is sparse, and can prove tedious for someone who doesn't know the keyboard shortcuts. images look fine, text is quite readable, though I'm curious, why the giant mouse cursor?

at one point links had javascript support, but it was disabled, but as far as both text browsers and graphical browsers, links tends to be the most usable, given its the only one of the three Ive mentioned here that actually can load https webpages... and its also the only one with an update within the past 4 years... considering links' dos port is considered beta quality, its surprisingly reliable and stable. and at least i can search DuckDuckGo using this one...

what i think a modern dos browser needs

  • HTML5
  • javascript (I know, but this thing is here to stay for a long time)
  • file manager (this is one of the things i like about arachne, though a dedicated file manager component would be even better, and proper file load and save dialogs are even more so of a necessity)
  • proper, windowed UI. (this is one of DilloDOS's strongpoints... perhaps that DOS FLTK port could be used?)
  • support for http/https and ipv4/ipv6, ftp, ect.
Other Ideas:
  • perhaps it should have a few tools, like a calculator and editor?
  • irc client?
Feel free to share some thoughts in the comments.

screenshots captured from within virtualbox.

Wednesday, October 18, 2017

old tech - 1980s sounddesign 4-in-one stereo

digital composite of both photos shown below.
1988 soundesign dual deck stereo, with AM, FM, 8-track, dual cassette, and an alarm clock.


status:
  • cassette deck: needs belts, right channel is a bit noisy.
  • 8-track: working
  • clock: working
  • AM/FM tuner: working. indicator seems to need a bulb.
  • visualizer: left visualizer needs a bulb
found: at a thrift shop.
main usage: drive 4 8-ohm speakers in a 2-channel, stereo-surround arrangement, connected to a laptop via a 3.5mm to RCA adapter cable.

description: This monster of a stereo makes the modern laptop its used with look puny in comparison. Its not a top-of-the-line unit, but it does get the job done, and definitely has enough chrome.



no flash, yes i know the tuner and left visualizer need bulbs.

with flash.

Wednesday, July 19, 2017

Sunday, June 18, 2017

SBTCVM has moved!

Well, after considerable thought, i decided SBTCVM needed a GitHub organization to be more unified, so, yea.

check out the new links.

SBTCVM on github

SBTCVM Project Home

SBTCVM Mark 2


any questions, feel free to ask.

Friday, June 2, 2017

Desutezeoid 1.5.* series.

Desutezeoid 1.5.0 has been released, and the first big change of the 1.5.x series has happened. the rendering system now iterates through all core object types at once, following the order of core objects in the actual XML. global core objects are still on top, but now ordered similarly.

what else could the 1.5.x series bring? more fork and core types for one thing. perhaps even some better
animation support when and if i get around to it.

that said, v1.5.0 is A LOT more capable, and faster, and smoother than the old 1.1.x and 1.2.x series versions, and is already capable of animation, though more means of animating things wouldn't hurt.


you may be wondering: What can v1.5.0 do? well. best way to answer that question is to download it and try the included test program. it includes nifty demos including a thunderstorm effect, flashlight effect, and even a few simple-to-implement mouse-following panoramic screens.

you can download it here

Thursday, June 1, 2017

Balanced ternary: Overhauling libbaltcalc's aging, clunky API

new libbaltcalc 3.x series.
 while the old balance ternary integer string API is still present, its been cleaned up a bit. also a new class-based API now exists.

the btint class provides a more seamless API in python.

as an example lets add 2 and 4
old API:
>>>import libbaltcalc
>>>int1=libbaltcalc.DECTOBT(2)
>>>int2=libbaltcalc.DECTOBT(4)
>>>print libbaltcalc.btadd(int1, int2)
+-0

the new btint class can accept integers, balanced ternary integer strings, and other btint instances as an argument. not only that, but all supported mathematics operations return btint instances. and btint instances can be printed and used quite simply.

new API:
>>>import libbaltcalc
>>>from libbaltcalc import btint
>>>int1=btint(2)
>>>int2=btint(4)
>>>print int1 + int2
+-0

Now wasn't that easier?

new libbaltcalc documentation