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. 2/18/2018 -- I received an updated copy of the 8800b manual with a missing page replaced; posted. 1/16/2015 -- I posted scanned manuals for the PCC Acounting Package. Scans include manuals for A/R, inventory, A/P, G/L and Payroll. 12/21/2013 -- I posted a new version today. This version includes support for hardware interrupts. While this is a great feature (thanks to Mike Douglas for the coding), there are only two programs that I'm aware of that use it -- AltairDOS and Timeshare BASIC. I'm going to work on getting TS-BASIC working, but it requires full support for the VI/RTC board. 2/1/2013 -- I posted a new version of the emulator today to correct a minor bug in the disk code. I also went back and compiled in VS2003 as a test to eliminate compilation anomalies with VS2008. 1/8/2012 -- Happy New Year! Today I uploaded a zip file containing WineBottle'd versions of Altair32 and Imsai32 as provided by Barr Nelson. It's a huge file (127mb) but it provides a way to use the emulator under Mac OS X without rewriting the code. 9/17/2011 -- The v.30 code refresh has been posted. There are still a few things to do, like fix the help file, but the code is up. There have been a few user-contributed big fixes and enhancements, making this a decent maintenance release rather than a wholesale re-write. 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. 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-2014Richard 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
18-Feb-2018 21:54 -0500
Website Design by www.DressageArt.com |