The official FreeDOS channel! FreeDOS is an open source DOS-compatible operating system that you can use to play classic DOS games, run legacy business software, or develop embedded systems. Any program that works on MS-DOS should also run on FreeDOS.
Пікірлер
I used this program all throughout high school, in the 1990 - 1993 era. I got carried away with using the thesaurus feature on one of my geography essays, and my teacher accused me of plagiarism because I was using so many "advanced words!" LOL. The notion of a high school student using a thesaurus, at all, let alone an electronic one that could be instantaneously brought up inside a word processor was a completely foreign concept to him at the time.
Very powerful program! Spendy, but very good. I also recommend 'Almost Perfect' (mentioned in the video) for an interesting "insider" story about WordPerfect.
Just wanna say FreeDOS having an official KZread channel is a blessing. The ease of access for tips and documentation is pretty much unmatched compared to other projects of this scope.
Thanks - I'm glad you like the videos!
mkdir (md) didn’t exist until DOS 2 (being that v2 is when hard disk drives were finally supported in software and the 5160 XT supported them with beefier power supplies) After all, a bare bones 5150 came with 16KB and no floppy drive (no room for DOS). What did you do with such a system? Run “cassette BASIC” from ROM and save to. Cassette. The 5150 had a cassette port in back next to the keyboard port. Hook up a tv to a CGA cord (the 5153 CGA monitor won’t come out until 1983 .. I think when the 5160 XT comes out.. yeah there is a composite output for just this reason) and enjoy 40 columns of BASIC like an Atari 400/800 or an Apple ][Plus for example. Okay okay you spring for the whopper .. a SSDD floppy drive PC. SS (single sided?!?). Yes the DSDD would come later. Oh and you only got *8* sectors (512byte) per track so 160KB on the SSDD (and later 320KB on DSDD). Who need’s subdirectories? DOS 2 gave us 9 sectors floppy disks (180KB or 360KB) and mkdir (abbreviated “md”). But that was for the XT’s hard disk drive (okay the floppy supports directories too).
What is purpose of this program, because result is clearly unreadable...
15:23 it's mostly a demonstration of the way dot matrix printers work without wasting paper on several demonstrations
I and my friend worked together to replace an old (1-pin with 9 colors ribbon) dot printer which was a part of scintigraphy thyroid scanner. this scanner was built as a tank and it prints as it scanning, the printer and the sensor mounted on one big moving arm and it prints directly on a paper laid down and held on a metal plate using adhesive tape , you really have to see it 😁🤦♂ The reason to do the app is that the stock ran out from compatible ink ribbons The problem was it doesn't output any digital signals to rely on and al what we got is analog sound generator producing a wave depending on the strength of the radiation detected by the sensor. My friend designed an electronic interface circuit to convert these waves to something our program can read via RS232, and I built the app to mimic the output of the printer in order to print it on a modern inkjet printer. Thanks Jim, you bring back so many memories
That project sounds pretty awesome!
@@freedosproject It was indeed, we enjoy doing it to revive an old machine. Thanks for the great reply Jim
Great video!
Glad you enjoyed it
most excellent
About two decades ago, I was working on POS software for a company. At that time, most receipt printers used RS232 communication, and I remember a project where we created virtual printer based on communication data generated by the PC's RS232 port. The purpose was to test whether software outputs were accurate without actually using a printer.
That's a great project - and practical!
That's was a cool idea, when I had that problem, I wrote a table of command translation between the matrix printer and ESC/P so I could just send the thing to a fast laser printer, It was very fast to make tests, but wasted paper.
Very cool
In amongst my stuff I have the manual for the star NX1000 mono dot matrix printer, The manual includes some BASIC listings for testing the capabilities of the printer, including user defined characters. Maybe include support for sending “escape” codes (char 27) for enabling underline, sending data for user defined characters, etc
My printer at the time was Epson, and Epson printers had that ESC/P print control. The name actually comes from Epson Standard Code for Printers because Epson made it. I hope to update this in future to add ESC/P print control like underline and even graphics mode.
🤍
Too bad that delay() requires an integer argument. Otherwise you could adjust the delay to something closer to, say, an Epson LX.
One way to slow it down to a fraction of a millisecond would be to use a counter, and then you add the delay for every 2nd or 3rd byte. A live human might not spot the difference. Basically this: int count = 0; ... if ((++count % 3) == 0) { delay(1); count=0; }
Also needs sound emulation.
This is awesome. I wonder how difficult it would be to redirect output to LPT1 to this as a TSR?
Depends if you already have a robust TSR framework to build on, there's just a few int 21 calls to intercept and you'd have to parse pathnames for 3Dh. Making a TSR that knows when it can take over the system is the tricky part, and it would need to be quite big for the graphics buffer.
@@ssl3546 It's actually not int21, but int17 (AH=0 lpt_putch, AH=1 lpt_init, AH=2 lpt_status).
I think an easier way would be to redirect printing to a file (many DOS word processors can already do that) and then use this to "print" it to the screen.
I would have thought converting the character set would be much more involved, this is very cool! I had a moment to think about it, and I think it will be 30 years this year since I last used a dot matrix printer. The sound as it tracks across the sheet and advances rows is very nostalgic.
The old dot matrix sound was kind of soothing, in a way. 😄
@@freedosproject it helps that now it doesn't come with a parent shouting "stop that screeching!" from the next room 😃
@@freedosprojectI still remember the IBM pro printer. Such a nice sound.
@@skilletpan5674 : Legendary!
Thanks for this Jim. I always find your videos very interesting. Keep up the great work. Cheers from Canada!
Thanks! I'm glad you liked it.
That was fun. I have Turbo C installed in DOSBox. I’m going to have to give it a go.
Love this, masterclass in ed, the standard editor. Thank you!
You're very welcome! Since doing this video, I sometimes use ed (and FreeDOS edlin) unironically to edit files. Usually if I just need to make a quick edit to a file, or if I run several commands and realize "that should be a script" .. I can do ed and edit my file while I can still see the previous commands I typed.
Just stumbled across this video, you make a great teacher.
Thanks, I'm glad you think so 😃
Now all we need to set it to a dos screen saver. Yes those were a thing 😂
Love your videos, man! I've been playing around with my new 200LX recently and I was wondering whether there was any particular reason you've never made a video about Lotus?
I've done some videos on Lotus 1-2-3, and some on Quattro Pro. But I mostly use As Easy As for two reasons: 1. It is my absolute favorite spreadsheet. I like it better than modern spreadsheets, too. It saw me through my undergrad physics program, and because I used it so much I know it really well. So it's my go-to spreadsheet. 2. It's available for free, direct from TRIUS. It's not open source, but they made the last DOS version available to anyone. But Lotus and Quattro are not available like that, technically the only way to run those is to find "abandonware" and I try not to do too much of that on the channel.
I know this is gonna sound strange, considering the fact that DOS is mainly a CLI OS, but is it possible to get a desktop environment running on FreeDOS?
Windows 3.1 seems to work with some tinkering. DESQView I think runs out of the box, but I haven't tried it.
You can run Windows 3.x in Standard Mode on FreeDOS. Jeremy (kernel developer) has an in-development version of the FreeDOS kernel that runs Windows 3.11 in Enhanced Mode .. I'm hoping that can get released so we can share it. But you can find it in his GitHub. You can also use other graphical environmnets on FreeDOS, too. See my other videos for OpenGEM and Seal.
13:18 Why did the program work? I imagined it should have crashed right after that null pointer assignment?
Ah, the joys of undefined behavior. “Everything appears to work just fine at first, but then sometime later something weird happens” is surprisingly common.
Very good.
Works on a HP200LX with FreeCOM 0.84 pre2 and StarLFN for read-only LFN within the editor as DWED supports FLNs. Unfortunately can't save with a long filename as StarLFN only provides a way to read LFNs
What's lib short for?
library
@@OpenGL4ever yet it never gets pronounced correctly
I noticed that this compiler can understand the modern syntax for the function parameters, and it's a 1986 compiler, before K&R 2. When was the new syntax introduced and when did it become the norm for a compiler to support it?
Microsoft C 5.1 shown in this video is from 1988, the same year MS-DOS 4.0 was released. ANSI/ISO C was ratified two years later. From memory MSC 5.0 was their first to support ANSI/ISO C. Trivia: Most of the early OS/2 1.x C source code from 1986-7 was written in K&R syntax.
If I had access to a free compiler like that 30 years ago, I could have done some things.
I agree. This compiler was very expensive at that time.
Agreed, so many expensive options back then for a teenager. I ended up with the borland c compiler.
apparently gcc was already a thing as early as 1987 but I suppose it was quite obscure back then
@@rigen97 That may be true for expensive Unix server systems. But on the x86 PC at home for MS-DOS, gcc was only available after DJ Delorie ported it to DOS and released it under the name DJGCC. And anyone who didn't have a modem at the time didn't find out about it until the advent of CD-ROM collections. The compiler therefore only became really well known after 1995 at the earliest. Personally I first discovered DJGCC on a CD-ROM shareware collection and because it was a version for OS/2, it was of no use to me. I only encountered GCC in a usable form in 1999, when I installed Linux on my computer for the first time.
@@rigen97 That may be true for expensive Unix server systems. But on the x86 PC at home for MS-DOS, gcc was only available after DJ Delorie ported it to DOS and released it under the name DJGCC. And anyone who didn't have a modem at the time didn't find out about it until the advent of CD-ROM collections. The compiler therefore only became really well known after 1995 at the earliest.
Thank you...
I already extracted the MS C compiler, its libs and include files and the additional tools and MASM from the MS-DOS 4 release a couple of weeks ago, when the source code of MS-DOS 4 was released.
Sure it's nice that Microsoft released this but why would you want to use it when we have OpenWatcom that can target 16bit dos and supports a relatively modern C standard. I guess this might be useful if cl itself actually is 16 bit and you absolutely need to compile a program on an AT or an XT. Benchmark comparison might be interesting but it seems unlikely this old compiler could win but maybe it has optimizations better targeted to 8086 and 80286 cpus than what you'd find in a 32 bit compiler.
One reason could be better compatibility with old programming books written for the Microsoft C compiler. Not all early C compilers were ANSI compatible. Some had their proprietary extensions. Another one could be lower RAM requirements. It may require less RAM than the 16-bit version of gcc. When it comes to code optimization, especially program speed, modern compilers are probably better. However, the MS compiler could have been optimized for generated program code size since memory was expensive back then. In the end you will have to test it and directly compare who performs better where. In any case, the later 32-bit C compilers from Microsoft for Windows were still very bad at the time. They were only significantly improved after the release of Windows NT 3.1. Which meant that Windows NT 3.5 ran significantly more efficiently than its predecessor. The slow speed of Windows NT 3.1 was the main reason for Microsoft to improve the compiler.
I agree, I prefer the newer open source compilers like OpenWatcom and IA-16 GCC. We also have BCC and a few other open source compilers that are older but work fine. The MS compiler is interesting for some. And it's interesting that they included the binaries for free in the MS-DOS 4.00 BAK source code release. Another legit free (gratis) proprietary compiler is Borland Turbo C 2.01 and Borland Turbo C++ 1.01, which you can download from Embarcadero's museum, if you don't mind registering a free account with them. We have a link to them from our website under the 'Developer' section. Works great on FreeDOS - I did a video a while back about TurboC++ on FreeDOS and the IDE was super slow in that video because it doesn't run well under JEMMEX; boot "without drivers" and the IDE runs fine.
Borland also released a version of Turbo C++ as freeware years ago which is arguably an easier compiler to use if all you want is to target 16-bit DOS.
A question: the provided multitasking version of MS-DOS stops other programs wenn you use "normal" DOS EXEs. Can the Microsoft compiler produce Windows-style "new" executables that you could concurrently? Thank you for the video!
I await the ultimate showdown! Which is better ed or edlin!
OMG, I should totally do a video on that! :-)
For absolutely no practical reason, I'd love to see a benchmark between ms-dos 4 and current free dos. It'd be great to see how it differs - even when virtualized
Why is the second version of the array.exe program 10x smaller? At 18:22 it's ~700 bytes, while at 14:00 it's ~7kB.
I was curious after seeing this comment, but watching closely, the second .EXE was around 7k, too.
@@TSteffi Oh, I must have read the wrong row. My bad!
@@Maxjoker98 No problem. 🙂 In fact, the [corrected] ARRAY.EXE at 14:16 is 7,825 .. and after copying the libs and includes, the recompiled ARRAY.EXE at 19:04 is also 7,825. So it's the same size (i.e. nothing "broke" when copying files to a new "CC" directory)
I think you may have missed a sys directory inside the headers directory.
Oops, I did! The 'sys' directory contains locking.h, stat.h, timeb.h, types.h and utime.h. I didn't spot that when I looked at the DIR listing.
Nice video as usual, Programming sessions are always welcome and I expect there will be more to come(I hope) Thanks Jim!
More to come. I'm trying not to be "all programming all the time" but we'll definitely come back to more programming exmaples.
@@freedosproject 👍💯
Nice video as always, I have never properly programmed in C under DOS but the usage of malloc got me thinking, when it's running (presumably) in real mode you're limited to what's left of 640K base memory, right? And if I wanted to use more memory I'd have to use a different compiler that can produce programs that run in protected/enhanced mode.
No, you could (manually??) use EMS or XMS (286+), if available. Or use overlays or swap to disk.
You also can't allocate more than 64K at a time unless you use the "huge" memory model. The easiest way around both this and the 640K limit is to use Watcom's wcl386 compiler to build 32-bit DOS4G executables.
yes but can it run Crysis? 🤡
😎👌
the worst version of dos
Do not edit partitions with that version FDISK. You are asking for a corrupted disk.
7:27 Yeah that's the spot, set color to light green now and put that on your autoexec, ending with a prompt $g and a clear.