WWW.ALTAIR32.COM

REAL PROGRAMMERS DON'T NEED KEYBOARDS!

 

Altair32 Project Status

Part of the update will be to give a specific project status, including problems, issues, and general milestones.

6/6/2010 -- I'm currently working on a code refresh to improve the "security" of the code since Visual Studio 2008 complains all the time. On the front panel, as with so many things, timing has slipped. Every time I promise a potential delivering timing, I miss it, so I'm going to stop doing it :-) But seriously, I really hope to have it done soon.

8/26/2009 -- The ACR->binary utility is done and it works. I have no idea how many people used or still have working ACR Revision 0 cassette tapes laying around, but writing a software DSP with Bob Grieb, was a great learning experience.

I have some pending roll-up changes, including testing the hopefully-final DLL code for the front panel. We're getting quotes from several board houses and I hope that we'll be able to have boards made by the fourth quarter.

1/6/2009 -- I scanned three articles from BYTE Magazine from 1976 and 1979 regarding the Cromemco Dazzler.

11/26/2008 -- I was able to locate a better copy of the 88-ACR manual, so I replaced the copy posted here. I'm also working on adding direct support for reading 88-ACR audio cassettes.

7/27/2008 -- Here's a much needed update. With many hobby things, it just takes longer than expected. However, the revision 2 board design is done and we're getting ready to do a run of 20 of them. Most of the re-design was to make more parts through-hole and to add the capability to mount an FPGA. With the right software, this board can me made to work as a stand-alone Z80 Altair emulation. We're still finalizing prices and things, but I would expect to offer a partially-built PC board which contains only a few key parts (used for board verification), and possibly a complete parts kit. We're still firming-up costs and things. I've kept everyone's inquiry emails so look for something from me soon.

2/1/08 -- I'm waiting to hear from my partner about the boards we're having made. Update to come soon.

11/30/07 - The revision 1 board is complete and we're sending the design to the board shop to have an initial run of 20 made. There have been a lot of changes to the design, so I have to create a new bill-of-materials spreadsheet with prices, and do some live testing with the emulator and an updated DLL.

07/08/07 - Alright, it's been a long time since the last update but really not much has been going on. We just recently finished re-designing the front panel control board to reduce the size a bit and to substitute through-hole parts for most of the SMT parts. I think that I'll have a test article in a few weeks and I'll be able to make the necessary changes to the code to support the minor enhancements we made from the v.0 design.

This week I hope to work on the final bill of materials and start setting pricing.

Also, I started framing out an OS X port of the emulator. I purchased a Mac Mini a few months ago and now I'm re-immersed in the ways of the Mac (the last Mac I owned was a "Fat Mac" about 20 years ago). I bought some OS X programming books and I just started reading them this week. So, once I get comfortable with the XCode environment and the programming model, I can start porting the emulator. It's going to take some work particularly with the UI code but a lot of the core logic should port with no problem.

11/16/06 -- Version 3.20.40 has been released. Go to the Current Code page to download.

11/09/06 - Ok, work on the next release is nearly complete. I'm just putting some finishing touches on some things now and it'll be out by the end of the month. On the front panel side, I spoke to Howard a few days ago and the re-design is nearly complete, waiting for him to finish his VCF 9.0 stuff. I really do hope to close out that project very soon and begin selling board.

09/02/06 - Rodger had been helping me (well, he did most of the work) to fix the Dazzler implementation. It turns out that my implementation was seriously broken and although it did display something, once I got real programs, it didn't work too well. So, Rodger fixed it, made it threaded, and provided tested programs. The Dazzler implementation now includes support for the Cromemco JoyBox (a necessity for certain games) and supports a real joystick connected to the host. Great work, Rodger! Expect a release of this updated version shortly.

On a related note, the Altair32 Front Panel is nearing completion. Howard has been redesigning it to reduce manufacturng cost (removing unpopulated components and reducing board size). I don't want to promise a release date -- since I can never get it right -- but I don't think it's too far off.

06/25/06 - I got the code for the updated Dazzler emulation and it uses the keyboard to emulate the JS-1 Cromemco joystick. I've tried the games and they work well but I find the keyboard (through Telnet) awkward to use. I'm investigating using a real joystick using DirectInput, so we'll see how that goes.

06/04/06 - A friend sent me pictures of the Altair32 running different Cromemco Dazzler games. I don't have the games from him yet to post, but when I do I'll be sure to post them. Yeah! See the pictures here. I've also posted some Dazzler-specific manuals.

