ack.git
7 years agoMerge from default. travis
David Given [Sun, 30 Oct 2016 14:53:26 +0000 (15:53 +0100)]
Merge from default.

7 years agoDon't allow parallel builds in the top-level makefile.
David Given [Sun, 30 Oct 2016 14:49:39 +0000 (15:49 +0100)]
Don't allow parallel builds in the top-level makefile.

7 years agoOld versions of make don't support -r.
David Given [Sun, 30 Oct 2016 13:28:08 +0000 (14:28 +0100)]
Old versions of make don't support -r.

7 years agoMerge pull request #6 from kernigh/pr-linuxppc
David Given [Wed, 19 Oct 2016 18:39:10 +0000 (20:39 +0200)]
Merge pull request #6 from kernigh/pr-linuxppc

PowerPC fixes

7 years agoRemove f14 to f31 from FREG and FSREG.
George Koehler [Wed, 19 Oct 2016 01:16:47 +0000 (21:16 -0400)]
Remove f14 to f31 from FREG and FSREG.

This would have happened later, if f14 to f31 became regvar (like r13
to r31 are now).  I am doing it now because ncg is too slow for rules
"with FREG FREG uses FREG".  We use such rules for adf 8 and other EM
instructions that operate on 2 floats.  Like my last commit cfbc537,
this commit speeds ncg by removing choices for register allocation.

7 years agoIn powerpc ncg, add a speed hack for sti 8.
George Koehler [Tue, 18 Oct 2016 00:31:59 +0000 (20:31 -0400)]
In powerpc ncg, add a speed hack for sti 8.

ncg is too slow with this many registers.  A stack pattern "with GPR
GPR GPR" or "with REG REG REG" takes too long to pick registers,
causing ncg 8 to take about 2 seconds on each sti 8.  I introduce
REG_PAIR and there are only 4 such pairs.

For programs that use sti 8 (including C programs that copy 8-byte
structs), this speed hack improves the ncg run from several seconds to
almost instantaneous.

Also add a few COMMENT(...) lines in stacking rules.

7 years agoAdd costs to powerpc instructions.
George Koehler [Mon, 17 Oct 2016 18:57:21 +0000 (14:57 -0400)]
Add costs to powerpc instructions.

Also show how andi., andis., or., set condition codes.

7 years agoRewrite .fif8 to avoid powerpc64 fctid
George Koehler [Mon, 17 Oct 2016 04:39:59 +0000 (00:39 -0400)]
Rewrite .fif8 to avoid powerpc64 fctid

This fixes the SIGILL (illegal instruction) in startrek when firing
phasers.  The 32-bit processors in my PowerPC Mac and in QEMU don't
have fctid, a 64-bit instruction.

I got the idea from mach/proto/fp/fif8.c to extract the exponent,
clear some bits to get an integer, then subtract the integer from
the original value to get the fraction.

7 years agoAdd "kills MEMORY" to powerpc sti rules.
George Koehler [Sun, 16 Oct 2016 22:13:39 +0000 (18:13 -0400)]
Add "kills MEMORY" to powerpc sti rules.

Adjust some of the loi rules (and associated moves) so we can identify
the tokens that must be in MEMORY.

With this commit, I can navigate the Enterprise even if I comment out
my work-around from e22c888.

7 years agoRemove IND_LABEL_W and IND_LABEL_D
George Koehler [Sun, 16 Oct 2016 20:33:24 +0000 (16:33 -0400)]
Remove IND_LABEL_W and IND_LABEL_D

Because li32 always loads a label into a GPR, it is sufficient to
coerce LABEL to REG, then use IND_RC_W or IND_RC_D for indirection
through the label.

7 years agoSimplify moves to and from IND_RC_*
George Koehler [Sun, 16 Oct 2016 20:02:25 +0000 (16:02 -0400)]
Simplify moves to and from IND_RC_*

Now that SUM_RC always has a signed 16-bit constant, it happens that
the various IND_RC_* tokens also have a signed 16-bit constant, so
we no longer need to touch the scratch register.

