David Given
97e6d8f66a
Update README.
2019-06-16 20:10:13 +02:00
David Given
2b013c34dc
Some byte shaving; lseek returns the offset.
2019-06-16 20:04:07 +02:00
David Given
50dca8b954
First at-least-slightly working version of the CP/M read/write stuff. Not as
...
bad as I expected, but far too big.
2019-06-16 19:04:17 +02:00
David Given
3131dc9915
Partially working port of stdio to CP/M. I'm not sure this will work; it's
...
getting way too complicated (stdio is horribly subtle). I think I need to
rethink things.
2019-06-15 22:22:01 +02:00
David Given
9109d7af7f
First stage in modularising FILE*. Refactor so that printf/scanf don't rely on
...
FILE* innards; allow plats to replace the entire emulated FILE* system.
2019-06-15 13:07:10 +02:00
David Given
784fc67596
Alignment issues mean we can't access 16-bit CP/M structure elements directly.
2019-06-11 22:33:25 +02:00
David Given
0607529df2
Miscellaneous bugfixed and renamings.
2019-06-11 21:33:57 +02:00
David Given
a804375560
Miscellaneous byte shaving; you can now choose whether or not you want the CCP
...
overwritten or not, and cpm_exit() does the right thing.
2019-06-11 20:32:00 +02:00
David Given
3feb79ad0c
Simplify the .trp API to make it a bit smaller.
2019-06-11 20:02:03 +02:00
David Given
4e90de00e9
Don't pull in all the trap handlers every time.
2019-06-11 19:47:42 +02:00
David Given
f58d7e7d30
Add missing file.
2019-06-11 19:40:46 +02:00
David Given
48a9c48f56
Generate traps procedurally. For some reason they always keep getting pulled
...
in, though...
2019-06-11 00:12:00 +02:00
David Given
ec2ea1feff
Add missing file.
2019-06-10 23:57:43 +02:00
David Given
d0967e683b
Extend the CP/M libsys with a full set of (hopefully correct) 2.2 BDOS calls.
2019-06-10 23:54:23 +02:00
David Given
3f938d651b
EM requires 2-alignment in structures, sadly.
2019-06-10 18:33:04 +02:00
George Koehler
bec236c108
Include more headers to declare functions.
...
This causes clang to give fewer warnings of implicit declarations of
functions.
In mach/pdp/cv/cv.c, rename wr_int2() to cv_int2() because it
conflicts with wr_int2() in <object.h>.
In util/ack, rename F_OK to F_TRANSFORM because it conflicts with F_OK
for access() in <unistd.h>.
2019-03-22 15:59:35 -04:00
George Koehler
84f65f7ce3
Raise _XOPEN_SOURCE from 500 to 700
...
In OpenBSD, _XOPEN_SOURCE 500 forces _POSIX_C_SOURCE down to 199506,
which hides the declarations of openat() and fdopendir() and causes
compiler warnings.
Don't set _POSIX_C_SOURCE, because _XOPEN_SOURCE may set
_POSIX_C_SOURCE to a different value.
2019-03-22 14:35:07 -04:00
David Given
79a38ecc08
Instead of using parameterised rsts for stack access, add a huge swathe of
...
automatically built helper tools. Star Trek goes up from 40243 to 40779 bytes,
but should be a lot faster.
2019-02-13 22:45:22 +01:00
David Given
073451dd44
Merge pull request #154 from ccodere/buildfix
...
Bugfix of compilation on gcc 4.8
2019-02-12 21:51:46 +01:00
carl
664338aa49
Fix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default flags) - updated following comment.
2019-02-13 00:17:45 +08:00
carl
c63f527dde
Fix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default flags).
2019-02-12 00:46:09 +08:00
David Given
34e9573929
Merge from default.
2019-02-10 23:40:07 +01:00
David Given
666d9a3edb
Add stray header.
2019-02-10 12:57:00 +01:00
David Given
aa6aefdaa0
Add missing header.
2019-02-10 00:45:09 +01:00
David Given
810afbb5b9
Don't run the floating point tests on i80.
2019-02-09 14:24:31 +01:00
David Given
bcc9c16bf7
More z80ex removal.
2019-02-09 13:42:09 +01:00
David Given
343cdf7983
Remove stray z80ex reference.
2019-02-09 13:30:29 +01:00
David Given
19f5ee3399
CP/M sbrk now handles overflow correctly.
2019-02-08 21:43:52 +01:00
David Given
22032575c5
Add a 'disassemble' command to the CP/M emulator.
2019-02-08 20:54:44 +01:00
David Given
b47d59aa4a
Merge from default.
2019-02-07 23:45:47 +01:00
David Given
8876ddcad2
Build the CP/M tests (which got turned off accidentally). Add a disassembler to
...
the emulator debugger.
2019-02-07 23:36:45 +01:00
David Given
7473601172
Add the cpm emulator from Cowgol, modified to work with an 8080 emulator rather
...
than libz80ex; enable tests for cpm.
2019-02-07 22:39:57 +01:00
David Given
5ac280026e
Experimentally use rst 1 to optimise frame variable loads. Reduces Star Trek
...
from 43892 to 43205 bytes.
2019-02-07 00:06:32 +01:00
David Given
365c89c9e7
Updated READMEs with the MIPS platform.
2018-09-18 23:49:31 +02:00
David Given
9333b323a5
Make the MIPS boot code produce correct code.
2018-09-18 23:39:04 +02:00
David Given
ec0891469f
Array descriptor ranges are inclusive; adjust aar and the tests to check for
...
this. All the tests except rotate build now!
2018-09-17 19:34:38 +01:00
David Given
b81e060372
Add huge numbers of failing tests.
2018-09-10 23:40:03 +02:00
David Given
776e93221f
Thinko fix.
2018-09-09 18:57:44 +02:00
David Given
c769fbec93
Use the correct ELF processor flags; align properly.
2018-09-09 18:57:35 +02:00
David Given
f3bc9ef92a
Call proper Linux system calls proper-like.
2018-09-09 18:57:12 +02:00
David Given
ec46643124
Allow the ELF processor flags to be set. Generate MIPS ELF executables, not
...
PowerPC ones.
2018-09-09 14:29:34 +02:00
David Given
26fe3f7530
Added library skeletons.
2018-09-05 00:07:07 +02:00
David Given
98afb42095
Added a boot.o based on the PowerPC one.
2018-09-05 00:00:13 +02:00
David Given
1d6ecddcf4
The MIPS backend is still full of holes, and cut-and-pasted PowerPC code, but
...
is beginning to look like an actual code generator.
2018-09-02 18:57:25 +02:00
David Given
4741ed8e14
Add a completely non-tested table-based MIPS assembler.
2018-09-01 19:35:31 +02:00
David Given
ab7002c0ee
All the Linux include directories are the same, so common them all out into a
...
single one, like OSX.
2018-06-24 19:57:43 +02:00
David Given
f45b357740
Remove the dependency on the glibc-only byteswap.h.
2018-06-24 00:01:06 +02:00
David Given
1fc20e90c0
Remove c99-isms.
2018-06-23 23:56:34 +02:00
David Given
64ae1d7583
Move time() into sys; change the name of the variable which controls it.
2018-06-23 19:40:50 +02:00
David Given
538eefb573
Get em22 working. Remove the leading-underscore system calls from its libsys.
2018-06-23 15:57:57 +02:00
David Given
74d166ef9a
Get the pdp7 plat working; remove the leading-underscore syscalls.
2018-06-23 15:18:26 +02:00
David Given
3e40374297
Made the rpi platform work with the new libc layout.
2018-06-23 13:05:27 +02:00
David Given
dbb2062d03
Made pc86 work with the new libc.
2018-06-23 12:59:40 +02:00
David Given
680b4071b7
Made the two OSX platforms work with the new libc layout.
2018-06-23 12:55:59 +02:00
David Given
b727b7affd
Make linuxppc work.
2018-06-23 12:41:54 +02:00
David Given
b267b56ad9
Made linux68k work; commoned up all the generic linux includes.
2018-06-23 12:35:17 +02:00
David Given
66815ff987
Make linux386 work with the new libc layout.
2018-06-23 12:13:33 +02:00
David Given
32c881474e
Create a basic and probably wrong common unistd.h, which replaces the plat one.
...
Made this work with cpm (but nothing else yet).
2018-06-23 11:46:55 +02:00
David Given
94ffa3ba88
libc floating point and stdio floating point can now be turned on and off using
...
ACKCONF variables.
2018-06-23 00:04:14 +02:00
David Given
9bf1d548fc
Rearrange the libc config files, ready for adding new options.
2018-06-22 23:43:15 +02:00
David Given
60b7d8de6e
Merge pull request #96 from kernigh/kernigh-emu-1
...
Fixes to build emulators, ass, int on OpenBSD
2018-06-20 22:30:01 +02:00
David Given
698613cd7d
Turns out that the compiler needs access to the libpc headers too; refactor
...
into a separate target to avoid build loops and make it work.
2018-06-18 22:17:38 +02:00
David Given
11854f4dfe
Ansify and warning fix.
2018-06-17 22:30:27 +02:00
David Given
13e195d19f
Warning fixes.
2018-06-17 15:42:26 +02:00
David Given
ddca7276c0
Merge pull request #102 from davidgiven/dtrg-powerpc
...
Add a PowerPC simulator for running the tests.
2018-06-17 11:45:26 +02:00
David Given
89e8956bb2
Fix edge case in rlwnm when the mask is 32 bits wide. All tests now pass.
2018-06-17 11:00:01 +02:00
David Given
7ec9f54679
Turns out that andi and andis only have . forms. Fixed; another test passes.
2018-06-17 10:43:39 +02:00
David Given
78eaf836be
Turns out I was returning values from syscalls in the wrong register; fixed.
...
More tests pass.
2018-06-17 10:22:20 +02:00
David Given
ab660a44e9
Lots of floating point, bugfixes, and system calls. Most of the tests pass now.
2018-06-17 09:24:01 +02:00
David Given
67efbb5f7f
Do a bit of floating point stuff; added brk(); fixed a horrible bug where
...
stores with 16-bit displacements were storing the register number and not the
contents of the register.
2018-06-16 22:55:23 +02:00
David Given
5d7cdd2c67
Fix a setcr0 bug which was trashing the condition register; some system
...
calls are now implemented. A few tests more-or-less pass (but crash on
exit).
2018-06-16 08:35:36 +02:00
David Given
39a49265ce
Merge pull request #100 from kernigh/kernigh-pdp
...
Two fixes for ack -mpdpv7
2018-06-15 15:40:24 +09:00
George Koehler
5db312a1c0
Prevent crash in isatty()
...
The existing code allocated 2 bytes (char*), but gtty() needs 6 bytes
(struct sgttyb), so isatty() smashed the stack and corrupted its
return address, probably causing SIGBUS or SIGSEGV.
Fix by switching to TIOCGETD, which needs 2 bytes. TIOCGETD isn't in
the manual for tty(4), but does appear in
https://minnie.tuhs.org//cgi-bin/utree.pl?file=V7/usr/sys/dev/tty.c
This fixes hilo_c.pdpv7 and hilo_mod.pdpv7 in simh-pdp11.
2018-06-15 00:48:29 -04:00
George Koehler
5de5611c24
Use 2-byte alignment in pdpv7 to prevent SIGBUS.
...
Change the alignment in C structs (wa, pa, sa, and so on) from 1 to 2
bytes. This prevents the SIGBUS when PDP-11 Unix V7 catches the
misalignment. This fixes hilo_p.pdpv7 in simh-pdp11.
Change ALIGN to document that sections have 2-byte alignment. This
change should have no effect, because the sections only contain 2-byte
values.
2018-06-15 00:17:12 -04:00
David Given
5111556d14
Got the emulator to the point where we're hitting the first major emulation bug
...
(the calloc test hangs).
2018-06-14 05:53:39 -07:00
David Given
853af4c4dd
Some code runs (up to needing setcr0).
2018-06-14 04:41:21 -07:00
David Given
b71145f79d
Implement a non-functional skeleton of the PowerPC emulator (with, hopefully,
...
most of the instruction decode done).
2018-06-14 03:07:36 -07:00
David Given
31c2ba3f94
File cleanup.
2018-06-13 21:47:08 +09:00
David Given
7eaa235fd1
Bodge the ancient em monitor library into building as a libsys for the em22
...
plat. It's completely untested, but it builds and makes e.out executables.
2018-06-13 21:44:25 +09:00
David Given
15161ebb35
Remember to always link the libsys and libend.
2018-06-13 20:57:31 +09:00
David Given
6ae38887a7
It appears that the parameter to lol technically has to be word aligned; having
...
a non-word aligned parameter is illegal (but most of the toolchain accepts it).
So, word align data structures for em22.
2018-06-12 20:54:15 +09:00
George Koehler
6f9e418f94
Remove extra #include <stdio.h>
to fix uint
...
From my request at https://github.com/kstenerud/Musashi/pull/31
There was a conflict between Musahi's uint and OpenBSD's uint:
$ cc -o m68kmake m68kmake.c
$ ./m68kmake
$ cc -DM68K_COMPILE_FOR_MAME=0 -c m68kcpu.c
In file included from m68kcpu.c:565:
In file included from /usr/include/stdio.h:46:
/usr/include/sys/types.h:58:22: error: cannot combine with previous 'int'
declaration specifier
typedef unsigned int uint; /* Sys V compatibility */
^
./m68kcpu.h:75:25: note: expanded from macro 'uint'
#define uint unsigned int
^
1 error generated.
2018-06-10 16:24:35 -04:00
George Koehler
5404dace3a
Stop using <X11/Xfuncproto.h> from x86emu.
...
The code included <X11/Xfuncproto.h> only for _X_ATTRIBUTE_PRINTF,
which tells some compilers to check the printf format string. Remove
so ACK doesn't need any X11 headers.
Some machines don't have the X11 headers, or they need a flag like
-I/usr/X11R[67]/include to find them.
2018-06-10 16:00:23 -04:00
David Given
d623440c77
Add the core of a simple em22 platform. Unfortunately it doesn't work; the old
...
em libmon vanished decades ago (or never existed), and also ass appears to have
a different idea of what the em opcodes are to everything else and gets
confused.
2018-06-10 20:25:48 +09:00
David Given
19cd42124f
Rearrange the tests into sets; allow plats to skip sets; pc86 and linux68k now
...
skip the tests which use floating point instructions (as their emulators don't
support them).
2018-06-08 15:59:04 +09:00
David Given
1d4ddb939d
Merge from trunk.
2018-06-08 00:05:50 +09:00
David Given
b9c0e1d964
Dummied out some more system calls --- more tests pass.
2018-06-07 13:12:15 +09:00
David Given
2682c125e0
More real ELF loading and brk handling; more tests pass.
2018-06-07 13:03:36 +09:00
David Given
396795105f
Beat the 68k simulator into enough shape that at least *some* of the tests pass.
2018-06-06 22:39:43 +09:00
David Given
4b26f75d23
Hang on, the 68k is big-endian --- I'm extracting words (and bytes) from longs
...
incorrectly.
2018-06-06 12:49:21 +09:00
David Given
2cf39be752
Get the emulator to the point where it'll start to run code; it then fails,
...
because the version of Musashi I imported doesn't support floating point...
2018-06-05 23:17:22 +09:00
David Given
5034ed1c39
Crudely beat the standard Masushi simulator into working in the ACK framework.
2018-06-05 17:45:00 +09:00
David Given
c6b9446722
Check in the x86emu-based emulator. Sadly, just like the 8086tiny-based
...
emulator, FPU instructions aren't supported.
2018-06-04 16:19:45 +09:00
David Given
0eb89d5d95
Add a clean copy of the Musashi emulator.
2018-06-05 17:04:47 +09:00
David Given
9132641100
Add the pc86emu skeleton.
2018-06-03 08:24:21 -07:00
David Given
eb96ea5d28
Add a clean copy of the x86emu library.
2018-06-03 08:06:23 -07:00
George Koehler
019c7f9da7
Update cpm/README for console changes, ack -fp
.
2018-05-07 16:08:44 -04:00
George Koehler
154509038d
Enable the line editor in read() for CP/M.
...
This changes the BDOS call from CPM_BDOS_CONSOLE_INPUT to
CPN_BDOS_READ_CONSOLE_BUFFER. This allows commands like ^H to delete
characters and ^C to exit to CCP. This is more like how Unix read(2)
uses canonical mode of termios to read a line.
This change has a disadvantage: the user buffer to read(2) must now be
large enough for an entire line. This is because CP/M, unlike Unix,
lacks a kernel buffer to hold the rest of the line. If you use a
buffered input library like stdio to call read(2), then it works; but
if you try to read part of a line or a single character, then it
doesn't work.
2018-05-04 18:21:01 -04:00
George Koehler
4a3b7be795
Use ack -mcpm -fp
for mandelbrot.c, startrek.c
...
Add a variable %{ackldflags} so I can pass `-fp`. This change seems
to cause the build to relink every ackprogram, because the link now
needs to use %{ackldflags} even if the flags are empty.
mandelbrot_c_cpm runs in YAZE-AG; startrek_c_cpm doesn't run because
it doesn't fit in the 16-bit address space.
2018-04-28 13:18:27 -04:00
George Koehler
93e01eb5d1
Teach i80 ncg to use libfp. Enable ack -mcpm -fp
.
...
Old .o files stop working if they use floating point. One must
recompile those files. Old files don't call libfp in the correct way,
and may use symbols that I removed from libem. I don't keep old
symbols in libem/flp.s, because a program that pulls both libfp and
flp.s would get "multiply defined" errors in the linker.
I teach mach/i80/ncg/table to use libfp by copying or adapting the
patterns from mach/i86/ncg/table. I did not test all the patterns,
but I did use `ack -mcpm -fp -O4` to compile examples/mandelbrot.c,
then I ran it in the emulator YAZE-AG. It worked, but it was slow.
2018-04-25 16:09:56 -04:00