1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-11-26 17:38:06 +11:00

Compare commits

..

No commits in common. "f38de1c151b7453e53085b8bc260c6b0dc00564f" and "b046aba7f9d5452b1873f91b069e7d48b5f5beb5" have entirely different histories.

29 changed files with 42 additions and 69 deletions

View File

@ -3,12 +3,12 @@ MASTER INDEX
3 Usage 30 Dictionary
70 Implementation notes 100 Block editor
120 Linker 140 Addressed devices
150 Extra words
150 AT28 Driver
200 Z80 assembler 260 Cross compilation
280 Z80 boot code 350 ACIA driver
370 SD Card driver 390 Inner core
420 Core words 480 AT28 Driver
490 TRS80 Drivers
420 Core words

View File

@ -1,7 +1,6 @@
Dictionary
List of words defined in Inner core (B390), Core words (B420)
and Extra words (B150).
Be sure to read usage guide (B3) first.
31 Glossary 34 Symbols
37 Entry management 40 Defining words

View File

@ -1,7 +1,7 @@
Entry management
'? x -- a f Find x it in dict. If found, f=1 and
a = wordref. If not found, f=0 and
(find) a -- a f Read at a and find it in dict. If found,
f=1 and a = wordref. If not found, f=0 and
a = string addr.
' x -- a Push addr of word x to a. If not found,
aborts.

View File

@ -1,8 +1,6 @@
Disk
BLK> -- a Address of the current block variable.
COPY s d -- Copy contents of s block to d block.
FLUSH -- Write current block to disk if dirty.
LIST n -- Prints the contents of the block n on screen
in the form of 16 lines of 64 columns.
LOAD n -- Interprets Forth code from block n

View File

@ -1,4 +1,3 @@
152 LOAD ( extras )
103 105 LOADR
: BROWSE
@ -14,3 +13,4 @@
;

16
blk/150
View File

@ -1,14 +1,6 @@
Extra words
AT28 Driver
The Core words (B420) section contains the absolute minimum
needed to get a usable Forth interpreter with input buffer and
disk blocks access running. The goal here is to minimize the
binary size of a minimum Collapse OS install.
Write to an AT28 EEPROM while making sure that proper timing
is followed and verify data integrity.
Extra words are words you will most likely want because they
are generally useful. They are so useful that they are part
of the Dictionary (B30).
Some programs need them, so they will automatically LOAD them.
To that end, the loader is conditional: it aborts if extra
words are already present. Load with "152 LOAD".
Load with "151 LOAD"

View File

View File