05/20/06 - The time has come! I have posted version 3.1 of the emulator which includes several bug fixes and enhancements, in addition to support for the Altair32 Front Panel. The Front Panel hardware will be ready for release in the next month or so. Check out the A32 Front Panel page for more info.

04/07/06 - Good news. Yesterday, I received a pre-production sample of the front panel board and it works beautifully! There are a few changes we need to make before it's released, but the issues are very minor. Overall I'm extremely pleased with the results. My partner in this project has done an amazing job putting this together. Tonight I'll start testing it with the Altair32 (it now works with SIMH on a test basis). Pictures will be posted shortly.

03/10/06 - A quick update. I'm holding off releasing a new version as the front panel test article will be out of manufacturing next week. Expect to see a code release by tax day.

01/17/06 - Not much going on here. A refresh of version 3.0 should be posted shortly which incorporates some minor internal changes but no new features -- yet.

07/14/05 - This is a familiar refrain unfortunately. It's been several months since I started adding support for the various hardware items I mentioned previously. The big thing I'm waiting for is a test article for the front panel code. I will probably continue to toy around with the hard drive code, though. In the mean time, I got myself a real Altair 8800b and a real IMSAI 8080 so I've been spending time restoring them while I wait for some front panel hardware to play with.

04/12/05 - It's been a long time since the last update. Some enhancements for the next version are in various stages of completion while I wait for software to test them with. The thing I'm working on now is a XEBEC S1410 SASI interface. This would give the Altair32 a dual-5mb hard disk system. 10mb is a lot of space.

11/25/04 - Happy Thanksgiving everyone! There are a few nifty improvements on-tap for the next version of the Altair32. Among the enhancements is a Z80 CPU core that does full cycle emulation. There are two more significant enhancements but they are not far enough along in testing for me to spoil the surprise for everyone. Expect more info sometime in the first quarter of 2005.

08/12/04 - Well, it's done! Finally, version 3.0 has been completed and posted. There have been many enhancements and I believe this is the most stable version to date. Look for it on the Downloads page.

07/17/04 - Vintage Computer Festival East Update. Well, I guess I over-promised a bit. I had hoped to have the newest version (now renumbered 3.0) by VCFe yesterday, but it didn't happen. Over the July 4th holiday, Scott completed a re-write of the timeslicing scheduler to make it multithreaded. This results in greatly improved performance and reduced host system load. The Altair32 can achieve prototypical 2MHz speeds with as little as a Pentium III/500MHz (the slowest machine tested). On an "unregulated" basis, I've achieved 80MHz. Imagine the cooling necessary to over-clock the 8080 to 80MHz :-) Anyway, the last piece of the puzzle is revised disk images which should be ready shortly.

05/31/04 - Release 2.6 is done. Scott is preparing some updated disk images with a revised CBIOS to support a separate "LIST" device and is preparing some revised import/export utilities for use under CP/M. I don't want to over-promise but I think that the release should be ready by July 1st.

03/06/04 - The code for the next release is about 90% done. All that's left to do, really, is beat on the code for a while, refresh the help files and re-build the CP/M disks to include a revised CBIOS. I figure that the next release will be before mid-March.

12/12/03 - It's been a long time and I needed to do an update. I've added four manuals to the Technical Links page: a schematic of the original 8800 front panel and the single-part (one-file) versions of the 8800 Construction Manual, 8800 Operations Manual and the 8800b Operations Manual.

On the code front, I didn't spend much time on the code until September when I decided that some of the dialogs needed renovation. I've gotten rid of the paper tape reader in favor of the 88-ACR audio cassette interface since it seemed that not many people used the paper tapes. Data on the audio cassettes was stored in the MITS Absolute Tape Format, which is the same format used for the paper tapes. So, although the interface looks like a Radio Shack CCR-81, it will read and write all paper tapes and cassette tapes.

There also is a new line printer dialog box with a graphical background. The printer now emulates, for the time being, the MITS 88-LPC/88-LPR controller/printer combination. This really is a work in progress because I don't think many people actually owned an 88-LPR. I'd rather support a generic "Centronics" printer but I don't have a manual for one so I don't know what control codes to emulate.
With the help of Rodger, I made some enhancements to the 8080 core to enable people to play "Kill the Bit" and other front-panel games that were designed for a computer with a physical data bus.
Based on the work that still has to be done, I figure that a new release will be made sometime in February.

04/30/03 - Rodger Smedley made a few minor enhancements to the TCP and scheduler code to greatly reduce the host CPU utilization when using Telnet as the connection method. A patch file is available on the Current Code page.

