diff --git a/src/kshack/kns10.4_2 b/src/kshack/kns10.4_2 new file mode 100644 index 00000000..35e95782 --- /dev/null +++ b/src/kshack/kns10.4_2 @@ -0,0 +1,9979 @@ + .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 ! +! ! !! ! ! !! ! ! ! +****************************************************************************************************************************** + + + + \ No newline at end of file