@ -1,3 +0,0 @@
'? CASE NOT [IF]
153 157 LOADR
[THEN] DROP ( from '? )

View File

@ -1,6 +0,0 @@
: FILL ( a n b -- )
SWAP 2 PICK + ( a b a+n ) ROT ( b a+n a ) DO ( b )
DUP I C!
LOOP
;

View File

@ -1,4 +0,0 @@
: EMPTY
LIT< _sys (find) NOT IF ABORT THEN
DUP HERE ! CURRENT ! ;

View File

@ -1,5 +0,0 @@
: WIPE BLK( 1024 0 FILL BLK!! ;
( src dst -- )
: COPY SWAP BLK@ BLK> ! BLK! ;

View File

@ -4,5 +4,5 @@ Drivers for the TRS-80 keyboard, video and floppy. At the
moment, they are thin layer over the drivers provided by
TRSDOS' SVC.
Load the Z80 words with "492 LOAD" and the high level part
with "494 LOAD".
Load the Z80 words with "162 LOAD" and the high level part
with "164 LOAD".

View File

View File

@ -8,9 +8,9 @@
: LITS 34 , SCPY ;
: LIT< WORD LITS ; IMMEDIATE
: LITA 36 , , ;
: '? WORD (find) ;
: '
'? (?br) [ 4 , ] EXIT
WORD (find) (?br) [ 4 , ] EXIT
LIT< (wnf) (find) DROP EXECUTE
;
: ['] ' LITA ; IMMEDIATE

View File

@ -8,4 +8,3 @@
; IMMEDIATE
: ENDOF [COMPILE] ELSE ; IMMEDIATE

View File

View File

@ -6,5 +6,10 @@
LOOP
2DROP
;
: FILL ( a n b -- )
SWAP 2 PICK + ( a b a+n ) ROT ( b a+n a ) DO ( b )
DUP I C!
LOOP
;
: DELW 1- 0 SWAP C! ;
: PREV 3 - DUP @ - ;

View File

@ -11,3 +11,6 @@
WORD( HERE ! ( w )
PREV CURRENT !
;
: EMPTY
LIT< _sys (find) NOT IF ABORT THEN
DUP HERE ! CURRENT ! ;

View File

@ -2,10 +2,10 @@
BLK> @ BLK!* @ EXECUTE
0 BLKDTY !
;
: FLUSH BLKDTY @ IF BLK! THEN ;
: BLK@ ( n -- )
FLUSH
DUP BLK> @ = IF DROP EXIT THEN
BLKDTY @ IF BLK! THEN
DUP BLK> ! BLK@* @ EXECUTE
;

View File

@ -1,2 +1,4 @@
( b1 b2 -- )
: LOADR 1+ SWAP DO I DUP . CRLF LOAD LOOP ;
: WIPE BLK( 1024 0 FILL BLK!! ;

View File

@ -1,6 +0,0 @@
AT28 Driver
Write to an AT28 EEPROM while making sure that proper timing
is followed and verify data integrity.
Load with "481 LOAD"

2
emul/.gitignore vendored
View File

@ -3,5 +3,5 @@
/stage2
/forth
/*-bin.h
/stage0.bin
/stage1.bin
/blkfs

View File

@ -14,10 +14,7 @@ $(BLKPACK):
$(BIN2C): $(BLKPACK)
$(BLKUNPACK): $(BLKPACK)
stage0.bin: stage2 xcomp.fs
cat xcomp.fs | ./stage2 > stage0.bin
stage0-bin.h: stage0.bin $(BIN2C)
stage0-bin.h: $(BIN2C)
$(BIN2C) KERNEL < stage0.bin > $@
stage1: stage.c $(OBJS) stage0-bin.h
@ -26,11 +23,13 @@ stage1: stage.c $(OBJS) stage0-bin.h
stage1dbg: stage.c $(OBJS) stage0-bin.h
$(CC) -DDEBUG stage.c $(OBJS) -o $@
# not dependent on forth.bin to avoid circular deps.
forth-bin.h: $(BIN2C)
$(BIN2C) KERNEL < forth.bin > $@
stage1.bin: stage1.fs stage1
./stage1 < stage1.fs > $@
stage2: stage.c $(OBJS) forth-bin.h blkfs-bin.h
stage1-bin.h: stage1.bin $(BIN2C)
$(BIN2C) KERNEL < stage1.bin > $@
stage2: stage.c $(OBJS) stage1-bin.h blkfs-bin.h
$(CC) -DSTAGE2 stage.c $(OBJS) -o $@
blkfs: $(BLKPACK)
@ -39,7 +38,7 @@ blkfs: $(BLKPACK)
blkfs-bin.h: blkfs $(BIN2C)
$(BIN2C) BLKFS < blkfs > $@
forth: forth.c $(OBJS) forth-bin.h blkfs-bin.h
forth: forth.c $(OBJS) stage1-bin.h blkfs-bin.h
$(CC) forth.c $(OBJS) -o $@
libz80/libz80.o: libz80/z80.c
@ -51,8 +50,8 @@ emul.o: emul.c
.PHONY: updatebootstrap
updatebootstrap: stage1 stage1.fs
./stage1 < stage1.fs > forth.bin
updatebootstrap: stage2
cat xcomp.fs | ./stage2 > stage0.bin
.PHONY: pack
pack:

Binary file not shown.

View File

@ -3,7 +3,7 @@
#include <unistd.h>
#include <termios.h>
#include "emul.h"
#include "forth-bin.h"
#include "stage1-bin.h"
#include "blkfs-bin.h"
// in sync with glue.asm

View File

@ -3,7 +3,7 @@
#include <unistd.h>
#include "emul.h"
#ifdef STAGE2
#include "forth-bin.h"
#include "stage1-bin.h"
#include "blkfs-bin.h"
#else
#include "stage0-bin.h"

BIN
emul/stage0.bin Normal file

Binary file not shown.

View File

@ -46,7 +46,7 @@ Addressed devices are at B140. To know what you have to paste, open the loader
block (B142) and see what blocks it loads. For each of the blocks, copy/paste
the code in your interpreter.
Do the same thing with the AT28 driver (B480)
Do the same thing with the AT28 driver (B150)
If you're doing the real thing and not using the emulator, pasting so much code
at once might freeze up the RC2014, so it is recommended that you use

View File

@ -12,7 +12,7 @@ CURRENT @ XCURRENT !
H@ 256 /MOD 2 PC! 2 PC!
0x3000 BIN( !
282 LOAD ( boot.z80 )
492 LOAD ( trs80.z80 )
162 LOAD ( trs80.z80 )
393 LOAD ( icore )
(entry) _
( Update LATEST )