Alan Cox [Tue, 31 Oct 2017 12:26:54 +0000 (12:26 +0000)]
ld: teach new tags, and make it reject them also tidy segment constraints
Alan Cox [Tue, 31 Oct 2017 12:26:34 +0000 (12:26 +0000)]
obj: update with endian and word tags and some oddments
Alan Cox [Mon, 30 Oct 2017 23:44:05 +0000 (23:44 +0000)]
as: lots of stuff here
- Rework types for cpu / flags
- Add 6502 types
- Teach ld that there can be a ZP segment
- Restructure the assembler to put arch specific code in less files
- Fix various minor bugs (segment checking etc)
- Fix a bug where a_sym was not reliably set to NULL for constants
- Add initial test 6502 support to prove can re-target easily
Alan Cox [Mon, 30 Oct 2017 17:42:47 +0000 (17:42 +0000)]
asz80: Z180 initial support, fix range checking, correct IX disp non abs
In particular
out (300),a errors
ld (ix+300),a errors
ld (ix+FOO),a generates a relocation entry for FOO
That means you can
FOO .equ 21
ld (ix+FOO),a
or even define FOO as an external
Alan Cox [Mon, 30 Oct 2017 17:42:25 +0000 (17:42 +0000)]
ld: don't break if the symbol unused bytes are nn zero
Alan Cox [Mon, 30 Oct 2017 17:40:58 +0000 (17:40 +0000)]
ld: add the hash function
Alan Cox [Mon, 30 Oct 2017 17:40:38 +0000 (17:40 +0000)]
obj: make Z80 an 8080 variant as this makes more sense
Alan Cox [Sun, 29 Oct 2017 18:28:23 +0000 (18:28 +0000)]
SmallC: Fix initialization of static/global pointers
It's trivial to add the code generation for this and it's an annoying lack in
the compiler.
Alan Cox [Sun, 29 Oct 2017 18:07:14 +0000 (18:07 +0000)]
smallc: tidy up a bit, align Z80 with assembler and fix bogus pop bc bug
Alan Cox [Sun, 29 Oct 2017 17:36:50 +0000 (17:36 +0000)]
ld: tidy up pass
Alan Cox [Sun, 29 Oct 2017 17:31:18 +0000 (17:31 +0000)]
ld: furthr polishing
At this point it appears to be functioal
Alan Cox [Sun, 29 Oct 2017 16:37:08 +0000 (16:37 +0000)]
Merge branch 'master' of https://github.com/EtchedPixels/FUZIX
Alan Cox [Sun, 29 Oct 2017 16:36:27 +0000 (16:36 +0000)]
ld: Save current status
Libraries work
Still doing some final debug on symbol resolutions
Unbreak handling of internal symbols
Alan Cox [Sun, 29 Oct 2017 16:35:51 +0000 (16:35 +0000)]
obj.h: add 'ANY' segment definition
Alan Cox [Sun, 29 Oct 2017 16:35:38 +0000 (16:35 +0000)]
nm: understand the fact a U symbol may be segment constrained
Alan Cox [Sun, 29 Oct 2017 16:34:19 +0000 (16:34 +0000)]
as: fix handling of unknown symbols in subtraction
Propogate segment requirements to object module for linker to fault
Alan Cox [Sun, 29 Oct 2017 16:33:43 +0000 (16:33 +0000)]
as: fix blkb/defs
We make it twice the size and get very confused as a result
EtchedPixels [Sun, 29 Oct 2017 13:41:52 +0000 (13:41 +0000)]
Merge pull request #540 from beretta42/mem
bank16k: report correct memory used
Brett Gordon [Sun, 29 Oct 2017 08:24:56 +0000 (04:24 -0400)]
bank16k: report correct memory used
pfptr goes down as memory is allocated. return it's compliement instead.
Alan Cox [Sat, 28 Oct 2017 23:17:34 +0000 (00:17 +0100)]
ld: closer but not yet entirely correct
Alan Cox [Sat, 28 Oct 2017 22:25:13 +0000 (23:25 +0100)]
ld: further updates
At this point we can do some minimal linking and write out correctly looking
objects.
Alan Cox [Sat, 28 Oct 2017 22:24:59 +0000 (23:24 +0100)]
asz80: fixes to output format logic
Alan Cox [Sat, 28 Oct 2017 22:24:46 +0000 (23:24 +0100)]
obj: format tweaking
Alan Cox [Sat, 28 Oct 2017 18:13:10 +0000 (19:13 +0100)]
README: updates
- We now have a useful gcc 8086, in fact at many things it rocks.
- SDCC is ever improving
Alan Cox [Sat, 28 Oct 2017 18:03:42 +0000 (19:03 +0100)]
ld: Fix some stuff by inspection and fold in basic logic for library modules
Alan Cox [Sat, 28 Oct 2017 17:41:50 +0000 (18:41 +0100)]
ld: first parts of a linker
Far from complete!
Alan Cox [Sat, 28 Oct 2017 17:41:19 +0000 (18:41 +0100)]
z80as: change object file format to fixed sized symbol records
This makes life a lot easier for the other tools
Alan Cox [Sat, 28 Oct 2017 16:30:41 +0000 (17:30 +0100)]
asz80: always write the debug symbol base
It avoids special cases and means the linker can size the table itself.
Alan Cox [Sat, 28 Oct 2017 15:57:35 +0000 (16:57 +0100)]
asz80: finish conversion
This now behaves rather more like we need. It lacks includes and some other
nice to have bits but is also small enough to run on a Z80 box sanely. Trimming
out stdio and soem other slack could be done if needed but is a fair bit of
work.
Also add an nm mostly at this point to check the output is valid.
Now all we need is to tweak the smallc output syntax to match, and a linker...
Alan Cox [Fri, 27 Oct 2017 21:50:14 +0000 (22:50 +0100)]
asz80: write symbols out
Also fix the .export handling and some oddments related to it.
We now should be writing out correct relocations and symbol tables. The one
thing we have yet to do is to properly number the external symbols so that
we can output them in that order and tie it nicely to the relocations so that
ld doesn't have to work overtime.
Alan Cox [Thu, 26 Oct 2017 20:04:17 +0000 (21:04 +0100)]
asz80: some quick changes over tea
We now write out parts of something resembling a relocatable object file. We
don't yet write out the symbols nor do we write out the longer relocations
for symbol references rather than segment offsets.
Alan Cox [Thu, 26 Oct 2017 20:02:49 +0000 (21:02 +0100)]
Merge branch 'master' of https://github.com/EtchedPixels/FUZIX
EtchedPixels [Thu, 26 Oct 2017 20:02:36 +0000 (21:02 +0100)]
Merge pull request #536 from beretta42/make2
fsck: fix some more bugs
EtchedPixels [Thu, 26 Oct 2017 20:01:12 +0000 (21:01 +0100)]
Merge pull request #537 from beretta42/up
Tidy 'make'
EtchedPixels [Thu, 26 Oct 2017 20:00:43 +0000 (21:00 +0100)]
Merge pull request #538 from beretta42/halt
util: link 'halt' to 'reboot' on fs
Brett Gordon [Thu, 26 Oct 2017 18:17:00 +0000 (14:17 -0400)]
util: link 'halt' to 'reboot' on fs
Brett Gordon [Thu, 26 Oct 2017 17:33:27 +0000 (13:33 -0400)]
fsck: fix another wrap bug, and continuing is not an error.
Brett Gordon [Thu, 26 Oct 2017 17:06:35 +0000 (13:06 -0400)]
standalone fsck: fix always returns 1; parenths to fix wrapping issue
Brett Gordon [Thu, 26 Oct 2017 16:23:53 +0000 (12:23 -0400)]
MWC: add 'make' to filesystem maker script
Brett Gordon [Thu, 26 Oct 2017 16:03:41 +0000 (12:03 -0400)]
make: fix compiler complaint
Alan Cox [Thu, 26 Oct 2017 15:21:23 +0000 (16:21 +0100)]
fsck: minor fixes
Alan Cox [Wed, 25 Oct 2017 19:50:59 +0000 (20:50 +0100)]
Makefile: hook in z80 assembler
Alan Cox [Wed, 25 Oct 2017 19:04:57 +0000 (20:04 +0100)]
make: make
Add the older MwC make as it fits a small machine nicely
Alan Cox [Wed, 25 Oct 2017 19:02:51 +0000 (20:02 +0100)]
as: Z80 assembler from Coherent
This one doesn't do relocations or external symbol resolution so will need a
bit of tweaking to generate object files not binaries. It is however very
tidy and extremely small.
Alan Cox [Wed, 25 Oct 2017 14:57:17 +0000 (15:57 +0100)]
cron: add cron
Alan Cox [Tue, 24 Oct 2017 23:38:02 +0000 (00:38 +0100)]
start: tiny optimization
Alan Cox [Tue, 24 Oct 2017 23:37:31 +0000 (00:37 +0100)]
fsck: Fix the wrap bug on standalone fsck
Alan Cox [Tue, 24 Oct 2017 23:37:21 +0000 (00:37 +0100)]
tty: Fix ^D echo bug
Alan Cox [Tue, 24 Oct 2017 23:36:46 +0000 (00:36 +0100)]
fsck: fix wrap on full sized fs
Noticed by Brett
Alan Cox [Tue, 24 Oct 2017 23:36:16 +0000 (00:36 +0100)]
games add hangman and quiz
Alan Cox [Tue, 24 Oct 2017 23:03:23 +0000 (00:03 +0100)]
v7yacc: Add the V7 yacc as a cross building tool
Alan Cox [Tue, 24 Oct 2017 18:26:46 +0000 (19:26 +0100)]
bogomips: because ...
Z80 4MHz 0.2 bogomips
FPGA Z80 128MHz 10.55 bogomips - beats an Intel 386 ;)
Alan Cox [Tue, 24 Oct 2017 18:26:23 +0000 (19:26 +0100)]
clock: fix scaling error
Alan Cox [Mon, 23 Oct 2017 14:50:01 +0000 (15:50 +0100)]
free: add a Linux like "free" command to see swap and memory usage
Alan Cox [Mon, 23 Oct 2017 14:49:45 +0000 (15:49 +0100)]
init: bug fixes and fussier about leaving files open
EtchedPixels [Mon, 23 Oct 2017 14:26:34 +0000 (15:26 +0100)]
Merge pull request #533 from beretta42/fix
kernel: syscall_16: put header in userspace too.
Brett Gordon [Mon, 23 Oct 2017 14:05:29 +0000 (10:05 -0400)]
kernel: syscall_16: put header in userspace too.
Alan Cox [Mon, 23 Oct 2017 00:02:14 +0000 (01:02 +0100)]
mount/umount: Fixups for the other cases I missed
With this I seem to get the right behaviour
Alan Cox [Sun, 22 Oct 2017 22:31:26 +0000 (23:31 +0100)]
mount: add support for fsck
- Dirty/clean status handling
- Write back superblocks when we go clean but not if we are clean (or bad)
- Add full checks so remount ro works for all cases
This allows you to fsck -a `prtroot` in /etc/rc to recover the system if
needed. Before rebooting you need to remount filesystems r/o or unmount them.
This last bit wants wiring into reboot so it does a runlevel change to init
unless -f is used. We can then umount everything nicely (by adding umount -a)
and remount the rootfs r/o as well as doing a killall etc when we shutdown.
Alan Cox [Sun, 22 Oct 2017 22:31:13 +0000 (23:31 +0100)]
syscall_exec16: fix crash with small binaries, reduce code footprint
Alan Cox [Sun, 22 Oct 2017 22:30:44 +0000 (23:30 +0100)]
Standalone: move to the new fsck behaviour
Alan Cox [Sun, 22 Oct 2017 22:28:31 +0000 (23:28 +0100)]
fsck: get the fsck tool working
This (with the needed kernel changes) seems to give us the correct behaviour
including handling recovering the live root file system.
If you boot with 'r' as an option or a dirty rootfs you'll now get a r/o
mount and you can fsck /dev/whatever to check it. If it's bad you'll then
get to fix it and it'll reboot.
Alan Cox [Sun, 22 Oct 2017 21:06:44 +0000 (22:06 +0100)]
reboot: add user side support for reboot -f
Alan Cox [Sun, 22 Oct 2017 18:55:26 +0000 (19:55 +0100)]
kernel: we don't use the void *'s back from the blkbuf ops so lose them
Alan Cox [Sun, 22 Oct 2017 18:55:07 +0000 (19:55 +0100)]
ExternalBuffers: document how the model works
Alan Cox [Sun, 22 Oct 2017 18:45:33 +0000 (19:45 +0100)]
test: fix silly error when copying fixes over
Alan Cox [Sun, 22 Oct 2017 18:44:13 +0000 (19:44 +0100)]
fuzix-util: add remount to package list
Alan Cox [Sun, 22 Oct 2017 18:40:23 +0000 (19:40 +0100)]
umount/remount: tidy up umount and add a remount
Alan Cox [Sun, 22 Oct 2017 18:33:46 +0000 (19:33 +0100)]
umount: fix includes
This worked by luck before. Now add the correct include file
Alan Cox [Sun, 22 Oct 2017 18:32:41 +0000 (19:32 +0100)]
fsck: Rework standalone fsck to use as native fsck
- Use bitmaps not bytemaps
- Support yes() properly
Not heavily tested yet!
Alan Cox [Sun, 22 Oct 2017 17:27:18 +0000 (18:27 +0100)]
mm: tidy up some odds and ends with the buffer changes
We actually need something different to what was guessed at, so change the
prototypes and define the functions differently
Alan Cox [Sun, 22 Oct 2017 17:26:46 +0000 (18:26 +0100)]
devsys: error rather than 0 on failed uput in devsys
EtchedPixels [Sun, 22 Oct 2017 17:20:40 +0000 (18:20 +0100)]
Merge pull request #530 from beretta42/fix2
devsys: read should return no. of bytes
Brett Gordon [Sun, 22 Oct 2017 15:44:19 +0000 (11:44 -0400)]
/dev/proc: return number of bytes read.
uput only returns -1 on validation fail, or 0 ok. this made 'ps' sad.
/dev/kmem reading might be broken too...
Brett Gordon [Sun, 22 Oct 2017 15:06:49 +0000 (11:06 -0400)]
Kernel: quick pointer fix.
Alan Cox [Sun, 22 Oct 2017 14:14:23 +0000 (15:14 +0100)]
umount: add new syscall wrapper for umount
Alan Cox [Sun, 22 Oct 2017 14:13:13 +0000 (15:13 +0100)]
remount: add new syscall interface
Alan Cox [Sat, 21 Oct 2017 23:04:02 +0000 (00:04 +0100)]
kernel: rework buffer handling and superblocks
Be scared.. be very scared
Back up your disks before testing this changeset
The basic idea of this set of patches is to put in most of the framework for
keeping the buffer cache outside of the main kernel mapping. Instead we
introduce some functions to copy between kernel/buffer and user/buffer. As
most traffic goes directly between user/buffer this doesn't hurt us. These
patches don't implement the bits needed for an external buffer cache but they
do implement the framework required to add it.
To minimize impact on some bits like directory scanning we also introduce a
routine that with separate buffer cache address space wil make a temporary copy
of a small area, but on machines with the buffer cache in the normal place
resolves as essentially the same assembler as before (6502 suffers a tiny bit
I suspect).
In order to do this we also have to rework the mount handling. Superblocks are
now copied to/from buffers on mount and sync rather than pinning a buffer. The
superblock buffers mean that for a small system you probably want to drop the
buffer cache size by one block (the one previously pinned for the superblock)
in favour of the superblock table entries you'll now get (which are about 256
bytes each).
Execve is also tided up. We had a set of custom fastpath code for loading a
binary. Only it turns out that if we use readi the existing O_DIRECT fastpath
will do the work for us, which means execve itself can become oblivious to
where the buffer cache hides. This will need work for 8086 when split I/D hits
but it's quite manageable.
While I was at it I also realised that the problem with trying to add remount
support to mount is that remounting despite what the name implies is actually
a variant of umount. You do the same lookups to find the same existing
superblock, iterate the inode list but then swizzle some flags instead of
checking it is non-busy and firing it into hyperspace.
This patch changes umount(x) into _umount(x, flags) where flags include
MS_REMOUNT, MS_RDONLY and MS_NOSUID (not yet properly supported). This provides
enough functionality that you can now probably safely boot read only, fsck the
root fs (except I need to port the native fsck over and squash memory usage)
and the mount it r/w. You *cannot* fix the root fs and remount it without a
reboot. That involves jumping through far too many hoops. I think this is
sufficient as it'll allow the default initscripts to fsck, check and either
reboot or go read/write so we have proper fs recovery (whoopeee)
Programs using umount (all one if it) will need recompiling.
Why do all this
1. It lets you push several KB out of kernel space, which is valuable space
you can then turn into code, inodes (much needed) or processes.
2. Some platforms need the buffers themselves aligned and on boundaries. The
existing model doesn't handle this. For example the PC needs them so one does
not cross a DMA boundary.
At the moment we have systems with 512K+ of RAM that simply can't run with an
appropriate amount of buffering and inodes. Once 8086 is included we get into
situations where we might have 4MB of expanded memory and at that point we
can't hope to get the buffers needed into the 64K of data space, while we
can shove it elsewhere, and with expanded memory into a 64K expanded memory
bank along with some other oddments.
Once this support is finished we can shove both the tty buffers and the disk
buffers out of the way. On a 'big' configuration like a 286 PC we need something
like 30K for process/inode/file/buffer head/superblock data structures to match
the values 2BSD tuned to. That's without buffers ! The big hogs in the kernel
are then the inode structures and the process table entries. We might be able
to move a few bits of the process into its udata but neither it nor pushing
inodes out are easy problems to attack.
Alan Cox [Sat, 21 Oct 2017 23:01:59 +0000 (00:01 +0100)]
Library: Fix Z80 breakage from 6809 fixes
ifeq in Makefiles is subtle and quick to anger....
Also check z80 not sdcc.
Alan Cox [Sat, 21 Oct 2017 12:50:59 +0000 (13:50 +0100)]
emm: Add some notes
Alan Cox [Sat, 21 Oct 2017 12:50:28 +0000 (13:50 +0100)]
z80fixedbank: note a possible optimization
Alan Cox [Sat, 21 Oct 2017 12:50:06 +0000 (13:50 +0100)]
8086: sketch out tricks.S for this platform
Alan Cox [Sat, 21 Oct 2017 12:44:49 +0000 (13:44 +0100)]
kernel: TODO.md was getting tired
Alan Cox [Sat, 21 Oct 2017 12:44:15 +0000 (13:44 +0100)]
8086: add copy_fork helper
The banking code needs to own this because it owns the mapping sizes and
already needs the same copiers to move pages around.
Alan Cox [Sat, 21 Oct 2017 11:43:53 +0000 (12:43 +0100)]
Merge branch 'master' of https://github.com/EtchedPixels/FUZIX
EtchedPixels [Fri, 20 Oct 2017 14:18:15 +0000 (15:18 +0100)]
Merge pull request #528 from beretta42/make2
coco3: make different coco3 platforms
EtchedPixels [Fri, 20 Oct 2017 14:17:45 +0000 (15:17 +0100)]
Merge pull request #526 from beretta42/nodebug
fs: oops... reserve debugging in fs :)
Brett Gordon [Fri, 20 Oct 2017 00:40:45 +0000 (20:40 -0400)]
coco3: makefile doh!
Brett Gordon [Thu, 19 Oct 2017 19:38:03 +0000 (15:38 -0400)]
coco3: compile for different types of cocos
Brett Gordon [Thu, 19 Oct 2017 23:17:36 +0000 (19:17 -0400)]
fs: oops... reserve debugging in fs :)
Brett Gordon [Thu, 19 Oct 2017 23:16:40 +0000 (19:16 -0400)]
fs: oops :) undefine debuging on fs
Alan Cox [Thu, 19 Oct 2017 22:00:20 +0000 (23:00 +0100)]
crt0: use stosb not zero and mov
Z80 programmer escaped into x86
Alan Cox [Thu, 19 Oct 2017 21:59:41 +0000 (22:59 +0100)]
ibmpc: PC implementation of the fast page copy and clear
Alan Cox [Thu, 19 Oct 2017 21:59:03 +0000 (22:59 +0100)]
8086: add the page clear and copy logic
Fast 4K copy and clear routines for shuffling memory
Alan Cox [Thu, 19 Oct 2017 21:18:18 +0000 (22:18 +0100)]
mtx: forgot the final commit to fix the devtty build
Alan Cox [Thu, 19 Oct 2017 21:15:54 +0000 (22:15 +0100)]
z180: set USERCPU so new build rules work
Alan Cox [Thu, 19 Oct 2017 20:58:09 +0000 (21:58 +0100)]
bank16; fix silly typo
Alan Cox [Thu, 19 Oct 2017 20:09:10 +0000 (21:09 +0100)]
Merge branch 'master' of https://github.com/EtchedPixels/FUZIX
Alan Cox [Thu, 19 Oct 2017 20:08:57 +0000 (21:08 +0100)]
projects: longer term kernel projects for someone
Alan Cox [Thu, 19 Oct 2017 20:08:30 +0000 (21:08 +0100)]
tmpfree: missed TRS80