04/26/03 - OK, we're done! Another release of the emulator for all to enjoy.

04/13/03 - I'm getting close to another release of the emulator. The new help system is done. The Windows Console supports full VT100 control code interpretation (including color). Other contributors to the project added support for a true serial terminal to be connected to the emulator. There are new front panel graphics as well as a new and prettier emulated disk drive. The last enhancement on the docket is revised paper tape punch/reader graphics. The release of the new version should occur in the next few weeks.

11/29/02 - I've begun work on enhancements for version 2.5 of the emulator. Some of the enhancements completed include a configurable telnet port, a new compiled HTML help file, adjustments to conditional call and return instructions to properly record cycles, and the ability to create blank diskettes on-the-fly. Other enhancements are to include VT100 control code interpretation.

11/15/02 - Many improvements have been made to the emulator over the last two months. Scott has re-generated new CP/M 2.2 disk images from a real Altair, has added "large disk" support to the CBIOS, built a CP/M source disk, modified the Turnkey Monitor to work on the Altair32, wrote a file transfer utility and provided a working copy of the very rare BASIC 5.0.. I've moved the Altair32 code to a time-slicing model so that it's not so much of a CPU hog while spending time in the message loop. The configurable memory ranges work perfectly, and I've built the infrastructure to support saving configurations. On tap for the next version is partial VT100 support for the Windows Console, a toolbar, and a tabbed configuration dialog. Stability is excellent, and with the time-slicer, x86 CPU utilization is around 20%. I've also posted a copy of the entire Simtel CP/M archive...see the Current Release page for the download link.

09/24/02 - Recently I've been working on modifying the emulator to support configurable memory ranges much in the way someone would plug-in an 8k ROM board. Supporting this, of course, required changes elsewhere in the code. I've also added support for using the Windows Console. Available on all versions of Windows but most functional on NT/2000/XP, it provides a built-in equivalent of a terminal. Unfortunately, it doesn't support ANSI escape sequences, so certain programs that require "real" terminal functionality (like VT100 support) won't work properly.

08/23/02 - An eagle-eyed user of the emulator discovered that under certain circumstances, disk images experienced corruption. Upon close examination of the code, it seems that I introduced a "one-off" error in an array. As a result, I've posted a "dot 10" minor version that contains the fix.

07/09/02 - Well, here it is. Version 2.3 of the emulator. Only minor changes to the core code to address a null pointer issue. Some major changes to the debugger to accommodate source code overlays in the disassembly window. Refer to the help file for more information.
07/05/02 - I've finished my last round of changes and will do a maintenance release of the Altair32 Emulator shortly.

06/06/02 - Jim Battle released version 3.1 of his Solace SOL-20 emulator. The Altair Integrated Debugger code was derived from the Solace code base, so I've spent the last few days merging the code changes into the Altair32. The single biggest change was adding source-level debugging. One can associate an assembler listing file with a loaded ROM and when debugging, the user can see and follow the underlying source code in the debugger window. I also made a small fix to the disk controller code to prevent a NULL pointer fault if, when executing random code, the Altair32 happens to execute an IN or OUT instruction to the disk controller and there's no disk image attached.

04/18/02 - Nothing really happening here. I was asked to consider writing an emulator for the Altair 680b, an MC6800-based computer. The front panel is not as elaborate and neither is the list of available peripherals. The hardest part that I can see is writing the 6800 emulator from scratch.

02/08/02 - I'm getting ready to release the 2.2 version of the emulator. A few last minute funnies have been fixed and Scott has been diligently ironing out the problems with moving data onto and out of the disk images.

01/19/02 - Happy New Year to all! I've been doing some minor tweaking to the code lately, such as reducing the number available emulated drives to four from eight since the CP/M image only supports four drives. I've also solved all of the screen problems described below. Apparently the Microsoft telnet client isn't as compliant with the RFC as one would expect, causing lost characters and the like. Switching to another telnet client software package such as Tera Term Pro solves the problems. ^G (bell) now works, too. In the next month I should be ready for a maintenance release--I have to get the program importing to work properly.

12/30/01 - Jim Battle released version 3.0 of his Solace emulator, the project from which I borrowed the debugger code. So, I've spent the last few days merging the changes into my code base. Jim also came up with a novel solution to getting programs into disk images. Using code from Tim Mann's TRS80 emulator, an "import" and "export" program uses invalid op-codes to trap I/O access to the emulated disk subsystem. These accesses can then be redirected to separate emulation code that can copy files from/to a PC filesystem. This looks much easier to implement than writing separate image manipulation tools.

