ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Table of contents 1- 18 OCTAL DEBUGGING PROGRAM 1- 43 EDIT LOG 1- 65 DEFINITIONS 1- 118 INITIALIZATION CODE 1- 208 O.CTLC RETURN TO KEYBOARD MONITOR 1- 228 ASCII STRING PRINT AND ACCEPT 2- 1 O.REGT SPECIAL NAME HANDLER 2- 65 O.ORPC BACK ARROW HANDLER 2- 98 O.SNGL PROCESS SINGLE INSTRUCTION MODE 2- 112 O.COMM COMMA PROCESSING 2- 123 O.REL R PROCESSING 2- 191 O.CNS C PROCESSING 2- 216 O.MIN MINUS PROCESSING 2- 220 O.RCMP REPRINT LAST OPENED ADDRESS RELATIVELY 3- 1 COMMAND DECODER 3- 83 O.SEMI SEMI-COLON PROCESSOR 3- 90 PROCESS / AND \ - OPEN WORD OR BYTE 3- 136 O.CRET PROCESS CARRIAGE RETURN 3- 147 PROCESS , OPEN NEXT WORD 3- 178 O.BACK PROCESS ^, OPEN PREVIOUS WORD 3- 185 O.BKPT B HANDLER - SET AND REMOVE BREAKPOINTS 4- 1 O.OFDT PROCESS O, COMPUTE OFFSET 4- 28 SEARCHES 4- 97 O.GO PROCESS G - GO 4- 127 O.PROC PROCESS P - PROCEED 4- 153 BREAKPOINT HANDLER 4- 219 SAVE AND RESTORE REGISTERS 4- 252 RESTORE BREAKPOINTS 0-7 4- 262 SAVE TELETYPE STATUS 4- 281 RESTORE TELETYPE STATUS 5- 1 REMOVE BREAKPOINTS 0-7 5- 15 TYPE OUT CONTENTS OF WORD OR BYTE WITH ONE TRAILING SPACE 5- 40 CLEAR RELOCATION REGISTERS 5- 62 SINGLE CHARACTER TYPE-OUT 5- 96 GENERAL CHARACTER INPUT ROUTINE 5- 130 O.TYPE GENERAL CHARACTER OUTPUT ROUTINE 5- 156 ^U TEST 5- 193 SUBROUTINE TO READ THE PS INDEPENDENT OF MACHINE 6- 1 SUBROUTINE TO WRITE PS INDEPENDENT OF MACHINE 6- 16 SUBROUTINE TO LOCATE RELOCATION REGISTER 6- 54 INIT MEMORY 6- 78 CLOSE WORD OR BYTE 6- 105 DECODE RELATIVE OR ABS ADDRESS 6- 151 MOD40 PACK AND UNPACK 7- 1 MOD40 UNPACK 8- 1 IMPURE DATA, AND DATA 9- 5 V0108 DEFINITIONS AND UNIQUE MACROS 11- 1 USER FLAGS, SYMBOLS AND ADDRESS TABLES 11- 98 INTERNAL PRGM FLAGS, MESSAGES AND TABLES 13- 1 V0108 START 14- 14 SERVICE THE USER COMMAND FLAGS 15- 1 FILE ACCESS ROUTINE 16- 1 SYSTEM "SAVE & RESTORE ROUTINES" 17- 1 KEYBOARD INTERFACE TO THE USER 18- 1 SUPPORT ROUTINES 19- 1 DATA CONVERSION ROUTINES 20- 1 ASCII TO BINARY ADDRESS CONVERTER ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Table of contents 21- 1 GENERATE A REPORT ON THE SYMBOLICS 22- 1 THE SCREEN "WRITE" ROUTINE 23- 1 MODIFY THE SYMBOL FILE PER USER REQUEST 24- 1 CHANGE THE SYMBOL FILE 25- 1 CHANGE THE ADDRESS 26- 1 SEARCH FOR THE ADDRESS IN THE LINKMAP 27- 1 LTC "INTERRUPT" PROCESSING ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 1 1 .NLIST BEX 2 3 .IIF NDF $VIRT $VIRT= 0 ;$VIRT = 0 -> NORMAL ODT 4 ;$VIRT = 1 -> VIRTUAL ODT ;MS01+ 5 6 .IF EQ $VIRT 7 .TITLE ODT V01.09 ;IF YOU CHANGE THE VERSION #, ;DRH 8 ; DON'T FORGET TO CHANGE AT O.ID! 9 .IFF 10 .TITLE VDT V04.00 11 .ENDC ;EQ $VIRT ;MS01- 12 13 .IIF NDF EIS EIS=1 ;NO EXTENDED INSTRUCTIONS=0 ;DRH+ 14 .IIF NDF TKS TKS=177560 ;SYSTEM CONSOLE KEYBOARD 15 .IIF NDF TKSVEC TKSVEC=60 ;CONSOLE TERMINAL VECTORS 16 17 .IDENT /V01.09/ ;DRH- 18 .SBTTL OCTAL DEBUGGING PROGRAM 19 20 ;+ 21 ; 22 ; COPYRIGHT (c) 1979, 1980 BY 23 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 24 ; 25 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 26 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE 27 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER 28 ; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY 29 ; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY 30 ; TRANSFERRED. 31 ; 32 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE 33 ; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 34 ; CORPORATION. 35 ; 36 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 37 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. 38 ; 39 ;- 40 ; 41 ; R. BEAN,JD,DW,MAS,MBG 42 ; 43 .SBTTL EDIT LOG 44 45 ;+ 46 ; 47 ;DL01 -- FIX RETURN TO PREVIOUS SEQUENCE FUNCTION 48 ;DL03 -- ADD PSECT $ODT$ 49 ;MS01 -- ADD .TTYIN AND .TTYOUT FOR XM AND MULTI-TERMINAL USE 50 ; 51 ; V01.07 29-OCT-79 FIXED '<' AND 'A' COMMANDS, SEARCH ROUTINES, 52 ; -MBG- CLEANED-UP CODE ;MG01 53 ; 54 ; V04.00 14-NOV-79 ADDED '$J' WHICH RETURNS THE CONTENTS OF 55 ; -MBG- THE JSW AT THE TIME OF ENTRY TO ODT. 56 ; (UNDER VDT ONLY) ;MG02 57 ; V01.08 18-NOV-81 ADD HOOKS TO DISPLAY PRGRM AND CHG VERSION ;DRH ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 1-1 EDIT LOG 58 ; INCREASED STACK SPACE FOR ODTV08 59 ; DONALD R. HANSON, LOCKHEED AIRCRAFT SERVICE INC 60 ; 714-988-2427 DEPT 1-321 61 ; P.O. BOX 33, ONTARIO, CA, 91761 62 ; V01.09 7-OCT-83 ADDED GLOBALS TO ENABLE "PRELOADING" OF 63 ; REL REG'S & BKPTS,SAVSYS,RSTSYS ;DRH 64 ;- 65 .SBTTL DEFINITIONS 66 67 .MCALL .GVAL ;MS01+ 68 69 .IF NE $VIRT 70 .MCALL .TTYIN, .TTINR, .TTYOU, .RCTRL 71 .ENDC ;NE $VIRT ;MS01- 72 73 ; STACK SPACE RESERVED 74 75 000000 .PSECT $ODT$ ;DL03 76 .GLOBL O.ODT ;GETS ENTRY POINT TO SHOW UP 77 ; IN LOAD MAP 78 79 000200' . = .+200 ;NEED MORE STACK SPACE(ODTV08) ;DRH 80 000432' . = .+144+26+30+10 ;RESERVES SPACE FOR STACK 81 82 .IF NE $VIRT ;MS01+ 83 . = .+40. ;GET MORE FOR VDT 84 .ENDC ;NE $VIRT ;MS01- 85 86 ; GENERAL REGISTERS 87 88 000000 R0 = %0 89 000001 R1 = %1 90 000002 R2 = %2 91 000003 R3 = %3 92 000004 R4 = %4 93 000005 R5 = %5 94 000006 SP = %6 ;STACK POINTER 95 000007 PC = %7 ;PROGRAM COUNTER 96 177776 ST = 177776 ;PROCESSOR STATUS WORD 97 98 000016 O.BKP = 16 ;NUMBER OF BREAKPOINTS-1 MULT. BY 2 99 000016 O.RLR = 16 ;NO. OF RELOC. REGISTERS-1, TIMES 2 100 000014 O.TVEC = 14 ;TRT VECTOR LOCATION 101 000340 O.STM = 340 ;PRIORITY MASK - STATUS REGISTER 102 103 140340 O.STM1 = 140340 ;PRIORITY MASK PLUS USER MAP ;MS01+ 104 ; BITS FOR XM MONITOR ONLY 105 000044 JSW = 44 ;JOB STATUS WORD 106 000300 $CNFG1 = 300 ;MONITOR CONFIG WORD ONE 107 010000 C1.XM = 10000 ;XM MONITOR IS RUNNING ;MS01- 108 109 000020 O.TBT = 20 ;T-BIT MASK - STATUS REGISTER 110 000003 TRT = 000003 ;TRT INSTRUCTION 111 112 177560 O.RCSR = 177560 ;KEYBOARD CONTROL/STATUS 113 177562 O.RDB = O.RCSR+2 ;KEYBOARD BUFFER 114 177564 O.TCSR = O.RCSR+4 ;PRINTER CONTROL/STATUS ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 1-2 DEFINITIONS 115 177566 O.TDB = O.RCSR+6 ;PRINTER BUFFER 116 106400 MTPS = 106400 ;MOVE TO PS FOR LSI 117 106700 MFPS = 106700 ;MOVE FROM PS FOR LSI 118 .SBTTL INITIALIZATION CODE 119 120 ;+ 121 ; 122 ; INITIALIZE ODT 123 ; USE O.ODT FOR A NORMAL ENTRY 124 ; USE O.ODT+2 TO RESTART ODT - WIPING OUT ALL BREAKPOINTS 125 ; USE O.ODT+4 TO RE-ENTER (I.E. - FAKE A BREAKPOINT) 126 ; 127 ;- 128 129 000432 000421 O.ODT: BR O.STRT ;NORMAL ENTRY 130 000434 000473 BR O.RST ;RESTART 131 000436 004767 004764 JSR PC,O.RRST ;RE-ENTER -- SAVE STATUS 132 000442 016746 000016 MOV O.TVEC+2,-(SP) ;SET UP LOCAL STATUS 133 000446 004767 004764 JSR PC,O.WST 134 000452 010746 MOV PC,-(SP) ;FAKE THE PC 135 000454 012667 177624 MOV (SP)+,O.UPC 136 000460 112767 177777 005536 MOVB #-1,O.P ;DISALLOW PROCEED 137 000466 105067 005530 CLRB O.S 138 000472 000167 003520 JMP O.BK1 139 140 000476 004767 013710 O.STRT: JSR PC,SAVSYS ;TO SAVE STATUS ;DRH 141 ; JSR PC,O.RRST FOR PDP11 142 ; MFPS,O.UST FOR LSI 143 144 .IF EQ $VIRT ;MS01+ 145 000502 013746 000004 MOV @#4,-(SP) ;SAVE RT INTERRUPT VECTOR 146 000506 012737 000522' 000004 MOV #9$,@#4 ;SET ODT VECTOR 147 000514 005737 177776 TST @#ST ;LSI WILL TRAP TO 4 148 ; PDP11 WILL CONTINUE 149 000520 000422 BR 1$ ;DON'T CHANGE ACCESS TO PS 150 151 000522 012767 106767 004676 9$: MOV #MFPS+67,O.RRST ;CHANGE PS ACCESS IN TWO SUBROUTINES 152 ; O.RRST AND O.WST 153 ; STORE MFPS O.UST IN O.RRST 154 000530 012767 172654 004672 MOV #O.UST-O.RRST-4,O.RRST+2 155 000536 012767 000240 004666 MOV #NOP,O.RRST+4 156 000544 012767 106466 004664 MOV #MTPS+66,O.WST ;STORE MTPS 2(SP) 157 000552 012767 000240 004662 MOV #240,O.WST+4 158 000560 012716 000566' MOV #1$,(SP) ;REPLACE PC ON STACK WITH CONTINUE 159 ; LOCATION.PC,SP WERE PUT THERE BY 160 ; THE TIMEOUT TRAP TO 4 161 000564 000002 RTI ;RESTORE PS AND CONTINUE AT 1$ 162 163 000566 012637 000004 1$: MOV (SP)+,@#4 ;RESTORE CONTENTS OF 4 164 .ENDC ;EQ $VIRT ;MS01- 165 166 ; RUN AT CURRENT STATUS 167 168 000572 004567 004042 JSR R5,O.SVTT ;SAVE TTY STATUS 169 000576 004067 003716 JSR R0,O.SVR ;SAVE REGISTERS (MAINLY SP) 170 000602 012706 000266' MOV #O.UR0,SP ;SET UP STACK 171 000606 012704 006235' MOV #O.ID,R4 ;TYPE ID ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 1-3 INITIALIZATION CODE 172 000612 012703 006254' MOV #O.IDND,R3 173 000616 004567 004466 JSR R5,O.TYPE 174 000622 000417 BR O.RST1 175 176 000624 004067 003670 O.RST: JSR R0,O.SVR ;SAVE REGISTERS 177 000630 004567 004106 JSR R5,O.REM ;REMOVE ALL BREAKPOINTS 178 000634 004567 004230 JSR R5,O.CLRR ; CLEAR RELOCATION REGISTERS 179 000640 116704 177444 MOVB O.PRI,R4 ;GET ODT PRIORITY 180 000644 106004 RORB R4 181 000646 106004 RORB R4 ;SHIFT 182 000650 106004 RORB R4 ; INTO 183 000652 106004 RORB R4 ; POSITION 184 000654 110446 MOVB R4,-(SP) ;STORE IN STATUS 185 000656 004767 004554 JSR PC,O.WST 186 000662 105067 005334 O.RST1: CLRB O.S ;DISABLE SINGLE INSTRUCTION FOR NOW 187 000666 112767 177777 005330 MOVB #-1,O.P ;DISALLOW PROCEED 188 000674 012767 000340 000016 MOV #O.STM,O.TVEC+2 ;STATUS WORD TO TRT VECTOR+2 ;MS01+ 189 ; ASSUME IT IS NOT THE XM MONITOR 190 000702 .GVAL #AREA,#$CNFG1 ;SET TO FIND OUT IF XM IS RUNNING 191 000722 032700 010000 BIT #C1.XM,R0 ;IS IT? 192 000726 001403 BEQ 2$ ;NOPE, DON'T SET UP USER MODE BITS 193 000730 012767 140340 000016 MOV #O.STM1,O.TVEC+2 ;STATUS WORD AND XM USER MODE 194 ; TO TRT VECTOR+2 195 000736 012767 004200' 000014 2$: MOV #O.BRK,O.TVEC ;PC TO TRT VECTOR ;MS01- 196 197 ; THIS NEXT INSTRUCTION RAISES THE "Z" FLAG BECAUSE 198 ; ITS PURPOSE IN LIFE IS TO BEHAVE DIFFERENTLY ON THE /20 199 ; AND THE /45 SO WE CAN CHANGE THE RTT WHICH ALSO 200 ; BEHAVES DIFFERENTLY ON THE /20 AND /45. 201 Z 202 000744 000127 JMP (PC)+ ;PROCESSOR DEPENDENT INSTRUCTION 203 000746 000403 BR 1$ ;THIS PROCESSOR IS A 40 OR 45 204 000750 012767 000002 003110 MOV #RTI,O.RTIT ;CHANGE THE RTT TO AN RTI IF 205 ; THIS IS 11/05 OR 11/20 206 000756 000167 002372 1$: JMP O.RALL ;CLEAR BRK PT TABLES 207 208 .SBTTL O.CTLC RETURN TO KEYBOARD MONITOR 209 210 ;+ 211 ; 212 ; O.CTLC 213 ; ^C PROCESSING. RETURN TO KEYBOARD MONITOR 214 ; 215 ;- 216 217 000762 016706 177314 O.CTLC: MOV O.USP,SP ;RESTORE USER STACK 218 000766 012704 001016' MOV #O.CCST,R4 219 000772 012703 001017' MOV #O.CCSP,R3 220 000776 004767 013442 EXIT: JSR PC,RSTSYS ;RESTORE THE SYSTEM ADDRESSES ;DRH 221 001002 004567 004302 JSR R5,O.TYPE ;ECHO "^C" 222 001006 004567 003662 JSR R5,O.RSTT ;DTW-RESTORE CONSOLE STATUS 223 001012 010600 MOV SP,R0 ;WE WANT EXIT TO DO A SOFT RESET 224 001014 104350 EMT 340+10 ;EXIT TO KEYBOARD MONITOR 225 226 001016 136 O.CCST: .BYTE '^ 227 001017 103 O.CCSP: .BYTE 'C 228 .SBTTL ASCII STRING PRINT AND ACCEPT ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 1-4 ASCII STRING PRINT AND ACCEPT 229 230 ;+ 231 ; 232 ; O.ALF REXP;NA TYPE N CHARACTERS STARTING AT REXP; 233 ; THEN-- 234 ; ACCEPT A STRING OF ASCII TEXT. STORE IT IN 235 ; SUCCESIVE BYTES STARTING AT THE INDICATED 236 ; LOCATION. TEXT TERMINATED BY COUNT, N. 237 ; OR CR OR LF. ODT PRINTS THE ADDR OF 238 ; THE NEXT AVAILABLE LOCATION IN CORE 239 ; 240 ;- 241 242 001020 005703 O.ALF: TST R3 ;WAS REXP TYPED? 243 001022 001504 BEQ 6$ ;BR IF NOT 244 001024 105767 005200 TSTB O.SMFD ;WAS ';' TYPED? 245 001030 001501 BEQ 6$ ;BR IF NOT, ERROR 246 001032 005702 TST R2 ;IF N NOT TYPED, ASSUME 1 247 001034 001001 BNE 1$ 248 001036 005204 INC R4 249 001040 010446 1$: MOV R4,-(SP) ;SAVE COUNT 250 251 ; SET UP TO TYPE N CHAR. 252 253 001042 010504 MOV R5,R4 ;ADDR OF 1ST BYTE IN R4 254 001044 010503 MOV R5,R3 ;ADDR OF 1ST BYTE IN R3 255 001046 061603 ADD (SP),R3 ;ADD N TO R3 256 001050 005303 DEC R3 ;SUB. 1 TO GET LAST ADDR 257 001052 010367 005136 MOV R3,O.XXX ;SAVE LAST ADDR. 258 001056 004567 004226 JSR R5,O.TYPE ;TYPE THE CHARACTERS 259 001062 004567 004552 JSR R5,O.CRLF ;TYPE CR/LF 260 001066 012604 MOV (SP)+,R4 ;RECALL N TO R4 261 262 ; NOW ACCEPT INPUT STRING 263 264 001070 105267 005140 INCB O.SCRN ;ALLOW SPACES VIA O.GETC 265 001074 004567 004104 JSR R5,O.GETC ;LOOK AT FIRST CH. 266 001100 120027 000015 CMPB R0,#15 ;IS IT A CARR.RET? 267 268 .IF NE $VIRT ;MG01+ 269 BNE 15$ ;NOPE...CONTINUE 270 JSR R5,O.GETC ;YES...DISCARD THAT FOLLOWS 271 BR 5$ ;RETURN TO COMMAND DECODER 272 .IFF 273 001104 001447 BEQ 5$ ;YES...RETURN TO COMMAND DECODER 274 .ENDC ;NE $VIRT ;MG01- 275 276 001106 120027 000012 15$: CMPB R0,#12 ;CHK FOR LF 277 001112 001025 BNE 3$ ;IF NOT, ACCEPT N CHARACTERS 278 001114 105067 005114 CLRB O.SCRN ;MAKE SPACES INVISIBLE TO O.GETC 279 001120 016704 005070 MOV O.XXX,R4 ;IF LINE FEED, OPEN NEXT AVAILABLE CH. 280 001124 005204 INC R4 281 001126 005202 INC R2 282 001130 010400 MOV R4,R0 ;PRINT NEXT AVAIL BYTE 283 001132 010246 MOV R2,-(SP) ;SAVE TO AVOID CLOBBERRING 284 001134 010446 MOV R4,-(SP) ;BY O.RORA 285 001136 004567 004522 JSR R5,O.RORA ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 1-5 ASCII STRING PRINT AND ACCEPT 286 001142 012604 MOV (SP)+,R4 287 001144 012602 MOV (SP)+,R2 288 001146 112700 000134 MOVB #'\,R0 ;PRINT BACK SLASH 289 001152 004567 003744 JSR R5,O.PUTC 290 001156 000167 001536 JMP O.BYT 291 292 001162 004567 004016 2$: JSR R5,O.GETC ;GET NXT CH. 293 001166 004567 004174 3$: JSR R5,O.CU1 ;IS IT A '^U'? 294 001172 103003 BCC 4$ ;YES...HANDLE AS ZERO COUNT ;MG01 295 001174 110025 MOVB R0,(R5)+ 296 001176 005304 DEC R4 ;REDUCE COUNT. IS IT ZERO? 297 001200 001370 BNE 2$ ;BR IF NO 298 001202 010546 4$: MOV R5,-(SP) ;PRINT NXT AVAIL LOC: 299 001204 004567 004430 JSR R5,O.CRLF ;CR,LF 300 001210 112767 000002 004770 MOVB #2,O.BW ;FORCE WORD MODE 301 001216 012600 MOV (SP)+,R0 ;THEN, ADDRESS 302 001220 004567 004440 JSR R5,O.RORA 303 001224 105067 005004 5$: CLRB O.SCRN ;MAKE SPACE INVISIBLE TO O.GETC 304 001230 000167 001172 JMP O.DCD ;RETURN TO COMMAND DECODER 305 306 001234 000167 001156 6$: JMP O.ERR ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 2 O.REGT SPECIAL NAME HANDLER 1 .SBTTL O.REGT SPECIAL NAME HANDLER 2 3 ;+ 4 ; 5 ; SPECIAL NAME HANDLER 6 ; DEPENDS UPON THE EXPLICIT ORDER OF THE TWO TABLES O.TL AND O.UR0 7 ; 8 ;- 9 10 001240 004567 003740 O.REGT: JSR R5,O.GETC ;SPECIAL NAME, GET ONE MORE CHARACTER 11 001244 012704 006327' MOV #O.TL,R4 ;TABLE START ADDRESS 12 001250 120024 1$: CMPB R0,(R4)+ ;IS THIS THE CORRECT CHARACTER? 13 001252 001414 BEQ 3$ ;JUMP IF YES 14 001254 020427 006347' CMP R4,#O.TL+O.LG ;IS THE SEARCH DONE? 15 001260 103773 BLO 1$ ;BRANCH IF NOT 16 001262 042700 177770 BIC #177770,R0 ;MSK OFF OCTAL 17 001266 010004 MOV R0,R4 18 001270 006304 2$: ASL R4 19 001272 062704 000266' ADD #O.UR0,R4 ;GENERATE ADDRESS 20 001276 005202 INC R2 ;SET FOUND FLAG 21 001300 000167 001156 JMP O.SCAN ;GO FIND NEXT CHARACTER 22 23 001304 162704 006320' 3$: SUB #O.TL-7,R4 ;GO FIND NEXT CHARACTER 24 001310 000767 BR 2$ 25 26 ; RETYPE OPENED WORD IN ASCII (CONVERTED FROM MOD40) 27 28 001312 016700 004672 O.MOD: MOV O.CAD,R0 ;CALL MOD40 UNPACK 29 001316 012701 006231' MOV #O.ALF1,R1 30 001322 004767 004552 JSR PC,UNPA00 ;ASCII CHARS GO INTO O.ALF1,2,3 31 001326 012700 000075 MOV #'=,R0 ;PRINT "=" 32 001332 004567 003564 JSR R5,O.PUTC 33 001336 105267 004672 INCB O.SCRN ;SET FLAG TO ALLOW SPACES 34 001342 116700 004663 MOVB O.ALF1,R0 ;PRINT 1ST CHAR 35 001346 004567 003550 JSR R5,O.PUTC 36 001352 116700 004654 MOVB O.ALF2,R0 ;PRINT 2ND CH 37 001356 004567 003540 JSR R5,O.PUTC 38 001362 116700 004645 MOVB O.ALF3,R0 ;PRINT 3RD CH 39 001366 004567 003530 JSR R5,O.PUTC 40 001372 012700 000040 MOV #40,R0 ;PRINT SPACE 41 001376 004567 003520 JSR R5,O.PUTC 42 001402 004567 003576 JSR R5,O.GETC ;USER MUST NOW TYPE: 43 001406 120027 000040 CMPB R0,#40 ;IF CHAR IS LESS THAN SPACE, 44 001412 103433 BLO 1$ ;PREPARE TO ENTER COMMAND DECODER 45 001414 120027 000136 CMPB R0,#'^ ;'^'? 46 001420 001430 BEQ 1$ ;YES...OPEN PREVIOUS LOCATION 47 001422 110067 004603 MOVB R0,O.ALF1 ;OTHERWISE READ 3 CHAR 48 001426 004567 003552 JSR R5,O.GETC ;2ND CH 49 001432 110067 004574 MOVB R0,O.ALF2 50 001436 004567 003542 JSR R5,O.GETC ;3RD CHAR 51 001442 105067 004566 CLRB O.SCRN ;RESTORE O.GETC TO NORMAL 52 001446 110067 004561 MOVB R0,O.ALF3 53 001452 012700 006214' MOV #O.XXX,R0 ;TELL MOD40 TPACK TO PACK 54 001456 012701 006231' MOV #O.ALF1,R1 ;INTO O.XXX 55 001462 004767 004310 JSR PC,PACK00 56 001466 016704 004522 MOV O.XXX,R4 ;MAKE IT APPEAR AS IF THE 57 001472 012702 000001 MOV #1,R2 ;PACKED # WAS TYPED ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 2-1 O.REGT SPECIAL NAME HANDLER 58 001476 000167 000760 JMP O.SCAN ;LET COMMAND DECODER DO THE REST 59 60 001502 105067 004526 1$: CLRB O.SCRN 61 001506 005004 CLR R4 ;MAKE IT APPEAR 62 001510 005002 CLR R2 ;AS IF NO NUMBERS WERE TYPED IN 63 001512 000167 000750 JMP O.SCN1 ;TYPED IN 64 65 .SBTTL O.ORPC BACK ARROW HANDLER 66 67 ; "BACKARROW" HANDLER - OPEN INDEXED ON THE PC (BACK ARROW) 68 69 001516 004567 000052 O.ORPC: JSR R5,O.TCLS ;TEST WORD MODE AND CLOSE 70 001522 061202 ADD @R2,R2 ;COMPUTE 71 001524 005202 INC R2 72 001526 005202 INC R2 ; NEW ADDRESS 73 001530 010267 004454 O.PCS: MOV R2,O.CAD ;UPDATE CAD 74 001534 005002 CLR R2 ;CLEAR NUMBER TYPED FLAG ;DL01 75 001536 000167 001412 JMP O.OP2A ;GO FINISH UP 76 77 001542 004567 000026 O.ORAB: JSR R5,O.TCLS ;TEST WORD MODE AND CLOSE 78 001546 011202 MOV @R2,R2 ;GET ABSOLUTE ADDRESS 79 001550 000767 BR O.PCS 80 81 001552 004567 000016 O.ORRB: JSR R5,O.TCLS ;TEST AND CLOSE 82 001556 011201 MOV @R2,R1 ;COMPUTE NEW ADDRESS 83 001560 110101 MOVB R1,R1 ;EXTEND THE SIGN 84 001562 006301 ASL R1 ;R2=2(@R2) 85 001564 005201 INC R1 ; +2 86 001566 005201 INC R1 87 001570 060102 ADD R1,R2 ; +PC 88 001572 000756 BR O.PCS 89 90 001574 004767 004006 O.TCLS: JSR PC,O.CLSE ;CLOSE CURRENT CELL 91 001600 026727 004402 000002 CMP O.BW,#2 ;ONLY WORD MODE ALLOWED 92 001606 001003 BNE 1$ ;BRANCH IF ERROR 93 001610 016702 004374 MOV O.CAD,R2 ;CURRENT ADDRESS IN R2 94 001614 000205 RTS R5 95 96 001616 005726 1$: TST (SP)+ 97 001620 000167 000572 O.TCL2: JMP O.ERR ;POP A WORD AND SHOW THE ERROR 98 .SBTTL O.SNGL PROCESS SINGLE INSTRUCTION MODE 99 100 ; PROCESS S - SINGLE INSTRUCTION MODE 101 102 001624 105767 004400 O.SNGL: TSTB O.SMFD ;DONT REACT IF ; NOT TYPED 103 001630 001773 BEQ O.TCL2 104 001632 005702 TST R2 ;SEE IF TURN ON OR TURN OFF 105 001634 001004 BNE 1$ ;BRANCH IF TURNING IT ON 106 001636 105067 004360 CLRB O.S ;CLEAR THE FLAG 107 001642 000167 000560 JMP O.DCD ;CONTINUE THE SCAN 108 109 001646 112767 177777 004346 1$: MOVB #-1,O.S ;SET THE FLAG 110 001654 000167 000546 O.SI2: JMP O.DCD 111 112 .SBTTL O.COMM COMMA PROCESSING 113 114 ; COMMA PROCESSING. N IN R4 IS THE RELOCATION REGISTER NUMBER ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 2-2 O.COMM COMMA PROCESSING 115 116 001660 105267 004343 O.COMM: INCB O.CMFD ;SET "COMMA FOUND" SWITCH TO ON 117 001664 005702 TST R2 ;WAS A NUMBER TYPED IN? 118 001666 001406 BEQ 1$ ;NO,USE CURRENT BIAS; I.E.,EXIT 119 001670 042704 177770 BIC #177770,R4 ;MAKE SURE THAT N IS LESS THAN 10(8) 120 001674 006304 ASL R4 ;YES, LOCATE RELOC. REGISTER 121 001676 016467 000324' 004354 MOV O.RELT(R4),O.BIAS ;PUT BIAS IN O.BIAS 122 001704 000540 1$: BR O.MIN1 ;GO BACK TO DECODER 123 .SBTTL O.REL R PROCESSING 124 125 ;+ 126 ; 127 ; R PROCESSING. SEVERAL POSSIBILITIES- 128 ; A. ;R WAS TYPED. ZERO OUT ALL RELOCATION REGISTERS 129 ; B. ;NR WAS TYPED. ZERO OUT $NR 130 ; C. REXP;NR WAS TYPED. SET $NR TO REXP 131 ; D. NR WAS TYPED, WHILE A WORD WAS OPENED- 132 ; COMPUTE (O.CAD)-($NR) AND PRINT IT 133 ; 134 ;- 135 136 001706 105767 004316 O.REL: TSTB O.SMFD ;TEST IF A SEMICOLON WAS TYPED 137 001712 001424 BEQ 5$ ;NO CASE D 138 001714 005702 TST R2 ;NOTHING OPENED, WAS N TYPED? 139 001716 001410 BEQ 2$ ;N NOT TYPED 140 001720 042704 177770 1$: BIC #177770,R4 ;GUARANTEE THAT N<10 141 001724 006304 ASL R4 ;N TYPED, CASE B OR C. SET $NR. 142 001726 005703 TST R3 ;IF REXP NOT TYPED,CLEAR TO -1 143 001730 001406 BEQ 3$ 144 001732 010564 000324' MOV R5,O.RELT(R4) ;IF REXP NOT TYPED, R5=0. CASE B. 145 001736 000520 BR O.H1 ;EXIT TO DECODER 146 147 001740 005703 2$: TST R3 ;IF REXP TYPED, CASE B OR C WITH N=0 148 001742 001405 BEQ 4$ ;NEITHER REXP NOR N TYPED, CLEAR ALL. 149 001744 000765 BR 1$ ;REXP TYPED- N NOT TYPED 150 151 001746 012764 177777 000324' 3$: MOV #-1,O.RELT(R4) 152 001754 000511 BR O.H1 153 154 ; CLEAR RELOCATION REGISTERS. 155 156 001756 004567 003106 4$: JSR R5,O.CLRR ;CLEAR RELOC REG'S 157 001762 000734 BR O.SI2 ;GO BACK TO SCAN 158 159 001764 026727 004216 000002 5$: CMP O.BW,#2 ;CASE D, PRINT @O.CAD IN RELATIVE FORM 160 001772 001312 BNE O.TCL2 ;ERROR IF BYTE OPENED 161 001774 005702 TST R2 ; CHECK IF R 162 001776 001017 BNE 7$ ; IF R 163 002000 017700 004204 MOV @O.CAD,R0 164 002004 004567 003440 JSR R5,O.LOC ; THEN FIND BEST N 165 002010 020027 177777 CMP R0,#-1 ;WAS A RELOC REG FOUND? 166 002014 001007 BNE 6$ ;BR IF YES. ELSE-- 167 002016 012700 000075 MOV #'=,R0 ;TYPE "=" 168 002022 004567 003074 JSR R5,O.PUTC 169 002026 017700 004156 MOV @O.CAD,R0 ;TYPE ABS. VAL OF CONTENTS 170 002032 000433 BR 9$ ;OF OPENED LOC. 171 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 2-3 O.REL R PROCESSING 172 002034 010004 6$: MOV R0,R4 ; PUT NEW N INTO R4 173 002036 017701 004146 7$: MOV @O.CAD,R1 ;OPENED VALUE IS THE MINUEND 174 002042 010467 004216 MOV R4,O.TMP1 ; SAVE N 175 002046 006304 ASL R4 ;GET BIAS FROM $NR 176 002050 166401 000324' SUB O.RELT(R4),R1 ;BIAS IS THE SUBTRAHEND 177 002054 012700 000075 MOV #'=,R0 ;TYPE "=" 178 002060 004567 003036 JSR R5,O.PUTC 179 002064 016700 004174 MOV O.TMP1,R0 ; PREPARE INPUT FOR O.PUTC 180 002070 062700 000060 ADD #60,R0 ; CONVERT N TO ASCII 181 002074 004567 003022 JSR R5,O.PUTC ; TYPE N 182 002100 012700 000054 MOV #',,R0 ;PREPARE INPUT FOR O.PUTC 183 002104 004567 003012 JSR R5,O.PUTC ; TYPE COMMA 184 002110 005702 TST R2 ; CHECK IF R 185 002112 001002 BNE 8$ ; IF R 186 002114 016700 004076 MOV O.XXY,R0 ; THEN PREPARE INPUT FOR O.CADV 187 002120 010100 8$: MOV R1,R0 ;TYPE THE VALUE (@O.CAD)-($NR) 188 002122 004567 002646 9$: JSR R5,O.CADV 189 002126 000553 BR O.DCD1 190 191 .SBTTL O.CNS C PROCESSING 192 193 ;+ 194 ; 195 ; C PROCESSING. 196 ; A. REXP;C WAS TYPED- PRINT THE VALUE OF REXP AND STORE IN $C 197 ; B. ;C WAS TYPED- SAME AS C., BUT REXP=0 BY DEFAULT 198 ; C. NO SEMICOLON HAS BEEN TYPED-REPLACE R4 WITH THE CONTENTS OF $C 199 ; 200 ;- 201 202 002130 105767 004074 O.CNS: TSTB O.SMFD ;WAS A SEMICOLON TYPED? 203 002134 001005 BNE 1$ ;REXP TYPED PRIOR TO ; CASE A 204 002136 016704 176156 MOV O.CNST,R4 ;CASE C. REPLACE R4 WITH ($C) 205 002142 012702 000001 MOV #1,R2 206 002146 000545 BR O.SCAN ;RETURN TO SCAN MORE 207 208 002150 012700 000075 1$: MOV #'=,R0 ;PRINT VALUE 209 002154 012767 000002 004024 MOV #2,O.BW 210 002162 004567 002734 JSR R5,O.PUTC 211 002166 010500 MOV R5,R0 212 002170 004567 002600 JSR R5,O.CADV 213 002174 010567 176120 MOV R5,O.CNST ;AND STORE IN $C 214 002200 000512 O.H1: BR O.DCD 215 216 .SBTTL O.MIN MINUS PROCESSING 217 218 002202 105267 004054 O.MIN: INCB O.MINS ;SET MINUS FOUND SWITCH ON 219 002206 000523 O.MIN1: BR O.DCD1 220 .SBTTL O.RCMP REPRINT LAST OPENED ADDRESS RELATIVELY 221 222 ;+ 223 ; 224 ; A. N! WAS TYPED--PRINT N,((O.CAD)-($NR)) 225 ; B. ! WAS TYPED. FIND THE CLOSEST BIAS LESS THAN 226 ; (O.CAD) AND USE ITS "N" -- THEN DO CASE A. 227 ; 228 ;- ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 2-4 O.RCMP REPRINT LAST OPENED ADDRESS RELATIVELY 229 230 002210 012700 000075 O.RCMP: MOV #'=,R0 ;FIRST TYPE A "=" 231 002214 004567 002702 JSR R5,O.PUTC ;WAS N TYPED IN? 232 002220 005702 TST R2 ;WAS N TYPED IN? 233 002222 001040 BNE 2$ ;BRANCH IF YES 234 002224 016700 003760 MOV O.CAD,R0 235 002230 004567 003214 JSR R5,O.LOC ;ELSE, FIND BEST N 236 002234 020027 177777 CMP R0,#-1 ;IF REL.REG FOUND, 237 002240 001005 BNE 1$ ; BR, ELSE-- 238 002242 016700 003742 MOV O.CAD,R0 ;PRINT ADDR IN ABS. 239 002246 004567 002522 JSR R5,O.CADV 240 002252 000501 BR O.DCD1 241 242 002254 062700 000060 1$: ADD #060,R0 ;CONVERT N TO ANSCII 243 002260 004567 002636 JSR R5,O.PUTC ;TYPE N 244 002264 012700 000054 MOV #',,R0 ;TYPE COMMA 245 002270 004567 002626 JSR R5,O.PUTC 246 002274 016746 003706 MOV O.BW,-(SP) ;SAVE O.BW 247 002300 012767 000002 003700 MOV #2,O.BW ;ARTIFCIALLY SET MODE FOR WORDS 248 002306 016700 003704 MOV O.XXY,R0 ;TYPE RELATIVE AMOUNT 249 002312 004567 002456 JSR R5,O.CADV 250 002316 012667 003664 MOV (SP)+,O.BW ;RESTORE MODE 251 002322 000455 BR O.DCD1 ;EXIT TO SCAN ROUTINE 252 253 002324 010400 2$: MOV R4,R0 ;GET N. THIS CODE SIMULATES O.LOC 254 002326 006300 ASL R0 ;TIMES 2 FOR INDEXING 255 002330 016767 003654 003660 MOV O.CAD,O.XXY 256 002336 166067 000324' 003652 SUB O.RELT(R0),O.XXY ;COMPUTE DIFFERENCE 257 002344 006200 ASR R0 ;RESTORE N. 258 002346 000742 BR 1$ ;PRINT RESULTS 259 260 ; FILL MEMORY WORDS. LIMITS ARE THE SEARCH LIMITS. 261 262 002350 012767 000002 003630 O.FILL: MOV #2,O.BW ;SET MODE TO "OPEN WORD" 263 002356 105767 003646 O.FIL1: TSTB O.SMFD ;DONT REACT UNLESS ";" WAS TYPED 264 002362 001415 BEQ O.ERR ;IF NOT TYPED, ERROR. 265 002364 016700 175730 MOV O.CNST, R0 ;ACTUAL VALUE 266 002370 016704 175720 MOV O.LOW,R4 ;USE SEARCH LIMITS FOR 267 002374 016703 175716 MOV O.HI,R3 ; FILL LIMITS. 268 002400 004567 003154 JSR R5,O.ST 269 002404 000410 BR O.DCD ;EXIT 270 271 ; INITIALIZE MEMORY BYTES. 272 273 002406 012767 000001 003572 O.INIT: MOV #1,O.BW 274 002414 000760 BR O.FIL1 ;LET O.FILL DO THE WORK ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 3 COMMAND DECODER 1 .SBTTL COMMAND DECODER 2 3 ; ALL REGISTERS MAY BE USED (R0-R5), 4 5 002416 012700 000077 O.ERR: MOV #'?,R0 ; ? TO BE TYPED 6 002422 004567 002474 JSR R5,O.PUTC ; OUTPUT ? 7 002426 005067 003554 O.DCD: CLR O.BW ;CLOSE ALL 8 002432 004567 003210 JSR R5,O.CRLS ;TYPE * 9 002436 105067 003566 O.DCD3: CLRB O.SMFD ;SEMICOLON FOUND FLAG 10 002442 105067 003561 CLRB O.CMFD ;COMMA FOUND FLAG 11 002446 105067 003610 CLRB O.MINS ;MINUS SIGN FOUND FLAG 12 002452 005003 CLR R3 ;R3 IS A SAVE REGISTER FOR R2 13 002454 005005 CLR R5 ;R5 IS A SAVE REGISTER FOR R4 14 002456 005004 O.DCD1: CLR R4 ; R4 CONTAINS THE CONVERTED OCTAL 15 002460 005002 CLR R2 ; R2 IS THE NUMBER FOUND FLAG 16 002462 004567 002516 O.SCAN: JSR R5,O.GETC ;GET A CHAR, RETURN IN R0 17 002466 120027 000060 O.SCN1: CMPB R0,#'0 ;COMPARE WITH ASCII 0 18 002472 103413 BLO 1$ ;CHECK LEGALITY IF NON-NUMERIC 19 002474 120027 000067 CMPB R0,#'7 ;COMPARE WITH ASCII 7 20 002500 101010 BHI 1$ ;CHECK LEGALITY IF NOT OCTAL 21 002502 042700 177770 BIC #177770,R0 ;CONVERT TO BCD 22 002506 006304 ASL R4 ; MAKE ROOM 23 002510 006304 ASL R4 ; IN 24 002512 006304 ASL R4 ; R4 25 002514 060004 ADD R0,R4 ;PACK THREE BITS IN R4 26 002516 005202 INC R2 ;R2 HAS NUMERIC FLAG 27 002520 000760 BR O.SCAN ; AND TRY AGAIN 28 29 002522 005001 1$: CLR R1 ;CLEAR INDEX 30 002524 120061 006273' 2$: CMPB R0,O.LGCH(R1) ;DO THE CODES MATCH? 31 002530 001405 BEQ 3$ ;JUMP IF YES 32 002532 005201 INC R1 ; SET INDEX FOR NEXT SEARCH 33 002534 020127 000034 CMP R1,#O.CLGT ;IS THE SEARCH DONE? 34 002540 103771 BLO 2$ ;NOPE...RE-LOOP 35 002542 000725 BR O.ERR ; OOPS! 36 37 002544 105767 003512 3$: TSTB O.MINS ;IF MINUS WAS NOT TYPED 38 002550 001401 BEQ 4$ ;DO NOT NEGATE K 39 002552 005404 NEG R4 ;OTHERWISE, TAKE 2'S COMPLEMENT. 40 002554 105767 003447 4$: TSTB O.CMFD ;IF A COMMA NOT TYPED, 41 002560 001402 BEQ 5$ ;SKIP NEXT INSTRUCTION. 42 002562 066704 003472 ADD O.BIAS,R4 ;OTHERWISE, ADD RELOC. BIAS TO (R4) 43 002566 105067 003470 5$: CLRB O.MINS ;REINITIALIZE MINUS-TYPED SWITCH 44 ; FOR NXT SCAN 45 002572 006301 ASL R1 ;MULTIPLY BY TWO 46 002574 000171 002600' JMP @O.LGDR(R1) ;GO TO PROPER ROUTINE 47 48 002600 002670' O.LGDR: O.SEMI ; ; SEMICOLON (DELIMITER) 49 002602 002706' O.WRD ; / OPEN WORD 50 002604 002720' O.BYT ; \ OPEN BYTE 51 002606 003066' O.CRET ; CARRIAGE RETURN CLOSE 52 002610 001240' O.REGT ; $ REGISTER OPS 53 002612 003734' O.GO ; G GO TO ADDRESS K 54 002614 003106' O.OP1 ; MODIFY, CLOSE, OPEN NEXT 55 002616 001516' O.ORPC ; BACK-ARROW OPEN RELATED, 56 ; INDEX - PC (BACK ARROW) 57 002620 003102' O.OLD ; < RETURN TO OLD SEQUENCE (OPEN) ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 3-1 COMMAND DECODER 58 002622 003226' O.BACK ; ^ OPEN PREVIOUS (UP ARROW) 59 002624 001660' O.COMM ; , COMMA. SEPERATES REL.REG. 60 ; FROM INCREMENT 61 002626 003412' O.OFST ; O OFFSET 62 002630 003526' O.WSCH ; W SEARCH WORD 63 002632 003522' O.EFF ; E SEARCH EFFECTIVE ADDRESS 64 002634 003250' O.BKPT ; B BREAKPOINTS 65 002636 004070' O.PROC ; P PROCEED 66 002640 001542' O.ORAB ; @ OPEN RELATED, ABSOLUTE 67 002642 001552' O.ORRB ; > OPEN RELATED, REL. BRANCH 68 002644 001624' O.SNGL ; S SINGLE INSTRUCTION MODE 69 002646 001706' O.REL ; R RELOCATION PROCESSING 70 002650 002130' O.CNS ; C CONSTANT REGISTER PROCESSING 71 002652 002202' O.MIN ; - MINUS, NEGATES NUMBER TYPED IN 72 002654 002350' O.FILL ; F FILL MEMORY WORDS FROM THE 73 ; CONSTANT REGISTER 74 002656 002406' O.INIT ; I INITIALIZE MEMORY BYTES FROM 75 ; THE CONSTANT REGISTER 76 002660 002210' O.RCMP ; ! PRINT CURRENT OPENED ADDRESS 77 ; IN REL. FORM 78 002662 001312' O.MOD ; X RETYPE OPENED CONTENTS, MOD40 79 002664 001020' O.ALF ; A ACCEPT ASCII INPUT 80 002666 000762' O.CTLC ; ^C EXIT TO MONITOR 81 000070 O.LGL = .-O.LGDR ;LGL MUST EQUAL 2X CHLGT ALWAY 82 83 .SBTTL O.SEMI SEMI-COLON PROCESSOR 84 85 002670 010203 O.SEMI: MOV R2,R3 ;A SEMI-COLON HAS BEEN RECEIVED 86 002672 010405 MOV R4,R5 ;NUMERIC FLAG TO R3, CONTENTS TO R5 87 002674 105267 003330 INCB O.SMFD ;SET SEMICOLON FOUND FLAG 88 002700 105067 003323 CLRB O.CMFD ;RESET COMMA FOUND FLAG 89 002704 000664 BR O.DCD1 ;GO BACK FOR MORE 90 .SBTTL PROCESS / AND \ - OPEN WORD OR BYTE 91 92 ;+ 93 ; 94 ; INPUT - IF R2 IS NON-ZERO A NEW REXP HAS BEEN TYPED IN 95 ; INPUT - -ADDRESS OF WORD TO BE OPENED IS IN R4 96 ; 97 ;- 98 99 002706 012767 000002 003272 O.WRD: MOV #2,O.BW ;OPEN WORD 100 002714 000404 BR O.WB1 101 102 002716 006104 O.BYT1: ROL R4 ;GET THE ADDRESS BACK 103 002720 012767 000001 003260 O.BYT: MOV #1,O.BW ;OPEN BYTE 104 002726 005702 O.WB1: TST R2 ;GET VALUE IF R2 IS NON-ZERO 105 002730 001011 BNE 3$ ;BRANCH IF NUMBER INPUT 106 002732 105767 003271 TSTB O.CMFD ;TEST FOR ","AND";" 107 002736 001402 BEQ 2$ 108 002740 000167 177452 1$: JMP O.ERR ;ERROR IF PRESENT WITHOUT NUMBER. 109 110 002744 105767 003260 2$: TSTB O.SMFD 111 002750 001373 BNE 1$ 112 002752 000404 BR O.WRD1 ;NO NUMBER - REOPEN PREVIOUS LOCATION 113 114 002754 010467 003232 3$: MOV R4,O.DOT ;PUT VALUE IN DOT ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 3-2 PROCESS / AND \ - OPEN WORD OR BYTE 115 002760 010467 003224 MOV R4,O.CAD ; ALSO IN CAD 116 002764 026727 003216 000001 O.WRD1: CMP O.BW,#1 ;CHECK BYTE MODE 117 002772 001407 BEQ 1$ ;JUMP IF BYTE 118 002774 016704 003210 MOV O.CAD,R4 119 003000 006204 ASR R4 ;MOVE ONE BIT TO CARRY 120 003002 103745 BCS O.BYT1 ;JUMP IF ODD ADDRESS 121 003004 017700 003200 MOV @O.CAD,R0 ;GET CONTENTS OF WORD 122 003010 000402 BR 2$ 123 124 003012 117700 003172 1$: MOVB @O.CAD,R0 ;GET CONTENTS OF BYTE 125 003016 004567 001752 2$: JSR R5,O.CADV ;GO GET AND TYPE OUT @CAD 126 003022 026727 003160 000001 CMP O.BW,#1 ;CHECK IF BYTE MODE. 127 003030 001202 BNE O.DCD3 ;IF NOT WE'RE DONE. ELSE: 128 003032 112700 000075 MOVB #'=,R0 ;TYP "=" AND THEN THE ASCII BYTE 129 003036 004567 002060 JSR R5,O.PUTC 130 003042 117700 003142 MOVB @O.CAD,R0 131 003046 004567 002050 JSR R5,O.PUTC 132 003052 112700 000040 MOVB #40,R0 133 003056 004567 002040 JSR R5,O.PUTC 134 003062 000167 177350 JMP O.DCD3 ;GO BACK TO DECODER 135 136 .SBTTL O.CRET PROCESS CARRIAGE RETURN 137 138 003066 004767 002514 O.CRET: JSR PC,O.CLSE ;CLOSE LOCATION 139 140 .IF NE $VIRT ;MS01+ 141 .TTYIN ;GET RID OF THE LF 142 .ENDC ;NE $VIRT ;MS01- 143 144 003072 000167 177330 O.DCDA: JMP O.DCD ;RETURN TO DECODER 145 146 003076 000167 177314 O.ERR3: JMP O.ERR ;INTERMEDIATE HELP 147 .SBTTL PROCESS , OPEN NEXT WORD 148 149 003102 105267 003112 O.OLD: INCB O.SEQ ;SET FLAG TO LATER RESTORE CAD 150 003106 005767 003074 O.OP1: TST O.BW ; RECEIVED 151 003112 001771 O.ERR2: BEQ O.ERR3 ;ERROR IF NOTHING IS OPEN 152 003114 004767 002466 JSR PC,O.CLSE ;CLOSE PRESENT CELL 153 003120 005767 003074 TST O.SEQ ;SHOULD CAD BE RESTORED? 154 003124 001405 BEQ 1$ ;BRANCH IF NOT 155 156 ;MG01; CMP O.CAD,O.DOT ;IS CURRENT ADDRESS = ORIGIN? ;DL01 157 ;MG01; BEQ 2$ ;PROCEED AS USUAL IF YES ;DL01 158 ;MG01; MOV #2,O.BW ;OTHERWISE BACK TO WORD MODE ;DL01 159 160 003126 016767 003060 003054 2$: MOV O.DOT,O.CAD ;RESTORE PREVIOUS SEQUENCE 161 003134 105067 003060 CLRB O.SEQ ;RESET FLAG; NO LONGER NEEDED 162 003140 066767 003042 003042 1$: ADD O.BW,O.CAD ;GENERATE NEW ADDRESS 163 003146 016767 003036 003036 O.OP2: MOV O.CAD,O.DOT ;INITIALIZE DOT 164 003154 004567 002460 O.OP2A: JSR R5,O.CRLF ; 165 003160 016746 003022 MOV O.BW,-(SP) ;SAVE BW 166 003164 012767 000002 003014 MOV #2,O.BW ;SET TO TYPE FULL WORD ADDRESS 167 003172 016700 003012 MOV O.CAD,R0 ;NUMBER TO TYPE 168 003176 004567 002462 JSR R5,O.RORA ; CHECK FORMAT 169 003202 011667 003000 MOV @SP,O.BW ;RESTORE BW 170 003206 012700 027534 MOV #"\/,R0 ;/ IN LOW BYTE 171 ; \ IN HIGH BYTE ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 3-3 PROCESS , OPEN NEXT WORD 172 003212 006226 ASR (SP)+ ;IS IT BYTE MODE? 173 003214 103401 BCS 1$ ;YES... 174 003216 000300 SWAB R0 ;TYPE A / 175 003220 004567 001676 1$: JSR R5,O.PUTC ;TYPE THE LOW BYTE OF R0 176 003224 000657 BR O.WRD1 ;GO PROCESS IT 177 178 .SBTTL O.BACK PROCESS ^, OPEN PREVIOUS WORD 179 180 003226 005767 002754 O.BACK: TST O.BW ; ^ RECEIVED 181 003232 001727 BEQ O.ERR2 ;ERROR IF NOTHING OPEN 182 003234 004767 002346 JSR PC,O.CLSE 183 003240 166767 002742 002742 SUB O.BW,O.CAD ;GENERATE NEW ADDRESS 184 003246 000737 BR O.OP2 ;GO DO THE REST 185 .SBTTL O.BKPT B HANDLER - SET AND REMOVE BREAKPOINTS 186 187 003250 012700 006354' O.BKPT: MOV #O.TRTC,R0 188 003254 006304 ASL R4 ;MULTIPLY NUMBER BY TWO 189 003256 005703 TST R3 190 003260 001423 BEQ 3$ ;IF R3 IS ZERO GO REMOVE BREAKPOINT 191 003262 006205 ASR R5 ;GET ONE BIT TO CARRY 192 003264 103514 BCS O.ERR1 ;BADNESS IF ODD ADDRESS 193 003266 006305 ASL R5 ;RESTORE ONE BIT 194 003270 062704 000344' ADD #O.ADR1,R4 195 003274 005702 TST R2 196 003276 001007 BNE 2$ ;JUMP IF SPECIFIC CELL 197 003300 020014 1$: CMP R0,@R4 ;IS THIS CELL FREE? 198 003302 001405 BEQ 2$ ;JUMP IF YES 199 003304 020427 000362' CMP R4,#O.BKP+O.ADR1 ;ARE WE AT THE END OF OUR ROPE 200 003310 103102 BHIS O.ERR1 ;YES, THERE IS NOTHING FREE 201 003312 005724 TST (R4)+ ;INCREMENT BY TWO 202 003314 000771 BR 1$ 203 204 003316 020427 000362' 2$: CMP R4,#O.BKP+O.ADR1 205 003322 101075 BHI O.ERR1 ;ERROR IF TOO LARGE 206 003324 010514 MOV R5,@R4 ;SET BREAKPOINT 207 003326 000661 BR O.DCDA ;RETURN 208 209 003330 005702 3$: TST R2 210 003332 001410 BEQ O.RALL ;GO REMOVE ALL 211 003334 020427 000016 CMP R4,#O.BKP 212 003340 101066 BHI O.ERR1 ;JUMP IF NUMBER TOO LARGE 213 003342 010064 000344' MOV R0,O.ADR1(R4) ;CLEAR BREAKPOINT 214 003346 005064 000366' CLR O.CT(R4) ;CLEAR COUNT ALSO 215 003352 000647 O.DCDB: BR O.DCDA 216 217 003354 005004 O.RALL: CLR R4 218 003356 012700 006354' MOV #O.TRTC,R0 219 003362 020427 000020 1$: CMP R4,#O.BKP+2 ;ALL DONE? 220 003366 101241 BHI O.DCDA ;JUMP IF YES 221 003370 010064 000344' MOV R0,O.ADR1(R4) ;RESET BKPT 222 003374 012764 000003 000410' MOV #TRT,O.UIN(R4) ;RESET CONTENTS OF TABLE 223 003402 005064 000366' CLR O.CT(R4) ;CLEAR COUNT 224 003406 005724 TST (R4)+ ;INCREMENT BY TWO 225 003410 000764 BR 1$ ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 4 O.OFDT PROCESS O, COMPUTE OFFSET 1 .SBTTL O.OFDT PROCESS O, COMPUTE OFFSET 2 3 003412 026727 002570 000002 O.OFST: CMP O.BW,#2 ;CHECK WORD MODE 4 003420 001036 BNE O.ERR1 ;ERROR IF NOT CORRECT MODE 5 003422 012700 000040 MOV #40,R0 ;TYPE ONE BLANK 6 003426 004567 001470 JSR R5,O.PUTC ; AS A SEPARATOR 7 003432 005703 TST R3 ;WAS SEMI-COLON TYPED? 8 003434 001430 BEQ O.ERR1 ;NO, CALL IT AN ERROR 9 003436 166705 002546 SUB O.CAD,R5 ;COMPUTE 10 003442 005305 DEC R5 11 003444 005305 DEC R5 ; 16 BIT OFFSET 12 003446 010500 MOV R5,R0 13 003450 004567 001320 JSR R5,O.CADV ;NUMBER IN R0 - WORD MODE 14 003454 010500 MOV R5,R0 15 003456 006200 ASR R0 ;DIVIDE BY TWO 16 003460 103414 BCS 1$ ;ERROR IF ODD 17 003462 020027 177600 CMP R0,#-200 ;COMPARE WITH -200 18 003466 003411 BLE 1$ ;DO NOT TYPE IF OUT OF RANGE 19 003470 020027 000177 CMP R0,#177 ;COMPARE WITH +177 20 003474 002006 BGE 1$ ;DO NOT TYPE IF OUT OF RANGE 21 003476 005367 002504 DEC O.BW ;SET TEMPORARY BYTE MODE 22 003502 004567 001266 JSR R5,O.CADV ;NUMBER IN R0 - BYTE MODE 23 003506 005267 002474 INC O.BW ;RESTORE WORD MODE 24 003512 000167 176720 1$: JMP O.DCD3 ;ALL DONE 25 26 003516 000167 176674 O.ERR1: JMP O.ERR ;INTERMEDIATE HELP 27 28 .SBTTL SEARCHES 29 30 ;+ 31 ; 32 ; SEARCHES - $MSK HAS THE MASK 33 ; $MSK+2 HAS THE FWA 34 ; $MSK+4 HAS THE LWA 35 ; 36 ;- 37 38 003522 005201 O.EFF: INC R1 ;SET EFFECTIVE SEARCH 39 003524 000401 BR O.WDS 40 41 003526 005001 O.WSCH: CLR R1 ;SET WORD SEARCH 42 003530 005703 O.WDS: TST R3 ;CHECK FOR OBJECT FOUND 43 003532 001771 BEQ O.ERR1 ;ERROR IF NO OBJECT 44 003534 012767 000002 002444 MOV #2,O.BW ;SET WORD MODE 45 003542 016702 174546 MOV O.MSK+2,R2 ;SET ORIGIN 46 003546 016704 174540 MOV O.MSK,R4 ;SET MASK 47 003552 005104 COM R4 48 003554 020267 174536 1$: CMP R2,O.MSK+4 ; IS THE SEARCH ALL DONE? 49 003560 101274 BHI O.DCDB ; YES 50 003562 011200 MOV @R2,R0 ; GET OBJECT 51 003564 005701 TST R1 ;NO 52 003566 001040 BNE 4$ ;BRANCH IF EFFECTIVE SEARCH 53 003570 010046 MOV R0,-(SP) 54 003572 010503 MOV R5,R3 ;EXCLUSIVE OR 55 003574 040500 BIC R5,R0 ; IS DONE 56 003576 042603 BIC (SP)+,R3 ; IN A VERY 57 003600 050003 BIS R0,R3 ; FANCY MANNER HERE ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 4-1 SEARCHES 58 003602 040403 BIC R4,R3 ;AND RESULT WITH MASK 59 003604 001027 2$: BNE 3$ ;RE-LOOP IF NO MATCH 60 003606 010446 MOV R4,-(SP) ;REGISTERS R2,R4, AND R5 ARE SAFE 61 003610 010146 MOV R1,-(SP) ;SAVE R1 62 003612 010246 MOV R2,-(SP) ;SAVE R2 63 003614 010346 MOV R3,-(SP) 64 003616 004567 002016 JSR R5,O.CRLF 65 003622 010200 MOV R2,R0 ;GET READY TO TYPE 66 003624 004567 002034 JSR R5,O.RORA ; CHECK FORMAT 67 003630 012700 000057 MOV #'/,R0 ;SLASH TO R0 68 003634 004567 001262 JSR R5,O.PUTC ;TYPE IT 69 003640 011200 MOV @R2,R0 ;GET CONTENTS 70 003642 004567 001126 JSR R5,O.CADV ; TYPE CONTENT 71 003646 012603 MOV (SP)+,R3 72 003650 012602 MOV (SP)+,R2 ;RESTORE R2 73 003652 012601 MOV (SP)+,R1 ;RESTORE R1 74 003654 012604 MOV (SP)+,R4 ; RESTORE R4 75 003656 004567 001472 JSR R5,O.CU ;HAS CTRL/U BEEN STRUCK? 76 003662 103233 BCC O.DCDB ;YES...STOP SEARCH... ;MG01 77 003664 005722 3$: TST (R2)+ ;INCREMENT TO NEXT CELL AND 78 003666 000732 BR 1$ ; RETURN 79 80 003670 020005 4$: CMP R0,R5 ; IS (X)=K? 81 003672 001744 BEQ 2$ ;TYPE IF EQUAL 82 003674 010003 MOV R0,R3 ;(X) TO R3 83 003676 060203 ADD R2,R3 ;(X)+X 84 003700 005203 INC R3 85 003702 005203 INC R3 ;(X)+X+2 86 003704 020305 CMP R3,R5 ;IS (X)+X+2=K? 87 003706 001736 BEQ 2$ ;BRANCH IF EQUAL 88 003710 042700 177400 BIC #177400,R0 ;WIPE OUT EXTRANEOUS BITS 89 003714 110000 MOVB R0,R0 90 003716 000257 CCC 91 003720 006300 ASL R0 ;MULTIPLY BY TWO 92 003722 005200 INC R0 93 003724 005200 INC R0 94 003726 060200 ADD R2,R0 ;ADD PC 95 003730 020005 CMP R0,R5 ;IS THE RESULT A PROPER REL. BRANCH? 96 003732 000724 BR 2$ 97 .SBTTL O.GO PROCESS G - GO 98 99 003734 105767 002270 O.GO: TSTB O.SMFD ;WAS ";" TYPED? 100 003740 001666 BEQ O.ERR1 ;BR IF NOT TYPED 101 003742 005703 TST R3 ;WAS K; TYPED? 102 003744 001664 BEQ O.ERR1 ; TYPE ? IF NOT 103 003746 112767 000021 002250 MOVB #O.BKP+3,O.P ;CLEAR PROCEED 104 003754 006205 ASR R5 ;CHECK LOW ORDER BIT 105 003756 103657 BCS O.ERR1 ;ERROR IF ODD NUMBER 106 003760 006305 ASL R5 ;RESTORE WORD 107 003762 010567 174316 MOV R5,O.UPC ;SET UP NEW PC 108 003766 112746 000340 MOVB #O.STM,-(SP) ;SET HIGH PRIORITY 109 003772 004767 001440 JSR PC,O.WST 110 003776 004567 000672 JSR R5,O.RSTT ;RESTORE TELETYPE 111 004002 105067 002215 O.TBIT: CLRB O.T ;CLEAR 112 004006 052767 000020 174272 BIS #O.TBT,O.UST ; BOTH T-BIT FLAGS 113 004014 105767 002202 TSTB O.S ;SEE IF WE NEED A T BIT 114 004020 001005 BNE O.GO2 ;IF NOT GO NOW ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 4-2 O.GO PROCESS G - GO 115 004022 042767 000020 174256 BIC #O.TBT,O.UST ;SET TH T BIT 116 004030 004567 000554 JSR R5,O.RSB ;RESTORE BREAKPOINTS 117 004034 004067 000516 O.GO2: JSR R0,O.RSR ;RESTORE REGISTERS 118 004040 016746 174242 MOV O.UST,-(SP) ; AND STATUS 119 004044 016746 174234 MOV O.UPC,-(SP) ; AND PC 120 004050 000240 NOP ; CHANGE TO HALT FOR DEBUGGING 121 004052 016746 174230 MOV O.UST,-(SP) ; MOV IN STATUS FIRST W/O T BIT 122 004056 042716 000020 BIC #O.TBT,(SP) ; SO INTERRUPTS CAN HAPPEN BEFORE 123 004062 004767 001350 JSR PC,O.WST ; RTT TURNS ON THE T BIT. 124 004066 000006 O.RTIT: RTT ; CHANGED TO RTI WHEN RUNNING 125 ; ON 11/05 OR 11/20 126 127 .SBTTL O.PROC PROCESS P - PROCEED 128 129 ; ONLY ALLOWED AFTER A BREAKPOINT 130 131 004070 105767 002134 O.PROC: TSTB O.SMFD ;WAS ";" TYPED? 132 004074 001610 BEQ O.ERR1 ;BR IF NOT TYPED 133 004076 116700 002122 MOVB O.P,R0 134 004102 105700 TSTB R0 ;CHECK LEGALITY OF PROCEED 135 004104 002604 BLT O.ERR1 ;NOT LEGAL 136 004106 005702 TST R2 ;CHECK FOR ILLEGAL COUNT 137 004110 001202 BNE O.ERR1 ;JUMP IF ILLEGAL 138 004112 005703 TST R3 ;WAS COUNT SPECIFIED? 139 004114 001402 BEQ 1$ ;NO 140 004116 010560 000366' MOV R5,O.CT(R0) ;YES, PUT AWAY COUNT 141 004122 112746 000340 1$: MOVB #O.STM,-(SP) ;FORCE HIGH PRIORITY 142 004126 004767 001304 JSR PC,O.WST 143 004132 004567 000536 JSR R5,O.RSTT ;RESTORE TTY 144 004136 126727 002062 000016 O.C1: CMPB O.P,#O.BKP ;SEE IF A REAL ONE OR A FAKE 145 004144 003316 BGT O.TBIT ;BRANCH IF FAKE 146 004146 105767 002050 TSTB O.S ;SEE IF SINGLE INSTRUCTION MODE 147 004152 001313 BNE O.TBIT ;IF SO EXIT NOW 148 004154 112746 000340 MOVB #O.STM,-(SP) ;SET HIGH PRIORITY 149 004160 004767 001252 JSR PC,O.WST 150 004164 105267 002033 INCB O.T ;SET T-BIT FLAG 151 004170 052767 000020 174110 BIS #O.TBT,O.UST ;SET T-BIT 152 004176 000716 BR O.GO2 153 .SBTTL BREAKPOINT HANDLER 154 155 004200 012667 174100 O.BRK: MOV (SP)+,O.UPC ;PRIORITY IS 7 UPON ENTRY 156 004204 012667 174076 MOV (SP)+,O.UST ;SAVE STATUS AND PC 157 004210 112767 000021 002006 MOVB #O.BKP+3,O.P ;TELL ;P THAT WE CAN CONTINUE 158 004216 004067 007214 O.BK1: JSR R0,V8STRT ;HOOK TO THE DISPLAY SETUP ;DRH 159 004222 105767 001775 TSTB O.T ;CHECK FOR T-BIT SET 160 004226 001265 BNE O.TBIT ;JUMP IF SET 161 004230 004567 000506 JSR R5,O.REM ;REMOVE BREAKPOINTS 162 004234 105767 174050 TSTB O.PRI ;CHECK IF PRIORITY 163 004240 100003 BPL 1$ ; IS AS SAME AS USER PGM 164 004242 116705 174040 MOVB O.UST,R5 ;PICK UP USER UST IF SO 165 004246 000407 BR 2$ 166 167 004250 116705 174034 1$: MOVB O.PRI,R5 ;OTHERWISE PICK UP ACTUAL PRIORITY 168 004254 000257 CCC ;CLEAR CARRY 169 004256 106005 RORB R5 ;SHIFT LOW ORDER BITS 170 004260 106005 RORB R5 ; INTO 171 004262 106005 RORB R5 ; HIGH ORDER ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 4-3 BREAKPOINT HANDLER 172 004264 106005 RORB R5 ; POSITION 173 004266 042705 000020 2$: BIC #O.TBT,R5 ;CLEAR POSSIBLE T BIT (S/I MODE) 174 004272 110546 MOVB R5,-(SP) ;PUT THE STATUS AWAY WHERE IT BELONGS 175 004274 004767 001136 JSR PC,O.WST 176 004300 016705 174000 MOV O.UPC,R5 ;GET PC, IT POINTS TO THE TRT 177 004304 105767 001712 TSTB O.S ;SEE IF IT WAS SINGLE INSTRUCTION FUN 178 004310 100432 BMI 4$ ;IF SO HANDLE THERE 179 004312 005745 TST -(R5) 180 004314 010567 173764 MOV R5,O.UPC 181 004320 012704 000016 MOV #O.BKP,R4 ;GET A COUNTER 182 004324 020564 000344' 3$: CMP R5,O.ADR1(R4) ;COMPARE WITH LIST 183 004330 001427 BEQ 5$ ;JUMP IF FOUND 184 004332 005304 DEC R4 185 004334 005304 DEC R4 186 004336 002372 BGE 3$ ;RE-LOOP UNTIL FOUND 187 004340 004567 000274 JSR R5,O.SVTT ;SAVE TELETYPE STATUS 188 004344 004567 001270 JSR R5,O.CRLF 189 004350 012704 006256' MOV #O.BD,R4 ;ERROR, NOTHING FOUND 190 004354 012703 006257' MOV #O.BD+1,R3 191 004360 004567 000724 JSR R5,O.TYPE ;OUTPUT "BE" FOR BAD ENTRY 192 004364 010500 MOV R5,R0 193 004366 062767 000002 173710 ADD #2,O.UPC ;POP OVER THE ADJUSTMENT ABOVE 194 004374 000445 BR 6$ ; OR CONTINUE 195 196 004376 112704 000020 4$: MOVB #O.BKP+2,R4 ;SET BREAK POINT HIGH + 1 197 004402 010564 000344' MOV R5,O.ADR1(R4) ;STORE NEXT PC VALUE FOR TYPE OUT 198 004406 000400 BR 5$ 199 200 004410 110467 001610 5$: MOVB R4,O.P ;ALLOW PROCEED 201 004414 005364 000366' DEC O.CT(R4) 202 004420 003246 BGT O.C1 ;JUMP IF REPEAT 203 004422 012764 000001 000366' MOV #1,O.CT(R4) ;RESET COUNT TO 1 204 004430 004567 007252 JSR R5,V08SRV ;SCAN THE COMMAND FLAGS ;DRH 205 004434 012700 000102 MOV #'B,R0 206 004440 004567 000456 JSR R5,O.PUTC ;TYPE "B" 207 004444 116700 001554 MOVB O.P,R0 ;CONVERT BREAKPOINT NUMBER TO ASCII 208 004450 062700 000140 ADD #140,R0 209 004454 006200 ASR R0 210 004456 004567 000440 JSR R5,O.PUTC 211 004462 012700 000073 MOV #';,R0 212 004466 004567 000430 JSR R5,O.PUTC ; TYPE 213 004472 012767 000002 001506 MOV #2,O.BW ; SET WORD MODE 214 004500 116704 001520 MOVB O.P,R4 215 004504 016400 000344' MOV O.ADR1(R4),R0 ;GET ADDRESS OF BREAK 216 004510 004567 001150 6$: JSR R5,O.RORA ; CHECK FORMAT 217 004514 000167 175706 JMP O.DCD ;GO TO DECODER 218 219 .SBTTL SAVE AND RESTORE REGISTERS 220 221 ;+ 222 ; 223 ; SAVE REGISTERS R0-R6 224 ; INTERNAL STACK 225 ; 226 ;- 227 228 004520 012667 001470 O.SVR: MOV (SP)+,O.XXX ;PICK REGISTER FROM STACK AND SAVE ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 4-4 SAVE AND RESTORE REGISTERS 229 004524 010667 173552 MOV SP,O.USP ;SAVE USER STACK ADDRESS 230 004530 012706 000302' MOV #O.USP,SP ;SET TO INTERNAL STACK 231 004534 010546 MOV R5,-(SP) ;SAVE 232 004536 010446 MOV R4,-(SP) ; REGISTERS 233 004540 010346 MOV R3,-(SP) ;1 234 004542 010246 MOV R2,-(SP) ; THRU 235 004544 010146 MOV R1,-(SP) ; 5 236 004546 016746 001442 MOV O.XXX,-(SP) ;PUT SAVED REGISTER ON STACK 237 004552 005746 TST -(SP) 238 004554 000200 RTS R0 239 240 ; RESTORE REGISTERS R0-R6 241 242 004556 005726 O.RSR: TST (SP)+ ;POP THE EXTRA CELL 243 004560 012667 001430 MOV (SP)+,O.XXX ;GET R0 FROM STACK 244 004564 012601 MOV (SP)+,R1 ;RESTORE 245 004566 012602 MOV (SP)+,R2 ; REGISTERS 246 004570 012603 MOV (SP)+,R3 ; 1 247 004572 012604 MOV (SP)+,R4 ; THRU 248 004574 012605 MOV (SP)+,R5 ; 5 249 004576 016706 173500 MOV O.USP,SP ;RESTORE USER STACK 250 004602 016746 001406 MOV O.XXX,-(SP) ;PUT R0 ON USER STACK 251 004606 000200 RTS R0 252 .SBTTL RESTORE BREAKPOINTS 0-7 253 254 004610 012704 000016 O.RSB: MOV #O.BKP,R4 ;RESTORE ALL BREAKPOINTS 255 004614 017464 000344' 000410' 1$: MOV @O.ADR1(R4),O.UIN(R4) ;SAVE CONTENTS 256 004622 016774 001526 000344' MOV O.TRTC,@O.ADR1(R4) ;REPLACE WITH TRAP 257 004630 005304 DEC R4 258 004632 005304 DEC R4 259 004634 002367 BGE 1$ ;RE-LOOP UNTIL DONE 260 004636 000205 RTS R5 ; THEN QUIT 261 262 .SBTTL SAVE TELETYPE STATUS 263 264 004640 O.SVTT: 265 266 .IF EQ $VIRT ;MS01+ 267 004640 113767 177560 001357 MOVB @#O.RCSR,O.CSR1 ;SAVE R C/SR 268 004646 113767 177564 001352 MOVB @#O.TCSR,O.CSR2 ;SAVE T C/SR 269 004654 105037 177560 CLRB @#O.RCSR ;CLEAR ENABLE AND MAINTENANCE 270 004660 105037 177564 CLRB @#O.TCSR ; BITS IN BOTH C/SR 271 004664 105737 177564 1$: TSTB @#O.TCSR ;LOOP UNTIL READY BIT COMES ON 272 004670 100375 BPL 1$ ;BR IF BIT NOT ON 273 .IFF ;MG02+ 274 MOV @#JSW,O.JSWS ;SAVE JSW ON ENTRY 275 BIS #10000,@#JSW ;AND SET TT SPECIAL MODE 276 .RCTRL ;MAKE IT TAKE EFFECT ;MG02- 277 .ENDC ;EQ $VIRT ;MS01- 278 279 004672 000205 RTS R5 280 281 .SBTTL RESTORE TELETYPE STATUS 282 283 004674 004567 000740 O.RSTT: JSR R5,O.CRLF 284 285 .IF EQ $VIRT ;MS01+ ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 4-5 RESTORE TELETYPE STATUS 286 004700 105737 177564 TSTB @#O.TCSR ;WAIT READY 287 004704 100375 BPL .-4 ; ON PRINTER 288 004706 032737 004000 177560 BIT #4000,@#O.RCSR ;CHECK BUSY FLAG 289 004714 001403 BEQ 1$ ;SKIP READY LOOP IF NOT BUSY 290 004716 105737 177560 TSTB @#O.RCSR ;WAIT READY 291 004722 100375 BPL .-4 ; ON READER 292 004724 116737 001275 177560 1$: MOVB O.CSR1,@#O.RCSR ;RESTORE 293 004732 116737 001270 177564 MOVB O.CSR2,@#O.TCSR ; THE STATUS REGISTERS 294 .IFF ;MG02+ 295 MOV O.JSWS,@#JSW ;RESTORE JSW ON EXIT 296 .RCTRL ;MAKE IT TAKE EFFECT ;MG02- 297 .ENDC ;EQ $VIRT ;MS01- 298 299 004740 000205 RTS R5 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 5 REMOVE BREAKPOINTS 0-7 1 .SBTTL REMOVE BREAKPOINTS 0-7 2 3 ; IN THE OPPOSITE ORDER OF SETTING 4 5 004742 105767 001254 O.REM: TSTB O.S ;SEE IF SINGLE INSTRUCTION IS GOING 6 004746 001011 BNE 2$ ;EXIT IF SO 7 004750 005004 CLR R4 ;REMOVE ALL BREAKPOINTS 8 004752 016474 000410' 000344' 1$: MOV O.UIN(R4),@O.ADR1(R4) ;CLEAR BREAKPOINT 9 004760 005204 INC R4 10 004762 005204 INC R4 11 004764 020427 000016 CMP R4,#O.BKP 12 004770 101770 BLOS 1$ ;RE-LOOP UNTIL DONE 13 004772 000205 2$: RTS R5 ;THEN QUIT 14 15 .SBTTL TYPE OUT CONTENTS OF WORD OR BYTE WITH ONE TRAILING SPACE 16 17 ; WORD IS IN R0 18 19 004774 012703 000006 O.CADV: MOV #6,R3 ;# OF DIGITS 20 005000 012704 177776 MOV #-2,R4 ;# OF BITS FIRST-3 21 005004 026727 001176 000001 CMP O.BW,#1 ;SEE IF WORD MODE 22 005012 001004 BNE 1$ ;BRANCH IF SO 23 005014 162703 000003 SUB #3,R3 ;ONLY DO 3 DIGITS 24 005020 005204 INC R4 ;DO 2 BITS FIRST 25 005022 000300 SWAB R0 ;AND TURN R0 AROUND 26 005024 010046 1$: MOV R0,-(SP) ;SAVE R0 27 005026 062704 000003 2$: ADD #3,R4 ;COMPUTE THE NUMBER OF BITS TO DO 28 005032 005000 CLR R0 29 005034 006116 3$: ROL (SP) ;GET A BIT 30 005036 006100 ROL R0 ;STORE IT AWAY 31 005040 005304 DEC R4 ;DECREMENT COUNTER 32 005042 003374 BGT 3$ ;LOOP IF MORE BITS NEEDED 33 005044 062700 000060 ADD #'0,R0 ;CONVERT TO ASCII 34 005050 004567 000046 JSR R5,O.PUTC ;TYPE IT 35 005054 005303 DEC R3 ;SEE IF MORE DIGITS TO DO 36 005056 003363 BGT 2$ ;LOOP IF SO 37 005060 112700 000040 MOVB #40,R0 ;SET UP FOR TRAILING SPACE 38 005064 005726 TST (SP)+ ;GET RID OF JUNK 39 005066 000415 BR O.PUTC 40 .SBTTL CLEAR RELOCATION REGISTERS 41 42 ;+ 43 ; 44 ; O.CLRR CLEAR RELOCATION REGS 45 ; I.E., SET THEM TO A HIGH MEM LOC. (-1) 46 ; R1,R0 CLOBBERED 47 ; 48 ;- 49 50 005070 012701 000324' O.CLRR: MOV #O.RELT,R1 51 005074 012700 177777 MOV #-1,R0 52 005100 010021 MOV R0,(R1)+ 53 005102 010021 MOV R0,(R1)+ 54 005104 010021 MOV R0,(R1)+ 55 005106 010021 MOV R0,(R1)+ 56 005110 010021 MOV R0,(R1)+ 57 005112 010021 MOV R0,(R1)+ ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 5-1 CLEAR RELOCATION REGISTERS 58 005114 010021 MOV R0,(R1)+ 59 005116 010011 MOV R0,(R1) 60 005120 000205 RTS R5 61 62 .SBTTL SINGLE CHARACTER TYPE-OUT 63 64 ; TYPE ONLY ONE CHARACTER (CONTAINED IN R0) 65 66 005122 O.PUTC: 67 68 .IF EQ $VIRT ;MS01+ 69 005122 105737 177564 TSTB @#O.TCSR 70 005126 100375 BPL .-4 71 .ENDC ;EQ $VIRT ;MS01- 72 73 005130 010046 MOV R0,-(SP) ;SAVE CHARACTER FOR AWHILE ;MG01 74 005132 042700 177400 BIC #177400,R0 ;CLEAR HIGH BYTE,SHOULD NOT 75 ; CONTAIN INPORTANT INFO. 76 005136 001416 BEQ 3$ ;NULLS ARE EASY TO DO... 77 005140 120027 000010 CMPB R0,#10 ;PRINT A '?' FOR ASCII CODES 78 005144 101411 BLOS 2$ ; 1-10 79 005146 120027 000016 CMPB R0,#16 ; 16-37 80 005152 103410 BLO 3$ ; 177 81 005154 120027 000037 CMPB R0,#37 ; 200-377 82 005160 101403 BLOS 2$ ;ALL OTHERS...LEAVE ALONE 83 005162 120027 000177 CMPB R0,#177 84 005166 103402 BLO 3$ 85 005170 012700 000077 2$: MOV #'?,R0 86 005174 3$: 87 88 .IF EQ $VIRT ;MS01+ 89 005174 110037 177566 MOVB R0,@#O.TDB 90 .IFF 91 .TTYOUT ;NEED TTYOUT FOR VIRTUAL JOBS 92 .ENDC ;EQ $VIRT ;MS01- 93 94 005200 012600 MOV (SP)+,R0 ;RESTORE CHARACTER ;MG01 95 005202 000205 O.TYP1: RTS R5 96 .SBTTL GENERAL CHARACTER INPUT ROUTINE 97 98 ; CHARACTER INPUT GOES TO R0 99 005204 O.GETC: 100 005204 1$: 101 102 .IF EQ $VIRT ;MS01+ 103 005204 105737 177560 TSTB @#O.RCSR ;WAIT FOR 104 005210 100375 BPL 1$ ; INPUT FROM KBD 105 005212 113700 177562 MOVB @#O.RDB,R0 ;GET CHARACTER - STRIP OFF PARITY 106 .IFF 107 .TTYIN ;INPUT A CHARACTER 108 .ENDC ;EQ $VIRT ;MS01- 109 110 005216 042700 177600 BIC #177600,R0 ;STRIP OFF PARITY FROM CHARACTER 111 005222 120027 000003 CMPB R0,#3 ;IS IT ^C? 112 005226 001427 BEQ 4$ ;IF SO, DO NOT ECHO 113 005230 105767 001000 TSTB O.SCRN ;SHOULD WE ECHO ? 114 005234 001003 BNE 2$ ;BR IF YES ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 5-2 GENERAL CHARACTER INPUT ROUTINE 115 005236 120027 000012 CMPB R0,#12 ;SEE IF A 116 005242 001421 BEQ 4$ ;IF SO SAVE THE PAPER 117 005244 120027 000141 2$: CMPB R0,#'A+40 ;IS CHARACTER LOWER CASE? ;MG01+ 118 005250 103405 BLO 3$ ;NOPE... 119 005252 120027 000172 CMPB R0,#'Z+40 ;MAYBE...CHECK UPPER LIMIT 120 005256 101002 BHI 3$ ;NOPE... 121 005260 042700 000040 BIC #40,R0 ;YES...CONVERT IT TO UPPER CASE ;MG01- 122 005264 004567 177632 3$: JSR R5,O.PUTC ;ECHO CHARACTER 123 005270 001745 BEQ 1$ ;IGNORE NULLS 124 005272 105767 000736 TSTB O.SCRN ;SHOULD WE PASS ON SPACES? 125 005276 001003 BNE 4$ ;BR IF YES 126 005300 120027 000040 CMPB R0,#40 ;CHECK FOR SPACES 127 005304 001737 BEQ 1$ ;IGNORE SPACES 128 005306 000205 4$: RTS R5 129 130 .SBTTL O.TYPE GENERAL CHARACTER OUTPUT ROUTINE 131 132 ;+ 133 ; 134 ; ADDRESS OF FIRST BYTE IN R4, 135 ; ADDRESS OF LAST BYTE IN R3, (R3)>(R4) 136 ; EXPECTS LOCS 56,57 TO BE INITIALIZED BY MONITOR FOR FILL 137 ; CHARACTERISTICS OF TERMINAL 138 ; 56=CHAR TO BE FILLED AFTER 139 ; 57=# OF NULLS TO FILL WITH 140 ; 141 ;- 142 143 005310 020304 O.TYPE: CMP R3,R4 ;CHECK FOR COMPLETION 144 005312 103733 BLO O.TYP1 ; EXIT WHEN DONE 145 005314 112400 MOVB (R4)+,R0 ;GET A CHARACTER 146 005316 004567 177600 JSR R5,O.PUTC ;TYPE ONE CHARACTER 147 005322 120037 000056 CMPB R0,@#56 ;COMPARE CHAR AGAINST FILL REQUIREMENT 148 005326 001370 BNE O.TYPE ;NO FILL NEEDED 149 005330 113727 000057 MOVB @#57,(PC)+ ;FILL COUNT INTO TEMP 150 005334 000000 O.FTMP: .WORD 0 151 005336 005000 CLR R0 ;FILL WITH NULLS 152 005340 004567 177556 1$: JSR R5,O.PUTC ;TYPE NULLS 153 005344 005367 177764 DEC O.FTMP ;DECREASE COUNT 154 005350 003373 BGT 1$ ;BRANCH IF NOT DONE 155 005352 000756 BR O.TYPE ;LOOP UNTIL DONE 156 .SBTTL ^U TEST 157 158 ;+ 159 ; 160 ; CHECKS FOR ^U. IF PRESENT, ECHOS IT 161 ; GOES TO COMMAND DECODER. STACK GETS INITIALIZED 162 ; 163 ;- 164 165 .ENABL LSB ;MG01+ 166 167 005354 O.CU: 168 169 .IF NE $VIRT 170 BIS #100,@#JSW ;SET INHIBIT I/O WAIT 171 .TTINR ;TRY TO GET ONE ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 5-3 ^U TEST 172 BIC #100,@#JSW ;CLEAR INHIBIT I/O WAIT 173 BCS 1$ ;NO CHARACTER AVAILABLE... 174 .IFF 175 005354 105737 177560 TSTB @#O.RCSR ;CHARACTER AVAILABLE? 176 005360 100020 BPL 1$ ;NOPE... 177 005362 113700 177562 MOVB @#O.RDB,R0 ;YES...GET IT... 178 .ENDC ;EQ $VIRT 179 180 005366 042700 177600 O.CU1: BIC #177600,R0 ;STRIP PARITY 181 005372 120027 000025 CMPB R0,#'U-'@ ;IS CHARACTER A '^U'? 182 005376 001011 BNE 1$ ;NOPE... 183 005400 012700 000136 MOV #'^,R0 ;YES...PUT "^" IN R0 184 005404 004567 177512 JSR R5,O.PUTC 185 005410 012700 000125 MOV #'U,R0 ;PUT U IN R0 186 005414 004567 177502 JSR R5,O.PUTC 187 005420 005727 TST (PC)+ 188 005422 000261 1$: SEC 189 005424 000205 RTS R5 190 191 .DSABL LSB ;MG01- 192 193 .SBTTL SUBROUTINE TO READ THE PS INDEPENDENT OF MACHINE 194 195 005426 O.RRST: 196 197 .IF EQ $VIRT ;MS01+ 198 005426 116767 177776 172652 MOVB ST,O.UST ;STORE THE STATUS IN USER 199 ; STATUS AREA.FOR AN LSI 200 ; THIS IS CHANGED TO 201 ; MFPS O.UST 202 .ENDC ;EQ $VIRT ;MS01+ 203 204 005434 000207 RTS PC ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 6 SUBROUTINE TO WRITE PS INDEPENDENT OF MACHINE 1 .SBTTL SUBROUTINE TO WRITE PS INDEPENDENT OF MACHINE 2 3 ; CALL ROUTINE WITH PS VALUE ON THE STACK 4 5 005436 O.WST: 6 7 .IF EQ $VIRT ;MS01+ 8 005436 116667 000002 177776 MOVB 2(SP),ST ;STORE NEW PS VALUE 9 ; THIS INSTRUCTION IS CHANGED FOR LSI 10 ; TO MTPS 2(SP) 11 .ENDC ;EQ $VIRT ;MS01- 12 13 005444 012616 MOV (SP)+,(SP) ;PUT RETURN PC OVER SUB. ARGUMENT 14 005446 000207 RTS PC ;TO RETURN WITHOUT IT ON THE STACK 15 16 .SBTTL SUBROUTINE TO LOCATE RELOCATION REGISTER 17 18 ;+ 19 ; 20 ; NEAREST BUT STILL 21 ; BELOW THE ADDRESS IN R0. RETURNS WITH THE REGISTER 22 ; NUMBER IN R0, AND WITH THE DISTANCE BETWEEN THE REGISTER 23 ; AND (R0) IN O.XXY 24 ; IF NO GOOD RELOC. REG. FOUND, R0 WILL = -1 25 ; 26 ;- 27 28 005450 010067 000102 O.LOC: MOV R0,5$ ;PUT R0 IN WORKINK LOCATION. 29 005454 005000 CLR R0 30 005456 012767 177777 000530 MOV #-1,O.XXX ;INITIALIZE RELOC. REG. INDEX 31 005464 012767 177777 000524 MOV #177777,O.XXY ;INITIALIZE DISTANCE TO A HIGH VALUE 32 005472 020027 000016 1$: CMP R0,#O.RLR ;ARE WE DONE COMPARING? 33 005476 101015 BHI 3$ ;BRANCH IF DONE 34 005500 026067 000324' 000050 CMP O.RELT(R0),5$ ;IS CURR. RELOC. BIAS > (O.CAD)? 35 005506 101007 BHI 2$ ;YES -- DON'T SUBTRACT, GET NEXT 36 005510 016701 000042 MOV 5$,R1 ;OTHERWISE TAKE THE DIFFERENCE 37 005514 166001 000324' SUB O.RELT(R0),R1 ; OF CURR. RELOC. REG. AND O.CAD 38 005520 026701 000472 CMP O.XXY,R1 ;IS THE RESULT THE SMALLEST SO FAR? 39 005524 101005 BHI 4$ ;BRANCH IF YES (UNSIGNED CONDITIONAL) 40 005526 005720 2$: TST (R0)+ ;OTHERWISE, BUMP R0 FOR NEXT 41 ; RELOCATION REGISTER 42 005530 000760 BR 1$ ;LOOP BACK FOR NEXT COMPARISON 43 44 005532 016700 000456 3$: MOV O.XXX,R0 ;PUT REG.# IN R0 45 005536 000205 RTS R5 ;JOB OVER, RETURN 46 47 005540 010167 000452 4$: MOV R1,O.XXY ;REMEMBER SMALLEST DIFFERENCE IN O.XXY 48 005544 006200 ASR R0 ;AND ASSOCIATED REGISTER NUMBER 49 005546 010067 000442 MOV R0,O.XXX ; IN O.XXX 50 005552 006300 ASL R0 ;RESTORE R0 TO ORIGINAL VALUE 51 005554 000764 BR 2$ ;GO FO NEXT COMPARISON. 52 53 005556 000000 5$: .WORD ;TEMP LOCATION. 54 .SBTTL INIT MEMORY 55 56 ;+ 57 ; ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 6-1 INIT MEMORY 58 ; SET A SEGMENT OF MEMORY TO A GIVEN VALUE. (ENTERED VIA R5) 59 ; FIRST WORD OR BYTE ADDRESS IS IN R4, =TO R3 AT EXIT 60 ; LAST WORD OR BYTE ADDRESS IS IN R3 61 ; BYTE OR WORD VALUE IS IN R0 62 ; BYTE OR WORD MODE IS SPECIFIED BY O.BW 63 ; 64 ;- 65 66 005560 O.ST: 67 005560 026727 000422 000001 1$: CMP O.BW,#1 ;IF NOT BYTE MODE, ASSUME WORD 68 005566 001404 BEQ 3$ ;BRANCH IF BYTE MODE 69 005570 010024 MOV R0,(R4)+ ;DEPOSIT WORD VALUE, BUMP R4 BY 2 70 005572 020403 2$: CMP R4,R3 ;ARE WE DONE? 71 005574 101771 BLOS 1$ ;BRANCH IF NOT DONE 72 005576 000205 RTS R5 ;OTHERWISE EXIT 73 74 005600 110014 3$: MOVB R0,(R4) ;DEPOSIT BYTE VALUE 75 005602 005204 INC R4 ;BUMP R4 BY 1 76 005604 000772 BR 2$ ;GO TO TEST IF DONE 77 78 .SBTTL CLOSE WORD OR BYTE 79 80 ;+ 81 ; 82 ; CLOSE WORD OR BYTE AND EXIT, 83 ; UPON ENTERING, R2 HAS NUMERIC FLAG, R4 HAS CONTENTS 84 ; 85 ;- 86 87 005606 005702 O.CLSE: TST R2 ;IF NO NUMBER WAS TYPED THERE IS 88 005610 001412 BEQ 2$ ;NO CHANGE TO THE OPEN CELL 89 005612 026727 000370 000001 CMP O.BW,#1 90 005620 001404 BEQ 1$ ;JUMP IF BYTE MODE 91 005622 103405 BLO 2$ ;JUMP IF ALREADY CLOSED 92 005624 010477 000360 MOV R4,@O.CAD ;STORE WORD 93 005630 000402 BR 2$ 94 95 005632 110477 000352 1$: MOVB R4,@O.CAD ;STORE BYTE 96 005636 000207 2$: RTS PC 97 98 005640 012703 006271' O.CRLF: MOV #O.CR+1,R3 ;LWA 99 005644 000402 BR O.CRS 100 101 005646 012703 006272' O.CRLS: MOV #O.CR+2,R3 ;LWA * 102 005652 012704 006270' O.CRS: MOV #O.CR,R4 ;FWA 103 005656 004567 177426 JSR R5,O.TYPE ;TYPE SOMETHING 104 005662 000205 RTS R5 105 .SBTTL DECODE RELATIVE OR ABS ADDRESS 106 107 ;+ 108 ; 109 ; SUBROUTINE O.RORA 110 ; FUNCTION: DECIDE IF AN ADDRESS IS 111 ; TO BE PRINTED IN ABSOLUTE OR IN RELATIVE 112 ; FORM. IF THE FLAG O.FORM=0 THEN PRINT 113 ; IN RELATIVE FORM, OTHERWISE PRINT IN ABSOLUTE FORM. 114 ; IF THE ADDRESS IS TO BE PRINTED IN RELATIVE FORM, ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 6-2 DECODE RELATIVE OR ABS ADDRESS 115 ; THEN THE ADDRESS WILL BE PRINTED OUT 116 ; RELATIVE TO A RELOCATION REGISTER NEAREST 117 ; BUT STILL BELOW THE ADDRESS. IF NO SUCH 118 ; RELOCATION REGISTER EXIST THEN THE 119 ; ADDRESS WILL BE PRINTED IN ABSOLUTE FORM 120 ; INPUT: THE ADDRESS TO BE PRINTED IS IN R0. 121 ; DATA SAVED: R0 CONTAINING THE ADDRESS TO BE 122 ; PRINTED, AND LOCATION O.CAD CONTAINING 123 ; THE CURRENT ADDRESS WERE SAVED AND RESTORED. 124 ; CALLED: JSR 5,O.RORA 125 ; 126 ;- 127 128 005664 005767 172432 O.RORA: TST O.FORM ;CHECK FORMAT 129 005670 001403 BEQ 2$ ; GO TO 2$ IF RELATIVE 130 005672 004567 177076 1$: JSR R5,O.CADV ;PRINT ABSOLUTE ADDRESS 131 005676 000205 RTS R5 132 133 005700 010067 000362 2$: MOV R0,O.TMP2 ;SAVE R0 134 005704 004567 177540 JSR R5,O.LOC ; FIND BEST N 135 005710 005700 TST R0 ;IF = -1, PRINT IN ABS. 136 005712 002426 BLT 3$ 137 005714 062700 000060 ADD #60,R0 ; CONVERT N TO ANSCII 138 005720 004567 177176 JSR R5,O.PUTC ; TYPE N 139 005724 012700 000054 MOV #',,R0 ; PREPARE INPUT FOR O.PUTC 140 005730 004567 177166 JSR R5,O.PUTC ; TYPE COMMA 141 005734 016746 000246 MOV O.BW,-(SP) ; SAVE O.BW 142 005740 012767 000002 000240 MOV #2,O.BW ;ARTIFICIALLY SET MODE FOR WORDS 143 005746 016700 000244 MOV O.XXY,R0 ;PREPARE INPUT FOR O.CADV 144 005752 004567 177016 JSR R5,O.CADV ;TYPE RELATIVE AMOUNT 145 005756 012667 000224 MOV (SP)+,O.BW ;RESTORE MODE 146 005762 016700 000300 MOV O.TMP2,R0 ; RESTORE R0 147 005766 000205 RTS R5 148 149 005770 016700 000272 3$: MOV O.TMP2,R0 ;RESTORE R0,CAD BEFORE 150 005774 000736 BR 1$ 151 .SBTTL MOD40 PACK AND UNPACK 152 153 ;+ 154 ; 155 ; MOD40 PACK - ENTERED WITH JSR PC, PACK00 156 ; INPUT: R0=ADR OF MOD40 WORD (1 WORD) 157 ; R1=ADR OF ASCII CHARACTERS (3 CHARS) 158 ; OUTPUT: R1 POINTS ONE PAST END OF ASCII STRINT 159 ; THE MOD40 WORD IS FORMED AS 160 ; N=C1*40^2+C2*40+C3 161 ; R2,R3,R4 ARE CLOBBERED 162 ; 163 ;- 164 165 005776 012704 177775 PACK00: MOV #-3,R4 ;LOOP CT. 166 006002 005002 CLR R2 ;0 SUM 167 006004 112103 1$: MOVB (R1)+,R3 ;GET NEXT ASCII CHAR. 168 006006 120327 000040 CMPB R3,#40 169 006012 001410 BEQ 2$ ;"BLANK" 170 006014 120327 000044 CMPB R3,#'$ 171 006020 001411 BEQ 4$ ;"$" ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 6-3 MOD40 PACK AND UNPACK 172 006022 120327 000101 CMPB R3,#'A 173 006026 103404 BLO 3$ ;"." OR "0-9" 174 006030 162703 000040 SUB #40,R3 ;"A-1" 175 006034 162703 000016 2$: SUB #16,R3 176 006040 162703 000011 3$: SUB #11,R3 177 006044 162703 000011 4$: SUB #11,R3 178 179 ; MULT R2 BY 40. 180 181 006050 006302 ASL R2 ;2*R2 182 006052 006302 ASL R2 ;4*R2 183 006054 006302 ASL R2 ;8*R2 184 006056 010246 MOV R2,-(SP) ;STACK 8*R2 185 006060 006302 ASL R2 ;16.*R2 186 006062 006302 ASL R2 ;32.*R2 187 006064 062602 ADD (SP)+,R2 ;40.*R2 188 189 ; INCLUDE CURRENT CHARACTER 190 191 006066 060302 ADD R3,R2 192 006070 005204 INC R4 ;DONE 3 CHARS? 193 006072 002744 BLT 1$ ;NO 194 006074 010220 MOV R2,(R0)+ ;YES-STORE MOD40 WORD 195 006076 000207 RTS PC ;EXIT ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 7 MOD40 UNPACK 1 .SBTTL MOD40 UNPACK 2 3 ;+ 4 ; 5 ; MOD40 UNPACK - ENTERED VIA JSR PC,UNPA00 6 ; INPUT: R0=ADR OF MOD40 NUMBER (1 WORD) 7 ; R1=ADR OF ASCII STRING (3 BYTES) 8 ; OUTPUT: R1 POINTS ONE PAST LAST GENERATED CHARACTER 9 ; 10 ; IF N IS THE MOD40 NUMBER, THEN 11 ; N=C1*50 ^ 2+C2*50+C3 12 ; THUS, N/50^2 IS C1 AND THE REMAINDER IS C2*50+C3 13 ; THE REMAINDER IS DIVIDED BY 50 TO GET C2 ETC. 14 ; 15 ;- 16 17 006100 012705 177775 UNPA00: MOV #-3,R5 ;MINOR LOOP COUNT 18 006104 011000 MOV (R0),R0 ;GET MOD40 WORD 19 006106 012702 006200' MOV #COEFF,R2 ;PTR TO COEFFICIENT TABLE 20 006112 005003 1$: CLR R3 ;0 QUOTIENT 21 22 ; DIVIDE BY COEFFICIENTS 23 24 006114 020012 2$: CMP R0,(R2) ;DONE WITH DIVIDE? 25 006116 103403 BLO 3$ ;YES 26 006120 161200 SUB (R2),R0 ;NO-SUBTRACT COEFF. 27 006122 005203 INC R3 ;ADD 1 TO QUOTIENT 28 006124 000773 BR 2$ 29 30 ; DIVIDE DONE. QUOT IN R3, REMAINDER IN R0 31 ; CONVERT TO AN ASCII CHARACTER 32 33 006126 105703 3$: TSTB R3 34 006130 001406 BEQ 4$ ;"BLANK" 35 006132 120327 000033 CMPB R3,#33 36 006136 001407 BEQ 6$ ;"$" 37 006140 003004 BGT 5$ ;"." OR "0-9" 38 006142 062703 000040 ADD #40,R3 ;"A-Z" 39 006146 062703 000016 4$: ADD #16,R3 40 006152 062703 000011 5$: ADD #11,R3 41 006156 062703 000011 6$: ADD #11,R3 42 006162 110321 MOVB R3,(R1)+ ;STORE CHARACTER 43 006164 005722 TST (R2)+ ;ADVANCE TO NEXT COEFF. 44 006166 005205 INC R5 ;DONE 3 CHARS? 45 006170 002750 BLT 1$ ;NO-DO MORE 46 006172 011600 MOV (SP),R0 ;RESTORE ORIGINAL R0 AND 47 006174 005720 TST (R0)+ ;MOVE TO NEXT WORD 48 006176 000207 RTS PC ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 8 IMPURE DATA, AND DATA 1 .SBTTL IMPURE DATA, AND DATA 2 3 ; COEFFICIENT TABLE 4 5 006200 003100 COEFF: +1600. ;40. ^ 2 6 006202 000050 +40. ;40. ^ 1 7 006204 000001 +1. ;40. ^ 0 8 006206 000 O.BW: .BYTE 0 ; =0 - ALL CLOSED 9 ; =1 - BYTE OPEN, 10 ; =2 - WORD OPEN 11 .EVEN 12 13 006210 000000 O.CAD: .WORD 0 ; CURRENT ADDRESS 14 006212 000000 O.DOT: .WORD 0 ; ORIGIN ADDRESS 15 006214 000000 O.XXX: .WORD 0 ;TEMPORARY STORAGE 16 006216 000000 O.XXY: .WORD 0 ;2ND WORD OF TEMPORARY STORAGE 17 006220 000 O.SEQ: .BYTE 0 ;CHANGE SEQUENCE INDICATOR 18 006221 000 O.WDFG: .BYTE 0 ;SEARCH FLAG = 1 - EFFECTIVE 19 ; = 0 - WORD 20 006222 000 O.S: .BYTE 0 ;SINGLE INSTRUCTION FLAG 21 ; 0 IF NOT ACTIVE 22 ; -1 IF ACTIVE 23 ; NO BREAK BOINTS MAY BE SET WHILE IN 24 ; SINGLE INSTRUCTION MODE 25 006223 000 O.T: .BYTE 0 ; T-BIT FLAG 26 006224 000 O.P: .BYTE 0 ;PROCEED FLAG = -2 IF MANUAL ENTRY 27 ; -1 IF NO PROCEED ALLOWED 28 ; 0-7 IF PCEED ALLOWED 29 30 .IF EQ $VIRT ;MS01+ 31 006225 000 O.CSR1: .BYTE 0 ;SAVE CELL - R C/SR 32 006226 000 O.CSR2: .BYTE 0 ;SAVE CELL - T C/SR 33 .ENDC ;EQ $VIRT ;MS01- 34 35 006227 000 O.CMFD: .BYTE 0 ;COMMA FOUND SWITCH, =0 NO COMMA FOUND 36 ; =1 COMMA FOUND 37 006230 000 O.SMFD: .BYTE 0 ;SEMICOLON FOUND SWITCH 38 ; =0 NO SEMICOLON FOUND 39 ; =1 SEMICOLON FOUND 40 006231 000 O.ALF1: .BYTE 0 41 006232 000 O.ALF2: .BYTE 0 42 006233 000 O.ALF3: .BYTE 0 43 006234 000 O.SCRN: .BYTE 0 ;FLAG; 1=PASS SPACES ON FROM TTY 44 ; ALSO, IF =1, IS ECHOED 45 006235 012 O.ID: .BYTE 012 46 006236 015 .BYTE 015 47 006237 040 .BYTE 40 48 49 .IF EQ $VIRT ;MS01+ 50 006240 117 104 124 .ASCII /ODT V01.09 / ;DRH 51 .IFF 52 .ASCIZ /VDT V04.00 / 53 .ENDC ;EQ $VIRT ;MS01- 54 55 006254' O.IDND = .-1 56 57 .EVEN ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 8-1 IMPURE DATA, AND DATA 58 59 006256 042502 O.BD: .WORD "BE 60 006260 000000 O.BIAS: .WORD 0 ;CURRENT RELOCATION BIAS 61 006262 000 O.MINS: .BYTE 0 ;MINUS SIGN TYPED (SWITCH) 62 ; 0=NO MINUS TYPED 63 ; 1=MINUS SIGN TYPED 64 .EVEN 65 66 006264 000000 O.TMP1: .WORD 0 67 006266 000000 O.TMP2: .WORD 0 ;SAVE CELL 68 006270 015 O.CR: .BYTE 015 ; 69 006271 012 .BYTE 012 ; 70 006272 052 .BYTE '* ; * 71 72 006273 073 O.LGCH: .BYTE '; ; 73 006274 057 .BYTE '/ ; / 74 006275 134 .BYTE '\ ; \ (BACK SLASH) 75 006276 015 .BYTE 015 ; CARRIAGE RETURN 76 006277 044 .BYTE '$ ; $ 77 006300 107 .BYTE 'G ; G 78 006301 012 .BYTE 012 ; 79 006302 137 .BYTE '_ ; _ (BACK ARROW) 80 006303 074 .BYTE '< ; < 81 006304 136 .BYTE '^ ; ^ (UP ARROW) 82 006305 054 .BYTE ', ; , 83 006306 117 .BYTE 'O ; O 84 006307 127 .BYTE 'W ; W 85 006310 105 .BYTE 'E ; E 86 006311 102 .BYTE 'B ; B 87 006312 120 .BYTE 'P ; P 88 006313 100 .BYTE '@ ; @ 89 006314 076 .BYTE '> ; > 90 006315 123 .BYTE 'S ; S 91 006316 122 .BYTE 'R ; R 92 006317 103 .BYTE 'C ; C 93 006320 055 .BYTE '- ; - 94 006321 106 .BYTE 'F ; F 95 006322 111 .BYTE 'I ; I 96 006323 041 .BYTE '! ; ! 97 006324 130 .BYTE 'X ; X 98 006325 101 .BYTE 'A ; A 99 006326 003 .BYTE 003 ;CTRL C 100 000034 O.CLGT = .-O.LGCH ;TABLE LENGTH 101 102 006327 123 O.TL: .BYTE 'S ;DO 1 103 006330 120 .BYTE 'P ;NOT 2 104 006331 115 .BYTE 'M ;CHANGE 3 105 006332 000 .BYTE 0 ;THE 4 106 006333 000 .BYTE 0 ;ORDER 5 107 108 .IF NE $VIRT ;MG02+ 109 .BYTE 'J 110 .ENDC ;NE $VIRT ;MG02- 111 112 006334 103 .BYTE 'C ; 6 113 006335 106 .BYTE 'F ; 7 114 006336 122 .BYTE 'R ; 10 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 8-2 IMPURE DATA, AND DATA 115 006337 000 .BYTE 0 ; 11 116 006340 000 .BYTE 0 ; 12 117 006341 000 .BYTE 0 ; 13 118 006342 000 .BYTE 0 ; 14 119 006343 000 .BYTE 0 ; 15 120 006344 000 .BYTE 0 ; 16 121 006345 000 .BYTE 0 ; 17 122 006346 102 .BYTE 'B ; 20 123 000020 O.LG = .-O.TL 124 .EVEN 125 126 006350 AREA: .BLKW 2 ;USED BY .GVAL ;MS01 127 006354 000003 O.TRTC: TRT ;TRACE TRAP PROTOTYPE 128 129 ; THE ORDER OF THE FOLLOWING ENTRIES IS CRITICAL 130 131 000266' . = O.ODT-144 ;ODT'S STACK IMMEDIATELY PRECEDES ODT 132 133 000266 000000 O.UR0: .WORD 0 ;USER R0 134 000270 000000 .WORD 0 ; R1 135 000272 000000 .WORD 0 ; R2 136 000274 000000 .WORD 0 ; R3 137 000276 000000 .WORD 0 ; R4 138 000300 000000 .WORD 0 ; R5 139 000302 000000 O.USP: .WORD 0 ;USER SP 140 000304 000000 O.UPC: .WORD 0 ;USER PC 141 000306 000000 O.UST: .WORD 0 ;USER ST 142 143 .IF EQ $VIRT ;MS01+ 144 000310 000007 O.PRI: .WORD 7 ;ODT PRIORITY 145 .IFF 146 O.PRI: .WORD 0 ;VDT PRIORITY 147 .ENDC ;EQ $VIRT ;MS01- 148 149 000312 000000 O.MSK: .WORD 0 ;MSK 150 000314 000000 000000 O.LOW: .LIMIT 151 000316' O.HI = .-2 152 153 ;O.LOW: .WORD 0 ;LOW LIMIT 154 ;O.HI: .WORD 0 ;HIGH LIMIT 155 156 .IF NE $VIRT ;MG02+ 157 O.JSWS: .WORD 0 158 .ENDC ;NE $VIRT ;MG02- 159 160 000320 000000 O.CNST: .WORD 0 ;CONSTANT REGISTER 161 000322 000000 O.FORM: .WORD 0 ; FORMAT REGISTER 162 ; =0 -> RELATIVE ADDRESS TYPEOUT 163 ; <>0 -> ABSOLUTE ADDRESS TYPEOUT 164 165 ; RELOCATION REGISTERS 166 167 000324 O.RELT: ;V01.09+ 168 000324 177777 RREG.0::.WORD -1 ; USER MAY LOAD THESE LOCATIONS 169 000326 177777 RREG.1::.WORD -1 ; WITH THE "ADDRESS" VALUE AT 170 000330 177777 RREG.2::.WORD -1 ; THE START OF EACH PSECT IN HIS 171 000332 177777 RREG.3::.WORD -1 ; INITIALIZATION PROCEDURE.. ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 8-3 IMPURE DATA, AND DATA 172 000334 177777 RREG.4::.WORD -1 ; NEGATING THE NEED TO DO IT 173 000336 177777 RREG.5::.WORD -1 ; MANUALLY EACH START-UP 174 000340 177777 RREG.6::.WORD -1 175 000342 177777 RREG.7::.WORD -1 ;INITIALLY SET TO A HIGH ADDR. 176 177 ; BREAK POINT LISTS, ADR1 = ADDRESS OF BREAKPOINT,CT = COUNT, 178 ; UIN = CONTENTS 179 180 000344 O.ADR1: 181 000344 000000 BKPT.0::.WORD 0 ; PRELOAD THE "BREAKPOINT" ADDRESS 182 000346 000000 BKPT.1::.WORD 0 ; FOR "0" & "7" 183 000350 000000 BKPT.2::.WORD 0 184 000352 000000 BKPT.3::.WORD 0 185 000354 000000 BKPT.4::.WORD 0 186 000356 000000 BKPT.5::.WORD 0 187 000360 000000 BKPT.6::.WORD 0 188 000362 000000 000000 BKPT.7::.WORD 0,0 189 000366 O.CT: 190 000410' . = .+O.BKP+4 191 000410 O.UIN: 192 000410 000000 INST.0::.WORD 0 ; INSTRUCTION MUST GO HERE IF BRKPT 193 000412 000000 INST.1::.WORD 0 ; IS PRELOADED BY "INITIALIZATION" 194 000414 000000 INST.2::.WORD 0 195 000416 000000 INST.3::.WORD 0 196 000420 000000 INST.4::.WORD 0 197 000422 000000 INST.5::.WORD 0 198 000424 000000 INST.6::.WORD 0 199 000426 000000 000000 INST.7::.WORD 0,0 ;V01.09- DRH 200 006356' . = O.TRTC+2 201 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 9 IMPURE DATA, AND DATA 1 ;.LIST 2 ;MODIFIED ON 13-MAY-82 REORDERED ACUM.L TO ENABLE 3 ;"SEARCH" PROPERLY IF LINK MAP IS ALPHABETIC OR NOT 4 5 .SBTTL V0108 DEFINITIONS AND UNIQUE MACROS 6 7 ;DECIFER FOREGOING CODE SUFFICIENTLY TO OBTAIN THE 8 ;ENTRY "HOOKS" ONLY. INITIALIZE VECTORS, SETUP 9 ;INPUT FILE, AND DISPLAY THE MENU AT THE FIRST 10 ;BREAKPOINT. THEREAFTER, WAIT FOR "BRK/COMMAND"!! 11 12 .MCALL .ENTER,.CSISPC,.READW,.WRITW 13 .MCALL .CLOSE,.EXIT,.LOOKUP 14 .ENABL LC 15 16 ;DEFINITIONS FOR MESSAGE USE 17 18 000007 BEL =7 19 000010 BS =10 20 000012 LF =12 21 000015 CR =15 22 000033 ESC =33 23 000040 SPC =40 24 000077 QUES =77 25 000177 DEL =177 26 000110 HME =110 27 000112 ENSCR =112 28 001000 B9 =1000 ;FUNCTION 29 010000 B12 =10000 ;CTRL BITS 30 31 ;TERMINAL NOTES: 32 ;VT-100'S ARE UTILIZED IN VT-52 MODE TO REDUCE CONTRL SEQ'S 33 ;THIS PROGRAM WAS WRITTEN USING THE "CONSOLE" AS I/O. 34 ;THIS MAY BE CHANGED TO AN AUX. TERMINAL BY REDEFINING 35 ;THE APPROPRIATE STATEMENTS IN A PREFIX FILE. TERMINALS 36 ;OTHER THAN VT-52/100 OR LOOK ALIKES MAY BE USED HOWEVER 37 ;ONE SHOULD BE BEWARE OF THE CURSOR "ESC SEQUENCES". 38 ;9600 BAUD ON THE VT-52 FLICKERS SOME BUT IS NOT VEXING. 39 ;VT100 DOESN'T FLICKER & CAN BE RUN AT 19.2 KB. LOWER 40 ;BAUD RATE MEANS SLOWER SCREEN UPDATE, NOT APPLICATION 41 ;PROGRAM ITERATION RATE. DATA UPDATING IS PERFORMED AT 42 ;LTC INTERRUPT ONLY IN DYNAMIC MODE, DURING THE "BREAK" 43 ;IN NORMAL MODE. SCREEN WRITING IN DYNAMIC MODE IS 44 ;<<54 * 12> + 6>CHAR PER UPDATE ITERATION, AT 5 BASIC 45 ;PROGRAM INSTRUCTIONS/CHR OUTPUT IT'S EFFECT ON EXECUTION 46 ;TIME OF AN R/T APPLICATION IS ESSENTIALLY NIL. 47 48 ;KEYBOARD CAN BE ASSIGNED TO OTHER ADDRESSES & VECTORS 49 ;BY DEFINING "TKS & TKSVEC" IN A PREFIX FILE 50 51 ;TKS = KYBD STS REGISTER ADDRESS(177560) 52 177562 TKB =TKS+2 ;KYBD BUF 53 177564 TPS =TKS+4 ;PRTR STS 54 177566 TPB =TKS+6 ;PRTR BUF 55 56 ;TKSVEC =60 ;KYBD SERV VECTOR 57 000062 TKSPRI =TKSVEC+2 ;IT'S PRIORITY ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 9-1 V0108 DEFINITIONS AND UNIQUE MACROS 58 000064 TPSVEC =TKSVEC+4 ;PRTR SERV VECTOR 59 000066 TPSPRI =TKSVEC+6 ;AND PRIORITY 60 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 10 V0108 DEFINITIONS AND UNIQUE MACROS 1 ;PROGRAM MACROS..SAVE SOME CODING & ERRORS 2 3 .MACRO SAVE A1,A2,A3,A4,A5,A6 ;DEFAULT(BLANK) 4 .IF B ;SAVES ALL REG'S 5 MOV R0,-(SP) 6 MOV R1,-(SP) 7 MOV R2,-(SP) 8 MOV R3,-(SP) 9 MOV R4,-(SP) 10 MOV R5,-(SP) 11 .MEXIT 12 .ENDC 13 MOV A1,-(SP) ;OR ANYTHING, #,@#,FLG 14 .IIF NB , MOV A2,-(SP) 15 .IIF NB , MOV A3,-(SP) 16 .IIF NB , MOV A4,-(SP) 17 .IIF NB , MOV A5,-(SP) 18 .IIF NB , MOV A6,-(SP) 19 .ENDM 20 .MACRO RSTORE A1,A2,A3,A4,A5,A6 ;OPPOSITE ORDER 21 .IF B ;SAVES ERRORS 22 MOV (SP)+,R5 23 MOV (SP)+,R4 24 MOV (SP)+,R3 25 MOV (SP)+,R2 26 MOV (SP)+,R1 27 MOV (SP)+,R0 28 .MEXIT 29 .ENDC 30 .IIF NB , MOV (SP)+,A6 31 .IIF NB , MOV (SP)+,A5 32 .IIF NB , MOV (SP)+,A4 33 .IIF NB , MOV (SP)+,A3 34 .IIF NB , MOV (SP)+,A2 35 MOV (SP)+,A1 36 .ENDM 37 38 .MACRO CRLF 39 .ASCII <15><12> 40 .ENDM 41 .MACRO AI TEXT 42 .ASCII %TEXT% 43 .ENDM 44 .MACRO AZ TEXT 45 .ASCIZ %TEXT% 46 .ENDM 47 .MACRO PRINT ASCSTR 48 MOV #ASCSTR,R1 49 CALL PRINT 50 .ENDM 51 .MACRO NUMCHR CHRCNT 52 SAVE R5 53 MOV #CHRCNT,R5 54 CALL NUMCHR 55 RSTORE R5 56 .ENDM 57 .MACRO INCHAR ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 10-1 V0108 DEFINITIONS AND UNIQUE MACROS 58 CALL INCHAR 59 .ENDM 60 .MACRO OUTCHR 61 CALL OUTCHR 62 .ENDM 63 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 11 USER FLAGS, SYMBOLS AND ADDRESS TABLES 1 .SBTTL USER FLAGS, SYMBOLS AND ADDRESS TABLES 2 3 ;ORDER OF FLAGS IS IMPORTANT ONLY BECAUSE THEIR 4 ;ADDRESSES ARE "SPECIFIED" IN THE MENU 5 6 006356 000000 ACUM.L::0 ;VALUE OF ACCUMULATOR 7 006360 000000 RPTF.G::0 ;CONTINUOUS REPORT FLG 8 006362 000000 DYNF.G::0 ;DYNAMIC DISPLAY 9 006364 000000 MODF.G::0 ;MODIFY FILE FLAG 10 006366 000000 TMPF.G::0 ;TEMP MOD OF FILE 11 006370 000000 RDFF.G::0 ;READ FILE FLG 12 006372 000000 BRKF.G::0 ;STOP THE PROGRAM 13 006374 000000 HEXF.G::0 ;DISPLAY IN "HEX" 14 006376 000000 WRDF.G::0 ;DISPLAY IN OCTAL/DECIMAL 15 006400 000000 BYTF.G::0 ;"BYTE" DECIMAL/OCTAL FLAG 16 006402 000000 DEFE.R: 0 ;INDIRECT FUNCTION 17 006404 000000 ACCF.G: 0 ;ACCUMULATOR FLG 18 006406 000000 BLNK.F::0 ;BLINK CHANGING DATA 19 20 006410 BUFFER: ;SAVE FILE BUFFER STARTS HERE 21 22 006410 000000 FFLG.0::0 ;FUNCTION FLAGS(OPER SET) 23 006412 000000 FFLG.1::0 ;WILL INITIATE PRE SELECTED 24 006414 000000 FFLG.2::0 ;FUNCTIONS AS PROGRAMMED 25 006416 000000 FFLG.3::0 ;BY THE USER IN DYNAMIC MODE. 26 006420 000000 FFLG.4::0 ;MAY BE USED IN THE APPLIC 27 006422 000000 FFLG.5::0 ;PROGRAM SINCE THEY ARE 28 006424 000000 FFLG.6::0 ;DECLARED GLOBAL! 29 006426 000000 FFLG.7::0 ;TAKE CARE WITH DEFE.RED 30 006430 000000 FFLG.8::0 ;ADDRESSES, THEY CAN DESTROY 31 006432 000000 FFLG.9::0 ;A PRGM, IF YOU ERR!!! 32 33 ;THE FOLLOWING TABLES ORDER IS "MUY IMPORTANTE" 34 ;THE SCREEN SYMBOLICS ARE REFERENCED: 35 ;COLUMN 1 SYMBOLS 01 THRU 12 36 ; 2 13 24 37 ; 3 25 36 38 ;BUT THEY ARE NOT STORED THAT WAY!! 39 40 006434 SYM01: AI ;ROW 1 - COL 1 41 006464 SYM02: AI ; 1 2 42 006514 SYM03: AI <007410FFLG.0 > ; 1 - 3 43 006544 SYM04: AI ; " 2 " 1 44 006574 SYM05: AI ;ETC,ETC....ETC 45 006624 SYM06: AI <007412FFLG.1 > 46 006654 SYM07: AI 47 006704 SYM08: AI 48 006734 SYM09: AI <007414FFLG.2 > 49 006764 SYM10: AI 50 007014 SYM11: AI 51 007044 SYM12: AI <007416FFLG.3 > 52 007074 SYM13: AI 53 007124 SYM14: AI 54 007154 SYM15: AI <007420FFLG.4 > 55 007204 SYM16: AI 56 007234 SYM17: AI 57 007264 SYM18: AI <007422FFLG.5 > ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 11-1 USER FLAGS, SYMBOLS AND ADDRESS TABLES 58 007314 SYM19: AI 59 007344 SYM20: AI 60 007374 SYM21: AI <007424FFLG.6 > 61 007424 SYM22: AI 62 007454 SYM23: AI 63 007504 SYM24: AI <007426FFLG.7 > 64 007534 SYM25: AI 65 007564 SYM26: AI 66 007614 SYM27: AI <007430FFLG.8 > 67 007644 SYM28: AI 68 007674 SYM29: AI 69 007724 SYM30: AI <007432FFLG.9 > 70 007754 SYM31: AI 71 010004 SYM32: AI 72 010034 SYM33: AI <007406BLNK.F > 73 010064 SYM34: AI 74 010114 SYM35: AI 75 010144 SYM36: AI <007356ACUM.L OO > 76 010174 SYM37: AI 77 010224 SYM38: AI 78 010254 SYM39: AI 79 010304 SYM40: AI 80 010334 SYM41: AI 81 010364 SYM42: AI 82 010414 000000 SYMEND: 0 83 .EVEN 84 85 ;TABLE OF ADDRESSES TO THE SYMBOLIC LABELS 86 87 010416 006434' 006544' 006654' SYMTBL: SYM01,SYM04,SYM07,SYM10,SYM13,SYM16,SYM19,SYM22,SYM25,SYM28 88 010442 007754' 010064' 006464' SYM31,SYM34,SYM02,SYM05,SYM08,SYM11,SYM14,SYM17,SYM20,SYM23 89 010466 007564' 007674' 010004' SYM26,SYM29,SYM32,SYM35,SYM03,SYM06,SYM09,SYM12,SYM15,SYM18 90 010512 007374' 007504' 007614' SYM21,SYM24,SYM27,SYM30,SYM33,SYM36,SYM37,SYM38,SYM39,SYM40 91 010536 010334' 010364' SYM41,SYM42 92 93 010542 000000 TBLEND: 0 94 010544 ADRTBL: .BLKW 36. 95 010654 000266' 000272' 000276' .WORD O.UR0,O.UR0+4,O.UR0+8.,O.UR0+2,O.UR0+6,O.UR0+10. 96 010670 000000 ADREND: 0 ;END OF ADDRESS TABLES 97 98 .SBTTL INTERNAL PRGM FLAGS, MESSAGES AND TABLES 99 100 010672 000000 MENF.G::0 ;DISPLAY THE MENU 101 010674 000000 AD1FLG: 0 ;ADDRESS VALUE STORAGE 102 010676 000000 AD2FLG: 0 ;2ND P/O THE ADDRESS 103 010700 000000 NUMFLG: 0 ;NUM OF DIGITS 104 010702 000000 ONEFLG: 0 ;ONCE ONLY 105 010704 000000 OFFSET: 0 ;TBLE OFFSET 106 010706 000000 CHGFLG: 0 ;COMMAND CHG FLG 107 010710 000000 000000 000000 MONSAV: 0,0,0,0,0,0 ;KBRD MON ADR'S & LTC 108 010724 015326 057164 107127 FILPTR: .RAD50 /DK0ODTV09FIL/ ;SAVE IT ON THE SYSTEM DEVICE 109 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 12 INTERNAL PRGM FLAGS, MESSAGES AND TABLES 1 ;MESSAGE AREA 2 3 010734 FLGSET: AZ < SET> 4 010743 FLGCLR: AZ < CLR> 5 010752 033 110 000 HOME: .BYTE ESC,HME,0 ;UP/LFT CORNER 6 010755 033 110 CLRSCR: .BYTE ESC,HME ;CLR IT 7 010757 033 112 000 ERASE: .BYTE ESC,ENSCR,0 ;FROM WHEREVER YOU ARE 8 010762 010 010 010 BACKUP: .BYTE BS,BS,BS,BS,BS,BS,0 9 010771 033 113 BLANKS: .BYTE ESC,113 10 010773 015 012 000 PCRLF: .BYTE CR,LF,0 11 010776 040 040 040 SPC7: .BYTE SPC,SPC,SPC,SPC,SPC;7 CONSECUTIVE SPACES 12 011003 040 SPC2: .BYTE SPC ;2 ONLY 13 011004 040 000 SPC1: .BYTE SPC,0 14 011006 007 077 010 QUERIE: .BYTE BEL,QUES,BS,0 ;ILLEGAL ENTRY 15 011012 010 040 010 DELETE: .BYTE BS,SPC,BS,0 ;DEL & BACKUP 16 011016 SCRUUP: AZ 17 011037 ADDRES: AZ 18 011046 SYMBOL: AZ 19 011057 MODMSG: AZ <(N)O/"##" TO CHNG = > 20 011110 WRTMSG: AI 21 011124 015 012 000 .BYTE CR,LF,0 22 011127 NRFMSG: AZ 23 011152 TSTCHR: AI ACUM.L 24 011160 DEVFIL: AI 25 011202 015 012 000 .BYTE CR,LF,0 26 011205 NOFIL: AZ 27 011226 MENU: AI < SET FLG AT BRKPNT TO IMPLMNT FNCTN..(NXT BRKPNT)> 28 011307 CRLF 29 011311 AI < NON COMMAND KEY..CLRS ALL OPTIONS..@/A/XX> 30 011363 CRLF 31 011365 AI < DYNAMIC MODE..(W/;7B) USE KEY SHOWN> 32 011431 CRLF 33 011433 CRLF 34 011435 AI <7360 RPTF.G SCRN UPDTE @ BRKPNT> 35 011474 CRLF 36 011476 AI <7362 DYNF.G SCRN UPDTE-R/T (D)> 37 011537 CRLF 38 011541 AI <7364 MODF.G CHG LABEL/UPDTE FILE (M)> 39 011607 CRLF 40 011611 AI <7366 TMPF.G TMP CHG LABEL/NO UPDTE (T)> 41 011661 CRLF 42 011663 AI <7370 RDFF.G READ FILE/CANCEL TMPF.G (R)> 43 011734 CRLF 44 011736 AI <7372 BRKF.G STP PRGRM/INIT BRKPNT 7 (^B)> 45 012016 CRLF 46 012020 AI <7374 HEXF.G ALT ACT, HEX WRDS (H)> 47 012063 CRLF 48 012065 AI <7376 WRDF.G DSPLY WRD/OCT(0),DEC(1) (W)> 49 012136 CRLF 50 012140 AI <7400 BYTF.G DSPLY BYT/OCT(0),DEC(1) (^W)> 51 012220 CRLF 52 012222 AI <7406 BLNK.F BLNK CHG'D FLG/ADD'L(B) INC'S BLNK CNT (B)> 53 012310 CRLF 54 012312 AI < DEFE.R ACUM.L DATA/SET/CLR @ADDR(FFLG.X) (@)> 55 012370 CRLF 56 012372 AI <7356 ACUM.L ALT ACT "A"=OPEN INPUT DATA(DEC/OCT) (A)> 57 012457 CRLF ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 12-1 INTERNAL PRGM FLAGS, MESSAGES AND TABLES 58 012461 AI < FFLG.X FUNCT FLGS 0-9....(X)[@] (S)ET/(C)LR> 59 012535 CRLF 60 012537 AI < SYMBOL (0X)/(XX) (A)DATA/(S) FLG/(S)ET/(C)LR> 61 012622 CRLF 62 012624 AI <11672 MENF.G DSPLY MENU> 63 012653 CRLF 64 012655 015 012 000 .BYTE CR,LF,0 65 .EVEN 66 67 012660 050570 DEFTYP: .RAD50 "MAP" ;DEFAULT DEV TYPE 68 012662 LIST: ;EMT ARG LIST.. 69 012662 OUTSPC: .BLKW 15. ;RETURN IT HERE! 70 012720 MAPFIL: .BLKW 24. ;INPUT FIL DISCR 71 013000 000052 DATLST: .REPT 42. ;COMPARE NEW VALUE TO DATA LIST 72 .WORD 177777 ;INSURE CLEANUP AT THE START 73 .ENDR ;NO OLD DATA IS DISPLAYED 74 013124 000000 HIMEM: 0 ;MEM ADDR STRT OF LNK MAP 75 013126 000000 MEMAVL: 0 ;MAX ADR(WRDS) AVAIL 76 013130 000000 BLKCNT: 0 ;BLOCK COUNT 77 013132 000 TOTBLK: .BYTE 0 ;TOTAL BLKS IN MAP 78 013133 000 NUMBLK: .BYTE 0 ;# OF BLKS TO (XFER) 79 013134 000 SYMF.D::.BYTE 0 ;SYMBOLIC FOUND 80 013135 000 SYMCNT: .BYTE 0 ;SYMBOLIC COUNT 81 013136 000 ONCE: .BYTE 0 ;CLR DSPLY 82 013137 000 INTFLG: .BYTE 0 ;INTERRUPT CTRL 83 013140 000 LINOUT: .BYTE 0 ;PRESENT LINE OUT 84 013141 000 LCHRCT: .BYTE 0 ;CHRS @ LINE 85 013142 013144' TBLNDX: TABLE ;DATA TABLE INDEX 86 87 013144 006434' 006464' 006514' TABLE: SYM01,SYM02,SYM03,SYM04,SYM05,SYM06,SYM07,SYM08,SYM09 88 013166 006764' 007014' 007044' SYM10,SYM11,SYM12,SYM13,SYM14,SYM15,SYM16,SYM17,SYM18 89 013210 007314' 007344' 007374' SYM19,SYM20,SYM21,SYM22,SYM23,SYM24,SYM25,SYM26,SYM27 90 013232 007644' 007674' 007724' SYM28,SYM29,SYM30,SYM31,SYM32,SYM33,SYM34,SYM35,SYM36 91 92 013254 013256' NXTBYT: LINBUF ;CHR TO BE OUTPUTTED 93 94 ;CURSOR POSITIONING ESCAPE SEQUENCES 95 ;ROW NUMBER IS CHG'D BY "INTRPT" 96 ;FOR EACH LINOUT TO THE DISPLAY 97 98 013256 033 131 LINBUF: .BYTE 33,131 ;ESC,Y, 99 013260 040 050 ROW: .BYTE 40,50 ;ROW ?,COL 9 100 013262 .BLKB 14. ;DATA 101 013300 033 131 070 .BYTE 33,131,70,105 ;ESC,Y,ROW,COL 38 102 013304 .BLKB 14. ;DATA 103 013322 033 131 070 .BYTE 33,131,70,142 ;ESC,Y,ROW,COL 67 104 013326 .BLKB 14. ;DATA 105 013344 012 015 033 LBUNCH: .BYTE 12,15,33,112 ;LF,CR,ESC,J CLR SCREEN AND 106 013350 033 110 GOHOME: .BYTE 33,110 ;ESC,H GO TO LEFT TOP 107 013352 040 041 042 LINE: .BYTE 40,41,42,43 ;1,2,3,4 CHG CODE FOR 108 013356 045 046 047 .BYTE 45,46,47,50 ;6,7,8,9 FOR EACH LINOUT 109 013362 052 053 054 .BYTE 52,53,54,55 ;11,12,13,14 STUFF IT AT "ROW" 110 111 ;KEYBOARD COMMAND TABLE 112 113 013366 104 115 124 BYTTBL: .BYTE 'D,'M,'T,'R,2,'H,'W,27,'@,'A,'B,'0,'1,'2,'3,'4,'5,'6,'7,'8,'9,'C,'S 114 013415 060 061 062 HEXTBL: .BYTE '0,'1,'2,'3,'4,'5,'6,'7,'8,'9,'A,'B,'C,'D,'E,'F ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 12-2 INTERNAL PRGM FLAGS, MESSAGES AND TABLES 115 .EVEN 116 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 13 V0108 START 1 .SBTTL V0108 START 2 3 ;THE PROGRAM BEGINS! GAIN ACCESS THRU ODT 4 ;PROVIDES OPERATOR SELECTION OF FUNCTIONS 5 ;AN INITIAL "BREAK" MUST OCCUR TO ENTER 6 ;THE HOOK FROM "ODT" IS JSR R0,O.SVR 7 8 013436 012667 172552 V8STRT: MOV (SP)+,O.XXX ;STANDARD 9 013442 010667 164634 MOV SP,O.USP ;ODT 10 013446 012706 000302' MOV #O.USP,SP ;INSTRUCTIONS 11 013452 SAVE R5,R4,R3,R2,R1 ;..WILL NOT 12 013464 016746 172524 MOV O.XXX,-(SP) ;DISTURB 13 013470 005746 TST -(SP) ;THEM 14 013472 005767 175204 TST ONEFLG ;ONCE ONLY 15 013476 001041 BNE 1$ 16 17 ;EXECUTED ONLY ONCE! 18 ;IF THE BUS EVENT VECTOR IS RELOADED AFTER 19 ;THIS, IT WILL STEAL THE INTERRRUPT ENTRY 20 ;POINT AND YOU CAN FORGET THE DYNAMIC DISPLAY!!! 21 ;SWAPS VECTORS DURING INTERRUPT TO INSURE SUCCESS 22 ;REMINDER..ODT HAS CONTROL RIGHT NOW! 23 ;USES "LTC" VECTOR FOR R/T DISPLAY SUPPORT 24 25 013500 SAVE ;WILL USE FOLLOWING 26 013514 PRINT CLRSCR ;CLR THE WHOLE THING 27 013524 PRINT MENU ;ATTN YOU ALL!! 28 013534 004767 000374 CALL RDFILE ;READ FILE FIRST 29 013540 005267 175136 INC ONEFLG ;DON'T COME BACK 30 013544 012767 000002 172606 MOV #2,RPTF.G ;REQ REPORT 31 013552 013767 000100 005744 MOV @#100,SAV100 ;INT SRVCE ADR 32 013560 012737 013636' 000100 MOV #V08ATT,@#100 ;ATTACH REPORT PGM 33 013566 RSTORE ;RESTORE ALL REG'S 34 013602 026727 164554 006354' 1$: CMP O.ADR1+14.,#O.TRTC;BRK PNT SET? 35 013610 001411 BEQ 3$ ;GUESS NOT! 36 013612 005767 172554 TST BRKF.G ;BREAK REQUEST? 37 013616 001004 BNE 2$ ;NE = YES 38 013620 012767 000002 164556 MOV #2,O.CT+14. ;BRK 7 COUNT 39 013626 000402 BR 3$ ;KEEP THE CNT UP 40 41 013630 005067 164550 2$: CLR O.CT+14. ;ALLOW BREAK 7 42 013634 000200 3$: RTS R0 ;BACK TO STANDARD ODT 43 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 14 V0108 START 1 ;....EXECUTED ONCE! 2 ;INTRPT PROCESSES THE DATA DURING INTERRUPT 3 ;KBDSRV PASSES OPERATOR REQUEST TO PGM 4 ;INPROC SERVICES THE DISPLAY 5 6 013636 012737 021160' 000100 V08ATT: MOV #INTRPT,@#100 ;;;NEW STRT 7 013644 012737 014526' 000060 MOV #KBDSRV,@#TKSVEC;;;INTERPRET THE KBRD 8 013652 012737 000340 000062 MOV #340,@#TKSPRI ;;;NO INT! 9 013660 012737 021526' 000064 MOV #INPROC,@#TPSVEC;;;NEW ADR 10 013666 112737 000340 000066 MOVB #340,@#TPSPRI ;;;NO INTERRUPT THE INT. 11 013674 112767 000100 177560 MOVB #100,TKS ;;;SET 'ENABLE' 12 013702 000167 005252 JMP INTRPT ;;;COMPLETE INT REQUEST 13 14 .SBTTL SERVICE THE USER COMMAND FLAGS 15 16 ;SCANS FLAGS TO DETERMINE THE USER REQUEST 17 ;SUBR IS CALLED BY ODT IF LEGITIMATE BRK OCCURS 18 ;I.E. 10;P WILL NOT CALL UNTIL COUNT =0 19 20 013706 004567 170726 V08SRV: JSR R5,O.SVTT ;THE OTHER "HOOK" 21 013712 SAVE ;SAVE ALL REGS 22 013726 012700 006362' MOV #DYNF.G,R0 ;STRT TST HERE 23 013732 005020 CLR (R0)+ ;NO INT DURING BREAK 24 013734 012701 000003 MOV #3,R1 ;LOOP CNT & INDEX 25 013740 006220 1$: ASR (R0)+ ;NXT FLAG IN LINE 26 013742 103415 BCS 2$ ;WAS ON! 27 013744 077103 SOB R1,1$ ;LOOP 28 013746 006267 174720 ASR MENF.G ;CAN'T REMEMBER IT 29 013752 103020 BCC 4$ 30 013754 PRINT CLRSCR ;CLEAN UP 31 013764 PRINT MENU ;PRINT IT AGAIN 32 013774 000446 BR 9$ 33 34 013776 006301 2$: ASL R1 ;OFFSET 35 014000 000171 014004' JMP @3$(R1) ;DO THE FUNCTION 36 37 014004 014014' 014056' 014042' 3$: 4$,7$,6$,5$ ;FILLER,RDF,TMP,MOD 38 39 014014 006267 172340 4$: ASR RPTF.G ;SET? 40 014020 103034 BCC 9$ ;NO! IT'S "2 OR 0" 41 014022 006167 172332 ROL RPTF.G ;PUT IT BACK 42 014026 000415 BR 8$ ;REPORT ALL! 43 44 014030 004767 003076 5$: CALL MODIFY ;WHICH ONE(S) 45 014034 004767 000116 CALL WRFILE ;UPDATE DISK 46 014040 000410 BR 8$ 47 48 014042 004767 003064 6$: CALL MODIFY ;WRITE 'EM 49 014046 052767 001000 174626 BIS #B9,ONEFLG ;DBLE CHK ON "SRCH" 50 014054 000402 BR 8$ ;MAKE SURE OF ADRESSES 51 52 014056 004767 000052 7$: CALL RDFILE ;RECOVER OLD STUFF 53 014062 105167 174621 8$: COMB CHGFLG+1 ;MODE CHGS? 54 014066 004767 001174 CALL SETMODE ;AND DISPLAY THEM 55 014072 004767 002246 CALL RPTSYM ;GET NEW DATA 56 014076 004767 002600 CALL REPORT ;AND WRITE IT ALL 57 014102 PRINT ERASE ;CLEAN UP YOUR BOTTOM ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 14-1 SERVICE THE USER COMMAND FLAGS 58 014112 005067 172254 9$: CLR BRKF.G ;NO MORE BRKS! 59 014116 RSTORE ;RESTORE REGS 60 014132 000205 RTS R5 ;RETURN TO ODT 61 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 15 FILE ACCESS ROUTINE 1 .SBTTL FILE ACCESS ROUTINE 2 3 ;READS AN EXISTING SYMBOLIC FILE TO THE "BUFFER" 4 ;IF IT DOES NOT EXIST!!, IT CREATES IT. IT MUST 5 ;BE "UPDATED" TO SYMBOL LABEL DESIRED BY THE USER. 6 ;UPDATE ACTIVITY "WRITES" THE FILE TO THE DISK. 7 ;SUBSEQUENT "STRT UP" INPUTS THE UPDATED VERSION 8 9 014134 RDFILE: .LOOKUP #LIST,#0,#FILPTR ;OPEN CHANNEL 10 014154 103053 BCC LUPFIN ;FILE IS ON "DK:" 11 12 ;IT'S NOT THERE, CREATE IT 13 14 014156 WRFILE: .ENTER #LIST,#0,#FILPTR,#3 ;OPEN FILE 15 014204 103006 BCC ENTROK 16 014206 FAIL: PRINT NRFMSG ;SYSTEM ERROR 17 014216 000167 164554 JMP EXIT ;RETURN TO MONITOR 18 19 ;WRITE IT TO THE "SYSTEM STORAGE" 20 21 014222 ENTROK: .WRITW #LIST,#0,#BUFFER,#SYMEND-BUFFER/2,#0 22 014260 103752 BCS FAIL 23 014262 PRINT PCRLF 24 014272 PRINT WRTMSG ;WRITE TO FILE 25 014302 000420 BR CLSEFL 26 27 014304 LUPFIN: .READW #LIST,#0,#BUFFER,#SYMEND-BUFFER/2,#0 28 014342 103721 BCS FAIL 29 014344 CLSEFL: .CLOSE #0 ;CLOSE IT FOR NOW 30 014352 005767 174324 TST ONEFLG ;1ST TIME THRU? 31 014356 001410 BEQ 1$ ;YES! 32 014360 100411 BMI 2$ ;NO FILE! 33 014362 032767 001000 174312 BIT #B9,ONEFLG ;TMP MOD WAS DONE? 34 014370 001405 BEQ 2$ ;NOT THIS TIME 35 014372 042767 001000 174302 BIC #B9,ONEFLG ;GET RID OF IT 36 014400 004767 003536 1$: CALL SEARCH ;GET FILE(LINKMAP) 37 014404 004767 001614 2$: CALL ADRCVR ;CNVRT ADDRESSES 38 014410 000207 RETURN 39 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 16 SYSTEM "SAVE & RESTORE ROUTINES" 1 .SBTTL SYSTEM "SAVE & RESTORE ROUTINES" 2 3 ; WE DON'T KNOW IF THE CONSOLE OR AN AUX TERMINAL WILL BE USED 4 ; AND IF THE "LTC" VECTOR IS GOING TO BE CHANGED 5 ; TO EXIT "ODTV09" ... ALL MUST BE THE SAME AS AT STARTUP 6 7 .ENABL LSB 8 014412 SAVSYS: SAVE R0,R1 9 014416 012700 000060 MOV #60,R0 ;START WITH THE CONSOLE 10 014422 012701 010710' MOV #MONSAV,R1 ;AND STORE THEM HERE 11 014426 012021 MOV (R0)+,(R1)+ ;KEYBOARD ROUTINE 12 014430 012021 MOV (R0)+,(R1)+ ;PRI 13 014432 012021 MOV (R0)+,(R1)+ ;PRINTER ROUTINE 14 014434 012021 MOV (R0)+,(R1)+ ;PRI 15 014436 012700 000100 MOV #100,R0 16 014442 000424 BR 2$ 17 18 014444 RSTSYS: SAVE R0,R1 ;RESTORE THEM ALL 19 014450 012700 010710' MOV #MONSAV,R0 ;SO WHEN WE EXIT 20 014454 012701 000060 MOV #60,R1 ;THERE WILL BE NO 21 014460 012021 MOV (R0)+,(R1)+ ;UNEXPECTED INTERRUPTS 22 014462 012021 MOV (R0)+,(R1)+ 23 014464 012021 MOV (R0)+,(R1)+ 24 014466 012021 MOV (R0)+,(R1)+ 25 014470 022727 000060 000060 CMP #TKSVEC,#60 ;WERE WE USING AN AUX 26 014476 001404 BEQ 1$ ;TERMINAL VECTORS 27 014500 105037 177560 CLRB @#TKS ;IF SO ... DISABLE IT 28 014504 105037 177564 CLRB @#TPS 29 014510 012701 000100 1$: MOV #100,R1 30 014514 012021 2$: MOV (R0)+,(R1)+ 31 014516 012021 MOV (R0)+,(R1)+ 32 014520 RSTORE R0,R1 33 014524 000207 RETURN 34 .DSABL LSB 35 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 17 KEYBOARD INTERFACE TO THE USER 1 .SBTTL KEYBOARD INTERFACE TO THE USER 2 3 ;INTERPRET KYBRD INPUTS TO SET THE PROPER FLGS 4 ;CTRL/B INITIATES BRKPNT 7 IF IT HAS BEEN SET 5 ;"B" WILL START THE FLGS BLINKING 6 ;"A" OPENS AND CLOSES THE ACCUMULATOR 7 ;0-9[@] & CLR OR SET WILL OPERATE FUNCTION FLAGS 8 ;0X TO XX & CLR/SET WILL OPERATE ON SYMBOLICS 9 ;WITH ACUM.L OPEN, "SET" XFERS ITS VALUE TO FUNCT 10 ;INVALID CHARACTERS CANCEL OPERATIONS 11 ;IF ACUM.L IS OPEN, CLR IT TOO 12 ;SET THE DEFE.R FLAG IF REQUESTED, BUT WATCH IT 13 ;SWITCH DISPLAY MODES: DECIMAL,OCTAL,HEX 14 ;DATA ENTRY IS NOT POSSIBLE IN HEX(REF ONLY) 15 ;"W" AND "^W" ALTERNATE THE DISPLAY MODE 16 17 .ENABL LSB 18 014526 KBDSRV: SAVE R0,R1,R2,R3,R4 ;;;SAVE THESE 19 014540 012704 020040 MOV #20040,R4 ;;;SPC SPC 20 014544 INCHAR ;;;GET THE CHAR 21 014550 010003 MOV R0,R3 ;;;COPY 22 014552 005002 CLR R2 ;;;INDEX 23 014554 120062 013366' 1$: CMPB R0,BYTTBL(R2) ;;;VALID CHR? 24 014560 001420 BEQ 2$ ;;;MUST BE 25 014562 005202 INC R2 ;;;INCR PTR 26 014564 020227 000027 CMP R2,#23. ;;;STOP THE LOOP 27 014570 103771 BCS 1$ ;;;LOOK AGAIN 28 014572 005767 171606 TST ACCF.G ;;;ACCUM OPEN? 29 014576 001472 BEQ 10$ ;;;NO! 30 014600 005067 171552 CLR ACUM.L ;;;IF IT'S OPEN 31 014604 005067 001374 CLR LSDIGT ;;;THE DECIMAL VALUE 32 014610 005067 001372 CLR LSDIGT+2 ;;;5 CONSECUTIVE 33 014614 005067 001370 CLR LSDIGT+4 ;;;BYTES 34 014620 000457 BR 9$ 35 36 ;IT'S P/O OF THE TABLE, WHAT IS IT? 37 38 014622 020227 000013 2$: CMP R2,#11. ;;;FLAGS? 39 014626 103544 BCS 15$ ;;;SET THEM 40 014630 162702 000025 SUB #21.,R2 ;;;NUMBERS? 41 014634 100466 BMI 11$ ;;;YES IF NEG 42 43 ;IT'S A CLR OR SET 44 45 014636 005767 171542 3$: TST ACCF.G ;;;ON? 46 014642 001416 BEQ 5$ 47 014644 005702 TST R2 ;;;CLR IT? 48 014646 001012 BNE 4$ ;;;NO, USE IT 49 014650 010267 171502 MOV R2,ACUM.L ;;;VALUE ENTERED 50 014654 005067 001324 CLR LSDIGT ;;;CLR IT TOO 51 014660 005067 001322 CLR LSDIGT+2 ;;;ALL BYTES 52 014664 005067 001320 CLR LSDIGT+4 ;;;MS DIGIT 53 014670 000167 000474 JMP 27$ 54 55 ;SET IT 56 57 014674 016702 171456 4$: MOV ACUM.L,R2 ;;;USE IT! ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 17-1 KEYBOARD INTERFACE TO THE USER 58 014700 016701 173770 5$: MOV AD1FLG,R1 ;;;MULTI 59 014704 005767 173770 TST NUMFLG ;;;1 DIG? 60 014710 100413 BMI 7$ ;;;2ND IS + 61 62 ;IS "EIS" REQ'D? 63 64 .IF EQ EIS ;;;IS AN EIS INSTR 65 CALL MULT10 ;;;SET AVAILABLE? 66 .IFF 67 014712 070127 000012 MUL #10.,R1 ;;;=TENS DIGIT (EIS) 68 .ENDC 69 70 014716 066701 173754 6$: ADD AD2FLG,R1 ;;;AN OFFSET 71 014722 100416 BMI 9$ ;;;NO "00" 72 014724 020127 000110 CMP R1,#72. ;;;TOO HIGH? 73 014730 103013 BCC 9$ ;;;OR "36+" 74 014732 010271 010544' MOV R2,@ADRTBL(R1) ;;;SET OR CLR 75 014736 000410 BR 9$ 76 77 ;DEFERRED OR DIRECT? 78 79 014740 005767 171436 7$: TST DEFE.R ;;;INDIRECT? 80 014744 001403 BEQ 8$ ;;;NO..DIRECT 81 014746 010271 006410' MOV R2,@FFLG.0(R1) ;;;VALUE (X) 82 014752 000402 BR 9$ 83 84 ;DIRECT, CLR THE WORLD 85 86 014754 010261 006410' 8$: MOV R2,FFLG.0(R1) ;;;DIRECT 87 014760 005067 171420 9$: CLR ACCF.G ;;;CLOSE IT 88 014764 005067 173706 10$: CLR AD2FLG ;;;DONE!! 89 014770 005067 171406 CLR DEFE.R ;;;START 90 014774 005067 173700 CLR NUMFLG ;;;FRESH 91 015000 010467 173164 MOV R4,SYM36+20. ;;;CLR "A" 92 015004 010467 173162 MOV R4,SYM36+22. ;;;DBL SPC 93 015010 000537 BR 22$ ;;;SET MODE CHR 94 95 ;IT'S A NUMBER! STUFF IT! 96 97 015012 162700 000060 11$: SUB #'0,R0 ;;;MAKE IT BIN 98 015016 005767 171362 TST ACCF.G ;;;PUT IT THERE! 99 015022 001420 BEQ 13$ ;;;NO! SEL SYMBOL # 100 015024 032767 000001 171344 BIT #1,WRDF.G ;;;DECIMAL ENTRY? 101 015032 001011 BNE 12$ ;;;YES 102 000003 .REPT 3 ;;;SHIFT IT 103 ASL ACUM.L ;;;LEFT, MAKE 104 .ENDR ;;;ROOM FOR 105 015050 050067 171302 BIS R0,ACUM.L ;;;NEW DIGIT 106 015054 000515 BR 22$ 107 108 015056 004767 001016 12$: CALL DECBIN ;;;DEC TO BINARY 109 015062 000512 BR 22$ ;;;GET OUT 110 111 ;1ST DIGIT 112 113 015064 006300 13$: ASL R0 ;;;WORD OFFSET 114 015066 005167 173606 COM NUMFLG ;;;BEFORE? ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 17-2 KEYBOARD INTERFACE TO THE USER 115 015072 100007 BPL 14$ ;;;2ND DIG 116 015074 010067 173574 MOV R0,AD1FLG ;;;STORE IT 117 015100 110367 173066 MOVB R3,SYM36+22. ;;;1ST DIGIT 118 015104 110467 173063 MOVB R4,SYM36+23. ;;;CLR 2ND DIG 119 015110 000527 BR 27$ 120 121 ;2ND DIGIT 122 123 015112 005067 171264 14$: CLR DEFE.R ;;;DEFERRED TO 124 015116 162700 000002 SUB #2,R0 ;;;SYM NOT VALID 125 015122 110467 173043 MOVB R4,SYM36+21. ;;;KILL THE "@" 126 015126 010067 173544 MOV R0,AD2FLG ;;;STORE IT 127 015132 110367 173035 MOVB R3,SYM36+23. ;;;2ND DIGIT DISPL 128 015136 000514 BR 27$ 129 130 ;IT IS A FUNCTION 131 132 015140 120027 000101 15$: CMPB R0,#'A ;;;IS IT THE ACCUM? 133 015144 001011 BNE 17$ ;;;MUST BE FUNCTION 134 015146 005167 171232 COM ACCF.G ;;;TURN IT ON/OFF! 135 015152 100403 BMI 16$ ;;;ON! 136 015154 110467 173010 MOVB R4,SYM36+20. ;;;CLR IT! 137 015160 000503 BR 27$ 138 139 015162 110067 173002 16$: MOVB R0,SYM36+20. ;;;ACC IS ON! 140 015166 000450 BR 22$ ;;;ACUM.L OPEN 141 142 ;INCREMENT THE "BLINKING" FLAG 143 144 015170 006302 17$: ASL R2 ;;;WORD COUNT 145 015172 020227 000024 CMP R2,#20. ;;;BLNK.F? 146 015176 103413 BCS 19$ ;;;SOMEONE ELSE 147 015200 105767 171202 TSTB BLNK.F ;;;+? 148 015204 100404 BMI 18$ ;;;ALREADY ON! 149 015206 062767 000002 171172 ADD #2,BLNK.F ;;;INCREASE 150 015214 000416 BR 20$ ;;;BLINK CYCLE 151 152 015216 162767 000002 171162 18$: SUB #2,BLNK.F ;;;STILL ADDS 153 015224 000412 BR 20$ 154 155 ;SET THE FUNCTION FLAG 156 157 015226 005262 006362' 19$: INC DYNF.G(R2) ;;;SET FLG 158 015232 005702 TST R2 ;;;=0? NO BRK 159 015234 001406 BEQ 20$ ;;;DYNAM MODE 160 015236 020227 000006 CMP R2,#6. ;;;FUNCTION? 161 015242 101003 BHI 20$ ;;;MOD/READ/TMP 162 015244 005267 171122 INC BRKF.G ;;;& BREAK 163 015250 000447 BR 27$ 164 165 ;TEST THE DISPLAY MODE FLAGS 166 167 015252 005767 171124 20$: TST DEFE.R ;;;ON? 168 015256 001403 BEQ 21$ ;;;NO! 169 015260 112767 000100 172703 MOVB #'@,SYM36+21. ;;;YES 170 015266 21$: 171 015266 026727 171102 000001 SETMODE:CMP HEXF.G,#1 ;;;(REF ONLY) ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 17-3 KEYBOARD INTERFACE TO THE USER 172 015274 101005 BHI 22$ ;;;OFF! ALT ACTION 173 015276 103406 BCS 23$ ;;;WASN'T ON! 174 015300 112767 000110 172660 MOVB #'H,SYM36+18. ;;;IT'S HEX 175 015306 000415 BR 25$ ;;;FOR THE BYTES 176 177 015310 005067 171060 22$: CLR HEXF.G ;;;ALT/OFF/ON 178 015314 032767 000001 171054 23$: BIT #1,WRDF.G ;;;IS IT ODD? 179 015322 001404 BEQ 24$ ;;;MODE =OCT WORDS 180 015324 112767 000104 172634 MOVB #'D,SYM36+18. ;;;IT IS DEC 181 015332 000403 BR 25$ 182 183 015334 112767 000117 172624 24$: MOVB #'O,SYM36+18. ;;;IT IS OCTAL 184 015342 032767 000001 171030 25$: BIT #1,BYTF.G ;;;MODE =OCT BYTES 185 015350 001404 BEQ 26$ ;;;IF =0 186 015352 112767 000104 172607 MOVB #'D,SYM36+19. ;;;DEC MODE 187 015360 000403 BR 27$ 188 189 015362 112767 000117 172577 26$: MOVB #'O,SYM36+19. ;;;OCT MODE 190 015370 005267 173312 27$: INC CHGFLG ;;;WHERE TO RETURN? 191 015374 100001 BPL 28$ 192 015376 000207 RETURN 193 015400 28$: RSTORE R0,R1,R2,R3,R4 194 015412 000002 RTI 195 .DSABL LSB 196 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 18 SUPPORT ROUTINES 1 .SBTTL SUPPORT ROUTINES 2 3 ;"PRINT" OUTPUTS TO THE CONSOLE 4 ;THE (R1)= LINE ADDRESS 5 6 015414 105737 177564 PRINT: TSTB @#TPS ;BUFF RDY? 7 015420 100375 BPL .-4 8 015422 112137 177566 MOVB (R1)+,@#TPB ;OUTPUT IT 9 015426 105711 TSTB (R1) ;END OF MSG? 10 015430 001371 BNE PRINT ;FINISH IT 11 015432 000207 RETURN 12 13 ;CHROUTPUT ROUTINE USES R0 FOR TRANSFER 14 15 015434 105737 177564 OUTCHR: TSTB @#TPS ;ASCII NUMBER 16 015440 100375 BPL .-4 17 015442 110037 177566 MOVB R0,@#TPB ;SNGL CHR 18 015446 000207 RETURN 19 20 ;LINE CHR OUTPUT ROUTINE USES (R0) FOR 21 ;THE TRANSFER, R5 = # OF CHAR TO PRINT 22 23 015450 105737 177564 NUMCHR: TSTB @#TPS ;ASCII A/N 24 015454 100375 BPL .-4 25 015456 112037 177566 MOVB (R0)+,@#TPB 26 015462 077506 SOB R5,NUMCHR ;NXT CHR 27 015464 000207 RETURN 28 29 ;INPUT CHARACTER FROM KEYBRD TO R0 30 31 015466 105737 177560 INCHAR: TSTB @#TKS ;CHR AVAILABLE? 32 015472 100375 BPL .-4 ;LOOP TIL RDY 33 015474 113700 177562 MOVB @#TKB,R0 34 015500 042700 177600 BIC #177600,R0 ;CLR PARITY BIT 35 015504 000207 RETURN 36 37 ;MULTIPLY ASSEMBLY FOR "EIS" ONLY 38 39 .IF EQ EIS ;VALUE=R1*10 (NO EIS) 40 MULT10: ROL R1 ;DOUBLE IT 41 MOV R1,-(SP) ;STORE IT 42 ROL R1 ;4 TIMES 43 ADD R1,(SP) ;6 TIMES 44 ADD (SP)+,R1 ;10 TIMES 45 RETURN 46 47 MUL256: CLR -(SP) ;MULTIPLY THIS NUMBER 48 1$: ADD #256.,(SP) 49 SOB R1,1$ ;R1*256. 50 MOV (SP)+,R1 ;THE ANSWER! 51 RETURN 52 .ENDC 53 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 19 DATA CONVERSION ROUTINES 1 .SBTTL DATA CONVERSION ROUTINES 2 3 ;BINARY VALUE IN R0 .. ENCODES BIN TO ASCII 4 ;ENTER - LO OR HI BYTE - ADDR TO STUFF..(R2) 5 ;BLANK THE LEADING ZEROS 6 7 015506 000300 HIBYTE: SWAB R0 ;ENTER HERE FIRST 8 015510 LOBYTE: SAVE R1 9 015512 005046 CLR -(SP) ;LEAD 0 IND. 10 015514 012701 000003 MOV #3,R1 ;3 BYTES OF ASCII 11 015520 042700 177400 BIC #177400,R0 ;CLR UPPER BYTE 12 015524 000401 BR 2$ 13 14 015526 006300 1$: ASL R0 ;SHIFT 3 15 015530 006300 2$: ASL R0 ;2..1ST TIME 16 015532 006300 ASL R0 ;MSB ARE 17 015534 000300 SWAB R0 ;IN LO BYTE 18 015536 001005 BNE 3$ ;LEAD ZERO 19 015540 005716 TST (SP) ;BEEN SET? 20 015542 001004 BNE 4$ ;IF NOT 21 015544 112722 000040 MOVB #SPC,(R2)+ ;BLANK IT 22 015550 000404 BR 5$ 23 24 015552 005216 3$: INC (SP) ;NOT ZERO! 25 015554 062700 000060 4$: ADD #'0,R0 ;MAKE IT ASCII 26 015560 110022 MOVB R0,(R2)+ ;TO THE TBL 27 015562 105000 5$: CLRB R0 ;GET RDY TO PUT 28 015564 000300 SWAB R0 ;DATA IN LO BYTE 29 015566 077121 SOB R1,1$ ;3 TIMES 30 015570 005726 TST (SP)+ 31 015572 RSTORE R1 32 015574 000207 RETURN 33 34 ;CONVERT BINARY TO HEX FOR THE DISPLAY 35 ;DATA IS IN R0, STUFF CONV..(R2) 36 ;USES "HEXTBL" FOR THE CONV. 37 38 015576 BINHEX: SAVE R3,R5 39 015602 012705 000004 MOV #4,R5 ;4 ALPH/NUM CHAR. 40 015606 010046 MOV R0,-(SP) ;COPY IT 41 015610 012722 020040 MOV #20040,(R2)+ ;SPC,SPC 42 015614 005003 1$: CLR R3 ;TABLE INDEX 43 000004 .REPT 4 44 ASL (SP) ;SHIFT TO CARRY BIT 45 ROL R3 ;STORE IT 46 .ENDR 47 015636 116322 013415' MOVB HEXTBL(R3),(R2)+;STUFF IT IN DISPLAY 48 015642 077514 SOB R5,1$ ;ALL 4 CHRS 49 015644 005726 TST (SP)+ ;RESTORE SP 50 015646 RSTORE R3,R5 51 015652 000207 RETURN 52 53 ;BINARY(OCTAL) TO ASCII CONVERT - DATA IN R0 54 ;ADDR TO STORE CONV.. (R2) 55 ;BLANK LEADING ZEROS 56 57 015654 BINASC: SAVE R1,R3,R4,R5 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 19-1 DATA CONVERSION ROUTINES 58 015664 005004 CLR R4 ;LEAD 0 IND 59 015666 012705 000006 MOV #6,R5 ;DIGIT CTR 60 015672 010001 MOV R0,R1 ;COPY IT 61 015674 006301 ASL R1 ;SHIFT 1ST DIGIT 62 015676 103016 BCC 4$ ;MUST BE ONE 63 015700 112722 000061 1$: MOVB #'1,(R2)+ ;TO DO THIS 64 015704 005204 INC R4 ;DISPLAY 0'S 65 015706 005305 2$: DEC R5 ;ONE LESS DIGIT 66 015710 005003 3$: CLR R3 ;FOR NEW DIGIT 67 000003 .REPT 3 ;3 TIMES/CHR 68 ASL R1 ;SET CARRY? 69 ROL R3 ;ROTATE IT IN 70 .ENDR 71 015726 001005 BNE 5$ ;IF IT'S ZERO 72 015730 005704 TST R4 ;IS IND SET? 73 015732 001004 BNE 6$ ;YES 74 015734 112722 000040 4$: MOVB #SPC,(R2)+ ;BLANK 75 015740 000404 BR 7$ 76 77 015742 005204 5$: INC R4 ;DISPLAY 0 78 015744 062703 000060 6$: ADD #'0,R3 ;ASCII 79 015750 110322 MOVB R3,(R2)+ ;STORE IN TBL 80 015752 077522 7$: SOB R5,3$ 81 015754 000506 BR COMXIT ;SAVE MEMORY 82 83 ;CONVERT THE DATA TO A DECIMAL VALUE 84 ;DISPLAY IN ASCII- DATA IS IN R0, STORE @R2 85 86 015756 DECBYT: SAVE R1,R3,R4,R5 ;SAVE 87 015766 SAVE R0 88 015770 012705 000003 MOV #3,R5 ;3 DIGITS ON BYTES 89 015774 012704 000004 MOV #4,R4 ;THE OFFSET TO "LST" 90 016000 042700 177400 BIC #177400,R0 ;ONLY THE BYTE 91 016004 000412 BR DIVDE 92 93 016006 BINDEC: SAVE R1,R3,R4,R5 ;MAY NEED LATER 94 016016 SAVE R0 95 016020 112722 000040 MOVB #SPC,(R2)+ ;DECIMAL IS 5 BYTES 96 016024 012705 000005 MOV #5,R5 97 016030 005004 CLR R4 ;LIST INDEX 98 016032 010001 DIVDE: MOV R0,R1 ;QUOTIENT TO ODD REG 99 016034 005003 CLR R3 ;BLANK CTR 100 016036 005000 1$: CLR R0 ;YOU SHALL RECEIVE 101 102 .IF EQ EIS ;EIS INSTRUCTION 103 2$: CMP DECLST(R4),R1 ;SUB UNTIL NEG 104 BHI 3$ ;TOO MUCH! 105 INC R0 ;ONCE EA TIME 106 SUB DECLST(R4),R1 ;RSTORE IT 107 BR 2$ ;TILL TOO SMALL 108 109 3$: TST R0 ;ANY AT ALL? 110 .IFF 111 016040 071064 016212' DIV DECLST(R4),R0 ;DIV BY LIST VALUE 112 .ENDC 113 114 016044 001005 BNE 4$ ;ANYTHING THERE? ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 19-2 DATA CONVERSION ROUTINES 115 016046 005703 TST R3 ;MORE SPACES 116 016050 001004 BNE 5$ ;BEEN A DIGIT? 117 016052 112722 000040 MOVB #40,(R2)+ ;NO, BLANK IT 118 016056 000404 BR 6$ 119 120 016060 005203 4$: INC R3 ;FLAG IT 121 016062 062700 000060 5$: ADD #'0,R0 ;MAKE IT ASCII 122 016066 110022 MOVB R0,(R2)+ ;STORE IN TABLE 123 016070 005724 6$: TST (R4)+ ;INC THE PNTR 124 016072 077517 SOB R5,1$ ;5 TIMES 125 016074 RSTORE R0 126 016076 000435 BR COMXIT ;COMMON CODE(SAVE MEM) 127 128 ;CONVERT THE ACCUMULATOR INPUT FROM 129 ;KEYBOARD TO A DECIMAL NUMBER 130 131 016100 DECBIN: SAVE R1,R3,R4,R5 132 016110 SAVE R2 133 016112 005046 CLR -(SP) ;DATA SAVE 134 016114 005005 CLR R5 ;DECLST(I) 135 016116 012702 000004 MOV #4,R2 ;4 TO SHIFT 136 016122 012703 016207' MOV #LSDIGT+3,R3 ;STOR AREA 137 016126 111363 000001 1$: MOVB (R3),1(R3) ;SHIFT LEFT 138 016132 016501 016212' MOV DECLST(R5),R1 ;MULTIPLY BY 139 016136 111304 MOVB (R3),R4 ;FETCH THE VAL 140 016140 042704 177400 BIC #177400,R4 ;MAKE SURE! 141 142 ;IF "EIS" IS NOT PRESENT 143 144 .IF EQ EIS 145 CLR -(SP) ;THE RESULT 146 2$: TST R4 ;= 0? 147 BEQ 4$ 148 3$: ADD R1,(SP) ;MULT BY ADD 149 SOB R4,3$ ;6 TIMES MAX 150 4$: MOV (SP)+,R1 151 .IFF 152 016144 070104 MUL R4,R1 ;BIN(BYTE) * LST 153 .ENDC 154 155 016146 060116 ADD R1,(SP) ;STORE IT 156 016150 005725 TST (R5)+ ;INC THE PNTR 157 016152 005303 DEC R3 ;FOR NEXT LS DIGIT 158 016154 077214 SOB R2,1$ 159 016156 110063 000001 MOVB R0,1(R3) ;BOTTOM DIGIT 160 016162 060016 ADD R0,(SP) ;ADD THE LAST 161 016164 012667 170166 MOV (SP)+,ACUM.L ;DONE 162 016170 RSTORE R2 163 016172 COMXIT: RSTORE R1,R3,R4,R5 164 016202 000207 RETURN 165 166 016204 000000 000000 000000 LSDIGT: 0,0,0 ;STORE THE DIGITS 167 016212 023420 001750 000144 DECLST: 10000.,1000.,100.,10.,1 ;GREAT IDEA! 168 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 20 ASCII TO BINARY ADDRESS CONVERTER 1 .SBTTL ASCII TO BINARY ADDRESS CONVERTER 2 3 ;THE ROUTINE ASSUMES THAT IF A....Z HAS BEEN 4 ;CHANGED .. A NEW SYMBOL HAS BEEN SELECTED 5 ;IS IT A VALID ADDRESS? 6 ;IF NOT, A....Z HAS NOT CHG'D 7 8 016224 012703 010416' ADRCVR: MOV #SYMTBL,R3 ;ADDRESS TO CONVERT 9 016230 012701 010544' MOV #ADRTBL,R1 ;FINISHED ADDR HERE 10 016234 012704 000044 MOV #36.,R4 ;# OF ITERATIONS 11 016240 011302 1$: MOV @R3,R2 ;A COPY! 12 016242 121227 000101 CMPB (R2),#'A ;TST IF SYMBOLIC CHG'D 13 016246 001006 BNE 2$ ;IF IT HASN'T CHG'D 14 016250 126227 000005 000132 CMPB 5(R2),#'Z ;"A----Z", SKIP IT 15 016256 001002 BNE 2$ ;HOPE THERE IS NO 16 016260 005011 CLR (R1) ;SYMBOL LIKE THAT! 17 016262 000425 BR 4$ ;CLR THE ADDRESS 18 19 ;ASCII TO BINARY CONVERTER 20 ;ASCII CODE..(R2) STORE @R1 21 22 016264 2$: SAVE R3,R4,R5 ;NEED THEM AGAIN 23 016272 012705 000006 MOV #6,R5 ;DIGITS 24 016276 112204 MOVB (R2)+,R4 ;TOP OF DIGIT 25 016300 042704 177776 BIC #177776,R4 ;MAY BE =1 26 016304 005305 DEC R5 ;6 TIMES 27 016306 112203 3$: MOVB (R2)+,R3 ;NEW CODE 28 016310 042703 177770 BIC #177770,R3 ;LEAVE THE OCT DIG 29 016314 006304 ASL R4 ;MAKE ROOM 30 016316 006304 ASL R4 ;IN THE REG 31 016320 006304 ASL R4 ;TO ADD 32 016322 060304 ADD R3,R4 ;THE NEW VALUE 33 016324 077510 SOB R5,3$ ;REPEAT 34 016326 010411 MOV R4,@R1 ;ADDR IS FIN 35 016330 RSTORE R3,R4,R5 36 016336 022123 4$: CMP (R1)+,(R3)+ ;NXT STORE ADR & ASCII ADR 37 016340 077441 SOB R4,1$ 38 016342 000207 RETURN 39 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 21 GENERATE A REPORT ON THE SYMBOLICS 1 .SBTTL GENERATE A REPORT ON THE SYMBOLICS 2 3 ;FETCH EACH ADDRESS, COMPARE DATA AGAINST PREVIOUS 4 ;VALUE ... NO CHANGE MEANS DO NOTHING 5 ;NEW VALUE UPDATES THE LIST AND IS CONVERTED 6 ;REPORT SYMBOLICS... TAKE DATA FROM ADDR 7 ;IN TBL(R1) AND CONVERT IT TO ASCII CODE FOR 8 ;DISPLAY. (R2) CONTAINS THE TBL ADR FOR THE 9 ;ASCII CONVERSION 10 11 016344 005001 RPTSYM: CLR R1 ;ADR TBL 12 016346 012703 010416' MOV #SYMTBL,R3 ;SYMBOLIC/DATA TBL 13 016352 105767 170030 TSTB BLNK.F ;BLINK CHANGING DATA? 14 016356 001407 BEQ 1$ 15 016360 105167 170022 COMB BLNK.F ;ALTERNATE DISPLAY 16 016364 105767 170017 TSTB BLNK.F+1 17 016370 100402 BMI 1$ ;NEG! 18 016372 105367 170011 DECB BLNK.F+1 19 016376 005761 010544' 1$: TST ADRTBL(R1) ;0?,NO ADDRESS THERE 20 016402 001530 BEQ 14$ ;GET NXT ONE! 21 016404 027161 010544' 013000' CMP @ADRTBL(R1),DATLST(R1);SAME? 22 016412 001003 BNE 2$ 23 016414 005767 172266 TST CHGFLG ;BEEN ANY CHG? 24 016420 001521 BEQ 14$ ;THEN SKIP IT! 25 016422 011302 2$: MOV @R3,R2 ;COPY! 26 016424 062702 000014 ADD #12.,R2 ;THE DATA AREA 27 016430 012705 000006 MOV #6,R5 ;6 BYTES 28 016434 017100 010544' MOV @ADRTBL(R1),R0 ;IS IT A FLG? 29 016440 020027 000001 CMP R0,#1 30 016444 001404 BEQ 4$ ;IT'S A FLG 31 016446 103033 BCC 8$ ;LARGER THAN 1 32 016450 012704 010743' 3$: MOV #FLGCLR,R4 ;SAY! CLR 33 016454 000405 BR 5$ 34 35 016456 020127 000106 4$: CMP R1,#70. ;ACCUMULATOR? 36 016462 001425 BEQ 8$ ;VALUE ONLY! 37 016464 012704 010734' MOV #FLGSET,R4 ;SAY! SET 38 39 ;SKIP THE FLAGS IF THEY ARE = AND SAVE TIME 40 41 016470 112422 5$: MOVB (R4)+,(R2)+ ;LOAD THE TABLE 42 016472 077502 SOB R5,5$ ;WITH 6 CHAR 43 016474 105767 167706 TSTB BLNK.F ;WANT IT TO BLINK? 44 016500 001413 BEQ 7$ ;NO 45 016502 100444 BMI 12$ ;DISPLAY IT FIRST 46 016504 105767 167677 TSTB BLNK.F+1 ;0? 47 016510 001407 BEQ 7$ ;BLNK CNT DONE! 48 016512 100003 BPL 6$ ;NOT YET 49 016514 116767 167666 167665 MOVB BLNK.F,BLNK.F+1 ;RELOAD 50 016522 016100 013000' 6$: MOV DATLST(R1),R0 ;DISPLAY "OLD" 51 016526 000432 BR 12$ 52 53 016530 010061 013000' 7$: MOV R0,DATLST(R1) ;MAKE THEM ALIKE 54 016534 000427 BR 12$ ;DO THE BYTES 55 56 016536 005767 172144 8$: TST CHGFLG ;ANY NEW COMMANDS? 57 016542 001003 BNE 9$ ;THEN DO IT ALL! ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 21-1 GENERATE A REPORT ON THE SYMBOLICS 58 016544 020061 013000' CMP R0,DATLST(R1) ;BUT DON'T REPEAT 59 016550 001445 BEQ 14$ ;SAVE TIME 60 016552 010061 013000' 9$: MOV R0,DATLST(R1) ;RELOAD IT 61 016556 005767 167612 TST HEXF.G ;OR HEX? 62 016562 001403 BEQ 10$ 63 016564 004767 177006 CALL BINHEX ;CONV BIN TO HEX 64 016570 000411 BR 12$ 65 66 016572 032767 000001 167576 10$: BIT #1,WRDF.G ;DEC WRD? 67 016600 001403 BEQ 11$ ;NO! 68 016602 004767 177200 CALL BINDEC ;DEFAULT! 69 016606 000402 BR 12$ 70 71 016610 004767 177040 11$: CALL BINASC ;TO ASCII WORD 72 016614 020227 010166' 12$: CMP R2,#SYM36+18. ;DON'T CONVERT BYTES 73 016620 001421 BEQ 14$ ;"MODE" DISPLAY AREA 74 016622 032767 000001 167550 BIT #1,BYTF.G ;WANT OCTAL BYTES TOO? 75 016630 001407 BEQ 13$ ;YES 76 016632 000300 SWAB R0 ;DO THE OTHER ONE 77 016634 004767 177116 CALL DECBYT ;CONVRT BYTES TO DEC. 78 016640 000300 SWAB R0 ;DO THE OTHER ONE 79 016642 004767 177110 CALL DECBYT ;LO ORDER BYT 80 016646 000406 BR 14$ 81 82 016650 13$: SAVE R0 ;HIBYTE WILL DESTROY 83 016652 004767 176630 CALL HIBYTE ;R0...NOW DO BYTES 84 016656 RSTORE R0 ;WE DON'T CARE 85 016660 004767 176624 CALL LOBYTE ;IF R0 GETS CLOBBERED 86 016664 022123 14$: CMP (R1)+,(R3)+ ;INC ADR TBL & DATA WRD 87 016666 020127 000124 CMP R1,#84. ;END ADR TBL? 88 016672 001241 BNE 1$ ;CHECK EACH ONE 89 016674 005067 172006 15$: CLR CHGFLG ;RESET IT 90 016700 000207 RETURN 91 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 22 THE SCREEN "WRITE" ROUTINE 1 .SBTTL THE SCREEN "WRITE" ROUTINE 2 3 ;FILE HAS BEEN UPDATED ... SEND 4 ;IT TO THE TO THE VIDEO TERMINAL 5 ;TAKES A FULL SECOND TO WRITE THIS 6 ;WE USUALLY ARE AT A BRKPNT SO THE 7 ;TIME DOES NOT MATTER, DATA CAN'T CHANGE 8 9 016702 REPORT: PRINT HOME ;CURSOR TO HOME 10 016712 016700 171500 MOV SYMTBL,R0 ;STRT DSPL HERE 11 016716 012705 000003 MOV #3,R5 ;# OF GROUPS 12 016722 012704 000004 1$: MOV #4,R4 ;# OF LINES 13 016726 012702 000003 2$: MOV #3,R2 ;# OF TABS +1 14 016732 010203 MOV R2,R3 ;# OF TIMES 15 016734 062700 000006 3$: ADD #6,R0 ;OFFSET TO SYM 16 016740 NUMCHR 6 ;OUTPUT 6 CHR'S 17 016754 PRINT SPC2 ;SPC,SPC 18 016764 NUMCHR 6 ;DATA WORD 19 017000 PRINT SPC1 ;SPC 20 017010 NUMCHR 3 ;HBT 21 017024 PRINT SPC1 ;SPC 22 017034 NUMCHR 3 ;LBT 23 017050 005302 DEC R2 ;3-SEQUENCES 24 017052 001404 BEQ 4$ ;SKIP SPCS 25 017054 PRINT SPC7 ;7 SPCS TO NXT ONE 26 017064 077355 4$: SOB R3,3$ ;3 PER LINE 27 017066 PRINT PCRLF ;1 LIN DONE 28 017076 077465 SOB R4,2$ ;4 LINES IN GRP 29 017100 PRINT BLANKS ;1 GRP DONE 30 017110 077574 SOB R5,1$ ;3 BIG GRPS 31 017112 005127 COM (PC)+ ;LAST GROUP 32 017114 000000 .WORD 0 ;ALTERNATE FLAG! 33 017116 001404 BEQ 5$ ;HAS ONLY 34 017120 005205 INC R5 ;2 LINES 35 017122 012704 000002 MOV #2,R4 ;GO TO IT 36 017126 000677 BR 2$ 37 38 017130 000207 5$: RETURN 39 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 23 MODIFY THE SYMBOL FILE PER USER REQUEST 1 .SBTTL MODIFY THE SYMBOL FILE PER USER REQUEST 2 3 ;INPUT THE SYMBOL LABEL NUMBER (1) TO (35) AND CALL TO 4 ;REPLACE "SYMBOL" WITH ONE SPECIFIED BY THE USER 5 ;THEN CONVERT ASCII ADDR TO BIN FOR THE ADDRESS TABLE. 6 7 017132 004767 177544 MODIFY: CALL REPORT ;WRITE PRESENT STUFF 8 017136 005067 171542 CLR OFFSET ;# HERE- CONVERT 9 017142 005004 CLR R4 ;# OF CHRS 10 017144 PRINT MODMSG ;USING UPDTBL, PRINT 11 017154 PRINT ERASE ;CLEAN SCREEN 12 017164 004767 176276 1$: CALL INCHAR ;IS MORE? IF NOT, WRITE 13 017170 120027 000072 CMPB R0,#72 ;PRINTABLE? 14 017174 103410 BCS 2$ ;DIGIT 15 017176 120027 000116 CMPB R0,#'N ;WANT OUT! 16 017202 001460 BEQ 5$ ;YES=N 17 017204 PRINT QUERIE ;ILLEG CHAR 18 017214 000746 BR MODIFY 19 20 017216 2$: OUTCHR ;ECHO IT 21 017222 162700 000060 SUB #'0,R0 ;0 TO 9? 22 017226 100417 BMI 4$ ;MAY BE ILLEGAL 23 017230 005204 INC R4 ;KEEP TRK OF CHR'S 24 017232 006300 ASL R0 ;WORD CNT 25 017234 020427 000002 CMP R4,#2 ;2ND DIG? 26 017240 103003 BCC 3$ ;YES 27 017242 010067 171436 MOV R0,OFFSET ;STORE IT 28 017246 000746 BR 1$ 29 30 017250 016701 171430 3$: MOV OFFSET,R1 ;X 10 ON 1ST DIG 31 32 ;EIS IS REQ'D HERE TOO 33 34 .IF EQ EIS 35 CALL MULT10 ;MULTI R1*10 36 .IFF 37 017254 070127 000012 MUL #10.,R1 ;1ST DIGIT 38 .ENDC 39 40 017260 060100 ADD R1,R0 ;TO 2ND DIG 41 017262 010067 171416 MOV R0,OFFSET 42 017266 162767 000002 171410 4$: SUB #2,OFFSET 43 017274 100716 BMI MODIFY ;LOWER THAN 0 44 017276 026727 171402 000106 CMP OFFSET,#70. ;OVER 35 SYMBOLS 45 017304 103312 BCC MODIFY ;CAN'T CHG 36(+) 46 017306 PRINT PCRLF ;SHOW ACTION! 47 017316 004767 000030 CALL CHGSYM ;CHANGE SYMBOL 48 017322 052767 010000 171352 BIS #B12,ONEFLG ;FLG FROM MODIFY! 49 017330 004767 000304 CALL CHGADR ;& ADDRESS 50 017334 042767 010000 171340 BIC #B12,ONEFLG ;NOW CLR IT! 51 017342 000673 BR MODIFY 52 53 017344 004767 176654 5$: CALL ADRCVR ;CONVERT ADDR TO BIN 54 017350 000207 RETURN 55 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 24 CHANGE THE SYMBOL FILE 1 .SBTTL CHANGE THE SYMBOL FILE 2 3 ;CHGE THE SYMBOL FILE AS DESIRED BY THE PROGRM'R 4 ;USES OFFSET TO FILE FROM "MODIFY" 5 6 017352 012704 000006 CHGSYM: MOV #6,R4 ;# OF CHAR'S TO CHANGE 7 017356 004767 000240 CALL LOADR0 ;SET INDEX 8 017362 060400 ADD R4,R0 ;"SYMBOL" 9 017364 010002 MOV R0,R2 ;COPY 10 017366 PRINT SYMBOL 11 017376 NUMCHR 6 ;OLD SYMBOL 12 017412 PRINT BACKUP ;WRITE OVER IT 13 14 017422 1$: INCHAR ;FETCH A CHAR 15 017426 120027 000101 CMPB R0,#'A ;IN RANGE? 16 017432 103425 BCS 3$ ;NOT ALPHA 17 017434 120027 000132 CMPB R0,#'Z ;NO LC 18 017440 101415 BLOS 2$ ;IN RANGE 19 017442 120027 000177 CMPB R0,#DEL ;DELETE THE PREVIOUS? 20 017446 001044 BNE 4$ ;NOT LEGAL 21 017450 PRINT DELETE ;SO DELETE IT 22 017460 020427 000006 CMP R4,#6 ;1ST CHAR? 23 017464 001756 BEQ 1$ ;POINTERS OK? 24 017466 005302 DEC R2 ;PUT PTR BACK 25 017470 005204 INC R4 ;INC CHR CTR 26 017472 000753 BR 1$ 27 28 017474 2$: OUTCHR ;PRINT IT 29 017500 110022 MOVB R0,(R2)+ ;STORE IT 30 017502 077431 SOB R4,1$ ;MUST BE 6 31 017504 000445 BR 7$ ;FINIS 32 33 017506 120027 000056 3$: CMPB R0,#'. ;A PERIOD? 34 017512 001770 BEQ 2$ 35 017514 120027 000044 CMPB R0,#'$ ;OR DOLLAR? 36 017520 001765 BEQ 2$ 37 017522 120027 000040 CMPB R0,#SPC ;LEGAL 38 017526 001762 BEQ 2$ 39 017530 120027 000015 CMPB R0,#CR ;OK! WITH 40 017534 001416 BEQ 5$ ;RESTRICTIONS 41 017536 020427 000006 CMP R4,#6 ;1ST CHR? 42 017542 001406 BEQ 4$ 43 017544 120027 000060 CMPB R0,#'0 ;WHAT WAS IT? 44 017550 103403 BCS 4$ ;KILL IT 45 017552 120027 000072 CMPB R0,#72 ;WAS IT DIGIT? 46 017556 103746 BCS 2$ 47 017560 4$: PRINT QUERIE ;NO COMPRENDE! 48 017570 000714 BR 1$ 49 50 017572 020427 000006 5$: CMP R4,#6 ;1ST CHR? 51 017576 001410 BEQ 7$ ;SAME AS BEFORE 52 017600 005704 TST R4 ;ALL SIX? 53 017602 001406 BEQ 7$ ;YES 54 017604 112700 000040 6$: MOVB #SPC,R0 ;LEFT JUSTIFIED 55 017610 OUTCHR ;ONLY 56 017614 110022 MOVB R0,(R2)+ ;FILL IT UP 57 017616 077406 SOB R4,6$ ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 24-1 CHANGE THE SYMBOL FILE 58 017620 000207 7$: RETURN 59 60 017622 012700 010416' LOADR0: MOV #SYMTBL,R0 ;AN INDEX PTR 61 017626 066700 171052 ADD OFFSET,R0 ;+ OFFSET 62 017632 011000 MOV @R0,R0 ;R0 IS THE PTR 63 017634 010002 MOV R0,R2 ;A COPY 64 017636 000207 RETURN 65 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 25 CHANGE THE ADDRESS 1 .SBTTL CHANGE THE ADDRESS 2 3 ;CHANGE ADDRESS - CONVERT ASCII INPUT 4 ;TO BINARY AND STUFF TBL'S, ALLOWS OPER 5 ;TO SPECIFY MEM LOC FOR DATA MONITORING 6 ;IF "SYMBOL" SPECIFIED IS A GLOBAL.. 7 ;SEARCH FINDS IT'S ADDR & STORES IT 8 9 017640 004767 000276 CHGADR: CALL SEARCH ;SRCH THE LINK MAP 10 017644 103535 BCS 9$ ;ADDR WAS FOUND 11 017646 005004 CLR R4 ;DIGITS 12 017650 004767 177746 CALL LOADR0 ;INDEX 13 017654 PRINT PCRLF 14 017664 PRINT ADDRESS ;REMINDER 15 017674 NUMCHR 6 ;THE OLD ONE 16 017710 PRINT BACKUP ;WRITE OVER IT 17 18 017720 1$: INCHAR 19 017724 120027 000070 CMPB R0,#70 ;TST FOR NUMERALS 20 017730 103414 BCS 2$ 21 017732 120027 000177 CMPB R0,#DEL ;ERROR? 22 017736 001017 BNE 3$ ;NO 23 017740 005704 TST R4 ;0? 24 017742 001766 BEQ 1$ ;NXT CHR 25 017744 PRINT DELETE ;ERASE IT 26 017754 005302 DEC R2 ;RESET PNTRS 27 017756 005304 DEC R4 28 017760 000757 BR 1$ 29 30 017762 120027 000015 2$: CMPB R0,#CR ;DONE? 31 017766 001424 BEQ 5$ ;YES 32 017770 120027 000060 CMPB R0,#'0 ;NUMERO? 33 017774 103005 BCC 4$ ;UNO-SIETE 34 017776 3$: PRINT QUERIE ;ILLEG CHR 35 020006 000744 BR 1$ 36 37 020010 4$: OUTCHR 38 020014 110022 MOVB R0,(R2)+ ;STUFF TBL 39 020016 005204 INC R4 ;CTR 40 020020 020427 000006 CMP R4,#6 ;NEED SIX 41 020024 001335 BNE 1$ 42 020026 126227 177772 000062 CMPB -6(R2),#'2 ;STAY IN RANGE 43 020034 103441 BCS 9$ 44 020036 000422 BR 8$ ;6 DONE 45 46 020040 005704 5$: TST R4 ;SAME ADR AS BEFORE? 47 020042 001436 BEQ 9$ ;NONE ENTERED! 48 020044 012705 000006 MOV #6,R5 ;TOTAL CNT 49 020050 160405 SUB R4,R5 50 020052 SAVE R3 51 020054 010203 MOV R2,R3 ;COPY 52 020056 060502 ADD R5,R2 ;ADD DIFF IN CNTS 53 020060 012705 000006 MOV #6,R5 54 020064 114342 6$: MOVB -(R3),-(R2) ;SHIFT POSITIONS 55 020066 005305 DEC R5 56 020070 077403 SOB R4,6$ 57 020072 112742 000060 7$: MOVB #'0,-(R2) ;STUFF WITH 0 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 25-1 CHANGE THE ADDRESS 58 020076 077503 SOB R5,7$ 59 020100 RSTORE R3 60 020102 000416 BR 9$ 61 62 020104 8$: PRINT PCRLF ;ONLY 6 CHR 63 020114 PRINT SCRUUP ;MUST BE IN RANGE 64 020124 PRINT PCRLF ;177777 65 020134 000167 177500 JMP CHGADR 66 67 020140 000207 9$: RETURN 68 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 26 SEARCH FOR THE ADDRESS IN THE LINKMAP 1 .SBTTL SEARCH FOR THE ADDRESS IN THE LINKMAP 2 3 ;COPY LINKMAP INTO MEMORY, IN SECTIONS IF NEC. 4 ;SRCH MAP FOR GLOBALS IN THE SYMBOL FILE & 5 ;RETURN WITH THE "CARRY" SET IF IT FINDS THEM 6 ;.CSISPC INPUTS LINKMAP "SPEC". SETB ONEFLG+1 7 ;IF SUCCESSFUL, & CHNGE SYMBOL ADDR(S) IN FILE. 8 ;SUBR SETS ONEFLG+1 TO MINUS IF UNSUCCESFUL 9 ;IN SEARCH FOR LINK MAP 10 ;SETB ONEFLG NEG IF MAP MUST BE READ IN SECTIONS 11 ;B12 IS SET IF SEARCH IS ENTERED FROM "MODIFY" 12 ;ONLY A SINGLE SEARCH IS REQUIRED! 13 ;CARRY IS CLR IF SYMBOLIC NOT FOUND 14 15 020142 105767 170535 SEARCH: TSTB ONEFLG+1 ;HERE BEFORE? 16 020146 001440 BEQ 3$ ;ONCE ONLY! 17 020150 100002 BPL 1$ 18 020152 000167 000776 JMP OUT1 ;CLR CARRY 19 20 020156 105767 170520 1$: TSTB ONEFLG ;SPACE AVAIL 21 020162 100024 BPL 2$ 22 020164 116701 172743 MOVB NUMBLK,R1 ;BLKS TO XFER 23 24 .IF EQ EIS 25 CALL MUL256 ;MULT R1*256 26 .IFF 27 020170 070127 000400 MUL #256.,R1 ;WORDS 28 .ENDC 29 30 020174 005067 172730 CLR BLKCNT 31 020200 .READW #LIST,#3,HIMEM,R1,#0;READ IN BASE 32 020234 032767 010000 170440 2$: BIT #B12,ONEFLG ;FROM MODIFY? 33 020242 001573 BEQ SETUP 34 020244 000167 000400 JMP TEST1 ;TST ONLY ONE 35 36 ;FIND OUT HOW MUCH "MEMORY SPACE" & GET THE FIL SPEC 37 38 020250 013746 000054 3$: MOV @#54,-(SP) ;STRT OF RMON 39 020254 062716 000266 ADD #266,(SP) ;OFFSET TO USR AREA 40 020260 013667 172642 MOV @(SP)+,MEMAVL ;STRT OF USR 41 020264 163767 000050 172634 SUB @#50,MEMAVL ;BYTES FREE SPACE 42 020272 162767 000002 172626 SUB #2,MEMAVL ;ACCOUNT FOR "MAP" 43 020300 000241 CLC ;LOAD AREA 44 020302 006067 172620 ROR MEMAVL ;WORDS 45 020306 4$: PRINT DEVFIL 46 020316 .CSISPC #OUTSPC,#DEFTYP,#0;GET FILNAME 47 020332 005206 INC SP ;IT'S OFF BY 2 48 020334 005206 INC SP ;BUT DON'T CHG "C" 49 020336 103500 BCS 9$ 50 020340 105267 170337 5$: INCB ONEFLG+1 ;SUCCESSFUL 51 020344 .LOOKUP #LIST,#3,#MAPFIL;OPEN FILE 52 020364 103465 BCS 9$ ;AN ERROR! 53 020366 010067 172540 MOV R0,TOTBLK ;# OF BLKS 54 020372 110067 172535 6$: MOVB R0,NUMBLK ;SAVE IT 55 020376 010001 MOV R0,R1 ;COPY #BLKS 56 57 ;HOW MUCH ROOM IS REQ'D? ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 26-1 SEARCH FOR THE ADDRESS IN THE LINKMAP 58 59 .IF EQ EIS 60 CALL MUL256 ;THE HARD WAY 61 .IFF 62 020400 070127 000400 MUL #256.,R1 ;# WORDS 63 .ENDC 64 020404 020167 172516 CMP R1,MEMAVL ;SPC AVAIL? 65 020410 103412 BCS 8$ ;THERE'S ROOM 66 020412 105767 170264 TSTB ONEFLG ;+ = /2 67 020416 100002 BPL 7$ ;- = SUB 1 68 020420 077014 SOB R0,6$ ;TILL IT FITS 69 020422 000452 BR 10$ ;IF IT DON'T 70 71 020424 006200 7$: ASR R0 ;DIV/2 72 020426 052767 000200 170246 BIS #200,ONEFLG ;WON'T FIT 73 020434 000756 BR 6$ ;TRY AGAIN 74 75 ;READ IT 76 77 020436 010167 172464 8$: MOV R1,MEMAVL ;WORDS 78 020442 006367 172460 ASL MEMAVL ;TO BYTES 79 020446 013767 000050 172450 MOV @#50,HIMEM ;LOAD LOCATION 80 020454 062767 000002 172442 ADD #2,HIMEM ;IS "ABOVE" PRGRM 81 020462 066767 172436 172436 ADD HIMEM,MEMAVL ;DENOTES TOP OF MAP 82 020470 .READW #LIST,#3,HIMEM,R1,#0;READ IT ABOVE THE PRGM 83 020524 103016 BCC 11$ 84 020526 PRINT NRFMSG ;NO FILE OR ? 85 020536 000404 BR 10$ 86 87 020540 9$: PRINT NOFIL 88 020550 152767 000200 170125 10$: BISB #200,ONEFLG+1 ;MAKE MINUS 89 020556 000167 000374 JMP OUT2 ;CAN'T CONTINUE 90 91 020562 105767 170114 11$: TSTB ONEFLG ;DID IT FIT? 92 020566 100421 BMI SETUP ;IN SECTIONS ONLY 93 020570 .CLOSE #3 ;DONE WITH IT 94 95 ;ONLY USED IF THE ENTIRE MAP CAN BE READ TO MEMORY 96 ;NO POINT IN SEARCHING THE "SPECS" EACH TIME 97 98 020576 013701 000050 FIND: MOV @#50,R1 ;START HERE 99 020602 012702 011152' 1$: MOV #TSTCHR,R2 ;TST CHARACTERS 100 020606 005004 CLR R4 ;A CHR CTR 101 020610 122122 2$: CMPB (R1)+,(R2)+ ;CHAR THE SAME 102 020612 001373 BNE 1$ ;NO, STRT OVER 103 020614 005204 INC R4 ;CHAR CNT 104 020616 020427 000006 CMP R4,#6 ;MUST MATCH 6 105 020622 103772 BCS 2$ ;CHK AGAIN 106 020624 160401 SUB R4,R1 ;1 ST SYMBOLIC 107 020626 010167 172272 MOV R1,HIMEM ;TEST FROM HERE ON 108 109 ;ENTER AT SETUP FOR A FULL SEARCH OF ADDRESSES 110 ;AT "TEST1" FOR INDIVIDUAL SYMBOLIC " 111 ;DON'T REPORT UNFOUND SYMBOLS, PRGM TOO BIG 112 ;ALREADY. ALL GLOBALS WILL BE FOUND 113 114 020632 005067 172276 SETUP: CLR SYMF.D ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 26-2 SEARCH FOR THE ADDRESS IN THE LINKMAP 115 020636 112767 000044 172271 TEST36: MOVB #36.,SYMCNT ;36 IN SYMBOL FILE 116 020644 005067 170034 TSTALL: CLR OFFSET ;SETUP CONDITIONS 117 020650 004767 176746 TEST1: CALL LOADR0 118 020654 062700 000006 ADD #6,R0 ;POINT TO THE SYMBOL 119 020660 016705 172240 MOV HIMEM,R5 ;START TEST HERE 120 020664 010003 1$: MOV R0,R3 ;ANOTHER COPY 121 020666 005004 CLR R4 ;CHR CTR 122 020670 122523 2$: CMPB (R5)+,(R3)+ ;MEMORY VS SYMBOL TBL 123 020672 001427 BEQ 6$ 124 020674 020567 172226 CMP R5,MEMAVL ;TOP OF THE LOAD 125 020700 103405 BCS 3$ ;NO! 126 020702 032767 010000 167772 BIT #B12,ONEFLG ;YES 127 020710 001441 BEQ 9$ ;IT'S A FULL SEARCH 128 020712 000452 BR 10$ ;NXT SECTION? 129 130 020714 121527 000050 3$: CMPB (R5),#50 ;IS IT "(" ? 131 020720 001003 BNE 4$ 132 020722 062705 000026 ADD #22.,R5 ;SKIP SPECS! 133 020726 000756 BR 1$ 134 135 ;IF IT MISSES, SKIP THE ADDRESS 136 137 020730 126527 177777 000101 4$: CMPB -1(R5),#'A ;ALPHA/NUMERIC? 138 020736 103752 BCS 1$ 139 020740 162704 000011 5$: SUB #9.,R4 ;ANY MATCH? 140 020744 005104 COM R4 ;STEP (9-(R4)) 141 020746 060405 ADD R4,R5 ;HELP SPEED UP 142 020750 000745 BR 1$ ;THE SEARCH 143 144 020752 005204 6$: INC R4 ;< 6 145 020754 020427 000006 CMP R4,#6 ;MUST ALL MATCH 146 020760 103743 BCS 2$ ;< 6! 147 020762 122527 000060 7$: CMPB (R5)+,#'0 ;A NUMBER? 148 020766 103775 BCS 7$ ;PRINTABLE? 149 020770 005305 DEC R5 ;PNTR 150 020772 112522 8$: MOVB (R5)+,(R2)+ ;STORE AT "ADDREZ" 151 020774 077402 SOB R4,8$ 152 020776 000261 SEC ;IT WAS THERE! 153 021000 032767 010000 167674 BIT #B12,ONEFLG ;ONE ONLY? 154 021006 001063 BNE OUT2 ;YES 155 021010 105267 172120 INCB SYMF.D 156 021014 126727 172114 000044 9$: CMPB SYMF.D,#36. ;ANY MISSING 157 021022 103055 BCC OUT2 158 021024 062767 000002 167652 ADD #2,OFFSET ;GET THE NXT 159 021032 105367 172077 DECB SYMCNT ;DO 36 TIMES 160 021036 001304 BNE TEST1 161 021040 105767 167636 10$: TSTB ONEFLG ;MAP SECTIONED? 162 021044 100043 BPL OUT1 ;NO, IT'S NOT 163 021046 116701 172061 11$: MOVB NUMBLK,R1 ;TO TRANSFER 164 021052 060167 172052 ADD R1,BLKCNT ;ONES READ 165 021056 126767 172046 172046 CMPB BLKCNT,TOTBLK ;READ THEM ALL? 166 021064 103034 BCC OUT2 ;YES! 167 168 ;BLK COUNT * 256 169 170 .IF EQ EIS 171 CALL MUL256 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 26-3 SEARCH FOR THE ADDRESS IN THE LINKMAP 172 .IFF 173 021066 070127 000400 MUL #256.,R1 ;FIND # OF WRDS 174 .ENDC 175 176 021072 .READW #LIST,#3,HIMEM,R1,BLKCNT 177 021130 103405 BCS 12$ 178 021132 032767 010000 167542 BIT #B12,ONEFLG ;DO IT OVER 179 021140 001243 BNE TEST1 180 021142 000635 BR TEST36 181 182 021144 12$: PRINT NRFMSG ;READ ERROR 183 021154 000241 OUT1: CLC 184 021156 000207 OUT2: RETURN 185 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 27 LTC "INTERRUPT" PROCESSING 1 .SBTTL LTC "INTERRUPT" PROCESSING 2 3 ;"REPORT" THAT PERFORMS DYNAMIC OUTPUT TO 4 ;THE CRT ON AN INTERRUPT BASIS. REQUIRES 5 ;A MINIMUM SHARE OF ITERATION TIME 6 ;INTFLG INHIBITS DATA UPDATE UNTIL CYCLE 7 ;IS FINISHED. DOES NOT OUTPUT SYMBOLICS!! 8 ;SERV VEC WAS CHG'D TO THE SERVICE ROUTINE 9 ;THAT OUTPUTS SUCCESSIVE "DATA BYTES" UNTIL 10 ;ALL IS DONE. 11 12 021160 005767 165176 INTRPT: TST DYNF.G ;;;IN PROGR? 13 021164 001005 BNE 1$ 14 021166 005067 171744 CLR ONCE ;;;RESET ALL 15 021172 005067 171742 CLR LINOUT2 16 021176 000551 BR XITINT ;;;LEAVE 17 18 021200 105767 171733 1$: TSTB INTFLG ;;;COND? 19 021204 100546 BMI XITINT ;;;LINE IN PROGRESS! 20 21 ;SETUP FOR SNGLE LINE AT A TIME TO "DATA" 22 ;(LINE BUFFER). CLEAN SCREEN ONCE 23 24 021206 PROCES: SAVE ;;;SAVE ALL 25 021222 105767 171710 TSTB ONCE ;;;CLEAR SCR? 26 021226 001007 BNE 1$ 27 021230 105267 171702 INCB ONCE ;;;DO IT 28 021234 105037 177564 CLRB @#TPS 29 021240 004767 175436 CALL REPORT ;;;ONE TIME 30 021244 000404 BR 2$ 31 32 021246 126727 171666 000014 1$: CMPB LINOUT2,#12. ;;;12TH ROW? 33 021254 103410 BCS 3$ 34 35 ;START OVER 36 37 021256 004767 175062 2$: CALL RPTSYM ;;;DATA UPDATE 38 021262 112767 177777 171650 MOVB #-1,LINOUT2 39 021270 012767 013144' 171644 MOV #TABLE,TBLNDX ;;;TOP OF IT 40 021276 105267 171636 3$: INCB LINOUT2 41 021302 126727 171632 000014 CMPB LINOUT2,#12. ;;;LAST LINE? 42 021310 103423 BCS 5$ 43 021312 105767 171620 TSTB ONCE ;;;CLR'D ONCE? 44 021316 100411 BMI 4$ 45 021320 105167 171612 COMB ONCE 46 021324 112767 000006 171607 MOVB #6,LCHRCT ;;;6 ON LAST BUNCH 47 021332 012767 013344' 171714 MOV #LBUNCH,NXTBYT ;;;CLR SCREEN 48 021340 000455 BR 11$ 49 50 021342 112767 000002 171571 4$: MOVB #2,LCHRCT ;;;NO REG ARE 51 021350 012767 013350' 171676 MOV #GOHOME,NXTBYT ;;;DISPLAYED 52 021356 000446 BR 11$ 53 54 ;54 CHARS/LINE INCLUDING ESC SEQUENCES 55 56 021360 112767 000066 171553 5$: MOVB #54.,LCHRCT ;;;CHR @ LINE 57 021366 012767 013256' 171660 MOV #LINBUF,NXTBYT ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 27-1 LTC "INTERRUPT" PROCESSING 58 021374 116701 171540 MOVB LINOUT2,R1 ;;;INDEX 59 021400 116167 013352' 171652 MOVB LINE(R1),ROW ;;;NEW ROW 60 021406 012704 000003 6$: MOV #3,R4 ;;;3 "DATA" SEQS 61 021412 012703 013262' MOV #LINBUF+4,R3 ;;;TO HERE 62 021416 017701 171520 7$: MOV @TBLNDX,R1 ;;;ADR OF SYMBOL 63 021422 062701 000014 ADD #12.,R1 ;;;POINT TO DATA 64 021426 012702 000006 MOV #6,R2 ;;;XFER 14 BYTES 65 021432 112123 8$: MOVB (R1)+,(R3)+ ;;;TO BUFFER 66 021434 077202 SOB R2,8$ 67 021436 012705 000002 MOV #2,R5 ;;;NXT-TWICE 68 021442 012702 000003 9$: MOV #3,R2 ;;;THREE CHR 69 021446 112723 000040 MOVB #40,(R3)+ ;;;SPC 70 021452 112123 10$: MOVB (R1)+,(R3)+ ;;;DATA CHRS 71 021454 077202 SOB R2,10$ ;;;6 72 021456 077507 SOB R5,9$ ;;;+SPCS 73 021460 062767 000002 171454 ADD #2,TBLNDX ;;;NXT SYMBOL 74 021466 062703 000004 ADD #4,R3 75 021472 077427 SOB R4,7$ 76 021474 112737 000100 177564 11$: MOVB #100,@#TPS ;;;INT ENABLE 77 021502 105167 171431 COMB INTFLG ;;;INHIBIT REENTRY 78 021506 RSTORE 79 021522 000137 XITINT: .WORD 137 ;;;JUMP TO 80 021524 000000 SAV100: 0 ;;;USER?..PGM 81 82 ;INTERRUPT PROCESSING OF "DATA" ONLY TO 83 ;DYNAMIC DISPLAY, MINIMIZES EXEC TIME 84 ;DON'T BOTHER WITH STATUS, IT CAUSED THE INT 85 86 021526 105367 171407 INPROC: DECB LCHRCT ;;;IS LAST 87 021532 100005 BPL 1$ ;;;CHARACTER 88 021534 105067 171377 CLRB INTFLG ;;;DONE? THEN 89 021540 105037 177564 CLRB @#TPS ;;;DISABLE INT 90 021544 000405 BR 2$ 91 92 021546 117737 171502 177566 1$: MOVB @NXTBYT,@#TPB ;;;CHR TBL 93 021554 005267 171474 INC NXTBYT ;;;CHR ADR 94 021560 000002 2$: RTI 95 96 000432' .END O.ODT ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 27-2 Symbol table ACCF.G 006404R 002 EXIT 000776R 002 MTPS = 106400 O.DOT 006212R 002 O.RSTT 004674R 002 ACUM.L 006356RG 002 FAIL 014206R 002 NOFIL 011205R 002 O.EFF 003522R 002 O.RST1 000662R 002 ADDRES 011037R 002 FFLG.0 006410RG 002 NRFMSG 011127R 002 O.ERR 002416R 002 O.RTIT 004066R 002 ADRCVR 016224R 002 FFLG.1 006412RG 002 NUMBLK 013133R 002 O.ERR1 003516R 002 O.S 006222R 002 ADREND 010670R 002 FFLG.2 006414RG 002 NUMCHR 015450R 002 O.ERR2 003112R 002 O.SCAN 002462R 002 ADRTBL 010544R 002 FFLG.3 006416RG 002 NUMFLG 010700R 002 O.ERR3 003076R 002 O.SCN1 002466R 002 AD1FLG 010674R 002 FFLG.4 006420RG 002 NXTBYT 013254R 002 O.FILL 002350R 002 O.SCRN 006234R 002 AD2FLG 010676R 002 FFLG.5 006422RG 002 OFFSET 010704R 002 O.FIL1 002356R 002 O.SEMI 002670R 002 AREA 006350R 002 FFLG.6 006424RG 002 ONCE 013136R 002 O.FORM 000322R 002 O.SEQ 006220R 002 BACKUP 010762R 002 FFLG.7 006426RG 002 ONEFLG 010702R 002 O.FTMP 005334R 002 O.SI2 001654R 002 BEL = 000007 FFLG.8 006430RG 002 OUTCHR 015434R 002 O.GETC 005204R 002 O.SMFD 006230R 002 BINASC 015654R 002 FFLG.9 006432RG 002 OUTSPC 012662R 002 O.GO 003734R 002 O.SNGL 001624R 002 BINDEC 016006R 002 FILPTR 010724R 002 OUT1 021154R 002 O.GO2 004034R 002 O.ST 005560R 002 BINHEX 015576R 002 FIND 020576R 002 OUT2 021156R 002 O.HI = 000316R 002 O.STM = 000340 BKPT.0 000344RG 002 FLGCLR 010743R 002 O.ADR1 000344R 002 O.H1 002200R 002 O.STM1= 140340 BKPT.1 000346RG 002 FLGSET 010734R 002 O.ALF 001020R 002 O.ID 006235R 002 O.STRT 000476R 002 BKPT.2 000350RG 002 GOHOME 013350R 002 O.ALF1 006231R 002 O.IDND= 006254R 002 O.SVR 004520R 002 BKPT.3 000352RG 002 HEXF.G 006374RG 002 O.ALF2 006232R 002 O.INIT 002406R 002 O.SVTT 004640R 002 BKPT.4 000354RG 002 HEXTBL 013415R 002 O.ALF3 006233R 002 O.LG = 000020 O.T 006223R 002 BKPT.5 000356RG 002 HIBYTE 015506R 002 O.BACK 003226R 002 O.LGCH 006273R 002 O.TBIT 004002R 002 BKPT.6 000360RG 002 HIMEM 013124R 002 O.BD 006256R 002 O.LGDR 002600R 002 O.TBT = 000020 BKPT.7 000362RG 002 HME = 000110 O.BIAS 006260R 002 O.LGL = 000070 O.TCLS 001574R 002 BLANKS 010771R 002 HOME 010752R 002 O.BKP = 000016 O.LOC 005450R 002 O.TCL2 001620R 002 BLKCNT 013130R 002 INCHAR 015466R 002 O.BKPT 003250R 002 O.LOW 000314R 002 O.TCSR= 177564 BLNK.F 006406RG 002 INPROC 021526R 002 O.BK1 004216R 002 O.MIN 002202R 002 O.TDB = 177566 BRKF.G 006372RG 002 INST.0 000410RG 002 O.BRK 004200R 002 O.MINS 006262R 002 O.TL 006327R 002 BS = 000010 INST.1 000412RG 002 O.BW 006206R 002 O.MIN1 002206R 002 O.TMP1 006264R 002 BUFFER 006410R 002 INST.2 000414RG 002 O.BYT 002720R 002 O.MOD 001312R 002 O.TMP2 006266R 002 BYTF.G 006400RG 002 INST.3 000416RG 002 O.BYT1 002716R 002 O.MSK 000312R 002 O.TRTC 006354R 002 BYTTBL 013366R 002 INST.4 000420RG 002 O.CAD 006210R 002 O.ODT 000432RG 002 O.TVEC= 000014 B12 = 010000 INST.5 000422RG 002 O.CADV 004774R 002 O.OFST 003412R 002 O.TYPE 005310R 002 B9 = 001000 INST.6 000424RG 002 O.CCSP 001017R 002 O.OLD 003102R 002 O.TYP1 005202R 002 CHGADR 017640R 002 INST.7 000426RG 002 O.CCST 001016R 002 O.OP1 003106R 002 O.UIN 000410R 002 CHGFLG 010706R 002 INTFLG 013137R 002 O.CLGT= 000034 O.OP2 003146R 002 O.UPC 000304R 002 CHGSYM 017352R 002 INTRPT 021160R 002 O.CLRR 005070R 002 O.OP2A 003154R 002 O.UR0 000266R 002 CLRSCR 010755R 002 JSW = 000044 O.CLSE 005606R 002 O.ORAB 001542R 002 O.USP 000302R 002 CLSEFL 014344R 002 KBDSRV 014526R 002 O.CMFD 006227R 002 O.ORPC 001516R 002 O.UST 000306R 002 COEFF 006200R 002 LBUNCH 013344R 002 O.CNS 002130R 002 O.ORRB 001552R 002 O.WB1 002726R 002 COMXIT 016172R 002 LCHRCT 013141R 002 O.CNST 000320R 002 O.P 006224R 002 O.WDFG 006221R 002 CR = 000015 LF = 000012 O.COMM 001660R 002 O.PCS 001530R 002 O.WDS 003530R 002 C1.XM = 010000 LINBUF 013256R 002 O.CR 006270R 002 O.PRI 000310R 002 O.WRD 002706R 002 DATLST 013000R 002 LINE 013352R 002 O.CRET 003066R 002 O.PROC 004070R 002 O.WRD1 002764R 002 DECBIN 016100R 002 LINOUT 013140R 002 O.CRLF 005640R 002 O.PUTC 005122R 002 O.WSCH 003526R 002 DECBYT 015756R 002 LIST 012662R 002 O.CRLS 005646R 002 O.RALL 003354R 002 O.WST 005436R 002 DECLST 016212R 002 LOADR0 017622R 002 O.CRS 005652R 002 O.RCMP 002210R 002 O.XXX 006214R 002 DEFE.R 006402R 002 LOBYTE 015510R 002 O.CSR1 006225R 002 O.RCSR= 177560 O.XXY 006216R 002 DEFTYP 012660R 002 LSDIGT 016204R 002 O.CSR2 006226R 002 O.RDB = 177562 PACK00 005776R 002 DEL = 000177 LUPFIN 014304R 002 O.CT 000366R 002 O.REGT 001240R 002 PCRLF 010773R 002 DELETE 011012R 002 MAPFIL 012720R 002 O.CTLC 000762R 002 O.REL 001706R 002 PRINT 015414R 002 DEVFIL 011160R 002 MEMAVL 013126R 002 O.CU 005354R 002 O.RELT 000324R 002 PROCES 021206R 002 DIVDE 016032R 002 MENF.G 010672RG 002 O.CU1 005366R 002 O.REM 004742R 002 QUERIE 011006R 002 DYNF.G 006362RG 002 MENU 011226R 002 O.C1 004136R 002 O.RLR = 000016 QUES = 000077 EIS = 000001 MFPS = 106700 O.DCD 002426R 002 O.RORA 005664R 002 RDFF.G 006370RG 002 ENSCR = 000112 MODF.G 006364RG 002 O.DCDA 003072R 002 O.RRST 005426R 002 RDFILE 014134R 002 ENTROK 014222R 002 MODIFY 017132R 002 O.DCDB 003352R 002 O.RSB 004610R 002 REPORT 016702R 002 ERASE 010757R 002 MODMSG 011057R 002 O.DCD1 002456R 002 O.RSR 004556R 002 ROW 013260R 002 ESC = 000033 MONSAV 010710R 002 O.DCD3 002436R 002 O.RST 000624R 002 RPTF.G 006360RG 002 ODT V01.09 ;IF YOU MACRO V05.00 Tuesday 09-Oct-84 07:15 Page 27-3 Symbol table RPTSYM 016344R 002 ST = 177776 SYM15 007154R 002 SYM35 010114R 002 TPB = 177566 RREG.0 000324RG 002 SYMBOL 011046R 002 SYM16 007204R 002 SYM36 010144R 002 TPS = 177564 RREG.1 000326RG 002 SYMCNT 013135R 002 SYM17 007234R 002 SYM37 010174R 002 TPSPRI= 000066 RREG.2 000330RG 002 SYMEND 010414R 002 SYM18 007264R 002 SYM38 010224R 002 TPSVEC= 000064 RREG.3 000332RG 002 SYMF.D 013134RG 002 SYM19 007314R 002 SYM39 010254R 002 TRT = 000003 RREG.4 000334RG 002 SYMTBL 010416R 002 SYM20 007344R 002 SYM40 010304R 002 TSTALL 020644R 002 RREG.5 000336RG 002 SYM01 006434R 002 SYM21 007374R 002 SYM41 010334R 002 TSTCHR 011152R 002 RREG.6 000340RG 002 SYM02 006464R 002 SYM22 007424R 002 SYM42 010364R 002 UNPA00 006100R 002 RREG.7 000342RG 002 SYM03 006514R 002 SYM23 007454R 002 TABLE 013144R 002 V08ATT 013636R 002 RSTSYS 014444R 002 SYM04 006544R 002 SYM24 007504R 002 TBLEND 010542R 002 V08SRV 013706R 002 SAVSYS 014412R 002 SYM05 006574R 002 SYM25 007534R 002 TBLNDX 013142R 002 V8STRT 013436R 002 SAV100 021524R 002 SYM06 006624R 002 SYM26 007564R 002 TEST1 020650R 002 WRDF.G 006376RG 002 SCRUUP 011016R 002 SYM07 006654R 002 SYM27 007614R 002 TEST36 020636R 002 WRFILE 014156R 002 SEARCH 020142R 002 SYM08 006704R 002 SYM28 007644R 002 TKB = 177562 WRTMSG 011110R 002 SETMOD 015266R 002 SYM09 006734R 002 SYM29 007674R 002 TKS = 177560 XITINT 021522R 002 SETUP 020632R 002 SYM10 006764R 002 SYM30 007724R 002 TKSPRI= 000062 $CNFG1= 000300 SPC = 000040 SYM11 007014R 002 SYM31 007754R 002 TKSVEC= 000060 $VIRT = 000000 SPC1 011004R 002 SYM12 007044R 002 SYM32 010004R 002 TMPF.G 006366RG 002 ...V1 = 000003 SPC2 011003R 002 SYM13 007074R 002 SYM33 010034R 002 TOTBLK 013132R 002 ...V2 = 000027 SPC7 010776R 002 SYM14 007124R 002 SYM34 010064R 002 . ABS. 000000 000 (RW,I,GBL,ABS,OVR) 000000 001 (RW,I,LCL,REL,CON) $ODT$ 021562 002 (RW,I,LCL,REL,CON) Errors detected: 1 *** Assembler statistics Work file reads: 0 Work file writes: 0 Size of work file: 10808 Words ( 43 Pages) Size of core pool: 16128 Words ( 63 Pages) Operating system: RT-11 Elapsed time: 00:03:00.17 ,DL:ODTV09=DK:ODTV09