!--- EDIT # 0174 3 Apr 1981 9:24:30 DR1:[21,2]TECO.TES;277 ! !--- PREVIOUS EDIT 3 Mar 1981 11:33:28 DR1:[21,2]TECO.TES;275 ! ! THING TO KEEP TRACK OF EDIT'S TO MODULES THAT ARE .C .PAS .MAC .SAL .RNO .TEC--BOTH IN THE MODULE AND IN A FILE CALLED EDITHIST.XXX (ONE FOR EACH TYPE). ALSO PUT THE DATE & TIME IN Q-REGISTERS D AND T! ! Q REG 8 HAS THE "COMMENT START" STRING Q-REG 2 & 9 USED FOR CURSOR POSITIONS AND SCRATCH Q REG 7 HAS THE "COMMENT STOP" STRING (IF ANY) Q REG Z HAS NAME OF FILE TO OPEN (EMPTY MEANS NO INPUT FILE) AT START-UP, IT HAS THE MCR COMMAND LINE. Q-REG 7 SET TO 1 IF "/FIND" SWITCH PRESENT ! ! Q-REG 1 GETS BIT-ENCODED FLAGS FROM START-UP Invoke VTEDIT 1 FIND MARK 8 Use Split-screen scroll 128 ! ! Version 35: " " if the bit-flag is set! ! " Look at the "/SC" scroll switch! ! " Look at the "/VT" switch for VTEDIT! ! VTEDIT TAKES PRECEDENCE OVER SCROLL ! 13 10 ! Stolen from the distributed TECO.INI! ! Do announcements if we can... ! Q1U9 ! SAVE/RESTORE Q1! GZJ ::SCCL "S XZ' ! STRIP OFF LEADING "CCL " IN CASE OF RUN TEC/PRM= ! ! If this scope is not a VT-100 or Hazeltine (VT05) skip the announcements ! 0:W-2"L @O!ANN-DONE!' HK 0U3 ET&(1024#512)"N GZJ ::@S%MU%"U ET&1024"N 72*256+40U3 @^U3/W/ | 1:W*256+(2:W)U3 @^U3/-1W/ ' ' ' HK Q3"N J -1,5:W Q3&255< @I% % > J 8L Q3/512-8< @I% % > @I%TECO Version % EO\ J M3 J 5L Q3/512-8< @I% % > @I%... working ...% M3 ! Find the time of day ! -1EJ-7"E ^H"E @O!NOTIME! ' ' -1EJ-4"E 1440-^HU1 | ^H/30U1 ' Q1/60U2 Q2*40+Q1U1 ! Is this user crazy? ! J 13L ! The message is displayed if the current time is between the time on the previous line and the one on the current line ! Q1-0330"L @I%Are you crazy?% L @I%It's after midnight.% @O!MSG! ' Q1-0400"L @O!NOMSG! ' Q1-0430"L @I%Esta muy loco?% L @I%You should be in bed.% @O!MSG! ' Q1-0830"L @I%The early bird% L @I%only gets worms.% @O!MSG! ' Q1-1150"L @O!NOMSG! ' Q1-1230"L @I%Go away.% L @I%It's time for lunch.% @O!MSG! ' Q1-1615"L @O!NOMSG! ' Q1-1630"L @I%Almost time to go home!!% @O!MSG! ' Q1-2000"L @O!NOMSG! ' Q1-2030"L @I%Ding-a-ling-a-ling...% ETU2 0,1ET 7^T 7^T Q2ET Q2&1024"E -2W ' L @I%This terminal is alarmed!% @O!MSG! ' Q1-2130"L @O!NOMSG! ' Q1-2200"L @I%I am very tired.% L @I%Please let me sleep.% @O!MSG! ' Q1-2345"L @O!NOMSG! ' @I%It's almost midnight...% !MSG! J 6L 2R M3 !NOMSG! ! Set the time of day ! @^U1% AM% Q1-1200"E @^U1% M% ' Q1-1200"G Q1-1200U1 @^U1% PM% ' Q1-100"L Q1+1200U1 ' J 13L 2R Q3/512-5+(0^Q)< @I% % > Q1+10000\ 2R @I%:% 3R -D ::@FS%0% %"S R ' 5C G1 ! Find and set the date ! !NOTIME! J 11L Q3/512-11+(0^Q)< @I% % > ^B&31U1 ^B/32&15U2[2 -1EJ-7"E ^B/32&31U1 ^B/1024&15U2[2 ' -1EJ-4"E ^B-((^B/1000)*1000)U1 1U2 Q1-32"L @O!GOTDAY! ' %2 -31%1-29"L @O!GOTDAY! ' ((^B/1000)+2)&3"E Q1-30"L @O!GOTDAY! | -1%1 ' ' %2 -28%1-32"L @O!GOTDAY! ' %2 -31%1-31"L @O!GOTDAY! ' %2 -30%1-32"L @O!GOTDAY! ' %2 -31%1-31"L @O!GOTDAY! ' %2 -30%1-32"L @O!GOTDAY! ' %2 -31%1-32"L @O!GOTDAY! ' %2 -31%1-31"L @O!GOTDAY! ' %2 -30%1-32"L @O!GOTDAY! ' %2 -31%1-31"L @O!GOTDAY! ' %2 -30%1 !GOTDAY! [2' -1%2"E @I% January % @O!GOTMON! ' -1%2"E @I% February % @O!GOTMON! ' -1%2"E @I% March % @O!GOTMON! ' -1%2"E @I% April % @O!GOTMON! ' -1%2"E @I% May % @O!GOTMON! ' -1%2"E @I% June % @O!GOTMON! ' -1%2"E @I% July % @O!GOTMON! ' -1%2"E @I% August % @O!GOTMON! ' -1%2"E @I% September % @O!GOTMON! ' -1%2"E @I% October % @O!GOTMON! ' -1%2"E @I% November % @O!GOTMON! ' @I% December % !GOTMON! Q1\ @I%, % -1EJ-4"E ^B/1000+1970\ | -1EJ-7"E ^B&31+1972\ | ^B/32/16+1900\ ' ' 2R \UD ! GET YEAR ! ]2 ! Figure out the day of the week. Stolen from the AT. example ! Q2+10UA QA/13UB (13*(QA-(QB*12))-1)/5UC QC+77+Q1UC QDU4 Q2-3"L Q4-1U4' Q4/100U5 Q4/400U6 (5*(Q4-(Q5*100)))/4U7 QC+Q7+Q6-Q5-Q5+1U8 -Q8+((Q8/7)*7)U8 J 10L Q3/512-4<@I% %> Q8"E ISun' %8"E IMon' %8"E ITues' %8"E IWednes' %8"E IThurs' %8"E IFri' %8"E ISatur' Iday J 16L M3' !ANN-DONE! HK Q9U1 0U4 0U5 0U6 0U7 0U8 0UD 0UA 0UB 0UC ! Stolen from the distributed TECO.INI! @^UE//^^^EV^B&31\ !DAY! ^B/32&15U9 !MONTH! Q9-1"E I Jan ' Q9-2"E I Feb ' Q9-3"E I Mar ' Q9-4"E I Apr ' Q9-5"E I May ' Q9-6"E I Jun ' Q9-7"E I Jul ' Q9-8"E I Aug ' Q9-9"E I Sept ' Q9-10"E I Oct ' Q9-11"E I Nov ' Q9-12"E I Dec ' ^B/512+1900\ !YEAR! HXDHK I ^HU4 Q4/1800U9 Q9-10"LI 'Q9\ I: ! HOURS! Q9*60U3 Q4/30U2 Q2-Q3U9 Q9-10"LI0' Q9\I: ! MINUTES! Q4-(30*(Q3+Q9))*2U9 Q9-10"LI0' Q9\ ! SECONDS! HXTHK 12W ! HOLD CURSOR TO LINE 12 (MIDDLE OF SCREEN)! ! Set VT100 to ANSI mode & jump scroll ! 0:W-2"E 4,0:W ETU9 0,1ET 27 < 27 [?4l Q9ET' 0,3:W ! SEE-ALL MODE OFF ! 3,5:W ! HOLD-MODE ON & HOLD TOP & BOTTOM 3 LINES ! HKGZ J:S/NOM"S HK OEXIT' 1 ' ::SS 10K :FB="S 0,.-1X0 .,Z-1XZ HK :QZ"N ERQZ' :Q0"N G0 J:S;"S RZK' EWTECF00.TMP;1/-CR HPW HKEF EWQ0' :QZ"N :50A' OQUIT' ! READ FROM MEMORY FILE IF EMPTY ! Z"E :ERTECF00.TMP;1/-CR"S YJ<@FS%S%%;> J:@FS%/FIND%%"S Q1#8U1 1U7' J:S;"S RZK' HX0 HKEC G0 0,0X0 Editing file " HT " 10 13 Q7"N OWMEM' | Can't read TECO's memory file  10 13 OQUIT' | ! ELSE WRITE THE MEMORY FILE ! !WMEM! J<@FS%S%%;>HX0 J:S;"S RZK' EWTECF00.TMP;1/-CR HPW HKEF G0 0,0X0' HXZ I J :FB.TES"S -DIC' J :FB.SAL"U :FB.TEC"S ^^>EV @^U7% !%@^U8%!---% OK' :FB.C"S @^U7% */%@^U8%/*---% OK' :FB.PAS"S @^U7% */%@^U8%/*---% OK' :FB.MAC"U :FB.RNO"U HK EBQZ :QZ"N :50A' OQUIT' @^U8%.COMMENT%'' !K! +.+1,.-1X9 HK EBQZ G*HXZ HKIEDITHIST0,.XW HK EPEA:ERQW.Q9;1"S Y 0U9 Q9-150"G JL50KA OLDEST 50 EDIT-HISTORY LINES DELETED '' EREWQW.Q9;1 ZJ ."E I********* TECO EDIT HISTORY OF *.G9I MODULES **************** 'GDGT GZ HPW HKEF EREW :50A :99FBQ8 EDIT # DDDD "U J:Q7"E L :FB.IDENT"S L''G8I EDIT # 0000 2R .U2@I* *G7 Q2JXP OTIME' XP K 4R\U9 -4D .U2 Q9+1\ Q2-.+4U9 Q9"G Q2J Q9' Q2+4J!TIME! KI GDGTI G* G7I G8I PREVIOUS EDITGP Q1&129"E -T' :20FB EDIT _# DDDD"S @O/NEW/' :20FB EDIT # DDDD"S !NEW! -4D Q2,Q2+4XP GP' J !QUIT! 0,0X0 0,0XW 0,0X7 0,0XY 0,0XP EI Q7"N 13 101010 Finding mark ...  10 13 10' Q1&1"N 0,3:W 4,5:W EIVTEDIT| "E :QZ"N 0,0XZ A'' Q7"N :@FN%~~/\~~ %%"U 7 7 7 7 13 10'' ! TRY TO LOAD IMMED MACRO ! EO-34"G ! :EILB:[2,2]KEYS ! !--- EDIT # 0066 8 Jan 1981 12:04:08 DR0:[2,2]KEYS.TES;77 ! !--- PREVIOUS EDIT 2 Oct 1980 12:06:36 DR1:[300,3]KEYS.TES;76 ! ! Macro to field immediate-mode commands, TECO V35 only ! ! Cursor keys do the natural thing. Any unknown commands ring the bell ! ! 1st arg (type) into A, 2nd arg (char--range 0-31.) into B! ! Type 1 = ESC letter ---> cursor keys & PF1-PF4 ! ! Type 0 = ESC CTRL-CHAR ! ! Type 2 = Alternate keypad ! ! IF it is a scope, and a VT52 or VT100, set alternate keypad mode! ! CRTRUB (for immediate mode keys) was modified to pass the lower 7 bits of the character, instead of only the lower 5 bits. ! ! Q-registers used: ! ! %A - The immediate command type & scratch ! ! %B - The immediate command character & scratch ! ! %C - Scratch ! ! ! ! $A - This macro, to handle immediate commands ! ! $B - The macro which handles screen inserts ! ! $C - Word delimiters & Macro for "ESC-X" Q-register insert ! ET&2"N 0:W-5"L 0,1ET 27^T ^^=^T 1,0ET'' ! EI ! @^UA?UBUA  ! Load up Q-REG C with the word delimiters ! 32^UC 9:^UC 44:^UC 13:^UC 10:^UC 47:^UC @:^UC%()+-*^\!=:<>/.% QA-1"E ! Type 1 ! QB-95"G QB-32UB' ! Convert lower case to upper case ! ! Treat ESC-comma thru ESC-9 as KP-comma thru KP9 (for those terminals which don't have an alternate keypad mode, such as the Hazeltine 1500 ! QB-58"L QB-43"G 64%B @O!TYPE2! '' QB-65"E ."N 0^QUA -QAUA -L^Q-2UB QB-QA"G QAC | QBC'' | QB-66"E Z-."N 0^QUA -QAUA L^Q-2UB QB-QA"G QAC | QBC'' | QB-68"E ."N R' | QB-67"E Z-."N C' | ! PF2 or ESC-F = jump to next word ! QB-70"E 81UB' QB-81"E 1 ."E ZJ' | ! PF1 or PF3 or ESC-R = JUMP TO PREV WORD ! QB-82"E 80UB' QB-80"E 1<-.; R-SGC; R-SGC;> | ! ESC I = SCREEN-TEXT INSERT ! QB-73"E !INS! ET&512"N MB | 3<7>' | ! ESC-X = PUT MARKED REGION IN A Q-REGISTER ! QB-88"E @^UC%X% 0,8ET :^UC 8,0ET 4:W"N 4:W-1U1 Q1-."L Q1,.MC | .,Q1MC'' | ! ESC-K = DELETE MARKED REGION ! QB-75"E 4:W"N 4:W-1U1 Q1-."L Q1,.D | .,Q1D' 0,4:W' | ! ESC-S = Toggle SEEALL mode ! QB-83"E 3:W^_,3:W | ! ESC-W = Toggle screen width (132 vs 80) if this is a VT-100! QB-87"E 0:W-4"E 7:WUA 0,7:W 1:W-80"E 104UB 132,1:W 14,2:W 4UC | 108UB 80,1:W 24,2:W 6UC' 0,1ET 27^T 91^T 63^T 51^T QB^T 1,0ET QA"N QC,7:W'' | 3<7> ''''''''''' | QA-2"E ! TYPE 2--ALTERNATE KEYPAD! !TYPE2! QB-77"E @O!INS! | QB-110"E S | QB-112"E 2:WL | ! KP0 = MOVE WINDOW DOWN ! QB-113"E -(2:W)L | ! KP1 = MOVE WINDOW UP ! QB-115"E 0,32+8ET <1 ."E ZJ' ; .-Z; -1W> 32+8,0ET| ! KP3 = CONTINOUS NEXT WORD (RIGHT) ! QB-114"E 0,32+8ET <1<-.; R-SGC; R-SGC;> ; 0-.; -1W> 32+8,0ET | ! KP2 = CONTINUOUS PREV WORD (LEFT) ! ! KP4 = CONTINUOUS NEXT LINE ! QB-116"E 0,32+8ET 32+8,0ET | ! KP7 = CONTINOUS PREV LINE ! QB-119"E 0,32+8ET <-L ; 0-.; -1W> 32+8,0ET | QB-117"E .-Z"N D' | ! KP5 = DELETE NEXT CHAR ! QB-118"E -2D | ! KP6 = Delete to end-of-line ! QB-108"E MM | ! KP COMMA = EXECUTE MACRO M ! QB-121"E 4:W-1-."E 7 0,4:W | .+1,4:W' | ! KP9 = MARK ! QB-120"E I 2R | ! KP8 = INSERT CR-LF AFTER CURSOR! 3<7^T >''''''''''''' | ! other types, just ignore! '' ? 0,32ED ! Macro to put in Q-Reg B, which will do screen-text-insert ! @^UB?:7W"N -99W' !AGAIN! -256+0:WU0 Q0#32768-32768U1 Q1-127"E ."N R 0AU0 D Q0-10"E F< | Q0-13"E F<' @O!AGAIN!''' Q1-13"E I   F<' Q1-27"N Q1I @O!AGAIN!' ! A NON-ESC CONTROL CHAR ! ! The char was ESC; if next is also, go away, else insert it (unless it is a DEL) & continue ! 0,8ET U1 8,0ET Q1-27"N Q1-127"N 27I Q1I' @O!AGAIN!' 0,1ET 0:W-6"E 126 17 96 2:W+96 126 23 | 27 [24;H 27 [K' 1,0ET ? !End of KEYS.TES! ' ! SCROLL-ON CHECK! Q1&128"N 9W 0,3:W 3,5:W 6,7:W"E Your terminal does not support split-screen scroll  | 0EV '' ''> ! GO AWAY AND RESUME THE NORMAL TECO STARTUP (IN Q-REG Y)! !EXIT!0,0X8 0,0X9