!&VIDEO TEXT EDITOR (CONCEPT-100) -- Q-REGISTER USAGE: ! !& ! !& Written by Jeff Wolfeld ! !& Computer Science Department ! !& University of Pennsylvania ! !& ! !& Q1 = POSITION OF BEGINNING OF CURRENT LINE ! !& M1 = UPDATES CURSOR POSITION TO ".". ARG IS OLD "." ! !& Q2 = POSITION OF END OF CURRENT LINE (BEFORE CRLF) ! !& Q3 = POSITION OF MARK ! !& X3 = MOST RECENTLY DELETED TEXT STRING ! !& Q4 = CHARACTER ENTRY MODE (0 = INSERT, 1 = OVERWRITE) ! !& X4 = MOST RECENT SEARCH STRING ! !& M5 = CALCULATE Q1 AND Q2 - USES Q9 ! !& Q5 = POSITION OF BLOCK LIMIT ! !& M6 = SEND AN ESCAPE CODE TO TERMINAL - USES Q9 ! !& Q7 = SCRATCH ! !& X7 = SCRATCH ! !& Q8 = SCRATCH ! !& X8 = SCRATCH ! !& Q9 = SCRATCH ! !& X9 = SCRATCH ! !& Q0 = INPUT CHARACTER ! !& M0 = UPDATE '[overwrite]' INDICATOR AND POSITION CURSOR ! !& QZ = CURRENT LINE NUMBER FROM TOP OF SCREEN ! !& MW = REDISPLAY SCREEN - USES Q8, Q9 ! !& QW = TERMINAL NUMBER ! !& ! !& REGISTERS A THRU M ARE GUARANTEED INTACT AT ALL TIMES ! @^UI`^D [W[Z[0[1[2[3[4[5[6[7[8[9 ETU9 [9 0U3 0U4 32768+512+8+4+2+1ET @^U1/ U8 .U9 Q9-Q8"G Q8J Q9J | [9 ]9 Q9J ' 22-QZ"G QZ-1"G 97M6 QZ+31^T 32^T 0T | MW' | MW '/ @^U5/ .U9 0L .U1 L -1A-10"E .-Q1"N 2R '' .U2 Q9J/ @^U6/U9 27 128+Q9 / @^U0/ 97M6 55 97 Q4"E 19M6 | [overwrite] ' 97M6 QZ+31 32 0T/ @^UW/ .U8 12^T -10L ."G -L 1UZ 1+'0"E 10^T 2UZ ' .U9 22T Q8J [8 0L Q9M1 ]8 Q8J M0/ !& Put concept in programmer mode, cursor pad transmit and load ! !& function keys! UM6 ^^XM6 4M6 !5" 4M6 !7" 4M6 !6"  4M6 !4" 8 4M6 $$# 27 0 8 4M6 $'# 27 0  MW M5 0U4 -1U5 1EJUW !A! 0 0,32768ET U0 Q0-127"E !&DELETE LAST! .-Q1"E OA ' !&NOT PAST BEGINNING OF LINE! Q3-Q1"G -1%3 ' .U7 R :FB "U Q7J 8 17M6 -D -1%2 OA ' Q7J -D -1%2 13 19M6 Q1,Q2T 13 0T OA' 32-Q0"G Q0-9"N OC ' ' Q4-1"E !&OVERWRITE! Q2-.-1"L OB ' 0AU9 D Q0I (Q0-9)*(Q9-9)"E 19M6 .-1,Q2T 13 0T OA ' Q0 OA ' Q4"E !B! !&INSERT! Q2-Q1-79"G OA ' Q0I %2 .U7 R :FB "S Q7J 19M6 .-1,Q2T Q2-."G 13 0T ' | Q7J 16M6 Q0 0M6 ' Q3-Q1"G %3 ' OA ' OA!C! Q0-27"E U0 !&ESCAPE CODE! Q0-="E Q2-."G C !&RIGHT ONE! -1A-9"E 13 0T OA ' =M6 ' OA ' Q0->"E .-Q1"G R !&LEFT ONE! 0A-9"E 13 0T OA ' 8 ' OA ' Q0-<"E Q2-Z"L !&DOWN ONE LINE! L M5 .U7 QZ-21"L 13^T ^^ Q8"G Q4-1"E 97M6 55^T 97^T 19M6 ' ^^?M6 Q8< 18M6 > -Q8L Q8T Q7J -Q8L M5 M0 | Q7J ' OA ' (Q0-10)*(Q0-93)"E !&SCROLL SCREEN UP 4 LINES! .U7 23-QZL Z-."G Q4-1"E 97M6 55^T 97^T 19M6 ' ^^?M6 4< 2M6 > 97M6 50^T 32^T 4T Q7J 4L M5 M0 | Q7J ' OA ' Q0-\"E !&PREV HALF PAGE! -QZ+1L M5 MW OA ' Q0-["E !&NEXT HALF PAGE! 22-QZL M5 MW OA ' Q0&(32)-G"E !&GET DELETED STRING! G3 Q3-.-^S+1"G -^S%3 ' M5 MW OA ' Q0&(32^_)-P"E !&PREVIOUS HALF PAGE! -QZ+1L M5 MW OA ' Q0&(32^_)-N"E !&NEXT HALF PAGE! 22-QZL M5 MW OA ' Q0&(32^_)-M"E !&MIDDLE OF LINE! (Q2-Q1)/2 + Q1J 13 0T OA ' Q0&(32)-S"E !&MARK CURRENT POSITION! .U3 7 OA' Q0&(32)-R"E !&RETURN TO MARKED SPOT! .U8 Q3J Q8U3 M5 Q8M1 OA' Q0&(32)-L"E !&SET BLOCK LIMIT! .U5 7 OA ' Q0&(32)-C"E !© BLOCK! Q5"L OA ' .,Q5X3 7 OA ' Q0&(32)-K"E !&KILL BLOCK! Q5"L OA ' .,Q5X3 .,Q5K -1U5 M5 MW OA ' Q0-:"E M6 OA ' Q0-3"E !&ABORT TECO! ^^xM6 ?M6 22<10> 3M6 HK EK EX ' Q0&(32^_)-U"E !&CONCAT UP! Q1"G Q3-Q1"G -2%3 ' Q1-2,Q1K M5 2M6 ?M6 18M6 .U8 -QZ:S "S 0L T ' 97M6 QZ+31^T 32^T Q8J 19M6 13^T Q1,Q2T 13 0T Q3-Q1+1"G Q3-Q2-1"L Q1U3 ' ' ' OA ' Q0&(32)-D"E !&CONCAT DOWN! Z-Q2-2"G Q3-Q1"G -2%3 ' Q2,Q2+2K M5 .U8 0L 13 T 2M6 Q4-1"E 97M6 54^T 32^T 18M6 ' 23-QZ:S "S 97M6 53^T 32^T 13^T -T ' Q8J 97M6 QZ+31^T 32^T 13^T 0T Q3-Q1+1"G Q3-Q2-1"L Q1U3 ' ' OA '' Q0&(32^_)-X"E !&EXIT TECO! ^^xM6 ?M6 22<10> 3M6 EX ' Q0-?"E !&TOP OF FILE! J M5 MW OA' Q0&(32)-H"E !&HELP! OHELP ' Q0-27"E !&EXIT MACRO! OZ ' OA' Q0+64-D"E !&DELETE NEXT! Q2-."G Q3-Q1"G -1%3 ' .U7 :FB "U Q7J D -1%2 17M6 OA ' Q7J D -1%2 19M6 .,Q2T 13 0T OA'' Q0-13"E !&CARRAIGE RETURN! Q0I I M5 %Z Q3-Q1"G 2%3 ' 19M6 10 18M6 13 Q1,Q2T QZ-21"G ^^?M6 2M6 -1%Z ' M0 OA' Q0+64-B"E !&BREAK LINE! 19M6 10 18M6 13 .,Q2T ;M6 M0 13I 10I 2R .U2 Q3-Q1"G 2%3 ' OA' Q0+64-U"E !&ERASE BEGINNING OF LINE! Q2-."G Q3-Q1"G Q1-.%3 ' 0X3 0K M5 13 19M6 Q1,Q2T 13 OA ' Q3-Q1"G Q1-Q2-2%3 ' 0L X3 K M5 13 2M6 97M6 54 97 19M6 M0 OA' Q0+64-K"E !&ERASE END OF LINE! .-Q1"G Q3-Q1"G .-Q2%3 ' .,Q2X3 .,Q2K .U2 19M6 OA ' Q3-Q1"G Q1-Q2-2%3 ' 0L X3 K M5 2M6 97M6 54 97 19M6 M0 OA' Q0-T+64"E !&MOVE TO BEGINNING OF LINE! Q1J 13 OA' Q0-E+64"E !&MOVE END OF LINE! .,Q2T Q2J OA' Q0-30"E Q1"G !&UP ONE LINE! -L M5 .U7 QZ-2"G 13^T ^^;M6 -1%Z | Q4-1"E 97M6 54^T 32^T 2M6 ' ^^?M6 18M6 1-QZ:S "S 2R 13^T 0T ' Q7J 97M6 31+QZ^T 32^T '' OA' Q0-10"E Q2-Z"L !&DOWN ONE LINE! L M5 .U7 QZ-21"L 13^T ^^  .U7 <U0 Q0-27"E 0; ' Q0-127"E .-Q7"G -D 8 32 8 1+ ' ' 0"E Q0I Q0 ' > .-Q7"G Q7,.X4 ' Q7,.K :SQ4 Q7-.-^S"E C :SQ4 ' 97M6 54 32 19M6 M5 Q7M1 OA' Q0+64-R"E !&REARWARD SEARCH! 97M6 54 32 19M6 Text:  .U7 <U0 Q0-27"E 0; ' Q0-127"E .-Q1"G -D 8 32 8 1+ ' ' 0"E Q0I Q0 ' > .-Q7"G Q7,.X4 ' Q7,.K :-1SQ4"S Q7-."E ^S-1C :-1SQ4 '' 97M6 54 32 19M6 M5 Q7M1 OA' Q0-W+64"E U0 !&WORD COMMAND! Q0-W+64"E !&TOP OF WORD! .U7 1<-1SR; ^S-1C -1SR;> M5 Q7M1 OA ' Q0-8"E !&LEFT ONE WORD! .-2"L OA ' .U7 1<-1SR; .+^S"G ^S-1C -1SR; .+^S"G ^S-1C -1SR; .+^S"G ^S-1C -1SR; '''> M5 Q7M1 OA ' Q0-28"E !&RIGHT ONE WORD! .U7 1 ."E ZJ M5 Q7M1 OA ' R M5 Q7M1 OA ' OA' Q0+64-V"E !&OVERWRITE MODE! Q4-1"E 0U4 1+ ' 0"E 1U4 ' M0 OA' Q0+64-L"E !&TYPE WINDOW! MW OA' Q0+64-G"E !&ARBITRARY TECO COMMAND! 97M6 54 32 19M6 Command:  .U7 ET&(8#1)ET <U0 Q0-27"E ."G -1A-27"E 0; ''' Q0-127"E .-Q7"G -D ET#1ET 97M6 54 52 19M6 ET&(1)ET Q7,.T ' 1+' 0"E Q0I '> Q7,.X7 Q7,.K M7 ET#8#1ET M5 MW OA' OA !HELP! 12 @%^A - top of file |-------------|------------|-------------|--------------| ^B - break line | left word | | | right word | ^C - return to TECO | SEND | F1 | F2 | F3 | ^D - delete char | left cursor | up cursor | down cursor | right cursor | ^E - end of line |-------------|------------|-------------|--------------| ^F - forward search |------------|-------------|--------------| ^G - execute TECO command | up page | | | ^H - left cursor | PAGE | ^ | TAPE | ^J - down cursor | down page | up cursor | up 4 lines | ^K - kill to end of line |------------|-------------|--------------| ^L - repaint screen | | | | ^M - break line after cursor | <- | HOME | -> | ^R - reverse search | left cursor| top of file | right cursor | ^T - beginning of line |------------|-------------|--------------| ^U - kill to start of line |up half page| | | ^V - toggle overwrite/insert modes | SCROLL | v | TAB | ^W^W - start of word |dn half page| down cursor | down 4 lines | ^Z - end of file |------------|-------------|--------------| ESC C - save text ESC L - set text limit ESC X - EX$$ ESC D - concat down ESC M - middle of line ESC ^C - ^C$$ ESC G - restore text ESC R - return to mark ESC ESC - back to TECO ESC H - help ESC S - set mark ESC K - kill text ESC U - concat up Type any character to continue% -13"E ' MW OA !Z! ^^xM6 ?M6 22<10> 3M6 ]9 Q9ET ]9]8]7]6]5]4]3]2]1]0]Z]W `Editor loaded  EI