• Please review our updated Terms and Rules here

PC/XT killer pokes

Why stop there? Music Construction Set mixes four channels of pulsewave and can output it over the cassette interface, so there's 4 more voices for you ;-)

Cassette ouput == PC speaker, but yeah - all kinds of crazy things are possible on that front with the right programming.

Sadly, stepper-motor music is not possible on the PC; the hardware isn't flexible enough IIRC.

Trixter, you always know how to goad me into trying to prove you wrong when you say something is impossible!

Actually, I've been tinkering with the floppy controller recently (for an unrelated reason) and I think it would be possible to get a few different sounds out of it. The controller allows you to set the head step rate (1 to 16ms in 1ms increments, normally 4ms) and do independent parallel seeks on up to 4 drives at once (although unfortunately not with independent head step rates). So, depending on the amount of latency the FDC has in setting up the command and retrieving the results, it should be possible to effectively step the drives at different rates.

Though that does bring to mind another possibility for damage - anybody know what happens if you do a seek without the motor running? Does it step anyway or does it refuse? If it steps without the motor running and there's a disk in the drive, does that cause the heads to gouge big chunks out of the disk surface due to there not being any airflow to keep the heads flying?
 
I'd be more concerned with folks who don't know enough to do killer pokes but someone immature that might delete all files, try to write a virus, or another immature trick writing a reboot.com with debug then adding that to autoexec. Given I suppose you could give access with credentials which might limit some abuse. I wonder what sort of filtering you could do for remote commands? One would think you could potentially block commands like format, del, etc or run off of a write protected floppy disk.

That's not a concern, since none of the software the system needs to function will be stored on the XT itself - the boot code is loaded from the keyboard port on every boot, and the machine will be in a clean state for each new request. There's no hard disk in the machine, and the floppy drives aren't needed (though could be used to run programs that can't be executed directly from memory).

Though that does suggest another (fairly minor) possibility for abuse - people could store obnoxious files on the floppies and (if nobody else comes along and wipes them in the meantime) share them. There's probably simpler ways to store a megabyte online, though, so I guess I'll just keep an eye on it and work around it if it gets abused (perhaps by wiping the floppies after any request which uses them).
 
Can't offer much insight about killer pokes, just joining in to agree that this would be an incredibly cool project!

I have a capture card I can connect to the composite output of the CGA so that people can see what's on the screen.
Something like that could be a nice way to check and compare things against that DOSBox patch -- as well as some "new" kinds of CGA trickery I've been thinking of lately (which DOSBox wouldn't be able to pull off). :)
But yeah, just being able to run code on a vintage machine over the internet is a nice concept in itself. I guess this would be limited to .COM-sized chunks of code with no DOS calls?
 
Though that does bring to mind another possibility for damage - anybody know what happens if you do a seek without the motor running? Does it step anyway or does it refuse? If it steps without the motor running and there's a disk in the drive, does that cause the heads to gouge big chunks out of the disk surface due to there not being any airflow to keep the heads flying?

Isn't there an implied head settle time at the end of a seek enforced by the controller? I'm certain that you can change this with a SPECIFY command, but I haven't checked the possible range.
 
as well as some "new" kinds of CGA trickery I've been thinking of lately (which DOSBox wouldn't be able to pull off). :)

I am intrigued!

But yeah, just being able to run code on a vintage machine over the internet is a nice concept in itself. I guess this would be limited to .COM-sized chunks of code with no DOS calls?

Yeah, I'm not planning on putting a DOS on there. I suppose I could put a FreeDOS on there with no copyright problems, but it would make it take longer to start and to run most DOS programs you need some interactivity which would complicate things some more. There'd be nothing stopping someone from putting together a blob of code which sets the machine up with some form of DOS, though - either in memory or writing a disk image to the floppy drive and then booting from it (I have code which does this already - it's how I've been transferring and running DOS programs).

Unlike COM files, the blobs I'm using aren't limited to 64K - they can be up to almost 640K in size. BIOS services are available plus a few interrupts of my own:
  • Output string (CX bytes from DS:SI)
  • Output AX as a 4-digit hexadecimal number
  • Output AL as a character
  • Finish the program
  • Load data over serial

I'll probably also add services for taking screenshots and capturing audio.
 
Trixter, you always know how to goad me into trying to prove you wrong when you say something is impossible!

No problem! People have done the same to me and some of the results have been worth it ;-) But I really do think you're going to have a hard time getting 12 full semitones out of hardware that can only step between 1 and 16ms.

Though that does bring to mind another possibility for damage - anybody know what happens if you do a seek without the motor running? Does it step anyway or does it refuse? If it steps without the motor running and there's a disk in the drive, does that cause the heads to gouge big chunks out of the disk surface due to there not being any airflow to keep the heads flying?

IIRC nothing happens. Give it a try without a disk in the drive.
 
Isn't there an implied head settle time at the end of a seek enforced by the controller?