7 years agoDon't need Lua any more.
David Given [Sun, 16 Oct 2016 18:10:24 +0000 (20:10 +0200)]
Don't need Lua any more.

7 years agoRemember to create the build directory when bootstrapping.
David Given [Sun, 16 Oct 2016 18:09:52 +0000 (20:09 +0200)]
Remember to create the build directory when bootstrapping.

7 years agoUse a self-hosted Lua instead of the system one.
David Given [Sun, 16 Oct 2016 18:07:54 +0000 (20:07 +0200)]
Use a self-hosted Lua instead of the system one.

7 years agoRefactor how powerpc ncg pushes constants.
George Koehler [Sun, 16 Oct 2016 17:58:54 +0000 (13:58 -0400)]
Refactor how powerpc ncg pushes constants.

When loc (load constant) pushes a constant, it now checks the value of
the constant and pushes any of 7 tokens.  These tokens allow stack
patterns to recognize 16-bit signed integers (CONST2), 16-bit unsigned
integers (UCONST2), multiples of 0x10000 (CONST_HZ), and other
interesting forms of constants.

Use the new constant tokens in the rules for adi, sbi, and, ior, xor.
Adjust a few other rules to understand the new tokens.

Require that SUM_RC has a signed 16-bit constant, and OR_RC and XOR_RC
each have an unsigned 16-bit constant.  The moves from SUM_RC, OR_RC,
XOR_RC to GPR no longer touch the scratch register, because the
constant is not too big.

7 years agoExperiments with declarative apt and OSX.
David Given [Sun, 16 Oct 2016 16:16:30 +0000 (18:16 +0200)]
Experiments with declarative apt and OSX.

7 years agoRemove unused parts of mach/powerpc/ncg/table
George Koehler [Sun, 16 Oct 2016 00:00:48 +0000 (20:00 -0400)]
Remove unused parts of mach/powerpc/ncg/table

Remove unused tokens GPRINDIRECTLO, HILABEL, LOLABEL, LABELI.  Also
remove an #if 0 ... #endif group of patterns.

7 years agoIn powerpc table, fix macros los() and his().
George Koehler [Sat, 15 Oct 2016 03:59:26 +0000 (23:59 -0400)]
In powerpc table, fix macros los() and his().

Change the operator in his() from a - minus to a + plus.  When los(n)
becomes negative, then his(n) needs to add 0x10000, not subtract it.

Also change los(n) to do the sign extension, because smalls(los(n))
should be true, not false.

Also change hi(n) and lo(n) to wrap n in parentheses, as (n), because
these are macros and n might still contain operators.

7 years agoRemove stackadjust and stackoffset() from ncg.
George Koehler [Sat, 8 Oct 2016 00:52:13 +0000 (20:52 -0400)]
Remove stackadjust and stackoffset() from ncg.

This feature has never been used since its introduction, more than 3
years ago, in David Given's commit c93cb69 of May 8, 2013.  The commit
was for "PowerPC and M68K work".  I am not undoing the entire commit.
I am only removing the stackadjust and stackoffset() feature.

This commit removes the feature from my branch kernigh-linuxppc.  This
removal includes the mach/proto/ncg parts.  The default branch already
removed most of the feature, but kept the mach/proto/ncg parts.  That
removal happened in commit 81778b6 of May 13, 2013 (which was a merge;
git diff af0dede 81778b6).  The branch dtrg-experimental-powerpc
merged the default branch but without the removal.  That merge was
commit 4703db0f of Sep 15, 2016 (git diff 8c94b13 4703db0).  My branch
kernigh-linuxppc is off branch dtrg-experimental-powerpc, so I can no
longer get the removal by merging default.

David Given described the stackadjust feature in
  https://sourceforge.net/p/tack/mailman/message/30814691/

The instruction stackadjust would add a value to the offset, and the
function stackoffset() would return this offset.  One would use this
to track sp - fp, then omit the frame pointer by not keeping fp in a
register.

