very wip
This commit is contained in:
parent
53241a06a2
commit
68505fcadf
1
BUGS
1
BUGS
|
@ -5,3 +5,4 @@
|
||||||
5. line editing after M-a has issues
|
5. line editing after M-a has issues
|
||||||
6. log more control codes
|
6. log more control codes
|
||||||
7. shift text to right when inserting
|
7. shift text to right when inserting
|
||||||
|
8. when running links (duckduckgo -> varvara), return stack underflow
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
#include <pty.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
if (argc < 2) {
|
||||||
|
printf("usage: %s ROM\n", argv[0]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
char *rom = argv[1];
|
||||||
|
int fd = -1;
|
||||||
|
|
||||||
|
pid_t pid = forkpty(&fd, NULL, NULL, NULL);
|
||||||
|
if (pid == 0) {
|
||||||
|
// child
|
||||||
|
setenv("TERM", "ansi", 1);
|
||||||
|
execlp("bash", "bash");
|
||||||
|
} else {
|
||||||
|
// parent
|
||||||
|
char *argp = {0, 40, 0, 79, 0, 8, 0, 8}; // HHHH: height, width, 8, 8
|
||||||
|
ioctl(fd, TIOCSWINSZ, argp);
|
||||||
|
|
||||||
|
dup2(fd, STDIN);
|
||||||
|
dup2(dup(fd), STDOUT);
|
||||||
|
execlp("uxnemu", "uxnemu", rom);
|
||||||
|
}
|
||||||
|
}
|
95
term.tal
95
term.tal
|
@ -3,6 +3,9 @@
|
||||||
( 2. support attributes (inverse, bold, dim) )
|
( 2. support attributes (inverse, bold, dim) )
|
||||||
( 3. add more ansi control seqs )
|
( 3. add more ansi control seqs )
|
||||||
( 4. log ESC [ ? x ; ... $c )
|
( 4. log ESC [ ? x ; ... $c )
|
||||||
|
( 5. need draw-line word, and need to use it more )
|
||||||
|
( a. on delete, CSI-P )
|
||||||
|
( b. on insert )
|
||||||
|
|
||||||
( ANSI sequences )
|
( ANSI sequences )
|
||||||
( )
|
( )
|
||||||
|
@ -31,8 +34,15 @@
|
||||||
( show cursor: ESC [ ? 25 h )
|
( show cursor: ESC [ ? 25 h )
|
||||||
( hide cursor: ESC [ ? 25 l )
|
( hide cursor: ESC [ ? 25 l )
|
||||||
( insert lines: ESC [ $n L )
|
( insert lines: ESC [ $n L )
|
||||||
|
( ESC \) )
|
||||||
|
( ESC 7 )
|
||||||
( )
|
( )
|
||||||
( set bracketed paste mode (xterm): ESC [ ? 2004 h )
|
( set bracketed paste mode (xterm): ESC [ ? 2004 h )
|
||||||
|
( reset bracketed paste mode (xterm): ESC [ ? 2004 l )
|
||||||
|
( end alt charset ESC [ 10 m )
|
||||||
|
( end alt charset ESC [ 11 m )
|
||||||
|
( delete n characters: ESC [ n P )
|
||||||
|
( insert n blank characters: ESC [ n @ )
|
||||||
|
|
||||||
|00 @System [ &vect $2 &pad $6 &r $2 &g $2 &b $2 ]
|
|00 @System [ &vect $2 &pad $6 &r $2 &g $2 &b $2 ]
|
||||||
|10 @Console [ &vect $2 &r $1 &pad $5 &w $1 ]
|
|10 @Console [ &vect $2 &r $1 &pad $5 &w $1 ]
|
||||||
|
@ -90,9 +100,10 @@
|
||||||
;on-key .Controller/vect DEO2 ( set up keyboard )
|
;on-key .Controller/vect DEO2 ( set up keyboard )
|
||||||
;on-read .Console/vect DEO2 ( set up stdin )
|
;on-read .Console/vect DEO2 ( set up stdin )
|
||||||
|
|
||||||
( ( set up debug log )
|
#99 #010e DEO
|
||||||
|
( set up debug log )
|
||||||
;debug .File/name DEO2
|
;debug .File/name DEO2
|
||||||
#01 .File/append DEO )
|
#01 .File/append DEO
|
||||||
|
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
@ -233,6 +244,7 @@
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
@on-read-csi ( -> )
|
@on-read-csi ( -> )
|
||||||
|
#010e DEO
|
||||||
.Console/r DEI
|
.Console/r DEI
|
||||||
DUP LIT "? EQU ;start-priv JCN2
|
DUP LIT "? EQU ;start-priv JCN2
|
||||||
DUP LIT "; EQU ;next-arg JCN2
|
DUP LIT "; EQU ;next-arg JCN2
|
||||||
|
@ -240,8 +252,39 @@
|
||||||
DUP LIT "9 GTH ;end-arg JCN2
|
DUP LIT "9 GTH ;end-arg JCN2
|
||||||
;add-to-arg JMP2
|
;add-to-arg JMP2
|
||||||
|
|
||||||
|
|
||||||
|
@debug-arg ( n* -> )
|
||||||
|
&short SWP ,&byte JSR
|
||||||
|
&byte DUP #04 SFT ,&char JSR
|
||||||
|
&char #0f AND DUP #09 GTH #27 MUL ADD #30 ADD ;scratch-write JSR2
|
||||||
|
JMP2r
|
||||||
|
|
||||||
|
@debug-args ( -> )
|
||||||
|
;args/pos LDA2 ;args
|
||||||
|
&loop
|
||||||
|
#20 ;scratch-write JSR2
|
||||||
|
LDA2k ;debug-arg/short JSR2 INC2 INC2
|
||||||
|
LTH2k ,&done JCN ,&loop JMP
|
||||||
|
&done POP2 POP2 JMP2r
|
||||||
|
|
||||||
@debug-priv ( c^ -> )
|
@debug-priv ( c^ -> )
|
||||||
;scratch STH2
|
;reset-scratch JSR2
|
||||||
|
;scratch-write STH2
|
||||||
|
LIT "1 STH2kr JSR2
|
||||||
|
LIT "b STH2kr JSR2
|
||||||
|
#20 STH2kr JSR2
|
||||||
|
LIT "[ STH2kr JSR2
|
||||||
|
#20 STH2kr JSR2
|
||||||
|
LIT "? STH2kr JSR2
|
||||||
|
;debug-args JSR2
|
||||||
|
#20 STH2kr JSR2
|
||||||
|
STH2kr JSR2
|
||||||
|
#0a STH2r JSR2
|
||||||
|
;scratch-len JSR2 .File/len DEO2
|
||||||
|
;scratch .File/w DEO2
|
||||||
|
JMP2r
|
||||||
|
|
||||||
|
( ;scratch STH2
|
||||||
LIT "1 STH2kr STA INC2r
|
LIT "1 STH2kr STA INC2r
|
||||||
LIT "b STH2kr STA INC2r
|
LIT "b STH2kr STA INC2r
|
||||||
#20 STH2kr STA INC2r
|
#20 STH2kr STA INC2r
|
||||||
|
@ -254,16 +297,29 @@
|
||||||
#0a STH2r STA
|
#0a STH2r STA
|
||||||
#0009 .File/len DEO2
|
#0009 .File/len DEO2
|
||||||
;scratch .File/w DEO2
|
;scratch .File/w DEO2
|
||||||
JMP2r
|
JMP2r )
|
||||||
|
|
||||||
@end-arg-priv ( c^ -> )
|
@end-arg-priv ( c^ -> )
|
||||||
;on-read .Console/vect DEO2
|
;on-read .Console/vect DEO2
|
||||||
( DUP ,debug-priv JSR )
|
DUP ,debug-priv JSR
|
||||||
( TODO: handle these )
|
( TODO: handle these )
|
||||||
POP BRK
|
POP BRK
|
||||||
|
|
||||||
@debug-csi ( c^ -> )
|
@debug-csi ( c^ -> )
|
||||||
;scratch STH2
|
;reset-scratch JSR2
|
||||||
|
;scratch-write STH2
|
||||||
|
LIT "1 STH2kr JSR2
|
||||||
|
LIT "b STH2kr JSR2
|
||||||
|
#20 STH2kr JSR2
|
||||||
|
LIT "[ STH2kr JSR2
|
||||||
|
;debug-args JSR2
|
||||||
|
#20 STH2kr JSR2
|
||||||
|
STH2kr JSR2
|
||||||
|
#0a STH2r JSR2
|
||||||
|
;scratch-len JSR2 .File/len DEO2
|
||||||
|
;scratch .File/w DEO2
|
||||||
|
JMP2r
|
||||||
|
( ;scratch STH2
|
||||||
LIT "1 STH2kr STA INC2r
|
LIT "1 STH2kr STA INC2r
|
||||||
LIT "b STH2kr STA INC2r
|
LIT "b STH2kr STA INC2r
|
||||||
#20 STH2kr STA INC2r
|
#20 STH2kr STA INC2r
|
||||||
|
@ -273,14 +329,14 @@
|
||||||
#0a STH2r STA
|
#0a STH2r STA
|
||||||
#0007 .File/len DEO2
|
#0007 .File/len DEO2
|
||||||
;scratch .File/w DEO2
|
;scratch .File/w DEO2
|
||||||
JMP2r
|
JMP2r )
|
||||||
|
|
||||||
@end-arg ( c^ -> )
|
@end-arg ( c^ -> )
|
||||||
;on-read .Console/vect DEO2
|
;on-read .Console/vect DEO2
|
||||||
( DUP ,debug-csi JSR )
|
DUP ,debug-csi JSR
|
||||||
DUP LIT "d EQU ;exec-move-row JCN2 ( move cursor to row )
|
DUP LIT "d EQU ;exec-move-row JCN2 ( move cursor to row )
|
||||||
DUP LIT "h EQU ;exec-noop JCN2 ( enable line wrap )
|
DUP LIT "h EQU ;exec-set-mode JCN2 ( enable line wrap )
|
||||||
DUP LIT "l EQU ;exec-noop JCN2 ( disable line wrap )
|
DUP LIT "l EQU ;exec-reset-mode JCN2 ( disable line wrap )
|
||||||
DUP LIT "m EQU ;exec-set-attr JCN2 ( set attr )
|
DUP LIT "m EQU ;exec-set-attr JCN2 ( set attr )
|
||||||
DUP LIT "n EQU ;exec-status JCN2 ( get status )
|
DUP LIT "n EQU ;exec-status JCN2 ( get status )
|
||||||
DUP LIT "A EQU ;exec-up JCN2 ( up )
|
DUP LIT "A EQU ;exec-up JCN2 ( up )
|
||||||
|
@ -297,6 +353,13 @@
|
||||||
@exec-noop ( c^ -> )
|
@exec-noop ( c^ -> )
|
||||||
POP BRK
|
POP BRK
|
||||||
|
|
||||||
|
( set mode )
|
||||||
|
( TODO: insert/replace, line wrap, etc. )
|
||||||
|
@exec-set-mode ( c^ -> )
|
||||||
|
POP BRK
|
||||||
|
@exec-reset-mode ( c^ -> )
|
||||||
|
POP BRK
|
||||||
|
|
||||||
@read-attr ( attr* -> )
|
@read-attr ( attr* -> )
|
||||||
DUP2 #0000 NEQ2 ,&!0 JCN #02 .attr STZ ,&done JMP ( reset )
|
DUP2 #0000 NEQ2 ,&!0 JCN #02 .attr STZ ,&done JMP ( reset )
|
||||||
&!0 DUP2 #0001 NEQ2 ,&!1 JCN #03 ,&set-fg JMP ( bright )
|
&!0 DUP2 #0001 NEQ2 ,&!1 JCN #03 ,&set-fg JMP ( bright )
|
||||||
|
@ -415,7 +478,7 @@
|
||||||
|
|
||||||
@on-read-esc ( -> )
|
@on-read-esc ( -> )
|
||||||
.Console/r DEI LIT "[ EQU ;start-csi JCN2
|
.Console/r DEI LIT "[ EQU ;start-csi JCN2
|
||||||
( .Console/r DEI ,debug-esc JSR )
|
.Console/r DEI ,debug-esc JSR
|
||||||
;on-read .Console/vect DEO2
|
;on-read .Console/vect DEO2
|
||||||
;on-read JMP2
|
;on-read JMP2
|
||||||
|
|
||||||
|
@ -589,7 +652,15 @@
|
||||||
POPr POP2 POP2 JMP2r
|
POPr POP2 POP2 JMP2r
|
||||||
|
|
||||||
@debug "debug_term.log 00
|
@debug "debug_term.log 00
|
||||||
@scratch $40
|
@scratch $40 &pos $2
|
||||||
|
|
||||||
|
@scratch-write ( c^ -> )
|
||||||
|
;scratch/pos LDA2 STA
|
||||||
|
;scratch/pos LDA2k INC2 SWP2 STA2 JMP2r
|
||||||
|
@scratch-len ( -> n* )
|
||||||
|
;scratch/pos LDA2 ;scratch SUB2 JMP2r
|
||||||
|
@reset-scratch
|
||||||
|
;scratch ;scratch/pos STA2 JMP2r
|
||||||
|
|
||||||
( store up to 8 arguments for control sequences )
|
( store up to 8 arguments for control sequences )
|
||||||
@args $10 &pos $2
|
@args $10 &pos $2
|
||||||
|
|
Loading…
Reference in New Issue