This would be outside the scope of the controller, since the spindle motors aren't controlled by it (just some bits in port 0x3f2). So it would be up to the drive to decide whether or not to seek without the motor running. I guess I'll have to check and see what my drives do.

I'm certain that you can change this with a SPECIFY command, but I haven't checked the possible range.

The four things you can change with the specify command are Head Load Time, Head Unload Time, Step Rate Time and the DMA/Non-DMA mode bit. The Head Load (HDL) line is not connected in the IBM implementation, so the BIOS just sets the Load time and Unload time as minimum (2ms) and maximum (240ms) respectively.

The post-seek head-settle delay loop is done by the BIOS, with a value specified in ms in the disk base table (default 25). Code that programs the 765 directly can wait for as long or little as it likes.
 
I think the novel thing here would not so much be controlling a computer remotely, as putting a vintage machine online so that anyone in the world with an internet connection can use it.

And, I'd be the first to sign up. I'm exploring the performance of the 8088 as it was commercially available (i.e. IBM 5150/XT) vs. other machines of the same time period. And, I do not want to eBay an XT just to run a ~30 second benchmark. If emulators were an option I'd use that, but sadly I have yet to find a cycle accurate simulator for the 8088. Having access to an XT remotely where I could upload up a .COM file, run it, and capture the output would be very useful.

A batch system, where I'd email FOO.COM and the output of TIMER.EXE FOO.COM was returned to me automatically or something similar, would be even more useful.
 
PC Anywhere debuted for the 5160--and there quite a number of similar programs, Remote (from the makers of Crosstalk), Carbon Copy,...the list is pretty long.

I used to do that with Telix (sp?). IIRC there was a remote mode as well as a way to upload/download files. Something as simple as that connected to a single port terminal server to provide telnet access may be enough.
 
Though that does bring to mind another possibility for damage - anybody know what happens if you do a seek without the motor running? Does it step anyway or does it refuse? If it steps without the motor running and there's a disk in the drive, does that cause the heads to gouge big chunks out of the disk surface due to there not being any airflow to keep the heads flying?

That can be solved with this: http://www.lo-tech.co.uk/introducing-the-lo-tech-xt-cfv2/, then just disconnect any physical drives.
 
There are various systems on line out there for remote access; for instance I've had a Cromemco S100 system on line for remote access at various times, as well as a TRS-80 M100.

I've also been running an MS-DOS system remotely for about 25 years, using pretty well all the packages that Chuck mentioned; PC Anywhere is by far the best IMO.

But I don't think that's quite the same as your bare-bones, no OS setup; did you (could you) put the setup for loading from the keyboard port available on-line somewhere? Thanks.
 
Last edited:
No problem! People have done the same to me and some of the results have been worth it ;-) But I really do think you're going to have a hard time getting 12 full semitones out of hardware that can only step between 1 and 16ms.

Yeah, to get more than 15 not-very-musical notes I'll need to send seek commands to the 765 at different rates depending on which note I want to play.

IIRC nothing happens. Give it a try without a disk in the drive.

Will do (it'll be next week though - my XT is buried under cardboard boxes right now).
 
And, I'd be the first to sign up. I'm exploring the performance of the 8088 as it was commercially available (i.e. IBM 5150/XT) vs. other machines of the same time period. And, I do not want to eBay an XT just to run a ~30 second benchmark. If emulators were an option I'd use that, but sadly I have yet to find a cycle accurate simulator for the 8088. Having access to an XT remotely where I could upload up a .COM file, run it, and capture the output would be very useful.

A batch system, where I'd email FOO.COM and the output of TIMER.EXE FOO.COM was returned to me automatically or something similar, would be even more useful.

I'll try to get it set up soon! It'll be at least a week though.
 
That can be solved with this: http://www.lo-tech.co.uk/introducing-the-lo-tech-xt-cfv2/, then just disconnect any physical drives.

That's another good idea. I should get myself one of those!

Disconnecting the physical drives does mean that people can't play with that part of the hardware, but perhaps that sacrifice would be a good idea if putting the floppy drives online results in too much wear and tear or potential for damage.
 
But I don't think that's quite the same as your bare-bones, no OS setup; did you (could you) put the setup for loading from the keyboard port available on-line somewhere? Thanks.

Yeah, the code is on my github. I haven't made a circuit diagram because the circuit is trivial - just connect Arduino pin 8 to the data line and pin 9 to the clock line. The kernel program I that I actually load (which loads programs and returns results over the serial connection) and some Windows programs to handle the other end of the connection are also around there if you poke around. Let me know if you want any more help setting it up - I haven't really made it available in a very user friendly form at the moment.
 
You know, this idea kind-of reminds me of the networks I administered in the early '90's -- one in particular, Alloy Slave cards. There's a few up on e-bay right now. What makes me think of them is they were basically 'headless' AT's on a card that had serial in/out for keyboard and display sending VT100 commands to emulate a MDA card.

Might be fun to connect something like that up via telnet.
 
Back
Top