7 years agoRemove most of GPRE from mach/powerpc/ncg/table
George Koehler [Fri, 7 Oct 2016 02:59:27 +0000 (22:59 -0400)]
Remove most of GPRE from mach/powerpc/ncg/table

We only need GPRE in a few places where we write {GPRE, regvar(...)}
because ncgg can't parse plain regvar(...).  In all other places, a
plain GPR works.

Also remove gpr_gpr_gpr and a few other unused and fake instructions
from the list of instructions.

7 years agoRename SCRATCH to RSCRATCH. Never stack RSCRATCH nor FSCRATCH.
George Koehler [Fri, 7 Oct 2016 00:47:42 +0000 (20:47 -0400)]
Rename SCRATCH to RSCRATCH.  Never stack RSCRATCH nor FSCRATCH.

Rename the scratch gpr (currently r11) from SCRATCH to RSCRATCH so I
can search for RSCRATCH without finding FSCRATCH.  I also want to
avoid confusion with the SCRATCH keyword of the old code generator (cg
which came before ncg).

Change the stacking rules to prevent stacking of RSCRATCH or FSCRATCH
or any other GPR or FPR that isn't an allocatable REG or FREG.  Then
ncgg rejects any rule that tries to stack a GPR or FPR, so change such
rules to stack a REG or FREG.

7 years agoMerge branch 'default' into kernigh-linuxppc
George Koehler [Fri, 30 Sep 2016 17:55:06 +0000 (13:55 -0400)]
Merge branch 'default' into kernigh-linuxppc

7 years agoRemove .linenumber and .filename; use hol0 and hol0+4.
George Koehler [Fri, 30 Sep 2016 17:40:36 +0000 (13:40 -0400)]
Remove .linenumber and .filename; use hol0 and hol0+4.

We need this because some .e files in lang/ are using 'loe 0' and 'lae
4' to load the line number from hol0 and filename from hol0+4.

7 years agoDefine the begdata, begrom, begbss symbols for linuxppc.
George Koehler [Fri, 30 Sep 2016 17:21:42 +0000 (13:21 -0400)]
Define the begdata, begrom, begbss symbols for linuxppc.

I copied the definitions from linux386 and linux68k.

This change also moves _errno and the other common symbols in boot.s
from .text to .bss.  Common symbols belong in .bss, but the assembler
seems dumb enough to put them in any section.

7 years agoAdd a rule for sdl ldl $1==$2 to work around a bug.
George Koehler [Fri, 30 Sep 2016 15:50:50 +0000 (11:50 -0400)]
Add a rule for sdl ldl $1==$2 to work around a bug.

In our powerpc table, sdl fails to kill the old value of the local.
This is a bug, because a later ldl can load the old value instead of
the newly stored value.  By rewriting "sdl 0" "ldl 0" as "dup 8" "sdl
0", the newly added rule works around the bug, but only when the ldl
is immediately after the sdl.

This rule improves code that uses double-precision floating point.
The output of printf("%f", 6.0) in C changes from all zero digits to
"6000000" but still doesn't print the decimal point.  The result of
atof("-123.456") becomes correct.  In startrek, I can now move the
Enterprise, but I still can't fire phasers without crashing the game.

We already have a rule for stl lol $1==$2.  We had two copies of the
rule, so I am deleting the second copy.

7 years agoRewrite fef 8 in powerpc assembly.
George Koehler [Thu, 29 Sep 2016 19:52:54 +0000 (15:52 -0400)]
Rewrite fef 8 in powerpc assembly.

In EM, fef splits a float into exponent and fraction.  The old C code,
given an infinite float, got stuck in an infinite loop.  The new
assembly code doesn't loop; it extracts the IEEE exponent.

7 years agoFor "pat ass", move fake stack to real stack before adjusting SP.
George Koehler [Wed, 28 Sep 2016 04:13:35 +0000 (00:13 -0400)]
For "pat ass", move fake stack to real stack before adjusting SP.

