CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Table of contents 2- 5 SCOPE TYPE DETERMINATION, TABLES, SEQUENCES 2- 11 ASSEMBLY PARAMETERS 3- 1 DEFAULT AND SET UP THE ASSEMBLY PARAMETERS 3- 14 ASSEMBLED FOR RSTS/E SCOPE TYPE DETERMINATION 4- 9 ASSEMBLED TO INCLUDE "WATCH" SUPPORT W/ SCROLLING 4- 27 ASSEMBLED TO INCLUDE IMMEDIATE MODE COMMANDS 5- 14 ASSEMBLED WITH HARDWARE 'SOB' INSTRUCTION 5- 36 ASSEMBLED WITH HARDWARE 'DIV' INSTRUCTION 6- 1 FIXED FORMAT PREAMBLE 7- 1 DETERMINE SCOPE TYPE 10- 1 NECESSARY SEQUENCES FOR RUBOUT AND CONTROL/U 11- 3 NECESSARY TABLES AND SEQUENCES FOR "WATCH" SUPPORT 12- 3 NECESSARY SEQUENCES FOR SCROLLING SUPPORT 13- 1 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 22- 3 NECESSARY SUBROUTINE FOR IMMEDIATE MODE COMMAND SUPPORT 23- 1 NECESSARY SUBROUTINE FOR :^T COMMAND SUPPORT CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 1 1 000001 RSTS = 1 ;ASSEMBLE FOR RSTS/E SCOPE TYPE DETERMINATION 2 000001 I$$SOB = 1 ;ASSEMBLE WITH HARDWARE SOB INSTRUCTION 3 000001 I$$DIV = 1 ;ASSEMBLE WITH HARDWARE DIVIDE INSTRUCTION CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 2 1 .TITLE CRTRUB SCOPE TYPE DETERMINATION, TABLES, SEQUENCES 2 .NLIST TTM 3 .LIST TOC,MEB,BEX 4 .ENABL REG,GBL,LC 5 .SBTTL SCOPE TYPE DETERMINATION, TABLES, SEQUENCES 6 7 ; LAST EDIT ON 02-JUN-83 BY MARK BRAMHALL 8 9 .IDENT /V39.00/ 10 11 .SBTTL ASSEMBLY PARAMETERS 12 13 ; RSTS ASSEMBLE FOR RSTS/E SCOPE TYPE DETERMINATION (D=NO) 14 ; RSX ASSEMBLE FOR RSX-11 SCOPE TYPE DETERMINATION (D=NO) 15 ; RT11 ASSEMBLE FOR RT-11 SCOPE TYPE DETERMINATION (D=NO) 16 ; VMS ASSEMBLE FOR VAX/VMS SCOPE TYPE DETERMINATION (D=NO) 17 18 ; NOTE: YOU MUST SELECT EXACTLY ONE OPERATING SYSTEM FROM THE FOUR ABOVE. 19 20 ; WATCH ASSEMBLE TO INCLUDE "WATCH" SUPPORT (D=YES) 21 ; SCROLL ASSEMBLE TO INCLUDE SCROLLING SUPPORT (D=YES) 22 ; IMMEDC ASSEMBLE TO INCLUDE IMMEDIATE MODE COMMANDS (D=YES) 23 ; I$$SOB ASSEMBLE FOR HARDWARE 'SOB' INSTRUCTION (D=NO) 24 ; I$$DIV ASSEMBLE FOR HARDWARE 'DIV' INSTRUCTION (D=NO) CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 3 DEFAULT AND SET UP THE ASSEMBLY PARAMETERS 1 .SBTTL DEFAULT AND SET UP THE ASSEMBLY PARAMETERS 2 3 .IIF NDF RSTS, RSTS=0 ;DEFAULT TO NOT RSTS/E 4 .IIF NDF RSX, RSX=0 ;DEFAULT TO NOT RSX-11 5 .IIF NDF RT11, RT11=0 ;DEFAULT TO NOT RT-11 6 .IIF NDF VMS, VMS=0 ;DEFAULT TO NOT VAX/VMS 7 8 000000 $$$$$$ = 0 9 10 .IF NE RSTS 11 12 000001 $$$$$$ = $$$$$$+1 13 14 .SBTTL ASSEMBLED FOR RSTS/E SCOPE TYPE DETERMINATION 15 16 .ENDC ;NE RSTS 17 18 .IF NE RSX 19 20 $$$$$$ = $$$$$$+1 21 22 .SBTTL ASSEMBLED FOR RSX-11 SCOPE TYPE DETERMINATION 23 24 .ENDC ;NE RSX 25 26 .IF NE RT11 27 28 $$$$$$ = $$$$$$+1 29 30 .SBTTL ASSEMBLED FOR RT-11 SCOPE TYPE DETERMINATION 31 32 .ENDC ;NE RT11 33 34 .IF NE VMS 35 36 $$$$$$ = $$$$$$+1 37 38 .SBTTL ASSEMBLED FOR VAX/VMS SCOPE TYPE DETERMINATION 39 40 .ENDC ;NE VMS 41 42 .IF NE $$$$$$-1 43 44 .ERROR ;NO OR MORE THAN ONE SCOPE TYPE DETERMINATION ROUTINE SPECIFIED 45 46 .ENDC ;NE $$$$$$-1 CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 4 ASSEMBLED FOR RSTS/E SCOPE TYPE DETERMINATION 1 .IIF NDF WATCH, WATCH=1 ;DEFAULT TO INCLUDING "WATCH" SUPPORT 2 .IIF NDF SCROLL, SCROLL=1 ;DEFAULT TO INCLUDING SCROLL SUPPORT 3 .IIF NDF IMMEDC, IMMEDC=1 ;DEFAULT TO INCLUDING IMMEDIATE MODE 4 5 .IF NE WATCH 6 7 .IF NE SCROLL 8 9 .SBTTL ASSEMBLED TO INCLUDE "WATCH" SUPPORT W/ SCROLLING 10 11 .IFF ;NE SCROLL 12 13 .SBTTL ASSEMBLED TO INCLUDE "WATCH" SUPPORT W/O SCROLLING 14 15 .ENDC ;NE SCROLL 16 17 .IFF ;NE WATCH 18 19 .SBTTL ASSEMBLED TO NOT INCLUDE "WATCH" SUPPORT 20 21 SCROLL = 0 ;TURN OFF SCROLLING IF NO "WATCH" 22 23 .ENDC ;NE WATCH 24 25 .IF NE IMMEDC 26 27 .SBTTL ASSEMBLED TO INCLUDE IMMEDIATE MODE COMMANDS 28 29 .IFF ;NE IMMEDC 30 31 .SBTTL ASSEMBLED TO NOT INCLUDE IMMEDIATE MODE COMMANDS 32 33 .ENDC ;NE IMMEDC CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 5 ASSEMBLED TO INCLUDE IMMEDIATE MODE COMMANDS 1 .IIF NDF I$$SOB, I$$SOB=0 ;DEFAULT TO NO HARDWARE 'SOB' 2 3 .IF EQ I$$SOB 4 5 .MACRO SOB REG,DST 6 DEC REG 7 BNE DST 8 .ENDM SOB 9 10 .SBTTL ASSEMBLED WITHOUT HARDWARE 'SOB' INSTRUCTION 11 12 .IFF ;EQ I$$SOB 13 14 .SBTTL ASSEMBLED WITH HARDWARE 'SOB' INSTRUCTION 15 16 .ENDC ;EQ I$$SOB 17 18 .IIF NDF I$$DIV, I$$DIV=0 ;DEFAULT TO NO HARDWARE 'DIV' 19 20 .IF EQ I$$DIV 21 22 .MACRO DIVR0 AMT 23 MOV AMT,R0 24 JSR PC,DIVR0 25 .ENDM DIVR0 26 27 .SBTTL ASSEMBLED WITHOUT HARDWARE 'DIV' INSTRUCTION 28 29 .IFF ;EQ I$$DIV 30 31 .MACRO DIVR0 AMT 32 CLR R0 33 DIV AMT,R0 34 .ENDM DIVR0 35 36 .SBTTL ASSEMBLED WITH HARDWARE 'DIV' INSTRUCTION 37 38 .ENDC ;EQ I$$DIV CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 6 FIXED FORMAT PREAMBLE 1 .SBTTL FIXED FORMAT PREAMBLE 2 3 000000 .PSECT CRTRUB,RO,I,GBL,REL,OVR 4 5 000000 000403 CRTRUB: BR CRTSET ;BRANCH TO THE SET UP ROUTINE 6 7 .IIF NE .-CRTRUB-2, .ERROR ;ERASE CHARACTER INCORRECTLY LOCATED 8 000002 000174' CRTERC: .WORD ERCTBL ;ERASE CHARACTER SEQUENCE POINTERS POINTER 9 10 .IIF NE .-CRTRUB-4, .ERROR ;CURSOR UP INCORRECTLY LOCATED 11 000004 000214' CRTCUP: .WORD CUPTBL ;CURSOR UP SEQUENCE POINTERS POINTER 12 13 .IIF NE .-CRTRUB-6, .ERROR ; INCORRECTLY LOCATED 14 000006 000252' CRTERL: .WORD ERLTBL ; SEQUENCE POINTERS POINTER CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 7 DETERMINE SCOPE TYPE 1 .SBTTL DETERMINE SCOPE TYPE 2 3 ;+ 4 ; CRTSET - DETERMINE SCOPE TYPE. 5 ; 6 ;*RSTS* R4 -> FIRQB @ +6 WITH CHARACTERISTICS (UU.TRM) OF SCOPE TERMINAL 7 ;*RSX* R4 -> HORIZONTAL SIZE BYTE (@ +0) & TYPE BYTE (@ +2) OF SCOPE TERMINAL 8 ;*RT11* R4 -> TERMINAL STATUS BLOCK @ +6 (M.TWID) OF SCOPE TERMINAL 9 ;*VMS* R4 -> SENSEMODE INFORMATION BUFFER @ +2 (DEVBUFSIZ) OF SCOPE TERMINAL 10 ; CRTYPE(R5) = 0 (I.E., PRE-SET FOR DEFAULT SCOPE SUPPORT) 11 ; 12 ; JSR PC,CRTRUB 13 ; 14 ; R4 = SIZE OF "WATCH" STATIC READ/WRITE REGION (0 => NONE) 15 ; CRTYPE(R5) = 0. FOR SCOPE SUPPORT TYPE #1 (VT52) 16 ; 2. FOR SCOPE SUPPORT TYPE #2 (VT100 IN VT52 MODE) 17 ; 4. FOR SCOPE SUPPORT TYPE #3 (VT100 IN ANSI MODE) 18 ; 6. FOR SCOPE SUPPORT TYPE #4 (VT05) 19 ; 8. FOR SCOPE SUPPORT TYPE #5 (VT102) 20 ; 10. FOR SCOPE SUPPORT TYPE #6 (VK100) 21 ; VTSIZE+RWSIZE(R5) = VERTICAL SIZE IF "WATCH" SUPPORT (10.-127.) 22 ; HTSIZE+RWSIZE(R5) = HORIZONTAL SIZE IF "WATCH" SUPPORT (10.-254.&EVEN) 23 ; SCROLN+RWSIZE(R5) = 0 (NO SCROLLING INITIALLY) 24 ; "ET$CRT" SET IN "ETYPE(R5)" IF SCOPE SUPPORTED FOR RUBOUT & CONTROL/U 25 ; "ET$IAS" SET IN "ETYPE(R5)" IF SCOPE SUPPORTED FOR "WATCH" 26 ;- 27 28 000012 CRTMAX == 10. ;MAXIMUM LEGAL SCOPE TYPE IS 10. 29 30 .MACRO CRTTBL LIST ;MACRO TO BUILD CRTYPE POINTER TABLES 31 $$$$$$ = . 32 .IRP ENTRY, 33 .NLIST MEB 34 .WORD ENTRY 35 .LIST MEB 36 .ENDM ;ENTRY, 37 .IIF NE .-$$$$$$-CRTMAX-2, .ERROR ;INCORRECT NUMBER OF TABLE ENTRIES 38 .ENDM CRTTBL 39 40 000010 010046 CRTSET: MOV R0,-(SP) ;SAVE R0 41 000012 012700 000012 MOV #CRTMAX,R0 ;PRESET SCOPE TYPE TO MAXIMUM 42 43 .IF NE RSTS 44 45 000016 105314 DECB (R4) ;FORM THE TRUE HORIZONTAL SIZE 46 000020 121427 000124 CMPB (R4),#84. ;IS SCOPE A VK100 (WIDTH = 84.)? 47 000024 001413 BEQ 60$ ;YES 48 000026 121427 000110 CMPB (R4),#72. ;IS SCOPE A VT05 (WIDTH = 72.)? 49 000032 001406 BEQ 40$ ;YES 50 000034 105264 000004 INCB 12-6(R4) ;REALLY A VT100 ("XON")? 51 000040 001402 BEQ 30$ ;YES, USE IT IN ANSI MODE 52 .IIF NE .-10$, .ERROR ;ELSE DEFAULT TO VT52... 53 54 .ENDC ;NE RSTS CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 8 DETERMINE SCOPE TYPE 1 .IF NE RSX 2 3 CMPB 2(R4),#T.V102 ;IS SCOPE A VT102? 4 BEQ 50$ ;YES 5 CMPB 2(R4),#T.VT05 ;IS SCOPE A VT05? 6 BEQ 40$ ;YES 7 CMPB 2(R4),#T.V100 ;IS SCOPE A VT100? 8 BEQ 30$ ;YES, USE IT IN ANSI MODE 9 CMPB (R4),#72. ;IS SCOPE A VT05 (WIDTH = 72.)? 10 BEQ 40$ ;YES 11 CMPB 2(R4),#T.VT52 ;IS SCOPE A VT52? 12 BNE 30$ ;NO, DEFAULT TO VT100 IN ANSI MODE... 13 .IIF NE .-10$, .ERROR ;YES 14 15 .ENDC ;NE RSX 16 17 .IF NE RT11 18 19 CMPB (R4),#72. ;IS SCOPE A VT05 (WIDTH = 72.)? 20 BEQ 40$ ;YES 21 BIT #TANSI$,0-6(R4) ;REALLY A VT100 ("ANSI")? 22 BNE 30$ ;YES, USE IT IN ANSI MODE 23 .IIF NE .-10$, .ERROR ;ELSE DEFAULT TO VT52... 24 25 .ENDC ;NE RT11 26 27 .IF NE VMS 28 29 ; 0-2(R4) [BYTE] = DEVCLASS 30 ; 1-2(R4) [BYTE] = DEVTYPE 31 ; 2-2(R4) [WORD] = DEVBUFSIZ (WIDTH) 32 ; 4-2(R4) [LONG] = DEVDEPEND 33 ; 10-2(R4) [LONG] = DEVDEPEND2 34 35 CMPB 1-2(R4),#T$VT05 ;IS SCOPE A VT05 (T$VT05 = TT$_VT05)? 36 BEQ 40$ ;YES 37 BIT <10+2>-2(R4),#T$EDIT ;'EDIT' FUNCTIONS? (T$EDIT = TT2$M_EDIT)? 38 BNE 50$ ;YES, CALL IT A VT102 39 BIT <10+2>-2(R4),#T$DEC ;A 'DEC CRT' (T$DEC = TT2$M_DECCRT)? 40 BNE 30$ ;YES, CALL IT A VT100 IN ANSI MODE 41 BIT <10+2>-2(R4),#T$ANSI ;AN 'ANSI CRT' (T$ANSI = TT2$M_ANSICRT)? 42 BNE 60$ ;YES, CALL IT A VK100 43 .IIF NE .-10$, .ERROR ;ELSE DEFAULT TO VT52... 44 45 .ENDC ;NE VMS CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 9 DETERMINE SCOPE TYPE 1 000042 005740 10$: TST -(R0) ;CHANGE SCOPE TYPE TO 0. (VT52) 2 000044 005740 20$: TST -(R0) ;CHANGE SCOPE TYPE TO 2. (VT100 IN VT52 MODE) 3 000046 005740 30$: TST -(R0) ;CHANGE SCOPE TYPE TO 4. (VT100 IN ANSI MODE) 4 000050 005740 40$: TST -(R0) ;CHANGE SCOPE TYPE TO 6. (VT05) 5 000052 005740 50$: TST -(R0) ;CHANGE SCOPE TYPE TO 8. (VT102) 6 000054 60$: ;LEAVE SCOPE TYPE AS 10. (VK100) 7 .IIF NE 60$-10$-CRTMAX, .ERROR ;INCORRECT SCOPE TYPE FORMATION 8 000054 010065 000000G MOV R0,CRTYPE(R5) ;SET THE SCOPE TYPE 9 000060 052765 000000G 000000G BIS #ET$CRT,ETYPE(R5) ; AND ENABLE SCOPE RUBOUT SUPPORT 10 11 .IF NE WATCH 12 13 000066 016065 000144' 000000C MOV 90$(R0),VTSIZE+RWSIZE(R5) ;SAVE VERTICAL SIZE FOR "WATCH" 14 000074 016065 000160' 000000C MOV 100$(R0),HTSIZE+RWSIZE(R5) ;SAVE HORIZONTAL SIZE FOR "WATCH" 15 000102 001007 BNE 80$ ;THE HORIZONTAL SIZE IS EXPLICIT 16 000104 121427 000204 CMPB (R4),#132. ;IS CURRENT SIZE FROM 132 COLUMN MODE? 17 000110 001402 BEQ 70$ ;YES, GO SET 132 AS THE CORRECT SIZE 18 000112 112714 000120 MOVB #80.,(R4) ;NO, JAM ALL OTHERS TO BE SIMPLY 80 COLUMNS 19 000116 111465 000000C 70$: MOVB (R4),HTSIZE+RWSIZE(R5) ;SET THE CORRECT HORIZONTAL SIZE 20 000122 80$: ;CONTINUE 21 22 .IF NE SCROLL 23 24 000122 005065 000000C CLR SCROLN+RWSIZE(R5) ;SET NOT SCROLLING INITIALLY 25 26 .ENDC ;NE SCROLL 27 28 000126 052765 000000G 000000G BIS #ET$IAS,ETYPE(R5) ;ENABLE "WATCH" SUPPORT 29 000134 012704 000000G MOV #SRWSIZ,R4 ; AND SET SIZE OF STATIC READ/WRITE REGION 30 31 .IFF ;NE WATCH 32 33 CLR R4 ;NO STATIC READ/WRITE REGION SINCE NO "WATCH" 34 35 .IFTF ;NE WATCH 36 37 000140 012600 MOV (SP)+,R0 ;RESTORE R0 38 000142 000207 RTS PC ; AND EXIT 39 40 .IFT ;NE WATCH 41 42 000144 90$: CRTTBL <24.,24.,24.,20.,24.,24.> ;TABLE OF VERTICAL SIZES 43 44 000160 100$: CRTTBL <80.,80., 0 ,72., 0 ,80.> ;TABLE OF HORIZONTAL SIZES 45 46 .ENDC ;NE WATCH CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 10 NECESSARY SEQUENCES FOR RUBOUT AND CONTROL/U 1 .SBTTL NECESSARY SEQUENCES FOR RUBOUT AND CONTROL/U 2 3 000174 ERCTBL: CRTTBL <10$,10$,10$,10$,10$,10$> ;ERASE CHARACTER SEQUENCE POINTERS 4 5 000210 003 10$: .BYTE 30$-20$ ;ALL TYPES => 6 000211 010 20$: .BYTE 010 ; 7 000212 040 .BYTE 040 ; 8 000213 010 .BYTE 010 ; 9 000214 30$: .EVEN 10 11 000214 CUPTBL: CRTTBL <10$,10$,40$,70$,40$,40$> ;CURSOR UP SEQUENCE POINTERS 12 13 000230 002 10$: .BYTE 30$-20$ ;VT52 & VT100(VT52) => 14 000231 033 101 20$: .BYTE 033,'A ; 15 000233 30$: .EVEN 16 17 000234 007 40$: .BYTE 60$-50$ ;VT100(ANSI), VT102, & VK100 => 18 000235 033 134 50$: .BYTE 033,'\ ; ENSURE END OF DCS STRING (IF ANY) 19 000237 033 074 .BYTE 033,'< ; ENSURE ANSI MODE 20 000241 033 133 101 .BYTE 033,'[,'A ; <[> 21 000244 60$: .EVEN 22 23 000244 005 70$: .BYTE 90$-80$ ;VT05 => 24 000245 232 80$: .BYTE 232 ; 25 000246 000 000 000 .BYTE 000,000,000,000 ; 000251 000 26 000252 90$: .EVEN 27 28 000252 ERLTBL: CRTTBL <10$,10$,40$,70$,40$,40$> ; SEQUENCE POINTERS 29 30 000266 004 10$: .BYTE 30$-20$ ;VT52 & VT100(VT52) => 31 000267 015 20$: .BYTE 015 ; ENSURE LEFT MARGIN 32 000270 033 113 .BYTE 033,'K ; 33 000272 015 .BYTE 015 ; ENSURE LEFT MARGIN 34 000273 30$: .EVEN 35 36 000274 011 40$: .BYTE 60$-50$ ;VT100(ANSI), VT102, & VK100 => 37 000275 015 50$: .BYTE 015 ; ENSURE LEFT MARGIN 38 000276 033 134 .BYTE 033,'\ ; ENSURE END OF DCS STRING (IF ANY) 39 000300 033 074 .BYTE 033,'< ; ENSURE ANSI MODE 40 000302 033 133 113 .BYTE 033,'[,'K ; <[> 41 000305 015 .BYTE 015 ; ENSURE LEFT MARGIN 42 000306 60$: .EVEN 43 44 000306 003 70$: .BYTE 90$-80$ ;VT05 => 45 000307 015 80$: .BYTE 015 ; ENSURE LEFT MARGIN 46 000310 236 .BYTE 236 ; 47 000311 015 .BYTE 015 ; ENSURE LEFT MARGIN 48 000312 90$: .EVEN CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 11 NECESSARY SEQUENCES FOR RUBOUT AND CONTROL/U 1 .IF NE WATCH 2 3 .SBTTL NECESSARY TABLES AND SEQUENCES FOR "WATCH" SUPPORT 4 5 000000 .PSECT SCRSEQ,RO,D,GBL,REL,CON 6 7 ; POSTBL - TABLE OF NUMBER OF CHARACTERS NEEDED TO POSITION CURSOR. 8 ; 9 ; THIS TABLE IS USED FOR A CURSOR MOVEMENT OPTIMIZATION: 10 ; IF THE NUMBER OF PLACES TO MOVE THE CURSOR RIGHT (ON THE 11 ; SAME LINE) IS LESS THAN THIS TABLE'S ENTRY, THEN THE 12 ; PRECEEDING TEXT CHARACTERS ARE OUTPUT INSTEAD. THIS ENSURES 13 ; THAT WE ARE ALWAYS SENDING THE MINIMAL NUMBER OF CHARACTERS 14 ; TO THE SCREEN. 15 16 000000 000004 POSTBL::.WORD 1+1+1+1 ; 17 000002 000004 .WORD 1+1+1+1 ; 18 000004 000004 .WORD 1+1+1+1 ;<[><# MOVES> 19 000006 000007 .WORD 1+1+4+1 ;<4 FILL'S> 20 000010 000004 .WORD 1+1+1+1 ;<[><# MOVES> 21 000012 000004 .WORD 1+1+1+1 ;<[><# MOVES> 22 .IIF NE .-POSTBL-CRTMAX-2, .ERROR ;INCORRECT NUMBER OF TABLE ENTRIES 23 24 ; FIXSEQ - CLEAN UP MODES. 25 ; NULL => NO FIXING UP IS NEEDED 26 27 .ENABL LSB 28 29 000014 FIXSEQ::CRTTBL <10$,10$,20$,NULL,20$,30$> ;CLEAN UP MODES (IF ANY) 30 31 000030 033 133 077 10$: .BYTE 033,'[,'?,'2,'L+40 ;ENSURE VT52 MODE 000033 062 154 32 000035 033 134 .BYTE 033,'\ ;EXIT HOLD SCREEN MODE (IF ON) 33 000037 010 010 010 .BYTE 010,010,010,040,040,040 ;CLEAN UP THE "?2L" JUNK... 000042 040 040 040 34 000045 033 107 V52GOF: .BYTE 033,'G ;EXIT GRAPHICS MODE (IF ON) 35 000047 200 .BYTE 200 36 37 000050 033 134 20$: .BYTE 033,'\ ;ENSURE END OF DCS STRING (IF ANY) 38 000052 033 074 .BYTE 033,'< ;ENSURE ANSI MODE 39 000054 033 067 .BYTE 033,'7 ;SAVE CURSOR POSITION 40 000056 033 133 077 .BYTE 033,'[,'?,'6 ;ENSURE ORIGIN MODE 000061 066 41 000062 073 067 154 .BYTE ';,'7,'L+40 ; AND AUTO WRAP ARE OFF 42 000065 033 070 .BYTE 033,'8 ;RESTORE CURSOR POSITION 43 000067 033 134 30$: .BYTE 033,'\ ;ENSURE END OF DCS STRING (IF ANY) 44 000071 033 074 .BYTE 033,'< ;ENSURE ANSI MODE 45 000073 033 133 064 .BYTE 033,'[,'4,'L+40 ;ENSURE REPLACE (NOT INSERT) MODE 000076 154 46 000077 033 133 155 .BYTE 033,'[,'M+40 ;TURN OFF ALL CHARACTER ATTRIBUTES 47 000102 033 051 060 .BYTE 033,'),'0 ;SET GRAPHICS MODE TO GRAPHICS CHARACTER SET 48 000105 017 ANSGOF: .BYTE 017 ;EXIT GRAPHICS MODE (IF ON) 49 000106 200 .BYTE 200 50 51 .EVEN 52 53 .DSABL LSB CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 11-1 NECESSARY TABLES AND SEQUENCES FOR "WATCH" SUPPORT 54 55 ; HOMSEQ - GO TO HOME. 56 57 000110 HOMSEQ::CRTTBL <10$,10$,20$,30$,20$,20$> ;GO TO HOME 58 59 000124 033 110 10$: .BYTE 033,'H ;GO TO HOME 60 000126 200 .BYTE 200 61 62 000127 033 133 110 20$: .BYTE 033,'[,'H ;GO TO HOME 63 000132 200 .BYTE 200 64 65 000133 035 30$: .BYTE 035 ;GO TO HOME 66 000134 000 000 000 FILL4: .BYTE 000,000,000,000 ;4 FILL'S 000137 000 67 000140 200 NULL: .BYTE 200 ;NULL SEQUENCE 68 69 .EVEN 70 71 ; EOLSEQ - ERASE FROM CURSOR TO END OF LINE. 72 73 000142 EOLSEQ::CRTTBL <10$,10$,20$,40$,20$,30$> ;ERASE FROM CURSOR TO END OF LINE 74 75 000156 033 113 10$: .BYTE 033,'K ;ERASE FROM CURSOR TO END OF LINE 76 000160 200 .BYTE 200 77 78 000161 033 043 065 20$: .BYTE 033,'#,'5 ;ENSURE A NORMAL HEIGHT/WIDTH LINE 79 000164 033 133 113 30$: .BYTE 033,'[,'K ;ERASE FROM CURSOR TO END OF LINE 80 000167 200 .BYTE 200 81 82 000170 036 40$: .BYTE 036 ;ERASE FROM CURSOR TO END OF LINE 83 000171 200 .BYTE 200 84 85 .EVEN 86 87 ; EOSSEQ - ERASE FROM CURSOR TO END OF SCREEN. 88 ; NULL => USE MULTIPLE EOLSEQ'S (DUE TO VARIABLE SCROLLING REGION) 89 90 000172 EOSSEQ::CRTTBL <10$,10$,NULL,30$,NULL,20$> ;ERASE FROM CURSOR TO END OF SCREEN 91 92 000206 033 112 10$: .BYTE 033,'J ;ERASE FROM CURSOR TO END OF SCREEN 93 000210 200 .BYTE 200 94 95 000211 033 133 112 20$: .BYTE 033,'[,'J ;ERASE FROM CURSOR TO END OF SCREEN 96 000214 200 .BYTE 200 97 98 000215 037 30$: .BYTE 037 ;ERASE FROM CURSOR TO END OF SCREEN 99 000216 000 000 000 .BYTE 000,000,000,000 ;4 FILL'S 000221 000 100 000222 200 .BYTE 200 101 102 .EVEN 103 104 ; SCUSEQ - SCROLL SCREEN UP (WITH CURSOR AT LOWER LEFT). 105 106 000224 SCUSEQ::CRTTBL <10$,10$,10$,VT05LF,10$,10$> ;SCROLL SCREEN UP 107 108 000240 012 10$: .BYTE 012 ;SCROLL SCREEN UP CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 11-2 NECESSARY TABLES AND SEQUENCES FOR "WATCH" SUPPORT 109 000241 200 .BYTE 200 110 111 000242 012 VT05LF: .BYTE 012 ;SCROLL SCREEN UP 112 000243 000 000 000 .BYTE 000,000,000,000 ;4 FILL'S 000246 000 113 000247 200 .BYTE 200 114 115 .EVEN 116 117 ; SCDSEQ - SCROLL SCREEN DOWN (WITH CURSOR AT UPPER LEFT). 118 ; NULL => FEATURE IS NOT AVAILABLE 119 120 000250 SCDSEQ::CRTTBL <10$,10$,20$,NULL,20$,20$> ;SCROLL SCREEN DOWN 121 122 000264 033 111 10$: .BYTE 033,'I ;SCROLL SCREEN DOWN 123 000266 200 .BYTE 200 124 125 000267 033 115 20$: .BYTE 033,'M ;SCROLL SCREEN DOWN 126 000271 200 .BYTE 200 127 128 .EVEN 129 130 ; GONSEQ - TURN ON GRAPHICS MODE. 131 ; NULL => FEATURE IS NOT AVAILABLE 132 133 000272 GONSEQ::CRTTBL <10$,10$,20$,NULL,20$,20$> ;TURN ON GRAPHICS MODE 134 135 000306 033 106 10$: .BYTE 033,'F ;TURN ON GRAPHICS MODE 136 000310 200 .BYTE 200 137 138 000311 016 20$: .BYTE 016 ;TURN ON GRAPHICS MODE 139 000312 200 .BYTE 200 140 141 .EVEN 142 143 ; GOFSEQ - TURN OFF GRAPHICS MODE. 144 ; NULL => FEATURE IS NOT AVAILABLE 145 146 000314 GOFSEQ::CRTTBL ;GRAPHICS MODE OFF 147 148 ; MONSEQ - TURN ON MARK'D REGION MODE. 149 ; NULL => FEATURE IS NOT AVAILABLE 150 151 000330 MONSEQ::CRTTBL ;TURN ON MARK'D REGION MODE 152 153 000344 033 133 067 10$: .BYTE 033,'[,'7,'M+40 ;SET REVERSE VIDEO ATTRIBUTE 000347 155 154 000350 200 .BYTE 200 155 156 .EVEN 157 158 ; MOFSEQ - TURN OFF MARK'D REGION MODE. 159 ; NULL => FEATURE IS NOT AVAILABLE 160 161 000352 MOFSEQ::CRTTBL ;TURN OFF MARK'D REGION MODE 162 163 000366 033 133 155 10$: .BYTE 033,'[,'M+40 ;CLEAR ALL ATTRIBUTES CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 11-3 NECESSARY TABLES AND SEQUENCES FOR "WATCH" SUPPORT 164 000371 200 .BYTE 200 165 166 .EVEN 167 168 ; GRPTBL - TABLE OF GRAPHICS MODE CHARACTERS. 169 ; 170 ; EACH TABLE CONTAINS 15. BYTES CORRESPONDING TO THE GRAPHICS 171 ; MODE CHARACTERS FOR: 172 ; 173 ; 1) A LINE WHICH OVERFLOWS THE SCREEN'S WIDTH 174 ; 2) CURSOR POSITIONED ON IMMEDIATELY AFTER 175 ; ALSO, "SEE ALL" MODE SYMBOL FOR 176 ; 3) "SEE ALL" MODE SYMBOL FOR CONTROL CHARACTER FLAG 177 ; 4) "SEE ALL" MODE SYMBOL FOR 178 ; 5) AT END OF BUFFER ENDING WITHOUT 179 ; 6) AT END OF BUFFER ENDING WITH 180 ; ALSO, "SEE ALL" MODE SYMBOL FOR 181 ; 7) "SEE ALL" MODE SYMBOL FOR 182 ; 8) "SEE ALL" MODE SYMBOL FOR NULL SPACING 183 ; 9) "SEE ALL" MODE SYMBOL FOR 184 ; 10) "SEE ALL" MODE SYMBOL FOR OVERPRINT 185 ; 11) "SEE ALL" MODE SYMBOL FOR HEX PAIR START 186 ; 12) "SEE ALL" MODE SYMBOL FOR COMPOSE SEQUENCE START 187 ; 13) "SEE ALL" MODE SYMBOL FOR HEX PAIR END 188 ; 14) "SEE ALL" MODE SYMBOL FOR COMPOSE SEQUENCE END 189 ; 15) "SEE ALL" MODE SYMBOL FOR 190 191 000372 GRPTBL::CRTTBL <10$,20$,20$,30$,20$,20$> ;TABLE OF GRAPHICS CHARACTERS 192 193 000406 150 10$: .BYTE 'H+40 ;RIGHT ARROW 194 000407 153 .BYTE 'K+40 ;DOWN ARROW 195 000410 147 .BYTE 'G+40 ;PLUS OR MINUS 196 000411 152 .BYTE 'J+40 ;DIVIDED BY 197 000412 176 .BYTE '^+40 ;PARAGRAPH 198 000413 141 .BYTE 'A+40 ;SOLID RECTANGLE 199 000414 146 .BYTE 'F+40 ;DEGREES 200 000415 151 .BYTE 'I+40 ;ELIPSIS 201 000416 140 .BYTE '@+40 ;"CD" 202 000417 144 .BYTE 'D+40 ;"5/" 203 000420 133 .BYTE '[ ;NO SPECIAL GRAPHIC... 204 000421 074 .BYTE '< ;NO SPECIAL GRAPHIC... 205 000422 135 .BYTE '] ;NO SPECIAL GRAPHIC... 206 000423 076 .BYTE '> ;NO SPECIAL GRAPHIC... 207 000424 143 .BYTE 'C+40 ;"3/" 208 209 000425 150 20$: .BYTE 'H+40 ;"NL" 210 000426 145 .BYTE 'E+40 ;"LF" 211 000427 147 .BYTE 'G+40 ;PLUS OR MINUS 212 000430 151 .BYTE 'I+40 ;"VT" 213 000431 140 .BYTE '@+40 ;DIAMOND 214 000432 143 .BYTE 'C+40 ;"FF" 215 000433 142 .BYTE 'B+40 ;"HT" 216 000434 176 .BYTE '^+40 ;CENTERED DOT 217 000435 144 .BYTE 'D+40 ;"CR" 218 000436 174 .BYTE '\+40 ;NOT EQUALS 219 000437 155 .BYTE 'M+40 ;LOWER LEFT CORNER 220 000440 171 .BYTE 'Y+40 ;LESS THAN OR EQUAL TO CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 11-4 NECESSARY TABLES AND SEQUENCES FOR "WATCH" SUPPORT 221 000441 152 .BYTE 'J+40 ;LOWER RIGHT CORNER 222 000442 172 .BYTE 'Z+40 ;GREATER THAN OR EQUAL TO 223 000443 173 .BYTE '[+40 ;PI 224 225 000444 053 30$: .BYTE '+ ;+ 226 000445 047 .BYTE '' ;' 227 000446 136 .BYTE '^ ;NO GRAPHICS... 228 000447 040 .BYTE 040 ;NO GRAPHICS... 229 000450 045 .BYTE '% ;% 230 000451 100 .BYTE '@ ;@ 231 000452 040 .BYTE 040 ;NO GRAPHICS... 232 000453 040 .BYTE 040 ;NO GRAPHICS... 233 000454 040 .BYTE 040 ;NO GRAPHICS... 234 000455 040 .BYTE 040 ;NO GRAPHICS... 235 000456 133 .BYTE '[ ;NO GRAPHICS... 236 000457 074 .BYTE '< ;NO GRAPHICS... 237 000460 135 .BYTE '] ;NO GRAPHICS... 238 000461 076 .BYTE '> ;NO GRAPHICS... 239 000462 044 .BYTE '$ ;NO GRAPHICS... 240 241 .EVEN CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 12 NECESSARY TABLES AND SEQUENCES FOR "WATCH" SUPPORT 1 .IF NE SCROLL 2 3 .SBTTL NECESSARY SEQUENCES FOR SCROLLING SUPPORT 4 5 ; CONSEQ - TURN ON CURSOR CHARACTER ATTRIBUTES. 6 ; NULL => FEATURE IS NOT AVAILABLE 7 8 000464 CONSEQ::CRTTBL ;CURSOR CHARACTER ATTRIBUTES ON 9 10 000500 033 133 061 10$: .BYTE 033,'[,'1 ;SET BOLD 11 000503 073 067 155 .BYTE ';,'7,'M+40 ; AND REVERSE VIDEO ATTRIBUTES 12 000506 200 .BYTE 200 13 14 .EVEN 15 16 ; COFSEQ - TURN OFF CURSOR CHARACTER ATTRIBUTES. 17 ; NULL => FEATURE IS NOT AVAILABLE 18 19 000510 COFSEQ::CRTTBL ;CURSOR CHARACTER ATTRIBUTES OFF 20 21 000524 033 133 155 10$: .BYTE 033,'[,'M+40 ;CLEAR ALL ATTRIBUTES 22 000527 017 .BYTE 017 ;TURN OFF GRAPHICS MODE 23 000530 200 .BYTE 200 24 25 .EVEN 26 27 ; SAVCUR - SAVE CURSOR POSITION AND ATTRIBUTES. 28 ; NULL => FEATURE IS NOT AVAILABLE 29 30 000532 SAVCUR::CRTTBL ;SAVE CURSOR POSITION/ATTRIBUTES 31 32 000546 033 067 10$: .BYTE 033,'7 ;SAVE CURSOR POSITION AND ATTRIBUTES 33 000550 200 .BYTE 200 34 35 .EVEN 36 37 ; RESCUR - RESTORE CURSOR POSITION AND ATTRIBUTES. 38 ; NULL => FEATURE IS NOT AVAILABLE 39 40 000552 RESCUR::CRTTBL ;RESTORE POSITION/ATTRIBUTES 41 42 000566 033 070 10$: .BYTE 033,'8 ;RESTORE CURSOR POSITION AND ATTRIBUTES 43 000570 200 .BYTE 200 44 45 .EVEN 46 47 .ENDC ;NE SCROLL CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 13 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 .SBTTL NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 2 3 000000 .PSECT SCRSUB,RO,I,GBL,REL,CON 4 5 ;+ 6 ; NWIDTH - A NEW HORIZONTAL SIZE (WIDTH) WAS SET. 7 ; 8 ; R3 = OLD WIDTH 9 ; HTSIZE+RWSIZE(R5) = NEW WIDTH 10 ; 11 ; JSR PC,NWIDTH 12 ; 13 ; R0 = UNDEFINED 14 ; R2 = UNDEFINED 15 ; R3 = UNDEFINED 16 ;- 17 18 000000 NWIDTH:: ;A NEW WIDTH WAS SET 19 20 .IF NE RSTS 21 000000 004767 000000G JSR PC,SAVFQB ;SAVE AND CLEAR THE FIRQB 22 000004 112724 000000G MOVB #UU.TRM,(R4)+ ;SET "SET TERMINAL" FUNCTION 23 000010 012724 MOV (PC)+,(R4)+ ; AND OUR KB: TERMINAL 24 000012 000 377 .BYTE 0,-1 25 000014 116514 000000C MOVB HTSIZE+RWSIZE(R5),(R4) ;SET THE NEW SCOPE WIDTH 26 000020 105214 INCB (R4) ; PLUS 1 27 000022 000000G .UUO ;NOW GO DO IT 28 000024 004736 JSR PC,@(SP)+ ; THEN RESTORE THE FIRQB 29 .ENDC ;NE RSTS 30 31 .IF NE RSX 32 ;ANYTHING TO DO FOR RSX??? 33 .ENDC ;NE RSX 34 35 .IF NE RT11 36 ;NOTHING TO DO FOR RT-11... 37 .ENDC ;NE RT11 38 39 .IF NE VMS 40 EMT $WIDTH ;LET NATIVE MODE KNOW THE NEW WIDTH 41 .ENDC ;NE VMS CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 14 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 000026 004767 000040 JSR PC,20$ ;GET SEQUENCE POINTER FOR OLD WIDTH 2 000032 010346 MOV R3,-(SP) ; AND SAVE IT 3 000034 016503 000000C MOV HTSIZE+RWSIZE(R5),R3 ;GET THE NEW WIDTH 4 000040 004767 000026 JSR PC,20$ ;GET NEW WIDTH'S SEQUENCE POINTER 5 000044 020326 CMP R3,(SP)+ ;ARE THE SEQUENCES THE SAME? 6 000046 001420 BEQ 30$ ;YES, NO NEED TO EMIT THE SEQUENCE 7 000050 004767 000000G JSR PC,DOTYPE ;NO, GO EMIT SEQUENCE TO CHANGE THE WIDTH 8 9 .IF NE SCROLL 10 11 000054 005765 000000C TST SCROLN+RWSIZE(R5) ;IS SCROLLING ENABLED? 12 000060 001402 BEQ 10$ ;NOPE 13 000062 004767 000000G JSR PC,SCREOS ;YEP, POSITION TO BOTTOM OF SCREEN 14 000066 10$: ;CONTINUE 15 16 .ENDC ;NE SCROLL 17 18 000066 000167 000000G JMP TYPEBC ;FORCE OUT ANY PARTIAL BUFFER & EXIT 19 20 000072 020327 000121 20$: CMP R3,#80.+1 ;IS WIDTH 81 COLUMNS OR GREATER? 21 000076 012703 000112' MOV #40$,R3 ;SET SEQUENCE POINTER FOR 80 COLUMN MODE 22 000102 103402 BCS 30$ ;GOOD GUESS? [BCS = BLO] 23 000104 012703 000126' MOV #50$,R3 ;SET SEQUENCE POINTER FOR 132 COLUMN MODE 24 000110 000207 30$: RTS PC ;EXIT 25 26 000112 40$: CRTTBL ;80 COLUMN MODE 27 28 000126 50$: CRTTBL ;132 COLUMN MODE 29 30 000142 033 133 077 60$: .BYTE 033, '[, '?, '3, 'L+40 ;CLEAR 132 COLUMN MODE 000145 063 154 31 000147 200 .BYTE 200 32 33 000150 033 133 077 70$: .BYTE 033, '[, '?, '3, 'H+40 ;SET 132 COLUMN MODE 000153 063 150 34 000155 200 .BYTE 200 35 36 .EVEN CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 15 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 ;+ 2 ; USRSET - SET A USER CONTROLLED PARAMETER. 3 ; 4 ; R0 = USER PARAMETER NUMBER (256.<=X<=32767.) 5 ; R4 = NEW USER PARAMETER VALUE 6 ; 7 ; JSR PC,USRSET 8 ;- 9 10 000156 USRSET:: ;SET A USER CONTROLLED PARAMETER 11 000156 000207 RTS PC ;EXIT 12 13 ;+ 14 ; USRPRM - READ A USER CONTROLLED PARAMETER. 15 ; 16 ; R0 = 0 17 ; R4 = USER PARAMETER NUMBER (256.<=X<=32767.) 18 ; 19 ; JSR PC,USRPRM 20 ; 21 ; R0 = USER PARAMETER VALUE 22 ;- 23 24 000160 USRPRM:: ;READ A USER CONTROLLED PARAMETER 25 000160 000207 RTS PC ;EXIT CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 16 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 ;+ 2 ; DIGITS - OUTPUT ASCII DIGITS. 3 ; 4 ; R1 = NUMBER TO OUTPUT, 0 BASED 5 ; 6 ; JSR PC,DIGITS 7 ; 8 ; R0 = UNDEFINED 9 ; R1 = UNDEFINED 10 ;- 11 12 000162 005201 DIGITS: INC R1 ;ANSI WANTS NUMBER "1" BASED 13 000164 DIVR0 #100. ;DIVIDE FOR HUNDREDS 000164 005000 CLR R0 000166 071027 000144 DIV #100.,R0 14 000172 010046 MOV R0,-(SP) ;SAVE HUNDREDS 15 000174 001402 BEQ 10$ ;NO HUNDREDS, SO SKIP THEM 16 000176 004767 000020 JSR PC,30$ ;HUNDREDS, GO OUTPUT IT 17 000202 10$: DIVR0 #10. ;DIVIDE FOR TENS 000202 005000 CLR R0 000204 071027 000012 DIV #10.,R0 18 000210 050026 BIS R0,(SP)+ ;DO TENS AND/OR HUNDREDS EXIST? 19 000212 001402 BEQ 20$ ;NOPE 20 000214 004767 000002 JSR PC,30$ ;YEP, GO OUTPUT THE TENS 21 000220 010100 20$: MOV R1,R0 ;SET UNITS 22 000222 062700 000060 30$: ADD #'0,R0 ;MAKE INTO AN ASCII DIGIT 23 000226 000167 000000G JMP TYPEBF ;OUTPUT CHARACTER, THEN EXIT CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 17 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 ;+ 2 ; DIRECT - DO DIRECT CURSOR ADDRESSING. 3 ; 4 ; R0 = DESIRED LINE NUMBER (ROW), 0 BASED 5 ; R2 = DESIRED COLUMN NUMBER, 0 BASED 6 ; PRELIN+RWSIZE(R5) = CURRENT CURSOR LINE NUMBER (ROW), 0 BASED 7 ; PRECOL+RWSIZE(R5) = CURRENT CURSOR COLUMN NUMBER, 0 BASED 8 ; 9 ; JSR PC,DIRECT 10 ; 11 ; R0 = UNDEFINED 12 ; R3 = UNDEFINED 13 ;- 14 15 000232 010146 DIRECT::MOV R1,-(SP) ;SAVE R1 16 000234 016501 000000G MOV CRTYPE(R5),R1 ;GET THE SCOPE TYPE 17 000240 010046 MOV R0,-(SP) ;COPY DESIRED LINE NUMBER (ROW) 18 000242 166516 000000C SUB PRELIN+RWSIZE(R5),(SP) ; AND FIND # LINES (ROWS) TO MOVE 19 000246 001424 BEQ 40$ ;NONE, LINE (ROW) IS ALREADY CORRECT 20 000250 021627 000001 CMP (SP),#1 ;SOME, ARE WE ONLY GOING TO THE NEXT LINE? 21 000254 001002 BNE 10$ ;NOPE, WE MUST GO FURTHER THAN THAT... 22 000256 005702 TST R2 ;ARE WE GOING TO THE NEXT LINE'S FIRST COLUMN? 23 000260 001407 BEQ 20$ ;YES, A SIMPLE WILL DO THAT 24 000262 020265 000000C 10$: CMP R2,PRECOL+RWSIZE(R5) ;IS COLUMN NUMBER ALREADY CORRECT? 25 000266 001046 BNE 90$ ;NOPE, DO DIRECT CURSOR ADDRESSING 26 000270 012703 000544' MOV #180$,R3 ;SET SEQUENCE FOR CURSOR DOWN (& UP) 27 000274 005716 TST (SP) ;CHECK THAT MOVEMENT DIRECTION 28 000276 000422 BR 60$ ; AND GO USE IT 29 30 000300 012700 000012 20$: MOV #012,R0 ;SET CHARACTER TO 31 000304 004767 000000G JSR PC,TYPEBF ; AND GO OUTPUT IT 32 000310 005726 30$: TST (SP)+ ;JUNK THAT MOVEMENT AMOUNT 33 000312 012700 177755 MOV #015-40,R0 ;SET FINAL CHARACTER TO (LESS 40) 34 000316 000454 BR 110$ ; AND GO EXIT OUTPUTTING FINAL 35 36 000320 005701 40$: TST R1 ;CHECK FOR VT52 (0.) SCOPE TYPE 37 000322 001002 BNE 50$ ;NOT A VT52 38 000324 012700 000030 MOV #24.,R0 ;THIS IS TO HELP STOP VT52 FROM FLICKER... 39 000330 012703 000574' 50$: MOV #190$,R3 ;SET SEQUENCE FOR CURSOR RIGHT (& LEFT) 40 000334 010216 MOV R2,(SP) ;COPY DESIRED COLUMN NUMBER 41 000336 001764 BEQ 30$ ;GOING TO FIRST COLUMN, TREAT SPECIALLY 42 000340 166516 000000C SUB PRECOL+RWSIZE(R5),(SP) ;ELSE FIND # COLUMNS TO MOVE 43 000344 100003 60$: BPL 70$ ;WE NEED TO MOVE THE CURSOR DOWN -OR- RIGHT 44 000346 005416 NEG (SP) ;CORRECT FOR A POSITIVE MOVEMENT AMOUNT 45 000350 062703 000014 ADD #CRTMAX+2,R3 ; AND CHANGE TO CURSOR UP -OR- LEFT 46 000354 021661 000624' 70$: CMP (SP),200$(R1) ;WITHIN THE MAXIMUM RANGE? 47 000360 103011 BHIS 90$ ;NOPE, DO DIRECT CURSOR ADDRESSING 48 000362 012600 MOV (SP)+,R0 ;YEP, PUT THE COUNT INTO A REGISTER 49 000364 005761 000640' TST 210$(R1) ;ANSI MODE? 50 000370 001034 BNE 130$ ;YES, DO DIFFERENTLY 51 000372 004767 000000G 80$: JSR PC,DOTYPE ;DO 1 CURSOR DOWN/UP -OR- RIGHT/LEFT 52 000376 077003 SOB R0,80$ ; AND LOOP... 53 000400 012601 MOV (SP)+,R1 ;RESTORE R1 54 000402 000207 RTS PC ; AND EXIT CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 18 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 000404 005726 90$: TST (SP)+ ;JUNK THAT MOVEMENT AMOUNT 2 000406 012703 000654' MOV #220$,R3 ;SET SEQUENCE FOR DIRECT CURSOR ADDRESSING 3 000412 004767 000000G JSR PC,DOTYPE ; AND START DIRECT CURSOR ADDRESSING 4 000416 005761 000640' TST 210$(R1) ;ANSI MODE? 5 000422 001030 BNE 140$ ;YES, DO DIFFERENTLY 6 000424 004767 000022 JSR PC,120$ ;NO, ADJUST AND OUTPUT LINE NUMBER (ROW) 7 000430 020127 000006 CMP R1,#6. ;VT05 (6.) NEEDING FILL? 8 000434 001004 BNE 100$ ;NOPE 9 000436 012703 000670' MOV #230$,R3 ;YEP, SET FILLER SEQUENCE 10 000442 004767 000000G JSR PC,DOTYPE ; AND GO DO IT 11 000446 010200 100$: MOV R2,R0 ;NOW SET COLUMN NUMBER 12 000450 012601 110$: MOV (SP)+,R1 ;RESTORE R1 13 000452 062700 000040 120$: ADD #40,R0 ;ADJUST LINE (ROW) OR COLUMN NUMBER 14 000456 000167 000000G JMP TYPEBF ;OUTPUT CHARACTER, THEN EXIT 15 16 000462 060103 130$: ADD R1,R3 ;INDEX BY THE SCOPE TYPE 17 000464 011346 MOV (R3),-(SP) ; AND STACK THE FINAL CHARACTER (LESS 40) 18 000466 012703 000654' MOV #220$,R3 ;SET START OF MOVE SEQUENCE 19 000472 004767 000000G JSR PC,DOTYPE ; AND GO DO IT 20 000476 010001 MOV R0,R1 ;COPY THE MOVE COUNT 21 000500 005301 DEC R1 ; MAKING IT 0 BASED 22 000502 000413 BR 160$ ;NOW GO DO IT 23 24 000504 016146 000640' 140$: MOV 210$(R1),-(SP) ;SET FINAL CHARACTER (LESS 40) 25 000510 010001 MOV R0,R1 ;COPY THE LINE NUMBER (ROW) 26 000512 001402 BEQ 150$ ;NO NEED FOR OUTPUT IF WOULD BE "1" 27 000514 004767 177442 JSR PC,DIGITS ;ELSE OUTPUT AS ASCII DIGITS 28 000520 012700 000073 150$: MOV #';,R0 ;SET THE SEPERATOR 29 000524 004767 000000G JSR PC,TYPEBF ; AND OUTPUT IT 30 000530 010201 MOV R2,R1 ;COPY THE COLUMN NUMBER 31 000532 001402 160$: BEQ 170$ ;NO NEED FOR OUTPUT IF WOULD BE "1" 32 000534 004767 177422 JSR PC,DIGITS ;ELSE OUTPUT AS ASCII DIGITS 33 000540 012600 170$: MOV (SP)+,R0 ;SET THE FINAL CHARACTER (LESS 40) 34 000542 000742 BR 110$ ; AND GO EXIT OUTPUTTING FINAL CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 19 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 000544 180$: CRTTBL <240$,240$,'B-40,VT05LF,'B-40,'B-40> ;CURSOR DOWN 2 000560 CRTTBL <250$,250$,'A-40,260$, 'A-40,'A-40> ;CURSOR UP 3 4 000574 190$: CRTTBL <270$,270$,'C-40,280$,'C-40,'C-40> ;CURSOR RIGHT 5 000610 CRTTBL <290$,290$,'D-40,300$,'D-40,'D-40> ;CURSOR LEFT 6 7 000624 000002 200$: .WORD <2+1+0+1>/2 ; VS. N*() 8 000626 000002 .WORD <2+1+0+1>/2 ; VS. N*() 9 000630 177777 .WORD -1 ;<[><;> VS. <[> 10 000632 000007 .WORD <1+1+4+1>/1 ;<^N><0><0><0><0> VS. N*(<^X/BS>) 11 000634 177777 .WORD -1 ;<[><;> VS. <[> 12 000636 177777 .WORD -1 ;<[><;> VS. <[> 13 .IIF NE .-200$-CRTMAX-2, .ERROR ;INCORRECT NUMBER OF TABLE ENTRIES 14 15 000640 210$: CRTTBL <0, 0, 'H-40,0, 'H-40,'H-40> ;ANSI MODE 'DCA' FINAL (-40) 16 17 000654 220$: CRTTBL <310$,310$, ANSI,320$, ANSI, ANSI> ;START 'DCA' SEQUENCE 18 19 000670 230$: CRTTBL ;FILL AS REQUIRED 20 21 000704 033 102 240$: .BYTE 033,'B ;VT52 & VT100(VT52) => 22 000706 200 .BYTE 200 23 24 000707 033 101 250$: .BYTE 033,'A ;VT52 & VT100(VT52) => 25 000711 200 .BYTE 200 26 27 000712 032 000 260$: .BYTE 032, ;VT05 => 28 000714 000 000 000 .BYTE 000,000,000,000 ; & 4 FILL'S 000717 000 29 000720 200 .BYTE 200 30 31 000721 033 103 270$: .BYTE 033,'C ;VT52 & VT100(VT52) => 32 000723 200 .BYTE 200 33 34 000724 030 280$: .BYTE 030 ;VT05 => 35 000725 200 .BYTE 200 36 37 000726 033 104 290$: .BYTE 033,'D ;VT52 & VT100(VT52) => 38 000730 200 .BYTE 200 39 40 000731 010 300$: .BYTE 010 ;VT05 => 41 000732 200 .BYTE 200 42 43 000733 033 131 310$: .BYTE 033,'Y ;VT52 & VT100(VT52) => 44 000735 200 .BYTE 200 45 46 000736 016 320$: .BYTE 016 ;VT05 => 47 000737 200 .BYTE 200 48 49 000740 033 133 ANSI: .BYTE 033,'[ ;VT100(ANSI), VT102, & VK100 => <[> 50 000742 200 .BYTE 200 51 52 .EVEN CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 20 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 .IF NE SCROLL 2 3 ;+ 4 ; SETSCR - SET SCROLLING REGION. 5 ; 6 ; R1 = STARTING LINE NUMBER (ROW) OF SCROLLING REGION, 0 BASED 7 ; R2 = SIZE OF SCROLLING REGION 8 ; 9 ; JSR PC,SETSCR 10 ; 11 ; R0 = UNDEFINED 12 ; R1 = UNDEFINED 13 ; R2 = UNDEFINED 14 ; R3 = UNDEFINED 15 ;- 16 17 000744 012703 001016' SETSCR::MOV #10$,R3 ;SET SEQUENCE TO START THE OPERATION 18 000750 004767 000000G JSR PC,DOTYPE ; AND GO DO IT 19 000754 060102 ADD R1,R2 ;CALCULATE THE ENDING SCROLLED LINE (ROW) +1 20 000756 004767 177200 JSR PC,DIGITS ;EMIT THE STARTING LINE (ROW) AS DIGITS 21 000762 012700 000073 MOV #';,R0 ;SET THE ";" SEPARATOR 22 000766 004767 000000G JSR PC,TYPEBF ; AND OUTPUT IT 23 000772 010201 MOV R2,R1 ;SET THE ENDING SCROLLED LINE (ROW) +1 24 000774 005301 DEC R1 ; THEN CORRECT IT 25 000776 004767 177160 JSR PC,DIGITS ;EMIT ENDING LINE (ROW) AS DIGITS 26 001002 012703 001032' MOV #20$,R3 ;SET SEQUENCE TO END THE OPERATION 27 001006 004767 000000G JSR PC,DOTYPE ; AND GO DO IT 28 001012 000167 000000G JMP SCRHOM ;EXIT BY GOING TO HOME... 29 30 001016 10$: CRTTBL ;SET SCROLLING SEQUENCE START 31 32 001032 20$: CRTTBL ;SET SCROLLING SEQUENCE END 33 34 001046 162 30$: .BYTE 'R+40 ;END THE ANSI SCROLLING REGION SEQUENCE 35 001047 200 .BYTE 200 36 37 .EVEN 38 39 .ENDC ;NE SCROLL CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 21 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 .IF EQ I$$DIV 2 3 DIVR0: MOV R0,-(SP) ;SAVE DIVISOR ON THE STACK 4 MOV #-1,R0 ;PRE-SET BIASED RESULT 5 10$: INC R0 ;COUNT 1 MORE IN RESULT 6 SUB (SP),R1 ; AND DO TRIAL SUBTRACT FROM DIVIDEND 7 BHIS 10$ ;NO UNDERFLOW YET... 8 ADD (SP)+,R1 ;UNDERFLOW, CORRECT REMAINDER 9 RTS PC ; AND EXIT 10 11 .ENDC ;EQ I$$DIV 12 13 .ENDC ;NE WATCH CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 22 NECESSARY SUBROUTINES FOR "WATCH" SUPPORT 1 .IF NE IMMEDC 2 3 .SBTTL NECESSARY SUBROUTINE FOR IMMEDIATE MODE COMMAND SUPPORT 4 5 000000 .PSECT TECOLS,RO,I,GBL,REL,OVR 6 7 000000 005765 000000G TECOLS: TST QPNTR(R5) ;IS THIS THE FIRST INPUT REQUEST? 8 000004 001020 BNE 10$ ;NOPE, CAN'T BE IMMEDIATE MODE COMMAND 9 000006 032765 000000G 000000G BIT #ED$IMD,EDIT(R5) ;ARE IMMEDIATE MODE COMMANDS ALLOWED? 10 000014 001414 BEQ 10$ ;NOPE, QUIT RIGHT NOW 11 000016 005765 000000G TST INDIR(R5) ;AN INDIRECT COMMAND FILE ACTIVE? 12 000022 001011 BNE 10$ ;YEP, NO IMMEDIATE COMMANDS WANTED HERE 13 000024 016546 000000G MOV QZ(R5),-(SP) ;GET CURRENT Q-REG ACTIVE STORAGE SIZE 14 000030 062716 000024 ADD #20.,(SP) ; AND ADD IN A FUDGE FACTOR 15 000034 022665 000000G CMP (SP)+,QMAX(R5) ;IS ENOUGH SPACE FREE TO PLAY WITH? 16 000040 103002 BHIS 10$ ;NOT ENOUGH SPACE, DON'T TRY FOR AN IMMEDIATE 17 000042 012746 000052' MOV #20$,-(SP) ;THERE'S ENOUGH SPACE, CHECK FOR IMMEDIATES 18 000046 000167 000000G 10$: JMP LISTEN ;GO CALL THE REAL 'LISTEN' ROUTINE 19 20 000052 004767 000050' 20$: JSR PC,DECODE ;GO POSSIBLY DECODE A SEQUENCE 21 000056 103443 BCS 60$ ;NO SEQUENCE WAS DECODED... 22 000060 010046 MOV R0,-(SP) ;SAVE THE SEQUENCE FINAL CODE/VALUE 23 000062 010146 MOV R1,-(SP) ;SAVE THE SEQUENCE TYPE CODE 24 000064 032765 000000G 000000G BIT #ET$CRT,ETYPE(R5) ;SCOPE TYPE TERMINAL? 25 000072 001406 BEQ 30$ ;NO 26 000074 004767 000000G JSR PC,DELLIN ;YES, ERASE TECO'S PROMPT 27 000100 012700 000012 MOV #012,R0 ;SET A "DELETED" CHARACTER OF 28 000104 004767 000000G JSR PC,DELCHR ; TO MOVE THE CURSOR UP A LINE 29 000110 005065 000000G 30$: CLR ERRPOS(R5) ;NO ERROR POSITION IF STORING 30 000114 005065 000000G CLR QLCMD(R5) ;NO LAST COMMAND IF STORING ANYTHING 31 000120 016501 000000G MOV QZ(R5),R1 ;GET RELATIVE PLACE TO STORE CHARACTERS 32 000124 066501 000000G ADD QRSTOR(R5),R1 ; AND MAKE IT ABSOLUTE 33 000130 012702 000170' MOV #70$,R2 ;GET POINTER TO THE COMMAND STRING LAYOUT 34 000134 005265 000000G 40$: INC QZ(R5) ;INDICATE 1 MORE IN COMMAND 35 000140 005265 000000G INC QPNTR(R5) ; Q-REGISTER 36 000144 112221 MOVB (R2)+,(R1)+ ;STORE NEXT COMMAND STRING CHARACTER 37 000146 001002 BNE 50$ ;IT'S A REGULAR CHARACTER 38 000150 112661 177777 MOVB (SP)+,-1(R1) ;SET TYPE CODE FIRST, CHARACTER CODE SECOND 39 000154 105712 50$: TSTB (R2) ;JUST STORED THE FINAL ? 40 000156 100366 BPL 40$ ;NOPE, LOOP... 41 000160 114100 MOVB -(R1),R0 ;YEP, SET TO RETURN WITH AN 42 000162 010065 000000G MOV R0,TEMP(R5) ;SAVE CHARACTER LAST STORED (THE ) 43 000166 000207 60$: RTS PC ;RETURN 44 45 000170 036 000 054 70$: .BYTE '^&37, 0, ',, '^&37, 0, 'M, 'A, 033, -1 ;PROTOTYPE COMMAND 000173 036 000 115 000176 101 033 377 46 .EVEN CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 23 NECESSARY SUBROUTINE FOR :^T COMMAND SUPPORT 1 .SBTTL NECESSARY SUBROUTINE FOR :^T COMMAND SUPPORT 2 3 000000 .PSECT TECOLT,RO,I,GBL,REL,OVR 4 5 000000 004767 000000G TECOLT: JSR PC,TLISTN ;GET THE FIRST CHARACTER 6 000004 005001 CLR R1 ;SET CODE 0 FOR NORMAL CHARACTER 7 000006 030027 177540 BIT R0,#^C<237> ;A CONTROL CHARACTER? 8 000012 001010 BNE 10$ ;NOPE, GO EXIT WITH CODE 0 9 000014 005201 INC R1 ;SET CODE 1 FOR CONTROL CHARACTER 10 000016 020027 000015 CMP R0,#015 ;IS IT ? 11 000022 001405 BEQ 20$ ;YES, GO READ THE AFTER THE 12 000024 004767 000020 JSR PC,DECODE ;GO POSSIBLY DECODE A SEQUENCE 13 000030 103401 BCS 10$ ;NO SEQUENCE DECODED... 14 000032 122121 CMPB (R1)+,(R1)+ ;BIAS THE SEQUENCE TYPE CODE BY TWO 15 000034 000207 10$: RTS PC ;EXIT 16 17 000036 004767 000000G 20$: JSR PC,TLISTN ;READ THE AFTER THE 18 000042 012700 000015 MOV #015,R0 ;RESTORE RETURNED CODE AS 19 000046 000207 RTS PC ; AND EXIT CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 24 NECESSARY SUBROUTINE FOR :^T COMMAND SUPPORT 1 ;+ 2 ; DECODE - DECODE ESCAPE/SS3/CSI SEQUENCE IF NEEDED. 3 ; 4 ; R0 = ORIGINAL CHARACTER (, , OR => DECODE) 5 ; 6 ; JSR PC,DECODE 7 ; 8 ; IF NO DECODE (NOT , , OR ) THEN 9 ; 10 ; C-BIT = 1 11 ; R0 = ORIGINAL CHARACTER 12 ; 13 ; IF DECODED (, , OR ) THEN 14 ; 15 ; C-BIT = 0 16 ; R0 = SEQUENCE FINAL CODE/VALUE 17 ; R1 = SEQUENCE TYPE CODE: 18 ; 0 => 19 ; 1 => 20 ; 21 ; 22 ; <[> 23 ; 24 ; 2 => 25 ; 26 ; 27 ; 3 => <[> 28 ; 29 ; R2 = UNDEFINED 30 ;- 31 32 000050 105765 000000G DECODE: TSTB SEQCTL(R5) ;IN ESCAPE SEQUENCE MODE? 33 000054 001410 BEQ 5$ ;NO => CONTINUE 34 000056 020027 000033 CMP R0,#033 ;YES: ARE WE SEEING AN ESCAPE? 35 000062 001503 BEQ 80$ ;YES (IT CAME FROM PRIV DELIM) => KEEP IT, C=1 36 000064 120027 000200 CMPB R0,#200 ;NO: IS IT START OF ESCAPE SEQUENCE, THEN? 37 000070 001002 BNE 5$ ;NO => GO SEE WHAT ELSE IT MIGHT BE 38 000072 012700 000033 MOV #033,R0 ;YES: TELL DECODE WE'VE AN "ESCAPE" 39 000076 020027 000033 5$: CMP R0,#033 ;IS IT ? 40 000102 001406 BEQ 10$ ;YES, SO GO DECODE 41 000104 120027 000217 CMPB R0,#217 ;IS IT ? 42 000110 001403 BEQ 10$ ;YES, SO GO DECODE 43 000112 120027 000233 CMPB R0,#233 ;IS IT ? 44 000116 001065 BNE 80$ ;NONE OF THE ABOVE, GO EXIT C=1 CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 25 NECESSARY SUBROUTINE FOR :^T COMMAND SUPPORT 1 000120 016546 000000G 10$: MOV ETYPE(R5),-(SP) ;SAVE ORIGINAL "ET" FLAG 2 000124 052765 000000C 000000G BIS #ET$CC!ET$LC,ETYPE(R5) ;CONTROL/C TRAP, ENABLE LOWER CASE 3 000132 042765 000000G 000000G BIC #ET$CKE,ETYPE(R5) ;ALWAYS STALL 4 000140 005001 CLR R1 ;SET CODE FOR (0) 5 000142 105700 TSTB R0 ;WAS INITIAL CHARACTER OR ? 6 000144 100454 BMI 90$ ;YEP, DO SPECIAL PROCESSING... 7 000146 004767 000000G JSR PC,TLISTN ;READ THE NEXT CHARACTER 8 000152 030027 177540 BIT R0,#^C<237> ;A CONTROL CHARACTER? 9 000156 001430 BEQ 60$ ;YEP, THAT'S CODE 0 10 000160 005201 INC R1 ;NOPE, SET CODE FOR (1) 11 000162 020027 000133 CMP R0,#'[ ;IS IT <[>? 12 000166 001447 BEQ 100$ ;YES, WE MUST DO FURTHER CHECKING... 13 000170 020027 000077 CMP R0,#'? ;IS IT ? 14 000174 001414 BEQ 30$ ;YES, THAT'S CODE 2 ON THE NEXT CHARACTER 15 000176 020027 000117 CMP R0,#'O ;IS IT ? 16 000202 001014 BNE 50$ ;NONE OF THE ABOVE, IT'S CODE 1 17 000204 004767 000000G 20$: JSR PC,TLISTN ;WE NEED THE NEXT CHARACTER AT THIS POINT 18 000210 020027 000101 CMP R0,#'A ;IS IT UPPER CASE ALPHABETIC? 19 000214 103406 BLO 40$ ;NOPE, USE CODE 2 20 000216 020027 000132 CMP R0,#'Z ;REALLY UPPER CASE ALPHABETIC? 21 000222 101003 BHI 40$ ;NOPE, USE CODE 2 22 000224 000403 BR 50$ ;YEP, IT'S CODE 1 23 24 000226 004767 000000G 30$: JSR PC,TLISTN ;READ THE FINAL CHARACTER 25 000232 005201 40$: INC R1 ;SET CODE FOR (2) 26 000234 042700 177740 50$: BIC #^C<37>,R0 ;TRIM CHARACTER TO 5 BITS 27 000240 005765 000000G 60$: TST ETYPE(R5) ;IS CONTROL/C TRAP STILL ON? 28 000244 100402 BMI 70$ ;YES 29 ;.IIF NE ET$CC-100000, .ERROR ;THE ABOVE WON'T WORK 30 000246 042716 000000G BIC #ET$CC,(SP) ;NO, ENSURE IT STAYS OFF 31 000252 042716 000000C 70$: BIC #^C,(SP) ;TRIM SAVED "ETYPE" 32 000256 042765 000000C 000000G BIC #ET$CC!ET$CKE!ET$LC,ETYPE(R5) ;TURN OFF OUR BITS 33 000264 052665 000000G BIS (SP)+,ETYPE(R5) ; THEN RESTORE ORIGINAL "ETYPE" 34 000270 005727 TST (PC)+ ;SET C=0 FOR DECODED SEQUENCE 35 000272 000261 80$: SEC ;SET C=1 FOR NO DECODE 36 000274 000207 RTS PC ;EXIT CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 26 NECESSARY SUBROUTINE FOR :^T COMMAND SUPPORT 1 000276 005201 90$: INC R1 ;SET CODE FOR (1) 2 000300 120027 000217 CMPB R0,#217 ;WAS INITIAL CHARACTER ? 3 000304 001737 BEQ 20$ ;YEP, GO CHECK THE NEXT CHARACTER... 4 000306 004767 000000G 100$: JSR PC,TLISTN ;GET CHARACTER FOLLOWING <[> 5 000312 004767 000042 JSR PC,120$ ;CHECK FOR DIGIT (0-9) RANGE 6 000316 101346 BHI 50$ ;NOT A DIGIT, IT'S CODE 1 7 000320 005001 CLR R1 ;ELSE ZERO OUR SEQUENCE VALUE 8 000322 010100 110$: MOV R1,R0 ;SAVE OLD VALUE *1 9 000324 006301 ASL R1 ;NOW HAVE OLD VALUE *2 10 000326 006301 ASL R1 ; THEN *4 11 000330 060001 ADD R0,R1 ;FORM OLD VALUE *5 12 000332 006301 ASL R1 ;NOW OLD VALUE *10. 13 000334 060201 ADD R2,R1 ;ADD NEW DIGIT TO OLD VALUE 14 000336 004767 000000G JSR PC,TLISTN ;GET THE NEXT CHARACTER 15 000342 004767 000012 JSR PC,120$ ;CHECK FOR STILL DIGIT (0-9) RANGE 16 000346 101765 BLOS 110$ ;A DIGIT, LOOP... 17 000350 010100 MOV R1,R0 ;ELSE MOVE SEQUENCE VALUE TO HERE 18 000352 012701 000003 MOV #3,R1 ;CODE FOR <[> (3) 19 000356 000730 BR 60$ ;GO EXIT 20 21 000360 010002 120$: MOV R0,R2 ;COPY THE CHARACTER 22 000362 162702 000060 SUB #'0,R2 ; AND CONVERT (POSSIBLE) DIGIT TO BINARY 23 000366 020227 000011 CMP R2,#9. ;COMPARE AGAINST HIGHEST VALID BINARY DIGIT 24 000372 000207 RTS PC ; AND EXIT W/ CC'S SET ('BHI' => NON-DIGIT) 25 26 .ENDC ;NE IMMEDC 27 28 000001 .END CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page 26-1 Symbol table ANSGOF 000105R 003 EDIT = ****** GX HOMSEQ 000110RG 003 QRSTOR= ****** GX SRWSIZ= ****** GX ANSI 000740R 004 ED$IMD= ****** GX HTSIZE= ****** GX QZ = ****** GX TECOLS 000000R 005 COFSEQ 000510RG 003 EOLSEQ 000142RG 003 IMMEDC= 000001 RESCUR 000552RG 003 TECOLT 000000R 006 CONSEQ 000464RG 003 EOSSEQ 000172RG 003 INDIR = ****** GX RSTS = 000001 TEMP = ****** GX CRTCUP 000004R 002 ERCTBL 000174R 002 I$$DIV= 000001 RSX = 000000 TLISTN= ****** GX CRTERC 000002R 002 ERLTBL 000252R 002 I$$SOB= 000001 RT11 = 000000 TYPEBC= ****** GX CRTERL 000006R 002 ERRPOS= ****** GX LISTEN= ****** GX RWSIZE= ****** GX TYPEBF= ****** GX CRTMAX= 000012 G ETYPE = ****** GX MOFSEQ 000352RG 003 SAVCUR 000532RG 003 USRPRM 000160RG 004 CRTRUB 000000R 002 ET$CC = ****** GX MONSEQ 000330RG 003 SAVFQB= ****** GX USRSET 000156RG 004 CRTSET 000010R 002 ET$CKE= ****** GX NULL 000140R 003 SCDSEQ 000250RG 003 UU.TRM= ****** GX CRTYPE= ****** GX ET$CRT= ****** GX NWIDTH 000000RG 004 SCREOS= ****** GX VMS = 000000 CUPTBL 000214R 002 ET$IAS= ****** GX POSTBL 000000RG 003 SCRHOM= ****** GX VTSIZE= ****** GX DECODE 000050R 006 ET$LC = ****** GX PRECOL= ****** GX SCROLL= 000001 VT05LF 000242R 003 DELCHR= ****** GX FILL4 000134R 003 PRELIN= ****** GX SCROLN= ****** GX V52GOF 000045R 003 DELLIN= ****** GX FIXSEQ 000014RG 003 QLCMD = ****** GX SCUSEQ 000224RG 003 WATCH = 000001 DIGITS 000162R 004 GOFSEQ 000314RG 003 QMAX = ****** GX SEQCTL= ****** GX $$$$$$= 001032R 004 DIRECT 000232RG 004 GONSEQ 000272RG 003 QPNTR = ****** GX SETSCR 000744RG 004 .UUO = ****** GX DOTYPE= ****** GX GRPTBL 000372RG 003 . ABS. 000000 000 (RW,I,GBL,ABS,OVR) 000000 001 (RW,I,LCL,REL,CON) CRTRUB 000312 002 (RO,I,GBL,REL,OVR) SCRSEQ 000572 003 (RO,D,GBL,REL,CON) SCRSUB 001050 004 (RO,I,GBL,REL,CON) TECOLS 000202 005 (RO,I,GBL,REL,OVR) TECOLT 000374 006 (RO,I,GBL,REL,OVR) Errors detected: 0 *** Assembler statistics Work file reads: 0 Work file writes: 0 Size of work file: 8292 Words ( 33 Pages) Size of core pool: 16896 Words ( 66 Pages) Operating system: RT-11 (Under RSTS/E) Elapsed time: 00:00:52.30 OBJ:CRTRUS,LST:CRTRUS/C=TT:,MAC:CRTRUB CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page S-1 Cross reference table (CREF V05.03a) $$$$$$ 3-8# 3-12 3-12# 3-42 9-42 9-42# 9-44 9-44# 10-3 10-3# 10-11 10-11# 10-28 10-28# 11-29 11-29# 11-57 11-57# 11-73 11-73# 11-90 11-90# 11-106 11-106# 11-120 11-120# 11-133 11-133# 11-146 11-146# 11-151 11-151# 11-161 11-161# 11-191 11-191# 12-8 12-8# 12-19 12-19# 12-30 12-30# 12-40 12-40# 14-26 14-26# 14-28 14-28# 19-1 19-1# 19-2 19-2# 19-4 19-4# 19-5 19-5# 19-15 19-15# 19-17 19-17# 19-19 19-19# 20-30 20-30# 20-32 20-32# .UUO 13-27 ANSGOF 11-48# 11-146 11-146 11-146 ANSI 19-17 19-17 19-17 19-49# 20-30 20-30 COFSEQ 12-19# CONSEQ 12-8# CRTCUP 6-11# CRTERC 6-8# CRTERL 6-14# CRTMAX 7-28# 7-41 9-7 9-42 9-44 10-3 10-11 10-28 11-22 11-29 11-57 11-73 11-90 11-106 11-120 11-133 11-146 11-151 11-161 11-191 12-8 12-19 12-30 12-40 14-26 14-28 17-45 19-1 19-2 19-4 19-5 19-13 19-15 19-17 19-19 20-30 20-32 CRTRUB 6-5# 6-7 6-10 6-13 CRTSET 6-5 7-40# CRTYPE 9-8* 17-16 CUPTBL 6-11 10-11# DECODE 22-20 23-12 24-32# DELCHR 22-28 DELLIN 22-26 DIGITS 16-12# 18-27 18-32 20-20 20-25 DIRECT 17-15# DOTYPE 14-7 17-51 18-3 18-10 18-19 20-18 20-27 ED$IMD 22-9 EDIT 22-9 EOLSEQ 11-73# EOSSEQ 11-90# ERCTBL 6-8 10-3# ERLTBL 6-14 10-28# ERRPOS 22-29* ET$CC 25-2 25-30 25-31 25-32 ET$CKE 25-3 25-31 25-32 ET$CRT 9-9 22-24 ET$IAS 9-28 ET$LC 25-2 25-31 25-32 ETYPE 9-9* 9-28* 22-24 25-1 25-2* 25-3* 25-27 25-32* 25-33* FILL4 11-66# 19-19 FIXSEQ 11-29# GOFSEQ 11-146# GONSEQ 11-133# GRPTBL 11-191# HOMSEQ 11-57# HTSIZE 9-14* 9-19* 13-25 14-3 I$$DIV 1-3# 5-18 5-20 21-1 I$$SOB 1-2# 5-1 5-3 IMMEDC 4-3 4-25 22-1 INDIR 22-11 LISTEN 22-18 MOFSEQ 11-161# MONSEQ 11-151# NULL 11-29 11-67# 11-90 11-90 11-120 11-133 11-146 11-151 11-151 11-151 11-161 11-161 CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page S-2 Cross reference table (CREF V05.03a) 11-161 12-8 12-8 12-8 12-8 12-19 12-19 12-19 12-19 12-30 12-30 12-30 12-30 12-40 12-40 12-40 12-40 14-26 14-26 14-26 14-26 14-28 14-28 14-28 14-28 19-19 19-19 19-19 19-19 19-19 20-30 20-30 20-30 20-30 20-32 20-32 20-32 20-32 NWIDTH 13-18# POSTBL 11-16# 11-22 PRECOL 17-24 17-42 PRELIN 17-18 QLCMD 22-30* QMAX 22-15 QPNTR 22-7 22-35* QRSTOR 22-32 QZ 22-13 22-31 22-34* RESCUR 12-40# RSTS 1-1# 3-3 3-10 7-43 13-20 RSX 3-4 3-18 8-1 13-31 RT11 3-5 3-26 8-17 13-35 RWSIZE 9-13* 9-14* 9-19* 9-24* 13-25 14-3 14-11 17-18 17-24 17-42 SAVCUR 12-30# SAVFQB 13-21 SCDSEQ 11-120# SCREOS 14-13 SCRHOM 20-28 SCROLL 4-2 4-7 9-22 12-1 14-9 20-1 SCROLN 9-24* 14-11 SCUSEQ 11-106# SEQCTL 24-32 SETSCR 20-17# SRWSIZ 9-29 TECOLS 22-7# TECOLT 23-5# TEMP 22-42* TLISTN 23-5 23-17 25-7 25-17 25-24 26-4 26-14 TYPEBC 14-18 TYPEBF 16-23 17-31 18-14 18-29 20-22 USRPRM 15-24# USRSET 15-10# UU.TRM 13-22 V52GOF 11-34# 11-146 11-146 VMS 3-6 3-34 8-27 13-39 VT05LF 11-106 11-111# 19-1 VTSIZE 9-13* WATCH 4-1 4-5 9-11 11-1 CRTRUB SCOPE TYPE DETERMINATIO MACRO V05.03c Monday 16-Sep-85 14:57 Page M-1 Cross reference table (CREF V05.03a) CRTTBL 7-30# 9-42 9-44 10-3 10-11 10-28 11-29 11-57 11-73 11-90 11-106 11-120 11-133 11-146 11-151 11-161 11-191 12-8 12-19 12-30 12-40 14-26 14-28 19-1 19-2 19-4 19-5 19-15 19-17 19-19 20-30 20-32 DIVR0 5-31# 16-13 16-17