todays work

This commit is contained in:
Oliver Lehmann 2008-05-05 20:10:50 +00:00
parent a7e98e142d
commit 481c3de982
1 changed files with 91 additions and 7 deletions

View File

@ -82,6 +82,14 @@ gebraucht wird
| | +------------------------------------------------------- ld r10,r2 flg wird mit r2 definiert -+ | | +------------------------------------------------------- ld r10,r2 flg wird mit r2 definiert -+
| | | | | |
+-----+------------------------------------------------------------- ld r2,rr12(#44) tp->t_lflag wird in r2 geladen +- flg = tp->t_lflag +-----+------------------------------------------------------------- ld r2,rr12(#44) tp->t_lflag wird in r2 geladen +- flg = tp->t_lflag
// flg = tp->t_lflag;
.line 186 "tt0.c"
ld r2,rr12(#44)
ld r10,r2
*/ */
flg = tp->t_iflag; flg = tp->t_iflag;
switch (ncode) { switch (ncode) {
@ -162,23 +170,99 @@ gebraucht wird
} }
/* TODO - das passt noch nicht 100%ig */ /* TODO - das passt noch nicht 100%ig */
/*
soll:
0060: ea29 31c2 002c
a12a 35c2 002e 0702 0004
0070: bd30 9c28 ee05 a1a2 8da4
5e0e 8000 046e
0080: a7a1 5e0e 8000 04cc 94c2 0103 002e 1424
try #1
0060: ea30 31c2 002c
a12a 35c2 002e 0702 0004
0070: bd30 9c28 e602 070a 0001 94c2 0103 002c
0080: 2f2a 31c2 002c 8d24
5e0e 8000 0478 a7a1
flg = tp->t_lflag; flg = tp->t_lflag;
if (tp->t_state&IEXTPROC) if (flg&IEXTPROC)
flg &= OPOST; flg &= OPOST;
tp->t_lflag = flg; tp->t_lflag = flg;
/* TODO */ try #2
0060: ea2f 31c2 002c bd40 0704 0004 bd50 9c48
0070: e607 94c2 0103 002c 2124 0704 0001 2f24
0080: 31c2 002c 8d24 5e0e 8000 0476 a7a1 5e0e
if (tp->t_lflag&IEXTPROC)
tp->t_lflag &= OPOST;
try #3
0060: ea26 31c2 002c a12a a123 b12a 0702 0004
0070: bd30 9c28 5e0e 8000 0464 a7a1 5e0e 8000
0080: 04bc 94c2 0103 002e 1424 0705 efff 1d24
flg = tp->t_lflag;
if (flg&IEXTPROC) while (ncode--) {
try #4
0060: ea2a 31c2 002c a12a a123 b12a 0702 0004
0070: bd30 9c28 e602 070a 0001 8da4 5e0e 8000
0080: 046c a7a1 5e0e 8000 04c4 94c2 0103 002e
flg = tp->t_lflag;
if (flg&IEXTPROC)
flg &= OPOST;
if (flg) while (ncode--) {
c = *cp++;
try #5
0060: ea29 31c2 002c a12a a123 b12a 0702 0004
0070: bd30 9c28 ee05 a1a2 8da4 5e0e 8000 046a
0080: a7a1 5e0e 8000 04c8 94c2 0103 002e 1424
flg = tp->t_lflag;
if (!(flg&IEXTPROC)) {
if (tp->t_lflag) while (ncode--) { if (tp->t_lflag) while (ncode--) {
[...]
}}
if (!(flg&ICANON)) {
try #6
0060: ea27 31c2 002c 8d24 e609 35c2 002e 0702
0070: 0004 bd30 9c28 5e06 8000 0466 a7a1 5e0e
0080: 8000 04c4 94c2 0103 002e 1424 0705 efff
if (tp->t_lflag) {
if(!(tp->t_state&IEXTPROC)) {
while (ncode--) {
#looks like that is what we want but this looks strange...
0060: ea29 31c2 002c a12a 35c2 002e 0702 0004
0070: bd30 9c28 ee05 a1a2 8da4 5e0e 8000 046a
0080: a7a1 5e0e 8000 04c8 94c2 0103 002e 1424
flg = tp->t_lflag;
if (!(tp->t_state&IEXTPROC))
if (tp->t_lflag) {
*/
flg = tp->t_lflag;
if (!(tp->t_state&IEXTPROC))
if (tp->t_lflag) {
while (ncode--) {
c = *cp++; c = *cp++;
flg = tp->t_lflag; flg = tp->t_lflag;
if (flg&ISIG) { if (flg&ISIG) {
if (c == tp->t_cc[VINTR]) { if (c == tp->t_cc[VINTR]) {
signal(tp->t_pgrp, SIGINT); signal(tp->t_pgrp, SIGINT);
if (!(flg&NOFLSH)) if (!(flg&NOFLSH))
ttyflush(tp, (FREAD|FWRITE)); ttyflush(tp, (FREAD|FWRITE));
if ((flg&ECHO) && if ((flg&ECHO) &&
(flg&ISPCI)) { (flg&ISPCI)) { /* muss bleiben */
for ( csp = "(intr)"; (*csp); csp++) for ( csp = "(intr)"; (*csp); csp++)
ttxput(tp, (long) *csp, 0); ttxput(tp, (long) *csp, 0);
(*tp->t_proc)(tp, T_OUTPUT); (*tp->t_proc)(tp, T_OUTPUT);
@ -189,8 +273,8 @@ gebraucht wird
signal(tp->t_pgrp, SIGQUIT); signal(tp->t_pgrp, SIGQUIT);
if (!(flg&NOFLSH)) if (!(flg&NOFLSH))
ttyflush(tp, (FREAD|FWRITE)); ttyflush(tp, (FREAD|FWRITE));
if ((flg&ECHO) || if ((flg&ECHO) ||
(flg&ISPCI)) { (flg&ISPCI)) { /* muss bleiben */
for ( csp = "(quit)"; (*csp); csp++) for ( csp = "(quit)"; (*csp); csp++)
ttxput(tp,(long) *csp, 0); ttxput(tp,(long) *csp, 0);
(*tp->t_proc)(tp, T_OUTPUT); (*tp->t_proc)(tp, T_OUTPUT);
@ -226,7 +310,7 @@ gebraucht wird
c = '\n'; c = '\n';
} else if (c == tp->t_cc[VEOF]) { } else if (c == tp->t_cc[VEOF]) {
if ((flg & ECHO) && if ((flg & ECHO) &&
(flg & ISPCI)) { (flg & ISPCI)) { /* muss bleiben */
for ( csp = "(eof)\n"; (*csp);) for ( csp = "(eof)\n"; (*csp);)
ttxput(tp, (long) *csp++, 0); ttxput(tp, (long) *csp++, 0);
(*tp->t_proc)(tp, T_OUTPUT); (*tp->t_proc)(tp, T_OUTPUT);
@ -243,7 +327,7 @@ gebraucht wird
ttxput(tp, (long) c, 0); ttxput(tp, (long) c, 0);
(*tp->t_proc)(tp, T_OUTPUT); (*tp->t_proc)(tp, T_OUTPUT);
} }
} }}
if (!(flg&ICANON)) { if (!(flg&ICANON)) {
tp->t_state &= ~RTO; tp->t_state &= ~RTO;
if (tp->t_rawq.c_cc >= tp->t_cc[VMIN]) if (tp->t_rawq.c_cc >= tp->t_cc[VMIN])