This fixes code that tried to "addi SP, SP, 4" to drop a value that
was in a register, not on the real stack.

Add a rule to optimize "asp 4" (which becomes "loc 4" "ass") when
the value being dropped is already in a GPR.

7 years agoRemove the "invalid" stacking rule.
George Koehler [Tue, 27 Sep 2016 20:46:11 +0000 (16:46 -0400)]
Remove the "invalid" stacking rule.

When ncg fell back on this rule, it did emit the string "invalid" in
the assembly code and caused a syntax error in the assembler.

Adjust the stacking rules so we can stack LOCAL, CONST, and LABEL
without falling back on the "invalid" rule, and so we can stack them
when we have no free register except the scratch register.

8 years agoMultiple tweaks to plat/linuxppc/descr
George Koehler [Wed, 21 Sep 2016 20:26:30 +0000 (16:26 -0400)]
Multiple tweaks to plat/linuxppc/descr

Don't define __POWERPC.  I don't know any other compiler that defines
__POWERPC and don't want to invent a new macro.  Apple's gcc 4.0.1
from Xcode 2.5 defines __ppc__, _ARCH_PPC, __POWERPC__.  Debian's gcc
4.9.2-10 defines _ARCH_PPC, __PPC__, __powerpc__, __PPC, __powerpc,
PPC, powerpc.

Move the base vm address from 0x80000000 down to 0x10000000, as this
is where Debian loads /bin/true.  This is still higher than the base
addresses for linux386 and linux68k.

Sync led's arguments with linux386.

8 years agoMerge pull request #5 from kernigh/fix-isatty
David Given [Wed, 21 Sep 2016 17:47:00 +0000 (19:47 +0200)]
Merge pull request #5 from kernigh/fix-isatty

Implement isatty() for Linux.

8 years agoImplement isatty() for Linux.
George Koehler [Wed, 21 Sep 2016 01:28:37 +0000 (21:28 -0400)]
Implement isatty() for Linux.

If it understands TIOCGETD, then it is a tty, else it isn't one.  This
seems to help Basic's input statement so I can see the prompt before
I enter my input.

8 years agoRename our pseudo-opcode 'la' to 'li32'.
George Koehler [Sun, 18 Sep 2016 21:03:23 +0000 (17:03 -0400)]
Rename our pseudo-opcode 'la' to 'li32'.

GNU as has "la %r4,8(%r3)" as an alias for "addi %r4,%r3,8", meaning
to load the address of the thing at 8(%r3).  Our 'la', now 'li32',
makes an addis/ori pair to load an immediate 32-bit value.  For
example, "li32 r4,23456789" loads a big number.

8 years agoEnable the Hall check again, and get powerpc to pass it.
George Koehler [Sun, 18 Sep 2016 19:08:55 +0000 (15:08 -0400)]
Enable the Hall check again, and get powerpc to pass it.

Upon enabling the check, mach/powerpc/ncg/table fails to build as ncgg
gives many errors of "Previous rule impossible on empty stack".  David
Given reported this problem in 2013:
  https://sourceforge.net/p/tack/mailman/message/30814694/

Commit c93cb69 commented out the error in util/ncgg/cgg.y to disable
the Hall check.  This commit enables it again.  In ncgg, the Hall
check is checking that a rule is possible with an empty fake stack.
It would be possible if ncg can coerce the values from the real stack
to the fake stack.  The powerpc table defined coercions from STACK to
{FS, %a} and {FD, %a}, but the Hall check didn't understand the
coercions and rejected each rule "with FS" or "with FD".

This commit removes the FS and FD tokens and adds a new group of FSREG
registers for single-precision floats, while keeping FREG registers
for double precision.  The registers overlap, with each FSREG
containing one FREG, because it is the same register in PowerPC
hardware.  FS tokens become FSREG registers and FD tokens become FREG
registers.  The Hall check understands the coercions from STACK to
FSREG and FREG.  The idea to define separate but overlapping registers
comes from the PDP-11 table (mach/pdp/ncg/table).

