From 35840ad8e68e5a3ba841063d6fce774421c4b746 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Thu, 24 Sep 2020 12:26:43 -0400 Subject: [PATCH] sdc: don't use ABORT" ABORT" doesn't work in xcomp. Also, improve xcomp docs and fix misdocumentation. --- blk/430 | 2 +- doc/cross.txt | 25 +++++++++++++++++++++++++ recipes/rc2014/blk/606 | 4 ++-- recipes/rc2014/sdcard.md | 2 +- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/blk/430 b/blk/430 index 912dc82..f74a84d 100644 --- a/blk/430 +++ b/blk/430 @@ -1,4 +1,4 @@ -: _err 0 (spie) ABORT" SDerr" ; +: _err 0 (spie) LIT" SDerr" ERR ; ( Tight definition ahead, pre-comment. diff --git a/doc/cross.txt b/doc/cross.txt index 4d12d7f..f722a5a 100644 --- a/doc/cross.txt +++ b/doc/cross.txt @@ -71,3 +71,28 @@ bootstrap.txt. After you're done, you can run EMPTY to go back to a usable system. + +# Immediate compiling words trickyness + +When using an immediate compiling word such as "IF" during +xcomp, things are a bit tricky for two reasons: + +1. Immediates used during xcomp are from the host system. +2. The reference of the word(s) they compile is for the host + system. + +Therefore, unless the compiled word (for example (?br) compiled +by IF) has exactly the same address in both the host and guest, +the resulting binary will be broken. + +For this reason, we re-implement many of those compiling words +in xcomp overrides, hacking our way through, so that those +compiling words compile proper guest references. We don't do +this for all compiling words though. This means that some words +can't be used in core and drivers, for example, ABORT" and .". + +How to know whether a word can be used? + +1. If it's not an immediate compiling word, it's fine. +2. If its overriden in B270, it's fine. +3. Otherwise, you can't cross-compile it. diff --git a/recipes/rc2014/blk/606 b/recipes/rc2014/blk/606 index 1200569..ca714d2 100644 --- a/recipes/rc2014/blk/606 +++ b/recipes/rc2014/blk/606 @@ -1,5 +1,5 @@ Zilog SIO driver -Declarations at B587 +Declarations at B607 -Driver load range at B588-B590 +Driver load range at B608-B610 diff --git a/recipes/rc2014/sdcard.md b/recipes/rc2014/sdcard.md index 5039af9..ad9f7f7 100644 --- a/recipes/rc2014/sdcard.md +++ b/recipes/rc2014/sdcard.md @@ -84,7 +84,7 @@ and `SPI_CTL`, which are respectively `4` and `5` in our relay design. You also need to tell the SDC subsystem which SPI device to activate by defining the `SDC_DEVID` (1, 2, 4, 8 for device 0, 1, 2 or 3) -You can then load the driver with `596 LOAD`. This driver provides +You can then load the driver with `616 LOAD`. This driver provides `(spix)` and `(spie)` which are then used in the SDC driver. The SDC driver is at B420. It gives you a load range. This means that what