.MAIN. MACRO V05.05 Friday 15-Dec-89 19:04 Table of contents 1- 1 MCE - Configuration prefixfile MCEPRE.MAC 2- 27 MCE - Macros, Constants, Variables 3- 506 MCE - DSPTAB -- Jumptable 4- 554 MCE - EDTTAB -- EDT-Key Jumptable 5- 583 MCE - VT2TAB -- VT2XX Key table 6- 644 MCE - START -- INIT-Code 6- 685 MCE - RESTAR -- Get next Line, Main-Loop 7- 737 MCE - PRSTAT -- Print the status line 7- 757 MCE - STAFIL -- Fill status line 8- 834 MCE - PRPROM -- Print the prompt 9- 918 MCE - LOOP -- Accept next Char. for input and dispatch it 10- 992 MCE - BEGLIN -- Begin of line 10- 1000 MCE - CHOVER -- Flip between insert and overstrike mode 10- 1017 MCE - DELEC -- Delete left single char 10- 1025 MCE - DELEL -- Delete from start of line to cursor 10- 1057 MCE - DELEW -- Delete left single word 10- 1082 MCE - DELRC -- Delete right single char 10- 1099 MCE - DELRL -- Delete from cursor to eol 10- 1115 MCE - DELRW -- Delete right single word 10- 1152 MCE - ENDLIN -- Jump to end of text 10- 1165 MCE - INSERT -- Insert one character 10- 1193 MCE - MOVWRD -- Move word 11- 1216 MCE - ESCAP -- Escape Sequences / FIFO - Commands 11- 1323 MCE - RIGHT -- Cursor right 11- 1340 MCE - LEFT -- Cursor left 11- 1415 MCE - PRINTF -- Print fifo buffer 11- 1426 MCE - PRINTC -- Print command buffer 11- 1436 MCE - RECALL -- Recall a command 11- 1453 MCE - TRANSL -- Translate a command 11- 1475 MCE - GOLD -- "GOLD" Key 11- 1482 MCE - SHVERS -- Version 11- 1489 MCE - SHFREE -- Free pool 11- 1496 MCE - EDTHLP -- Keypad Help 11- 1506 MCE - HELP -- Help key 11- 1514 MCE - FUNC -- Exectute function key commands 12- 1529 MCE - VT2KEY -- VT2xx Functionkeys 12- 1591 MCE - VT2FN -- Check if VT2xx key to be translated 12- 1608 MCE - VT2ESC -- Check for VT2XX 13- 1630 MCE - TDVTST -- TDV2230 Key support 14- 1668 MCE - DELAY -- Detach and delay 14- 1678 MCE - SAVE -- Save command without execution 14- 1685 MCE - EXECNW -- Execute command no-wait 14- 1693 MCE - EXEC -- Execute command 14- 1747 MCE - EXAST -- Task exit ast 14- 1759 MCE - EXIT -- Task exit 15- 1788 MCE - CLFIF -- Clear first entry of FIFO buffer 15- 1799 MCE - CLRNEW -- Clear Buffer NEW 15- 1812 MCE - DETACH -- Detach terminal 15- 1833 MCE - DISPLY -- Rewrite whole Line 15- 1873 MCE - DOEXEC -- Submit command to CLI 15- 1930 MCE - FRENT -- Free entry from queue 15- 1951 MCE - GEFIFO -- Get FIFO Buffer, pointed to by FIFPTR 15- 1967 MCE - GETBUF -- Load Buffer into NEW 15- 1991 MCE - IO -- General I/O Routine 15- 2006 MCE - IOCR -- Print 15- 2015 MCE - IOMSG -- Print Message 15- 2026 MCE - IOW -- Write routine MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Table of contents 15- 2033 MCE - LDFIF -- Load NEW into FIFO Buffer 15- 2069 MCE - PRICMD -- Print Cmd buffer and put pointer to end of queue 15- 2076 MCE - PRIFIF -- Print FIFO and put pointer to end of queue 15- 2093 MCE - SPBACK -- Backspace 1 char. 15- 2108 MCE - SRWORD -- Search for word 15- 2130 MCE - TERM -- Get terminal information 15- 2154 MCE - UPDATE -- Update commandline 16- 2171 MCE - FILOP -- Open MCEINI file from MCR line 16- 2179 MCE - FILOP1 -- Open MCEINI file 16- 2214 MCE - FILREA -- Read from MCEINI file 16- 2227 MCE - FILCLO -- Close current MCEINI file 17- 2243 MCE - GETCLI -- Get CLI information 18- 2305 MCE - FNDCMD -- Find entry in command table 18- 2306 MCE - FNDCMA -- Find entry in command table with "*" 19- 2402 MCE - CMDCHK -- Check for Command definition 19- 2566 MCE - CNVUPC -- Convert to uppercase 20- 2585 MCE - NEWCMD -- Define new command or delete command 21- 2643 MCE - RECCMD -- Recall command from FIFO 22- 2703 MCE - GETMCR -- Get filespecification from MCR command 23- 2759 MCE - INTERN -- Check for internal commands (EXIT/BYE) 24- 2868 MCE - -- INTERNAL action routines 24- 2871 MCE - ICCLEA -- Clear 24- 2884 MCE - ICFREE -- Free 24- 2925 MCE - ICKEYP -- Keypad on/off 24- 2937 MCE - ICLIST -- LIST 24- 2947 MCE - ICMAXF -- Fisz x 24- 2964 MCE - ICMINC -- Cmsz x 24- 2979 MCE - ICPURG -- Purge 24- 2993 MCE - ICREAD -- Read 24- 3017 MCE - ICREPL -- Replace 24- 3026 MCE - ICRING -- Ring 24- 3037 MCE - ICSTAT -- Status [ on/off ] 24- 3073 MCE - ICSVIN -- Intern on/off 24- 3083 MCE - ICSVOL -- Old commands on/off 24- 3093 MCE - ICVERS -- Version MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 1 MCE - Configuration prefixfile MCEPRE.MAC 1 .SBTTL MCE - Configuration prefixfile MCEPRE.MAC 2 ; 3 ; MCE Macro Prefixfile 4 ; Created on 15-DEC-89 19:04:41 by MCEBLD.CMD Version: V4.2e 5 000001 VT2XX = 1 ; VT2xx support included 6 000001 EDT = 1 ; EDT-Keypad support included 7 000001 FILE = 1 ; MCEINI file support included 8 000001 CLISUP = 1 ; Multiple cli supp 9 000001 COMPND = 1 ; Compound command (&) support 10 000001 STATUS = 1 ; Statusline support 11 000001 HLPNEW = 1 ; HELP / support 12 000001 MINCHR = 1. ; Minimal cmd-line length to be saved 13 000027 MAXFIF = 23. ; Maximal number of entries in FIFO MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 2 MCE - Configuration prefixfile MCEPRE.MAC 1 .TITLE MCE - CLI-Commandline-Editor 2 .IDENT -V4.2e- ;JHB03 3 .ENABLE LC 4 ; 5 ; Last Edit: 15-DEC-1989 18:44:29 6 ; JMB - add CTRL-P Pause (Stop) support. 7 ; 8 ; Copyright (c) 1988 9 ; 10 ; J.H. Hamakers, 11 ; ASEA Brown Boveri b.v. 12 ; P.O.Box 301 3000 AH Rotterdam, The Netherlands 13 ; Phone : +31 - 10 - 4078631 14 ; 15 ; All rights reserved 16 ; 17 ; This software may be copied and distributed ONLY 18 ; on a non profit basis and with the inclusion of 19 ; the above copyright statement. 20 ; 21 ; PLEASE CONTACT ME FOR PROBLEMS OR SUGGESTIONS 22 ; 23 ; +---------------------------------------------------+ 24 ; | See MCEREL.DOC for information about this release | 25 ; +---------------------------------------------------+ 26 ; 27 .SBTTL MCE - Macros, Constants, Variables 28 29 .MCALL QIO$S ,QIOW$S ,EXIT$S ,SPWN$S ,STSE$ ,STSE$S 30 .MCALL MRKT$S ,SDIR$S ,SREX$S ,WTSE$ ,DIR$ 31 32 .IF DF COMPND ;JHB03 33 ;JHB03 34 .MCALL WTSE$S ;JHB03 35 ;JHB03 36 .ENDC ;COMPND ;JHB03 37 38 .IF DF TMOTIM 39 40 .MCALL ASTX$S ,GLUN$S 41 42 .ENDC ;TMOTIM 43 44 .IF DF CLISUP 45 46 .MCALL GCII$S 47 48 .ENDC ;CLISUP 49 50 .NLIST BEX 51 ; 52 ; Local symbol definitions 53 ; 54 000114 BUFSIZ = 76. ; (this is max for >SET /BUF=TI:80.) 55 ; 56 000007 BELL = 7 57 000010 BKSP = 10 MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 2-1 MCE - Macros, Constants, Variables 58 000012 LF = 12 59 000015 CR = 15 60 000033 ESC = 33 61 000040 BLNK = 40 62 000177 DEL = 177 63 000217 SS3 = 217 ; SS3 8-bit control character 64 ; 65 000001 TI = 1 ; TI: LUN 66 000002 INI = 2 ; MCEINI.xxx LUN 67 000001 EFN = 1 ; Eventflag 68 69 .IF DF TMOTIM&STATUS 70 71 EFNAST = 2 ; Eventflag in TIMAST 72 73 .ENDC ;TMOTIM&STATUS 74 75 .IIF NDF MAXFIF MAXFIF = 23. 76 .IIF NDF MINCHR MINCHR = 0 77 78 .IF DF FILE 79 80 .MCALL CSI$ 81 .MCALL DIR$,GMCR$ 82 .MCALL CSI$1,CSI$2 83 .MCALL FSRSZ$,FDBDF$,FDRC$A,FDOP$A,OPEN$R,GET$S,CLOSE$,NMBLK$ 84 .MCALL STOP$S 85 86 000000 CSI$ ; Define CSI control block offsets 87 88 000000 FSRSZ$ 1 89 90 000000 .PSECT IDATA,D,RW 91 92 000000 STOPIO: STSE$ EFN ; Normaly we STOP for I/O. When MCE is aborted 93 000004 WAITIO: WTSE$ ; we WAIT for I/O. We use this directive here 94 ; to copy the DIC-code to STOPIO (See EXAST:) 95 96 000010 FDBIN: FDBDF$ ; FDB for initialization 97 000150 FDRC$A ,NEW,BUFSIZ 98 000150 FDOP$A INI,FDSPT,DFNB,FO.RD 99 100 000150 114 102 072 DEV: .ASCII /LB:/ ; Device Name 101 000003 DEVL = .-DEV 102 000153 DIR: 103 104 .IF DF A$SV 105 106 .ASCII /[2,2]/ ; Directory 107 108 .IFF ;A$SV 109 110 000153 133 061 054 .ASCII /[1,2]/ ; Directory 111 112 .ENDC ;A$SV 113 114 000005 DIRL = .-DIR MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 2-2 MCE - Macros, Constants, Variables 115 .EVEN 116 ; 117 ; Default startup file name block 118 ; 119 ; Default file name (if no CLI support) is 'MCEINI.CMD' 120 ; default device is SY: (but superimposed by the first LB: in DSPT 121 ; SY: in the DFNB will be effective for files specified in the 122 ; invoking MCR commandline. Specifying 'MCE XXX' thus results in 123 ; file name 'SY0:XXX.CMD' 124 ; Note, that the file-type in DFNB will be overwritten by the CLI name 125 ; 126 000160 DFNB: NMBLK$ MCEINI,CMD,0,SY,0 127 000174' DFTYP = DFNB+N.FTYP ; Define address of RAD-50 filetype 128 ; 129 000216 000003 000150' FDSPT: DEVL,DEV ; File Descriptor: Device 130 000222 000005 000153' FDIR: DIRL,DIR ; Directory string at begin 131 000226 000000 000000 0 ,0 ; No File name (DFNB will be used) 132 ; 133 ; CSI$ Control block 134 ; 135 000232 CSIBLK: CSI$ 136 000232 .BLKB C.SIZE 137 .EVEN 138 139 .ENDC ;FILE 140 141 000306 115 103 105 POOLTX: .ASCII /MCE -- Pool:/ 142 000322 POOLDT: .BLKB 18. 143 .EVEN 144 000344 000000 000000 000000 POOL: 0,0,0 ; Pool information 145 000352 000027 MAXF: MAXFIF ; Fifo size 146 000354 000001 MINC: MINCHR ; Commandlength to be saved 147 148 000000 .PSECT PDATA,D,RO 149 ; 150 ; Text Formats 151 ; 152 000000 115 103 105 STRTXT: .ASCIZ \MCE -- CLI-Commandline-Editor V4.2e\ ;JHB03 153 000044 115 103 105 PZTXT: .ASCIZ \MCE Stopping...to resume, type UNSTOP MCE...\ 154 000121 115 103 105 UPZTXT: .ASCIZ \MCE Resuming...\ 155 ; 156 157 .IF DF A$SV 158 159 .ASCII \/ASV\ 160 161 .ENDC ;A$SV 162 163 .IF DF VT2XX 164 165 000141 057 126 124 .ASCII \/VT2\ 166 167 .ENDC ;VT2XX 168 169 .IF DF TDV2XX 170 171 .ASCII \/TDV\ MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 2-3 MCE - Macros, Constants, Variables 172 173 .ENDC ;TDV2XX 174 175 000145 015 012 000 .ASCIZ 176 000150 015 012 ENDTXT: .ASCII 177 000152 115 103 105 EXITXT: .ASCIZ /MCE -- Exit/ 178 000166 CRET: 179 000166 015 012 115 NOPOOL: .ASCIZ /MCE -- Pool exhausted - Install MCE with INC/ 180 000246 015 012 115 ERRTXT: .ASCIZ /MCE -- Internal command error/ 181 000307 015 012 115 TOOLON: .ASCIZ /MCE -- Command too long/ 182 183 .IF DF FILE 184 185 000342 015 012 115 FLSTXT: .ASCIZ /MCE -- Filespecification syntax error/ 186 000413 015 012 115 FILTXT: .ASCIZ /MCE -- File open error/ 187 188 .ENDC ;FILE 189 190 .IF DF TMOTIM 191 192 BYETXT: .ASCIZ /BYE/ 193 194 .ENDC ;TMOTIM 195 196 .IF DF VT2XX 197 198 000445 133 062 063 VT2ESQ: .ASCII /[23~/ ; VT2XX Picture 199 000004 VT2ESL = .-VT2ESQ ; 200 201 .ENDC ;VT2XX 202 203 000451 HLPTXT: 204 205 .IF DF A$SV 206 207 .ASCIZ \HELP ASV MCE\ 208 209 .IFF ;A$SV 210 211 .IF DF HLPNEW 212 213 000451 110 105 114 .ASCIZ \HELP /MCE\ 214 215 .IFF ;HLPNEW 216 217 .ASCIZ \HELP MCE\ 218 219 .ENDC ;HLPNEW 220 221 .ENDC ;A$SV 222 223 .IF DF EDT 224 225 000463 033 075 APLTXT: .ASCII /=/ 226 000465 033 076 NUMTXT: .ASCII />/ 227 228 000467 EDTTXT: MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 2-4 MCE - Macros, Constants, Variables 229 230 .IF DF A$SV 231 232 .ASCIZ \HELP ASV MCE KEYPAD\ 233 234 .IFF ;A$SV 235 236 .IF DF HLPNEW 237 238 000467 110 105 114 .ASCIZ \HELP /MCE KEYPAD\ 239 240 .IFF ;HLPNEW 241 242 .ASCIZ \HELP MCE KEYPAD\ 243 244 .ENDC ;HLPNEW 245 246 .ENDC ;A$SV 247 248 .ENDC ;EDT 249 250 .EVEN 251 252 ; 253 ; internal MCE command dispatch table (see subroutine Intern) 254 ; 255 000510 INTCMD: 256 000510 105 130 111 .ASCII /EXIT/ ; Task exit 257 000514 003654' EXIT 258 000516 120 125 122 .ASCII /PURG/ ; Delete all command translations 259 000522 010106' ICPURG 260 000524 122 111 116 .ASCII /RING/ ; FIFO is a ringbuffer 261 000530 010176' ICRING 262 000532 114 111 123 .ASCII /LIST/ ; FIFO is a list 263 000536 010024' ICLIST 264 000540 106 122 105 .ASCII /FREE/ ; Free poolspace 265 000544 007704' ICFREE 266 000546 106 111 123 .ASCII /FISZ/ ; Fifo maximum 267 000552 010034' ICMAXF 268 000554 103 115 123 .ASCII /CMSZ/ ; Minimum cmd size 269 000560 010066' ICMINC 270 000562 103 114 105 .ASCII /CLEA/ ; Clear fifo 271 000566 007662' ICCLEA 272 000570 126 105 122 .ASCII /VERS/ ; Version 273 000574 010346' ICVERS 274 000576 123 126 111 .ASCII /SVIN/ ; Save Internal commands on/of 275 000602 010332' ICSVIN 276 000604 123 126 117 .ASCII /SVOL/ ; Save Old commands on/of 277 000610 010340' ICSVOL 278 279 .IF DF STATUS 280 281 000612 123 124 101 .ASCII /STAT/ ; Status line on/of 282 000616 010206' ICSTAT 283 284 .ENDC ;STATUS 285 MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 2-5 MCE - Macros, Constants, Variables 286 .IF DF FILE 287 288 000620 122 105 101 .ASCII /READ/ ; Read definition file 'MCE READ filespc' 289 000624 010122' ICREAD 290 000626 103 110 101 .ASCII /CHAI/ ; Chain to other file (= READ) 291 000632 010122' ICREAD 292 000634 122 105 120 .ASCII /REPL/ ; Replace translations by new file 293 000640 010170' ICREPL 294 295 .ENDC ;FILE 296 297 .IF DF EDT 298 299 000642 113 105 131 .ASCII /KEYP/ 300 000646 010016' ICKEYP 301 302 .ENDC ;EDT 303 304 000650 000000 0 ; End of table marker 305 ; 306 000356 .PSECT IDATA 307 ; 308 ; data 309 ; 310 ; 311 ; FIFO Buffer descriptors 312 ; 313 ; Entry offsets : 314 ; 315 ;FNXT = 0 ; Pointer to next Entry 316 000002 FLEN = 2 ; Length of entry 317 000004 FTXT = 4 ; Text, terminated by binary 0 318 000356 000000 000356' FIFO: 0, FIFO ; Header FIFO Buffer: 319 000362 000 FIFCNT: .BYTE 0 ; Number of entries in FIFO 320 000363 000 FIFPOI: .BYTE 0 ; Entry number 321 000364 000000 FIFPTR: 0 ; Ptr to current Entry (for UP, DOWN keys) 322 ; 323 ; Commandbuffer, same entries as in FIFO 324 ; 325 000366 000000 000366' CMDB: 0, CMDB ; Header command definitions 326 ; 327 000372 000000 000000 FREE: 0, 0 ; Free memory listhead 328 ; 329 ; Terminal characteristics buffer 330 ; 331 000376 SFGMCB: 332 000376 000G 000 ANI: .BYTE TC.ANI,0 ; ANSII Terminal 333 000400 000G 000 HLD: .BYTE TC.HLD,0 ; Hold screen mode 334 335 .IF DF VT2XX!TDV2XX 336 337 000402 000G 000 TTP: .BYTE TC.TTP,0 ; Get terminal type 338 339 .ENDC ;VT2XX!TDV2XX 340 341 000006 SFGMCL = .-SFGMCB 342 MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 2-6 MCE - Macros, Constants, Variables 343 000404 IOSTAT: .BLKW 2 ; I/O Statusblock 344 ; 345 000410 000630' PROMLF: DEFPR ; Point to default prompt with 346 000412 000631' PROMPT: DEFPR+1 ; Point to default prompt with 347 ; 348 ; Buffers 349 ; 350 351 .IF DF STATUS 352 353 000414 033 104 STATX1: .ASCII "D" 354 000416 033 115 .ASCII "M" 355 000420 033 067 STATX2: .ASCII "7" 356 000422 033 133 061 .ASCII "[1;23r" 357 000431 033 133 062 .ASCII "[24;1H" 358 000440 033 133 067 .ASCII "[7m" 359 000444 115 103 105 STATX3: .ASCII "MCE-V4.2e FIFO:" 360 000465 154 151 163 STALIR: .ASCII "list/" 361 000472 170 170 057 .ASCII "xx/" 362 000475 170 170 057 .ASCII "xx/" 363 000500 170 170 040 .ASCII "xx CMSZ:" 364 000510 170 170 040 STACMD: .ASCII "xx KEYP:" 365 000520 170 170 170 STAKEY: .ASCII "xxx SVINT:" 366 000532 170 170 170 STASVI: .ASCII "xxx SVOLD:" 367 000544 170 170 170 STASVR: .ASCII "xxx TMO:" 368 000554 156 157 040 STATMO: .ASCII "no " 369 000113 STALN3=.-STATX3 370 000557 033 133 113 .ASCII "[K" 371 000562 033 133 060 .ASCII "[0m" 372 000566 033 070 .ASCII "8" 373 000150 STALN2=.-STATX2 374 000154 STALN1=.-STATX1 375 376 000570 033 067 STACLR: .ASCII "7" 377 000572 033 133 061 .ASCII "[1;24r" 378 000601 033 070 .ASCII "8" 379 000603 033 133 112 .ASCII "[J" 380 000016 STACLN=.-STACLR 381 382 .ENDC ;STATUS 383 384 000606 .BLKB 16. ; Prompt buffer 385 000626 033 057 .ASCII '/' ; Hold screen esc seq. 386 000630 012 DEFPR: .ASCII ; Default prompt with new line 387 000631 015 053 076 .ASCII \+>\ ; without new line 388 000004 DEFPRL=.-DEFPR 389 .EVEN 390 000634 NEW: ; Current Buffer, word aligned 391 000634 033 133 .ASCII '[' ; Hold screen esc seq. 392 000116 .REPT BUFSIZ+4-2 ; 393 .ASCII ; Must be blanked 394 .ENDR ; 395 .EVEN 396 000754 SAVB: .BLKB BUFSIZ+4 ; Save Buffer (start on even boundary) 397 001074 RECB: .BLKB BUFSIZ+4 ; Recall Buffer 398 001214 000116 BS: .REPT BUFSIZ+2 ; Backspace buffer for 399 .ASCII ; cursor positioning MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 2-7 MCE - Macros, Constants, Variables 400 .ENDR 401 .EVEN 402 403 .IF DF FILE 404 405 ; 406 ; MCR command line directive and buffer 407 ; 408 001332 GMCR: GMCR$ 409 001334' MCRLIN=GMCR+G.MCRB 410 411 .ENDC ;FILE 412 413 .IF DF CLISUP 414 415 .IF DF FILE 416 417 ; 418 ; IF DF FILE : GCLI buffer overlaps GMCR buffer 419 ; 420 001454' $$$=. ; Save ALC 421 001332' .=GMCR ; Map GMCR buffer 422 423 .IFTF ;FILE 424 425 ; 426 ; Buffer to receive CLI information: 427 ; 428 000062 GCISIZ = 50. 429 001332 GCLI: .BLKB GCISIZ ; For GCII$S 430 431 .IFT ;FILE 432 433 001454' .=$$$ ; Restore ALC 434 435 .ENDC ;FILE 436 437 001454 012251 131574 TASK: .RAD50 \CLI...\ ; Current CLI 438 439 .IFF ;CLISUP 440 441 .PSECT PDATA 442 TASK: .RAD50 \MCR...\ ; Task for Systems without CLI-Support 443 .PSECT IDATA 444 445 .ENDC ;CLISUP 446 447 001460 000000 CODE: 0 ; QIO-Functioncode 448 001462 000000 ADR: 0 ; Buffer-address 449 001464 000000 LEN: 0 ; Buffer-lengh (to output) 450 001466 000000 WAITFL: 0 ; Event flag 451 ; 452 001470 000 CHAR: .BYTE 0 ; Input-character 453 ; 454 ; Flags 455 ; 456 001471 000 OVSTMO: .BYTE 0 ; If ne : Overstrike mode MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 2-8 MCE - Macros, Constants, Variables 457 001472 000 NOLOAD: .BYTE 0 ; If ne : Don't load Command in Commandbuffer 458 001473 000 NOEXEC: .BYTE 0 ; If ne : Don't execute Command 459 001474 000 RING: .BYTE 0 ; If ne : FIFO is a ringbuffer 460 001475 001 SINFLG: .BYTE 1 ; If ne : Internal commands are saved 461 001476 001 SOLFLG: .BYTE 1 ; If ne : Old commands are saved 462 001477 000 OLDFLG: .BYTE 0 ; If ne : Old command , not edited 463 464 .IF DF STATUS 465 466 001500 001 STAFLG: .BYTE 1 ; If ne : Status line is displayed 467 468 .ENDC ;STATUS 469 470 .IF DF FILE 471 472 001501 000 FILINP: .BYTE 0 ; If ne : File Input 473 001502 000 FILINI: .BYTE 0 ; If ne : Startup file being processed 474 001503 000 FILREX: .BYTE 0 ; If ne : MCE Read or MCE Replace being ;JHA99 475 ; processed ;JHA99 476 .ENDC ;FILE 477 478 .IF DF EDT 479 480 001504 000 EDTFLG: .BYTE 0 ; If ne : EDT Mode active 481 001505 000 GOLDFL: .BYTE 0 ; If ne : "GOLD" pushed 482 483 .ENDC ;EDT 484 485 .IF DF TMOTIM 486 487 TTN: .BYTE 0 ; Terminal Number 488 TMOCNT: .BYTE TMOTIM ; Counter for timeout 489 490 .ENDC ;TMOTIM 491 492 .EVEN 493 494 001506 000000 000000 CDSC: 0, 0 ; Descriptor of whole remainder 495 001512 PDSC: ; Descriptor of P0 .. P8 496 000011 .REPT 9. 497 0, 0 498 .ENDR 499 001556 000 CFETCH: .BYTE 0 ; Flag if Paramter fetched 500 001557 000 OVMSG: .BYTE 0 ; Send Overflow Message 501 001560 000 CTSTAR: .BYTE 0 ; Find command with "*" enabled (ne 0) 502 001561 000 TMPFLG: .BYTE 0 ; Temporary Flag: "*" encountered in compare 503 .EVEN 504 000054 CLL = .-CDSC ; Region to be cleared from CDSC MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 3 MCE - DSPTAB -- Jumptable 506 .SBTTL MCE - DSPTAB -- Jumptable 507 508 000652 .PSECT PDATA 509 ; 510 ;JUMP TABLE 511 ; 512 ; Here is the dispatch table for control characters 513 ; The table contains the addresses of the action routines for the 514 ; different codes. 515 ; When bit 0 of an address is set, the corresponding ctrl-key 516 ; may not be superimposed by a definition. 517 ; 518 000652 DSPTAB: 519 000652 001677' INSERT+1 ; SINGLE CHR. 520 000654 001230' CHOVER ; CTRL/A 521 000656 002124' UP ; CTRL/B 522 000660 002314' CLRBUF ; CTRL/C 523 000662 002416' LEFT ; CTRL/D 524 000664 001650' ENDLIN ; CTRL/E 525 000666 002362' RIGHT ; CTRL/F 526 000670 001002' loop ; CTRL/G 527 000672 001220' BEGLIN ; BS (CTRL/H) 528 000674 002002' MOVWRD ; HT (CTRL/I) 529 000676 001416' DELEW ; LF (CTRL/J) 530 000700 001526' DELRL ; CTRL/K 531 000702 001002' loop ; CTRL/L 532 000704 003431' EXEC+1 ; CR (CTRL/M) 533 000706 003414' SAVE ; CTRL/N 534 000710 002051' ESCAP+1 ; CTRL/O = SS3 8-bit ctrl. char. in 7-bit mode 535 000712 010356' PAUSE ; CTRL/P - Suspend MCE 536 000714 001003' loop+1 ; CTRL/Q (XON) 537 000716 001642' RETYPE ; CTRL/R 538 000720 001003' loop+1 ; CTRL/S (XOFF) 539 000722 003342' DELAY ; CTRL/T 540 000724 001300' DELEL ; CTRL/U 541 000726 001474' DELRC ; CTRL/V 542 000730 001556' DELRW ; CTRL/W 543 000732 001002' loop ; CTRL/X 544 000734 003654' EXIT ; CTRL/Y 545 000736 001002' loop ; CTRL/Z 546 000740 002051' ESCAP+1 ; ESC (CTRL/[) 547 000742 001002' loop ; CTRL/\ (CTRL/|) 548 000744 001002' loop ; CTRL/] (CTRL/}) 549 000746 001002' loop ; CTRL/^ (CTRL/~) 550 000750 002776' HELP ; CTRL/? MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 4 MCE - DSPTAB -- Jumptable 552 .IF DF EDT 553 554 .SBTTL MCE - EDTTAB -- EDT-Key Jumptable 555 ; 556 000752 EDTTAB: 557 ; 558 ; normal gold esc. sequ key EDT GOLD EDT 559 560 000752 001474' 001474' DELRC, DELRC ; ESC O l , DELCHR / UNDLCHR 561 000756 001556' 001556' DELRW, DELRW ; ESC O m - DELWRD / UNDLWRD 562 000762 001002' 001002' loop, loop ; ESC O n . SELECT / RESET 563 000766 001002' 001002' loop, loop ; ESC O o 564 000772 001220' 002314' BEGLIN, CLRBUF ; ESC O p 0 BLINE / OPENLINE 565 000776 002002' 002002' MOVWRD, MOVWRD ; ESC O q 1 WORD / CHNGCAS 566 001002 001650' 001526' ENDLIN, DELRL ; ESC O r 2 EOL / DELEOL 567 001006 001002' 001002' loop, loop ; ESC O s 3 CHAR / SPECIN 568 001012 001002' 001002' loop, loop ; ESC O t 4 ADVANCE / BOTTOM 569 001016 001002' 001002' loop, loop ; ESC O u 5 BACKUP / TOP 570 001022 001002' 001002' loop, loop ; ESC O v 6 CUT / PASTE 571 001026 002670' 002670' TRANSL, TRANSL ; ESC O w 7 PAGE / COMMAND 572 001032 002650' 002750' PRINTC, SHVERS ; ESC O x 8 SECTION / FILL 573 001036 002636' 002760' PRINTF, SHFREE ; ESC O y 9 APPEND / REPLACE 574 001042 002742' 002742' GOLD, GOLD ; ESC O P PF1 GOLD / GOLD 575 001046 002770' 002770' EDTHLP, EDTHLP ; ESC O Q PF2 HELP / HELP 576 001052 002656' 002656' RECALL, RECALL ; ESC O R PF3 FINDNXT / FIND 577 001056 001526' 001526' DELRL, DELRL ; ESC O S PF4 DELLIN / UNDLIN 578 579 .ENDC ;EDT MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 5 MCE - EDTTAB -- EDT-Key Jumptable 581 .IF DF VT2XX 582 583 .SBTTL MCE - VT2TAB -- VT2XX Key table 584 ; 585 ; Entry: 586 ; 587 ; word 1 : 2 ascii char. from esc-seq. 588 ; word 2 : action routine address 589 ; word 3 : 2 ascii char. from key 590 ; 591 .MACRO KEYVT2,ESC,ACT,KEY 592 .ASCII /ESC/ 593 .IF NB ACT 594 ACT 595 .IFF 596 LOOP 597 .ENDC 598 .ASCII /KEY/ 599 .ENDM 600 ; 601 001062 VT2TAB: 602 001062 KEYVT2 <1 > ,RECALL ,<$F> ; Find 603 001070 KEYVT2 <2 > , ,<$I> ; Insert here 604 001076 KEYVT2 <3 > , ,<$R> ; Remove 605 001104 KEYVT2 <4 > , ,<$S> ; Select 606 001112 KEYVT2 <5 > , ,<$P> ; Prev. Screen 607 001120 KEYVT2 <6 > , ,<$N> ; Next Screen 608 ; 609 001126 KEYVT2 <17> , ,<6 > ; F6 610 001134 KEYVT2 <18> , ,<7 > ; F7 611 001142 KEYVT2 <19> , ,<8 > ; F8 612 001150 KEYVT2 <20> , ,<9 > ; F9 613 001156 KEYVT2 <21> , ,<10> ; F10 614 001164 KEYVT2 <23> ,VT2ESC ,<11> ; F11 ESC 615 001172 KEYVT2 <24> ,BEGLIN ,<12> ; F12 BS 616 001200 KEYVT2 <25> ,DELEW ,<13> ; F13 LF 617 001206 KEYVT2 <26> , ,<14> ; F14 618 001214 KEYVT2 <28> ,HELP ,<15> ; F15 HELP 619 001222 KEYVT2 <29> ,EXECNW ,<16> ; F16 DO 620 001230 KEYVT2 <31> , ,<17> ; F17 621 001236 KEYVT2 <32> , ,<18> ; F18 622 001244 KEYVT2 <33> , ,<19> ; F19 623 001252 KEYVT2 <34> , ,<20> ; F20 624 ; 625 000176 VT2LEN =.-VT2TAB 626 627 .ENDC ;VT2XX 628 629 .IF DF TDV2XX 630 631 TDVTAB: 632 ; Action routine Key 633 ; 634 loop ; F1 635 loop ; F2 636 loop ; F3 637 loop ; F4 MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 5-1 MCE - VT2TAB -- VT2XX Key table 638 loop ; F5 639 loop ; F6 640 loop ; F7 641 642 .ENDC ;TDV2XX MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 6 MCE - START -- INIT-Code 644 .SBTTL MCE - START -- INIT-Code 645 ; 646 ; Register usage 647 ; 648 ; R0 Scratch Pointer 649 ; R1 Cursor in NEW 650 ; R2 First free byte in NEW (End of Text) 651 ; R3 Scratch 652 ; R4 Scratch 653 ; R5 Scratch Counter 654 ; 655 000000 .PSECT CODE,I,RO 656 ; 657 000000 START: 658 000000 SREX$S #EXAST ; Specify exit ast 659 000014 012700 000372' MOV #FREE,R0 ; R0 => Free memory listhead 660 000020 004767 000000G CALL $INIDM ; Initialize Free Memory 661 000024 004767 005272 CALL TERM ; Get terminal info 662 663 .IF DF TMOTIM 664 665 MOV #NEW+1&^C1,R0 ; Temporary buffer, word aligned 666 GLUN$S #TI,R0 ; Get terminal number 667 MOVB 2(R0),TTN ; And save it 668 CALL MARK ; Marktime for timeout 669 670 .ENDC ;TMOTIM 671 672 .IF NDF SILENT 673 674 000030 012700 000000' MOV #STRTXT,R0 ; Print 675 000034 004767 004720 CALL IOMSG ; Startup message 676 677 .ENDC ;SILENT 678 679 .IF DF FILE 680 681 000040 004767 005356 CALL FILOP ; Open MCEINI file 682 683 .ENDC ;FILE 684 685 .SBTTL MCE - RESTAR -- Get next Line, Main-Loop 686 ; 687 000044 RESTAR: 688 000044 105067 001473' CLRB NOEXEC ; Always execute 689 690 .IF DF EDT 691 692 000050 105067 001505' CLRB GOLDFL ; Clear "GOLD" 693 694 .ENDC ;EDT 695 696 000054 004767 005242 CALL TERM ; Get terminal info 697 698 .IF DF FILE 699 700 000060 105767 001501' TSTB FILINP ; File Input ? MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 6-1 MCE - RESTAR -- Get next Line, Main-Loop 701 000064 001402 BEQ 10$ ; No : => 10$ 702 000066 004767 005460 CALL FILREA ; Goto EXEC1 if something read 703 000072 10$: ; then come back to RESTAR 704 705 .ENDC ;FILE 706 707 000072 012767 000000G 001460' MOV #IO.ATT,CODE ; Attach 708 000100 004767 004546 CALL IO ; the terminal 709 710 .IF DF EDT 711 712 000104 105767 001504' TSTB EDTFLG ; EDT Keys enabled ? 713 000110 001410 BEQ 20$ ; No : => 20$ 714 000112 012767 000463' 001462' MOV #APLTXT,ADR ; Numeric keypad 715 000120 012767 000002 001464' MOV #2,LEN ; Length 716 000126 004767 004646 CALL IOW ; Write 717 000132 20$: 718 719 .ENDC ;EDT 720 721 ; 722 ; Set our task default directory string to that of the terminal. We 723 ; need to do that since the last command could have been a SET /DEF 724 ; RSX11M does nothing with this directive so it doesn't have to be 725 ; conditionalized 726 ; 727 000132 SDIR$S #SD.TI ; Set task DDS to terminal DDS 728 ; 729 ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 7 MCE - RESTAR -- Get next Line, Main-Loop 731 .IF DF STATUS 732 733 000160 004767 000004 CALL PRSTAT ; Print status line 734 000164 000167 000324 JMP PRPROM ; => Print prompt 735 ; 736 ; 737 .SBTTL MCE - PRSTAT -- Print the status line 738 ; 739 000170 PRSTAT: 740 000170 012767 000414' 001462' MOV #STATX1,ADR ; Print 741 000176 012767 000154 001464' MOV #STALN1,LEN ; The 742 000204 000407 BR PRSTA2 ; Statusline 743 000206 PRSTA1: 744 000206 012767 000420' 001462' MOV #STATX2,ADR ; Print 745 000214 012767 000150 001464' MOV #STALN2,LEN ; The 746 000222 000400 BR PRSTA2 ; status line 747 000224 PRSTA2: 748 000224 004767 000014 CALL STAFIL ; Fill status record 749 ;;;; TSTB ANI+1 ; Ansii Screen ? ;JHA99 750 ;;;; BEQ 10$ ; No : => 10$ ;JHA99 751 000230 105767 001500' TSTB STAFLG ; Statusline wanted ? 752 000234 001402 BEQ 10$ ; No : => 10$ 753 000236 000167 004536 CALLR IOW ; Statusline 754 000242 10$: 755 000242 000207 RETURN ; 756 ; 757 .SBTTL MCE - STAFIL -- Fill status line 758 ; 759 000244 STAFIL: 760 ; 761 000244 010146 MOV R1,-(SP) ; Save R1 762 000246 010246 MOV R2,-(SP) ; Save R2 763 000250 012700 000465' MOV #STALIR,R0 ; + 764 000254 105767 001474' TSTB RING ; 765 000260 001411 BEQ 10$ ; 766 000262 112720 000162 MOVB #'r,(R0)+ ; 767 000266 112720 000151 MOVB #'i,(R0)+ ; 768 000272 112720 000156 MOVB #'n,(R0)+ ; 769 000276 112720 000147 MOVB #'g,(R0)+ ; Ring or List 770 000302 000410 BR 20$ ; 771 000304 10$: 772 000304 112720 000154 MOVB #'l,(R0)+ ; 773 000310 112720 000151 MOVB #'i,(R0)+ ; 774 000314 112720 000163 MOVB #'s,(R0)+ ; 775 000320 112720 000164 MOVB #'t,(R0)+ ; - 776 000324 20$: 777 000324 105720 TSTB (R0)+ ; + 778 000326 016701 000352' MOV MAXF,R1 ; Maxfif 779 000332 004767 000146 CALL CONV ; - 780 000336 105720 TSTB (R0)+ ; + 781 000340 116701 000362' MOVB FIFCNT,R1 ; Fifcnt 782 000344 004767 000134 CALL CONV ; - 783 000350 105720 TSTB (R0)+ ; + 784 000352 116701 000363' MOVB FIFPOI,R1 ; Fifpoi 785 000356 004767 000122 CALL CONV ; - 786 000362 012700 000510' MOV #STACMD,R0 ; + 787 000366 016701 000354' MOV MINC,R1 ; Minchr MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 7-1 MCE - STAFIL -- Fill status line 788 000372 004767 000106 CALL CONV ; - 789 000376 012700 000520' MOV #STAKEY,R0 ; + 790 000402 012701 001504' MOV #EDTFLG,R1 ; Keypad 791 000406 004767 000036 CALL OFFON ; - 792 000412 012700 000532' MOV #STASVI,R0 ; + 793 000416 012701 001475' MOV #SINFLG,R1 ; Save internals 794 000422 004767 000022 CALL OFFON ; - 795 000426 012700 000544' MOV #STASVR,R0 ; + 796 000432 012701 001476' MOV #SOLFLG,R1 ; Save old 797 000436 004767 000006 CALL OFFON ; - 798 799 .IF DF TMOTIM 800 801 MOV #STATMO,R0 ; + 802 MOVB TMOCNT,R1 ; Time-out count 803 MOV #15012,R2 ; 804 CALL $CBTA ; - 805 806 .ENDC ;TMOTIM 807 808 000442 012602 MOV (SP)+,R2 ; Restore R2 809 000444 012601 MOV (SP)+,R1 ; Restore R1 810 000446 000207 RETURN ; 811 ; 812 000450 OFFON: 813 ; 814 ; Depending on flag in R1 : Fill with ON or OFF 815 ; 816 000450 112720 000157 MOVB #'o,(R0)+ ; + 817 000454 105711 TSTB (R1) ; 818 000456 001405 BEQ 10$ ; 819 000460 112720 000156 MOVB #'n,(R0)+ ; 820 000464 112720 000040 MOVB #' ,(R0)+ ; 821 000470 000207 RETURN 822 000472 10$: 823 000472 112720 000146 MOVB #'f,(R0)+ ; 824 000476 112720 000146 MOVB #'f,(R0)+ ; 825 000502 000207 RETURN ; - 826 ; 827 ; 828 000504 CONV: 829 000504 012702 011012 MOV #11012,R2 ; Convert 2 chars 830 000510 000167 000000G CALLR $CBTA ; Convert 831 832 .ENDC ;STATUS MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 8 MCE - PRPROM -- Print the prompt 834 .SBTTL MCE - PRPROM -- Print the prompt 835 ; 836 000514 PRPROM: 837 000514 012767 000000G 001460' MOV #IO.CCO,CODE ; Cancel 838 000522 016767 000410' 001462' MOV PROMLF,ADR ; Start of prompt buffer 839 000530 012767 000004 001464' MOV #DEFPRL,LEN ; Assume default prompt 840 841 .IF DF CLISUP 842 843 000536 004767 005102 CALL GETCLI ; Get CLI information 844 000542 103005 BCC 10$ ; Success : => 10$ 845 000544 012767 050712 001454' MOV #^RMCR,TASK ; MCR... only 846 000552 000167 000172 JMP 60$ ; Continue with default prompt 847 ; 848 000556 10$: 849 ; 850 ; Copy CLI prompt 851 ; 852 000556 012700 000000C MOV #GCLI+G.CIDP,R0 ; R0 => CLI Prompt information 853 000562 112004 MOVB (R0)+,R4 ; Get length, advance to prompt string 854 000564 060400 ADD R4,R0 ; Point behind CLI prompt 855 000566 012703 000636' MOV #NEW+2,R3 ; Point behind prompt buffer (ROOM for ESC[) 856 000572 112743 000133 MOVB #'[,-(R3) ; Insert '[' ( hold screen mode ) 857 000576 112743 000033 MOVB #ESC,-(R3) ; Insert ESC ( hold screen mode ) 858 000602 005046 CLR -(SP) ; Reserve space 859 000604 20$: 860 000604 114016 MOVB -(R0),(SP) ; Save character 861 000606 121627 000015 CMPB (SP),#CR ; ? 862 000612 001404 BEQ 30$ ; Yes : => 30$ 863 000614 121627 000012 CMPB (SP),#LF ; ? 864 000620 001401 BEQ 30$ ; Yes : => 30$ 865 000622 111643 MOVB (SP),-(R3) ; Copy character 866 000624 30$: 867 000624 077411 SOB R4,20$ ; Next character 868 000626 005726 TST (SP)+ ; Flush space 869 870 .IF DF EDT 871 872 000630 105767 001504' TSTB EDTFLG ; EDT mode active ? 873 000634 001405 BEQ 40$ ; No : => 40$ 874 875 .IF DF STATUS 876 877 000636 105767 001500' TSTB STAFLG ; Status line ? 878 000642 001002 BNE 40$ ; Yes : => 40$ 879 880 .ENDC ;STATUS 881 882 000644 112743 000072 MOVB #':,-(R3) ; Display EDT mode active 883 000650 40$: 884 885 .ENDC ;EDT 886 887 000650 112743 000053 MOVB #'+,-(R3) ; Assume insert mode 888 000654 132767 000001 001471' BITB #1,OVSTMO ; Overstrike ? 889 000662 001402 BEQ 50$ ; No : => 50$ 890 000664 112713 000055 MOVB #'-,(R3) ; Overstrike MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 8-1 MCE - PRPROM -- Print the prompt 891 000670 50$: 892 000670 112743 000015 MOVB #CR,-(R3) ; Insert 893 000674 112743 000012 MOVB #LF,-(R3) ; Insert 894 000700 112763 000057 177777 MOVB #'/,-1(R3) ; Insert '/' ( hold screen mode ) 895 000706 112763 000033 177776 MOVB #ESC,-2(R3) ; Insert ( hold screen mode ) 896 000714 012767 000634' 001464' MOV #NEW,LEN ; Point behind prompt buffer 897 000722 160367 001464' SUB R3,LEN ; Length 898 000726 010367 000412' MOV R3,PROMPT ; + 899 000732 010367 000410' MOV R3,PROMLF ; Adjust 900 000736 005267 000412' INC PROMPT ; Pointers 901 000742 016767 000410' 001462' MOV PROMLF,ADR ; - 902 000750 60$: 903 000750 105767 000401' TSTB HLD+1 ; Hold screen mode ? 904 000754 001406 BEQ 70$ ; No : => 70$ 905 000756 062767 000004 001464' ADD #4,LEN ; Adjust length for Hold screen escseq. 906 000764 162767 000002 001462' SUB #2,ADR ; Adjust address 907 000772 70$: 908 909 .ENDC ;CLISUP 910 911 000772 004767 003654 CALL IO ; Output prompt 912 ; 913 ; Clear edit buffer and setup R1 and R2 as pointers 914 ; 915 000776 004767 002742 CALL CLRNEW ; Clear edit buffer 916 MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 9 MCE - LOOP -- Accept next Char. for input and dispatch it 918 .SBTTL MCE - LOOP -- Accept next Char. for input and dispatch it 919 ; 920 001002 LOOP: 921 001002 012767 000000C 001460' MOV #IO.RST!TF.RNE!TF.RAL,CODE 922 ; Accept one chr. 923 001010 012767 001470' 001462' MOV #CHAR,ADR ; 1 Character buffer 924 001016 012767 000001 001464' MOV #1,LEN ; Length 925 001024 004767 003622 CALL IO ; Read 1 char 926 001030 LOOP00: 927 928 .IF DF TMOTIM 929 930 CMPB IOSTAT,#IE.ABO ; IO killed ? (time-out) 931 BNE 20$ ; No : => 20$ 932 MOV #BYETXT,R0 ; Assume "BYE" 933 TSTB TTN ; Are we on TT0: ? 934 BNE 10$ ; No : => 10$, Spawn BYE 935 MOV #EXITXT,R0 ; "MCE EXIT" 936 10$: 937 CALL GETBUF ; Copy in NEW 938 CALL DISPLY ; Display 939 JMP EXEC ; Execute "BYE" or "MCE EXIT" command 940 20$: 941 942 .ENDC ;TMOTIM 943 944 001030 116704 000405' MOVB IOSTAT+1,R4 ; Test for branch table 945 ; 946 ; The following 2 lines test if there is a VT2xx/VT3xx Terminal 947 ; in 8-Bit Ctrl-Mode on an 8-Bit line that sends 948 ; 'P' - 'S' when pressing 'PF1' - 'PF4' 949 ; On a 7-Bit line (217) is stripped to (17) 950 ; 951 001034 120427 000217 CMPB R4,#SS3 ; 'SS3' Control-String ? 952 001040 001002 BNE 30$ ; No : => 30$ 953 001042 000167 001002 JMP ESCAP ; Process as 954 001046 30$: 955 001046 042704 177600 BIC #177600,R4 ; 7-bit ASCII 956 001052 120427 000177 CMPB R4,#DEL ; Delete ? 957 001056 001002 BNE 40$ ; No : => 40$ 958 001060 000167 000204 JMP DELEC ; => Delete char. 959 001064 40$: 960 001064 042704 177740 BIC #177740,R4 ; IO.RST: all ctrl-char in iostat 961 001070 010403 MOV R4,R3 ; Copy in R3 962 001072 006303 ASL R3 ; Word offset 963 001074 032763 000001 000652' BIT #1,DSPTAB(R3) ; May be translated ? 964 001102 001405 BEQ 50$ ; Yes : => 50$ 965 001104 016303 000652' MOV DSPTAB(R3),R3 ; Take address 966 001110 042703 000001 BIC #1,R3 ; Clear bit 0 967 001114 000113 JMP (R3) ; Do action routine 968 001116 50$: 969 ; 970 ; Check if to be translated 971 ; 972 001116 112767 000136 000754' MOVB #'^,SAVB ; Insert 973 001124 110467 000755' MOVB R4,SAVB+1 ; key 974 001130 152767 000100 000755' BISB #100,SAVB+1 ; Make ASCII MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 9-1 MCE - LOOP -- Accept next Char. for input and dispatch it 975 001136 126727 000755' 000137 CMPB SAVB+1,#'_ ; "_" ? 976 001144 001003 BNE 60$ ; No : => 60$ 977 001146 112767 000077 000755' MOVB #'?,SAVB+1 ; Make "?" 978 001154 60$: 979 001154 006304 ASL R4 ; Word offset 980 001156 062704 000652' ADD #DSPTAB,R4 ; Add table address 981 001162 012767 000002 001512' MOV #2,PDSC ; P0 Length = 2 982 001170 PROCESS: 983 001170 012767 000754' 001514' MOV #SAVB,PDSC+2 ; P0 Address 984 001176 010246 MOV R2,-(SP) ; Save R2 985 001200 004767 004516 CALL FNDCMD ; Find cmd 986 001204 012602 MOV (SP)+,R2 ; Restore R2 987 001206 103402 BCS 10$ ; No entry found : => 10$ 988 001210 000167 001570 JMP FUNC ; Proccess it 989 001214 10$: 990 001214 000174 000000 JMP @(R4) ; <== Dispatch MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 10 MCE - BEGLIN -- Begin of line 992 .SBTTL MCE - BEGLIN -- Begin of line 993 ; 994 001220 BEGLIN: 995 001220 004767 003766 CALL SPBACK ; Back space one position 996 001224 103375 BCC BEGLIN ; If CC not yet at the begin 997 001226 000520 BR LOOP1 ; => LOOP 998 ; 999 ; 1000 .SBTTL MCE - CHOVER -- Flip between insert and overstrike mode 1001 ; 1002 001230 CHOVER: 1003 001230 105267 001471' INCB OVSTMO ; Change mode 1004 001234 016704 000410' MOV PROMLF,R4 ; R4 => Prompt 1005 001240 122424 CMPB (R4)+,(R4)+ ; R4 => Mode character 1006 001242 121427 000053 CMPB (R4),#'+ ; "+" ? 1007 001246 001403 BEQ 10$ ; Yes : => 10$ 1008 001250 112714 000053 MOVB #'+,(R4) ; Insert "+" 1009 001254 000402 BR 20$ ; => 20$ 1010 001256 10$: 1011 001256 112714 000055 MOVB #'-,(R4) ; Insert "-" 1012 001262 20$: 1013 001262 004767 002552 CALL DISPLY ; Rewrite line 1014 001266 000500 BR LOOP1 ; => LOOP 1015 ; 1016 ; 1017 .SBTTL MCE - DELEC -- Delete left single char 1018 ; 1019 001270 DELEC: 1020 001270 004767 003716 CALL SPBACK ; Back space one position 1021 001274 103475 BCS LOOP1 ; Error : => LOOP 1022 001276 000500 BR DELCHR ; => DELCHR 1023 ; 1024 ; 1025 .SBTTL MCE - DELEL -- Delete from start of line to cursor 1026 ; 1027 001300 DELEL: 1028 001300 020127 000634' CMP R1,#NEW ; At begin of buffer ? 1029 001304 101443 BLOS 50$ ; Yes : => 50$ 1030 001306 012700 000634' MOV #NEW,R0 ; R0 => NEW 1031 001312 10$: 1032 001312 020102 CMP R1,R2 ; EOL ? 1033 001314 001402 BEQ 20$ ; Yes : => 20$ 1034 001316 112120 MOVB (R1)+,(R0)+ ; Shift string left 1035 001320 000774 BR 10$ ; => 10$ 1036 001322 20$: 1037 001322 010002 MOV R0,R2 ; End of text 1038 001324 30$: 1039 001324 020027 000750' CMP R0,#NEW+BUFSIZ ; End of buffer ? 1040 001330 103003 BHIS 40$ ; Yes : => 40$ 1041 001332 112720 000040 MOVB #BLNK,(R0)+ ; Fill with blank 1042 001336 000772 BR 30$ ; => 30$ 1043 001340 40$: 1044 001340 016767 000412' 001462' MOV PROMPT,ADR ; + 1045 001346 010167 001464' MOV R1,LEN ; Rewrite line 1046 001352 166767 000412' 001464' SUB PROMPT,LEN ; 1047 001360 004767 003414 CALL IOW ; - 1048 001364 012767 000634' 001464' MOV #NEW,LEN ; + MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 10-1 MCE - DELEL -- Delete from start of line to cursor 1049 001372 166767 000412' 001464' SUB PROMPT,LEN ; Reposition cursor 1050 001400 004767 003246 CALL IO ; 1051 001404 012701 000634' MOV #NEW,R1 ; - 1052 001410 105067 001477' CLRB OLDFLG ; No old command 1053 001414 50$: 1054 001414 000425 BR LOOP1 ; => LOOP 1055 ; 1056 ; 1057 .SBTTL MCE - DELEW -- Delete left single word 1058 ; 1059 001416 DELEW: 1060 001416 020127 000634' CMP R1,#NEW ; At begin of buffer ? 1061 001422 101422 BLOS LOOP1 ; Yes : => LOOP 1062 001424 010146 MOV R1,-(SP) ; Save cursor position 1063 001426 10$: 1064 001426 005301 DEC R1 ; Cursor left 1065 001430 020127 000634' CMP R1,#NEW ; At begin of buffer ? 1066 001434 101412 BLOS 30$ ; Yes : => 30$ 1067 001436 116100 177777 MOVB -1(R1),R0 ; Get previous char 1068 001442 120027 000040 CMPB R0,#BLNK ; Space ? 1069 001446 001002 BNE 20$ ; No : => 20$ 1070 001450 120011 CMPB R0,(R1) ; Was previous one a space ? 1071 001452 001765 BEQ 10$ ; Yes : => 10$, delete it 1072 001454 20$: 1073 001454 004767 003570 CALL SRWORD ; Search word 1074 001460 103362 BCC 10$ ; 1075 001462 30$: 1076 001462 012600 MOV (SP)+,R0 ; R0 = Initial cursor position 1077 001464 010146 MOV R1,-(SP) ; Save new cursor position 1078 001466 000453 BR DELWRD ; => Delwrd 1079 ; 1080 001470 000167 177306 LOOP1: JMP LOOP ; => LOOP 1081 ; 1082 .SBTTL MCE - DELRC -- Delete right single char 1083 ; 1084 001474 DELRC: 1085 001474 020102 CMP R1,R2 ; At EOL ? 1086 001476 103374 BHIS LOOP1 ; Yes : => LOOP 1087 001500 DELCHR: 1088 001500 010100 MOV R1,R0 ; R0 => Cursor 1089 001502 10$: 1090 001502 116020 000001 MOVB 1(R0),(R0)+ ; Shift string left 1091 001506 020002 CMP R0,R2 ; At EOL ? 1092 001510 101774 BLOS 10$ ; No : => 10$ 1093 001512 004767 003646 CALL UPDATE ; Rewrite line 1094 001516 005302 DEC R2 ; End of text 1095 001520 105067 001477' CLRB OLDFLG ; No old command 1096 001524 000761 BR LOOP1 ; => LOOP 1097 ; 1098 ; 1099 .SBTTL MCE - DELRL -- Delete from cursor to eol 1100 ; 1101 001526 DELRL: 1102 001526 010100 MOV R1,R0 ; R0 => Cursor 1103 001530 10$: 1104 001530 020002 CMP R0,R2 ; EOL ? 1105 001532 103005 BHIS 20$ ; Yes : => 20$ MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 10-2 MCE - DELRL -- Delete from cursor to eol 1106 001534 105067 001477' CLRB OLDFLG ; No old command 1107 001540 112720 000040 MOVB #BLNK,(R0)+ ; Space 1108 001544 000771 BR 10$ ; 1109 001546 20$: 1110 001546 004767 003612 CALL UPDATE ; Rewrite line 1111 001552 010102 MOV R1,R2 ; Cursor at EOL 1112 001554 000745 BR LOOP1 ; => LOOP 1113 ; 1114 ; 1115 .SBTTL MCE - DELRW -- Delete right single word 1116 ; 1117 001556 DELRW: 1118 001556 020102 CMP R1,R2 ; At EOL ? 1119 001560 103343 BHIS LOOP1 ; Yes : => LOOP 1120 001562 010146 MOV R1,-(SP) ; Save cursor position 1121 001564 10$: 1122 001564 112100 MOVB (R1)+,R0 ; Get char 1123 001566 120027 000040 CMPB R0,#BLNK ; Space ? 1124 001572 001002 BNE 20$ ; No : => 20$ 1125 001574 120011 CMPB R0,(R1) ; Is next one a space ? 1126 001576 001403 BEQ 30$ ; Yes : => 30$, delete it 1127 001600 20$: 1128 001600 004767 003444 CALL SRWORD ; Search word 1129 001604 103402 BCS 40$ ; 1130 001606 30$: 1131 001606 020102 CMP R1,R2 ; At EOL ? 1132 001610 103765 BLO 10$ ; No : => 10$ 1133 001612 40$: 1134 001612 010100 MOV R1,R0 ; R0 = Current cursor position 1135 001614 011601 MOV (SP),R1 ; R1 = Initial cursor position 1136 ; 1137 001616 DELWRD: 1138 001616 020002 CMP R0,R2 ; EOL ? 1139 001620 103004 BHIS 10$ ; No : => 10$ 1140 001622 111021 MOVB (R0),(R1)+ ; Shift down 1141 001624 112720 000040 MOVB #BLNK,(R0)+ ; Must be replaced by space 1142 001630 000772 BR DELWRD ; => DELWRD 1143 001632 10$: 1144 001632 010102 MOV R1,R2 ; New end ptr 1145 001634 012601 MOV (SP)+,R1 ; Restore cursor 1146 001636 105067 001477' CLRB OLDFLG ; No old command 1147 001642 RETYPE: 1148 001642 004767 002172 CALL DISPLY ; Write buffer 1149 001646 000710 BR LOOP1 ; => LOOP 1150 ; 1151 ; 1152 .SBTTL MCE - ENDLIN -- Jump to end of text 1153 ; 1154 001650 ENDLIN: 1155 001650 010167 001462' MOV R1,ADR ; + 1156 001654 010267 001464' MOV R2,LEN ; Write from cursor to end 1157 001660 160167 001464' SUB R1,LEN ; 1158 001664 001403 BEQ 10$ ; 1159 001666 004767 003106 CALL IOW ; - 1160 001672 010201 MOV R2,R1 ; End of text 1161 001674 10$: 1162 001674 000675 BR LOOP1 ; => LOOP MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 10-3 MCE - ENDLIN -- Jump to end of text 1163 ; 1164 ; 1165 .SBTTL MCE - INSERT -- Insert one character 1166 ; 1167 001676 INSERT: 1168 001676 020227 000750' CMP R2,#NEW+BUFSIZ ; Still Room ? 1169 001702 103272 BHIS LOOP1 ; No : => LOOP 1170 001704 012767 001470' 001462' MOV #CHAR,ADR ; + 1171 001712 012767 000001 001464' MOV #1,LEN ; Echo character 1172 001720 004767 003054 CALL IOW ; - 1173 001724 105067 001477' CLRB OLDFLG ; No old command 1174 001730 132767 000001 001471' BITB #1,OVSTMO ; Overstrike ? 1175 001736 001406 BEQ 10$ ; No : => 10$ 1176 001740 116721 001470' MOVB CHAR,(R1)+ ; Overstrike 1177 001744 020102 CMP R1,R2 ; At end ? 1178 001746 101650 BLOS LOOP1 ; No : => LOOP 1179 001750 010102 MOV R1,R2 ; Increment end ptr 1180 001752 000646 BR LOOP1 ; => LOOP 1181 001754 10$: 1182 001754 005202 INC R2 ; No overstrike - shift 1183 001756 010200 MOV R2,R0 ; R0 => EOL 1184 001760 20$: 1185 001760 114060 000001 MOVB -(R0),1(R0) ; Shift string right 1186 001764 020001 CMP R0,R1 ; At cursor ? 1187 001766 101374 BHI 20$ ; No : => 20$ 1188 001770 116721 001470' MOVB CHAR,(R1)+ ; Insert new character 1189 001774 004767 003364 CALL UPDATE ; Rewrite line 1190 002000 000633 BR LOOP1 ; => LOOP 1191 ; 1192 ; 1193 .SBTTL MCE - MOVWRD -- Move word 1194 ; 1195 002002 MOVWRD: 1196 002002 020102 CMP R1,R2 ; At EOL ? 1197 002004 103403 BLO 10$ ; No => 10$ 1198 002006 012701 000634' MOV #NEW,R1 ; Set at begin 1199 002012 000413 BR 40$ ; => 40$ 1200 002014 10$: 1201 002014 112100 MOVB (R1)+,R0 ; Get char 1202 002016 120027 000040 CMPB R0,#BLNK ; Space ? 1203 002022 001002 BNE 20$ ; No : => 20$ 1204 002024 120011 CMPB R0,(R1) ; Is next one a space ? 1205 002026 001403 BEQ 30$ ; Yes : => 30$ 1206 002030 20$: 1207 002030 004767 003214 CALL SRWORD ; Search word 1208 002034 103402 BCS 40$ ; 1209 002036 30$: 1210 002036 020102 CMP R1,R2 ; At EOL ? 1211 002040 103765 BLO 10$ ; No : => 10$ 1212 002042 40$: 1213 002042 004767 001772 CALL DISPLY ; 1214 002046 000610 BR LOOP1 ; => LOOP MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 11 MCE - ESCAP -- Escape Sequences / FIFO - Commands 1216 .SBTTL MCE - ESCAP -- Escape Sequences / FIFO - Commands 1217 ; 1218 .ENABL LSB 1219 002050 ESCAP: 1220 002050 004767 002576 CALL IO ; Read next char 1221 002054 116700 001470' MOVB CHAR,R0 ; R0 = Character 1222 002060 120027 000133 CMPB R0,#'[ ; [ ? 1223 002064 001771 BEQ ESCAP ; Yes : => ESCAP 1224 002066 120027 000117 CMPB R0,#'O ; O ? 1225 002072 001766 BEQ ESCAP ; Yes : => ESCAP 1226 002074 120027 000077 CMPB R0,#'? ; ? ? 1227 002100 001763 BEQ ESCAP ; Yes : => ESCAP 1228 002102 126727 000405' 000033 CMPB IOSTAT+1,#ESC ; ? 1229 002110 001002 BNE 10$ ; No : => 10$ 1230 002112 000167 001304 JMP EXECNW ; Execute no-wait 1231 002116 10$: 1232 002116 120027 000101 CMPB R0,#'A ; ? 1233 002122 001040 BNE 70$ ; No : => 70$ 1234 ; 1235 ; UP-ARROW ..... 1236 ; 1237 002124 UP: 1238 002124 016705 000364' MOV FIFPTR,R5 ; Get Ptr of buffer 1239 002130 001012 BNE 20$ ; Defined : => 20$ 1240 002132 005767 000356' TST FIFO ; Any entry ? 1241 002136 001463 BEQ 90$ ; No : => 90$ 1242 002140 016767 000360' 000364' MOV FIFO+2,FIFPTR ; Take 1243 002146 116767 000362' 000363' MOVB FIFCNT,FIFPOI ; newest entry 1244 002154 000454 BR 90$ ; => 90$ 1245 002156 20$: 1246 002156 012705 000356' MOV #FIFO,R5 ; Find previous entry 1247 002162 30$: 1248 002162 011505 MOV (R5),R5 ; Next 1249 002164 001004 BNE 40$ ; Got one : => 40$ 1250 002166 105767 001474' TSTB RING ; Ringbuffer ? 1251 002172 001007 BNE 50$ ; Yes : => 50$ 1252 002174 000444 BR 90$ ; => 90$ 1253 002176 40$: 1254 002176 021567 000364' CMP (R5),FIFPTR ; Does this point to me ? 1255 002202 001367 BNE 30$ ; No : => 30$ 1256 002204 105367 000363' DECB FIFPOI ; One older 1257 002210 000402 BR 60$ ; 1258 002212 50$: 1259 002212 105067 000363' CLRB FIFPOI ; None 1260 002216 60$: 1261 002216 010567 000364' MOV R5,FIFPTR ; Found - load 1262 002222 000431 BR 90$ ; and display 1263 ; 1264 002224 70$: 1265 002224 120027 000102 CMPB R0,#'B ; ? 1266 002230 001051 BNE 120$ ; No : => 120$ 1267 ; 1268 ; DOWN-ARROW ..... 1269 ; 1270 002232 DOWN:: 1271 002232 016705 000364' MOV FIFPTR,R5 ; Get Ptr of buffer 1272 002236 001015 BNE 80$ ; Defined : => 80$ MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 11-1 MCE - ESCAP -- Escape Sequences / FIFO - Commands 1273 002240 005767 000356' TST FIFO ; Any entry at all ? 1274 002244 001420 BEQ 90$ ; No : => 90$ 1275 002246 105767 001474' TSTB RING ; Ringbuffer ? 1276 002252 001422 BEQ 100$ ; No : => 100$ 1277 002254 016767 000356' 000364' MOV FIFO,FIFPTR ; Take oldest 1278 002262 112767 000001 000363' MOVB #1,FIFPOI ; Oldest 1279 002270 000406 BR 90$ ; => 90$ 1280 002272 80$: 1281 002272 005715 TST (R5) ; Goto next buffer if any 1282 002274 001407 BEQ CLRBUF ; No more : => CLRBUF 1283 002276 011567 000364' MOV (R5),FIFPTR ; Next 1284 002302 105267 000363' INCB FIFPOI ; One newer 1285 002306 90$: 1286 002306 004767 002232 CALL GEFIFO ; Load NEW from FIFO 1287 002312 000406 BR 110$ ; => 110$ 1288 ; 1289 ; CLEAR LINE ..... 1290 ; 1291 002314 CLRBUF: 1292 002314 004767 000016 CALL CLEAR ; Clear flags and pointers 1293 002320 100$: 1294 002320 004767 001420 CALL CLRNEW ; Clear edit buffer 1295 002324 004767 001510 CALL DISPLY ; and display prompt 1296 002330 110$: 1297 1298 .IF DF STATUS 1299 1300 002330 004767 175652 CALL PRSTA1 ; Print status line 1301 1302 .ENDC ;STATUS 1303 1304 002334 000543 BR LOOP2 ; => LOOP 1305 ; 1306 ; 1307 002336 CLEAR: 1308 ; 1309 ; Clear flags and pointers 1310 ; 1311 002336 105067 001477' CLRB OLDFLG ; No old command 1312 002342 005067 000364' CLR FIFPTR ; 1313 002346 105067 000363' CLRB FIFPOI ; None 1314 002352 000207 RETURN ; 1315 ; 1316 ; 1317 002354 120$: 1318 002354 120027 000103 CMPB R0,#'C ; ? 1319 002360 001013 BNE 130$ ; No : => 130$ 1320 ; 1321 ; RIGHT-ARROW ..... 1322 ; 1323 .SBTTL MCE - RIGHT -- Cursor right 1324 ; 1325 002362 RIGHT: 1326 002362 020102 CMP R1,R2 ; End of text ? 1327 002364 103127 BHIS LOOP2 ; Yes : => LOOP 1328 002366 010167 001462' MOV R1,ADR ; Rewrite 1329 002372 012767 000001 001464' MOV #1,LEN ; Character MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 11-2 MCE - RIGHT -- Cursor right 1330 002400 004767 002374 CALL IOW ; at Cursor position 1331 002404 005201 INC R1 ; Shift cursor right 1332 002406 000516 BR LOOP2 ; => LOOP 1333 ; 1334 002410 130$: 1335 002410 120027 000104 CMPB R0,#'D ; ? 1336 002414 001003 BNE 140$ ; No : => 140$ 1337 ; 1338 ; LEFT-ARROW ..... 1339 ; 1340 .SBTTL MCE - LEFT -- Cursor left 1341 ; 1342 002416 LEFT: 1343 002416 004767 002570 CALL SPBACK ; Cursor left one space 1344 002422 000510 BR LOOP2 ; => LOOP 1345 ; 1346 002424 140$: 1347 1348 .IF DF EDT 1349 1350 ; 1351 ; EDT-KEYS ..... 1352 ; 1353 002424 105767 001504' TSTB EDTFLG ; EDT Keys enabled ? 1354 002430 001440 BEQ 190$ ; No : => 190$ 1355 002432 120027 000115 CMPB R0,#'M ; ? 1356 002436 001002 BNE 150$ ; No : => 150$ 1357 002440 000167 000764 JMP EXEC ; Execute 1358 002444 150$: 1359 002444 120027 000120 CMPB R0,#'P ; + 1360 002450 103406 BLO 160$ ; PFx range ? 1361 002452 120027 000123 CMPB R0,#'S ; No : => 160$ 1362 002456 101003 BHI 160$ ; - 1363 002460 062700 177676 ADD #<'z-'l-'P>,R0 ; Relocate to table offset 1364 002464 000410 BR 170$ ; => 170$ 1365 002466 160$: 1366 002466 120027 000154 CMPB R0,#'l ; + 1367 002472 103417 BLO 190$ ; Within Keypad range ? 1368 002474 120027 000171 CMPB R0,#'y ; No : => 180$ 1369 002500 101012 BHI 180$ ; - 1370 002502 162700 000154 SUB #'l,R0 ; Make 1371 002506 170$: 1372 002506 006300 ASL R0 ; dispatchtable 1373 002510 006300 ASL R0 ; offset 1374 002512 105767 001505' TSTB GOLDFL ; Gold ? 1375 002516 001403 BEQ 180$ ; Yes : => 180$ 1376 002520 005720 TST (R0)+ ; Point to "GOLD" entry 1377 002522 105067 001505' CLRB GOLDFL ; Clear "GOLD" 1378 002526 180$: 1379 002526 000170 000752' JMP @EDTTAB(R0) ; Do EDT function 1380 002532 190$: 1381 002532 105067 001505' CLRB GOLDFL ; Clear "GOLD" 1382 1383 .ENDC ;EDT 1384 1385 ; 1386 ; PF-KEYS ..... MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 11-3 MCE - LEFT -- Cursor left 1387 ; 1388 002536 162700 000120 SUB #'P,R0 ; Any PFn key ? 1389 002542 103535 BLO VT2KEY ; No : => VT2KEY 1390 002544 020027 000003 CMP R0,#'S-'P ; > PF4 ? 1391 002550 101132 BHI VT2KEY ; Yes : => VT2KEY 1392 002552 010046 MOV R0,-(SP) ; Save 0..3 for .. 1393 002554 012767 043120 000754' MOV #"PF,SAVB ; "PF' in SAVBUF 1394 002562 062700 000061 ADD #'1,R0 ; Make ascii from PR-number 1395 002566 010067 000756' MOV R0,SAVB+2 ; Insert in SAVBUF 1396 002572 012767 000003 001512' MOV #3,PDSC ; P0 Length 1397 002600 012767 000754' 001514' MOV #SAVB,PDSC+2 ; P0 Address 1398 002606 010246 MOV R2,-(SP) ; Save R2 1399 002610 004767 003106 CALL FNDCMD ; Find cmd 1400 002614 012602 MOV (SP)+,R2 ; Restore R2 1401 002616 012600 MOV (SP)+,R0 ; Restore R0 1402 002620 103071 BCC FUNC ; Entry found : => FUNC 1403 ; 1404 002622 010201 MOV R2,R1 ; Point to end of buffer 1405 002624 006300 ASL R0 ; Word offset 1406 002626 060007 ADD R0,PC ; Branch 1407 002630 000417 BR TRANSL ; 1408 002632 000411 BR RECALL ; 1409 002634 000405 BR PRINTC ; 1410 ; ; 1411 ; Fall through to PRINTF, adjacency assumed 1412 ; 1413 .DSABL LSB 1414 1415 .SBTTL MCE - PRINTF -- Print fifo buffer 1416 ; 1417 002636 PRINTF: 1418 ; 1419 ; Print fifo ..... 1420 ; 1421 002636 004767 002274 CALL PRIFIF ; Print whole fifo 1422 002642 000400 BR LOOP2 ; => LOOP 1423 ; 1424 002644 000167 176132 LOOP2: JMP LOOP ; => LOOP 1425 ; 1426 .SBTTL MCE - PRINTC -- Print command buffer 1427 ; 1428 002650 PRINTC: 1429 ; 1430 ; Print CMD Buffer 1431 ; 1432 002650 004767 002252 CALL PRICMD ; Print command buffer 1433 002654 000773 BR LOOP2 ; => LOOP 1434 ; 1435 ; 1436 .SBTTL MCE - RECALL -- Recall a command 1437 ; 1438 002656 RECALL: 1439 ; 1440 ; - RECALL 1441 ; 1442 002656 004767 004114 CALL RECCMD ; Recall Command 1443 MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 11-4 MCE - RECALL -- Recall a command 1444 .IF DF STATUS 1445 1446 002662 004767 175320 CALL PRSTA1 ; Dispay status line 1447 1448 .ENDC ;STATUS 1449 1450 002666 000766 BR LOOP2 ; => LOOP 1451 ; 1452 ; 1453 .SBTTL MCE - TRANSL -- Translate a command 1454 ; 1455 002670 TRANSL: 1456 ; 1457 ; Translate 1458 ; 1459 002670 020227 000634' CMP R2,#NEW ; Something in buffer ? 1460 002674 001763 BEQ LOOP2 ; No : => LOOP 1461 002676 105367 001472' DECB NOLOAD ; Disable command load 1462 002702 162702 000634' SUB #NEW,R2 ; Calculate Length 1463 002706 010267 001464' MOV R2,LEN ; Store 1464 002712 004767 003224 CALL CMDCHK ; Command Translation 1465 002716 016702 001464' MOV LEN,R2 ; Restore R2 1466 002722 062702 000634' ADD #NEW,R2 ; Point 1467 002726 010201 MOV R2,R1 ; to end 1468 002730 004767 001104 CALL DISPLY ; Write line 1469 002734 105067 001472' CLRB NOLOAD ; Enable command load 1470 002740 000741 BR LOOP2 ; => LOOP 1471 ; 1472 1473 .IF DF EDT 1474 1475 .SBTTL MCE - GOLD -- "GOLD" Key 1476 ; 1477 002742 GOLD: 1478 002742 105267 001505' INCB GOLDFL ; Set "GOLD" flag 1479 002746 000736 BR LOOP2 ; => LOOP 1480 ; 1481 ; 1482 .SBTTL MCE - SHVERS -- Version 1483 ; 1484 002750 SHVERS: 1485 002750 012746 000044' MOV #RESTAR,-(SP) ; RESTAR as return address 1486 002754 000167 005366 CALLR ICVERS ; Display Version 1487 ; 1488 ; 1489 .SBTTL MCE - SHFREE -- Free pool 1490 ; 1491 002760 SHFREE: 1492 002760 012746 000044' MOV #RESTAR,-(SP) ; RESTAR as return address 1493 002764 000167 004714 CALLR ICFREE ; Display Free pool 1494 ; 1495 ; 1496 .SBTTL MCE - EDTHLP -- Keypad Help 1497 ; 1498 002770 EDTHLP: 1499 002770 012700 000467' MOV #EDTTXT,R0 ; EDT helptext 1500 002774 000404 BR FUNCEX ; => FUNCEX MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 11-5 MCE - EDTHLP -- Keypad Help 1501 1502 .ENDC ;EDT 1503 1504 ; 1505 ; 1506 .SBTTL MCE - HELP -- Help key 1507 ; 1508 ; or Spawn "HELP MCE" 1509 ; 1510 002776 HELP: 1511 002776 012700 000451' MOV #HLPTXT,R0 ; Move HELP MCE into Buffer 1512 003002 000401 BR FUNCEX ; => FUNCEX 1513 ; 1514 .SBTTL MCE - FUNC -- Exectute function key commands 1515 ; 1516 003004 FUNC: 1517 003004 010100 MOV R1,R0 ; Find start of text 1518 003006 FUNCEX: 1519 ; 1520 ; Execute command in (R0) 1521 ; 1522 003006 004767 001722 CALL IOCR ; Clear current line 1523 003012 004767 001566 CALL GETBUF ; Load new buffer 1524 003016 162702 000634' SUB #NEW,R2 ; Calculate length 1525 003022 010267 001464' MOV R2,LEN ; Save it 1526 003026 004767 000736 CALL DETACH ; Detach terminal 1527 003032 000167 000502 JMP EXEC3 ; Execute without display MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 12 MCE - VT2KEY -- VT2xx Functionkeys 1529 .SBTTL MCE - VT2KEY -- VT2xx Functionkeys 1530 ; 1531 003036 VT2KEY: 1532 1533 .IF DF VT2XX!TDV2XX 1534 1535 003036 126727 000403' 000000G CMPB TTP+1,#T.V2XX ; VT2xx ? 1536 003044 001402 BEQ 10$ ; Yes : => 10$ 1537 003046 000167 000264 JMP TDVTST ; => TDVTST 1538 003052 10$: 1539 1540 .ENDC ;VT2XX!TDV2XX 1541 1542 .IF DF VT2XX 1543 1544 ; 1545 ; Check if function key : 1546 ; 1547 ; [n~ n 1..6 1548 ; or 1549 ; [nn~ nn 17..34 1550 ; 1551 1552 003052 116700 001470' MOVB CHAR,R0 ; R0 = character 1553 003056 042700 177600 BIC #177600,R0 ; 1554 003062 120027 000061 CMPB R0,#'1 ; + 1555 003066 103451 BLO EX1 ; 1..6 ? 1556 003070 120027 000066 CMPB R0,#'6 ; 1557 003074 101046 BHI EX1 ; - 1558 003076 000300 SWAB R0 ; Char in highbyte 1559 003100 152700 000040 BISB #BLNK,R0 ; Lowbyte = space 1560 003104 010046 MOV R0,-(SP) ; Save it 1561 003106 004767 001540 CALL IO ; Next char. 1562 003112 116700 001470' MOVB CHAR,R0 ; Take char. 1563 003116 120027 000176 CMPB R0,#'~ ; Tilde ? 1564 003122 001416 BEQ 20$ ; Yes: => 20$ 1565 003124 120027 000060 CMPB R0,#'0 ; + 1566 003130 103427 BLO EX2 ; 0..9 ? 1567 003132 120027 000071 CMPB R0,#'9 ; 1568 003136 101024 BHI EX2 ; - 1569 003140 105016 CLRB (SP) ; Clear byte 1570 003142 150016 BISB R0,(SP) ; Insert in word 1571 003144 004767 001502 CALL IO ; Next char. 1572 003150 126727 001470' 000176 CMPB CHAR,#'~ ; Tilde ? 1573 003156 001014 BNE EX2 ; No: => EX2 1574 003160 20$: 1575 003160 012600 MOV (SP)+,R0 ; Retrieve word 1576 003162 000300 SWAB R0 ; Adjust 1577 003164 012704 001062' MOV #VT2TAB,R4 ; R4 => VT2XX table 1578 003170 012705 000025 MOV #VT2LEN/6,R5 ; R5 = Table length 1579 003174 30$: 1580 003174 020024 CMP R0,(R4)+ ; Look for table entry 1581 003176 001407 BEQ VT2FN ; Found : => VT2FN 1582 003200 022424 CMP (R4)+,(R4)+ ; Next entry 1583 003202 077504 SOB R5,30$ ; Try next 1584 003204 000167 175572 JMP LOOP ; Not found : => LOOP 1585 003210 EX2: MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 12-1 MCE - VT2KEY -- VT2xx Functionkeys 1586 003210 005726 TST (SP)+ ; Flush word 1587 003212 EX1: 1588 003212 000167 175612 JMP LOOP00 ; => LOOP00 1589 ; 1590 ; 1591 .SBTTL MCE - VT2FN -- Check if VT2xx key to be translated 1592 ; 1593 003216 VT2FN: 1594 ; 1595 ; Check if to be translated 1596 ; 1597 003216 112767 000106 000754' MOVB #'F,SAVB ; Insert 1598 003224 116467 000002 000755' MOVB 2(R4),SAVB+1 ; key 1599 003232 116467 000003 000756' MOVB 3(R4),SAVB+2 ; ident 1600 003240 012767 000003 001512' MOV #3,PDSC ; Assume P0 Length = 3 1601 003246 126727 000756' 000040 CMPB SAVB+2,#BLNK ; Blank ? 1602 003254 001002 BNE 10$ ; No : => 10$ 1603 003256 005367 001512' DEC PDSC ; P0 Length = 2 1604 003262 10$: 1605 003262 000167 175702 JMP PROCESS ; Go via table 1606 ; 1607 ; 1608 .SBTTL MCE - VT2ESC -- Check for VT2XX 1609 ; 1610 ; Typed VT2xx F11 () key; look for a second one 1611 ; 1612 003266 VT2ESC: 1613 003266 004767 001360 CALL IO ; Next char 1614 003272 126727 000405' 000033 CMPB IOSTAT+1,#ESC ; ? 1615 003300 001014 BNE 20$ ; No : => 20$ 1616 003302 012704 000445' MOV #VT2ESQ,R4 ; R4 -> VT2XX ESC-SEQ. 1617 003306 012705 000004 MOV #VT2ESL,R5 ; R5 = Length 1618 003312 10$: 1619 003312 004767 001334 CALL IO ; Next char. 1620 003316 126724 001470' CMPB CHAR,(R4)+ ; Match ? 1621 003322 001003 BNE 20$ ; No : => 20$ 1622 003324 077506 SOB R5,10$ ; Next 1623 003326 000167 000070 JMP EXECNW ; 1624 003332 20$: 1625 1626 .ENDC ;VT2XX 1627 1628 003332 000167 175444 JMP LOOP ; => LOOP MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 13 MCE - TDVTST -- TDV2230 Key support 1630 .SBTTL MCE - TDVTST -- TDV2230 Key support 1631 ; 1632 003336 TDVTST: 1633 1634 .IF DF TDV2XX 1635 1636 ; 1637 ; O ... 1638 ; 1639 CMPB TTP+1,#200 ; TDV2XX ? 1640 BNE 10$ ; No: => 10$ 1641 ; 1642 ; Test character is in the range of "T" - "Z" for F1..F7 1643 ; 1644 MOVB CHAR,R4 ; R4 = Character 1645 BIC #177600,R4 ; 1646 SUB #'T,R4 ; Normalize 1647 BLT 10$ ; Less then : => 10$ 1648 CMPB R4,#'Z-'T ; In range ? 1649 BGT 10$ ; No : => 10$ 1650 ; 1651 ; Function ok: convert to string 1652 ; 1653 MOVB #'F,SAVB ; Insert 1654 MOVB R4,R0 ; 1655 ADD #'1,R0 ; key code 1656 MOVB R0,SAVB+1 ; 1657 ; 1658 MOV #2,PDSC ; P0 Length 1659 ASL R4 ; Make word offset 1660 ADD #TDVTAB,R4 ; Add table address 1661 JMP PROCES ; 1662 10$: 1663 1664 .ENDC ;TDV2XX 1665 1666 003336 000167 175440 JMP LOOP ; => LOOP MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 14 MCE - DELAY -- Detach and delay 1668 .SBTTL MCE - DELAY -- Detach and delay 1669 ; 1670 003342 DELAY: 1671 003342 004767 001366 CALL IOCR ; Print 1672 003346 004767 000416 CALL DETACH ; Detach terminal 1673 003352 MRKT$S #EFN,#10.,#2 ; Wait 1674 003376 STSE$S #EFN ; 10 seconds 1675 003410 000167 174430 JMP RESTAR ; => RESTAR 1676 ; 1677 ; 1678 .SBTTL MCE - SAVE -- Save command without execution 1679 ; 1680 003414 SAVE: 1681 003414 105267 001473' INCB NOEXEC ; Don't execute 1682 003420 000406 BR EXEC1 ; => EXEC1 1683 ; 1684 ; 1685 .SBTTL MCE - EXECNW -- Execute command no-wait 1686 ; 1687 .ENABL LSB 1688 003422 EXECNW: 1689 003422 005067 001466' CLR WAITFL ; Clear EVF 1690 003426 000403 BR EXEC1 ; => EXEC1 1691 ; 1692 ; 1693 .SBTTL MCE - EXEC -- Execute command 1694 ; 1695 003430 EXEC: 1696 003430 012767 000001 001466' MOV #1,WAITFL ; EVF = 1 1697 003436 EXEC1: 1698 003436 004767 001272 CALL IOCR ; Print 1699 003442 004767 000322 CALL DETACH ; Detach terminal 1700 003446 162702 000634' SUB #NEW,R2 ; Calculate Length 1701 003452 010267 001464' MOV R2,LEN ; Store 1702 003456 003461 BLE 60$ ; Zero : => 60$ 1703 ; 1704 003460 010201 MOV R2,R1 ; R1 = Counter 1705 003462 012705 000634' MOV #NEW,R5 ; R5 => NEW buffer 1706 003466 10$: 1707 003466 122527 000040 CMPB (R5)+,#BLNK ; A space ? 1708 003472 001002 BNE 20$ ; No : => 20$ 1709 003474 077104 SOB R1,10$ ; Look for non space 1710 003476 000451 BR 60$ ; Only spaces => 60$ 1711 003500 20$: 1712 003500 105767 001476' TSTB SOLFLG ; Save old commands ? 1713 003504 001003 BNE 30$ ; Yes : => 30$ 1714 003506 105767 001477' TSTB OLDFLG ; Old command ? 1715 003512 001002 BNE 40$ ; Yes : => 40$ 1716 003514 30$: 1717 003514 004767 001270 CALL LDFIF ; Load into FIFO 1718 003520 40$: 1719 003520 004767 176612 CALL CLEAR ; Clear flags and pointers 1720 003524 105767 001473' TSTB NOEXEC ; Execute ? 1721 003530 001034 BNE 60$ ; No : => 60$ 1722 003532 EXEC2: 1723 003532 004767 002404 CALL CMDCHK ; Check for command Translation 1724 003536 103431 BCS 60$ ; Nothing to execute MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 14-1 MCE - EXEC -- Execute command 1725 003540 EXEC3: 1726 1727 .IF DF TMOTIM 1728 1729 CLRB TMOCNT ; Disable timeouts (until next IO) 1730 1731 .ENDC ;TMOTIM 1732 1733 003540 004767 003556 CALL INTERN ; Internal command or BYE ? 1734 003544 103026 BCC 60$ ; If C clear: no command for CLI 1735 003546 004767 000450 CALL DOEXEC ; Excute command in buffer NEW 1736 003552 005767 001466' TST WAITFL ; Wait ? 1737 003556 001014 BNE 50$ ; Yes : => 50$ 1738 003560 005267 001466' INC WAITFL ; Make flag #1 1739 003564 MRKT$S WAITFL,#20.,#1 ; Allow task to run 1740 003610 50$: 1741 003610 STSE$S WAITFL ; Stop until done 1742 003622 60$: 1743 003622 000167 174216 JMP RESTAR ; => RESTAR 1744 .DSABL LSB 1745 ; 1746 ; 1747 .SBTTL MCE - EXAST -- Task exit ast 1748 ; 1749 003626 EXAST: 1750 ; 1751 ; Change STOP to WAIT 1752 ; 1753 003626 012767 000000G 001460' MOV #IO.KIL,CODE ;; Kill 1754 003634 004767 001012 CALL IO ;; pending read 1755 003640 016767 000004' 000000' MOV WAITIO,STOPIO ;; Change DIC-code 1756 003646 DIR$ #STOPIO ;; Wait for I/O 1757 ; 1758 ; 1759 .SBTTL MCE - EXIT -- Task exit 1760 ; 1761 003654 EXIT: 1762 1763 .IF NDF SILENT 1764 1765 003654 012700 000150' MOV #ENDTXT,R0 ; Exit 1766 003660 004767 001074 CALL IOMSG ; message 1767 1768 .ENDC ;SILENT 1769 1770 003664 EXITS: 1771 1772 .IF DF STATUS 1773 1774 003664 105767 000377' TSTB ANI+1 ; Ansii Screen ? ;JHA99 1775 003670 001410 BEQ 10$ ; No : => 10$ :JHA99 1776 003672 012767 000570' 001462' MOV #STACLR,ADR ; 1777 003700 012767 000016 001464' MOV #STACLN,LEN ; 1778 003706 004767 001066 CALL IOW ; 1779 003712 10$: ;JHA99 1780 1781 .ENDC ;STATUS MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 14-2 MCE - EXIT -- Task exit 1782 1783 003712 004767 000052 CALL DETACH ; Detach terminal 1784 003716 EXIT$S ; Exit MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 15 MCE - EXIT -- Task exit 1786 ; 1787 ; 1788 .SBTTL MCE - CLFIF -- Clear first entry of FIFO buffer 1789 ; 1790 003724 CLFIF: 1791 003724 012700 000356' MOV #FIFO,R0 ; This header 1792 003730 004767 000546 CALL FRENT ; Free entry from queue 1793 003734 103002 BCC 10$ ; Empty : => 10$ 1794 003736 105367 000362' DECB FIFCNT ; Adjust count 1795 003742 10$: 1796 003742 000207 RETURN ; 1797 ; 1798 ; 1799 .SBTTL MCE - CLRNEW -- Clear Buffer NEW 1800 ; 1801 003744 CLRNEW: 1802 003744 012701 000634' MOV #NEW,R1 ; R1 => NEW 1803 003750 010102 MOV R1,R2 ; R2 => NEW 1804 003752 012705 000114 MOV #BUFSIZ,R5 ; R5 = BUFSIZ 1805 003756 10$: 1806 003756 112721 000040 MOVB #BLNK,(R1)+ ; Reset NEW TO BLANK 1807 003762 077503 SOB R5,10$ ; Go back if not the end 1808 003764 010201 MOV R2,R1 ; R1 => NEW 1809 003766 000207 RETURN ; 1810 ; 1811 ; 1812 .SBTTL MCE - DETACH -- Detach terminal 1813 ; 1814 003770 DETACH: 1815 1816 .IF DF EDT 1817 1818 003770 105767 001504' TSTB EDTFLG ; EDT Keys enabled ? 1819 003774 001414 BEQ 10$ ; No : => 10$ 1820 003776 012767 000465' 001462' MOV #NUMTXT,ADR ; Numeric keypad 1821 004004 016746 001464' MOV LEN,-(SP) ; Save length 1822 004010 012767 000002 001464' MOV #2,LEN ; Length 1823 004016 004767 000756 CALL IOW ; Write 1824 004022 012667 001464' MOV (SP)+,LEN ; Restore length 1825 004026 10$: 1826 1827 .ENDC ;EDT 1828 1829 004026 012767 000000G 001460' MOV #IO.DET,CODE ; Detach 1830 004034 000167 000612 CALLR IO ; the terminal 1831 ; 1832 ; 1833 .SBTTL MCE - DISPLY -- Rewrite whole Line 1834 ; 1835 004040 DISPLY: 1836 004040 105767 000377' TSTB ANI+1 ; Ansii Screen ? 1837 004044 001014 BNE 20$ ; Yes : => 20$ 1838 004046 026767 001462' 000410' CMP ADR,PROMLF ; Just new Line written ? 1839 004054 001004 BNE 10$ ; No : => 10$ 1840 004056 026727 001464' 000002 CMP LEN,#2 ; Something written ? 1841 004064 003404 BLE 20$ ; No : => 20$ 1842 004066 10$: MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 15-1 MCE - DISPLY -- Rewrite whole Line 1843 004066 016767 000410' 001462' MOV PROMLF,ADR ; Line with 1844 004074 000403 BR 30$ ; => 30$ 1845 004076 20$: 1846 004076 016767 000412' 001462' MOV PROMPT,ADR ; Line with 1847 004104 30$: 1848 004104 010267 001464' MOV R2,LEN ; Calculate 1849 004110 166767 001462' 001464' SUB ADR,LEN ; length 1850 004116 010046 MOV R0,-(SP) ; Save R0 1851 004120 010200 MOV R2,R0 ; R0 => EOL 1852 004122 112720 000033 MOVB #ESC,(R0)+ ; Append 1853 004126 112720 000133 MOVB #'[,(R0)+ ; Clear till EOL 1854 004132 112720 000113 MOVB #'K,(R0)+ ; Esc sequence 1855 004136 105767 000377' TSTB ANI+1 ; Ansii Screen ? 1856 004142 001403 BEQ 40$ ; No : => 40$ 1857 004144 062767 000003 001464' ADD #3,LEN ; Make Escseq visible 1858 004152 40$: 1859 004152 004767 000622 CALL IOW ; Write 1860 004156 112740 000040 MOVB #BLNK,-(R0) ; + 1861 004162 112740 000040 MOVB #BLNK,-(R0) ; Flush Escseq 1862 004166 112740 000040 MOVB #BLNK,-(R0) ; - 1863 004172 012600 MOV (SP)+,R0 ; Restore R0 1864 004174 012767 001214' 001462' MOV #BS,ADR ; + 1865 004202 010267 001464' MOV R2,LEN ; 1866 004206 160167 001464' SUB R1,LEN ; Restore Cursor 1867 004212 001402 BEQ 50$ ; 1868 004214 000167 000432 CALLR IO ; - 1869 004220 50$: 1870 004220 000207 RETURN ; 1871 ; 1872 ; 1873 .SBTTL MCE - DOEXEC -- Submit command to CLI 1874 ; 1875 004222 DOEXEC: 1876 1877 .IF DF COMPND ;JHB03 1878 ;JHB03 1879 004222 012700 000634' MOV #NEW,R0 ; R0 => Buffer ;JHB03 1880 004226 010003 MOV R0,R3 ; Copy start of command ;JHB03 1881 004230 10$: ;JHB03 1882 004230 016701 001464' MOV LEN,R1 ; R1 = Length ;JHB03 1883 004234 005002 CLR R2 ; Compute length here ;JHB03 1884 004236 20$: ;JHB03 1885 004236 122327 000046 CMPB (R3)+,#'& ; Ampersand here ? ;JHB03 1886 004242 001404 BEQ 30$ ; If eq yes ;JHB03 1887 004244 005202 INC R2 ; Count command length ;JHB03 1888 004246 077105 SOB R1,20$ ; End of story ? ;JHB03 1889 004250 010201 MOV R2,R1 ; Load new length ;JHB03 1890 004252 000454 BR GVCLI2 ; Process as last command to CLI ;JHB03 1891 004254 30$: ;JHB03 1892 004254 010201 MOV R2,R1 ; Load new length ;JHB03 1893 004256 005202 INC R2 ; Account for &-sign ;JHB03 1894 004260 160267 001464' SUB R2,LEN ; Compute unused string length ;JHB03 1895 004264 004767 000004 CALL GVCLI1 ; Go execute it ;JHB03 1896 004270 010300 MOV R3,R0 ; Set to unused string ;JHB03 1897 004272 000756 BR 10$ ; Go for next part ;JHB03 1898 ; 1899 004274 GVCLI1: ;JHB03 MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 15-2 MCE - DOEXEC -- Submit command to CLI 1900 004274 121027 000040 CMPB (R0),#BLNK ; Blank ? ;JHB03 1901 004300 001003 BNE 10$ ; No : => 10$ ;JHB03 1902 004302 005200 INC R0 ; Next ;JHB03 1903 004304 005301 DEC R1 ; char. ;JHB03 1904 004306 000772 BR GVCLI1 ; Again ;JHB03 1905 004310 10$: ;JHB03 1906 004310 SPWN$S #TASK,,,,,#EFN,,,R0,R1 ; *** EXECUTE COMMAND *** ;JHB03 1907 004370 WTSE$S #EFN ; ;JHB03 1908 ; ;JHB03 1909 004402 000207 RETURN ; ;JHB03 1910 ;JHB03 1911 .IFF ;COMPND ;JHB03 1912 1913 MOV LEN,R1 ; R1 = Length 1914 MOV #NEW,R0 ; R0 => Buffer 1915 1916 .ENDC ;COMPND ;JHB03 1917 1918 004404 GVCLI2: ;JHB03 1919 004404 121027 000040 CMPB (R0),#BLNK ; Blank ? 1920 004410 001003 BNE 10$ ; No : => 10$ 1921 004412 005200 INC R0 ; Next 1922 004414 005301 DEC R1 ; char. 1923 004416 000772 BR GVCLI2 ; Again 1924 004420 10$: 1925 004420 SPWN$S #TASK,,,,,WAITFL,,,R0,R1 ; *** EXECUTE COMMAND *** 1926 ; 1927 004500 000207 RETURN ; 1928 ; 1929 ; 1930 .SBTTL MCE - FRENT -- Free entry from queue 1931 ; 1932 ; Header in R0. CC-C clear if it was empty 1933 ; 1934 004502 FRENT: 1935 004502 004567 000000G JSR R5,.SAVR1 ; Save Regs 1936 004506 011002 MOV (R0),R2 ; Get entry if any 1937 004510 000241 CLC ; Assume empty 1938 004512 001413 BEQ 20$ ; None : => 20$ 1939 004514 011210 MOV (R2),(R0) ; Remove from head of queue 1940 004516 001002 BNE 10$ ; More entries 1941 004520 010060 000002 MOV R0,2(R0) ; This was last one 1942 004524 10$: 1943 004524 016201 000002 MOV FLEN(R2),R1 ; R1 = Length of entry 1944 004530 012700 000372' MOV #FREE,R0 ; R0 => Free memory list head 1945 004534 004767 000000G CALL $RLCB ; Release memory block 1946 004540 000261 SEC ; Success 1947 004542 20$: 1948 004542 000207 RETURN ; 1949 ; 1950 ; 1951 .SBTTL MCE - GEFIFO -- Get FIFO Buffer, pointed to by FIFPTR 1952 ; 1953 004544 GEFIFO: 1954 004544 105067 001477' CLRB OLDFLG ; No old command 1955 004550 016700 000364' MOV FIFPTR,R0 ; Get Ptr 1956 004554 001003 BNE 10$ ; Defined : => 10$ MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 15-3 MCE - GEFIFO -- Get FIFO Buffer, pointed to by FIFPTR 1957 004556 012700 000364' MOV #FIFPTR,R0 ; Null String 1958 004562 000404 BR 20$ ; => 20$ 1959 004564 10$: 1960 004564 105267 001477' INCB OLDFLG ; Old command 1961 004570 062700 000004 ADD #FTXT,R0 ; Get start of text 1962 004574 20$: 1963 004574 004767 000004 CALL GETBUF ; Load buffer 1964 004600 000167 177234 CALLR DISPLY ; and display 1965 ; 1966 ; 1967 .SBTTL MCE - GETBUF -- Load Buffer into NEW 1968 ; 1969 ; R0 points to source 1970 ; 1971 004604 GETBUF: 1972 004604 012701 000634' MOV #NEW,R1 ; R1 => NEW 1973 004610 010102 MOV R1,R2 ; R1 => NEW 1974 004612 012705 000114 MOV #BUFSIZ,R5 ; R5 = BUFSIZ 1975 004616 10$: 1976 004616 112021 MOVB (R0)+,(R1)+ ; (R0) --> NEW 1977 004620 001407 BEQ 30$ ; Zero : => 30$ 1978 004622 126127 177777 000040 CMPB -1(R1),#BLNK ; Blank ? 1979 004630 001401 BEQ 20$ ; Yes : => 20$ 1980 004632 010102 MOV R1,R2 ; R2 => Behind last 1981 004634 20$: 1982 004634 077510 SOB R5,10$ ; Go back if not the end 1983 004636 000403 BR 40$ ; => 40$ 1984 004640 30$: 1985 004640 112761 000040 177777 MOVB #BLNK,-1(R1) ; Overprint 000 (.ASCIZ) 1986 004646 40$: 1987 004646 010201 MOV R2,R1 ; Both at the end 1988 004650 000207 RETURN ; 1989 ; 1990 ; 1991 .SBTTL MCE - IO -- General I/O Routine 1992 ; 1993 004652 IO: 1994 1995 .IF DF TMOTIM 1996 1997 MOVB #TMOTIM,TMOCNT ; Set new timeoutcount 1998 1999 .ENDC ;TMOTIM 2000 2001 004652 QIO$S CODE,#TI,#EFN,,#IOSTAT,, 2002 004724 DIR$ #STOPIO ; Stop for I/O (or wait when aborted) 2003 004732 000207 RETURN ; 2004 ; 2005 ; 2006 .SBTTL MCE - IOCR -- Print 2007 ; 2008 004734 IOCR: 2009 004734 012767 000000G 001460' MOV #IO.CCO,CODE ; Cancel 2010 004742 012767 000166' 001462' MOV #CRET,ADR ; Print 2011 004750 012767 000001 001464' MOV #1,LEN ; Length 2012 004756 000735 BR IO ; Go to IO 2013 ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 15-4 MCE - IOCR -- Print 2014 ; 2015 .SBTTL MCE - IOMSG -- Print Message 2016 ; 2017 ; Print a Msg in (R0) 2018 ; 2019 004760 IOMSG: 2020 004760 004767 177750 CALL IOCR ; Print 2021 004764 004767 177614 CALL GETBUF ; (R0) --> NEW 2022 004770 004767 177044 CALL DISPLY ; Write line 2023 004774 000167 176744 CALLR CLRNEW ; 2024 ; 2025 ; 2026 .SBTTL MCE - IOW -- Write routine 2027 ; 2028 005000 IOW: 2029 005000 012767 000000G 001460' MOV #IO.WVB,CODE ; write 2030 005006 000721 BR IO ; Go to IO 2031 ; 2032 ; 2033 .SBTTL MCE - LDFIF -- Load NEW into FIFO Buffer 2034 ; 2035 ; Input: R2 - Length 2036 ; 2037 005010 LDFIF: 2038 005010 004567 000000G JSR R5,.SAVR1 ; Save Regs 2039 005014 010205 MOV R2,R5 ; Length 2040 005016 001442 BEQ 40$ ; Zero : => 40$ 2041 005020 020267 000354' CMP R2,MINC ; Save it ? 2042 005024 103437 BLO 40$ ; No : => 40$ 2043 005026 010501 MOV R5,R1 ; Save it 2044 005030 062701 000006 ADD #FTXT+2,R1 ; Increment for header 2045 005034 126767 000362' 000352' CMPB FIFCNT,MAXF ; Maximum reached ? 2046 005042 103403 BLO 20$ ; No : => 20$ 2047 005044 10$: 2048 005044 004767 176654 CALL CLFIF ; Release one entry 2049 005050 103025 BCC 40$ ; Nothing to release 2050 005052 20$: 2051 005052 012700 000372' MOV #FREE,R0 ; R0 => Free memory listhead 2052 005056 004767 000000G CALL $RQCB ; Request core block 2053 005062 103770 BCS 10$ ; Nothing received yet - release more 2054 005064 005010 CLR (R0) ; No next entry 2055 005066 010077 000360' MOV R0,@FIFO+2 ; Link to previous 2056 005072 010067 000360' MOV R0,FIFO+2 ; New last entry 2057 005076 010160 000002 MOV R1,FLEN(R0) ; Total length 2058 005102 062700 000004 ADD #FTXT,R0 ; Point to text field 2059 005106 012701 000634' MOV #NEW,R1 ; Source text 2060 005112 30$: 2061 005112 112120 MOVB (R1)+,(R0)+ ; Load 2062 005114 077502 SOB R5,30$ ; string 2063 005116 105010 CLRB (R0) ; End of string 2064 005120 105267 000362' INCB FIFCNT ; Count 2065 005124 40$: 2066 005124 000207 RETURN ; 2067 ; 2068 ; 2069 .SBTTL MCE - PRICMD -- Print Cmd buffer and put pointer to end of queue 2070 ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 15-5 MCE - PRICMD -- Print Cmd buffer and put pointer to end of queue 2071 005126 PRICMD: 2072 005126 012767 000366' 000364' MOV #CMDB, FIFPTR ; Point to CMD buffer 2073 005134 000403 BR PRIXXX ; => PRIXXX 2074 ; 2075 ; 2076 .SBTTL MCE - PRIFIF -- Print FIFO and put pointer to end of queue 2077 ; 2078 005136 PRIFIF: 2079 005136 012767 000356' 000364' MOV #FIFO, FIFPTR ; Point to FIFO 2080 005144 PRIXXX: 2081 005144 016767 000410' 001462' MOV PROMLF,ADR ; + 2082 005152 012767 000001 001464' MOV #1,LEN ; Print 2083 005160 004767 177614 CALL IOW ; - 2084 005164 017767 000364' 000364' MOV @FIFPTR, FIFPTR ; Next PTR 2085 005172 001403 BEQ 10$ ; Done : => 10$ 2086 005174 004767 177344 CALL GEFIFO ; Display 2087 005200 000761 BR PRIXXX ; => PRIXXX 2088 005202 10$: 2089 005202 004767 176536 CALL CLRNEW ; Clear edit buffer (FIFPTR already cleared) 2090 005206 000167 176626 CALLR DISPLY ; and display prompt 2091 ; 2092 ; 2093 .SBTTL MCE - SPBACK -- Backspace 1 char. 2094 ; 2095 005212 SPBACK: 2096 005212 020127 000634' CMP R1,#NEW ; At begin of buffer ? 2097 005216 101412 BLOS 10$ ; Yes : => 10$ 2098 005220 012767 001214' 001462' MOV #BS,ADR ; Write 2099 005226 012767 000001 001464' MOV #1,LEN ; a 2100 005234 004767 177540 CALL IOW ; backspace 2101 005240 005301 DEC R1 ; Shift cursor 2102 005242 000207 RETURN ; 2103 005244 10$: 2104 005244 000261 SEC ; Indicate cursur error 2105 005246 000207 RETURN ; 2106 ; 2107 ; 2108 .SBTTL MCE - SRWORD -- Search for word 2109 ; 2110 005250 SRWORD: 2111 005250 120027 000060 CMPB R0,#'0 ; Digit ? 2112 005254 103416 BLO 10$ ; No : => 10$ 2113 005256 120027 000071 CMPB R0,#'9 ; Digit ? 2114 005262 103415 BLO 20$ ; Yes : => 20$ 2115 005264 120027 000137 CMPB R0,#'_ ; Special char ? 2116 005270 001412 BEQ 20$ ; Yes : => 20$ 2117 005272 042700 000040 BIC #40,R0 ; Convert to uppercase 2118 005276 120027 000101 CMPB R0,#'A ; Alphabetical ? 2119 005302 103403 BLO 10$ ; No : => 10$ 2120 005304 120027 000132 CMPB R0,#'Z ; Alphabetical ? 2121 005310 101402 BLOS 20$ ; Yes : => 20$ 2122 005312 10$: 2123 005312 000261 SEC ; 2124 005314 000207 RETURN 2125 005316 20$: 2126 005316 000241 CLC ; 2127 005320 000207 RETURN MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 15-6 MCE - SRWORD -- Search for word 2128 ; 2129 ; 2130 .SBTTL MCE - TERM -- Get terminal information 2131 ; 2132 005322 TERM: 2133 005322 012767 000376' 001462' MOV #SFGMCB,ADR ; GMC Buffer 2134 005330 012767 000006 001464' MOV #SFGMCL,LEN ; GMC Bufferlength 2135 005336 012767 000000G 001460' MOV #SF.GMC,CODE ; GMC Code 2136 2137 .IF DF STATUS 2138 2139 005344 004767 177302 CALL IO ; Do it ;JHA99 2140 005350 105767 000377' TSTB ANI+1 ; ANSII Terminal ;JHA99 2141 005354 001002 BNE 10$ ; Yes : => 10$ ;JHA99 2142 005356 105067 001500' CLRB STAFLG ; No statusline possible ;JHA99 2143 005362 10$: ;JHA99 2144 005362 000207 RETURN ; ;JHA99 2145 2146 .IFF ;STATUS 2147 2148 CALLR IO ; Do it 2149 2150 .ENDC ;STATUS 2151 2152 ; 2153 ; 2154 .SBTTL MCE - UPDATE -- Update commandline 2155 ; 2156 ; Write from current Position to End of Line and reposition Cursor 2157 ; 2158 005364 UPDATE: 2159 005364 010167 001462' MOV R1,ADR ; Address of Cursor 2160 005370 010267 001464' MOV R2,LEN ; R2 => EOL 2161 005374 160167 001464' SUB R1,LEN ; Length 2162 005400 001407 BEQ 10$ ; Zero : => 10$ 2163 005402 004767 177372 CALL IOW ; Write rest of line 2164 005406 012767 001214' 001462' MOV #BS,ADR ; Address backspaces 2165 005414 000167 177232 CALLR IO ; Reposition Cursor 2166 005420 10$: 2167 005420 000207 RETURN ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 16 MCE - UPDATE -- Update commandline 2169 .IF DF FILE 2170 2171 .SBTTL MCE - FILOP -- Open MCEINI file from MCR line 2172 ; 2173 005422 105267 001502' FILOP: INCB FILINI ; Startup file 2174 005426 004767 001522 CALL GETMCR ; Get MCR commandline (startup file) 2175 005432 103003 BCC FILOP2 ; OK : => FILOP2 2176 005434 000207 RETURN ; 2177 ; 2178 ; 2179 .SBTTL MCE - FILOP1 -- Open MCEINI file 2180 ; 2181 005436 FILOP1: 2182 005436 105067 001502' CLRB FILINI ; No startup 2183 005442 FILOP2: 2184 2185 .IF DF CLISUP 2186 2187 005442 004767 000176 CALL GETCLI ; Get CLI info/filetype 2188 2189 .ENDC ;CLISUP 2190 2191 005446 004767 000046 CALL FILOP4 ; Open File LB:[1,2]xxx.CLI 2192 005452 103036 BCC FILRET ; Success 2193 005454 005767 000222' TST FDIR ; Was it first default file ? 2194 005460 001406 BEQ 10$ ; No : => 10$ 2195 005462 004767 000020 CALL FILOP3 ; Open 'SY:xxx.CLI' 2196 005466 103030 BCC FILRET ; Ok : => FILRET 2197 005470 105767 001502' TSTB FILINI ; Startup ? 2198 005474 001025 BNE FILRET ; Yes : => FILRET 2199 005476 10$: 2200 005476 012700 000413' MOV #FILTXT,R0 ; Error 2201 005502 000167 177252 CALLR IOMSG ; Message 2202 ; 2203 005506 FILOP3: 2204 005506 005067 000222' CLR FDIR ; No directory descriptor 2205 005512 012767 054523 000150' MOV #"SY,DEV ; Try file 'SY:xxx.CLI' 2206 005520 FILOP4: 2207 005520 105067 001501' CLRB FILINP ; Assume file can not be opened 2208 005524 OPEN$R #FDBIN ; Open input file 2209 005542 103402 BCS FILRET ; Not OK : => FILRET 2210 005544 105267 001501' INCB FILINP ; Enable File Input 2211 005550 FILRET: 2212 005550 000207 RETURN ; Return 2213 ; 2214 .SBTTL MCE - FILREA -- Read from MCEINI file 2215 ; 2216 005552 FILREA: 2217 005552 GET$S #FDBIN ; Get a record 2218 005562 103413 BCS FILCLO ; No more records : => Close file 2219 005564 016002 000024 MOV F.NRBD(R0),R2 ; Length 2220 005570 003770 BLE FILREA ; Empty line : => FILREA 2221 005572 010267 001464' MOV R2,LEN ; Store length 2222 005576 005726 TST (SP)+ ; Do not return 2223 005600 012767 000001 001466' MOV #1,WAITFL ; Wait for execution of commands 2224 005606 000167 175720 JMP EXEC2 ; but execute directly 2225 ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 16-1 MCE - FILREA -- Read from MCEINI file 2226 ; 2227 .SBTTL MCE - FILCLO -- Close current MCEINI file 2228 ; 2229 005612 FILCLO: 2230 005612 105067 001501' CLRB FILINP ; No file input 2231 005616 CLOSE$ #FDBIN ; Close inputfile 2232 005626 005767 000222' TST FDIR ; Was it first default file ? 2233 005632 001403 BEQ 10$ ; No : => 10$ 2234 005634 004767 177646 CALL FILOP3 ; Open next file 2235 005640 103344 BCC FILREA ; If opened : => FILREA 2236 005642 10$: 2237 005642 000207 RETURN ; 2238 2239 .ENDC ;FILE MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 17 MCE - FILCLO -- Close current MCEINI file 2241 .IF DF CLISUP 2242 2243 .SBTTL MCE - GETCLI -- Get CLI information 2244 ; 2245 005644 GETCLI: 2246 005644 GCII$S #GCLI,#GCISIZ 2247 2248 .IF DF FILE 2249 2250 005700 103403 BCS 10$ ; Error is C set 2251 ; 2252 ; Choose the startup file type according to the CLI in use: 2253 ; 2254 005702 016767 000000C 000174' MOV G.CICL+GCLI,DFTYP 2255 ; Use CLI name for file type 2256 005710 10$: 2257 2258 .ENDC ;FILE 2259 2260 005710 000207 RETURN ; 2261 2262 .ENDC ;CLISUP 2263 2264 .IF DF TMOTIM 2265 2266 .SBTTL MCE - TIMAST -- TI: Time-out AST 2267 ; 2268 ; On timeout - log off (TT0: just exit) 2269 ; 2270 TIMAST: 2271 TST (SP)+ ;; Restore stack 2272 DECB TMOCNT ;; Timeout ? 2273 BLT 10$ ;; Should not have decremented 2274 BNE 20$ ;; Not yet 2275 ; 2276 ; Timed out - kill pending read 2277 ; 2278 MOV #IO.KIL,CODE ;; Kill 2279 CALL IO ;; pending read 2280 10$: 2281 CLRB TMOCNT ;; 2282 20$: 2283 2284 .IF DF STATUS 2285 2286 CALL STAFIL ;; Fill statusline 2287 TSTB STAFLG ;; Statusline wanted ? 2288 BEQ 30$ ;; No : => 30$ 2289 QIOW$S #IO.WVB,#TI,#EFNAST,,,,<#STATX2,#STALN2,#0> 2290 30$: 2291 2292 .ENDC ;STATUS 2293 2294 CALL MARK ;; Mark time 2295 ASTX$S ;; Exit ast 2296 ; 2297 ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 17-1 MCE - GETCLI -- Get CLI information 2298 .SBTTL MCE - MARK -- Next Marktime 2299 MARK: 2300 MRKT$S ,#60.,#2,#TIMAST;(;) 2301 RETURN ;(;) 2302 2303 .ENDC ;TMOTIM MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 18 MCE - FNDCMD -- Find entry in command table 2305 .SBTTL MCE - FNDCMD -- Find entry in command table 2306 .SBTTL MCE - FNDCMA -- Find entry in command table with "*" 2307 ; 2308 ; FNDCMD - Find entry in Command (=Translation-) Table 2309 ; FNDCMA - Find entry in Command (=Translation-) Table - accept Abbreviations 2310 ; 2311 ; Input - PDSC of P0 defined 2312 ; - CTSTAR .ne.0 to allow abreviated command if command 2313 ; definition contains "*" (a la VMS) 2314 ; Output - CC-C set - no entry found 2315 ; CC-C clr - entry found 2316 ; R0 - to entry 2317 ; R1 - to point to string after ":=" 2318 ; R2 - to previous entry (for remove and inserts) 2319 ; 2320 .ENABL LSB 2321 005712 FNDCMA: 2322 005712 112767 000001 001560' MOVB #1,CTSTAR ; Enable abbreviations 2323 005720 000402 BR 10$ 2324 005722 FNDCMD: 2325 005722 105067 001560' CLRB CTSTAR ; Ignore "*" in translation buffer 2326 005726 10$: 2327 005726 012700 000366' MOV #CMDB,R0 ; R0 => Commandbuffer 2328 005732 010346 MOV R3,-(SP) ; Save R3 2329 005734 010146 MOV R1,-(SP) ; Save R1 2330 005736 005046 CLR -(SP) ; For previous entry 2331 005740 20$: 2332 005740 010016 MOV R0,(SP) ; Save previous entry 2333 005742 005710 TST (R0) ; Any next entry ? 2334 005744 001471 BEQ 100$ ; No : => 100$, end of list 2335 005746 011000 MOV (R0),R0 ; Take next entry 2336 005750 010001 MOV R0,R1 ; R1 => Entry 2337 005752 062701 000004 ADD #FTXT,R1 ; R1 => Text 2338 005756 016703 001512' MOV PDSC,R3 ; Length to be compared 2339 005762 003462 BLE 100$ ; Zero : => 100$ 2340 005764 016702 001514' MOV PDSC+2,R2 ; Start addr of P0 2341 005770 105767 001560' TSTB CTSTAR ; Without abbreviation ? 2342 005774 001440 BEQ 80$ ; Yes : => 80$ 2343 ; 2344 ; Check for match, accepting any "*" in command defintion 2345 ; 2346 005776 105067 001561' CLRB TMPFLG ; Reset Flag: "*" found in Cmd Translation 2347 006002 30$: 2348 006002 121127 000052 CMPB (R1),#'* ; Check for "*" in translation buffer 2349 006006 001003 BNE 40$ ; Not yet found : => 40$ 2350 006010 105267 001561' INCB TMPFLG ; Found, remember it 2351 006014 005201 INC R1 ; Next char 2352 006016 40$: 2353 006016 121127 000040 CMPB (R1),#BLNK ; End of translation buffer ? 2354 006022 001416 BEQ 60$ ; Yes : => 60$, terminate compare 2355 006024 122221 CMPB (R2)+,(R1)+ ; Equal ? 2356 006026 001405 BEQ 50$ ; Yes : => 50$ 2357 006030 003343 BGT 20$ ; NE and must come further down in list 2358 006032 105767 001561' TSTB TMPFLG ; Passed entry - any "*" seen ? 2359 006036 001340 BNE 20$ ; Yes : => 20$, continue search 2360 006040 000433 BR 100$ ; We passed alphabetical order : => 100$ 2361 006042 50$: MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 18-1 MCE - FNDCMA -- Find entry in command table with "*" 2362 006042 077321 SOB R3,30$ ; Next char 2363 ; 2364 006044 121127 000040 CMPB (R1),#BLNK ; End of input string ? 2365 006050 001406 BEQ 70$ ; Yes : => 70$ 2366 006052 121127 000052 CMPB (R1),#'* ; Next byte end ? 2367 006056 001403 BEQ 70$ ; Yes : => 70$ 2368 006060 60$: 2369 006060 105767 001561' TSTB TMPFLG ; Abbreviation possible ? 2370 006064 001725 BEQ 20$ ; No : => 20$ 2371 006066 70$: 2372 006066 122127 000040 CMPB (R1)+,#BLNK ; End of string (or binary 0???) ? 2373 006072 101375 BHI 70$ ; Not yet found : => 70$ 2374 006074 000407 BR 90$ ; Point past key 2375 ; 2376 ; Check for match, ignoring any "*" in command defintion 2377 ; 2378 006076 80$: 2379 006076 122221 CMPB (R2)+,(R1)+ ; Compare 2380 006100 003317 BGT 20$ ; NE and must come further down in list 2381 006102 002412 BLT 100$ ; Already passed alphabetical order 2382 006104 077304 SOB R3,80$ ; Next 2383 ; 2384 006106 122127 000040 CMPB (R1)+,#BLNK ; Followed by space ? 2385 006112 001006 BNE 100$ ; No : => 100$ 2386 006114 90$: 2387 006114 062701 000003 ADD #3,R1 ; Skip ":= " 2388 006120 000241 CLC ; Successful 2389 006122 012602 MOV (SP)+,R2 ; R2 => Previous entry 2390 006124 005726 TST (SP)+ ; Flush old R1 2391 006126 000403 BR 110$ ; 2392 006130 100$: 2393 006130 000261 SEC ; Not found 2394 006132 012602 MOV (SP)+,R2 ; R2 => Previous entry 2395 006134 012601 MOV (SP)+,R1 ; Old R1 2396 006136 110$: 2397 006136 012603 MOV (SP)+,R3 ; Restore R3 2398 006140 000207 RETURN ; 2399 2400 .DSABL LSB MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 19 MCE - CMDCHK -- Check for Command definition 2402 .SBTTL MCE - CMDCHK -- Check for Command definition 2403 ; 2404 ; Check for Command definition 2405 ; or replace first command word by stuff defined in command buffer 2406 ; P1..P8 may also be replaced 2407 ; 2408 ; R2 - length of buffer in NEW (also stored in LEN) 2409 ; on return: LEN updated, all Regs destroyed 2410 ; 2411 006142 CMDCHK: 2412 006142 012700 001506' MOV #CDSC,R0 ; + 2413 006146 012701 000026 MOV #CLL/2,R1 ; 2414 006152 10$: ; Clear scratch buffer 2415 006152 005020 CLR (R0)+ ; 2416 006154 077102 SOB R1,10$ ; - 2417 006156 012701 000634' MOV #NEW,R1 ; R1 => Source Buffer 2418 006162 012703 000754' MOV #SAVB,R3 ; R3 => Destination Buffer 2419 006166 012705 001512' MOV #PDSC,R5 ; R5 => Current Parameter Descriptor 2420 006172 010365 000002 MOV R3,2(R5) ; Start of P0 2421 006176 20$: 2422 ; 2423 ; Store single char 2424 ; 2425 006176 112100 MOVB (R1)+,R0 ; R0 = char 2426 006200 004767 000352 CALL CNVUPC ; Convert and check for delimiter 2427 006204 110023 MOVB R0,(R3)+ ; Store char in SAVBUF 2428 006206 103015 BCC 40$ ; No delimiter found : => 40$ 2429 006210 020527 001512' CMP R5,#PDSC ; Is this P0 ? 2430 006214 001002 BNE 30$ ; No : => 30$ 2431 006216 010367 001510' MOV R3,CDSC+2 ; Load start Address 2432 006222 30$: 2433 ; 2434 ; To next Pn 2435 ; 2436 006222 020527 001552' CMP R5,#8.*4+PDSC ; Already on P8 ? 2437 006226 103005 BHIS 40$ ; Yes : => 40$, put it all there 2438 006230 062705 000004 ADD #4,R5 ; Next Parameter 2439 006234 010365 000002 MOV R3,2(R5) ; Start address 2440 006240 000401 BR 50$ ; Do not count 2441 006242 40$: 2442 ; 2443 ; No delimiter found 2444 ; 2445 006242 005215 INC (R5) ; Count char 2446 006244 50$: 2447 006244 077224 SOB R2,20$ ; Next character 2448 ; 2449 006246 016702 001510' MOV CDSC+2,R2 ; Remainder Descriptor defined ? 2450 006252 001403 BEQ 60$ ; No => 60$ 2451 006254 160203 SUB R2,R3 ; Calculate length 2452 006256 010367 001506' MOV R3,CDSC ; Store length 2453 ; 2454 ; Now everything is moved into SAVB 2455 ; Check if we define a new command ":=" in P1 2456 ; 2457 006262 60$: 2458 006262 012702 001516' MOV #4+PDSC,R2 ; R2 => P1 descr MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 19-1 MCE - CMDCHK -- Check for Command definition 2459 006266 022227 000002 CMP (R2)+,#2 ; Correct length ? 2460 006272 001011 BNE 70$ ; No => 70$ 2461 006274 011202 MOV (R2),R2 ; R2 => string 2462 006276 122227 000072 CMPB (R2)+,#': ; + 2463 006302 001005 BNE 70$ ; 2464 006304 122227 000075 CMPB (R2)+,#'= ; ":=" 2465 006310 001002 BNE 70$ ; - 2466 006312 000167 000274 JMP NEWCMD ; Match found 2467 ; 2468 ; Try find an entry in the commandbuffer with key P0 2469 ; 2470 006316 70$: 2471 006316 004767 177370 CALL FNDCMA ; Check in table 2472 006322 103002 BCC 80$ ; Entry found => 80$ 2473 006324 000241 CLC ; Indicate success 2474 006326 000207 RETURN ; 2475 006330 80$: 2476 ; 2477 ; Entry found, R1 points to Text 2478 ; 2479 006330 012702 000634' MOV #NEW,R2 ; R2 => Destination 2480 006334 90$: 2481 ; 2482 ; Assemble buffer NEW 2483 ; 2484 006334 112100 MOVB (R1)+,R0 ; Next char 2485 006336 001410 BEQ 110$ ; All done : => 110$ 2486 006340 120027 000047 CMPB R0,#'' ; Could it be 'Pn' ? 2487 006344 001003 BNE 100$ ; No : => 100$ 2488 006346 004767 000106 CALL SUBST ; Check it and substitute if necessary 2489 006352 103770 BCS 90$ ; Already substituted : => 90$ 2490 006354 100$: 2491 006354 110022 MOVB R0,(R2)+ ; Store character in NEW 2492 006356 000766 BR 90$ ; Next char from CMD Buf 2493 006360 110$: 2494 ; 2495 ; Whole buffer moved to NEW 2496 ; 2497 006360 105767 001556' TSTB CFETCH ; Buffer already feched ? 2498 006364 002404 BLT 120$ ; Yes : => 120$ 2499 006366 012701 001506' MOV #CDSC,R1 ; This descriptor to append 2500 006372 004767 000032 CALL STORE ; Store 2501 006376 120$: 2502 ; 2503 ; All done, execute new command 2504 ; 2505 006376 162702 000634' SUB #NEW,R2 ; Calculate new length 2506 006402 010267 001464' MOV R2,LEN ; and store 2507 006406 105767 001557' TSTB OVMSG ; Buffer overflow ? 2508 006412 001405 BEQ 130$ ; No : => 130$ 2509 006414 012700 000307' MOV #TOOLON,R0 ; Give 2510 006420 004767 176334 CALL IOMSG ; message 2511 006424 000261 SEC ; Not success 2512 006426 130$: 2513 006426 000207 RETURN ; 2514 ; 2515 ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 19-2 MCE - CMDCHK -- Check for Command definition 2516 006430 STORE: 2517 ; 2518 ; Append string with descriptor (R1) to NEW 2519 ; 2520 006430 012105 MOV (R1)+,R5 ; R5 = Length 2521 006432 001411 BEQ 30$ ; Empty : => 30$ 2522 006434 011101 MOV (R1),R1 ; R1 = Source Addr 2523 006436 10$: 2524 006436 020227 000750' CMP R2, #NEW+BUFSIZ ; In range ? 2525 006442 103403 BLO 20$ ; Yes : => 160 2526 006444 105367 001557' DECB OVMSG ; Mark for Ovflw 2527 006450 000207 RETURN ; 2528 006452 20$: 2529 006452 112122 MOVB (R1)+,(R2)+ ; Copy 2530 006454 077510 SOB R5,10$ ; characters 2531 006456 30$: 2532 006456 000207 RETURN 2533 ; 2534 006460 SUBST: 2535 ; 2536 ; Substitute Pn's 2537 ; 2538 006460 004567 000000G JSR R5,.SAVR1 ; Save Regs 2539 006464 122127 000120 CMPB (R1)+,#'P ; Check next symbol 2540 006470 001011 BNE 10$ ; No match : => 10$ 2541 006472 112103 MOVB (R1)+,R3 ; Get Parameter number 2542 006474 162703 000060 SUB #'0,R3 ; Decode 2543 006500 003405 BLE 10$ ; Illegal : => 10$ 2544 006502 020327 000010 CMP R3,#8. ; In range ? 2545 006506 101002 BHI 10$ ; No : => 10$ 2546 006510 122100 CMPB (R1)+,R0 ; Endmark ? 2547 006512 001402 BEQ 20$ ; Yes : => 20$ 2548 006514 10$: 2549 006514 000241 CLC ; Tell no substit 2550 006516 000207 RETURN ; 2551 006520 20$: 2552 ; 2553 ; Substitution string found 2554 ; 2555 006520 010166 000002 MOV R1,2(SP) ; Set up R1 after retunr 2556 006524 006303 ASL R3 ; Param num 2557 006526 006303 ASL R3 ; times 4 2558 006530 062703 001512' ADD #PDSC,R3 ; R3 => Descriptor 2559 006534 010301 MOV R3,R1 ; 2560 006536 004767 177666 CALL STORE ; Load it 2561 006542 010266 000004 MOV R2,2*2(SP) ; Load R2 after return 2562 006546 105367 001556' DECB CFETCH ; Mark that parameter fetched 2563 006552 000261 SEC ; Tell substituted 2564 006554 000207 RETURN ; 2565 ; 2566 .SBTTL MCE - CNVUPC -- Convert to uppercase 2567 ; 2568 ; Convert to upper case, CC-C set if delimiter 2569 ; 2570 006556 CNVUPC: 2571 006556 120027 000141 CMPB R0,#'A+40 ; Convert to upper case 2572 006562 103405 BLO 10$ ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 19-3 MCE - CNVUPC -- Convert to uppercase 2573 006564 120027 000172 CMPB R0,#'Z+40 ; 2574 006570 101002 BHI 10$ ; 2575 006572 142700 000040 BICB #40,R0 ; Convert to upper 2576 006576 10$: 2577 006576 120027 000040 CMPB R0,#BLNK ; Delimter ? 2578 006602 000261 SEC ; 2579 006604 001401 BEQ 30$ ; Its a delimiter 2580 006606 20$: 2581 006606 000241 CLC ; Character within string 2582 006610 30$: 2583 006610 000207 RETURN ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 20 MCE - NEWCMD -- Define new command or delete command 2585 .SBTTL MCE - NEWCMD -- Define new command or delete command 2586 ; 2587 ; Define new command in command buffer, or delete it 2588 ; 2589 006612 NEWCMD: 2590 006612 105767 001472' TSTB NOLOAD ; Skip processing ? 2591 006616 001051 BNE 50$ ; Yes : => 50$ 2592 006620 004767 177076 CALL FNDCMD ; Check if in table 2593 006624 103050 BCC 60$ ; Yes : => 60$, release old entry 2594 006626 005767 001522' TST 2*4+PDSC ; P2 defined ? 2595 006632 001003 BNE 10$ ; Yes : => 10$, must load 2596 006634 005767 001530' TST 3*4+PDSC+2 ; P3 with addr ? 2597 006640 001440 BEQ 50$ ; No : => 50$, delete only 2598 006642 10$: 2599 ; 2600 ; Insert new command 2601 ; 2602 006642 010203 MOV R2,R3 ; R3 => Entry after which to insert 2603 006644 016701 001464' MOV LEN,R1 ; length of string 2604 006650 001434 BEQ 50$ ; Zero : => 50$ 2605 006652 062701 000005 ADD #FTXT+1,R1 ; With overhead 2606 006656 012700 000372' MOV #FREE,R0 ; R0 => Free memory listhead 2607 006662 004767 000000G CALL $RQCB ; Request core block 2608 006666 103005 BCC 20$ ; Ok : => 20$ 2609 006670 012700 000166' MOV #NOPOOL,R0 ; No more Pool 2610 006674 004767 176060 CALL IOMSG ; Give the message 2611 006700 000420 BR 50$ ; => 50$ 2612 006702 20$: 2613 006702 011310 MOV (R3),(R0) ; Link to previous entry 2614 006704 001002 BNE 30$ ; 2615 006706 010067 000370' MOV R0,CMDB+2 ; We will be last one 2616 006712 30$: 2617 006712 010013 MOV R0,(R3) ; 2618 006714 010160 000002 MOV R1,FLEN(R0) ; Total length 2619 006720 062700 000004 ADD #FTXT,R0 ; R0 => Start of text 2620 006724 012701 000754' MOV #SAVB,R1 ; R1 => Source 2621 006730 016702 001464' MOV LEN,R2 ; R2 = Length 2622 006734 40$: 2623 006734 112120 MOVB (R1)+,(R0)+ ; Copy 2624 006736 077202 SOB R2,40$ ; text 2625 006740 105010 CLRB (R0) ; Write delimiter 2626 006742 50$: 2627 006742 000261 SEC ; Nothing to execute 2628 006744 000207 RETURN ; 2629 006746 60$: 2630 ; 2631 ; Release old entry 2632 ; 2633 006746 011012 MOV (R0),(R2) ; Link remainder 2634 006750 001002 BNE 70$ ; More entries : => 70$ 2635 006752 010267 000370' MOV R2,CMDB+2 ; This was last one 2636 006756 70$: 2637 006756 016001 000002 MOV FLEN(R0),R1 ; R1 = Length 2638 006762 010002 MOV R0,R2 ; 2639 006764 012700 000372' MOV #FREE,R0 ; R0 => Free memory listhead 2640 006770 004767 000000G CALL $RLCB ; Release it 2641 006774 000706 BR NEWCMD ; Find more to release MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 21 MCE - RECCMD -- Recall command from FIFO 2643 .SBTTL MCE - RECCMD -- Recall command from FIFO 2644 ; 2645 ; Recall Command from Fifo by key 2646 ; 2647 006776 RECCMD: 2648 006776 005046 CLR -(SP) ; Room for Pointer to FIFO entry 2649 007000 116705 000363' MOVB FIFPOI,R5 ; R5 = Fifo entry number 2650 007004 016704 000356' MOV FIFO,R4 ; R4 => Oldest Entry in Fifo 2651 007010 001451 BEQ 50$ ; Empty : => 50$ 2652 007012 112705 000001 MOVB #1,R5 ; Start above oldest 2653 007016 005767 000364' TST FIFPTR ; Old pointer ? 2654 007022 001014 BNE 20$ ; Defined : => 20$ 2655 007024 012701 000634' MOV #NEW,R1 ; R1 => Source Buffer 2656 007030 012703 001074' MOV #RECB,R3 ; R3 => Destination Buffer 2657 007034 160102 SUB R1,R2 ; R2 = Length 2658 007036 003406 BLE 20$ ; Zero : => 20$ 2659 007040 10$: 2660 ; 2661 ; Store single char into RECB 2662 ; 2663 007040 112100 MOVB (R1)+,R0 ; R0 = next char 2664 007042 004767 177510 CALL CNVUPC ; Convert 2665 007046 110023 MOVB R0,(R3)+ ; Store char 2666 007050 077205 SOB R2,10$ ; Next 2667 007052 105013 CLRB (R3) ; EOL 2668 007054 20$: 2669 ; 2670 ; Check next entry in FIFO 2671 ; 2672 007054 012701 001074' MOV #RECB,R1 ; R1 => Source to Compare 2673 007060 105711 TSTB (R1) ; Search mask defined ? 2674 007062 001424 BEQ 50$ ; No : => 50$ 2675 007064 010403 MOV R4,R3 ; R3 => Entry 2676 007066 062703 000004 ADD #FTXT,R3 ; R3 => Text of entry 2677 007072 30$: 2678 007072 112300 MOVB (R3)+,R0 ; R0 = Next char 2679 007074 001411 BEQ 40$ ; EOL : => 40$ 2680 007076 004767 177454 CALL CNVUPC ; Convert to uppercase 2681 007102 120021 CMPB R0,(R1)+ ; Compare with source 2682 007104 001005 BNE 40$ ; No match : => 40$ 2683 007106 105711 TSTB (R1) ; EOL ? 2684 007110 001370 BNE 30$ ; No : => 30$, Try next char 2685 007112 010416 MOV R4,(SP) ; Source exhausted - match found 2686 007114 110567 000363' MOVB R5,FIFPOI ; Store fifo entry number 2687 007120 40$: 2688 007120 105205 INCB R5 ; One newer 2689 007122 011404 MOV (R4),R4 ; R4 => Next entry 2690 007124 001403 BEQ 50$ ; No more : => 50$ 2691 007126 020467 000364' CMP R4,FIFPTR ; Continue search ? 2692 007132 001350 BNE 20$ ; Yes : => 20$ 2693 007134 50$: 2694 007134 012667 000364' MOV (SP)+,FIFPTR ; Pop Pointer to entry if any 2695 007140 001002 BNE 60$ ; Any pointer ? => 60$ 2696 007142 105067 000363' CLRB FIFPOI ; 2697 007146 60$: 2698 007146 004767 175372 CALL GEFIFO ; Load from FIFO (or delete NEW buffer) 2699 007152 000207 RETURN ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 22 MCE - RECCMD -- Recall command from FIFO 2701 .IF DF FILE ; 2702 2703 .SBTTL MCE - GETMCR -- Get filespecification from MCR command 2704 ; 2705 ; This subroutine dequeues the command which invokes MCE (if any), 2706 ; and overrides the default startup file name (MCEINI.xxx) by 2707 ; file specified in the commandline. 2708 ; Command line syntax is : 'MCE file_specification' 2709 ; 2710 2711 .ENABL LSB 2712 007154 GETMCR: 2713 007154 DIR$ #GMCR ; Get commandline 2714 007162 103422 BCS 20$ ; Problem => 20$ 2715 007164 012701 001334' MOV #GMCR+G.MCRB,R1 ; Point to commandline 2716 007170 016702 000000G MOV $DSW,R2 ; Length of line 2717 ; 2718 007174 GETFIL: 2719 ; 2720 ; reset FDB file-name pointers 2721 ; 2722 007174 012767 041114 000150' MOV #"LB,DEV ; Reset default file volume 2723 007202 012767 000005 000222' MOV #DIRL,FDIR ; Restore pointer to [1,2]directory 2724 007210 012767 000216' 000054' MOV #FDSPT,FDBIN+F.DSPT 2725 ; Reset DSPT pointer in FDB 2726 007216 10$: 2727 007216 122721 000040 CMPB #BLNK,(R1)+ ; Mnemonic delimiter ? 2728 007222 001404 BEQ 30$ 2729 007224 005302 DEC R2 ; Count remaining char 2730 007226 001373 BNE 10$ ; If eq: empty command 2731 007230 20$: 2732 007230 000241 CLC ; Success 2733 007232 000432 BR 50$ ; 2734 007234 30$: 2735 007234 005302 DEC R2 ; Flush space 2736 007236 CSI$1 #CSIBLK,R1,R2 ; Syntax check 2737 007256 103413 BCS 40$ ; Syntax error: ignore it 2738 007260 CSI$2 R0,OUTPUT ; Parse line into its com 2739 007270 103406 BCS 40$ ; No file: ignore it 2740 ; 2741 ; now we have a file descriptor table inside the CSI parser block 2742 ; override the default DSPT pointing to MCEINI.CMD: 2743 ; 2744 007272 012767 000240' 000054' MOV #CSIBLK+C.DSDS,FDBIN+F.DSPT 2745 ; New DSPT pointer 2746 007300 005067 000222' CLR FDIR ; Indicate 'no more files' 2747 007304 000405 BR 50$ ; => 50$ 2748 007306 40$: 2749 007306 012700 000342' MOV #FLSTXT,R0 ; Filespec 2750 007312 004767 175442 CALL IOMSG ; syntax error 2751 007316 000261 SEC ; Indicate error 2752 007320 50$: 2753 007320 000207 RETURN ; 2754 2755 .DSABL LSB 2756 2757 .ENDC ;FILE MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 23 MCE - INTERN -- Check for internal commands (EXIT/BYE) 2759 .SBTTL MCE - INTERN -- Check for internal commands (EXIT/BYE) 2760 2761 ; Check if the command (AFTER translation) is BYE or an internal 2762 ; command starting with the verb 'MCE '. 2763 ; To check for the special commands after translation offers the 2764 ; possibility to define any other string for exit/bye. 2765 ; (E.g.: LOGOF*F := BYE) 2766 ; Intern returns C set, if no intern command, i.e. the buffer NEW 2767 ; has to be submitted to the CLI. 2768 ; C clear on return, if internal command found, no CLI submit. 2769 ; 2770 .macro cmpuc src,what,action,label ; Compare upper case char 2771 .NCHR $$$$$L, 2772 .if gt $$$$$L-1 2773 mov src,R0 2774 bic #" ,R0 2775 cmp R0,#"what 2776 .iff 2777 movb src,R0 2778 bicb #' ,R0 2779 cmpb R0,#''what 2780 .endc 2781 action label 2782 .endm 2783 ; 2784 007322 INTERN: 2785 ; 2786 ; To be recognised as an internal command, at least 3 characters 2787 ; must be present. 2788 ; Internal commands trapped are: 2789 ; BYE : the RSX logout command 2790 ; MCE action: MCE internal actions 2791 ; 2792 007322 004567 000000G JSR R5,.SAVR1 ; Save registers 2793 007326 026727 001464' 000003 CMP LEN,#3 ; Length in range ? 2794 007334 002442 BLT 20$ ; No : => 20$ 2795 007336 CMPUC NEW+0,BY,bne 10$; BY ? 2796 007354 CMPUC NEW+2,E,bne 10$ ; E ? 2797 007372 005067 001466' CLR WAITFL ; Do not wait 2798 007376 004767 174620 CALL DOEXEC ; Submit BYE to CLI 2799 007402 000167 174256 CALLR EXITS ; Immediate task exit 2800 007406 10$: 2801 007406 CMPUC NEW+0,MC,bne 20$; MC ? 2802 007424 CMPUC NEW+2,E,beq 30$ ; E ? 2803 007442 20$: 2804 007442 000261 SEC ; No internal command trapped 2805 007444 000207 RETURN ; 2806 ; 2807 ; Internal command strings must not be less than 8 characters in length 2808 ; Ignore anything else 2809 ; 2810 007446 30$: 2811 007446 026727 001464' 000010 CMP LEN,#8. ; "MCE action?" 2812 007454 002476 BLT 140$ ; N 2813 007456 042767 020040 000640' BIC #" ,NEW+4 ; 'action' verb upper case 2814 007464 042767 020040 000642' BIC #" ,NEW+6 ; 4 characters 2815 007472 012701 000510' MOV #INTCMD,R1 ; Point to internal command table MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 23-1 MCE - INTERN -- Check for internal commands (EXIT/BYE) 2816 007476 40$: 2817 007476 005711 TST (R1) ; End of table reached ? 2818 007500 001464 BEQ 140$ ; Yes : => 140$ 2819 007502 026721 000640' CMP NEW+4,(R1)+ ; First 2 characters match ? 2820 007506 001403 BEQ 50$ 2821 007510 062701 000004 ADD #4,R1 ; Point to next table entry 2822 007514 000770 BR 40$ ; Look ahead 2823 007516 50$: 2824 007516 026721 000642' CMP NEW+6,(R1)+ ; Second 2 characters match ? 2825 007522 001402 BEQ 60$ ; If eq Yes: action verb match 2826 007524 005721 TST (R1)+ ; Point to next table entry 2827 007526 000763 BR 40$ ; Look ahead 2828 007530 60$: 2829 007530 004771 000000 CALL @(R1) ; EXECute internal command 2830 007534 103446 BCS 140$ ; Not OK ? => 140$ 2831 007536 105767 001475' TSTB SINFLG ; Save internal command ? 2832 007542 001042 BNE 130$ ; Yes : => 130$ 2833 007544 105767 001503' TSTB FILREX ; Read or Replace being processed ? ;JHA99 2834 007550 001003 BNE 70$ ; Yes : => 70$ ;JHA99 2835 007552 105767 001501' TSTB FILINP ; File input ? ;JHA99 2836 007556 001034 BNE 130$ ; Yes : => 130$ ;JHA99 2837 007560 70$: 2838 007560 105067 001503' CLRB FILREX ; Clear flag ;JHA99 2839 007564 016700 000356' MOV FIFO,R0 ; R0 => First entry 2840 007570 001426 BEQ 120$ ; No entries : => 120$ 2841 007572 016702 000360' MOV FIFO+2,R2 ; R2 => Last entry 2842 007576 020002 CMP R0,R2 ; 1st = last ? 2843 007600 001416 BEQ 100$ ; Yes : => 100$ 2844 007602 80$: 2845 007602 021002 CMP (R0),R2 ; (R0) => last ? 2846 007604 001402 BEQ 90$ ; Yes : Delete this one 2847 007606 011000 MOV (R0),R0 ; Next 2848 007610 000774 BR 80$ ; => 80$ 2849 007612 90$: 2850 007612 010067 000360' MOV R0,FIFO+2 ; New last 2851 007616 005010 CLR (R0) ; Last 2852 007620 012700 000372' MOV #FREE,R0 ; R0 => Free listhead 2853 007624 016201 000002 MOV FLEN(R2),R1 ; R1 = Length 2854 007630 004767 000000G CALL $RLCB ; Release block 2855 007634 000402 BR 110$ ; => 110$ 2856 007636 100$: 2857 007636 004767 174640 CALL FRENT ; Free entry 2858 007642 110$: 2859 007642 105367 000362' DECB FIFCNT ; One less 2860 007646 120$: 2861 007646 000241 CLC ; Success 2862 007650 130$: 2863 007650 000207 RETURN ; 2864 007652 140$: 2865 007652 012700 000246' MOV #ERRTXT,R0 ; Error 2866 007656 000167 175076 CALLR IOMSG ; Message MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 24 MCE - -- INTERNAL action routines 2868 .SBTTL MCE - -- INTERNAL action routines 2869 ; 2870 ; 2871 .SBTTL MCE - ICCLEA -- Clear 2872 ; 2873 ; Clear FIFO 2874 ; 2875 007662 ICCLEA: 2876 ; 2877 007662 016746 000352' MOV MAXF,-(SP) ; Save maxfifo 2878 007666 005067 000352' CLR MAXF ; Clear 2879 007672 004767 000146 CALL CLEFIF ; Fifo 2880 007676 012667 000352' MOV (SP)+,MAXF ; Restore maxfifo 2881 007702 000207 RETURN ; 2882 ; 2883 ; 2884 .SBTTL MCE - ICFREE -- Free 2885 ; 2886 ; Free poolspace 2887 ; 2888 007704 ICFREE: 2889 007704 012705 000344' MOV #POOL,R5 ; Point to pool raw data buffer 2890 007710 005025 CLR (R5)+ ; Clear number of fragments 2891 007712 005025 CLR (R5)+ ; Clear total pool 2892 007714 005015 CLR (R5) ; Clear biggest hole 2893 007716 016704 000372' MOV FREE,R4 ; Get address of pool listhead 2894 007722 001411 BEQ 30$ ; No blocks : => 30$ 2895 007724 10$: 2896 007724 005724 TST (R4)+ ; R4 => Size 2897 007726 021514 CMP (R5),(R4) ; This size > stored ? 2898 007730 103001 BHIS 20$ ; No : => 20$ 2899 007732 011415 MOV (R4),(R5) ; Set new max 2900 007734 20$: 2901 007734 061445 ADD (R4),-(R5) ; Add this space to total 2902 007736 005245 INC -(R5) ; Increment number of pool fragments 2903 007740 022525 CMP (R5)+,(R5)+ ; Point R5 to end of raw data buffer 2904 007742 014404 MOV -(R4),R4 ; Get addr of next block 2905 007744 001367 BNE 10$ ; If ne more to examine 2906 007746 30$: 2907 007746 012700 000322' MOV #POOLDT,R0 ; POOL message 2908 007752 012704 000003 MOV #3,R4 ; 3 words to convert 2909 007756 40$: 2910 007756 011501 MOV (R5),R1 ; Binary value 2911 007760 012702 020012 MOV #20012,R2 ; Parms. 2912 007764 004767 000000G CALL $CBTA ; Convert 2913 007770 112720 000056 MOVB #'.,(R0)+ ; Decimal 2914 007774 112720 000072 MOVB #':,(R0)+ ; Terminate 2915 010000 005745 TST -(R5) ; Next 2916 010002 077413 SOB R4,40$ ; word 2917 ; 2918 010004 105040 CLRB -(R0) ; ASCIZ 2919 010006 012700 000306' MOV #POOLTX,R0 ; R0 => Message 2920 010012 000167 174742 CALLR IOMSG ; Write and return 2921 2922 .IF DF EDT 2923 2924 ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 24-1 MCE - ICKEYP -- Keypad on/off 2925 .SBTTL MCE - ICKEYP -- Keypad on/off 2926 ; 2927 ; Keypad On/Off 2928 ; 2929 010016 ICKEYP: 2930 ; 2931 010016 012703 001504' MOV #EDTFLG,R3 ; R3 => Flag 2932 010022 000574 BR ONOFF ; => On / Off 2933 2934 .ENDC ;EDT 2935 2936 ; 2937 .SBTTL MCE - ICLIST -- LIST 2938 ; 2939 ; FIFO is LIST 2940 ; 2941 010024 ICLIST: 2942 ; 2943 010024 105067 001474' CLRB RING ; Indicate LIST 2944 010030 000167 000466 JMP SUCCES ; 2945 ; 2946 ; 2947 .SBTTL MCE - ICMAXF -- Fisz x 2948 ; 2949 ; Fifo size 2950 ; 2951 010034 ICMAXF: 2952 ; 2953 010034 012705 000352' MOV #MAXF,R5 ; R5 => Destination 2954 010040 004767 000026 CALL VALUE ; Get value 2955 010044 CLEFIF: 2956 010044 126767 000362' 000352' CMPB FIFCNT, MAXF ; Maximum reached ? 2957 010052 101403 BLOS 10$ ; No : => 10$ 2958 010054 004767 173644 CALL CLFIF ; Release one entry 2959 010060 103771 BCS CLEFIF ; => CLEFIF 2960 010062 10$: 2961 010062 000167 000434 JMP SUCCES ; 2962 ; 2963 ; 2964 .SBTTL MCE - ICMINC -- Cmsz x 2965 ; 2966 ; CMD Size 2967 ; 2968 010066 ICMINC: 2969 ; 2970 010066 012705 000354' MOV #MINC,R5 ; R5 => Destination 2971 ; 2972 010072 VALUE: 2973 010072 012700 000645' MOV #NEW+9.,R0 ; Point behind 'MCE XXXX ' 2974 010076 004767 000000G CALL $CDTB ; Convert 2975 010102 010115 MOV R1,(R5) ; Insert value 2976 010104 000207 RETURN ; 2977 ; 2978 ; 2979 .SBTTL MCE - ICPURG -- Purge 2980 ; 2981 ; delete current translation table MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 24-2 MCE - ICPURG -- Purge 2982 ; 2983 010106 ICPURG: 2984 ; 2985 010106 012700 000366' MOV #CMDB,R0 ; Queue header for TR table 2986 010112 004767 174364 CALL FRENT ; Delete table entry 2987 010116 103773 BCS ICPURG ; Id C SET there may be more entries 2988 010120 000207 RETURN ; 2989 ; 2990 2991 .IF DF FILE 2992 2993 .SBTTL MCE - ICREAD -- Read 2994 ; 2995 ; read commands from file specified 2996 ; 2997 010122 ICREAD: 2998 ; 2999 010122 105767 001501' TSTB FILINP ; Is a file open ? 3000 010126 001402 BEQ 10$ ; If eq no: just open new 3001 ; 3002 ; Close a file currently open, i.e. 'MCE READ' issued from 3003 ; inside a definition is equivalent to a 'MCE CHAIN' command 3004 ; 3005 010130 004767 175456 CALL FILCLO ; Close current file 3006 010134 10$: 3007 010134 012701 000640' MOV #NEW+4,r1 ; Point behind 'MCE ' 3008 010140 016702 001464' MOV LEN,R2 ; Length of command 3009 010144 162702 000004 SUB #4.,R2 ; Remaining # characters 3010 010150 004767 177020 CALL GETFIL ; Get new file name 3011 010154 103404 BCS 20$ ; Error => 20$ 3012 010156 004767 175254 CALL FILOP1 ; Read file(s) 3013 010162 105267 001503' INCB FILREX ; Read or Replace being processed ;JHA99 3014 010166 20$: 3015 010166 000555 BR SUCCES ; Always success 3016 3017 .SBTTL MCE - ICREPL -- Replace 3018 ; 3019 010170 ICREPL: 3020 010170 004767 177712 CALL ICPURG ; Delete current translation table 3021 010174 000752 BR ICREAD ; 3022 3023 .ENDC ;FILE 3024 3025 ; 3026 .SBTTL MCE - ICRING -- Ring 3027 ; 3028 ; FIFO is RING buffer 3029 ; 3030 010176 ICRING: 3031 010176 112767 000001 001474' MOVB #1,RING ; Indicate RING 3032 010204 000546 BR SUCCES ; 3033 ; 3034 3035 .IF DF STATUS 3036 3037 .SBTTL MCE - ICSTAT -- Status [ on/off ] 3038 ; MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 24-3 MCE - ICSTAT -- Status [ on/off ] 3039 ; Status 3040 ; 3041 010206 ICSTAT: 3042 ; 3043 010206 012700 000644' MOV #NEW+8.,R0 ; Point behind "MCE XXXX" 3044 010212 016702 001464' MOV LEN,R2 ; Take 3045 010216 162702 000010 SUB #8.,R2 ; length 3046 010222 001012 BNE 10$ ; Not Zero : => 10$ 3047 010224 004767 170014 CALL STAFIL ; Fill statusline 3048 010230 012767 000444' 001462' MOV #STATX3,ADR ; Address 3049 010236 012767 000113 001464' MOV #STALN3,LEN ; Length 3050 010244 000167 174530 CALLR IOW ; 3051 010250 10$: 3052 010250 105767 000377' TSTB ANI+1 ; ANSII Terminal ? ;JHA99 3053 010254 001425 BEQ 20$ ; No : => 20$ ;JHA99 3054 010256 012703 001500' MOV #STAFLG,R3 ; R3 => Flag 3055 010262 111302 MOVB (R3),R2 ; Old status ;JHA99 3056 010264 010246 MOV R2,-(SP) ; Save it ;JHA99 3057 010266 004767 000122 CALL ONOFF ; => On / Off 3058 010272 012602 MOV (SP)+,R2 ; Restore ;JHA99 3059 010274 103415 BCS 20$ ; 3060 010276 105727 001500' TSTB #STAFLG ; Off ? 3061 010302 001012 BNE 20$ ; No : => 20$ 3062 010304 105702 TSTB R2 ; Was it on ? ;JHA99 3063 010306 001410 BEQ 20$ ; no : => 20$ ;JHA99 3064 010310 012767 000570' 001462' MOV #STACLR,ADR ; Address 3065 010316 012767 000016 001464' MOV #STACLN,LEN ; Length 3066 010324 000167 174450 CALLR IOW ; Clear status line 3067 010330 20$: 3068 010330 000207 RETURN ; 3069 3070 .ENDC ;STATUS 3071 3072 ; 3073 .SBTTL MCE - ICSVIN -- Intern on/off 3074 ; 3075 ; Save internal commands On/Off 3076 ; 3077 010332 ICSVIN: 3078 ; 3079 010332 012703 001475' MOV #SINFLG,R3 ; R3 => Flag 3080 010336 000426 BR ONOFF ; => On / Off 3081 ; 3082 ; 3083 .SBTTL MCE - ICSVOL -- Old commands on/off 3084 ; 3085 ; Save old commands On/Off 3086 ; 3087 010340 ICSVOL: 3088 ; 3089 010340 012703 001476' MOV #SOLFLG,R3 ; R3 => Flag 3090 010344 000423 BR ONOFF ; => On / Off 3091 ; 3092 ; 3093 .SBTTL MCE - ICVERS -- Version 3094 ; 3095 ; Show version MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 24-4 MCE - ICVERS -- Version 3096 ; 3097 010346 ICVERS: 3098 ; 3099 010346 012700 000000' MOV #STRTXT, R0 ; Print 3100 010352 000167 174402 CALLR IOMSG ; Startup message 3101 ; 3102 ; Pause 3103 ; 3104 010356 PAUSE: 3105 010356 012700 000044' MOV #PZTXT, R0 ; Print 3106 010362 004767 174372 CALL IOMSG ; Pause Message 3107 010366 004767 173376 CALL DETACH ; Detach terminal 3108 010372 STOP$S ; Stop for now 3109 010400 012700 000121' MOV #UPZTXT, R0 ; Print 3110 010404 004767 174350 CALL IOMSG ; Resume Msg 3111 010410 000167 167430 CALLR RESTAR ; Go back to work 3112 ; 3113 ; ON/OFF 3114 ; 3115 ; R3 => Byte flag 3116 ; 3117 010414 ONOFF: 3118 010414 012700 000644' MOV #NEW+8.,R0 ; Point behind "MCE XXXX" 3119 010420 016702 001464' MOV LEN,R2 ; Take 3120 010424 162702 000010 SUB #8.,R2 ; length 3121 010430 001433 BEQ 40$ ; Zero : => 40$ 3122 010432 10$: 3123 010432 122720 000040 CMPB #BLNK,(R0)+ ; Mnemonic delimiter ? 3124 010436 001402 BEQ 20$ ; Yes : => 20$ 3125 010440 077204 SOB R2,10$ ; Count remaining char 3126 010442 000426 BR 40$ ; => 40$ 3127 010444 20$: 3128 010444 142710 000040 BICB #40,(R0) ; Upcase 3129 010450 122027 000117 CMPB (R0)+,#'O ; 'O ? 3130 010454 001021 BNE 40$ ; No : => 40$ 3131 010456 142710 000040 BICB #40,(R0) ; Upcase 3132 010462 121027 000116 CMPB (R0),#'N ; 'N ? 3133 010466 001002 BNE 30$ ; No : => 30$ 3134 010470 105213 INCB (R3) ; Set flag 3135 010472 000413 BR SUCCES ; 3136 010474 30$: 3137 010474 122027 000106 CMPB (R0)+,#'F ; 'F ? 3138 010500 001007 BNE 40$ ; No : => 40$ 3139 010502 142710 000040 BICB #40,(R0) ; Upcase 3140 010506 121027 000106 CMPB (R0),#'F ; 'F ? 3141 010512 001002 BNE 40$ ; No : => 40$ 3142 010514 105013 CLRB (R3) ; Reset flag 3143 010516 000401 BR SUCCES ; 3144 010520 40$: 3145 010520 000402 BR NOSUCC ; Error 3146 3147 ; 3148 010522 SUCCES: 3149 010522 000241 CLC ; Succes 3150 010524 000207 RETURN ; 3151 010526 NOSUCC: 3152 010526 000261 SEC ; Not Succes MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 24-5 MCE - ICVERS -- Version 3153 010530 000207 RETURN ; 3154 ; 3155 000000' .END START MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 24-6 Symbol table ADR 001462R 003 DEFPRL= 000004 FILOP2 005442R 005 F.RACC= 000016 IO.ATT= ****** GX ANI 000376R 003 DEL = 000177 FILOP3 005506R 005 F.RATT= 000001 IO.CCO= ****** GX APLTXT 000463R 004 DELAY 003342R 005 FILOP4 005520R 005 F.RCNM= 000034 IO.DET= ****** GX BEGLIN 001220R 005 DELCHR 001500R 005 FILREA 005552R 005 F.RCTL= 000017 IO.KIL= ****** GX BELL = 000007 DELEC 001270R 005 FILRET 005550R 005 F.RSIZ= 000002 IO.RST= ****** GX BKSP = 000010 DELEL 001300R 005 FILREX 001503R 003 F.RTYP= 000000 IO.WVB= ****** GX BLNK = 000040 DELEW 001416R 005 FILTXT 000413R 004 F.SEQN= 000100 LDFIF 005010R 005 BS 001214R 003 DELRC 001474R 005 FLEN = 000002 F.SPDV= 000072 LEFT 002416R 005 BUFSIZ= 000114 DELRL 001526R 005 FLSTXT 000342R 004 F.SPUN= 000074 LEN 001464R 003 CDSC 001506R 003 DELRW 001556R 005 FNDCMA 005712R 005 F.STBK= 000036 LF = 000012 CFETCH 001556R 003 DELWRD 001616R 005 FNDCMD 005722R 005 F.UNIT= 000136 LM.USR= 000200 CHAR 001470R 003 DETACH 003770R 005 FO.RD = ****** GX F.URBD= 000020 LOOP 001002R 005 CHOVER 001230R 005 DEV 000150R 003 FREE 000372R 003 F.VBN = 000064 LOOP00 001030R 005 CLEAR 002336R 005 DEVL = 000003 FRENT 004502R 005 F.VBSZ= 000060 LOOP1 001470R 005 CLEFIF 010044R 005 DFNB 000160R 003 FTXT = 000004 GCISIZ= 000062 LOOP2 002644R 005 CLFIF 003724R 005 DFTYP = 000174R 003 FUNC 003004R 005 GCLI 001332R 003 LT.USR= 000002 CLISUP= 000001 DIR 000153R 003 FUNCEX 003006R 005 GD.LOG= 000005 MAXF 000352R 003 CLL = 000054 DIRL = 000005 FX.DIR= 000004 GEFIFO 004544R 005 MAXFIF= 000027 CLRBUF 002314R 005 DISPLY 004040R 005 FX.DLN= 000003 GETBUF 004604R 005 MCRLIN= 001334R 003 CLRNEW 003744R 005 DOEXEC 004222R 005 FX.DMX= 000002 GETCLI 005644R 005 MINC 000354R 003 CMDB 000366R 003 DOWN 002232RG 005 FX.LEN= 000000 GETFIL 007174R 005 MINCHR= 000001 CMDCHK 006142R 005 DSPTAB 000652R 004 F.ACTL= 000076 GETMCR 007154R 005 MOVWRD 002002R 005 CNVUPC 006556R 005 EDT = 000001 F.ALOC= 000040 GMCR 001332R 003 NEW 000634R 003 CODE 001460R 003 EDTFLG 001504R 003 F.BBFS= 000062 GOLD 002742R 005 NEWCMD 006612R 005 COMPND= 000001 EDTHLP 002770R 005 F.BDB = 000070 GOLDFL 001505R 003 NOEXEC 001473R 003 CONV 000504R 005 EDTTAB 000752R 004 F.BGBC= 000057 GVCLI1 004274R 005 NOLOAD 001472R 003 CR = 000015 EDTTXT 000467R 004 F.BKDN= 000026 GVCLI2 004404R 005 NOPOOL 000166R 004 CRET 000166R 004 EFN = 000001 F.BKDS= 000020 G.CICL= ****** GX NOSUCC 010526R 005 CSIBLK 000232R 003 ENDLIN 001650R 005 F.BKEF= 000050 G.CIDP= ****** GX NUMTXT 000465R 004 CS.DIF= 000002 ENDTXT 000150R 004 F.BKP1= 000051 G.MCRB= 000002 N.ANM1= 000002 CS.DVF= 000004 ERRTXT 000246R 004 F.BKST= 000024 HELP 002776R 005 N.ANM2= 000024 CS.EQU= 000040 ESC = 000033 F.BKVB= 000064 HLD 000400R 003 N.DID = 000024 CS.INP= 000001 ESCAP 002050R 005 F.CHR = 000075 HLPNEW= 000001 N.DVNM= 000032 CS.LOG= 000100 EXAST 003626R 005 F.CNTG= 000034 HLPTXT 000451R 004 N.FID = 000000 CS.MOR= 000020 EXEC 003430R 005 F.DFNB= 000046 ICCLEA 007662R 005 N.FNAM= 000006 CS.NMF= 000001 EXECNW 003422R 005 F.DSPT= 000044 ICFREE 007704R 005 N.FTYP= 000014 CS.OUT= 000002 EXEC1 003436R 005 F.DVNM= 000134 ICKEYP 010016R 005 N.FVER= 000016 CS.WLD= 000010 EXEC2 003532R 005 F.EFBK= 000010 ICLIST 010024R 005 N.NEXT= 000022 CTSTAR 001560R 003 EXEC3 003540R 005 F.EFN = 000050 ICMAXF 010034R 005 N.STAT= 000020 C.CMLD= 000002 EXIT 003654R 005 F.EOBB= 000032 ICMINC 010066R 005 N.UNIT= 000034 C.DEVD= 000006 EXITS 003664R 005 F.ERR = 000052 ICPURG 010106R 005 OFFON 000450R 005 C.DIRD= 000012 EXITXT 000152R 004 F.EXT = 000072 ICREAD 010122R 005 OLDFLG 001477R 003 C.DSDS= 000006 EX1 003212R 005 F.FACC= 000043 ICREPL 010170R 005 ONOFF 010414R 005 C.EXPS= 000060 EX2 003210R 005 F.FFBY= 000014 ICRING 010176R 005 OVMSG 001557R 003 C.FILD= 000016 FDBIN 000010R 003 F.FLG = 000074 ICSTAT 010206R 005 OVSTMO 001471R 003 C.IDIA= 000036 FDIR 000222R 003 F.FNAM= 000110 ICSVIN 010332R 005 PAR$$$= 000000 C.IDIL= 000034 FDSPT 000216R 003 F.FNB = 000102 ICSVOL 010340R 005 PAUSE 010356R 005 C.IDVA= 000032 FIFCNT 000362R 003 F.FTYP= 000116 ICVERS 010346R 005 PDSC 001512R 003 C.IDVL= 000030 FIFO 000356R 003 F.FVER= 000120 INI = 000002 POOL 000344R 003 C.MKW1= 000024 FIFPOI 000363R 003 F.HIBK= 000004 INSERT 001676R 005 POOLDT 000322R 003 C.MKW2= 000026 FIFPTR 000364R 003 F.LUN = 000042 INTCMD 000510R 004 POOLTX 000306R 003 C.ODVL= 000040 FILCLO 005612R 005 F.MBCT= 000054 INTERN 007322R 005 PRICMD 005126R 005 C.SIZE= 000054 FILE = 000001 F.MBC1= 000055 IO 004652R 005 PRIFIF 005136R 005 C.STAT= 000001 FILINI 001502R 003 F.MBFG= 000056 IOCR 004734R 005 PRINTC 002650R 005 C.SWAD= 000022 FILINP 001501R 003 F.NRBD= 000024 IOMSG 004760R 005 PRINTF 002636R 005 C.TYPR= 000000 FILOP 005422R 005 F.NREC= 000030 IOSTAT 000404R 003 PRIXXX 005144R 005 DEFPR 000630R 003 FILOP1 005436R 005 F.OVBS= 000030 IOW 005000R 005 PROCES 001170R 005 MCE - CLI-Commandline-Editor MACRO V05.05 Friday 15-Dec-89 19:04 Page 24-7 Symbol table PROMLF 000410R 003 SHVERS 002750R 005 STATX3 000444R 003 TERM 005322R 005 W.TSEF= 000002 PROMPT 000412R 003 SINFLG 001475R 003 STOPIO 000000R 003 TF.RAL= ****** GX $CBTA = ****** GX PRPROM 000514R 005 SOLFLG 001476R 003 STORE 006430R 005 TF.RNE= ****** GX $CDTB = ****** GX PRSTAT 000170R 005 SPBACK 005212R 005 STRTXT 000000R 004 TI = 000001 $DSW = ****** GX PRSTA1 000206R 005 SRWORD 005250R 005 SUBST 006460R 005 TMPFLG 001561R 003 $INIDM= ****** GX PRSTA2 000224R 005 SS3 = 000217 SUCCES 010522R 005 TOOLON 000307R 004 $RLCB = ****** GX PZTXT 000044R 004 STACLN= 000016 S.ANM1= 000014 TRANSL 002670R 005 $RQCB = ****** GX RECALL 002656R 005 STACLR 000570R 003 S.ANM2= 000005 TTP 000402R 003 $$$ = 001454R 003 RECB 001074R 003 STACMD 000510R 003 S.BFHD= 000020 T.V2XX= ****** GX $$$ARG= 000002 RECCMD 006776R 005 STAFIL 000244R 005 S.FATT= 000016 UP 002124R 005 $$$OST= 000122 RESTAR 000044R 005 STAFLG 001500R 003 S.FDB = 000140 UPDATE 005364R 005 $$$T2 = 000027 RETYPE 001642R 005 STAKEY 000520R 003 S.FNAM= 000006 UPZTXT 000121R 004 $$$$$L= 000001 RIGHT 002362R 005 STALIR 000465R 003 S.FNB = 000036 VALUE 010072R 005 .CLOSE= ****** G RING 001474R 003 STALN1= 000154 S.FNBW= 000017 VT2ESC 003266R 005 .CSI1 = ****** G SAVB 000754R 003 STALN2= 000150 S.FNTY= 000004 VT2ESL= 000004 .CSI2 = ****** G SAVE 003414R 005 STALN3= 000113 S.FTYP= 000002 VT2ESQ 000445R 004 .FSRCB= ****** G SD.BYE= 000004 START 000000R 005 S.NFEN= 000020 VT2FN 003216R 005 .GETSQ= ****** G SD.LOG= 000003 STASVI 000532R 003 S.TSEF= 000002 VT2KEY 003036R 005 .OPEN = ****** G SD.MOD= 000007 STASVR 000544R 003 TASK 001454R 003 VT2LEN= 000176 .SAVR1= ****** GX SD.TI = 000006 STATMO 000554R 003 TC.ANI= ****** GX VT2TAB 001062R 004 ...PC1= 000010R 003 SFGMCB 000376R 003 STATUS= 000001 TC.HLD= ****** GX VT2XX = 000001 ...PC2= 000214R 003 SFGMCL= 000006 STATX1 000414R 003 TC.TTP= ****** GX WAITFL 001466R 003 ...PC3= 000010R 003 SF.GMC= ****** GX STATX2 000420R 003 TDVTST 003336R 005 WAITIO 000004R 003 ...TPC= 000006 SHFREE 002760R 005 . ABS. 000000 000 (RW,I,GBL,ABS,OVR) 000000 001 (RW,I,LCL,REL,CON) $$FSR1 001020 002 (RW,D,GBL,REL,OVR) IDATA 001562 003 (RW,D,LCL,REL,CON) PDATA 001260 004 (RO,D,LCL,REL,CON) CODE 010532 005 (RO,I,LCL,REL,CON) Errors detected: 0 *** Assembler statistics Work file reads: 0 Work file writes: 0 Size of work file: 13384 Words ( 53 Pages) Size of core pool: 14530 Words ( 55 Pages) Operating system: RSX-11M/M-PLUS Elapsed time: 00:01:04.11 MCE,MCE/-SP=MCEPRE,MCE