This commit also removes F0 from the FREG group.  This is my attempt
to keep F0 off the fake stack, because one of the stacking rules uses
F0 as a scratch register (FSCRATCH).

8 years agoIn ncgg, increase MAXREGS from 80 to 200.
George Koehler [Sun, 18 Sep 2016 18:37:42 +0000 (14:37 -0400)]
In ncgg, increase MAXREGS from 80 to 200.

I need this to add more registers to powerpc.

8 years agoFix hilo.p for big-endian platforms.
George Koehler [Sun, 18 Sep 2016 04:07:30 +0000 (00:07 -0400)]
Fix hilo.p for big-endian platforms.

Unless it is packed, a Pascal char is a C int.  Using C types, hilo.p
passed an int *buf to uread(), which expected a char *buf.  Then
uread() wrote the char on the end of the int.  This worked on
little-endian platforms.  This failed on big-endian platforms, as
writing the value to the big end of an int multiplied it by 16777216.

The fix is to use a packed array [0..0] of char in Pascal.  I also
change 'string' to a packed array, though this is not a necessary part
of the fix.

8 years agoAdd the missing .lar4 and .sar4 for powerpc.
George Koehler [Sun, 18 Sep 2016 03:55:55 +0000 (23:55 -0400)]
Add the missing .lar4 and .sar4 for powerpc.

Inspired by the sparc code (mach/sparc/libem/lar.s).  My powerpc code
might still have bugs, but it's enough for examples/hilo.mod to work.

May need to 'make clean' or touch a build.lua file, so ackbuilder can
notice the new lar4.s and sar4.s files and build them.

8 years agoMerge branch 'default' into kernigh-linuxppc
George Koehler [Sat, 17 Sep 2016 22:15:54 +0000 (18:15 -0400)]
Merge branch 'default' into kernigh-linuxppc

8 years agoEliminate the RELOH2 relocation, as it never worked --- the address would be dtrg-experimental-powerpc
David Given [Sat, 17 Sep 2016 10:43:15 +0000 (12:43 +0200)]
Eliminate the RELOH2 relocation, as it never worked --- the address would be
calculated incorrectly because of overflow errors.

Replace it with an extended RELOPPC relocation which understands addis/ori
pairs; add an la pseudoop to the assembler which generates these and the
appropriate relocation. Make good.

--HG--
branch : dtrg-experimental-powerpc-branch

