EtchedPixels [Thu, 22 Jan 2015 11:42:27 +0000 (11:42 +0000)]
Merge pull request #74 from willsowerbutts/idefix
Kernel: devide: Fix false-positive detection of drives
Will Sowerbutts [Wed, 21 Jan 2015 20:58:09 +0000 (20:58 +0000)]
Kernel: devide: Fix false-positive detection of drives
Alan Cox [Wed, 21 Jan 2015 20:27:42 +0000 (20:27 +0000)]
Merge branch 'master' of https://github.com/EtchedPixels/FUZIX
EtchedPixels [Wed, 21 Jan 2015 20:27:20 +0000 (20:27 +0000)]
Merge pull request #73 from willsowerbutts/fstool
Simple script to build a root filesystem, plus tiny patch to ucp.
Alan Cox [Wed, 21 Jan 2015 20:24:27 +0000 (20:24 +0000)]
atexit: clean up all the atexit code and fix the improper casts
Turns out atexit isn't a cc65 bug rather an interesting property of the
compiler.
cc65 requires the called function to unstack the arguments so that it can
fold together the argument popping and local recovery. This means that
calling a function declared as foo(void) cast as foo(int) doesn't work and
trashes your local variables.
A new to me and excitingly novel way of shooting yourself in the boot, but
perfectly valid compiler behaviour.
Will Sowerbutts [Wed, 21 Jan 2015 19:47:39 +0000 (19:47 +0000)]
Simple script to build a root filesystem, plus tiny patch to ucp.
EtchedPixels [Wed, 21 Jan 2015 14:33:37 +0000 (14:33 +0000)]
Merge pull request #72 from willsowerbutts/p112floppy
Kernel: p112 floppy disk driver and floppy disk boot support
Alan Cox [Wed, 21 Jan 2015 14:30:54 +0000 (14:30 +0000)]
tricks.s: remove stray debug
Will Sowerbutts [Wed, 21 Jan 2015 13:31:49 +0000 (13:31 +0000)]
Kernel: p112 floppy disk driver and floppy disk boot support
The driver for the SMC floppy disk controller is a straight port of the
driver from UZI-180. It uses neither DMA nor interrupts.
The p112 platform can now be booted from floppy disk. The current boot
sector is somewhat rudimentary and requires the floppy disk to be
dedicated to the kernel (it cannot also hold a Fuzix filesystem).
Alan Cox [Mon, 19 Jan 2015 00:50:50 +0000 (00:50 +0000)]
README: Update 6502 README
Alan Cox [Sun, 18 Jan 2015 23:37:36 +0000 (23:37 +0000)]
6502: C library workaround for cc65 bug
Alan Cox [Sun, 18 Jan 2015 16:41:31 +0000 (16:41 +0000)]
6502: now we have the runtime in common space, remove the extra copies
Alan Cox [Sun, 18 Jan 2015 16:37:28 +0000 (16:37 +0000)]
Makefile: introduce CODE3
We don't use CODE3 separately for anything but 6502 yet
Alan Cox [Sun, 18 Jan 2015 16:30:21 +0000 (16:30 +0000)]
6502: Move the C runtime into common
As its threaded code we really don't want to be bankswitching calls into the
runtime!
Alan Cox [Sat, 17 Jan 2015 20:51:53 +0000 (20:51 +0000)]
Makefile.6502: use our atoi() and set the target
If we don't set the target we end up with petscii paths not ascii ones in the
C library and that doesn't end well
Alan Cox [Sat, 17 Jan 2015 20:50:36 +0000 (20:50 +0000)]
tricks,6502: fix bugs in fork/switchin
We can now fork and switch between both processes happily. Some problems seem
to be left with exiting but unclear if those are kernel or init
Alan Cox [Sat, 17 Jan 2015 20:50:21 +0000 (20:50 +0000)]
tgl6502: remove more debug
Alan Cox [Sat, 17 Jan 2015 20:49:36 +0000 (20:49 +0000)]
lowlevel-6502: fix outstring etc
Alan Cox [Sat, 17 Jan 2015 15:36:59 +0000 (15:36 +0000)]
tgl6502: turn off some of our debugging bits
Alan Cox [Sat, 17 Jan 2015 15:33:17 +0000 (15:33 +0000)]
syscall_6502: generate correct varargs stubs
Syscalls are now working. Init gets as far as the login prompt then switches
back to the parent and traps into the monitor
Alan Cox [Sat, 17 Jan 2015 15:32:59 +0000 (15:32 +0000)]
syscall_name: open is varargs
Alan Cox [Sat, 17 Jan 2015 14:46:30 +0000 (14:46 +0000)]
6502: syscalls with no argument require nothing pushing
EtchedPixels [Sat, 17 Jan 2015 14:41:44 +0000 (14:41 +0000)]
Merge pull request #71 from willsowerbutts/z80monitor
Kernel: Simple monitor program for Z80 and Z180, useful for inspecting machine state.
Will Sowerbutts [Sat, 17 Jan 2015 12:15:24 +0000 (12:15 +0000)]
Kernel: Simple monitor program for Z80 and Z180, useful for inspecting
machine state.
Platform must provide an "inchar" routine which waits for a character on
the console and returns it in A.
This patch also implements the monitor on the p112 and n8vem-mark4
platforms.
Alan Cox [Sat, 17 Jan 2015 02:17:31 +0000 (02:17 +0000)]
tricks.s: tgl6502 fork fix - copy 7 banks not 8
Alan Cox [Sat, 17 Jan 2015 02:16:15 +0000 (02:16 +0000)]
tgl6502: more debugging but we can now execute fork() ok
Alan Cox [Sat, 17 Jan 2015 01:13:43 +0000 (01:13 +0000)]
tgl6502: snapshot of syscall work
We make syscalls now, but the arguments are mashed.
Alan Cox [Sat, 17 Jan 2015 00:50:06 +0000 (00:50 +0000)]
tgl6502/devrd: Remember to round the block offset off
Otherwise end end up copying crap around. With this applied /init is loaded
into memory correctly
Alan Cox [Fri, 16 Jan 2015 23:04:31 +0000 (23:04 +0000)]
usermem: clean up 6502 debug on ugets
Alan Cox [Fri, 16 Jan 2015 23:02:22 +0000 (23:02 +0000)]
tgl6502: Get the romdisc fixed and as far as entering userspace
Alan Cox [Fri, 16 Jan 2015 23:00:00 +0000 (23:00 +0000)]
start: the top of user memory we fake up depends on program base
Alan Cox [Fri, 16 Jan 2015 22:58:14 +0000 (22:58 +0000)]
usermem: Get the 6502 usermem working
Some hacks left over that want cleaning up, and it's also very slow the way
it is done, but this is a generic 'reference' approach so will do for now
Alan Cox [Fri, 16 Jan 2015 22:57:42 +0000 (22:57 +0000)]
ld65.cfg: define stubs for crt0.s to use
Alan Cox [Fri, 16 Jan 2015 22:57:20 +0000 (22:57 +0000)]
crt0.: we need to copy STUBS as well as COMMONMEM
Alan Cox [Fri, 16 Jan 2015 22:56:58 +0000 (22:56 +0000)]
6502: sei after we switched memory banks and set our flags up
Alan Cox [Fri, 16 Jan 2015 22:56:39 +0000 (22:56 +0000)]
6502: kernel.def was out of date - fix it
Alan Cox [Fri, 16 Jan 2015 20:48:10 +0000 (20:48 +0000)]
usermem-6502: use tmp2,ptr2 and document that ptr1/tmp1 are for the mappers
Still all disabled while we debug
Alan Cox [Fri, 16 Jan 2015 20:47:39 +0000 (20:47 +0000)]
tgl6502: correct comment in crt0
Alan Cox [Fri, 16 Jan 2015 20:46:06 +0000 (20:46 +0000)]
tgl6502: Store the reference commonmem ROM copy right at the top of memory
This plus discard etc can live anywhere really so stick them right up the top
so it's easier to see what our memory usage looks like
Alan Cox [Fri, 16 Jan 2015 20:45:32 +0000 (20:45 +0000)]
filesys: correct invalid ptr check
Alan Cox [Fri, 16 Jan 2015 20:45:15 +0000 (20:45 +0000)]
6502: add warning about ordering of stash_zp
Alan Cox [Fri, 16 Jan 2015 17:54:17 +0000 (17:54 +0000)]
usermem_6502: add uzero, uputc and uputw
Still need to do uget, uput and ugets
Alan Cox [Fri, 16 Jan 2015 17:37:34 +0000 (17:37 +0000)]
init: build ok with cc65
Alan Cox [Fri, 16 Jan 2015 17:36:53 +0000 (17:36 +0000)]
6502 lib: Small changes to get us to the point we can link init
Mostly we need strtol as the cc65 runtime one tries to use the wrong isfoo()
functions
Alan Cox [Fri, 16 Jan 2015 16:05:52 +0000 (16:05 +0000)]
syscall_6502: don't add exit to the Makefile twice
Alan Cox [Fri, 16 Jan 2015 16:04:57 +0000 (16:04 +0000)]
crt0_6502: clean up exit symbols
Alan Cox [Fri, 16 Jan 2015 16:03:36 +0000 (16:03 +0000)]
tools/syscall_6502: generate correct fastcall stacking also don't delete syscall.s on clean
Alan Cox [Fri, 16 Jan 2015 16:03:16 +0000 (16:03 +0000)]
crt0_6502: exit via return implies exit() not _exit()
Alan Cox [Fri, 16 Jan 2015 16:02:44 +0000 (16:02 +0000)]
crt0_6502: exit is handled differently to the classic cc65 runtime
Alan Cox [Fri, 16 Jan 2015 15:51:59 +0000 (15:51 +0000)]
6502: syscall return helper so we can set up errno correctly
Alan Cox [Fri, 16 Jan 2015 15:43:21 +0000 (15:43 +0000)]
crt0_6502: update to reflect proposed ABI
Alan Cox [Fri, 16 Jan 2015 15:42:59 +0000 (15:42 +0000)]
Makefile.6502: build the library with tools and syscalls
Alan Cox [Fri, 16 Jan 2015 15:41:24 +0000 (15:41 +0000)]
tools/syscall6502: corrections
This now generates some vaguely plausible looking code 8)
Alan Cox [Fri, 16 Jan 2015 15:40:29 +0000 (15:40 +0000)]
tgl6502: first cut at a sane syscall ABI
Alan Cox [Fri, 16 Jan 2015 15:40:03 +0000 (15:40 +0000)]
kernel: correct syscall_name header
Alan Cox [Fri, 16 Jan 2015 14:30:38 +0000 (14:30 +0000)]
TODO: remove fcc things already done
Alan Cox [Fri, 16 Jan 2015 13:36:58 +0000 (13:36 +0000)]
syscall_exec: handle R2L and L2R stacking compilers
Alan Cox [Fri, 16 Jan 2015 13:36:30 +0000 (13:36 +0000)]
6502: Usermode execution start up code
Alan Cox [Fri, 16 Jan 2015 13:18:19 +0000 (13:18 +0000)]
tgl6502: tool can now automatically merge a monitor
Alan Cox [Fri, 16 Jan 2015 13:12:40 +0000 (13:12 +0000)]
tgl6502: Work on execve, also jump to monitor on crashes
Alan Cox [Fri, 16 Jan 2015 01:19:43 +0000 (01:19 +0000)]
libc: includes for changes
Alan Cox [Fri, 16 Jan 2015 00:57:55 +0000 (00:57 +0000)]
libc: some more C locale only wrapping and glue
Just so we can build intl apps without hassle
Alan Cox [Fri, 16 Jan 2015 00:32:04 +0000 (00:32 +0000)]
libc: various minimalist locale stuff (C locale wrappers basically)
Alan Cox [Thu, 15 Jan 2015 23:46:51 +0000 (23:46 +0000)]
ioctl: note where tty ioctls live
Alan Cox [Thu, 15 Jan 2015 23:42:52 +0000 (23:42 +0000)]
sched_yield: A syscall a day 8)
Alan Cox [Thu, 15 Jan 2015 23:42:00 +0000 (23:42 +0000)]
6502: Further libc tidying
Alan Cox [Wed, 14 Jan 2015 00:38:23 +0000 (00:38 +0000)]
syscalls: add getpgrp (forgot it before!) and also enable flock
Alan Cox [Tue, 13 Jan 2015 22:03:19 +0000 (22:03 +0000)]
Merge branch 'master' of https://github.com/EtchedPixels/FUZIX
Alan Cox [Tue, 13 Jan 2015 22:02:46 +0000 (22:02 +0000)]
README: notes on things for the tgl6502
Alan Cox [Tue, 13 Jan 2015 22:01:23 +0000 (22:01 +0000)]
cpu: make brk address rules CPU specific
The 6502 port has different stack policies to other processors.
Also while we are at it add uaddr_t so we can support different address
space sizes, ready for a future target or two.
Alan Cox [Tue, 13 Jan 2015 22:00:44 +0000 (22:00 +0000)]
Makefile: use -O not -Or, we don't use register variables as it needs
Alan Cox [Tue, 13 Jan 2015 21:57:49 +0000 (21:57 +0000)]
libc: Make the libc code with cc65. Clean all the header bugs it found
cc65 is quite pedantic about consts, sdcc is rather slack. Clean up all the
errors cc65 found. That should also make it rather easier to do the gcc
builds.
This isn't yet a complete cc65 libc. It doesn't handle some of the calls due
to arg ordering funnies and it doesn't have a syscalls lib. A pure runtime
library for a cc65 'fuzix' target and crt0.s are also needed.
EtchedPixels [Tue, 13 Jan 2015 21:55:03 +0000 (21:55 +0000)]
Merge pull request #67 from willsowerbutts/z180int
Interrupt fixes ("I'm in ur interrupt handler, enabling ur interrupts")
Will Sowerbutts [Tue, 13 Jan 2015 20:28:19 +0000 (20:28 +0000)]
Kernel: getproc() should not enable interrupts if it is called from
within an interrupt handler because we cannot handle any interrupts that
arrive as a result. Enable interrupts only when no process is ready,
which is obviously never the case when we're preempting a process from
within a timer interrupt. The kernel will also panic if we're about to
enable interrupts in getproc() when we're already handling one.
Will Sowerbutts [Tue, 13 Jan 2015 20:27:43 +0000 (20:27 +0000)]
Kernel: Change NMOS_Z80/CMOS_Z80 to Z80_TYPE. Change _irqvector so that
it does not change in case of re-entrant interrupts.
Alan Cox [Mon, 12 Jan 2015 22:14:05 +0000 (22:14 +0000)]
types.h: cc65 can't handle 64bit ints and isn't likely to do so soon
Alan Cox [Mon, 12 Jan 2015 22:13:30 +0000 (22:13 +0000)]
unistd/syscalls: Fix 6502 type warnings
Alan Cox [Mon, 12 Jan 2015 22:13:07 +0000 (22:13 +0000)]
ssh: fix warning from cc65
Alan Cox [Mon, 12 Jan 2015 22:12:33 +0000 (22:12 +0000)]
string.h: fix implicit int usage
Alan Cox [Mon, 12 Jan 2015 22:12:06 +0000 (22:12 +0000)]
utils: some tweaks to keep cc65 happy.
Alan Cox [Mon, 12 Jan 2015 21:09:21 +0000 (21:09 +0000)]
tgl6502: Make it possible to split out discard, also enable new compiler flags
You'll need the patch I just posted to the cc65 list to use --all-fastcall but
if you take it out all should be well with the current git snapshots
Alan Cox [Mon, 12 Jan 2015 11:13:19 +0000 (11:13 +0000)]
ioctl: tidy up a bit more
Unknown ioctls return ENOTTY not EINVAL (Unix history...) so we need to do
the right thing. In addition we automatically set the errno so blkdev doesn't
have to care about it
Alan Cox [Mon, 12 Jan 2015 11:11:49 +0000 (11:11 +0000)]
devio: update to the new ioctl naming
Alan Cox [Mon, 12 Jan 2015 11:05:53 +0000 (11:05 +0000)]
ioctl: implement the superuser bit
We need to check this at the syscall level so we can allow it to be invoked
internally without security restrictions but directly with
Alan Cox [Mon, 12 Jan 2015 11:05:05 +0000 (11:05 +0000)]
ioctl: rename the BLOCK_FLUSH ioctl to match the Linux name
Also tidy the ioctl table space
Alan Cox [Mon, 12 Jan 2015 11:04:18 +0000 (11:04 +0000)]
tglsplice: allow a file system to be attached
Alan Cox [Mon, 12 Jan 2015 11:03:56 +0000 (11:03 +0000)]
tgl6502: push further work on the tgl6502
EtchedPixels [Mon, 12 Jan 2015 10:52:27 +0000 (10:52 +0000)]
Merge pull request #66 from willsowerbutts/ideflush3
Cache flush (take 3)
Will Sowerbutts [Mon, 12 Jan 2015 00:44:40 +0000 (00:44 +0000)]
devide: Set cache dirty flag even when write operation fails
Will Sowerbutts [Mon, 12 Jan 2015 00:41:49 +0000 (00:41 +0000)]
blkdev: Remove obsolete blkdev_flush() from header file
Will Sowerbutts [Sun, 11 Jan 2015 23:47:25 +0000 (23:47 +0000)]
p112, n8vem-mark4: Update devices table for new blkdev ioctl.
Will Sowerbutts [Sun, 11 Jan 2015 23:45:49 +0000 (23:45 +0000)]
devide: Support for flushing device cache. Avoids sending redundant
flush commands when no blocks have been written since the last flush.
Will Sowerbutts [Sun, 11 Jan 2015 23:44:27 +0000 (23:44 +0000)]
blkdev: Support for flushing device caches on BLOCK_FLUSH_CACHE ioctl.
Will Sowerbutts [Sun, 11 Jan 2015 23:41:49 +0000 (23:41 +0000)]
Kernel: d_flush() flushes the write cache of a device, using the private
device ioctl BLOCK_FLUSH_CACHE.
d_flush() is called on a device whenever a writable file is closed.
EtchedPixels [Sun, 11 Jan 2015 20:47:13 +0000 (20:47 +0000)]
Merge pull request #64 from willsowerbutts/blkdevfix
blkdev: Bug fix - final blkdev_table entry could not be used
Will Sowerbutts [Sun, 11 Jan 2015 17:47:43 +0000 (17:47 +0000)]
blkdev: Bug fix - final blkdev_table entry could not be used
Alan Cox [Sat, 10 Jan 2015 22:28:26 +0000 (22:28 +0000)]
tgl6502: fix various basic things such as __fastcall__ for memcpy
Now things look a bit saner and we get to the point of sitting on our butt
waiting for a keyboard input.
Alan Cox [Sat, 10 Jan 2015 21:46:50 +0000 (21:46 +0000)]
6502: save the zero page magic bits on interrupt, other minor fixups
Alan Cox [Sat, 10 Jan 2015 21:06:42 +0000 (21:06 +0000)]
tricks.s: fork and copy routine for the 6502
Or at least a first guess thereat
Alan Cox [Sat, 10 Jan 2015 18:33:59 +0000 (18:33 +0000)]
tgl6502: start fleshing out the 6502 version of tricks.s