.MAIN. CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 CONDEF.M80 TABLE OF CONTENTS 3 *CONSOLE ERROR CODES DEFINED* 56 ****NUMERICAL VALUE ASSIGNMENTS 82 ****ASCII CHARACTER VALUE ASSIGNMENTS 171 ****MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 514 **** KS10 CONSOLE HARDCORE **** 515 **"RST" INSTRUCTION CODE** 616 **POWER UP START LOCATON** 645 **INITIALIZE UARTS** 699 8080 PROM CHECKSUMMER 913 **BEGINNING OF BASIC CONSOLE NULL JOB... BEGINS WITH A PROMPT 1074 **TYPEIN COMMAND DECODER AND DISPATCHER** 1109 ****CTY SERVICE**** 1243 **COMMAND DECODER CONTINUED** 1477 **COMMAND DISPATCH LIST** 1617 CHECKSUMS AS COMPUTED BY SPECIAL 10-BASED PROGRAM 1637 *** "MR" CMD *** 1661 ****INTERRUPT HANDLER**** 1991 **8080 TO KS10 CHARACTER SERVICE** 2030 **KS10 TO 8080 CHARACTER SERVICE** 2144 **TTY HANDLER FOR SPECIAL CHARACTERS** 2347 **** CONSOLE COMMANDS AS IMPLIMENTED **** 2348 *** "EB" CMD *** 2407 *** "DB" CMD *** 2485 *** "EM" CMD *** 2554 *** "EN" CMD *** 2562 *** "EN" CND *** 2578 *** "DM" CMD *** 2580 *** "DN" CMD *** 2631 *** "DN" CMD *** 2648 *** "EI" CMD *** 2669 *** "DI" CMD *** 2670 *** "DN" CMD *** 2692 *** "EK" CMD *** 2714 *** "EN" CMD *** 2720 *** "LA" CMD *** 2728 *** "LI" CMD *** 2734 *** "LK" CMD *** 2742 *** "DN" CMD *** 2748 *** "DK" CMD *** 2761 *** "CP" CMD *** 2782 *** "ER" CMD *** 2827 *** "LR" CMD *** 2837 *** "DR" CMD *** 2850 *** "LC" CMD *** 2856 *** "CE" CMD *** 2892 *** "TE" CMD *** 2914 *** "SC" CMD *** 2938 *** "TP CMD" *** 2957 *** "LT" CMD *** 2977 *** "MM" CMD *** 2991 *** "SI" CMD *** 3002 *** "CS" CMD *** 3011 *** "CH" CMD *** 3021 *** "LF" CMD *** VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 CMDS.M80 TABLE OF CONTENTS 3029 *** "DF" CMD *** 3121 *** "RC" *** 3163 *** "EJ" CMD *** 3201 *** "TR" CMD *** 3233 *** "PM" CMD *** 3244 *** "EC" CMD *** 3336 *** "EN" CMD *** 3342 *** "DC" CMD *** 3343 *** "DN TO DC" CMD *** 3394 *** "SM" CMD *** 3471 *** "PE" CMD *** 3512 *** "EX" CMD *** 3543 *** "ST" CMD *** 3568 *** "CO" CMD *** 3582 *** "HA" CMD *** 3589 *** "SH" CMD *** 3602 *** "KL" CMD *** 3632 *** "TT" CMD *** 3639 *** "PW" CMD *** 3678 *** "MK" & "UM" CMD *** 3709 *** "ZM" CMD *** 3738 *** "RP" CMD *** 3820 *** "DS" CMD *** 3850 *** "MS" CMD *** 3943 *** "BT" CMD *** 3973 *** "LB" CMD *** 4012 *** "MT" CMD *** 4099 *** "MB" CMD *** 4122 FILE SYSTEM 4231 CRAM LOADER CODE 4331 *** "FI" CMD *** 4381 *** "B2" CMD *** 4388 *** "VD" CMD *** 4397 *** "VT" CMD *** 4408 VERIFY CRAM CODE 4592 CHANNEL COMMAND LIST EXECUTOR 4807 *** "BC" CMD *** 4994 ****KS10 CONSOLE SUBROUTINE FILE 5689 **** CLRB EXECUTE CODE **** 5696 **** SOME ERROR CODES **** 6044 SUBROUTINE TIME DELAY 6060 STRING COMPARE ROUTINE 6119 UART MODE MODIFICATIONS 6287 MODE 4 FOR DECIDING TO COLLECT AN ENVELOPE OR CTY OUT 6309 ENVELOPE COLLECTOR 6496 **** MORE ERROR ESCAPES **** 6517 ****DISK TRANSFER CHANNEL COMMAND LIST**** 6559 TAPE TRANSFER CHANNEL COMMAND LIST 6661 - SM10 DATA STORAGE PARAMETERS VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 1 CONDEF.M80 1 ;*******8080 CONSOLE FOR DIGITAL EQUIPMENT CORP. KS10******* 2 3 .SBTTL *CONSOLE ERROR CODES DEFINED* 4 5 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 1-1 CONDEF.M80 *CONSOLE ERROR CODES DEFINED* 7 ;LISTING CONTROLS 8 .NLIST BEX 9 .LIST MD,MC,MEB 10 ;SYMBOL ASSIGNMENTS 11 12 020000 RAMST = 8192. ;FIRST "RAM" MEMORY ADDRESS 13 003244 KPAINI = 1700. ;VALUE FOR .44 SEC BETWEEN WORD31 CHECKS 14 000043 KATIMX = 35. ;NUMBER OF TIME IN A ROW KA HAS TO BE THE SAME 15 ;KATIMX .EQ. 14. IS 6 SECONDS, .EQ.35. IS 15 SEC 16 000300 RUNFP = ^O300 ;I/O REG CONTAING CPU "RUN FLOP" 17 000300 TTYSW = ^O300 ;I/O REG FOR TTY FRONT PANEL SWITCHES 18 000301 SMSTS = ^O301 ;I/O REG FOR KS10 STATUS BITS 19 000301 BOOTSW = ^O301 ;I/O REG FOR HARDWARE "BOOT" SWITCH 20 000302 CARRIER = ^O302 ;I/O REG FOR READING KLINIK CARRIER 21 000100 SMPAR = ^O100 ;I/O REG FOR ENABLING KS10 PARITY DETECT 22 000100 RESET = ^O100 ;I/O REG FOR ISSUEING KS10 BUS RESET 23 000101 REFERR = ^O101 ;I/O REG FOR READING MOS MEM REFRESH ERR FLAG 24 000101 LIGHTS = ^O101 ;I/O REG FOR WRITING THE PANEL LIGHTS 25 000101 DTR = ^O101 ;I/O REG FOR WRITING THE DATA TERMINAL READY 26 000102 R.BUSY = ^O102 ;I/O REG FOR READING "MEM BUSY" OR "I/O BUSY" 27 000102 R.RESET = ^O102 ;I/O REG FOR READY IF RESET WENT TRUE(VIA AC LO) 28 000204 CRMCTL = ^O204 ;I/O REG FOR ACCESSING CRAM 29 000205 DIAG = ^O205 ;I/O REG FOR DIAG FUNCTION BITS 30 000206 CLKCTL = ^O206 ;I/O REG FOR SETTING KS10 CLK CTL BITS 31 000210 BUSCTL = ^O210 ;I/O REG FOR KS10 BUS COMM. 32 000212 CPUCTL = ^O212 ;I/O REG FOR KS10 "RUN,EXECUTE,CONTINUE" 33 000201 CTYCTL = ^O201 ;I/O REG FOR UART CONTROL/STATUS 34 000200 CTYDAT = ^O200 ;I/O REG FOR UART DATA BUFFER 35 000203 REMCTL = ^O203 ;REMOTE UART CONTROL REGISTER 36 000202 REMDAT = ^O202 ;REMOTE UART DATA REGISTER 37 000114 DTARB = ^O114 ;I/O REG FOR DATA CYCLE OF BUS ARB.. 38 000115 BUSARB = ^O115 ;I/O REG FOR BUS ARBITRATION SIGNALS 39 000116 INT2KS = ^O116 ;I/O REG FOR INTERRUPTING KS-10 40 000000 D2835 = ^O0 ;R DATA BITS 28-35 41 000001 D2027 = ^O1 ;R DATA BITS 20-27 42 000002 D1219 = ^O2 ;R DATA BITS 12-19 43 000003 D0411 = ^O3 ;R DATA BITS 04-11 44 000103 D0003 = ^O103 ;R DATA BITS 0-3 45 000103 A2835 = ^O103 46 000105 A2027 = ^O105 47 000107 A1219 = ^O107 48 000111 A0411 = ^O111 49 000113 A0003 = ^O113 50 000102 W2835 = ^O102 51 000104 W2027 = ^O104 52 000106 W1219 = ^O106 53 000110 W0411 = ^O110 54 000112 W0003 = ^O112 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 1-2 CONDEF.M80 ***NUMERICAL VALUE ASSIGNMENTS 56 .SBTTL****NUMERICAL VALUE ASSIGNMENTS 57 002000 BPI16 = ^O2000 ;"DENSITY/SLAVE" DEFAULT FOR 1600 BPI TAPES 58 001000 BPI8 = ^O1000 ;"DENSITY/SLAVE" DEFAULT FOR 800 BPI TAPES 59 000377 EOLCH = ^O377 ;END-OF-LINE CODE 60 000020 ARBRESP = ^O20 ;BIT FOR "BUS REQ" 61 000001 DATACK = 01 ;BIT FOR "DATA ACKNOWLEDGE" 62 000100 NONXMEM = ^O100 ;BIT FOR "NON-EXISTANT MEMORY" 63 000020 TRPDEF = ^O20 ;BIT SAYS DEFAULT TRAP ENABLE ON 64 000174 DEFLTE = ^O174 ;BITS SAY DEFAULT: CACHE ENABLE, 1MSEC CLK ENABL 65 ;ALL PARITY ON 66 100000 BIT15 = ^O100000 ;THIS IS BIT15(IF U COUNT RIGHT TO LEFT) 67 000001 BT.BIT = 1 ;BIT SAYS DOING BOOTSTRAP FROM DISK 68 000002 MT.BIT = 2 ;BIT SAYS DOING BOOTSTRAP FROM MAGTAPE 69 000001 .MODE0 = 1 ;FLAG SAYS KLINIK MODE 0 70 000002 .MODE1 = 2 ;FLAG SAYS KLINIK MODE 1 71 000004 .MODE2 = 4 ;FLAG SAYS KLINIK MODE 2 72 000010 .MODE3 = ^O10 ;FLAG SAYS KLINIK MODE 3 73 000020 .MODE4 = ^O20 ;FLAG SAYS KLINIK MODE 4 (MANUFACTURING MODE) 74 000003 CARRLOSS = ^O3 ;INTERRUPT CODE FOR "KLINIK CARRIER LOSS" 75 000002 KL.ACTIVE = ^O2 ;INTERRUPT CODE FOR WHEN KLINIK BECOMES ACTIVE 76 000373 STMSK = ^O373 ;MASK FOR THE STATE LIGHT 77 000004 STBIT = ^O4 ;STATE BIT 78 000333 .IN = ^O333 ;THE "IN" INSTRUCTION 79 000323 .OUT = ^O323 ;THE "OUT" INSTRUCTION 80 000311 .RET = ^O311 ;THE "RET" INSTRUCTION VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 1-3 CONDEF.M80 ***ASCII CHARACTER VALUE ASSIGNMENTS 82 .SBTTL****ASCII CHARACTER VALUE ASSIGNMENTS 83 000000 Q.OUT = 00 ;NULL CHAR..STANDS FOR "QUICK.OUT" 84 000001 SYNC = 01 ;SYNC CHAR FOR APT MESSAGES 85 000015 CRCHR = ^O15 ;CARRIAGE RETURN 86 000012 LFCHR = ^O12 ;LINE FEED 87 000054 COMMA = ^O54 ;ASCII FOR COMMA 88 000034 CNBCK = ^O34 ;CONTROL-BACKSLASH 89 000007 BELL = ^O7 ;A BELL FOR WHEN HOST SYSTEMS GIVE ME GRIEF 90 000052 STAR = ^O52 ;A STAR * 91 000042 QUO = ^O42 ;DOUBLE QUOTES " 92 000043 LBSIGN = ^O43 ;POUND SIGN # 93 000051 RPAREN = ^O51 ;RIGHT PAREN ) 94 000033 ALT = ^O33 ;ALT MODE 95 000032 CNTLZ = ^O32 ;CONTROL-Z 96 000031 CNTLY = ^O31 ;CONTROL-Y ENDS MODE 4 97 000025 CNTLU = ^O25 ;CONTROL-U 98 000023 CNTLS = ^O23 ;CONTROL-S 99 000021 CNTLQ = ^O21 ;CONTROL-Q 100 000017 CNTLO = ^O17 ;CONTROL-O 101 000003 CNTLC = ^O3 ;CONTROL-C 102 000177 RBOUT = ^O177 ;RUB-OUT 103 000103 CCHR = ^O103 ;"C" 104 000104 DCHR = ^O104 ;"D" 105 000011 TAB = ^O11 ;HORIZONTAL TAB 106 000040 SPACE = ^O40 ;SPACE 107 000057 SLASH = ^O57 ;SLASH "/" 108 000134 BSLASH = ^O134 ;BACKSLASH "\" 109 000044 DOLLAH = ^O44 ;DOLLAR SIGN "$" 110 000045 PERCNT = ^O45 ;"%" 111 000077 QUES = ^O77 ;"?" 112 000076 ARROW = ^O76 ;"^" 113 000125 UCHR = ^O125 ;"U" 114 000117 OCHR = ^O117 ;"O" 115 000136 UPARR = ^O136 ;"^" 116 000001 ONE = ^O01 ;"1" 117 000002 TWO = ^O02 ;"2" 118 000003 THREE = ^O03 ;"3" 119 000004 FOUR = ^O04 ;"4" 120 000005 FIVE = ^O05 ;"5" 121 000006 SIX = ^O06 ;"6" 122 000007 SEVEN = ^O07 ;"7" 123 000070 EIGHT = ^O70 ;"8" THE ASCII NUMBER 124 000071 NINE = ^O71 ;"9" THE ASCII NUMBER 125 000012 TEN = ^O12 ;"10" VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 1-4 CONDEF.M80 ***ASCII CHARACTER VALUE ASSIGNMENTS 127 ;NUMERICAL ASSIGNMENTS TO GENERATE THE OFFSETS USED IN COMPUTING 128 ;DEVICE ADDRESSES FROM ANY RH BASE ADDRESS 129 .RADIX 8 130 000000 P.00 = 0 131 000002 P.02 = 2 132 000004 P.04 = 4 133 000006 P.06 = 6 134 000010 P.10 = 10 135 000012 P.12 = 12 136 000014 P.14 = 14 137 000016 P.16 = 16 138 000020 P.20 = 20 139 000022 P.22 = 22 140 000024 P.24 = 24 141 000026 P.26 = 26 142 000030 P.30 = 30 143 000032 P.32 = 32 144 000034 P.34 = 34 145 000036 P.36 = 36 146 000040 P.40 = 40 147 000042 P.42 = 42 148 000044 P.44 = 44 149 000046 P.46 = 46 150 000776 D776 = 776 151 000772 D772 = 772 152 .RADIX 10 153 ;DRIVE CONTROLLER REGISTER IS 776440..FOLLOWING COMMANDS APPLY 154 ; 7=REWIND 155 ; 11=DRIVE CLEAR 156 ; 25=ERASE 157 ; 27=WRITE TAPE MARK 158 000031 SKP.TAPE=^O31 ; 31=SPACE FORWARD(SKIP A FILE) 159 ; 33=SPACE REVERSE(SKIP A FILE, MOVING TAPE IN REVERSE) 160 ; 51=WRITE CHECK FORWARD 161 ; 57=WRITE CHECK REVERSE 162 ; 61=WRITE FORWARD 163 000071 READ.TAPE=^O71 ; 71=READ FORWARD(GO!) 164 ; 77=READ REVERSE(GO!) 165 ;DEFAULT VALUES FOR CHECKSUM COUNTS, SO THAT ASSEMBLIES WITH 3 PROMS WILL WORK 166 000000 CHKSM0 = 0 167 000000 CHKSM1 = 0 168 000000 CHKSM2 = 0 169 000000 CHKSM3 = 0 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 1-5 CONDEF.M80 ***MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 171 .SBTTL****MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 172 173 ;PCHAR--- 174 ; PRINTS A SINGLE CHARACTER, WHICH IT FINDS IN THE TRAILING BYTE 175 ; CLOBBERS ACCUM 176 .MACRO PCHAR XCHR 177 RST 1 ;GO PRINT CHAR IN TRAILING BYTE 178 .BYTE XCHR ;CHAR TO PRINT 179 180 .ENDM 181 182 ;KCHAR--- 183 ; PRINT A SINGLE CHARACTER ON THE KLINIK LINE ONLY. CHAR TO BE PRINTED PASS 184 ; AS A TRAILING ARG 185 .MACRO KCHAR XCHR 186 CALL KCHR ;GO PRINT THE CHARACTER 187 .BYTE XCHR 188 189 .ENDM 190 191 ;PLINE--- 192 ; PRINTS A LINE OF CHARACTERS, POINTER PASSED AS TRAILING ARG 193 ; AND END OF LINE SIGNALED BY A "0" BYTE 194 .MACRO PLINE XMS 195 RST 3 ;PRINT LINE OF CHARS 196 .ADDR XMS ;BUFF TO PRINT 197 198 .ENDM 199 ;KLINE--- 200 ; PRINTS A LINE OF CHARACTERS, POINTER PASSED AS TRAILING ARG 201 ; AND END OF LINE SIGNALED BY A "0" BYTE 202 .MACRO KLINE XMS 203 CALL KLINE ;PRINT LINE OF CHARS 204 .ADDR XMS ;BUFF TO PRINT 205 206 .ENDM 207 ;INTOFF--- 208 ; EXECUTES THE OLD "INTERNAL MODE OFF" SUBROUTINE.., BUT BY USING THE 209 ; RESTART INSTRUCTION CALL, WE SAVE 30.+ BYTES OVER "CALL INTOFF" 210 .MACRO INTOFF 211 RST 6 ;GO EXIT FROM INTERNAL MODE 212 213 .ENDM 214 ;INTON--- 215 ; EXECUTES THE OLD "INTERNAL MODE ON" SUBROUTINE.., BUT BY USING THE 216 ; RESTART INSTRUCTION CALL, WE SAVE 30.+ BYTES OVER "CALL INTON" 217 .MACRO INTON 218 RST 2 ;GO SET INTERNAL MODE 219 220 .ENDM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 1-6 CONDEF.M80 ***MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 222 ;CLINE--- 223 ; PRINTS A LINE OF CHARACTERS, POINTER PASSED IN (H,L), 224 ; AND END OF LINE SIGNALED BY A "0" BYTE 225 .MACRO CLINE XMS 226 LXI H,XMS ;PASS POINTER TO THE CHARACTERS 227 CALL CLINE ;PRINT LINE OF CHARS 228 229 .ENDM 230 231 ;PCRLF--- 232 ; PRINTS CARRIAGE RETURN-LINE FEED 233 ; LEAVES ALL REGISTERS IN TACT 234 .MACRO PCRLF 235 CRLF ;GO PRINT CARRIAGE RETURN LINE FEED 236 237 .ENDM 238 ;SSCLK--- 239 ; ISSUES A SINGLE KS10 CLOCK..CLOBBERS THE ACCUMULATOR 240 .MACRO SSCLK 241 MVI A,02 ;BIT TO SET "SINGLE CLK" TO KS10 242 OUT CLKCTL ;ISSUE THE SINGLE CLOCK 243 244 .ENDM 245 ;PTAB--- 246 ; PRINTS A TAB 247 ; CLOBBERS ACCUM 248 .MACRO PTAB 249 PCHAR TAB ;GO PRINT A TAB 250 251 .ENDM 252 ;PSPACE--- 253 ; PRINTS A " " SPACE 254 ; CLOBBERS ACCUM 255 .MACRO PSPACE 256 PCHAR SPACE ;GO PRINT A SPACE 257 258 .ENDM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 1-7 CONDEF.M80 ***MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 260 ;PSLSH--- 261 ; PRINTS A "/" SLASH 262 ; CLOBBERS ACCUM 263 .MACRO PSLASH 264 PCHAR SLASH ;GO PRINT A SLASH 265 266 .ENDM 267 ;ENDCMD---MACRO TO DO THE RIGHT STUFF 268 ; AT THE END OF A COMMAND..COMMON CODE FOR FINISHING ALL INSTRS 269 .MACRO ENDCMD 270 RET ;RETURN TO CALLER 271 272 .ENDM 273 ;BUSRESP--- MACRO TO READ I/O REG 301Q 274 ; IN ORDER TO CHECK ANY OF THE BITS WHICH 275 ; ARE READABLE IN THAT REGISTER.. THE BIT 276 ; OR BITS TO BE CHECKED IS PASSED AS A 277 ; TRAILING ARGUEMENT "DB" TO A RST INSTR. 278 ; ;THE EXECUTION OF THE RESTART ACCOUNTS 279 ; FOR THE 2 "NOP" TIME REQUIRED FOR THE 280 ; BUS ARBITRATOR TO GRANT THE BUS. THIS 281 ; MACRO RETURNS MAINLINE WITH THE Z-BIT SET 282 ; IF THE REG 301 DOES !NOT! MATCH THE TRAILING 283 ; ARG THAT WAS PASSED AND WITH THE Z-BIT CLEAR 284 ; IF THERE IS A "TRUE" IN ANY OF THE BIT POSITIONS 285 ; PASSED... 286 .MACRO BUSRESP XXX 287 CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE 288 .BYTE XXX ;BITS TO BE CHECKED 289 290 .ENDM 291 .MACRO D ARG,ARG1,NUL,ARG2,ARG3 292 .NLIST 293 294 .RADIX 8 295 296 .BYTE ARG3 & 377 297 Q.1 = < & 1> ! < & 376> 298 Q.2 = < & 3> ! < & 374> 299 Q.3 = < & 7> ! < & 370> 300 Q.4 = & 17 301 .BYTE Q.1 302 .BYTE Q.2 303 .BYTE Q.3 304 .BYTE Q.4 305 306 .RADIX 10 307 .LIST 308 309 .ENDM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 2 CONDEF.M80 ***MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 311 .MACRO LI. ARG2,ARG3 312 .RADIX 8 313 314 315 ARG = 0 316 ARG1 = 0 317 NUL = 0 318 319 320 Q.1 = < & 1> ! < & 376> 321 Q.2 = < & 3> ! < & 374> ! <2*4> 322 .BYTE Q.1 323 .BYTE ARG3 & 377 324 .BYTE Q.2 325 .RADIX 10 326 327 .ENDM 328 329 330 .MACRO EI. ARG2,ARG3 331 .RADIX 8 332 333 334 ARG = 0 335 ARG1 = 0 336 NUL = 0 337 338 Q.1 = < & 1> ! < & 376> 339 Q.2 = < & 3> ! < & 374> ! <4*4> 340 .BYTE Q.1 341 .BYTE ARG3 & 377 342 .BYTE Q.2 343 .RADIX 10 344 345 .ENDM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 2-1 CONDEF.M80 ***MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 347 .MACRO DI. ARG2,ARG3 348 .RADIX 8 349 350 ARG = 0 351 ARG1 = 0 352 NUL = 0 353 354 .BYTE ARG3 & 377 355 Q.1 = < & 1> ! < & 376> 356 Q.2 = < & 3> ! < & 374> 357 .BYTE Q.1 358 .BYTE Q.2 359 360 .RADIX 10 361 .ENDM 362 363 364 .MACRO DI.INDIRECT ARG3 365 .RADIX 8 366 .ADDR ARG3 367 .BYTE ^O200 368 369 .RADIX 10 370 .ENDM 371 372 .MACRO TWAIT ARG3 373 .RADIX 8 374 .ADDR ARG3 375 .BYTE <14*4> 376 377 .RADIX 10 378 .ENDM 379 380 .MACRO WAIT ARG3 381 .RADIX 8 382 .ADDR ARG3 383 .BYTE <6*4> 384 385 .RADIX 10 386 .ENDM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 2-2 CONDEF.M80 ***MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 388 .MACRO ERRTST ARG3 389 .RADIX 8 390 .ADDR ARG3 391 .BYTE <10*4> 392 393 .RADIX 10 394 .ENDM 395 .MACRO UBA. ARG2,ARG3 396 .RADIX 8 397 398 399 ARG = 0 400 ARG1 = 0 401 NUL = 0 402 403 404 .BYTE ARG3 & 377 405 Q.1 = < & 1> ! < & 376> 406 Q.2 = < & 3> ! < & 374> ! <16*4> 407 .BYTE Q.1 408 .BYTE Q.2 409 .RADIX 10 410 411 .ENDM 412 413 .MACRO ENDLST 414 .RADIX 8 415 416 .BYTE 0 417 .BYTE 0 418 .BYTE <12*4> 419 .RADIX 10 420 421 .ENDM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3 CONDEF.M80 ***MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 423 .MACRO MOV5B 424 RST 4 425 .BYTE 0 426 .ENDM 427 428 .MACRO CRLF 429 RST 4 430 .BYTE 2 431 .ENDM 432 433 .MACRO ARG16 434 RST 4 435 .BYTE 4 436 .ENDM 437 438 .MACRO RUN.. 439 RST 4 440 .BYTE 6 441 .ENDM 442 443 .MACRO ARG36 444 RST 4 445 .BYTE 8 446 .ENDM 447 448 .MACRO CLRRM FOO 449 RST 4 450 .BYTE 10. 451 .ADDR FOO+5 452 .ENDM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-1 CONDEF.M80 ***MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 454 .MACRO EXAM FOO 455 .RADIX 8 456 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS 457 .ADDR FOO ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 458 .RADIX 10 459 .ENDM 460 461 .MACRO DEPOS FOO 462 .RADIX 8 463 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE 464 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR 465 .ADDR FOO ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 466 .RADIX 10 467 .ENDM 468 469 .MACRO RD.REG FOO 470 IN FOO ;READ AN I/O REG 471 CMA ;AND ALWAYS COMPLEMENT 472 .ENDM 473 474 .MACRO SETZM FOO 475 CLRRM DMDAT 476 DEPOS FOO 477 .ENDM 478 479 .MACRO TSTRDY FOO 480 .RADIX 8 481 IN FOO ;READ DESIRED UART STATUS 482 ANI 01 ;CHECK IF SET; ZBIT=0 IF READY; ZBIT=1 IF NOT YET READY 483 .RADIX 10 484 .ENDM 485 486 .MACRO LONG.DELAY ARG 487 LXI H,200. * ARG ;SET UP THE TIMING COUNT IN H,L REG 488 CALL LTLOOP ;AND GO DELAY ABOUT 1 SECOND FOR EACH (300 COUNT) 489 .ENDM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-2 CONDEF.M80 ***MACROS FOR OFTEN USED CODE, OR CODE SUBJECT TO REPEATED CHANGES 491 ;MACRO TO SAVE SPACE ON OPERATIONS THAT WANT TO CLEAR 492 ;A LOCATION IN THE RAM.. ELIMINATES EVERY XRA/STA PAIR, AND 493 ;INSERTS INSTEAD AN RST/BYTE PAIR.. AT BEST, AN XRA AND AN STA 494 ;ARE ELIMINATED. AT WORST, A 3 BYTE STA IS REPLACED WITH 495 ;A 2 BYTE RST/BYTE. 496 .MACRO CLRB XX 497 .NLIST 498 OFFSET= XX - ^O20000 499 .IF LE, ^O400-OFFSET 500 .IFF 501 RST 5 502 .BYTE OFFSET 503 .IFT 504 .ERROR OFFSET,;BYTE OUT OF RANGE ON CLRB MACRO 505 .ENDC 506 .LIST 507 .ENDM 508 509 117755 CHKSM0=-^O60023 510 144633 CHKSM1=-^O33145 511 160054 CHKSM2=-^O17724 512 004326 CHKSM3=-^O173452 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-3 HCORE.M80 *** KS10 CONSOLE HARDCORE **** 514 .SBTTL**** KS10 CONSOLE HARDCORE **** 515 .SBTTL **"RST" INSTRUCTION CODE** 516 517 ;AT POWER UP, ALWAYS BEGIN AT 0000 518 519 000000 .= 0000 520 000000 000 NOP ;NO-OPS FOR 2 INSTR CYCLES 521 000001 000 NOP ; LETS 8080 SETTLE DOWN 522 523 000002 363 DI ;GUARANTEE INTERRUPTS DISABLED 524 000003 303 100 000 JMP PWRUP ;BEGIN WITH INITIALIZATION CODE 525 526 ;*** RESERVE "RESTART" MEMORY BLOCKS FOR INTERRUPTS 527 ;*** AND SPECIAL PURPOSE "RST" INSTRUCTIONS 528 ;BEGIN CODE FOR "PCHAR" WITH A "RST 1" 529 000010 .= ^O10 530 531 000010 343 XTHL ;GET POINTER TO TRAILING ARG 532 000011 176 MOV A,M ;CHAR INTO ACCUM 533 000012 043 INX H ;UPDATE POINTER TO RETURN ADDRESS 534 000013 343 XTHL ;RESTORE RETURN ADDRESS TO STACK 535 000014 303 010 004 JMP PCHR ;AND GO.... 536 537 ;*** RESERVE "RESTART" MEMORY BLOCKS FOR INTERRUPTS 538 ;*** AND SPECIAL PURPOSE "RST" INSTRUCTIONS 539 ;SUBROUTINE TO SET INTERNAL STATUS(I.E. DONT TYPE ON TTY) 540 000020 .= ^O20 541 542 000020 345 INTON: PUSH H ;SAVE THE LIL BUGGER 543 000021 041 120 040 LXI H,NOPNT ;GET VALUE OF FLAG 544 000024 064 INR M ;INCREMENT BY ONE 545 000025 341 POP H ;RESTORE THE REG WE SAVED 546 000026 311 RET ;AND RETURN 547 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-4 HCORE.M80 **"RST" INSTRUCTION CODE** 549 ;*** RESERVE "RESTART" MEMORY BLOCKS FOR INTERRUPTS 550 ;*** AND SPECIAL PURPOSE "RST" INSTRUCTIONS 551 ;BEGIN CODE FOR "PLINE" 552 000030 .= ^O30 553 554 000030 343 XTHL ;GET PNTR TO TRAILING ARG 555 000031 136 MOV E,M ;GET LO ORDER PIECE 556 000032 043 INX H ;UPDATE PNTR 557 000033 126 MOV D,M ;GET HI ORDER PIECE 558 000034 043 INX H ;UPDATE PNTR 559 000035 303 156 004 JMP PLNE ;AND GO TO ACTUAL ROUTINE 560 561 ;*** RESERVE "RESTART" MEMORY BLOCKS FOR INTERRUPTS 562 ;*** AND SPECIAL PURPOSE "RST" INSTRUCTIONS 563 ;BEGIN CODE FOR "TRAP" OR "UUO" TYPE SUBROUTINE CALLS 564 000040 .= ^O40 565 566 000040 343 XTHL ;SAVE "H,L" WHILE GETTING PC 567 000041 176 MOV A,M ;GET INDEX INTO SUBROUTINE DISPATCH LIST 568 000042 043 INX H ;UPDATE "PC" TO POINT AT RETURN 569 000043 343 XTHL ;PUT BACK RETURN AND RESTORE "H,L" 570 000044 345 PUSH H ;NOW SAVE "H,L" WHILE WE SET UP DISPATCH 571 000045 303 110 032 JMP RTNDIS ;GO CALCULATE SUBROUTINE TO DISPATCH TO.. 572 573 ;*** RESERVE "RESTART" MEMORY BLOCKS FOR INTERRUPTS 574 ;*** AND SPECIAL PURPOSE "RST" INSTRUCTIONS 575 ;THIS CODE CLEARS A SINGLE BYTE OF RAM SPACE, IN THE RANGE 576 ;FROM 20000-20377 577 000050 .= ^O50 578 579 000050 343 XTHL ;SAVE "H,L" WHILE GETTING PC 580 000051 176 MOV A,M ;GET INDEX INTO SUBROUTINE DISPATCH LIST 581 000052 043 INX H ;UPDATE "PC" TO POINT AT RETURN 582 000053 343 XTHL ;PUT BACK RETURN AND RESTORE "H,L" 583 000054 345 PUSH H ;NOW SAVE "H,L" WHILE WE SET UP DISPATCH 584 000055 303 146 032 JMP CLRBYT ;GO CALCULATE SUBROUTINE TO DISPATCH TO.. 585 586 ;*** RESERVE "RESTART" MEMORY BLOCKS FOR INTERRUPTS 587 ;*** AND SPECIAL PURPOSE "RST" INSTRUCTIONS 588 ;THIS CODE EXECUTES THE "INTERNAL MODE OFF" FUNCTION, TURNING OFF 589 ;THE PRINTING OF 8080 FUNCTIONS EXECUTED INTERNALLY. "INTOFF" IS 590 ;CALLED AT LEAST 15 TIMES, SO THIS RESTART CODE SAVES AT LEAST 591 ;30 BYTES OVER "CALLS INTOFF" 592 000060 .= ^O60 593 594 000060 345 PUSH H ;SAVE THE LIL BUGGER 595 000061 041 120 040 LXI H,NOPNT ;CLEAR ACCUM 596 000064 065 DCR M ;DECREMENT PRINT FLAG 597 000065 341 POP H ;RESTORE THE REG WE SAVED 598 000066 311 RET ;AND RETURN 599 600 ;*** RESERVE "RESTART" MEMORY BLOCKS FOR INTERRUPTS 601 ;*** AND SPECIAL PURPOSE "RST" INSTRUCTIONS 602 ;BEGIN CODE FOR HANDLING INTERRUPTS VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-5 HCORE.M80 **"RST" INSTRUCTION CODE** 603 000070 .= ^O70 604 605 000070 363 DI ;GUARANTEE INTERRUPTS DISABLED 606 000071 365 PUSH PSW ;SAVE 607 000072 305 PUSH B ; EVERYTHING 608 000073 325 PUSH D ; ONTO THE STACK 609 000074 345 PUSH H 610 611 000075 303 266 005 JMP INTRP ;AND GO TO PROCESS THE INTERRUPT... VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-6 HCORE.M80 **"RST" INSTRUCTION CODE** 613 ;MAINLINE CODE BEGINS HERE 614 000100 .= ^O100 615 616 .SBTTL **POWER UP START LOCATON** 617 ;BEGIN BY SETTING UP 8080 STACK POINTER 618 000100 061 000 044 PWRUP: LXI SP,RAMST+^O2000 ;LOAD STACK PNTR WITH TOP RAM LOC 619 620 ;********************************************* 621 ;WILL BE TAKEN OUT WHEN WE PUT IN THE POWER UP SELF TEST 622 623 ;MUST SET DISPATCH LIST AND CLEAR RAM 624 000103 041 000 040 LXI H,RAMST ;SET "H,L" REGISTER TO START RAM ADDR 625 000106 021 000 004 LXI D,^O2000 ;COUNTER TO FILL REST OF RAM W 0'S 626 627 000111 066 000 CLRLP: MVI M,00 ;CLEAR A RAM LOC 628 000113 043 INX H ;NEXT RAM LOCATION 629 000114 033 DCX D ;DOWN COUNTER 630 000115 173 MOV A,E ;LO ORDER PIECE TO ACCUM 631 000116 262 ORA D ;THROW IN THE HI ORDER PIECE 632 000117 302 111 000 JNZ CLRLP ;CONTINUE TILL DONE 633 ;*************************************************** VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-7 HCORE.M80 **POWER UP START LOCATON** 635 ;BEGIN PROCEEDURE FOR INITIALIZING KS10 636 ;MUST INDIVIDUALLY CLEAR KS10 FLOPS "RUN","EXECUTE",& "CONTINUE" 637 ; BECAUSE THEY ARE NOT RESET BY KS10 BUS RESET 638 000122 257 XRA A ;SET ACCUM=0 639 ;SET 0'S TO "RUN,EXECUTE,CONT" 640 000123 323 212 OUT CPUCTL ;***** I/O WRT 212/0 ***** 641 642 ;ISSUE KS10 BUS RESET 643 000125 315 237 005 CALL MRINT ;DOES RESET AND SETS DEFAULT PARITY & TRAPS VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-8 HCORE.M80 **INITIALIZE UARTS** 645 .SBTTL **INITIALIZE UARTS** 646 ;RAM BUFFERS HAVE BEEN INITIALIZED.. NOW MUST READ FRONT 647 ; PANEL SWITCHES & INITIALIZE "UART" 648 000130 333 300 IN TTYSW ;***** I/O READ 300Q ***** 649 000132 057 CMA ;FIX INVERSION 650 651 000133 001 200 004 LXI B,^O2200 ;THIS SETS B=^O4 AND C=^O200 652 000136 147 MOV H,A ;H WILL HOLD CTY STOP BIT FOR US.@BIT POS 7 653 000137 037 RAR ;BIT 4 MOVES TO BIT 3 654 000140 037 RAR ;BIT MOVES TO BIT 2 655 000141 137 MOV E,A ;E WILL HOLD KLINIK LENGTH BIT. @BIT POS 2 656 000142 037 RAR ;BIT 6 IS AT 4 FROM OTHER SHIFTS, NOW TO BIT 3 657 000143 037 RAR ;AND TO BIT 2 658 000144 157 MOV L,A ;L WILL HOLD CTY LENGTH BIT. @BIT POS 2 659 000145 174 MOV A,H ;ORIGINAL BACK TO ACCUM 660 000146 027 RAL ;BIT 5 TO BIT 6 661 000147 027 RAL ;AND TO BIT 7 662 000150 127 MOV D,A ;D WILL HOLD KLINIK STOP BIT. @BIT POS 7 663 664 ;NOW BEGIN MASKING OPERATIONS TO ISOLATE THE DESIRED UART BIT SETTINGS 665 000151 171 MOV A,C ;MASK OF OCTAL 200 INTO ACCUM 666 000152 244 ANA H ;ACCUM HAS ONLY CTY STOP BIT 667 000153 147 MOV H,A ;COPY BACK TO H 668 000154 171 MOV A,C ;MASK TO ACCUM 669 000155 242 ANA D ;ACCUM HAS ONLY A STOP BIT 670 000156 127 MOV D,A ;COPY BACK TO D 671 672 ;NOW MASK FOR THE LENGTH BITS 673 000157 170 MOV A,B ;MASK OF OCTAL 4 INTO ACCUM 674 000160 245 ANA L ;ACCUM NOW HAS CTY LENGTH BIT ONLY 675 000161 264 ORA H ;THROW IN THE CTY STOP BIT 676 000162 366 112 ORI ^B01001010 ;ADD IN THE CONSTANT BITS 677 000164 323 201 OUT CTYCTL ;SET THE UART MODE.......... 678 679 ;NOW SET MODE FOR THE KLINIK STUFF 680 000166 170 MOV A,B ;MASK OF OCTAL 4 INTO ACCUM 681 000167 243 ANA E ;ACCUM NOW HAS KLINIK LENGTH BIT ONLY 682 000170 262 ORA D ;THROW IN THE KLINIK STOP BIT 683 000171 366 112 ORI ^B01001010 ;ADD IN THE CONSTANT BITS 684 000173 323 203 OUT REMCTL ;SET THE KLINIK UART MODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-9 HCORE.M80 **INITIALIZE UARTS** 686 ;NOW ENABLE THE UART TO RECEIVE AND TRANSMIT 687 000175 076 025 MVI A,^B00010101 ;BITS FOR UART CONTROL 688 ;SET UART TO RECEIVE AND TRANSMIT 689 000177 323 201 OUT CTYCTL ;***** I/O WRT 200/025 ***** 690 691 000201 076 020 MVI A,^O20 ;ONE BIT TO SAY RESET THE UART 692 000203 323 203 OUT REMCTL ;RESET THE KLINIK UART BUT DO NOT ENABLE IT!! 693 694 000205 333 200 IN CTYDAT ;***** I/O RD 201***** READ 1 DUMMY CHAR OUT OF UART 695 000207 333 202 IN REMDAT ;***** I/O RD 203***** READ 1 DUMMY CHAR OUT OF UART 696 697 000211 315 163 010 CALL BFRST ;INIT TTY INPUT BUFFER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-10 HCORE.M80 8080 PROM CHECKSUMMER 699 .SBTTL 8080 PROM CHECKSUMMER 700 ;CODE TO COMPUTE A CHECKSUM FOR EACH OF THE 2K 8080 PROM PIECES 701 ;FIRST COMPUTE THE CHECKSUMS FOR EACH PROM, THEN DO SIMPLE TEST ON THE 8080 702 ;RAM..BEGIN WITH THE PROMS 703 000214 041 000 000 LXI H,00 ;START AT PROM ADDRESS 0 704 000217 257 LCHKR: XRA A ;CLEAR ACCUM 705 000220 117 MOV C,A ;CLEAR B,C PAIR 706 000221 107 MOV B,A ;"B,C" TO BE USED AS ADDEND 707 000222 137 MOV E,A ;CLEAR D,E PAIR 708 000223 127 MOV D,A ;"D,E" TO HOLD CURRENT COUNT OF CHECKSUM 709 710 000224 116 A256: MOV C,M ;GET A BYTE 711 000225 043 INX H ;UPDATE MEM POINTER 712 000226 353 XCHG ;PUT CURRENT CHECKSUM SUB TOTAL INTO H,L 713 000227 011 DAD B ;THROW IN AN ADDEND 714 000230 353 XCHG ;RETURN H,L TO RIGHTFUL PLACE 715 716 ;NOW QUICK CHECK FOR THE END OF PROM 717 000231 175 MOV A,L ;GET LO ORDER OF CURRENT PROM ADDRESS 718 000232 247 ANA A ;SET CONDITION CODES 719 000233 302 224 000 JNZ A256 ;IF .EQ. 0,WE'VE DONE 256 LOCS, IF .NE. 0, DO MORE 720 721 ;FALL TO HERE WHEN DONE A CHUNK OF 256..SEE IF ITS ON A PROM BOUNDARY NOW 722 000236 174 MOV A,H ;GET HI ORDER PIECE OF ADDRESS 723 000237 346 007 ANI ^O7 ;IF THIS .EQ. 0, THEN WE ARE AT A BOUNDARY 724 000241 302 224 000 JNZ A256 ;IF .NE 0, THEN KEEP TRYING VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-11 HCORE.M80 8080 PROM CHECKSUMMER 726 ;FALL THRU HERE WHEN WE'VE COMPLETED A PROMS WORTH 727 000244 174 MOV A,H ;GET HI ORDER, WHICH CORRESPONDS TO "WHICH PROM" 728 000245 017 RRC ;JUSTIFY AT EDGE OF THE ACCUM 729 000246 017 RRC 730 000247 017 RRC 731 000250 075 DCR A ;DECREMENT MAKES "0-3" INSTEAD OF "1-4" 732 000251 207 ADD A ;DOUBLE THIS VALUE TO MAKE IT ON 16 BYTE BOUNDARIES 733 734 000252 365 PUSH PSW ;SAVE THIS VALUE FOR A BIT 735 000253 345 PUSH H ;AND SAVE OUR CURRENT POINTER 736 000254 302 315 000 JNZ DEV ;IF DOING PROM ZERO, ELIMINATE THE ACTUAL CHECKSUM COUNT 737 738 ;FELL THRU TO HERE TO DO ACTUAL CHECKSUM ELIMINATION 739 ;EXECUTED WHEN CHECKSUMMING PROM 0. IT REMOVES THE ACTUAL CHECKSUM VALUES 740 ;FROM THE COMPUTED CHECKSUM, AS WE CANNOT SOLVE THE CHECKSUM FEEDBACK 741 ;LOOP PROBLEM 742 000257 365 PUSH PSW ;SAVE ACCUM 743 000260 041 201 005 LXI H,CHECKS ;H,L GETS A POINTER TO THE LIST OF CHECKSUMS 744 000263 076 010 MVI A,8. ;START WITH A COUNT OF 8, FOR THE EIGHT BYTES WE MUST SUB 745 000265 062 000 040 DEVLP: STA T80DT ;SAVE COUNT IN RAM, SO WE CAN USE ACCUM 746 000270 006 377 MVI B,^O377 ;IN B,C PAIR, ENSURE UPPER HALF .EQ. -1 747 000272 176 MOV A,M ;GET CHECKSUM BYTE TO ACCUM 748 000273 057 CMA ;NEGATE IT 749 000274 117 MOV C,A ;THROW IT INTO A 16 BIT ENTITY 750 000275 003 INX B ;AND MAKE B,C PAIR 2'S COMPLIMENT 751 752 000276 353 XCHG ;GET CURRENT COMPUTED CHECKSUM TO H,L 753 000277 011 DAD B ;"SUBTRACT" THE BYTE WE'VE ASSEMBLED.(2'S COMP ADDITION) 754 000300 353 XCHG ;PUT H,L/D,E PAIR RIGHT 755 000301 043 INX H ;AND UPDATE THE POINTER INTO THE LIST 756 000302 072 000 040 LDA T80DT ;GET OUR CURRENT COUNT FROM THE RAM 757 000305 075 DCR A ;DECREMENT 758 000306 302 265 000 JNZ DEVLP ;CONTINUE IN THE LOOP 759 760 000311 001 000 000 LXI B,00 ;NOW GUARANTEE B,C PAIR IS ALL GONE 761 ;FALL THRU WHEN FINISHED 762 000314 361 POP PSW ;RESTORE ACCUM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-12 HCORE.M80 8080 PROM CHECKSUMMER 764 000315 117 DEV: MOV C,A ;GET CURRENT PROM NUMBER INTO C 765 000316 041 201 005 LXI H,CHECKS ;H,L POINTS TO THE TABLE OF CHECKSUM 766 000321 011 DAD B ;ADD INDEX, AND NOW (M) PNTS TO EXPECTED CHECKSUM 767 000322 116 MOV C,M ;COPY EXPECTED CHECKSUM INTO C 768 000323 043 INX H 769 000324 106 MOV B,M ;AND B, MAKES "B,C" PAIR 770 000325 043 INX H ;AND KEEP COUNT UP 771 772 ;NOW D,E HAS CALCULATED CHECKSUM AND B,C HAS EXPECTED CHECKSUM 773 000326 353 XCHG ;H,L NOW HAS CALCULATED CHECKSUM 774 000327 011 DAD B ;IF CHECKSUM OK, RESULT OF THIS SHOULD .EQ. 0 775 000330 175 MOV A,L ;GET LO PIECE 776 000331 264 ORA H ;THROW IN HI PIECE..CONDITION CODE FLAGS NOW SET 777 778 000332 353 XCHG ;D,E NOW HAS THE RESULTS OF THE ADDITION 779 000333 341 POP H ;BEFORE JUMPING ON CONDITION CODES, FIRST FIX REGISTER 780 000334 302 356 000 JNZ CHKERR ;IF H,L WAS .NE. 0, THEN WE HAD PROM CHECKSUM ERROR... 781 782 ;FALL THRU IF CHECKSUM WAS OK 783 000337 361 POP PSW ;RESTORE INDEX INTO "WHICH PROM" WE ARE IN 784 000340 376 006 CPI 6 ;SEE IF DONE ALL 785 000342 302 217 000 JNZ LCHKR ;JUMP BACK TO BEGINNING IF NOT DONE ALL 786 787 ;FALL THRU IF DONE ALL..PROMS CHECKSUM OK 788 000345 303 373 000 JMP XXX230 ;SO AVOID THE ERROR PRINTOUT CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-13 HCORE.M80 8080 PROM CHECKSUMMER 790 ;YOU JUMPED TO HERE IF YOU ENCOUNTERED A CHECKSUM ERROR. 791 000350 077 103 110 ROMMSG: .ASCIZ /?CHK / ;IF PROM CHECKSUM FAILS, USE THIS MESSAGE 792 000356 CHKERR: PLINE ROMMSG ;PRINT "?CHK " (1) 000356 337 RST 3 ;PRINT LINE OF CHARS (1) 000357 350 000 .ADDR ROMMSG ;BUFF TO PRINT 793 000361 361 POP PSW ;RETRIEVE PROM NUMBER 794 000362 017 RRC ;DIVIDE DOWN, SINCE WE DOUBLED IT BEFORE 795 000363 074 INR A ;MAKE PROM TYPE-OUT BE 1-4 796 000364 366 060 ORI ^O60 ;MAKE IT ASCII 797 000366 315 010 004 CALL PCHR ;GO PRINT IT 798 000371 PCRLF ; (2) 000371 347 RST 4 (2) 000372 002 .BYTE 2 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-14 HCORE.M80 8080 PROM CHECKSUMMER 800 ;FINAL STEP IS TO ENABLE PARITY DETECTION IN THE KS10 801 ; DEFAULT IS: PARITY DETECTION ON..DATA PATH PARITY DETECION ENABLED 802 000373 076 174 XXX230: MVI A,DEFLTE ;INIT ENABLES TO BE ON 803 000375 323 100 OUT SMPAR ;***** I/O WRT 100/174 ***** 804 805 ;LITTLE ROUTINE TO LOAD ALL DEFAULT CONSTANTS INTO THE 8080 RAM 806 ;THIS ROUTINE SAVE ABOUT 40. BYTES OF PROM, OVER USING LXI'S,SHLD'S 807 ;MVI'S & STA'S 808 000377 041 342 040 LXI H,KATIM1 ;LIST OF DESTINATION LOCATIONS BEGINS HERE 809 000402 021 021 001 LXI D,PRMLST ;LIST OF DATUMS FOR THE RAM INIT 810 000405 032 RAMMER: LDAX D ;GET BYTE FROM THE DATA LIST 811 000406 376 252 CPI ^O252 ;TEST FOR END OF LIST 812 000410 312 062 001 JZ XXX235 ;CONTINUE PROM INIT 813 814 ;ELSE MORE RAM TO INITIALIZE 815 000413 167 MOV M,A ;PUT GOOD STUFF IN RAM 816 000414 043 INX H ;UPDATE POINTERS 817 000415 023 INX D 818 000416 303 005 001 JMP RAMMER 819 000421 PRMLST: 820 000421 244 006 .ADDR KPAINI ;KATIM1(2) KEEP ALIVE INITIAL COUNTER 821 000423 377 .IIF DF,SCECOD, .BYTE -1 ;FOR SCE ADR INIT 822 000424 377 .IIF DF,SCECOD, .BYTE -1 ;FOR SCE ADR INIT 823 000425 203 010 .ADDR MODE0 ;MODDIS(2) INIT THE KLINIK LINE TO MODE 0 824 000427 255 001 .ADDR REINI ;NORMAL INSTR ENDS WILL GO TO REINIT 825 000431 013 042 .ADDR ENVBUF ;ENVPNT(2) APT PNTER FOR ENVELOPES SENT TO THE HOST 826 000433 174 .BYTE DEFLTE ;PARBT(1) INIT ENABLES TO BE ON 827 000434 020 .BYTE TRPDEF ;TRAPEN(1) INIT ENABLES THE HARDWARE TRAPS 828 000435 014 .BYTE ^O14 ;MTAUBA(1) DEFAULT MAGTAPE UBA NUMBER IS "3" 829 000436 004 .BYTE ^O4 ;DSKUBA(1) DEFAULT DISK UBA NUMBER IS "1" 830 000437 010 .BYTE ^O10 ;STATE(1) STATE BEGINS WITH DTR TRUE 831 000440 041 .BYTE ^O41 ;LSTMSG(1) FIRST APT MSG SHOULD BE 136(NOT OF 41) 832 000441 D 0,0,,2,0 ;DEN.SLV(5) GET DEFAULT VALUE FOR ALL TAPES 833 000446 .MTBASE: D 0,0,,772,440 ;MTBASE(5) INITIAL DEFAULT MTA RHBASE ADDRESS 834 000453 .DSBASE: D 0,0,,776,700 ;DSBASE(5) INITIAL DEFAULT DSK RHBASE ADDRESS 835 000460 377 .BYTE -1 ;RPINI(1) SO CAN MAKE IT -1 836 000461 252 .BYTE ^O252 ;END OF LIST MARKER 837 838 000462 076 025 XXX235: MVI A,^O25 ;BIT TO RESET THE UART 839 000464 323 203 OUT REMCTL ;RESET THE KLINIK UART AND ENABLE IT!! 840 000466 076 010 MVI A,^O10 ;GET A BIT TO SET "DATA TERMINAL READY" 841 000470 323 101 OUT DTR ;SET IT. VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-15 HCORE.M80 8080 PROM CHECKSUMMER 843 000472 PLINE INIMS ;PRINT VERSION AND ID (1) 000472 337 RST 3 ;PRINT LINE OF CHARS (1) 000473 211 005 .ADDR INIMS ;BUFF TO PRINT 844 000475 INTON ;SET INTERNAL MODE (1) 000475 327 RST 2 ;GO SET INTERNAL MODE 845 000476 315 033 012 CALL EM1 ;DO PSUEDO EXAMINE TO SET MEM LATCHES 846 000501 315 114 011 CALL EBCMD ;EXAMINE THE BUS, TO SEE IF ZERO 847 000504 373 EI ;ENABLE INTERRUPTS 848 849 000505 315 033 033 CALL CMP36 ;NOW CHECK RESULTS OF THE "EB" CMD 850 000510 012 040 .ADDR EMBUF ;THE RESULTS READ FROM THE BUS 851 000512 004 017 .ADDR MAD000 ; VERSUS A WORD OF ALL ZEROES 852 853 000514 312 163 001 JZ PWRCHK ;IF OK, GO TO AUTO BOOT 854 ;FALL THRU IF ERRORS ENCOUNTERED 855 000517 INTOFF ;LEAVE INTERNAL MODE (1) 000517 367 RST 6 ;GO EXIT FROM INTERNAL MODE 856 000520 PLINE INIER ;SAY "INITIALIZE ERROR" (1) 000520 337 RST 3 ;PRINT LINE OF CHARS (1) 000521 013 037 .ADDR INIER ;BUFF TO PRINT 857 000523 303 255 001 JMP REINI ;AND GO OUT 858 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-16 HCORE.M80 8080 PROM CHECKSUMMER 860 ;JUMP TO HERE IF DOING PWR FAIL RESTART 861 000526 315 276 022 PWR.FAIL: CALL MICROP ;READ IN POINTERS AND READY TO GO 862 000531 332 210 032 JC C.BTERR ;IF BOMBED, GIVE UP 863 000534 315 056 023 CALL DMEM2CRAM ;GO READIN THE MICRO-CODE 864 865 000537 315 362 021 CALL BT.GO ;START MICRO-CODE 866 000542 CLRRM TMPBF2 ;CLEAR A BUFFER (1) 000542 347 RST 4 (1) 000543 012 .BYTE 10. (1) 000544 100 040 .ADDR TMPBF2+5 867 000546 066 070 MVI M,^O70 ;POWER FAIL START ADDRESS IS "70" 868 869 000550 076 004 MVI A,4 ;CODE 4 INDICATES PWR FAIL 870 000552 062 255 040 STA GOCODE ;SAVE IN RESTART INDICATOR 871 000555 315 133 017 CALL STINT ;GO START MACHINE, USE INTERNAL MODE 872 000560 303 255 001 JMP REINI ;AND GO LET THINGS HAPPEN 873 874 ;FIRST THING TO DO IS TO CHECK IF THIS IS A POWER FAIL RESTART 875 ;NOTE: WE ARE STILL IN "INTERNAL" MODE HERE..THINGS WONT PRINT 876 000563 PWRCHK: CLRRM IOAD ;CLEAR A BUFFER..WE WILL GENERATE A "100000" (1) 000563 347 RST 4 (1) 000564 012 .BYTE 10. (1) 000565 031 040 .ADDR IOAD+5 877 000567 043 INX H ;CLRRM PASSES PNTR..WE MAKE IT "IOAD+1" 878 000570 066 200 MVI M,^O200 ;SET BIT THAT MAKES IT "100000" 879 000572 315 360 012 CALL EI1 ;GO EXAMINE I/O ADDRESS 880 000575 INTOFF ;CLEAR INTERNAL MODE (1) 000575 367 RST 6 ;GO EXIT FROM INTERNAL MODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-17 HCORE.M80 8080 PROM CHECKSUMMER 882 000576 016 226 SYSUP: MVI C,150. ;NOW DO AN AUTO BOOT SEQUENCE 883 000600 041 031 000 SYSUP1: LXI H,25. ;WILL DO A DELAY LOOP 884 000603 315 154 014 CALL LTLOOP ; BY HAND, BY-PASSING USUAL MACRO GENERATION 885 886 000606 072 157 040 LDA RPEND ;SEE IF A CHAR WAS TYPED TO END THE AUTO BOOT 887 000611 247 ANA A ;SET CONDITION FLAGS 888 000612 302 255 001 JNZ REINI ;IF A CHAR WAS TYPED, NO AUTO STUFF, GO NULL JOB 889 890 ;WHILE WE HAVEN'T GOT ANYTHING TO DO, MIGHT AS WELL CHECK BOOT SWITCH 891 ;TO SEE IF THAT GOT PUSHED WHILE WE WERE SITTING HERE 892 000615 333 301 IN BOOTSW ;***** I/O RD/301 ***** 893 000617 346 002 ANI 2 ;"BOOT" BUTTON PUSHED IS "TRUE .LO." 894 000621 312 043 002 JZ N0.5 ;THEREFORE, IF RESULTS .EQ. Z-BIT, THEN BUTTON PUSHED 895 896 000624 333 102 IN ^O102 ;READ AND SEE IF "AC PWR LO" HAPPENED 897 000626 346 100 ANI ^O100 ;CHECK THE RESET SIGNAL 898 000630 312 000 000 JZ 0000 ;ITS TRUE .LO., SO IF TRUE, RESTART THE MACHINE 899 900 ;FALL THROUGH IF NO BOOT BUTTON PUSHED 901 000633 015 DCR C ;STILL TIMING OUT.. WAIT LONGER 902 000634 302 200 001 JNZ SYSUP1 ;BACK WHILE WAITING 903 904 ;NOW SEE IF NEED AUTO BOOT, OR POWER FAIL RECOVERY.. 905 000637 072 014 040 LDA EMBUF+2 ;FETCH UP BITS 12-19 906 000642 346 200 ANI ^O200 ;CHECK THE PWR SAVED BIT 907 000644 312 126 001 JZ PWR.FAIL ;IF BIT SET, GO TRY A POWER FAIL RECOVERY 908 909 ;FELL THROUGH IF THIS MUST BE AN AUTO BOOT SEQUENCE 910 000647 PLINE AUTOMS ;SAY "BT AUTO" (1) 000647 337 RST 3 ;PRINT LINE OF CHARS (1) 000650 365 037 .ADDR AUTOMS ;BUFF TO PRINT 911 000652 315 247 021 CALL BTAUT ;CALL THE BOOT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-18 HCORE.M80 **BEGINNING OF BASIC CONSOLE NULL JOB... BEGINS WITH A PROMPT 913 .SBTTL **BEGINNING OF BASIC CONSOLE NULL JOB... BEGINS WITH A PROMPT 914 000655 061 000 044 REINI: LXI SP,RAMST+^O2000 ;RESET STACK POINTER TO RE-INIT 915 000660 CLRB EOL ;GUARANTEE END-OF-LINE CNTR RESET 916 000662 CLRB ERRCD ;CLEAR CURRENT ERROR CODE 917 000664 CLRB ERRCD+1 ;CLEAR CURRENT ERROR CODE 918 000666 CLRB RPTON ;ALWAYS CLEAR THE REPEAT FLAG 919 000670 CLRB NOPNT ;CLR THE "NO PRINT" FLAG 920 000672 041 001 041 LXI H,RPINI ;GET POINTER TO BUFFER WHERE WE SAVE 921 000675 042 211 040 SHLD RPLST ; THE COMMAND DISPATCH ADDRESSES.USED BY REPEAT 922 000700 041 255 001 LXI H,REINI ;IF GOT HERE, SAFE TO GUARANTEE U ALWAYS GET HERE 923 000703 042 350 040 SHLD NOREND ;PASS REINIT LOCATION TO THE NORMAL END DISPATCH 924 000706 315 163 010 CALL BFRST ;RESET TTY INPUT BUFFER 925 000711 373 EI ;MAKE SURE THAT BOMBS RESTORE THE INTERRUPTS 926 927 000712 072 156 040 LDA USRMD ;GRAB USER MODE FLAG 928 000715 247 ANA A ;SET CONDITION CODES 929 000716 302 335 001 JNZ NULLJ ;IF USER MODE, NO PROMPTS, NO CR-LF, NOTHING 930 931 000721 072 251 040 LDA MMFLG ;IF MM MODE WE WILL PRINT NO PROMPTS 932 000724 247 ANA A ;SET 8080 FLAGS 933 000725 302 335 001 JNZ NULLJ ;SKIP PROMPT IF MM 934 935 000730 PCRLF ;START FRESH WITH CR-LF (2) 000730 347 RST 4 (2) 000731 002 .BYTE 2 936 000732 PLINE KSPRMT ;PROMPT IS "KS10>" (1) 000732 337 RST 3 ;PRINT LINE OF CHARS (1) 000733 053 037 .ADDR KSPRMT ;BUFF TO PRINT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-19 HCORE.M80 **BEGINNING OF BASIC CONSOLE NULL JOB... BEGINS WITH A PROMPT 938 ;HERE BEGINS THE NULL STATE LOOP.... 939 ; CHECK FRONT PANEL BOOT SWITCH 940 000735 041 222 002 NULLJ: LXI H,DCODE ;NULLJ JOB WILL PROCESS COMMANDS ON "END-OF-LINE" 941 000740 333 102 NULLW: IN ^O102 ;READ AND SEE IF "AC PWR LO" HAPPENED 942 000742 346 100 ANI ^O100 ;CHECK THE RESET SIGNAL 943 000744 312 000 000 JZ 0000 ;ITS TRUE .LO., SO IF TRUE, RESTART THE MACHINE 944 945 000747 333 302 IN ^O302 ;READ THE STATE OF THE KLINIK SWITCHES 946 000751 057 CMA ;FIX THE HARDWARE INVERSION 947 000752 117 MOV C,A ;SAVE RESULTS OF READ IN REG "C" 948 000753 346 014 ANI ^O14 ;OFF ALL BUT THE 2 KLINIK BITS 949 000755 017 RRC ;JUSTIFY "WORD-WISE" 950 000756 107 MOV B,A ;SAVE THE KLINIK BITS FOR A SEC. 951 000757 072 124 040 LDA KLNKSW ;GET THE CURRENT KLINIK SWITCH STATE 952 000762 270 CMP B ;NOW SEE IF KLINIK SWITCH HAS CHANGED SINCE LAST TIME 953 000763 345 PUSH H ;SAVE H,L IT HAS OUR DISPATCH ADDRESS 954 000764 304 340 033 CNZ KLNKLT ;IF COMPARE WAS .NE. 0, THEN WE MUST CHANGE LIGHTS 955 000767 341 POP H ;RETRIEVE H,L SO THAT WE HAVE THE REAL DISPATCH 956 957 ;OK, NOW SEE IF WE ARE WATCHING CARRIER FROM THE KLINIK LINE, 958 ;AND IF WE ARE, SEE IF IT HAS GONE AWAY.. IF KLINIK CARRIER GOES 959 ;AWAY FOR 2 SECONDS, THEN WE WILL HANGUP THE LINE 960 000770 171 MOV A,C ;GET STATE OF THE CARRIER INTO ACCUM 961 000771 346 001 ANI 1 ;SEE IF IT IS SET 962 000773 312 004 002 JZ N00 ;IF THERE IS NO CARRIER, THEN SEE IF WE CARE 963 964 ;CARRIER WAS TRUE IF WE GOT HERE, SET FLAG SAYING THAT WE MUST WATCH 965 ;IF IT DECIDES TO GO AWAY ON US 966 000776 062 130 040 STA WATCHC ;SET FLAG SAYING WATCH THE KLINIK 967 001001 303 034 002 JMP N0 ;AND PROCEED WITH THE NULL JOB 968 969 ;GOT HERE IF CARRIER WAS FALSE, SEE IF WE CARE 970 001004 072 130 040 N00: LDA WATCHC ;FETCH UP THE "WATCH" FLAG 971 001007 247 ANA A ;SET FLAGS 972 001010 312 034 002 JZ N0 ;WE DONT CARE, JUMP 973 974 ;CARRIER WENT AWAY ON US. WAIT 2 SECONDS, IF STILL GONE, HANG EM UP 975 001013 345 PUSH H ;BEST SAVE DISPATCHER TYPE ADDRESS 976 001014 LONG.DELAY 2 ;WAIT 2 SECONDS (1) 001014 041 220 001 LXI H,200. * 2 ;SET UP THE TIMING COUNT IN H,L REG (1) 001017 315 154 014 CALL LTLOOP ;AND GO DELAY ABOUT 1 SECOND FOR EACH (300 COUNT) 977 001022 333 302 IN CARRIER ;***** I/O RD 302 ***** 978 001024 346 001 ANI 1 ;SEE IF TRUE(HIGH) OR FALSE(LOW) 979 001026 304 134 034 CNZ HANGUP ;IT WAS STILL FALSE(I.E HIGH), HANGUP THE LINE 980 001031 341 POP H ;NOW RESTORE 981 001032 CLRB WATCHC ;AND SAY TO LEAVE THIS ALONE FOR A WHILE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-20 HCORE.M80 **BEGINNING OF BASIC CONSOLE NULL JOB... BEGINS WITH A PROMPT 983 ;ELSE FALL THRU CAUSE ALL OK 984 001034 333 301 N0: IN BOOTSW ;***** I/O READ 301 ***** 985 001036 346 002 ANI 2 ;IS BOOT SW SET???(TRUE LO, BECAUSE OF INVERSION) 986 001040 302 051 002 JNZ N1 ;SKIP NEXT INSTR IF FALSE(I.E HIGH) 987 988 001043 315 244 021 N0.5: CALL BOOT ;OTHERWISE...GO TO BOOT COMMAND 989 001046 303 335 001 JMP NULLJ ;AFTER BOOT, ALL TTY INPUT WAITS ARE KILLED VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-21 HCORE.M80 **BEGINNING OF BASIC CONSOLE NULL JOB... BEGINS WITH A PROMPT 991 ;CONTINUE NULL STATE STATUS CHECK 992 ; CHECK FOR SYSTEM PARITY ERRORS 993 001051 333 301 N1: IN BOOTSW ;***** I/O RD 301 ***** 994 001053 346 010 ANI ^O10 ;IS PARITY ERR SIGNAL SET(TRUE .LO.) 995 001055 302 072 002 JNZ NX2 ;SKIP NEXT INSTR IF NOT SET 996 ;IF YES SET, MUST CHECK THE PARITY ERROR 997 001060 072 166 040 LDA CHKPAR ;GET FLAG TO SEE IF SHOULD REPORT PARITY ERRORS 998 001063 247 ANA A ;SET FLAGS 999 001064 302 050 027 JNZ RPTPAR ;IF NOT ZERO, MUST GO REPORT PARITY ERROR 1000 001067 303 076 002 JMP N2 ;AND CONTINUE ELSE 1001 1002 001072 057 NX2: CMA ;IF HERE, SET ACCUM .EQ. -1 1003 001073 062 166 040 STA CHKPAR ;AND SET FLAG TO SAY REPORT PARITY ERR VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-22 HCORE.M80 **BEGINNING OF BASIC CONSOLE NULL JOB... BEGINS WITH A PROMPT 1005 1006 ;CONTINUE NULL STATE STATUS CHECKS 1007 ; CHECK TO SEE IF RUN FLOP HAS DIED 1008 001076 333 300 N2: IN RUNFP ;;***** I/O READ 300Q ***** 1009 001100 346 010 ANI ^O10 ;IS HALT LOOP SET??(TRUE .LO.) 1010 001102 302 124 002 JNZ NX3 ;SKIP NEXT INSTR IF NOT SET(CPU MUST BE "RUNNING") 1011 ;FALL THRU IF HALT LOOP SET.. 1012 001105 072 231 040 LDA CHKHLT ;GET THE FLAG THAT SAYS IF WE SHLD CHK HALT 1013 001110 247 ANA A ;SET CONDITION CODES 1014 001111 365 PUSH PSW ;SAVE FLAGS FOR LATER USE 1015 001112 304 277 016 CNZ HLTCM ;IF FLAG SET, GO REPORT THE HALT 1016 001115 361 POP PSW ;GET FLAGS BACK 1017 001116 302 313 002 JNZ CHKKA ;IF YOU JUST HALTED, GO SEE IF RELOAD REQUEST 1018 001121 303 130 002 JMP N3 ;IF CLR, NO NEED TO REPORT..THEY KNOW 1019 1020 ;THIS AND THE "CONTINUE" CODE IS THE ONLY CODE 1021 ;IN THE CONSOLE THAT SETS THE "CHECK HALT" FLAG.. 1022 ;AND U CAN ONLY GET HERE IF THE "HALT LOOP" FLAG HAS BEEN CLEARED, BY 1023 ;ANY MEANS..AND WHEN U GET HERE, THE ACCUM MUST BE ZERO 1024 001124 057 NX3: CMA ;SET ACCUM = -1 1025 001125 062 231 040 STA CHKHLT ;AND ZAP THE CHECK HALT FLAG.. VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-23 HCORE.M80 **BEGINNING OF BASIC CONSOLE NULL JOB... BEGINS WITH A PROMPT 1027 ;CONTINUE NULL STATE STATUS CHECKS 1028 ;CHECK TO SEE IF MOS MEMORY REFRESH CYCLE HAS DIED 1029 001130 333 101 N3: IN REFERR ;READ REFRESH ERROR BIT 1030 001132 346 001 ANI 01 ;REFRESH ERROR TRUE??(TRUE .LO.) 1031 001134 302 153 002 JNZ NX4 ;SKIP FOLLOWING CODE IF NO REFRESH ERROR 1032 1033 ;FALL INTO THIS IF A REFRESH ERROR OCCURS 1034 001137 072 167 040 LDA CHKREF ;GET FLAG THAT SAYS CHECK REFRESH ..SEE IF SHOULD BE REPORTED 1035 001142 247 ANA A ;SET 8080 FLAGS 1036 001143 345 PUSH H ;SAVE DISPATCHING ADDRESS 1037 001144 304 314 032 CNZ NOREFRESH ;GO REPORT REFRESH ERROR IF NECESSARY 1038 001147 341 POP H ;RESTORE DISPATCH ADDRESS 1039 001150 303 157 002 JMP N4 ;AND CONTINUE AS IF NOTHING HAPPENED 1040 1041 ;THIS IS THE ONLY CODE THAT CAN SET THE "REPORT REFRESH ERROR FLAG" 1042 001153 057 NX4: CMA ;U GOT HERE ON A JZ, SO ACCUM MUST BE ZERO 1043 001154 062 167 040 STA CHKREF ;AND SET FLAG TO -1 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-24 HCORE.M80 **BEGINNING OF BASIC CONSOLE NULL JOB... BEGINS WITH A PROMPT 1045 ;CONTINUE NULL STATE STATUS CHECK 1046 ; CHECK FOR "END-OF-LINE" OR A RUNNING 10'S "KEEP-ALIVE" 1047 001157 072 156 040 N4: LDA USRMD ;IS THIS USER MODE? 1048 001162 247 ANA A ;SET CONDITION FLAGS 1049 001163 302 267 002 JNZ LIVE10 ;IF YES, CHECK 10 INTERRUPTS & KEEP ALIVE 1050 1051 ;BEFORE DOING ANOTHER COMMAND. SEE IF WE ARE ENVELOPING AND MUST SEND 1052 ;OUT A PACKET 1053 001166 072 247 040 LDA CSLMODE ;ONLY DO ENVELOPE STUFF IF IN MODE 4 OR GREATER 1054 001171 376 020 CPI .MODE4 ;CHECK IF MODE 4 1055 001173 302 203 002 JNZ EOL.LK ;NOT MODE 4, PROCEED AS NORMAL 1056 1057 001176 345 PUSH H ;SAVE H,L IT HAS THE DISPATCH ADDRESS 1058 001177 315 205 034 CALL DECNET ;IF SOMETHING THERE, SEND IT OUT 1059 001202 341 POP H ;NEED H,L AGAIN 1060 1061 ;OTHERWISE, CTY'S EOL FLAG 1062 ;BUT FIRST SEE IF THIS IS A REPEAT 1063 001203 072 213 040 EOL.LK: LDA RPTON ;GET THE REPEAT FLAG 1064 001206 247 ANA A ;SET THE PROCESSOR FLAGS 1065 001207 302 215 020 JNZ RPTRTN ;GO BACK TO THE REPEAT FUNCTION SO THAT HE CAN PROCEED 1066 1067 001212 072 204 040 LDA EOL ;GET VALUE OF EOL FLAG 1068 001215 267 ORA A ;SET FLAGS..IS EOL SET?? 1069 001216 312 340 001 JZ NULLW ;REMAIN IN NULL JOB LOOP IF NOT SET 1070 1071 ;ELSE GO PROCESS A COMMAND 1072 001221 351 PCHL ;RETURN TO COMMAND IN TTY INPUT, OR DECODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-25 HCORE.M80 **TYPEIN COMMAND DECODER AND DISPATCHER** 1074 .SBTTL **TYPEIN COMMAND DECODER AND DISPATCHER** 1075 001222 257 DCODE: XRA A ;ZERO OUT THE ACCUM 1076 001223 107 MOV B,A ;AND ZERO OUT TMP LOCATION 1077 1078 001224 021 210 004 LXI D,CMDLST ;"D,E" NOW POINTS TO COMMAND LIST CHARACTER PAIRS 1079 001227 052 227 040 LHLD FIRST ;"H,L" NOW POINTS TO FIRST CHARACTER TYPED AS COMMAND 1080 001232 315 233 021 CALL FNDARG ;FIRST GO CLR ANY LEADING SPACES OR TABS FROM COMMAND LINE 1081 001235 332 344 003 JC NORML ;IF AT END-OF-COMMAND, ITS A NULL COMMAND 1082 ;NOW BEGINS COMMAND LOOK UP LOOP... "H,L" POINTS TO FIRST COMMAND CHAR. 1083 ;WHILE "D,E" POINTS TO FIRST CHAR IN THE LIST OF ALLOWABLE COMMANDS 1084 001240 032 DCODL: LDAX D ;CMD LIST CHAR TO ACCUM 1085 001241 267 ORA A ;IS THIS A ZERO BYTE?? 1086 001242 312 261 002 JZ NXMDC ;IF YES,END OF LIST 1087 001245 023 INX D ;WHILE YOU R AT IT UPDAT CMD LIST PNTR 1088 1089 001246 276 CMP M ;COMPARE CMD LIST CHAR WITH TYPED CHAR. 1090 001247 312 203 003 JZ MTCH1 ;IF THEY MATCH, BR TO "MTCH1" VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-26 HCORE.M80 **TYPEIN COMMAND DECODER AND DISPATCHER** 1092 ;HERE IF NO MATCH..UPDATE CMD LIST PNTR TO START OF NEXT COMMAND, 1093 ;THEN CHECK IF TRIED ENTIRE LIST YET.. 1094 ;IF TRIED ENTIRE LIST, REPORT COMMAND ERROR AND BACK TO NULL JOB LOOP. 1095 ;IF NOT TRIED ENTIRE LIST YET, LOOP BACK AND TRY SOME MORE 1096 001252 023 MISS2: INX D ;BUMP PNTR PAST SECOND CHAR OF CMD 1097 001253 023 INX D ;BUMP PAST THE DISPATCH ADDR 1098 001254 023 INX D 1099 001255 004 INR B ;UPDATE NUMBER OF "TRIES" 1100 001256 303 240 002 JMP DCODL ;IF NOT, JUMP BACK AND TRY AGAIN 1101 1102 ;IF FALL TO HERE, WAS ILLEGAL COMMAND.. CLEAR REST 1103 ;UP TO EOL... TYPE ERROR MESSSAGE AND BACK TO NULL JOB LOOP 1104 ;FIRST STEP IS CLEARING BAD COMMAND FROM COMMAND BUFFER 1105 001261 NXMDC: PLINE CMDNG ;COMMAND NO GOOD (1) 001261 337 RST 3 ;PRINT LINE OF CHARS (1) 001262 026 037 .ADDR CMDNG ;BUFF TO PRINT 1106 1107 001264 303 166 032 JMP MMERR ;AND BACK TO PROMPT.. VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-27 HCORE.M80 ****CTY SERVICE**** 1109 .SBTTL ****CTY SERVICE**** 1110 ;CODE ENTERED FROM THE NULL JOB LOOP WHENEVER WE ARE IN USER MODE(MODE 3) 1111 ;CODE CHECKS TO SEE IF CHAR IS AVAILABLE FROM THE 10,& ALSO IF KEEP ALIVE 1112 ;COUNT IS ACTIVE. WE ALSO CHECK FOR REBOOT REQUESTS (AS IN 20 SYSTEM MONITOR'S 1113 ;"BUGHALTS") 1114 001267 333 301 LIVE10: IN SMSTS ;SEE IF INTERRUPT FROM THE 10 IS PENDING 1115 001271 247 ANA A ;SET CONDITION CODES 1116 001272 365 PUSH PSW ;SAVE FLAGS FOR A LITTLE BIT 1117 001273 364 243 007 CP CHRRDY ;IF PLUS, A CHARACTER IS READY, GO PROCESS 1118 1119 ;FIRST, WE ONLY WANT TO CHECK THE KEEP-ALIVE COUNTER EVERY SECOND. 1120 ;FIRST WE WILL CHECK OUR COUNTERS AND SEE IF TIME TO CHECK KEEP-ALIVE DATA 1121 001276 361 POP PSW ;GET FLAGS BACK 1122 001277 364 011 003 CP FAKLIT ;IF TYPED A CHAR, THEN DOWN COUNT FOR TIME WASTED 1123 001302 312 313 002 JZ CHKKA ;IF ZERO, DO WHAT MUST BE DONE 1124 1125 001305 315 023 003 CALL DTIME ;ALWAYS DO IT AT LEAST ONCE 1126 001310 302 335 001 JNZ NULLJ ;IF NOT ZERO, IT HASN'T BEEN A SECOND YET. BACK NULL 1127 1128 ;WHEN YOU FALL TO HERE, IT IS TIME TO CHECK FOR "KEEP-ALIVE" OR "RELOAD" 1129 001313 041 244 006 CHKKA: LXI H,KPAINI ;FIRST WE MUST RESET OUR MAJOR LOOP COUNTER 1130 001316 042 342 040 SHLD KATIM1 ;EACH NUM IN THIS LOC .EQ. .444 SECONDS BETWEEN CHECKS 1131 1132 001321 INTON ;DON'T PRINT THIS CRUD (1) 001321 327 RST 2 ;GO SET INTERNAL MODE 1133 001322 363 DI ;NO INTERRUPTS 1134 001323 EXAM 31 ;MOS MEMORY LOC 31 HAS THE INFORMATION (1) 001323 315 231 030 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS (1) 001326 031 000 .ADDR 31 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 1135 001330 373 EI ;OK..INTERRUPTS 1136 1137 001331 INTOFF ;INTERNAL MODE OFF NOW (1) 001331 367 RST 6 ;GO EXIT FROM INTERNAL MODE 1138 001332 072 015 040 LDA EMBUF+3 ;GRAB THE RELOAD BITS.. WE CERTAINLY NEED THOSE 1139 001335 027 RAL ;"FORCED RELOAD" SHIFT INTO CARRY 1140 001336 332 035 003 JC FRELOAD ;IF "RELOAD" SET, GO EXECUTE A RELOAD VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-28 HCORE.M80 ****CTY SERVICE**** 1142 ;NOW SEE IF KEEP-ALIVE ACTIVE 1143 001341 027 RAL ;"KEEP-ALIVE" BIT INTO THE C-BIT 1144 001342 322 335 001 JNC NULLJ ;IF ITS NOT SET, GO BACK TO NULL JOB 1145 1146 ;KEEPING A WATCH ON THE KEEP ALIVE COUNT...BLINKY LIGHTS 1147 001345 072 360 040 LDA STATE ;GET CURRENT STATE OF THE LIGHTS 1148 001350 127 MOV D,A ;SAVE IT JUST FOR A LITTLE BIT 1149 001351 346 373 ANI STMSK ;CLR THE "STATE" LIGHT FROM THE CURRENT SELECTIONS 1150 001353 137 MOV E,A ;AND NOW SAVE THIS LITTLE BIT IN A REGISTER 1151 1152 001354 172 MOV A,D ;GET BACK THE ORIGINAL "STATE" 1153 001355 057 CMA ;"BLINK" 1154 001356 346 004 ANI STBIT ;ONLY WANT TO BLINK THE SINGLE LIGHT 1155 001360 263 ORA E ;THROW IN THE PART THAT IS AS WAS.. 1156 001361 062 360 040 STA STATE ;PUT THE WHOLE MESS BACK, THE NULL LOOP WILL BLINKY 1157 001364 323 101 OUT LIGHTS ;BLINK THE LIGHTS HERE 1158 001366 372 335 001 JM NULLJ ;AND IF MINUS, WE ARE "SHUTING DOWN", LET LIGHTS GO 1159 1160 ;WE DID AN EXAM 31 A VERY SHORT TIME AGO, SO THE EXAMINE BUFFER SHOULD STILL 1161 ;HAVE A VALID "KEEP-ALIVE" UPDATE COUNT IN IT 1162 001371 041 250 040 LXI H,KACNTR ;GET POINTER TO THE PREVIOUS "KA" COUNT 1163 001374 072 013 040 LDA EMBUF+1 ;GET WHAT SHOULD BE AN UPDATED "KA" COUNT 1164 001377 276 CMP M ;COMPARE..BETTER BE DIFFERENT 1165 001400 312 130 003 JZ DIEING ;IF SAME, GO SEE IF CPU IS REALLY DIEING 1166 ;FALL THRU IF THE COUNTS WERE DIFF..SAVE THE NEW COUNT 1167 001403 167 MOV M,A ;NEW COUNT GOES TO RAM, OVERWRITES THE OLD 1168 001404 CLRB DIECNT ;CLEAR THAT DIE COUNT 1169 001406 303 335 001 JMP NULLJ ;BACK TO THE NULL LOOP 1170 1171 ;ROUTINE FOR WHEN DOING CTY OUT PUT THE LIGHTS STILL BLINK AT A REASONABLE 1172 ;RATE 1173 001411 052 342 040 FAKLIT: LHLD KATIM1 ;GET CURRENT COUNT FOR BETWEEN THE LIGHTS 1174 001414 175 MOV A,L ;GET LO ORDER PIECE 1175 001415 346 374 ANI ^O374 ;TWEEK LITE COUNT, CAUSE OUR TYPING MESSED UP TIMER LOOP 1176 001417 157 MOV L,A ;PUT LO ORDER PIECE BACK(MASKING .EQV. TO SUBTRACT 100) 1177 001420 303 027 003 JMP DTM1 ;AND PROCEED 1178 ;ROUTINE TO DOWN COUNT KEEP ALIVE COUNTER 1179 001423 052 342 040 DTIME: LHLD KATIM1 ;GET A 16-BIT MINOR LOOP COUNTER 1180 001426 053 DCX H ;DECREMENT THE COUNTER 1181 001427 042 342 040 DTM1: SHLD KATIM1 ;AND PUT IT BACK 1182 001432 175 MOV A,L ;NOW CHECK THE COUNT FOR .EQ. 0 1183 001433 264 ORA H ;"OR" HI PIECE WITH THE "LO" PIECE 1184 001434 311 RET VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-29 HCORE.M80 ****CTY SERVICE**** 1186 ;ROUTINE TO ENTERED WHEN THE "FORCE RELOAD" BIT HAS BEEN SET BY A RUNNING 1187 ;PROGRAM IN THE KS10 1188 001435 FRELOAD: CLRB NOPNT ;CLEAR THE NO PRINT FLAG 1189 001437 PLINE FRCMSG ;PRINT MESSAGE TO INDICATE THE FORCED RELOAD (1) 001437 337 RST 3 ;PRINT LINE OF CHARS (1) 001440 336 037 .ADDR FRCMSG ;BUFF TO PRINT 1190 001442 076 002 MVI A,2 ;BIT 34 IS THE APPROPRIATE GUY ON A FORCED RELOAD 1191 001444 062 255 040 STA GOCODE ;SET BIT IN THE 8080 RAM BUFFER 1192 001447 333 300 IN RUNFP ;NOW SEE IF WE MUST HALT THE PROCESSOR 1193 001451 346 010 ANI ^O10 ;WE DID NOT INVERT SIGNAL.0=HALTED, 1=RUNNING 1194 1195 001453 INTON ;DONT PRINT WHAT HAPPENS TO THE HALT (1) 001453 327 RST 2 ;GO SET INTERNAL MODE 1196 001454 304 227 017 CNZ HACMD ;MAKE SURE THE PROCESSOR IS STOPPED 1197 001457 INTOFF ;OK TO PRINT NOW (1) 001457 367 RST 6 ;GO EXIT FROM INTERNAL MODE 1198 001460 072 256 040 LDA SECRET ;SECRET LOCATION 1199 001463 247 ANA A ;SET 8080 FLAGS 1200 001464 302 255 001 JNZ REINI ;IF FLAG SET, WE WILL NOT DO AUTO RELOADS 1201 1202 001467 021 004 002 LXI D,^O1004 ;POINTER TO THE MONITOR PRE-BOOT 1203 001472 315 301 022 CALL FILEINIT ;GO READ IN THE MONITOR PRE-BOOT 1204 001475 332 242 032 JC L.BTERR ;IF ERROR, FATAL OUT 1205 1206 001500 041 001 000 LXI H,1 ;NO ERR, NOW GO START THE MICRO-CODE AT LOC 1 1207 001503 315 235 016 CALL SM1.5 ;START MICROCODE, ADDRESS PASSED IN H,L 1208 001506 LONG.DELAY 2 ;GUARANTEE THAT THE "SM 1" HAS TIME TO FINISH (1) 001506 041 220 001 LXI H,200. * 2 ;SET UP THE TIMING COUNT IN H,L REG (1) 001511 315 154 014 CALL LTLOOP ;AND GO DELAY ABOUT 1 SECOND FOR EACH (300 COUNT) 1209 001514 315 370 021 CALL BT.GO1 ;NOW FIX PARITY AND OTHER THINGS THAT WE BROKE 1210 001517 315 333 021 CALL INFOBT ;AND PASS THE SOURCE OF THE PRE-BOOT IN MOS MEM 1211 1212 001522 315 276 021 CALL LB.GO1 ;AND GO EXECUTE THE BOOT CODE 1213 001525 303 335 001 JMP NULLJ ;AND BACK TO NULL JOB 1214 1215 001530 041 257 040 DIEING: LXI H,DIECNT ;GET THE NUMBER OF CONSECUTIVE "NO CHANGES" IN KA CNT 1216 001533 064 INR M ;INCREMENT 1217 001534 176 MOV A,M ;GET COUNT INTO ACCUM 1218 001535 376 043 CPI KATIMX ;NOW SEE IF OFFICIAL DEATH 1219 001537 372 335 001 JM NULLJ ;IF NOT YET, GO BACK AND WAIT FOR MORE 1220 1221 ;ELSE, FALL ON THROUGH TO THE RELOAD CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-30 HCORE.M80 ****CTY SERVICE**** 1223 ;ROUTINE ENTERED WHEN THE "KEEP-ALIVE" COUNT DOES NOT CHANGE, AND WE 1224 ;ISSUE A RELOAD BECAUSE WE BELIEVE THAT THE PROGRAM RUNNING IN THE KS10 1225 ;HAS DIED 1226 001542 CLRB NOPNT ;CLEAR THE NO PRINT FLAG 1227 001544 CLRB DIECNT ;AND RESET THE DIE COUNT 1228 001546 PLINE KAMSG ;PRINT MESSAGE TO INDICATE KEEP-ALIVE FAILURE (1) 001546 337 RST 3 ;PRINT LINE OF CHARS (1) 001547 331 037 .ADDR KAMSG ;BUFF TO PRINT 1229 1230 001551 INTON ;DONT PRINT ANY OF THIS STUFF (1) 001551 327 RST 2 ;GO SET INTERNAL MODE 1231 001552 315 227 017 CALL HACMD ;FIRST, STOP THE MACHINE 1232 001555 363 DI ;NO INTERRUPTS, TILL THE EXAMINE IS COMPLETE 1233 001556 EXAM 71 ;EXAMINE THE INSTRUCTION IN 71 (1) 001556 315 231 030 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS (1) 001561 071 000 .ADDR 71 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 1234 001563 373 EI ;OK TO INTERRUPT NOW 1235 1236 001564 076 001 MVI A,1 ;KEEP ALIVE CODE IS A 1 1237 001566 062 255 040 STA GOCODE ;SAVE FOR PASSING TO KS10 1238 001571 315 063 017 CALL EXINTM ;NOW GO EXECUTE LOC 71 IN PAGE 0 OF MONITOR SPACE 1239 001574 315 204 017 CALL COCMD ;LET THE PROCESSOR RESUME 1240 001577 INTOFF ;MAY RESUME PRINTING THIS STUFF (1) 001577 367 RST 6 ;GO EXIT FROM INTERNAL MODE 1241 001600 303 335 001 JMP NULLJ ;AND BACK TO NULL JOB VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-31 HCORE.M80 **COMMAND DECODER CONTINUED** 1243 .SBTTL **COMMAND DECODER CONTINUED** 1244 ;CONTINUE COMMAND DECODER...... 1245 ;HERE IF FIRST CHARACTER MATCHED.SEE IF SECOND CHAR MATCHED. 1246 001603 043 MTCH1: INX H ;INPUT BUFFER NOW PNTS TO SECOND CHAR TYPED 1247 001604 032 LDAX D ;ACCUM GETS SECOND "EXPECTED" CHAR FROM COMMAND LIST 1248 001605 276 CMP M ;NOW. DOES SECOND CHARACTER MATCH?? 1249 001606 312 215 003 JZ MTCH2 ;JUMP IF YES, SECOND CHAR MATCHES. 1250 1251 ;HERE IF SECOND CHARACTER DID NOT MATCH.RESET "H,L" & GO BACK TO TRY AGAIN 1252 001611 053 DCX H ;RESET "H,L" 1253 001612 303 252 002 JMP MISS2 ;AND CONTINUE PROCESSING 1254 1255 ;GET TO HERE IF SECOND CHARACTER MATCHED 1256 001615 023 MTCH2: INX D ;UPDATE PAST 2ND CHAR 1257 001616 043 INX H ;UPDATE BUFFER POINTER 1258 1259 001617 315 256 033 CALL SEPCHR ;GET RID OF SEPARATORS VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-32 HCORE.M80 **COMMAND DECODER CONTINUED** 1261 ;"H,L" SHOULD NOW POINTS TO THE CMD BUFF 1262 ;"D,E" NOW POINTS TO THE DISP ADDR 1263 ;OR ELSE TO "EOL" CHAR IF CMD HAS NO ARGS.. ANYTHING ELSE IS COMMAND ERROR 1264 001622 042 223 040 SHLD .ARG1 ;SAVE "H,L" POINTER TO FIRST ARG. 1265 1266 001625 170 MOV A,B ;NOW LOAD ACCUM WITH NUMBER "TRIES" TO FIND MATCH 1267 001626 353 XCHG ;DISP POINTER NOW TO "H,L" 1268 1269 001627 136 MOV E,M ;SET LOW ODER HALF OF "TABLE ENTRY" INTO "E" 1270 001630 043 INX H ;BUMP POINTER 1271 001631 126 MOV D,M ;SET HIGH ORDER HALF OF "TABLE ENTRY" INTO "D" 1272 001632 041 344 003 LXI H,NORML ;SET A RETURN VALUE 1273 001635 345 PUSH H ;AND PLACE ON STACK FOR RETURNS 1274 1275 ;PIECE OF CODE TO SAVE EACH COMMAND DISPATCH ADDRESS IN THE RAM BUFFER 1276 ;SO THAT THE REPEAT FUNCTION CAN DISPATCH THRU THE LIST WITHOUT DECODING 1277 ;THE TYPED IN COMMAND STRING AGAIN.. 1278 001636 247 ANA A ;CHECK IF THIS IS RP COMMAND..IF YES MUST 1279 001637 062 000 040 STA T80DT ;SAVE WHICH COMMAND IS BEING EXECUTED 1280 001642 312 271 003 JZ CMDGO ;JUMP SO THAT CMD LST BUFFER NO CHANGED 1281 1282 001645 072 131 040 LDA CMDS.. ;SEE IF THIS IS THE FIRST COMMAND IN A LINE 1283 001650 247 ANA A ;SET FLAGS 1284 001651 314 316 020 CZ RPNEW ;IF IS THE FIRST COMMAND, RESET REPEAT BUFFER POINTERS 1285 1286 001654 052 211 040 LHLD RPLST ;GET POINTER TO CURRENT FREE BUFFER LOCATION 1287 001657 162 MOV M,D ;SAVE HI ORDER PIECE OF DISPATCH ADDRESS 1288 001660 043 INX H ;UPDATE MEM POINTER 1289 001661 163 MOV M,E ;SAVE LO ORDER PIECE OF DISPATCH ADDRESS 1290 001662 043 INX H ;UPDATE POINTER TO FIRST FREE.. 1291 001663 257 XRA A ;CLR ACCUM 1292 001664 057 CMA ;IN ORDER TO MAKE IT -1 1293 001665 167 MOV M,A ;SET -1 AS END-OF-LIST INDICATOR 1294 001666 042 211 040 SHLD RPLST ;AND RESTORE THE POINTER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-33 HCORE.M80 **COMMAND DECODER CONTINUED** 1296 ;CONTINUE THE DISPATCH 1297 001671 353 CMDGO: XCHG ;SET "TABLE ENTRY" INTO "H,L" 1298 ;AND DISPATCH TO ACTUAL COMMAND CODE 1299 001672 315 355 032 CALL EOCML ;SET "C-BIT" TO SAY END-OF-LINE IF TRUE 1300 001675 365 PUSH PSW ;SAVE STATE OF PROCESSOR FLAGS 1301 001676 324 317 003 CNC REMARG ;IF NO C-BIT, CMD HAD ARG..MUST REMEMBER IT 1302 1303 ;FINALLY SEE IF COMMAND REQUIRES AN ARG 1304 001701 322 311 003 JNC CMDGO9 ;IF REQUIRES NO ARG, GO GO GO 1305 1306 ;FALL HERE IF COMMAND HAD NO ARG..SEE IF IT SHOULD HAVE HAD ONE 1307 001704 174 MOV A,H ;GET HI ORDER OF DISP ADDRESS 1308 001705 027 RAL ;SHIFT HI ORDER BIT (BIT15) INTO THE C-BIT 1309 001706 332 155 032 JC RRARG ;WELL IF SET, IT NEEDED ARG.. REPORT THAT HAD NONE 1310 1311 ;ELSE ALL OK.. CLEAR BIT15 IF SET AND PROCEED 1312 001711 174 CMDGO9: MOV A,H ;HI ORDER TO ACCUM 1313 001712 346 177 ANI ^O177 ;CLEAR BIT 15 NO MATTER WHAT 1314 001714 147 MOV H,A ;PUT HI ORDER BACK 1315 001715 361 POP PSW ;GET THE PROCESSOR FLAGS BACK 1316 001716 351 PCHL ;ADDR TO PC TAKES THE DISPATCH VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-34 HCORE.M80 **COMMAND DECODER CONTINUED** 1318 ;ROUTINE TO REMEMBER IF COMMAND HAD AN ARG..USED BY REPEAT FUNCTION 1319 001717 365 REMARG: PUSH PSW ;SAVE FLAGS 1320 001720 072 000 040 LDA T80DT ;SEE IF THIS WAS A REPEAT, IN WHICH CASE, DO NOTHING 1321 001723 247 ANA A ;SET CPU FLAGS 1322 001724 312 342 003 JZ REMAR1 ;IF WAS RP, GET OUT 1323 1324 001727 345 PUSH H ;AND SAVE DISPATCH ADDRESS 1325 001730 052 211 040 LHLD RPLST ;GET THIS DISPATCH FROM REPEAT LIST 1326 001733 053 DCX H ;BACK UP ADDR POINTER TO POINT 1327 001734 053 DCX H ; HI ORDER PIECE OF ADDRESS 1328 001735 176 MOV A,M ;NOW GET HI ORDER PIECE INTO ACCUM 1329 001736 366 200 ORI ^O200 ;ADD SIGN BIT TO REMEMBER ARG 1330 001740 167 MOV M,A ;NOW PUT IT BACK 1331 001741 341 POP H ;RESTORE DISPATCH ADDRESS 1332 001742 361 REMAR1: POP PSW ;AND RESTORE C-BIT FROM PREVIOUS "EOCML" 1333 001743 311 RET ;AND RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-35 HCORE.M80 **COMMAND DECODER CONTINUED** 1335 ;THIS IS "NORML", FOR NORMAL RETURNS.. IT SETS UP PREVIOUS POINTERS 1336 ;AND THEN GOES BACK TO PROMPT 1337 001744 041 204 040 NORML: LXI H,EOL ;GET PNTR TO COMMAND COUNT 1338 001747 176 MOV A,M ;COPY TO ACCUM 1339 001750 075 DCR A ;DECREMENT IT 1340 001751 167 MOV M,A ;PUT BACK WHERE U GOT IT 1341 ;IF COUNT WAS DOWN TO ZERO, THEN RESET IT 1342 001752 075 DCR A ;IF COUNT WAS ZERO, THIS MAKES IT NEGATIVE 1343 001753 372 004 004 JM NORDIS ;IF EOL HAS GONE MINUS, TAKE NORMAL DISPATCH 1344 001756 315 371 003 CALL FXNXT ;OTHER WISE BE CLEVER & CRYPTIC 1345 001761 CLRB ERRCD ;AND CLEAR ERROR CODE 1346 001763 041 222 002 LXI H,DCODE ;FIX H,L FOR NORMAL NULL JOB 1347 1348 001766 303 051 002 JMP N1 ;AND FINALLY, ALL ELSE GOES TO NULL LOOP 1349 001771 052 223 040 FXNXT: LHLD .ARG1 ;GET CMD PNTR 1350 001774 043 INX H ;UPDATE IT PAST THE CURRENT EOL CHAR(, OR CR-LF) 1351 001775 042 227 040 SHLD FIRST ;FIX CURRENT CMD LINE PNTR 1352 002000 311 RET ;AND THATS ENOUGH FOR NOW 1353 1354 ;CODE FOR BUFFER OVER FLOW 1355 002001 BFOVR: PLINE BV ;"BUFFER OVERFLOW (1) 002001 337 RST 3 ;PRINT LINE OF CHARS (1) 002002 021 037 .ADDR BV ;BUFF TO PRINT 1356 002004 052 350 040 NORDIS: LHLD NOREND ;GET THE CURRENT DISPATCH ADDRESS FOR NORMAL ENDS 1357 002007 351 PCHL ;AND GO VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-36 HCORE.M80 **COMMAND DECODER CONTINUED** 1359 ;SUBROUTINE TO PRINT A SINGLE CHARACTER.. 1360 ;CHARACTER TO BE PRINTED IS PASSED IN THE ACCUM.. 1361 ;IF THE UART SHOULD FAIL AND NEVER REACH THE TRANSMITTER READY STAT 1362 ;THE 8080 WILL HANG IN THIS LOOP FOREVER TRYING TO PRINT 1363 002010 365 PCHR: PUSH PSW ;SAVE CHARACTER ON THE STACK 1364 002011 072 120 040 LDA NOPNT ;GET NO PRINT FLAG 1365 002014 267 ORA A ;IS IT SET?? 1366 002015 312 022 004 JZ PCHR0 ;IF NOT CONTINUE AS NORMAL 1367 1368 002020 361 POP PSW ;IF IT IS..NO PRINTING 1369 002021 311 RET ;SO RETURN 1370 1371 002022 072 247 040 PCHR0: LDA CSLMODE ;GET CURRENT KLINIK LINE MODE 1372 002025 376 020 CPI .MODE4 ;IS THIS APT MODE?? 1373 002027 302 057 004 JNZ PCHR1 ;IF NO, PRINT 1374 1375 ;HERE IF DOING APT AND MUST MERELY STACK CHARS TO BE ENVELOPED AND SENT OUT 1376 ;A LITTLE LATER. THE CHARACTER TO BE STACKED IS SITTING ON THE TOP OF THE 1377 ;STACK 1378 002032 361 POP PSW ;NOW GET THE CHARACTER THAT WAS STACKED 1379 002033 345 PUSH H ;MUST SAVE H,L IN HERE 1380 002034 052 352 040 LHLD ENVPNT ;GET THE POINTER TO THE ENVELOPE 1381 002037 167 MOV M,A ;PUT CHARACTER INTO THE BUFFER 1382 002040 043 INX H ;UPDATE THE POINTER 1383 002041 066 000 MVI M,0 ;GUARANTEE LAST BYTE IS A ZERO 1384 002043 042 352 040 SHLD ENVPNT ;PUT IT BACK WHERE U GOT IT 1385 002046 341 POP H ;AND RESTORE REG 1386 002047 376 015 CPI CRCHR ;IF WE ARE BUFFERING A CR, MUST SET THE FLAG 1387 002051 300 RNZ ;IF NOT A CR, JUST LEAVE 1388 002052 062 252 040 STA MAILFG ;ELSE SET THE FLAG 1389 002055 311 RET ;AND OUT 1390 1391 002056 365 PCHR1Z: PUSH PSW ;CHAR ON STACK FOR A BIT 1392 002057 333 201 PCHR1: IN CTYCTL ;GET UART STATUS 1393 002061 346 001 ANI 01 ;CHECK BITS TO SEE IS XMITTER READY?? 1394 002063 312 057 004 JZ PCHR1 ;JUMP BACK IF NOT READY YET 1395 1396 ;NOW,BEFORE PRINTING, SEE IF NEED TO TYPE TO KLINIK LINE TOO. 1397 002066 072 247 040 LDA CSLMODE ;GET CURRENT KLINIK LINE MODE 1398 002071 376 010 CPI .MODE3 ;KLINIK IN PARALLEL MODE?? 1399 002073 302 113 004 JNZ PCHROV ;IF NOT, JUST GO PRINT 1400 1401 ;FALL THROUGH IF NEED KLINIK TOO 1402 002076 333 203 PCHR2: IN REMCTL ;GET KLINIK UART STATUS 1403 002100 346 001 ANI 01 ;CHECK THE READY BIT 1404 002102 312 076 004 JZ PCHR2 ;IF NOT READY, GO BACK AND TRY AGAIN 1405 002105 361 POP PSW ;GET CHAR OFF STACK WHEN THINGS ARE READY 1406 002106 323 202 OUT REMDAT ;PRINT CHAR ON THE KLINIK LINE 1407 002110 323 200 OUT CTYDAT ;PRINT ON CTY 1408 002112 311 RET ;AND BACK TO CALLER 1409 1410 002113 361 PCHROV: POP PSW ;FINALLY READY..GET CHAR FROM STACK 1411 002114 323 200 OUT CTYDAT ;SEND CHARACTER 1412 002116 311 RET ;AND RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-37 HCORE.M80 **COMMAND DECODER CONTINUED** 1414 ;SUBROUTINE KCHR. FOR PRINTING A SINGLE CHARACTER ON THE KLINIK LINE ONLY 1415 ;PARTICULARLY USEFUL FOR THE "?NA" AND "PW:" MESSAGES 1416 ;CHARACTER TO BE PRINTED CAN BE A TRAILING ARG, OR YOU CAN CALL THIS ROUTINE 1417 ;IN THE MIDDLE AND PASS THE CHAR TO BE PRINTED IN THE ACCUM 1418 002117 343 KCHR: XTHL ;SWAP STACK TOP WITH H,L 1419 002120 176 MOV A,M ;GET THE TRAILING ARG FROM PROM 1420 002121 043 INX H ;UPDATE RETURN ADDRESS PAST THE TRAILING ARG 1421 002122 343 XTHL ;PUT THE RETURN BACK ON THE STACK 1422 002123 365 KCHR0: PUSH PSW ;SAVE THE CHARACTER JUST FOR A LITTLE BIT 1423 002124 333 203 KCHR1: IN REMCTL ;GET KLINIK UART STATUS 1424 002126 346 001 ANI 01 ;SEE IF UART IS READY 1425 002130 312 124 004 JZ KCHR1 ;LOOP TILL IT IS 1426 1427 002133 361 POP PSW ;READY NOW, GET THE CHAR OFF THE STACK 1428 002134 323 202 OUT REMDAT ;SEND TO UART 1429 002136 311 RET ;AND BACK TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-38 HCORE.M80 **COMMAND DECODER CONTINUED** 1431 ;SUBROUTINE KLINE. FOR PRINTING A LINE OF CHARACTERS. A TRAILING ARG 1432 ;POINTING TO THE STRING TO BE PRINTED IS USED. "\" MEANS . 1433 002137 343 KLINE: XTHL ;SWAP STACK, GET POINTER TO TRAILING ARG TO H,L 1434 002140 315 061 033 CALL TARG1 ;GET POINTER TO ARG INTO D,E 1435 002143 343 XTHL ;FIX RETURN ADDRESS 1436 1437 002144 032 KLINE1: LDAX D ;GET FIRST CHAR INTO ACCUM 1438 002145 023 INX D ;UPDATE THE CHARACTER POINTER 1439 1440 002146 247 ANA A ;WELL THEN, SEE IF CHAR IS 0, MEANING END OF STRING 1441 002147 310 RZ ;OUT IF YES 1442 1443 ;WELL THEN , MIGHT AS WELL GO PRINT THE THING 1444 002150 315 123 004 CALL KCHR0 ;GO PRINT THE CHARACTER 1445 002153 303 144 004 JMP KLINE1 ;AND WHEN RETURN, GO FETCH UP THE NEXT CHAR VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-39 HCORE.M80 **COMMAND DECODER CONTINUED** 1447 ;SUBROUTINE TO PRINT A LINE OF CHARACTERS.. 1448 ;POINTER TO THE LINE OF CHARACTERS TO BE PRINTED IS PASSED IN 1449 ;"H,L" REGISTER..NO REGISTERS ARE DESTROYED BY THIS ROUTINE 1450 ;THE END-OF-MESSAGE FOR THE LINE OF CHARACTERS TO BE 1451 ;PRINTED IS INDICATED BY A "00" BYTE AT THE END OF THE MESSAGE TEXT 1452 002156 343 PLNE: XTHL ;REPLACE RETURN..PUT ON STACK 1453 002157 353 XCHG ;TRAILING ARG FROM "D,E" TO "H,L" 1454 1455 002160 176 PLN1: MOV A,M ;GET CHARACTER FROM MEM. 1456 002161 043 INX H ;INCREMENT TO NEXT CHARACTER TO BE PRINTED 1457 1458 002162 376 134 CPI BSLASH ;IS THIS A BACK SLASH(I.E. IN-LINE CRLF) 1459 002164 312 174 004 JZ PLN2 ;JUMP IF YES... 1460 1461 002167 267 ORA A ;IS IT A "00" BYTE??? 1462 002170 310 RZ ;RETURN IF DONE 1463 1464 ;FALL HERE IF GOTTA REAL CHAR.. 1465 002171 315 010 004 CALL PCHR ;GO PRINT CHAR IN ACCUM 1466 002174 314 203 004 PLN2: CZ CRLFIN ;GET HERE ON ZERO FLAG,ONLY IF NEED CRLF 1467 002177 303 160 004 JMP PLN1 ;CONTINUE LOOP 1468 ;SUBROUTINE TO PRINT A CARRIAGE RETURN-LINE FEED 1469 ;NO REGISTERS DESTROYED..JUST CALL TO GET YOUR 1470 ; PRINTED 1471 002202 341 .CRLF: POP H ;MUST FIX THE STACK 1472 002203 CRLFIN: PCHAR CRCHR ;PRINT CARRIAGE RETURN (1) 002203 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 002204 015 .BYTE CRCHR ;CHAR TO PRINT 1473 002205 PCHAR LFCHR ;PRINT LINE FEED (1) 002205 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 002206 012 .BYTE LFCHR ;CHAR TO PRINT 1474 002207 311 RET ;RETURN 1475 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-40 HCORE.M80 **COMMAND DISPATCH LIST** 1477 .SBTTL **COMMAND DISPATCH LIST** 1478 ;THIS LIST CONTAINS ALL CHARACTER PAIRS WHICH ARE CONSIDERED 1479 ;LEGITIMATE COMMANDS TO THE KS10 CONSOLE 1480 002210 CMDLST: 1481 002210 122 120 .BYTE 'R,'P ;*REPEAT IN FAST LOOP* 1482 002212 153 020 .ADDR RPCMD 1483 002214 104 116 .BYTE 'D,'N ;*DEPOSIT NEXT* 1484 002216 324 212 .ADDR BIT15!DNCMD 1485 002220 104 103 .BYTE 'D,'C ;*DEPOSIT CRAM* 1486 002222 120 216 .ADDR BIT15!DCCMD 1487 002224 104 115 .BYTE 'D,'M ;*DEPOSIT MEMORY* 1488 002226 225 212 .ADDR BIT15!DMCMD 1489 002230 114 103 .BYTE 'L,'C ;*LOAD CRAM ADDRESS* 1490 002232 332 213 .ADDR BIT15!LCCMD 1491 1492 002234 114 101 .BYTE 'L,'A ;*LOAD MEMORY ADDRESS* 1493 002236 121 213 .ADDR BIT15!LACMD 1494 002240 104 111 .BYTE 'D,'I ;*DEPOSIT I/O* 1495 002242 013 213 .ADDR BIT15!DICMD 1496 002244 114 111 .BYTE 'L,'I ;*LOAD I/O ADDRESS* 1497 002246 126 213 .ADDR BIT15!LICMD 1498 002250 104 102 .BYTE 'D,'B ;*DEPOSIT BUS* 1499 002252 241 011 .ADDR DBCMD 1500 002254 104 113 .BYTE 'D,'K ;*DEPOSIT KONSOLE* 1501 002256 147 213 .ADDR BIT15!DKCMD 1502 1503 002260 114 113 .BYTE 'L,'K ;*LOAD ADR FOR KONSOLE* 1504 002262 133 213 .ADDR BIT15!LKCMD 1505 002264 105 113 .BYTE 'E,'K ;*EXAMINE KONSOLE* 1506 002266 054 013 .ADDR EKCMD 1507 002270 114 106 .BYTE 'L,'F ;LOAD DIAG FUNCTION 1508 002272 262 214 .ADDR BIT15!LFCMD 1509 002274 104 106 .BYTE 'D,'F ;DEPOSIT INTO DIAG FUNCTION 1510 002276 271 214 .ADDR BIT15!DFCMD 1511 002300 115 113 .BYTE 'M,'K ;*MARK MICRO-CODE* 1512 002302 025 220 .ADDR BIT15!MKCMD VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-41 HCORE.M80 **COMMAND DISPATCH LIST** 1514 002304 125 115 .BYTE 'U,'M ;*UNMARK MICRO-CODE* 1515 002306 020 220 .ADDR BIT15!UMCMD 1516 002310 120 105 .BYTE 'P,'E ;*PARITY ENABLE* 1517 002312 011 017 .ADDR PECMD 1518 002314 103 105 .BYTE 'C,'E ;*CACHE ENABLE* 1519 002316 337 013 .ADDR CECMD 1520 002320 124 105 .BYTE 'T,'E ;*1 MSEC CLOCK ENABLE* 1521 002322 013 014 .ADDR TECMD 1522 002324 124 120 .BYTE 'T,'P ;*TRAP ENABLE* 1523 002326 105 014 .ADDR TPCMD 1524 1525 002330 123 124 .BYTE 'S,'T ;*START* 1526 002332 122 217 .ADDR BIT15!STCMD 1527 002334 110 101 .BYTE 'H,'A ;*HALT* 1528 002336 227 017 .ADDR HACMD 1529 002340 103 117 .BYTE 'C,'O ;*CONTINUE* 1530 002342 204 017 .ADDR COCMD 1531 002344 123 111 .BYTE 'S,'I ;*SINGLE INSTRUCT* 1532 002346 213 014 .ADDR SICMD 1533 002350 123 115 .BYTE 'S,'M ;*START MICRO-CODE* 1534 002352 221 016 .ADDR SMCMD 1535 1536 002354 115 122 .BYTE 'M,'R ;*MASTER RESET* 1537 002356 231 005 .ADDR MRCMD 1538 002360 103 123 .BYTE 'C,'S ;*START CPU CLOCK* 1539 002362 234 014 .ADDR CSCMD 1540 002364 103 110 .BYTE 'C,'H ;*HALT CPU CLOCK* 1541 002366 247 014 .ADDR CHCMD 1542 002370 103 120 .BYTE 'C,'P ;*PULSE CPU CLOCK* 1543 002372 165 013 .ADDR CPCMD 1544 002374 105 116 .BYTE 'E,'N ;*EXAMINE NEXT* 1545 002376 174 012 .ADDR ENCMD VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-42 HCORE.M80 **COMMAND DISPATCH LIST** 1547 002400 105 115 .BYTE 'E,'M ;*EXAMINE MEMORY* 1548 002402 025 012 .ADDR EMCMD 1549 002404 105 111 .BYTE 'E,'I ;*EXAMINE I/O* 1550 002406 350 012 .ADDR EICMD 1551 002410 105 103 .BYTE 'E,'C ;*EXAMINE CRAM* 1552 002412 300 015 .ADDR ECCMD 1553 002414 105 102 .BYTE 'E,'B ;*EXAMINE BUS* 1554 002416 114 011 .ADDR EBCMD 1555 002420 105 112 .BYTE 'E,'J ;*EXAMINE CURRENT CRAM INFO* 1556 002422 123 015 .ADDR EJCMD 1557 1558 002424 124 122 .BYTE 'T,'R ;*TRACE* 1559 002426 212 015 .ADDR TRCMD 1560 002430 122 103 .BYTE 'R,'C ;*FUNCTION READ CRAM CONTROL REG* 1561 002432 037 015 .ADDR RCCMD 1562 002434 132 115 .BYTE 'Z,'M ;*ZERO KS10 MOS MEMORY* 1563 002436 077 020 .ADDR ZMCMD 1564 002440 120 115 .BYTE 'P,'M ;*PULSE MICRO-CODE..* 1565 002442 267 015 .ADDR PMCMD 1566 002444 102 124 .BYTE 'B,'T ;*BOOT SYS* 1567 002446 257 021 .ADDR BTCMD 1568 1569 002450 102 103 .BYTE 'B,'C ;*BOOT CHECK* 1570 002452 373 025 .ADDR BCCMD 1571 002454 114 102 .BYTE 'L,'B ;*LOAD BOOT* 1572 002456 307 021 .ADDR LBCMD 1573 002460 105 130 .BYTE 'E,'X ;*EXECUTE* 1574 002462 057 217 .ADDR BIT15!EXCMD 1575 002464 114 124 .BYTE 'L,'T ;*LAMP TEST* 1576 002466 135 014 .ADDR LTCMD 1577 002470 113 114 .BYTE 'K,'L ;*KLINIK* 1578 002472 265 017 .ADDR KLCMD VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-43 HCORE.M80 **COMMAND DISPATCH LIST** 1580 002474 105 122 .BYTE 'E,'R ;*EXAMINE REGISTER* 1581 002476 216 013 .ADDR ERCMD 1582 002500 114 122 .BYTE 'L,'R ;*LOAD REGISTER* 1583 002502 301 013 .ADDR LRCMD 1584 002504 104 122 .BYTE 'D,'R ;*DEPOSIT REGISTER* 1585 002506 311 013 .ADDR DRCMD 1586 002510 115 124 .BYTE 'M,'T ;*MAGTAPE BOOT* 1587 002512 006 022 .ADDR MTCMD 1588 002514 104 123 .BYTE 'D,'S ;*DISK SELECT* 1589 002516 337 020 .ADDR DSCMD 1590 002520 115 123 .BYTE 'M,'S ;*MAGTAPE SELECT* 1591 002522 015 021 .ADDR MSCMD 1592 002524 123 110 .BYTE 'S,'H ;*SHUTDOWN* 1593 002526 235 017 .ADDR SHCMD 1594 002530 115 102 .BYTE 'M,'B ;*MAGTAPE BOOTSTRAP* 1595 002532 222 022 .ADDR MBCMD 1596 002534 120 127 .BYTE 'P,'W ;*PASSWORD* 1597 002536 343 017 .ADDR PWCMD 1598 002540 124 124 .BYTE 'T,'T ;*KLINIK LINE TO TTY* 1599 002542 327 017 .ADDR TTCMD 1600 002544 126 124 .BYTE 'V,'T ;*VERIFY AGAINST TAPE* 1601 002546 027 024 .ADDR VTCMD VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-44 HCORE.M80 **COMMAND DISPATCH LIST** 1603 002550 126 104 .BYTE 'V,'D ;*VERIFY AGAINST DISK* 1604 002552 014 024 .ADDR VDCMD 1605 002554 130 061 .BYTE 'X,'1 ;DUMMY 1606 002556 054 040 .ADDR RAMX1 1607 002560 106 111 .BYTE 'F,'I ;*FILE* 1608 002562 316 223 .ADDR BIT15!FICMD 1609 002564 102 062 .BYTE 'B,'2 ;**TEMP BOOTCHECK 2** 1610 002566 004 024 .ADDR B2CMD 1611 002570 115 115 .BYTE 'M,'M ;MANUFACTURING MODE 1612 002572 167 014 .ADDR MMCMD 1613 002574 123 103 .BYTE 'S,'C ;SOFT CRAM ERROR RECOVERY "ON/OFF" SWITCH 1614 002576 047 014 .ADDR SCCMD 1615 002600 000 .BYTE 0 ;END LIST MARKER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-45 HCORE.M80 CHECKSUMS AS COMPUTED BY SPECIAL 10-BASED PROGRAM 1617 .SBTTL CHECKSUMS AS COMPUTED BY SPECIAL 10-BASED PROGRAM 1618 1619 001 .IF DF,PASS1 1620 1621 CHECKS: .ADDR 0 ;PSUEDO BYTES FOR RAM NUMBER 1 1622 .ADDR 0 ;PSUEDO BYTES FOR RAM NUMBER 2 1623 .ADDR 0 ;PSUEDO BYTES FOR RAM NUMBER 3 1624 .ADDR 0 ;PSUEDO BYTES FOR RAM NUMBER 4 1625 000 .ENDC 1626 1627 1628 001 .IF DF,PASS2 1629 002601 355 237 CHECKS: .ADDR CHKSM0 ;CHECKSUM FOR RAM NUMBER 1 1630 002603 233 311 .ADDR CHKSM1 ;CHECKSUM FOR RAM NUMBER 2 1631 002605 054 340 .ADDR CHKSM2 ;CHECKSUM FOR RAM NUMBER 3 1632 002607 326 010 .ADDR CHKSM3 ;CHECKSUM FOR RAM NUMBER 4 1633 000 .ENDC 1634 .TITLE VER 4.2 KS10 CONSOLE PROGRAM 1635 002611 134 113 123 INIMS: .ASCIZ /\KS10 CSL.V4.2\/ ;POWER UP MESSAGE AND IDENTIFIER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-46 HCORE.M80 *** "MR" CMD *** 1637 .SBTTL *** "MR" CMD *** 1638 ;THIS CODE PERFORMS THE "MASTER RESET" CONSOLE FUNCTION 1639 002631 MRCMD: 1640 002631 257 XRA A ;SET ACCUM=0 1641 002632 323 212 OUT CPUCTL ;SET 0'S TO "RUN,EXECUTE,CONT" 1642 002634 315 247 014 CALL CHCMD ;AND INSURE CPU HAS STOPPED... 1643 1644 ;ISSUE SM10 BUS RESET 1645 002637 076 005 MRINT: MVI A,5 ;BITS FOR "DP RESET", & "CRAM RESET" 1646 002641 323 204 OUT CRMCTL ;***** I/O WRT 204/5 ***** 1647 1648 002643 076 200 MVI A,^B10000000 ;BIT7 FOR RESET 1649 002645 323 100 OUT RESET ;ISSUE RESET,SET CONSOLE MODE 1650 1651 002647 315 376 016 CALL SMFINI ;GET CURRENT PARITY SETTINGS & SET IN KS 1652 1653 002652 072 355 040 LDA TRAPEN ;BIT FOR "CLR TEN INT" SHOULD BE LOW 1654 002655 323 205 OUT DIAG ;***** I/O WRT 205/XX ***** 1655 1656 002657 006 000 MVI B,0 ;WILL SET NO BITS IN THE STATE WORD 1657 002661 315 337 032 CALL STATEM ;SET THE STATE 1658 002664 012 .BYTE ^O12 ;OFF THE STUFF WE DONT WANT 1659 002665 ENDCMD ;AND OUT (1) 002665 311 RET ;RETURN TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-47 HCORE.M80 ****INTERRUPT HANDLER**** 1661 .SBTTL ****INTERRUPT HANDLER**** 1662 ;HERE ON INTERRRUPTS..REGS ALREADY SAVED AT "RST" BLOCK 1663 002666 041 212 006 INTRP: LXI H,ENDIN ;PUSH OUR FAVORITE EXIT ADDRESS ON THE STACK 1664 002671 345 PUSH H ; AND WE CAN DO "RET"'S TO LEAVE ROUTINE 1665 002672 333 201 IN CTYCTL ;GET CTY TTY STATUS 1666 002674 107 MOV B,A ;SAVE IT IN THE "B" REG FOR A COUPLE INSTRS 1667 002675 333 203 IN REMCTL ;NOW FETCH UP THE REMOTE STATUS 1668 002677 260 ORA B ;AND THROW BOTH STATUS'S TOGETHER 1669 002700 346 070 ANI ^O70 ;ANY ERR BITS SET?? 1670 002702 302 072 010 JNZ TTERR ;GO TELL ERR IF YES 1671 1672 ;FALL THROUGH IF NO ONE IN ERROR. NOW SEE WHO THE CHARACTER IS FROM 1673 002705 170 MOV A,B ;COPY CTY STATUS INTO ACCUM 1674 002706 346 002 ANI 2 ;IS A CHARACTER IN THE CTY UART?? 1675 002710 302 341 005 JNZ INTCH ;JUMP IF YES. FIND CHARACTER IN CTY UART. 1676 1677 ;FALL HERE IF IT WAS A KLINIK CHAR 1678 002713 333 202 IN REMDAT ;FETCH OUT THE CHARACTER 1679 002715 346 177 ANI ^O177 ;OFF THE PARITY BIT 1680 002717 107 MOV B,A ;MAKE SECOND COPY OF CHARACTER IN "B" 1681 1682 002720 376 031 CPI CNTLY ;BEFORE DISPATCHING, SEE IF THIS IS "CONTROL-Y" 1683 002722 302 335 005 JNZ KL.DSP ;IF NOT, DO EVERYTHING AS PER NORMAL 1684 1685 ;AHA. IT WAS A CONTROL-Y..NOW SEE IF IN MM MODE 1686 002725 072 251 040 LDA MMFLG ;GET FLAG 1687 002730 247 ANA A ;SET 8080 CONDITION CODES 1688 002731 302 200 032 JNZ MMERR1 ;IF YES, MM MODE, THEN GO ABORT WHAT EVER YOU ARE DOING 1689 002734 170 MOV A,B ;NOW REPLACE THE CHAR WE JUST BOMBED 1690 1691 ;ELSE FALL THROUGH 1692 002735 052 346 040 KL.DSP: LHLD MODDIS ;GET CURRENT KLINIK MODE DISPATCH 1693 002740 351 PCHL ;DISPATCH TO DO THE RIGHT THING VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-48 HCORE.M80 ****INTERRUPT HANDLER**** 1695 ;CHECK IF WE ARE IN USER MODE 1696 002741 333 200 INTCH: IN CTYDAT ;INPUT CHARACTER 1697 002743 346 177 ANI ^O177 ;STRIP BIT 8 1698 002745 107 MOV B,A ;SAVE CHAR FOR 2 INSTRUCTIONS 1699 1700 ;SEE IF THIS IS MANUFACTURING MODE BEFORE WE CONTINUE 1701 002746 072 247 040 LDA CSLMODE ;GRAB CURRENT CSL MODE 1702 002751 346 020 ANI .MODE4 ;AND SEE IF ITS MODE 4 1703 002753 312 377 005 JZ CMNBUF ;IF NO, CTY INPUT NORMAL 1704 1705 ;PLACE YOU GO IF MANUFACTURING MODE.. CTY CHARS ARE JUST SENT TO KLINIK 1706 002756 170 MOV A,B ;GRAB CHARACTER TO BE SENT TO KLINIK 1707 002757 315 123 004 CALL KCHR0 ;ONLY ECHO CTY STUFF AGAINST THE KLINIK LINE 1708 1709 ;NOW SEE IF THAT WAS A MODE CHANGE CHAR WE JUST SENT DOWN THE LINE 1710 002762 376 031 CPI CNTLY ;IS IT "CONTROL-Y" 1711 002764 300 RNZ ;IF WAS NOT, SIMPLY GET OUT 1712 1713 002765 CLRB KLNKSW ;FORCE RE-EXAMINE OF THINGS 1714 002767 CLRB MMFLG ;TURN OFF MANUFACTURING MODE 1715 002771 315 103 034 CALL SETM2 ;FORCE KLINIK LINE IMMEDIATELY INTO MODE 2 1716 002774 303 255 001 JMP REINI VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-49 HCORE.M80 ****INTERRUPT HANDLER**** 1718 ;ALSO STANDARD COMMON ENTRY POINT WHEN KLINIK LINE PARALLELS THE CTY 1719 002777 MODE3: 1720 002777 072 156 040 CMNBUF: LDA USRMD ;GET USER MODE FLAG 1721 003002 247 ANA A ;IS IT SET?? 1722 003003 170 MOV A,B ;COPY CHAR INTO ACCUM(GET HERE FOR KLINIK OR CTY) 1723 003004 302 303 006 JNZ USER ;JUMP IF IN USER MODE... 1724 1725 ;FALL THRU TO HERE IF NOT USER MODE AND WE NEED DO SOMETHING WITH CHAR 1726 003007 376 017 CPI CNTLO ;CONTROL O??? 1727 003011 302 031 006 JNZ SKP2 ;JMP IF NO 1728 1729 ;ELSE FALL INTO CONTROL-O CODE..STOP THE PRINTER 1730 003014 PCHAR UPARR (1) 003014 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 003015 136 .BYTE UPARR ;CHAR TO PRINT 1731 003016 PCHAR OCHR (1) 003016 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 003017 117 .BYTE OCHR ;CHAR TO PRINT 1732 003020 072 120 040 LDA NOPNT ;GET CURRENT STATE OF "NO PRINT" 1733 003023 306 200 ADI ^O200 ;ZAP PRINT FLAG 1734 003025 062 120 040 STA NOPNT ;PUT IT BACK 1735 003030 257 XRA A ;ZAP CHAR SO WE CAN EARLY EXIT 1736 1737 003031 376 023 SKP2: CPI CNTLS ;IS IT CONTROL-S 1738 003033 314 145 007 CZ CNTS ;CALL IF YES 1739 1740 003036 376 021 CPI CNTLQ ;IS IT CONTROL-Q 1741 003040 302 046 006 JNZ SKP6 ;JMP IF NO 1742 1743 ;FALL TO HERE IF YES, ZAPP CNTL-Q FLAG 1744 003043 CLRB STPPD ;ZAP!! 1745 003045 257 XRA A ;CLEAR ACCUM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-50 HCORE.M80 ****INTERRUPT HANDLER**** 1747 003046 062 157 040 SKP6: STA RPEND ;ANY OTHER CHARS MEAN END REPEAT LOOP 1748 003051 376 032 CPI CNTLZ ;CONTROL Z?? 1749 003053 312 371 006 JZ CNTZ ;JMP IF YES 1750 1751 003056 376 025 CPI CNTLU ;CONTROL-U?? 1752 003060 302 075 006 JNZ SKP8 ;JMP IF NO 1753 1754 ;FALL TO HERE TO DO THE CONTROL-U CODE 1755 003063 PCHAR UPARR (1) 003063 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 003064 136 .BYTE UPARR ;CHAR TO PRINT 1756 003065 PCHAR UCHR (1) 003065 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 003066 125 .BYTE UCHR ;CHAR TO PRINT 1757 003067 PCRLF ;AND A CR-LF TO GIVE CLEAN LINE (2) 003067 347 RST 4 (2) 003070 002 .BYTE 2 1758 003071 315 163 010 CALL BFRST ;CLEAR INPUT BUFFER 1759 003074 257 XRA A ;AND SET ACCUM FOR EARLY OUT 1760 1761 003075 376 003 SKP8: CPI CNTLC ;CONTROL-C?? 1762 003077 312 151 010 JZ CNTC ;JMP IF YES 1763 1764 003102 376 000 CPI Q.OUT ;SEE IF MUST TAKE A QUICK OUT 1765 003104 310 RZ ;LEAVE IF YES 1766 1767 003105 376 054 CPI COMMA ;IS IT A COMMA? 1768 003107 302 116 006 JNZ M11 ;IF NOT COMMA, AVOID THIS NEXT COUPLE INSTRUCTIONS 1769 1770 ;FALL TO HERE IF WAS A COMMA 1771 003112 041 225 040 LXI H,CMCNT ;POINT TO THE COMMA COUNTER 1772 003115 064 INR M ;UPDATE.. AND CONTINUE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-51 HCORE.M80 ****INTERRUPT HANDLER**** 1774 ;NOT SPECIAL CHAR..PROCESS NORMAL 1775 003116 376 034 M11: CPI CNBCK ;CONTROL BACKSLASH SHOULD LOOK LIKE CRLF 1776 003120 314 231 006 CZ EOMRK ;CALL IF YES 1777 1778 003123 376 015 CPI CRCHR ;CARRIAGE RET?? 1779 003125 314 231 006 CZ EOMRK ;CALL IF YES 1780 1781 003130 376 012 CPI LFCHR ;LINE FEED?? 1782 003132 314 231 006 CZ EOMRK ;CALL IF YES 1783 1784 003135 052 215 040 LHLD BUF. ;POINTER TO FIRST FREE BUFFER PLACE 1785 003140 376 177 CPI RBOUT ;RUB-OUT CHAR?? 1786 003142 312 250 006 JZ RUB ;JMP IF YES 1787 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-52 HCORE.M80 ****INTERRUPT HANDLER**** 1789 ;OTHERWISE ITS A REGULAR CHAR.. 1790 ;THIS IS DUMB CODE FOR FIRST GO AROUND 1791 ;TYPE-AHEAD WONT WORK 1792 1793 003145 315 220 006 CALL UP.LO ;CONVERT SO PROGRAM INTERNAL ONLY SEES UPPER CASE 1794 1795 003150 167 MOV M,A ;CHAR INTO BUFFER SPACE 1796 003151 043 INX H ;UPDATE PNTR 1797 003152 042 215 040 SHLD BUF. ;AND REPLACE PNTR 1798 1799 003155 107 MOV B,A ;SAVE THE CHAR JUST TYPED 1800 003156 326 040 SUI ^O40 ;CHECK IF ITS A PRINTING CHAR 1801 003160 372 175 006 JM NOECH ;IF IT IS NONE-PNT..GO NO ECHO 1802 1803 003163 170 MOV A,B ;GET CHAR BACK 1804 003164 326 176 SUI ^O176 ;IS IT TOO HI TO BE PRINTING CHAR?? 1805 003166 362 175 006 JP NOECH ;IF YES, GO NO ECHO 1806 1807 003171 170 MOV A,B ;GET CHAR BACK AGAIN 1808 003172 315 010 004 CALL PCHR ;NOW GO ECHO IT..... 1809 1810 003175 072 161 040 NOECH: LDA BFCNT ;GET CHAR COUNT 1811 003200 074 INR A ;BUMP UP 1812 003201 376 120 CPI 80. ;TOO MANY?? 1813 003203 312 001 004 JZ BFOVR ;JMP BUFFER OVERFLOW IF YES 1814 003206 062 161 040 STA BFCNT ;REPLACE COUNT 1815 003211 341 POP H ;CLEAR STACK OF THE PSEUDO RETURN FIRST 1816 ;FALL INTO END INTERRRUPT CODE IF CHAR COUNT OK 1817 003212 341 ENDIN: POP H ;RESTORE REGS 1818 003213 321 POP D 1819 003214 301 POP B 1820 003215 361 POP PSW 1821 003216 373 EI ;INTERRUPTS BACK ON 1822 003217 311 RET ;AND OUT 1823 1824 ;AND ACCEPT LOWER CASE AS REQUESTED 1825 003220 376 141 UP.LO: CPI ^O141 ;LOW CASE "A" OR BETTER?? 1826 003222 370 RM ;IF MINUS, NOT LOW CASE, CONTINUE 1827 003223 376 173 CPI ^O173 ;LOW CASE "Z" OR WORSE?? 1828 003225 360 RP ;IF POS, OR ZERO, ITS NOT LOW CASE RANGE 1829 1830 ;FALL INTO HERE IF IT WAS LOWER CASE.... 1831 003226 326 040 SUI ^O40 ;MAKE IT UPPER FOR ALL 1832 003230 311 RET ;AND OUT 1833 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-53 HCORE.M80 ****INTERRUPT HANDLER**** 1835 ;CODE FOR END-OF-LINE CHAR TYPED IN 1836 003231 EOMRK: PCRLF ;GIVE CR-LF (2) 003231 347 RST 4 (2) 003232 002 .BYTE 2 1837 1838 003233 072 225 040 LDA CMCNT ;GET COUNT OF COMMAS 1839 003236 074 INR A ;UP BY ONE, FOR THE CR-LF 1840 003237 062 204 040 STA EOL ;AND SET EOL MARKER 1841 003242 257 XRA A ;CLEAR ACCUM 1842 003243 062 225 040 STA CMCNT ;SET LOCATION 1843 003246 057 CMA ;SET ACCUM = -1 1844 003247 311 RET ;RETURN 1845 1846 1847 ;CODE FOR A RUB-OUT 1848 003250 072 161 040 RUB: LDA BFCNT ;GET CURRENT CHAR COUNT 1849 003253 247 ANA A ;IS IT 0?? 1850 003254 310 RZ ;GOOD, NOTHING TO DELETE 1851 003255 075 DCR A ;DECREMENT OTHERWISE 1852 003256 062 161 040 STA BFCNT ;AND PUT IT BACK 1853 1854 003261 053 DCX H ;AND BACK UP THE BUFFER PNTR 1855 003262 042 215 040 SHLD BUF. ;PUT IT BACK 1856 003265 PSLASH ;TYPE SLASH AS RUBOUT INDICATOR (2) 003265 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 003266 057 .BYTE SLASH ;CHAR TO PRINT 1857 003267 176 MOV A,M ;GET CURRENT CHAR IN BUFFER 1858 003270 315 010 004 CALL PCHR ;ECHO WHAT WAS RUBBED OUT 1859 003273 376 054 CPI COMMA ;OH WAIT, WAS THAT A COMMA?? 1860 003275 300 RNZ ;JMP IF NO, TAKE A NORMAL OUT 1861 ;FALL THRU IF WAS A COMMA 1862 003276 041 225 040 LXI H,CMCNT ;GET COMMA COUNT 1863 003301 065 DCR M ;DECREMENT 1864 003302 311 RET ;AN EXIT THIS PLACE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-54 HCORE.M80 ****INTERRUPT HANDLER**** 1866 ;HERE IF USER MODE FLAG IS SET.. 1867 003303 376 034 USER: CPI CNBCK ;IS IT "^\"?? 1868 003305 302 164 007 JNZ TENCHR ;IF NOT,THEN ITS A CHAR FOR THE KS-10 1869 1870 ;BEFORE WE LEAVE USER MODE, WE MUST CHECK THE CONSOLE ENABLE SWITCH 1871 003310 333 301 END.USR: IN BOOTSW ;***** I/O RD 301 ***** IS CONSOLE LOCKED UP?? 1872 1873 ;BIT 2 IS "LO" IF CONSOLE ENABLE IS TRUE. IF BIT 2 IS "HI", WE ARE DISABLED 1874 ;DUE TO THE HARDWARE INVERSION OF SIGNAL LEVELS 1875 003312 346 004 ANI ^O4 ;CHECK BIT 2 1876 003314 300 RNZ ;IF HI, WE ARE DISABLED AND WILL IGNORE 1877 1878 ;IF YES, USER MODE MUST BE CLEARED 1879 003315 CLRB NOPNT ;CLR NO PRINT FLAG IN CASE WE WERE IN "INTERNAL MODE" 1880 003317 315 352 006 CALL CLRUSE ;EXIT FROM USER MODE 1881 003322 PLINE RDYMS ;"ENABLED" (1) 003322 337 RST 3 ;PRINT LINE OF CHARS (1) 003323 341 006 .ADDR RDYMS ;BUFF TO PRINT 1882 003325 041 255 001 LXI H,REINI ;SET UP AN EXIT ADDRESS 1883 003330 321 IOUT: POP D ;CLEAR THE PSEUDO RETURN TO "ENDIN" FROM STACK 1884 003331 321 POP D ;CLEAR ORIGINAL SAVED "H,L" OFF STACK 1885 003332 321 POP D 1886 003333 301 POP B 1887 003334 361 POP PSW 1888 003335 063 INX SP ;NOW GET OLD RETURN ADDR OFF STACK 1889 003336 063 INX SP 1890 1891 003337 373 EI ;ENABLE INTS.. 1892 003340 351 PCHL ;AND GO TO PROMPT 1893 003341 105 116 101 RDYMS: .ASCIZ /ENABLED\/ 1894 1895 003352 CLRUSE: CLRB USRMD ;AND CLEAR THE USER MODE FLAG 1896 003354 072 251 040 LDA MMFLG ;BEFORE DROPPING USER, SEE IF IN MM MODE 1897 003357 247 ANA A ;SET 8080 FLAGS 1898 003360 310 RZ ;IF NOT MM MODE, OK TO GET OUT 1899 1900 ;IF WAS SET, MUST DROP BACK TO MODE 4 1901 003361 315 052 034 CALL SETM4 1902 003364 315 117 004 CALL KCHR ;NON-PRINTING CHAR, ALSO TELLS HOST TO SWITCH MODES 1903 003367 034 .BYTE CNBCK ;"CONTROL-BACKSLASH IS THE MAGIC CHAR" 1904 003370 311 RET ;JUST LEAVE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-55 HCORE.M80 ****INTERRUPT HANDLER**** 1906 ;CONTROL-Z CODE...ENTER USER MODE 1907 003371 315 023 007 CNTZ: CALL SETUSE ;SET THE USER MODE 1908 003374 315 163 010 CALL BFRST ;BUFFER RESET..RE-INIT TTY INPUT BUFFER 1909 003377 CLRB KLNKSW ;FORCE LIGHTS TO GET FIXED AFTER ENTER USER 1910 1911 003401 PLINE U ;PRINT "USER MODE" (1) 003401 337 RST 3 ;PRINT LINE OF CHARS (1) 003402 012 007 .ADDR U ;BUFF TO PRINT 1912 003404 041 335 001 LXI H,NULLJ ;LOAD "H,L" WITH A PLACE TO GO 1913 003407 303 330 006 JMP IOUT ;AND GET OUT 1914 003412 125 123 122 U: .ASCIZ /USR MOD\/ VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-56 HCORE.M80 ****INTERRUPT HANDLER**** 1916 003423 SETUSE: 1917 ;HERE IS THE DEPOSIT WORD 31 CODE.. 1918 003423 WRD31: INTON ;DONT PRINT THIS STUFF (1) 003423 327 RST 2 ;GO SET INTERNAL MODE 1919 003424 EXAM 31 ;MUST SAVE CURRENT STATE OF KEEP ALIVE & RELOAD BITS (1) 003424 315 231 030 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS (1) 003427 031 000 .ADDR 31 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 1920 003431 INTOFF ;ITS OK NOW (1) 003431 367 RST 6 ;GO EXIT FROM INTERNAL MODE 1921 003432 072 255 040 LDA GOCODE ;BYTE 28-35 GETS THE REASON FOR RELOAD 1922 003435 041 047 040 LXI H,DMDAT ;MAKE H,L POINT TO THE DESIRED BUFFER 1923 003440 167 MOV M,A ;SET THE GOCODE BITS INTO THE BYTE "DMDAT" 1924 1925 003441 072 355 040 LDA TRAPEN ;NOW GRAB THE TRAP BIT 1926 003444 007 RLC ;AND SHIFT IT TO THE APPROPRIATE POSITION(20 TO 40) 1927 003445 007 RLC ;(40 TO 100) 1928 003446 007 RLC ;(100 TO 200) 1929 003447 107 MOV B,A ;SAVE IT IN B FOR A WHILE 1930 1931 003450 072 251 040 LDA MMFLG ;GET "MAINTENANCE MODE" FLAG 1932 003453 247 ANA A ;SET 8080 FLAGS 1933 003454 365 PUSH PSW ;SAVE THE STATE OF THE FLAGS FOR LATER USE 1934 003455 312 062 007 JZ WRD.PR ;IF NO MM MODE, DONT SET A BIT 1935 1936 ;WAS MM MODE, MUST SET THE BIT 1937 003460 076 100 MVI A,^O100 ;A BIT FOR MM MODE 1938 003462 260 WRD.PR: ORA B ;THROW TOGETHER WITH THE TRAP BIT 1939 003463 043 INX H ;PUT INTO THE DEPOSIT BUFFER 1940 003464 043 INX H 1941 003465 167 MOV M,A ;THIS IS LOC "DMDAT+2" 1942 1943 003466 072 354 040 LDA PARBT ;NOW FOR THE SELECTION OF PARITY BITS 1944 003471 017 RRC ;RIGHT ONCE TO FREE UP 200 WEIGHT 1945 003472 107 MOV B,A ;SAVE IN B REG 1946 003473 072 247 040 LDA CSLMODE ;GET CURRENT KLINIK MODE 1947 003476 346 014 ANI .MODE2!.MODE3 ;IF EITHER OF THESE MODES, MUST SET THE BIT 1948 003500 312 105 007 JZ WRD.DP ;JUMP IF NOT THOSE BITS 1949 1950 1951 ;HERE IF ONE OF THOSE MODES WAS SET 1952 003503 076 100 MVI A,^O100 ;A BIT TO SET 1953 1954 003505 260 WRD.DP: ORA B ;THROW THIS BIT WITH THE OTHERS 1955 003506 017 RRC ;FINAL JUSTIFICATION 1956 003507 107 MOV B,A ;NOW SAVE THIS GOOD STUFF IN "B" 1957 003510 072 015 040 LDA EMBUF+3 ;GET THE BYTE THAT HAS CURRENT "KA" BIT 1958 003513 346 300 ANI ^O300 ;OFF EVERYTHING ELSE 1959 003515 260 ORA B ;NOW THROW WHOLE MESS TOGETHER AGAIN 1960 1961 003516 043 INX H ;BUMP POINTER TO "DMDAT+3" 1962 003517 167 MOV M,A ;AND PUT DATA INTO RAM 1963 003520 DEPOS 31 ;PUT INTO MOS MEMORY AT LOC 31 (1) 003520 247 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE (1) 003521 315 232 030 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-57 HCORE.M80 ****INTERRUPT HANDLER**** (1) 003524 031 000 .ADDR 31 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 1964 003526 CLRB GOCODE ;CLEAR THE RELOAD CODE 1965 1966 003530 361 POP PSW ;THIS WORD HAS FLAGS SET FROM BEFORE WHEN WE TESTED "MM" 1967 003531 076 377 MVI A,-1 ;FLAGS WONT CHANGE WHILE WE SET THE USER MODE FLAG 1968 003533 062 156 040 STA USRMD ;SET USER MODE... NOW DO SOMETHING BASED ON THE FLAGS 1969 003536 310 RZ ;IF NOT SET, A SIMPLE OUT 1970 1971 ;HERE IF SET, WE MUST SEND AN "ACK" DOWN KLINIK LINE BEFORE ANYTHING ELSE 1972 003537 315 205 035 CALL ACK ;"ACK" DOWN THE KLINIK 1973 003542 303 103 034 JMP SETM2 ;ALSO SET MODE 2 AND USE HIS "RET" TO RETURN 1974 1975 ;TYPED "CONTROL-S" TO STOP CONSOLE OUTPUT 1976 003545 041 162 040 CNTS: LXI H,STPPD ;POINTER TO STOPPED FLAG 1977 003550 176 MOV A,M ;GET THE FLAG 1978 003551 057 CMA ;SET .EQ. 0 IF WAS ALREADY SET 1979 003552 247 ANA A ;NOW SET FLAGS, 'CAUSE CMA DOESN'T 1980 003553 310 RZ ;IF .EQ. 0 NOW, MERELY LEAVE..ALREADY SET 1981 1982 003554 167 MOV M,A ;AND SET THE FLAG .EQ. -1 IF HERE 1983 003555 373 EI ;LET THE CNTL-Q THRU 1984 1985 003556 176 CNTSL: MOV A,M ;GET FLAG STATUS 1986 003557 247 ANA A ;IS IT SET??? 1987 003560 310 RZ ;IF NOT,THEN TIME TO QUIT 1988 003561 303 156 007 JMP CNTSL ;STAY IN LOOP IF FLAG STILL SET 1989 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-58 HCORE.M80 **8080 TO KS10 CHARACTER SERVICE** 1991 .SBTTL **8080 TO KS10 CHARACTER SERVICE** 1992 003564 062 035 040 TENCHR: STA CHRBUF ;PUT CHARACTER IN A RAM BUFFER 1993 003567 076 032 MVI A,^O32 ;DESIRED ADDRESS FOR DEPOSTING CHARACTER 1994 1995 003571 323 103 OUT A2835 ;WRITE ONLY RELEVANT PIECE OF THE ADDRESS 1996 003573 257 XRA A ;THEN CLR ACCUM 1997 003574 323 105 OUT A2027 ;AND CLR THE REST OF THE HARDWARE ADDRESS REGISTER 1998 003576 323 107 OUT A1219 1999 003600 323 106 OUT W1219 ;CLEAR PIECES OF DEPOSIT DATA WHICH MUST BE ZERO 2000 003602 323 110 OUT W0411 2001 003604 323 112 OUT W0003 2002 2003 003606 076 002 MVI A,02 ;BIT TO SAY "WRITE FUNCTION" 2004 003610 323 113 OUT A0003 ;***** I/O WRT 113 ***** 2005 2006 ;THE FOLLOWING "ADD A" WORKS BY LUCK..I.E. 2+2=4 2007 003612 207 ADD A ;BIT INTO ACCUM FOR "COM/ADR CYCLE" 2008 003613 323 115 OUT BUSARB ;***** I/O WRT 115/4 ***** 2009 2010 003615 072 035 040 LDA CHRBUF ;NOW GET THE CHARACTER WE WANT 2011 003620 323 102 OUT W2835 ;PUT IT IN THE HARDWARE REGISTER 2012 003622 076 001 MVI A,1 ;AND GET THE VALID BIT TO GO WITH THE CHARACTER 2013 003624 323 104 OUT W2027 ;PUT IT IN THE HARDWARE REGISTER 2014 2015 ;AND BY LUCK, THE ACCUM HAS JUST WHAT WE NEED FOR THE NEXT STEP 2016 003626 323 114 OUT DTARB ;***** I/O WRT 114/1 ***** 2017 2018 003630 076 360 MVI A,^O360 ;BITS FOR "CHECK NXM","CONSOLE REQ","T ENB FOR COM/ADR" 2019 ;"T ENB FOR DATA CYCLE" 2020 003632 323 210 OUT BUSCTL ;*****I/O WRT 210/360 ***** 2021 2022 ;DO THIS TWICE TO GUARANTEE THAT THE INTERRUPT HAPPENS 2023 003634 076 001 MVI A,1 ;BIT FOR SETTING INTERRUPT TO THE KS10 2024 003636 323 116 OUT INT2KS ;SET THE INTERRUPT 2025 003640 323 116 OUT INT2KS ;SET THE INTERRUPT 2026 2027 003642 311 RET ;AND EXIT NORMALLY.... VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-59 HCORE.M80 **8080 TO KS10 CHARACTER SERVICE** 2029 ;ENTER HERE WITH THE CHAR IN THE ACCUM 2030 .SBTTL **KS10 TO 8080 CHARACTER SERVICE** 2031 ;ROUTINE FOR HANDLING INTERRUPT CHARACTERS FROM A RUNNING KS10. 2032 ;ONLY CHARS FROM KS TO CTY IMPLEMENTED 2033 003643 CHRRDY: INTON ;SET UP INTERNAL MODE (1) 003643 327 RST 2 ;GO SET INTERNAL MODE 2034 003644 363 DI ;COMMON CODE,NOT TO BE DISTURBED 2035 2036 ;DISABLE INTERRUPTS FOR THIS OPERATION 2037 003645 072 355 040 LDA TRAPEN ;GET DEFAULT FOR THE TRAP ENABLE BITS 2038 003650 323 205 OUT DIAG ;*****I/O WRT/ TO CLR THE INTERRUPT***** 2039 2040 ;FALL TO HERE IF YES WE ARE IN KLINIK MODE 2.. ITS POSSIBLE THAT THIS INTERRUPT 2041 ;IS FROM THE KLINIK COMM WORD, FOR THE KLINIK LINE 2042 003652 EXAM 35 ;EXAM THE KLINIK COMM WORD (1) 003652 315 231 030 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS (1) 003655 035 000 .ADDR 35 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 2043 003657 INTOFF ;KEEP THIS FLAG IN STEP (1) 003657 367 RST 6 ;GO EXIT FROM INTERNAL MODE 2044 003660 072 013 040 LDA EMBUF+1 ;GRAB THE CONTENTS OF THE BYTE WITH THE CONTROL KEY 2045 003663 247 ANA A ;SET 8080 FLAGS 2046 003664 312 341 007 JZ CTYONLY ;IF CONTROL KEY CLEAR, NOTHING FROM KLINIK, TRY CTY 2047 2048 003667 107 MOV B,A ;SAVE THE DATA IN THE ACCUM FOR A LITTLE WHILE 2049 003670 072 247 040 LDA CSLMODE ;GET CURRENT MODE..DECIDE IF MUST THROW AWAY CHARS, OR 2050 003673 346 013 ANI .MODE0!.MODE1!.MODE3 ; JUST ACT AS A NULL BIT BUCKET 2051 003675 302 334 007 JNZ NULKL ;JUMP TO A NULL ACTION IF ANY OF THESE 3 MODES 2052 2053 ;NOW HERE IF CONTROL KEY IS .NE. 0 2054 003700 170 MOV A,B ;RETRIEVE DATA 2055 003701 376 001 CPI 1 ;IS IT THE KEY FOR A SIMPLE CHARACTER TO BE OUTPUT?? 2056 003703 312 320 007 JZ KLPCHR ;IF YES, GO PROCESS THE CHARACTER 2057 2058 003706 376 002 CPI 2 ;IS IT FOR A HANGUP 2059 003710 302 070 010 JNZ NOACTN ;NOPE, IGNORE ENTIRELY 2060 2061 003713 315 134 034 CALL HANGUP ;YUP, HANG 'EM UP 2062 003716 373 EI ;IDENTICAL CODE TO LOCATION "NOACTN", BUT THE 2 BYTES 2063 003717 311 RET ; HERE ARE CHEAPER THAN A "JMP"..I'M OUT OF PROM SPACE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-60 HCORE.M80 **KS10 TO 8080 CHARACTER SERVICE** 2065 ;CODE FOR PRINTING THE DESIRED CHARACTER ON THE KLINIK LINE 2066 003720 KLPCHR: TSTRDY REMCTL ;SEE IF THE LINE IS READY FOR THE NEXT CHARACTER (1) 003720 333 203 IN REMCTL ;READ DESIRED UART STATUS (1) 003722 346 001 ANI 01 ;CHECK IF SET; ZBIT=0 IF READY; ZBIT=1 IF NOT YET READY 2067 003724 312 320 007 JZ KLPCHR ;IF NOT READY YET, BETTER WAIT LONGER 2068 2069 ;HERE WHEN READY 2070 003727 072 012 040 LDA EMBUF ;GET THE CHARACTER 2071 003732 323 202 OUT REMDAT ;PRINT IT 2072 003734 076 035 NULKL: MVI A,^O35 ;NOW MUST CLEAR THE WORD, AND INTERRUPT TO SAY DONE 2073 003736 303 022 010 JMP TTOCOM ;GO COMMON CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-61 HCORE.M80 **KS10 TO 8080 CHARACTER SERVICE** 2075 003741 CTYONLY: INTON ;DON'T PRINT THIS CRUD (1) 003741 327 RST 2 ;GO SET INTERNAL MODE 2076 003742 EXAM 33 ;GET THE COMMUNICATION WORD (1) 003742 315 231 030 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS (1) 003745 033 000 .ADDR 33 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 2077 003747 INTOFF ;INTERNAL MODE OFF (1) 003747 367 RST 6 ;GO EXIT FROM INTERNAL MODE 2078 003750 072 013 040 LDA EMBUF+1 ;GET THE INTERRUPT CODE 2079 003753 376 001 CPI 1 ;IS INTERRUPT CODE .EQ. 1?? 2080 003755 302 070 010 JNZ NOACTN ;JUMP TO "NO ACTION" IF NOT, CODE OUT OF BOUNDS 2081 2082 003760 072 012 040 LDA EMBUF ;ACTUAL CHAR TO ACCUM 2083 003763 107 MOV B,A ;AND SAVE IT IN THE B REG 2084 2085 ;CODE TO PRINT A CHAR PASSED FROM THE KS-10 CPU. CODE INTERRUPTS 2086 ;THE 10 WHEN THE CHARACTER HAS FINISHED PRINTING 2087 003764 CTYPCHR: TSTRDY CTYCTL ;CHECK IS THE XMITTER READY?? (1) 003764 333 201 IN CTYCTL ;READ DESIRED UART STATUS (1) 003766 346 001 ANI 01 ;CHECK IF SET; ZBIT=0 IF READY; ZBIT=1 IF NOT YET READY 2088 003770 312 364 007 JZ CTYPCHR ;LOOP UNTIL IT IS 2089 2090 ;FALL THRU WHEN READY 2091 ;BUT BEFORE PRINTING, CHECK THE KLINIK LINE TO SEE IF IT GETS THE 2092 ;CHARACTER TOO 2093 003773 072 247 040 LDA CSLMODE ;CHECK THE KLINIK MODE 2094 003776 376 010 CPI .MODE3 ;IS THE KLINIK PARALLEL TO THE CTY LINE?? 2095 004000 302 015 010 JNZ CTYOUT ;JUMP IF NO. KLINIK DOES NOT GET THIS CHARACTER 2096 2097 ;FALL HERE IF YES, KLINIK LINE GETS A PIECE OF THIS CHARACTER TOO. 2098 004003 KLTOO: TSTRDY REMCTL ;SEE IF KLINIK LINE IS READY (1) 004003 333 203 IN REMCTL ;READ DESIRED UART STATUS (1) 004005 346 001 ANI 01 ;CHECK IF SET; ZBIT=0 IF READY; ZBIT=1 IF NOT YET READY 2099 004007 312 003 010 JZ KLTOO ;IF NOT YET, GO BACK AND TRY AGAIN 2100 2101 004012 170 MOV A,B ;CHAR TO ACCUM 2102 004013 323 202 OUT REMDAT ;PRINT IT ON THE KLINIK LINE 2103 2104 004015 170 CTYOUT: MOV A,B ;GET THE CHAR WE SAVED IN THE B REG. 2105 004016 323 200 OUT CTYDAT ;SEND TO THE UART VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-62 HCORE.M80 **KS10 TO 8080 CHARACTER SERVICE** 2107 ;NOW CLEAR A DATA BUFFER FOR DEPOSITING 0'S INTO THE MOS MEMORY 2108 ;WE ARE USING IN LINE CODE HERE IN ORDER TO SPEED UP THE TYPE-OUT 2109 ;ON KS10 TO 8080 XFER'S.. 2110 2111 004020 076 033 MVI A,^O33 ;THIS IS THE ADDRESS WE WISH TO DEPOSIT 2112 004022 323 103 TTOCOM: OUT A2835 ;PUT IT INTO THE HARDWARE REGISTER 2113 004024 257 XRA A ;CLEAR ACCUM, BECAUSE THE REST OF THE ADDR MUST BE ZERO 2114 004025 323 105 OUT A2027 ;CLR THE OTHER HARDWARE REGISTERS 2115 004027 323 107 OUT A1219 2116 004031 323 102 OUT W2835 ;AND WE WILL MAKE ALL OF THE HARDWARE DATA REGS 0 2117 004033 323 104 OUT W2027 2118 004035 323 106 OUT W1219 2119 004037 323 110 OUT W0411 2120 004041 323 112 OUT W0003 2121 2122 004043 076 002 MVI A,02 ;BIT TO SAY "WRITE FUNCTION" 2123 004045 323 113 OUT A0003 ;***** I/O WRT 113 ***** 2124 2125 ;THIS "ADD A" WORKS BY LUCK..I.E. 2+2=4 2126 004047 207 ADD A ;BIT INTO ACCUM FOR "COM/ADR CYCLE" 2127 004050 323 115 OUT BUSARB ;***** I/O WRT 115/4 ***** 2128 2129 004052 076 001 MVI A,1 ;BIT INTO ACCUM FOR "DATA CYCLE" 2130 004054 323 114 OUT DTARB ;***** I/O WRT 114/1 ***** 2131 2132 004056 076 360 MVI A,^O360 ;BITS FOR "CHECK NXM","CONSOLE REQ","T ENB FOR COM/ADR" 2133 ;"T ENB FOR DATA CYCLE" 2134 004060 323 210 OUT BUSCTL ;*****I/O WRT 210/360 ***** 2135 2136 2137 ;DO THIS TWICE TO GUARANTEE THE INTERRUTP GETS THRU 2138 004062 076 001 POKE10: MVI A,1 ;BIT FOR SETTING INTERRUPT TO THE KS10 2139 004064 323 116 OUT INT2KS ;SET THE INTERRUPT 2140 004066 323 116 OUT INT2KS ;SET THE INTERRUPT 2141 004070 373 NOACTN: EI ;OK FOR INTERRUPTS NOW 2142 004071 311 RET ;AND OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-63 HCORE.M80 **TTY HANDLER FOR SPECIAL CHARACTERS** 2144 .SBTTL **TTY HANDLER FOR SPECIAL CHARACTERS** 2145 ;WHEN HERE, "B" REG CONTAINS THE STATUS OF THE CTY LINE 2146 004072 170 TTERR: MOV A,B ;COPY CTY STATUS TO ACCUM 2147 004073 346 070 ANI ^O70 ;ANY ERRS IN THE CTY UART?? 2148 004075 302 114 010 JNZ TTERR1 ;IF YES, GO CHECK THINGS ON THE CTY LINE 2149 2150 ;HERE IF GOT KLINIK ERRORS 2151 004100 076 025 MVI A,^O25 ;BEFORE JUMPING, RESET THE UART SO IT WILL WORK 2152 004102 323 203 OUT REMCTL ;I/O WRITE TO RESET THE UART 2153 2154 004104 072 156 040 LDA USRMD ;CHECK USER MODE.. WILL NOT REPORT ERR IF IT IS 2155 004107 247 ANA A ;SET FLAGS 2156 004110 302 341 005 JNZ INTCH ;IF WAS USER MODE, IGNORE OVERRUN AND HANDLE CHARACTER 2157 004113 311 RET ;DONE INT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-64 HCORE.M80 **TTY HANDLER FOR SPECIAL CHARACTERS** 2159 004114 346 050 TTERR1: ANI ^O50 ;SEE IF OVERRRUN OR A FATAL ERROR 2160 2161 ;NOW MUST CLR ERROR FROM THE UART FIRST 2162 004116 076 025 MVI A,^O25 ;BITS TO CLR ERROR CONDITIONS IN UART 2163 004120 323 201 OUT CTYCTL ;*****I/O WRT 200/25 ***** 2164 004122 302 134 010 JNZ TTERMS ;NOW JUMP IF FATAL 2165 2166 004125 072 156 040 LDA USRMD ;BEFORE ISSUEING MESSAGE,IS USER MODE SET?? 2167 004130 267 ORA A ;TEST USER MODE FLAG 2168 004131 302 341 005 JNZ INTCH ;IF YES, USER MODE, THEN IGNORE THE ERROR 2169 2170 ;NOW MUST CLR OVERRUN ERROR FROM THE UART 2171 004134 041 247 040 TTERMS: LXI H,CSLMODE ;GET CURRENT MODE OF KLINIK 2172 004137 116 MOV C,M ;SAVE IT IN C 2173 004140 066 000 MVI M,0 ;NOW CLEAR CSL MODE 2174 004142 345 PUSH H ;AND SAVE "H,L" 2175 004143 PLINE TTM ;OUTPUT THE ERROR MESSAGE (1) 004143 337 RST 3 ;PRINT LINE OF CHARS (1) 004144 034 037 .ADDR TTM ;BUFF TO PRINT 2176 004146 341 POP H ;AND RESTORE MEM POINTER 2177 004147 161 MOV M,C ;REPLACE CSL MODE AND GET OUT 2178 004150 311 RET ;AND RESTART NULL LOOP 2179 2180 004151 061 000 044 CNTC: LXI SP,RAMST+^O2000 ;GUARANTEE THAT CNTRL-C WINS 2181 004154 PCHAR UPARR (1) 004154 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 004155 136 .BYTE UPARR ;CHAR TO PRINT 2182 004156 PCHAR CCHR (1) 004156 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 004157 103 .BYTE CCHR ;CHAR TO PRINT 2183 004160 303 255 001 JMP REINI ;JUMP AWAY VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-65 HCORE.M80 **TTY HANDLER FOR SPECIAL CHARACTERS** 2185 ;LOCAL SUBROUTINE TO RESET TTY INPUT BUFFER 2186 004163 041 114 041 BFRST: LXI H,BUFBG ;BUFFER BEGINNING 2187 004166 042 215 040 SHLD BUF. ;RESET CURRENT BUFFER POINTER 2188 004171 042 227 040 SHLD FIRST ;RESET CMD POINTER 2189 004174 CLRB RPEND ;CLEAR REPEAT KILLER 2190 004176 CLRB CMDS.. ;SAY LINE IS DONE.. AT BEGINNING OF THINGS 2191 004200 CLRB BFCNT ;CLEAR CHAR COUNT 2192 004202 311 RET ;AND RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-66 HCORE.M80 **TTY HANDLER FOR SPECIAL CHARACTERS** 2194 ;THIS IS THE INITIAL MODE OF THE KLINIK LINE AFTER A POWER UP. ALSO, WHEN 2195 ;THE KLINIK LINE IS DISABLED, OR IN "PROTECT" MODE, BUT NO PASSWORD HAS 2196 ;BEEN SET BY THE OPERATOR 2197 004203 376 007 MODE0: CPI BELL ;NO ECHO IF RECEIVE BELL 2198 004205 310 RZ ;BELL, SO OUT 2199 004206 KLINE NOACCS ;PRINT A MESSAGE FOR THE KLINIK LINE ONLY (1) 004206 315 137 004 CALL KLINE ;PRINT LINE OF CHARS (1) 004211 351 037 .ADDR NOACCS ;BUFF TO PRINT 2200 004213 311 RET ;AND NORMAL EXIT FROM THE INTERRUPT 2201 2202 2203 2204 ;THIS IS KLINIK MODE 1. THIS IS THE MODE OF THE KLINIK LINE WHENEVER 2205 ;THE FRONT PANEL SWITCH IS IN THE PROTECT POSITION, AND WE ARE WAITING 2206 ;FOR THE PASSWORD TO BE ENTERED. 2207 004214 MODE1: KLINE QPW ;BEGIN BY PRINTING "PW:" (1) 004214 315 137 004 CALL KLINE ;PRINT LINE OF CHARS (1) 004217 357 037 .ADDR QPW ;BUFF TO PRINT 2208 004221 041 271 040 LXI H,KPWBUF ;INITIALIZE THE BUFFER FOR SAVING TYPED PASSWORD 2209 004224 042 125 040 SHLD KPWPNT ;SAVE IN THE BUFFER POINTER 2210 2211 004227 CLRB KPWCNT ;AND CLEAR THE PASSWORD CHARACTER COUNTER 2212 2213 004231 041 240 010 LXI H,PW.WAIT ;NOW ADDITIONAL KLINIK CHARS MUST DISPATCH TO 2214 004234 042 346 040 SHLD MODDIS ; THE PLACE THAT WAITS FOR A COMPLETE PASSWORD 2215 004237 311 RET ;END OF INTERRUPT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-67 HCORE.M80 **TTY HANDLER FOR SPECIAL CHARACTERS** 2217 ;THIS IS THE ENTRY POINT WHEN THE PERSON IS IN THE PROCESS OF TYPING THE 2218 ;PASSWORD. WE STORE THE PASSWORD AS IT IS TYPED, THEN WHEN DONE, WE WILL 2219 ;VERIFY THAT IT IS CORRECT 2220 004240 376 015 PW.WAIT: CPI CRCHR ;IS IT AN END OF LINE CHARACTER 2221 004242 312 276 010 JZ PW.TST ;JUMP IF YES.. TIME TO VERIFY THE PASSWORD 2222 2223 004245 315 220 006 CALL UP.LO ;GENERATE ONLY UPPER CASE FOR PROGRAM INTERNALS 2224 004250 107 MOV B,A ;SAVE THE CHAR IN B REG FOR A LITTLE BIT 2225 2226 ;IF NOT END OF LINE, JUST ADD IT TO THE BUFFER OF CHARS THAT IS THE PASSWORD 2227 004251 072 127 040 LDA KPWCNT ;FIRST THINGS FIRST, SEE HOW MANY CHARS IN THE BUFFER 2228 004254 074 INR A ;UPDATE TO ACCOUNT FOR THIS ONE 2229 004255 376 007 CPI 7 ;IS IT TOO MANY 2230 004257 312 334 010 JZ PW.ERR ;JUMP IF YES. ITS A PASSWORD ERROR 2231 004262 062 127 040 STA KPWCNT ;ELSE SAVE THE UPDATED COUNT AND CONTINUE 2232 2233 004265 052 125 040 LHLD KPWPNT ;GET THE BUFFER POINTER 2234 004270 160 MOV M,B ;PUT THE CHARACTER IN THE BUFFER 2235 004271 043 INX H ;UPDATE THE BUFFER POINTER 2236 004272 042 125 040 SHLD KPWPNT ;PUT THE POINTER BACK 2237 004275 311 RET ;AND END OF INTERRUPT 2238 2239 ;CODE FOR VERIFYING THAT THE PASSWORD ENTERED IS THE CORRECT AND VALID 2240 ;PASSWORD 2241 004276 021 262 040 PW.TST: LXI D,PASSWORD ;D,E POINTS TO THE EXPECTED PASSWORD 2242 004301 041 271 040 LXI H,KPWBUF ;H,L POINTS TO THE TYPED IN BUFFER 2243 004304 006 000 MVI B,00 ;"B" WILL BE THE COUNTER 2244 2245 004306 032 PW..: LDAX D ;FETCH UP AN EXPECTED CHARACTER 2246 004307 247 ANA A ;SET THE FLAGS 2247 004310 312 325 010 JZ PW.END ;IF "END", GO MAKE SURE TYPEIN IS TERMINATED 2248 2249 004313 004 INR B ;ELSE UPDATE OUR COUNTER 2250 004314 276 CMP M ;AND COMPARE A CHAR 2251 004315 302 334 010 JNZ PW.ERR ;IF MIS-COMPARE REPORT IT AS ERROR 2252 2253 004320 023 INX D ;UPDATE EXPECTED POINTER 2254 004321 043 INX H ;UPDATE TYPED IN POINTER 2255 004322 303 306 010 JMP PW.. ;CONTINUE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-68 HCORE.M80 **TTY HANDLER FOR SPECIAL CHARACTERS** 2257 ;END.. THIS IS ONLY TO VERIFY THAT TYPED TERMINATED AT THE SAME NUMBER OF 2258 ;CHARACTERS AS EXPECTED 2259 004325 072 127 040 PW.END: LDA KPWCNT ;GET EXPECTED COUNT 2260 004330 270 CMP B ;CHECK AGAINST THE CURRENT COUNT 2261 004331 312 356 010 JZ PW.OK ;AND JUMP IF COUNTS MATCH 2262 2263 ;FALL THRU TO ERROR IF CHARACTER COUNTS DON'T MATCH 2264 004334 PW.ERR: KLINE CMDNG ;GIVE USER AN ERROR MESSAGE (1) 004334 315 137 004 CALL KLINE ;PRINT LINE OF CHARS (1) 004337 026 037 .ADDR CMDNG ;BUFF TO PRINT 2265 004341 041 277 040 LXI H,PWRTRY ;HAD ERROR. ONLY GET 3 CHANCES FOR ERRORS 2266 004344 064 INR M ;UPDATE ERROR COUNT 2267 004345 176 MOV A,M ;PLACE COUNT IN ACCUM FOR A TEST 2268 004346 376 003 CPI 3 ;SEE IF STRUCK OUT 2269 004350 312 374 010 JZ KLIRST ;GO RESET KLINIK LINE IF USER STRUCK OUT 2270 2271 004353 303 214 010 JMP MODE1 ;ELSE GIVE HIM "PW:" MESSAGE AGAIN 2272 2273 ;HERE IF EVERYTHING MATCHED 2274 004356 315 103 034 PW.OK: CALL SETM2 ;CHANGE LINE TO MODE 2 2275 004361 KCHAR 'O ;WHEN GOOD PW, SENT OUT AN "OK" (1) 004361 315 117 004 CALL KCHR ;GO PRINT THE CHARACTER (1) 004364 117 .BYTE 'O 2276 004365 KCHAR 'K (1) 004365 315 117 004 CALL KCHR ;GO PRINT THE CHARACTER (1) 004370 113 .BYTE 'K 2277 004371 PW.OUT: CLRB PWRTRY ;CLEAR ERROR COUNTER 2278 004373 311 RET ;EXIT 2279 2280 ;KLINIK LINE RESET CODE. FOR RESETING KLINIK LINE AND HANGING UP THE USER 2281 004374 315 134 034 KLIRST: CALL HANGUP ;GO HANG UP THE KLINIK LINE 2282 004377 315 012 034 CALL SETM1 ;DROP BACK TO MODE 1 2283 004402 303 371 010 JMP PW.OUT ;ZAP ERROR FLAG THEN OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-69 HCORE.M80 **TTY HANDLER FOR SPECIAL CHARACTERS** 2285 ;KLINIK LINE MODE 2. THIS IS STREAM INPUT/OUTPUT. ALL CHARACTERS FROM 2286 ;THE KLINIK UART ARE SENT TO THE SPECIAL KLINIK COMMUNICATION WORDS 2287 ;AND ALL WORDS FROM THE KLINIK COMM WORDS ARE OUTPUT TO THE KLINIK LINE. 2288 004405 376 034 MODE2: CPI CNBCK ;FIRST SEE IF THE KLINIK USER WANTS A MODE CHANGE 2289 004407 302 035 011 JNZ KL3435 ;IF NOT, GO SEND INFO TO THE KLINIK COMM WORD 2290 2291 004412 072 251 040 LDA MMFLG ;BEFORE GOING TO MODE 3, SEE IF MM MODE 2292 004415 247 ANA A ;SET 8080 FLAGS 2293 004416 302 310 006 JNZ END.USR ;IF YES, MM MODE, ACT LIKE FROM A CTY 2294 2295 ;FALL THRU IF WANTS TO CHANGE MODES. BUT BEFORE CHANGING, CHECK IF HE'S 2296 ;ALLOWED TO CHANGE MODES. 2297 004421 072 300 040 LDA KLLINE.ON ;CHECK IF KLINIK IS ON, & USER IS ALLOWED TO CHANGE 2298 004424 247 ANA A ;SET FLAGS 2299 004425 310 RZ ;IF NOT ENABLED TO CHANGE, JUST IGNORE THIS INTERRUPT 2300 2301 ;WELL, HE IS ALLOWED TO CHANGE. SEE IF THE FRONT PANEL SWITCH IS UNLOCKED 2302 004426 333 301 IN BOOTSW ;***** I/O RD 301 ***** 2303 ;NOTE THAT BIT LO IS TRUTH, IF BIT HI IS FALSE(DISABLED) 2304 004430 346 004 ANI 4 ;CHECK THE CONSOLE ENABLE BIT 2305 004432 312 042 034 JZ SETM3 ;GO MODE 3 ONLY IF PANEL NOT LOCKED.LET SETM3 DO "RET" VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-70 HCORE.M80 **TTY HANDLER FOR SPECIAL CHARACTERS** 2307 ;THIS IS WHERE YOU ACTUALLY WRITE THE DESIRED CHARACTER INTO THE KLINIK 2308 ;LINE COMMUNICATION WORD 2309 004435 KL3435: 2310 004435 062 035 040 STA CHRBUF ;PUT CHARACTER IN A RAM BUFFER 2311 004440 076 034 MVI A,^O34 ;DESIRED ADDRESS FOR DEPOSTING CHARACTER 2312 2313 004442 323 103 OUT A2835 ;WRITE ONLY RELEVANT PIECE OF THE ADDRESS 2314 004444 257 XRA A ;THEN CLR ACCUM 2315 004445 323 105 OUT A2027 ;AND CLR THE REST OF THE HARDWARE ADDRESS REGISTER 2316 004447 323 107 OUT A1219 2317 004451 323 106 OUT W1219 ;CLEAR PIECES OF DEPOSIT DATA WHICH MUST BE ZERO 2318 004453 323 110 OUT W0411 2319 004455 323 112 OUT W0003 2320 2321 004457 076 002 MVI A,02 ;BIT TO SAY "WRITE FUNCTION" 2322 004461 323 113 OUT A0003 ;***** I/O WRT 113 ***** 2323 2324 ;THE FOLLOWING "ADD A" WORKS BY LUCK..I.E. 2+2=4 2325 004463 207 ADD A ;BIT INTO ACCUM FOR "COM/ADR CYCLE" 2326 004464 323 115 OUT BUSARB ;***** I/O WRT 115/4 ***** 2327 2328 004466 072 035 040 LDA CHRBUF ;NOW GET THE CHARACTER WE WANT 2329 004471 323 102 OUT W2835 ;PUT IT IN THE HARDWARE REGISTER 2330 004473 076 001 MVI A,1 ;AND GET THE VALID BIT TO GO WITH THE CHARACTER 2331 004475 323 104 OUT W2027 ;PUT IT IN THE HARDWARE REGISTER 2332 2333 ;AND BY LUCK, THE ACCUM HAS JUST WHAT WE NEED FOR THE NEXT STEP 2334 004477 323 114 OUT DTARB ;***** I/O WRT 114/1 ***** 2335 2336 004501 076 360 MVI A,^O360 ;BITS FOR "CHECK NXM","CONSOLE REQ","T ENB FOR COM/ADR" 2337 ;"T ENB FOR DATA CYCLE" 2338 004503 323 210 OUT BUSCTL ;*****I/O WRT 210/360 ***** 2339 2340 ;DO THIS TWICE TO GUARANTEE THAT THE INTERRUPT HAPPENS 2341 004505 076 001 MVI A,1 ;BIT FOR SETTING INTERRUPT TO THE KS10 2342 004507 323 116 OUT INT2KS ;SET THE INTERRUPT 2343 004511 323 116 OUT INT2KS ;SET THE INTERRUPT 2344 2345 004513 311 RET ;AND EXIT NORMALLY.... VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-71 CMDS.M80 **** CONSOLE COMMANDS AS IMPLIMENTED **** 2347 .SBTTL **** CONSOLE COMMANDS AS IMPLIMENTED **** 2348 .SBTTL *** "EB" CMD *** 2349 ;THIS CODE PERFORMS THE "EXAMINE BUS" CONSOLE FUNCTION. 2350 004514 076 001 EBCMD: MVI A,01 ;FIRST CLR "R CLK ENB" 2351 004516 323 210 OUT BUSCTL ;***** I/O WRT 210/001 ***** 2352 004520 315 105 033 CALL RDATT ;***** I/O RD "0,1,2,3,103" (READ BITS 0-35) ***** 2353 004523 012 040 .ADDR EMBUF ;PLACE BITS 0-35 INTO RAM BUFFER AREA "EMBUF" 2354 2355 ;READ THE REST OF THE I/O REGISTERS AND SAVE IN THE RAM 2356 004525 041 172 040 LXI H,RM100 ;GET BEGINNING ADDRESS OF RAM BUFFER AREA 2357 004530 021 231 011 LXI D,IORGS ;D,E WILL POINT TO SOURCE OF REGS TO BE READ 2358 004533 006 010 MVI B,8 ;THERE ARE 8 REGISTERS TO BE READ 2359 2360 004535 032 EB.RDIN: LDAX D ;FETCH UP FIRST REGISTER TO BE READ 2361 004536 315 270 013 CALL ER.UTL ;CALL ER COMMAND 2362 004541 167 MOV M,A ;COPY RESULTS OF READ INTO THE RAM SPACE 2363 004542 023 INX D ;UPDATE SOURCE POINTER 2364 004543 043 INX H ;UPDATE DESTINATION POINTER 2365 004544 005 DCR B ;DOWN THE COUNTER 2366 004545 362 135 011 JP EB.RDIN ;CONTINUE LOOP 2367 2368 004550 257 XRA A ;CLR ACCUM MUST SET "R CLK ENB" 2369 004551 323 210 OUT BUSCTL ;***** I/O WRT 210/0 ***** 2370 2371 004553 PLINE EBHED ;EB CMD HEADER MSG (1) 004553 337 RST 3 ;PRINT LINE OF CHARS (1) 004554 041 037 .ADDR EBHED ;BUFF TO PRINT 2372 004556 315 205 034 CALL DECNET ;PRINT THE HEADING 2373 004561 315 362 030 CALL P36. ;GO PRINT IT 2374 004564 PCRLF ;AND A (2) 004564 347 RST 4 (2) 004565 002 .BYTE 2 2375 004566 315 205 034 CALL DECNET ;AND MAKE SURE THIS GETS SENT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-72 CMDS.M80 *** "EB" CMD *** 2377 004571 041 231 011 LXI H,IORGS ;"H,L" NOW PNTS TO LIST OF I/O REGISTER NAMES 2378 004574 021 172 040 LXI D,RM100 ;"D,E" NOW PNTS TO CORRESPONDING LIST OF DATA FOR I/O REG 2379 004577 006 010 MVI B,8 ;ACCUM NOW CONTAINS A COUNT OF 8 (FOR 8 I/O REGS) 2380 2381 004601 315 267 030 EB1: CALL P8BIT ;PRINT FIRST REG NAME 2382 004604 043 INX H ;BUMP TO NEXT 2383 004605 PSLASH ;PRINT "1" (2) 004605 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 004606 057 .BYTE SLASH ;CHAR TO PRINT 2384 004607 353 XCHG ;SWAP SO "H,L" POINTS TO DATA 2385 2386 004610 315 267 030 CALL P8BIT ;PRINT DATA FOR THAT REG 2387 004613 043 INX H ;BUMP TO NEXT 2388 004614 353 XCHG ;SWAP BACK-"H,L" POINTS TO NAME AGAIN 2389 004615 PSPACE ;SPACE OVER (2) 004615 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 004616 040 .BYTE SPACE ;CHAR TO PRINT 2390 004617 005 DCR B ;DOWN COUNT 2391 004620 302 201 011 JNZ EB1 ;CONTINUE TILL DONE ALL EIGHT REGS 2392 004623 PCRLF (2) 004623 347 RST 4 (2) 004624 002 .BYTE 2 2393 004625 315 205 034 CALL DECNET ;AND FINALLY MAKE SURE LAST THING GETS SENT 2394 004630 ENDCMD ;END-OF-COMMAND (1) 004630 311 RET ;RETURN TO CALLER 2395 2396 ;END THIS CODE WITH A 6 BYTE BUFFER OF THE I/O REGS NAMES, IN BINARY 2397 004631 100 IORGS: .BYTE ^O100 ;FIRST REG NAME IN BINARY 2398 004632 101 .BYTE ^O101 ;2ND 2399 004633 102 .BYTE ^O102 ;3RD 2400 004634 103 .BYTE ^O103 ;4TH 2401 004635 300 .BYTE ^O300 ;5TH 2402 004636 301 .BYTE ^O301 ;6TH 2403 004637 302 .BYTE ^O302 ;7TH 2404 004640 303 .BYTE ^O303 ;8TH 2405 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-73 CMDS.M80 *** "DB" CMD *** 2407 .SBTTL *** "DB" CMD *** 2408 ;THIS CODE PERFORMS THE "DEPOSIT BUS" CONSOLE FUNCTION 2409 004641 DBCMD: RUN.. ;IS CPU RUNNING?? (1) 004641 347 RST 4 (1) 004642 006 .BYTE 6 2410 004643 332 252 011 JC DB1 ;SKIP CODE IF AT END OF COMMAND 2411 004646 ARG36 ;IF NOT, GO ASSEMBLE ARG. (1) 004646 347 RST 4 (1) 004647 010 .BYTE 8 2412 004650 042 040 .ADDR BUSAD ;AND PUT INTO BUFFER "BUS AD" 2413 2414 004652 315 202 033 DB1: CALL ADATT ;***** I/O WRT TO R DATA 0-35 DATA REG(ODDS) ***** 2415 004655 042 040 .ADDR BUSAD ;BUFFER ADDRESS OF SOURCE OF DATA 2416 2417 004657 257 XRA A ;CLR ACCUM SO CAN CLR I/O REG 115 2418 004660 323 115 OUT BUSARB ;***** I/O WRT 115/0 ***** 2419 2420 004662 076 141 MVI A,^O141 ;BITS TO SET "CONSOLE REQ" & "T ENB FOR COM/ADR" 2421 004664 323 210 OUT BUSCTL ;***** I/O WRT 210/141 ***** 2422 2423 004666 BUSRESP ARBRESP ;***** I/O READ 301 ***** (1) 004666 315 256 032 CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE (1) 004671 020 .BYTE ARBRESP ;BITS TO BE CHECKED 2424 004672 302 022 036 JNZ NOARB ;IF NO ARB RESPONSE WITH "BUS REQ", ABORT 2425 2426 004675 315 354 011 CALL DBRDIN ;GO READ RESULTS, AND DO A 36-BIT COMPARE 2427 004700 302 371 011 JNZ DBERR ;IF "Z-BIT" NOT SET REPORT MISCOMPARE & ABORT 2428 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-74 CMDS.M80 *** "DB" CMD *** 2430 ;SECOND HALF OF COMMAND 2431 004703 315 202 033 CALL ADATT ;CLR OUT OLD CRUD 2432 004706 004 017 .ADDR MAD000 ;WITH ALL ZEROES 2433 2434 004710 315 147 033 CALL WDATT ;***** I/O WRT DATA 0-35 ADDR REG(EVENS) ***** 2435 004713 042 040 .ADDR BUSAD ;BUFFER ADDRESS OF SOURCE OF DATA 2436 2437 004715 076 001 MVI A,01 ;BITS TO SET "DATA CYCLE" 2438 004717 323 114 OUT ^O114 ;***** I/O WRT 114/1 ***** 2439 2440 004721 076 363 MVI A,^O363 ;BITS FOR "CONSOLE REQ", "TENB FOR COM/AD R" 2441 ;"T ENB FOR DATA CYCLE","LATCH DATA SENT" 2442 004723 323 210 OUT BUSCTL ;***** I/O WRT 210/363 ***** 2443 2444 004725 BUSRESP ARBRESP ;***** I/O RD 301 ***** (1) 004725 315 256 032 CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE (1) 004730 020 .BYTE ARBRESP ;BITS TO BE CHECKED 2445 2446 004731 302 022 036 JNZ NOARB ;IF NO ARB RESP, ABORT WITH 2ND HALF MESSAGE 2447 2448 004734 BUSRESP DATACK ;HOW ABOUT DATA ACKNOWLEDGE?? (1) 004734 315 256 032 CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE (1) 004737 001 .BYTE DATACK ;BITS TO BE CHECKED 2449 004740 312 010 036 JZ NOACK ;JUMP IF NONE 2450 2451 004743 315 354 011 CALL DBRDIN ;GO READ IN RESULTS AND COMPARE RESULT 2452 004746 310 RZ ;IF Z-BIT, THEN OK TO EXIT 2453 2454 ;ELSE FALL INTO THIS CODE IF A MISCOMPARE 2455 004747 PCHAR DCHR ;PRINT "D" (1) 004747 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 004750 104 .BYTE DCHR ;CHAR TO PRINT 2456 004751 303 373 011 JMP DBCOM ;AND NOW THE ERR FINISHES UP LIKE THE 1ST HALF 2457 2458 ;COMMON SUBROUTINE TO READ IN THE CONTENTS OF THE KS10 BUS & COMPARE AGAINST 2459 ;THE DATA WHICH WAS PUT ONTO THE BUS 2460 004754 315 105 033 DBRDIN: CALL RDATT ;***** I/O RD 0,1,2,3,103 ***** 2461 004757 100 040 .ADDR TMPB2 ;PLACE TO PUT RDATA 0-35 2462 2463 004761 315 033 033 CALL CMP36 ;CHECK DATA JUST READ VS. DATA SENT 2464 004764 042 040 .ADDR BUSAD ;SENT DATA 2465 004766 100 040 .ADDR TMPB2 ;RECEIVED DATA 2466 004770 311 RET ;DONE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-75 CMDS.M80 *** "DB" CMD *** 2468 ;"DB" COMMAND CODE FOR THE CASES WHERE DATA DEPOSITED ON THE 2469 ;BUS IS NOT THE SAME AS THE DATA READ BACK FROM THE BUS.. 2470 ;...BY THE WAY..RIGHT NOW THIS IS PRETTY SLOPPY CODE.... 2471 004771 DBERR: PCHAR CCHR ;PRINT A "C" (1) 004771 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 004772 103 .BYTE CCHR ;CHAR TO PRINT 2472 004773 DBCOM: PLINE MSG10 ;"?C CYC" (1) 004773 337 RST 3 ;PRINT LINE OF CHARS (1) 004774 062 037 .ADDR MSG10 ;BUFF TO PRINT 2473 2474 004776 041 042 040 LXI H,BUSAD ;ADDR OF 36-BIT DATA 2475 005001 315 365 030 CALL P36 ;NOW PRINT THAT DATA 2476 2477 005004 PLINE DRCVD ;"RECEIVED DATA" (1) 005004 337 RST 3 ;PRINT LINE OF CHARS (1) 005005 075 037 .ADDR DRCVD ;BUFF TO PRINT 2478 2479 005007 041 100 040 LXI H,TMPB2 ;THIS IS ADDR OF RECEIVED DATA 2480 005012 315 365 030 CALL P36 ;PRINT THAT 36-BIT DATA 2481 005015 PCRLF ;AND CR-LF (2) 005015 347 RST 4 (2) 005016 002 .BYTE 2 2482 005017 041 004 000 LXI H,4 ;PASS ERROR CODE BEFORE EXIT 2483 005022 303 016 036 JMP ERRRTN ;GO FINISH WITH THE ERROR CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-76 CMDS.M80 *** "EM" CMD *** 2485 .SBTTL *** "EM" CMD *** 2486 ;THIS IS THE ACTUAL "EM" COMMAND CODE 2487 2488 005025 332 033 012 EMCMD: JC EM1 ;SKIP CODE IF AT END OF COMMAND 2489 005030 315 121 013 CALL LACMD ;GO FETCH UP AN ADDRESS TO EXAMINE 2490 2491 005033 257 EM1: XRA A ;CLEAR ACCUM 2492 005034 062 031 040 STA ENEXT ;AND SET SO "EN " CMD WILL KNOW WHAT TO DO 2493 2494 005037 021 017 040 EM2: LXI D,MEMAD ;ADDRESS FOR MEMORY LOC. 2495 2496 005042 076 004 EMINT: MVI A,04 ;BIT TO SAY "READ FUNCTION" 2497 2498 005044 107 EN2ND: MOV B,A ;SAVE FUNCTION DATA 2499 005045 353 XCHG ;DATA POINTER TO "H,L" 2500 005046 042 205 040 SHLD AM.AI ;STORE FOR LATER USE BY COMMON CODE 2501 005051 353 XCHG ;RESTORE "D,E" 2502 005052 315 207 033 CALL ADATP ;***** I/O WRT 103,105,107,111,113 ***** 2503 2504 005055 170 MOV A,B ;GET FUNCTION 2505 005056 323 113 EM.CRM: OUT A0003 ;***** I/O WRT 113/4 ***** 2506 2507 ;NOW SET "COM/ADR" CYCLE 2508 005060 076 004 MVI A,^O04 ;BIT TO SET COM/ADR CYC 2509 005062 323 115 OUT BUSARB ;***** I/O WRT 115/4 ***** 2510 2511 ;CHECK IF DOING EI OR EM 2512 005064 072 163 040 LDA EIFLAG ;GET THE EI FLAG 2513 005067 247 ANA A ;SET CODES, IF .NE. 0, THEN IT IS AN EI CODE 2514 005070 302 075 012 JNZ EMCONT ;AND IF WAS EI, GO DO IT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-77 CMDS.M80 *** "EM" CMD *** 2516 ;OTHERWISE JUST FALL THRU AND USE THE DM CODES 2517 005073 076 343 MVI A,^O343 ;BITS FOR "CHECK NXM","CONSOLE REQ","T ENB FOR COM/ADR" 2518 ;"LATCH DATA SENT"," R CLK DISABLE" 2519 005075 323 210 EMCONT: OUT BUSCTL ;***** I/O WRT 210/343 ***** 2520 2521 005077 257 XRA A ;CLEAR THE ACCUM 2522 005100 062 163 040 STA EIFLAG ;CLEAR FLAG ON THE WAY OUT 2523 2524 005103 BUSRESP ARBRESP ;***** I/O RD 301 ***** (1) 005103 315 256 032 CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE (1) 005106 020 .BYTE ARBRESP ;BITS TO BE CHECKED 2525 005107 302 022 036 JNZ NOARB ;IF GET NO "BUS REQ", ARB FAILED SO ABORT 2526 2527 005112 BUSRESP NONXMEM ;***** I/O RD 301 ***** (1) 005112 315 256 032 CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE (1) 005115 100 .BYTE NONXMEM ;BITS TO BE CHECKED 2528 005116 302 036 036 JNZ NIXOM ;JUMP IF NON-EXISTANT MEM FLAG IS SET 2529 2530 ;NOW MUST WAIT FOR "DATA ACKNOWLEDGE" FROM MEMORY 2531 005121 BUSRESP DATACK ;***** I/O RD 301 ***** (1) 005121 315 256 032 CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE (1) 005124 001 .BYTE DATACK ;BITS TO BE CHECKED 2532 005125 312 010 036 JZ NOACK ;JMP IF NO "DATA ACK"(BUS HAS 15 MIC. SEC TO RESP) VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-78 CMDS.M80 *** "EM" CMD *** 2534 ;HERE IF "DATA ACKNOWLEDGE" RECEIVED..GET RESULTS & PRINT 2535 005130 021 012 040 LXI D,EMBUF ;PLACE TO PUT RECEIVED DATA 2536 005133 315 112 033 CALL RDATP ;***** I/O RD 0,1,2,3,103 ***** 2537 2538 005136 257 XRA A ;SET ACCUM .EQ. 0 FOR "R CLK ENABLE" 2539 005137 323 210 OUT BUSCTL ;***** I/O WRT 210/0 ***** 2540 2541 005141 072 120 040 LDA NOPNT ;GET THE PRINT FLAG 2542 005144 247 ANA A ;SET CONDITION CODES 2543 005145 300 RNZ ;AND DONT WASTE TIME IF NOT PRINTING 2544 2545 005146 052 205 040 LHLD AM.AI ;GET POINTER TO MEM ADDR JUST EXAMINED 2546 005151 315 365 030 CALL P36 ;PRINT IT 2547 2548 005154 PSLASH ;PRINT "/" (2) 005154 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 005155 057 .BYTE SLASH ;CHAR TO PRINT 2549 005156 315 362 030 CALL P36. ;AND PRINT IT 2550 005161 PCRLF ;CR-LF (2) 005161 347 RST 4 (2) 005162 002 .BYTE 2 2551 005163 ENDCMD ;ALL DONE (1) 005163 311 RET ;RETURN TO CALLER 2552 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-79 CMDS.M80 *** "EN" CMD *** 2554 .SBTTL *** "EN" CMD *** 2555 ;ACTUAL CODE FOR "EN" CMD 2556 2557 005164 315 066 033 ENEM: CALL INC36 ;ADD 1 TO 36-BIT BUFFER 2558 005167 017 040 .ADDR MEMAD ;THIS IS THE BUFFER TO INCREMENT 2559 005171 303 033 012 JMP EM1 ;AND NO GO PROCESS JUST LIKE "EM" CMD 2560 2561 2562 .SBTTL *** "EN" CND *** 2563 ;EXAMINE NEXT WILL DO THE NEXT, SAME AS THE LAST 2564 005174 052 031 040 ENCMD: LHLD ENEXT ;GET INDEX FOR WHICH EXAMINE IS NEXT 2565 005177 021 210 012 LXI D,ENLST ;GET PNTR TO DISPATCH LIST 2566 005202 031 DAD D ;AND NOW ADD "WHICH" EXAMINE 2567 005203 136 MOV E,M ;GET LO ORDER PIECE 2568 005204 043 INX H ;UPDATE MEM PNTR 2569 005205 126 MOV D,M ;GET HI ORDER PIECE 2570 005206 353 XCHG ;PUT THIS NEW ADDR INTO "H,L" 2571 005207 351 PCHL ;AND TAKE THE DISPATCH 2572 2573 005210 164 012 ENLST: .ADDR ENEM ;DISPATCH FOR EXAM MEM CMD 2574 005212 002 013 .ADDR ENEI ;DISPATCH FOR EXAM I/O 2575 005214 107 013 .ADDR ENEK ;DISPATCH FOR EXAM KONSOL 2576 005216 077 016 .ADDR ENEC ;DISPATCH FOR EXAMINCRAM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-80 CMDS.M80 *** "DM" CMD *** 2578 .SBTTL *** "DM" CMD *** 2579 ;DEPOSIT MEMORY ACTUAL COMMAND CODE 2580 .SBTTL *** "DN" CMD *** 2581 005220 315 066 033 DNDM: CALL INC36 ;INCREMENT MEMORY ADDRESS 2582 005223 017 040 .ADDR MEMAD ;HERE IS CURRENT MEMORY ADDRESS 2583 005225 DMCMD: ARG36 ;OTHERWISE, ASSEMBLE THE ARG (1) 005225 347 RST 4 (1) 005226 010 .BYTE 8 2584 005227 047 040 .ADDR DMDAT ;PLACE TO PUT ASSEMBLED DATA 2585 2586 005231 257 DM1: XRA A ;0 IS THE INDEX FOR MEM NEXT CMDS 2587 005232 062 033 040 STA DNEXT ;SAVE SO "NEXT" COMMAND WILL KNOW WHAT TO DO 2588 2589 005235 021 017 040 DM2: LXI D,MEMAD ;PNTR TO SM10 MEMORY ADDRESS 2590 2591 005240 076 002 DMINT: MVI A,02 ;BIT TO SAY "WRITE FUNCTION" 2592 2593 005242 107 DN2ND: MOV B,A ;SAVE FUNCTION STATUS 2594 005243 315 207 033 CALL ADATP ;***** I/O WRT 103,105,107,111,113 ***** 2595 2596 005246 170 MOV A,B ;GET FUNCTION DATA 2597 005247 323 113 OUT A0003 ;***** I/O WRT 113 ***** 2598 2599 005251 076 004 MVI A,04 ;BIT INTO ACCUM FOR "COM/ADR CYCLE" 2600 005253 323 115 OUT BUSARB ;***** I/O WRT 115/4 ***** 2601 2602 005255 315 147 033 CALL WDATT ;***** I/O WRT 102,104,106,110,112 ***** 2603 005260 047 040 .ADDR DMDAT ;PLACE TO GET DATA FOR DEPOSIT 2604 2605 005262 076 001 MVI A,01 ;BIT INTO ACCUM FOR "DATA CYCLE" 2606 005264 323 114 OUT DTARB ;***** I/O WRT 114/1 ***** 2607 2608 ;CHECK TO SEE IF DOING DI OR DM 2609 005266 072 164 040 LDA DIFLAG ;GET THE FLAG 2610 005271 247 ANA A ;SET THE CONDITION CODES 2611 005272 302 277 012 JNZ DMCONT ;IF .NE. 0, THEN YOU GOT THE CODE FOR A DI VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-81 CMDS.M80 *** "DN" CMD *** 2613 ;OTHERWISE, FALL THRU TO DO A DM 2614 005275 076 362 DMGO: MVI A,^O362 ;BITS FOR "CHECK NXM","CONSOLE REQ","T ENB FOR COM/ADR" 2615 ;"T ENB FOR DATA CYCLE"(LATCH DATA SENT PREVENTS FALSE PAR ERR) 2616 005277 323 210 DMCONT: OUT BUSCTL ;*****I/O WRT 210/362 ***** 2617 2618 005301 257 XRA A ;CLEAR THE ACCUM 2619 005302 062 164 040 STA DIFLAG ;AND CLEAR THE FLAG 2620 2621 005305 BUSRESP ARBRESP ;***** I/O RD 301 ***** (1) 005305 315 256 032 CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE (1) 005310 020 .BYTE ARBRESP ;BITS TO BE CHECKED 2622 005311 302 022 036 JNZ NOARB ;IF NO "BUS REQ", ARB FAILED, SO ABORT 2623 2624 ;IF THAT WAS OK, CHECK FOR NON-EXISTANT MEMORY 2625 005314 BUSRESP NONXMEM ;***** I/O RD 301 ***** (1) 005314 315 256 032 CALL BUSRESP ;DO A CALL TO EXECUTE THIS CODE (1) 005317 100 .BYTE NONXMEM ;BITS TO BE CHECKED 2626 005320 302 036 036 JNZ NIXOM ;IF FLAG SAYS NXM, THEN WE JUMP 2627 2628 ;ELSE ALL OK.... 2629 005323 ENDCMD (1) 005323 311 RET ;RETURN TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-82 CMDS.M80 *** "DN" CMD *** 2631 .SBTTL *** "DN" CMD *** 2632 ;ROUTINE WILL DEPOSIT NEXT, JUST AS THE LAST 2633 005324 052 033 040 DNCMD: LHLD DNEXT ;GET CODE FOR WHICH DEPOSIT IS NEXT 2634 005327 021 340 012 LXI D,DNLST ;PNTR TO DISPATCH LIST 2635 005332 031 DAD D ;ADD GIVES PNTR TO WHICH IS NEXT 2636 2637 005333 136 MOV E,M ;LO ORDER PIECE TO REG 2638 005334 043 INX H ;UPDATE MEM PNTR 2639 005335 126 MOV D,M ;HI ORDER PIECE TO REG 2640 005336 353 XCHG ;NOW THE DISPATCH GOES TO "H,L" 2641 005337 351 PCHL ;AND DISPATCH 2642 2643 005340 220 012 DNLST: .ADDR DNDM ;DISPATCH FOR DEP NEXT TO MEM 2644 005342 010 013 .ADDR DNDI ;FOR DEPOSIT NEXT TO I/O 2645 005344 140 013 .ADDR DNDK ;FOR DEPOSIT NEXT TO KONSOLE 2646 005346 111 016 .ADDR DNDC ;FOR DEPOSIT NEXT CRAM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-83 CMDS.M80 *** "EI" CMD *** 2648 .SBTTL *** "EI" CMD *** 2649 005350 EICMD: RUN.. ;ILLEGAL COMMAND IF CPU RUNNING (1) 005350 347 RST 4 (1) 005351 006 .BYTE 6 2650 005352 332 360 012 JC EI1 ;SKIP CODE IF AT END OF COMMAND 2651 005355 315 126 013 CALL LICMD ;FETCH UP THE DESIRED I/O ADDRESS 2652 2653 005360 076 002 EI1: MVI A,2 ;DISP CODE FOR EXAMINE NEXT.. 2654 005362 062 031 040 STA ENEXT ;TELL EXAMINE NEXT TO COME HERE 2655 2656 005365 021 024 040 LXI D,IOAD ;"H,L" GETS PNTR TO ADDR BUFFER 2657 2658 005370 076 143 MVI A,^O143 ;SPECIAL CODE FOR WHEN DOING DI 2659 005372 062 163 040 STA EIFLAG ;PASS IT TO ROUTINE 2660 2661 005375 076 014 MVI A,^O14 ;BITS FOR "I/O FUNC" & "READ FUNC" 2662 005377 303 044 012 JMP EN2ND ;JUMP TO COMMON CODE 2663 2664 2665 ;EXAMINE I/O ENTRY PNT FOR EXAMINE NEXT SITUATION 2666 005402 315 041 013 ENEI: CALL IO.INC ;GO INCREMENT I/O ADDRESS TWICE 2667 005405 303 360 012 JMP EI1 ;THEN ON TO COMMON CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-84 CMDS.M80 *** "DI" CMD *** 2669 .SBTTL *** "DI" CMD *** 2670 .SBTTL *** "DN" CMD *** 2671 005410 315 041 013 DNDI: CALL IO.INC ;GO INCREMENT THE I/O ADDRESS TWICE 2672 005413 DICMD: ARG36 ;OTHERWISE GO ASSEMBLE THE ARG (1) 005413 347 RST 4 (1) 005414 010 .BYTE 8 2673 005415 047 040 .ADDR DMDAT ;AND STORE IT HERE 2674 2675 005417 076 002 DI1: MVI A,02 ;SET WORD THAT SAYS DEP NEXT WILL BE DI 2676 005421 062 033 040 STA DNEXT ;AND SAVE FOR "DN" CMD 2677 2678 005424 021 024 040 LXI D,IOAD ;PNTR TO ADDRESS DATA TO USE 2679 2680 005427 076 160 MVI A,^O160 ;SET CODE FOR USE BY DI COMMAND 2681 005431 062 164 040 STA DIFLAG ;AND PASS IT TO ROUTINE 2682 2683 005434 076 012 MVI A,^O012 ;BITS TO SAY "I/O FUNC" & "WRITE FUNC" 2684 005436 303 242 012 JMP DN2ND ;AND JUMP TO COMMON CODE 2685 2686 005441 315 066 033 IO.INC: CALL INC36 ;NOW INCREMENT I/O ADDRESS 2687 005444 024 040 .ADDR IOAD ;ITS RIGHT HERE 2688 005446 315 066 033 CALL INC36 ;NOW INCREMENT I/O ADDRESS 2689 005451 024 040 .ADDR IOAD ;ITS RIGHT HERE 2690 005453 311 RET ;AND BACK VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-85 CMDS.M80 *** "EK" CMD *** 2692 .SBTTL *** "EK" CMD *** 2693 ;ROUTINE EXAMINES 8080 LOCATIONS 2694 005454 332 063 013 EKCMD: JC EK1 ;IF NOT, NO ARG TO BE ASSEMBLED 2695 2696 ;OTHERWISE, MUST ASSEMBLE ARG 2697 005457 ARG16 ;GO GET 16 BIT ADDR TO EXAMINE (1) 005457 347 RST 4 (1) 005460 004 .BYTE 4 2698 005461 002 040 .ADDR C80AD ;AND PUT INTO CURRENT ADDR BUFFER 2699 2700 005463 076 004 EK1: MVI A,04 ;INDEX SAYS EK IS NEXT 2701 005465 062 031 040 STA ENEXT ;SAVE IN THE RAM 2702 2703 005470 041 002 040 LXI H,C80AD ;GET CURRENT ADDR 2704 005473 315 332 030 CALL P16 ;AND PRINT IT AS IS 2705 2706 005476 PSLASH ;NOW A "/" (2) 005476 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 005477 057 .BYTE SLASH ;CHAR TO PRINT 2707 2708 005500 052 002 040 LHLD C80AD ;GET ADDR JUST PRINTED 2709 005503 176 MOV A,M ;PASS ARG TO PRINT IN THE ACCUM 2710 005504 303 051 017 JMP P8CRLF ; AND PRINT DATA PLUS CRLF, FOR FREE 2711 2712 2713 2714 .SBTTL *** "EN" CMD *** 2715 005507 052 002 040 ENEK: LHLD C80AD ;GET CURRENT 8080 ADDRESS 2716 005512 043 INX H ;UPDATE 2717 005513 042 002 040 SHLD C80AD ;PUT IT BACK 2718 005516 303 063 013 JMP EK1 ;COMMON CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-86 CMDS.M80 *** "LA" CMD *** 2720 .SBTTL *** "LA" CMD *** 2721 005521 LACMD: 2722 005521 ARG36 ;OTHERWISE, GET ARG & PUT IN 36-BIT BUFFER (1) 005521 347 RST 4 (1) 005522 010 .BYTE 8 2723 005523 017 040 .ADDR MEMAD ;PLACE TO PUT DATA 2724 2725 005525 ENDCMD ;AND DONE (1) 005525 311 RET ;RETURN TO CALLER 2726 2727 2728 .SBTTL *** "LI" CMD *** 2729 005526 LICMD: ARG36 ;GET ARG AND PUT INTO A TEMP BUFFER (1) 005526 347 RST 4 (1) 005527 010 .BYTE 8 2730 005530 024 040 .ADDR IOAD ;THIS TEMP BUFFER 2731 2732 005532 ENDCMD ;AND DONE (1) 005532 311 RET ;RETURN TO CALLER 2733 2734 .SBTTL *** "LK" CMD *** 2735 ;ROUTINE SETS CURRENT 8080 ADDRESS INTO RAM.. 2736 ;IF USER TRIES TO DEPOSIT PROM, TOO BAD. HE SHOULD KNOW BETTER 2737 005533 LKCMD: ARG16 ;IF OK, GO ASSEMBLE 16 BIT ARG (1) 005533 347 RST 4 (1) 005534 004 .BYTE 4 2738 005535 002 040 .ADDR C80AD ;THIS IS A GOOD PLACE TO KEEP IT 2739 2740 005537 ENDCMD ;AND END (1) 005537 311 RET ;RETURN TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-87 CMDS.M80 *** "DN" CMD *** 2742 .SBTTL *** "DN" CMD *** 2743 005540 052 002 040 DNDK: LHLD C80AD ;GET 8080 ADDRESS 2744 005543 043 INX H ;INCREMENT BY 1 2745 005544 042 002 040 SHLD C80AD ;PUT IT BACK 2746 ;FALL INTO THE "DK" COMMAND 2747 2748 .SBTTL *** "DK" CMD *** 2749 ;CODE TO DEPOSIT INTO 8080 RAM.. IF U TRY TO DEPOSIT PROM 2750 ;ITS YOUR OWN FAULT 2751 005547 315 257 030 DKCMD: CALL ARG16. ;OK, NOW GO ASSEMBLE 16 BITS OF DATA 2752 2753 005552 175 MOV A,L ;GET DATA FROM LOC 2754 005553 052 002 040 LHLD C80AD ;AND CURRENT ADDRESS TO "H,L" 2755 005556 167 MOV M,A ;WRITE THE 8-BIT DATA 2756 005557 076 004 MVI A,04 ;GET CODE THAT SAYS EXAMINE NEXT SHOULD BE "KONSOLE" 2757 005561 062 033 040 STA DNEXT ;AND SAVE IN RAM 2758 2759 005564 ENDCMD ;ALL DONE (1) 005564 311 RET ;RETURN TO CALLER 2760 2761 .SBTTL *** "CP" CMD *** 2762 ;COMMAND TO SINGLE PULSE THE SM10 CPU CLK 2763 005565 332 205 013 CPCMD: JC CP1 ;IF NO ARG, ONLY GIVE SINGLE CPU CLK 2764 2765 005570 315 257 030 CALL ARG16. ;ELSE GET ARG 2766 2767 ;NOW GIVE NUMBER OF CLKS REQUESTED 2768 005573 175 CPMLT: MOV A,L ;LO ORDER PIECE INTO ACCUM 2769 005574 264 ORA H ;ADD THE HI ORDER PIECE 2770 005575 310 RZ ;ALL DONE IF DOWN TO ZERO 2771 2772 005576 315 205 013 CALL CP1 ;OTHERWISE, GIVE CLOCK 2773 005601 053 DCX H ;DECREMENT 2774 005602 303 173 013 JMP CPMLT ;AND CONTINUE TILL DONE ALL 2775 2776 005605 076 010 CP1: MVI A,^O010 ;SET BIT FOR "SS MODE" 2777 005607 323 204 OUT CRMCTL ;*****I/O WRT 204/010 ***** 2778 005611 076 002 MVI A,2 ;SET BIT FOR "SINGLE CLK" 2779 005613 323 206 OUT CLKCTL ;***** I/O WRT 206/2 ***** 2780 005615 ENDCMD ;DONE.. (1) 005615 311 RET ;RETURN TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-88 CMDS.M80 *** "ER" CMD *** 2782 .SBTTL *** "ER" CMD *** 2783 ;COMMAND TO EXAMINE ONE OF THE 8080 INTERNAL REGISTER, AND DISPLAY 2784 ;THE CONTENTS OF THAT REGISTER. 2785 005616 332 230 013 ERCMD: JC ER1 ;IF NO ARG, GO USE THE ONE ALREADY IN THE RAM 2786 2787 005621 315 257 030 CALL ARG16. ;ELSE, PICK UP THE ARG THAT WAS TYPED 2788 2789 ;FALL TO HERE IF ARG OK.. 2790 005624 175 MOV A,L ;GET ACTUAL ARG INTO THE ACCUM 2791 005625 062 123 040 STA ERADDR ;WELL, BEST SAVE THIS THING IN THE RAM 2792 005630 072 123 040 ER1: LDA ERADDR ;COMMON TYPE CODE.. A NO-OP IF ARG WAS TYPED 2793 2794 005633 365 PUSH PSW ;NOW SAVE ACCUM PLEASE 2795 005634 315 317 030 CALL P8BITA ;PRINT NAME OF THE 8080 REG THAT IS BEING EXAMINED 2796 005637 PSLASH ;AND SEPARATE FROM ITS CONTENTS WITH A SLASH (2) 005637 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 005640 057 .BYTE SLASH ;CHAR TO PRINT 2797 2798 005641 361 POP PSW ;RESTORE ACCUM PLEASE 2799 005642 315 270 013 CALL ER.UTL ;EXECUTE THE INSTR PAIR FROM THE RAM SPACE 2800 2801 ;BACK HERE AND THE DATA IS IN THE ACCUM 2802 005645 315 051 017 CALL P8CRLF ;PRINT THE RESULTS 2803 005650 311 RET ;AND DONE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-89 CMDS.M80 *** "ER" CMD *** 2805 ;ROUTINE TO EXECUTE AN "IN" OR "OUT" FROM THE 8080 RAM SPACE 2806 005651 042 070 040 RAMXCT: SHLD ER.LOC ;THE "IN/OUT" AND THE REG NUMBER INTO RAM SPACE 2807 005654 365 PUSH PSW ;SAVE ACCUM, IN CASE ROUTINE IS AN "OUT" 2808 005655 076 311 MVI A,.RET ;A "RETURN" INTO ACCUM 2809 005657 062 072 040 STA ER.LOC+2 ; AND THEN THE RETURN GETS PUT INTO RAM SPACE 2810 005662 361 POP PSW ;RESTORE ACCUM, ANYWAY 2811 005663 315 070 040 CALL ER.LOC ;GO EXECUTE THE RAM LOC 2812 005666 057 CMA ;FIX HARDWARE INVERSION 2813 005667 311 RET ;BACK TO CALLER 2814 2815 ;ROUTINE ER.UTL.. DOES AN EXAMINE REGISTER, INTERNAL TYPE FORMAT. 2816 ;NO PRINTING, JUST THE EXAMINE 2817 ;PASS DESIRED I/O REG ADDRESS IN ACCUM. 2818 ;ACCUM GETS THE RESULTS OF THE READ. 2819 005670 345 ER.UTL: PUSH H ;SAVE H,L PAIR 2820 005671 147 MOV H,A ;NOW, THE NUMBER THAT WAS TYPED IS PUT INTO HI HALF 2821 005672 056 333 MVI L,.IN ;AND AN "IN" INSTR GOES LO HALF 2822 2823 005674 315 251 013 CALL RAMXCT ;NOW ACTUALLY EXECUTE THE CODE TO DO THE READ 2824 005677 341 POP H ;FIX H,L 2825 005700 311 RET ;OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-90 CMDS.M80 *** "LR" CMD *** 2827 .SBTTL *** "LR" CMD *** 2828 ;COMMAND TO SET INTO THE 8080 RAM, THE I/O REGISTER TO BE EITHER 2829 ;DEPOSITED OR EXAMINED 2830 005701 315 257 030 LRCMD: CALL ARG16. ;FETCH IN THE NUMBER TYPED 2831 2832 005704 175 MOV A,L ;DESIRED REG TO ACCUM 2833 005705 062 123 040 STA ERADDR ;PUT IN 8080 RAM 2834 005710 311 RET ;AND OUT 2835 2836 2837 .SBTTL *** "DR" CMD *** 2838 ;COMMAND TO DEPOSIT A NUMBER INTO THE LAST SPECIFIED 8080 I/O REG. 2839 005711 DRCMD: ARG16 (1) 005711 347 RST 4 (1) 005712 004 .BYTE 4 2840 005713 000 040 .ADDR T80DT ;TAKE ARG AND PUT INTO RAM SPACE 2841 2842 005715 056 323 MVI L,.OUT ;"L" GETS THE OPERATION TYPE WE WILL PERFORM 2843 005717 072 123 040 LDA ERADDR ;FETCH UP THE CURRENTLY SELECTED I/O REG 2844 005722 147 MOV H,A ;AND PUT IT INTO THE "H" 2845 005723 072 000 040 LDA T80DT ;NOW THE DATA TO BE WRITTEN GOES TO THE ACCUM 2846 2847 005726 315 251 013 CALL RAMXCT ;PERFORM THE OPERATION 2848 005731 311 RET ;THATS ALL VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-91 CMDS.M80 *** "LC" CMD *** 2850 .SBTTL *** "LC" CMD *** 2851 ;COMMAND TO LOAD THE 8080 RAM CURRENT CRAM ADDRESS 2852 005732 LCCMD: ARG16 ;OK, ASSEMBLE THE 16 BITS (1) 005732 347 RST 4 (1) 005733 004 .BYTE 4 2853 005734 004 040 .ADDR CRMAD ;TEMP PLACE TO KEEP BITS 2854 005736 ENDCMD ;DONE.. (1) 005736 311 RET ;RETURN TO CALLER 2855 2856 .SBTTL *** "CE" CMD *** 2857 ;COMMAND TO SET CACHE ENABLE ON THE CSL BOARD 2858 ; OR PERHAPS CLR CACHE ENABLE IF DESIRED 2859 2860 005737 332 370 013 CECMD: JC CEDIS ;IF NO ARG, DISPLAY "CACHE ENABLE" 2861 2862 005742 315 257 030 CALL ARG16. ;MUST ASSEMBLE ARG IF FALL THRU 2863 2864 005745 175 MOV A,L ;ARG TO ACCUM 2865 005746 027 RAL ;BIT 0 TO 1 2866 005747 027 RAL ;BIT TO 2 2867 005750 027 RAL ;BIT TO 3 2868 005751 346 010 ANI ^O10 ;OFF ALL BITS BUT THE CACHE BIT 2869 005753 107 MOV B,A ;SAVE RESULT IN "B" FOR A LITTLE WHILE 2870 005754 072 354 040 LDA PARBT ;GET CURRENT PARITY BIT STATUS 2871 005757 346 367 ANI ^O367 ;OFF THE CACHE BIT 2872 2873 ;HERE IS SOME COMMON CODE, USEFUL BY ROUTINES WHICH MUST ADJUST 2874 ;THE DATA IN THE PARBT LOCATION 2875 005761 260 ENACOM: ORA B ;ADD NEW DATA TO DEFAULTED "PARBT" 2876 005762 062 354 040 KS.PAR: STA PARBT ;NOW SAVE THE NEW DEFAULT 2877 005765 323 100 OUT RESET ;***** I/O WRT 100/STUFF ***** 2878 005767 ENDCMD ;AND ALL DONE (1) 005767 311 RET ;RETURN TO CALLER 2879 2880 ;CODE ENTERED WHEN WE WANT TO DISPLAY THE CACHE ENABLE STATUS 2881 005770 072 354 040 CEDIS: LDA PARBT ;GET CURRENT STATUS 2882 005773 346 010 ANI ^O10 ;IS THE CACHE BIT SET?? 2883 005775 302 004 014 CHOOSE: JNZ PNT.ON ;HERE IF YES 2884 006000 PLINE OFFMSG ;OFF MESSAGE DEPENDING THINGS (1) 006000 337 RST 3 ;PRINT LINE OF CHARS (1) 006001 154 037 .ADDR OFFMSG ;BUFF TO PRINT 2885 006003 311 RET 2886 006004 PNT.ON: PCHAR 'O ;PRINTING "ON" A CHAR AT A TIME SAVES 1 BYTE (1) 006004 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 006005 117 .BYTE 'O ;CHAR TO PRINT 2887 006006 PCHAR 'N ;OVER PRINTING IT AS A STRING..SPACE IS A LITTLE TIGHT (1) 006006 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 006007 116 .BYTE 'N ;CHAR TO PRINT 2888 006010 PCRLF (2) 006010 347 RST 4 (2) 006011 002 .BYTE 2 2889 006012 311 RET 2890 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-92 CMDS.M80 *** "TE" CMD *** 2892 .SBTTL *** "TE" CMD *** 2893 ;CONSOLE COMMAND TO ENABLE OR DISABLE THE 1 MSEC CLOCK 2894 2895 006013 332 037 014 TECMD: JC TEDIS ;IF NO ARG, DISPLAY CURRENT STATE 2896 2897 006016 315 257 030 CALL ARG16. ;OTHERWISE, GO FETCH THE ARG 2898 2899 006021 175 MOV A,L ;GET INFO JUST TYPED 2900 006022 027 RAL ;BIT 0 TO 1 2901 006023 027 RAL ;BIT TO 2 2902 006024 346 004 ANI ^O4 ;OFF ALL BUT THE TIME BIT 2903 006026 107 MOV B,A ;SAVE STUFF IN B 2904 006027 072 354 040 LDA PARBT ;GET CURRENT DEFAULT 2905 006032 346 373 ANI ^O373 ;OFF THE 1 MSEC CLOCK SIGNAL 2906 2907 006034 303 361 013 JMP ENACOM ;GO DO COMMON CODE 2908 2909 ;THIS CODE ENTERED WHEN WE ONLY WANT TO DISPLAY CURRENT STATE OF 1 MSEC CLOCK 2910 006037 072 354 040 TEDIS: LDA PARBT ;WE NEED TO REPORT STATE..GET DEFAULT 2911 006042 346 004 ANI ^O4 ;IS THE BIT SET?? 2912 006044 303 375 013 JMP CHOOSE ;GO TO A COMMON PLACE THAT CHOOSES "YES" OR "NO" 2913 2914 .SBTTL *** "SC" CMD *** 2915 ;CODE TO TURN OFF OR ON, THE ABILITY TO RECOVER FROM SOFT CRAM ERRORS 2916 ;FLAG AT 0, MEANS TRY AND RECOVER, THEREFORE ITS THE DEFAULT ON 2917 ;MACHINE POWER ON... 2918 006047 332 075 014 SCCMD: JC SCDIS ;IF NO ARG TYPED, GO DISPLY STATE OF THE THING 2919 2920 006052 315 257 030 CALL ARG16. ;ELSE GO GATHER UUP AN ARGUMENT 2921 006055 175 MOV A,L ;ARG GOES INTO ACCUM 2922 006056 247 ANA A ;SET 8080 FLAGS 2923 006057 312 067 014 JZ SC.TOFF ;IF ZERO , TURN OFF SC SOFT CRAM RECOVERY 2924 2925 ;FALL THRU IF TURNING ON SCE 2926 006062 257 XRA A ;ZERO ACCUM 2927 006063 062 326 042 STA SC.OFF ;SO THAT WE CAN SET THE APPROPRIATE FLAG 2928 006066 ENDCMD ;THAT'S IT (1) 006066 311 RET ;RETURN TO CALLER 2929 006067 076 377 SC.TOFF: MVI A,-1 ;WANT TO TURN OFF SCE, NEED -1 TO DO IT 2930 006071 062 326 042 STA SC.OFF ;ZAP 2931 006074 ENDCMD ;AND OUT (1) 006074 311 RET ;RETURN TO CALLER 2932 2933 006075 072 326 042 SCDIS: LDA SC.OFF ;GRAB THE FLAG 2934 006100 057 CMA ;SINCE 0 .EQ. ON, WE MUST INVERT FLAVOR OF FLAG 2935 006101 247 ANA A ;SET 8080 PROCESSOR FLAGS 2936 006102 303 375 013 JMP CHOOSE ;AND GO PRINT THE RIGHT THING VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-93 CMDS.M80 *** "TP CMD" *** 2938 .SBTTL *** "TP CMD" *** 2939 ;CONSOLE COMMAND TO ENABLE OR DISABLE THE TEN STYLE TRAPS 2940 006105 332 125 014 TPCMD: JC TPDIS ;GO DISPLAY CURRENT STATE IF NOTHING TYPED 2941 2942 006110 315 257 030 CALL ARG16. ;OTHERWISE, GO ASSEMBLE A NUMBER TYPED IN 2943 2944 006113 175 MOV A,L ;GET INFO THAT WAS TYPED 2945 006114 027 RAL ;BIT 0 TO 1 2946 006115 027 RAL ;1 TO 2 2947 006116 027 RAL ;2 TO 3 2948 006117 027 RAL ;3 TO 4 2949 006120 346 020 ANI ^O20 ;OFF ALL BUT TRAP BIT 2950 006122 303 000 022 JMP TP.SET ;JUMP TO PLACE THAT SETS TRAPS, AND SAVES DATA 2951 2952 ;CODE TO DISPLAY CURRENT STATE OF SIGNAL 2953 006125 072 355 040 TPDIS: LDA TRAPEN ;GET CURRENT STATE OF TRAPS BIT 2954 006130 346 020 ANI ^O20 ;SET CONDITION CODES 2955 006132 303 375 013 JMP CHOOSE ;AND GO DO IT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-94 CMDS.M80 *** "LT" CMD *** 2957 .SBTTL *** "LT" CMD *** 2958 ;CONSOLE COMMAND TO TURN ON THE LIGHTS ON THE CONSOLE FRONT PANEL 2959 006135 LTCMD: CLRB KLNKSW ;FORCE A FIXING OF THE LIGHTS 2960 006137 076 007 MVI A,7 ;LOAD ACCUM WITH A BIT FOR EACH OF THE 3 LIGHTS 2961 006141 323 101 OUT LIGHTS ;***** I/O WRT 101/7 ***** 2962 006143 315 151 014 CALL LTDLY ;LEAVE LIGHTS ON FOR ABOUT A SECOND 2963 006146 257 XRA A ;CLEAR ACCUM 2964 006147 323 101 OUT LIGHTS ;***** I/O WRT 101/0 ***** 2965 ;FALL INTO CODE THAT WAITS A WHILE WITH THE LIGHTS OFF 2966 2967 006151 041 054 001 LTDLY: LXI H,300 ;DELAY ABOUT A SECOND AND A HALF 2968 006154 315 276 033 LTLOOP: CALL DELAY. ;GO DO A LITTLE DELAY 2969 006157 377 .BYTE -1 ;MAX COUNT 2970 2971 006160 053 DCX H ;DOWN THE COUNT 2972 006161 175 MOV A,L ;GET PIECE OF THE COUNT 2973 006162 264 ORA H ;THROW IN THE REST OF THE COUNT 2974 006163 302 154 014 JNZ LTLOOP ;CONTINUE WAITING 2975 006166 311 RET ; UNTIL ALL DONE 2976 2977 .SBTTL *** "MM" CMD *** 2978 ;COMMAND TO PUT THE 8080 INTO MANUFACTURING MODE. 2979 ;SETS THE STATE FOR THE KLINIK LINE THEN SENDS A COMMUNICATIONS CLEAR 2980 ;TO WHATEVER IS AT THE OTHER END OF THE KLINIK LINE 2981 006167 315 052 034 MMCMD: CALL SETM4 ;SET KLINIK LINE TO MODE 4 2982 006172 076 041 MVI A,^O41 ;WE MUST ALWAYS RESET THE MESSAGE NUMBERS 2983 006174 062 361 040 STA LSTMSG ;THIS IS THE "RECEIVE" MESSAGE NUMBER 2984 006177 062 011 042 STA ENVMNO ;AND THIS IS THE "SEND" MESSAGE NUMBER 2985 006202 062 251 040 STA MMFLG ;SAY MANUFACTURING MODE HAS BEEN ENTERED 2986 006205 315 376 035 CALL Z.TBUF ;CLEAR SOME COMMUNICATION DEC10 BUFFERS 2987 006210 303 336 034 JMP DECEX2 ;CLEAR THE MAILING ENVELOPES 2988 ;**USING JMP USES OTHER GUY'S RETURN TO RETURN 2989 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-95 CMDS.M80 *** "SI" CMD *** 2991 .SBTTL *** "SI" CMD *** 2992 ;COMMAND TO CAUSE SM10 TO EXECUTE A SINGLE INSTR. 2993 006213 333 300 SICMD: IN RUNFP ;BEFORE CONTINUING,MUST READ MACHINE STATE 2994 006215 346 004 ANI 4 ;IS THE RUN FLOP SET(IS IT ALREADY RUNNING??)(TRUE LO) 2995 006217 312 042 027 JZ YSRUN ;IF YES, GO PRINT A MESSAGE TO THAT EFFECT & ABORT CMD 2996 2997 006222 076 001 MVI A,01 ;SET BIT FOR "CONTINUE" 2998 006224 323 212 OUT CPUCTL ;***** I/O WRT 212/1 ***** 2999 006226 315 101 017 CALL DNF ;CHECK THAT INSTR FINISHED 3000 006231 303 356 016 JMP PCCOM ;AND GO TO TYPE OUT THE PC 3001 3002 .SBTTL *** "CS" CMD *** 3003 ;COMMAND TO START THE SM10 CPU CLK RUNNING 3004 006234 315 266 032 CSCMD: CALL SETRN ;SET CLK "RUNNING" FLAG 3005 006237 257 XRA A ;CLR ACCUM TO CLR "SS MODE" 3006 006240 323 204 OUT CRMCTL ;***** I/O WRT 204/0 ***** 3007 006242 076 003 MVI A,03 ;SET BITS FOR "CLK RUN" & "SINGLE CLK" 3008 006244 323 206 OUT CLKCTL ;***** I/O WRT 206/3 ***** 3009 006246 ENDCMD ;DONE.. (1) 006246 311 RET ;RETURN TO CALLER 3010 3011 .SBTTL *** "CH" CMD *** 3012 ;COMMAND TO HALT THE SM10 CPU CLK 3013 006247 315 302 032 CHCMD: CALL CLRRN ;CLEAR CLK "RUNNING" FLAG 3014 006252 076 010 MVI A,^O010 ;SET BIT FOR "SS MODE" 3015 006254 323 204 OUT CRMCTL ;***** I/O WRT 204/010 ***** 3016 006256 257 XRA A ;CLR BITS FOR "SINGLE CLK" & "CLK RUN" 3017 006257 323 206 OUT CLKCTL ;***** I/O WRT 206/0 ***** 3018 006261 ENDCMD ;DONE.. (1) 006261 311 RET ;RETURN TO CALLER 3019 3020 3021 .SBTTL *** "LF" CMD *** 3022 ;COMMAND TO "LOAD FUNCTION"..SPECIFIES WHICH DIAG FUNCTION WRITE 3023 ;TO DO ON THE NEXT "DF" COMMANDS 3024 006262 315 257 030 LFCMD: CALL ARG16. ;GO ASSEMBLE 16 BIT ARG(WE ONLY NEED 4 BITS) 3025 3026 006265 042 010 040 SHLD CRMFN ;PERMANENT HOME FOR DATA 3027 006270 ENDCMD ;DONE.. (1) 006270 311 RET ;RETURN TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-96 CMDS.M80 *** "DF" CMD *** 3029 .SBTTL *** "DF" CMD *** 3030 ;ROUTINE WRITES THE DATA TYPED USING THE DIAG FUNCTION 3031 ;PREVIOUSLY SPECIFIED BY LF COMMAND 3032 006271 DFCMD: RUN.. ;IS CPU RUNNING?? (1) 006271 347 RST 4 (1) 006272 006 .BYTE 6 3033 3034 006273 315 257 030 CALL ARG16. ;GO ASSEMBLE ARG 3035 3036 ;NEXT ROUTINE DOES LOTS OF I/O WRTS TO SM10 CPU 3037 ;ALL WHILE TRYING TO WRITE DIAGNOSTIC ADDRESS REG FOR CRAM 3038 ;LOADING OR READING.. 3039 006276 345 PUSH H ;SAVE DATA TO BE DEPOSITED 3040 006277 315 335 014 CALL CRM.AD ;WRITE THE CRAM ADDRESS 3041 006302 341 POP H ;GET DATA TO BE DEPOSITED 3042 3043 006303 175 WFUNC: MOV A,L ;GET DATA FOR BITS 28-35 INTO ACCUM 3044 006304 323 103 OUT A2835 ;***** I/O WRT 103 ***** 3045 006306 174 MOV A,H ;GET DATA FOR BITS 20-27 3046 006307 323 105 OUT A2027 ;***** I/O WRT 105 ***** 3047 3048 006311 257 WFNC1: XRA A ;CLR ACCUM 3049 006312 323 115 OUT BUSARB ;***** I/O WRT 115/0 ***** 3050 3051 006314 076 144 MVI A,^O144 ;BITS FOR "CONS REQ","T ENB FOR COM/ADR","CRA R CLK" 3052 006316 323 210 OUT BUSCTL ;***** I/O WRT 210/144 ***** 3053 3054 006320 072 010 040 LDA CRMFN ;GET DIAG FUNCTION 3055 006323 323 205 OUT DIAG ;***** I/O WRT 205/FNC ***** 3056 ;NOTE THAT "TRAP EN" WAS JUST ZAPPED, BUT IT IS ONLY USEFUL IF THE 3057 ;MICRO-CODE IS RUNNING AND ANYTHING U DO TO GET THE MICRO-CODE RUNNING 3058 ;WILL RESTORE THE TRAP ENABLE..THIS KLUDGE SPEEDS UP MICRO-CODE LOAD 3059 3060 3061 006325 076 040 MVI A,^O40 ;BIT FOR "CRAM WRT" 3062 006327 323 204 OUT CRMCTL ;***** I/O WRT 204/40 3063 006331 257 XRA A ;BIT TO CLR "CRAM WRT" 3064 006332 323 204 OUT CRMCTL ;***** I/O WRT 204/0 ***** 3065 006334 ENDCMD ;DONE.. (1) 006334 311 RET ;RETURN TO CALLER 3066 3067 ;SIMPLE LITTLE ROUTINE TO SAVE SOME SPACE..USED IN SEVERAL PLACES 3068 006335 052 004 040 CRM.AD: LHLD CRMAD ;LOAD DIAG ADDR TO BE WRITTEN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-97 CMDS.M80 *** "DF" CMD *** 3070 ;ROUTINE COUNTS ON DATA IN "H,L"..DESTROYS "H,L"... 3071 006340 076 001 CADWR: MVI A,01 ;BIT FOR CRAM RESET 3072 006342 323 204 OUT CRMCTL ;***** I/O WRT 204/1 ***** 3073 006344 257 XRA A ;CLR BIT TO CLR CRAM RESET 3074 006345 323 204 OUT CRMCTL ;***** I/O WRT 204/0 ***** 3075 3076 ;***** I/O WRT 103,105,107,111,113 ***** 3077 006347 175 MOV A,L ;LO ORDER 8 BITS TO ACCUM 3078 006350 323 103 OUT A2835 ;SET IN HARDWARE REG 3079 006352 174 MOV A,H ;HI ORDER 4 BITS TO ACCUM 3080 006353 323 105 OUT A2027 ;SET INTO HARDWARE REG 3081 3082 006355 257 XRA A ;CLR ACCUM 3083 006356 323 107 OUT A1219 ;CLR OTHER HARDWARE REGS 3084 006360 323 111 OUT A0411 3085 006362 323 113 OUT A0003 3086 3087 006364 323 115 OUT BUSARB ;***** I/O WRT 115/0 ***** 3088 3089 006366 076 144 MVI A,^O144 ;BITS FOR "CONS REQ", "T ENB FOR COM/ADR","CRA R CLK" 3090 006370 323 210 OUT BUSCTL ;***** I/O WRT 210/144 ***** 3091 006372 076 021 MVI A,^O21 ;BIT FOR "CRM ADDR LOAD" 3092 006374 323 204 OUT CRMCTL ;***** I/O WRT 204/21 3093 006376 257 XRA A ;BIT TO CLR CRAM ADDR LOAD 3094 006377 323 204 OUT CRMCTL ;***** I/O WRT 204/0 ***** 3095 006401 311 RET ;AND RETURN 3096 3097 3098 ;ROUTINE TO READ A SINGLE DIAG FUNC WORTH OF STUFF FROM 3099 ;THE CRA/CRM PROCESSOR BOARDS 3100 006402 127 READC: MOV D,A ;SAVE DIAG FUNC FOR A SEC.. 3101 006403 072 355 040 LDA TRAPEN ;GET CURRENT VALUE FOR TRAP ENABLES 3102 006406 262 ORA D ;MIX TOGETHER 3103 006407 323 205 OUT DIAG ;***** I/O WRT 205/FNC ***** 3104 006411 076 115 MVI A,^O115 ;BITS "CONS REQ","CRA T CLK","R CLK ENB","CRA R CLK" 3105 006413 323 210 OUT BUSCTL ;***** I/O WRT 210/115 ***** 3106 3107 006415 333 000 IN D2835 ;***** I/O RD 0 ***** 3108 006417 057 CMA ;FIX INVERSION 3109 006420 062 100 040 STA TMPB2 ;SAVE IN STANDARD BUFFER 3110 3111 006423 333 001 IN D2027 ;***** I/O RD 1 ***** 3112 006425 057 CMA ;FIX INVERSION 3113 006426 346 017 ANI ^O17 ;KEEP ONLY 12-8 3114 006430 062 101 040 STA TMPB2+1 ;SAVE IN STANDARD BUFFER 3115 3116 006433 257 XRA A ;CLR ACCUM 3117 006434 323 210 OUT BUSCTL ;***** I/O WRT 210/0 ***** 3118 3119 006436 311 RET ;RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-98 CMDS.M80 *** "RC" *** 3121 .SBTTL *** "RC" *** 3122 006437 RCCMD: RUN.. ;IS CPU RUNNING?? (1) 006437 347 RST 4 (1) 006440 006 .BYTE 6 3123 3124 006441 257 RCINT: XRA A ;CLEAR ACCUM FOR USE AS A COUNTER 3125 006442 001 341 040 LXI B,CRMBF+^D31 ;PNTR TO A BUFFER AREA TO SAVE THE "RC'S" AS READ 3126 006445 137 RCLP: MOV E,A ;SAVE IN "E" REG 3127 006446 315 002 015 CALL READC ;READ A DIAG FUNC FROM CRA/CRM BRD 3128 ;NOW PRINT WHAT WAS READ 3129 006451 072 120 040 LDA NOPNT ;WE WILL MAKE IT QUICKER IF NOT PRINTING RESULTS 3130 006454 247 ANA A ;SET FLAGS 3131 006455 302 102 015 JNZ RCNOP ;IF NO PRINT, AVOID TYPING CODE 3132 3133 006460 173 MOV A,E ;PUT IN MEM FOR PRINT ROUTINE 3134 006461 315 317 030 CALL P8BITA ;PRINT NAME OF THIS DIAG FUNC 3135 006464 PSLASH ;AND "/" (2) 006464 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 006465 057 .BYTE SLASH ;CHAR TO PRINT 3136 006466 315 327 030 CALL P16. ;AND PRINT IT 3137 006471 PCRLF (2) 006471 347 RST 4 (2) 006472 002 .BYTE 2 3138 3139 006473 305 PUSH B ;SAVE COUPLE REGS WHILE GO DECNET 3140 006474 325 PUSH D 3141 006475 315 205 034 CALL DECNET ;YES.. SEND THIS GROUP OF DATA DOWN THE KLINIK LINE 3142 006500 321 POP D ;RETRIEVE THOSE REGISTERS 3143 006501 301 POP B 3144 3145 ;CODE FOR SAVING THE RESULTS OF THESE FUNCTION READS IN THE 8080 RAM SPACE 3146 ;FOR NOW WE WILL SAVE THE RESULTS IN THE PLACE WHERE CRAM DATA IS KEPT 3147 006502 052 100 040 RCNOP: LHLD TMPB2 ;FETCH UP THE DATA THAT WAS ACTUALLY READ 3148 006505 174 MOV A,H ;GET LO ORDER PIECE TO ACCUM 3149 006506 002 STAX B ;STORE TO PLACE POINTED TO BY "D,E" 3150 006507 013 DCX B ;UPDATE THE STORAGE POINTER 3151 006510 175 MOV A,L ;GET HI ORDER PIECE OF CRAM DATA 3152 006511 002 STAX B ;SAVE IN STORAGE AREA 3153 006512 013 DCX B ;AGAIN DOWNDATE POINTER TO BEGINING OF ACTUAL 3154 3155 006513 034 INR E ;INCREMENT IT 3156 006514 173 MOV A,E ;COPY CURRENT COUNT TO ACCUM FOR THE COMPARE 3157 006515 376 020 CPI ^O20 ;REACHED MAX YET?? 3158 006517 302 045 015 JNZ RCLP ;BACK IF NOT YET.. 3159 3160 ;OTHERWISE 3161 006522 ENDCMD ;DONE... (1) 006522 311 RET ;RETURN TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-99 CMDS.M80 *** "EJ" CMD *** 3163 .SBTTL *** "EJ" CMD *** 3164 ;CONSOLE COMMAND TO DISPLAY THE FLOW OF THE CONTROL STORE BY PRINTING 3165 ;OUT THE CURRENT "J-FIELD", "NEXT LOC", "SUBROUTINE RET REG", & "CURRENT 3166 ; LOCATION" 3167 006523 EJCMD: RUN.. ;IS CPU RUNNING?? (1) 006523 347 RST 4 (1) 006524 006 .BYTE 6 3168 006525 041 170 015 LXI H,EJLST ;FIRST GET A PNTR TO ASCII TEXT 3169 006530 001 207 004 LXI B,^B10010000111 ;SET B=4 & C="10,00,01,11" 3170 3171 006533 171 EJLP: MOV A,C ;COPY DIAG FUNC STRING TO ACCUM 3172 006534 346 003 ANI 3 ;STRIP ALL BUT LO ORDER 2 BITS 3173 3174 006536 315 002 015 EJ1: CALL READC ;GO READ DIAG FUNC AS GIVEN BY ACCUM 3175 3176 006541 315 160 004 CALL PLN1 ;PRINT ASCII IDENTIFIER FOR THIS FUNC 3177 3178 006544 345 PUSH H ;SAVE "H,L" 3179 006545 315 327 030 CALL P16. ;AND GO PRINT IT AS 16 BIT OCTAL 3180 006550 PCHAR SPACE (1) 006550 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 006551 040 .BYTE SPACE ;CHAR TO PRINT 3181 006552 PCHAR SPACE (1) 006552 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 006553 040 .BYTE SPACE ;CHAR TO PRINT 3182 006554 341 POP H ;GET "H,L" BACK 3183 3184 006555 171 MOV A,C ;GET FUNCTION PICKER 3185 006556 017 RRC ;SHIFT FUNCTION LIST 3186 006557 017 RRC ; 2 PLACES 3187 006560 117 MOV C,A ;PUT BACK FUNCTION 3188 3189 006561 005 DCR B ;NOW DOWN THE COUNTER 3190 006562 302 133 015 JNZ EJLP ;AND JUMP TO THE EXECUTING CODE 3191 3192 006565 PCRLF ;AND A CR-LF (2) 006565 347 RST 4 (2) 006566 002 .BYTE 2 3193 ;ELSE.. END OF COMMAND 3194 006567 ENDCMD ;RETURN TO CALLER (1) 006567 311 RET ;RETURN TO CALLER 3195 3196 006570 103 125 122 EJLST: .ASCIZ %CUR/% ;FUNC 03 IS CURRENT CRAM LOCATION 3197 006575 116 130 124 .ASCIZ %NXT/% ;FUNC 01 IS NEXT LOC 3198 006602 112 057 000 .ASCIZ %J/% ;FUNC 00 IS J-FIELD 3199 006605 123 125 102 .ASCIZ %SUB/% ;FUNC 02 IS SUBROUTINE RETURN REG VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-100 CMDS.M80 *** "TR" CMD *** 3201 .SBTTL *** "TR" CMD *** 3202 ;THIS CONSOLE COMMAND TRACES THE FLOW OF THE MICRO-CODE BY TYPEING 3203 ;THE 4 KNOWN ADDRESSES FROM THE CONTROL RAM ADDRESS BRD, THEN ISSUEING 3204 ;A SINGLE CPU PULSE AND CONTINUING THIS UNTIL THE USER TYPES A 3205 ;CARRIAGE RETURN. 3206 006612 332 226 015 TRCMD: JC TR1 ;IF NO ARG, GO LIKE NORMAL 3207 006615 ARG16 ;IF WAS ARG, GO GET IT (1) 006615 347 RST 4 (1) 006616 004 .BYTE 4 3208 006617 152 040 .ADDR BRKDT ;PLACE TO PUT IT 3209 3210 006621 076 077 MVI A,^O77 ;NOW ANY ARBITRARY,NON-ZERO VALUE 3211 006623 062 151 040 STA BRKON ;TO SAY THAT BREAKING IS ON.. 3212 3213 006626 TR1: RUN.. ;IS CPU RUNNING?? (1) 006626 347 RST 4 (1) 006627 006 .BYTE 6 3214 006630 CLRB RPEND ;SO CAN CLR CMD CNTR 3215 006632 072 151 040 TR: LDA BRKON ;CHECK IF BREAK IS ON 3216 006635 247 ANA A ;CHECK FLAG 3217 006636 312 250 015 JZ TRLP ;IF ZERO,DONT LOOK AT BREAK STUFF 3218 006641 021 152 040 LXI D,BRKDT ;PASS PNTR TO THE DESIRED STOPPING ADDRESS 3219 006644 315 204 030 CALL BREAK ;IF FLAG SET, CALL TO CHECK ADDRESS 3220 006647 310 RZ ;IF RETURN WITH Z-SET, WE ARE AT BREAK PLACE 3221 3222 006650 315 271 015 TRLP: CALL PULSE ;GIVE PULSE 3223 006653 PCRLF ;CARRIAGE RETURN LINE FEED (2) 006653 347 RST 4 (2) 006654 002 .BYTE 2 3224 3225 006655 072 157 040 LDA RPEND ;GET CMD CNTR 3226 006660 247 ANA A ;IS IT SET?? 3227 006661 312 232 015 JZ TR ;WELL, CONT LOOP IF NOT YET 3228 ;OTHERWISE, END THE COMMAND 3229 006664 CLRB BRKON ;AND CLR THE FLAG 3230 006666 ENDCMD ;DONE.. (1) 006666 311 RET ;RETURN TO CALLER 3231 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-101 CMDS.M80 *** "PM" CMD *** 3233 .SBTTL *** "PM" CMD *** 3234 ;CONSOLE COMMAND TO "PULSE" "MICRO-CODE",..IE GIVE 3235 ;A SINGLE PULSE AND THEN AN "EJ" COMMAND.. 3236 ;COMMAND IS EQUIVILANT TO THE "TR" TRACE COMMAND, 3237 ;ONLY EXECUTING THE TRACE ONCE.. 3238 006667 PMCMD: RUN.. ;IS CLK RUNNING?? (1) 006667 347 RST 4 (1) 006670 006 .BYTE 6 3239 3240 006671 315 205 013 PULSE: CALL CP1 ;GO DO A SINGLE CLOCK 3241 006674 315 123 015 CALL EJCMD ;TYPE CONTROL STORE ADDRESSES & EXIT FROM THERE 3242 006677 ENDCMD ;AND OUT (1) 006677 311 RET ;RETURN TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-102 CMDS.M80 *** "EC" CMD *** 3244 .SBTTL *** "EC" CMD *** 3245 ;ROUTINE TO READ THE C-RAM AND TYPE IT OUT 3246 006700 ECCMD: RUN.. ;IS CPU RUNNING?? (1) 006700 347 RST 4 (1) 006701 006 .BYTE 6 3247 006702 332 322 015 JC EC2 ;IF NO ARG, DONT GO ASSEMBLE ONE 3248 006705 315 332 013 CALL LCCMD ;FETCH UP DESIRED CRAM ADDRESS 3249 3250 006710 EC1: CLRRM TMPB2 ;ZAP A TEMPORARY BUFFER (1) 006710 347 RST 4 (1) 006711 012 .BYTE 10. (1) 006712 105 040 .ADDR TMPB2+5 3251 3252 006714 315 335 014 CALL CRM.AD ;NOW WRITE DESIRED CRAM ADDRESS 3253 006717 315 205 013 CALL CP1 ;AND GIVE A SINGLE CLK PULSE TO LOAD CNTRL REG 3254 3255 006722 076 006 EC2: MVI A,06 ;SET UP "EXAMINE NEXT" TYPE COMMANDS 3256 006724 062 031 040 STA ENEXT ;SAVE EXAMINE STUFF IN RAM 3257 3258 ;NOW READY TO READ THE CONTROL REG 3259 006727 041 061 016 LXI H,RDLST ;GET PNTR TO DIAG FUNCTIONS TO BE READ 3260 3261 006732 176 ECLP: MOV A,M ;GET DIAG FUNCTION TO ACCUM 3262 006733 043 INX H ;UPDATE PNTR 3263 006734 247 ANA A ;WAS FNC END-OF-LIST(YES IF WAS MINUS) 3264 006735 372 364 015 JM ECBEE ;JMP IF WAS END OF LIST 3265 3266 ;OTHERWISE, WE MUST DO A DIAG FUNCTION 3267 006740 315 002 015 CALL READC ;GO READ THIS DIAG FUNC,DATA RETURNED IN "TMPB2" 3268 006743 042 170 040 SHLD ECSAV ;NOW SAVE "H,L" FOR A MINUTE 3269 3270 006746 041 100 040 LXI H,TMPB2 ;POINTER TO DATA JUST READ 3271 006751 315 045 031 CALL OCTAL ;NOW TURN DATA INTO ASCII OCTAL CHARS 3272 006754 002 .BYTE 2 ;TWO BYTES RELEVANT DATA 3273 006755 004 .BYTE 4 ;WANT 4 OCTAL CHARS 3274 3275 006756 052 170 040 LHLD ECSAV ;RESTORE THE "H,L" 3276 006761 303 332 015 JMP ECLP ;AND CONTINUE TILL READ ALL DIAG FUNCS VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-103 CMDS.M80 *** "EC" CMD *** 3278 ;WHEN U GET TO HERE, YOU'VE READ ALL FUNCS, NOW READ & CMP A & B COPIES 3279 006764 176 ECBEE: MOV A,M ;GET DIAG FUNC FOR AN "A" COPY 3280 006765 043 INX H ;UPDATE MEM PNTR 3281 006766 247 ANA A ;DID DIAG FUNC HAVE MINUS SIGN?? 3282 006767 372 032 016 JM PCRAM ;DONE LIST, JMP IF WAS MINUS 3283 ;OTHERWISE, GO AND READ THE "A" COPY AGAIN 3284 006772 315 002 015 CALL READC ;DATA RETURNED IN "TMPB2" 3285 006775 MOV5B ;MOVE THAT DATA TO 2ND TMP BUFF (1) 006775 347 RST 4 (1) 006776 000 .BYTE 0 3286 006777 100 040 .ADDR TMPB2 ;SRC OF DATA 3287 007001 073 040 .ADDR TMPBF2 ; PLACE TO PUT IT 3288 3289 007003 176 MOV A,M ;GET DIAG FUNC FOR A "B" COPY 3290 007004 043 INX H ;UPDATE PNTR 3291 007005 315 002 015 CALL READC ;NOW READ A "B" COPY 3292 3293 007010 345 PUSH H ;SAVE "H,L" 3294 007011 315 033 033 CALL CMP36 ;NOW COMPARE THE "A" AND "B" COPIES 3295 007014 100 040 .ADDR TMPB2 ;"B" COPY 3296 007016 073 040 .ADDR TMPBF2 ;"A" COPY 3297 007020 341 POP H ;RESTORE "H,L" 3298 007021 312 364 015 JZ ECBEE ;IF CHECKED OK, BACK TO READ NEXT "A/B" COPIES 3299 3300 ;FALL THRU TO VERIFY ERROR IF "Z" NOT SET 3301 007024 PLINE ECVER ;"?VERIFY ERR" (1) 007024 337 RST 3 ;PRINT LINE OF CHARS (1) 007025 104 037 .ADDR ECVER ;BUFF TO PRINT 3302 007027 303 041 015 JMP RCINT ;GO PRINT ALL CRAM REGS 3303 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-104 CMDS.M80 *** "EC" CMD *** 3305 ;IF "A/B" COPIES VERIFIED, TIME TO PRINT C-RAM CONTENTS 3306 007032 076 003 PCRAM: MVI A,03 ;DIAG FUNC TO READ "CURRENT CRAM LOCATION" 3307 007034 315 002 015 CALL READC ;GO READ CURRENT CRAM LOC.. 3308 007037 315 327 030 CALL P16. ;PRINT IT 3309 007042 PSLASH ; AND "/" (2) 007042 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 007043 057 .BYTE SLASH ;CHAR TO PRINT 3310 3311 ;NOW PRINT THE 32 OCTAL CHARS....... 3312 007044 006 040 MVI B,32. ;NUM CHARS TO PRINT 3313 007046 361 PCRLP: POP PSW ;GET A CHAR 3314 007047 315 010 004 CALL PCHR ;PRINT IT 3315 007052 005 DCR B ;DOWN COUNT OF CHARS PRINTED 3316 007053 302 046 016 JNZ PCRLP ;LOOP TILL DONE 3317 3318 007056 PCRLF ;NEED CR-LF (2) 007056 347 RST 4 (2) 007057 002 .BYTE 2 3319 3320 007060 ENDCMD ;THEN OUT (1) 007060 311 RET ;RETURN TO CALLER 3321 007061 017 RDLST: .BYTE ^O17 ;READ 84-95 3322 007062 016 .BYTE ^O16 ;READ 72-83 3323 007063 015 .BYTE ^O15 ;READ 60-71 3324 007064 014 .BYTE ^O14 ;READ 48-59 3325 007065 012 .BYTE ^O12 ;READ 36-47A 3326 007066 005 .BYTE ^O5 ;READ 24-35A 3327 007067 004 .BYTE ^O4 ;READ 12-23 3328 007070 000 .BYTE 0 ;READ 0-11 3329 007071 377 .BYTE ^O377 ;END BYTE 3330 007072 012 .BYTE ^O12 ;READ 36-47A 3331 007073 013 .BYTE ^O13 ;READ 36-47B 3332 007074 005 .BYTE ^O5 ;READ 24-35A 3333 007075 006 .BYTE ^O6 ;READ 24-35B 3334 007076 377 .BYTE ^O377 ;END BYTE 3335 3336 .SBTTL *** "EN" CMD *** 3337 007077 052 004 040 ENEC: LHLD CRMAD ;GET CURRENT ADDRESS 3338 007102 043 INX H ;UPDATE IT 3339 007103 042 004 040 SHLD CRMAD ;PUT IT BACK 3340 007106 303 310 015 JMP EC1 ;GO TO COMMON CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-105 CMDS.M80 *** "DC" CMD *** 3342 .SBTTL *** "DC" CMD *** 3343 .SBTTL *** "DN TO DC" CMD *** 3344 ;CODE USED IN DEPOSIT NEXT FOR THE CRAM 3345 007111 052 004 040 DNDC: LHLD CRMAD ;GET CURRENT ADDRESS 3346 007114 043 INX H ;INCREMENT IT 3347 007115 042 004 040 SHLD CRMAD ;PUT IT BACK 3348 3349 007120 DCCMD: RUN.. ;IS CPU RUNNING?? (1) 007120 347 RST 4 (1) 007121 006 .BYTE 6 3350 007122 315 242 031 CALL ARG96 ;ASSEMBLE DATA TO DEPOSIT 3351 007125 322 040 .ADDR CRMTM ;PLACE TO PUT IT 3352 3353 007127 021 302 040 LXI D,CRMBF ;PLACE TO PUT THE RESULTS OF THE CRAM SHUFFLE 3354 007132 041 322 040 LXI H,CRMTM ;THE OLD 12-BYTE FORMAT WILL ALWAYS BE HERE 3355 007135 016 004 MVI C,4 ;LOAD "C" WITH A 4 3356 3357 ;BEGIN THE UNPACKING 3358 007137 315 075 032 GENLP: CALL PLACE ;LOCAL ROUTINE THAT TAKES 12 BITS OF 24. 3359 007142 076 003 MVI A,3 ;A SHIFT 24 REQUIRES 3 BYTES OF DATA TO SHIFT 3360 007144 315 171 031 CALL SHR24 ;SHIFT 12 BITS JUST PACKED INTO OUTER SPACE 3361 007147 014 .BYTE 12. ;TELL ROUTINE 12 PLACES 3362 007150 315 075 032 CALL PLACE ;NOW ROUTINE WILL GET 12 MORE BITS..12+12=24 3363 3364 007153 043 INX H ;UPDATE PNTR 3-BYTES(IE 24 BITS) 3365 007154 043 INX H 3366 007155 043 INX H 3367 3368 007156 015 DCR C ;DOWN THE COUNTER(THERE ARE 4 GROUPS OF 24=96) 3369 007157 302 137 016 JNZ GENLP ;CONTINUE TILL DONW THE 4 GROUPS 3370 3371 007162 315 335 014 CALL CRM.AD ;WRITE THE CRAM ADDRESS 3372 007165 041 302 040 LXI H,CRMBF ;GET PLACE WHERE INFO WAS JUST PLACED 3373 3374 007170 076 006 MVI A,06 ;NUMBER FOR DEPOSIT NEXT TO USE 3375 007172 062 033 040 STA DNEXT ;STANDARD PLACE TO KEEP IT 3376 007175 074 INR A ;SET FUNCTION .EQ. 7(INR WORKS BY LUCK) 3377 007176 001 010 040 LXI B,CRMFN ;SET AN ADDRESS INTO "B,C" REGISTER,TO USE AS A POINTER 3378 007201 002 DCLP: STAX B ;SAVE IT IN THE RAM AT LOC "CRMFN" 3379 3380 007202 136 MOV E,M ;GET 8 BITS OF DATA 3381 007203 043 INX H ;UPDATE PNTR 3382 007204 126 MOV D,M ;GET 4 MORE BITS OF DATA 3383 007205 043 INX H ;AND UPDATE PNTR AGAIN 3384 3385 007206 353 XCHG ;NOW "H,L" CONTAINS THE DATA & "D,E" THE PNTR 3386 007207 315 303 014 CALL WFUNC ;AND DIAG FUNCTION WRT 3387 007212 353 XCHG ;POINTER BACK TO "H,L" 3388 3389 007213 012 LDAX B ;GET PARTICULAR DIAG FUNC FROM RAM LOC 3390 007214 075 DCR A ;DOWN TO NEXT 3391 007215 362 201 016 JP DCLP ;AS LONG AS 0-7, KEEP GOING 3392 007220 ENDCMD ;NOW ALL DONE (1) 007220 311 RET ;RETURN TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-106 CMDS.M80 *** "SM" CMD *** 3394 .SBTTL *** "SM" CMD *** 3395 ;CODE TO START THE MICRO-CODE AT THE ADDRESS SPECIFIED.. 3396 ;DEFAULTS TO STARTING AT C-RAM LOC 0 IF NO ADDRESS IS 3397 ;GIVEN 3398 007221 332 232 016 SMCMD: JC SM1 ;IF NO ARG, SUPPLY ADDRESS OF 0000 3399 3400 ;OTHERWISE MUST ASSEMBLE THE GIVEN ADDRESS 3401 007224 315 257 030 CALL ARG16. ;ASSEMBLE 16-BITS OF ARGUMENT 3402 3403 007227 303 235 016 JMP SM1.5 ;OTHERWISE, CONTINUE NORMALLY 3404 3405 007232 041 000 000 SM1: LXI H,00 ;IF HERE, DESIRE ADDRESS OF 0000 3406 007235 042 000 040 SM1.5: SHLD T80DT ;SET ADDR 3407 3408 007240 315 231 005 CALL MRCMD ;RESET THE MACHINE 3409 3410 007243 MOV5B ;SET UP INITIAL DATA (1) 007243 347 RST 4 (1) 007244 000 .BYTE 0 3411 007245 271 022 .ADDR ONES ;DATA TO BE IS ALL ONES 3412 007247 047 040 .ADDR DMDAT ;PLACE WHERE IT GOES 3413 3414 007251 021 004 017 LXI D,MAD000 ;GET ADDRESS OF MEM LOC 0 3415 007254 315 240 012 CALL DMINT ;"DEPOSIT MEMORY" INTERNAL FORMAT 3416 3417 007257 072 354 040 LDA PARBT ;GET PARITY STUFF 3418 007262 346 140 ANI ^O140 ;ONLY KEEP A LITTLE BIT 3419 007264 323 100 OUT RESET ;AND TURN OF ALL PARITY STUFF WHILE WE DO THIS 3420 3421 007266 052 000 040 LHLD T80DT ;GET START ADDRESS OF MICRO-CODE TO "H,L" 3422 007271 315 340 014 CALL CADWR ;WRITE THE DIAG ADDRESS REG 3423 3424 007274 315 234 014 CALL CSCMD ;START THE CPU CLK FREE RUN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-107 CMDS.M80 *** "SM" CMD *** 3426 007277 315 276 033 HLTCM: CALL DELAY. ;NOW WAIT FOR MICRO-CODE TO REACH HALT LOOP 3427 007302 377 .BYTE -1 3428 007303 315 352 006 CALL CLRUSE ;EXIT FROM USER MODE 3429 007306 333 300 IN RUNFP ;***** I/O RD 300 ***** 3430 007310 057 CMA ;AND FIX INVERSION 3431 007311 346 010 ANI ^O10 ;IS CPU IN THE HALT LOOP??? 3432 007313 302 325 016 JNZ SMVER ;JUMP IF YES..APPEARED TO START OK 3433 3434 ;FALL TO HERE IF SM10 DID NOT SET HALT LOOP FLAG 3435 007316 PLINE SMERR ;PRINT ERR MESSAGE (1) 007316 337 RST 3 ;PRINT LINE OF CHARS (1) 007317 146 037 .ADDR SMERR ;BUFF TO PRINT 3436 007321 067 STC ;SET C-BIT TO INDICATE AN ERROR EXIT 3437 007322 303 376 016 JMP SMFINI ;AND EXIT VIA RESTORE PARITY PATH VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-108 CMDS.M80 *** "SM" CMD *** 3439 007325 SMVER: INTON ;SET INTERAL STATUS FOR THE EXAMINE (1) 007325 327 RST 2 ;GO SET INTERNAL MODE 3440 007326 EXAM 0 ;EXAMINE MEM LOC 0(MICRO-CODE STOP CODE) (1) 007326 315 231 030 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS (1) 007331 000 000 .ADDR 0 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 3441 007333 INTOFF ;TURN OFF INTERNAL STATUS (1) 007333 367 RST 6 ;GO EXIT FROM INTERNAL MODE 3442 ;IT DID SUCCEED IN SETTING HALT LOOP FLAG, SO MERELY PRINT HALTED 3443 ;AND THE DATA IN LOCATION 0.. 3444 ;****SUBROUTINE "STOP CODE" **** 3445 007334 315 266 032 CALL SETRN ;JUST A LITTLE KLUDGE..CHEAP WAY TO FIX STATE LIGHT 3446 ; IF PROGRAM EXECUTED A "HALT" WHILE LITES WERE BLINKY 3447 3448 007337 PLINE HLTMS ;PRINT "HALTED" MESSAGE (1) 007337 337 RST 3 ;PRINT LINE OF CHARS (1) 007340 116 037 .ADDR HLTMS ;BUFF TO PRINT 3449 007342 041 012 040 LXI H,EMBUF ;PNTR TO DATA IN LOC 0 3450 007345 315 031 031 CALL P18 ;PRINT RIGHT HALF OF 36-BIT DATA 3451 007350 CLRB CHKHLT ;SET FLAG TO SAY WEVE TYPED HALTED ALREADY 3452 3453 007352 PSPACE ;PRINT A SPACE (2) 007352 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 007353 040 .BYTE SPACE ;CHAR TO PRINT 3454 007354 PSPACE ;AND ANOTHER (2) 007354 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 007355 040 .BYTE SPACE ;CHAR TO PRINT 3455 007356 PCCOM: INTON ;SET INTERNAL MODE (1) 007356 327 RST 2 ;GO SET INTERNAL MODE 3456 007357 EXAM 1 ;EXAMINE WORD WHICH HOLDS THE PC (1) 007357 315 231 030 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS (1) 007362 001 000 .ADDR 1 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 3457 007364 INTOFF ;CLR INTERNAL MODE (1) 007364 367 RST 6 ;GO EXIT FROM INTERNAL MODE 3458 007365 PLINE PCMSG ;PRINT "PC/" (1) 007365 337 RST 3 ;PRINT LINE OF CHARS (1) 007366 112 037 .ADDR PCMSG ;BUFF TO PRINT 3459 007370 315 362 030 CALL P36. ;AND PRINT THE PC 3460 007373 PCRLF ;PRINT CARRIAGE RETURN LINE-FEED (2) 007373 347 RST 4 (2) 007374 002 .BYTE 2 3461 007375 247 ANA A ;CLEAR THE C-BIT 'CAUSE ALL OK 3462 3463 ;AND BEFORE WE LEAVE,RESTORE THE PARITY STUFF 3464 007376 072 354 040 SMFINI: LDA PARBT ;GET CURRENT PARITY DEFAULTS 3465 007401 323 100 OUT RESET ;RESTORE THE PARITY DETECTS 3466 007403 311 RET ;AND OUT 3467 007404 ZEROES: 3468 007404 MAD000: D 0,0,,0,0 ;MEMORY ADDRESS 0 3469 ; FROM MEMORY LOCATION 0 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-109 CMDS.M80 *** "PE" CMD *** 3471 .SBTTL *** "PE" CMD *** 3472 ;COMMAND TO ENABLE VARIOUS PARITY CHECKS NORMALLY MADE BY THE 8080.. 3473 ;ACCEPTABLE PARITY COMMANDS ARE: 3474 ; PE 0 ;"DISABLE" ALL PARITY DETECTION 3475 ; PE 1 ;"ENALE" "DP" PARITY DETECT 3476 ; PE 2 ;"ENABLE" "CRM" PARITY DETECTION 3477 ; PE 4 ;"ENABLE" "PE" PARITY DET(CLK FREEZE ON PAR ERR) 3478 ; PE 7 ;"ENABLE" ALL 3479 ;BITS ARE WEIGHTED FOR THE THREE TYPES OF PARITY ERRORS 3480 007411 332 040 017 PECMD: JC PARDIS ;COMMAND REQUIRES ARG 3481 3482 007414 315 257 030 CALL ARG16. ;ASSEMBLE TYPED ARG 3483 3484 007417 175 MOV A,L ;GET NUMBER TYPED INTO THE ACCUM 3485 007420 346 007 ANI ^O7 ;KEEP ONLY APPROPRIATE BITS 3486 007422 027 RAL ;BIT 0 INTO BIT1 3487 007423 027 RAL ;BIT 0 INTO BIT 2 3488 007424 027 RAL ; INTO BIT 3 3489 007425 027 RAL ; INTO BIT 4 3490 3491 007426 157 MOV L,A ;SAVE IN L 3492 007427 072 354 040 LDA PARBT ;NOW GET CURRENT STATUS 3493 007432 346 217 ANI ^O217 ;OFF THE OLD CRUMMY PARITY 3494 007434 265 ORA L ;THROW IN THESE NEW BITS 3495 3496 007435 303 362 013 JMP KS.PAR ;SAVE IN RAM PLACE & WRITE TO KS 3497 3498 3499 ;THIS IS THE CODE FOR IF WE WANT TO DISPLAY THE PARITY 3500 007440 072 354 040 PARDIS: LDA PARBT ;GET THE CURRENT PARITY STATUS 3501 007443 346 160 ANI ^O160 ;CLR CRUD, JUST SAVING PARITY BITS 3502 007445 037 RAR ;ROTATE TO JUSTIFY THE BITS AT BIT 0 3503 007446 037 RAR 3504 007447 037 RAR 3505 007450 037 RAR 3506 3507 007451 315 317 030 P8CRLF: CALL P8BITA ;AND GO PRINT THOSE 8 BITS 3508 007454 PCRLF ;TERMINATE ALL WITH A CR-LF (2) 007454 347 RST 4 (2) 007455 002 .BYTE 2 3509 007456 ENDCMD ;ALL DONE (1) 007456 311 RET ;RETURN TO CALLER 3510 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-110 CMDS.M80 *** "EX" CMD *** 3512 .SBTTL *** "EX" CMD *** 3513 ;CONSOLE COMMAND TO EXECUTE A SINGLE SM10 "TEN ORDER" INSTRUCTION 3514 3515 007457 EXCMD: ARG36 ;GO ASSEMBLE THE INSTR TO BE EXECUTED (1) 007457 347 RST 4 (1) 007460 010 .BYTE 8 3516 007461 012 040 .ADDR EMBUF ;PLACE TO PUT IT 3517 3518 007463 021 012 040 EXINTM: LXI D,EMBUF ;POINTER TO INSTR INTO "D,E" 3519 3520 007466 315 154 033 EXINT: CALL WDATP ;***** I/O WRT 102,104,106,101,112 ***** 3521 3522 007471 076 002 MVI A,2 ;SET BIT FOR "I/O DATA CYCLE" 3523 007473 323 114 OUT DTARB ;***** I/O WRT 114/2 ***** 3524 3525 007475 076 003 MVI A,3 ;BITS FOR "EXECUTE" & "CONTINUE" 3526 007477 323 212 OUT CPUCTL ;***** I/O WRT 212/3 ***** 3527 3528 007501 000 DNF: NOP 3529 007502 000 NOP ;WAIT 3530 3531 007503 333 300 IN RUNFP ;***** I/O RD 300 ***** 3532 007505 057 CMA ;FIX INVERSION 3533 007506 346 001 ANI 1 ;IS CONTINUE STILL SET?? 3534 007510 310 RZ ;IF CLR, WE ARE OK... 3535 3536 ;IF CONT STILL SET, WE HAVE AN ERROR 3537 007511 PLINE EXMS ;ERR MESSAGE "?DNF-DID NOT FINISH" (1) 007511 337 RST 3 ;PRINT LINE OF CHARS (1) 007512 125 037 .ADDR EXMS ;BUFF TO PRINT 3538 007514 315 352 006 CALL CLRUSE ;EXIT FROM USER MODE 3539 007517 057 CMA ;ACCUM NOW .EQ. -1 3540 007520 247 ANA A ;SET FLAGS, SO "JNZ" WILL JUMP 3541 007521 311 RET ;AND RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-111 CMDS.M80 *** "ST" CMD *** 3543 .SBTTL *** "ST" CMD *** 3544 ;CONSOLE COMMAND TO ISSUE A START TO THE CPU 3545 007522 315 121 013 STCMD: CALL LACMD ;FIRST GO ASSEMBLE A LEGAL ADDRESS AT WHICH TO START 3546 007525 MOV5B ;MOVE TO TMP BUFF SO DONT KILL "MEMAD" (1) 007525 347 RST 4 (1) 007526 000 .BYTE 0 3547 007527 017 040 .ADDR MEMAD ;SRC 3548 007531 073 040 .ADDR TMPBF2 ;TEMP PLACE TO KEEP IT 3549 3550 3551 007533 STINT: CLRRM DMDAT ;MUST CLR COMM WORDS BEFORE WE START (1) 007533 347 RST 4 (1) 007534 012 .BYTE 10. (1) 007535 054 040 .ADDR DMDAT+5 3552 3553 007537 DEPOS 31 ;CLEAR LOC 31(KEEP ALIVE WORD) (1) 007537 247 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE (1) 007540 315 232 030 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR (1) 007543 031 000 .ADDR 31 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 3554 007545 DEPOS 32 ;CLEAR LOC 32(THE TTY INPUT WORD) (1) 007545 247 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE (1) 007546 315 232 030 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR (1) 007551 032 000 .ADDR 32 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 3555 007553 DEPOS 33 ;AND 33(THE TTY OUTPUT WORD) (1) 007553 247 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE (1) 007554 315 232 030 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR (1) 007557 033 000 .ADDR 33 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 3556 3557 007561 041 140 005 LXI H,^O2540 ;LOAD "H,L" WITH "JRST" OPCODE 3558 007564 042 076 040 SHLD TMPBF2+3 ;AND PUT INTO THE BUFFER WHERE THE ADDR IS 3559 3560 007567 021 073 040 LXI D,TMPBF2 ;NOW SET POINTER TO THE INSTR 3561 007572 315 066 017 CALL EXINT ;AND GO HANDLE JUST LIKE AN EXECUTE 3562 007575 300 RNZ ;IF NON ZERO, THE EXECUTE FAILED 3563 3564 007576 LONG.DELAY 1 ;NOW WAIT (1) 007576 041 310 000 LXI H,200. * 1 ;SET UP THE TIMING COUNT IN H,L REG (1) 007601 315 154 014 CALL LTLOOP ;AND GO DELAY ABOUT 1 SECOND FOR EACH (300 COUNT) 3565 3566 ;AND NOW FALL INTO THE "CONTINUE" COMMAND VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-112 CMDS.M80 *** "CO" CMD *** 3568 .SBTTL *** "CO" CMD *** 3569 ;CONSOLE COMMAND TO ISSUE CONTINUE TO CPU 3570 007604 315 023 007 COCMD: CALL SETUSE ;ENTER USER MODE 3571 007607 076 005 MVI A,^O5 ;SET BITS FOR "CONTINUE" & "RUN" 3572 007611 323 212 OUT CPUCTL ;***** I/O WRT 212/5 ***** 3573 007613 062 231 040 COINT: STA CHKHLT ;AND GAURANTEE THAT ANY FAST HALTS WILL GET REPORTED 3574 3575 007616 PLINE KSPRMT ;WANT TO TELL USER WHEN WE SWITCH MODES (1) 007616 337 RST 3 ;PRINT LINE OF CHARS (1) 007617 053 037 .ADDR KSPRMT ;BUFF TO PRINT 3576 007621 PLINE U ;SAY "USER MODE" (1) 007621 337 RST 3 ;PRINT LINE OF CHARS (1) 007622 012 007 .ADDR U ;BUFF TO PRINT 3577 3578 ;AND JUMP OFF TO COMMON CODE THAT CHECKS THE CONTINUE BIT 3579 ;AND ERRS IF CONTINUE HAS NOT BEEN CLEARED BY THE CPU 3580 007624 303 101 017 JMP DNF ;GO.... VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-113 CMDS.M80 *** "HA" CMD *** 3582 .SBTTL *** "HA" CMD *** 3583 ;CONSOLE COMMAND TO HALT THE SM10 CPU..CPU MICRO-CODE SHOULD ENTER 3584 ;THE HALT LOOP 3585 007627 257 HACMD: XRA A ;CLR ACCUM FOR "RUN","EXECUTE" & "CONTINUE" 3586 007630 323 212 OUT CPUCTL ;*****I/O WRT 212/0 ***** 3587 007632 303 277 016 JMP HLTCM ;AND FINISHES UP JUST LIKE "SM" COMMAND 3588 3589 .SBTTL *** "SH" CMD *** 3590 ;COMMAND TO CAUSE THE TOPS20 MONITOR TO BEGIN AN ORDERLY SYSTEM SHUTDOWN 3591 007635 SHCMD: MOV5B ;MOVE US SOME DATA (1) 007635 347 RST 4 (1) 007636 000 .BYTE 0 3592 007637 053 001 .ADDR .DSBASE ;FROM HERE (0,,776700) 3593 007641 047 040 .ADDR DMDAT ;TO HERE. PLACE FOR DEPOSIT TO FIND IT 3594 3595 007643 DEPOS 30 ;AND DO IT (1) 007643 247 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE (1) 007644 315 232 030 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR (1) 007647 030 000 .ADDR 30 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 3596 007651 315 023 007 CALL SETUSE ;NOW BE SURE WE ENTER THE USER MODE AGAIN 3597 007654 006 200 MVI B,^O200 ;SET SIGN BIT, CAUSES "KEEP-ALIVE" TO BE IGNORED 3598 007656 315 337 032 CALL STATEM ;GO DO THE STUFF 3599 007661 377 .BYTE ^O377 ;WITHOUT CHANGING THINGS 3600 007662 303 213 017 JMP COINT ;AND GO BACK TO USER MODE TO WATCH MONITOR "SHUTDOWN" VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-114 CMDS.M80 *** "KL" CMD *** 3602 .SBTTL *** "KL" CMD *** 3603 ;KLINIK COMMAND 3604 007665 332 320 017 KLCMD: JC KLDIS ;DISPLAY CURRENT STATE IF NOTHING TYPED 3605 3606 ;ELSE ASSEMBLE THE TYPED IN ARG 3607 007670 315 257 030 CALL ARG16. ;PERMIT 16 BIT WIDE TYPE IN 3608 3609 ;NOW VERIFY THAT LOWER HALF IS A LEGAL NUMBER 3610 007673 175 MOV A,L ;LO HALF TO ACCUM 3611 007674 247 ANA A ;SET CONDITION CODES 3612 007675 312 304 017 JZ KLOFF ;IF TYPED ZERO, GO TURN OFF KLINIK 3613 3614 ;NOW FALL THRU HERE IF .EQ. 1, MUST TURN ON THE KLINIK 3615 007700 062 300 040 STA KLLINE.ON ;SET BIT TO SAY THAT KLINIK IS ON 3616 007703 311 RET ;AND OUT 3617 007704 062 300 040 KLOFF: STA KLLINE.ON ;GET HERE IF ACCUM WAS ZERO.. ZAP THE KLINIK FLAG 3618 3619 ;AND FALL INTO CODE TO SEE IF THE END OF KLINIK MUST FORCE A CHANGE IN THE 3620 ;STATE OF THE KLINIK LINE AND USER. IE IF IN MODE 3, WE MUST FORCE USER 3621 ;INTO MODE 2 3622 007707 072 247 040 LDA CSLMODE ;GET CURRENT MODE 3623 007712 376 010 CPI .MODE3 ;IS IT MODE 3?? 3624 007714 314 103 034 CZ SETM2 ;SET MODE 2 IF NOT IN THERE 3625 007717 311 RET ;AND OUT 3626 3627 ;HERE IF JUST WANT TO DISPLAY CURRENT KLINIK STATE 3628 007720 072 300 040 KLDIS: LDA KLLINE.ON ;GET CURRENT VALUE 3629 007723 247 ANA A ;SET FLAGS 3630 007724 303 375 013 JMP CHOOSE ;GO DISPLAY THE APPROPRIATE MESSAGE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-115 CMDS.M80 *** "TT" CMD *** 3632 .SBTTL *** "TT" CMD *** 3633 007727 315 023 007 TTCMD: CALL SETUSE ;ON THIS COMMAND WE DESIRE THAT THE CTY ENTER USER MODE 3634 007732 PLINE KSPRMT ;"KS10>" (1) 007732 337 RST 3 ;PRINT LINE OF CHARS (1) 007733 053 037 .ADDR KSPRMT ;BUFF TO PRINT 3635 007735 PLINE U ; "USR MOD" (1) 007735 337 RST 3 ;PRINT LINE OF CHARS (1) 007736 012 007 .ADDR U ;BUFF TO PRINT 3636 007740 303 103 034 JMP SETM2 ;SIMPLE TRANSFER OF KLINIK LINE TO MODE 2 3637 3638 3639 .SBTTL *** "PW" CMD *** 3640 ;COMMAND FOR SETTING A PASSWORD INTO THE 8080, SO THAT THE KLINIK LINE 3641 ;USER WILL HAVE SOMETHING TO MATCH AGAINST WHEN HE TRIES TO GET INTO THE SYSTEM 3642 007743 076 000 PWCMD: MVI A,0 ;ON ANY PASSWORD COMMAND, FORCE A RE-EXAMINE OF 3643 007745 062 124 040 STA KLNKSW ;OF THE KLINIK MODE 3644 3645 ;NOW DO THE NORMAL STUFF U NEED TO DO WITH THIS COMMAND 3646 007750 332 010 020 JC PW.CLR ;IF NO PW TYPED, GO CLR PASSWORD 3647 3648 ;FALL THRU ELSE.. IE MUST SET THE PASSWORD 3649 007753 052 223 040 PW.SET: LHLD .ARG1 ;GET POINTER TO THE TYPE-IN BUFFER 3650 007756 021 262 040 LXI D,PASSWORD ;POINT TO THE BUFFER AREA WHERE THE PASSWORD WILL BE 3651 007761 006 372 MVI B,-6 ;SET A MAX COUNT FOR THE LENGTH OF THE PASSWORD 3652 3653 007763 176 PW.LOOP: MOV A,M ;COPY A PASSWORD CHARACTER TO THE ACCUM 3654 007764 376 377 CPI EOLCH ;IS IT END OF LINE?? 3655 007766 310 RZ ;IF YES,SIMPLE RETURN 3656 3657 ;FALL TO HERE IF MORE TO BE MOVED 3658 007767 315 220 006 CALL UP.LO ;UPPER CASE ONLY 3659 007772 022 STAX D ;MOVE A CHARACTER TO THE SAVE BUFFER 3660 007773 023 INX D ;UPDATE DESTINATION POINTER 3661 007774 043 INX H ;UPDATE SOURCE POINTER 3662 007775 004 INR B ;UPDATE CHARACTER COUNT 3663 007776 302 363 017 JNZ PW.LOOP ;STAY IN THE LOOP 3664 3665 ;FALL THRU WHEN DONE 6 CHRACTERS.. THAT HAD BETTER BE ALL, ELSE ERROR 3666 010001 176 MOV A,M ;GET 7TH CHARACTER 3667 010002 376 377 CPI EOLCH ;IT BETTER BE END 3668 010004 310 RZ ;IF YES, WAS END OF LINE, THEN OK TO RETURN 3669 3670 ;FALL THRU WHEN USER TYPED TOO MANY CHARACTERS 3671 010005 PLINE PWLEN ;ERR MESSAGE (1) 010005 337 RST 3 ;PRINT LINE OF CHARS (1) 010006 344 037 .ADDR PWLEN ;BUFF TO PRINT 3672 010010 PW.CLR: CLRRM PASSWORD+1 ;CLEAR 5 BYTES OF THE 6 BYTE BUFFER (1) 010010 347 RST 4 (1) 010011 012 .BYTE 10. (1) 010012 270 040 .ADDR PASSWORD+1+5 3673 010014 053 DCX H ;POINTER CAME OUT GOOD 3674 010015 066 000 MVI M,0 ;CLR THE 6TH BYTE OF THE BUFFER 3675 010017 311 RET ;THAT'S ALL 3676 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-116 CMDS.M80 *** "MK" & "UM" CMD *** 3678 .SBTTL *** "MK" & "UM" CMD *** 3679 ;CONSOLE COMMAND TO MARK AND UMARK SPECIFIED MICRO-CODE LOCATIONS 3680 010020 016 000 UMCMD: MVI C,0 ;WE ARE CLEARING THE MARK BIT.. 3681 010022 303 027 020 JMP MRKCM ;AND GO SAVE IT AS A FLAG FOR WHAT WE ARE DOING 3682 3683 010025 016 001 MKCMD: MVI C,1 ;A BIT SAYS WE ARE SETTING THE MARK BIT 3684 010027 305 MRKCM: PUSH B ;SAVE "B,C", IT HAS DATA FOR SET OR CLEAR 3685 010030 RUN.. ;IS CPU RUNNING?? (1) 010030 347 RST 4 (1) 010031 006 .BYTE 6 3686 010032 315 332 013 CALL LCCMD ;"C-BIT" IS CLR..GO ASSEMBLE A LEGAL RAM-ADDRESS 3687 010035 315 335 014 CALL CRM.AD ;SET DIAGNOSTIC ADDRESS REG 3688 010040 315 205 013 CALL CP1 ;GIVE SINGLE PULSE TO GET DATA WHERE I CAN READ 3689 3690 010043 076 017 MVI A,^O17 ;GET FUNCTION READ FOR CRAM DATA THAT INCLUDES MRK 3691 010045 315 002 015 CALL READC ;DO THE DIAGNOSTIC FUNCTION READ 3692 010050 315 335 014 CALL CRM.AD ;SET DIAGNOSTIC ADDRESS REG 3693 010053 021 100 040 LXI D,TMPB2 ;GET PNTR TO DATA THAT HAS THE MARK BIT 3694 010056 301 POP B ;GET INSTR TYPE 3695 3696 010057 032 LDAX D ;GET THE ACTUAL DATA 3697 010060 346 376 ANI ^O376 ;CLEAR BIT 0 3698 010062 261 ORA C ;NOW EITHER SET OR CLEAR THE BIT 3699 3700 010063 022 MRKRT: STAX D ;BUT DATA BACK, NEW MARK BIT STATUS 3701 3702 010064 315 207 033 CALL ADATP ;WRITE DATA TO BUS REG 3703 3704 010067 076 007 MVI A,7 ;NOW WISH TO DO FUNCTION WRITE 7 3705 010071 062 010 040 STA CRMFN ;SET INTO FUNC WORD 3706 3707 010074 303 311 014 JMP WFNC1 ;AND FINISH UP BY WRITING DATA BACK VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-117 CMDS.M80 *** "ZM" CMD *** 3709 .SBTTL *** "ZM" CMD *** 3710 ;CONSOLE COMMAND TO ZERO THE SM10 MOS MEMORY.. 3711 010077 ZMCMD: CLRRM MEMAD ;CLEAR MEMORY ADDRESS BUFFER(TO START AT 0) (1) 010077 347 RST 4 (1) 010100 012 .BYTE 10. (1) 010101 024 040 .ADDR MEMAD+5 3712 010103 076 002 MVI A,2 ;BITS TO SAY WRITE TYPE FUNCTION 3713 010105 062 023 040 STA MEMAD+4 ;WRITE INTO THE BUFFER 3714 3715 010110 CLRRM DMDAT ;DATA TO DEPOSIT IS ALL ZEROES (1) 010110 347 RST 4 (1) 010111 012 .BYTE 10. (1) 010112 054 040 .ADDR DMDAT+5 3716 3717 010114 INTON ;INTERNAL MODE ON (1) 010114 327 RST 2 ;GO SET INTERNAL MODE 3718 010115 315 231 012 CALL DM1 ;DEPOSIT ZEROES INTO FIRST LOCATION 3719 010120 315 066 033 ZM1: CALL INC36 ;TO NEXT ADDRESS 3720 010123 017 040 .ADDR MEMAD ;HERE IT IS 3721 3722 010125 021 017 040 LXI D,MEMAD ;DO PART OF THE DEPOSIT HERE, FOR SPEED SAKE 3723 010130 315 207 033 CALL ADATP ;LOAD UP BUS REGS WITH THE DESIRED DATA 3724 010133 076 004 MVI A,4 ;NOW FUNCTION TYPE BIT INTO ACCUM 3725 010135 323 115 OUT BUSARB ;***** I/O WRT ***** 3726 3727 010137 315 275 012 CALL DMGO ;NOW GO DO THE DEPOSIT 3728 3729 ;AND CHECK TO SEE IF GOT A NXM 3730 010142 072 154 040 LDA ERRCD ;GET ERROR CODE.. 3731 010145 247 ANA A ;CHECK IF SET 3732 010146 312 120 020 JZ ZM1 ;IF NO ERRORS YET, KEEP GOING 3733 3734 ;FALL THRU WHEN HAD "NO DATA ACNOWLEDGE" ERROR 3735 010151 INTOFF ;CLEAR INTERNAL MODE (1) 010151 367 RST 6 ;GO EXIT FROM INTERNAL MODE 3736 010152 ENDCMD ;AND DONE (1) 010152 311 RET ;RETURN TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-118 CMDS.M80 *** "RP" CMD *** 3738 .SBTTL *** "RP" CMD *** 3739 3740 ;NOTE: THE LIST OF SAVED COMMAND DISPATCHES IS NOT IN THE NORMAL 8080 3741 ;ADDRESS FORMAT..IE THE COMMAND LIST IS SAVE IN PAIRS OF BYTES AS 3742 ;HI ORDER PIECE FIRST.. 3743 ;LO ORDER PIECE SECOND.. 3744 010153 322 200 020 RPCMD: JNC RP1 ;IF ARG, BEGIN AT A SPECIAL PLACE 3745 010156 257 XRA A ;CLR ACCUM 3746 010157 062 160 040 RP0: STA RPCNTR ;THERE IS NO REPEAT COUNT 3747 010162 315 322 020 CALL RPFOO ;IN THE BEGINNING YOU MUST RESET THE POINTERS 3748 010165 257 XRA A ;CLR ACCUM 3749 010166 062 157 040 STA RPEND ;CLR THE REPEAT KILLER 3750 010171 057 CMA ;MAKE ACCUM .EQ. -1 3751 010172 062 213 040 STA RPTON ; THAT REPEAT FUNCTION IS TURNED ON 3752 010175 303 224 020 JMP RP2 ;CONTINUE... 3753 3754 010200 315 257 030 RP1: CALL ARG16. ;FETCH THE ARG THAT WAS TYPED 3755 3756 010203 174 MOV A,H ;IT MUST ONLY BE 256 OR LESS 3757 010204 247 ANA A ;SET PROCESSOR FLAGS 3758 010205 302 163 032 JNZ KILNM ;IF .GT. 256, THEN BAD NUMBER 3759 3760 ;FALL THRU IF ACCUM 0 3761 010210 175 MOV A,L ;GET REAL ARG INTO ACCUM 3762 010211 074 INR A ;SET ACCUM 1 GREATER THAN ACTUAL 3763 010212 303 157 020 JMP RP0 ;CONTINUE BY INITING FLAGS 3764 3765 010215 072 157 040 RPTRTN: LDA RPEND ;NEXT THING IS TO SEE IF TIME TO STOP REPEAT 3766 010220 247 ANA A ;TEST DATA 3767 010221 302 262 020 JNZ RP.OUT ;AND END THE REPEAT IF "END" FLAG IS SET VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-119 CMDS.M80 *** "RP" CMD *** 3769 010224 052 211 040 RP2: LHLD RPLST ;GET POINTER TO COMMAND DISPATCH LIST 3770 010227 176 MOV A,M ;CHECK BYTE..MAKE SURE ITS NOT THE END-OF-LIST 3771 010230 074 INR A ;IF IT WAS -1, NOW ITS A ZERO 3772 010231 302 267 020 JNZ RP4 ;AND GO BACK TOO 3773 3774 010234 072 160 040 LDA RPCNTR ;CHECK IF THIS IS A COUNTED REPEAT 3775 010237 314 322 020 CZ RPFOO ;IT WAS END OF LIST IF U GOT HERE, SO FIX POINTERS 3776 010242 247 ANA A ;SET FLAGS 3777 010243 312 215 020 JZ RPTRTN ;IF .EQ. 0 NO COUNT ON THE REPEAT 3778 3779 010246 075 DCR A ;THERE IS A COUNTER, DOWN IT 3780 010247 062 160 040 STA RPCNTR ;SAVE NEW COUNT 3781 010252 376 001 CPI 1 ;SEE IF AT BOTTOM LINE 3782 010254 304 322 020 CNZ RPFOO ;IF A COUNTED REPEAT, FIX END OF LIST ONLY IF MORE TO DO 3783 010257 302 215 020 JNZ RPTRTN ;JUMP IF NO 3784 3785 010262 257 RP.OUT: XRA A ;CLEAR ACCUM PRIOR TO LEAVING 3786 010263 062 213 040 STA RPTON ;TURN OFF THE "ON" FLAG 3787 010266 311 RET ;AND HERE IF YES 3788 3789 010267 126 RP4: MOV D,M ;IF IT WAS OK.. START ASSEMBLING THE DISPATCH 3790 010270 043 INX H ;UPDATE TO LO ORDER PIECE 3791 010271 136 MOV E,M ;AND DISPATCH IS NOW IN "D,E" 3792 010272 043 INX H ;UPDATE POINTER 3793 010273 042 211 040 SHLD RPLST ;SAVE POINTER TO WHERE WE ARE IN CMD LIST 3794 3795 010276 041 340 001 LXI H,NULLW ;"H,L" GETS PLACE WE WANT TO RETURN TO 3796 010301 345 PUSH H ;PLACE ON STACK SO THAT "RET" INS COMES HERE 3797 010302 353 XCHG ;DISPATCH ADDRESS INTO "H,L" 3798 3799 010303 174 MOV A,H ;GET HI ORDER PIECE OF ADDR TO SEE IF ARG 3800 010304 247 ANA A ; WAS TYPED WITH THIS COMMAND..SET FLAGS 3801 010305 362 314 020 JP RPGO ;IF SIGN BIT CLR, CMD GOT NO ARG VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-120 CMDS.M80 *** "RP" CMD *** 3803 ;OTHERWISE MUST SET THE C-BIT TO TELL CMD TO LOOK FOR ARG 3804 010310 346 177 ANI ^O177 ;CLR SIGN BIT 3805 010312 147 MOV H,A ;PUT IT BACK FOR CORRECT DISPATH 3806 010313 067 STC ;SET C-BIT IF NECCESSARY 3807 010314 077 RPGO: CMC ;SET C-BIT FOR THIS COMMAND TO SEE 3808 010315 351 PCHL ;AND GO DO IT.. 3809 3810 ;IF REACHED END OF THE DISPATCH LIST, THEN THIS CODE RESETS 3811 ;THE POINTER BACK TO THE BEGINNING OF THE LIST 3812 010316 057 RPNEW: CMA ;RPFOO DOESNT TOUCH ACCUM, SET ACCUM TO -1 3813 010317 062 131 040 STA CMDS.. ;NOW ZAP THE FIRST IN LINE FLAG 3814 010322 041 001 041 RPFOO: LXI H,RPINI ;BUFFER BEGINNING ADDRESS 3815 010325 042 211 040 SHLD RPLST ;PUT BACK INTO RAM 3816 010330 041 032 041 LXI H,RPTBFI ;POINTER TO DATA BUFFER 3817 010333 042 207 040 SHLD RPBUFS ;RESET INTO HOLDING LOCATION 3818 010336 311 RET ;AND RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-121 CMDS.M80 *** "DS" CMD *** 3820 .SBTTL *** "DS" CMD *** 3821 ;COMMAND TO SELECT NON DEFAULT DISK UNIT AND UNIBUS ADAPTERS FOR BOOTING 3822 ;FROM DISK 3823 010337 DSCMD: PLINE Q.UBA ;MESSAGE TO ASK FOR "UNIBUS ADAPTER" TO BE USED (1) 010337 337 RST 3 ;PRINT LINE OF CHARS (1) 010340 252 037 .ADDR Q.UBA ;BUFF TO PRINT 3824 010342 315 173 021 CALL PICKUP ;GO FETCH THE RESPONSE THAT WAS TYPED 3825 010345 332 360 020 JC DS1 ;IF NOTHING TYPED, LEAVE UBA AS CURRENTLY SELECTED 3826 3827 ;FALL INTO HERE IF A NEW UBA NUMBER WAS TYPED 3828 010350 072 100 040 LDA TMPB2 ;GRAB THE NEW UBA NUMBER AS TYPED 3829 010353 007 RLC ;THE UBA NUMBER IS JUSTIFIED "*4" IN A BYTE 3830 010354 007 RLC ;TAKES 2 ROTATES TO GET IT JUSTIFIED 3831 010355 062 357 040 STA DSKUBA ;AND SAVE THE NEW VALUE IN THE RAM 3832 3833 010360 DS1: PLINE Q.RH ;ASK FOR AN RH11 TO USE (1) 010360 337 RST 3 ;PRINT LINE OF CHARS (1) 010361 261 037 .ADDR Q.RH ;BUFF TO PRINT 3834 010363 315 173 021 CALL PICKUP ;GET WHAT WAS TYPED 3835 010366 332 377 020 JC DS2 ;IF NOTHING TYPED, DO NOTHING 3836 3837 010371 MOV5B ;NOW SAVE THIS NEW DISK BASE (1) 010371 347 RST 4 (1) 010372 000 .BYTE 0 3838 010373 100 040 .ADDR TMPB2 ;THIS IS WHERE THE DATA SHOULD BE SITTING 3839 010375 374 040 .ADDR DSBASE ;THIS IS WHERE WE WILL KEEP IT 3840 3841 010377 DS2: PLINE Q.UNIT ;ASK FOR A UNIT NUMBER TO BOOT FROM (1) 010377 337 RST 3 ;PRINT LINE OF CHARS (1) 010400 273 037 .ADDR Q.UNIT ;BUFF TO PRINT 3842 010402 315 173 021 CALL PICKUP ;GO FETCH WHAT WAS TYPED 3843 010405 330 RC ;IF NOTHING TYPED, THEN ALL DONE. RETURN FROM THIS CMD 3844 3845 ;FALL TO HERE IF A UNIT WAS TYPED..GO SET THE UNIT TO BE USED 3846 010406 072 100 040 LDA TMPB2 ;GET NUMBER TYPED FOR THE NEW UNIT 3847 010411 062 132 040 STA UNITNM ;SET IT INTO RAM AS THE NEW VALUE 3848 010414 311 RET ;ALL DONE THIS COMMAND.... VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-122 CMDS.M80 *** "MS" CMD *** 3850 .SBTTL *** "MS" CMD *** 3851 ;COMMAND TO SELECT WHAT MAGTAPE TO BOOT FROM 3852 010415 MSCMD: PLINE Q.UBA ;ASK FOR A UNIBUS ADAPTER TO LOAD FROM (1) 010415 337 RST 3 ;PRINT LINE OF CHARS (1) 010416 252 037 .ADDR Q.UBA ;BUFF TO PRINT 3853 010420 315 173 021 CALL PICKUP ;GET WHAT WAS TYPED 3854 010423 332 036 021 JC MS1 ;IF NOTHING, LEAVE UBA ALONE.. GO GET THE NEXT THING 3855 3856 ;FALL INTO HERE IF A NEW UBA WAS SELECTED 3857 010426 072 100 040 LDA TMPB2 ;GET THE NEW UBA TYPED 3858 010431 007 RLC ;UBA NUMBERS MUST BE JUSTIFIED ON BYTE BOUNDARY *4 3859 010432 007 RLC ;TAKES TWO SHIFTS TO SET THE UBA NUMBER 3860 010433 062 356 040 STA MTAUBA ;SAVE THE NEW UBA VALUE IN THE RAM 3861 3862 010436 MS1: PLINE Q.RH ;ASK FOR A NEW RH11 TO USE (1) 010436 337 RST 3 ;PRINT LINE OF CHARS (1) 010437 261 037 .ADDR Q.RH ;BUFF TO PRINT 3863 010441 315 173 021 CALL PICKUP ;FETCH WHAT WAS TYPED 3864 010444 332 055 021 JC MS1.5 ;IF NOTHING TYPED, THEN DO NOTHING 3865 3866 010447 MOV5B ;IF SOMETHING TYPED, GET IT FROM THE BUFFER (1) 010447 347 RST 4 (1) 010450 000 .BYTE 0 3867 010451 100 040 .ADDR TMPB2 ;PLACE WHERE THE STUFF WAS PUT 3868 010453 367 040 .ADDR MTBASE ;PLACE WHERE WE KEEP THE MAGTAPE BASE REG 3869 010455 MS1.5: PLINE Q.TCU ;GO ASK FOR A UNIT NUMBER (1) 010455 337 RST 3 ;PRINT LINE OF CHARS (1) 010456 303 037 .ADDR Q.TCU ;BUFF TO PRINT 3870 010460 315 173 021 CALL PICKUP ;GO SEE WHAT WAS TYPED 3871 010463 332 074 021 JC MS2 ;IF NOTHING TYPE, LEAVE VALUE ALONE.. GO AROUND THIS. 3872 3873 ;FALL TO HERE IF NEED TO SET A NEW UNIT NUMBER 3874 010466 072 100 040 LDA TMPB2 ;GET WHAT WAS TYPED 3875 010471 062 137 040 STA TAPEUNIT ;SET IN THE NEW UNIT NUMBER 3876 3877 010474 MS2: PLINE Q.DEN ;NOW GO SEE WHAT DENSITY TO SET FOR THE MAGTAPE (1) 010474 337 RST 3 ;PRINT LINE OF CHARS (1) 010475 312 037 .ADDR Q.DEN ;BUFF TO PRINT 3878 010477 315 205 021 CALL INBUF ;UPDATE BUFFER POINTER. THIS CASE IS DIFFERENT THAN 3879 ;THE OTHERS.. WE NEED TO EXAMINE ASCII. NOT OCTAL 3880 010502 332 144 021 JC MS3 ;BUT IF NOTHING TYPED, GO ASK FOR A NEW SLAVE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-123 CMDS.M80 *** "MS" CMD *** 3882 ;FALL THRU IF NEED TO SET A DENSITY.... 3883 ;NOW H,L REG POINTS TO THE STRING JUST TYPED IN 3884 010505 345 PUSH H ;SAVE POINTER TO THE TYPED IN BUFFER 3885 010506 021 162 021 LXI D,EIGHT0 ;GET POINTER TO THE "800" LIST 3886 010511 315 313 033 CALL STRCMP ;NOW DO A STRING COMPARE 3887 010514 302 125 021 JNZ S16CHK ;IF WAS NOT AN "800", SEE IF ITS A "1600" 3888 3889 ;OK, IT WAS 800..NOW SET UP THE CHANNEL DATA TO SAY 800 BPI TAPE 3890 010517 076 002 MVI A,2 ;A 2 IS THE CORRECT CODE FOR 800 BPI 3891 010521 341 POP H ;IF "800" MATCHED, THEN CLEAN UP THE STACK 3892 010522 303 141 021 JMP MS2.5 ;GO TO NEXT CHECK 3893 3894 010525 341 S16CHK: POP H ;GET POINTER TO THE TYPED IN STUFF 3895 010526 021 166 021 LXI D,SIXTN ;MATCH AGAINST "1600" 3896 010531 315 313 033 CALL STRCMP ;DO THE STRING COMPARE 3897 010534 302 163 032 JNZ KILNM ;IF WAS NOT 1600, THEN IT WAS BAD 3898 3899 ;IT WAS 1600, SO SET THE RIGHT THING FOR TAPE BPI 3900 010537 076 004 MVI A,4 ;THIS IS THE CODE FOR 1600 BPI 3901 010541 062 363 040 MS2.5: STA DEN.SLV+1 ;SET THE BYTE IN THE CHANNEL DATA WORD 3902 3903 010544 MS3: PLINE Q.SLV ;ASK FOR A NEW SLAVE DEVICE (1) 010544 337 RST 3 ;PRINT LINE OF CHARS (1) 010545 322 037 .ADDR Q.SLV ;BUFF TO PRINT 3904 010547 315 173 021 CALL PICKUP ;FETCH WHAT WAS TYPED 3905 010552 330 RC ;IF NOTHING TYPED, THEN WE ARE ALL DONE 3906 3907 ;ELSE FALL TO HERE TO GET THE SLAVE 3908 010553 072 100 040 LDA TMPB2 ;GET THE NUMBER 3909 010556 062 362 040 STA DEN.SLV ;SET THE BYTE AS REQUIRED 3910 010561 311 RET ;AND ALL DONE 3911 010562 070 060 060 EIGHT0: .ASCIZ /800/ ;FOR 800 BPI TAPES 3912 010566 061 066 060 SIXTN: .ASCIZ /1600/ ;STRING FOR 1600 BPI TAPES VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-124 CMDS.M80 *** "MS" CMD *** 3914 ;SOME SUBROUTINES FOR USE BY THE DEVICE SELECT COMMANDS 3915 ;FIRST A ROUTINE TO READ IN A NUMBER TYPED IN ANSWER TO AN 8080 QUESTION 3916 ;AND SAVE THE NUMBER TYPED IN THE 36 BIT BUFFER "TMPB2". RETURNS C-BIT CLEAR 3917 ;IF A NUBER WAS GATHERED AND STORED IN "TMPB2". RETURNS C-BIT SET IF NOTHING 3918 ;WAS TYPED. 3919 010573 315 205 021 PICKUP: CALL INBUF ;SET UP THE INPUT BUFFER TO THE CURRENT TYPEIN. 3920 010576 330 RC ;RETURNS HERE WITH C-BIT SET IF NOTHING TYPED 3921 3922 ;GET HERE IF SOMETHING WAS TYPED.. GO GET IT AND PUT IT IN "TMPB2" 3923 010577 ARG36 ;GATHER A 36-BIT ARGUMENT (1) 010577 347 RST 4 (1) 010600 010 .BYTE 8 3924 010601 100 040 .ADDR TMPB2 ;PUT IT IN THIS BUFFER 3925 010603 257 XRA A ;CLEAR C-BIT BECAUSE ALL WAS OK. 3926 010604 311 RET ;ALL DONE 3927 3928 ;SUBROUTINE TO FIX UP THE BUFFER POINTERS IN THE INPUT BUFFER 3929 010605 041 204 040 INBUF: LXI H,EOL ;GET POINTER TO END-OF-LINE COUNTER 3930 010610 065 DCR M ;SO CAN DECREMENT 3931 010611 315 163 010 CALL BFRST ;RESET TTY INPUT POINTERS 3932 010614 052 215 040 LHLD BUF. ;FIND THE BEGINNING OF BUFFER 3933 010617 042 223 040 SHLD .ARG1 ;AND SET IT AS THE POINTER TO THE FIRST ARG 3934 3935 010622 041 230 021 LXI H,INRDY ;PASS A RETURN ADDRESS IN H,L 3936 010625 303 340 001 JMP NULLW ;ENTER TTY INPUT WAIT 3937 3938 010630 052 223 040 INRDY: LHLD .ARG1 ;GET POINTER TO THE START OF THE NEW DATA 3939 010633 315 256 033 FNDARG: CALL SEPCHR ;EAT UP ANY NO-OP SEPARATORS 3940 010636 042 223 040 SHLD .ARG1 ;REPLACE THE POINTER 3941 010641 303 355 032 JMP EOCML ;CHECK IF AT END-OF-LINE. C-SET IF YES(IE NO ARG) VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-125 CMDS.M80 *** "BT" CMD *** 3943 .SBTTL *** "BT" CMD *** 3944 000077 INDIRECT=^O77 3945 010644 BOOT: PLINE BTMSG1 ;INCLUDE A MESSAGE SO THAT USERS KNOW U R BOOTING (1) 010644 337 RST 3 ;PRINT LINE OF CHARS (1) 010645 140 037 .ADDR BTMSG1 ;BUFF TO PRINT 3946 010647 BTAUT: PCRLF ;AND KEEP IT ON ONE LINE (2) 010647 347 RST 4 (2) 010650 002 .BYTE 2 3947 010651 076 010 MVI A,^O10 ;BIT 32 IN TENLAND TO SAY THIS WAS A BOOT BUTTON LOAD 3948 010653 062 255 040 STA GOCODE ;SAVE IN THE "GO CODE" PLACE 3949 010656 067 STC ;FALL THRU TO A "BT" 3950 3951 010657 315 341 021 BTCMD: CALL BTCHOICE ;GO SELECT MONITOR OR DIAG PRE-BOOT 3952 010662 315 276 022 BT.SRC: CALL MICROP ;READ THE PAGE OF FILE POINTERS INTO MEMORY @1000 3953 3954 ;WHEN GET TO HERE, THE PAGE HAS BEEN READ IN. 3955 010665 332 210 032 JC C.BTERR ;ERROR IN BOOT PROCESS DURING MICRO-CODE LOAD 3956 3957 010670 315 056 023 CALL DMEM2CRAM ;LOAD DATA FROM MEMORY INTO CRAM 3958 3959 3960 ;FALL THRU IF DONE THE CRAM LOADING PORTION 3961 ;NOW MUST READ IN THE BOOT CODE ITSELF,START THE SM10 MICRO-CODE 3962 ;AND THEN START THE BOOT PROGRAM AT ADDRESS 1000 3963 ;NOW SET UP DISK POINTERS TO POINT TO BOOT BLOCK OF DISK, 3964 ;IN ORDER THAT WE LOAD THE MONITOR BOOT 3965 010673 315 312 021 LB.GO: CALL LBINT ;GO READ-IN THE APPROPRIATE BOOTSTRAP 3966 010676 LB.GO1: MOV5B ;SET UP A START ADDRESS (1) 010676 347 RST 4 (1) 010677 000 .BYTE 0 3967 010700 257 022 .ADDR MA1000 ;MEMORY ADDRESS 1000 FOR STARTING PROGRAM 3968 010702 073 040 .ADDR TMPBF2 ;SET UP SO START COMMAND CAN FIND THE ADDRESS 3969 3970 ;TEMP CODE FOR FIGURING OUT HOW TO MAKE THE INTERNAL START CODE WORK 3971 010704 303 133 017 JMP STINT ;GO START THE MACHINE WITH MONITOR BOOT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-126 CMDS.M80 *** "LB" CMD *** 3973 .SBTTL *** "LB" CMD *** 3974 010707 315 341 021 LBCMD: CALL BTCHOICE ;IF ARG GIVEN, GO SET UP A CHOICE FOR THE BOOTING 3975 010712 021 000 002 LBINT: LXI D,^O1000 ;ALL POINTERS START AT 1000 3976 010715 072 172 040 LDA RM100 ;GET THE OFFSET AS SELECTED(MON OR DIAG PRE-BOOT) 3977 010720 203 ADD E ;ADD LO ORDER TO THE OFFSET 3978 010721 137 MOV E,A ;PUT IT BACK 3979 010722 315 301 022 CALL FILEINIT ;READ IN POINTERS TO THE "PRE-BOOTS" 3980 3981 010725 332 242 032 JC L.BTERR ;ERROR IN LOADING THE PRE-BOOT 3982 3983 010730 315 362 021 CALL BT.GO ;START UP THE MICRO-CODE & INTERNAL OFF 3984 ;NOW PASS ADDRESSES OF RH BASE & DRIVE # TO THE PRE-BOOT PROGRAMS 3985 010733 052 132 040 INFOBT: LHLD UNITNM ;UNIT NUMBER INTO HL REGISTER 3986 010736 303 107 022 JMP PASSSRC ;ROUTINE WHICH WRITES LOCS 36,37 & 40 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-127 CMDS.M80 *** "LB" CMD *** 3988 ;CUTE LITTLE ROUTINE FOR SELECTING WHICH BOOT TO LOAD 3989 010741 332 355 021 BTCHOICE: JC LOAD4 ;IF NO ARG, SET FOR "BOOT>" INPUT 3990 3991 010744 315 257 030 CALL ARG16. ;ASSEMBLE THE ARG 3992 ;AS LONG AS IT WAS A NUMBER, WE WILL LOAD THE DIAG BOOT 3993 010747 076 006 MVI A,6 ;A 6 IS THE OFFSET FOR THE DIAG PRE-BOOT 3994 010751 062 172 040 EXIT4: STA RM100 ;SAVE IT 3995 010754 311 RET 3996 010755 076 004 LOAD4: MVI A,4 ;PASS A 4.. TO SAY LOAD MONITOR BOOT 3997 010757 303 351 021 JMP EXIT4 ;AND COMMON EXIT 3998 3999 ;ROUTINE TO START UP THE MACHINE(KS10), AND RE-ESTABLISH THE PARITY DEFAULT 4000 010762 315 232 016 BT.GO: CALL SM1 ;START THE MICRO-CODE 4001 010765 332 206 032 JC D.BTERR ;IF MICRO-CODE DOES NOT START 4002 010770 BT.GO1: INTOFF ;INTERNAL MODE OFF (1) 010770 367 RST 6 ;GO EXIT FROM INTERNAL MODE 4003 4004 010771 076 174 MVI A,DEFLTE ;GET MACHINE DEFAULT VALUE FOR ENABLES 4005 010773 315 362 013 CALL KS.PAR ;SET THEM INTO THE RAM & WRITE INTO KS 4006 010776 076 020 MVI A,TRPDEF ;GET MACHINE DEFAULT FOR TRAP ENABLES 4007 011000 062 355 040 TP.SET: STA TRAPEN ;SET DEFAULT INTO THE RAM 4008 011003 323 205 OUT DIAG ;***** I/O WRT 205/TRAPS ENABLE ***** 4009 011005 311 RET ;AND OUT 4010 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-128 CMDS.M80 *** "MT" CMD *** 4012 .SBTTL *** "MT" CMD *** 4013 011006 042 221 040 MTCMD: SHLD CMD.. ;SAVE WHAT COMMAND THIS IS, SO RETRYS WILL WORK 4014 011011 315 237 022 CALL MTSETUP ;GO TO SOME COMMON CODE 4015 011014 076 071 MVI A,READ.TAPE ;GET THE COMMAND EXECUTION CODE FOR THE TAPE CMD 4016 011016 315 011 025 CALL MTXFR ;AND READ-IN THE MICRO-CODE FROM TAPE 4017 011021 322 032 022 JNC MT.1 ;NO NEED TO CHECK IF FATAL ERR IF ALL OK 4018 4019 011024 315 167 022 CALL NONFATAL ;WAS AN ERROR, GO SEE WHAT KIND 4020 011027 302 214 032 JNZ A.BTERR ;ERR TYPE "A" IF INITIAL READ FAILS 4021 4022 011032 076 002 MT.1: MVI A,MT.BIT ;SET ACCUM .EQ. MAGTAPE BIT 4023 011034 315 060 023 CALL MEM2CRAM ;LOAD MICRO-CODE FROM MEMORY TO "CRAM" SPACE 4024 4025 011037 315 050 022 CALL MBINT ;NOW LOAD IN THE PRE-BOOT PROGRAM 4026 011042 315 362 021 CALL BT.GO ;START THE MICRO-CODE,REPLACE PARITY & TRAP DEFAULTS 4027 011045 303 276 021 JMP LB.GO1 ;AND PROCEED TO START THINGS VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-129 CMDS.M80 *** "MT" CMD *** 4029 ;NOW MUST DO A RE-WIND.. SKIP FIRST FILE(MICRO-CODE), THEN READ-IN THE 4030 ;SECOND FILE(THE PRE-BOOT) 4031 011050 076 031 MBINT: MVI A,SKP.TAPE ;GRAB A SKIP COMMAND 4032 011052 315 011 025 CALL MTXFR ;ISSUE A REWIND. AND A FILE-SKIP 4033 4034 ;NOW WE EXPECT THERE TO BE A FRAME COUNT ERROR FROM THE SPACE FORWARD 4035 ;AND WE WILL DO WHAT WE CAN TO IGNORE IT 4036 011055 322 066 022 JNC MTSKOK ;IF NO ERROR AT ALL, THATS OK TOO 4037 4038 011060 315 167 022 CALL NONFATAL ;CHECK ERROR TYPE IF FALL INTO HERE 4039 011063 302 242 032 JNZ L.BTERR ;IF WAS NOT A FRAME COUNT ERROR, IT WAS MORE SERIOUS 4040 4041 ;IF COMPARE RESULT WAS ZERO, THEN THE ERROR WAS A FRAME COUNT ERROR 4042 ;AND WE WILL IGNORE IT BY FALLING INTO THE CONTINUE CODE 4043 011066 076 071 MTSKOK: MVI A,READ.TAPE ;GET A TAPE READ COMMAND 4044 011070 315 022 025 CALL QMXFR ;EXECUTE TAP COMMAND LIST WITH NO REWIND IN IT 4045 011073 322 104 022 JNC PASSME ;NO ERROR IF NO "C" BIT 4046 4047 011076 315 167 022 CALL NONFATAL ;SEE WHAT KIND OF ERROR 4048 011101 302 242 032 JNZ L.BTERR ;BOOT ERROR IF NO Z 4049 4050 011104 052 137 040 PASSME: LHLD TAPEUNIT ;GET TAPE UNIT FOR CURRENT MAGTAPE SELECTION VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-130 CMDS.M80 *** "MT" CMD *** 4052 ;NOW PASS INFO IN LO MEMORY ADDRESS SPOTS 4053 011107 345 PASSSRC: PUSH H ;SAVE THE PASSED UNIT NUMBER ON TOP OF STACK 4054 011110 MOV5B ;PASS RH BASE ADDRESS TO INTERNAL BUFFER (1) 011110 347 RST 4 (1) 011111 000 .BYTE 0 4055 011112 242 040 .ADDR RHBASE ;FROM HERE 4056 011114 047 040 .ADDR DMDAT ;TO HERE 4057 011116 041 051 040 LXI H,DMDAT+2 ;GET POINTER TO PIECE FOR UBA 4058 011121 072 254 040 LDA UBANUM ;GET CURRENT UBA 4059 011124 266 ORA M ;PUT IT INTO MEMORY 4060 011125 167 MOV M,A 4061 4062 011126 345 PUSH H ;SAVE THE POINTER TO "DMDAT" AREA 4063 011127 DEPOS 36 ;DEPOSIT IN MEMORY (1) 011127 247 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE (1) 011130 315 232 030 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR (1) 011133 036 000 .ADDR 36 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 4064 011135 341 POP H ;GET BACK THE POINTER TO "DMDAT" AREA 4065 011136 066 000 MVI M,0 ;CLEAR BYTE WITH BITS 12-19 4066 011140 341 POP H ;GET THE UNIT NUMBER THAT WAS SAVED ON THE STACK 4067 011141 042 047 040 SHLD DMDAT ;AND PUT IT INTO THE DEPOSIT MEMORY DATA AREA 4068 011144 DEPOS 37 ;DEPOSIT IN MEMORY HERE (1) 011144 247 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE (1) 011145 315 232 030 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR (1) 011150 037 000 .ADDR 37 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 4069 4070 011152 MOV5B ;FINALLY PASS DENSITY SLAVE INFORMATION (1) 011152 347 RST 4 (1) 011153 000 .BYTE 0 4071 011154 362 040 .ADDR DEN.SLV ;GET IT FROM HERE 4072 011156 047 040 .ADDR DMDAT ;PUT IT HERE 4073 011160 DEPOS 40 ;AND MOS MEMORY HERE (1) 011160 247 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE (1) 011161 315 232 030 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR (1) 011164 040 000 .ADDR 40 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 4074 011166 311 RET ;BACK TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-131 CMDS.M80 *** "MT" CMD *** 4076 ;ROUTINE THAT CHECKS TO SEE WHAT KIND OF ERROR WE HAVE SUFFERED UNDER 4077 ;THE MAGTAPE TRANSFER 4078 011167 076 343 NONFAT: MVI A,<^O377&FRMERR+2> ;CHK ERROR CODE FOR FATAL OR NON FATAL TYPES 4079 011171 041 154 040 LXI H,ERRCD ;NOW POINT TO THE ACTUAL ERROR TYPE THAT WE GOT 4080 011174 276 CMP M ;COMPARE THE TWO 4081 011175 365 PUSH PSW ;SAVE FLAGS WHILE WE RESET THE TAPE DRIVE 4082 011176 314 030 025 CZ MTRESET ;GO RESET ANY ERRORS ENCOUNTERED IN THE SKIP OPERATION 4083 011201 361 POP PSW ;GET BACK THE FLAGS 4084 011202 310 RZ ;ONLY RETURN IF ERROR WAS NON FATAL 4085 4086 ;FALL TO HERE IF ERR WAS FATAL TYPE..SEE IF WE CAN RETRY IT 4087 011203 076 340 MVI A,<^O377&RETRY.+2> ;"RETRYABLE" ERROR?? 4088 011205 276 CMP M ;COMPARE 4089 011206 300 RNZ ;OUT IF CAN'T EVEN RETRY..DIE 4090 4091 ;AND HERE IF IT WAS RETRYABLE 4092 011207 061 000 044 LXI SP,RAMST+^O2000 ;FIRST CLEAR THE STACK 4093 011212 041 344 003 LXI H,NORML ;PUT A RETURN ADDRESS ONTO THE STACK 4094 011215 345 PUSH H 4095 4096 011216 052 221 040 LHLD CMD.. ;NOW GET "WHICH" COMMAND TO RETRY 4097 011221 351 PCHL ;GIVE IT A GO VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-132 CMDS.M80 *** "MB" CMD *** 4099 .SBTTL *** "MB" CMD *** 4100 ;COMMAND TO LOAD ONLY THE BOOTSTRAP OFF OF THE CURRENTLY SELECTED MAGTAPE 4101 011222 042 221 040 MBCMD: SHLD CMD.. ;SAVE WHICH COMMAND THIS IS 4102 011225 315 237 022 CALL MTSETUP ;GO TO SOME COMMON CODE TO SET UP FOR MAGTAPE XFER 4103 011230 315 050 022 CALL MBINT ;AND GO 4104 011233 315 362 021 CALL BT.GO ;START UP THE MICRO-CODE & INTERNAL OFF 4105 011236 311 RET ;BACK TO NULL JOB LOOP 4106 4107 ;SOME COMMON CODE THAT SETS UP PARAMETERS FOR MAGTAPE XFER'S..SAVES A FEW 4108 ;BYTES OF 8080 SPACE 4109 011237 315 030 023 MTSETUP: CALL BTINT ;FIRST SET UP FOR THE BOOTING PROCESS 4110 011242 072 356 040 LDA MTAUBA ;GET SELECTED UBA FOR MAGTAPE 4111 011245 062 254 040 STA UBANUM ;PASS TO COMMON SPOT FOR CHANNEL COMMAND LIST TO FIND 4112 4113 011250 MOV5B ;AND MOVE THE SELECTED MT BASE FOR RH BASE TO FIND (1) 011250 347 RST 4 (1) 011251 000 .BYTE 0 4114 011252 367 040 .ADDR MTBASE ;SELECTED MAGTAPE RH BASE ADDRESS 4115 011254 242 040 .ADDR RHBASE ;COMMON RH BASE REGISTER LOCATION 4116 011256 311 RET ;BACK TO MAILINE 4117 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-133 CMDS.M80 *** "MB" CMD *** 4119 011257 MA1000: D 0,0,,1,000 4120 011264 HOMEWD: D 505,755,,000,000 ;"HOM" MEANS HOME BLOCK 4121 011271 ONES: D 777,777,,777,777 ;ALL ONES... 4122 .SBTTL FILE SYSTEM 4123 ;--PAGE OF POINTERS FORMAT-- 4124 ; +0 POINTER TO FREE 4125 ; +1 LENGTH OF FREE 4126 4127 ; +2 POINTER TO MICRO-CODE 4128 ; +3 LENGTH OF MICRO-CODE 4129 4130 ; +4 POINTER TO MONITOR PRE-BOOT 4131 ; +5 LENGTH OF PRE-BOOT 4132 4133 ; +6 POINTER TO DIAG PRE-BOOT 4134 ; +7 LENGTH OF SAME 4135 4136 ; +10 POINTER TO BC1 MICRO-CODE 4137 ; +11 LENGTH OF SAME 4138 4139 ; +12 POINTER TO BC2 PRE-BOOT 4140 ; +13 LENGTH 4141 4142 ; +14 POINTER TO MONITOR BOOT PROGRAM 4143 ; +15 LENGTH OF SAME 4144 4145 ; +16 POINTER TO DIAGNOSTIC BOOT 4146 ; +17 LENGTH OF SAME 4147 4148 ; +20 POINTER TO BC2 ITSELF 4149 ; +21 LENGTH OF SAME 4150 4151 ; +22 POINTER TO FI-ABLE 0 4152 ; +23 LENGTH OF SAME 4153 ; . 4154 ; . 4155 ; . 4156 ; +776 POINTER TO FI-ABLE 366(8) 4157 ; +777 LENGTH OF SAME 4158 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-134 CMDS.M80 FILE SYSTEM 4160 ;ROUTINE TO "FIND THE 8080 FILE SYSTEM", WHICH IS REALLY JUST A PAGE 4161 ;OF PHYSICAL POINTERS, TO PHYSICAL DISK LOCATIONS 4162 011276 021 002 002 MICROP: LXI D,^O1002 ;FOR MICROCODE, ALWAYS GO TO 2ND POINTER 4163 011301 325 FILEINIT: PUSH D ;SAVE POINTER INTO THE FILE PAGE 4164 011302 315 030 023 CALL BTINT ;AND SET UP TO DO A READIN 4165 011305 321 POP D ;RESTORE "D,E"..KLUDGY WAY TO MAKE SUBROUTINE HAVE 4166 011306 325 FILESH: PUSH D ; MULTIPLE ENTRY POINTS 4167 011307 315 041 023 CALL DSKDFT ;FETCH CURRENT DISK DEFAULTS 4168 4169 011312 041 000 000 LXI H,00 ;CLR "H,L" 4170 011315 042 112 040 SHLD BLKADR ;AND SET THE DESIRED CYLINDER TO 00 4171 011320 043 INX H ;BUMP H,L TO MAKE IT .EQ. 01 4172 011321 042 105 040 SHLD BLKNUM ;NOW SET THIS INTO THE BLOCK NUMBER(HOME BLOCK) 4173 4174 011324 315 005 023 CALL CHKHOM ;GO SEE IF THIS PAGE HAS THE "HOM" BLK I.D. 4175 011327 312 345 022 JZ GOODPK ;IF YES, JUMP TO CONTINUE READ-IN 4176 4177 ;FALL THRU IF FIRST HOME BLOCK NO GOOD 4178 011332 076 010 MVI A,^O10 ;TRY ALTERNATE HOME BLOCK 4179 011334 062 105 040 STA BLKNUM ;SET BLOCK NUMBER TO ALTERNATE 4180 4181 011337 315 005 023 CALL CHKHOM ;TRY ALTERNATE 4182 011342 302 214 032 JNZ A.BTERR ;IF THIS ONES BAD, THEN GIVE UP 4183 011345 GOODPK: EXAM 1103 ;EXAMINE WORD WITH HOME BLOCK IN IT (1) 011345 315 231 030 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS (1) 011350 103 002 .ADDR 1103 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-135 CMDS.M80 FILE SYSTEM 4185 ;NOW THAT YOUVE READ HOME BLOCK, FIND POINTER FILE 4186 ;AND TRANSFER THE ENTIRE MICRO-CODE INTO MOS MEMORY 4187 ;SHORT ROUTINE TO MOVE DATA FROM THE EMBUF INTO THE CHANNEL COMMAND LIST 4188 011352 315 365 022 CALL BLKRDR ;READ IN THE PAGE OF POINTERS FROM THE DISK 4189 011355 332 212 032 JC B.BTERR ;ERROR IN BOOT PROCESS DURING POINTER PAGE READ-IN 4190 4191 ;NOW EXAM THE REAL DESIRED DATA 4192 011360 341 POP H ;FETCH UP THE FILE POINTER ADDRESS 4193 011361 067 STC ;SET SIGN WHICH INDICATES AND EXAMINE 4194 011362 315 240 030 CALL EXMHL ;AND READ IT IN TO MEM 4195 4196 ;SHORT ROUTINE TO MOVE DATA FROM THE EMBUF INTO THE CHANNEL COMMAND LIST 4197 011365 052 015 040 BLKRDR: LHLD EMBUF+3 ;GET CYLINDER FROM SPECIAL HOME BLK PNTR 4198 011370 042 112 040 SHLD BLKADR ;SET CYLINDER IN CHANNEL COMMAND LIST 4199 011373 052 012 040 LHLD EMBUF ;GET TRACK SECTOR BYTE 4200 011376 042 105 040 SHLD BLKNUM ;SET INFO INTO THE TRCK/SECTOR WORD 4201 4202 011401 315 002 025 CALL DSXFR ;FINALLY READ THE FIRST PAGE OF THE DESIRED 4203 011404 311 RET 4204 4205 ;LITTLE ROUTINE TO READ IN THE HOME BLOCK, CHECK THAT IT IS A HOME BLOCK 4206 ; VIA THE "HOM" ID, AND RETURN Z-BIT SET IF IT IS 4207 011405 315 002 025 CHKHOM: CALL DSXFR ;EXECUTE DISK TRANSFER 4208 011410 332 214 032 JC A.BTERR ;BOOT ERROR "A", IF OOPS 4209 4210 011413 EXAM 1000 ;NOW EXAMINE THE HOME BLOCK ID (1) 011413 315 231 030 CALL EXAMSH ;AND DO EXAM ASSUMING SHORT ADDRESS (1) 011416 000 002 .ADDR 1000 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 4211 011420 315 033 033 CALL CMP36 ;AND TRY OUT A COMPARE 4212 011423 264 022 .ADDR HOMEWD ;EXPECTED ID 4213 011425 012 040 .ADDR EMBUF ;AGAINST WHAT WAS JUST READ IN 4214 011427 311 RET ;AND OUT 4215 4216 011430 BTINT: INTON ;SET INTERNAL MODE ON (1) 011430 327 RST 2 ;GO SET INTERNAL MODE 4217 011431 CLRB PARBT ;NO PARITYS 4218 011433 CLRB TRAPEN ;AND NO TRAPS WHILE BOOTING 4219 011435 315 231 005 CALL MRCMD ;AND DONT FORGET MR. RESET 4220 011440 311 RET 4221 4222 ;LITTLE ROUTINE TO SET UP DISK DEFAULTS 4223 011441 072 357 040 DSKDFT: LDA DSKUBA ;GET CURRENTLY SELECTED DISK UBA NUMBER 4224 011444 062 254 040 STA UBANUM ;SET INTO COMMAND LIST PLACE 4225 4226 011447 MOV5B ;AND SEND CURRENTLY SELECTED RHBASE (1) 011447 347 RST 4 (1) 011450 000 .BYTE 0 4227 011451 374 040 .ADDR DSBASE ;CURRENT DISK RH BASE 4228 011453 242 040 .ADDR RHBASE ;TO PLACE FOR COMMAND LIST TO FIND IT 4229 011455 311 RET ;OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-136 CMDS.M80 CRAM LOADER CODE 4231 .SBTTL CRAM LOADER CODE 4232 011456 076 001 DMEM2CR: MVI A,BT.BIT ;DO COUPLE ROUTINES A FAVOR, LOAD BIT 4233 011460 062 121 040 MEM2CR: STA BT.TYPE ;ACCUM HAD THE BOOTING TYPE..SAVE IT 4234 011463 041 000 000 LXI H,00 ;ZEROES TO "H,L" 4235 011466 345 PUSH H ;SAVE CURRENT CRAM ADDRESS 4236 011467 315 340 014 CALL CADWR ;AND THEN WRITE IT TO THE CRAM 4237 011472 076 007 MVI A,7 ;START WITH FUNCTION 7 4238 011474 062 010 040 STA CRMFN 4239 011477 NEWPAG: MOV5B ;INITIALIZE MEM ADDRESS (1) 011477 347 RST 4 (1) 011500 000 .BYTE 0 4240 011501 257 022 .ADDR MA1000 ;WITH 1000 OCTAL 4241 011503 017 040 .ADDR MEMAD ;STANDARD MEM ADDRESS 4242 4243 ;CODE TO DECIDE IF WE NEED TO READ AN ADDITIONAL DISK SECTOR 4244 011505 052 017 040 LHLD MEMAD ;GET CURRENT MOS MEM ADDRESS 4245 011510 175 RD.EXM: MOV A,L ;GET 8 BITS OF ADDRESS TO BE EXAMINED 4246 011511 323 103 OUT A2835 ;SET PIECE OF ADDRESS INTO ADDRESS REGISTER 4247 011513 174 MOV A,H ;GET COUPLE MORE BITS 4248 011514 323 105 OUT A2027 ;SET INTO CSL BOARD ADDRESS REGISTER 4249 011516 076 004 MVI A,4 ;SPECIAL KEY TO MAKE "EXAMINE" WORK CORRECTLY 4250 011520 315 056 012 CALL EM.CRM ;GO DO A MEMORY EXAMINE, OF THE SHORT FLAVOR 4251 4252 011523 052 012 040 LHLD EMBUF ;GET 16 BITS OF THE MEMORY DATA 4253 011526 174 MOV A,H ;COPY TO ACCUM, SO THAT WE CAN MAKE IT 12 BITS 4254 011527 346 017 ANI ^O17 ;CLR THE BITS 4255 011531 147 MOV H,A ;PUT BACK INTO THE HI ORDER REG 4256 4257 011532 315 303 014 CALL WFUNC ;WRITE THE PIECE 4258 011535 041 010 040 LXI H,CRMFN ;GET CURRENT DIAG FUNCTION 4259 011540 065 DCR M ;DOWN COUNT 4260 4261 011541 052 013 040 LHLD EMBUF+1 ;GET 16 BITS OF THE MEMORY READ 4262 4263 011544 016 004 MVI C,4 ;NOW A QUICK LITTLE LOOP 4264 011546 257 XRA A ;CLR ACCUM TEMP 4265 011547 174 QQLOOP: MOV A,H ;COPY TO ACCUM 4266 011550 037 RAR ;ROTATE INTO THE C-BIT 4267 011551 147 MOV H,A ;PUT IT BACK 4268 4269 011552 175 MOV A,L ;TRY BOTTOM PIECE 4270 011553 037 RAR ;ROTATE C-BIT INTO THE TOP 4271 011554 157 MOV L,A ;PUT IT BACK 4272 011555 015 DCR C ;DOWN THE LITTLE COUNTER 4273 011556 302 147 023 JNZ QQLOOP ;CONTINUE 4274 4275 011561 315 303 014 CALL WFUNC ;WRITE THIS PIECE 4276 011564 041 010 040 LXI H,CRMFN ;DOWN THE FUNCTION COUNTER 4277 011567 065 DCR M ;DECREMENT 4278 011570 362 216 023 JP BBLOOP ;JUMP AROUND THIS STUFF IF NOT AT FUNCTION 0 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-137 CMDS.M80 CRAM LOADER CODE 4280 ;IF DONE FUNCTIONS 0-7, TRY A LITTLE RESET 4281 011573 076 007 MVI A,7 ;RESTART AT FUNCTION 7 4282 011575 062 010 040 STA CRMFN ;SAVE IT 4283 4284 ;HERE IF FINSHED A CRAM WORD & NEED TO DO RESET. 4285 011600 341 POP H ;GET CRAM ADDRESS 4286 011601 043 INX H ;UPDATE 4287 011602 345 PUSH H 4288 011603 315 340 014 CALL CADWR ;NOW WRITE THIS, THE NEXT CRAM ADDRESS 4289 011606 174 MOV A,H ;NOW GET HI ORDER PIECE OF CRAM ADDR 4290 011607 346 010 ANI ^O10 ;IS IT .EQ. 4000 OCTAL YET?? 4291 011611 312 234 023 JZ SEEPAGE ;IF NOT 4000 OCTAL YET, CHECK FOR A NXT WORD 4292 011614 341 POP H ;AND RESTORE STACK BEFORE LEAVING 4293 011615 311 RET ;OTHERWISE ALL DONE 4294 4295 011616 052 015 040 BBLOOP: LHLD EMBUF+3 ;GRAB 16 BITS OF THE MEMORY DATA 4296 011621 174 MOV A,H ;PASS 8 BITS TO THE ACCUM, SO WE CAN MAKE IT 4 BITS 4297 011622 346 017 ANI ^O17 ;OFF UNNEEDED BITS 4298 011624 147 MOV H,A ;PUT IT BACK 4299 011625 315 303 014 CALL WFUNC ;WRITE THIS DATUM 4300 011630 041 010 040 LXI H,CRMFN ;GET FUNCTION 4301 011633 065 DCR M ;DOWN TO NEXT FUNCTION 4302 4303 011634 052 017 040 SEEPAGE: LHLD MEMAD ;GET THE CURRENT MEMORY ADDRESS 4304 011637 043 INX H ;GO TO NEXT ADDRESS 4305 011640 042 017 040 SHLD MEMAD ;SAVE THIS NEXT ADDRESS 4306 011643 174 MOV A,H ;TEST H FOR AT "2000" 4307 011644 346 004 ANI ^O4 ;IF "2000" WEIGHT BIT IS SET, TIME FOR NEW PAGE OF DATA 4308 011646 312 110 023 JZ RD.EXM ;IF MEM ADDRESS .EQ. 2000, THEN FALL THRU TO NEXT READIN 4309 011651 315 257 023 CALL NEXTCR ;ROUTINE TO FETCH NEXT PAGE OF CRAM DATA 4310 011654 303 077 023 JMP NEWPAG ;AND BACK TO BEGINNING 4311 4312 ;ELSE, MUST READ IN ANOTHER PAGE'S WORTH FROM CURRENT BOOT DEVICE 4313 011657 072 121 040 NEXTCR: LDA BT.TYPE ;FIND OUT WHAT KIND OF DEVICE WE ARE BOOTING FROM 4314 011662 376 001 CPI BT.BIT ;SEE IF DOING BOOT FROM THE DISK 4315 011664 302 301 023 JNZ TAPDEV ;IF FLAG .NE. BT.BIT, THEN BOOTING FROM MAGTAPE 4316 4317 ;FALL THRU TO DO BOOT FROM DISK 4318 011667 041 146 036 LXI H,QXFR ;SET UP FOR THE QUICK XFR COMMAND LIST 4319 011672 315 036 025 CALL CHNXCT ;READ IN, SHORT FORMAT(TRK/SEC/CYL IS PRESET) 4320 011675 332 210 032 JC C.BTERR ;ERROR IN READING CRAM 4321 011700 311 RET ;BACK TO CALLER 4322 4323 ;JUMP TO HERE TO DO BOOT FROM TAPE 4324 011701 076 071 TAPDEV: MVI A,READ.TYPE ;PASS TO CHANNEL CMD LIST EXECUTOR THE XFR TYPE 4325 011703 315 022 025 CALL QMXFR ;READ IN A SINGLE PAGE FROM MAGTAPE 4326 011706 320 RNC ;IF NOTHING BAD, RETURN 4327 011707 315 167 022 CALL NONFATAL ;IF BADNESS, SEE IF FATAL KIND OR NOT 4328 011712 302 210 032 JNZ C.BTERR ;ERROR IN READING THE CRAM 4329 011715 311 RET ;BACK TO CALLER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-138 CMDS.M80 *** "FI" CMD *** 4331 .SBTTL *** "FI" CMD *** 4332 ;COMMAND TO READ IN A PARTICULAR PAGE OF THE FILESYSTEM AND TO EXECUTE ITS 4333 ;CONTENTS AS IF THEY WERE TYPED IN 8080 COMMANDS 4334 011716 315 257 030 FICMD: CALL ARG16. ;COLLECT IT WHEN ITS THERE 4335 4336 ;BEWARE..IF YOU TYPE FI WITH A BOGUS ARGUMENT, THEN YOU LOSE.. 4337 ;HE WHO USES THE FI CMD BEST KNOW WHAT HE'S DOING 4338 011721 021 022 002 LXI D,^O1022 ;START WITH OFFSET "0" INTO THE "FI" FILES 4339 011724 031 DAD D ;ADD THIS TO THE NUMBER TYPED TO GET THE DESIRED 4340 011725 315 301 022 CALL FILEINIT ;READ IN THE DESIRED PAGE 4341 011730 332 242 032 JC L.BTERR ;IF ERR 4342 4343 ;NOW DO SOMETHING WITH THE STUFF TYPED... 4344 011733 MOV5B ;FIRST MUST GET INFO FROM MOS MEM TO 8080 RAM (1) 011733 347 RST 4 (1) 011734 000 .BYTE 0 4345 011735 257 022 .ADDR MA1000 ;INFO STARTS AT MOS MEME LOC 1000 4346 011737 017 040 .ADDR MEMAD ;AND WE WILL TELL INTERNAL READER TO START THERE 4347 4348 011741 021 253 041 LXI D,E.BEG+2 ;A PLACE TO STORE ASCII BYTES FROM MEMORY 4349 011744 FI.GET: INTON ;NO PRINTING (1) 011744 327 RST 2 ;GO SET INTERNAL MODE 4350 011745 315 245 024 CALL GATHER ;GO READ IN A WORD FROM MOS MEM 4351 011750 INTOFF ;OK TO PRINT NOW (1) 011750 367 RST 6 ;GO EXIT FROM INTERNAL MODE 4352 011751 056 004 MVI L,4 ;NOW ONLY 4 BYTES PER WORD ARE USEFUL 4353 011753 001 012 040 LXI B,EMBUF ;AND THIS IS WHERE IN 8080 RAM THE BYTES ARE 4354 011756 012 FI.MOV: LDAX B ;FETCH UP A BYTE 4355 011757 022 STAX D ;PUT IT IN PLACE 4356 011760 376 377 CPI ^O377 ;IS IT END OF STRING?? 4357 011762 302 373 023 JNZ FI.NXT ;IF NO, GO MOVE SOME MORE 4358 4359 011765 315 351 034 CALL MV.ALL ;GOT HERE, MOVE TO EXECUTE BUFFER 4360 011770 303 222 002 JMP DCODE ;AND GO DO IT 4361 4362 ;NOPE.. MOVE SOME MORE 4363 011773 003 FI.NXT: INX B ;UPDATE THE POINTERS 4364 011774 023 INX D 4365 011775 055 DCR L ;CHECK COUNT TO SEE IF WE'VE DONE 4 YET 4366 011776 302 356 023 JNZ FI.MOV ;IF NOT, GO MOVE THE NEXT BYTE FROM THE CURRENT WORD 4367 012001 303 344 023 JMP FI.GET ;YES, READ NEXT MEM WORD AND TRY IT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-139 CMDS.M80 *** "FI" CMD *** 4369 ;;**********PROPOSED INSTRUCTION ******************** 4370 ;;.SBTTL *** "B1" CMD *** 4371 ;;COMMAND TO READ IN A SECOND TYPE OF MICRO-CODE AND EXECUTE IT.. 4372 ;;I.E. BOOTCHECK 1 MICRO-CODE 4373 ;;B1CMD: LXI D,^O1010 ;GET THE CORRECT OFFSET 4374 ;; CALL FILEINIT ;READ IN THE FIRST PAGE 4375 ;; JC C.BTERR ;IF ERR 4376 ;; 4377 ;; MVI A,BT.BIT ;SAY THAT THIS IS A LOAD FROM DISK 4378 ;; CALL MEM2CRAM ;READ IT IN AS MICRO-CODE 4379 ;; CALL BT.GO ;START IT UP 4380 ;; RET ;THAT IT 4381 .SBTTL *** "B2" CMD *** 4382 ;BOOTCHECK 2.. THIS LOADS IN A SEPARATE "PRE-BOOT", WHICH 4383 ;LOADS IN THE BOOT CHECK 2 4384 012004 076 012 B2CMD: MVI A,^O12 ;GET THE OFFSET 4385 012006 062 172 040 STA RM100 ;SAVE IT SO THAT WE CAN USE SOME SUPER COMMON CODE 4386 012011 303 262 021 JMP BT.SRC ;THAT'S IT!!!! VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-140 CMDS.M80 *** "VD" CMD *** 4388 .SBTTL *** "VD" CMD *** 4389 ;COMMAND TO VERIFY THE CONTENTS OF THE C-RAM AGAINST THE MICRO-CODE 4390 ;AS IT SITS ON DISK 4391 012014 315 276 022 VDCMD: CALL MICROP ;NOW READ IN HOME BLOCKS, THEN 1ST PAGE OF U-CODE 4392 012017 332 210 032 JC C.BTERR ;IF ERROR, GO TELL WORLD ABOUT IT 4393 4394 012022 076 001 MVI A,BT.BIT ;WENT OK.. SPECIFY A DISK TYPE OPERATION 4395 012024 303 044 024 JMP VERCRAM ;AND GO IN TO VERIFY THE CRAM 4396 4397 .SBTTL *** "VT" CMD *** 4398 ;COMMAND TO VERIFY THE CONTENTS OF THE C-RAM AGAINST THE MICR-CODE 4399 ;AS IT SITS ON MAG TAPE 4400 012027 315 237 022 VTCMD: CALL MTSETUP ;GO TO SOME COMMON CODE TO LOOK AT MAGTAPES 4401 012032 076 071 MVI A,READ.TAPE ;TELL CHANNEL LISTER TO DO A READ IN 4402 012034 315 011 025 CALL MTXFR ;READ IN FIRST PAGE OF U-CODE OFF THE TAPE 4403 012037 332 214 032 JC A.BTERR ;IF ERROR, GO REPORT IT 4404 4405 012042 076 002 MVI A,MT.BIT ;WENT OK.. SPECIFY A TAPE OPERATION 4406 ;FALL STRAIGHT INTO THE CODE TO VERIFY THE CRAM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-141 CMDS.M80 VERIFY CRAM CODE 4408 .SBTTL VERIFY CRAM CODE 4409 ;ROUTINES THAT DO READ INS FROM THE CURRENTLY SELECTED DEVICE 4410 ;AND COMPARES THAT HARD MICRO-CODE DATA AGAINST THE CURRENT 4411 ;CONTENTS OF THE CONTROL-STORE 4412 012044 VERCRAM: 4413 012044 062 121 040 STA BT.TYPE ;BEGIN BY SAVING THE DEVICE AGAINST WHICH WE WILL VERIFY 4414 4415 012047 MOV5B ;START BY SETTING MEMORY ADDRESS AT 1000 (1) 012047 347 RST 4 (1) 012050 000 .BYTE 0 4416 012051 257 022 .ADDR MA1000 ;A "1000" 4417 012053 017 040 .ADDR MEMAD ;PLACE WHERE MEM ADDRESS IS KEPT 4418 012055 041 000 000 LXI H,00 ;BEGIN WITH CRAM ADDRESS 00 4419 012060 042 004 040 SHLD CRMAD ;SET CRAM ADDRESS TO ZEROES 4420 012063 303 076 024 JMP V.GO ;ENTER LOOP AT THE PROPER PLACE 4421 4422 012066 052 004 040 V.DONWD: LHLD CRMAD ;GET CURRENT CRAM ADDRESS 4423 012071 043 INX H ;AND UPDATE FOR NEXT TIME AROUND 4424 012072 174 MOV A,H ;PUT HI ORDER PIECE OF IT INTO ACCUM 4425 012073 346 010 ANI ^O10 ;SEE IF AT END OF CRAM YET 4426 012075 300 RNZ ;IF IT IS, ALL DONE, GO OUT 4427 4428 ;HERE IF REALLY READY TO DO A CRAM LOC 4429 012076 315 340 014 V.GO: CALL CADWR ;WRITE IT TO CRAM, BE IT GOOD OR BAD 4430 012101 042 004 040 SHLD CRMAD ;NOW SAVE ADDRESS WHILE WE DO SOME STUFF 4431 012104 315 205 013 CALL CP1 ;SINGLE CLOCK GETS CRAM CONTENTS TO CONTROL REG 4432 012107 315 041 015 CALL RCINT ;READ IN CONTENTS OF C-RAM AND SAVE IN 8080 RAM 4433 4434 ;HERE WHEN CRAM DATA IS SAFELY TUCKED AWAY IN THE 8080 RAM 4435 012112 001 220 024 LXI B,VERLST ;B,C PAIR POINTS TO LIST OF DATA OFFSETS 4436 012115 021 302 040 LXI D,CRMBF ;D,E PAIR POINTS TO ACTUAL DATA LIST(H,L PNTS EXPECTED) 4437 4438 012120 315 245 024 V.NXMEM: CALL GATHER ;HERE TO CALL ROUTINE THAT READS IN THE NEXT MEM WORD 4439 012123 076 003 MVI A,3 ;AND TAKE TIME OUT TO RESET THE 3 COUNTER 4440 012125 062 253 040 STA VERCNT ;SET UP A CLEAN COUNT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-142 CMDS.M80 VERIFY CRAM CODE 4442 ;AND HERE BELOW BEGINS THE ACTUAL DATA COMPARES 4443 012130 012 V.BLP: LDAX B ;GET THE FIRST INDEX BYTE FROM THE LIST OF BYTES 4444 012131 346 077 ANI ^O77 ;OFF THE SIGNALS, AND CONTINUE 4445 012133 052 012 040 V.BLP1: LHLD EMBUF ;GET EXPECTED DATA INTO H,L REGISTER 4446 012136 003 INX B ;UPDATE B,C TO POINT AT FUNCTION READ 4447 012137 203 ADD E ;ADD AS AN OFFSET TO THE D,E PAIR 4448 012140 137 MOV E,A ;PUT THE GOOD ADDR BACK INTO "E" 4449 012141 172 MOV A,D ;AND GRAB THE HI ORDER FOR A SEC 4450 012142 316 000 ACI 0 ;ADD IN THE CARRY IF REQUIRED 4451 012144 127 MOV D,A ;PUT THE HI ORDER BACK AGAIN 4452 4453 012145 032 LDAX D ;NOW LOAD IN THE FIRST "ACTUAL" DATUM 4454 012146 023 INX D ;UPDATE POINTER TO ACTUAL 4455 012147 275 CMP L ;COMPARE AGAINST EXPECTED 4456 012150 302 161 024 JNZ V.ERR ;REPORT IF BADNESS 4457 4458 012153 174 MOV A,H ;GET UPPER 12 BITS OF THE EXPECTED 4459 012154 346 017 ANI ^O17 ;IF DATA WAS EQUAL, ONLY DISCREPENCY CAN BE IN B7-B4 4460 4461 012156 147 MOV H,A ;GET THE 4 BITS OF DATA LEFT AFTER THE "AND" 4462 012157 032 LDAX D ;GET THE ACTUAL DATA TO ACCUM 4463 012160 274 CMP H ;SEE IF SAME 4464 012161 304 307 024 V.ERR: CNZ VERRPT ; AND B3-B0 SHOULD BE .EQ. 0.. IF NOT REPORT AS ERROR 4465 012164 033 DCX D ;FIX D TO LOOK AT THE BEGINNG OF THE "ACTUAL" 2 BYTES 4466 4467 ;NOW NEED TO CHOOSE IF NEED CHECK TWICE(FOR DOUBLE COPIES), OR IF END 4468 ;OF LIST FOR THIS CRAM WORD 4469 012165 003 INX B ;UPDATE POINTER INTO THE INDEXER LIST 4470 012166 012 LDAX B ;GET THE NEXT INDEX BYTE 4471 012167 027 RAL ;COPY SIGN INTO C-BIT 4472 012170 332 066 024 JC V.DONWD ;IF SET, END OF LIST.. GO DO NEXT CRAM WORD 4473 4474 012173 027 RAL ;WASN'T END OF LIST.. SEE IF A DOUBLE CHECKER 4475 012174 332 130 024 JC V.BLP ;JUMP BACK TO MAIN LOOP WITHOUT UPDATING IF YES 4476 4477 ;IF NOT A DOUBLE, MUST FALL THROUGH TO UPDATE EXPECTED VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-143 CMDS.M80 VERIFY CRAM CODE 4479 ;HERE WHEN MUST UPDATE EXPECTED..NOT A DOUBLE COPY 4480 012177 041 253 040 V.NXT: LXI H,VERCNT;LOAD CURRENT COUNT FOR HOW MANY COMPARE PER MEM WORD 4481 012202 065 DCR M ;DECREMENT THAT COUNT 4482 012203 312 120 024 JZ V.NXMEM ;IF DOWN TO ZERO, GO READ IN THE NEXT MEMORY WORD 4483 4484 012206 041 012 040 LXI H,EMBUF ;TELL SHR36 WHERE IT SHOULD SHIFT 4485 012211 315 167 031 CALL SHR36 ;IF NOT DOWN, SHIFT WHAT WE HAVE TO THE NEXT 12 BIT GRP 4486 012214 014 .BYTE 12. ;SPECIFY THE NEXT 12 BIT GROUP IS WHAT WE WANT 4487 012215 303 130 024 JMP V.BLP ;AND CONTINUE IN THE BIG LOOP 4488 4489 ;LIST OF INDEXER BYTES 4490 .RADIX 8 4491 012220 000 017 VERLST: .BYTE 0,17 ;READ FCN 17 (BITS 84-95) 4492 012222 002 016 .BYTE 2,16 ;READ FCN 16 (BITS 72-83) 4493 012224 002 015 .BYTE 2,15 ;READ FCN 15 (BITS 60-71) 4494 012226 002 014 .BYTE 2,14 ;READ FCN 14 (BITS 48-59) 4495 012230 002 013 .BYTE 2,13 ;READ FCN 13 (BITS 36-47) 4496 012232 102 012 .BYTE 102,12 ;READ FCN 12 (BITS 36-47) SECOND COPY 4497 012234 010 006 .BYTE 10,6 ;READ FCN 6 (BITS 24-35) 4498 012236 102 005 .BYTE 102,5 ;READ FCN 5 (BITS 24-35) SECOND COPY 4499 012240 002 004 .BYTE 2,4 ;READ FCN 4 (BITS 12-23) 4500 012242 010 000 .BYTE 10,0 ;READ FCN 0 (BITS 00-11) 4501 012244 200 .BYTE 200 ;END OF LIST MARKER 4502 .RADIX 10 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-144 CMDS.M80 VERIFY CRAM CODE 4504 ;SUBROUTINE TO READ IN THE NEXT WORD FROM MEMORY. 4505 ;ALSO CHECKS TO SEE IF AT THE END OF THE MEMORY PAGE(ADDR 1777), AND IF SO 4506 ;TO GO AND READ IN THE NEXT PAGE OF MICRO-CODE FROM THE DEVICE AGAINST 4507 ;WHICH WE ARE VERIFYING THE MICRO-CODE. 4508 012245 325 GATHER: PUSH D 4509 012246 305 PUSH B 4510 4511 012247 052 017 040 LHLD MEMAD ;GET CURRENT MEMORY ADDRESS 4512 012252 345 PUSH H ;SAVE CURRENT MEM ADDRESS 4513 4514 012253 174 MOV A,H ;GET THE HI ORDER PIECE OF THE MEM ADDRESS 4515 012254 346 004 ANI ^O4 ;SEE IF ADDRESS AT "2000" YET 4516 012256 312 274 024 JZ G.SKP ;IF NOT, SIMPLY GO READ IN THE NEXT WORD 4517 4518 ;ELSE MUST READ IN THE NEXT PAGE OF MICRO-CODE 4519 012261 315 257 023 CALL NEXTCR ;DO THE READ IN 4520 4521 012264 341 POP H ;GET OLD CRUMMY H,L OFF THE STACK 4522 012265 041 000 002 LXI H,^O1000 ;WANT TO RESET MEM ADDRESS TO BEGINNING OF PAGE 4523 012270 345 PUSH H ;PUT BACK ON STACK 4524 012271 042 017 040 SHLD MEMAD ;AND PASS NEW ADDRESS IN RAM 4525 012274 315 037 012 G.SKP: CALL EM2 ;EXAMINE THE NEXT MEMORY WORD 4526 012277 341 POP H ;GRAB THE ADDRESS WE WANT TO READ NEXT TIME 4527 012300 043 INX H ;UPDATE TO NEXT 4528 012301 042 017 040 SHLD MEMAD ;PUT IT BACK 4529 012304 301 POP B ;RESTORE THE REGS NOW 4530 012305 321 POP D 4531 012306 311 RET ;AND OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-145 CMDS.M80 VERIFY CRAM CODE 4533 ;VERIFY ERROR REPORTER SUBROUTINE. REPORTS VERIFY ERRORS AS THEY HAPPEN 4534 ;AND THEN PERMITS THE VERIFIER TO CONTINUE VERIFYING THE REST OF THE CRAM 4535 012307 345 VERRPT: PUSH H ;SAVE CONTENTS OF H,L PAIR 4536 012310 325 PUSH D ;MUST ALSO SAVE D,E 4537 012311 INTOFF ;PRINT ALL THIS GOOD STUFF (1) 012311 367 RST 6 ;GO EXIT FROM INTERNAL MODE 4538 4539 012312 041 004 040 LXI H,CRMAD ;THEN PRINT THE CRAM ADDRESS OF THE FAILING CRAM WORD 4540 012315 315 332 030 CALL P16 ;AND PRINT OUT THE ADDRESS 4541 4542 012320 PSLASH ;THROW OUT A "/" (2) 012320 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 012321 057 .BYTE SLASH ;CHAR TO PRINT 4543 4544 012322 012 LDAX B ;FETCH UP THE DIAG FUNC OF THE READ FAILURE 4545 012323 315 317 030 CALL P8BITA ;AND PRINT IT 4546 4547 012326 PCHAR ': ;SIMPLE CHARACTERS ARE ": A " (1) 012326 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 012327 072 .BYTE ': ;CHAR TO PRINT 4548 012330 PSPACE (2) 012330 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 012331 040 .BYTE SPACE ;CHAR TO PRINT 4549 012332 PCHAR 'A (1) 012332 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 012333 101 .BYTE 'A ;CHAR TO PRINT 4550 012334 PSPACE (2) 012334 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 012335 040 .BYTE SPACE ;CHAR TO PRINT 4551 4552 012336 353 XCHG ; AND NOW H,L POINTS AT THE ACTUAL 4553 012337 053 DCX H ;NOW D,E POINTS TO THE ACTUAL 4554 012340 315 332 030 CALL P16 ;PRINT THE ACTUAL DATA 4555 012343 353 XCHG ;FIX SO H,L POINTS AT TEMP LOC ONCE AGAIN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-146 CMDS.M80 VERIFY CRAM CODE 4557 012344 PSPACE ;ANOTHER SPACE (2) 012344 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 012345 040 .BYTE SPACE ;CHAR TO PRINT 4558 012346 PCHAR 'E ;A "W" STANDS FOR "WAS" (1) 012346 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 012347 105 .BYTE 'E ;CHAR TO PRINT 4559 012350 PSPACE (2) 012350 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 012351 040 .BYTE SPACE ;CHAR TO PRINT 4560 4561 012352 052 012 040 LHLD EMBUF ;GET THE EXPECTED DATA INTO H,L PAIR 4562 012355 174 MOV A,H ;WANT TO STRIP ANY BITS ABOVE 12 BITS 4563 012356 346 017 ANI ^O17 ;KEEP ONLY RELEVANT BITS 4564 012360 147 MOV H,A ;PUT IT BACK 4565 012361 042 100 040 SHLD TMPB2 ;PUT IT IN THE TEMP PLACE 4566 012364 315 327 030 CALL P16. ;PRINT THE EXPECTED 4567 012367 PCRLF (2) 012367 347 RST 4 (2) 012370 002 .BYTE 2 4568 4569 012371 305 PUSH B ;SAVE B REG TOO 4570 012372 315 205 034 CALL DECNET ;IF THERE IS A HOST, TELL HIM TOO 4571 012375 301 POP B 4572 012376 INTON ;AND BACK TO INTERNAL MODE (1) 012376 327 RST 2 ;GO SET INTERNAL MODE 4573 012377 321 POP D 4574 012400 341 POP H 4575 012401 311 RET VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-147 CMDS.M80 VERIFY CRAM CODE 4577 ;EXECUTE CHANNEL COMMANDS.... 4578 012402 041 052 036 DSXFR: LXI H,DSKSEQ ;PNTR TO COMMAND LIST 4579 012405 315 036 025 XCTNOW: CALL CHNXCT ;EXECUTE CHANNEL LIST 4580 012410 311 RET 4581 4582 012411 041 215 036 MTXFR: LXI H,MTASEQ ;PNTR TO COMMAND LIST 4583 012414 062 144 040 XCTMTA: STA SKP.GO ;ACCUM HAD XFR TYPE..SAVE IT 4584 012417 303 005 025 JMP XCTNOW ;GO EXECUTE THE CHANNEL COMMAND LIST 4585 4586 012422 041 275 036 QMXFR: LXI H,QTXFR ;PNTR TO COMMAND LIST 4587 012425 303 014 025 JMP XCTMTA ;GO EXECUTE THE CHANNEL COMMAND LIST 4588 4589 012430 041 363 036 MTRESET: LXI H,MTARST ;CHANNEL COMMAND LIST TO CLEAR ERROR FROM MAGTAPE 4590 012433 303 005 025 JMP XCTNOW ;GO EXECUTE THE CHANNEL COMMAND LIST VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-148 CMDS.M80 CHANNEL COMMAND LIST EXECUTOR 4592 .SBTTL CHANNEL COMMAND LIST EXECUTOR 4593 ;ROUTINE TO A CHANNEL COMMAND LIST TYPE OPERATION, FOR DATA 4594 ;TRANSFERS FROM OUR SELECTED BOOT DEVICE.. 4595 ;COMMAND LIST IS CODED AS FOLLOWS 4596 ; THE LIST IS A SERIES OF 36-BITCOMMANDS. 4597 ;WE HAVE FREE USE OF BITS 0-17 AS COMMAND TYPES 4598 ; BITS 15,16,17 .EQ. 0 MEAN "DI" COMMAND 4599 ; BITS 15,16,17 .EQ. 1 MEAN "LI" COMMAND 4600 ; BITS 15,16,17 .EQ. 2 MEAN "EI" COMMAND 4601 ; BITS 15,16,17 .EQ. 3 MEAN "WAIT" COMMAND 4602 ; BITS 15,16,17 .EQ. 4 MEAN "ERRTST" COMMAND 4603 ; BITS 15,16,17 .EQ. 5 MEAN "END" OF COMMAND LIST 4604 ; BITS 15,16,17 .EQ. 6 MEAN "TWAIT" COMMAND 4605 ; BITS 15,16,17 .EQ. 7 MEAN "UBA" COMMAND 4606 4607 ;POINTER TO THE CURRENT COMMAND LIST IS ALWAYS STORED IN H,L 4608 012436 CHNXCT: INTON ;SET UP FOR INTERNAL MODE (1) 012436 327 RST 2 ;GO SET INTERNAL MODE 4609 012437 305 PUSH B 4610 012440 325 PUSH D 4611 012441 345 PUSH H 4612 4613 012442 021 002 000 DSCON: LXI D,2 ;"D,E" GETS THE CONSTANT "2" 4614 012445 031 DAD D ;NOW "H,L" POINTS TO "DATA+2"(BITS 12-19) 4615 4616 012446 104 MOV B,H ;COPY "H,L" INTO "B,C" 4617 012447 115 MOV C,L 4618 012450 345 PUSH H ;SAVE "H,L" 4619 012451 176 MOV A,M ;GET BITS 12-19 INTO ACCUM 4620 4621 012452 037 RAR ;NOW JUSTIFY ACCUM AT BITS 16,17 4622 012453 037 RAR ;TAKES 2 SHIFTS 4623 012454 346 017 ANI ^O17 ;OFF ALL BUT BITS 14,15,16,17 4624 012456 137 MOV E,A ;NOW PUT INTO LO-ORDER HALF OF DOUBLE REG 4625 012457 041 101 025 LXI H,DSLST ;GET A PNTR TO THE DISPATCHING LIST 4626 012462 031 DAD D ;CREAT PNTR TO THE COMMAND 4627 4628 012463 136 MOV E,M ;GET LO ORDER PIECE OF CMD DISPATCH 4629 012464 043 INX H 4630 012465 126 MOV D,M ;GET HI ORDER PIECE OF CMD DISPATCH 4631 012466 353 XCHG ;ASSEMBLED ADDRESS TO "H,L" 4632 012467 021 074 025 LXI D,XFRRT ;NOW GET A PSEUDO RETURN PC TO PUT ON STACK 4633 012472 325 PUSH D ;AND PUT IT THERE 4634 4635 012473 351 PCHL ;DISPATCH TO THAT ASSEMBLED ADDRESS 4636 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-149 CMDS.M80 CHANNEL COMMAND LIST EXECUTOR 4638 ;UPON COMPLETION OF THE COMMAND LIST COMMANDS, YOU GENERALLY 4639 ;RETURN HERE IN THE CODE 4640 012474 341 XFRRT: POP H ;GET THE POINTER TO CURRENT LOCATION IN COMMAND LIST 4641 012475 043 INX H ;MAKE IT POINT TO NEXT WORD IN THE LIST 4642 012476 303 042 025 JMP DSCON ;AND CONTINUE IN COMMAND LIST EXECUTOR 4643 4644 ;COMMAND LIST DISPATCH SELECTION 4645 012501 177 025 DSLST: .ADDR CMDDI ;DI CMD .EQ. 0 4646 012503 125 025 .ADDR CMDLI ;LI CMD .EQ. 2 4647 012505 121 025 .ADDR CMDEI ;EI CMD .EQ. 4 4648 012507 226 025 .ADDR CMDWAIT ;WAIT CMD .EQ. 6 4649 012511 275 025 .ADDR CMDERCHK ;ERRTST CMD .EQ. 10 4650 012513 315 025 .ADDR CMDEN ;END CMD .EQ. 12 4651 012515 257 025 .ADDR CMDTWAIT ;WAIT CMD WITH NO TIMEOUT. CHECKS FOR BIT TRUE .EQ. 14 4652 012517 161 025 .ADDR CMDUBA ;LI TYPE CMD. NO OFFSETS, GOOD FOR UBA STUFF .EQ. 16 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-150 CMDS.M80 CHANNEL COMMAND LIST EXECUTOR 4654 ;CODE FOR "EI" COMMAND 4655 012521 247 CMDEI: ANA A ;CLR THE "C-BIT" 4656 012522 303 126 025 JMP CMDLI1 ;GO TO COMMON CODE FOR LI AND EI COMMAND 4657 4658 ;CODE FOR "LI" COMMAND 4659 012525 067 CMDLI: STC ;SET THE "C-BIT" 4660 012526 365 CMDLI1: PUSH PSW ;AND SAVE IT 4661 012527 MOV5B ;PASS THE COMMAND LIST EXECUTOR THE RHBASE ADDRESS (1) 012527 347 RST 4 (1) 012530 000 .BYTE 0 4662 012531 242 040 .ADDR RHBASE ;KEPT IN HERE 4663 012533 024 040 .ADDR IOAD ;USED IN HERE 4664 4665 012535 041 026 040 LXI H,IOAD+2 ;"H,L" PNTS TO DEST+2 4666 012540 072 254 040 LDA UBANUM ;CURRENT UBA NUMBER INTO ACCUM 4667 012543 266 ORA M ;THROW IN THE CURRENT BITS 4668 012544 167 MOV M,A ;PUT IT ALL BACK 4669 4670 012545 053 DCX H ;NOW MAKE "H,L" POINT TO ADDR +0 4671 012546 053 DCX H 4672 012547 013 DCX B ;MAKE "B,C" PAIR POINT TO SELECTED OFFSET FROM BASE 4673 012550 012 LDAX B ;GET SELECTED OFFSET 4674 012551 206 ADD M ;ADD OFFSET TO THE BASE 4675 012552 167 MOV M,A ;AND PUT THE WHOLE MESS BACK 4676 012553 361 POP PSW ;NOW GET STATE OF PROCESSOR FLAGS 4677 012554 330 RC ;IF "C" SET,IT WAS AN LI AND WE ARE DONE 4678 4679 ;CALL THRU IF "C" CLR..IT WAS EI AND WE MUST FINISH IT 4680 012555 315 360 012 CALL EI1 ;EXECUTE "EI" CMD 4681 012560 311 RET ;ALL DONE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-151 CMDS.M80 CHANNEL COMMAND LIST EXECUTOR 4683 ;CODE FOR LI TYPE COMMAND ONLY USING NO OFFSETS, TAKING THE ADDRESSES 4684 ;EXACTLY AS PRESENTED.. GOOD FOR UBA OPERATIONS, WHICH REQUIRE NO OFFSETS 4685 012561 021 026 040 CMDUBA: LXI D,IOAD+2 ;"D,E" PNTS TO DEST+2 4686 012564 325 PUSH D ;SAVE THE ADDRESS OF UBA/RH ADDRESS 4687 012565 315 336 025 CALL MOV18B ;MOVE SOME DATA 4688 012570 341 POP H ;ADDR OF UBA/RH INTO H,L 4689 012571 072 254 040 LDA UBANUM ;CURRENT UBA NUMBER INTO ACCUM 4690 012574 266 ORA M ;THROW IN THE CURRENT BITS 4691 012575 167 MOV M,A ;PUT IT ALL BACK 4692 012576 311 RET ;WE ARE DONE 4693 4694 ;CODE FOR DI COMMAND 4695 012577 012 CMDDI: LDAX B ;GET DISP CODE TO SEE IF INDIRECT 4696 012600 247 ANA A ;CHECK THE SIGN BIT 4697 012601 362 214 025 JP DILOCL ;AND JUMP IF NO INDIRECTION 4698 4699 ;FALL TO HERE IF WAS INDIRECT 4700 012604 151 MOV L,C ;PASS ADDR IN "B,C" TO "H,L" 4701 012605 140 MOV H,B 4702 012606 053 DCX H ;NOW BACK UP PNTR TO HI ORDER PCE OF INDIRECT WRD 4703 012607 106 MOV B,M ;AND INTO B 4704 012610 053 DCX H ;NOW TO LO ORDER PIECE OF INDIRECT WORD 4705 012611 116 MOV C,M ;LO ORDER PIECE TO C AND DONE 4706 012612 003 INX B ;"B,C" MUST POINT TO SRC + 2 4707 012613 003 INX B 4708 012614 021 051 040 DILOCL: LXI D,DMDAT+2 ;"D,E" POINTS TO DEST+2 4709 012617 315 336 025 CALL MOV18B ;MOVE SOME STUFF AROUND 4710 012622 315 017 013 CALL DI1 ;EXECUTE THE DEPOSIT 4711 012625 311 RET ;AND BACK TO COMMAND LIST 4712 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-152 CMDS.M80 CHANNEL COMMAND LIST EXECUTOR 4714 ;CODE FOR WAIT COMMAND(FOR WAITING FOR A TAPE TO FINISH, FOR EXAMPLE) 4715 012626 CMDWAIT: 4716 012626 257 XRA A ;CLEAR ACCUM 4717 012627 127 MOV D,A ;NOW CLR "D", THE REGISTER WE WILL USE FOR TIMEOUT COUNT 4718 012630 137 MOV E,A ;CLR "E" TOO 4719 4720 012631 305 WAITLP: PUSH B ;SAVE B,C 4721 012632 315 357 025 CALL CHKBIT ;CHECK BITS VERSUS DEVICE STATUS TO SEE IF SET(I.E READY) 4722 012635 301 POP B ;RESTORE B,C 4723 012636 300 RNZ ;IF READY BIT SET, ITS OK, GO AWAY 4724 4725 ;FALL THRU IF READY NOT SET 4726 012637 305 PUSH B ;SAVE B,C FROM DESTRUCTION 4727 012640 325 PUSH D ;SAVE TIME-OUT COUNT 4728 012641 315 360 012 CALL EI1 ;DO ANOTHER EXAMINE OF DEVICE STATUS TO SEE IF READY NOW 4729 012644 321 POP D ;GET THE TIME-OUT COUNT 4730 012645 301 POP B ;RESTORE B,C 4731 012646 023 INX D ;INCREMENT 4732 012647 173 MOV A,E ;SEE IF COUNT DOWN TO ZERO YET 4733 012650 262 ORA D ;USE TOP HALF TOO 4734 012651 302 231 025 JNZ WAITLP ;GO TRY AGAIN 4735 4736 ;FALL THRU IF DEVICE TIME'S OUT BEFORE GETTING A READY 4737 012654 303 303 025 JMP DEVERR ;GO REPORT "?BT" AND THE FAILED PC 4738 4739 ;CODE FOR TWAIT COMMAND 4740 012657 305 CMDTWAIT: PUSH B ;FIRST SAVE THE BC POINTERS 4741 012660 315 360 012 CALL EI1 ;READ THE CURRENT STATE AS IT IS NOW 4742 012663 301 POP B ;RESET B TO A GOOD VALUE 4743 012664 305 PUSH B ;AND SAVE IT FROM DESTRUCTION AGAIN 4744 012665 315 357 025 CALL CHKBIT ;NOW SEE IF APPROPRIATE BIT IS SET 4745 012670 301 POP B ;RESTORE 4746 012671 300 RNZ ;RETURN IF BIT WAS SET AS DESIRED 4747 012672 303 303 025 JMP DEVERR ;ELSE.. GO SAY ERR, BIT WAS NOT SET AS DESIRED 4748 4749 ;CODE FOR ERROR TEST COMMAND 4750 012675 305 CMDERCHK: PUSH B ;SAVE B,C 4751 012676 315 357 025 CALL CHKBIT ;FIRST GO CHECK TO SEE IF ANY OF DESIRED BITS SET 4752 012701 301 POP B ;AND RESTORE 4753 012702 310 RZ ;IF NONE SET, RETURN CAUSE ALL IS OK 4754 4755 ;FALL TO HERE IF SOME BITS SET..HAD DEVICE ERROR & THEREFORE "BOOT" FAILED 4756 012703 140 DEVERR: MOV H,B ;NOW COPY "B,C" TO "H,L" REGISTER 4757 012704 151 MOV L,C 4758 4759 012705 042 154 040 SHLD ERRCD ;"H,L" NOW HAS FAILING PC 4760 012710 INTOFF ;LET ALL MESSAGES PRINT NOW (1) 012710 367 RST 6 ;GO EXIT FROM INTERNAL MODE 4761 012711 257 XRA A ;CLR C-BIT, SO THAT IT WILL SET LATER, TO INDICATE ERR 4762 012712 303 325 025 JMP DEVEXIT ;GO EXIT WITH MESSING WITH PRINT FLAGS VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-153 CMDS.M80 CHANNEL COMMAND LIST EXECUTOR 4764 ;CODE FOR THE END COMMAND 4765 012715 021 004 017 CMDEN: LXI D,MAD000 ;GUARANTEE CSL BUS ADDR REG .EQ. 0 AFTER XFR 4766 012720 315 207 033 CALL ADATP ;WRITE THE CSL BUS ADDRESS REG WITH 0'S 4767 012723 INTOFF ;CLR INTERNAL MODE (1) 012723 367 RST 6 ;GO EXIT FROM INTERNAL MODE 4768 012724 067 STC ;SET THE C-BIT, SO THAT IT WILL BE CLEARED LATER 4769 012725 077 DEVEXIT: CMC ;COMPLEMENT C-BIT, SO IT WILL SAY ERR, OR NO ERR 4770 012726 341 POP H ;THROW OUT PSEUDO RETURN FROM STACK TOP 4771 012727 341 POP H ;THROW OUT THE SAVED "H,L" 4772 012730 341 POP H ;AND RESTORE ALL THE REGISTERS 4773 012731 321 POP D ;THAT WE SAVED 4774 012732 301 POP B 4775 012733 076 000 MVI A,0 ;ACCUM WILL ALWAYS BE 0 ON EXIT FROM CMD LIST EXECUTOR 4776 012735 311 RET 4777 ;ROUTINE FOR MOVING 3 BYTES OF DATA 4778 ;"B,C" HAS SRC+2..."D,E" HAS DST+2 4779 012736 046 002 MOV18B: MVI H,2 ;COUNT OF 3 IS HOW MANY TO MOVE 4780 012740 012 LDAX B ;GET PIECE OF SOURCE 4781 012741 346 003 ANI 3 ;ONLY INTERESTED IN BITS 18,19 4782 012743 022 STAX D ;PUT AT DESTINATION 4783 012744 013 DCX B ;POINT TO NEXT RELEVANT BYTE 4784 012745 033 DCX D ;FOR SRC AND DST 4785 012746 012 MOV18X: LDAX B ;GET A PIECE OF THE SRC TO ACCUM 4786 012747 022 STAX D ;AND PUT AT DESTINATION PLACE 4787 012750 013 DCX B ;DOWN THE POINTER 4788 012751 033 DCX D ;DOWN THE OTHER POINTER 4789 012752 045 DCR H ;AND DOWN THE COUNTER.. 4790 012753 302 346 025 JNZ MOV18X ;CONTINUE TILL MOVED 3 BYTES 4791 012756 311 RET ;THEN OUT 4792 4793 ;COMMON ROUTINE FOR CHECKING DEVICE STATUS, FOR EITHER DEVICE ERRORS OR 4794 ;READY BIT TRUE..MUST BE CALLED IMMEDIATLY AFTER AN "EI." COMMAND 4795 012757 052 012 040 CHKBIT: LHLD EMBUF ;GET CURRENT DEVICE STATUS INTO "H,L" 4796 012762 013 DCX B ;MAKE B PNT TO +1 4797 012763 013 DCX B ; AND MAKE IT PNT TO +0 4798 012764 012 LDAX B ;BYTE OF DESIRED INTO ACCUM 4799 012765 245 ANA L ;COMPARE AGAINST CURRENT DEVICE 4800 012766 300 RNZ ;IF NON-ZERO, NO NEED TO LOOK FURTHER 4801 4802 012767 003 INX B ;IF 1ST BYTE WAS ZERO, BUMP PNTR TO LOOK AT NEXT BYTE 4803 012770 012 LDAX B ;NEXT BYTE INTO THE ACCUM 4804 012771 244 ANA H ;COMPARE VERSUS DESIRED 4805 012772 311 RET ;PLAIN RETURN..Z BIT WILL BE SET APPROPRIATELY VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-154 CMDS.M80 *** "BC" CMD *** 4807 .SBTTL *** "BC" CMD *** 4808 ;CODE WHICH PERFORMS THE VERY FAMOUS BOOT CHECK I 4809 012773 315 231 005 BCCMD: CALL MRCMD ;MAKE SURE MACHINE IS STOPPED 4810 012776 INTON ;SET UP INTERNAL MODE (1) 012776 327 RST 2 ;GO SET INTERNAL MODE 4811 012777 CLRB ERRCD ;BEGIN BY CLEARING THE ERROR CODES 4812 013001 CLRB ERRCD+1 ;MUST CLEAR BOTH HALVES 4813 001 .IF NDF,NEEDRM 4814 4815 013003 CLRRM BUSAD ;WILL GENERATE A STARTING BUFFER OF (400000,,0) (1) 013003 347 RST 4 (1) 013004 012 .BYTE 10. (1) 013005 047 040 .ADDR BUSAD+5 4816 013007 076 010 MVI A,^O10 ;THIS TURNS OUT TO BE BIT0 IN 36-BIT LAND 4817 013011 062 046 040 STA BUSAD+4 ; SET IT 4818 4819 013014 001 000 001 LXI B,^O400 ;SET B=1, C=0 4820 013017 305 BC.ALP: PUSH B ;SAVE COUNTERS 4821 013020 315 241 011 CALL DBCMD ;EXECUTE THE DEPOSIT BUS 4822 4823 ;CHECK FOR FAILURE 4824 013023 072 154 040 LDA ERRCD ;FETCH AN ERROR CODE 4825 013026 247 ANA A ;SET 8080 CONDITION CODES 4826 013027 302 004 027 JNZ BCA.ERR ;GO STANDARD ERROR REPORT IF ERR FOUND 4827 4828 ;NO ERROR, GENERATE THE NEXT DATUM 4829 013032 041 042 040 LXI H,BUSAD ;POINT TO A BUFFER TO BE SHIFTED 4830 013035 315 167 031 CALL SHR36 ;SHIFT 36 BITS(I.E. FLOAT A 1 OR 0) 4831 013040 001 .BYTE 1 ;SHIFT ONLY ONE PLACE AT A TIME 4832 4833 ;NOW CHECK FOR END OF TEST 4834 013041 301 POP B ;GRAB UP THE CURRENT LOOP COUNTERS 4835 013042 014 INR C ;UP COUNT FOR THIS DATAUM 4836 013043 171 MOV A,C ;COPY TO ACCUM 4837 013044 376 044 CPI 36. ;NOW SEE IF FLOATED DOWN THE ENTIRE 36 BIT WORD 4838 013046 332 017 026 JC BC.ALP ;JUMP IF NOT DONE A GROUP OF 36 YET.. 4839 4840 ;HERE WHEN DONE A GROUP OF 36, SEE IF THIS WAS FIRST OR SECOND TIME THROUGH 4841 013051 005 DCR B ;DECREMENT "TIMES THROUGH THE LOOP" COUNTER 4842 013052 372 075 026 JM BC.2ND ;IF MINUS, TIME TO GET OUT..GO NEXT PHASE OF TEST 4843 4844 ;HERE WHEN DONE FIRST WORD, TIME TO SET UP TO FLOAT A 0 THROUGH A FIELD 4845 ;OF ONES 4846 013055 MOV5B ;MOVE 2ND DATA PATTERN (1) 013055 347 RST 4 (1) 013056 000 .BYTE 0 4847 013057 070 026 .ADDR BC.DB2 ;INIT 2ND PATTERN TO BE (377777,,777777) 4848 013061 042 040 .ADDR BUSAD ;AND THIS IS THE PLACE THAT THE DB COMMAND USES 4849 4850 013063 016 000 MVI C,00 ;RESET THE COUNTER 4851 013065 303 017 026 JMP BC.ALP ;AND GO ROUND FOR THE SECOND TIME...... 4852 013070 BC.DB2: D 377,777,,777,777 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-155 CMDS.M80 *** "BC" CMD *** 4854 ;BOOTCHECK CODE FOR EXECUTING A TEST OF THE CRAM AND ITS ABILITIY TO HOLD 4855 ;ALL ONES AND ZEROES, AND TO SEE IF ITS ADDRESSING LOGIC WORKS AS 4856 ;IT SHOULD.... 4857 013075 041 000 000 BC.2ND: LXI H,00 ;START AT CRAM ADDRESS 00 4858 013100 315 250 026 BC.BLP: CALL W.CRMZ ;WRITE THE LOCATION WITH ALL ZEROES 4859 013103 043 INX H ;UPDATE TO NEXT CRAM ADDRESS 4860 013104 174 MOV A,H ;NOW CHECK TO SEE IF DONE ALL 4861 013105 346 010 ANI ^O10 ;IS ADDRESS AT "4000" YET?? 4862 013107 312 100 026 JZ BC.BLP ;BACK AND ZERO MORE IF NOT YET 4863 4864 ;NOW READY FOR COMBINED ADDRESS AND DATA TEST 4865 013112 046 000 MVI H,00 ;L IS ALREADY .EQ. 0, NOW MAKE H,L PAIR .EQ. 0 4866 013114 315 340 014 BC.BL1: CALL CADWR ;WRITE CURRENT CRAM ADDRESS 4867 013117 345 PUSH H ;AND SAVE IT FOR A WHILE 4868 013120 315 205 013 CALL CP1 ;CLOCK TO GET THE CONTENTS OF THAT LOC TO C.R. 4869 013123 315 041 015 CALL RCINT ;NOW READ-IN THE CONTENTS OF THE C.R. 4870 013126 041 000 000 LXI H,00 ;DATA TO VERIFY AGAINST IS 00 4871 013131 315 276 026 CALL V.VER ;VERIFY CONTENTS OF C.R. TO BE ALL 0 4872 013134 315 241 026 CALL A.CRMO ;NOW WRITE THAT LOCATION WITH ALL ONES 4873 013137 341 POP H ;RETRIEVE CURRENT CRAM ADDRESS 4874 013140 043 INX H ;UP TO THE NEXT ADDRESS 4875 013141 174 MOV A,H ;COPY HI HALF TO ACCUM, SO CAN CHECK FOR 4000 4876 013142 346 010 ANI ^O10 ;ADDRESS AT "4000"?? 4877 013144 312 114 026 JZ BC.BL1 ;BACK INTO LOOP IF NOT YET.. 4878 4879 ;WHEN DONE HERE, FALL INTO MEMORY PART OF BOOT CHECK 4880 ;A PAGE MOS MEMORY CHECK 4881 013147 315 077 020 BC.3RD: CALL ZMCMD ;FIRST CLEAR THE ENTIRE MOS MEMORY(AT LEAST TRY) 4882 4883 013152 MOV5B ;SET UP THE INITIAL DATA (1) 013152 347 RST 4 (1) 013153 000 .BYTE 0 4884 013154 271 022 .ADDR ONES ;DATA FOR DEPOSITING IS ALL ONES 4885 013156 047 040 .ADDR DMDAT ;.. THE DEPOSIT BUFFER 4886 4887 013160 MOV5B ;SET UP THE STARTING MEMORY ADDRESS (1) 013160 347 RST 4 (1) 013161 000 .BYTE 0 4888 013162 257 022 .ADDR MA1000 ;START AT ADDRESS 1000 4889 013164 017 040 .ADDR MEMAD ;.. MEMORY ADDRESS BUFFER 4890 4891 013166 315 037 012 BC.CLP: CALL EM2 ;EXAMINE A LOCATION 4892 013171 315 033 033 CALL CMP36 ;THEM COMPARE RESULTS..DATA SHOULD BE ALL ZEROES 4893 013174 012 040 .ADDR EMBUF ;THIS IS THE ACTUAL READ-IN DATA 4894 013176 004 017 .ADDR ZEROES ;VERSUS 36-BITS OF 0'S 4895 013200 302 355 026 JNZ BC.CERR ;GO TO ERROR REPORT IF NOT ALL ZEROES 4896 4897 ;FALL THRU IF THAT WENT OK. 4898 013203 315 235 012 CALL DM2 ;NOW DEPOSIT ONES INTO THAT LOC AND CONTINUE 4899 4900 013206 315 037 012 CALL EM2 ;WHILE WE ARE AT IT, WE'LL CHECK ALL ONES 4901 013211 315 033 033 CALL CMP36 ;DO THE 36-BIT COMPARE 4902 013214 012 040 .ADDR EMBUF ;THIS STUFF JUST READ IN 4903 013216 271 022 .ADDR ONES ;AGAINST ALL ONES VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-156 CMDS.M80 *** "BC" CMD *** 4904 013220 302 355 026 JNZ BC.CERR ;IF BAD, SAY SO.. 4905 4906 013223 052 017 040 LHLD MEMAD ;FETCH UP THE CURRENT MEMORY ADDRESS 4907 013226 043 INX H ;UPDATE TO THE NEXT 4908 013227 174 MOV A,H ;COPY HI PIECE TO THE ACCUM 4909 013230 346 004 ANI ^O4 ;SEE IF REACHED ADDRESS 2000 4910 013232 042 017 040 SHLD MEMAD ;REPLACE THE UPDATED ADDRESS FIRST 4911 013235 312 166 026 JZ BC.CLP ;AND CONTINUE IF HAD NOT REACHED THE MAX 4912 4913 013240 311 RET ;RETURN..DONE ALL BOOT CHECK OK VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-157 CMDS.M80 *** "BC" CMD *** 4915 ;SUBROUTINES REQUIRED FOR THE CRAM TESTING 4916 ;SUBROUTINES FOR WRITING ALL ONES AND ALL ZEROES INTO A SELECTED CRAM 4917 ;LOCATION.. DESIRED ADDRESS PASSED IN THE H,L REGISTER(FOR W.XXX CALLS) 4918 ;USES CURRENTLY SELECTED ADDRESS FOR (A.XXX CALLS) 4919 013241 345 A.CRMO: PUSH H ;SAVE H,L 4920 013242 041 377 377 LXI H,-1 ;H,L TO ALL ONES INDICATES THE ALL ONES DATA DESIRED 4921 013245 303 257 026 JMP W.LOC ;GO COMMON CODE 4922 4923 013250 315 340 014 W.CRMZ: CALL CADWR ;WRITE DESIRED ADDRESS 4924 013253 345 A.CRMZ: PUSH H ;SAVE H,L 4925 013254 041 000 000 LXI H,00 ;SET TO ZERO, DATA IS ALL ZEROES 4926 013257 016 007 W.LOC: MVI C,7 ;TAKES 8 FUNCTION WRITES TO DO ALL OF ONE CRAM LOC 4927 013261 171 W.LP: MOV A,C ;GET CURRENT FUNCTION TO ACCUM 4928 013262 062 010 040 STA CRMFN ;PUT FUNCTION INTO LOC USED BY STANDARD ROUTINE 4929 013265 315 303 014 CALL WFUNC ;WRITE ONE OF THE 8 PIECES OD A CRAM LOC 4930 013270 015 DCR C ;DOWN COUNT 4931 013271 362 261 026 JP W.LP ;AS LONG AS .GE. 0, KEEP GOING 4932 013274 341 POP H ;HERE WHEN DONE ALL 8 4933 013275 311 RET ;NOW GET OUT OF HERE. VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-158 CMDS.M80 *** "BC" CMD *** 4935 ;ROUTINE TO VERFIY THAT A CRAM LOCATION IS INDEED ALL ONES OR ALL ZEROES. 4936 ;NO ARGUMENTS PASSED TO THIS ROUTINE 4937 013276 042 316 040 V.VER: SHLD CRMBF+^O14 ;ALL DONT CARE LOCS OF THE "READ" ARE FUDGED 4938 013301 042 320 040 SHLD CRMBF+^O16 ; TO MATCH EXPECTED DATA 4939 013304 042 322 040 SHLD CRMBF+^O20 ; THERE ARE 12 DONT CARE LOCATIONS 4940 4941 013307 042 332 040 SHLD CRMBF+^O30 ; SOME ARE VARIOUS ADDRESS(NXT/CURRENT/SUBRTN) 4942 013312 042 334 040 SHLD CRMBF+^O32 ; AND SOME ARE JUST UNBUFFERED COPIES OF THE 4943 013315 042 336 040 SHLD CRMBF+^O34 ; BUS 4944 4945 013320 175 MOV A,L ;NOW COPY EXPECTED DATA INTO "B,C" PAIR 4946 013321 057 CMA ;FIRST COMPLIMENT 4947 013322 117 MOV C,A ;THEN MOVE 4948 013323 174 MOV A,H ; NEED BOTH HALVES PLEASE 4949 013324 057 CMA ;COMPLIMENT 4950 013325 107 MOV B,A ;THEN MOVE 4951 4952 013326 041 302 040 LXI H,CRMBF ;NOW POINT TO BEGINNING OF BUFFER WHERE EXPECTED DATA 4953 013331 136 V.BCLP: MOV E,M ;IS KEPT.. PROCEED TO COPY BUFFER DATA INTO 4954 013332 043 INX H ;(UPDATE POINTER) 4955 013333 126 MOV D,M ;THE D,E REGISTER PAIR 4956 013334 043 INX H ;AND UPDATE MEMORY POINTER AFTER EACH MOVE 4957 013335 353 XCHG ;SWAP, SO NOW "H,L" HAS BUFFER, "D,E" HAS POINTER 4958 013336 011 DAD B ;ADD COMPLIMENT TO EXPECTED...SHOULD GET 0. 4959 013337 043 INX H ; TWO'S COMPLIMENT , THAT IS.. 4960 013340 175 MOV A,L ;PIECE TO ACCUM 4961 013341 264 ORA H ;"OR" IN THE OTHER PIECE 4962 013342 302 365 026 JNZ BC.BERR ;AND GO HANDLE ERROR IF RESULTS .NE. 0 4963 4964 ;YOU FELL THROUGH TO HERE IF DATA CHECK WAS OK.. 4965 013345 353 XCHG ;SWAP..NOW "H,L" HAS POINTER, "D,E" HAS 00 4966 013346 076 342 MVI A,<&^O377> ;CHECK IF DONE 4967 013350 275 CMP L ;SEE IF AT LAST LOCATION IN LIST 4968 013351 302 331 026 JNZ V.BCLP ;JUMP BACK IF NOT YET 4969 013354 311 RET ;ELSE OK TO RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-159 CMDS.M80 *** "BC" CMD *** 4971 ;ERROR REPORTING 4972 013355 052 017 040 BC.CERR: LHLD MEMAD ;GRAB UP FAILED MEM ADDRESS 4973 013360 006 100 MVI B,^O100 ;GET A BIT TO SET IN ERROR PRINTOUT 4974 013362 303 371 026 JMP BCC.ERR ;GO PROCESS STANDARD ERROR TYPEOUTS 4975 013365 341 BC.BERR: POP H ;CLEAR A RETURN ADDRESS 4976 013366 006 200 MVI B,^O200 ;BIT TO SET FOR CRAM FAILURES 4977 013370 341 POP H ;NOW GATHER UP THE CURRENT CRAM ADDRESS 4978 013371 042 154 040 BCC.ERR: SHLD ERRCD ;SAVE 1 BYTE BY DEPOSITING TWICE 4979 013374 174 MOV A,H ;HI HALF TO THE ACCUM 4980 013375 260 ORA B ;THROW IN A WEIGHT SO NUMBER WILL DIFFER 4981 013376 062 155 040 STA ERRCD+1 ;PUT NUMBER INTO ERROR CODE LOC 4982 013401 303 011 027 JMP BCB.ERR ;AND GO PRINT OUT THE CORRECT ERROR STUFF VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-160 CMDS.M80 *** "BC" CMD *** 4984 013404 301 BCA.ERR: POP B ;GET COUNTER OFF THE STACK 4985 013405 171 MOV A,C ;SUBTEST TO ACCUM 4986 013406 062 154 040 STA ERRCD ;PLACE FROM WHICH TO REPORT ERRORS 4987 013411 BCB.ERR: CLRB NOPNT ;GUARANTEE PRINTING ON 4988 013413 PLINE ERRMSG ;"?BC" (1) 013413 337 RST 3 ;PRINT LINE OF CHARS (1) 013414 201 037 .ADDR ERRMSG ;BUFF TO PRINT 4989 013416 041 154 040 LXI H,ERRCD ;POINT AT THE ERROR I.D. 4990 013421 315 332 030 CALL P16 ;PRINT 4991 013424 303 166 032 JMP MMERR ;OUT 4992 000 .ENDC VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-161 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 4994 .SBTTL ****KS10 CONSOLE SUBROUTINE FILE 4995 ;SUBROUTINE TO CHECK IF THE CPU IS RUNNING, AND IF IT IS, 4996 ;TO ABORT THE COMMAND THAT CALLED IT 4997 013427 341 .RUN..: POP H ;MUST FIX THE STACK 4998 013430 365 PUSH PSW ;SAVE FLAGS(STATE OF THE "C-BIT" 4999 013431 072 165 040 LDA RNFLG ;CHECK SOFTWARE RUN FLAG TO SEE IF CPU CLK ON 5000 013434 247 ANA A ;IS IT ZERO? , OR NOT ZERO 5001 013435 302 042 027 JNZ YSRUN ;IF NOT ZERO, JMP OFF TO PRINT MESSAGE 5002 5003 013440 361 POP PSW ;OTHERWISE, RESTORE FLAGS 5004 013441 311 RET ;AND OUT 5005 5006 013442 YSRUN: PLINE RN. ;MESSAGE TO SAY RUNNING.. (1) 013442 337 RST 3 ;PRINT LINE OF CHARS (1) 013443 206 037 .ADDR RN. ;BUFF TO PRINT 5007 013445 303 166 032 JMP MMERR ;NOW GO RESTART OURSELVES 5008 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-162 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5010 ;ROUTINE TO REPORT A PARITY ERROR WHEN DETECTED BY THE 8080 CONSOLE 5011 013450 RPTPAR: CLRB NOPNT ;TURN TYPING ON 5012 013452 257 XRA A ;ACCUM MUST BE ZERO 5013 013453 323 206 OUT CLKCTL ;KILL CLK, SO PAR ERR CLRING WONT RELEASE THE CPU CLKS 5014 5015 001 .IF DF,SCECOD 5016 013455 072 326 042 LDA SC.OFF ;GET FLAG TO SEE IF WE CAN TRY FOR SOFT RECOVER 5017 013460 247 ANA A ;SET 8080 FLAGS 5018 013461 302 127 027 JNZ HRDERR ;IF FLAG .NE. 0, THEN WE WILL NOT RECOVER 5019 ;FIRST THING WE NEED TO DO IS CHECK FOR CRAM/CRA PARITY ERRORS, AND DECIDE 5020 ;IF WE CAN RECOVER FROM THEM 5021 013464 LONG.DELAY 1 ;LET DISK TRAFFIC STOP (1) 013464 041 310 000 LXI H,200. * 1 ;SET UP THE TIMING COUNT IN H,L REG (1) 013467 315 154 014 CALL LTLOOP ;AND GO DELAY ABOUT 1 SECOND FOR EACH (300 COUNT) 5022 013472 076 100 MVI A,SMPAR ;GET WHICH REG HAS PARITY INFO IN IT 5023 013474 315 270 013 CALL ER.UTL ;READ DATA,PARITY BITS RETURNED IN ACCUM 5024 013477 057 CMA ;INVERT SO THAT .TRUE. .EQ. HI 5025 013500 346 022 ANI ^O22 ;SEE IF CRA/CRM ERROR TYPE 5026 013502 312 127 027 JZ HRDERR ;IF NO, GO FOR A HARD ERROR 5027 5028 ;WELL, LETS SEE IF MEM BUSY OR I/O BUSY 5029 013505 333 102 IN R.BUSY ;*****I/O RD 102***** 5030 013507 057 CMA ;FIX HARDWARE COMPLIMENT 5031 013510 346 060 ANI ^O60 ;SEE IF EITHER OF THOSE TWO BITS SET 5032 013512 107 MOV B,A ;SAVE RESULTS OF THIS "AND" FOR A BIT 5033 013513 333 101 IN REFERR ;SEE IF MEM REFRESH ERR EITHER 5034 013515 057 CMA ;FIX HARDWARE INVERSION 5035 013516 346 001 ANI 1 ;ONLY KEEP THE REFRESH BIT 5036 013520 260 ORA B ;THROW THE TWO TOGETHER..IF RESULTS .EQ. 0, THEN ALL OK 5037 013521 312 264 027 JZ SOFTERR ;IF NOTHING, GO TRY FOR THE SOFT ERROR RECOVERY VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-163 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5039 ;GET TO HERE IF ERROR IS CONSIDERED NON-RECOVERABLE 5040 013524 NR: PLINE NRSCE ;"?NR-SCE". NON RECOVERABLE-SOFT CRAM ERROR (1) 013524 337 RST 3 ;PRINT LINE OF CHARS (1) 013525 245 027 .ADDR NRSCE ;BUFF TO PRINT 5041 000 .ENDC 5042 5043 5044 013527 HRDERR: CLRB CHKPAR ;SAY NOT TO REPORT AGAIN & AGAIN 5045 013531 315 352 006 CALL CLRUSE ;EXIT FROM USER MODE 5046 013534 PLINE PARMSG ;MESSAGE TO CTY (1) 013534 337 RST 3 ;PRINT LINE OF CHARS (1) 013535 161 037 .ADDR PARMSG ;BUFF TO PRINT 5047 5048 013537 333 100 IN SMPAR ;***** I/O RD PARITY ***** 5049 013541 057 CMA ;FIX THE HARDWARE INVERSION 5050 013542 315 317 030 CALL P8BITA ;AND PRINT IT OUT WITH THE ERROR MESSAGE 5051 013545 PSPACE ;SEPARATE THE 8 BIT DATUMS (2) 013545 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 013546 040 .BYTE SPACE ;CHAR TO PRINT 5052 013547 333 303 IN ^O303 ;READ "DPM PARITY BIT" 5053 013551 057 CMA ;FIX CPU INVERSION 5054 013552 346 001 ANI ^O1 ;ONLY INTERESTED IN BIT 0 "DPM PAR ERR" 5055 013554 315 317 030 CALL P8BITA ;AND THEN PRINT THE "DPM PAR" DATA 5056 013557 PSPACE ;AGAIN, SEPARATE BY SPACES (2) 013557 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (2) 013560 040 .BYTE SPACE ;CHAR TO PRINT 5057 013561 333 103 IN ^O103 ;READ REG THAT HAS R PAR RIGHT & R PAR LEFT 5058 013563 057 CMA ;FIX THE HARDARE INVERSION 5059 013564 346 360 ANI ^O360 ;KEEP ONLY THE 2 "R PAR" BITS 5060 013566 315 051 017 CALL P8CRLF ;PRINT IT 5061 013571 315 302 032 CALL CLRRN ;CLEAR THE SOFTWARE "RUNNING" FLAG TOO 5062 013574 315 326 032 CALL LTFLT ;PARITY ERROR LIGHTS THE FAULT LIGHT 5063 013577 303 255 001 JMP REINI ;AND GO RE-INIT..PAR ERRS ARE FATAL 5064 001 .IF DF,SCECOD VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-164 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5066 ;COMMAND LIST FOR READING UBA INFO 5067 013602 UBA.RD: UBA. 763,001 (1) 013602 001 .BYTE 001 & 377 (1) 013603 346 .BYTE Q.1 (1) 013604 073 .BYTE Q.2 5068 013605 ENDLST (1) 013605 000 .BYTE 0 (1) 013606 000 .BYTE 0 (1) 013607 050 .BYTE <12*4> 5069 5070 ;RH11 COMMAND LIST FOR CHECKING FOR RECOVERABLE & NON RECOVERABLE 5071 ;STATES OF THE CONTROLLER 5072 013610 RH.TST: EI. D776,P.00 ;EXAM CONTROLLER STATUS REG (1) 013610 374 .BYTE Q.1 (1) 013611 000 .BYTE P.00 & 377 (1) 013612 023 .BYTE Q.2 5073 013613 ERRTST 60000 ;TEST FOR FATAL ERRS (1) 013613 000 140 .ADDR 60000 (1) 013615 040 .BYTE <10*4> 5074 013616 EI. D776,P.12 ;EXAM DRIVE STATUS REG (1) 013616 374 .BYTE Q.1 (1) 013617 012 .BYTE P.12 & 377 (1) 013620 023 .BYTE Q.2 5075 013621 ERRTST 40000 ;CHECK THAT GUY FOR ERRS (1) 013621 000 100 .ADDR 40000 (1) 013623 040 .BYTE <10*4> 5076 013624 ENDLST ;HERE IF ALL OK (1) 013624 000 .BYTE 0 (1) 013625 000 .BYTE 0 (1) 013626 050 .BYTE <12*4> 5077 5078 013627 RH.EXE: EI. D776,P.00 ;A TEMPLATE FOR RH EXAMINES (1) 013627 374 .BYTE Q.1 (1) 013630 000 .BYTE P.00 & 377 (1) 013631 023 .BYTE Q.2 5079 013632 ENDLST ;THAT'S ALL WE NEED FOR THIS (1) 013632 000 .BYTE 0 (1) 013633 000 .BYTE 0 (1) 013634 050 .BYTE <12*4> 5080 5081 013635 000 SAVLST: .BYTE P.00 ;READ 776700 5082 013636 002 .BYTE P.02 ;READ 776702 5083 013637 004 .BYTE P.04 ;READ 776704 5084 013640 006 .BYTE P.06 ;READ 776706 5085 013641 010 .BYTE P.10 ;READ 776710 5086 013642 032 .BYTE P.32 ;READ 776732 5087 013643 034 .BYTE P.34 ;READ 776734 5088 013644 377 .BYTE -1 ;END OF LIST MARKER 5089 ;THE ASCII MESSAGES REQUIRED FOR PARITY RECOVERY 5090 013645 077 116 122 NRSCE: .ASCIZ/?NR-SCE / ;NOT RECOVERABLE SOFT CRAM ERROR 5091 013656 045 123 103 OKSCE: .ASCIZ/%SCE / ;RECOVERABLE SOFT CRAM ERROR VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-165 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5093 ;NOW GET THE CURRENT CRAM ADDRESS & CHECK FOR HARD CRAM ERRORS. 5094 ;(NOTE: A HARD CRAM ERROR IS A CRAM PARITY ERROR OCCURRING AT 5095 ;THE SAME CRAM ADDRESS MORE THAN ONCE IN A ROW) 5096 013664 021 344 040 SOFTERR: LXI D,SCEADR ;"D,E" PAIR WILL POINT AT THE DESIRED 5097 013667 315 204 030 CALL BREAK ;GO CHECK IF CURRENT .EQ. DESIRED.. 5098 013672 312 127 027 JZ HRDERR ;IF YES, JUMP 'CAUSE ITS A HARD ERROR 5099 5100 ;SOFT CRAM ERRO RECOVERY CONTINUED.... 5101 ;RECOVERY BEGINS BY ZAPPING THE PE(1) FLOP SO WE MAY CATCH ANY ADDITIONAL 5102 ;PARITY ERRORS 5103 013675 076 001 MVI A,1 ;BIT TO RESET CRAM C.R. & PE(1) 5104 013677 323 204 OUT CRMCTL ;***** I/O WRT/204 ***** 5105 5106 ;FALL THRU IF ADDRESS NOT THE SAME 5107 013701 042 344 040 NOTSAME: SHLD SCEADR ;SAVE IT AS THE NEW "PREVIOUS" 5108 5109 ;NOW CHECK RH11 TO SEE IF THIS FAILURE IS RECOVERABLE FOR THE 5110 ;MONITOR. 8080 WILL SIMPLY EXECUTE A CHANNEL COMMAND LIST 5111 ;OF "ERRTST" , WITH THE CORRECT ERROR BITS CHECKED FOR 5112 013704 041 210 027 LXI H,RH.TST ;POINT TO ERROR CHECKER COMMAND LIST 5113 013707 315 036 025 CALL CHNXCT ;EXECUTE THAT LIST 5114 013712 332 124 027 JC NR ;IF BAD, SAY NOT RECOVERABLE 5115 ;ELSE...FALL INTO THE SOFT RECOVERY CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-166 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5117 ;FINALLY GET TO HERE IF THIS THING LOOKS RECOVERABLE. NOW WE MUST 5118 ;BEGIN SAVING THINGS... 5119 ;FIRST.. GET THE CURRENT DISK UBA NUMBER TO SET UP THE RH11 REGISTER 5120 ;SAVING. THEN WE MUST SET UP THE RH11 BASE REGISTER ITSELF 5121 ;WHILE WE ARE AT IT, MIGHT AS WELL PRINT A LITTLE MESSAGE SAYING WHAT WE ARE 5122 ;DOING IN HERE 5123 013715 RECVR: PLINE OKSCE ;ERR MSG "%SCE" SOFT CRAM ERROR (1) 013715 337 RST 3 ;PRINT LINE OF CHARS (1) 013716 256 027 .ADDR OKSCE ;BUFF TO PRINT 5124 013720 041 344 040 LXI H,SCEADR ;NOW POINT TO THIS BAD ADDRESS 5125 013723 315 332 030 CALL P16 ;AND PRINT IT 5126 013726 PCRLF ;TERMINATE EVERYTHING WITH A CR-LF (2) 013726 347 RST 4 (2) 013727 002 .BYTE 2 5127 013730 315 041 023 CALL DSKDFT ;NOW GET THOSE DEFAULTS JUST MENTIONED 5128 013733 257 XRA A ;CLEAR ACCUM 5129 013734 323 100 OUT RESET ;*****I/O WRT 100***** NO PAR CHECKING 5130 5131 ;FINALLY READY TO BEGIN THE ACT OF SAVING SOME REGISTERS 5132 ;FIRST GET UBA LOCATION 763001 5133 013736 041 202 027 LXI H,UBA.RD ;POINTER TO UBA READ-IN LIST 5134 013741 315 036 025 CALL CHNXCT ;READ-IN THE UBA INFO.. NOW ITS IN EMBUF 5135 013744 INTON ;DON'T PRINT THIS (1) 013744 327 RST 2 ;GO SET INTERNAL MODE 5136 013745 315 360 012 CALL EI1 ;ACTUALLY DO THE READ-IN 5137 013750 INTOFF ;OK NOW (1) 013750 367 RST 6 ;GO EXIT FROM INTERNAL MODE 5138 5139 ;BEFORE WE SAVE IT, WE WILL SET UP FOR SAVING RH REGISTERS.. THAT WAY, WE 5140 ;CAN USE SOME COMMON CODE FOR PUTTING DATA INTO OUR SAVE BUFFER. 5141 013751 001 227 027 LXI B,RH.EXE ;NOW POINT TO A CHANNEL COMMAND LIST 5142 013754 021 172 040 LXI D,RM100 ;AND POINT TO A PLACE TO PUT THE LIST 5143 013757 076 006 MVI A,6 ;IT TAKES SIX BYTES TO MOVE THE ENTIRE LIST 5144 013761 315 022 033 CALL M5B ;MOVE THE STUFF TO RAM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-167 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5146 ;THE CODE TO MOVE BYTES REQUIRES "B,C" POINTING TO THE SOURCE 5147 ;AND "D,E" POINTING TO THE DESTINATION 5148 ;AND "A" HAVING HOW MANY BYTES TO BE MOVED.. "MOVREG" DOES 5 BYTES 5149 ;FREE OF CHARGE..B,C AND D,E ARE UPDATED BY THE NUMBER OF BYTES MOVED. 5150 013764 041 235 027 LXI H,SAVLST ;POINT TO A LIST OF THINGS WHICH WE MUST SAVE 5151 013767 345 PUSH H ;PLACE IT IN THE RAM FOR SAFE KEEPING 5152 013770 021 327 042 LXI D,RHSAVE ;D,E GETS THE POINTER TO THE SAVE AREA 5153 013773 001 012 040 RH.LP: LXI B,EMBUF ;WE WILL ALWAYS BE MOVING STUFF FROM "EMBUF" 5154 013776 315 020 033 CALL MOVREG ;MOVE 5 BYTES, PLEASE 5155 5156 ;TO SAVE THE RH REGISTERS, WE WILL PUT A TINY CHANNEL COMMAND 5157 ;LIST INTO RAM SPACE, THEN EXECUTE IT, CHANGING THE DESIRED REGISTERS 5158 ;BETWEEN READS, WHICH WILL GIVE US A CHANCE TO SAVE THE RESULTS 5159 ;OF THE READ 5160 014001 341 POP H ;GET POINTER INTO "REG TO BE SAVED" BUFFER 5161 014002 176 MOV A,M ;GET CURRENT BYTE INTO ACCUM 5162 014003 062 173 040 STA RM100+1 ;PUT BYTE INTO BUFFER SO CAN BE EXECUTED 5163 014006 074 INR A ;UP BY ONE 5164 014007 312 027 030 JZ SCE.GO ;IF THAT MAKES .EQ. 0, THEN OUT 5165 5166 014012 043 INX H ;ELSE UPDATE POINTER 5167 014013 345 PUSH H ;SAVE THE POINTER TOO 5168 014014 041 172 040 LXI H,RM100 ;PREPARE TO EXECUTE THE READIN BUFFER 5169 014017 325 PUSH D ;NOW SAVE THE SPOT WE ARE IN IN THE RHSAVE AREA 5170 014020 315 036 025 CALL CHNXCT ;DO IT..ONE RH REGISTER IS IN 5171 014023 321 POP D ;RETRIEVE POINTER TO THE DATA SAVE SPACE 5172 014024 303 373 027 JMP RH.LP ;SAVE INFO, AND READ IN NEXT RH REGISTER VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-168 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5174 ;NOW DATA HAS BEEN SAVED, WE CAN ACTUALLY BEGIN TO RESTORE THE MICRO-CODE 5175 014027 SCE.GO: INTON ;SET INTERNAL MODE (1) 014027 327 RST 2 ;GO SET INTERNAL MODE 5176 014030 021 002 002 LXI D,^O1002 ;PLACE IN DISK PAGE OF POINTERS TO MICRO-CODE 5177 014033 315 306 022 CALL FILESH ;GO READ IN THE FIRST PAGE OF MICRO-CODE 5178 014036 332 210 032 JC C.BTERR ;IF ERR ITS ALL OVER 5179 5180 014041 315 056 023 CALL DMEM2CR ;GO LOAD CRAM 5181 5182 014044 052 344 040 LHLD SCEADR ;GET ADDRESS AT WHICH TO CONTINUE 5183 014047 315 340 014 CALL CADWR ;SET THE CRAM ADDRESS TO THE GUY THAT SLIPPED 5184 ;WE ARE NEARING THE END OF THIS RECOVERY STUFF.. WE MUST RESTORE THE STATE 5185 ;OF THE RH11 AND UBA TO WHAT IT WAS BEFORE WE STARTED, THEN WE CAN TURN THE 5186 ;CLOCKS ON AGAIN 5187 014052 041 202 027 LXI H,UBA.RD ;POINT TO A UBA READ CHANNEL COMMAND LIST 5188 014055 315 036 025 CALL CHNXCT ;SET THE I/O ADDRESS TO A UBA PAGE REGISTER 5189 5190 ;NOW FIX UP THE FORMAT BETWEEN A READ OF THE UBA PAGING REG, AND 5191 ;THE WRITE WE WISH TO DO TO THE PAGING RAM 5192 014060 072 332 042 LDA RHSAVE+3 ;GET THE BYTE THAT HAS THE CURRENT CNTRL BITS 5193 014063 346 170 ANI ^O170 ;OFF JUNK, KEEP ONLY 4 RELEVANT BITS 5194 014065 117 MOV C,A ;SAVE IN THE C REG 5195 014066 041 327 042 LXI H,RHSAVE ;NOW POINT TO OUR BUFFER WITH THE DESIRED INFO 5196 014071 315 167 031 CALL SHR36 ;SHIFT DATA RIGHT, 4 PLACES 5197 014074 004 .BYTE 4 5198 5199 014075 171 MOV A,C ;GET OUR CONTROL BITS BACK 5200 014076 062 331 042 STA RHSAVE+2 ;PLOP THEM INTO THE 36 BIT WORD 5201 014101 315 167 031 CALL SHR36 ;NOW SHIFT THE WHOLE MESS 5 MORE PLACES 5202 014104 005 .BYTE 5 5203 5204 ;AND THATS IT.. MOVE STUFF TO A DEPOSIT BUFFER 5205 014105 MOV5B ;A "MOVE" (1) 014105 347 RST 4 (1) 014106 000 .BYTE 0 5206 014107 327 042 .ADDR RHSAVE ;FROM THE SAVE BUFFER 5207 014111 047 040 .ADDR DMDAT ; TO THE DEPOSIT BUFFER 5208 014113 315 017 013 CALL DI1 ;WRITE THIS MESS BACK TO UBA PAGING RAM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-169 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5210 ;NOW WE WANT TO WRITE BACK THE RH11 REGISTERS THAT WE SAVED, THEN DESTROYED 5211 014116 041 227 027 LXI H,RH.EXE ;NOW SET THE RH11 REGISTER I.D. INTO THE 5212 014121 315 036 025 CALL CHNXCT ;INTERNAL BUFFER "IOAD",INCLUDING UBA NUMBER 5213 5214 014124 041 235 027 LXI H,SAVLST ;POINT TO LIST OF REGS TO BE RESTORED 5215 014127 345 PUSH H ;SAVE THIS INFO ON THE STACK 5216 014130 001 334 042 LXI B,RHSAVE+5 ;WILL BEGIN MOVING STUFF WE SAVED FROM RH 5217 014133 021 047 040 DI.LP: LXI D,DMDAT ;ALWAYS MOVE THE STUFF TO THE DEPOSIT BUFFER 5218 014136 315 020 033 CALL MOVREG ;MOVE THE STUFF INTO "DMDAT" 5219 014141 341 POP H ;GET OUR LITTLE LIST POINTER 5220 014142 072 024 040 LDA IOAD ;GET CURRENT OFFSET INTO RH 5221 014145 346 300 ANI ^O300 ;THROW AWAY CURRENT OFFSET 5222 014147 266 ORA M ;THROW OUR DESIRED OFFSET INTO THE WORD 5223 014150 062 024 040 STA IOAD ;PUT IT BACK INTO THE IOAD BUFFER 5224 014153 176 MOV A,M ;GET THE OFFSET WE JUST MESSED WITH 5225 014154 074 INR A ;TEST TO SEE IF END OF LIST 5226 014155 312 172 030 JZ CONT.I ;IF END OF LIST, FINISH THE RECOVERY 5227 5228 ;NOT END OF LIST, MUST SAVE SOME MORE RH REGISTERS 5229 014160 043 INX H ;UPDATE THE LIST POINTER 5230 014161 345 PUSH H ;SAVE THE POINTER 5231 014162 305 PUSH B ;SAVE POINTER TO THE SAVED DATA IN "RHSAVE" 5232 014163 315 017 013 CALL DI1 ;NOW RESTORE THIS RH REGISTER 5233 014166 301 POP B ;RESTORE POINTER INTO BUFFER 5234 014167 303 133 030 JMP DI.LP ;CONTINUE 5235 5236 014172 315 376 016 CONT.I: CALL SMFINI ;GET CURRENT PARITY DEFAULTS & WRITE THEM OUT 5237 014175 315 234 014 CALL CSCMD ;TURN THE CLOCK BACK ON 5238 014200 INTOFF ;NO MORE INTERNAL MODE (1) 014200 367 RST 6 ;GO EXIT FROM INTERNAL MODE 5239 014201 303 335 001 JMP NULLJ ;GO 5240 000 .ENDC VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-170 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5242 ;ROUTINE TO CHECK IF CURRENT RAM ADDRESS IS THE DESIRED BREA 5243 ;ADDRESS.. 5244 014204 325 BREAK: PUSH D ;"D,E" HAS POINTER TO DESIRED ADDR, SAVE IT PLEASE 5245 014205 076 003 MVI A,3 ;DIAG FUNC TO READ CURRENT RAM ADDR 5246 014207 315 002 015 CALL READC ;GO DO FUNCTION READ 5247 014212 321 POP D ;NOW MAKE "D,E" POINT AT DESIRED AGAIN 5248 5249 014213 052 100 040 LHLD TMPB2 ;GET CURRENT ADDRESS.. 5250 014216 174 MOV A,H ;ALSO MAKE SURE THE CURRENT JUST READ IS 11 BITS 5251 014217 346 007 ANI ^O7 ;8 BITS LO HALF, PLUS 3 BITS HI HALF 5252 014221 147 MOV H,A ;NOW PUT THE WHOLE MESS BACK 5253 5254 014222 032 LDAX D ;GET LO ORDER PIECE TO ACCUM 5255 014223 275 CMP L ;CHECK VERSUS JUST READ 5256 014224 300 RNZ ;IF .NE. 0, THEN NO MATCH, SO OUT.. 5257 014225 023 INX D ;OK, SO UPDATE PNTR TO READ-IN 5258 014226 032 LDAX D ;GET HI ORDER OF DESIRED PIECE 5259 014227 274 CMP H ;COMPARE, SIGNS TAKE CARE OF THEMSELVES 5260 014230 311 RET ;IF RESULT OF ADD WAS ZERO, GOOD.IF NOT,OK TOO.. 5261 5262 ;ROUTINE TO DO SHORT FORM OF EXAMINE MEMORY 5263 ;ENTER WITH "D,E" CONTAINING SHORT ADDRESS 5264 014231 067 EXAMSH: STC ;SET C-BIT FOR LATER USE IN COMMON CODE 5265 014232 343 DEPSHT: XTHL ;SWAP SO H,L POINTS TO TRAILING ARG 5266 014233 315 061 033 CALL TARG1 ;COLLECT TRAILING ARG INTO "D,E" 5267 014236 343 XTHL ;SWAP BACK SO THAT THINGS ARE RIGHT 5268 014237 353 XCHG ;AND NOW MAKE "H,L" HOLD THE TRAILING ARG 5269 014240 042 235 040 EXMHL: SHLD SHRTAD ;STORE SHORT ADDRESS IN THE RAM 5270 014243 021 235 040 LXI D,SHRTAD ;DE, GETS REPLACE WITH A POINTER TO SHORT ADDRESS 5271 014246 365 PUSH PSW ;SAVE THE C-BIT FOR LATER USE 5272 014247 334 042 012 CC EMINT ;IF C WAS SET, GO DO AN EXAMINE 5273 014252 361 POP PSW ;GET FLAGS AS THEY WERE 5274 014253 324 240 012 CNC DMINT ;IF C WAS CLR DO A DEPOSIT 5275 014256 311 RET ;NOW OK TO RETURN 5276 5277 ;ROUTINE THAT EXECUTES AN "ARG16", THEN RETURNS THE DATA IN "H,L" 5278 014257 ARG16.: ARG16 ;ARGUMENT ASSEMBLER (1) 014257 347 RST 4 (1) 014260 004 .BYTE 4 5279 014261 000 040 .ADDR T80DT ;USE A TEMP LOCATION 5280 5281 014263 052 000 040 LHLD T80DT ;GATHER DATA INTO H,L 5282 014266 311 RET ;AND BACK VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-171 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5284 ;SUBROUTINE TO PRINT A SINGLE 8-BIT BYTE AS OCTAL DATA 5285 ;OF THE FORM: XXX 5286 ;NO REGS DESTROYED..PNTR TO 8-BIT BYTE PASSED IN "H,L" 5287 014267 345 P8BIT: PUSH H ;SAVE ALL REGISTERS 5288 014270 305 P8BIT1: PUSH B 5289 014271 325 PUSH D 5290 014272 365 PUSH PSW 5291 014273 315 045 031 CALL OCTAL ;CREATE 8-BIT BUFFER AS A 3 OCTAL CHARACTERS 5292 014276 001 .BYTE 1 ;ONE BYTE OF BINARY DATA INVOLVED 5293 014277 003 .BYTE 3 ;WANT ONLY 3 OCTAL CHARS 5294 014300 016 003 MVI C,03 ;NUM CHARS TO PRINT 5295 014302 361 P8LP: POP PSW ;CHAR OFF TOP OF STACK 5296 014303 315 010 004 CALL PCHR ;AND GO PRINT IT 5297 014306 015 DCR C ;DOWN COUNT 5298 014307 302 302 030 JNZ P8LP ;AND CONTINUE TILL DONE ALL 3 5299 5300 014312 361 POP PSW ;RESTORE REGS 5301 014313 321 POP D 5302 014314 301 POP B 5303 014315 341 POP H 5304 014316 311 RET ;AND ALL DONE 5305 5306 5307 ;WHEN DOING A "P8BIT" WITH THE DATA PASSED IN THE ACCUM 5308 ;INSTEAD OF BEING POINTED TO BY H,L THEN COME HERE 5309 014317 345 P8BITA: PUSH H ;MUST SAVE H,L HERE, SO WE CAN MESS IT UP 5310 014320 041 122 040 LXI H,P8.TMP ;KEEP A PLACE FOR PRINTING DATA 5311 014323 167 MOV M,A ;PUT THE THING TO BE PRINTED IN THE RAM SPACE 5312 014324 303 270 030 JMP P8BIT1 ;GO TO COMMON CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-172 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5314 ;SUBROUTINE TO PRINT 16-BITS WORTH OF DATA.. 5315 ;POINTER TO THAT DATA IS PASSED TO THE ROUTINE IN 5316 ;REGISTER "H,L" 5317 014327 041 100 040 P16.: LXI H,TMPB2 ;IN THIS TYPE CALL, WE LOAD H,L AUTOMATICALLY 5318 014332 365 P16: PUSH PSW ;SAVE ALL THE REGISTERS 5319 014333 305 PUSH B 5320 014334 325 PUSH D 5321 014335 345 PUSH H 5322 5323 014336 315 045 031 CALL OCTAL ;CREATE OCTAL CHARS FROM THE 16-BIT DATA 5324 014341 002 .BYTE 2 ;WE HAVE 2 BYTES OF RELEVANT DATA 5325 014342 006 .BYTE 6 ;AND WE WANT 6 OCTAL CHARS TO PRINT 5326 5327 014343 006 006 MVI B,6 ;ON RETURN WE WANT TO PRINT 6 CHARS 5328 014345 361 P16LP: POP PSW ;GET OCTAL CHAR OFF STACK 5329 014346 315 010 004 CALL PCHR ;AND GO PRINT IT 5330 014351 005 DCR B ;DOWN THE COUNT 5331 014352 302 345 030 JNZ P16LP ;BACK TO PRINT MORE TILL ALL DONE 5332 5333 014355 341 POP H ;DONE..NOW RESTORE ALL REGS 5334 014356 321 POP D 5335 014357 301 POP B 5336 014360 361 POP PSW 5337 014361 311 RET ;AND RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-173 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5339 ;SUBROUTINE PRINT 36-BIT BINARY DATA AS 5340 ;A 12-OCTAL DIGIT CHARACTER STRING IN THE FORM: 5341 ; XXXXXX,,XXXXXX -NO REGS DESTROYED-BIN DATA PNTR PASSED IN "H,L" 5342 014362 041 012 040 P36.: LXI H,EMBUF ;IN THIS CALL, WE LOAD H,L AUTOMATICALLY 5343 014365 365 P36: PUSH PSW ;WILL SAVE ALL REGS IN HERE 5344 014366 305 PUSH B 5345 014367 325 PUSH D 5346 014370 345 PUSH H 5347 014371 315 045 031 CALL OCTAL ;CREATE 36-BIT BUFFER AS AN OCTAL CHARACTER STRING 5348 014374 005 .BYTE 5 ;5BYTES REQUIRED BY 36-BITS 5349 014375 014 .BYTE ^D12 ;WANT 12 OCTAL DIGITS 5350 5351 014376 315 015 031 CALL PHALF ;PRINT 18 BITS 5352 ;IF HERE, JUST FINISHED FIRST PASS, NEED 2 COMMAS. 5353 014401 PCHAR COMMA (1) 014401 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 014402 054 .BYTE COMMA ;CHAR TO PRINT 5354 014403 PCHAR COMMA ;PRINT ",," (1) 014403 317 RST 1 ;GO PRINT CHAR IN TRAILING BYTE (1) 014404 054 .BYTE COMMA ;CHAR TO PRINT 5355 014405 315 015 031 P36RH: CALL PHALF ;PRINT 18 MORE BITS... 5356 014410 341 POP H ;NOW RESTORE ALL THE REGS 5357 014411 321 POP D 5358 014412 301 POP B 5359 014413 361 POP PSW 5360 014414 311 RET ;RETURN 5361 5362 ;ROUTINE PRINTS 18 BITS AS 6 OCTAL CHARS 5363 014415 341 PHALF: POP H ;GET A RETURN ADDR OFF STACK,SO STACK IS CLR 5364 014416 006 006 MVI B,6 ;"B" WILL BE A COUNTER, IN IT WITH 3 5365 014420 361 P36L2: POP PSW ;CHARACTERS TO ACCUM 5366 014421 315 010 004 CALL PCHR ;PRINT IT 5367 5368 014424 005 DCR B ;DOWN COUNT 5369 014425 302 020 031 JNZ P36L2 ;CONTINUE IF NOT DONE 6 CHARS YET 5370 014430 351 PCHL ;RETURN 5371 5372 5373 ;ROUTINE TO ALONE PRINT 18 BITS 5374 014431 365 P18: PUSH PSW ;WILL SAVE ALL REGS IN HERE 5375 014432 305 PUSH B 5376 014433 325 PUSH D 5377 014434 345 PUSH H 5378 014435 315 045 031 CALL OCTAL ;CREATE 6 OCTAL CHARS 5379 014440 003 .BYTE 3 ;3 BYTES HAVE RELEVANT DATA 5380 014441 006 .BYTE 6 ;AND DESIRE 6 OCTAL CHARS 5381 5382 014442 303 005 031 JMP P36RH ;GO TO RIGHT HALF PRINTER FROM "P36" VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-174 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5384 ;UNIVERSAL BINARY DATA TO ASCII CHARACTER SUBROUTINE 5385 ;ROUTINE DESTROYS THE CONTENTS OF ALL REGISTERS 5386 ;PASS POINTER TO BINARY DATA IN "H,L" ,THEN CALL APPROPRIATE 5387 ;COVERSION DESIRED WITH 2 TRAILING PARAMETERS-CHARS PLACED ON STACK, MSB-LSB 5388 ; CALL ROUTINE 5389 ; DB XX ;NUMBER OF BYTES HOLDING RELEVANT BINARY DATA 5390 ; DB YY ;NUMBER OF ASCII CHARACTERS TO BE GENERATED 5391 ;ROUTINES ARE "OCTAL", "BINRY", AND "HEXIDECIMAL" 5392 5393 5394 ;CODE WAS NEVER USED..KEEP TEXT HERE JUST IN CASE WE EVER NEED TO ADD IT.. 5395 ;THIS WAY WE WON'T HAVE TO FIGURE IT ALL OUT AGAIN 5396 ;BINRY: LXI D,^O401 ;LOAD D=1,E=1 5397 ; JMP COMEN ;GO TO COMMON CODE 5398 5399 014445 021 007 003 OCTAL: LXI D,^O1407 ;LOAD D=3,E=7 5400 014450 353 XCHG ;SWAP "D,E" WITH "H,L" 5401 014451 042 202 040 SHLD BTMSK ;SET DATA INTO "BTMSK" & "BTNUM" 5402 5403 ;POINTER TO BIN DATA NOW IN "D,E" 5404 014454 343 XTHL ;"H,L" NOW POINTS TO TRAILING ARGS 5405 014455 106 MOV B,M ;BOMB "B" REGISTER, NOW CONTAINS "NUM" BYTES 5406 014456 043 INX H ;UPDATE PNTR 5407 014457 116 MOV C,M ;NUM CHARS INTO C 5408 014460 043 INX H ;AND UPDATE PNTR TO RET ADDR 5409 5410 014461 042 217 040 SHLD HLSAVE ;SAVE RETURN IN RAM 5411 014464 341 POP H ;CLEAR OLD STUFF OFF STACK 5412 014465 305 PUSH B ;SAVE "B,C" JUST TEMPORARILY 5413 5414 014466 041 073 040 LXI H,TMPBF2 ;"H,L" NOW POINTS TO TEMPORARY BUFFER 5415 ;IF FALL TO HERE, MUST MOVE DATA FROM BINARY BUFFER TO TEMP BUFFER 5416 014471 032 OCTL1: LDAX D ;DATA POINTED TO BY "D,E" TO ACCUM 5417 014472 023 INX D ;BUMP POINTER 5418 014473 167 MOV M,A ;SET THAT DATA IN RAM 5419 014474 043 INX H ;BUMP POINTER 5420 014475 005 DCR B ;DONE ALL BYTES YET? 5421 014476 302 071 031 JNZ OCTL1 ;BACK TILL MOVED ALL. 5422 5423 014501 301 POP B ;RESTORE "B,C" AND GO 5424 5425 014502 041 073 040 LXI H,TMPBF2 ;"H,L" NOW PNTS TO TMP BUFF 5426 014505 257 XRA A ;CLEAR ACCUM 5427 014506 127 MOV D,A ;CLEAR "D" REG 5428 014507 130 MOV E,B ;BYTE COUNT TO "E" 5429 014510 035 DCR E ;BUFF IS ALWAYS 1 LESS THAN BYTE COUNT 5430 014511 031 DAD D ;"H,L" GETS BUFF ADDR PLUS BYTE COUNT 5431 014512 042 233 040 SHLD OCTSV ;AND SAVE THIS ADDR IN THE RAM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-175 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5433 ;HERE WILL BEGIN TRANSLATION FROM BINARY TO CHARACTERS 5434 014515 041 073 040 OCTLC: LXI H,TMPBF2 ;"H,L" NOW POINTS TO TEMPORARY BUFFER 5435 014520 072 202 040 LDA BTMSK ;NOW GET BIT MASK 5436 014523 246 ANA M ;AND TO KEEP ONLY DESIRED CHARS 5437 5438 014524 306 060 ADI ^O60 ;MAKE INTO ASCII 5439 ;NOW MUST ROTATE ENTIRE BUFFER 3 PLACES TO RID OURSELVES OF CHAR JUST PROCESSED 5440 014526 365 PUSH PSW ;NOW SAVE CHARACTER WEVE JUST CREATED 5441 014527 015 DCR C ;DOWN THE CHAR COUNT 5442 014530 312 163 031 JZ OCTL5 ;JUMP OUT IF PROCESSED ALL CHARS 5443 014533 072 203 040 LDA BTNUM ;GET NUM BITS INTO ACCUM 5444 014536 127 MOV D,A ;"D" GETS INITAL COUNT OF BITS 5445 5446 014537 130 OCTL3: MOV E,B ;"E" GETS BYTE COUNT 5447 014540 052 233 040 LHLD OCTSV ;GET UPDATED BUFF PNTR TO "H,L" 5448 014543 247 ANA A ;CLEAR "C-BIT" 5449 5450 014544 176 OCTL4: MOV A,M ;GROUP OF BINARY BITS TO ACCUM 5451 014545 037 RAR ;BIT 0 INTO "C" BIT 5452 014546 167 MOV M,A ;AND SHIFTED DATA BACK INTO MEM 5453 014547 053 DCX H ;STEP UP IN THE BUFFER (UPSIDE-DOWN BUFFER) 5454 014550 035 DCR E ;DOWN BYTE COUNT 5455 014551 302 144 031 JNZ OCTL4 ;CONTINUE WITH BUFFER 5456 014554 025 DCR D ;DONE BUFFERS WORTH, SEE IF DONE ALL 3 BITS WORTH 5457 014555 302 137 031 JNZ OCTL3 5458 ;DONE THE 3-BITS, NOW CONTINUE WITH NEXT CHARACTER 5459 014560 303 115 031 JMP OCTLC ;GO PROCESS NEXT CHARACTER 5460 5461 ;HERE WHEN DONE ALL CHARS. 5462 014563 052 217 040 OCTL5: LHLD HLSAVE ;GRAB THE RETURN ADDRESS 5463 014566 351 PCHL ;AND RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-176 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5465 ;SUBROUTINE TO SHIFT 36-BIT DATA BUFFER SOME 5466 ;NUMBER OF PLACES TO THE RIGHT.. ADDRESS OF BUFFER TO BE 5467 ;SHIFTED IS PASSED IN "H,L"..NUMBER OF PLACES FOR IT 5468 ;TO BE SHIFTED IS PASSED AS A TRAILING PARAMETER 5469 ;IN A BYTE TRAILING THE SUBROUTINE CALL 5470 ; CALL SHR36 5471 ; .BYTE XX ;NUM PLACES TO SHIFT 5472 5473 014567 076 005 SHR36: MVI A,5 ;A SHIFT 36 REQUIRES 5 BYTES TO BE MOVED 5474 014571 SHR24: 5475 014571 343 SHRGO: XTHL ;POINTER TO TRAILING BYTE INTO "H,L" 5476 014572 305 PUSH B ;SAVE ALL THE REGISTERS 5477 014573 106 MOV B,M ;NUMBER PLACES TO SHIFT IN "B" 5478 5479 014574 063 INX SP ;BUMP STACK POINTER AROUND THE SAVED "B,C" 5480 014575 063 INX SP 5481 014576 043 INX H ;NOW BUMP RETURN ADDRESS PAST THE TRAILING ARG 5482 014577 343 XTHL ;AND PUT IT BACK ONTO THE STACK 5483 014600 073 DCX SP ;NOW FIX STACK SO THAT SAVED "B,C" IS BACK ON TOP 5484 014601 073 DCX SP 5485 014602 325 PUSH D 5486 014603 345 PUSH H 5487 5488 014604 137 MOV E,A ;NUMBER OF BYTES INVOLVED WAS IN A, SAVE IN E 5489 5490 014605 075 DCR A ;FIX COUNT 5491 014606 205 ADD L ;AND NOW ADD COUNT TO "H,L" ADDRESS 5492 014607 157 MOV L,A ;PUT BACK INTO LO ORDER 5493 014610 174 MOV A,H ;GET HI PIECE 5494 014611 316 000 ACI 0 ;AND ADD A CARRY TO H IF THERE WAS ONE 5495 014613 147 MOV H,A ;NOW PUT IT BACK 5496 5497 014614 345 PUSH H ;AND PUT ON STACK FOR REUSE 5498 5499 014615 341 S36BL: POP H ;FETCH SAVED, UPDATED ADDRESS 5500 014616 345 PUSH H ;NOW SAVE "H,L" 5501 014617 113 MOV C,E ;GET NUMBER BYTE INVOLVED INTO C AGAIN 5502 014620 247 ANA A ;CLEAR THE C-BIT 5503 5504 014621 176 S36LP: MOV A,M ;GET BYTE FROM BUFF TO ACCUM 5505 014622 037 RAR ;SHIFT IT RIGHT 5506 014623 167 MOV M,A ;NOW PUT IT BACK INTO THE BUFFER 5507 014624 053 DCX H ;NEXT BYTE 5508 5509 014625 015 DCR C ;WAIT!..HAVE WE DONE ALL BYTES YET?? 5510 014626 302 221 031 JNZ S36LP ;BACK INTO LOOP IF NOT YET VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-177 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5512 ;FALL THRU WHEN DONE THE 5 BYTES 5513 014631 005 DCR B ;DONE NUMBER OF TIMES YET?? 5514 014632 302 215 031 JNZ S36BL ;JUMP IF YES DONE ALL 5515 5516 ;HERE WHEN ALL DONE 5517 014635 341 POP H ;RESTORE THE "H,L"+X 5518 014636 341 POP H ;RESTORE "B,C" 5519 014637 321 POP D ;RESTORE "D,E" 5520 014640 301 POP B ;RESTORE "H,L" 5521 014641 311 RET VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-178 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5523 ;ROUTINE TO ASSEMBLE 16-BIT ARGUMENT 5524 ;PLACE TO PUT 16-BIT DATA PASSED AS A TRAILING 5525 ;ARG... "B,C" IS MESSED UP BY THIS ROUTINE 5526 5527 ; CALL ARG16 5528 014642 076 014 ARG96: MVI A,12. ;NUMB BYTES USED IN ARG96 IS 12 5529 014644 303 257 031 JMP ARGBG1 5530 5531 014647 076 005 .ARG36: MVI A,5 ;NUMB BYTES USED IN ARG36 IS 5 5532 014651 303 256 031 JMP ARGBEG 5533 5534 014654 076 002 .ARG16: MVI A,2 ;NUMB BYTES USED IN ARG16 IS 2 5535 014656 341 ARGBEG: POP H ;GET H,L FROM TRAP HANDLER 5536 014657 062 214 040 ARGBG1: STA CHRCNT ;SAVE IT 5537 014662 072 213 040 LDA RPTON ;IS THIS A REPEAT?? 5538 014665 247 ANA A ;CHECK THE REPEAT FLAG 5539 014666 302 020 032 JNZ CLEAN ;JUMP IF YES A REPEAT.... 5540 5541 ;ELSE FALL THRU AND "GET" CHARACTERS AS BINARY DATA 5542 014671 052 223 040 LHLD .ARG1 ;GET PNTR TO ARG 5543 014674 001 000 000 LXI B,00 ;CLR REGS "B,C" 5544 5545 014677 176 GETLP: MOV A,M ;GET AN ASCII CHARACTER 5546 014700 326 060 SUI ^O60 ;OTHERWISE, OFF ASCII STUFF 5547 014702 346 370 ANI ^O370 ;NOW BE SURE IT WAS NUM AND NOT CHAR 5548 014704 302 320 031 JNZ GETEN ;IF HAD BITS GO SEE IF PROPER ENDING 5549 014707 176 MOV A,M ;MESSED UP CHAR, GET IT BACK 5550 014710 326 060 SUI ^O60 ;OFF THE ASCII AGAIN 5551 014712 365 PUSH PSW ;SO WE CAN STACK IT 5552 5553 014713 014 INR C ;WAS OK.. SO UP COUNT 5554 014714 043 INX H ;AND UPDATE TO NEXT CHAR 5555 014715 303 277 031 JMP GETLP ;AND CONTINUE TILL DONE 5556 5557 ;JUMP TO HERE WHEN STACKED ALL THE CHARS 5558 014720 315 256 033 GETEN: CALL SEPCHR ;THROW OUT TRAILING SPACES & TABS 5559 014723 042 223 040 SHLD .ARG1 ;SAVE "H,L" 5560 014726 315 355 032 CALL EOCML ;END OF LINE?? 5561 014731 322 163 032 JNC KILNM ;IF NOT WE HAVE A PROBLEM 5562 5563 014734 052 207 040 LHLD RPBUFS ;GET PNTR TO REPEAT DATA BUFFER 5564 014737 257 XRA A ;CLR ACCM 5565 014740 167 MOV M,A ;CLR THE "BYTE" COUNTER 5566 014741 043 INX H ;UPDATE POINTER 5567 5568 014742 135 MOV E,L ;COPY POINTER INTO "D,E" REG 5569 014743 124 MOV D,H 5570 014744 015 DCR C ;MAKE C START AT COUNT-1 5571 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-179 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5573 014745 325 RPINCB: PUSH D ;H,L SHOULD BE SAME AS D,E 5574 014746 341 POP H ;SO DO IT USING STACK 5575 014747 023 INX D ;EXCEPT D,E SHOULD BE 5576 014750 023 INX D ;3 GREATER 5577 014751 023 INX D 5578 5579 014752 345 PUSH H ;SAVE H,L FOR A MINUTE 5580 014753 052 207 040 LHLD RPBUFS ;WHILE THE "BYTE" COUNTER GETS UPDATED 5581 014756 176 MOV A,M ;COPY CURRENT COUNT 5582 014757 306 003 ADI 3 ;UPDATE BY 3 5583 014761 167 MOV M,A ;NOW PUT IT BACK 5584 014762 341 POP H ;AND FIX UP H,L 5585 5586 014763 006 010 MVI B,8. ;B GETS A COUNT OF 8 FOR OUR LOOP 5587 014765 361 A16PK: POP PSW ;GET 3-BIT BINARY 5588 5589 014766 022 ARGQQ: STAX D ;AND PUT INTO TMP BUFFER 5590 5591 ;DONT MESS UP "H,L", ITS NEEDED BY "SHR36" ROUTINE 5592 014767 315 167 031 CALL SHR36 ;SHIFT THING 36 PLACES 5593 014772 003 .BYTE 3 ;SHIFT 3 PLACES 5594 5595 014773 015 DCR C ;DOWN CHAR COUNT 5596 014774 362 007 032 JP NOTRK ;FOOL THE 8-TIME LOOP IF GOES MINUS 5597 014777 257 XRA A ;CLR ACCUM,IN ORDER TO PAD WITH ZEROES 5598 015000 005 DCR B ;DOWN OUR "8" COUNTER 5599 015001 312 013 032 JZ CHKSTK ;AND OUT IF ZERO 5600 015004 303 366 031 JMP ARGQQ ;ELSE CONTINUE LOOPING 5601 5602 015007 005 NOTRK: DCR B ;DOWN COUNT THE 8-TIME LOOP 5603 015010 302 365 031 JNZ A16PK ;IF STILL DOING 8-TIMES 5604 5605 ;DONE 8-TIMES..NOW CHECK IF C HAS GONE TO ZERO 5606 015013 171 CHKSTK: MOV A,C ;COPY C TO ACCM TO CHECK IF ZERO 5607 015014 247 ANA A ;.EQ. 0?? 5608 015015 362 345 031 JP RPINCB ;JUMP IF NOT YET.. 5609 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-180 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5611 ;ELSE FALL THRU..MUST NOW MOVE ASSEMBLED NUMBER TO DESTINATION 5612 015020 052 207 040 CLEAN: LHLD RPBUFS ;GET BYTE COUNTER FOR THIS DATA 5613 015023 106 MOV B,M ;NOW B HAS COUNT OF NUMBER BYTES ASSY'D 5614 015024 043 INX H ;FIX H,L UP AGAIN.. 5615 ;NOW H,L HAS SRC..D,E HAS FF.. STACK HAS PC 5616 015025 343 XTHL ;SWAP-EEE 5617 015026 315 061 033 CALL TARG1 ;ASSEMBLE DEST ADDR INTO D,E 5618 015031 343 XTHL ;SWAP-EEE BACK 5619 5620 015032 072 214 040 LDA CHRCNT ;GET NUMB CHARS DESIRED BY THIS ROUTINE 5621 015035 117 MOV C,A ;C NOW HAS DESIRED..B HAS NUMB CHAR ASSY'D 5622 015036 176 MOVLP: MOV A,M ;START MOVING CHARS TO DESTINATION 5623 015037 022 STAX D ;CHAR TO DEST.. 5624 015040 043 INX H ;UPDATE SRC POINTER 5625 015041 023 INX D ;UPDATE DEST POINTER 5626 015042 015 DCR C ;DOWN THE DESIRED COUNT 5627 015043 312 065 032 JZ FIXPNT ;IF GOT DESIRED NUMBER,DONT PASS ANY MORE 5628 5629 015046 005 DCR B ;DOWN THE ASSY'D COUNT 5630 015047 302 036 032 JNZ MOVLP ;KEEP ON KEEPIN' ON 5631 5632 ;WHEN FALL THRU WEVE MOVED ALL THAT WE CAN..NOW PAD THE BUFFER 5633 015052 170 MOV A,B ;CLR ACCUM..B MUST BE ZERO 5634 015053 015 PADLP: DCR C ;DOWN THE DESIRED COUNT 5635 015054 372 071 032 JM FINARG ;IF THAT'S MINUS, WERE ALL DONE.. 5636 015057 022 STAX D ;OTHERWISE STACK A ZERO 5637 015060 023 INX D ;UPDAT DEST POINTER 5638 015061 303 053 032 JMP PADLP ;AND CONTINUE TILL DONE 5639 5640 015064 043 FIXLP: INX H ;MUST UPDATE BUFFER POINTER 5641 015065 005 FIXPNT: DCR B ;DOWN THE ASSEMBLED COUNT 5642 015066 302 064 032 JNZ FIXLP ;AND GO BACK TO ADJUST POINTER IF NOT ZERO 5643 5644 015071 042 207 040 FINARG: SHLD RPBUFS ;NOW PUT BACK OUR LITTLE POINTER 5645 015074 311 RET ;AND GET OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-181 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5647 ;ROUTINE FOR SHUFFLING BITS FOR A NICE CRAM FORMAT 5648 015075 176 PLACE: MOV A,M ;GET PIECE OF SRC BYTE 5649 015076 022 STAX D ;PLACE AT DESTINATION 5650 015077 043 INX H ;UPDATE SRC POINTER 5651 015100 023 INX D ;UPDATE DESTINATION POINTER 5652 015101 176 MOV A,M ;GET UPPER 4 BITS OF 12 BIT CHUNK 5653 015102 346 017 ANI ^O17 ;MAKE SURE ONLY 4 BITS WORTH 5654 015104 022 STAX D ;AND PLACE AT THE DESTINATION 5655 015105 023 INX D ;DESTINATION UPDATE 5656 015106 053 DCX H ;BACKUP THE SRC POINTR TO BEGIN OF 24 BITS 5657 015107 311 RET ;AND RETURN 5658 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-182 SUBRTN.M80 ****KS10 CONSOLE SUBROUTINE FILE 5660 ;ROUTINE TO COMPLETE THE TRAP HANDLING TYPE OPERATION WHICH CHANGES 5661 ;A NORMAL 3 BYTE SUBROUTINE CALL INTO A 2 BYTE TRAP TYPE CALL.. 5662 ;IT COSTS 3 BYTES TO ADD ANY SUBROUTINE TO THE TRAP CALL,SO THAT YOU SAVE 5663 ;AT LEAST ONE BYTE FOR ANY SUBROUTINE THAT IS CALLED 3 TIMES..AND YOU SAVE 5664 ;ONE BYTE FOR EACH ADDITIONAL TIME IT IS CALLED 5665 015110 041 132 032 RTNDIS: LXI H,DLIST ;GET POINTER TO DISPATCH LIST 5666 015113 365 PUSH PSW ;SAVE STATE OF PROCESSOR FLAGS 5667 015114 325 PUSH D ;SAVE "D,E"..TRAP CANT DESTROY REGS 5668 015115 205 ADD L ;ADD OFFSET IN ACCUM TO ADDRESS. 5669 015116 157 MOV L,A ;PUT ADDR PLUS OFFSET BACK 5670 015117 174 MOV A,H ;GET HI ORDER PIECE 5671 015120 316 000 ACI 0 ;NOW ADD IN A CARRY IF THERE WAS ONE 5672 015122 147 MOV H,A ;PUT IT BACK 5673 5674 015123 136 MOV E,M ;NOW GO FETCH ADDR TO BE DISPATCHED TO 5675 015124 043 INX H ;UPDATE TO NEXT 5676 015125 126 MOV D,M ;NOW FETCH HI ORDER PIECE OF ADDR TO BE DISPATCHED TO 5677 015126 353 XCHG ;GET DISPATCH ADDR INTO H,L 5678 015127 321 POP D ;RESTORE D,E...NOW ONLY H,L //RET ADDR ON STACK 5679 015130 361 POP PSW ;RESTORE PROCESSOR FLAGS 5680 015131 351 PCHL ;DISPATCH TO APPROPRIATE SUBROUTINE 5681 5682 015132 002 033 DLIST: .ADDR .MOV5B ;+0 5683 015134 202 004 .ADDR .CRLF ;+2 5684 015136 254 031 .ADDR .ARG16 ;+4 5685 015140 027 027 .ADDR .RUN.. ;+6 5686 015142 247 031 .ADDR .ARG36 ;+8. 5687 015144 235 033 .ADDR .CLRRM ;+10. VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-183 SUBRTN.M80 **** CLRB EXECUTE CODE **** 5689 .SBTTL **** CLRB EXECUTE CODE **** 5690 015146 046 040 CLRBYT: MVI H,^O40 ;THIS HALF GENERATES THE "20000'S" WEIGHT OF ADDRESS 5691 015150 157 MOV L,A ;THIS GENERATES THE REST OF THE RAM ADDRESS 5692 015151 066 000 MVI M,0 ;CLEAR THAT LOCATION 5693 015153 341 POP H ;FIX H,L 5694 015154 311 RET ;OUT & DONE 5695 5696 .SBTTL **** SOME ERROR CODES **** 5697 015155 RRARG: PLINE RAG ;"?REQUIRES ARG" (1) 015155 337 RST 3 ;PRINT LINE OF CHARS (1) 015156 242 037 .ADDR RAG ;BUFF TO PRINT 5698 015160 303 344 003 JMP NORML ;ERROR MUST RESET THE STACK 5699 015163 KILNM: PLINE BB1 ;?BN BAD NUMBER (1) 015163 337 RST 3 ;PRINT LINE OF CHARS (1) 015164 246 037 .ADDR BB1 ;BUFF TO PRINT 5700 015166 072 251 040 MMERR: LDA MMFLG ;SEE IF IN MAINTENACE MODE 5701 015171 247 ANA A ;SET 8080 FLAGS 5702 015172 312 255 001 JZ REINI ;IF NO MM MODE, OUT 5703 015175 315 205 034 CALL DECNET ;FINISH UP ANY MESSAGES 5704 015200 315 167 014 MMERR1: CALL MMCMD ;IF YES, RESET MODE 5705 015203 303 255 001 JMP REINI ;ERROR MUST RESET THE STACK VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-184 SUBRTN.M80 **** SOME ERROR CODES **** 5707 ;ERRORS INCURRED DURING THE BOOT PROCESS 5708 015206 306 002 D.BTERR: ADI 1*2 ;FAILURE WHEN TRIED TO START MICRO-CODE AFTER A BOOT 5709 5710 015210 306 002 C.BTERR: ADI 1*2 ;FAILURE DURING THE READING OF THE MICRO-CODE 5711 5712 015212 306 002 B.BTERR: ADI 1*2 ;FAILURE DURING THE READING OF THE PAGE OF POINTERS 5713 5714 015214 306 002 A.BTERR: ADI 1*2 ;FAILURE DURING THE READING OF THE HOME BLOCK 5715 5716 015216 315 326 032 CALL LTFLT ;THESE BOOT ERRORS ARE FATAL 5717 015221 062 155 040 BTERR1: STA ERRCD+1 ;THIS BIT OF CODE GOES IN THE HI ORDER BYTE OF THE NUMB 5718 015224 CLRB NOPNT ;RESTORE PRINTING 5719 015226 PLINE BTFAIL ;PRINT MESSAGE "?BT " (1) 015226 337 RST 3 ;PRINT LINE OF CHARS (1) 015227 133 037 .ADDR BTFAIL ;BUFF TO PRINT 5720 015231 041 154 040 LXI H,ERRCD ;POINT TO THE ERROR CODE 5721 015234 315 332 030 CALL P16 ;PRINT THE 16-BIT NUMBER 5722 015237 303 255 001 JMP REINI ;KILL THE PROCESS 5723 5724 ;CODE FOR WHEN ONLY BOOTSTRAP FAILS TO READIN 5725 015242 041 360 040 L.BTERR: LXI H,STATE ;GET POINTER TO STATE LIGHT 5726 015245 076 001 MVI A,^O01 ;SET FAULT LIGHT, BUT DONT CHANGE STATE 5727 015247 266 ORA M ;THROW CURRENT STATE WITH FAULT BIT 5728 015250 167 MOV M,A ;PUT STUFF BACK 5729 015251 076 020 MVI A,8*2 ;FAILURE DURING THE LOADING OF THE PRE-BOOT PROGRAM 5730 015253 303 221 032 JMP BTERR1 ;AVOID SOME CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-185 SUBRTN.M80 **** SOME ERROR CODES **** 5732 ;SUBROUTINE TO CHECK IF A COMMAND FROM THE CSL BOARD HAS BEEN 5733 ;GRANTED THE BUS.. WHICH IT MUST ALWAYS BE GRANTED BECAUSE IT IS THE 5734 ;BUS MASTER 5735 015256 343 BUSRESP: XTHL ;GET POINTER TO TRAILING ARG 5736 015257 333 301 IN SMSTS ;***** I/O RD 301 ***** 5737 015261 057 CMA ;FIX INVERSION 5738 015262 246 ANA M ;"AND" READ STUFF VS. TRAILING ARG 5739 015263 043 INX H ;UPDATE TO RETURN ADDR 5740 015264 343 XTHL ;SWAP RETURN BACK TO STACK 5741 015265 311 RET ;RETURN.."Z-BIT" CORRESPONDS TO "AND" RESULTS 5742 5743 ;LITTLE ROUTINE TO SET AND OR CLR THE SOFTWARE RUN FLAG 5744 015266 006 004 SETRN: MVI B,STBIT ;WE WANT TO SET THE RUN LIGHT 5745 015270 315 337 032 CALL STATEM ;GO DO IT 5746 015273 017 .BYTE ^O17 ;AND DONT MASH ANYTHING 5747 015274 257 XRA A ;CLEAR ACCUM 5748 015275 057 CMA ;ACCUM = -1 5749 015276 062 165 040 RNCOM: STA RNFLG ;DATA TO RUN FLAG 5750 015301 311 RET ;AND OUT 5751 5752 015302 006 000 CLRRN: MVI B,0 ;WE DONT WANT TO SET ANYTHING 5753 015304 315 337 032 CALL STATEM ;JUST GO AND CLEAR SOME THINGS 5754 015307 013 .BYTE ^O13 ;BITS TO KEEP 5755 015310 257 XRA A ;CLEAR ACCUM 5756 015311 303 276 032 JMP RNCOM ;AND OUT. 5757 5758 015314 NOREFRESH: CLRB NOPNT ;TURN TYPING ON 5759 015316 CLRB CHKREF ;SAY NOT TO REPORT OVER AND OVER 5760 015320 315 352 006 CALL CLRUSE ;EXIT FROM USER MODE 5761 015323 PLINE MOSMSG ;MESSAGE TO CTY (1) 015323 337 RST 3 ;PRINT LINE OF CHARS (1) 015324 173 037 .ADDR MOSMSG ;BUFF TO PRINT 5762 5763 015326 365 LTFLT: PUSH PSW ;MUST SAVE ACCUM TO GET CORRECT "BT ERR MSG" 5764 015327 006 001 MVI B,1 ;WE MERELY WANT TO SET FAULT LIGHT 5765 015331 315 337 032 CALL STATEM ;GO SET THE LIGHTS 5766 015334 012 .BYTE ^O12 ;BITS TO FLUSH WITH THIS 5767 015335 361 POP PSW ;RESTORE ACCUM 5768 015336 311 RET ;AND NOW SAFE TO RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-186 SUBRTN.M80 **** SOME ERROR CODES **** 5770 ;ROUTINE TO CLEAR AND SET BITS IN THE STATE WORD, THEN TO LIGHT 5771 ;THE LIGHTS ON THE FRONT PANEL AS SPECIFIED BY THE STATE WORD 5772 015337 343 STATEM: XTHL ;GET POINTER TO MASK 5773 015340 072 360 040 LDA STATE ;NOW FETCH CURRENT STATE OF THE MACHINE 5774 015343 246 ANA M ;MASK AS SPECIFIED 5775 015344 043 INX H ;UPDATE RETURN POINTER 5776 015345 343 XTHL ;AND PUT IT BACK ON THE STACK 5777 5778 015346 260 ORA B ;NOW THROW IN ANY NEW BITS 5779 015347 062 360 040 STA STATE ;NOW SAVE IT 5780 015352 323 101 OUT LIGHTS ;CHANGE THE LIGHTS 5781 015354 311 RET ;OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-187 SUBRTN.M80 **** SOME ERROR CODES **** 5783 ;SUBROUTINE TO DECIDE IF "FIRST" POINTS TO 5784 ;AN END-OF-COMMAND CHARACTER..C-BIT SET IF YES, "FIRST" 5785 ;DOES POINT TO END-OF-COMMAND..ACCUMULATOR IS DESTROYED 5786 015355 345 EOCML: PUSH H ;SAVE "H,L" 5787 015356 052 223 040 LHLD .ARG1 ;GET CURRENT POINTER FOR COMMAND BUFFER 5788 5789 015361 176 MOV A,M ;GET CHARACTER 5790 015362 376 377 CPI EOLCH ;END-OF-COMMAND?? 5791 015364 312 377 032 JZ EOLYS ;JUMP IF YES 5792 5793 015367 376 054 CPI COMMA ;OR, END-OF-COMMAND?? 5794 015371 312 377 032 JZ EOLYS ;JUMP IF YES 5795 5796 ;HERE IF NOT... CLR "C-BIT" & LEAVE 5797 015374 247 ANA A ;CLR "C-BIT" 5798 5799 015375 341 POP H ;RESTORE "H,L" 5800 015376 311 RET ;RETURN 5801 5802 ;HERE IF YES, AT END-OF-COMMAND 5803 015377 067 EOLYS: STC ;SET CARRY 5804 015400 341 POP H ;RESTORE "H,L" 5805 015401 311 RET ;RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-188 SUBRTN.M80 **** SOME ERROR CODES **** 5807 ;SUBROUTINE TO MOVE 5 CONTIGUOUS BYTES BEGINNING 5808 ;WITH A SPECIFIED SOURCE ADDRESS,TO ANOTHER BUFFER AREA, ITS 5809 ;ADDRESS ALSO PASSED AS A TRAILING ARG. SOURCE ADDRESS IS 5810 ;FIRST TRAILING PARAMETER, DESTINATION IS SECOND TRAILING PARAMETER 5811 015402 341 .MOV5B: POP H ;GET H,L FROM TRAP HANDLER 5812 015403 343 XTHL ;SWAP STACK TOP WITH "H,L" 5813 015404 325 PUSH D ;SAVE "D,E" 5814 015405 305 PUSH B ;SAVE "B,C" 5815 015406 315 055 033 CALL TARG2 ;ASSEMBLE ARGS INTO "B,C" AND "D,E" 5816 5817 015411 315 020 033 CALL MOVREG ;MOVE THE DATA, ARGS PASSED IN REGISTERS 5818 015414 301 POP B ;RESTORE "B,C" 5819 015415 321 POP D ;RESTORE "D,E" 5820 5821 015416 343 XTHL ;RESTORE STACK 5822 015417 311 RET ;AND RETURN 5823 5824 015420 076 005 MOVREG: MVI A,5 ;SET COUNTER TO 5 5825 015422 075 M5B: DCR A ;DOWN COUNTER 5826 015423 304 022 033 CNZ M5B ; AND BE RECURSIVE TILL DOWN COUNTED 5827 5828 015426 012 LDAX B ;BYTE TO ACCUM 5829 015427 022 STAX D ;STORE AT DESTINATION 5830 015430 023 INX D ;UP BOTH PNTRS 5831 015431 003 INX B ; TO NEXT BYTE 5832 015432 311 RET ;AND BACK TO CALLER 5833 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-189 SUBRTN.M80 **** SOME ERROR CODES **** 5835 ;SUBROUTINE TO COMPARE 2 36-BIT VALUES. 5836 ;IF THE ADDRESSES OF THE 2 36-BIT BUFFERS ARE 5837 ;PASSED AS TRAILING PARAMETERS TO THE ROUTINE 5838 ;IF BOTH BUFFERS ARE THE SAME, THE "C-BIT" IS 5839 ;CLR UPON RETURN. IF THEY ARE DIFFER, THE "C-BIT" IS 5840 ;SET ON RETURN. 5841 015433 343 CMP36: XTHL ;SWAP STACK TOP WITH "H,L" 5842 015434 315 055 033 CALL TARG2 ;GET THE 2 TRAILING ARGS INTO "B,C" & "D,E" 5843 015437 343 XTHL ;PUT RETURN BACK ON STACK 5844 015440 353 XCHG ;SWAP "D,E" & "H,L" 5845 015441 026 005 MVI D,5 ;SET COUNTER TO 4. 5846 5847 015443 012 CMPLP: LDAX B ;GET A BYTE OF DATA 5848 015444 276 CMP M ;COMPARE 5849 015445 300 RNZ ;RETURN WITH Z-CLR IF HAD ERR.. 5850 015446 003 INX B ;BUMP POINTER 5851 015447 043 INX H ;BUMP OTHER POINTER 5852 015450 025 DCR D ;DOWN COUNT 5853 015451 302 043 033 JNZ CMPLP ;CONTINUE TILL DONE 5854 015454 311 RET ;NORMAL RETURN 5855 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-190 SUBRTN.M80 **** SOME ERROR CODES **** 5857 ;SUBROUTINE TO ASSEMBLE TRAILING ARGS INTO REGISTER PAIRS. 5858 ;ROUTINE USED TO SAVE CORE ONLY BECAUSE THIS SEQUENCE OF CODING 5859 ;IS REPEATED SO OFTEN.."H,L" POINTS TO THE TRAILING ARG OF THE 5860 ;ORIGINAL CALLER.."D,E" AND "B,C" MUST HAVE BEEN SAVED BEFORE 5861 ;THIS ROUTINE IS CALLED OR THEY WILL BE DESTROYED..IF A SINGLE 5862 ;TRAILING ARG IS TO BE GATHERED UP, IT WILL BE PUT INTO THE 5863 ;REG PAIR "D,E" VIA THE CALL "TARG1"..IF 2 TRAILING ARGS TO BE 5864 ;GATHERED UP, THE FIRST WILL BE PUT INTO "B,C" AND THE SECOND 5865 ;WILL BE PUT INTO "D,E".."H,L" IS UPDATED TO POINT TO THE BYTE 5866 ;FOLLOWING THE TRAILING ARGS.. 5867 015455 116 TARG2: MOV C,M ;LO ORDER SOURCE TO "C" 5868 015456 043 INX H 5869 015457 106 MOV B,M ;HI ORDER SOURCE TO "B" 5870 015460 043 INX H 5871 5872 015461 136 TARG1: MOV E,M ;LO ORDER SOURCE TO "E" 5873 015462 043 INX H 5874 015463 126 MOV D,M ;HI ORDER SOURCE TO "D" 5875 015464 043 INX H 5876 5877 015465 311 RET ;AND RETURN 5878 ;SUBROUTINE TO ADD 1 TO A 36-BIT BUFFER AND GUARANTEE 5879 ;THAT THE CARRY PROPAGATES CORRECTLY. BUFFER TO BE 5880 ;INCREMENTED IS PASSED AS A TRAILING ARG. 5881 015466 343 INC36: XTHL ;GET POINTER TO TRAILING ARG 5882 015467 315 061 033 CALL TARG1 ;ASSEMBLE ARG INTO "D,E" 5883 5884 015472 343 XTHL ;PUT RETURN BACK ON THE STACK 5885 015473 353 XCHG ;NOW H,L PNTS TO BUFFER TO BE INCREMENTED 5886 5887 015474 257 XRA A ;CLR THE ACCUM 5888 015475 067 STC ; AND SET "C-BIT" 5889 5890 015476 216 INCLP: ADC M ;ADD PIECE OF DATA BUFF, WITH CRY 5891 015477 167 MOV M,A ;AND PUT IT BACK, WITH THE ADDITION 5892 015500 320 RNC ;RETURN IF FINALLY STOPPED CRY'S INTO NEXT BYTE 5893 015501 043 INX H ;NEXT PIECE TO INC 5894 015502 303 076 033 JMP INCLP ;AND CONTINUE IF THERE WAS A CRY VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-191 SUBRTN.M80 **** SOME ERROR CODES **** 5897 ;SUBROUTINE "RDATT" 5898 5899 ;ROUTINE READS I/O REGISTERS 0,1,2,3,103 AND MOVES THE 5900 ;DATA IN THOSE BUFFERS (BUS.BITS 0-35) INTO A RAM AREA 5901 ;WHOSE ADDRESS IS SPECIFIED BY A TRAILING PARAMETER 5902 ;USED WITH THE CALL TO THIS ROUTINE 5903 ;CALL IS: 5904 ; CALL RDATT 5905 ; DW XXX ;XXX IS PLACE TO MOVE THE 36 BITS OF DATA 5906 ;ACCUMULATOR IS DESTROYED, REG PAIR "D,E" IS INCREMENTED BY 5. 5907 015505 RDATT: 5908 015505 343 XTHL ;SWAP STACK TOP WITH "H,L" 5909 015506 315 061 033 CALL TARG1 ;ASSEMBLE TRAILING ARG INTO "D,E" 5910 015511 343 XTHL ;PUT BACK THE STACK 5911 5912 ;THE REAL READING CODE BEGINS HERE & ALSO SERVES AS AN 5913 ;ALTERNATE ENTRY IF YOU CHOOSE TO PASS THE BUFFER ADDRESS 5914 ;IN REGISTER "D,E" 5915 015512 RDATP: 5916 015512 325 PUSH D ;SAVE "D,E" 5917 015513 333 000 IN D2835 ;***** I/O RD "0" (BITS 28-35) ***** 5918 015515 057 CMA 5919 015516 022 STAX D ;SAVE IN RAM 5920 015517 023 INX D ;UP PNTR TO NEXT BYTE 5921 015520 333 001 IN D2027 ;***** I/O RD "1" (BITS 20-27) ***** 5922 015522 057 CMA 5923 015523 022 STAX D ;SAVE IN RAM 5924 015524 023 INX D ;UP PNTR TO NEXT BYTE 5925 015525 333 002 IN D1219 ;*****I/O RD "2" (BITS 12-19) ***** 5926 015527 057 CMA 5927 015530 022 STAX D ;SAVE IN RAM 5928 015531 023 INX D ;UP PNTR 5929 015532 333 003 IN D0411 ;***** I/O RD "3" (BITS 4-11) ***** 5930 015534 057 CMA 5931 015535 022 STAX D ;SAVE 5932 015536 023 INX D ;UP PNTR 5933 015537 333 103 IN D0003 ;***** I/O RD "103" (BITS 0-03) ***** 5934 015541 057 CMA 5935 015542 346 017 ANI ^O17 ;OFF TRASH IN D BITS 7-4 5936 015544 022 STAX D ;SAVE 5937 015545 321 POP D ;RESTORE "D,E" 5938 015546 311 RET ;RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-192 SUBRTN.M80 **** SOME ERROR CODES **** 5940 ;SUBROUTINE "WDATT" 5941 ;ROUTINE WRITES I/O REGISTERS 102,104,106,110,112 AND GETS ADDR 5942 ;EITHER PASSED AS A TRAILING PARAMETER, OR PASSED IN "D,E" 5943 ;CALL IS: 5944 ; CALL WDATT 5945 ; DW XXX ;XXX IS SOURCE OF DATA TO BE WRITTEN 5946 5947 015547 343 WDATT: XTHL ;SWAP STACK TOP WITH "H,L" 5948 015550 315 061 033 CALL TARG1 ;ASSEMBLE TRAILING ARG INTO "D,E" 5949 015553 343 XTHL ;SWAP STACK BACK TO ORIGINAL STATE 5950 ;ALTERNATE ENTRY FOR WHEN PASSING DATA POINTER IN "D,E" 5951 5952 015554 325 WDATP: PUSH D ;SAVE "D,E" 5953 015555 032 LDAX D ;DATA 28-35 TO ACCUM 5954 015556 323 102 OUT W2835 ;***** I/O WRT "102" (BITS 28-35) ***** 5955 015560 023 INX D ;NEXT DATUM 5956 5957 015561 032 LDAX D ;DATA 20-27 TO ACCUM 5958 015562 323 104 OUT W2027 ;***** I/O WRT "104" (BITS 20-27) ***** 5959 015564 023 INX D ;NEXT DATUM 5960 5961 015565 032 LDAX D ;DATA 12-19 TO ACCUM 5962 015566 323 106 OUT W1219 ;***** I/O WRT "106" (BITS 12-19) ***** 5963 015570 023 INX D ;NEXT DATUM 5964 5965 015571 032 LDAX D ;DATA 4-11 TO ACCUM 5966 015572 323 110 OUT W0411 ;***** I/O WRT "110" (BITS 04-11) ***** 5967 015574 023 INX D ;NEXT DATUM 5968 5969 015575 032 LDAX D ;DATA 0-3 TO ACCUM 5970 015576 323 112 OUT W0003 ;***** I/O WRT "112" (BITS 00-03) ***** 5971 015600 321 POP D ;RESTORE "D,E" 5972 015601 311 RET ;RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-193 SUBRTN.M80 **** SOME ERROR CODES **** 5974 ;SUBROUTINE "ADATT" 5975 ;ROUTINE WRITES I/O REGISTERS 103,105,107,111,113 AND GETS ADDR 5976 ;EITHER PASSED AS A TRAILING PARAMETER, OR PASSED IN "D,E" 5977 ;CALL IS: 5978 ; CALL ADATT 5979 ; DW XXX ;XXX IS SOURCE OF DATA TO BE WRITTEN 5980 5981 015602 343 ADATT: XTHL ;SWAP STACK TOP WITH "H,L" 5982 015603 315 061 033 CALL TARG1 ;ASSEMBLE TRAILING ARG INTO "D,E" 5983 015606 343 XTHL ;SWAP STACK BACK TO ORIGINAL STATE 5984 ;ALTERNATE ENTRY FOR WHEN PASSING DATA POINTER IN "D,E" 5985 5986 015607 325 ADATP: PUSH D ;SAVE "D,E" 5987 015610 032 LDAX D ;DATA 28-35 TO ACCUM 5988 015611 323 103 OUT A2835 ;***** I/O WRT "103" (BITS 28-35) ***** 5989 015613 023 INX D ;NEXT DATUM 5990 5991 015614 032 LDAX D ;DATA 20-27 TO ACCUM 5992 015615 323 105 OUT A2027 ;***** I/O WRT "105" (BITS 20-27) ***** 5993 015617 023 INX D ;NEXT DATUM 5994 5995 015620 032 LDAX D ;DATA 12-19 TO ACCUM 5996 015621 323 107 OUT A1219 ;***** I/O WRT "107" (BITS 12-19) ***** 5997 015623 023 INX D ;NEXT DATUM 5998 5999 015624 032 LDAX D ;DATA 4-11 TO ACCUM 6000 015625 323 111 OUT A0411 ;***** I/O WRT "111" (BITS 04-11) ***** 6001 015627 023 INX D ;NEXT DATUM 6002 6003 015630 032 LDAX D ;DATA 0-3 TO ACCUM 6004 015631 323 113 OUT A0003 ;***** I/O WRT "113" (BITS 00-03) ***** 6005 015633 321 POP D ;RESTORE "D,E" 6006 015634 311 RET ;RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-194 SUBRTN.M80 **** SOME ERROR CODES **** 6008 ;LOCAL SUBROUTINE TO CLR 6009 015635 341 .CLRRM: POP H ;FIX REG AS MESSED UP BY RST INSTR 6010 015636 343 XTHL ;POINTER TO THE TRAILING PARAM 6011 015637 315 061 033 CALL TARG1 ;ASSY ARG INTO "D,E" 6012 015642 343 XTHL ;FIX "H,L" AND REPLACE FOR RETURN 6013 015643 353 XCHG ;PUT "D,E" STUFF INTO "H,L" 6014 015644 076 005 MVI A,5 ;AND SET STARTING COUNT TO 5 6015 015646 053 CLRT1: DCX H ;DOWN THE MEM ADDRESS 6016 015647 066 000 MVI M,0 ;0 DATA TO MEM 6017 015651 075 DCR A ;DOWN THE COUNTER 6018 015652 302 246 033 JNZ CLRT1 ;BACK TILL DONE 6019 015655 311 RET ;RETURN 6020 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-195 SUBRTN.M80 **** SOME ERROR CODES **** 6022 ;SUBROUTINE TO SWALLOW SEPARATOR CHARACTERS FROM THE ADDRESS POINTED 6023 ;TO BY "H,L", UP TO THE FIRST NON-SEPARATOR CHARACTER. 6024 ;SEPARATORS ARE: 6025 ; "SPACE" 6026 ; "TAB" 6027 ;ONLY THE "H,L" REGISTER SHOULD BE CHANGED BY THIS ROUTINE 6028 6029 015656 365 SEPCHR: PUSH PSW ;SAVE ACCUM AND STATUS 6030 015657 053 DCX H ;DOWN COUNT H,L SO NEXT INSTR WILL MAKE IT EVEN 6031 015660 043 SEPYS: INX H ;UP THE COUNT 6032 015661 176 MOV A,M ;COPY CHARACTER INTO ACCUM 6033 015662 376 040 CPI ' ;IS THE CHAR A "SPACE" 6034 015664 312 260 033 JZ SEPYS ;GO UPDATE "H,L" IF YES.. 6035 6036 ;ELSE SEE IF ITS A TAB 6037 015667 376 011 CPI ' ;IS THE CHAR A "TAB" 6038 015671 312 260 033 JZ SEPYS ;GO UPDATE "H,L" IF YES 6039 6040 ;ELSE NO MORE SEPARATORS-TIME TO RETURN 6041 015674 361 POP PSW ;RESTORE ACCUM AND STATUS 6042 015675 311 RET ;ALL DONE RETURN 6043 6044 .SBTTL SUBROUTINE TIME DELAY 6045 ;EACH UNIT OF DELAY COUNTED IN THE TRAILING BYTE IS WORTH 1.02 MICRO-SEC 6046 ;THIS SUBROUTINE WASTES SOME AMOUNT OF TIME..THE GREATER THE TRAILING 6047 ;ARGUEMENT, THE MORE TIME IS WASTED... 6048 015676 343 DELAY.: XTHL ;GET POINTER TO TRAILING ARG INTO "H,L" 6049 015677 365 PUSH PSW ;NOW SAVE ACCUM 6050 015700 176 MOV A,M ;GET THE TRAILING ARG INTO ACCUM 6051 015701 043 INX H ;UP DATE TO CORRECT RETURN LOCATION 6052 015702 075 DLYLP: DCR A ;DOWN THE COUNTER 6053 015703 365 PUSH PSW ;ADD MORE DELAY IN THE LOOP 6054 015704 361 POP PSW ; BECAUSE PUSHES AND POPS TAKE LONG TIME 6055 015705 302 302 033 JNZ DLYLP ;LOOP TILL ZERO 6056 015710 361 POP PSW ;RESTORE ACCUM 6057 015711 343 XTHL ;PUT RETURN BACK ONTO THE STACK 6058 015712 311 RET ;AND DONE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-196 SUBRTN.M80 STRING COMPARE ROUTINE 6060 .SBTTL STRING COMPARE ROUTINE 6061 ;ROUTINE TO COMPARE A TYPED IN ASCII STRING VERSUS SOME EXPECTED 6062 ;STRING. ENTER WITH "H,L" POINTING TO THE BEGINNING OF THE TYPE-IN 6063 ;BUFFER AND WITH D,E POINTING TO THE EXPECTED STRING. 6064 ;RETURN Z-BIT CLR IF NO MATCH...Z-BIT SET IF MATCH 6065 015713 032 STRCMP: LDAX D ;GET FIRST EXPECTED CHARACTER 6066 015714 247 ANA A ;SET FLAGS TO SEE IF ZERO BYTE 6067 015715 312 327 033 JZ STREND ;IF ZERO BYTE, END OF EXPECTED STRING.. OUT 6068 6069 015720 276 CMP M ;IF A REAL BYTE, COMPARE AGAINST THE TYPE-IN 6070 015721 300 RNZ ;IF NO MATCH, TAKE ERROR RETURN 6071 015722 023 INX D ;IF MATCH , UPDATE TO NEXT EXPECTED 6072 015723 043 INX H ;AND UPDATE TO NEXT TYPED IN. 6073 015724 303 313 033 JMP STRCMP ;LOOP 6074 6075 015727 042 223 040 STREND: SHLD .ARG1 ;PASS CURRENT POINTER TO ROUTINE THAT CHECKS FOR EOL 6076 015732 315 355 032 CALL EOCML ;CHECK THAT TYPE IN WAS TERMINATED 6077 015735 330 RC ;IF YES, Z-BIT IS SET,... OK TO RETURN 6078 6079 015736 264 ORA H ;CLR Z-BIT FLAG.. H WILL BE NON-ZERO 6080 015737 311 RET ;AND OUT..... VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-197 SUBRTN.M80 STRING COMPARE ROUTINE 6082 ;ROUTINE CALLED WHENEVER KLINIK SWITCH CHANGES STATE 6083 ;THE ROUTINE EXAMINES THE NEW STATE OF KLINIK,ZAPS THE LIGHTS AS REQUIRED 6084 ;THEN SETS THE KLINIK LINE INTO THE APPROPRIATE STATE. IF KLINIK WAS 6085 ;ESTABLISHED, GOING TO ENABLE POSITION WILL CHANGE NOTHING, BUT ANY SWITCH 6086 ;CHANGE THAT INCREASES THE AMOUNT OF PROTECTION WILL FORCE CHANGE THE 6087 ;MODE OF THE KLINIK LINE. 6088 ;THE ROUTINE IS ENTERED WITH "B" HOLDING THE NEW KLINIK SWITCH STATE, AND 6089 ;"KLNKSW" HOLDING THE OLD STATE. VALUES ARE AS FOLLOWS: 6090 ; ENABLE = 2 6091 ; PROTECT = 6 6092 ; DISABLE = 4 6093 015740 170 KLNKLT: MOV A,B ;COPY KLINIK STATE INTO THE ACCUM 6094 015741 062 124 040 STA KLNKSW ;SAVE THE NEW STATUS 6095 015744 376 004 CPI 4 ;IS SWITCH NOW IN DISABLED POSITION 6096 015746 312 022 034 JZ SETM0 ;GO SET MODE 0 IF YES 6097 6098 015751 376 006 CPI 6 ;IS SWITCH NOW IN THE PROTECT POSITION? 6099 015753 312 375 033 JZ .SETM1 ;IF YES, GO SET MODE 1 6100 6101 ;FALL THRU IF NEW SWITCH POSITION IS THE "ENABLE" POSITION 6102 ;.. FIRST CHECK CURRENT MODE. IF IN MODE 3 ALREADY, WE MAKE NO CHANGE 6103 015756 072 247 040 LDA CSLMODE ;GET CURRENT CSL MODE 6104 015761 376 010 CPI .MODE3 ;IS IT MODE 3 6105 6106 ;FLAGS ARE SET, FALL INTO CODE THAT DOES THE RIGHT THING IF IN MODE 3 6107 6108 015763 304 103 034 CNZ SETM2 ;IF WAS NOT MODE 3, THIS WILL SET MODE 2 6109 6110 ;AND FALL INTO KL.LON CODE 6111 6112 015766 006 002 KL.LON: MVI B,2 ;GET A BIT FOR SETTING THE REMOTE LIGHT ON 6113 6114 ;AND FALL INTO CODE FOR SETTING THE LIGHTS 6115 015770 315 337 032 KL.LAMP: CALL STATEM ;SET LIGHTS AS SPECIFIED IN B REG 6116 015773 375 .BYTE ^O375 ;KEEP ALL LIGHTS, 'CEPT REMOTE 6117 015774 311 RET ;AND DONE WITH THIS MESS VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-198 SUBRTN.M80 UART MODE MODIFICATIONS 6119 .SBTTL UART MODE MODIFICATIONS 6120 ;CODE FOR SETTING THE KLINIK LINE INTO MODE 1 6121 015775 072 262 040 .SETM1: LDA PASSWORD ;GET CURRENT PASSWORD 6122 016000 247 ANA A ;SET FLAGS TO SEE IF ANY PASSWORD EXISTS 6123 016001 312 022 034 JZ SETM0 ;IF NO PASSWORD, THEN SET INTO MODE 0 6124 016004 304 012 034 CNZ SETM1 ;IF PASSWORD EXISTS, SET THINGS INTO MODE 1 6125 016007 302 366 033 JNZ KL.LON ;IF WE WENT MODE 1, THEN MUST TURN ON LIGHT 6126 6127 ;CODE FOR ACTUALLY SETTING THE KLINIK LINE MODE TO 1 6128 016012 076 002 SETM1: MVI A,.MODE1 ;GET MODE 1 FLAG 6129 016014 041 214 010 LXI H,MODE1 ;GET THE MODE 1 DISPATCH 6130 016017 303 125 034 JMP SETM ;SET UP RAM 6131 6132 ;CODE THAT SETS BOTH MODE 0 AND THE APPROPRIATE LIGHTS 6133 016022 006 000 SETM0: MVI B,0 ;THE PASS LIGHTS OFF IN REGISTER "B" 6134 016024 315 370 033 CALL KL.LAMP ;AND GO DO THE LIGHTS 6135 016027 315 134 034 CALL HANGUP ;CLEAR KLINIK LINE 6136 016032 076 001 MVI A,.MODE0 ;GET THE MODE 0 FLAG 6137 016034 041 203 010 LXI H,MODE0 ;GET THE MODE 0 DISPATCH 6138 016037 303 125 034 JMP SETM ;SET UP RAM 6139 6140 ;CODE TO SET US INTO MODE 3 6141 016042 076 010 SETM3: MVI A,.MODE3 ;GET MODE 3 FLAG 6142 016044 041 377 005 LXI H,MODE3 ;GET THE MODE 3 DISPATCH 6143 016047 303 125 034 JMP SETM ;SET UP RAM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-199 SUBRTN.M80 UART MODE MODIFICATIONS 6145 ;CODE TO SET US INTO MODE 4 6146 016052 072 156 040 SETM4: LDA USRMD ;SEE IF USER, IF WHICH CASE WE WONT DO "MODE4" 6147 016055 247 ANA A ;SET 8080 FLAGS 6148 016056 300 RNZ ;AND OUT IF USER MODE 6149 6150 ;ACCUM MUST .EQ. 0 IF FELL TO HERE 6151 016057 062 252 040 STA MAILFG ;BETTER CLEAR THIS FLAG TOO 6152 016062 062 301 040 STA E.CNT ;USE FASTEST WAY TO CLEAR THIS LOCATION 6153 016065 041 250 041 LXI H,E.BEG-1 ;AND RESET ENVELOPER 6154 016070 042 247 041 SHLD E.BUF 6155 016073 076 020 MVI A,.MODE4 ;GET MODE 4 FLAG 6156 016075 041 007 035 LXI H,MODE4 ;GET THE MODE 4 DISPATCH 6157 016100 303 125 034 JMP SETM ;SET UP RAM 6158 6159 ;SET LINE TO MODE 2 6160 016103 072 247 040 SETM2: LDA CSLMODE ;BEFORE ANYTHING ELSE, SEE WHAT WE ARE DOING NOW 6161 016106 346 003 ANI .MODE0!.MODE1 ;IF MODES 0 OR 1, MUST INTERRUPT KS10 6162 016110 312 120 034 JZ SETM2X ;IF NOT, DONT BOTHER KS10 AT ALL 6163 6164 016113 076 002 MVI A,KL.ACTIVE ;MUST INFORM THE TEN THAT WE ARE ENTERING KLINIK 6165 016115 315 156 034 CALL WRD34 ;CALL ROUTINE THAT WRITES WORD 34 6166 016120 041 005 011 SETM2X: LXI H,MODE2 ;GET DISPATCH FOR MODE 2 6167 016123 076 004 MVI A,.MODE2 ;SET MOE TWO TO THE STATE FLAG ALSO 6168 016125 062 247 040 SETM: STA CSLMODE 6169 016130 042 346 040 SETDIS: SHLD MODDIS ;AND SET TO KLINIK DISPATCHER 6170 016133 311 RET ;AND ALL DONE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-200 SUBRTN.M80 UART MODE MODIFICATIONS 6172 ;LITTLE ROUTINE TO HANG UP THE KLINIK LINE 6173 016134 072 360 040 HANGUP: LDA STATE ;GET CURRENT STATE 6174 016137 346 007 ANI ^O7 ;OFF THE "DTR" SIGNAL 6175 016141 323 101 OUT DTR ;CLR DTR 6176 016143 076 003 MVI A,CARRLOSS ;TELL KS10 THAT KLINIK CARRIER HAS GONE AWAY 6177 016145 315 156 034 CALL WRD34 ;DEPOSIT INTO WORD 34 6178 016150 041 220 001 LXI H,200. * 2 ;SET A TIMEING DELAY OF 2 SECONDS 6179 016153 303 154 014 JMP LTLOOP ;GO DO DELAY, AND USE HIS RETURN TO EXIT 6180 6181 ;ROUTINE FOR DOING SIMPLE DEPOSIT INTO KS10 MEMORY AT WORD 34, AND 6182 ;THEN INTERRUPTING THE 10 6183 016156 365 WRD34: PUSH PSW ;SAVE ACCUM & STATUS 6184 016157 CLRRM DMDAT ;CLEAR A BUFFER (1) 016157 347 RST 4 (1) 016160 012 .BYTE 10. (1) 016161 054 040 .ADDR DMDAT+5 6185 016163 361 POP PSW ;FETCH THE ACCUM'S CONTENTS AGAIN 6186 016164 043 INX H ;BUMP H,L(VALUE AFTER A CLRRM IS .EQ. 1ST LOC OF BUFF) 6187 016165 167 MOV M,A ;STORE DATA AT "DMDAT+1" 6188 016166 DEPOS 34 ;DEPOSIT (1) 016166 247 ANA A ;CLR "C-BIT" FOR USE BY COMMON CODE (1) 016167 315 232 030 CALL DEPSHT ;AND DO THE DEPOSIT ASSUMING SHORT ADDR (1) 016172 034 000 .ADDR 34 ;ADDR TO BE ZAPPED PASSED AS TRAILING ARG 6189 016174 303 062 010 JMP POKE10 ;INTERRUPT THE KS10 & USE HIS RETURN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-201 SUBRTN.M80 UART MODE MODIFICATIONS 6191 ;CODE USED IN ADDING UP THE CHECKSUMS ON ENVELOPES TO BE SENT 6192 016177 200 CHKADD: ADD B ;HERE TO ADD NEW CHAR TO THE CURRENT SUM 6193 016200 107 MOV B,A ;AND KEEP THE RESULTS IN "B" 6194 016201 043 INX H ;BUMP UP TO LOOK AT THE NEXT CHAR 6195 016202 303 231 034 JMP TSKLP ;BACK TO LOOP 6196 6197 ;THIS IS THE APT ENVELOPE SENDER.. WHEN WE HAVE A BUFFER OF INFO TO SEND TO 6198 ;THE APT HOST SYSTEM, THIS IS THE CODE THAT GETS CALLED 6199 016205 072 252 040 DECNET: LDA MAILFG ;ONLY DO SOMETHING HERE IF THE MAILING FLAG SET 6200 016210 247 ANA A ;SET 8080 FLAGS 6201 016211 310 RZ ;NO FLAG, NO SENDY.... 6202 6203 016212 373 EI ;ABSOLUTLY MUST ALLOW INTERRUPTS, IN CASE HOST DIES 6204 016213 072 011 042 LDA ENVMNO ;FIRST THING TO DO IS COMPLIMENT THE MESSAGE NUMBER 6205 016216 057 CMA ;FLIP 6206 016217 346 177 ANI ^O177 ;NO SIGN BITS ALLOWED 6207 016221 062 011 042 STA ENVMNO ;PUT IT BACK 6208 6209 016224 041 013 042 LXI H,ENVBUF ;FIRST THING TO DO IS COMPUTE CHECKSUM FOR THE ENVELOPE 6210 016227 006 000 MVI B,0 ;"B" WILL HOLD THE CURRENT SUM 6211 016231 176 TSKLP: MOV A,M ;GRAB A CHARACTER 6212 016232 376 015 CPI CRCHR ;SEE IF END OF THE ENVELOPE CHARACTER 6213 016234 312 243 034 JZ TSKGO ;IF YES, GO TO THE ACTUAL SENDER 6214 6215 016237 247 ANA A ;MAYBE THE CHAR WAS A 0, BECAUSE THERE IS NO CRCHR 6216 016240 302 177 034 JNZ CHKADD ;IF NOT, GO ADD THE CHARACTER TO THE SUM VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-202 SUBRTN.M80 UART MODE MODIFICATIONS 6218 ;HERE WHEN TIME TO ACTUALLY MAIL AN ENVELOPE 6219 016243 043 TSKGO: INX H ;UPDATE PAST THE "CR" CHARACTER 6220 016244 066 000 MVI M,0 ;NOW GUARANTEE THAT WE END WITH "CR","0" PAIR 6221 016246 170 MOV A,B ;GRAB THE CURRENT SUM 6222 016247 057 CMA ;COMPLIMENT 6223 016250 074 INR A ;MAKE TWOS COMPLIMENT 6224 016251 346 077 ANI ^O77 ;AND ONLY SIX BITS COUNT 6225 6226 ;NOW MUST DECIDE IF YOU NEED TO ASCII-IZE THE CHECKSUM 6227 016253 376 075 CPI ^O75 ;75,76,77 DONT GET ASCII-ED 6228 016255 362 262 034 JP TSKGO1 ;SO JUMP IF ANY OF THOSE THREE 6229 016260 366 100 ORI ^O100 ;HAD TO ASCII-IZE, SO DO IT WITH A 100 6230 016262 062 012 042 TSKGO1: STA ENVCHK ;SAVE IN THE APPROPRIATE PLACE IN THE BUFFER 6231 6232 016265 TSK2TSK: CLRB APTANS ;CLEAR THE ANSWER 6233 016267 KCHAR SYNC ;2 SYNCS START EVERY MESSAGE (1) 016267 315 117 004 CALL KCHR ;GO PRINT THE CHARACTER (1) 016272 001 .BYTE SYNC 6234 016273 KCHAR SYNC (1) 016273 315 117 004 CALL KCHR ;GO PRINT THE CHARACTER (1) 016276 001 .BYTE SYNC 6235 6236 016277 021 011 042 LXI D,ENVMNO ;NOW SEND THE REST 6237 016302 315 144 004 CALL KLINE1 6238 016305 072 013 042 LDA ENVBUF ;GRAB FIRST CHAR OF ENVELOPE JUST SENT 6239 016310 376 077 CPI QUES ;IS IT QUESTION MARK?? 6240 016312 312 200 032 JZ MMERR1 ;IF IT WAS, ABORT ENVELOPE STUFF, RESET APT 6241 6242 016315 376 045 CPI PERCNT ;IS IT A PER CENT SIGN?? 6243 016317 312 200 032 JZ MMERR1 ;IF IT WAS, ABORT ENVELOPE STUFF, RESET APT 6244 6245 016322 072 261 040 APT.WT: LDA APTANS ;NOW WAIT FOR THE APT SYS TO ANSWER(ACK OR NACK) 6246 016325 247 ANA A ;IF ZERO, GOT NO ANSWER YET 6247 016326 312 322 034 JZ APT.WT ;SO WAIT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-203 SUBRTN.M80 UART MODE MODIFICATIONS 6249 ;FINALLY GOT AN ANSWER 6250 016331 376 116 CPI 'N ;WAS IT A NACK?? 6251 016333 312 265 034 JZ TSK2TSK ;IF YES, SEND IT OUT AGAIN 6252 016336 DECEX1: 6253 016336 DECEX2: 6254 016336 257 XRA A ;USE FAST WAY TO CLEAR A RAM LOCATION 6255 016337 062 252 040 STA MAILFG ;SAY END OF THIS ENVELOPE 6256 016342 041 013 042 LXI H,ENVBUF ;POINT TO THE BUFFER 6257 016345 042 352 040 SHLD ENVPNT ;SAVE THE POINTER TO THE BUFFER 6258 016350 311 RET ;THEN OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-204 SUBRTN.M80 UART MODE MODIFICATIONS 6260 ;SUBROUTINE TO MOVE A STRING OF CHARACTERS INTO THE TTY INPUT BUFFER, 6261 ;KEEPING TRACK OF THE NUMBER OF COMMAS AND OTHER IMPORTANT FEATURES OF THE 6262 ;STRING. MUST PASS THE SOURCE OF THE CHARACTERS IN REG B,C, SUBROUTINE WILL 6263 ;BOMB REGISTERS D,E AND H,L 6264 016351 001 253 041 MV.ALL: LXI B,E.BEG+2 ;POINT TO THE CHARACTER BUFFER TO BE EXECUTED 6265 016354 315 163 010 CALL BFRST ;RESET CMD CHAIN POINTERS 6266 016357 021 114 041 MV.INP: LXI D,BUFBG ;DE, WILL POINT TO THE INPUT BUFFER 6267 016362 041 204 040 LXI H,EOL ;AND HL WILL POINT TO THE COMMA/EOL COUNTER 6268 016365 066 000 MVI M,0 ;MAKE SURE COUNT BEGINS AT 0 6269 6270 016367 012 MV.IN1: LDAX B ;GET FIRST CHARACTER FROM WHEREVER IT IS 6271 016370 022 STAX D ;AND PUT IT INTO THE BUFFER 6272 016371 003 INX B ;UP POINTER 6273 016372 023 INX D ;AND THIS ONE TOO 6274 6275 ;NOW CHECK FOR COMMA OR EOL 6276 016373 376 054 CPI COMMA ;IS IT A COMMA?? 6277 016375 314 005 035 CZ MV.CNT ;IF YES, INCREMENT THE COUNT 6278 6279 ;FALL THRU IF WAS A COMMA BEFORE, EOLCH WILL NOT MATCH 6280 016400 376 377 CPI EOLCH ;IS IT AN END OF LINE? 6281 016402 302 367 034 JNZ MV.IN1 ;IF NOT, THERE IS MORE TO DO 6282 6283 ;HERE IF WAS AN EOL.. NOT ONLY DO WE BUMP THE COUNT, WE ALSO GET OUT 6284 016405 064 MV.CNT: INR M ;UP COUNT 6285 016406 311 RET ;AND OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-205 SUBRTN.M80 MODE 4 FOR DECIDING TO COLLECT AN ENVELOPE OR CTY OUT 6287 .SBTTL MODE 4 FOR DECIDING TO COLLECT AN ENVELOPE OR CTY OUT 6288 ;MODE 4 HANDLER. WATCHES FOR THE FIRST SYNC CHAR, THEN GOES INTO 6289 ;A FINITE STATE MACHINE MODE WHERE IT COLLECTS AN ENVELOPE 6290 ;WHEN YOU ENTER HERE, REG B HAS A COPY OF THE CHARACTER JUST TYPED 6291 016407 MODE4: 6292 016407 376 001 M4.0: CPI SYNC ;LOOK FOR A SYNC CHARACTER 6293 016411 302 250 035 JNZ MMOUT ;IF NOT, SIMPLE PRINT OF CHARACTER ON CTY 6294 6295 016414 041 022 035 LXI H,M4.1 ;SHIFT ENVELOPER TO NEXT INPUT STATE 6296 016417 303 130 034 JMP SETDIS ;AND SET INTERRUPT HANDLER TO COME HERE WHEN 6297 ;DONE WITH INTERRUPT 6298 6299 ;STATE 2 OF ENVELOPE EATER.. THIS CODE WILL DISCARD ANY ADDITIONAL SYNCS 6300 ; STORE THE MESSAGE NUMBER WHEN IT FINALLY GETS HERE (& FLIC TO STATE 3) 6301 ; OR COLLECT THE FIRST CHARACTER OF A CMD SEQUENCE(& FLIC TO STATE 3) 6302 016422 M4.1: 6303 016422 376 001 CPI SYNC ;IS THIS AN ADDITIONAL SYNC CHAR 6304 016424 310 RZ ;IF YES, IGNORE AND PROCEED 6305 ;FALL THRU IF NOT A SYNC 6306 016425 041 033 035 LXI H,COLLECT ;NOW GO TO NEXT STATE OF THE ENVELOPE COLLECTOR 6307 016430 042 346 040 SHLD MODDIS ;SET UP FOR INTERRUPT HANDLER TO FIND VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-206 SUBRTN.M80 ENVELOPE COLLECTOR 6309 .SBTTL ENVELOPE COLLECTOR 6310 ;THIS IS WHERE YOU COME ON CHARACTERS THAT ARE PART OF AN ENVELOPE. 6311 ;THIS CODE CHECKS FOR 2 KINDS OF TERMINATORS 6312 ;1) END OF ENVELOPE 6313 ;2) END OF CONTROL SEQUENCE 6314 ;OR ELSE MERELY STUFFS THE CHARACTER INTO THE ENVELOPE BUFFER. 6315 ;WHEN AN ENTIRE MESSAGE HAS BEEN RECEIVED, THEN WE WILL CALCULATE THE 6316 ;CHECKSUMS OR WHATEVER, MAKE WITH THE ACKS, NACKS, AND EXECUTE WHATEVER 6317 ;THE STUFF MAY BE 6318 ;WHEN YOU ENTER HERE, REG B HAS A COPY OF THE CHARACTER JUST TYPED 6319 016433 376 044 COLLECT: CPI DOLLAH ;TOPS20 CALLS A SPADE A "DOLLAR" 6320 016435 312 236 035 JZ ACTION ;IF "$", TREAT LIKE AN ALTMODE 6321 6322 016440 376 033 CPI ALT ;IF ALTMODE, THEN END OF CONTROL SEQUENCE 6323 016442 312 236 035 JZ ACTION ;AND JUMP IF IT WAS ALTMODE. EXECUTE CONTROL CHAR 6324 6325 016445 376 015 CPI CRCHR ;IF CARRIAGE RETURN, THEN END OF ENVELOPE 6326 016447 312 102 035 JZ EXECUT ;GO EXECUTE THE ENVELOPE IF 6327 6328 016452 376 001 CPI SYNC ;ALSO LOOK FOR "SYNC", WHICH MEANS "RESYNC" 6329 016454 312 052 034 JZ SETM4 ;IF YES, THEN MUST RE-SYNC 6330 ;WE MUST BE AWARE OF "RE-SYNCING", IN CASE THE "ALT" OR "CR" WAS GARBLED 6331 ;AS IT CAME DOWN THE LINE, AND WAS MISSED BY THE 8080 6332 ;RE-SYNCING REQUIRES STARTING AT THE BEGINNING OF MODE4 6333 6334 6335 ;FALL THRU IF MUST SIMPLY SHOVE THE CHARACTER INTO THE BUFFER 6336 016457 052 247 041 COL.LP: LHLD E.BUF ;GET POINTER TO THE LAST CHARACTER IN THE BUFFER 6337 016462 043 INX H ;BUMP POINTER TO FIRST FREE 6338 016463 167 MOV M,A ;AND STACK THE CHARACTER IN THE BUFFER 6339 016464 042 247 041 SHLD E.BUF ;REPLACE THE POINTER 6340 6341 016467 041 301 040 LXI H,E.CNT ;GET CURRENT CHARACTER COUNT 6342 016472 064 INR M ;UPDATE 6343 016473 176 MOV A,M ;NOW COPY COUNT TO ACCUM FOR TESTING 6344 016474 376 134 CPI ^O134 ;TOO MUCH FOR AN ENVELOPE?? 6345 016476 322 220 035 JNC NACK.EN ;IF TOO MANY, NACK IT.. MAYBE HE WILL START OVER 6346 016501 311 RET ;ELSE OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-207 SUBRTN.M80 ENVELOPE COLLECTOR 6348 ;HERE WHEN AN ENVELOPE IS COMPLETE... WE MUST COMPUTE THE CHECKSUM 6349 ;AND COMPARE AGAINST THE CHECK CHARACTER SENT OVER, THEN ACTUALLY EXECUTE 6350 ;THE CONTENTS OF THE ENVELOPE 6351 016502 072 301 040 EXECUT: LDA E.CNT ;GET CHAR COUNT SO WE CAN TELL WHEN WE FINISH 6352 016505 117 MOV C,A ;PUT IT IN "C" 6353 6354 016506 041 252 041 LXI H,E.BEG+1 ;POINT TO THE CHECKSUM IN THE ENVELOPE BUFFER 6355 016511 176 MOV A,M ;GET CHECKSUM CHARACTER INTO THE ACCUM 6356 016512 043 INX H ;UPDATE PAST THE CHECKSUM JUST COLLECTED 6357 016513 015 DCR C ; AND DOWN THE CHAR COUNT FOR THE THINGS WE JUST 6358 016514 015 DCR C ; PICKED OUT OF THE LIST 6359 016515 015 DCR C ;WE WANT LOOP TO END AT -1, INSTEAD OF 0 6360 6361 016516 206 ENV.LP: ADD M ;ADD CHARACTERS TO CHECKSUM 6362 016517 043 INX H ;NEXT CHARACTER 6363 016520 015 DCR C ;BUT FIRST SEE IF DONE YET 6364 016521 362 116 035 JP ENV.LP ;BACK IF NOT 6365 6366 ;WHEN DONE,CHECK THAT CHECKSUM HAS WORKED OUT TO BE ZERO 6367 016524 346 077 ANI ^O77 ;ONLY SIX BITS COUNT 6368 016526 302 220 035 JNZ NACK.EN ;IF NOT .EQ. 0, THEN CHECKSUM FAILED AND "NACK" VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-208 SUBRTN.M80 ENVELOPE COLLECTOR 6370 ;FALL THRU TO HERE IF OK SO FAR 6371 016531 066 377 MVI M,EOLCH ;MARK THE END OF THE ENVELOPE WITH EOL MARKER 6372 6373 ;NOW MUST CHECK THE MESSAGE NUMBER FOR OK-NESS 6374 016533 041 361 040 LXI H,LSTMSG ;GET POINTER TO MESSAGE NUMBER 6375 016536 116 MOV C,M ;SAVE IT IN "C" FOR A LITTLE WHILE 6376 016537 072 251 041 LDA E.BEG ;GRAB CURRENT MESSAGE NUMBER 6377 6378 016542 271 CMP C ;ARE THEY THE SAME?? 6379 016543 312 202 035 JZ ACK.EN ;IF YES, DO SIMPLE ACK AND IGNORE MESSAGE 6380 6381 ;IF DIFF, TWAS A GOOD MESSAGE, SAVE NUMBER AND EXECUTE 6382 016546 167 MOV M,A ;SAVE MESSAGE NUMBER AS THE LAST 6383 6384 016547 315 351 034 CALL MV.ALL ;AND MOVE THE STUFF TO A BUFFER FOR EXECUTION 6385 016552 076 041 MVI A,^O41 ;EVERY COMMAND ENVELOPE EXECUTED RESETS THE ENV NUMBER 6386 016554 062 011 042 STA ENVMNO ; SO RESET THE ENVELOPE MESSAGE NUMBER TO 41 6387 016557 315 052 034 CALL SETM4 ;MODE 4 TO GRAB INTERRUPTS CORRECTLY WHILE RUNNING 6388 016562 315 336 034 CALL DECEX1 ;BEFORE EXECUTING, CLEAR ALL OLD MESSAGES 6389 016565 041 176 035 LXI H,OKDN ;TELL NORMAL ENDS TO RETURN HERE FOR FURTHER ORDERS 6390 016570 042 350 040 SHLD NOREND ;PASS INFO IN THE DEDICATED RAM POSITION 6391 016573 303 222 002 JMP DCODE ;AND BEGIN EXECUTION OF THE STRING READ IN VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-209 SUBRTN.M80 ENVELOPE COLLECTOR 6393 016576 373 OKDN: EI ;MUST ALLOW INTERRUPTS HERE 6394 016577 315 205 034 CALL DECNET ;IF YES, MAIL ENVELOPE BEFORE ACK'ING 6395 6396 ;NOW OK TO ACKNOWLEDGE THE COMMAND 6397 016602 315 052 034 ACK.EN: CALL SETM4 ;SEND "ACK" DOWN THE KLINIK LINE 6398 6399 016605 ACK: KLINE M.ACK (1) 016605 315 137 004 CALL KLINE ;PRINT LINE OF CHARS (1) 016610 213 035 .ADDR M.ACK ;BUFF TO PRINT 6400 016612 311 RET ;DONE WITH THIS 6401 016613 001 M.ACK: .BYTE SYNC ;SYNC 6402 016614 001 .BYTE SYNC ;SYNC 6403 016615 101 .BYTE 'A ;ACKNOWLEDGE CHAR 6404 016616 033 .BYTE ALT ;ALTMODE 6405 016617 000 .BYTE 0 ;END OF STRING 6406 016620 315 052 034 NACK.EN: CALL SETM4 ;SEND "NACK" DOWN THE KLINIK LINE 6407 016623 NACK: KLINE M.NACK (1) 016623 315 137 004 CALL KLINE ;PRINT LINE OF CHARS (1) 016626 231 035 .ADDR M.NACK ;BUFF TO PRINT 6408 016630 311 RET ;BACK TO CALLER 6409 6410 016631 001 M.NACK: .BYTE SYNC ;SYNC 6411 016632 001 .BYTE SYNC ;SYNC 6412 016633 116 .BYTE 'N ;NEGATIVE ACKNOWLEDGE CHAR 6413 016634 033 .BYTE ALT ;ALTMODE 6414 016635 000 .BYTE 0 ;END OF STRING 6415 6416 016636 052 247 041 ACTION: LHLD E.BUF ;GET THE TYPE OF CONTROL THIS WAS(ACK OR NACK) 6417 016641 176 MOV A,M ;PUT IT INTO ACCUM 6418 016642 062 261 040 STA APTANS ;SET IT INTO THE ANSWER WORD 6419 016645 303 052 034 JMP SETM4 ;AND NOW RESET INTERRUPT HANDLER AND OUT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-210 SUBRTN.M80 ENVELOPE COLLECTOR 6421 ;THIS IS THE CODE DO DO STRAIGHT OUTPUT FROM THE KLINIK LINE TO THE CTY 6422 ;AND INCLUDE A SCHEME FOR BUFFERING THE OUTPUT SO THAT A 9600 BAUD 6423 ;KLINIK LINE WILL OUTPUT OK TO A 300 BAUD CTY. 6424 ;IF INTERRUPTED WHILE PRINTING A CHARACTER, THE CHARACTERS WAITING TO BE 6425 ;PRINTED ARE STACKED AT THE "SYSOUT" POINTER. CHARACTERS THAT ARE REMOVED FROM 6426 ;THE WAITING BUFFER ARE REMOVED VIA THE POINTER "SYSIN" 6427 016650 247 MMOUT: ANA A ;SEE IF THIS IS A NULL CHARACTER 6428 016651 310 RZ ;IF YES, DONT DO NOTHIN 6429 016652 052 123 042 LHLD SYSOUT ;SEE IF WE ARE BUSY PRINTING 6430 016655 174 MOV A,H ;GET AN INDICATOR 6431 016656 247 ANA A ;SET PC FLAGS 6432 016657 312 320 035 JZ NOTBUSY ;GO IF NOT BUSY 6433 6434 ;FELL TO HERE IF BUSY PRINTING 6435 016662 353 XCHG ;SAVE THE CURRENT "SYSOUT" VALUE(IN D,E) 6436 016663 052 121 042 LHLD SYSIN ; NOW SEE IF THIS IS FIRST TIME IN 6437 016666 174 MOV A,H ;GET THE INDICATOR 6438 016667 247 ANA A ;SET FLAGS 6439 016670 302 301 035 JNZ STCK.Y ;JUMP IF ALREADY STACKING 6440 6441 016673 041 125 042 LXI H,SYSBUF ;FIRST TIME IN, SO SET INPUT FLAG 6442 016676 042 121 042 SHLD SYSIN ;SET IT 6443 6444 016701 041 053 335 STCK.Y: LXI H,-SYSEND ;NOW SEE IF BUFFER IS FULL 6445 016704 031 DAD D ;ADD END TO THE CURRENT TO SEE IF BUFF FULL 6446 016705 174 MOV A,H ;SEE IF ZERO 6447 016706 265 ORA L ;SEE IF ZERO 6448 016707 310 RZ ;IF .EQ. 0 THROW AWAY STUFF..BUFF IS FULL 6449 6450 ;HERE IF NOT FULL. MUST STACK THIS CHARACTER 6451 016710 353 XCHG ;CURRENT POINTER GOES BACK TO HL REG(PNT TO SYSOUT) 6452 016711 160 MOV M,B ;CHAR INTO RAM SPACE 6453 016712 043 INX H ;UP COUNT 6454 016713 066 000 MVI M,0 ;GUARANTEE A ZERO BYTE AT THE END OF BUFFER 6455 016715 303 004 036 JMP SETOUT ;PUT THE POINTER BACK WHERE IT GOES VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-211 SUBRTN.M80 ENVELOPE COLLECTOR 6457 ;HERE IF NOT PRINTING YET.. PRINT FIRST CHARACTER AND PLAN ON SOME MORE 6458 016720 041 125 042 NOTBUSY: LXI H,SYSBUF ;THIS IS THE FIRST TIME IN 6459 016723 042 123 042 SHLD SYSOUT ;SET THE FLAG & THE POINTER 6460 6461 016726 170 MOV A,B ;GET CHAR BACK TO ACCUM SO CAN PRINT IT 6462 016727 107 MORE.: MOV B,A ;WHERE EVER U COME FROM, SAVE ACCUM IN B REG 6463 016730 376 012 CPI LFCHR ;IS THIS A LINE FEED?? 6464 016732 302 344 035 JNZ MM.PNT ;IF NO, NOTHING SPECIAL 6465 6466 016735 072 260 040 LDA CNTLQ.ON ;MUST WE ANSWER EVERY WITH A "CNTROL-Q" 6467 016740 247 ANA A ;IF FLAG .EQ., THEN NO, IF YES THEN WRITE IT 6468 016741 304 123 004 CNZ KCHR0 ;YES, A LINE FEED, SEND THE SYSTEM A "CONTROL-Q" 6469 016744 170 MM.PNT: MOV A,B ;NO MATTER HOW U GOT HERE, CHAR GOES TO ACCUM 6470 016745 373 EI ;INTERRUPTS ON NOW, BEGIN PRINTING 6471 016746 315 056 004 CALL PCHR1Z ;PRINT A CHAR 6472 6473 ;BACK TO HERE WHEN DONE PRINTING 6474 016751 363 DI ;DON'T BOTHER ME FOR A BIT 6475 016752 052 121 042 LHLD SYSIN ;GRAB POINTER OF THINGS WAITING TO BE PRINTED 6476 016755 174 MOV A,H ;GET FLAG 6477 016756 247 ANA A ;SET FLAGS 6478 016757 312 376 035 JZ DONE.BUF ;IF NOTHIN, ALL DONE 6479 6480 ;HERE WHEN SOMETHING TO DO 6481 016762 176 MOV A,M ;GRAB A CHARACTER TO PRINT 6482 016763 247 ANA A ;MUST FIRST CHECK FOR END OF BUFFER 6483 016764 312 376 035 JZ DONE.BUF ;IF DONE RESET THE POINTERS AND GET OUT 6484 6485 016767 043 INX H ;NEXT POINT 6486 016770 042 121 042 SHLD SYSIN ;SET INTO RAM 6487 016773 303 327 035 JMP MORE. ;DO MORE 6488 6489 ;HERE ON DONE ALL..FALL INTO Z-BUFF CODE 6490 016776 DONE.BUF: 6491 016776 041 000 000 Z.TBUF: LXI H,0 ;WE NEED TO CLEAR SOME BUFFERS 6492 017001 042 121 042 SHLD SYSIN ;CLEAR POINTER 6493 017004 042 123 042 SETOUT: SHLD SYSOUT ; AND CLEAR POINTER 6494 017007 311 RET VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-212 SUBRTN.M80 **** MORE ERROR ESCAPES **** 6496 .SBTTL **** MORE ERROR ESCAPES **** 6497 017010 NOACK: PLINE NOA ;"PRINT NO DATA ACK" (1) 017010 337 RST 3 ;PRINT LINE OF CHARS (1) 017011 220 037 .ADDR NOA ;BUFF TO PRINT 6498 6499 017013 041 001 000 LXI H,1 ;ERR CODE IS 1 6500 017016 042 154 040 ERRRTN: SHLD ERRCD ;SET ERROR CODE 6501 017021 ENDCMD (1) 017021 311 RET ;RETURN TO CALLER 6502 6503 017022 257 NOARB: XRA A ;CLR ACCUM 6504 017023 323 210 OUT BUSCTL ;***** I/O WRT 210/0 ***** 6505 017025 PLINE NBR ;"?NO BUS RESP" (1) 017025 337 RST 3 ;PRINT LINE OF CHARS (1) 017026 234 037 .ADDR NBR ;BUFF TO PRINT 6506 6507 017030 041 002 000 LXI H,2 ;ERR CODE IS 2 6508 017033 303 016 036 JMP ERRRTN ;GO SET ERROR CODE 6509 6510 017036 257 NIXOM: XRA A ;CLR ACCUM 6511 017037 323 210 OUT BUSCTL ;***** I/O WRT 210/0 ***** CLR OUT NIXOM BIT AFTER THE REPORT 6512 017041 PLINE NXMMSG ;"PRINT ?NXM" (1) 017041 337 RST 3 ;PRINT LINE OF CHARS (1) 017042 226 037 .ADDR NXMMSG ;BUFF TO PRINT 6513 017044 041 003 000 LXI H,3 ;ERROR CODE 3 6514 6515 017047 303 016 036 JMP ERRRTN ;SET ERROR CODE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-213 DR.M80 ****DISK TRANSFER CHANNEL COMMAND LIST**** 6517 .SBTTL ****DISK TRANSFER CHANNEL COMMAND LIST**** 6518 6519 017052 DSKSEQ: 6520 6521 ;A MINOR NOTE: 40000 WEIGHT BIT IS "VALID" 6522 ; : 100000 WEIGHT BIT IS "36-BIT XFR" 6523 6524 017052 UBA. 763,001 ;ADDRESS OF UBA IS FIRST ELEMENT OF THE LIST (1) 017052 001 .BYTE 001 & 377 (1) 017053 346 .BYTE Q.1 (1) 017054 073 .BYTE Q.2 6525 017055 DI. 140,001 ;VALID & "36 BIT XFR" FOR PAGE 1 (1000-1777) (1) 017055 001 .BYTE 001 & 377 (1) 017056 300 .BYTE Q.1 (1) 017057 000 .BYTE Q.2 6526 017060 LI. D776,P.10 ;GET DRIVE STATUS & CONTROL REG, SO CAN SET UNIT (1) 017060 374 .BYTE Q.1 (1) 017061 010 .BYTE P.10 & 377 (1) 017062 013 .BYTE Q.2 6527 017063 DI.INDIRECT UNITNM ;NOW SET THE UNIT NUMBER (1) 017063 132 040 .ADDR UNITNM (1) 017065 200 .BYTE ^O200 6528 017066 EI. D776,P.12 ;ADDRESS OF DRIVE STATUS (1) 017066 374 .BYTE Q.1 (1) 017067 012 .BYTE P.12 & 377 (1) 017070 023 .BYTE Q.2 6529 017071 TWAIT 400 ;CHECK THAT THE DRIVE IS PRESENT (1) 017071 000 001 .ADDR 400 (1) 017073 060 .BYTE <14*4> 6530 017074 WAIT 200 ;CHECK & WAIT FOR READY (1) 017074 200 000 .ADDR 200 (1) 017076 030 .BYTE <6*4> 6531 017077 LI. D776,P.10 ;ADDR OF DRIVE STATUS REG (1) 017077 374 .BYTE Q.1 (1) 017100 010 .BYTE P.10 & 377 (1) 017101 013 .BYTE Q.2 6532 017102 DI. 0,40 ;ISSUE CONTROLLER CLR (1) 017102 040 .BYTE 40 & 377 (1) 017103 000 .BYTE Q.1 (1) 017104 000 .BYTE Q.2 6533 017105 DI.INDIRECT UNITNM ;SET TO UNIT # (1) 017105 132 040 .ADDR UNITNM (1) 017107 200 .BYTE ^O200 6534 017110 LI. D776,P.00 ;ADDR OF CONTROLLER STATUS REG (1) 017110 374 .BYTE Q.1 (1) 017111 000 .BYTE P.00 & 377 (1) 017112 013 .BYTE Q.2 6535 017113 DI. 0,11 ;ISSUE DRIVE CLEAR (1) 017113 011 .BYTE 11 & 377 (1) 017114 000 .BYTE Q.1 (1) 017115 000 .BYTE Q.2 6536 017116 DI. 0,21 ;SET "READ-IN-PRESET" (1) 017116 021 .BYTE 21 & 377 (1) 017117 000 .BYTE Q.1 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-214 DR.M80 ****DISK TRANSFER CHANNEL COMMAND LIST**** (1) 017120 000 .BYTE Q.2 6537 017121 LI. D776,P.12 ;GET TO THE DRIVE STATUS REGISTER (1) 017121 374 .BYTE Q.1 (1) 017122 012 .BYTE P.12 & 377 (1) 017123 013 .BYTE Q.2 6538 017124 WAIT 200 ;WAIT FOR IT TO BE READY (1) 017124 200 000 .ADDR 200 (1) 017126 030 .BYTE <6*4> 6539 017127 TWAIT 100 ;NOW CHECK THAT "PRE-SET" HAS SET VOLUME VALID (1) 017127 100 000 .ADDR 100 (1) 017131 060 .BYTE <14*4> 6540 017132 LI. D776,P.06 ;ADDR TRACK/SECTOR REG (1) 017132 374 .BYTE Q.1 (1) 017133 006 .BYTE P.06 & 377 (1) 017134 013 .BYTE Q.2 6541 017135 DI.INDIRECT BLKNUM ;EMPTY FOR NOW (1) 017135 105 040 .ADDR BLKNUM (1) 017137 200 .BYTE ^O200 6542 017140 LI. D776,P.34 ;ADDR OF CYLINDER REG (1) 017140 374 .BYTE Q.1 (1) 017141 034 .BYTE P.34 & 377 (1) 017142 013 .BYTE Q.2 6543 017143 DI.INDIRECT BLKADR ;EMPTY FOR NOW (1) 017143 112 040 .ADDR BLKADR (1) 017145 200 .BYTE ^O200 6544 017146 QXFR: LI. D776,P.02 ;ADD OF WORD COUNT REG (1) 017146 374 .BYTE Q.1 (1) 017147 002 .BYTE P.02 & 377 (1) 017150 013 .BYTE Q.2 6545 017151 DI. 176,000 ;512 WORDS IS 1024 18-BIT BYTES(A PAGE) (1) 017151 000 .BYTE 000 & 377 (1) 017152 374 .BYTE Q.1 (1) 017153 000 .BYTE Q.2 6546 017154 LI. D776,P.04 ;ADDR OF UNIBUS ADDRESS REG (1) 017154 374 .BYTE Q.1 (1) 017155 004 .BYTE P.04 & 377 (1) 017156 013 .BYTE Q.2 6547 017157 DI. 4,000 ;SET SM10 MEM ADDR TO 1000 (1) 017157 000 .BYTE 000 & 377 (1) 017160 010 .BYTE Q.1 (1) 017161 000 .BYTE Q.2 6548 017162 LI. D776,P.00 ;BACK TO STATUS REG (1) 017162 374 .BYTE Q.1 (1) 017163 000 .BYTE P.00 & 377 (1) 017164 013 .BYTE Q.2 6549 017165 DI. 0,71 ;ISSUE READ (1) 017165 071 .BYTE 71 & 377 (1) 017166 000 .BYTE Q.1 (1) 017167 000 .BYTE Q.2 6550 017170 EI. D776,P.00 ;NOW READ TO CHECK FOR ERRORS IN XFER (1) 017170 374 .BYTE Q.1 (1) 017171 000 .BYTE P.00 & 377 (1) 017172 023 .BYTE Q.2 6551 017173 WAIT 200 ;CHECK FOR READY BIT TRUE.. VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-215 DR.M80 ****DISK TRANSFER CHANNEL COMMAND LIST**** (1) 017173 200 000 .ADDR 200 (1) 017175 030 .BYTE <6*4> 6552 017176 EI. D776,P.12 ;CHECK DRIVE STATUS REG ITSELF (1) 017176 374 .BYTE Q.1 (1) 017177 012 .BYTE P.12 & 377 (1) 017200 023 .BYTE Q.2 6553 017201 ERRTST 40000 ;TEST "ERR" BIT (1) 017201 000 100 .ADDR 40000 (1) 017203 040 .BYTE <10*4> 6554 ;IF IT WAS OK, THEN CHECK THE CONTROLLER FOR ERRORS 6555 017204 EI. D776,P.00 ;EXAMINE CONTROLLER (1) 017204 374 .BYTE Q.1 (1) 017205 000 .BYTE P.00 & 377 (1) 017206 023 .BYTE Q.2 6556 017207 ERRTST 060000 ;DRIVE RDY, NOW SEE IF ENCOUNTERED ERRORS (1) 017207 000 140 .ADDR 060000 (1) 017211 040 .BYTE <10*4> 6557 017212 ENDLST ;END OF CHANNEL COMMAND LIST (1) 017212 000 .BYTE 0 (1) 017213 000 .BYTE 0 (1) 017214 050 .BYTE <12*4> VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-216 DR.M80 TAPE TRANSFER CHANNEL COMMAND LIST 6559 .SBTTL TAPE TRANSFER CHANNEL COMMAND LIST 6560 ;DRIVE CONTROLLER REGISTER IS 776440..FOLLOWING COMMANDS APPLY 6561 ; 7=REWIND 6562 ; 11=DRIVE CLEAR 6563 ; 25=ERASE 6564 ; 27=WRITE TAPE MARK 6565 ; 31=SPACE FORWARD(SKIP A FILE) 6566 ; 33=SPACE REVERSE(SKIP A FILE, MOVING TAPE IN REVERSE) 6567 ; 51=WRITE CHECK FORWARD 6568 ; 57=WRITE CHECK REVERSE 6569 ; 61=WRITE FORWARD 6570 ; 71=READ FORWARD(GO!) 6571 ; 77=READ REVERSE(GO!) 6572 6573 017215 MTASEQ: UBA. 763,001 ;ADDRESS OF UBA PAGING RAM (1) 017215 001 .BYTE 001 & 377 (1) 017216 346 .BYTE Q.1 (1) 017217 073 .BYTE Q.2 6574 017220 DI. 40,001 ;SET VALID IN PAGE 1 (1) 017220 001 .BYTE 001 & 377 (1) 017221 100 .BYTE Q.1 (1) 017222 000 .BYTE Q.2 6575 017223 LI. D772,P.10 ;SET ADDRESS OF DRIVE CONTROL REGISTER (1) 017223 364 .BYTE Q.1 (1) 017224 010 .BYTE P.10 & 377 (1) 017225 013 .BYTE Q.2 6576 017226 DI. 0,40 ;ISSUE CONTROLLER AND SLAVE CLR (1) 017226 040 .BYTE 40 & 377 (1) 017227 000 .BYTE Q.1 (1) 017230 000 .BYTE Q.2 6577 017231 DI.INDIRECT TAPEUNIT ;SET TAPE UNIT # (1) 017231 137 040 .ADDR TAPEUNIT (1) 017233 200 .BYTE ^O200 6578 017234 LI. D772,P.32 ;SLAVE SELECT/FORMAT/DENSITY REG (1) 017234 364 .BYTE Q.1 (1) 017235 032 .BYTE P.32 & 377 (1) 017236 013 .BYTE Q.2 6579 017237 DI.INDIRECT DEN.SLV ;SET SLAVE, FORMAT, DENSITY(TEMP:DENS=1600,F=0,S=0) (1) 017237 362 040 .ADDR DEN.SLV (1) 017241 200 .BYTE ^O200 6580 017242 EI. D772,P.12 ;READ THE DRIVE STATUS, TO MAKE SURE IT EXISTS (1) 017242 364 .BYTE Q.1 (1) 017243 012 .BYTE P.12 & 377 (1) 017244 023 .BYTE Q.2 6581 017245 TWAIT 400 ;CHECK THE "DRIVE PRESENT" BIT (1) 017245 000 001 .ADDR 400 (1) 017247 060 .BYTE <14*4> 6582 017250 WAIT 200 ;IF WAS PRESENT, WAIT FOR IT TO BE READY (1) 017250 200 000 .ADDR 200 (1) 017252 030 .BYTE <6*4> 6583 017253 LI. D772,P.06 ;FRAME COUNT REGISTER (1) 017253 364 .BYTE Q.1 (1) 017254 006 .BYTE P.06 & 377 (1) 017255 013 .BYTE Q.2 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-217 DR.M80 TAPE TRANSFER CHANNEL COMMAND LIST 6584 017256 DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES (1) 017256 000 .BYTE 0 & 377 (1) 017257 000 .BYTE Q.1 (1) 017260 000 .BYTE Q.2 6585 017261 LI. D772,P.00 ;SET ADDRESS TO RH11 CONTROL REGISTER (1) 017261 364 .BYTE Q.1 (1) 017262 000 .BYTE P.00 & 377 (1) 017263 013 .BYTE Q.2 6586 017264 DI. 0,7 ;ISSUE "REWIND" TO TAPE (1) 017264 007 .BYTE 7 & 377 (1) 017265 000 .BYTE Q.1 (1) 017266 000 .BYTE Q.2 6587 017267 EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR READY (1) 017267 364 .BYTE Q.1 (1) 017270 012 .BYTE P.12 & 377 (1) 017271 023 .BYTE Q.2 6588 017272 WAIT 200 ;WAIT FOR REWIND TO COMPLETE (1) 017272 200 000 .ADDR 200 (1) 017274 030 .BYTE <6*4> 6589 017275 QTXFR: LI. D772,P.04 ;CONTROLLER TO MEMORY DEST. REG (1) 017275 364 .BYTE Q.1 (1) 017276 004 .BYTE P.04 & 377 (1) 017277 013 .BYTE Q.2 6590 017300 DI. 4,000 ;SET KS10 START ADDRESS TO 1000 (1) 017300 000 .BYTE 000 & 377 (1) 017301 010 .BYTE Q.1 (1) 017302 000 .BYTE Q.2 6591 017303 LI. D772,P.02 ;SET ADDRESS TO WORD COUNT REGISTER (1) 017303 364 .BYTE Q.1 (1) 017304 002 .BYTE P.02 & 377 (1) 017305 013 .BYTE Q.2 6592 017306 DI. 176,000 ;1 PAGE OF 512 WORDS IS 1024 18-BIT BYTES (1) 017306 000 .BYTE 000 & 377 (1) 017307 374 .BYTE Q.1 (1) 017310 000 .BYTE Q.2 6593 017311 LI. D772,P.06 ;FRAME COUNT REGISTER (1) 017311 364 .BYTE Q.1 (1) 017312 006 .BYTE P.06 & 377 (1) 017313 013 .BYTE Q.2 6594 017314 DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES (1) 017314 000 .BYTE 0 & 377 (1) 017315 000 .BYTE Q.1 (1) 017316 000 .BYTE Q.2 6595 017317 LI. D772,P.00 ;SET ADDRESS TO RH11 CONTROL REGISTER (1) 017317 364 .BYTE Q.1 (1) 017320 000 .BYTE P.00 & 377 (1) 017321 013 .BYTE Q.2 6596 017322 DI.INDIRECT SKP.GO ;ISSUE "XFER CMD"(31=SKIP .OR. 71=RD-IN) (1) 017322 144 040 .ADDR SKP.GO (1) 017324 200 .BYTE ^O200 6597 017325 EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR READY (1) 017325 364 .BYTE Q.1 (1) 017326 012 .BYTE P.12 & 377 (1) 017327 023 .BYTE Q.2 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-218 DR.M80 TAPE TRANSFER CHANNEL COMMAND LIST 6598 017330 WAIT 200 ;WAIT FOR FILE READ TO COMPLETE (1) 017330 200 000 .ADDR 200 (1) 017332 030 .BYTE <6*4> 6599 017333 EI. D772,P.14 ;LOOK AT THE DRIVE ERROR REGISTER (1) 017333 364 .BYTE Q.1 (1) 017334 014 .BYTE P.14 & 377 (1) 017335 023 .BYTE Q.2 6600 017336 RETRY.: ERRTST 070300 ;ERRORS WORTH RETRYING?? (1) 017336 300 160 .ADDR 070300 (1) 017340 040 .BYTE <10*4> 6601 017341 FRMERR: ERRTST 103400 ;SEE IF THIS WAS A CORRECTABLE TYPE ERROR (1) 017341 000 207 .ADDR 103400 (1) 017343 040 .BYTE <10*4> 6602 017344 EI. D772,P.12 ;READ THE DRIVE STATUS TO CHECK FOR ERRORS (1) 017344 364 .BYTE Q.1 (1) 017345 012 .BYTE P.12 & 377 (1) 017346 023 .BYTE Q.2 6603 017347 ERRTST 40000 ;GET ANY DRIVE ERRORS?? (1) 017347 000 100 .ADDR 40000 (1) 017351 040 .BYTE <10*4> 6604 017352 LI. D772,P.00 ;NOW ADDRESS TO CONTROLLER STATUS (1) 017352 364 .BYTE Q.1 (1) 017353 000 .BYTE P.00 & 377 (1) 017354 013 .BYTE Q.2 6605 017355 ERRTST 60000 ;CHECK FOR ERRORS THERE. (1) 017355 000 140 .ADDR 60000 (1) 017357 040 .BYTE <10*4> 6606 017360 ENDLST ;END OF CHANNEL COMMAND LIST (1) 017360 000 .BYTE 0 (1) 017361 000 .BYTE 0 (1) 017362 050 .BYTE <12*4> VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-219 DR.M80 TAPE TRANSFER CHANNEL COMMAND LIST 6608 ;QUICK LITTLE ROUTINE TO RESET THE MAGTAPE AFTER IT SUFFERS AN 6609 ;IGNORABLE ERROR 6610 017363 MTARST: LI. D772,P.10 ;SET ADDRESS OF DRIVE CONTROL REGISTER (1) 017363 364 .BYTE Q.1 (1) 017364 010 .BYTE P.10 & 377 (1) 017365 013 .BYTE Q.2 6611 017366 DI. 0,40 ;ISSUE CONTROLLER AND SLAVE CLR (1) 017366 040 .BYTE 40 & 377 (1) 017367 000 .BYTE Q.1 (1) 017370 000 .BYTE Q.2 6612 017371 DI.INDIRECT TAPEUNIT ;FIX UNIT NUMBER (1) 017371 137 040 .ADDR TAPEUNIT (1) 017373 200 .BYTE ^O200 6613 017374 LI. D772,P.04 ;CONTROLLER TO MEMORY DEST. REG (1) 017374 364 .BYTE Q.1 (1) 017375 004 .BYTE P.04 & 377 (1) 017376 013 .BYTE Q.2 6614 017377 DI. 4,000 ;SET KS10 START ADDRESS TO 1000 (1) 017377 000 .BYTE 000 & 377 (1) 017400 010 .BYTE Q.1 (1) 017401 000 .BYTE Q.2 6615 017402 LI. D772,P.06 ;FRAME COUNT REGISTER (1) 017402 364 .BYTE Q.1 (1) 017403 006 .BYTE P.06 & 377 (1) 017404 013 .BYTE Q.2 6616 017405 DI. 0,0 ;FRAME COUNT TO 0 IS MAX NUMB OF FRAMES (1) 017405 000 .BYTE 0 & 377 (1) 017406 000 .BYTE Q.1 (1) 017407 000 .BYTE Q.2 6617 017410 ENDLST ;QUICK OUT (1) 017410 000 .BYTE 0 (1) 017411 000 .BYTE 0 (1) 017412 050 .BYTE <12*4> VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-220 MSG.M80 TAPE TRANSFER CHANNEL COMMAND LIST 6619 017413 077 102 125 .IIF NDF,NOROOM INIER: .ASCIZ /?BUS\/ ;BUS POLLUTED ON POWER UP 6620 017421 077 102 106 BV: .ASCIZ /?BFO/ ;INPUT BUFFER OVERFLOW 6621 017426 077 111 114 CMDNG: .ASCII /?IL/ ;ILLEGAL INSTRUCTION 6622 017431 015 012 000 .BYTE ^O15,^O12,0 ;CR-LF 6623 017434 077 125 111 TTM: .ASCIZ /?UI\/ ;UNKNOWN INTERRRUPT 6624 017441 102 125 123 EBHED: .ASCIZ /BUS 0-35\/ ;MESSAGE HEADER FOR "EB" CMD 6625 017453 113 123 061 KSPRMT: .ASCII /KS10>/ ;PROMPT MESSAGE 6626 017460 377 000 .BYTE ^O377,0 6627 017462 040 103 131 MSG10: .ASCIZ % CYC\SENT/% ;CYCLE TYPE FOR "DB" COMMAND 6628 017475 134 122 103 DRCVD: .ASCIZ %\RCVD/% ;DATA RECEIVED ON BUS(DB CMD) 6629 017504 077 101 057 ECVER: .ASCIZ %?A/B\% ;A & B COPIES OF CRAM BITS DID NOT MATCH 6630 017512 120 103 057 PCMSG: .ASCIZ %PC/% ;OBVIOUS 6631 017516 045 110 114 HLTMS: .ASCIZ .%HLTD/. ;MESSAGE "HALTED/XXXXXX" WHERE XXXXXX IS DATA 6632 017525 077 104 116 EXMS: .ASCIZ /?DNF\/ ;"DID NOT FINISH"-INSTR 6633 017533 077 102 124 BTFAIL: .ASCIZ /?BT / ;DEVICE ERROR OR TIMEOUT DURING BOOT OPERATION 6634 017540 102 124 040 BTMSG1: .ASCIZ /BT SW/ ;MESSAGE SAYS BOOTING, USING BOOT SW 6635 017546 077 104 116 SMERR: .ASCIZ /?DNC\/ ;"DID NOT COMPLETE"-THE HALT 6636 017554 117 106 106 OFFMSG: .ASCIZ /OFF\/ ;MESSAGE SAYS SIGNAL IS "OFF" 6637 017561 077 120 101 PARMSG: .ASCIZ /?PAR ERR / ;REPORT CLOCK FREEZE DUE TO PAR ERR 6638 017573 077 115 122 MOSMSG: .ASCIZ /?MRE\/ ;MEMORY REFRESH ERROR 6639 017601 077 102 103 ERRMSG: .ASCIZ /?BC / ;TA-DA....BOOT CHECK 6640 017606 077 122 125 RN.: .ASCIZ /?RUNNING\/ ;TRYING TO DO A CMD THAT MAY SCREW UP 6641 017620 077 116 104 NOA: .ASCIZ /?NDA\/ ;RECEIVED NO DATA ACKNOWLEDGE ON MEM REQUEST 6642 017626 077 116 130 NXMMSG: .ASCIZ /?NXM\/ ;REFERRENCED NON EXISTANT MEMORY LOCATION 6643 017634 077 116 102 NBR: .ASCIZ /?NBR\/ ;CONSOLE WAS NOT GRANTED BUS ON A REQUEST 6644 017642 077 122 101 RAG: .ASCIZ /?RA/ ;CMD REQUIRES ARGUEMENT..U GOTTA TYPE SOMETHING 6645 017646 077 102 116 BB1: .ASCIZ /?BN/ ;TYPED A BAD NUMBER(I.E 9 OR X OR # ETC.) 6646 017652 076 076 125 Q.UBA: .ASCIZ />>UBA?/ ;QUERY FOR UNIBUS ADAPTER 6647 017661 076 076 122 Q.RH: .ASCIZ />>RHBASE?/ ;QUERY FOR RH11 TO USE 6648 017673 076 076 125 Q.UNIT: .ASCIZ />>UNIT?/ ;QUERY FOR UNIT TO USE 6649 017703 076 076 124 Q.TCU: .ASCIZ />>TCU?/ ;QUERY FOR TAPE CONTROLL UNIT 6650 017712 076 076 104 Q.DEN: .ASCIZ />>DENS?/ ;QUERY FOR TAPE DENSITY 6651 017722 076 076 123 Q.SLV: .ASCIZ />>SLV?/ ;QUERY FOR TAPE SLAVE 6652 017731 077 113 101 KAMSG: .ASCIZ /?KA\/ ;KEEP ALIVE FAILED 6653 017736 077 106 122 FRCMSG: .ASCIZ /?FRC\/ ;HAD A FORCED RELOAD 6654 017744 077 120 127 PWLEN: .ASCIZ /?PWL/ ;PASSWORD LENGTH ERROR 6655 017751 077 116 101 NOACCS: .ASCII /?NA/ ;NOT AVAILABLE (KLINIK LINE THAT IS) 6656 017754 015 012 000 .BYTE ^O15,^O12,0 ;CR-LF 6657 017757 120 127 072 QPW: .ASCII /PW:/ ;ASK FOR A PASSWORD MESSAGE 6658 017762 015 012 000 .BYTE ^O15,^O12,0 ;CR-LF 6659 017765 102 124 040 AUTOMS: .ASCIZ /BT AUTO/ ;BEGINNING AUTO BOOT SEQUENCE VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-221 STORE.M80 - SM10 DATA STORAGE PARAMETERS 6661 .SBTTL - SM10 DATA STORAGE PARAMETERS 6662 ;NOTE THAT ALL THESE LOCATIONS ARE RAM LOCATIONS 6663 ;AND MAY BE USED WITH THE 6664 ;ASSEMBLY OF SEPARATE MODULES OF CONSOLE CODE.... 6665 020000 .= RAMST 6666 020000 000002 T80DT: .BLKB 2 6667 020002 000002 C80AD: .BLKB 2 6668 020004 000002 CRMAD: .BLKB 2 6669 020006 000002 BYTCNT: .BLKB 2 6670 020010 000002 CRMFN: .BLKB 2 6671 020012 000005 EMBUF: .BLKB 5 6672 020017 000005 MEMAD: .BLKB 5 6673 020024 000005 IOAD: .BLKB 5 6674 020031 000002 ENEXT: .BLKB 2 6675 020033 000002 DNEXT: .BLKB 2 6676 020035 000005 CHRBUF: .BLKB 5 6677 020042 000005 BUSAD: .BLKB 5 6678 020047 000005 DMDAT: .BLKB 5 6679 020054 000006 RAMX1: .BLKB 6 6680 020062 000006 RAMX2: .BLKB 6 6681 020070 000003 ER.LOC: .BLKB 3 ;PLACE TO EXECUTE 8080 "IN'S" AND "OUT'S" 6682 020073 000005 TMPBF2: .BLKB 5 6683 020100 000005 TMPB2: .BLKB 5 6684 020105 000005 BLKNUM: .BLKB 5 6685 020112 000005 BLKADR: .BLKB 5 6686 020117 000001 EXM1: .BLKB 1 6687 020120 000001 NOPNT: .BLKB 1 6688 020121 000001 BT.TYPE: .BLKB 1 6689 020122 000001 P8.TMP: .BLKB 1 6690 020123 000001 ERADDR: .BLKB 1 6691 020124 000001 KLNKSW: .BLKB 1 6692 020125 000002 KPWPNT: .BLKB 2 6693 020127 000001 KPWCNT: .BLKB 1 6694 020130 000001 WATCHC: .BLKB 1 6695 020131 000001 CMDS..: .BLKB 1 6696 020132 000005 UNITNM: .BLKB 5 6697 020137 000005 TAPEUNIT: .BLKB 5 6698 020144 000005 SKP.GO: .BLKB 5 6699 020151 000001 BRKON: .BLKB 1 6700 020152 000002 BRKDT: .BLKB 2 6701 020154 000002 ERRCD: .BLKB 2 6702 020156 000001 USRMD: .BLKB 1 6703 020157 000001 RPEND: .BLKB 1 6704 020160 000001 RPCNTR: .BLKB 1 6705 020161 000001 BFCNT: .BLKB 1 6706 020162 000001 STPPD: .BLKB 1 6707 020163 000001 EIFLAG: .BLKB 1 6708 020164 000001 DIFLAG: .BLKB 1 6709 020165 000001 RNFLG: .BLKB 1 6710 020166 000001 CHKPAR: .BLKB 1 6711 020167 000001 CHKREF: .BLKB 1 6712 020170 000002 ECSAV: .BLKB 2 6713 020172 000010 RM100: .BLKB 8 6714 020202 000001 BTMSK: .BLKB 1 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-222 STORE.M80 - SM10 DATA STORAGE PARAMETERS 6715 020203 000001 BTNUM: .BLKB 1 6716 020204 000001 EOL: .BLKB 1 6717 020205 000002 AM.AI: .BLKB 2 6718 020207 000002 RPBUFS: .BLKB 2 6719 020211 000002 RPLST: .BLKB 2 6720 020213 000001 RPTON: .BLKB 1 6721 020214 000001 CHRCNT: .BLKB 1 6722 020215 000002 BUF.: .BLKB 2 6723 020217 000002 HLSAVE: .BLKB 2 6724 020221 000002 CMD..: .BLKB 2 6725 020223 000002 .ARG1: .BLKB 2 6726 020225 000002 CMCNT: .BLKB 2 6727 020227 000002 FIRST: .BLKB 2 6728 020231 000002 CHKHLT: .BLKB 2 6729 020233 000002 OCTSV: .BLKB 2 6730 020235 000005 SHRTAD: .BLKB 5 6731 020242 000005 RHBASE: .BLKB 5 6732 020247 000001 CSLMODE: .BLKB 1 6733 020250 000001 KACNTR: .BLKB 1 6734 020251 000001 MMFLG: .BLKB 1 6735 020252 000001 MAILFG: .BLKB 1 6736 020253 000001 VERCNT: .BLKB 1 6737 020254 000001 UBANUM: .BLKB 1 6738 020255 000001 GOCODE: .BLKB 1 6739 020256 000001 SECRET: .BLKB 1 6740 020257 000001 DIECNT: .BLKB 1 6741 020260 000001 CNTLQ.ON: .BLKB 1 6742 020261 000001 APTANS: .BLKB 1 6743 020262 000007 PASSWORD: .BLKB 7 6744 020271 000006 KPWBUF: .BLKB 6 6745 020277 000001 PWRTRY: .BLKB 1 6746 020300 000001 KLLINE.ON: .BLKB 1 6747 020301 000001 E.CNT: .BLKB 1 6748 020302 000020 CRMBF: .BLKB ^D16 6749 020322 000020 CRMTM: .BLKB ^D16 6750 020342 000002 KATIM1: .BLKB 2 6751 020344 000002 .IIF DF,SCECOD,SCEADR: .BLKB 2 ;LAST FAILING ADDRESS 6752 020346 000002 MODDIS: .BLKB 2 6753 020350 000002 NOREND: .BLKB 2 6754 020352 000002 ENVPNT: .BLKB 2 6755 020354 000001 PARBT: .BLKB 1 6756 020355 000001 TRAPEN: .BLKB 1 6757 020356 000001 MTAUBA: .BLKB 1 6758 020357 000001 DSKUBA: .BLKB 1 6759 020360 000001 STATE: .BLKB 1 6760 020361 000001 LSTMSG: .BLKB 1 6761 020362 000005 DEN.SLV: .BLKB 5 6762 020367 000005 MTBASE: .BLKB 5 6763 020374 000005 DSBASE: .BLKB 5 6764 020401 000031 RPINI: .BLKB ^D25 6765 020432 000062 RPTBFI: .BLKB ^D50 6766 020514 000132 BUFBG: .BLKB ^D90 6767 020646 000001 BUFEN: .BLKB 1 6768 020647 000002 E.BUF: .BLKB 2 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-223 STORE.M80 - SM10 DATA STORAGE PARAMETERS 6769 020651 000140 E.BEG: .BLKB ^O140 6770 021011 000001 ENVMNO: .BLKB 1 6771 021012 000001 ENVCHK: .BLKB 1 6772 021013 000106 ENVBUF: .BLKB 70 ;EB IS LONGEST COMMAND WITH 67. CHARS 6773 021121 000002 SYSIN: .BLKB 2 6774 021123 000002 SYSOUT: .BLKB 2 6775 021125 000200 SYSBUF: .BLKB ^O200 6776 021325 000001 SYSEND: .BLKB 1 ;AND EMPTY BYTE TO HOLD END OF LIST 6777 001 .IF DF,SCECOD 6778 021326 000001 SC.OFF: .BLKB 1 ;RECOVERY ON OR OFF FLAG 6779 021327 000050 RHSAVE: .BLKB 40. ;BUFFER FOR SAVING RH STUFF 6780 000 .ENDC 6781 021377 FREE: 6782 000000 .END ;END STATEMENT VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-224 END.M80 CROSS REFERENCE TABLE A =%000007 532 567 580 630 638 652 655 658 659 662 665 667 668 670 673 680 687 691 704 705 706 707 708 717 718 722 727 731 732 744 747 749 757 764 775 795 802 815 838 840 869 887 928 932 947 950 960 971 998 1013 1035 1048 1064 1068 1075 1076 1085 1115 1148 1150 1152 1167 1174 1176 1182 1190 1199 1217 1236 1266 1278 1283 1291 1293 1307 1312 1314 1321 1328 1330 1338 1339 1340 1342 1365 1381 1419 1440 1455 1461 1640 1645 1648 1666 1673 1680 1687 1689 1698 1706 1721 1722 1735 1745 1759 1795 1799 1803 1807 1811 1839 1841 1849 1851 1857 1897 1923 1929 1932 1937 1941 1945 1952 1956 1962 1963 1967 1977 1979 1982 1985 1986 1993 1996 2003 2007 2012 2018 2023 2045 2048 2054 2072 2083 2101 2104 2111 2113 2122 2126 2129 2132 2138 2146 2151 2155 2162 2167 2224 2228 2246 2267 2292 2298 2311 2314 2321 2325 2330 2336 2341 2350 2362 2368 2417 2420 2437 2440 2491 2496 2498 2504 2508 2513 2517 2521 2538 2542 2586 2591 2593 2596 2599 2605 2610 2614 2618 2653 2658 2661 2675 2680 2683 2700 2709 2753 2755 2756 2768 2776 2778 2790 2808 2820 2832 2844 2864 2869 2899 2903 2921 2922 2926 2929 2935 2944 2960 2963 2972 2982 2997 3005 3007 3014 3016 3043 3045 3048 3051 3061 3063 3071 3073 3077 3079 3082 3089 3091 3093 3100 3104 3116 3124 3126 3130 3133 3148 3151 3156 3171 3184 3187 3210 3216 3226 3255 3261 3263 3279 3281 3289 3306 3359 3374 3376 3390 3461 3484 3491 3522 3525 3540 3553 3554 3555 3571 3585 3595 3610 3611 3629 3642 3653 3666 3690 3704 3712 3724 3731 3745 3748 3756 3757 3761 3762 3766 3770 3771 3776 3779 3785 3799 3800 3805 3890 3900 3925 3947 3978 3993 3996 4004 4006 4015 4022 4031 4043 4060 4063 4068 4073 4078 4087 4178 4232 4237 4245 4247 4249 4253 4255 4264 4265 4267 4269 4271 4281 4289 4296 4298 4306 4324 4384 4394 4401 4405 4424 4439 4448 4449 4451 4458 4461 4514 4562 4564 4619 4624 4655 4668 4675 4691 4696 4716 4717 4718 4732 4761 4775 4816 4825 4836 4860 4875 4908 4927 4945 4947 4948 4950 4960 4966 4979 4985 5000 5012 5017 5022 5032 5103 5128 5143 5161 5163 5194 5199 5224 5225 5245 5250 5252 5311 5418 5426 5427 5444 5448 5450 5452 5473 5488 5490 5492 5493 5495 5502 5504 5506 5528 5531 5534 5538 5545 5549 5564 5565 5581 5583 5597 5606 5607 5621 5622 5633 5648 5652 5669 5670 5672 5691 5701 5726 5728 5729 5747 5755 5789 5797 5824 5825 5887 5891 6014 6017 6032 6050 6052 6066 6093 6122 6128 6136 6141 6147 6155 6164 6167 6176 6187 6188 6193 6200 6211 6215 6221 6223 6246 6254 6338 6343 6352 6355 6382 6385 6417 6427 6430 6431 6437 6438 6446 6461 6462 6467 6469 6476 6477 6481 6482 6503 6510 ACK 016605 1972 6399# ACK.EN 016602 6379 6397# ACTION 016636 6320 6323 6416# ADATP 015607 2502 2594 3702 3723 4766 5986# ADATT 015602 2414 2431 5981# ALT = 000033 94# 6322 6404 6413 AM.AI 020205 2500 2545 6717# APTANS 020261 6232 6245 6418 6742# APT.WT 016322 6245# 6247 ARBRES= 000020 60# 2423 2444 2524 2621 ARG = 000000 5067# 5072# 5074# 5078# 6524# 6525# 6526# 6528# 6531# 6532# 6534# 6535# 6536# 6537# 6540# 6542# 6544# 6545# 6546# 6547# 6548# 6549# 6550# 6552# 6555# 6573# 6574# 6575# 6576# 6578# 6580# 6583# 6584# 6585# 6586# 6587# 6589# 6590# 6591# 6592# 6593# 6594# 6595# 6597# 6599# 6602# 6604# 6610# 6611# 6613# 6614# 6615# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-225 END.M80 CROSS REFERENCE TABLE 6616# ARGBEG 014656 5532 5535# ARGBG1 014657 5529 5536# ARGQQ 014766 5589# 5600 ARG1 = 000000 5067# 5072# 5074# 5078# 6524# 6525# 6526# 6528# 6531# 6532# 6534# 6535# 6536# 6537# 6540# 6542# 6544# 6545# 6546# 6547# 6548# 6549# 6550# 6552# 6555# 6573# 6574# 6575# 6576# 6578# 6580# 6583# 6584# 6585# 6586# 6587# 6589# 6590# 6591# 6592# 6593# 6594# 6595# 6597# 6599# 6602# 6604# 6610# 6611# 6613# 6614# 6615# 6616# ARG16. 014257 2751 2765 2787 2830 2862 2897 2920 2942 3024 3034 3401 3482 3607 3754 3991 4334 5278# ARG96 014642 3350 5528# ARROW = 000076 112# AUTOMS 017765 910 6659# A.BTER 015214 4020 4182 4208 4403 5714# A.CRMO 013241 4872 4919# A.CRMZ 013253 4924# A0003 = 000113 49# 2004 2123 2322 2505 2597 3085 6004 A0411 = 000111 48# 3084 6000 A1219 = 000107 47# 1998 2115 2316 3083 5996 A16PK 014765 5587# 5603 A2027 = 000105 46# 1997 2114 2315 3046 3080 4248 5992 A256 000224 710# 719 724 A2835 = 000103 45# 1995 2112 2313 3044 3078 4246 5988 B =%000000 607 651 673 680 706 713 746 750 753 760 766 769 774 950 952 1076 1099 1266 1656 1666 1668 1673 1680 1689 1698 1706 1722 1799 1803 1807 1819 1886 1929 1938 1945 1954 1956 1959 2048 2054 2083 2101 2104 2146 2224 2234 2243 2249 2260 2358 2365 2379 2390 2498 2504 2593 2596 2869 2875 2903 3125 3139 3143 3149 3150 3152 3153 3169 3189 3312 3315 3377 3378 3389 3597 3651 3662 3684 3694 4353 4354 4363 4435 4443 4446 4469 4470 4509 4529 4544 4569 4571 4609 4616 4672 4673 4695 4701 4703 4706 4707 4720 4722 4726 4730 4740 4742 4743 4745 4750 4752 4756 4774 4780 4783 4785 4787 4796 4797 4798 4802 4803 4819 4820 4834 4841 4950 4958 4973 4976 4980 4984 5032 5036 5141 5153 5216 5231 5233 5288 5302 5319 5327 5330 5335 5344 5358 5364 5368 5375 5405 5412 5420 5423 5428 5446 5476 5477 5513 5520 5543 5586 5598 5602 5613 5629 5633 5641 5744 5752 5764 5778 5814 5818 5828 5831 5847 5850 5869 6093 6112 6133 6192 6193 6210 6221 6264 6270 6272 6452 6461 6462 6469 BBLOOP 011616 4278 4295# BB1 017646 5699 6645# BCA.ER 013404 4826 4984# BCB.ER 013411 4982 4987# BCCMD 012773 1570 4809# BCC.ER 013371 4974 4978# BC.ALP 013017 4820# 4838 4851 BC.BER 013365 4962 4975# BC.BLP 013100 4858# 4862 BC.BL1 013114 4866# 4877 BC.CER 013355 4895 4904 4972# BC.CLP 013166 4891# 4911 BC.DB2 013070 4847 4852# BC.2ND 013075 4842 4857# BC.3RD 013147 4881# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-226 END.M80 CROSS REFERENCE TABLE BELL = 000007 89# 2197 BFCNT 020161 1810 1814 1848 1852 2191 6705# BFOVR 002001 1355# 1813 BFRST 004163 697 924 1758 1908 2186# 3931 6265 BIT15 = 100000 66# 1484 1486 1488 1490 1493 1495 1497 1501 1504 1508 1510 1512 1515 1526 1574 1608 BLKADR 020112 4170 4198 6543 6685# BLKNUM 020105 4172 4179 4200 6541 6684# BLKRDR 011365 4188 4197# BOOT 010644 988 3945# BOOTSW= 000301 19# 892 984 993 1871 2302 BPI16 = 002000 57# BPI8 = 001000 58# BREAK 014204 3219 5097 5244# BRKDT 020152 3208 3218 6700# BRKON 020151 3211 3215 3229 6699# BSLASH= 000134 108# 1458 BTAUT 010647 911 3946# BTCHOI 010741 3951 3974 3989# BTCMD 010657 1567 3951# BTERR1 015221 5717# 5730 BTFAIL 017533 5719 6633# BTINT 011430 4109 4164 4216# BTMSG1 017540 3945 6634# BTMSK 020202 5401 5435 6714# BTNUM 020203 5443 6715# BT.BIT= 000001 67# 4232 4314 4394 BT.GO 010762 865 3983 4000# 4026 4104 BT.GO1 010770 1209 4002# BT.SRC 010662 3952# 4386 BT.TYP 020121 4233 4313 4413 6688# BUFBG 020514 2186 6266 6766# BUFEN 020646 6767# BUF. 020215 1784 1797 1855 2187 3932 6722# BUSAD 020042 2412 2415 2435 2464 2474 4815 4817 4829 4848 6677# BUSARB= 000115 38# 2008 2127 2326 2418 2509 2600 3049 3087 3725 BUSCTL= 000210 31# 2020 2134 2338 2351 2369 2421 2442 2519 2539 2616 3052 3090 3105 3117 6504 6511 BUSRES 015256 2423 2444 2448 2524 2527 2531 2621 2625 5735# BV 017421 1355 6620# BYTCNT 020006 6669# B.BTER 015212 4189 5712# B2CMD 012004 1610 4384# C =%000001 665 668 705 710 749 764 767 882 901 947 960 2172 2177 3171 3184 3187 3355 3368 3680 3683 3698 4263 4272 4617 4700 4705 4757 4835 4836 4850 4926 4927 4930 4947 4985 5194 5199 5294 5297 5407 5441 5501 5509 5553 5570 5595 5606 5621 5626 5634 5867 6352 6357 6358 6359 6363 6375 6378 CADWR 006340 3071# 3422 4236 4288 4429 4866 4923 5183 CARRIE= 000302 20# 977 CARRLO= 000003 74# 6176 CCHR = 000103 103# 2182 2471 CECMD 005737 1519 2860# CEDIS 005770 2860 2881# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-227 END.M80 CROSS REFERENCE TABLE CHCMD 006247 1541 1642 3013# CHECKS 002601 743 765 1629# CHKADD 016177 6192# 6216 CHKBIT 012757 4721 4744 4751 4795# CHKERR 000356 780 792# CHKHLT 020231 1012 1025 3451 3573 6728# CHKHOM 011405 4174 4181 4207# CHKKA 001313 1017 1123 1129# CHKPAR 020166 997 1003 5044 6710# CHKREF 020167 1034 1043 5759 6711# CHKSM0= 117755 166# 509# 1629 CHKSM1= 144633 167# 510# 1630 CHKSM2= 160054 168# 511# 1631 CHKSM3= 004326 169# 512# 1632 CHKSTK 015013 5599 5606# CHNXCT 012436 4319 4579 4608# 5113 5134 5170 5188 5212 CHOOSE 005775 2883# 2912 2936 2955 3630 CHRBUF 020035 1992 2010 2310 2328 6676# CHRCNT 020214 5536 5620 6721# CHRRDY 003643 1117 2033# CLEAN 015020 5539 5612# CLKCTL= 000206 30# 2779 3008 3017 5013 CLRBYT 015146 584 5690# CLRLP 000111 627# 632 CLRRN 015302 3013 5061 5752# CLRT1 015646 6015# 6018 CLRUSE 003352 1880 1895# 3428 3538 5045 5760 CMCNT 020225 1771 1838 1842 1862 6726# CMDDI 012577 4645 4695# CMDEI 012521 4647 4655# CMDEN 012715 4650 4765# CMDERC 012675 4649 4750# CMDGO 001671 1280 1297# CMDGO9 001711 1304 1312# CMDLI 012525 4646 4659# CMDLI1 012526 4656 4660# CMDLST 002210 1078 1480# CMDNG 017426 1105 2264 6621# CMDS.. 020131 1282 2190 3813 6695# CMDTWA 012657 4651 4740# CMDUBA 012561 4652 4685# CMDWAI 012626 4648 4715# CMD.. 020221 4013 4096 4101 6724# CMNBUF 002777 1703 1720# CMPLP 015443 5847# 5853 CMP36 015433 849 2463 3294 4211 4892 4901 5841# CNBCK = 000034 88# 1775 1867 1903 2288 CNTC 004151 1762 2180# CNTLC = 000003 101# 1761 CNTLO = 000017 100# 1726 CNTLQ = 000021 99# 1740 CNTLQ. 020260 6466 6741# CNTLS = 000023 98# 1737 CNTLU = 000025 97# 1751 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-228 END.M80 CROSS REFERENCE TABLE CNTLY = 000031 96# 1682 1710 CNTLZ = 000032 95# 1748 CNTS 003545 1738 1976# CNTSL 003556 1985# 1988 CNTZ 003371 1749 1907# COCMD 007604 1239 1530 3570# COINT 007613 3573# 3600 COLLEC 016433 6306 6319# COL.LP 016457 6336# COMMA = 000054 87# 1767 1859 5353 5354 5793 6276 CONT.I 014172 5226 5236# CPCMD 005565 1543 2763# CPMLT 005573 2768# 2774 CPUCTL= 000212 32# 640 1641 2998 3526 3572 3586 CP1 005605 2763 2772 2776# 3240 3253 3688 4431 4868 CRCHR = 000015 85# 1386 1472 1778 2220 6212 6325 CRLFIN 002203 1466 1472# CRMAD 020004 2853 3068 3337 3339 3345 3347 4419 4422 4430 4539 6668# CRMBF 020302 3125 3353 3372 4436 4937 4938 4939 4941 4942 4943 4952 4966 6748# CRMCTL= 000204 28# 1646 2777 3006 3015 3062 3064 3072 3074 3092 3094 5104 CRMFN 020010 3026 3054 3377 3705 4238 4258 4276 4282 4300 4928 6670# CRMTM 020322 3351 3354 6749# CRM.AD 006335 3040 3068# 3252 3371 3687 3692 CSCMD 006234 1539 3004# 3424 5237 CSLMOD 020247 1053 1371 1397 1701 1946 2049 2093 2171 3622 6103 6160 6168 6732# CTYCTL= 000201 33# 677 689 1392 1665 2087 2163 CTYDAT= 000200 34# 694 1407 1411 1696 2105 CTYONL 003741 2046 2075# CTYOUT 004015 2095 2104# CTYPCH 003764 2087# 2088 C.BTER 015210 862 3955 4320 4328 4392 5178 5710# C80AD 020002 2698 2703 2708 2715 2717 2738 2743 2745 2754 6667# D =%000002 557 608 625 629 631 662 669 670 682 708 809 810 817 1078 1084 1087 1096 1097 1098 1148 1152 1202 1247 1256 1271 1287 1437 1438 1818 1883 1884 1885 2241 2245 2253 2357 2360 2363 2378 2494 2535 2565 2566 2569 2589 2634 2635 2639 2656 2678 3100 3102 3140 3142 3218 3353 3382 3414 3518 3560 3650 3659 3660 3693 3696 3700 3722 3789 3885 3895 3975 4162 4163 4165 4166 4338 4339 4348 4355 4364 4436 4449 4451 4453 4454 4462 4465 4508 4530 4536 4573 4610 4613 4614 4626 4630 4632 4633 4685 4686 4708 4717 4727 4729 4731 4733 4765 4773 4782 4784 4786 4788 4955 5096 5142 5152 5169 5171 5176 5217 5244 5247 5254 5257 5258 5270 5289 5301 5320 5334 5345 5357 5376 5399 5416 5417 5427 5430 5444 5456 5485 5519 5569 5573 5575 5576 5577 5589 5623 5625 5636 5637 5649 5651 5654 5655 5667 5676 5678 5813 5819 5829 5830 5845 5852 5874 5916 5919 5920 5923 5924 5927 5928 5931 5932 5936 5937 5952 5953 5955 5957 5959 5961 5963 5965 5967 5969 5971 5986 5987 5989 5991 5993 5995 5997 5999 6001 6003 6005 6065 6071 6236 6266 6271 6273 6445 DATACK= 000001 61# 2448 2531 DBCMD 004641 1499 2409# 4821 DBCOM 004773 2456 2472# DBERR 004771 2427 2471# DBRDIN 004754 2426 2451 2460# DB1 004652 2410 2414# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-229 END.M80 CROSS REFERENCE TABLE DCCMD 007120 1486 3349# DCHR = 000104 104# 2455 DCLP 007201 3378# 3391 DCODE 001222 940 1075# 1346 4360 6391 DCODL 001240 1084# 1100 DECEX1 016336 6252# 6388 DECEX2 016336 2987 6253# DECNET 016205 1058 2372 2375 2393 3141 4570 5703 6199# 6394 DEFLTE= 000174 64# 802 826 4004 DELAY. 015676 2968 3426 6048# DEN.SL 020362 3901 3909 4071 6579 6761# DEPSHT 014232 1963 3553 3554 3555 3595 4063 4068 4073 5265# 6188 DEV 000315 736 764# DEVERR 012703 4737 4747 4756# DEVEXI 012725 4762 4769# DEVLP 000265 745# 758 DFCMD 006271 1510 3032# DIAG = 000205 29# 1654 2038 3055 3103 4008 DICMD 005413 1495 2672# DIECNT 020257 1168 1215 1227 6740# DIEING 001530 1165 1215# DIFLAG 020164 2609 2619 2681 6708# DILOCL 012614 4697 4708# DI.LP 014133 5217# 5234 DI1 005417 2675# 4710 5208 5232 DKCMD 005547 1501 2751# DLIST 015132 5665 5682# DLYLP 015702 6052# 6055 DMCMD 005225 1488 2583# DMCONT 005277 2611 2616# DMDAT 020047 1922 2584 2603 2673 3412 3551 3593 3715 4056 4057 4067 4072 4708 4885 5207 5217 6184 6678# DMEM2C 011456 863 3957 4232# 5180 DMGO 005275 2614# 3727 DMINT 005240 2591# 3415 5274 DM1 005231 2586# 3718 DM2 005235 2589# 4898 DNCMD 005324 1484 2633# DNDC 007111 2646 3345# DNDI 005410 2644 2671# DNDK 005540 2645 2743# DNDM 005220 2581# 2643 DNEXT 020033 2587 2633 2676 2757 3375 6675# DNF 007501 2999 3528# 3580 DNLST 005340 2634 2643# DN2ND 005242 2593# 2684 DOLLAH= 000044 109# 6319 DONE.B 016776 6478 6483 6490# DRCMD 005711 1585 2839# DRCVD 017475 2477 6628# DSBASE 020374 3839 4227 6763# DSCMD 010337 1589 3823# DSCON 012442 4613# 4642 DSKDFT 011441 4167 4223# 5127 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-230 END.M80 CROSS REFERENCE TABLE DSKSEQ 017052 4578 6519# DSKUBA 020357 3831 4223 6758# DSLST 012501 4625 4645# DSXFR 012402 4202 4207 4578# DS1 010360 3825 3833# DS2 010377 3835 3841# DTARB = 000114 37# 2016 2130 2334 2606 3523 DTIME 001423 1125 1179# DTM1 001427 1177 1181# DTR = 000101 25# 841 6175 D.BTER 015206 4001 5708# D0003 = 000103 44# 5933 D0411 = 000003 43# 5929 D1219 = 000002 42# 5925 D2027 = 000001 41# 3111 5921 D2835 = 000000 40# 3107 5917 D772 = 000772 151# 6575 6578 6580 6583 6585 6587 6589 6591 6593 6595 6597 6599 6602 6604 6610 6613 6615 D776 = 000776 150# 5072 5074 5078 6526 6528 6531 6534 6537 6540 6542 6544 6546 6548 6550 6552 6555 E =%000003 555 630 655 681 707 1150 1155 1269 1289 2567 2637 3126 3133 3155 3156 3380 3791 3977 3978 4447 4448 4624 4628 4718 4732 4953 5428 5429 5446 5454 5488 5501 5568 5674 5872 EBCMD 004514 846 1554 2350# EBHED 017441 2371 6624# EB.RDI 004535 2360# 2366 EB1 004601 2381# 2391 ECBEE 006764 3264 3279# 3298 ECCMD 006700 1552 3246# ECLP 006732 3261# 3276 ECSAV 020170 3268 3275 6712# ECVER 017504 3301 6629# EC1 006710 3250# 3340 EC2 006722 3247 3255# EICMD 005350 1550 2649# EIFLAG 020163 2512 2522 2659 6707# EIGHT = 000070 123# EIGHT0 010562 3885 3911# EI1 005360 879 2650 2653# 2667 4680 4728 4741 5136 EJCMD 006523 1556 3167# 3241 EJLP 006533 3171# 3190 EJLST 006570 3168 3196# EJ1 006536 3174# EKCMD 005454 1506 2694# EK1 005463 2694 2700# 2718 EMBUF 020012 850 905 1138 1163 1957 2044 2070 2078 2082 2353 2535 3449 3516 3518 4197 4199 4213 4252 4261 4295 4353 4445 4484 4561 4795 4893 4902 5153 5342 6671# EMCMD 005025 1548 2488# EMCONT 005075 2514 2519# EMINT 005042 2496# 5272 EM.CRM 005056 2505# 4250 EM1 005033 845 2488 2491# 2559 EM2 005037 2494# 4525 4891 4900 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-231 END.M80 CROSS REFERENCE TABLE ENACOM 005761 2875# 2907 ENCMD 005174 1545 2564# ENDIN 003212 1663 1817# END.US 003310 1871# 2293 ENEC 007077 2576 3337# ENEI 005402 2574 2666# ENEK 005507 2575 2715# ENEM 005164 2557# 2573 ENEXT 020031 2492 2564 2654 2701 3256 6674# ENLST 005210 2565 2573# ENVBUF 021013 825 6209 6238 6256 6772# ENVCHK 021012 6230 6771# ENVMNO 021011 2984 6204 6207 6236 6386 6770# ENVPNT 020352 1380 1384 6257 6754# ENV.LP 016516 6361# 6364 EN2ND 005044 2498# 2662 EOCML 015355 1299 3941 5560 5786# 6076 EOL 020204 915 1067 1337 1840 3929 6267 6716# EOLCH = 000377 59# 3654 3667 5790 6280 6371 EOLYS 015377 5791 5794 5803# EOL.LK 001203 1055 1063# EOMRK 003231 1776 1779 1782 1836# ERADDR 020123 2791 2792 2833 2843 6690# ERCMD 005616 1581 2785# ERRCD 020154 916 917 1345 3730 4079 4759 4811 4812 4824 4978 4981 4986 4989 5717 5720 6500 6701# ERRMSG 017601 4988 6639# ERRRTN 017016 2483 6500# 6508 6515 ER.LOC 020070 2806 2809 2811 6681# ER.UTL 005670 2361 2799 2819# 5023 ER1 005630 2785 2792# EXAMSH 014231 1134 1233 1919 2042 2076 3440 3456 4183 4210 5264# EXCMD 007457 1574 3515# EXECUT 016502 6326 6351# EXINT 007466 3520# 3561 EXINTM 007463 1238 3518# EXIT4 010751 3994# 3997 EXMHL 014240 4194 5269# EXMS 017525 3537 6632# EXM1 020117 6686# E.BEG 020651 4348 6153 6264 6354 6376 6769# E.BUF 020647 6154 6336 6339 6416 6768# E.CNT 020301 6152 6341 6351 6747# FAKLIT 001411 1122 1173# FICMD 011716 1608 4334# FILEIN 011301 1203 3979 4163# 4340 FILESH 011306 4166# 5177 FINARG 015071 5635 5644# FIRST 020227 1079 1351 2188 6727# FIVE = 000005 120# FIXLP 015064 5640# 5642 FIXPNT 015065 5627 5641# FI.GET 011744 4349# 4367 FI.MOV 011756 4354# 4366 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-232 END.M80 CROSS REFERENCE TABLE FI.NXT 011773 4357 4363# FNDARG 010633 1080 3939# FOUR = 000004 119# FRCMSG 017736 1189 6653# FREE 021377 6781# FRELOA 001435 1140 1188# FRMERR 017341 4078 6601# FXNXT 001771 1344 1349# GATHER 012245 4350 4438 4508# GENLP 007137 3358# 3369 GETEN 014720 5548 5558# GETLP 014677 5545# 5555 GOCODE 020255 870 1191 1237 1921 1964 3948 6738# GOODPK 011345 4175 4183# G.SKP 012274 4516 4525# H =%000004 533 542 543 545 556 558 568 570 581 583 594 595 597 609 624 628 652 659 666 667 675 703 711 722 727 735 743 755 765 768 770 776 779 808 816 877 883 920 922 940 953 955 975 976 980 1036 1038 1057 1059 1129 1162 1180 1183 1206 1208 1215 1246 1252 1257 1270 1272 1273 1288 1290 1307 1312 1314 1324 1326 1327 1331 1337 1346 1350 1379 1382 1385 1420 1456 1471 1663 1664 1771 1796 1815 1817 1854 1862 1882 1912 1922 1939 1940 1961 1976 2171 2174 2176 2186 2208 2213 2235 2242 2254 2265 2356 2364 2377 2382 2387 2474 2479 2482 2568 2638 2703 2716 2744 2769 2773 2819 2820 2824 2844 2967 2971 2973 3039 3041 3045 3079 3148 3168 3178 3182 3259 3262 3270 3280 3290 3293 3297 3338 3346 3354 3364 3365 3366 3372 3381 3383 3405 3449 3557 3564 3661 3673 3756 3790 3792 3795 3796 3799 3805 3814 3816 3884 3891 3894 3929 3935 4053 4057 4062 4064 4066 4079 4093 4094 4169 4171 4192 4234 4235 4247 4253 4255 4258 4265 4267 4276 4285 4286 4287 4289 4292 4296 4298 4300 4304 4306 4318 4418 4423 4424 4458 4461 4463 4480 4484 4512 4514 4521 4522 4523 4526 4527 4535 4539 4553 4562 4564 4574 4578 4582 4586 4589 4611 4616 4618 4625 4629 4640 4641 4665 4670 4671 4688 4701 4702 4704 4756 4770 4771 4772 4779 4789 4804 4829 4857 4859 4860 4865 4867 4870 4873 4874 4875 4907 4908 4919 4920 4924 4925 4932 4948 4952 4954 4956 4959 4961 4975 4977 4979 4989 4997 5021 5112 5124 5133 5150 5151 5160 5166 5167 5168 5187 5195 5211 5214 5215 5219 5229 5230 5250 5252 5259 5287 5303 5309 5310 5317 5321 5333 5342 5346 5356 5363 5377 5406 5408 5411 5414 5419 5425 5434 5453 5481 5486 5493 5495 5497 5499 5500 5507 5517 5518 5535 5554 5566 5569 5574 5579 5584 5614 5624 5640 5650 5656 5665 5670 5672 5675 5690 5693 5720 5725 5739 5775 5786 5799 5804 5811 5851 5868 5870 5873 5875 5893 6009 6015 6030 6031 6051 6072 6079 6129 6137 6142 6153 6156 6166 6178 6186 6194 6209 6219 6256 6267 6295 6306 6337 6341 6354 6356 6362 6374 6389 6430 6437 6441 6444 6446 6453 6458 6476 6485 6491 6499 6507 6513 HACMD 007627 1196 1231 1528 3585# HANGUP 016134 979 2061 2281 6135 6173# HLSAVE 020217 5410 5462 6723# HLTCM 007277 1015 3426# 3587 HLTMS 017516 3448 6631# HOMEWD 011264 4120# 4212 HRDERR 013527 5018 5026 5044# 5098 INBUF 010605 3878 3919 3929# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-233 END.M80 CROSS REFERENCE TABLE INCLP 015476 5890# 5894 INC36 015466 2557 2581 2686 2688 3719 5881# INDIRE= 000077 3944# INFOBT 010733 1210 3985# INIER 017413 856 6619# INIMS 002611 843 1635# INRDY 010630 3935 3938# INTCH 002741 1675 1696# 2156 2168 INTON 000020 542# INTRP 002666 611 1663# INT2KS= 000116 39# 2024 2025 2139 2140 2342 2343 IOAD 020024 876 2656 2678 2687 2689 2730 4663 4665 4685 5220 5223 6673# IORGS 004631 2357 2377 2397# IOUT 003330 1883# 1913 IO.INC 005441 2666 2671 2686# KACNTR 020250 1162 6733# KAMSG 017731 1228 6652# KATIMX= 000043 14# 1218 KATIM1 020342 808 1130 1173 1179 1181 6750# KCHR 002117 1418# 1902 2275 2276 6233 6234 KCHR0 002123 1422# 1444 1707 6468 KCHR1 002124 1423# 1425 KILNM 015163 3758 3897 5561 5699# KLCMD 007665 1578 3604# KLDIS 007720 3604 3628# KLINE 002137 1433# 2199 2207 2264 6399 6407 KLINE1 002144 1437# 1445 6237 KLIRST 004374 2269 2281# KLLINE 020300 2297 3615 3617 3628 6746# KLNKLT 015740 954 6093# KLNKSW 020124 951 1713 1909 2959 3643 6094 6691# KLOFF 007704 3612 3617# KLPCHR 003720 2056 2066# 2067 KLTOO 004003 2098# 2099 KL.ACT= 000002 75# 6164 KL.DSP 002735 1683 1692# KL.LAM 015770 6115# 6134 KL.LON 015766 6112# 6125 KL3435 004435 2289 2309# KPAINI= 003244 13# 820 1129 KPWBUF 020271 2208 2242 6744# KPWCNT 020127 2211 2227 2231 2259 6693# KPWPNT 020125 2209 2233 2236 6692# KSPRMT 017453 936 3575 3634 6625# KS.PAR 005762 2876# 3496 4005 L =%000005 658 674 717 775 1174 1176 1182 2753 2768 2790 2821 2832 2842 2864 2899 2921 2944 2972 3043 3077 3151 3484 3491 3494 3610 3761 4245 4269 4271 4352 4365 4455 4617 4700 4757 4799 4945 4960 4967 5255 5491 5492 5568 5668 5669 5691 6447 LACMD 005521 1493 2489 2721# 3545 LBCMD 010707 1572 3974# LBINT 010712 3965 3975# LBSIGN= 000043 92# LB.GO 010673 3965# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-234 END.M80 CROSS REFERENCE TABLE LB.GO1 010676 1212 3966# 4027 LCCMD 005732 1490 2852# 3248 3686 LCHKR 000217 704# 785 LFCHR = 000012 86# 1473 1781 6463 LFCMD 006262 1508 3024# LICMD 005526 1497 2651 2729# LIGHTS= 000101 24# 1157 2961 2964 5780 LIVE10 001267 1049 1114# LKCMD 005533 1504 2737# LOAD4 010755 3989 3996# LRCMD 005701 1583 2830# LSTMSG 020361 2983 6374 6760# LTCMD 006135 1576 2959# LTDLY 006151 2962 2967# LTFLT 015326 5062 5716 5763# LTLOOP 006154 884 976 1208 2968# 2974 3564 5021 6179 L.BTER 015242 1204 3981 4039 4048 4341 5725# M =%000006 532 544 555 557 567 580 596 627 710 747 767 769 815 867 878 1089 1164 1167 1216 1217 1248 1269 1271 1287 1289 1293 1328 1330 1338 1340 1381 1383 1419 1455 1772 1795 1857 1863 1923 1941 1962 1977 1982 1985 2172 2173 2177 2234 2250 2266 2267 2362 2567 2569 2637 2639 2709 2755 3261 3279 3289 3380 3382 3653 3666 3674 3770 3789 3791 3930 4059 4060 4065 4080 4088 4259 4277 4301 4481 4619 4628 4630 4667 4668 4674 4675 4690 4691 4703 4705 4953 4955 5161 5222 5224 5311 5405 5407 5418 5436 5450 5452 5477 5504 5506 5545 5549 5565 5581 5583 5613 5622 5648 5652 5674 5676 5692 5727 5728 5738 5774 5789 5848 5867 5869 5872 5874 5890 5891 6016 6032 6050 6069 6187 6211 6220 6268 6284 6338 6342 6343 6355 6361 6371 6375 6382 6417 6452 6454 6481 MAD000 007404 851 2432 3414 3468# 4765 MAILFG 020252 1388 6151 6199 6255 6735# MA1000 011257 3967 4119# 4240 4345 4416 4888 MBCMD 011222 1595 4101# MBINT 011050 4025 4031# 4103 MEMAD 020017 2494 2558 2582 2589 2723 3547 3711 3713 3720 3722 4241 4244 4303 4305 4346 4417 4511 4524 4528 4889 4906 4910 4972 6672# MEM2CR 011460 4023 4233# MICROP 011276 861 3952 4162# 4391 MISS2 001252 1096# 1253 MKCMD 010025 1512 3683# MMCMD 006167 1612 2981# 5704 MMERR 015166 1107 4991 5007 5700# MMERR1 015200 1688 5704# 6240 6243 MMFLG 020251 931 1686 1714 1896 1931 2291 2985 5700 6734# MMOUT 016650 6293 6427# MM.PNT 016744 6464 6469# MODDIS 020346 1692 2214 6169 6307 6752# MODE0 004203 823 2197# 6137 MODE1 004214 2207# 2271 6129 MODE2 004405 2288# 6166 MODE3 002777 1719# 6142 MODE4 016407 6156 6291# MORE. 016727 6462# 6487 MOSMSG 017573 5761 6638# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-235 END.M80 CROSS REFERENCE TABLE MOVLP 015036 5622# 5630 MOVREG 015420 5154 5218 5817 5824# MOV18B 012736 4687 4709 4779# MOV18X 012746 4785# 4790 MRCMD 002631 1537 1639# 3408 4219 4809 MRINT 002637 643 1645# MRKCM 010027 3681 3684# MRKRT 010063 3700# MSCMD 010415 1591 3852# MSG10 017462 2472 6627# MS1 010436 3854 3862# MS1.5 010455 3864 3869# MS2 010474 3871 3877# MS2.5 010541 3892 3901# MS3 010544 3880 3903# MTARST 017363 4589 6610# MTASEQ 017215 4582 6573# MTAUBA 020356 3860 4110 6757# MTBASE 020367 3868 4114 6762# MTCH1 001603 1090 1246# MTCH2 001615 1249 1256# MTCMD 011006 1587 4013# MTRESE 012430 4082 4589# MTSETU 011237 4014 4102 4109# 4400 MTSKOK 011066 4036 4043# MTXFR 012411 4016 4032 4402 4582# MT.BIT= 000002 68# 4022 4405 MT.1 011032 4017 4022# MV.ALL 016351 4359 6264# 6384 MV.CNT 016405 6277 6284# MV.INP 016357 6266# MV.IN1 016367 6270# 6281 M.ACK 016613 6399 6401# M.NACK 016631 6407 6410# M11 003116 1768 1775# M4.0 016407 6292# M4.1 016422 6295 6302# M5B 015422 5144 5825# 5826 NACK 016623 6407# NACK.E 016620 6345 6368 6406# NBR 017634 6505 6643# NEEDRM= ****** U 4813 NEWPAG 011477 4239# 4310 NEXTCR 011657 4309 4313# 4519 NINE = 000071 124# NIXOM 017036 2528 2626 6510# NOA 017620 6497 6641# NOACCS 017751 2199 6655# NOACK 017010 2449 2532 6497# NOACTN 004070 2059 2080 2141# NOARB 017022 2424 2446 2525 2622 6503# NOECH 003175 1801 1805 1810# NONFAT 011167 4019 4038 4047 4078# 4327 NONXME= 000100 62# 2527 2625 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-236 END.M80 CROSS REFERENCE TABLE NOPNT 020120 543 595 919 1188 1226 1364 1732 1734 1879 2541 3129 4987 5011 5718 5758 6687# NORDIS 002004 1343 1356# NOREFR 015314 1037 5758# NOREND 020350 923 1356 6390 6753# NORML 001744 1081 1272 1337# 4093 5698 NOROOM= ****** U 6619 NOTBUS 016720 6432 6458# NOTRK 015007 5596 5602# NOTSAM 013701 5107# NR 013524 5040# 5114 NRSCE 013645 5040 5090# NUL = 000000 5067# 5072# 5074# 5078# 6524# 6525# 6526# 6528# 6531# 6532# 6534# 6535# 6536# 6537# 6540# 6542# 6544# 6545# 6546# 6547# 6548# 6549# 6550# 6552# 6555# 6573# 6574# 6575# 6576# 6578# 6580# 6583# 6584# 6585# 6586# 6587# 6589# 6590# 6591# 6592# 6593# 6594# 6595# 6597# 6599# 6602# 6604# 6610# 6611# 6613# 6614# 6615# 6616# NULKL 003734 2051 2072# NULLJ 000735 929 933 940# 989 1126 1144 1158 1169 1213 1219 1241 1912 5239 NULLW 000740 941# 1069 3795 3936 NXMDC 001261 1086 1105# NXMMSG 017626 6512 6642# NX2 001072 995 1002# NX3 001124 1010 1024# NX4 001153 1031 1042# N0 001034 967 972 984# N0.5 001043 894 988# N00 001004 962 970# N1 001051 986 993# 1348 N2 001076 1000 1008# N3 001130 1018 1029# N4 001157 1039 1047# OCHR = 000117 114# 1731 OCTAL 014445 3271 5291 5323 5347 5378 5399# OCTLC 014515 5434# 5459 OCTL1 014471 5416# 5421 OCTL3 014537 5446# 5457 OCTL4 014544 5450# 5455 OCTL5 014563 5442 5462# OCTSV 020233 5431 5447 6729# OFFMSG 017554 2884 6636# OFFSET= 000261 915# 916# 917# 918# 919# 981# 1168# 1188# 1226# 1227# 1345# 1713# 1714# 1744# 1879# 1895# 1909# 1964# 2189# 2190# 2191# 2211# 2277# 2959# 3214# 3229# 3451# 4217# 4218# 4811# 4812# 4987# 5011# 5044# 5718# 5758# 5759# 6232# OKDN 016576 6389 6393# OKSCE 013656 5091# 5123 ONE = 000001 116# ONES 011271 3411 4121# 4884 4903 PADLP 015053 5634# 5638 PARBT 020354 1943 2870 2876 2881 2904 2910 3417 3464 3492 3500 4217 6755# PARDIS 007440 3480 3500# PARMSG 017561 5046 6637# PASSME 011104 4045 4050# PASSSR 011107 3986 4053# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-237 END.M80 CROSS REFERENCE TABLE PASSWO 020262 2241 3650 3672 6121 6743# PASS1 = ****** U 1619 PASS2 = 000000 1628 PCCOM 007356 3000 3455# PCHR 002010 535 797 1363# 1465 1808 1858 3314 5296 5329 5366 PCHROV 002113 1399 1410# PCHR0 002022 1366 1371# PCHR1 002057 1373 1392# 1394 PCHR1Z 002056 1391# 6471 PCHR2 002076 1402# 1404 PCMSG 017512 3458 6630# PCRAM 007032 3282 3306# PCRLP 007046 3313# 3316 PECMD 007411 1517 3480# PERCNT= 000045 110# 6242 PHALF 014415 5351 5355 5363# PICKUP 010573 3824 3834 3842 3853 3863 3870 3904 3919# PLACE 015075 3358 3362 5648# PLNE 002156 559 1452# PLN1 002160 1455# 1467 3176 PLN2 002174 1459 1466# PMCMD 006667 1565 3238# PNT.ON 006004 2883 2886# POKE10 004062 2138# 6189 PRMLST 000421 809 819# PSW =%000011 606 734 742 762 783 793 1014 1016 1116 1121 1300 1315 1319 1332 1363 1368 1378 1391 1405 1410 1422 1427 1820 1887 1933 1966 2794 2798 2807 2810 3313 4081 4083 4660 4676 4998 5003 5271 5273 5290 5295 5300 5318 5328 5336 5343 5359 5365 5374 5440 5551 5587 5666 5679 5763 5767 6029 6041 6049 6053 6054 6056 6183 6185 PULSE 006671 3222 3240# PWCMD 007743 1597 3642# PWLEN 017744 3671 6654# PWRCHK 000563 853 876# PWRTRY 020277 2265 2277 6745# PWRUP 000100 524 618# PWR.FA 000526 861# 907 PW.CLR 010010 3646 3672# PW.END 004325 2247 2259# PW.ERR 004334 2230 2251 2264# PW.LOO 007763 3653# 3663 PW.OK 004356 2261 2274# PW.OUT 004371 2277# 2283 PW.SET 007753 3649# PW.TST 004276 2221 2241# PW.WAI 004240 2213 2220# PW.. 004306 2245# 2255 P.00 = 000000 130# 5072 5078 5081 6534 6548 6550 6555 6585 6595 6604 P.02 = 000002 131# 5082 6544 6591 P.04 = 000004 132# 5083 6546 6589 6613 P.06 = 000006 133# 5084 6540 6583 6593 6615 P.10 = 000010 134# 5085 6526 6531 6575 6610 P.12 = 000012 135# 5074 6528 6537 6552 6580 6587 6597 6602 P.14 = 000014 136# 6599 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-238 END.M80 CROSS REFERENCE TABLE P.16 = 000016 137# P.20 = 000020 138# P.22 = 000022 139# P.24 = 000024 140# P.26 = 000026 141# P.30 = 000030 142# P.32 = 000032 143# 5086 6578 P.34 = 000034 144# 5087 6542 P.36 = 000036 145# P.40 = 000040 146# P.42 = 000042 147# P.44 = 000044 148# P.46 = 000046 149# P16 014332 2704 4540 4554 4990 5125 5318# 5721 P16LP 014345 5328# 5331 P16. 014327 3136 3179 3308 4566 5317# P18 014431 3450 5374# P36 014365 2475 2480 2546 5343# P36L2 014420 5365# 5369 P36RH 014405 5355# 5382 P36. 014362 2373 2549 3459 5342# P8BIT 014267 2381 2386 5287# P8BITA 014317 2795 3134 3507 4545 5050 5055 5309# P8BIT1 014270 5288# 5312 P8CRLF 007451 2710 2802 3507# 5060 P8LP 014302 5295# 5298 P8.TMP 020122 5310 6689# QMXFR 012422 4044 4325 4586# QPW 017757 2207 6657# QQLOOP 011547 4265# 4273 QTXFR 017275 4586 6589# QUES = 000077 111# 6239 QUO = 000042 91# QXFR 017146 4318 6544# Q.DEN 017712 3877 6650# Q.OUT = 000000 83# 1764 Q.RH 017661 3833 3862 6647# Q.SLV 017722 3903 6651# Q.TCU 017703 3869 6649# Q.UBA 017652 3823 3852 6646# Q.UNIT 017673 3841 6648# Q.1 = 000000 832# 833# 834# 3468# 4119# 4120# 4121# 4852# 5067# 5072# 5074# 5078# 6524# 6525# 6526# 6528# 6531# 6532# 6534# 6535# 6536# 6537# 6540# 6542# 6544# 6545# 6546# 6547# 6548# 6549# 6550# 6552# 6555# 6573# 6574# 6575# 6576# 6578# 6580# 6583# 6584# 6585# 6586# 6587# 6589# 6590# 6591# 6592# 6593# 6594# 6595# 6597# 6599# 6602# 6604# 6610# 6611# 6613# 6614# 6615# 6616# Q.2 = 000000 832# 833# 834# 3468# 4119# 4120# 4121# 4852# 5067# 5072# 5074# 5078# 6524# 6525# 6526# 6528# 6531# 6532# 6534# 6535# 6536# 6537# 6540# 6542# 6544# 6545# 6546# 6547# 6548# 6549# 6550# 6552# 6555# 6573# 6574# 6575# 6576# 6578# 6580# 6583# 6584# 6585# 6586# 6587# 6589# 6590# 6591# 6592# 6593# 6594# 6595# 6597# 6599# 6602# 6604# 6610# 6611# 6613# 6614# 6615# 6616# Q.3 = 000377 832# 833# 834# 3468# 4119# 4120# 4121# 4852# Q.4 = 000007 832# 833# 834# 3468# 4119# 4120# 4121# 4852# RAG 017642 5697 6644# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-239 END.M80 CROSS REFERENCE TABLE RAMMER 000405 810# 818 RAMST = 020000 12# 618 624 914 2180 4092 6665 RAMXCT 005651 2806# 2823 2847 RAMX1 020054 1606 6679# RAMX2 020062 6680# RBOUT = 000177 102# 1785 RCCMD 006437 1561 3122# RCINT 006441 3124# 3302 4432 4869 RCLP 006445 3126# 3158 RCNOP 006502 3131 3147# RDATP 015512 2536 5915# RDATT 015505 2352 2460 5907# RDLST 007061 3259 3321# RDYMS 003341 1881 1893# RD.EXM 011510 4245# 4308 READC 006402 3100# 3127 3174 3267 3284 3291 3307 3691 5246 READ.T= 000071 163# 4015 4043 4324 4401 RECVR 013715 5123# REFERR= 000101 23# 1029 5033 REINI 000655 824 857 872 888 914# 922 1200 1716 1882 2183 5063 5702 5705 5722 REMARG 001717 1301 1319# REMAR1 001742 1322 1332# REMCTL= 000203 35# 684 692 839 1402 1423 1667 2066 2098 2152 REMDAT= 000202 36# 695 1406 1428 1678 2071 2102 RESET = 000100 22# 1649 2877 3419 3465 5129 RETRY. 017336 4087 6600# RHBASE 020242 4055 4115 4228 4662 6731# RHSAVE 021327 5152 5192 5195 5200 5206 5216 6779# RH.EXE 013627 5078# 5141 5211 RH.LP 013773 5153# 5172 RH.TST 013610 5072# 5112 RM100 020172 2356 2378 3976 3994 4385 5142 5162 5168 6713# RNCOM 015276 5749# 5756 RNFLG 020165 4999 5749 6709# RN. 017606 5006 6640# ROMMSG 000350 791# 792 RPAREN= 000051 93# RPBUFS 020207 3817 5563 5580 5612 5644 6718# RPCMD 010153 1482 3744# RPCNTR 020160 3746 3774 3780 6704# RPEND 020157 886 1747 2189 3214 3225 3749 3765 6703# RPFOO 010322 3747 3775 3782 3814# RPGO 010314 3801 3807# RPINCB 014745 5573# 5608 RPINI 020401 920 3814 6764# RPLST 020211 921 1286 1294 1325 3769 3793 3815 6719# RPNEW 010316 1284 3812# RPTBFI 020432 3816 6765# RPTON 020213 918 1063 3751 3786 5537 6720# RPTPAR 013450 999 5011# RPTRTN 010215 1065 3765# 3777 3783 RP.OUT 010262 3767 3785# RP0 010157 3746# 3763 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-240 END.M80 CROSS REFERENCE TABLE RP1 010200 3744 3754# RP2 010224 3752 3769# RP4 010267 3772 3789# RRARG 015155 1309 5697# RTNDIS 015110 571 5665# RUB 003250 1786 1848# RUNFP = 000300 16# 1008 1192 2993 3429 3531 R.BUSY= 000102 26# 5029 R.RESE= 000102 27# SAVLST 013635 5081# 5150 5214 SCCMD 006047 1614 2918# SCDIS 006075 2918 2933# SCEADR 020344 5096 5107 5124 5182 6751# SCECOD= 000000 821 822 5015 5064 6751 6777 SCE.GO 014027 5164 5175# SC.OFF 021326 2927 2930 2933 5016 6778# SC.TOF 006067 2923 2929# SECRET 020256 1198 6739# SEEPAG 011634 4291 4303# SEPCHR 015656 1259 3939 5558 6029# SEPYS 015660 6031# 6034 6038 SETDIS 016130 6169# 6296 SETM 016125 6130 6138 6143 6157 6168# SETM0 016022 6096 6123 6133# SETM1 016012 2282 6124 6128# SETM2 016103 1715 1973 2274 3624 3636 6108 6160# SETM2X 016120 6162 6166# SETM3 016042 2305 6141# SETM4 016052 1901 2981 6146# 6329 6387 6397 6406 6419 SETOUT 017004 6455 6493# SETRN 015266 3004 3445 5744# SETUSE 003423 1907 1916# 3570 3596 3633 SEVEN = 000007 122# SHCMD 007635 1593 3591# SHRGO 014571 5475# SHRTAD 020235 5269 5270 6730# SHR24 014571 3360 5474# SHR36 014567 4485 4830 5196 5201 5473# 5592 SICMD 006213 1532 2993# SIX = 000006 121# SIXTN 010566 3895 3912# SKP.GO 020144 4583 6596 6698# SKP.TA= 000031 158# 4031 SKP2 003031 1727 1737# SKP6 003046 1741 1747# SKP8 003075 1752 1761# SLASH = 000057 107# 1856 2383 2548 2706 2796 3135 3309 4542 SMCMD 007221 1534 3398# SMERR 017546 3435 6635# SMFINI 007376 1651 3437 3464# 5236 SMPAR = 000100 21# 803 5022 5048 SMSTS = 000301 18# 1114 5736 SMVER 007325 3432 3439# SM1 007232 3398 3405# 4000 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-241 END.M80 CROSS REFERENCE TABLE SM1.5 007235 1207 3403 3406# SOFTER 013664 5037 5096# SP =%000010 618 914 1888 1889 2180 4092 5479 5480 5483 5484 SPACE = 000040 106# 2389 3180 3181 3453 3454 4548 4550 4557 4559 5051 5056 STAR = 000052 90# STATE 020360 1147 1156 5725 5773 5779 6173 6759# STATEM 015337 1657 3598 5745 5753 5765 5772# 6115 STBIT = 000004 77# 1154 5744 STCK.Y 016701 6439 6444# STCMD 007522 1526 3545# STINT 007533 871 3551# 3971 STMSK = 000373 76# 1149 STPPD 020162 1744 1976 6706# STRCMP 015713 3886 3896 6065# 6073 STREND 015727 6067 6075# SYNC = 000001 84# 6233 6234 6292 6303 6328 6401 6402 6410 6411 SYSBUF 021125 6441 6458 6775# SYSEND 021325 6444 6776# SYSIN 021121 6436 6442 6475 6486 6492 6773# SYSOUT 021123 6429 6459 6493 6774# SYSUP 000576 882# SYSUP1 000600 883# 902 S16CHK 010525 3887 3894# S36BL 014615 5499# 5514 S36LP 014621 5504# 5510 TAB = 000011 105# TAPDEV 011701 4315 4324# TAPEUN 020137 3875 4050 6577 6612 6697# TARG1 015461 1434 5266 5617 5872# 5882 5909 5948 5982 6011 TARG2 015455 5815 5842 5867# TECMD 006013 1521 2895# TEDIS 006037 2895 2910# TEN = 000012 125# TENCHR 003564 1868 1992# THREE = 000003 118# TMPBF2 020073 866 3287 3296 3548 3558 3560 3968 5414 5425 5434 6682# TMPB2 020100 2461 2465 2479 3109 3114 3147 3250 3270 3286 3295 3693 3828 3838 3846 3857 3867 3874 3908 3924 4565 5249 5317 6683# TPCMD 006105 1523 2940# TPDIS 006125 2940 2953# TP.SET 011000 2950 4007# TR 006632 3215# 3227 TRAPEN 020355 1653 1925 2037 2953 3101 4007 4218 6756# TRCMD 006612 1559 3206# TRLP 006650 3217 3222# TRPDEF= 000020 63# 827 4006 TR1 006626 3206 3213# TSKGO 016243 6213 6219# TSKGO1 016262 6228 6230# TSKLP 016231 6195 6211# TSK2TS 016265 6232# 6251 TTCMD 007727 1599 3633# TTERMS 004134 2164 2171# TTERR 004072 1670 2146# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-242 END.M80 CROSS REFERENCE TABLE TTERR1 004114 2148 2159# TTM 017434 2175 6623# TTOCOM 004022 2073 2112# TTYSW = 000300 17# 648 TWO = 000002 117# T80DT 020000 745 756 1279 1320 2840 2845 3406 3421 5279 5281 6666# U 003412 1911 1914# 3576 3635 UBANUM 020254 4058 4111 4224 4666 4689 6737# UBA.RD 013602 5067# 5133 5187 UCHR = 000125 113# 1756 UMCMD 010020 1515 3680# UNITNM 020132 3847 3985 6527 6533 6696# UPARR = 000136 115# 1730 1755 2181 UP.LO 003220 1793 1825# 2223 3658 USER 003303 1723 1867# USRMD 020156 927 1047 1720 1895 1968 2154 2166 6146 6702# VDCMD 012014 1604 4391# VERCNT 020253 4440 4480 6736# VERCRA 012044 4395 4412# VERLST 012220 4435 4491# VERRPT 012307 4464 4535# VTCMD 012027 1601 4400# V.BCLP 013331 4953# 4968 V.BLP 012130 4443# 4475 4487 V.BLP1 012133 4445# V.DONW 012066 4422# 4472 V.ERR 012161 4456 4464# V.GO 012076 4420 4429# V.NXME 012120 4438# 4482 V.NXT 012177 4480# V.VER 013276 4871 4937# WAITLP 012631 4720# 4734 WATCHC 020130 966 970 981 6694# WDATP 015554 3520 5952# WDATT 015547 2434 2602 5947# WFNC1 006311 3048# 3707 WFUNC 006303 3043# 3386 4257 4275 4299 4929 WRD.DP 003505 1948 1954# WRD.PR 003462 1934 1938# WRD31 003423 1918# WRD34 016156 6165 6177 6183# W.CRMZ 013250 4858 4923# W.LOC 013257 4921 4926# W.LP 013261 4927# 4931 W0003 = 000112 54# 2001 2120 2319 5970 W0411 = 000110 53# 2000 2119 2318 5966 W1219 = 000106 52# 1999 2118 2317 5962 W2027 = 000104 51# 2013 2117 2331 5958 W2835 = 000102 50# 2011 2116 2329 5954 XCTMTA 012414 4583# 4587 XCTNOW 012405 4579# 4584 4590 XFRRT 012474 4632 4640# XXX230 000373 788 802# XXX235 000462 812 838# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-243 END.M80 CROSS REFERENCE TABLE YSRUN 013442 2995 5001 5006# ZEROES 007404 3467# 4894 ZMCMD 010077 1563 3711# 4881 ZM1 010120 3719# 3732 Z.TBUF 016776 2986 6491# . = 021377 519# 529# 540# 552# 564# 577# 592# 603# 614# 6665# 6666# 6667# 6668# 6669# 6670# 6671# 6672# 6673# 6674# 6675# 6676# 6677# 6678# 6679# 6680# 6681# 6682# 6683# 6684# 6685# 6686# 6687# 6688# 6689# 6690# 6691# 6692# 6693# 6694# 6695# 6696# 6697# 6698# 6699# 6700# 6701# 6702# 6703# 6704# 6705# 6706# 6707# 6708# 6709# 6710# 6711# 6712# 6713# 6714# 6715# 6716# 6717# 6718# 6719# 6720# 6721# 6722# 6723# 6724# 6725# 6726# 6727# 6728# 6729# 6730# 6731# 6732# 6733# 6734# 6735# 6736# 6737# 6738# 6739# 6740# 6741# 6742# 6743# 6744# 6745# 6746# 6747# 6748# 6749# 6750# 6751# 6752# 6753# 6754# 6755# 6756# 6757# 6758# 6759# 6760# 6761# 6762# 6763# 6764# 6765# 6766# 6767# 6768# 6769# 6770# 6771# 6772# 6773# 6774# 6775# 6776# 6778# 6779# .ARG1 020223 1264 1349 3649 3933 3938 3940 5542 5559 5787 6075 6725# .ARG16 014654 5534# 5684 .ARG36 014647 5531# 5686 .CLRRM 015635 5687 6009# .CRLF 002202 1471# 5683 .DSBAS 000453 834# 3592 .IN = 000333 78# 2821 .MODE0= 000001 69# 2050 6136 6161 .MODE1= 000002 70# 2050 6128 6161 .MODE2= 000004 71# 1947 6167 .MODE3= 000010 72# 1398 1947 2050 2094 3623 6104 6141 .MODE4= 000020 73# 1054 1372 1702 6155 .MOV5B 015402 5682 5811# .MTBAS 000446 833# .OUT = 000323 79# 2842 .RET = 000311 80# 2808 .RUN.. 013427 4997# 5685 .SETM1 015775 6099 6121# VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-244 END.M80 CROSS REFERENCE TABLE ARG16 433# 2697 2737 2839 2852 3207 5278 ARG36 443# 2411 2583 2672 2722 2729 3515 3923 BUSRES 286# 2423 2444 2448 2524 2527 2531 2621 2625 CLINE 225# CLRB 496# 915 916 917 918 919 981 1168 1188 1226 1227 1345 1713 1714 1744 1879 1895 1909 1964 2189 2190 2191 2211 2277 2959 3214 3229 3451 4217 4218 4811 4812 4987 5011 5044 5718 5758 5759 6232 CLRRM 448# 866 876 3250 3551 3672 3711 3715 4815 6184 CRLF 428# 798 935 1757 1836 2374 2392 2481 2550 2888 3137 3192 3223 3318 3460 3508 3946 4567 5126 D 291# 832 833 834 3468 4119 4120 4121 4852 DEPOS 461# 1963 3553 3554 3555 3595 4063 4068 4073 6188 DI. 347# 6525 6532 6535 6536 6545 6547 6549 6574 6576 6584 6586 6590 6592 6594 6611 6614 6616 DI.IND 364# 6527 6533 6541 6543 6577 6579 6596 6612 EI. 330# 5072 5074 5078 6528 6550 6552 6555 6580 6587 6597 6599 6602 ENDCMD 269# 1659 2394 2551 2629 2725 2732 2740 2759 2780 2854 2878 2928 2931 3009 3018 3027 3065 3161 3194 3230 3242 3320 3392 3509 3736 6501 ENDLST 413# 5068 5076 5079 6557 6606 6617 ERRTST 388# 5073 5075 6553 6556 6600 6601 6603 6605 EXAM 454# 1134 1233 1919 2042 2076 3440 3456 4183 4210 INTOFF 210# 855 880 1137 1197 1240 1920 2043 2077 3441 3457 3735 4002 4351 4537 4760 4767 5137 5238 INTON 217# 844 1132 1195 1230 1918 2033 2075 3439 3455 3717 4216 4349 4572 4608 4810 5135 5175 KCHAR 185# 2275 2276 6233 6234 KLINE 202# 2199 2207 2264 6399 6407 LI. 311# 6526 6531 6534 6537 6540 6542 6544 6546 6548 6575 6578 6583 6585 6589 6591 6593 6595 6604 6610 6613 6615 LONG.D 486# 976 1208 3564 5021 MOV5B 423# 3285 3410 3546 3591 3837 3866 3966 4054 4070 4113 4226 4239 4344 4415 4661 4846 4883 4887 5205 PCHAR 176# 1472 1473 1730 1731 1755 1756 1856 2181 2182 2383 2389 2455 2471 2548 2706 2796 2886 2887 3135 3180 3181 3309 3453 3454 4542 4547 4548 4549 4550 4557 4558 4559 5051 5056 5353 5354 PCRLF 234# 798 935 1757 1836 2374 2392 2481 2550 2888 3137 3192 3223 3318 3460 3508 3946 4567 5126 PLINE 194# 792 843 856 910 936 1105 1189 1228 1355 1881 1911 2175 2371 2472 2477 2884 3301 3435 3448 3458 3537 3575 3576 3634 3635 3671 3823 3833 3841 3852 3862 3869 3877 3903 3945 4988 5006 5040 5046 5123 5697 5699 5719 5761 6497 6505 6512 PSLASH 263# 1856 2383 2548 2706 2796 3135 3309 4542 PSPACE 255# 2389 3453 3454 4548 4550 4557 4559 5051 5056 PTAB 248# RD.REG 469# RUN.. 438# 2409 2649 3032 3122 3167 3213 3238 3246 3349 3685 SETZM 474# SSCLK 240# TSTRDY 479# 2066 2087 2098 TWAIT 372# 6529 6539 6581 UBA. 395# 5067 6524 6573 WAIT 380# 6530 6538 6551 6582 6588 6598 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-245 END.M80 CROSS REFERENCE TABLE ACI 4450 5494 5671 ADC 5890 ADD 732 2007 2126 2325 3977 4447 4674 5491 5668 6192 6361 ADI 1733 5438 5582 5708 5710 5712 5714 ANA 666 669 674 681 718 887 928 932 971 998 1013 1035 1048 1064 1115 1199 1278 1283 1321 1440 1687 1721 1849 1897 1932 1963 1979 1986 2045 2155 2246 2292 2298 2513 2542 2610 2922 2935 3130 3216 3226 3263 3281 3461 3540 3553 3554 3555 3595 3611 3629 3731 3757 3766 3776 3800 4063 4068 4073 4655 4696 4799 4804 4825 5000 5017 5436 5448 5502 5538 5607 5701 5738 5774 5797 6066 6122 6147 6188 6200 6215 6246 6427 6431 6438 6467 6477 6482 ANI 723 893 897 906 942 948 961 978 985 994 1009 1030 1149 1154 1175 1193 1313 1393 1403 1424 1669 1674 1679 1697 1702 1875 1947 1958 2050 2066 2087 2098 2147 2159 2304 2868 2871 2882 2902 2905 2911 2949 2954 2994 3113 3172 3418 3431 3485 3493 3501 3533 3697 3804 4254 4290 4297 4307 4425 4444 4459 4515 4563 4623 4781 4861 4876 4909 5025 5031 5035 5054 5059 5193 5221 5251 5547 5653 5935 6161 6174 6206 6224 6367 CALL 643 697 797 845 846 849 861 863 865 871 879 884 911 924 976 988 1058 1080 1125 1134 1203 1207 1208 1209 1210 1212 1231 1233 1238 1239 1259 1299 1344 1434 1444 1465 1642 1651 1657 1707 1715 1758 1793 1808 1858 1880 1901 1902 1907 1908 1919 1963 1972 2042 2061 2076 2199 2207 2223 2264 2274 2275 2276 2281 2282 2352 2361 2372 2373 2375 2381 2386 2393 2414 2423 2426 2431 2434 2444 2448 2451 2460 2463 2475 2480 2489 2502 2524 2527 2531 2536 2546 2549 2557 2581 2594 2602 2621 2625 2651 2666 2671 2686 2688 2704 2751 2765 2772 2787 2795 2799 2802 2811 2823 2830 2847 2862 2897 2920 2942 2962 2968 2981 2986 2999 3004 3013 3024 3034 3040 3127 3134 3136 3141 3174 3176 3179 3219 3222 3240 3241 3248 3252 3253 3267 3271 3284 3291 3294 3307 3308 3314 3350 3358 3360 3362 3371 3386 3401 3408 3415 3422 3424 3426 3428 3440 3445 3450 3456 3459 3482 3507 3520 3538 3545 3553 3554 3555 3561 3564 3570 3595 3596 3598 3607 3633 3658 3686 3687 3688 3691 3692 3702 3718 3719 3723 3727 3747 3754 3824 3834 3842 3853 3863 3870 3878 3886 3896 3904 3919 3931 3939 3951 3952 3957 3965 3974 3979 3983 3991 4000 4005 4014 4016 4019 4023 4025 4026 4032 4038 4044 4047 4063 4068 4073 4102 4103 4104 4109 4164 4167 4174 4181 4183 4188 4194 4202 4207 4210 4211 4219 4236 4250 4257 4275 4288 4299 4309 4319 4325 4327 4334 4340 4350 4359 4391 4400 4402 4429 4431 4432 4438 4485 4519 4525 4540 4545 4554 4566 4570 4579 4680 4687 4709 4710 4721 4728 4741 4744 4751 4766 4809 4821 4830 4858 4866 4868 4869 4871 4872 4881 4891 4892 4898 4900 4901 4923 4929 4990 5021 5023 5045 5050 5055 5060 5061 5062 5097 5113 5125 5127 5134 5136 5144 5154 5170 5177 5180 5183 5188 5196 5201 5208 5212 5218 5232 5236 5237 5246 5266 5291 5296 5323 5329 5347 5351 5355 5366 5378 5558 5560 5592 5617 5703 5704 5716 5721 5745 5753 5760 5765 5815 5817 5842 5882 5909 5948 5982 6011 6076 6115 6134 6135 6165 6177 6188 6233 6234 6237 6265 6384 6387 6388 6394 6397 6399 6406 6407 6471 CC 5272 CMA 649 748 946 1002 1024 1042 1153 1292 1843 1978 2812 2934 3108 3112 3430 3532 3539 3750 3812 4946 4949 5024 5030 5034 5049 5053 5058 5737 5748 5918 5922 5926 5930 5934 6205 6222 CMC 3807 4769 CMP 952 1089 1164 1248 2250 2260 4080 4088 4455 4463 4967 5255 5259 5848 6069 6378 CNC 1301 5274 CNZ 954 979 1015 1037 1196 3782 4464 5826 6108 6124 6468 CP 1117 1122 CPI 784 811 1054 1218 1372 1386 1398 1458 1682 1710 1726 1737 1740 1748 1751 1761 1764 1767 1775 1778 1781 1785 1812 1825 1827 1859 1867 2055 2058 2079 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-246 END.M80 CROSS REFERENCE TABLE 2094 2197 2220 2229 2268 2288 3157 3623 3654 3667 3781 4314 4356 4837 5790 5793 6033 6037 6095 6098 6104 6212 6227 6239 6242 6250 6276 6280 6292 6303 6319 6322 6325 6328 6344 6463 CZ 1284 1466 1738 1776 1779 1782 3624 3775 4082 6277 DAD 713 753 766 774 2566 2635 4339 4614 4626 4958 5430 6445 DCR 596 731 757 901 1339 1342 1851 1863 2365 2390 3189 3315 3368 3390 3779 3930 4259 4272 4277 4301 4365 4481 4789 4841 4930 5297 5330 5368 5420 5429 5441 5454 5456 5490 5509 5513 5570 5595 5598 5602 5626 5629 5634 5641 5825 5852 6017 6052 6357 6358 6359 6363 DCX 629 1180 1252 1326 1327 1854 2773 2971 3150 3153 3673 4465 4553 4670 4671 4672 4702 4704 4783 4784 4787 4788 4796 4797 5453 5483 5484 5507 5656 6015 6030 DI 523 605 1133 1232 2034 6474 EI 847 925 1135 1234 1821 1891 1983 2062 2141 6203 6393 6470 IN 648 694 695 892 896 941 945 977 984 993 1008 1029 1114 1192 1392 1402 1423 1665 1667 1678 1696 1871 2066 2087 2098 2302 2993 3107 3111 3429 3531 5029 5033 5048 5052 5057 5736 5917 5921 5925 5929 5933 INR 544 795 1099 1216 1772 1811 1839 2228 2249 2266 3155 3376 3662 3762 3771 4835 5163 5225 5553 6223 6284 6342 INX 533 556 558 568 581 628 711 750 755 768 770 816 817 877 1087 1096 1097 1098 1246 1256 1257 1270 1288 1290 1350 1382 1420 1438 1456 1796 1888 1889 1939 1940 1961 2235 2253 2254 2363 2364 2382 2387 2568 2638 2716 2744 3262 3280 3290 3338 3346 3364 3365 3366 3381 3383 3660 3661 3790 3792 4171 4286 4304 4363 4364 4423 4446 4454 4469 4527 4629 4641 4706 4707 4731 4802 4859 4874 4907 4954 4956 4959 5166 5229 5257 5406 5408 5417 5419 5479 5480 5481 5554 5566 5575 5576 5577 5614 5624 5625 5637 5640 5650 5651 5655 5675 5739 5775 5830 5831 5850 5851 5868 5870 5873 5875 5893 5920 5924 5928 5932 5955 5959 5963 5967 5989 5993 5997 6001 6031 6051 6071 6072 6186 6194 6219 6272 6273 6337 6356 6362 6453 6485 JC 862 1081 1140 1204 1309 2410 2488 2650 2694 2763 2785 2860 2895 2918 2940 3206 3247 3398 3480 3604 3646 3825 3835 3854 3864 3871 3880 3955 3981 3989 4001 4189 4208 4320 4341 4392 4403 4472 4475 4838 5114 5178 JM 1158 1219 1343 1801 3264 3282 4842 5635 JMP 524 535 559 571 584 611 788 818 857 872 967 989 1000 1018 1039 1100 1107 1169 1177 1213 1241 1253 1348 1445 1467 1716 1913 1973 1988 2073 2183 2255 2271 2283 2456 2483 2559 2662 2667 2684 2710 2718 2774 2907 2912 2936 2950 2955 2987 3000 3276 3302 3340 3403 3437 3496 3580 3587 3600 3630 3636 3681 3707 3752 3763 3892 3936 3941 3971 3986 3997 4027 4310 4360 4367 4386 4395 4420 4487 4584 4587 4590 4642 4656 4737 4747 4762 4851 4921 4974 4982 4991 5007 5063 5172 5234 5239 5312 5382 5459 5529 5532 5555 5600 5638 5698 5705 5722 5730 5756 5894 6073 6130 6138 6143 6157 6179 6189 6195 6296 6391 6419 6455 6487 6508 6515 JNC 1144 1304 3744 4017 4036 4045 5561 6345 JNZ 632 719 724 736 758 780 785 888 902 929 933 986 995 999 1010 1017 1031 1049 1055 1065 1126 1200 1373 1399 1670 1675 1683 1688 1723 1727 1741 1752 1768 1868 2051 2059 2080 2095 2148 2156 2164 2168 2251 2289 2293 2391 2424 2427 2446 2514 2525 2528 2611 2622 2626 2883 2974 3131 3158 3190 3316 3369 3432 3663 3758 3767 3772 3783 3887 3897 4020 4039 4048 4182 4273 4315 4328 4357 4366 4456 4734 4790 4826 4895 4904 4962 4968 5001 5018 5298 5331 5369 5421 5455 5457 5510 5514 5539 5548 5603 5630 5642 5853 6018 6055 6125 6216 6281 6293 6368 6439 6464 JP 1805 2366 3391 3801 4278 4697 4931 5596 5608 6228 6364 JZ 812 853 894 898 907 943 962 972 1069 1086 1090 1123 1165 1249 1280 1322 1366 1394 1404 1425 1459 1703 1749 1762 1786 1813 1934 1948 2046 2056 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-247 END.M80 CROSS REFERENCE TABLE 2067 2088 2099 2221 2230 2247 2261 2269 2305 2449 2532 2923 2995 3217 3227 3298 3612 3732 3777 4175 4291 4308 4482 4516 4862 4877 4911 5026 5037 5098 5164 5226 5442 5599 5627 5702 5791 5794 6034 6038 6067 6096 6099 6123 6162 6213 6240 6243 6247 6251 6320 6323 6326 6329 6379 6432 6478 6483 LDA 756 886 905 927 931 951 970 997 1012 1034 1047 1053 1063 1067 1138 1147 1163 1198 1282 1320 1364 1371 1397 1653 1686 1701 1720 1732 1810 1838 1848 1896 1921 1925 1931 1943 1946 1957 2010 2037 2044 2049 2070 2078 2082 2093 2154 2166 2227 2259 2291 2297 2328 2512 2541 2609 2792 2843 2845 2870 2881 2904 2910 2933 2953 3054 3101 3129 3215 3225 3417 3464 3492 3500 3622 3628 3730 3765 3774 3828 3846 3857 3874 3908 3976 4058 4110 4223 4313 4666 4689 4824 4999 5016 5192 5220 5435 5443 5537 5620 5700 5773 6103 6121 6146 6160 6173 6199 6204 6238 6245 6351 6376 6466 LDAX 810 1084 1247 1437 2245 2360 3389 3696 4354 4443 4453 4462 4470 4544 4673 4695 4780 4785 4798 4803 5254 5258 5416 5828 5847 5953 5957 5961 5965 5969 5987 5991 5995 5999 6003 6065 6270 LHLD 1079 1173 1179 1286 1325 1349 1356 1380 1692 1784 2233 2545 2564 2633 2708 2715 2743 2754 3068 3147 3275 3337 3345 3421 3649 3769 3932 3938 3985 4050 4096 4197 4199 4244 4252 4261 4295 4303 4422 4445 4511 4561 4795 4906 4972 5182 5249 5281 5447 5462 5542 5563 5580 5612 5787 6336 6416 6429 6436 6475 LXI 543 595 618 624 625 651 703 743 760 765 808 809 883 914 920 922 940 976 1078 1129 1162 1202 1206 1208 1215 1272 1337 1346 1663 1771 1862 1882 1912 1922 1976 2171 2180 2186 2208 2213 2241 2242 2265 2356 2357 2377 2378 2474 2479 2482 2494 2535 2565 2589 2634 2656 2678 2703 2967 3125 3168 3169 3218 3259 3270 3353 3354 3372 3377 3405 3414 3449 3518 3557 3560 3564 3650 3693 3722 3795 3814 3816 3885 3895 3929 3935 3975 4057 4079 4092 4093 4162 4169 4234 4258 4276 4300 4318 4338 4348 4353 4418 4435 4436 4480 4484 4522 4539 4578 4582 4586 4589 4613 4625 4632 4665 4685 4708 4765 4819 4829 4857 4870 4920 4925 4952 4989 5021 5096 5112 5124 5133 5141 5142 5150 5152 5153 5168 5176 5187 5195 5211 5214 5216 5217 5270 5310 5317 5342 5399 5414 5425 5434 5543 5665 5720 5725 6129 6137 6142 6153 6156 6166 6178 6209 6236 6256 6264 6266 6267 6295 6306 6341 6354 6374 6389 6441 6444 6458 6491 6499 6507 6513 MOV 532 555 557 567 580 630 652 655 658 659 662 665 667 668 670 673 680 705 706 707 708 710 717 722 727 747 749 764 767 769 775 815 947 950 960 1076 1148 1150 1152 1167 1174 1176 1182 1217 1266 1269 1271 1287 1289 1293 1307 1312 1314 1328 1330 1338 1340 1381 1419 1455 1666 1673 1680 1689 1698 1706 1722 1795 1799 1803 1807 1857 1923 1929 1941 1945 1956 1962 1977 1982 1985 2048 2054 2083 2101 2104 2146 2172 2177 2224 2234 2267 2362 2498 2504 2567 2569 2593 2596 2637 2639 2709 2753 2755 2768 2790 2820 2832 2844 2864 2869 2899 2903 2921 2944 2972 3043 3045 3077 3079 3100 3126 3133 3148 3151 3156 3171 3184 3187 3261 3279 3289 3380 3382 3484 3491 3610 3653 3666 3756 3761 3770 3789 3791 3799 3805 3978 4060 4245 4247 4253 4255 4265 4267 4269 4271 4289 4296 4298 4306 4424 4448 4449 4451 4458 4461 4514 4562 4564 4616 4617 4619 4624 4628 4630 4668 4675 4691 4700 4701 4703 4705 4717 4718 4732 4756 4757 4836 4860 4875 4908 4927 4945 4947 4948 4950 4953 4955 4960 4979 4985 5032 5161 5194 5199 5224 5250 5252 5311 5405 5407 5418 5427 5428 5444 5446 5450 5452 5477 5488 5492 5493 5495 5501 5504 5506 5545 5549 5565 5568 5569 5581 5583 5606 5613 5621 5622 5633 5648 5652 5669 5670 5672 5674 5676 5691 5728 5789 5867 5869 5872 5874 5891 6032 6050 6093 6187 6193 6211 6221 6338 6343 6352 6355 6375 6382 6417 6430 6437 6446 6452 6461 6462 6469 6476 6481 MVI 627 687 691 744 746 802 838 840 867 869 878 882 1190 1236 1383 1645 1648 1656 1937 1952 1967 1993 2003 2012 2018 2023 2072 2111 2122 2129 2132 2138 2151 2162 2173 2243 2311 2321 2330 2336 2341 2350 2358 2379 2420 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-248 END.M80 CROSS REFERENCE TABLE 2437 2440 2496 2508 2517 2591 2599 2605 2614 2653 2658 2661 2675 2680 2683 2700 2756 2776 2778 2808 2821 2842 2929 2960 2982 2997 3007 3014 3051 3061 3071 3089 3091 3104 3210 3255 3306 3312 3355 3359 3374 3522 3525 3571 3597 3642 3651 3674 3680 3683 3690 3704 3712 3724 3890 3900 3947 3993 3996 4004 4006 4015 4022 4031 4043 4065 4078 4087 4178 4232 4237 4249 4263 4281 4324 4352 4384 4394 4401 4405 4439 4775 4779 4816 4850 4865 4926 4966 4973 4976 5022 5103 5143 5245 5294 5327 5364 5473 5528 5531 5534 5586 5690 5692 5726 5729 5744 5752 5764 5824 5845 6014 6016 6112 6128 6133 6136 6141 6155 6164 6167 6176 6210 6220 6268 6371 6385 6454 NOP 520 521 3528 3529 ORA 631 675 682 776 1068 1085 1155 1183 1365 1461 1668 1938 1954 1959 2167 2769 2875 2973 3102 3494 3698 4059 4667 4690 4733 4961 4980 5036 5222 5727 5778 6079 6447 ORI 676 683 796 1329 6229 OUT 640 677 684 689 692 803 839 841 1157 1406 1407 1411 1428 1641 1646 1649 1654 1995 1997 1998 1999 2000 2001 2004 2008 2011 2013 2016 2020 2024 2025 2038 2071 2102 2105 2112 2114 2115 2116 2117 2118 2119 2120 2123 2127 2130 2134 2139 2140 2152 2163 2313 2315 2316 2317 2318 2319 2322 2326 2329 2331 2334 2338 2342 2343 2351 2369 2418 2421 2438 2442 2505 2509 2519 2539 2597 2600 2606 2616 2777 2779 2877 2961 2964 2998 3006 3008 3015 3017 3044 3046 3049 3052 3055 3062 3064 3072 3074 3078 3080 3083 3084 3085 3087 3090 3092 3094 3103 3105 3117 3419 3465 3523 3526 3572 3586 3725 4008 4246 4248 5013 5104 5129 5780 5954 5958 5962 5966 5970 5988 5992 5996 6000 6004 6175 6504 6511 PCHL 1072 1316 1357 1693 1892 2571 2641 3808 4097 4635 5370 5463 5680 POP 545 597 762 779 783 793 955 980 1016 1038 1059 1121 1315 1331 1332 1368 1378 1385 1405 1410 1427 1471 1815 1817 1818 1819 1820 1883 1884 1885 1886 1887 1966 2176 2798 2810 2824 3041 3142 3143 3182 3297 3313 3694 3891 3894 4064 4066 4083 4165 4192 4285 4292 4521 4526 4529 4530 4571 4573 4574 4640 4676 4688 4722 4729 4730 4742 4745 4752 4770 4771 4772 4773 4774 4834 4873 4932 4975 4977 4984 4997 5003 5160 5171 5219 5233 5247 5273 5295 5300 5301 5302 5303 5328 5333 5334 5335 5336 5356 5357 5358 5359 5363 5365 5411 5423 5499 5517 5518 5519 5520 5535 5574 5584 5587 5678 5679 5693 5767 5799 5804 5811 5818 5819 5937 5971 6005 6009 6041 6054 6056 6185 PUSH 542 570 583 594 606 607 608 609 734 735 742 953 975 1014 1036 1057 1116 1273 1300 1319 1324 1363 1379 1391 1422 1664 1933 2174 2794 2807 2819 3039 3139 3140 3178 3293 3684 3796 3884 4053 4062 4081 4094 4163 4166 4235 4287 4508 4509 4512 4523 4535 4536 4569 4609 4610 4611 4618 4633 4660 4686 4720 4726 4727 4740 4743 4750 4820 4867 4919 4924 4998 5151 5167 5169 5215 5230 5231 5244 5271 5287 5288 5289 5290 5309 5318 5319 5320 5321 5343 5344 5345 5346 5374 5375 5376 5377 5412 5440 5476 5485 5486 5497 5500 5551 5573 5579 5666 5667 5763 5786 5813 5814 5916 5952 5986 6029 6049 6053 6183 RAL 660 661 1139 1143 1308 2865 2866 2867 2900 2901 2945 2946 2947 2948 3486 3487 3488 3489 4471 4474 RAR 653 654 656 657 3502 3503 3504 3505 4266 4270 4621 4622 5451 5505 RC 3843 3905 3920 4677 6077 RET 546 598 1184 1333 1352 1369 1389 1408 1412 1429 1474 1659 1822 1832 1844 1864 1904 2027 2063 2142 2157 2178 2192 2200 2215 2237 2278 2345 2394 2466 2551 2629 2690 2725 2732 2740 2759 2780 2803 2813 2825 2834 2848 2854 2878 2885 2889 2928 2931 2975 3009 3018 3027 3065 3095 3119 3161 3194 3230 3242 3320 3392 3466 3509 3541 3616 3625 3675 3736 3787 3818 3848 3910 3926 3995 4009 4074 4105 4116 4203 4214 4220 4229 4293 4321 4329 4531 4575 4580 4681 4692 4711 4776 4791 4805 4913 4933 4969 5004 5260 5275 5282 5304 5337 5360 5521 5645 5657 5694 5741 5750 5768 5781 5800 5805 5822 5832 5854 5877 5938 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-249 END.M80 CROSS REFERENCE TABLE 5972 6006 6019 6042 6058 6080 6117 6170 6258 6285 6346 6400 6408 6494 6501 RLC 1926 1927 1928 3829 3830 3858 3859 RM 1826 RNC 4326 5892 RNZ 1387 1711 1860 1876 2543 3562 4089 4426 4723 4746 4800 5256 5849 6070 6148 RP 1828 RRC 728 729 730 794 949 1944 1955 3185 3186 RST 792 798 843 844 855 856 866 876 880 910 915 916 917 918 919 935 936 981 1105 1132 1137 1168 1188 1189 1195 1197 1226 1227 1228 1230 1240 1345 1355 1472 1473 1713 1714 1730 1731 1744 1755 1756 1757 1836 1856 1879 1881 1895 1909 1911 1918 1920 1964 2033 2043 2075 2077 2175 2181 2182 2189 2190 2191 2211 2277 2371 2374 2383 2389 2392 2409 2411 2455 2471 2472 2477 2481 2548 2550 2583 2649 2672 2697 2706 2722 2729 2737 2796 2839 2852 2884 2886 2887 2888 2959 3032 3122 3135 3137 3167 3180 3181 3192 3207 3213 3214 3223 3229 3238 3246 3250 3285 3301 3309 3318 3349 3410 3435 3439 3441 3448 3451 3453 3454 3455 3457 3458 3460 3508 3515 3537 3546 3551 3575 3576 3591 3634 3635 3671 3672 3685 3711 3715 3717 3735 3823 3833 3837 3841 3852 3862 3866 3869 3877 3903 3923 3945 3946 3966 4002 4054 4070 4113 4216 4217 4218 4226 4239 4344 4349 4351 4415 4537 4542 4547 4548 4549 4550 4557 4558 4559 4567 4572 4608 4661 4760 4767 4810 4811 4812 4815 4846 4883 4887 4987 4988 5006 5011 5040 5044 5046 5051 5056 5123 5126 5135 5137 5175 5205 5238 5278 5353 5354 5697 5699 5718 5719 5758 5759 5761 6184 6232 6497 6505 6512 RZ 1441 1462 1765 1850 1898 1969 1980 1987 2198 2299 2452 2770 3220 3534 3655 3668 4084 4753 6201 6304 6428 6448 SHLD 921 923 1130 1181 1264 1294 1351 1384 1797 1855 2187 2188 2209 2214 2236 2500 2717 2745 2806 3026 3268 3339 3347 3406 3558 3793 3815 3817 3933 3940 4013 4067 4101 4170 4172 4198 4200 4305 4419 4430 4524 4528 4565 4759 4910 4937 4938 4939 4941 4942 4943 4978 5107 5269 5401 5410 5431 5559 5644 6075 6154 6169 6257 6307 6339 6390 6442 6459 6486 6492 6493 6500 STA 745 870 966 1003 1025 1043 1156 1191 1237 1279 1388 1734 1747 1814 1840 1842 1852 1968 1992 2231 2310 2492 2522 2587 2619 2654 2659 2676 2681 2701 2757 2791 2809 2833 2876 2927 2930 2983 2984 2985 3109 3114 3211 3256 3375 3573 3615 3617 3643 3705 3713 3746 3749 3751 3780 3786 3813 3831 3847 3860 3875 3901 3909 3948 3994 4007 4111 4179 4224 4233 4238 4282 4385 4413 4440 4583 4817 4928 4981 4986 5162 5200 5223 5536 5717 5749 5779 6094 6151 6152 6168 6207 6230 6255 6386 6418 STAX 3149 3152 3378 3659 3700 4355 4782 4786 5589 5623 5636 5649 5654 5829 5919 5923 5927 5931 5936 6271 STC 3436 3806 3949 4193 4659 4768 5264 5803 5888 SUI 1800 1804 1831 5546 5550 XCHG 712 714 752 754 773 778 1267 1297 1453 2384 2388 2499 2501 2570 2640 3385 3387 3797 4552 4555 4631 4957 4965 5268 5400 5677 5844 5885 6013 6435 6451 XRA 638 704 1075 1291 1640 1735 1745 1759 1841 1996 2113 2314 2368 2417 2491 2521 2538 2586 2618 2926 2963 3005 3016 3048 3063 3073 3082 3093 3116 3124 3585 3745 3748 3785 3925 4264 4716 4761 5012 5128 5426 5564 5597 5747 5755 5887 6254 6503 6510 XTHL 531 534 554 566 569 579 582 1418 1421 1433 1435 1452 5265 5267 5404 5475 5482 5616 5618 5735 5740 5772 5776 5812 5821 5841 5843 5881 5884 5908 5910 5947 5949 5981 5983 6010 6012 6048 6057 .ADDR 792 820 823 824 825 843 850 851 856 866 876 910 936 1105 1134 1189 1228 1233 1355 1482 1484 1486 1488 1490 1493 1495 1497 1499 1501 1504 1506 1508 1510 1512 1515 1517 1519 1521 1523 1526 1528 1530 1532 1534 1537 1539 1541 1543 1545 1548 1550 1552 1554 1556 1559 1561 1563 1565 1567 1570 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-250 END.M80 CROSS REFERENCE TABLE 1572 1574 1576 1578 1581 1583 1585 1587 1589 1591 1593 1595 1597 1599 1601 1604 1606 1608 1610 1612 1614 1629 1630 1631 1632 1881 1911 1919 1963 2042 2076 2175 2199 2207 2264 2353 2371 2412 2415 2432 2435 2461 2464 2465 2472 2477 2558 2573 2574 2575 2576 2582 2584 2603 2643 2644 2645 2646 2673 2687 2689 2698 2723 2730 2738 2840 2853 2884 3208 3250 3286 3287 3295 3296 3301 3351 3411 3412 3435 3440 3448 3456 3458 3516 3537 3547 3548 3551 3553 3554 3555 3575 3576 3592 3593 3595 3634 3635 3671 3672 3711 3715 3720 3823 3833 3838 3839 3841 3852 3862 3867 3868 3869 3877 3903 3924 3945 3967 3968 4055 4056 4063 4068 4071 4072 4073 4114 4115 4183 4210 4212 4213 4227 4228 4240 4241 4345 4346 4416 4417 4645 4646 4647 4648 4649 4650 4651 4652 4662 4663 4815 4847 4848 4884 4885 4888 4889 4893 4894 4902 4903 4988 5006 5040 5046 5073 5075 5123 5206 5207 5279 5682 5683 5684 5685 5686 5687 5697 5699 5719 5761 6184 6188 6399 6407 6497 6505 6512 6527 6529 6530 6533 6538 6539 6541 6543 6551 6553 6556 6577 6579 6581 6582 6588 6596 6598 6600 6601 6603 6605 6612 .ASCII 6621 6625 6655 6657 .ASCIZ 791 1635 1893 1914 3196 3197 3198 3199 3911 3912 5090 5091 6619 6620 6623 6624 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6659 .BLKB 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6778 6779 .BYTE 798 821 822 826 827 828 829 830 831 832 833 834 835 836 866 876 915 916 917 918 919 935 981 1168 1188 1226 1227 1345 1472 1473 1481 1483 1485 1487 1489 1492 1494 1496 1498 1500 1503 1505 1507 1509 1511 1514 1516 1518 1520 1522 1525 1527 1529 1531 1533 1536 1538 1540 1542 1544 1547 1549 1551 1553 1555 1558 1560 1562 1564 1566 1569 1571 1573 1575 1577 1580 1582 1584 1586 1588 1590 1592 1594 1596 1598 1600 1603 1605 1607 1609 1611 1613 1615 1658 1713 1714 1730 1731 1744 1755 1756 1757 1836 1856 1879 1895 1903 1909 1964 2181 2182 2189 2190 2191 2211 2275 2276 2277 2374 2383 2389 2392 2397 2398 2399 2400 2401 2402 2403 2404 2409 2411 2423 2444 2448 2455 2471 2481 2524 2527 2531 2548 2550 2583 2621 2625 2649 2672 2697 2706 2722 2729 2737 2796 2839 2852 2886 2887 2888 2959 2969 3032 3122 3135 3137 3167 3180 3181 3192 3207 3213 3214 3223 3229 3238 3246 3250 3272 3273 3285 3309 3318 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3349 3361 3410 3427 3451 3453 3454 3460 3468 3508 3515 3546 3551 3591 3599 3672 3685 3711 3715 3837 3866 3923 3946 3966 4054 4070 4113 4119 4120 4121 4217 4218 4226 4239 4344 4415 4486 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4542 4547 4548 4549 4550 4557 4558 4559 4567 4661 4811 4812 4815 4831 4846 4852 4883 4887 4987 5011 5044 5051 5056 5067 5068 5072 5073 5074 5075 5076 5078 5079 5081 5082 5083 5084 5085 5086 5087 5088 5126 5197 5202 5205 5278 5292 5293 5324 5325 5348 5349 5353 5354 5379 5380 5593 5718 5746 5754 5758 5759 5766 6116 6184 6232 6233 6234 6401 6402 6403 6404 6405 6410 6411 6412 6413 6414 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6555 6556 6557 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6610 6611 6612 6613 6614 6615 6616 6617 6622 6626 6656 6658 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-251 END.M80 CROSS REFERENCE TABLE .END 6782 .ENDC 915 916 917 918 919 981 1168 1188 1226 1227 1345 1625 1633 1713 1714 1744 1879 1895 1909 1964 2189 2190 2191 2211 2277 2959 3214 3229 3451 4217 4218 4811 4812 4987 4992 5011 5041 5044 5240 5718 5758 5759 6232 6780 .IF 915 916 917 918 919 981 1168 1188 1226 1227 1345 1619 1628 1713 1714 1744 1879 1895 1909 1964 2189 2190 2191 2211 2277 2959 3214 3229 3451 4217 4218 4811 4812 4813 4987 5011 5015 5044 5064 5718 5758 5759 6232 6777 .IFF 915 916 917 918 919 981 1168 1188 1226 1227 1345 1713 1714 1744 1879 1895 1909 1964 2189 2190 2191 2211 2277 2959 3214 3229 3451 4217 4218 4811 4812 4987 5011 5044 5718 5758 5759 6232 .IFT 915 916 917 918 919 981 1168 1188 1226 1227 1345 1713 1714 1744 1879 1895 1909 1964 2189 2190 2191 2211 2277 2959 3214 3229 3451 4217 4218 4811 4812 4987 5011 5044 5718 5758 5759 6232 .IIF 821 822 6619 6751 .LIST 9 832 833 834 915 916 917 918 919 981 1168 1188 1226 1227 1345 1713 1714 1744 1879 1895 1909 1964 2189 2190 2191 2211 2277 2959 3214 3229 3451 3468 4119 4120 4121 4217 4218 4811 4812 4852 4987 5011 5044 5718 5758 5759 6232 .MACRO 176 185 194 202 210 217 225 234 240 248 255 263 269 286 291 311 330 347 364 372 380 388 395 413 423 428 433 438 443 448 454 461 469 474 479 486 496 .NLIST 8 832 833 834 915 916 917 918 919 981 1168 1188 1226 1227 1345 1713 1714 1744 1879 1895 1909 1964 2189 2190 2191 2211 2277 2959 3214 3229 3451 3468 4119 4120 4121 4217 4218 4811 4812 4852 4987 5011 5044 5718 5758 5759 6232 .PAGE 6 55 81 126 170 221 259 346 387 453 490 513 548 612 634 644 685 698 725 763 789 799 842 859 881 912 937 982 990 1004 1026 1044 1073 1091 1108 1141 1185 1222 1242 1260 1295 1317 1334 1358 1413 1430 1446 1476 1513 1546 1579 1602 1616 1636 1660 1694 1717 1746 1773 1788 1834 1865 1905 1915 1990 2028 2064 2074 2106 2143 2158 2184 2193 2216 2256 2284 2306 2346 2376 2406 2429 2467 2484 2515 2533 2553 2577 2612 2630 2647 2668 2691 2719 2741 2781 2804 2826 2849 2891 2937 2956 2990 3028 3069 3120 3162 3200 3232 3243 3277 3304 3341 3393 3425 3438 3470 3511 3542 3567 3581 3601 3631 3677 3708 3737 3768 3802 3819 3849 3881 3913 3942 3972 3987 4011 4028 4051 4075 4098 4118 4159 4184 4230 4279 4330 4368 4387 4407 4441 4478 4503 4532 4556 4576 4591 4637 4653 4682 4713 4763 4806 4853 4914 4934 4970 4983 4993 5009 5038 5065 5092 5116 5145 5173 5209 5241 5283 5313 5338 5383 5432 5464 5511 5522 5572 5610 5646 5659 5688 5706 5731 5769 5782 5806 5834 5856 5895 5896 5939 5973 6007 6021 6059 6081 6118 6144 6171 6190 6217 6248 6259 6286 6308 6347 6369 6392 6420 6456 6495 6516 6558 6607 6618 6660 .RADIX 129 152 832 833 834 1134 1233 1919 1963 2042 2066 2076 2087 2098 3440 3456 3468 3553 3554 3555 3595 4063 4068 4073 4119 4120 4121 4183 4210 4490 4502 4852 5067 5068 5072 5073 5074 5075 5076 5078 5079 6188 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6555 6556 6557 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6610 6611 6612 6613 6614 6615 6616 6617 .SBTTL 3 56 82 171 514 515 616 645 699 913 1074 1109 1243 1477 1617 1637 1661 1991 2030 2144 2347 2348 2407 2485 2554 2562 2578 2580 2631 2648 2669 2670 2692 2714 2720 2728 2734 2742 2748 2761 2782 2827 2837 2850 2856 2892 2914 2938 2957 2977 2991 3002 3011 3021 3029 3121 3163 3201 3233 3244 3336 3342 3343 3394 3471 3512 3543 3568 3582 3589 3602 3632 3639 3678 3709 3738 3820 3850 3943 3973 4012 4099 4122 4231 4331 4381 4388 4397 4408 4592 VER 4.2 KS10 CONSOLE PROGRAM CROSS - MICRO PROCESSOR ASSEMBLER 6(31) 15-NOV-78 08:07 PAGE 3-252 END.M80 CROSS REFERENCE TABLE 4807 4994 5689 5696 6044 6060 6119 6287 6309 6496 6517 6559 6661 .TITLE 1634 ERRORS DETECTED: 0 *FOR21.DAT/PTP,KNS10.PNT/M80/OCT/CRF/EQ:PASS2:SCECOD=CONDEF.M80,CHKSMS.M80,HCORE.M80,CMDS.M80,SUBRTN.M80,DR.M80,MSG.M80,STORE.M RUN-TIME: 11 22 4 SECONDS CORE USED: 21K READ I/O 0 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! !R DATA 28 ! R DATA 29 !! R DATA 30 ! R DATA 31 ! R DATA 32 !! R DATA 33 ! R DATA 34 ! R DATA 35 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 1 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! !R DATA 20 ! R DATA 21 !! R DATA 22 ! R DATA 23 ! R DATA 24 !! R DATA 25 ! R DATA 26 ! R DATA 27 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 2 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! !R DATA 12 ! R DATA 13 !! R DATA 14 ! R DATA 15 ! R DATA 16 !! R DATA 17 ! R DATA 18 ! R DATA 19 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 3 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! !R DATA 4 ! R DATA 5 !! R DATA 6 ! R DATA 7 ! R DATA 8 !! R DATA 9 ! R DATA 10 ! R DATA 11 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 100 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! REC PE ! UBA3 PE !! SPARE ! CRAM ! MEM !! DP PARITY ! CRA PARITY ! UBA2 PE ! ! L ! L !! ! PARITY ERR ! PARITY ERR !! ERR L ! ERR L ! L ! ! ! !! L ! L ! L !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 101 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! MMC REF ! ! PI REQ 1 ! PI REQ 2 !! PI REQ 3 ! PI REQ 4 ! PI REQ 5 !! PI REQ 6 ! PI REQ 7 ! ERR B ! ! ! !! ! ! !! ! ! H ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 102 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! R AC LO ! R RESET !! R MEM BUSY ! R I/O BUSY ! R BAD DATA !! R COM ADR ! R I/O DATA ! R DATA ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 103 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! UBA1 PE ! UBA4 PE !! R PAR RIGHT ! R PAR LEFT ! R DATA 0 !! R DATA 1 ! R DATA 2 ! R DATA 3 ! ! L ! L !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 300 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! CTY ! CTY CHAR !! KLINIK ! KLINIK ! DPM !! RUN (1) ! EXECUTE ! CONTINUE ! ! BIT # ! LENGTH !! BIT # ! LENGTH ! HALT LOOP !! H ! H ! H ! ! (SW) ! (SW) !! (SW) ! (SW) ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 301 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! 10 ! NXM !! SPARE ! BUS ! PE (1) !! CONSOLE ! BOOT ! DATA ACK ! ! INTERRUPT ! H !! ! REQ ! H !! ENABLE H ! H ! H ! ! H ! !! H ! ! !! (SW) ! (SW) ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 302 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! REMOTE !! REMOTE EN ! TERMINAL ! KLINIK ! ! 0 ! 0 !! 0 ! 0 ! PROTECT H !! H ! CARRIER ! CARRIER ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** READ I/O 303 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! R CLK !! CRAM CLK ! DPE/M CLK ! RAM ! ! 0 ! 0 !! 0 ! 0 ! ENB (0) !! ENA ! ENABLE ! ERROR ! ! ! !! ! ! H !! H ! L ! L ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT I/O 204 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! CRAM ! CRM ADR ! SS !! DP ! STACK ! CRAM ! ! 0 ! 0 !! WRITE ! LOAD ! MODE !! RESET ! RESET ! RESET ! ! ! !! ! ! !! H ! H ! H ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT I/O 205 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! MAINT ! !! CLR 10 ! ! !! ! ! ! ! CLK ! MAINT !! INTERRUPT ! TRAP ! DIAG 10 !! DIAG 4 ! DIAG 2 ! DIAG 1 ! ! PULSE ! ENB !! L ! EN ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT I/O 206 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! 0 ! 0 !! 0 ! 0 ! 0 !! 0 ! SINGLE ! CLK RUN ! ! ! !! ! ! !! ! CLK H ! H ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT I/O 210 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! CHECK ! CONSOLE !! XMIT ADR ! XMIT DATA ! CRA T CLK !! CRA R CLK ! LATCH ! CLOSE ! ! NXM ! REQ !! (1) ! (1) ! ENB (1) !! ENB (1) ! DATA ! LATCHS ! ! ! !! ! ! !! ! (1) ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT I/O 212 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! 0 ! 0 !! 0 ! 0 ! 0 !! RUN ! EXECUTE ! CONTINUE ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT 100 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! RESET ! PE DETECT !! CRM PE ! DP PE ! CACHE !! 1 MSEC ! 0 ! 0 ! ! ! ENABLE !! DETECT ! DETECT ! ENABLE !! ENABLE H ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT 101 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! MODEM !! ! ! ! ! 0 ! 0 !! 0 ! 0 ! DTR !! STATE ! REMOTE ! FAULT ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT 102/103 DATA/ADR ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! DATA 28 ! DATA 29 !! DATA 30 ! DATA 31 ! DATA 32 !! DATA 33 ! DATA 34 ! DATA 35 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT 104/105 DATA/ADR ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! DATA 20 ! DATA 21 !! DATA 22 ! DATA 23 ! DATA 24 !! DATA 25 ! DATA 26 ! DATA 27 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT 106/107 DATA/ADR ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! DATA 12 ! DATA 13 !! DATA 14 ! DATA 15 ! DATA 16 !! DATA 17 ! DATA 18 ! DATA 19 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT 110/111 DATA/ADR ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! DATA 4 ! DATA 5 !! DATA 6 ! DATA 7 ! DATA 8 !! DATA 9 ! DATA 10 ! DATA 11 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT 112/113 DATA/ADR ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! 0 ! 0 !! 0 ! 0 ! DATA 0 !! DATA 1 ! DATA 2 ! DATA 3 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT 114/115 ADR/DATA ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! 0 ! 0 !! 0 ! 0 ! BAD DATA !! COM/ADR ! I/O DATA ! DATA ! ! ! !! ! ! CYCLE !! CYCLE ! CYCLE ! CYCLE ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT 116 ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! CSL INTERRUPT ! ! 0 ! 0 !! 0 ! 0 ! 0 !! 0 ! 0 ! THE 10 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT I/O 200 CTY UART WRITE STATUS REGISTER(DATA BUFFER IS I/O 201) ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! HUNT MODE ! UART !! REQUEST ! RESET ! SEND !! RECEIVE ! TERMINAL ! TRANSMIT ! ! ON(SYNC) ! RESET !! TO SEND L ! ERRORS ! BREAK CHAR !! ENABLE ! READY ! ENABLE ! ! ! !! ! ! H !! ! L ! ! ****************************************************************************************************************************** WRT I/O 200 CTY UART READ STATUS REGISTER(DATA BUFFER IS I/O 201) ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! DATA SET ! SYNC !! FRAMING ! OVERRUN ! PARITY !! TRANSMITTER ! RECEIVER ! TRANSMITTER ! ! READY ! DETECT !! ERROR ! ERROR ! ERROR !! EMPTY ! READY ! READY ! ! ! !! ! ! !! ! ! ! ****************************************************************************************************************************** WRT I/O 202 REMOTE UART WRITE STATUS REGISTER(DATA BUFFER IS I/O 203) ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! HUNT MODE ! UART !! REQUEST ! RESET ! SEND !! RECEIVE ! TERMINAL ! TRANSMIT ! ! ON(SYNC) ! RESET !! TO SEND L ! ERRORS ! BREAK CHAR !! ENABLE ! READY ! ENABLE ! ! ! !! ! ! H !! ! L ! ! ****************************************************************************************************************************** WRT I/O 202 REMOTE UART READ STATUS REGISTER(DATA BUFFER IS I/O 203) ****************************************************************************************************************************** ! DBUS7 ! DBUS6 !! DBUS5 ! DBUS4 ! DBUS3 !! DBUS2 ! DBUS1 ! DBUS0 ! ! ! !! ! ! !! ! ! ! ! ! !! ! ! !! ! ! ! ! DATA SET ! SYNC !! FRAMING ! OVERRUN ! PARITY !! TRANSMITTER ! RECEIVER ! TRANSMITTER ! ! READY ! DETECT !! ERROR ! ERROR ! ERROR !! EMPTY ! READY ! READY ! ! ! !! ! ! !! ! ! ! ******************************************************************************************************************************