Sfoglia il codice sorgente

trs80: implement AT-XY

Also, I've run VE on the TRS-80 for the first time! It doesn't work
well though. Screen is mostly blank all the time.

I removed instructions from the recipe which became obsolete when
Collapse OS became 100% bootstrapped. Also, I've updated instructions
to change the NL override which is necessary for blkup to work.
pull/107/head
Virgil Dupras 4 anni fa
parent
commit
b2b556911f
3 ha cambiato i file con 30 aggiunte e 69 eliminazioni
  1. +7
    -7
      blk/493
  2. +5
    -0
      blk/494
  3. +18
    -62
      recipes/trs80/README.md

+ 7
- 7
blk/493 Vedi File

@@ -1,16 +1,16 @@
CODE (key)
A 0x01 LDrn, ( @KEY )
0x28 RSTn,
L A LDrr, H 0 LDrn,
HL PUSHqq,
PUSHA,
;CODE
CODE (emit)
BC POPqq, ( c == @DSP arg )
chkPS,
BC POPqq, ( c == @DSP arg ) chkPS,
A 0x02 LDrn, ( @DSP )
0x28 RSTn,
;CODE
CODE BYE
HL 0 LDddnn,
A 0x16 LDrn, ( @EXIT )
CODE AT-XY
DE POPqq, H E LDrr, ( Y )
DE POPqq, L E LDrr, ( X ) chkPS,
A 0x0f LDrn, ( @VDCTL ) B 3 LDrn, ( setcur )
0x28 RSTn,
;CODE

+ 5
- 0
blk/494 Vedi File

@@ -1,3 +1,8 @@
: LINES 24 ; : COLS 80 ;
CODE BYE
HL 0 LDddnn,
A 0x16 LDrn, ( @EXIT )
0x28 RSTn,
CODE @DCSTAT ( drv -- f )
BC POPqq,
chkPS,


+ 18
- 62
recipes/trs80/README.md Vedi File

@@ -212,69 +212,12 @@ session on the other, type a few characters, and try `pingpong` again.

## Saving to disk

If everything went well, you could run Collapse OS with `g3000<return>`. You
would get a usable Collapse OS prompt. But don't do that just yet. That
executable bootstraps itself from code and it takes a while to do that every
time you launch it. You don't want that right? Let's save a compiled version of
it to disk.
If everything went well, you could run Collapse OS with `g3000<return>`.
But instead of doing that, why not save it to disk?

Turn off the debugger (which can mess up some things) and save your sent
content as-is by following the instructions you had for the `RECV` program.
This way, if you mess up a step below, you can quickly start over. Now you can
launch Collapse OS. Then, we need to:
dump cos/cmd:1 (start=x'5000',end=x'7000',tra='5000')

* Reclaim wasted memory
* Create hook entry
* Update LATEST
* Write down initialization code
* Write memory to floppy

### Reclaim wasted memory

During initialization, `RDLN$` allocated memory in `HERE` for its input buffer.
If you don't reclaim that space, that will be dead space in your binary.

You can reclaim that space with `FORGET _` which will rewind to before we
defined our initialization routine (see xcomp.fs).

However, that is not enough. If you only do that, there will be a conflict
between the rdln input buffer and your `HERE` space! So we need to go put that
input buffer somewhere else first. Therefore, your commands will be:

500 ALLOT RDLN$ FORGET _

### Create hook entry

That one is easy:

(entry) _

### Update LATEST

At this point, both `HERE` and `CURRENT` point to your future `LATEST`.

H@ 0x08 BIN+ !

Done.

### Write down initialization code

You'll do something similar to what we do in xcomp, except you'll have to add
"HERE rewinding" code because by default, `HERE` starts at RAMSTART+0x80. So:

," CURRENT @ HERE ! (ok) RDLN$ "

As soon as `RDLN$` is called, the `C<` pointer changes and gives control to
keyboard, giving us our full forth interpreter.

### Write memory to floppy

What you currently have in memory is gold. You want that on floppy. First, run
`H@ .X` to know your upper bound (and `0 BIN+ .X` to know your lower one, but
you're already supposed to know that one). Then, run `BYE` to return to TRSDOS
(the TRSDOS driver overrides `BYE` so that it calls the proper SVC instead of
just halting). Then, you can dump memory to floppy as you already did for
`RECV`.
And there we go! A Collapse OS launchable from floppy!

## Sending blkfs to floppy

@@ -294,7 +237,12 @@ prompt:
' *CL< 0x55 RAM+ !

See B80 for details about those RAM offsets. Your serial link now has the
prompt. Now, you can use `/tools/blkup` to send a disk's contents. First,
prompt. You will also have to make your newlines CRLF. The TRS-80 wants CR
only, but serial communications (and `blkup`) expect CRLF:

' CRLF 0x0a RAM+ !

Now, you can use `/tools/blkup` to send a disk's contents. First,
extract the first 100 blocks from blkfs:

dd if=emul/blkfs bs=1024 count=100 > d1
@@ -312,6 +260,14 @@ Making blkfs span multiple disk is a bit problematic with regards to absolute
block references in the code. You'll need to work a bit to design your very
own Collapse OS floppy set. See Usage guide (B3) for details.

## Coming back to keyboard

Once you're done, you will want to go back to local control:

' CR 0x0a RAM+ !
0 0x55 RAM+ !
0 0x53 RAM+ !

## Self-hosting

As it is, your installment of Collapse OS is self-hosting using instructions


Loading…
Annulla
Salva