8 years agoMostly add support for the experimental and largely broken linuxppc platform.
David Given [Thu, 15 Sep 2016 21:12:03 +0000 (23:12 +0200)]
Mostly add support for the experimental and largely broken linuxppc platform.
(Doesn't quite build.)

--HG--
branch : dtrg-experimental-powerpc-branch

8 years agoMerge from default.
David Given [Thu, 15 Sep 2016 20:59:01 +0000 (22:59 +0200)]
Merge from default.

--HG--
branch : dtrg-experimental-powerpc-branch

8 years agoMerge pull request #3 from kernigh/ego-fix iburg
David Given [Sat, 10 Sep 2016 09:25:21 +0000 (11:25 +0200)]
Merge pull request #3 from kernigh/ego-fix

Fix bugs with memory allocation in ego.

8 years agoFix bugs with memory allocation in ego.
George Koehler [Sat, 10 Sep 2016 03:37:43 +0000 (23:37 -0400)]
Fix bugs with memory allocation in ego.

cf/cf_loop.c and share/put.c tried to read the next pointer in an
element of a linked list after freeing the element.  ud/ud_copy.c
tried to read beyond the end of the _defs_ array: it only has
_nrexpldefs_ elements, not _nrdefs_ elements.

These bugs caused core dumps on OpenBSD.  Its malloc() put _defs_ near
the end of a page, so reading beyond the end crossed into an unmapped
page.  Its free() wrote junk bytes and changed the next pointer to
0xdfdfdfdfdfdfdfdf.

8 years agoAdd unlink system call. buildsystem
David Given [Sun, 4 Sep 2016 17:23:02 +0000 (19:23 +0200)]
Add unlink system call.

8 years agoCleanup some stray files.
David Given [Sat, 3 Sep 2016 17:22:38 +0000 (19:22 +0200)]
Cleanup some stray files.

8 years agoAdd modeline, fix formatting.
David Given [Sat, 3 Sep 2016 17:17:09 +0000 (19:17 +0200)]
Add modeline, fix formatting.

8 years agoUpdated.
David Given [Sat, 3 Sep 2016 17:07:12 +0000 (19:07 +0200)]
Updated.

8 years agoMore documentation.
David Given [Sat, 3 Sep 2016 17:01:47 +0000 (19:01 +0200)]
More documentation.

8 years agoFirst half of the ackbuilder documentation.
David Given [Fri, 2 Sep 2016 23:04:16 +0000 (01:04 +0200)]
First half of the ackbuilder documentation.

8 years agoMakefiles are now slightly less inaccurate. Does actually seem to do sensible
David Given [Fri, 2 Sep 2016 22:20:11 +0000 (00:20 +0200)]
Makefiles are now slightly less inaccurate. Does actually seem to do sensible
incremental builds now. I loathe make.

8 years agoAdd an install target.
David Given [Fri, 2 Sep 2016 21:03:57 +0000 (23:03 +0200)]
Add an install target.

8 years agoDistributions are a pain --- let's not bother any more. Instead, we just tag
David Given [Fri, 2 Sep 2016 21:00:38 +0000 (23:00 +0200)]
Distributions are a pain --- let's not bother any more. Instead, we just tag
the repository and download a complete snapshot, old and ancient stuff and all.

8 years agoRemove the old make-based build system, plus some big chunks of horribly
David Given [Fri, 2 Sep 2016 20:17:51 +0000 (22:17 +0200)]
Remove the old make-based build system, plus some big chunks of horribly
obsolete protomake build system.

8 years agoClean up the top level makefile.
David Given [Thu, 1 Sep 2016 21:36:39 +0000 (23:36 +0200)]
Clean up the top level makefile.

8 years agoFix a fun bug where, every now again, ego would get its temporary files mangled
David Given [Mon, 22 Aug 2016 21:53:01 +0000 (23:53 +0200)]
Fix a fun bug where, every now again, ego would get its temporary files mangled
and generate invalid calls to the optimisers.

Previously ego would generate a temporary file template that looked like
/tmp/ego.A.BB.XXXXXX, call mktemp() on it to randomise the XXXXXX, and then
replace A and BB with data.

However, it used strrchr to find the A and B. Which would fine, except when
mktemp produced an A or a B in the randomised part...

This code was written on 4 March 1991. I was 16.

8 years agoForgot to check a file in.
David Given [Mon, 22 Aug 2016 20:45:32 +0000 (22:45 +0200)]
Forgot to check a file in.

8 years agoego now builds and is used.
David Given [Sun, 21 Aug 2016 20:01:19 +0000 (22:01 +0200)]
ego now builds and is used.

This needed lots of refactoring to ego --- not all platforms have ego descr
files, and ego will just crash if you invoke it without one. I think originally
it was never intended that these platforms would be used at -O2 or above.

Plats now only specify the ego descr file if they have one.

8 years agofilenamesof() an installable now returns all installed files, not just the ones
David Given [Sun, 21 Aug 2016 19:55:21 +0000 (21:55 +0200)]
filenamesof() an installable now returns all installed files, not just the ones
at the top level (necessary to make a lot of the dependency stuff work when
using tools which depend on installables).

8 years agoFix linking bug where em_decode would generate binary data instead of text.
David Given [Sun, 21 Aug 2016 18:27:52 +0000 (20:27 +0200)]
Fix linking bug where em_decode would generate binary data instead of text.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 18:08:05 +0000 (20:08 +0200)]
Run through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 17:53:14 +0000 (19:53 +0200)]
Run through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 17:46:19 +0000 (19:46 +0200)]
Run through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 17:38:54 +0000 (19:38 +0200)]
Run through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 17:38:02 +0000 (19:38 +0200)]
Run through clang-format.

