Begin working on a Visual Editor
This commit is contained in:
parent
f53f91558b
commit
c07a594e1a
2
blk/001
2
blk/001
@ -2,7 +2,7 @@ MASTER INDEX
|
||||
|
||||
3 Usage 30 Dictionary
|
||||
70 Implementation notes 100 Block editor
|
||||
150 Extra words
|
||||
120 Visual Editor 150 Extra words
|
||||
200 Z80 assembler 260 Cross compilation
|
||||
280 Z80 boot code 350 Core words
|
||||
410 PS/2 keyboard subsystem 420 Bootstrap guide
|
||||
|
2
blk/064
2
blk/064
@ -14,5 +14,3 @@ LOADR+ n1 n2 -- Relative ranged load.
|
||||
WIPE -- Empties current block
|
||||
|
||||
|
||||
|
||||
|
||||
|
16
blk/120
Normal file
16
blk/120
Normal file
@ -0,0 +1,16 @@
|
||||
Visual Editor
|
||||
|
||||
This editor, unlike the Block Editor (B100), is grid-based
|
||||
instead of being command-based. It requires the AT-XY, COLS
|
||||
and LINES words to be implemented.
|
||||
|
||||
It is loaded with "125 LOAD" and invoked with "VE".
|
||||
|
||||
This editor uses 17 lines. The top line is the status line and
|
||||
the 16 others are contents lines. The content shown is that
|
||||
of the currently selected block.
|
||||
|
||||
All keystrokes are directly interpreted by VE and have the
|
||||
effect described below.
|
||||
|
||||
(cont.)
|
13
blk/121
Normal file
13
blk/121
Normal file
@ -0,0 +1,13 @@
|
||||
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 madde to the previously selected block is
|
||||
saved beforehand.
|
||||
|
||||
'[' and ']' advance the selected block by modifier.
|
||||
|
||||
'Return' resets the modifier
|
2
blk/125
Normal file
2
blk/125
Normal file
@ -0,0 +1,2 @@
|
||||
'? UPPER NOT [IF] 33 LOAD+ [THEN] DROP ( B158 )
|
||||
1 2 LOADR+
|
14
blk/126
Normal file
14
blk/126
Normal file
@ -0,0 +1,14 @@
|
||||
CREATE CMD 2 C, '$' C, 0 C,
|
||||
VARIABLE ACC
|
||||
: 0acc 0 ACC ! ;
|
||||
: num ACC @ SWAP _pdacc IF DROP ELSE ACC ! THEN ;
|
||||
: nspcs ( n -- , spit n space ) 0 DO SPC LOOP ;
|
||||
: aty 0 SWAP AT-XY ;
|
||||
: clrln DUP aty COLS nspcs aty ;
|
||||
: clrscr LINES 0 DO I clrln LOOP ;
|
||||
: status 0 clrln ." BLK" SPC BLK> ? SPC ACC ? ;
|
||||
: contents 1 aty BLK> @ LIST ;
|
||||
: selblk BLK@ 0acc contents ;
|
||||
: $G ACC @ selblk ;
|
||||
: $[ BLK> @ ACC @ 1 MAX - selblk ;
|
||||
: $] BLK> @ ACC @ 1 MAX + selblk ;
|
7
blk/127
Normal file
7
blk/127
Normal file
@ -0,0 +1,7 @@
|
||||
: handle ( c -- f )
|
||||
UPPER DUP '0' '9' =><= IF num 0 EXIT THEN
|
||||
DUP CMD 2+ C! CMD FIND IF EXECUTE ELSE DROP THEN
|
||||
'Q' = ;
|
||||
: VE clrscr 0acc contents
|
||||
BEGIN status KEY handle UNTIL 18 aty ;
|
||||
|
2
blk/158
Normal file
2
blk/158
Normal file
@ -0,0 +1,2 @@
|
||||
: LOWER DUP 'A' 'Z' =><= IF 32 + THEN ;
|
||||
: UPPER DUP 'a' 'z' =><= IF 32 - THEN ;
|
@ -54,6 +54,10 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
strncpy(buf+(blkid*1024)+(i*64), line, cnt-1);
|
||||
}
|
||||
ssize_t cnt = getline(&line, &n, fp);
|
||||
if (cnt > 0) {
|
||||
fprintf(stderr, "blk %s has more than 16 lines\n", ep->d_name);
|
||||
}
|
||||
free(line);
|
||||
}
|
||||
fwrite(buf, 1024, blkcnt, stdout);
|
||||
|
Loading…
Reference in New Issue
Block a user