Virgil Dupras
3198cd8d08
emul/8086/pcat: fix broken AT-XY
2020-10-25 18:42:48 -04:00
Virgil Dupras
6947fea2a8
emul/z80: add SD card support to SMS
...
It works (in emulation, but soon on real hardware!), but the LIST
command is awkward due to tight screen estate...
2020-10-25 16:53:58 -04:00
Virgil Dupras
490eceab6d
emul/z80: flatten directory structure
...
I'm about to reuse sdc.c in sms.c and the old directory structure
was becoming awkward.
2020-10-25 15:58:00 -04:00
Virgil Dupras
44abcaa8f8
emul/8086: a little bit of cleanup in cpu.c
...
De-macroisation negatively impacts speed, but this emulator doesn't
need to be fast. Clear code is more important.
2020-10-25 14:25:12 -04:00
Virgil Dupras
8760766bb4
emul/8086: cleanup a couple of ifdefs
...
We assume CPU_V20 configuration at all times.
2020-10-25 14:01:46 -04:00
Virgil Dupras
5a77b80d3d
emul/8086/pcat: fix broken int13h logic
...
I had forgotten that heads index increment before track index.
2020-10-25 12:21:44 -04:00
Virgil Dupras
ba21b6a9f5
emul/8086: add PC/AT emulator
2020-10-25 10:27:52 -04:00
Virgil Dupras
c912158744
Run "all" tests under the 8086 emulator
2020-10-24 23:38:06 -04:00
Virgil Dupras
885e7db054
emul/8086: add BLK support
2020-10-24 23:20:20 -04:00
Virgil Dupras
de9103942d
emul/8086: implement AT-XY
2020-10-24 23:00:45 -04:00
Virgil Dupras
d11ac3f006
emul/8086: and we have liftoff!
...
Getting a Collapse OS prompt.
2020-10-24 22:06:51 -04:00
Virgil Dupras
942a50a86d
emul/8086: add INT hooks
2020-10-24 21:50:44 -04:00
Virgil Dupras
939c018792
emul/8086: wip
2020-10-24 20:41:51 -04:00
Virgil Dupras
efe4b13a4e
Move /emul to /emul/z80
...
I'm planning on adding other subfolders. 8086 for example...
2020-10-24 16:50:22 -04:00
Virgil Dupras
329219fa89
emul: copy libz80 directly into tree, pre-generated
...
libz80 doesn't move much anymore, there not much advantage to the
git module indirection.
2020-10-24 15:42:08 -04:00
Virgil Dupras
ae62e291e6
Update libz80 submodule
2020-10-24 14:46:21 -04:00
Virgil Dupras
46c95320af
emul: bring "hw" subfolders one level higher
2020-10-24 14:37:19 -04:00
Virgil Dupras
8cecd54410
emul/sms: add PS/2 keyboard emulation
2020-10-24 11:18:48 -04:00
Virgil Dupras
cc8068f8ab
emul: don't hardcode X11 keycodes in key handling routines
...
I thought it wasn't possible with XCB to transform keycodes into
symbols for the current keyboard mapping, but I hadn't looked
hard enough.
2020-10-23 21:33:56 -04:00
Virgil Dupras
1681e61956
emul/sms: don't hardcode name table offset
...
Use reg 2 as specified.
2020-10-12 21:11:46 -04:00
Virgil Dupras
1195b0313b
emul/rc2014: add support for Zilog SIO
...
Very very simplistic, but works with our driver.
2020-09-24 21:01:14 -04:00
Virgil Dupras
91f79d1131
Move z80a from B200 to B5
...
The idea is to consider assemblers as "runtime" apps instead of
placing them in the "bootstrap" section of the blocks. These apps
will be used for much more than bootstrapping.
Moved its documentation to doc/asm.txt and made its code blocks
more compact.
2020-09-21 17:51:08 -04:00
Virgil Dupras
1a6a549857
Make the SPI Relay protocol support multiple devices
...
Working on programming AVR chips exposes a glaring omission in my
first design of the SPI Relay: not allowing multiple devices make
this task hard. I constantly have to unplug my SD card before, plug
the AVR chip holder, then play a bit, then unplug the AVR holder,
then replug the SD card...
My prototype for a SPI relay design is built, but I haven't tested
it yet. I need to adapt the code first, which is what I do here.
When the prototype is tested, I'll update the SDC recipe with a new
schema.
2020-09-17 09:48:55 -04:00
Dustin Rawlings
bc1cc591ce
Replace "-ansi" with "-std=c89" in emul/Makefile
...
"-ansi" is not supported by tcc, but according to gcc
documentation, "-std=c89" produces identical behavior.
See: https://gcc.gnu.org/onlinedocs/gcc-3.4.2/gcc/Standards.html
2020-07-23 20:10:30 -04:00
Virgil Dupras
650481f849
z80/8086: extract 2>R code from stable ABI zone
...
Only its jump at 0x33 remains.
I've also fixed a strange offset oddity in 8086's (n) placement.
It was off by 2, but strangely, it ran properly. Anyway, now it's
fixed.
2020-07-05 08:03:15 -04:00
Virgil Dupras
d97012ecae
Fix makefile build-from-clean-repo glitches
2020-06-30 10:24:12 -04:00
Virgil Dupras
5a2612a9c5
Add HERESTART xcomp config
2020-06-28 19:45:28 -04:00
Virgil Dupras
3068b58be5
Rename RAMSTART to SYSVARS
...
It's more descriptive this way. Also, I'll soon add a new HERESTART
config.
2020-06-28 18:49:30 -04:00
Virgil Dupras
490c57834f
emul: update README
2020-06-27 07:53:58 -04:00
Virgil Dupras
0eb9bd090a
Move zasm.sh from emul to cvm
2020-06-27 07:44:43 -04:00
Virgil Dupras
ceabc9920f
move avra.sh from emul to cvm
...
The stage binary is now there.
2020-06-27 07:32:19 -04:00
Virgil Dupras
a65f674c74
emul: build from "cvm" instead of from itself
...
The C VM now runs the show.
2020-06-26 22:08:45 -04:00
Virgil Dupras
1312817117
z80: make boot binary a 2-part process
...
Previously, recipes that began spitting binary contents before
loading block 282 would end up with VARIABLE code in their binary,
thus breaking them. We fix this by making this loading process
2-part.
2020-06-26 21:41:17 -04:00
Virgil Dupras
4939189233
emul: make blk operations much faster
...
It helps a bit with staging times.
2020-06-22 06:29:00 -04:00
Virgil Dupras
dbd283758c
Refer to BOOT and (uflw) by addr in stable ABI
...
Was previously referred to by name+find, which was wasteful.
2020-06-21 11:41:10 -04:00
link2xt
d83d12899b
MOVE: do not crash when u is 0 ( #126 )
...
This commit adds ?DUP IF guards to MOVE and MOVE- that make them exit
when u is 0. Without these guards a DO loop was executed 65535 times
instead of 0.
In particular, this fixes a crash when "105 LOAD I " is executed
immediately after boot. Block editor word "I" passes IBUF length (0)
to MOVE- and MOVE in this case, causing a crash.
2020-06-21 05:49:45 -05:00
Virgil Dupras
397ee3e3e6
Simplify word '
2020-06-20 14:13:41 -04:00
Virgil Dupras
c571567660
emul: make verbose staging the default
...
I always keep it on myself. I can imagine it's especially useful to
newcomers.
2020-06-20 13:41:39 -04:00
Virgil Dupras
aca9bc9058
z80: small optimization in cell execution
2020-06-18 08:02:45 -04:00
Virgil Dupras
035532acf7
z80: remove remaining indirections in execute calls
...
We now have a stable ABI that is pretty cleared up...
2020-06-18 07:50:20 -04:00
Virgil Dupras
42818d25be
z80: remove layers of indirection of find calls
2020-06-18 07:40:20 -04:00
Virgil Dupras
76e698157c
z80: remove layer of indirection in most "next" calls
...
The only calls still using the stable ABI indirection are those
made before the next routine is created.
2020-06-18 07:24:47 -04:00
Virgil Dupras
3d2dc041fb
Make word routines into word types
...
Instead of having wordref point to core word routines, I made them
into word 4 word types. It liberates space into the stable ABI and
should make porting to other arches easier.
I'm also thinking of combining word type with the namelen field
for precious bytes saving, but not now...
2020-06-17 21:41:01 -04:00
Virgil Dupras
2be2f74a43
Make literal word routines into regular native words
2020-06-17 14:25:32 -04:00
Virgil Dupras
ea9833d4ff
Remove LITA
...
It was useful when we still had the relinker, but now it has no use.
I was waiting a bit to see if the distinction would be useful again,
but it seems like it won't.
2020-06-17 13:50:42 -04:00
Virgil Dupras
abb4dc8bd7
Reduce the scope of the stable ABI
...
Only 2>R in actually needed in the RSP family (for LOOP). Reducing
the scope of the stable ABI makes porting to other arches easier.
2020-06-17 07:54:43 -04:00
Virgil Dupras
feeedcc55c
z80: small optimization in execute
...
I had more ambitious goals, but I backed out of it: not worth it.
This small optimization is an easy picking though.
2020-06-16 16:37:21 -04:00
Virgil Dupras
85a0b87da3
z80: reorder compiledWord and doesWord, saving ourselves a jump
2020-06-14 10:12:56 -04:00
Virgil Dupras
38d5a9f303
z80: inline cellWord in stable ABI
2020-06-14 10:07:46 -04:00
Virgil Dupras
40f92b9bab
z80: optimize chkPS
...
Inline it in next and make chkPS, call a newly reserved label for
it directly, removing a layer of indirection. This frees a spot in
the stable ABI.
2020-06-14 09:48:10 -04:00