8 years agoPush through clang-format.
David Given [Sun, 21 Aug 2016 17:34:54 +0000 (19:34 +0200)]
Push through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 16:51:36 +0000 (18:51 +0200)]
Run through clang-format.

8 years agoPush em_ego.c through clang-format before working on it.
David Given [Sun, 21 Aug 2016 16:45:25 +0000 (18:45 +0200)]
Push em_ego.c through clang-format before working on it.

8 years agoBuild the examples when doing a normal build; this exercises the compiler as a
David Given [Sat, 20 Aug 2016 12:05:24 +0000 (14:05 +0200)]
Build the examples when doing a normal build; this exercises the compiler as a
whole and is one step further towards a proper test suite.

8 years agoaal doesn't build the ranlib table if you don't set -DAAL.
David Given [Sat, 20 Aug 2016 12:04:46 +0000 (14:04 +0200)]
aal doesn't build the ranlib table if you don't set -DAAL.

8 years agoAdd files which got missed in the initial build pass.
David Given [Sat, 20 Aug 2016 12:04:17 +0000 (14:04 +0200)]
Add files which got missed in the initial build pass.

8 years agoliblinux is no more; its files are now in libsys.
David Given [Sat, 20 Aug 2016 12:03:49 +0000 (14:03 +0200)]
liblinux is no more; its files are now in libsys.

8 years agorpi has a time() function; don't try to call gettimeofday().
David Given [Sat, 20 Aug 2016 12:03:19 +0000 (14:03 +0200)]
rpi has a time() function; don't try to call gettimeofday().

8 years agoPrint hex numbers actually properly this time.
David Given [Sat, 20 Aug 2016 12:02:12 +0000 (14:02 +0200)]
Print hex numbers actually properly this time.

8 years agoRaspberry Pi backend now builds.
David Given [Sat, 20 Aug 2016 10:40:13 +0000 (12:40 +0200)]
Raspberry Pi backend now builds.

8 years agoWildcards are allowed to match no files now.
David Given [Sat, 20 Aug 2016 10:40:00 +0000 (12:40 +0200)]
Wildcards are allowed to match no files now.

8 years agoFilename variables now get passed into ackbuilder on the command line.
David Given [Sun, 14 Aug 2016 22:47:08 +0000 (00:47 +0200)]
Filename variables now get passed into ackbuilder on the command line.

8 years agoFix dependency error (only shows up with make, not ninja. Odd).
David Given [Sun, 14 Aug 2016 22:46:43 +0000 (00:46 +0200)]
Fix dependency error (only shows up with make, not ninja. Odd).

8 years agoFix compiler warnings and 64bitisms.
David Given [Sun, 14 Aug 2016 21:01:12 +0000 (23:01 +0200)]
Fix compiler warnings and 64bitisms.

8 years agoEr, oops; the ninja build system is in a package called ninja-build.
David Given [Sun, 14 Aug 2016 20:55:10 +0000 (22:55 +0200)]
Er, oops; the ninja build system is in a package called ninja-build.

