f



z80pack release 1.29

is available:

http://www.autometer.de/unix4fun/z80pack/ftp/

There are plenty bugfixes and improvements, I'll comment the more interesting ones,
for the rest see sources or play around with the machines.


Frontpanel machines got cosmetic fixes, RESET on the Altair now will lit only the
address and data bus LEDs, as with the original.
If the original machines are switched on they display some random data on the front panel
and a RESET is needed, to bring the machine in a defined state. So far the z80pack machines
didn't display anything but internally did the right thing. Now they will display the first address
of software loaded with -x and the data at this address.

The default for the 8080 now is to execute the undocumented instructions same as the silicon,
with -u both CPU's will trap on undocumented instructions, more consistent behaviour.

John Kichury provided an improved front panel library, that makes the config files position
independent. The emulations now will first look for their config files in ./conf and if that
doesn't exist in /usr/local/share/<machinename>/conf, the later one set in the Makefiles,
so that you can change it for your system easily.

Also the machines will search for disk images at /usr/local/share/<machinename>/disks,
if ./disks doesn't exist and no -d <path> option was used.

Then the machines got an option -r, which loads them with a configured boot ROM, which
is set in the Makefiles as /usr/local/share/<machinename>/bootrom.hex.

So if you setup /usr/local/shared/altairsim properly, you can just run altarsim -r to start some
pre-configured system, makes it easy now to create rpm, apt, zypper, brew etc binary packages
for all systems.

Because I don't want to make /usr/local/share public writable, all emulations now also
support R/O disk images.

The Altair printer port was moved to 2/3 to make this compatible with MITS BASIC. The CP/M
BIOS's are adjusted and if MITS BASIC asks LINEPRINTER? then answer that with C, because the
Centronics variant is implemented.

The Altair also got a SIO Rev. 0, also connected to the terminal, so that software using this
runs without modifications. As a side effect you don't need to take care about setting
switches anymore for the BASIC I/O channel, because one of the both cards is the default
if all switches are off for all BASIC versions.

The Altair supports ROM memory in upper memory, this is configured in conf/iodev.conf.
The machine comes configured with 1KB ROM and the CP/M versions are relocated to 62KB.
Side effect is that MITS BASIC versions < 4.0 won't loop endless anymore if SIZE? is
answered with return.

The BOOT switch of the Altair is functional, it sets the PC to an address configured in
conf/iodev.conf, which is the start address of the boot ROM. So if machine gets stuck
just hit the boot switch to reboot.

ROM's are supported in the IMSAI too, but not set, because the ROMS are located at D800,
and that would leave one with 54KB RAM for the OS's. You can configure that and relocate
OS's appropriate if you want it.

You can now load an original MITS paper- or cassette tape with the SIO2 or the MBL loader
with altairsim -x loader <basic_tape.tap, after reading the tape from the redirection the
emulation will reopen stdin/out/error, so that I/O is back to the terminal emulation.

0
Udo
11/20/2016 5:32:14 PM
comp.os.cpm 3422 articles. 0 followers. Post Follow

3 Replies
319 Views

Similar Articles

[PageSpeed] 45

Should have waited with the release a few days, but I thought I would need longer
to get it correct, oh well.

B>dir
B: TEST8080 ASM : TEST8080 COM : 8080PRE  MAC : 8080EX   MAC
B: 8080PRE  COM : CPUTEST  COM : 8080EX   COM
B>test8080
MICROCOSM ASSOCIATES 8080/8085 CPU DIAGNOSTIC VERSION 1.0  (C) 1980

CPU IS OPERATIONAL
B>cputest

DIAGNOSTICS II V1.2 - CPU TEST
COPYRIGHT (C) 1981 - SUPERSOFT ASSOCIATES

ABCDEFGHIJKLMNOPQRSTUVWXYZ
CPU IS 8080/8085
BEGIN TIMING TEST
END TIMING TEST
CPU TESTS OK

B>8080pre
8080 Preliminary tests complete
B>8080ex
8080 instruction exerciser
dad <b,d,h,sp>................  PASS! crc is:14474ba6
aluop nn......................  PASS! crc is:9e922f9e
aluop <b,c,d,e,h,l,m,a>.......  PASS! crc is:cf762c86
<daa,cma,stc,cmc>.............  PASS! crc is:bb3f030c
<inr,dcr> a...................  PASS! crc is:adb6460e
<inr,dcr> b...................  PASS! crc is:83ed1345
<inx,dcx> b...................  PASS! crc is:f79287cd
<inr,dcr> c...................  PASS! crc is:e5f6721b
<inr,dcr> d...................  PASS! crc is:15b5579a
<inx,dcx> d...................  PASS! crc is:7f4e2501
<inr,dcr> e...................  PASS! crc is:cf2ab396
<inr,dcr> h...................  PASS! crc is:12b2952c
<inx,dcx> h...................  PASS! crc is:9f2b23c0
<inr,dcr> l...................  PASS! crc is:ff57d356
<inr,dcr> m...................  PASS! crc is:92e963bd
<inx,dcx> sp..................  PASS! crc is:d5702fab
lhld nnnn.....................  PASS! crc is:a9c3d5cb
shld nnnn.....................  PASS! crc is:e8864f26
lxi <b,d,h,sp>,nnnn...........  PASS! crc is:fcf46e12
ldax <b,d>....................  PASS! crc is:2b821d5f
mvi <b,c,d,e,h,l,m,a>,nn......  PASS! crc is:eaa72044
mov <bcdehla>,<bcdehla>.......  PASS! crc is:10b58cee
sta nnnn / lda nnnn...........  PASS! crc is:ed57af72
<rlc,rrc,ral,rar>.............  PASS! crc is:e0d89235
stax <b,d>....................  PASS! crc is:2b0471e9
Tests complete
B>

The z80pack 8080 you got is not really buggy, the difference comes from wrong AC flag
for subtractions, and if you use DAA after that the result is junk, no matter what AC says.
So no software would do that and I ignored this stuff for a while.
0
Udo
11/22/2016 10:48:43 PM
I have uploaded a patch for z80pack-1.29, that implements the 8080 for this release
that passes all regression tests:

http://www.autometer.de/unix4fun/z80pack/ftp/patches/

I had a brief look at other 8080 implementations, stuff not done, stuff buggy,
crude programming used with lookup tables, even for the AC flag :(

In the z80pack CPU implementations I use boolean expressions only to implement
all and any instruction, with exception for the parity flag. When I wrote the stuff
30 years ago I was not able to implement parity with boolean expressions on the
available systems at that times with acceptable speed, so the table.

Feel free to use my implementation as reference for other 8080 implementations.
0
Udo
11/23/2016 7:20:20 PM
On 23/11/2016 20:20, Udo Munk wrote:
> I have uploaded a patch for z80pack-1.29, that implements the 8080 for this release
> that passes all regression tests:
>
> http://www.autometer.de/unix4fun/z80pack/ftp/patches/
>
> I had a brief look at other 8080 implementations, stuff not done, stuff buggy,
> crude programming used with lookup tables, even for the AC flag :(
>
> In the z80pack CPU implementations I use boolean expressions only to implement
> all and any instruction, with exception for the parity flag. When I wrote the stuff
> 30 years ago I was not able to implement parity with boolean expressions on the
> available systems at that times with acceptable speed, so the table.
>
> Feel free to use my implementation as reference for other 8080 implementations.

Thanks for the new release !

tomorrow will compile & test.. and report ;)

Best regards from Italy,
dott. Piergiorgio.


0
dott
11/24/2016 4:59:58 PM
Reply: