Compare commits

...

3 Commits

Author SHA1 Message Date
Virgil Dupras b037c86598 recipes/pcat: now tested on real hardware! 2020-06-13 11:47:32 -04:00
Virgil Dupras f9d04848bd emul: adjust README. AT-XY is implemented 2020-06-13 11:46:59 -04:00
Maykel Moya 7be6475ea2
Document how to launch a REPL in the host (#117) 2020-06-13 11:11:54 -04:00
3 changed files with 11 additions and 4 deletions

View File

@ -5,6 +5,7 @@
( no argument, flow ops are special )
: JMP8, 0xeb A, ; : JMP16, 0xe9 A, ; : JZ, 0x74 A, ;
: LODSB, 0xac A, ; : CLI, 0xfa A, ; : HLT, 0xf4 A, ;
: STI, 0xfb A, ;
: ORrr, 0x08 A, MODRMrr A, ;
: XORxx, 0x31 A, MODRMrr A, ;
: CLD, 0xfc A, ; : STD, 0xfd A, ;

View File

@ -1,9 +1,9 @@
: _filler 510 H@ ORG @ - DO 0 A, LOOP 0x55 A, 0xaa A, ;
H@ ORG ! 0x7c00 BIN( ! ( BIOS loads boot bin at 0x7c00 )
JMP8, L1 FWR8 ( start )
ORG @ 0x25 + HERE ! ( bypass BPB )
L2 BSET ( msg ) ," Hello, World!" 0 A,
L1 FSET ( start )
CLI, CLD, AX AX XORxx, DS AX MOVsx,
CLI, CLD, AX AX XORxx, DS AX MOVsx, STI,
AH 0 MOVri, AL 2 MOVri, ( 80x25 BW video mode ) 0x10 INT,
SI L2 @ ( msg ) MOVrI, AH 0x0e MOVri, ( print char )
L1 BSET ( loop ) LODSB, AL AL ORrr, ( end of str? )
@ -11,4 +11,4 @@ JZ, L2 FWR8 ( next ) 0x10 INT, ( print char )
JMP8, L1 ( loop ) BWR
L2 FSET ( next ) AH 0 MOVri, 0x16 INT, ( read kbd )
AH 0x0e MOVri, 0x10 INT, ( spit read char ) HLT, ( done )
_filler
ORG @ 0x1fe + HERE ! 0x55 A, 0xaa A,

View File

@ -30,7 +30,12 @@ After that, you can run `make` and it builds the `forth` interpreter.
Run `./forth` to get the Collapse OS prompt. Type `0 LIST` for help.
The program is a curses interface with a limited, fixed size so that it can
provide a AT-XY interface (which is yet to implement).
provide a AT-XY interface.
You can get a REPL by launching the program with [`rlwrap(1)`][rlwrap] like
this:
rlwrap -e '' -m -S '> ' ./forth /dev/stdin
## Problems?
@ -52,3 +57,4 @@ is broken, but that is rather rare: the repo on Github is plugged on Travis
and it checks that everything is smooth.
[libz80]: https://github.com/ggambetta/libz80
[rlwrap]: https://linux.die.net/man/1/rlwrap