12/15/01 - Yesterday version 2.1 was complied for the last time and "went gold". You can download the official 2.1 release on the Current Code page. The "readme" file contained therein describes what's needs to be done next and what problems exist with the 2.1 release.

12/09/01 - All disk images (except for the 5mb hard drive image) work perfectly, as does 8k and Extended BASIC on paper tape. Unfortunately, a regression failure has occurred and 4k BASIC no longer works (this is giving me fits right now). The integrated debugger is fully functional except for three commands which have been removed. The HTML help files are almost complete. I expect the official 2.1 release to occur in the next week.

11/12/01 - In the last month, I've made the final changes to the 2.10 beta version and forked the code so that I can begin working on the integrated debugger. I'm still having console input problems with 8k BASIC and CP/M. Arrrgh.

10/19/01 - I've been able to improve the tape speed by buffering the entire tape in a RAM buffer and "reading" from there. It still doesn't work properly but at least it doesn't work properly faster :-) I've also changed the screen appearance slightly by moving the windows around at startup to give a less random appearance. I've started work on the AID -- Altair Integrated Debugger. AID was borrowed from the Solos project by Jim Battle. Solos is a Processor Technology SOL emulator which uses a Z80 processor (available here).

10/3/01 - It seems that I've gotten the paper tape emulation working. Unfortunately, it's dog slow; something on the order of less than 10 baud. I think that even the ASR33 worked faster than that. I'm going to let it run until completion and see if the front panel loader program bootstraps BASIC 3.2. If that works, I'm going to freeze the code and work on the debugger. The key to using tape images is to strip any leader bytes out of the image. It's OK to have the punched leader for archival purposes in generating another physical paper tape, but it mucks with the loader code.

9/27/01 - I've been able to get CP/M to boot!!! I have a disk image of CP/M 2.2 that I've been able to boot -- whoo hoo! That's the good news. The bad news is that it seems to crash at the A> prompt. I won't know why this is until I get the integrated debugger working. I've asked the original author of the CP/M port to provide the source for the modified BIOS to aid in debugging this issue.

9/20/01 - I've been working feverishly to get true paper tape emulation working so that one could use a toggle-in loader to load a real tape image instead of a "memory image" which is what I've been using to date. That's almost complete. After that, I'm going to freeze the code so that I can work on an integrated debugger.

9/3/01 - Now that the emulator works fairly well, I decided to benchmark it against a real ALtair. So, I found a simple benchmarking program (about 15 lines) and a friend calculated the theoretical completion time using the 8080 data book. Although the full results are on the Specifications page, the short answer is that Altair executes as if it had a 2.5MHz 8080 CPU, slightly better than the original 2.0MHz one supplied with the Altair.

8/30/01 - I've been working on minor fixes and enhancements, sort of lining-up for a "dot 1" release. Some of the enhancements include an improved start-up register state, the elimination of extra notification dialogs when loading and saving files, direct support for a true PTP device (enables using real paper tape images), minor fixes to correct data LED synchronization after loading a file and on "immediate" CPU instructions, and finally some simple debugging tools (a register display, a "core dump" command and a "loaded disk" dialog. The final enhancement, which may not make this intended release is an integrated debugger with breakpoints.

8/19/01 - This weekend brought the official release of Altair32 v2.0. Theo got the CPU to finally pass the verification test. Then, after a few last minute tweaks, he got BASIC working. Now that I have a proven platform, I can get the diskette images to work.

8/7/01 - The telnet code works great. Theo found three more bugs in the processor code which he has fixed. He also attempted booting Altair BASIC 3.2 (4k BASIC) and have gotten as far as the "Terminal Width?" prompt. I hope that by the end of the week, he'll have BASIC running in the emulator. One nice side effect of the telnet code is that it's not restricted to "localhost". It will work over any network.

8/1/01 - Theo solved the state machine problem, so we can now get a sustainable connection from the telnet client to the server. He also banged together some 8080 code to simulate a loopback. The connection works! Characters typed on the telnet screen are echoed back through the emulator and back to the telnet client. Whoo, hoo! The next thing to do is get an image of Microsoft 4k BASIC running.