8 years agoBackport to Lua 5.1 (because 5.2 on Travis doesn't have luaposix...).
David Given [Sun, 14 Aug 2016 20:52:57 +0000 (22:52 +0200)]
Backport to Lua 5.1 (because 5.2 on Travis doesn't have luaposix...).

8 years agoAdd another Travis library.
David Given [Sun, 14 Aug 2016 20:41:54 +0000 (22:41 +0200)]
Add another Travis library.

8 years agoUpdate Travis metadata.
David Given [Sun, 14 Aug 2016 12:44:00 +0000 (14:44 +0200)]
Update Travis metadata.

8 years agoLED builds now.
David Given [Sun, 14 Aug 2016 12:40:01 +0000 (14:40 +0200)]
LED builds now.

8 years agoMove the em_code headers into the em_code module.
David Given [Sun, 14 Aug 2016 12:17:35 +0000 (14:17 +0200)]
Move the em_code headers into the em_code module.

8 years agoMove util/data into modules/src/em_data, for consistency with the other
David Given [Sun, 14 Aug 2016 12:09:38 +0000 (14:09 +0200)]
Move util/data into modules/src/em_data, for consistency with the other
modules.

8 years agolinux68k builds now.
David Given [Sun, 14 Aug 2016 09:34:18 +0000 (11:34 +0200)]
linux68k builds now.

8 years agoinstallables need to depend on their source files...
David Given [Sun, 14 Aug 2016 09:25:47 +0000 (11:25 +0200)]
installables need to depend on their source files...

8 years agoTurns out I wasn't building the syscall libraries. Do so.
David Given [Sun, 14 Aug 2016 09:23:57 +0000 (11:23 +0200)]
Turns out I wasn't building the syscall libraries. Do so.

8 years agoWasn't exporting the plat headers; refactor to make this a little cleaner.
David Given [Sun, 14 Aug 2016 09:01:36 +0000 (11:01 +0200)]
Wasn't exporting the plat headers; refactor to make this a little cleaner.

8 years agolinux386 builds. Also, forgot to turn back on the language runtimes.
David Given [Sun, 14 Aug 2016 08:37:55 +0000 (10:37 +0200)]
linux386 builds. Also, forgot to turn back on the language runtimes.

8 years agoBiggish refactor to break cycles; my build rules were full of them. cpm builds,
David Given [Sat, 13 Aug 2016 23:39:40 +0000 (01:39 +0200)]
Biggish refactor to break cycles; my build rules were full of them. cpm builds,
which requires top and topgen.

8 years agoAdd cycle detection, because it was ruining my day. Allow targets to be stored
David Given [Sat, 13 Aug 2016 23:38:36 +0000 (01:38 +0200)]
Add cycle detection, because it was ruining my day. Allow targets to be stored
in a file called build-<target>.lua to allow better dividing up of build rules
(to break cycles).

8 years agoPascal runtime library now builds.
David Given [Sat, 13 Aug 2016 11:07:19 +0000 (13:07 +0200)]
Pascal runtime library now builds.

8 years agoPascal compiler builds.
David Given [Sat, 13 Aug 2016 11:03:06 +0000 (13:03 +0200)]
Pascal compiler builds.

8 years agoModula-2 runtime library now builds.
David Given [Sat, 13 Aug 2016 10:43:44 +0000 (12:43 +0200)]
Modula-2 runtime library now builds.

8 years agoFixed a small bug where two line number directives next to each other wouldn't
David Given [Sat, 13 Aug 2016 10:21:16 +0000 (12:21 +0200)]
Fixed a small bug where two line number directives next to each other wouldn't
be parsed properly (the second one would be treated as Modula-2 syntax).

8 years agoThe Modula-2 compiler now builds.
David Given [Fri, 12 Aug 2016 22:02:21 +0000 (00:02 +0200)]
The Modula-2 compiler now builds.

8 years agoThe Basic runtime builds now.
David Given [Thu, 11 Aug 2016 22:24:40 +0000 (00:24 +0200)]
The Basic runtime builds now.

8 years agoThe Basic compiler works now.
David Given [Thu, 11 Aug 2016 22:19:51 +0000 (00:19 +0200)]
The Basic compiler works now.

8 years agoreplace() gets confused if you give it a singleton list as its parameter.
David Given [Thu, 11 Aug 2016 22:19:30 +0000 (00:19 +0200)]
replace() gets confused if you give it a singleton list as its parameter.

8 years agoReplaced the funky and hard-to-compile ACK malloc with a much smaller
David Given [Wed, 10 Aug 2016 22:30:32 +0000 (00:30 +0200)]
Replaced the funky and hard-to-compile ACK malloc with a much smaller
and simpler one stolen from K&R. libc builds now.