mirror of
https://github.com/hsoft/collapseos.git
synced 2024-11-26 12:38:07 +11:00
Compare commits
4 Commits
4146110e0d
...
1871c46614
Author | SHA1 | Date | |
---|---|---|---|
|
1871c46614 | ||
|
dc368597a6 | ||
|
838c88459b | ||
|
e317e9cc78 |
26
blk/121
26
blk/121
@ -1,16 +1,16 @@
|
|||||||
All keystrokes are directly interpreted by VE and have the
|
The status line displays the active block number, then the
|
||||||
effect described below.
|
"modifier" and then the cursor position. When the block is dir-
|
||||||
|
ty, an "*" is displayed next. At the right corner, a mode letter
|
||||||
|
can appear. 'R' for replace, 'I' for insert, 'F' for find.
|
||||||
|
|
||||||
Pressing a 0-9 digit accumulates that digit into what is named
|
|
||||||
the "modifier". That modifier affects the behavior of many
|
|
||||||
keystokes described below. The modifier starts at zero, but
|
|
||||||
most commands interpret a zero as a 1 so that they can have an
|
|
||||||
effect.
|
|
||||||
|
|
||||||
'g' selects the block specified by the modifier as the current
|
|
||||||
block. Any change made to the previously selected block is
|
|
||||||
saved beforehand.
|
|
||||||
|
|
||||||
'[' and ']' advances the selected block by "modifier". 't' opens
|
|
||||||
the previously opened block.
|
|
||||||
(cont.)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(cont.)
|
||||||
|
24
blk/122
24
blk/122
@ -1,16 +1,16 @@
|
|||||||
'h' and 'l' move the cursor by "modifier" characters. 'j' and
|
All keystrokes are directly interpreted by VE and have the
|
||||||
'k', by lines.
|
effect described below.
|
||||||
|
|
||||||
'H' goes to the beginning of the line, 'L' to the end.
|
Pressing a 0-9 digit accumulates that digit into what is named
|
||||||
|
the "modifier". That modifier affects the behavior of many
|
||||||
|
keystokes described below. The modifier starts at zero, but
|
||||||
|
most commands interpret a zero as a 1 so that they can have an
|
||||||
|
effect.
|
||||||
|
|
||||||
'w' moves forward by "modifier" words. 'b' moves backward.
|
'g' selects the block specified by the modifier as the current
|
||||||
'W' moves to end-of-word. 'B', backwards.
|
block. Any change made to the previously selected block is
|
||||||
|
saved beforehand.
|
||||||
|
|
||||||
'I', 'F', 'Y', 'X' and 'E' invoke the corresponding command
|
'[' and ']' advances the selected block by "modifier". 't' opens
|
||||||
from the Block Editor (B100). Refer to documentation there.
|
the previously opened block.
|
||||||
|
|
||||||
'o' inserts a blank line after the cursor. 'O', before.
|
|
||||||
|
|
||||||
'D' deletes "modifier" lines at the cursor. The first of those
|
|
||||||
lines is copied to IBUF.
|
|
||||||
(cont.)
|
(cont.)
|
||||||
|
20
blk/123
20
blk/123
@ -1,16 +1,16 @@
|
|||||||
'f' puts the contents of your previous cursor movement into
|
'h' and 'l' move the cursor by "modifier" characters. 'j' and
|
||||||
FBUF. If that movement was a forward movement, it brings the
|
'k', by lines.
|
||||||
cursor back where it was. This allows for an efficient combi-
|
|
||||||
nation of movements and 'E'. For example, if you want to delete
|
|
||||||
the next word, you type 'w', then 'f', then check your FBUF to
|
|
||||||
be sure, then press 'E'.
|
|
||||||
|
|
||||||
'R' goes into replace mode at current cursor position.
|
|
||||||
Following keystrokes replace current character and advance
|
|
||||||
cursor. Press return to return to normal mode.
|
|
||||||
|
|
||||||
|
'H' goes to the beginning of the line, 'L' to the end.
|
||||||
|
|
||||||
|
'w' moves forward by "modifier" words. 'b' moves backward.
|
||||||
|
'W' moves to end-of-word. 'B', backwards.
|
||||||
|
|
||||||
|
'I', 'F', 'Y', 'X' and 'E' invoke the corresponding command
|
||||||
|
|
||||||
|
'o' inserts a blank line after the cursor. 'O', before.
|
||||||
|
|
||||||
|
'D' deletes "modifier" lines at the cursor. The first of those
|
||||||
|
lines is copied to IBUF.
|
||||||
|
(cont.)
|
||||||
|
|
||||||
|
16
blk/124
Normal file
16
blk/124
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
'f' puts the contents of your previous cursor movement into
|
||||||
|
FBUF. If that movement was a forward movement, it brings the
|
||||||
|
cursor back where it was. This allows for an efficient combi-
|
||||||
|
nation of movements and 'E'. For example, if you want to delete
|
||||||
|
the next word, you type 'w', then 'f', then check your FBUF to
|
||||||
|
be sure, then press 'E'.
|
||||||
|
|
||||||
|
'R' goes into replace mode at current cursor position.
|
||||||
|
Following keystrokes replace current character and advance
|
||||||
|
cursor. Press return to return to normal mode.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
4
blk/126
4
blk/126
@ -7,10 +7,10 @@ CREATE PREVPOS 0 , CREATE PREVBLK 0 ,
|
|||||||
: clrscr LINES 0 DO i aty COLS nspcs LOOP ;
|
: clrscr LINES 0 DO i aty COLS nspcs LOOP ;
|
||||||
: gutter ( ln n ) OVER + SWAP DO 67 i AT-XY '|' EMIT LOOP ;
|
: gutter ( ln n ) OVER + SWAP DO 67 i AT-XY '|' EMIT LOOP ;
|
||||||
: status 0 aty ." BLK" SPC BLK> ? SPC ACC ?
|
: status 0 aty ." BLK" SPC BLK> ? SPC ACC ?
|
||||||
SPC EDPOS @ 64 /MOD . ',' EMIT . 10 nspcs ;
|
SPC EDPOS @ 64 /MOD . ',' EMIT . SPC
|
||||||
|
BLKDTY @ IF '*' EMIT THEN 10 nspcs ;
|
||||||
: contents 3 aty BLK> @ LIST 3 16 gutter ;
|
: contents 3 aty BLK> @ LIST 3 16 gutter ;
|
||||||
: selblk BLK> @ PREVBLK ! BLK@ contents ;
|
: selblk BLK> @ PREVBLK ! BLK@ contents ;
|
||||||
: mode! ( c -- ) 63 0 AT-XY ;
|
: mode! ( c -- ) 63 0 AT-XY ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
8
blk/127
8
blk/127
@ -4,10 +4,10 @@
|
|||||||
3 + ( header ) SWAP 3 + ( gutter ) SWAP AT-XY ;
|
3 + ( header ) SWAP 3 + ( gutter ) SWAP AT-XY ;
|
||||||
: cmv ( n -- , char movement ) acc@ * EDPOS @ + pos! ;
|
: cmv ( n -- , char movement ) acc@ * EDPOS @ + pos! ;
|
||||||
: buftype ( buf ln -- )
|
: buftype ( buf ln -- )
|
||||||
3 OVER AT-XY C< DUP 0xd = IF 2DROP DROP EXIT THEN
|
3 OVER AT-XY KEY DUP EMIT
|
||||||
( buf ln c ) 63 nspcs SWAP 4 SWAP AT-XY ( buf c )
|
DUP 0x20 < IF 2DROP DROP EXIT THEN
|
||||||
SWAP DUP _zbuf C!+ DUP 63 + SWAP DO
|
( buf ln c ) 63 nspcs SWAP 4 SWAP AT-XY ( buf c ) SWAP C!+
|
||||||
C< DUP 0x0d = IF LEAVE THEN i C! LOOP ;
|
IN( _zbuf (rdln) IN( SWAP 63 MOVE ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
6
blk/130
6
blk/130
@ -4,8 +4,9 @@
|
|||||||
SWAP _cpos FBUF ( len src dst ) ROT MOVE ;
|
SWAP _cpos FBUF ( len src dst ) ROT MOVE ;
|
||||||
: $R ( replace mode )
|
: $R ( replace mode )
|
||||||
mode! 'R' EMIT
|
mode! 'R' EMIT
|
||||||
BEGIN setpos C< DUP 0xd = NOT IF
|
BEGIN setpos KEY DUP BS? IF -1 EDPOS +! DROP 0 THEN
|
||||||
EDPOS @ _cpos C! 1 EDPOS +! BLK!! 0
|
DUP 0x20 >= IF
|
||||||
|
DUP EMIT EDPOS @ _cpos C! 1 EDPOS +! BLK!! 0
|
||||||
THEN UNTIL mode! SPC contents ;
|
THEN UNTIL mode! SPC contents ;
|
||||||
: $O EDPOS @ 0x3c0 ( 15 * 64 ) >= IF EXIT THEN
|
: $O EDPOS @ 0x3c0 ( 15 * 64 ) >= IF EXIT THEN
|
||||||
_U EDPOS @ 0x3c0 AND DUP pos! _cpos _zbuf BLK!! contents ;
|
_U EDPOS @ 0x3c0 AND DUP pos! _cpos _zbuf BLK!! contents ;
|
||||||
@ -13,4 +14,3 @@
|
|||||||
: $D $H 64 icpy
|
: $D $H 64 icpy
|
||||||
acc@ 0 DO 16 EDPOS @ 64 / DO i _mvln- LOOP LOOP
|
acc@ 0 DO 16 EDPOS @ 64 / DO i _mvln- LOOP LOOP
|
||||||
BLK!! contents ;
|
BLK!! contents ;
|
||||||
|
|
||||||
|
6
blk/131
6
blk/131
@ -7,10 +7,10 @@
|
|||||||
: bufs
|
: bufs
|
||||||
1 aty ." I: " IBUF bufp
|
1 aty ." I: " IBUF bufp
|
||||||
2 aty ." F: " FBUF bufp 0 3 gutter ;
|
2 aty ." F: " FBUF bufp 0 3 gutter ;
|
||||||
: c<over KEY DUP EMIT DUP 0x0a = IF DROP 0x0d THEN ;
|
: VE
|
||||||
: VE ['] c<over 0x08 ( C< override ) RAM+ !
|
|
||||||
clrscr 0 ACC ! 0 PREVPOS ! contents
|
clrscr 0 ACC ! 0 PREVPOS ! contents
|
||||||
BEGIN status bufs setpos KEY handle UNTIL
|
BEGIN status bufs setpos KEY handle UNTIL
|
||||||
0 0x08 RAM+ ! 19 aty ;
|
19 aty (infl) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2
blk/157
2
blk/157
@ -1,7 +1,7 @@
|
|||||||
: WIPE BLK( 1024 0 FILL BLK!! ;
|
: WIPE BLK( 1024 0 FILL BLK!! ;
|
||||||
|
|
||||||
( src dst -- )
|
( src dst -- )
|
||||||
: COPY SWAP BLK@ BLK> ! BLK! ;
|
: COPY FLUSH SWAP BLK@ BLK> ! BLK! ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2
blk/372
2
blk/372
@ -12,3 +12,5 @@
|
|||||||
PREV CURRENT !
|
PREV CURRENT !
|
||||||
;
|
;
|
||||||
: EMPTY LIT< _sys FIND IF DUP HERE ! CURRENT ! THEN ;
|
: EMPTY LIT< _sys FIND IF DUP HERE ! CURRENT ! THEN ;
|
||||||
|
|
||||||
|
|
||||||
|
6
blk/378
6
blk/378
@ -4,13 +4,13 @@
|
|||||||
;
|
;
|
||||||
: FLUSH BLKDTY @ IF BLK! THEN ;
|
: FLUSH BLKDTY @ IF BLK! THEN ;
|
||||||
: BLK@ ( n -- )
|
: BLK@ ( n -- )
|
||||||
FLUSH
|
|
||||||
DUP BLK> @ = IF DROP EXIT THEN
|
DUP BLK> @ = IF DROP EXIT THEN
|
||||||
DUP BLK> ! BLK@* @ EXECUTE
|
FLUSH DUP BLK> ! BLK@* @ EXECUTE ;
|
||||||
;
|
|
||||||
|
|
||||||
: BLK!! 1 BLKDTY ! ;
|
: BLK!! 1 BLKDTY ! ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
6
blk/387
6
blk/387
@ -1,16 +1,16 @@
|
|||||||
( handle backspace: go back one char in IN>, if possible, then
|
( handle backspace: go back one char in IN>, if possible, then
|
||||||
emit BS + SPC + BS )
|
emit BS + SPC + BS )
|
||||||
: (inbs)
|
: _bs
|
||||||
( already at IN( ? )
|
( already at IN( ? )
|
||||||
IN> @ IN( = IF EXIT THEN
|
IN> @ IN( = IF EXIT THEN
|
||||||
IN> @ 1- IN> !
|
IN> @ 1- IN> !
|
||||||
BS SPC BS
|
BS SPC BS
|
||||||
;
|
;
|
||||||
|
( del is same as backspace )
|
||||||
|
: BS? DUP 0x7f = SWAP 0x8 = OR ;
|
||||||
|
|
||||||
: KEY
|
: KEY
|
||||||
85 RAM+ @ ( (key) override )
|
85 RAM+ @ ( (key) override )
|
||||||
?DUP IF EXECUTE ELSE (key) THEN ;
|
?DUP IF EXECUTE ELSE (key) THEN ;
|
||||||
|
|
||||||
|
|
||||||
( cont.: read one char into input buffer and returns whether we
|
( cont.: read one char into input buffer and returns whether we
|
||||||
should continue, that is, whether CR was not met. )
|
should continue, that is, whether CR was not met. )
|
||||||
|
3
blk/388
3
blk/388
@ -1,10 +1,9 @@
|
|||||||
: (rdlnc) ( -- c )
|
: (rdlnc) ( -- c )
|
||||||
( buffer overflow? same as if we typed a newline )
|
( buffer overflow? same as if we typed a newline )
|
||||||
IN> @ IN) = IF 0x0a ELSE KEY THEN ( c )
|
IN> @ IN) = IF 0x0a ELSE KEY THEN ( c )
|
||||||
DUP 0x7f = IF DROP 0x8 THEN ( del? same as backspace )
|
|
||||||
DUP 0x0a = IF DROP 0xd THEN ( lf? same as cr )
|
DUP 0x0a = IF DROP 0xd THEN ( lf? same as cr )
|
||||||
( bacspace? handle and exit )
|
( bacspace? handle and exit )
|
||||||
DUP 0x8 = IF (inbs) EXIT THEN
|
DUP BS? IF _bs EXIT THEN
|
||||||
( echo back )
|
( echo back )
|
||||||
DUP EMIT ( c )
|
DUP EMIT ( c )
|
||||||
( write and advance )
|
( write and advance )
|
||||||
|
BIN
emul/forth.bin
BIN
emul/forth.bin
Binary file not shown.
Loading…
Reference in New Issue
Block a user