7/21/01 - Having nothing to do around the house recently, I picked up on the Altair code again. For now, I've dropped ODT support. On the plus side, I started working with the telnet code again. The H19 code was blown out of the water because it uses named pipes, which only work on Windows NT or 2000 (and probably XP). I bolted the telnet code into the I/O space of the emulated 8080 processor and have Theo looking at some of the changes I made. I can't seem to get the server code to "accept" a remote connection, so the state machine is hanging.

6/7/01 - I think that I've nailed all of the funnies in the processor core and the use of macros for the register variables seems to work well. I'm not attempting prototypical execution speed, so I will probably only put in a half-hearted optimization effort on the core. I've had one report about the "rotate through carry" instructions not, well, rotating through carry. The code looks fine, so I have to think about this one. I've also started working on a hex keypad and display add-on called the "ODT" (for Operator's Debug Terminal). My ODT is really loosely modeled after the ODT console on the PDP 11/34a I have in my basement. What's wrong...you don't have an 11 in your basement???

5/24/01 - I've made all of the modifications relating to using register macros. In the process, I found more errors in the processor core that required recoding some instructions like RST. I also came across an anomaly with the stack pointer because of the 88-DSK ROM located in the last page of memory. Actually, the result is prototypical -- the stack doesn't work with the ROM in page 0xff. The Intel manual even admonishes that the first thing a user program should do is to set the stack pointer to the "top of stack", which in this case should be 0xfeff. Otherwise, the code is going through regression testing now.

5/18/01 - Darren Gillis has found more problems with some CPU instructions that use word registers, like INX and DCX which I suspect is an issue with how C stores word values in an array. The solution, provided by Sean Conner, involves using macros to synthesize word variables out of the byte registers.

5/8/01 - Possibly found a solution to the VDT problem by using "named pipes" and an H19 VDT emulator.

4/14/01 - Someone sent me an 8080 processor test program that exercises all of the valid 8080 opcodes. This has enabled me to find further errors in the original processor emulation core. However, I'm not able to test certain instructions because the assembler that I'm using, A85, appears to output invalid opcodes for MVI instructions (every variant resulting in 06h).

3/4/01 - I've fixed all of the CPU instruction funnies that have been reported to date. I also have scanned and converted two 8080 programs: the Amsat-Golem 8080 Monitor program from BYTE Magazine and the Lawrence Livermore Labs BASIC from Dr. Dobbs Journal January 1977 issue. I haven't tested them on the emulator, but I've fully proofed them, so they should work.

2/18/01 - Some users have notified me that there are some "funnies" in the CPU instruction routines. These errors appeared to be a carryover from the initial source from Claus. I'm in the process of testing them now, but I think that the errors (and the fixes) are fairly obvious.

1/21/01 - The last few weeks have been busy, so work has progressed slowly. All major functions (except for the VDT module) have been coded and lightly tested. Disk code appears to work, but I'm waiting for some "live" test software in order to try it out. Printer output also appears to work. I'd say that the source should be ready to post shortly.

12/23/00 - The LPR emulation code is nearly complete. There were a lot of compromises relating to emulating a 25-year old character-based output device in today's world of page-based printers. Remember, early printers were dot matrix printers and could, if the user desired, print only one character at a time. Not even a form feed was required. The Windows printing subsystem is page based, i.e., a whole page is imaged and then sent to the print spooler and ultimately, the printer. What I decided to do was just forward the output to a text file which can be printed by using Notepad or WordPad. The last thing to complete is the device selection between the PTP and LPR devices which share the second port of the emulated 2SIO serial card.

12/04/00 - The floppy emulation code has been integrated into the emulator. Emulation support is limited to the MITS 88-DSK 8" disk controller even though there were other controllers available from many manufacturers. I'm waiting for the VDT code to be completed so that I can attempt to boot the Altair from a disk image that I was able to get.

11/25/00 - File save and load in Intel Hex and straight binary formats works. Installable ROM facility works using a text configuration file. The base code compiles with no errors or warnings. Work progresses on the disk code. Right now, I'm working on connecting disk image files to each virtual drive.

Copyright (c) 1998-2009 Richard A. Cini, Jr.  All Rights Reserved. All copyrights of any third parties referred to herein are hereby acknowledged. There is no warranty, either express or implied, relating to any of the content contained herein. The site maintainer shall in no event be liable to anyone for damages, including any loss of profits, lost savings, or other incidental or consequential damages arising out of the use or misuse of the information contained on this Web site. You may use the information contained herein for NON-COMMERCIAL purposes only and AT YOUR OWN RISK. Batteries not included. Contents may settle during shipping. Updated 06-Jun-2010 09:47 -0400
Website Design by www.DressageArt.com