1 000000 / DECMATE II ROM CONTENTS 2 000000 3 000000 / ORIGINALLY DECODED AND DISASSEMBLED BY CHARLES J. LASNER. 4 000000 5 000000 / EDIT HISTORY: 6 000000 / 08-MAY-2021 02:00:00 Vincent R. Slyngstad 7 000000 / 02-DEC-1991 02:00:00 Charles J. Lasner 8 000000 9 000000 / MAY BE ASSEMBLED WITH '/J' (PAL8 '/F') SWITCH SET. 10 000000 11 000000 / THIS IS THE CODE USED IN THE DECMATE II PRIMARY CONTROL ROM. IT RESIDES IN 12 000000 / THREE 2716 PACKAGES KNOWN AS E113, E114, E115. THE THREE ROMS ARE ENCODED 13 000000 / INTO A 12-BIT IMAGE OF AN ENTIRE FIELD IN THE PARTICULAR ORGANIZATION 14 000000 / ILLUSTRATED BELOW. FOR ALL ROM CONTENTS: 0.X=BIT X IN THE SPACE 0000-3777, 15 000000 / 4.X=BIT X IN THE SPACE 4000-7777. 16 000000 17 000000 / E113: 0 1 2 3 4 5 6 7 18 000000 19 000000 / BIT: 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 20 000000 21 000000 / E114: 0 1 2 3 4 5 6 7 22 000000 23 000000 / BIT: 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 24 000000 25 000000 / E115: 0 1 2 3 4 5 6 7 26 000000 27 000000 / BIT: 0.8 4.8 0.9 4.9 0.10 4.10 0.11 4.11 28 000000 29 000000 / THIS IS THE ASSEMBLY MODIFIED TO MATCH THE RELEASED ROM SET KNOWN AS 358E2, 30 000000 / 359E2, 360E2. 31 000000 32 000000 / WHEN THE DECMATE II IS FIRST POWERED UP, ROM CONTROL IS ENABLED FOR ALL DIRECT 33 000000 / (IF) AND INDIRECT (DF) REFERENCES TO CP MEMORY, THUS THE CPU STARTS AT 34 000000 / ROM-BASED ADDRESS CP07777. THE ROM CODE MOVES A LOADING PROGRAM TO PAGE ZERO 35 000000 / OF THE CORRESPONDING RAM IN FIELD ZERO OF CP MEMORY, WHICH IS THEN STARTED. 36 000000 / TO ACCOMPLISH THE INITIAL MOVE OF THE LOADER, THE DF CONTROL IS CHANGED TO RAM 37 000000 / WHILE RETAINING IF CONTROL IN THE ROM. 38 000000 39 000000 / THE LOADER MOVES THE BULK OF THE ROM CODE TO CP FIELD SEVEN AND THEN STARTS IT 40 000000 / THERE. NO CODE IS MOVED TO ANY ADDRESS LOWER THAN 0100, SINCE THE CODE IMAGE 41 000000 / IS STORED OFFSET BY 100. THIS MEANS THAT ROM LOCATION 0000 WINDS UP IN FIELD 42 000000 / 7 LOCATION 0100 AND SO ON. DURING THE LOAD OPERATION, THE IF CONTROL IS 43 000000 / ALWAYS SET TO RAM BECAUSE AT THIS POINT THE LOADER IS RUNNING. THE DF IS 44 000000 / SWITCHED BETWEEN ROM AND RAM AS NECESSARY TO ACCOMPLISH THE LOAD OPERATION. 45 000000 / AFTER LOADING IS COMPLETE, THE ROM IS TOTALLY DISABLED. 46 000000 / DEFINITIONS. 47 000000 48 000000 / OPERATE INSTRUCTIONS. 49 000000 50 000000 R3L= 7014 /ROTATE AC LEFT THREE WITHOUT AFFECTING LINK 51 000000 52 000000 / COMBINED OPERATE INSTRUCTIONS. 53 000000 54 000000 NL0001= CLA IAC /LOAD AC WITH 0001 55 000000 NL0002= CLA CLL CML RTL /LOAD AC WITH 0002 56 000000 NL002A= CLA CLL IAC RAL /LOAD AC WITH 0002 ON 8/I OR NEWER 57 000000 NL0003= CLA CLL CML IAC RAL /LOAD AC WITH 0003 58 000000 NL0004= CLA CLL IAC RTL /LOAD AC WITH 0004 59 000000 NL0006= CLA CLL CML IAC RTL /LOAD AC WITH 0006 60 000000 NL0010= CLA IAC R3L /LOAD AC WITH 0010 61 000000 NL0100= CLA IAC BSW /LOAD AC WITH 0100 62 000000 NL2000= CLA CLL CML RTR /LOAD AC WITH 2000 63 000000 NL3777= CLA CLL CMA RAR /LOAD AC WITH 3777 64 000000 NL4000= CLA CLL CML RAR /LOAD AC WITH 4000 65 000000 NL5777= CLA CLL CMA RTR /LOAD AC WITH 5777 66 000000 NL6000= CLA CLL CML IAC RTR /LOAD AC WITH 6000 67 000000 NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 68 000000 NL7776= CLA CLL CMA RAL /LOAD AC WITH 7776 69 000000 NL7777= CLA CMA /LOAD AC WITH 7777 70 000000 71 000000 / PROCESSOR I/O INSTRUCTIONS. 72 000000 73 000000 CPD= 6266 /FORCE DF TO REFER TO MAIN MEMORY 74 000000 GCF= 6256 /GET CURRENT FIELDS 75 000000 PEX= 6004 /EXIT FROM CP TO MAIN MEMORY 76 000000 PG0= 6003 /RESET HLTFLG FLIP-FLOP 77 000000 PRQ3= 6236 /TYPE 3 PANEL REQUEST 78 000000 PRS= 6000 /READ PANEL STATUS 79 000000 RSP1= 6207 /READ FIRST STACK POINTER 80 000000 RSP2= 6227 /READ SECOND STACK POINTER 81 000000 SPD= 6276 /FORCE DF TO REFER TO CP MEMORY 82 000000 WSR= 6246 /WRITE SWITCH REGISTER (ROM CONTROL), CLEAR AC 83 000000 84 000000 / INTERNAL I/O INSTRUCTIONS. 85 000000 86 000000 KEY= 03 /KEYBOARD DEVICE CODE 87 000000 TTY= 04 /SCREEN DEVICE CODE 88 000000 89 000000 / VIDEO INTERRUPT INSTRUCTIONS. 90 000000 91 000000 VIDINT= 06 /VIDEO INTERRUPT DEVICE CODE 92 000000 93 000000 VFL= VIDINT^10+6000 /SET VIDEO INTERRUPT FLAG 94 000000 VSF= VIDINT^10+6001 /SKIP ON, CLEAR VIDEO INTERRUPT FLAG 95 000000 VCL= VIDINT^10+6002 /NOP (CLEAR THE AC?) 96 000000 VNOP1= VIDINT^10+6003 /(NOP?) 97 000000 VDUMM1= VIDINT^10+6004 /(NOP?) 98 000000 VIE= VIDINT^10+6005 /WRITE INTERRUPT ENABLE PER AC[11] 99 000000 VDUMM2= VIDINT^10+6006 /(NOP?) 100 000000 VDUMM3= VIDINT^10+6007 /(NOP?) 101 000000 102 000000 / VIDEO CONTROLLER INSTRUCTION. 103 000000 104 000000 VIDDEV= 12 /VIDEO CONTROLLER DEVICE CODE 105 000000 106 000000 APTFL= VIDDEV^10+6000 /SET APT INTERRUPT FLAG 107 000000 APTSKP= VIDDEV^10+6001 /SKIP ON, CLEAR APT INTERRUPT FLAG 108 000000 LSCREG= VIDDEV^10+6002 /LOAD VIDEO REGISTER SELECT 109 000000 CGLOAD= VIDDEV^10+6003 /LOAD CHARACTER GENERATOR ADDRESS/DATA 110 000000 VLOAD= VIDDEV^10+6004 /LOAD SELECTED REGISTER FROM AC[4-11] 111 000000 APTIE= VIDDEV^10+6005 /WRITE INTERRUPT ENABLE PER AC[11] 112 000000 VIDCON= VIDDEV^10+6006 /AC TO VIDEO CONTROL 113 000000 VREAD= VIDDEV^10+6007 /READ SELECTED REGISTER 114 000000 115 000000 / PRINTER INTERFACE INSTRUCTIONS. 116 000000 117 000000 PRICON= 32 /PRINTER INPUT DEVICE CODE 118 000000 119 000000 PRIFL= PRICON^10+6000 /SET PRINTER INPUT FLAG 120 000000 PRISKP= PRICON^10+6001 /SKIP ON, CLEAR PRINTER INPUT FLAG 121 000000 PRICLR= PRICON^10+6002 /CLEAR THE AC 122 000000 PRINO1= PRICON^10+6003 /NOP 123 000000 PRIRS= PRICON^10+6004 /OR INPUT BUFFER WITH AC 124 000000 PRIIE= PRICON^10+6005 /WRITE INTERRUPT ENABLE PER AC[11] 125 000000 PRIRB= PRICON^10+6006 /LOAD INPUT BUFFER INTO AC 126 000000 PRINO2= PRICON^10+6007 /NOP 127 000000 128 000000 PROCON= 33 /PRINTER OUTPUT DEVICE CODE 129 000000 130 000000 PROFL= PROCON^10+6000 /SET PRINTER OUTPUT FLAG 131 000000 PROSKP= PROCON^10+6001 /SKIP ON, CLEAR PRINTER OUTPUT FLAG 132 000000 PRONO1= PROCON^10+6002 /NOP 133 000000 PRSB= PROCON^10+6003 /LOAD BAUD RATE PER AC[8-11] 134 000000 PROPC= PROCON^10+6004 /OUTPUT CHARACTER FROM AC[4-11] 135 000000 PROIE= PROCON^10+6005 /WRITE INTERRUPT ENABLE PER AC[11] 136 000000 PROLS= PROCON^10+6006 /OUTPUT CHARACTER FROM AC[4-11], CLEAR AC 137 000000 PRONO2= PROCON^10+6007 /NOP 138 000000 139 000000 / RD51D I/O INSTRUCTIONS. 140 000000 141 000000 RDNOP= 6700 /RESERVED INSTRUCTION 142 000000 RDSR= 6701 /SKIP ON, CLEAR DATA REQUEST FLAG 143 000000 RDSC= 6702 /SEND COMMAND PER AC 144 000000 RDSD= 6703 /SKIP ON, CLEAR DONE FLAG 145 000000 RDTD= 6704 /TRANSFER DATA TO/FROM AC 146 000000 RDWE= 6705 /WRITE INTERRUPT ENABLE PER AC[11] 147 000000 RDSE= 6706 /SKIP ON, CLEAR ERROR FLAG 148 000000 RDTEST= 6707 /RESERVED TEST INSTRUCTION THAT CLEARS THE AC 149 000000 /ONLY IF THE RD51D IS INSTALLED. 150 000000 151 000000 / COMMUNICATIONS PORT DEFINITIONS. 152 000000 153 000000 PORTIN= 30 /COMMUNICATIONS PORT INPUT DEVICE CODE 154 000000 155 000000 IFL= PORTIN^10+6000 /SET COMMUNICATIONS PORT INPUT/OUTPUT FLAG 156 000000 ISF= PORTIN^10+6001 /SKIP ON, CLEAR PORT INPUT/OUTPUT FLAG 157 000000 ICF= PORTIN^10+6002 /NOP (CLEAR THE AC?) 158 000000 INOP1= PORTIN^10+6003 /(NOP?) 159 000000 IRS= PORTIN^10+6004 /READ COMMUNICATIONS PORT RECEIVE BUFFER 160 000000 IIE= PORTIN^10+6005 /PORT I/O INTERRUPT ENABLE PER AC[11] 161 000000 IRB= PORTIN^10+6006 /READ COMMUNICATIONS PORT RECEIVE BUFFER 162 000000 INOP2= PORTIN^10+6007 /(NOP?) 163 000000 164 000000 PORTOUT=31 /COMMUNICATIONS PORT OUTPUT DEVICE CODE 165 000000 166 000000 DUMBFL= PORTOUT^10+6000 /SET COMMUNICATIONS PORT DUMMY FLAG 167 000000 DUMBSF= PORTOUT^10+6001 /SKIP ON, CLEAR COMMUNICATIONS PORT DUMMY FLAG 168 000000 DUMBCF= PORTOUT^10+6002 /NOP (CLEAR THE AC?) 169 000000 ONOP1= PORTOUT^10+6003 /(NOP?) 170 000000 OPC= PORTOUT^10+6004 /LOAD COMMUNICATIONS PORT TRANSMIT BUFFER 171 000000 DUMBIE= PORTOUT^10+6005 /PORT DUMMY INTERRUPT ENABLE PER AC[11] 172 000000 OLS= PORTOUT^10+6006 /LOAD COMMUNICATIONS PORT TRANSMIT BUFFER 173 000000 ONOP2= PORTOUT^10+6007 /(NOP?) 174 000000 175 000000 PORTCON=36 /COMMUNICATIONS PORT CONTROL DEVICE CODE 176 000000 177 000000 MFL= PORTCON^10+6000 /SET MODEM CHANGE FLAG 178 000000 MSF= PORTCON^10+6001 /SKIP ON, CLEAR MODEM CHANGE FLAG 179 000000 MLC= PORTCON^10+6002 /LOAD MODEM CONTROL REGISTER 180 000000 MSB= PORTCON^10+6003 /LOAD BAUD RATE REGISTER 181 000000 MRS= PORTCON^10+6004 /READ MODEM STATUS REGISTER 182 000000 MIE= PORTCON^10+6005 /MODEM CHANGE INTERRUPT ENABLE PER AC[11] 183 000000 MPSCC= PORTCON^10+6006 /ACCESS MULTIPROTOCOL SERIAL CONTROLLER 184 000000 MPRESET=PORTCON^10+6007 /RESET MULTIPROTOCOL SERIAL CONTROLLER 185 000000 186 000000 / TTY: TRAP DEFINITIONS. 187 000000 188 000000 TTYCON= 07 /DEVICE CODE FOR TTY: TRAP 189 000000 190 000000 TTYFL= TTYCON^10+6000 /SET TTY: TRAP FLAG 191 000000 TTYSF= TTYCON^10+6001 /SKIP ON, CLEAR TTY: TRAP FLAG 192 000000 TTYCLR= TTYCON^10+6002 /CLEAR THE AC 193 000000 TTNOP1= TTYCON^10+6003 /NOP 194 000000 TTNOP2= TTYCON^10+6004 /NOP 195 000000 TTYIE= TTYCON^10+6005 /WRITE INTERRUPT ENABLE PER AC[11] 196 000000 TTNOP3= TTYCON^10+6006 /NOP 197 000000 TTNOP4= TTYCON^10+6007 /NOP 198 000000 199 000000 / CLOCK DEFINITIONS. 200 000000 201 000000 CLKCON= 13 /REAL-TIME CLOCK DEVICE CODE 202 000000 203 000000 CLFL= CLKCON^10+6000 /SET CLOCK FLAG 204 000000 CLSK= CLKCON^10+6001 /SKIP ON, CLEAR CLOCK FLAG 205 000000 CLNOP1= CLKCON^10+6002 /NOP 206 000000 CLNOP2= CLKCON^10+6003 /NOP 207 000000 CLNOP3= CLKCON^10+6004 /NOP 208 000000 CLIE= CLKCON^10+6005 /WRITE INTERRUPT ENABLE PER AC[11] 209 000000 CLNOP4= CLKCON^10+6006 /NOP 210 000000 CLNOP5= CLKCON^10+6007 /NOP 211 000000 212 000000 / KEYBOARD DEFINITIONS. 213 000000 214 000000 KBICON= 11 /KEYBOARD INPUT DEVICE CODE 215 000000 216 000000 KBIFL= KBICON^10+6000 /SET KEYBOARD INPUT FLAG 217 000000 KBISF= KBICON^10+6001 /SKIP ON, CLEAR KEYBOARD INPUT FLAG 218 000000 KBICLR= KBICON^10+6002 /CLEAR THE AC 219 000000 KINOP1= KBICON^10+6003 /NOP 220 000000 KBIRS= KBICON^10+6004 /OR AC WITH KEYBOARD INPUT DATA 221 000000 KBIIE= KBICON^10+6005 /WRITE INTERRUPT ENABLE PER AC[11] 222 000000 KBIRB= KBICON^10+6006 /READ KEYBOARD INPUT DATA INTO AC 223 000000 KINOP2= KBICON^10+6007 /NOP 224 000000 225 000000 KBOCON= 05 /KEYBOARD OUTPUT DEVICE CODE 226 000000 227 000000 KBOFL= KBOCON^10+6000 /SET KEYBOARD OUTPUT FLAG 228 000000 KBOSF= KBOCON^10+6001 /SKIP ON, CLEAR KEYBOARD OUTPUT FLAG 229 000000 KONOP1= KBOCON^10+6002 /NOP 230 000000 KONOP2= KBOCON^10+6003 /NOP 231 000000 KBOPC= KBOCON^10+6004 /OUTPUT AC TO KEYBOARD 232 000000 KBOIE= KBOCON^10+6005 /WRITE INTERRUPT ENABLE PER AC[11] 233 000000 KBOLS= KBOCON^10+6006 /OUTPUT AC TO KEYBOARD, CLEAR AC 234 000000 KONOP3= KBOCON^10+6007 /NOP 235 000000 236 000000 / RX50/RX01/RX02 DEFINITIONS. 237 000000 238 000000 RXCON= 75 /RX50 DEVICE CODE 239 000000 240 000000 SEL= RXCON^10+6000 /SELECT DISKETTE PAIR PER AC[0] AND AC[11] 241 000000 LCD= RXCON^10+6001 /LOAD COMMAND REGISTER, CLEAR AC 242 000000 XDR= RXCON^10+6002 /TRANSFER DATA 243 000000 STR= RXCON^10+6003 /SKIP ON TRANSFER FLAG, CLEAR TRANSFER FLAG 244 000000 SER= RXCON^10+6004 /SKIP ON ERROR FLAG, CLEAR ERROR FLAG 245 000000 SDN= RXCON^10+6005 /SKIP ON DONE FLAG, CLEAR DONE FLAG 246 000000 INTR= RXCON^10+6006 /WRITE INTERRUPT ENABLE PER AC[11] 247 000000 RXINIT= RXCON^10+6007 /INITIALIZE CONTROLLER AND DRIVES 248 000000 249 000000 / MRI DEFINITIONS. 250 000200* RELOC 0200 /VRS: THIS MUST NOT THINK IT'S PAGE ZERO 251 000200* JMPIC= JMP I . /CURRENT PAGE JMP I 252 000000 RELOC /VRS: RESET BOGUS RELOC 253 000000 / OTHER DEFINITIONS. 254 000000 255 000000 A= 0 /EVEN HALF OF COMMUNICATIONS CHIP 256 000000 APUCON= 14 /APU/XPU DEVICE CODE 257 000000 B= 1 /ODD HALF OF COMMUNICATIONS CHIP 258 000000 DTIME= 400 /DISK WAIT TIME-OUT FACTOR 259 000000 ROWADR= 3660 /ROWTABLE ADDRESS IN FIELD 1 260 000000 T0S3BUF=5350 /TRACK 0, SECTOR 3 BUFFER IN FIELD 1 261 000000 262 000000 / VRS: I HAVE MOVED THE STARTUP CODE TO THE EMD OF THE SOURCE FILE, SO THAT THE ROM 263 000000 / CONTENT IS DESCRIBED SEQUENTIALLY (IN ROM ORDER). 264 000000 265 070200 FIELD 7 /MOST OF THE CODE EXECUTES IN FIELD 7 266 070200 267 070200 NOPUNCH /DON'T GENERATE BINARY 268 070000 *0 /START AT THE BEGINNING 269 070000 / VRS: THIS DOCUMENTS 0000-0100, BUT OFFSET 0000 OF THE ROM ACTUALLY GETS COPIED 270 070000 / TO 70100. 271 070000 RIMADR, /APT RIM-LOADER TEMPORARY 272 070000 INTADR, /CP-INTERRUPTS PC STORED HERE 273 070000 274 070000 / THE FOLLOWING ARE DEFINITIONS FOR MAIN MEMORY INTERRUPTS IN FIELD 0. 275 070000 276 070000 0000 INTADR, .-. /MAIN-MEMORY INTERRUPTS PC STORED HERE 277 070001 5402 INT1, JMP I INT2 /WHAT'S PUT HERE IN MAIN MEMORY FIELD 0 278 070002 0250 INT2, INTHND /POINTER TO MAIN MEMORY INTERRUPT HANDLER 279 070003 0000 TIMEOUT,.-. /TIME-OUT COUNTER FOR LOOPBACK TEST 280 070004 0000 CLKTICK,.-. /CLOCK TICK COUNTER FOR LOOPBACK TEST 281 070005 0000 CSTATUS,.-. /COUNT PATTERN PROGRESS STATUS 282 070006 0000 PATTERN,.-. /COUNT PATTERN TEMPORARY 283 070007 0000 TSTATUS,.-. /LOOPBACK CP TEST STATUS 284 070010 285 070010 *10 /GET TO AUTO-INDEX AREA 286 070010 287 070010 0000 XR0, .-. /AUTO-INDEX REGISTER 0 288 070011 0000 XR1, .-. /AUTO-INDEX REGISTER 1 289 070012 0000 XR2, .-. /AUTO-INDEX REGISTER 2 290 070013 0000 XR3, .-. /AUTO-INDEX REGISTER 3 291 070014 0000 XR4, .-. /AUTO-INDEX REGISTER 4 292 070015 0000 XR5, .-. /AUTO-INDEX REGISTER 5 293 070016 0000 XR6, .-. /AUTO-INDEX REGISTER 6 294 070017 0000 XR7, .-. /AUTO-INDEX REGISTER 7 295 070020 296 070020 *20 /GET PAST AUTO-INDEX AREA 297 070020 298 070020 0000 CTMP1, .-. /OUTPUT COUNTING TEMPORARY FOR LOOPBACK TEST 299 070021 0000 CTMP2, .-. /INPUT COUNTING TEMPORARY FOR LOOPBACK TEST 300 070022 0000 CNTLO, .-. /LOW-ORDER COUNTER FOR LOOPBACK TESTING 301 070023 0000 CNTHI, .-. /HIGH-ORDER COUNTER FOR LOOPBACK TESTING 302 070024 0000 TEMP1, .-. /TEMPORARY 303 070025 0000 TEMP2, .-. /TEMPORARY 304 070026 0000 TEMP3, .-. /TEMPORARY 305 070027 306 070027 0000 ZBLOCK 1 /EMPTY SPACE 307 070030 308 070030 / THESE SIX ARE PRINTED AS A GROUP. 309 070030 310 070030 0000 TM0, .-. /TEMPORARY 311 070031 0000 COMTM1, .-. /COMMUNICATIONS PORT TESTING TEMPORARY 312 070032 0000 MTM1, .-. /TEMPORARY 313 070033 0000 MTM2, .-. /TEMPORARY 314 070034 0000 SP1SAVE,.-. /FIRST STACK POINTER SAVED HERE 315 070035 0000 SP2SAVE,.-. /SECOND STACK POINTER SAVED HERE 316 070036 317 070036 0000 MTM5, .-. /TEMPORARY 318 070037 0000 MTM6, .-. /TEMPORARY 319 070040 0000 MTM7, .-. /TEMPORARY 320 070041 0000 TINC, .-. /TEMPORARY 321 070042 0000 T0, .-. /TEMPORARY 322 070043 0000 T1, .-. /TEMPORARY 323 070044 0000 T2, .-. /TESTING TEMPORARY 324 070045 0000 T3, .-. /TEMPORARY 325 070046 0000 T4, .-. /TEMPORARY 326 070047 0000 T5, .-. /TEMPORARY 327 070050 0000 T6, .-. /TEMPORARY 328 070051 0000 T7, .-. /TEMPORARY 329 070052 0000 T8, .-. /TEMPORARY 330 070053 0000 RXCMD, .-. /LATEST RX50 COMMAND 331 070054 0000 ESTATUS,.-. /CUMULATIVE ERROR STATUS 332 070055 0000 LCHAR, .-. /LATEST COMMAND CHARACTER IN SETUP ROUTINE 333 070056 0000 ROW, .-. /ROW POSITION FOR CHARACTER ROUTINES 334 070057 0000 COLUMN, .-. /COLUMN POSITION FOR CHARACTER ROUTINES 335 070060 0000 CCNT, .-. /DELIMITER CHARACTER SEARCH COUNT 336 070061 0000 PSTATUS,.-. /STATUS AT POWER-ON 337 070062 338 070062 ENPUNCH /RESTORE BINARY 339 070062 340 070062 / START OF ROM-BASED CODE. 341 070062 342 070062 / VRS: MY INTENT IS THAT THIS BE THE ONLY ORIGIN SETTING ACTUALLY IN THE BINARY. 343 070000 *0 /START AT THE BEGINNING OF THE ROM. 344 070000 345 070000 ROMADR= . /WHERE IT IS LOADED WHILE IN ROM 346 070000 347 070100* RELOC 100 /FOOL THE ASSEMBLER (WHERE IT REALLY GOES) 348 070100* 349 070100* CODEXC= . /WHERE IT RUNS IN FIELD 7 350 070100* /VRS: ROM OFFSET 0000 IDENTIFIES THE SOFTWARE VERSION 351 070100* 2310 2310 /THIS LOCATION IS PROBABLY A VERSION NUMBER 352 070101* 353 070101* /VRS: ONCE PAGE ZERO IS CORRECT, A BINARY COMPARE MAKES IT CLEAR WHAT STILL NEEDS 354 070101* /WORK. 355 070101* 0007 Z7, 7 /CONSTANT 0007 356 070102* 0010 Z10, 10 /CONSTANT 0010 357 070103* 0012 Z12, 12 /CONSTANT 0012 358 070104* BAUD17, 359 070104* 0017 Z17, 17 /CONSTANT 0017 360 070105* 0020 Z20, 20 /CONSTANT 0020 361 070106* 0072 Z72, 72 /CONSTANT 0072 362 070107* 0102 Z102, 102 /CONSTANT 0102 363 070110* 0200 Z200, 200 /CONSTANT 0200 364 070111* 0205 Z205, 205 /CONSTANT 0205 365 070112* 0237 Z237, 237 /CONSTANT 0237 366 070113* 0301 Z0301, 0301 /CONSTANT 0301 367 070114* 0377 Z377, 377 /CONSTANT 0377 368 070115* 0400 Z400, 400 /CONSTANT 0400 369 070116* 2525 Z2525, 2525 /CONSTANT 2525 370 070117* 3777 Z3777, 3777 /CONSTANT 3777 371 070120* 5776 JMPIM1, ROMSP&177+JMPIC /JMP I .-1 CONSTANT FOR RESTART ADDRESS 372 070121* 6201 ZCDF, CDF 00 /CONSTANT 6201 373 070122* 6400 PWRIBUF,WRIBUFFER /POINTER TO WRITE BUFFER 374 070123* 6500 PAPTROU,APTROUTINE /POINTER TO APT ROUTINE 375 070124* 376 070124* 6777 6777 /CONSTANT 6777 (UNUSED?) 377 070125* 378 070125* 7766 Z7766, 7766 /CONSTANT 7766 379 070126* 7760 Z7760, 7760 /CONSTANT 7760 380 070127* 7741 Z7741, 7741 /CONSTANT 7741 381 070130* 7400 Z7400, 7400 /CONSTANT 7400 382 070131* 7400 DTIMOUT,-DTIME /DISK WAIT TIMEOUT FACTOR 383 070132* 7775 Z7775, 7775 /CONSTANT 7775 384 070133* CPIADDR,/ROMSP /POINTER ADDRESS FOR CP-INTERRUPTS 385 070133* 7776 Z7776, 7776 /CONSTANT 7776 386 070134* 7777 PROMST, ROMST /ROM (RE)START ADDRESS FOR INTERRUPTS, ETC. 387 070135* ROMST=7777//ERROR IF NOT 388 070135* //VRS: GOT HERE THESE HAVE MOVED, AS HAVE WHAT THEY POINT TO. 389 070135* 4600 PTSTBUFF,4600//TSTBUFFER /POINTER TO TEST BUFFER 390 070136* 6177 LBLADR, LBLOAD-1 /LOOPBACK TEST CODE ADDRESS (-1) 391 070137* LBLOAD=6200//ERROR IF NOT 392 070137* 7631 LBMCNT, 7631//LBTEST-LBTEND /LENGTH OF LOOPBACK TEST CODE TO BE MOVED 393 070140* 5577 CPLADR, CPLOAD-1 /CP-INTERRUPT CODE ADDRESS (-1) 394 070141* CPLOAD=5600//ERROR IF NOT 395 070141* 6123 CPMCNT, 6123//CPLOAD-CPEND2 /LENGTH OF CP-INTERRUPT CODE TO BE MOVED 396 070142* 4565 4565//PSSTRIN,4565//SSTRING /POINTER TO SSTRING ROUTINE 397 070143* 6150 PCOMLOA,COMLOAD /=> COMMUNICATIONS CHIP REGISTER LOAD ROUTINE 398 070144* COMLOA=6150//ERROR IF NOT 399 070144* 6126 PCOMREA,COMREAD /=> COMMUNICATIONS CHIP REGISTER READ ROUTINE 400 070145* COMREA=6126//ERROR IF NOT 401 070145* 0520 PCLR23, CLR23 /POINTER TO FIELD 2, 3 CLEAR ROUTINE 402 070146* CLR23=0520//ERROR IF NOT 403 070146* 3600 PRXCOMD,RXCOMD /POINTER TO RXCOMD ROUTINE 404 070147* RXCOMD=3600//ERROR IF NOT 405 070147* 1000 PSSTRIN,SSTRING /POINTER TO SSTRING ROUTINE 406 070150* SSTRING=1000//ERROR IF NOT 407 070150* 408 070150* / THE FOLLOWING LOCATION IS UNREFERENCED; PERHAPS THERE IS A CONVENTION ABOUT 409 070150* / WHERE TO RESTART THE ROM PROGRAM? 410 070150* 4614 PRGDONE /POINTER TO PRGDONE ROUTINE (UNUSED?) 411 070151* 412 070151* 5711 PMEMCOM,5711//MEMCOMP /POINTER TO MEMORY COMPARE ROUTINE 413 070152* 2472 PKBDIN, KBDIN /POINTER TO KEYBOARD INPUT ROUTINE 414 070153* KBDIN=2472//ERROR IF NOT 415 070153* //PCALLSU,2472//CALLSUB /POINTER TO TEST (SUBROUTINE) LOCATION 416 070153* 2141 PRXWT, RXWAIT /POINTER TO RX WAIT ROUTINE 417 070154* RXWAIT=2141// 418 070154* 0274 PFREAD, FREAD /POINTER TO FLOPPY READ ROUTINE 419 070155* FREAD=0274//ERROR IF NOT 420 070155* 4242 4242// 421 070156* 3004 PCHRPRT,CHRPRT /POINTER TO SCREEN CHARACTER OUTPUT ROUTINE 422 070157* CHRPRT=3004 423 070157* 0452 PPPTABL,PPTABLE /POINTER TO PROGRAMMING TABLE. 424 070160* PPTABLE=0452// 425 070160* 0456 PROWLOA,ROWLOAD /POINTER TO ROWTABLE AND REGISTER LOAD ROUTINE 426 070161* ROWLOA=0456// 427 070161* 2753 PSLCHEC,SLCHECK /POINTER TO SLUSHWARE VALIDATION ROUTINE 428 070162* SLCHECK=2753//Error if not 429 070162* 3721 PRDTWAI,RDTWAIT /POINTER TO RDTWAIT ROUTINE 430 070163* RDTWAIT=3721// 431 070163* 0000 TRNCDF, .-. /SUBROUTINE TO CDF TO BUFFER FIELD 432 070164* 7402 HLT+.-. /WILL BE CDF XX INSTRUCTION TO BUFFER FIELD 433 070165* 5563 JMP I TRNCDF 434 070166* 0000 ZBLOCK 174-. /EMPTY SPACE 070167* 0000 070170* 0000 070171* 0000 070172* 0000 070173* 0000 435 070174* 436 070174* / ******** 437 070174* 438 070174* 6347 6347//Fix this line 439 070175* 2204 SUBR /POINTER TO SUBR 440 070176* SUBR=2204//ERROR IF NOT 441 070176* 0000 SUB176, .-. /ENTRY HERE 442 070177* 5575 JMP I .-2/[SUBR] /GO THERE 443 070200* 444 070200* //VRS: SOMETHING THAT LOOKS LIKE RXOK IS ACTUALLY NEXT. 445 070200* PAGE 446 070200* 7315 RXOK, NL0010 CLL /SET CRT VALUE 447 070201* 6126 VIDCON /LOAD ECHRMOD 448 070202* 7200 CLA /CLEAN UP 449 070203* 4654 JMS I PENDUP/(ENDUP) /FINISH UP SCREEN DISPLAY (POSSIBLY ERRORS) 450 070204* // JMS I PRDSETUP/(RDSETUP) /GET RD STARTUP CODE READ IN (IF PRESENT) 451 070204* 4562 JMS I 162// 452 070205* 4646 JMS I 0246//PRXRDY/(RXRDY) /WAIT UNTIL DRIVE ZERO IS READY 453 070206* 7410 SKP// 454 070207* 5214 JMP RTOK// 455 070210* 1062 TAD 62//VRS: 62 and 63 are new 456 070211* 7650 SNA CLA// 457 070212* 5205 JMP .-5// 458 070213* 7240 NL7777// 459 070214* 3063 RTOK, DCA 63// 460 070215* 4545 JMS I PCLR23/[CLR23] /CLEAR FIELDS 2, 3 (AND BITS IN 13705, 13707) 461 070216* //RTRK1, NL7777 /SETUP THE 462 070216* // DCA XR0 /STORAGE POINTER 463 070216* // CDF 00 /STORING IN FIELD 0 464 070216* // TAD Z102/[102] /GET EMPTY SILO (8-BIT) COMMAND 465 070216* // DCA RXCMD /STASH IT 466 070216* / CLA /CALL WITH AC CLEAR (1-1) 467 070216* // JMS FREAD /CALL FLOPPY READ ROUTINE 468 070216* // -1-1 /ONE SECTOR 469 070216* // 1 /ON TRACK 1 470 070216* // JMP RTRK1 /ERROR, TRY AGAIN 471 070216* 4360 JMS 0360//I PVALID8/(VALID8) /VALIDATE THE PREFERENCE SETTINGS 472 070217* 5247 JMP 0247//FLPBAD /FLOPPY IS BAD, GO COMPLAIN 473 070220* 4255 SLSHAGN,JMS RXLOAD /LOAD IN VARIOUS SLUSHWARE ITEMS 474 070221* 5247 JMP SLSHBAD /COULDN'T DO IT 475 070222* SLSHBAD=0247// 476 070222* 4545 JMS I PCLR23/[CLR23] /CLEAR FIELDS 2, 3 (AND BITS IN 13705, 13707) 477 070223* 7200 CLA /CLEAN UP 478 070224* 1062 TAD 62// 479 070225* 0063 AND 63// 480 070226* 6211 CDF 10// 481 070227* 3776 DCA I 0376// 482 070230* 1062 TAD 62// 483 070231* 3641 DCA I 0241// 484 070232* 1062 TAD 62// 485 070233* 6271 CDF 70// 486 070234* 7650 SNA CLA// 487 070235* 5242 JMP 0242// 488 070236* 1105 TAD 0105// 489 070237* 4555 JMS I 0155// 490 070240* 4600 4600// 491 070241* 0001 0001// 492 070242* 6203 CIF CDF 00 /GOING TO FIELD 0 493 070243* 3776 DCA I 0376// 494 070244* 5510 JMP I Z200/[200] /GO START IT UP 495 070245* 496 070245* / COMES HERE TO DISPLAY A BLINKING BIG FLOPPY PATTERN IF THE CURRENT DISKETTE 497 070245* / HAS AN INVALID BOOT BLOCK IN TRACK 1, SECTOR 1. 498 070245* 499 070245* //FLPBAD, JMS I PFBLINK/(FBLINK) /GO DISPLAY THE PATTERN ONCE 500 070245* // JMP RTRK1 /TRY AGAIN 501 070245* 502 070245* / COMES HERE TO DISPLAY THE BIG FLOPPY PATTERN IF THE SLUSHWARE STUFF CAN'T BE 503 070245* / COMPLETELY READ IN. 504 070245* 505 070245* //SLSHBAD,JMS I PFBLINK/(FBLINK) /GO DISPLAY THE PATTERN ONCE 506 070245* // JMP SLSHAGN /TRY AGAIN 507 070245* 508 070245* //zblock 0246-.//VRS: Align code that follows 509 070245* 510 070245* FBLINK=561//Error if not 511 070245* PFBLINK=0245//Error if not 512 070245* 0561 PFBLINK,FBLINK /POINTER TO FBLINK ROUTINE 513 070246* RXRDY=2501//Remove this line 514 070246* PRXRDY=0246 515 070246* 2501 PRXRDY, RXRDY /POINTER TO RX50 READY CHECK ROUTINE 516 070247* //PRDSETU,RDSETUP /POINTER TO RD51 SETUP ROUTINE 517 070247* 518 070247* 4645 JMS I 0245// 519 070250* 1063 TAD 0063// 520 070251* 7040 CMA// 521 070252* 3063 DCA 0063// 522 070253* 5216 JMP 0216// 523 070254* 524 070254* //PRXWAIT,RXWAIT /POINTER TO RX50 WAIT ROUTINE 525 070254* ENDUP=1444//Remove this line 526 070254* 1444 PENDUP, ENDUP /POINTER TO ENDUP ROUTINE 527 070255* 528 070255* RXLOAD=0255//VRS: Error if not! 529 070255* 0000 RXLOAD, .-. /MULTIPLE RX50 LOADING ROUTINE 530 070256* 7240 NL7777 /SETUP THE 531 070257* 3010 DCA XR0 /STORAGE POINTER 532 070260* 1107 TAD Z102/[102] /SETUP THE 533 070261* 3053 DCA RXCMD /EMPTY BUFFER COMMAND (8-BIT) 534 070262* 4671 JMS I PT0S3RD/(T0S3RD) /READ AND VALIDATE TRACK 0, SECTOR 3 535 070263* 5655 JMP I RXLOAD /COULDN'T DO IT, TAKE FAILURE RETURN 536 070264* 4672 JMS I PDOCG/(DOCG) /READ AND LOAD CHARACTER GENERATOR RAM DATA 537 070265* // NL002A /SETUP 12-BIT EMPTY SILO COMMAND VALUE 538 070265* // DCA RXCMD /STASH THE COMMAND 539 070265* // NL7777 /SETUP THE 540 070265* // DCA XR0 /DATA POINTER 541 070265* // CDF 00 /SETUP THE DATA FIELD 542 070265* / CLA /CALL WITH AC CLEAR (1-1) 543 070265* // JMS FREAD /CALL FLOPPY READ ROUTINE 544 070265* // -12-1 /READ 10 SECTORS (1-10) 545 070265* // 116 /TRACK 78 546 070265* // JMP I RXLOAD /COULDN'T DO IT, TAKE FAILURE RETURN 547 070265* // CDF 00 /SETUP THE DATA FIELD 548 070265* / CLA /CALL WITH AC CLEAR (1-1) 549 070265* // JMS FREAD /CALL FLOPPY READ ROUTINE 550 070265* // -6-1 /READ 6 SECTORS (1-6) 551 070265* // 117 /TRACK 79 552 070265* // JMP I RXLOAD /COULDN'T DO IT, TAKE FAILURE RETURN 553 070265* // CDF 10 /SETUP THE DATA FIELD 554 070265* // NL0006 /SETUP FOR SECTOR 7 FIRST 555 070265* // JMS FREAD /CALL FLOPPY READ ROUTINE 556 070265* // -12-1 /READ 4 SECTORS (7-10) 557 070265* // 117 /TRACK 79 558 070265* // JMP I RXLOAD /COULDN'T DO IT, TAKE FAILURE RETURN 559 070265* // CDF 00 /BACK TO PRIMARY CODE FIELD 560 070265* // DCA XR0 /CLEAR THE POINTER 561 070265* 4673 JMS I 0273//PSLCHECK/(SLCHECK) /GO VALIDATE THE DATA 562 070266* 5655 JMP I RXLOAD /BAD DATA, TAKE FAILURE RETURN 563 070267* 2255 ISZ RXLOAD /GOOD DATA, BUMP RETURN ADDRESS 564 070270* 5655 JMP I RXLOAD /TAKE SKIP RETURN TO CALLER 565 070271* 566 070271* T0S3RD=1630//Remove this line 567 070271* 1630 PT0S3RD,T0S3RD /POINTER TO TRACK 0, SECTOR 3 READ ROUTINE 568 070272* DOCG=1665//Remove this line 569 070272* 1665 PDOCG, DOCG /POINTER TO DOCG ROUTINE 570 070273* 4404 4404// 571 070274* 572 070274* FREAD=0274 //VRS: Generate an error if not! 573 070274* / RX50 READ ROUTINE. CALL WITH AC CONTAINING RELATIVE OFFSET ON THE TRACK OF 574 070274* / FIRST SECTOR TO TRANSFER. THIS IS ONE LESS THAN THE ACTUAL SECTOR NUMBER. 575 070274* / THE FIRST IN-LINE ARGUMENT IS THE LIMIT ON THE SECTOR COUNT, I.E., THE TWO'S 576 070274* / COMPLEMENT OF THE SECTOR VALUE ONE HIGHER THAN DESIRED AS THE LAST SECTOR 577 070274* / TRANSFERRED. THE DATA IS TRANSFERRED INTO THE SAME FIELD AS THE CURRENT DATA 578 070274* / FIELD. XR0 SHOULD BE SET TO THE DATA STORAGE ADDRESS -1. RXCMD SHOULD BE SET 579 070274* / TO A SILO EMPTY COMMAND, EITHER 8-BIT OR 12-BIT AS REQUIRED. THE COMMAND WILL 580 070274* / BE ISSUED CORRECTLY EITHER WAY. CONTROL IS RETURNED TO JUST PAST THE SECOND 581 070274* / ARGUMENT IF THERE IS AN ERROR. AN EXTRA SKIP RETURN IS PERFORMED IF THE READ 582 070274* / WAS OK. 583 070274* 584 070274* 0000 FREAD, .-. /FLOPPY READ ROUTINE 585 070275* // DCA TINC /SAVE PASSED VALUE (SECTOR OFFSET ON TRACK) 586 070275* 6214 RDF /GET CALLING FIELD 587 070276* 1121 TAD ZCDF/[CDF] /FORM CDF CALLING FIELD 588 070277* 3164 DCA TRNCDF+1// /STORE IN-LINE 589 070300* 6271 CDF 70 /BACK TO OUR FIELD 590 070301* 1674 TAD I FREAD /GET FIRST ARGUMENT (COUNT LIMIT) 591 070302* 3311 DCA FRARG//T0 /STASH IT 592 070303* 2274 ISZ FREAD /BUMP TO NEXT 593 070304* 1674 TAD I FREAD /GET SECOND ARGUMENT (TRACK) 594 070305* 3042 DCA T0//T1 /STASH IT 595 070306* 2274 ISZ FREAD /BUMP PAST ARGUMENT 596 070307* 6271 CDF 70 /BACK TO OUR FIELD 597 070310* // ISZ TINC /BUMP SECTOR OFFSET TO LATEST SECTOR 598 070310* // TAD TINC /GET THE LATEST OFFSET 599 070310* // TAD T0 /COMPARE TO COUNT LIMIT 600 070310* // SPA CLA /SKIP IF FINISHED 601 070310* // JMP FNEXT /ELSE KEEP GOING 602 070310* // ISZ FREAD /BUMP RETURN ADDRESS 603 070310* // CDF 70 /BACK TO OUR FIELD 604 070310* 4757 JMS I 0357//4757 605 070311* 0000 FRARG, .-.// 606 070312* 5674 JMP I FREAD /TAKE ERROR//SUCCESSFUL RETURN 607 070313* 5351 5351// 608 070314* 609 070314* 7327 FNEXT, NL0006 /GET READ FUNCTION VALUE 610 070315* 4546 JMS I PRXCOMD/[RXCOMD] /CALL READ COMMAND ROUTINE 611 070316* 7410 SKP /SKIP IF COMMAND FINISHED 612 070317* 5674 JMP I FREAD /ELSE TAKE FAILURE RETURN 613 070320* 6754 SER /ANY ERRORS? 614 070321* 5323 JMP FRDOK /JUMP IF NOT 615 070322* FERR, //JMS I PSSTRING/[SSTRING] /STORE PATTERN FOR BIG FLOPPY 616 070322* 5674 JMP I FREAD /TAKE FAILURE RETURN 617 070323* 618 070323* 1053 FRDOK, TAD RXCMD /GET SILO EMPTY COMMAND 619 070324* 6751 LCD /LOAD THE COMMAND 620 070325* 7303 NL0100 CLL /SET THE 8-BIT MASK 621 070326* 0053 AND RXCMD /ISOLATE THE BIT 622 070327* 7650 SNA CLA /SKIP IF SET 623 070330* 5336 JMP COMFINI+1//TRNCDF /JUMP IF NOT 624 070331* 4553 JMS I PRXWT//AIT/(RXWAIT) /CALL FLAG WAIT ROUTINE 625 070332* 5335 JMP COMFINISH /TRANSFER FLAG UP AS EXPECTED 626 070333* 5322 JMP FERR /DONE FLAG CAME UP, ERROR 627 070334* 5322 JMP FERR /TIME-OUT, ERROR 628 070335* 629 070335* 6752 COMFINI,XDR /FINISH THE COMMAND 630 070336* 4163 JMS TRNCDF// /CDF TO BUFFER FIELD 631 070337* //TRNCDF, HLT+.-. /WILL BE CDF XX INSTRUCTION TO BUFFER FIELD 632 070337* 7200 CLA /CLEAN UP 633 070340* 6753 FRDLUP, STR /TRANSFER FLAG UP? 634 070341* 5344 JMP TRYDONE /NO, TRY DONE FLAG 635 070342* 6752 XDR /YES, GET THE LATEST 636 070343* 3410 DCA I XR0 /STORE IT 637 070344* 6755 TRYDONE,SDN /DONE FLAG UP? 638 070345* 5340 JMP FRDLUP /NO, TRY TRANSFER 639 070346* 6754 SER /YES, ANY ERRORS? 640 070347* 7410 SKP//JMP FNXTSCT /NO, GO DO NEXT SECTOR 641 070350* 5322 JMP FERR /YES, GO COMPLAIN 642 070351* 6271 FNXTSCT,CDF 70 /BACK TO OUR FIELD 643 070352* 2311 ISZ 0311// 644 070353* 2042 ISZ T0/TINC /BUMP SECTOR OFFSET TO LATEST SECTOR 645 070354* 5307 JMP 0307//5307 646 070355* // TAD TINC /GET THE LATEST OFFSET 647 070355* // TAD T0 /COMPARE TO COUNT LIMIT 648 070355* // SPA CLA /SKIP IF FINISHED 649 070355* // JMP FNEXT /ELSE KEEP GOING 650 070355* // ISZ FREAD /BUMP RETURN ADDRESS 651 070355* // CDF 70// /BACK TO OUR FIELD 652 070355* //FRARG, .-.// 653 070355* 2274 ISZ FREAD// 654 070356* 5674 JMP I FREAD /TAKE ERROR//SUCCESSFUL RETURN 655 070357* 656 070357* 4062 4062// 657 070360* //VALID8=.//Remove this line 658 070360* //PVALID8,VALID8 /POINTER TO VALIDATION ROUTINE 659 070360* 0000 PVALID8,.-. /CALL VALIDATION ROUTINE 660 070361* 1135 TAD 0135// 661 070362* 3010 DCA XR0// 662 070363* 6271 CDF 70// 663 070364* 1107 TAD 0107// 664 070365* 3053 DCA 0053// 665 070366* 4554 JMS I 0154// 666 070367* 4000 4000// 667 070370* 7777 7777// 668 070371* 5760 JMP I 0360// 669 070372* 4777 JMS I 0377// 670 070373* 5760 JMP I 0360// 671 070374* 2360 ISZ 0360// 672 070375* 5760 JMP I 0360// 673 070376* 0000 .-.// 674 070377* 0600 0600// 675 070400* 676 070400* PAGE 677 070400* //VRS: What's this at 0400? 678 070400* 7240 NL7777// 679 070401* 3063 DCA 0063// 680 070402* 6211 CDF 10// 681 070403* 1643 TAD I 0443// 682 070404* 6271 CDF 70// 683 070405* 3062 DCA 0062// 684 070406* 4645 JMS I 0445// 685 070407* 5241 JMP 0441// 686 070410* 1062 TAD 0062// 687 070411* 0063 AND 0063// 688 070412* 7650 SNA CLA// 689 070413* 5646 5646// 690 070414* 3053 3053// 691 070415* 1135 1135// 692 070416* 3010 3010// 693 070417* 4554 4554// 694 070420* 4000 4000// 695 070421* 7777 7777// 696 070422* 5241 5241// 697 070423* 1135 1135// 698 070424* 3010 3010// 699 070425* 1247 1247// 700 070426* 3011 3011// 701 070427* 4650 4650// 702 070430* 4542 4542// 703 070431* 6007 6007// 704 070432* 4542 4542// 705 070433* 6116 6116// 706 070434* 7300 7300// 707 070435* 6050 6050// 708 070436* 6202 6202// 709 070437* 6004 6004// 710 070440* 5651 5651// 711 070441* 4256 4256// 712 070442* 5644 5644// 713 070443* 0001 0001// 714 070444* 0205 0205// 715 070445* 0360 0360// 716 070446* 4160 4160// 717 070447* 0177 0177// 718 070450* 3356 3356// 719 070451* 0210 0210// 720 070452* 5735 5735// 721 070453* 0746 PROWTAB,ROWTABLE-1 /POINTER TO HIGH-ORDER ROW TABLE 722 070454* ROWTABLE=0747// 723 070454* 0663 PREGLIS,REGLIST-1 /POINTER TO REGISTER AND CONTENTS LIST 724 070455* REGLIST=0664// 725 070455* ROWADR=3660// 726 070455* 3657 PROWADR,ROWADR-1 /POINTER TO ROWTABLE ADDRESS 727 070456* 728 070456* 0000 ROWLOAD,.-. /ROUTINE TO LOAD ROWTABLE AND VIDEO REGISTERS 729 070457* 7300 CLA CLL /CLEAN UP 730 070460* 6126 VIDCON /CLEAR SCREEN CONTROL REGISTER 731 070461* 6271 CDF 70 /ENSURE OUR FIELD 732 070462* 1255 TAD PROWADR/(ROWADR-1) /GET ROWTABLE TABLE POINTER 733 070463* 3010 DCA XR0 /STASH THE POINTER 734 070464* 1253 TAD PROWTABLE/(ROWTABLE-1) /GET HIGH-ORDER ROW ADDRESS TABLE VALUE 735 070465* 3011 DCA XR1 /STASH THE POINTER 736 070466* 1411 ROWLUP, TAD I XR1 /GET A LIST ELEMENT 737 070467* 7510 SPA /SKIP IF NOT AT END OF LIST 738 070470* 5301 JMP FHERE /JUMP IF AT END OF LIST 739 070471* 7421 MQL /STASH IT FOR NOW 740 070472* 6211 CDF 10 /GOTO TABLE FIELD 741 070473* 1111 TAD Z205/[205] /GET LOW-ORDER BITS VALUE 742 070474* 3410 DCA I XR0 /STASH IN TABLE 743 070475* 7701 CLA MQA /GET HIGH-ORDER AND ATTRIBUTES 744 070476* 3410 DCA I XR0 /STASH IN TABLE 745 070477* 6271 CDF 70 /BACK TO OUR FIELD 746 070500* 5266 JMP ROWLUP /KEEP GOING 747 070501* 748 070501* 7300 FHERE, CLA CLL /CLEAN UP 749 070502* 1254 TAD PREGLIST/(REGLIST-1) /POINT TO 750 070503* 3010 DCA XR0 /REGISTER LIST 751 070504* 6271 REGLUP, CDF 70 /BACK TO OUR FIELD 752 070505* 1410 TAD I XR0 /GET A LIST ITEM 753 070506* 7510 SPA /SKIP IF NOT END OF LIST 754 070507* 5316 JMP REGDONE /JUMP IF DONE 755 070510* 6122 LSCREG /LOAD REGISTER SELECT 756 070511* 7200 CLA /CLEAN UP 757 070512* 1410 TAD I XR0 /GET THE VALUE 758 070513* 6124 VLOAD /LOAD THE REGISTER WITH DESIRED VALUE 759 070514* 7300 CLA CLL /CLEAN UP 760 070515* 5304 JMP REGLUP /KEEP GOING 761 070516* 762 070516* 7300 REGDONE,CLA CLL /CLEAN UP 763 070517* 5656 JMP I ROWLOAD /RETURN 764 070520* 765 070520* / PROGRAMMING NOTE: BY PLACING THIS POINTER HERE, AN EXTRANEOUS PAGE ZERO 766 070520* / REFERENCE TO THE POINTER IS REQUIRED, INSTEAD OF MERELY A POINTER TO THE TABLE 767 070520* / ON PAGE ZERO ITSELF. 768 070520* / ROUTINE TO CLEAR CP FIELD 2 AND 3; ALSO CLEARS HIGH-ORDER HALF OF CP 13705 769 070520* / AND 13707 TO MAKE THOSE LINES HAVE NORMAL ATTRIBUTES. 770 070520* 771 070520* 0000 CLR23, .-. /CLEAR FIELD 2, FIELD 3 ROUTINE 772 070521* 7200 CLA /CLEAN UP 773 070522* 3044 DCA T2 /CLEAR EVEN/ODD FIELD FLAG 774 070523* 7240 ZERNXT, NL7777 /SETUP FOR STORING 775 070524* 3010 DCA XR0 /INTO LOCATION 0000 OF THE LATEST FIELD 776 070525* 4345 JMS CDFSETUP /SETUP PROPER FIELD 777 070526* 1126 TAD Z7760/[-20] /SETUP THE 778 070527* 3045 DCA T3 /BUFFER COUNT 779 070530* 1130 BUFLUP, TAD Z7400/[-400] /SETUP FOR TWO PAGES WORTH 780 070531* 3046 DCA T4 /IN EACH BUFFER 781 070532* 3410 ZERLUP, DCA I XR0 /CLEAR A WORD 782 070533* 2046 ISZ T4 /DONE YET? 783 070534* 5332 JMP ZERLUP /NO, GO BACK 784 070535* 2045 ISZ T3 /DONE ENOUGH BUFFERS? 785 070536* 5330 JMP BUFLUP /NO, GO BACK 786 070537* 1044 TAD T2 /GET FLAG 787 070540* 7640 SZA CLA /SKIP IF ZERO 788 070541* 5355 JMP CLRFINISH /ELSE FINISH THERE 789 070542* 7240 NL7777 /SET THE FLAG 790 070543* 3044 DCA T2 /FOR NEXT FIELD 791 070544* 5323 JMP ZERNXT /GO DO IT AGAIN 792 070545* 793 070545* 0000 CDFSETU,.-. /CDF SETTING ROUTINE 794 070546* 1044 TAD T2 /GET THE FLAG 795 070547* 7640 SZA CLA /SKIP IF EVEN FIELD 796 070550* 5353 JMP SETODD /JUMP IF ODD 797 070551* 6221 CDF 20 /SETUP FOR FIELD 2 798 070552* 5745 JMP I CDFSETUP /RETURN 799 070553* 800 070553* 6231 SETODD, CDF 30 /SETUP FOR FIELD 3 801 070554* 5745 JMP I CDFSETUP /RETURN 802 070555* 803 070555* 4757 CLRFINI,JMS I PCLR2/(CLR2) /CLEAR ATTRIBUTE BITS OF 13705 AND 13707 804 070556* 5720 JMP I CLR23 /RETURN 805 070557* 806 070557* 1616 PCLR2, CLR2 /POINTER TO CLR2 ROUTINE 807 070560* CLR2=1616// 808 070560* 2165 PTIMOUT,TIMOUT /POINTER TO TIME-OUT ROUTINE 809 070561* TIMOUT=2165// 810 070561* 811 070561* 0000 FBLINK, .-. /BIG FLOPPY DISPLAY ROUTINE 812 070562* 7315 NL0010 CLL /SET EXTENDED CHARACTER MODE 813 070563* 6126 VIDCON /LOAD NEW CONTROL VALUE 814 070564* 7200 CLA /CLEAN UP 815 070565* 1375 TAD BL40/(" &177) /GET SPACE CODE 816 070566* 4547 JMS I PSSTRING/[SSTRING] /CLEAR ALL ITEMS OF 817 070567* BIGFLPY=1047//Remove this line 818 070567* 1047 BIGFLPY /THE BIG FLOPPY PATTERN 819 070570* 4760 JMS I PTIMOUT/(TIMOUT) /GO WAIT FOR AWHILE 820 070571* 4547 JMS I PSSTRING/[SSTRING] /GO DISPLAY ALL ITEMS OF 821 070572* 1047 BIGFLPY /THE BIG FLOPPY PATTERN 822 070573* 4760 JMS I PTIMOUT/(TIMOUT) /GO WAIT FOR AWHILE 823 070574* 5761 JMP I FBLINK /RETURN 824 070575* 825 070575* 0040 BL40, " &177 /CONSTANT 0040 826 070576* 827 070576* 0000 ZBLOCK 2// 070577* 0000 828 070600* 829 070600* PAGE 830 070600* 831 070600* / ROUTINE TO VALIDATE THE CONTENTS OF TRACK ONE, SECTOR ONE AS A BOOTABLE 832 070600* / FLOPPY. THE FIRST FEW BYTES OF THIS SECTOR HAVE TO BE A VALID PREFERENCE 833 070600* / SETTING BLOCK IN ORDER TO ALLOW FURTHER BOOTING. NON-SKIP RETURN IS TAKEN IF 834 070600* / THE BYTES ARE BAD, SKIP RETURN IF THEY ARE GOOD. 835 070600* 836 070600* 0000 VALID8, .-. /TRACK ONE VALIDATION ROUTINE 837 070601* 6271 CDF 70 /RESET TO OUR FIELD (WHY?) 838 070602* 1135 TAD PTSTBUF// 839 070603* // NL7777 /SETUP POINTER TO 0000 840 070603* 3010 DCA XR0 /STASH THE POINTER 841 070604* // CDF 00 /GOTO THE DATA FIELD 842 070604* 1410 TAD I XR0 /GET THE FIRST BYTE 843 070605* 1410 TAD I XR0 /ADD TO THE SECOND BYTE 844 070606* // CDF 70 /BACK TO OUR FIELD 845 070606* 846 070606* / THE SUM SHOULD BE ZERO MEANING THE TWO WORDS ARE THE TWO'S COMPLEMENT OF EACH 847 070606* / OTHER (OR ARE BOTH ZERO). 848 070606* 849 070606* 7640 SZA CLA /SKIP IF OK 850 070607* 5600 JMP I VALID8 /TAKE BAD RETURN IF NOT 851 070610* // CDF 00 /GOTO THE DATA FIELD 852 070610* 853 070610* / THE NEXT BYTE IS TREATED AS A POINTER FOR LATER. 854 070610* 855 070610* 1410 TAD I XR0 /GET THE NEXT BYTE 856 070611* 7104 CLL RAL /*2 857 070612* 1010 TAD XR0 /ADD 2 858 070613* 3011 DCA XR1 /STASH THE POINTER FOR LATER 859 070614* 860 070614* / THE NEXT BYTE HAS TO BE 001. 861 070614* 862 070614* 7240 NL7777 /GET -1 863 070615* 1410 TAD I XR0 /ADD ON NEXT BYTE 864 070616* // CDF 70 /BACK TO OUR FIELD 865 070616* 7640 SZA CLA /SKIP IF IT MATCHES 866 070617* 5600 JMP I VALID8 /ELSE TAKE BAD RETURN 867 070620* 868 070620* / THE REST OF THE TESTED BYTES ARE POINTED TO THE THIRD BYTE. THE FOUR BYTES 869 070620* / SHOULD SUM TO 377. THE POINTER WAS INCREMENTED BY TWO INITIALLY, SO WE MAY 870 070620* / HAVE TO SUBTRACT TWO TO LOCATE THE PROPER FOUR BYTE SEQUENCE. 871 070620* 872 070620* 3012 VALAGN, DCA XR2 /SET TO 0000 (OR 7776) 873 070621* 7240 NL7777 /BACKUP 874 070622* 1011 TAD XR1 /ADD ON POINTER 875 070623* 1012 TAD XR2 /ADD 0000 OR 7776 876 070624* 3010 DCA XR0 /STASH THE POINTER 877 070625* // CDF 00 /GOTO THE DATA FIELD 878 070625* 1410 TAD I XR0 /\ 879 070626* 1410 TAD I XR0 / \GET THE NEXT 880 070627* 1410 TAD I XR0 / /FOUR BYTES 881 070630* 1410 TAD I XR0 // 882 070631* // CDF 70 /BACK TO OUR FIELD 883 070631* 7001 IAC /ADD ONE 884 070632* 0114 AND Z377/[377] /JUST LOW-ORDER BITS 885 070633* 7640 SZA CLA /SKIP IF ALL TOGETHER IT'S ZERO 886 070634* 5247 JMP VALALT /JUMP IF NOT 887 070635* 888 070635* / HAVING LOCATED THE CORRECT FOUR BYTE SEQUENCE, CONFIRM THAT THE FIRST TWO HAVE 889 070635* / BIT[8] SET. 890 070635* 891 070635* 7240 NL7777 /BACKUP 892 070636* 1011 TAD XR1 /ADD ON POINTER 893 070637* 1012 TAD XR2 /ADD ON 0000 OR 7776 894 070640* 3010 DCA XR0 /STASH THE POINTER 895 070641* // CDF 00 /GOTO THE DATA FIELD 896 070641* 7315 NL0010 CLL /SET THE BIT MASK 897 070642* 0410 AND I XR0 /GET THE FIRST ONE'S BIT 898 070643* 0410 AND I XR0 /AND THE SECOND ONE'S BIT 899 070644* // CDF 70 /BACK TO OUR FIELD 900 070644* 7640 SZA CLA /SKIP IF OFF 901 070645* 2200 ISZ VALID8 /BUMP TO GOOD RETURN 902 070646* 5600 JMP I VALID8 /RETURN EITHER WAY 903 070647* 904 070647* 1012 VALALT, TAD XR2 /GET THE OFFSET 905 070650* 7640 SZA CLA /SKIP IF ZERO 906 070651* 5600 JMP I VALID8 /RETURN IF 7776 WAS ALSO UNSUCCESSFUL 907 070652* 7344 NL7776 /SET -2 VALUE 908 070653* 5220 JMP VALAGN /TRY IT AGAIN 909 070654* 910 070654* //VRS: Routine skips if the next word from field 1 is zero 911 070654* 0000 .-.// 912 070655* 6211 CDF 10// 913 070656* 1663 TAD I 0663// 914 070657* 6271 CDF 70// 915 070660* 7640 SZA CLA// 916 070661* 2254 ISZ 0654 // 917 070662* 5654 JMP I 0654// 918 070663* 0000 0000//This is 0663 (always zero?) 919 070664* 920 070664* / THIS IS THE LIST OF VALUES USED WITH LSCREG AND VLOAD IN PAIRS. 921 070664* 922 070664* 0026 REGLIST,26 /REGISTER 16 923 070665* 0000 000 /DUMMY VALUE (DO A RESET) 924 070666* 0000 00 /REGISTER 0 925 070667* 0143 144-1 /100 CHARACTERS PER HORIZONTAL PERIOD 926 070670* 0001 01 /REGISTER 1 927 070671* 0117 120-1 /80 CHARACTERS PER DATA ROW 928 070672* 0002 02 /REGISTER 2 929 070673* 0016 016 /14 IS HORIZONTAL DELAY 930 070674* 0003 03 /REGISTER 3 931 070675* 0007 007 /7 IS HORIZONTAL SYNC WIDTH 932 070676* 0004 04 /REGISTER 4 933 070677* 0003 003 /3 IS VERTICAL SYNC WIDTH 934 070700* 0005 05 /REGISTER 5 935 070701* 0025 025 /21 IS VERTICAL DELAY 936 070702* 0006 06 /REGISTER 6 937 070703* 0022 022 /PINS 00, CURSOR SKEW 2, BLANK SKEW 2 938 070704* 0007 07 /REGISTER 7 939 070705* 0027 30-1 /24 VISIBLE DATA ROWS PER FRAME 940 070706* 0010 10 /REGISTER 8 941 070707* 0051 051 /SCAN LINES/FRAME 1, SCAN LINES/DATA ROW 9 942 070710* 0011 11 /REGISTER 9 943 070711* 0011 011 /9 SCAN LINES PER FRAME 944 070712* 0012 12 /REGISTER A 945 070713* 0160 160 /DMA BURST DELAY 7, DMA BURST COUNT 0 946 070714* 0013 13 /REGISTER B 947 070715* 0010 010 /OPERATION MODE 4 **** 948 070716* 0014 0014 /REGISTER C 949 070717* 0260 ROWADR&377 /LOW-ORDER 8-BITS OF 13660 950 070720* 0015 0015 /REGISTER D 951 070721* 0227 ROWADR%400+0220 /CONTIGUOUS ROW TABLE AT 13660 952 070722* 0016 16 /REGISTER E 953 070723* 0000 000 /LOW-ORDER AUXILIARY ADDRESS REGISTER 954 070724* 0017 17 /REGISTER F 955 070725* 0000 000 /HIGH-ORDER AUXILIARY ADDRESS REGISTER 956 070726* 0020 20 /REGISTER 10 957 070727* 0077 077 /SEQUENTIAL BREAK REGISTER DISABLE VALUE 958 070730* 0021 21 /REGISTER 11 959 070731* 0000 000 /PAGE BLANK, SMOOTH SCROLL CAN START AT 000 960 070732* 0022 22 /REGISTER 12 961 070733* 0030 030 /DATA ROW END PAST LINE 23 962 070734* 0027 27 /REGISTER 17 963 070735* 0000 000 /NO SMOOTH SCROLL OFFSET 964 070736* 0030 30 /REGISTER 18 965 070737* 0000 000 /CURSOR APPEARS VERTICAL AT 000 966 070740* 0031 31 /REGISTER 19 967 070741* 0000 000 /CURSOR APPEARS HORIZONTALLY AT 000 968 070742* 0032 32 /REGISTER 1A 969 070743* 0100 100 /ENABLE VERTICAL RETRACE INTERRUPTS 970 070744* 0025 25 /REGISTER 15 971 070745* 0000 000 /ISSUE START COMMAND 972 070746* 4000 4000 /THIS ENDS THE LIST 973 070747* 974 070747* / THIS TABLE IS USED TO LOAD THE HIGH-ORDER BYTES OF THE CONTIGUOUS ROW ADDRESS 975 070747* / TABLE. THE FORMAT IS TWO ATTRIBUTE BITS AND SIX ADDRESS BITS. THE LOW-ORDER 976 070747* / ADDRESS BYTE IS ALWAYS 205. THE ATTRIBUTE BITS ARE: 00=NORMAL DATA ROW, 977 070747* / 01=SINGLE HEIGHT, DOUBLE WIDTH; 10=TOP OF DOUBLE HEIGHT, DOUBLE WIDTH; 978 070747* / 11=BOTTOM OF DOUBLE HEIGHT, DOUBLE WIDTH. 979 070747* 980 070747* 0141 ROWTABL,0141 /LINE 00 DATA STARTS AT 20605 (DOUBLE WIDTH) 981 070750* 0042 0042 /LINE 01 DATA STARTS AT 21205 982 070751* 0043 0043 /LINE 02 DATA STARTS AT 21605 983 070752* 0044 0044 /LINE 03 DATA STARTS AT 22205 984 070753* 0045 0045 /LINE 04 DATA STARTS AT 22605 985 070754* 0046 0046 /LINE 05 DATA STARTS AT 23205 986 070755* 0047 0047 /LINE 06 DATA STARTS AT 23605 987 070756* 0050 0050 /LINE 07 DATA STARTS AT 24205 988 070757* 0051 0051 /LINE 08 DATA STARTS AT 24605 989 070760* 0052 0052 /LINE 09 DATA STARTS AT 25205 990 070761* 0053 0053 /LINE 10 DATA STARTS AT 25605 991 070762* 0054 0054 /LINE 11 DATA STARTS AT 26205 992 070763* 0055 0055 /LINE 12 DATA STARTS AT 26605 993 070764* 0056 0056 /LINE 13 DATA STARTS AT 27205 994 070765* 0057 0057 /LINE 14 DATA STARTS AT 27605 995 070766* 0072 0072 /LINE 15 DATA STARTS AT 35205 996 070767* 0061 0061 /LINE 16 DATA STARTS AT 30605 997 070770* 0062 0062 /LINE 17 DATA STARTS AT 31205 998 070771* 0063 0063 /LINE 18 DATA STARTS AT 31605 999 070772* 0064 0064 /LINE 19 DATA STARTS AT 32205 1000 070773* 0065 0065 /LINE 20 DATA STARTS AT 32605 1001 070774* 0066 0066 /LINE 21 DATA STARTS AT 33205 1002 070775* 0067 0067 /LINE 22 DATA STARTS AT 33605 1003 070776* 0070 0070 /LINE 23 DATA STARTS AT 34205 1004 070777* 7777 7777 /THIS ENDS THE LIST 1005 071000* 1006 071000* PAGE 1007 071000* 1008 071000* / STORE DISPLAY STRING ROUTINE. CALL WITH CLEAR AC TO DISPLAY VALUES IN 1009 071000* / ARGUMENT LIST OR WITH 0040 IN AC TO BLANK THE FIELD. IN-LINE ARGUMENT IS A 1010 071000* / POINTER TO THE ARGUMENT LIST. LIST FORMAT IS 0000 IF ITEMS ARE FOR FIELD 2, 1011 071000* / OR 4000 IF ITEMS ARE FOR FIELD 3. RELATIVE STORAGE ADDRESS FOR SUBSEQUENT 1012 071000* / ITEMS FOLLOWS THE 0000 OR 4000. ALL OTHER ITEMS ARE SEQUENTIAL VALUES TO 1013 071000* / STORE INTO THE BUFFER STARTING AT THE GIVEN ADDRESS. ALL ADDRESSES ARE 1014 071000* / RELATIVE TO THE ABSOLUTE VALUE 0205, NOT THE ACTUAL ROW ADDRESS WHICH IS 1015 071000* / ALWAYS SOME NUMBER OF WHOLE PAGES DIFFERENT. ADDRESSES NEAR THE END OF A 1016 071000* / FIELD WILL NOT BE CORRECTED TO THE NEXT FIELD. THE ARGUMENT LIST ENDS WITH 1017 071000* / 7777. CONTROL RETURNS PAST THE IN-LINE POINTER ARGUMENT. 1018 071000* 1019 071000* 0000 SSTRING,.-. /STORE STRING FOR DISPLAY ROUTINE 1020 071001* 6271 CDF 70 /ENSURE OUR FIELD 1021 071002* 3246 DCA SPACSW /SAVE PASSED VALUE 1022 071003* 7240 NL7777 /BACKUP FOR AUTO-INDEX 1023 071004* 1600 TAD I SSTRING /GET ARGUMENT ADDRESS 1024 071005* 2200 ISZ SSTRING /BUMP PAST ARGUMENT 1025 071006* 3017 DCA XR7 /STASH THE POINTER 1026 071007* 1417 SSLUP, TAD I XR7 /GET A WORD 1027 071010* 7421 MQL /STASH IT FOR NOW 1028 071011* 7701 CLA MQA /GET IT BACK 1029 071012* 7001 IAC /ADD ONE FOR TEST 1030 071013* 7650 SNA CLA /SKIP IF NOT AT END OF LIST (7777) 1031 071014* 5600 JMP I SSTRING /RETURN IF AT END 1032 071015* 7701 CLA MQA /GET THE VALUE AGAIN 1033 071016* 0117 AND Z3777/[3777] /IGNORE HIGH-ORDER BIT FOR NOW 1034 071017* 7650 SNA CLA /SKIP IF SOMETHING SET 1035 071020* 5232 JMP SSADR /JUMP IF NOT 1036 071021* 1246 TAD SPACSW /GET PASSED ARGUMENT 1037 071022* 7450 SNA /SKIP IF IT WAS SET (A SPACE CHARACTER) 1038 071023* 7701 CLA MQA /USE PASSED VALUE 1039 071024* 7402 CDFINST,HLT+.-. /WILL BE CDF XX INSTRUCTION 1040 071025* 3447 DCA I T5 /STORE IN BUFFER 1041 071026* 2047 ISZ T5 /BUMP TO NEXT 1042 071027* 7000 NOP /JUST IN CASE IT SKIPS 1043 071030* 6271 CDF 70 /BACK TO OUR FIELD 1044 071031* 5207 JMP SSLUP /KEEP GOING 1045 071032* 1046 071032* 1417 SSADR, TAD I XR7 /GET NEXT WORD AFTER FLAG WORD 1047 071033* 3047 DCA T5 /STASH AS ADDRESS 1048 071034* 7701 CLA MQA /GET THE WORD 1049 071035* 7710 SPA CLA /SKIP IF IT FLAG WORD IS ZERO 1050 071036* 1102 TAD Z10/[10] /MAKE IT CDF 30 1051 071037* 1245 TAD CDF20/(CDF 20) /GET CDF 20 1052 071040* 3224 DCA CDFINST /STORE CDF 20 OR CDF 30 IN-LINE 1053 071041* 1047 TAD T5 /GET ADDRESS WORD 1054 071042* 1111 TAD Z205/[205] /ADD OFFSET 1055 071043* 3047 DCA T5 /STORE BACK 1056 071044* 5207 JMP SSLUP /KEEP GOING 1057 071045* 1058 071045* 6221 CDF20, CDF 20 /CONSTANT 6221 1059 071046* 0000 SPACSW, .-. /PASSED SPACE PARAMETER 1060 071047* 1061 071047* / DATA PATTERN THAT LOOKS LIKE A BIG FLOPPY (USED FOR ERROR DISPLAY). 1062 071047* 1063 071047* 0000 BIGFLPY,0000 /FIELD 2 1064 071050* 1445 1445 /ADDRESS 1065 071051* 0015 0015 1066 071052* 0022 0022 1067 071053* 0022 0022 1068 071054* 0022 0022 1069 071055* 0022 0022 1070 071056* 0022 0022 1071 071057* 0022 0022 1072 071060* 0022 0022 1073 071061* 0022 0022 1074 071062* 0022 0022 1075 071063* 0022 0022 1076 071064* 0022 0022 1077 071065* 0022 0022 1078 071066* 0022 0022 1079 071067* 0022 0022 1080 071070* 0022 0022 1081 071071* 0022 0022 1082 071072* 0022 0022 1083 071073* 0022 0022 1084 071074* 0022 0022 1085 071075* 0022 0022 1086 071076* 0022 0022 1087 071077* 0022 0022 1088 071100* 0022 0022 1089 071101* 0022 0022 1090 071102* 0022 0022 1091 071103* 0014 0014 1092 071104* 0000 0000 /FIELD 2 1093 071105* 2045 2045 /ADDRESS 1094 071106* 0031 0031 1095 071107* 0000 0000 /FIELD 2 1096 071110* 2070 2070 /ADDRESS 1097 071111* 0015 0015 1098 071112* 0022 0022 1099 071113* 0022 0022 1100 071114* 0022 0022 1101 071115* 0022 0022 1102 071116* 0022 0022 1103 071117* 0014 0014 1104 071120* 0031 0031 1105 071121* 0000 0000 /FIELD 2 1106 071122* 2445 2445 /ADDRESS 1107 071123* 0031 0031 1108 071124* 0000 0000 /FIELD 2 1109 071125* 2470 2470 /ADDRESS 1110 071126* 0031 0031 1111 071127* 0000 0000 /FIELD 2 1112 071130* 2476 2476 /ADDRESS 1113 071131* 0031 0031 1114 071132* 0031 0031 1115 071133* 1116 071133* 0000 0000 /FIELD 2 1117 071134* 3045 3045 /ADDRESS 1118 071135* 0031 0031 1119 071136* 0000 0000 /FIELD 2 1120 071137* 3070 3070 /ADDRESS 1121 071140* 0031 0031 1122 071141* 0000 0000 /FIELD 2 1123 071142* 3076 3076 /ADDRESS 1124 071143* 0031 0031 1125 071144* 0031 0031 1126 071145* 0000 0000 /FIELD 2 1127 071146* 3445 3445 /ADDRESS 1128 071147* 0031 0031 1129 071150* 0000 0000 /FIELD 2 1130 071151* 3462 3462 /ADDRESS 1131 071152* 4025 4025 1132 071153* 0000 0000 /FIELD 2 1133 071154* 3470 3470 /ADDRESS 1134 071155* 0016 0016 1135 071156* 0022 0022 1136 071157* 0022 0022 1137 071160* 0022 0022 1138 071161* 0022 0022 1139 071162* 0022 0022 1140 071163* 0013 0013 1141 071164* 0031 0031 1142 071165* 0000 0000 /FIELD 2 1143 071166* 4045 4045 /ADDRESS 1144 071167* 0031 0031 1145 071170* 0000 0000 /FIELD 2 1146 071171* 4060 4060 /ADDRESS 1147 071172* 4026 4026 1148 071173* 4031 4031 1149 071174* 0000 0000 /FIELD 2 1150 071175* 4063 4063 /ADDRESS 1151 071176* 4031 4031 1152 071177* 4026 4026 1153 071200* 0000 0000 /FIELD 2 1154 071201* 4072 4072 /ADDRESS 1155 071202* 0015 0015 1156 071203* 0022 0022 1157 071204* 0022 0022 1158 071205* 0022 0022 1159 071206* 0014 0014 1160 071207* 0031 0031 1161 071210* 0000 0000 /FIELD 2 1162 071211* 4445 4445 /ADDRESS 1163 071212* 0031 0031 1164 071213* 0050 0050 1165 071214* 0440 " +200 1166 071215* 0440 " +200 1167 071216* 0440 " +200 1168 071217* 0440 " +200 1169 071220* 0440 " +200 1170 071221* 0051 0051 1171 071222* 1172 071222* 0000 0000 /FIELD 2 1173 071223* 4460 4460 /ADDRESS 1174 071224* 4027 4027 1175 071225* 0000 0000 /FIELD 2 1176 071226* 4464 4464 /ADDRESS 1177 071227* 4027 4027 1178 071230* 0000 0000 /FIELD 2 1179 071231* 4472 4472 /ADDRESS 1180 071232* 0031 0031 1181 071233* 0000 0000 /FIELD 2 1182 071234* 4476 4476 /ADDRESS 1183 071235* 0031 0031 1184 071236* 0031 0031 1185 071237* 0000 0000 /FIELD 2 1186 071240* 5045 5045 /ADDRESS 1187 071241* 0031 0031 1188 071242* 0000 0000 /FIELD 2 1189 071243* 5061 5061 /ADDRESS 1190 071244* 4030 4030 1191 071245* 4027 4027 1192 071246* 4030 4030 1193 071247* 0000 0000 /FIELD 2 1194 071250* 5072 5072 /ADDRESS 1195 071251* 0031 0031 1196 071252* 0000 0000 /FIELD 2 1197 071253* 5076 5076 /ADDRESS 1198 071254* 0031 0031 1199 071255* 0031 0031 1200 071256* 0000 0000 /FIELD 2 1201 071257* 5445 5445 /ADDRESS 1202 071260* 0031 0031 1203 071261* 0000 0000 /FIELD 2 1204 071262* 5460 5460 /ADDRESS 1205 071263* 0007 0007 1206 071264* 0000 0000 /FIELD 2 1207 071265* 5472 5472 /ADDRESS 1208 071266* 0031 0031 1209 071267* 0000 0000 /FIELD 2 1210 071270* 5476 5476 /ADDRESS 1211 071271* 0031 0031 1212 071272* 0031 0031 1213 071273* 0000 0000 /FIELD 2 1214 071274* 6045 6045 /ADDRESS 1215 071275* 0031 0031 1216 071276* 0000 0000 /FIELD 2 1217 071277* 6072 6072 /ADDRESS 1218 071300* 0031 0031 1219 071301* 0000 0000 /FIELD 2 1220 071302* 6076 6076 /ADDRESS 1221 071303* 0031 0031 1222 071304* 0031 0031 1223 071305* 0000 0000 /FIELD 2 1224 071306* 6445 6445 /ADDRESS 1225 071307* 0031 0031 1226 071310* 1227 071310* 0000 0000 /FIELD 2 1228 071311* 6472 6472 /ADDRESS 1229 071312* 0031 0031 1230 071313* 0000 0000 /FIELD 2 1231 071314* 6476 6476 /ADDRESS 1232 071315* 0031 0031 1233 071316* 0031 0031 1234 071317* 0000 0000 /FIELD 2 1235 071320* 7045 7045 /ADDRESS 1236 071321* 0031 0031 1237 071322* 0000 0000 /FIELD 2 1238 071323* 7070 7070 /ADDRESS 1239 071324* 0015 0015 1240 071325* 0014 0014 1241 071326* 0016 0016 1242 071327* 0022 0022 1243 071330* 0022 0022 1244 071331* 0022 0022 1245 071332* 0013 0013 1246 071333* 0031 0031 1247 071334* 0000 0000 /FIELD 2 1248 071335* 7445 7445 /ADDRESS 1249 071336* 0016 0016 1250 071337* 0022 0022 1251 071340* 0022 0022 1252 071341* 0022 0022 1253 071342* 0022 0022 1254 071343* 0022 0022 1255 071344* 0022 0022 1256 071345* 0022 0022 1257 071346* 0022 0022 1258 071347* 0022 0022 1259 071350* 0022 0022 1260 071351* 0022 0022 1261 071352* 0022 0022 1262 071353* 0022 0022 1263 071354* 0022 0022 1264 071355* 0022 0022 1265 071356* 0022 0022 1266 071357* 0022 0022 1267 071360* 0022 0022 1268 071361* 0013 0013 1269 071362* 0016 0016 1270 071363* 0022 0022 1271 071364* 0022 0022 1272 071365* 0022 0022 1273 071366* 0022 0022 1274 071367* 0022 0022 1275 071370* 0013 0013 1276 071371* 7777 7777 /END OF LIST 1277 071372* 1278 071372* / ERROR NUMBER DISPLAY LIST. 1279 071372* 1280 071372* 0000 EDISPLI,0000 /FIELD 2 1281 071373* 5422 5422 /ADDRESS 1282 071374* 0000 .-. /HIGH-ORDER ERROR DIGIT 1283 071375* 0000 .-. /LOW-ORDER ERROR DIGIT 1284 071376* 0000 0000 /FIELD 2 1285 071377* 6022 6022 /ADDRESS 1286 071400* 0040 J00, 0040+.-. /HIGH-ORDER ERROR DIGIT 1287 071401* 0040 J01, 0040+.-. /LOW-ORDER ERROR DIGIT 1288 071402* 7777 7777 /END OF LIST 1289 071403* 1290 071403* / NON-ERROR (DECMATE II LOGO) DISPLAY LIST. 1291 071403* 1292 071403* 0000 DMLOGO, 0000 /FIELD 2 1293 071404* 5415 5415 /ADDRESS 1294 071405* 0440 " +200 1295 071406* 0504 "D+200 1296 071407* 0505 "E+200 1297 071410* 0503 "C+200 1298 071411* 0555 "M+240 1299 071412* 0541 "A+240 1300 071413* 0564 "T+240 1301 071414* 0545 "E+240 1302 071415* 0440 " +200 1303 071416* 0511 "I+200 1304 071417* 0511 "I+200 1305 071420* 0440 " +200 1306 071421* 0000 0000 /FIELD 2 1307 071422* 6015 6015 /ADDRESS 1308 071423* 0440 " +200 1309 071424* 0504 "D+200 1310 071425* 0505 "E+200 1311 071426* 0503 "C+200 1312 071427* 0555 "M+240 1313 071430* 0541 "A+240 1314 071431* 0564 "T+240 1315 071432* 0545 "E+240 1316 071433* 0440 " +200 1317 071434* 0511 "I+200 1318 071435* 0511 "I+200 1319 071436* 0440 " +200 1320 071437* 7777 7777 /END OF LIST 1321 071440* 1322 071440* 0023 L23, 23 /CONSTANT 0023 1323 071441* 0247 L247, 247 /CONSTANT 0247 1324 071442* 0202 L202, 202 /CONSTANT 0202 1325 071443* 0460 L460, "0+200 /CONSTANT 0460 1326 071444* 1327 071444* 0000 ENDUP, .-. /FINISH UP ROUTINE 1328 071445* 7300 CLA CLL /CLEAN UP 1329 071446* 4730 JMS I PSET2/(SET2) /SET ATTRIBUTE BITS IN 13705, 13707 1330 071447* 1054 TAD ESTATUS /GET ERROR STATUS 1331 071450* 7650 SNA CLA /SKIP IF ANY PROBLEMS 1332 071451* 5315 JMP NOERRORS /JUMP IF NONE 1333 071452* 3010 DCA XR0 /CLEAR QUOTIENT 1334 071453* 1054 TAD ESTATUS /GET ERROR STATUS 1335 071454* 6121 APTSKP /AUTOMATIC PRODUCT TEST? 1336 071455* 7410 SKP /SKIP IF NOT 1337 071456* 5735 JMP I PAPT2/(APTRO2) /ELSE GO THERE 1338 071457* 1125 SUBLUP, TAD Z7766/[7766] /SUBTRACT 10 1339 071460* 7510 SPA /GONE TOO FAR? 1340 071461* 5264 JMP ADDFIX /YES, GO THERE TO FIX UP 1341 071462* 2010 ISZ XR0 /NO, BUMP QUOTIENT 1342 071463* 5257 JMP SUBLUP /KEEP GOING 1343 071464* 1344 071464* 1103 ADDFIX, TAD Z12/[12] /RESTORE VALUE 1345 071465* 1243 TAD L460/("0+200) /MAKE IT ASCII WITH ATTRIBUTES SET 1346 071466* 3731 DCA I LOW1/(EDISPLIST+3) /STORE IN BUFFER 1347 071467* 1731 TAD I LOW1/(EDISPLIST+3) /GET IT BACK 1348 071470* 3732 DCA I LOW2/(EDISPLIST+7) /STORE THERE ALSO 1349 071471* 1010 TAD XR0 /GET QUOTIENT 1350 071472* 1243 TAD L460/("0+200) /MAKE IT ASCII WITH ATTRIBUTES SET 1351 071473* 3733 DCA I HIGH1/(EDISPLIST+2) /STORE IN BUFFER 1352 071474* 1733 TAD I HIGH1/(EDISPLIST+2) /GET IT BACK 1353 071475* 3734 DCA I HIGH2/(EDISPLIST+6) /STORE THERE ALSO 1354 071476* 1240 TAD L23/(23) /GET KEYBOARD CODE TO LIGHT LEDS 1355 071477* 6056 KBOLS /SEND IT TO KEYBOARD 1356 071500* 3012 DCA XR2 /CLEAR WAIT COUNTER 1357 071501* 2012 ISZ XR2 /WAITING LONG ENOUGH? 1358 071502* 5301 JMP .-1 /NO, KEEP GOING 1359 071503* 1242 TAD L202/(202) /GET KEYBOARD CODE FOR LED PATTERN 1360 071504* 6056 KBOLS /SEND IT TO KEYBOARD 1361 071505* 7200 CLA /CLEAN UP 1362 071506* 4547 JMS I PSSTRING/[SSTRING] /CALL STRING STORE FOR DISPLAY ROUTINE 1363 071507* 1372 EDISPLIST /ERROR DIGITS DISPLAY LIST POINTER 1364 071510* 6111 KBISF /KEYBOARD FLAG UP? 1365 071511* 5310 JMP .-1 /NO, WAIT FOR IT 1366 071512* 6116 KBIRB /YES, READ IN THE CHARACTER 1367 071513* 7200 CLA /THROW IT AWAY 1368 071514* 5644 JMP I ENDUP /RETURN 1369 071515* 1370 071515* / COMES HERE IF NO ERRORS FOUND EARLIER. 1371 071515* 1372 071515* 6121 NOERROR,APTSKP /AUTOMATIC PRODUCT TESTING? 1373 071516* 5322 JMP NOTAPT /JUMP IF NOT 1374 071517* 4523 JMS I PAPTROUTINE/[APTROUTINE]/CALL ROUTINE IF SO 1375 071520* 5721 JMP I .+1/(PRGDONE) /GO THERE 1376 071521* 4614 PRGDONE /THROUGH HERE 1377 071522* 1378 071522* 1241 NOTAPT, TAD L247/(247) /GET KEYBOARD CODE FOR THE BEEPER 1379 071523* 6056 KBOLS /SEND IT 1380 071524* 7200 CLA /CLEAN UP 1381 071525* 4547 JMS I PSSTRING/[SSTRING] /DISPLAY THE 1382 071526* 1403 DMLOGO /DECMATE II LOGO 1383 071527* 5644 JMP I ENDUP /RETURN 1384 071530* 1385 071530* 1600 PSET2, SET2 /POINTER TO 2-WORD ATTRIBUTE BITS SET ROUTINE 1386 071531* 1375 LOW1, EDISPLIST+3 /POINTER TO LOW-ORDER DIGIT STORAGE (1) 1387 071532* 1401 LOW2, EDISPLIST+7 /POINTER TO LOW-ORDER DIGIT STORAGE (2) 1388 071533* 1374 HIGH1, EDISPLIST+2 /POINTER TO HIGH-ORDER DIGIT STORAGE (1) 1389 071534* 1400 HIGH2, EDISPLIST+6 /POINTER TO HIGH-ORDER DIGIT STORAGE (2) 1390 071535* 6520 PAPT2, APTRO2 /POINTER TO APTROUTINE ERROR HANDLING ENTRY 1391 071536* 1392 071536* / CP-INTERRUPT HANDLER FOR DOWN-LOADED CODE. THE DOWNLOADED CODE EXITS VIA A 1393 071536* / HLT INSTRUCTION OR PANEL REQUEST. HLT ENDS THE EXECUTION AND RETURNS CONTROL 1394 071536* / TO OUR CODE; PANEL REQUEST CAUSES A TOTAL RESTART OF ALL MOVED ROM CODE. 1395 071536* 1396 071536* 3017 CPIHND, DCA XR7 /SAVE AC 1397 071537* 6256 GCF /GET CURRENT FIELDS, ETC. STATUS 1398 071540* 3016 DCA XR6 /STASH IT 1399 071541* 6000 PRS /GET PANEL STATUS 1400 071542* 3010 DCA XR0 /STASH IT 1401 071543* 6276 SPD /CP INDIRECTS FROM NOW ON 1402 071544* 1010 TAD XR0 /GET STATUS BACK 1403 071545* 7500 SMA /SKIP IF BOOTSTRAP (CPREQ) SET 1404 071546* 5365 JMP HALTEST /JUMP IF NOT 1405 071547* 7200 CLA /CLEAN UP 1406 071550* 6061 VSF /SKIP ON, CLEAR VIDEO INTERRUPT FLAG 1407 071551* 7000 NOP /IN CASE IT SKIPS 1408 071552* 6071 TTYSF /SKIP ON, CLEAR TTY: TRAP FLAG 1409 071553* 7000 NOP /IN CASE IT SKIPS 1410 071554* 6111 KBISF /SKIP ON, CLEAR KEYBOARD INPUT FLAG 1411 071555* 7000 NOP /IN CASE IT SKIPS 1412 071556* 6051 KBOSF /SKIP ON, CLEAR KEYBOARD OUTPUT FLAG 1413 071557* 7000 NOP /IN CASE IT SKIPS 1414 071560* 1016 TAD XR6 /GET FIELDS BACK 1415 071561* 6005 RTF /RESTORE THEM 1416 071562* 1017 TAD XR7 /RESTORE AC 1417 071563* 6004 PEX /LEAVING PANEL MEMORY 1418 071564* 5400 JMP I INTADR /RETURN TO INTERRUPTED MAIN MEMORY PROGRAM 1419 071565* 1420 071565* 6273 HALTEST,CIF CDF 70 /STAYING IN OUR FIELD 1421 071566* 0374 AND L200/(200) /JUST HLTFLG BIT 1422 071567* 7650 SNA CLA /SKIP IF SET 1423 071570* 5774 JMP I L200/(CODESTART) /JUMP IF NOT (PANEL REQUEST) 1424 071571* 6003 PG0 /RESET RUN FLIP-FLOP 1425 071572* 5773 JMP I .+1/(DWNENTRY) /GO THERE 1426 071573* 5254 DWNENTRY /THROUGH HERE 1427 071574* 1428 071574* 0200 L200, 200/CODESTART /CONSTANT 0200 1429 071575* 1430 071575* 0000 0000 /THIS ENDS THE LIST OF INSTRUCTIONS TO MOVE 1431 071576* 1432 071576* 0000 ZBLOCK 2 /EMPTY SPACE 071577* 0000 1433 071600* 1434 071600* 1435 071600* / SUBROUTINE TO SET HIGH-ORDER BITS IN CP 13705 AND 13707. BIT[4] IS SET IN 1436 071600* / 13705; BITS[4-5] ARE SET IN 13707. THIS MAKES THE LINES INTO DOUBLE-HEIGHT, 1437 071600* / DOUBLE WIDTH UPPER AND LOWER HALVES RESPECTIVELY. THIS ROUTINE DEPENDS ON THE 1438 071600* / PREVIOUS CONTENTS OF THE BITS BEING ZERO. 1439 071600* 1440 071600* 0000 SET2, .-. /SET HIGH BITS IN 2 WORDS ROUTINE 1441 071601* 6211 CDF 10 /GOTO BUFFER FIELD 1442 071602* 1612 TAD I L3705/(3705) /GET CURRENT CONTENTS OF 13705 1443 071603* 1110 TAD Z200/[200] /ADD ON A HIGH-ORDER BIT 1444 071604* 3612 DCA I L3705/(3705) /STORE BACK 1445 071605* 1613 TAD I L3707/(3707) /GET CURRENT CONTENTS OF 13707 1446 071606* 1214 TAD L300/(300) /ADD ON HIGH-ORDER BITS 1447 071607* 3613 DCA I L3707/(3707) /STORE BACK 1448 071610* 6271 CDF 70 /BACK TO OUR FIELD 1449 071611* 5600 JMP I SET2 /RETURN 1450 071612* 1451 071612* 3705 L3705, 3705 /CONSTANT 3705 1452 071613* 3707 L3707, 3707 /CONSTANT 3707 1453 071614* 0300 L300, 300 /CONSTANT 0300 1454 071615* 0077 L77, 77 /CONSTANT 0077 1455 071616* 1456 071616* / SUBROUTINE TO CLEAR THE ATTRIBUTE BITS OF CP 13705 AND 13707. THIS MAKES THE 1457 071616* / CORRESPONDING LINES NORMAL WIDTH AND HEIGHT. 1458 071616* 1459 071616* 0000 CLR2, .-. /CLEAR BITS IN TWO WORDS ROUTINE. 1460 071617* 6211 CDF 10 /GOTO BUFFER FIELD 1461 071620* 1612 TAD I L3705/(3705) /GET CURRENT CONTENTS OF 13705 1462 071621* 0215 AND L77/(77) /JUST KEEP LOW-ORDER HALF 1463 071622* 3612 DCA I L3705/(3705) /STORE BACK 1464 071623* 1613 TAD I L3707/(3707) /GET CURRENT CONTENTS OF 13707 1465 071624* 0215 AND L77/(77) /JUST KEEP LOW-ORDER HALF 1466 071625* 3613 DCA I L3707/(3707) /STORE BACK 1467 071626* 6271 CDF 70 /BACK TO OUR FIELD 1468 071627* 5616 JMP I CLR2 /RETURN 1469 071630* 1470 071630* / ZBLOCK 1 /EMPTY SPACE 1471 071630* 1472 071630* / THIS ROUTINE READS IN TRACK 0, SECTOR 3 INTO CP 15350-16347. THE FIRST EIGHT 1473 071630* / BYTES ARE VALIDATED AGAINST A KNOWN PATTERN. ALL ELEMENTS READ IN AS 377 ARE 1474 071630* / REPLACED WITH 4000 IN THE RUNNING COPY. 1475 071630* 1476 071630* 0000 T0S3RD, .-. /TRACK 0, SECTOR 3 READ ROUTINE 1477 071631* 1261 TAD PT0S3BUFF/(T0S3BUFFER-1)/SETUP THE 1478 071632* 3010 DCA XR0 /DATA STORAGE POINTER 1479 071633* 6211 CDF 10 /SET THE DATA FIELD FOR THE TRANSFER 1480 071634* // NL002A /SET SECTOR OFFSET (3-1) 1481 071634* 4554 JMS I PFREAD/(FREAD) /CALL FLOPPY READ ROUTINE 1482 071635* 0046 0046// -3-1 /SECTOR THREE IS THE LAST ONE 1483 071636* 7777 7777// 0 /TRACK 0000 1484 071637* 5630 JMP I T0S3RD /ERROR, TAKE NON-SKIP RETURN 1485 071640* 1260 TAD PT0S3DATA/(T0S3DATA-1) /SETUP THE VALIDATION LIST VALUE 1486 071641* 3010 DCA XR0 /STASH THE POINTER 1487 071642* 1261 TAD PT0S3BUFF/(T0S3BUFFER-1)/POINT TO THE 1488 071643* 3011 DCA XR1 /READ-IN DATA 1489 071644* 1410 LISTLUP,TAD I XR0 /GET A TEST VALUE 1490 071645* 7450 SNA /END OF LIST? 1491 071646* 5255 JMP LISTOK /JUMP IF SO 1492 071647* 6211 CDF 10 /GOTO DATA FIELD 1493 071650* 1411 TAD I XR1 /COMPARE TO READ-IN VALUE 1494 071651* 6271 CDF 70 /BACK TO OUR FIELD 1495 071652* 7640 SZA CLA /SKIP IF IT MATCHES 1496 071653* 5630 JMP I T0S3RD /TAKE FAILURE RETURN IF NOT 1497 071654* 5244 JMP LISTLUP /KEEP GOING 1498 071655* 1499 071655* 4662 LISTOK, JMS I PRUBCHK/(RUBCHK) /REPLACE ALL 377 CODES WITH 4000 1500 071656* 2230 ISZ T0S3RD /BUMP TO SUCCESSFUL RETURN 1501 071657* 5630 JMP I T0S3RD /TAKE SKIP-RETURN TO CALLER 1502 071660* 1503 071660* 2574 PT0S3DA,T0S3DATA-1 /POINTER TO TEST DATA FOR TRACK 0, SECTOR 3 1504 071661* T0S3DATA=2575// 1505 071661* 5347 PT0S3BU,T0S3BUFFER-1 /POINTER TO TRACK 0, SECTOR 3 LOADING ADDRESS 1506 071662* 2115 PRUBCHK,RUBCHK /POINTER TO RUBCHK ROUTINE 1507 071663* RUBCHK=2115// 1508 071663* 1509 071663* / COMES BACK HERE AFTER LOADING THE CHARACTER GENERATOR RAM TO EXIT. 1510 071663* 1511 071663* /CGDONE, JMP I DOCG /RETURN TO ORIGINAL CALLER 1512 071663* 1513 071663* 2563 PT0S7DA,T0S7DATA-1 /POINTER TO TEST DATA FOR TRACK 0, SECTOR 7 1514 071664* T0S7DATA=2564// 1515 071664* 1716 PUSEDAT,USEDATA /POINTER TO USE DATA ROUTINE 1516 071665* USEDATA=1716// 1517 071665* 1518 071665* / THE CHARACTER GENERATOR RAM LOAD ROUTINE IS ENTERRED HERE. 1519 071665* 1520 071665* 0000 DOCG, .-. /CHARACTER GENERATOR RAM LOAD ROUTINE 1521 071666* 7240 NL7777 /SETUP THE 1522 071667* 3010 DCA XR0 /STORE POINTER 1523 071670* 6201 CDF 00 /GOTO DATA FIELD 1524 071671* // NL0006 /SET OFFSET FOR SECTOR 7 (7-10) 1525 071671* 4554 JMS I PFREAD/(FREAD) /CALL FLOPPY READ ROUTINE 1526 071672* 0052 0052// -12-1 /WANT SECTORS 7-10 1527 071673* 7774 7774// 0 /ON TRACK 0 1528 071674* 5311 JMP NODATA/(NODATA) /ERROR, TRY TO KEEP GOING 1529 071675* 1530 071675* / THE DATA READ IN OK, SO VALIDATE IT. 1531 071675* 1532 071675* 1263 TAD PT0S7DATA/(T0S7DATA-1) /SETUP THE 1533 071676* 3010 DCA XR0 /TEST DATA POINTER 1534 071677* 7240 NL7777 /SETUP THE 1535 071700* 3011 DCA XR1 /DATA POINTER 1536 071701* 1410 TSTDLUP,TAD I XR0 /GET A TEST WORD 1537 071702* 7450 SNA /SKIP IF NOT AT END OF LIST 1538 071703* 5664 JMP I PUSEDATA/(USEDATA) /END OF LIST, GO USE GOOD DATA 1539 071704* 6201 CDF 00 /GOTO DATA FIELD 1540 071705* 1411 TAD I XR1 /COMPARE DATA TO TEST WORD 1541 071706* 6271 CDF 70 /BACK TO OUR FIELD 1542 071707* 7650 SNA CLA /SKIP IF NO MATCH 1543 071710* 5301 JMP TSTDLUP /KEEP GOING IF IT MATCHES 1544 071711* 1545 071711* / THE DATA ISN'T VALID, SO IGNORE IT AS IF IT HAD BEEN AN I/O ERROR. 1546 071711* 1547 071711* // JMP NODATA/(NODATA) /CONTINUE THERE 1548 071711* 1549 071711* / COMES HERE TO CLEAR THE DATA WHICH WAS EITHER INVALID OR COULDN'T GET READ IN. 1550 071711* / BETTER TO CLEAR THE TABLE THAN LEAVE IT AT RANDOM. 1551 071711* 1552 071711* 3365 NODATA, DCA CGPTR /CLEAR THE DATA POINTER 1553 071712* 6201 CLRLUP, CDF 00 /GOTO DATA FIELD 1554 071713* 3765 DCA I CGPTR /CLEAR A WORD 1555 071714* 2365 ISZ CGPTR /DONE ALL YET? 1556 071715* 5312 JMP CLRLUP /NO, GO BACK 1557 071716* 1558 071716* / COMES HERE TO LOAD THE CHARACTER GENERATOR RAM FROM (HOPEFULLY) THE READ-IN 1559 071716* / DATA (OR JUST ZEROES IF IT WASN'T READABLE). 1560 071716* 1561 071716* 6271 USEDATA,CDF 70 /GOTO OUR FIELD 1562 071717* 1563 071717* / WE HAVE TO CLEAR THE FIRST ROW OF DATA BECAUSE IT ISN'T A PART OF THE USEFUL 1564 071717* / DATA (VERIFICATION HEADER AND OTHER JUNK). 1565 071717* 1566 071717* 7240 NL7777 /SETUP THE 1567 071720* 3010 DCA XR0 /DATA POINTER 1568 071721* 1126 TAD Z7760/[-20] /SETUP THE 1569 071722* 3011 DCA XR1 /ROW COUNTER 1570 071723* 6201 CDF 00 /GOTO THE DATA FIELD 1571 071724* 3410 CLRIT, DCA I XR0 /CLEAR A WORD 1572 071725* 2011 ISZ XR1 /DONE ENOUGH? 1573 071726* 5324 JMP CLRIT /NO, GO BACK 1574 071727* 1366 TAD L110/(110) /DISABLE SCREEN AND ENABLE CG RAM 1575 071730* 6126 VIDCON /LOAD VIDEO CONTROL 1576 071731* 7240 NL7777 /SETUP THE 1577 071732* 3010 DCA XR0 /DATA POINTER 1578 071733* 3365 DCA CGPTR /CLEAR CG RAM ADDRESS POINTER 1579 071734* 1580 071734* 1367 CGLDLP, TAD PCGINDX/(CGINDX-1) /SETUP THE 1581 071735* 3012 DCA XR2 /INDEX POINTER 1582 071736* 1126 TAD Z7760/[-20] /SETUP THE 1583 071737* 3011 DCA XR1 /LINE COUNT 1584 071740* 6271 NXTLINE,CDF 70 /BACK TO OUR (ODD) FIELD 1585 071741* 1412 TAD I XR2 /GET AN INDEX 1586 071742* 1365 TAD CGPTR /ADD ON CURRENT CHARACTER BASE 1587 071743* 6123 CGLOAD /LOAD CHARACTER GENERATOR ADDRESS 1588 071744* 7200 CLA /CLEAN UP 1589 071745* 6201 CDF 00 /GOTO (EVEN) FIELD 0 1590 071746* 1410 TAD I XR0 /GET LATEST CELL DATA LINE 1591 071747* 6123 CGLOAD /LOAD CHARACTER GENERATOR VALUE 1592 071750* 7200 CLA /CLEAN UP 1593 071751* 2011 ISZ XR1 /DONE ALL LINES YET? 1594 071752* 5340 JMP NXTLINE /NO, GO BACK 1595 071753* 1105 TAD Z20/[20] /SETUP CHARACTER UPDATE 1596 071754* 1365 TAD CGPTR /ADD TO CHARACTER ADDRESS 1597 071755* 3365 DCA CGPTR /STORE BACK 1598 071756* 1365 TAD CGPTR /GET THE POINTER 1599 071757* 7700 SMA CLA /SKIP IF DONE ALL 2048 LINES 1600 071760* 5334 JMP CGLDLP /JUMP IF NOT DONE YET 1601 071761* 1602 071761* 7315 NL0010 CLL /SETUP RAM ENABLE AND SCREEN ENABLE 1603 071762* 6126 VIDCON /LOAD NEW CONTROL VALUE 1604 071763* 7200 CLA /CLEAN UP 1605 071764* 5665 JMP I DOCG /RETURN 1606 071765* 1607 071765* 0000 CGPTR, 0000 /CHARACTER GENERATOR DATA POINTER 1608 071766* 0110 L110, 110 /CONSTANT 0110 1609 071767* 1767 PCGINDX,CGINDX-1 /POINTER TO CG INDEX TABLE 1610 071770* 1611 071770* / TABLE OF CG CELL LINE INDICES; (THE FOUR BITS ARE READ BACKWARDS). 1612 071770* 1613 071770* 0000 CGINDX, 00 /LINE 00 1614 071771* 0010 10 /LINE 01 1615 071772* 0004 04 /LINE 02 1616 071773* 0014 14 /LINE 03 1617 071774* 0002 02 /LINE 04 1618 071775* 0012 12 /LINE 05 1619 071776* 0006 06 /LINE 06 1620 071777* 0016 16 /LINE 07 1621 072000* 0001 01 /LINE 08 1622 072001* 0011 11 /LINE 09 1623 072002* 0005 05 /LINE 10 1624 072003* 0015 15 /LINE 11 1625 072004* 0003 03 /LINE 12 1626 072005* 0013 13 /LINE 13 1627 072006* 0007 07 /LINE 14 1628 072007* 0017 17 /LINE 15 1629 072010* 1630 072010* / NOTE: ALL ROUTINES AND DATA BEYOND THIS POINT MARKED WITH ******** ARE NOT 1631 072010* / ACCESSED BY THE NORMAL USAGE OF THE ROM EXCEPT POSSIBLY INDIRECTLY THROUGH A 1632 072010* / DOWN-LOADED AUTOMATIC PRODUCT TEST ROUTINE. ALL OF THE CODE IS SUBORDINATE TO 1633 072010* / THE SUBROUTINE ENTERRED VIA JMS 0176, WHICH IS ITSELF NOT CALLED BY ANY 1634 072010* / EXISTING ROM ROUTINES. 1635 072010* 1636 072010* / ******** 1637 072010* 1638 072010* 0000 GETPARM,.-. /ROUTINE TO GET SELECTED PARAMETERS 1639 072011* 7240 NL7777 /SETUP THE 1640 072012* 3010 DCA XR0 /DATA POINTER 1641 072013* 6201 CDF 00 /GOTO DATA FIELD 1642 072014* 1410 TAD I XR0 /GET A WORD 1643 072015* 3031 DCA COMTM1 /STASH IT 1644 072016* 7325 NL0003 /SETUP THE 1645 072017* 3010 DCA XR0 /DATA POINTER 1646 072020* 7240 NL7777 /BACKUP FOR AUTO-INDEX 1647 072021* 1410 TAD I XR0 /GET ADDRESS POINTER 1648 072022* 3011 DCA XR1 /STASH IT 1649 072023* 1410 TAD I XR0 /GET FIELD VALUE 1650 072024* 1121 TAD ZCDF/[CDF] /FORM CDF INSTRUCTION 1651 072025* 3226 DCA .+1 /STORE IN-LINE 1652 072026* 7402 HLT+.-. /WILL BE CDF XX INSTRUCTION 1653 072027* 1411 TAD I XR1 /GET ADDRESS 1654 072030* 3030 DCA TM0 /STASH IT 1655 072031* 1411 TAD I XR1 /GET FIELD 1656 072032* 3036 DCA MTM5 /STASH IT 1657 072033* 1411 TAD I XR1 /GET ADDRESS 1658 072034* 3032 DCA MTM1 /STASH IT 1659 072035* 1411 TAD I XR1 /GET FIELD 1660 072036* 3037 DCA MTM6 /STASH IT 1661 072037* 1411 TAD I XR1 /GET ADDRESS 1662 072040* 3033 DCA MTM2 /STASH IT 1663 072041* 1411 TAD I XR1 /GET FIELD 1664 072042* 3040 DCA MTM7 /STASH IT 1665 072043* 6207 RSP1 /GET FIRST STACK POINTER 1666 072044* 3034 DCA SP1SAVE /SAVE IT 1667 072045* 6227 RSP2 /GET SECOND STACK POINTER 1668 072046* 3035 DCA SP2SAVE /SAVE IT 1669 072047* 1036 TAD MTM5 /GET FIELD 1670 072050* 1121 TAD ZCDF/[CDF] /FORM CDF INSTRUCTION 1671 072051* 3252 DCA .+1 /STORE IN-LINE 1672 072052* 7402 HLT+.-. /WILL BE CDF XX INSTRUCTION 1673 072053* 1430 TAD I TM0 /GET VALUE 1674 072054* 6271 CDF 70 /BACK TO OUR FIELD 1675 072055* 3030 DCA TM0 /SAVE IT 1676 072056* 1037 TAD MTM6 /GET FIELD 1677 072057* 1121 TAD ZCDF/[CDF] /FORM CDF INSTRUCTION 1678 072060* 3261 DCA .+1 /STORE IN-LINE 1679 072061* 7402 HLT+.-. /WILL BE CDF XX INSTRUCTION 1680 072062* 1432 TAD I MTM1 /GET VALUE 1681 072063* 6271 CDF 70 /BACK TO OUR FIELD 1682 072064* 3032 DCA MTM1 /SAVE IT 1683 072065* 1040 TAD MTM7 /GET FIELD 1684 072066* 1121 TAD ZCDF/[CDF] /FORM CDF INSTRUCTION 1685 072067* 3270 DCA .+1 /STORE IN-LINE 1686 072070* 7402 HLT+.-. /WILL BE CDF XX INSTRUCTION 1687 072071* 1433 TAD I MTM2 /GET VALUE 1688 072072* 6271 CDF 70 /BACK TO OUR FIELD 1689 072073* 3033 DCA MTM2 /SAVE IT 1690 072074* 5610 JMP I GETPARM /RETURN TO CALLER 1691 072075* 1692 072075* / ******** 1693 072075* 1694 072075* / COUNT FOR FIELDS PRIOR TO HIGHLIGHTED RATE FIELD. 1695 072075* 1696 072075* 7777 CLIST, -1 /50 BAUD 1697 072076* 7777 -1 /75 BAUD 1698 072077* 7777 -1 /110 BAUD 1699 072100* 7777 -1 /134.5 BAUD 1700 072101* 7777 -1 /150 BAUD 1701 072102* 7777 -1 /300 BAUD 1702 072103* 7776 -2 /600 BAUD 1703 072104* 7775 -3 /1200 BAUD 1704 072105* 7774 -4 /1800 BAUD 1705 072106* 7774 -4 /2000 BAUD 1706 072107* 7774 -4 /2400 BAUD 1707 072110* 7773 -5 /3600 BAUD 1708 072111* 7773 -5 /4800 BAUD 1709 072112* 7772 -6 /7200 BAUD 1710 072113* 7772 -6 /9600 BAUD 1711 072114* 7772 -6 /19200 BAUD 1712 072115* 1713 072115* / ******** 1714 072115* 1715 072115* / THIS ROUTINE CHECKS FOR BYTES LOADED AS 0377 TO BE REPLACED WITH 4000. THE 1716 072115* / AFFECTED DATA CONSISTS OF THE FRESHLY READ-IN (IN BYTE MODE) CONTENTS OF TRACK 1717 072115* / 1, SECTOR 3 PAST THE VALIDATED HEADER BYTES, LOCATIONS 15360-15777 ONLY. 1718 072115* 1719 072115* 0000 RUBCHK, .-. /377 CODE REPLACE ROUTINE 1720 072116* 1337 TAD RUBPTR/(T0S3BUFFER+10) /SETUP THE LIST POINTER PAST THE HEADER 1721 072117* 3340 DCA VPTR /STASH THE POINTER 1722 072120* 6211 VLUP, CDF 10 /GOTO DATA FIELD 1723 072121* 1740 TAD I VPTR /GET A WORD 1724 072122* 7001 IAC /ADD ONE 1725 072123* 0114 AND Z377/[377] /LOW-ORDER BITS ONLY 1726 072124* 7640 SZA CLA /SKIP IF THEY WERE ALL SET 1727 072125* 5330 JMP VAROUND /ELSE RETAIN THIS WORD 1728 072126* 7330 NL4000 /GET REPLACEMENT VALUE 1729 072127* 3740 DCA I VPTR /STORE OVER LIST ELEMENT 1730 072130* 6271 VAROUND,CDF 70 /BACK TO OUR FIELD 1731 072131* 2340 ISZ VPTR /BUMP TO NEXT 1732 072132* 7332 NL2000 /GET ADDRESS MASK 1733 072133* 0340 AND VPTR /JUST QUADRANT BIT 1734 072134* 7650 SNA CLA /SKIP IF JUST FINISHED 1735 072135* 5320 JMP VLUP /JUMP IF NOT 1736 072136* 5715 JMP I RUBCHK /RETURN TO CALLER 1737 072137* 1738 072137* 5360 RUBPTR, T0S3BUFFER+10 /POINTER TO DATA PAST THE HEADER 1739 072140* 0000 VPTR, .-. /DATA POINTER 1740 072141* 1741 072141* / RX50 WAIT ROUTINE. TAKES IMMEDIATE RETURN IF TRANSFER FLAG RAISES. TAKES 1742 072141* / SKIP RETURN IF DONE FLAG RAISES. TAKES DOUBLE-SKIP RETURN IF AN ERROR OCCURS 1743 072141* / OR THE HARDWARE TIMES OUT. 1744 072141* 1745 072141* 0000 RXWAIT, .-. 1746 072142* 1131 TAD DTIMOUT/[-DTIME] /SETUP THE 1747 072143* 3050 DCA T6 /TIME-OUT COUNTER 1748 072144* 3051 DCA T7 /CLEAR INNER TIME-OUT COUNTER 1749 072145* 6753 RXWATLP,STR /TRANSFER FLAG UP? 1750 072146* 7410 SKP /SKIP IF NOT 1751 072147* 5741 JMP I RXWAIT /YES, TAKE IMMEDIATE RETURN 1752 072150* 6755 SDN /DONE FLAG UP? 1753 072151* 5355 JMP RXWATING /NO, KEEP TRYING 1754 072152* 6754 SER /YES, WERE THERE ERRORS? 1755 072153* 5362 JMP RXSKIP /NO, TAKE SKIP RETURN 1756 072154* 5361 JMP RXSKP2 /YES, TAKE DOUBLE SKIP RETURN 1757 072155* 1758 072155* 2051 RXWATIN,ISZ T7 /WAITING TOO LONG? 1759 072156* 5345 JMP RXWATLP /NO, KEEP TRYING 1760 072157* 2050 ISZ T6 /WAITED TOO LONG? 1761 072160* 5345 JMP RXWATLP /NO, KEEP TRYING 1762 072161* 2341 RXSKP2, ISZ RXWAIT /YES, TAKE DOUBLE-SKIP RETURN 1763 072162* 2341 RXSKIP, ISZ RXWAIT /SET SKIP RETURN FOR DONE FLAG UP CONDITION 1764 072163* 5741 JMP I RXWAIT /RETURN AS NECESSARY 1765 072164* 1766 072164* 7700 M100, -100 /CONSTANT 7700 1767 072165* 1768 072165* 0000 TIMOUT, .-. /GENERAL TIME-OUT ROUTINE 1769 072166* 3050 DCA T6 /CLEAR INNER COUNTER 1770 072167* 1364 TAD M100/(-100) /SETUP THE 1771 072170* 3051 DCA T7 /OUTER COUNTER 1772 072171* 2050 TIMLUP, ISZ T6 /WAITING LONG ENOUGH? 1773 072172* 5371 JMP TIMLUP /NO, KEEP GOING 1774 072173* 2051 ISZ T7 /WAITED TOO LONG? 1775 072174* 5371 JMP TIMLUP /NO, KEEP GOING 1776 072175* 5765 JMP I TIMOUT /YES, RETURN TO CALLER 1777 072176* 1778 072176* 0000 ZBLOCK 2 /UNUSED 072177* 0000 1779 072200* 1780 072200* 6203 CIDF, CIF CDF 00 /CONSTANT 6203 1781 072201* 2607 PPRMPRT,PRMPRT /POINTER TO SETUP PARAMETER PRINT ROUTINE 1782 072202* PRMPRT=2607// 1783 072202* 3121 PLOC36, LOC36 /POINTER TO 36 OR 37 LOCATOR ROUTINE 1784 072203* LOC36=3121// 1785 072203* 2554 PT0S1DA,T0S1DAT-1 /TRACK 0 SECTORS 1-2 VALIDATION DATA POINTER 1786 072204* T0S1DAT=2555// 1787 072204* 1788 072204* / ******** 1789 072204* 1790 072204* / CONTINUATION OF SUBROUTINE CALL FROM 0176. 1791 072204* 1792 072204* 7041 SUBR, CIA// 1793 072205* 3064 3064// 1794 072206* 6214 RDF //GET DATA FIELD 1795 072207* 1200 TAD CIDF/(CIF CDF 00) //TURN INTO CIF CDF INSTRUCTION 1796 072210* 3330 DCA SUBCDF //STORE IN-LINE 1797 072211* SUBCDF=2330// 1798 072211* 3060 DCA CCNT //CLEAR DELIMITER CHARACTER SEARCH COUNT 1799 072212* 4734 4734// 1800 072213* 5221 5221// 1801 072214* 1101 1101// 1802 072215* 4555 4555// 1803 072216* 4320 4320// 1804 072217* 5322 5322// 1805 072220* 5230 5230// 1806 072221* //SUBR, DCA SUBAC /SAVE PASSED AC 1807 072221* 6750 SEL /SELECT FIRST RX50 PAIR 1808 072222* 6755 SDN /SKIP ON, CLEARING DONE FLAG 1809 072223* 0024 P24, 24 /POINTER TO 0024; THIS CAN BE SKIPPED 1810 072224* 6754 SER /SKIP ON, CLEARING ERROR FLAG 1811 072225* 0026 P26, 26 /POINTER TO 0026; THIS CAN BE SKIPPED 1812 072226* 6753 STR /SKIP ON, CLEARING TRANSFER FLAG 1813 072227* 0025 P25, 25 /POINTER TO 0025; THIS CAN BE SKIPPED 1814 072230* // RDF /GET DATA FIELD 1815 072230* // TAD CIDF/(CIF CDF 00) /TURN INTO CIF CDF INSTRUCTION 1816 072230* // DCA SUBCDF /STORE IN-LINE 1817 072230* // DCA CCNT /CLEAR DELIMITER CHARACTER SEARCH COUNT 1818 072230* // CDF 70 /GOTO OUR FIELD 1819 072230* 1107 TAD Z102/[102] /SETUP 8-BIT SILO EMPTY 1820 072231* 3053 DCA RXCMD /STASH THE COMMAND 1821 072232* 6271 CDF 70 /GOTO OUR FIELD 1822 072233* 1064 TAD 0064// 1823 072234* 1376 TAD 2376//PCOMTAB?? 1824 072235* 3163 DCA 0163// 1825 072236* 1563 TAD I 0163// 1826 072237* 3163 DCA 0163// 1827 072240* 5563 JMP I 0163// 1828 072241* // JMS VERHLT /CALL HLT PANEL VERIFY, ETC. ROUTINE 1829 072241* // JMP SUBCDF /ERROR RETURN, WE EXIT 1830 072241* 1831 072241* / NOW VERIFY THAT SETUP DATA IS VALID. 1832 072241* 1833 072241* 1135 VERPOK, TAD PTSTBUFF/[TSTBUFF] /SETUP THE 1834 072242* // TAD PCALLSUB/[CALLSUB] /SETUP THE 1835 072242* 3010 DCA XR0 /DATA STORAGE POINTER 1836 072243* / CLA /WANT SECTOR 1 FIRST (1-1) 1837 072243* 4554 JMS I PFREAD/(FREAD) /CALL FLOPPY READ ROUTINE 1838 072244* 0044 0044// -2-1 /TWO SECTORS (1-2) 1839 072245* 7776 7776// 0 /TRACK 00 1840 072246* 5322 JMP 2322// /COULDN'T DO IT 1841 072247* // JMP SUBCDF /COULDN'T DO IT 1842 072247* 1135 TAD PTSTBUFF/[TSTBUFF] /SETUP THE 1843 072250* // TAD PCALLSUB/[CALLSUB] /SETUP THE 1844 072250* 3010 DCA XR0 /READ-IN DATA POINTER 1845 072251* 1203 TAD PT0S1DAT/(T0S1DAT-1) /SETUP THE 1846 072252* 3011 DCA XR1 /VALIDATION DATA POINTER 1847 072253* 1411 SETVLUP,TAD I XR1 /GET A TEST WORD 1848 072254* 7450 SNA /END OF LIST 1849 072255* 5262 JMP SETOK /YES, WE'RE DONE 1850 072256* 1410 TAD I XR0 /COMPARE TO READ-IN DATA 1851 072257* 7640 SZA CLA /SKIP IF IT MATCHES 1852 072260* 5322 JMP 2322// /JUMP IF IT'S DIFFERENT 1853 072261* // JMP SUBCDF /JUMP IF IT'S DIFFERENT 1854 072261* 5253 JMP SETVLUP /KEEP GOING 1855 072262* 1856 072262* 4560 SETOK, JMS I PROWLOAD/[ROWLOAD] /CALL ROWTABLE AND REGISTER LOAD ROUTINE 1857 072263* 4733 JMS I PVIDCLR/(VIDCLR) /CLEAR VIDEO DATA 1858 072264* 6201 CDF 00 /GOTO DATA FIELD 1859 072265* 1623 TAD I P24/(0024) /GET 00024 1860 072266* 3024 DCA TEMP1 /SAVE IT 1861 072267* 1627 TAD I P25/(0025) /GET 00025 1862 072270* 3025 DCA TEMP2 /SAVE IT 1863 072271* 1625 TAD I P26/(0026) /GET 00026 1864 072272* 3026 DCA TEMP3 /SAVE IT 1865 072273* 6271 NEXTPRM,CDF 70 /BACK TO OUR FIELD 1866 072274* 4602 JMS I PLOC36/(LOC36) /LOCATE A (36 OR 37) DELIMITER 1867 072275* 4601 JMS I PPRMPRT/(PRMPRT) /PRINT CURRENT PARAMETER VALUES 1868 072276* 1869 072276* 4552 NEXTCHR,JMS I PKBDIN/[KBDIN] /GET A CHARACTER 1870 072277* PKBDIN=0152// 1871 072277* 3064 METRENT,DCA 0064//SUBAC /SAVE LATEST CHARACTER 1872 072300* 1332 TAD PCOMTABLE/(COMTABLE-1) /SETUP THE 1873 072301* 3010 DCA XR0 /TABLE POINTER 1874 072302* 1410 COMSRCH,TAD I XR0 /GET A WORD 1875 072303* // SNA /SKIP IF NOT AT END OF LIST 1876 072303* // JMP NEXTCHR /END OF LIST, IGNORE AND GET ANOTHER 1877 072303* 7440 SZA// /SKIP IF AT END OF LIST 1878 072304* 5307 JMP .+3// 1879 072305* 3055 DCA 0055// 1880 072306* 5276 JMP 2276// 1881 072307* 1064 TAD SUBAC /COMPARE TO CHARACTER 1882 072310* SUBAC=0064 1883 072310* 7650 SNA CLA /SKIP IF NOT A MATCH 1884 072311* 5314 JMP FINDIT /JUMP IF IT MATCHES 1885 072312* 2010 ISZ XR0 /BUMP PAST DISPATCH ADDRESS 1886 072313* 5302 JMP COMSRCH /TRY AGAIN 1887 072314* 1888 072314* 1410 FINDIT, TAD I XR0 /GET DISPATCH ADDRESS 1889 072315* 3065 DCA DISPADR /STASH IT 1890 072316* DISPADR=0065 1891 072316* 1064 TAD SUBAC /GET THE CHARACTER ITSELF AS AN ARGUMENT 1892 072317* 4465 JMS I DISPADR /DISPATCH TO ROUTINE 1893 072320* 5276 JMP NEXTCHR /NO-CHANGE RETURN, GO THERE 1894 072321* 5273 JMP NEXTPRM /POSSIBLE-CHANGE RETURN, GO THERE 1895 072322* 4734 JMS I 2334//via 4734 to 0654// 1896 072323* 5330 JMP SUBCDF//5330//FOUND A ZERO 1897 072324* 1105 TAD Z20// 1898 072325* 4555 JMS I 155//4555//goes to 4242 1899 072326* 4600 4600// 1900 072327* 0045 L45, 45 /CONSTANT 0045 1901 072330* 7402 SUBCDF, HLT+.-. /DOUBLE-SKIP RETURN; WILL BE CIF CDF RETURN 1902 072331* 5576 JMP I SUB176 /RETURN TO CALLER 1903 072332* 1904 072332* //SUBAC, .-. /AC DATA SAVED HERE 1905 072332* //DISPADR,.-. /DISPATCH ADDRESS TEMPORARY 1906 072332* 2535 PCOMTAB,COMTABLE-1 /POINTER TO COMMAND DISPATCH TABLE 1907 072333* COMTAB=2536// 1908 072333* 2515 PVIDCLR,VIDCLR /POINTER TO VIDEO CLEAR ROUTINE 1909 072334* VIDCLR=2515// 1910 072334* 0654 0654// 1911 072335* //VRS: This isn't quite next! 1912 072335* 1913 072335* / ******** 1914 072335* 1915 072335* VERHLT, //.-. /READ AND VERIFY HALT PANEL DATA 1916 072335* // TAD SUBAC /GET PASSED ARGUMENT 1917 072335* // SNA CLA /SKIP IF SET 1918 072335* // JMP VERPOK /JUMP IF NOT 1919 072335* 1135 TAD PTSTBUFF/[TSTBUFF] /SETUP THE 1920 072336* // TAD PCALLSUB/[CALLSUB] /SETUP THE 1921 072336* 3010 DCA XR0 /DATA STORAGE POINTER 1922 072337* // NL0003 /SET OFFSET FOR SECTOR 4 1923 072337* 4554 JMS I PFREAD/(FREAD) /CALL FLOPPY READ ROUTINE 1924 072340* 0047 0047// -4-1 /ONE SECTOR (4) 1925 072341* 7777 7777// 0 /TRACK 0 1926 072342* 5241 JMP VERPOK /COULDN'T DO IT; JUST IGNORE THE PROBLEM 1927 072343* // CDF 70 /BACK TO OUR FIELD 1928 072343* 1375 TAD PT0S4DAT/(T0S4DAT-1) /SETUP THE VALIDATION LIST ADDRESS 1929 072344* 3010 DCA XR0 /STASH THE POINTER 1930 072345* 1135 TAD PTSTBUFF/[TSTBUFF] /SETUP THE POINTER TO 1931 072346* // TAD PCALLSUB/[CALLSUB] /SETUP THE POINTER TO 1932 072346* 3011 DCA XR1 /THE READ-IN HALT PANEL DATA 1933 072347* 1410 VERLUP, TAD I XR0 /GET A TEST WORD 1934 072350* 7450 SNA /SKIP IF NOT AT END OF LSIT 1935 072351* 5356 JMP VERMATCH /JUMP IF IT MATCHES 1936 072352* 1411 TAD I XR1 /COMPARE TO READ-IN WORD 1937 072353* 7640 SZA CLA /SKIP IF IT MATCHES 1938 072354* 5241 JMP VERPOK /IGNORE THE DATA IF NO MATCH 1939 072355* 5347 JMP VERLUP /GO DO NEXT COMPARE 1940 072356* 1941 072356* 4560 VERMATC,JMS I PROWLOAD/[ROWLOAD] /CALL ROWTABLE AND REGISTER LOAD ROUTINE 1942 072357* 4733 JMS I PVIDCLR/(VIDCLR) /CLEAR VIDEO DATA 1943 072360* 4773 KAGN, JMS I PGETPARM/(GETPARM) /GET THE PARAMETER VALUES 1944 072361* 4774 JMS I PPRINTP/(PRINTP) /PRINT THE PARAMETERS IN OCTAL 1945 072362* 4552 JMS I PKBDIN/[KBDIN] /GET A KEYBOARD CHARACTER 1946 072363* 1372 TAD M175/(-175) /COMPARE TO DO KEY 1947 072364* 7450 SNA /SKIP IF DIFFERENT 1948 072365* 5322 JMP 2322//I VERHLT /TAKE FAILURE RETURN 1949 072366* 1327 TAD L45/(45) /COMPARE TO BREAK KEY 1950 072367* 7640 SZA CLA /SKIP IF IT MATCHES 1951 072370* 5360 JMP KAGN /JUMP IF NOT 1952 072371* 5241 JMP VERPOK// /JUMP IF SO 1953 072372* //VERPOK, ISZ VERHLT /BUMP TO SUCCESSFUL RETURN 1954 072372* // JMP I VERHLT /TAKE SKIP RETURN TO CALLER 1955 072372* 1956 072372* 7603 M175, -175 /CONSTANT 7603 1957 072373* 2010 PGETPAR,GETPARM /POINTER TO GETPARM ROUTINE 1958 072374* 3630 PPRINTP,PRINTP /PARAMETER PRINTOUT POINTER 1959 072375* PRINTP=3630// 1960 072375* 3526 PT0S4DA,T0S4DAT-1 /POINTER TO TRACK 0, SECTOR 4 VALIDATION LIST 1961 072376* T0S4DAT=3527// 1962 072376* 4561 4561// 1963 072377* 1964 072377* 0000 ZBLOCK 1 /EMPTY SPACE 1965 072400* 1966 072400* PAGE 1967 072400* 1968 072400* / ******** 1969 072400* 1970 072400* / HANDLER FOR SELECT KEY IN SETUP ROUTINE. 1971 072400* 1972 072400* 0000 SELCT, .-. /SELECT LATEST ITEM 1973 072401* 7200 CLA /CLEAN UP 1974 072402* 1060 TAD CCNT /GET SEARCH POSITIION LIMIT 1975 072403* 1260 TAD M16/(-16) /COMPARE TO LIMIT 1976 072404* 7700 SMA CLA /SKIP IF LESS THAN THIS MAXIMUM 1977 072405* 5234 JMP TRYPRATE /JUMP IF NOT 1978 072406* 1060 TAD CCNT /GET POSITION 1979 072407* 7110 CLL RAR /%2 1980 072410* 7040 CMA /INVERT IT 1981 072411* 3257 DCA SELSHFT /SAVE AS COUNTER 1982 072412* 7120 STL /SET A STOP BIT JUST IN CASE 1983 072413* 7004 SHFTLUP,RAL /MOVE UP 1984 072414* 2257 ISZ SELSHFT /DONE ENOUGH? 1985 072415* 5213 JMP SHFTLUP /NO, GO BACK 1986 072416* 7421 MQL /SAVE FOR NOW 1987 072417* 7701 CLA MQA /GET IT BACK 1988 072420* 7040 CMA /INVERT IT 1989 072421* 0024 AND TEMP1 /SAVE THE OTHER BITS 1990 072422* 3024 DCA TEMP1 /STORE BACK FOR NOW 1991 072423* 1060 TAD CCNT /GET THE POSITION COUNT 1992 072424* 7110 CLL RAR /%2 1993 072425* 7200 CLA /CLEAN UP 1994 072426* 1024 TAD TEMP1 /GET THE OTHER BITS 1995 072427* 7430 SZL /SKIP IF BIT IS OFF 1996 072430* 7501 MQA /ELSE OR IN SELECTED VALUE 1997 072431* 3024 DCA TEMP1 /SAVE COMPOSITE VALUE 1998 072432* 2200 SELXIT, ISZ SELCT /TAKE SKIP RETURN 1999 072433* 5600 JMP I SELCT /RETURN TO COMMAND ROUTINE 2000 072434* 2001 072434* 1060 TRYPRAT,TAD CCNT /GET POSITION 2002 072435* 1260 TAD M16/(-16) /ADD ON UPPER LIMIT 2003 072436* 1261 TAD L7773/(-5) /ADD ON EXTRA LIMIT 2004 072437* 7540 SMA SZA /SKIP IF IN THIS RANGE 2005 072440* 5247 JMP DOCOMRATE /JUMP IF NOT 2006 072441* 1262 TAD L5/(5) /SUBTRACT RELATIVE LIMIT 2007 072442* 1263 TAD PBTABLE/(BTABLE) /ADD ON TABLE BASE 2008 072443* 3025 DCA TEMP2 /STASH THE POINTER 2009 072444* 1425 TAD I TEMP2 /GET THE PROPER BAUD RATE VALUE 2010 072445* 3025 DCA TEMP2 /STASH IT 2011 072446* 5232 JMP SELXIT /FINISH THERE 2012 072447* 2013 072447* 3026 DOCOMRA,DCA TEMP3 /SAVE RELATIVE POSITION 2014 072450* 7240 NL7777 /-1 2015 072451* 1026 TAD TEMP3 /NOW HAVE PROPER RELATIVE VALUE 2016 072452* 1263 TAD PBTABLE/(BTABLE) /ADD ON TABLE ADDRESS 2017 072453* 3026 DCA TEMP3 /STASH THE POINTER 2018 072454* 1426 TAD I TEMP3 /GET THE PROPER BAUD RATE VALUE 2019 072455* 3026 DCA TEMP3 /STASH IT 2020 072456* 5232 JMP SELXIT /CONTINUE THERE 2021 072457* 2022 072457* / ******** 2023 072457* 2024 072457* 0000 SELSHFT,.-. /SELECT ROUTINE COUNTER 2025 072460* 7762 M16, -16 /CONSTANT 7762 2026 072461* 7773 L7773, -5 /CONSTANT 7773 2027 072462* 0005 L5, 5 /CONSTANT 0005 2028 072463* 2464 PBTABLE,BTABLE /POINTER TO BAUD RATE TABLE 2029 072464* 2030 072464* / BAUD RATE TABLE FOR SUPPORTED RATES. 2031 072464* 2032 072464* 0005 BTABLE, 05 /300 BAUD 2033 072465* 0006 06 /600 BAUD 2034 072466* 0007 07 /1200 BAUD 2035 072467* 0012 12 /2400 BAUD 2036 072470* 0014 14 /4800 BAUD 2037 072471* 0016 16 /9600 BAUD 2038 072472* 2039 072472* / ******** 2040 072472* 2041 072472* 0000 KBDIN, .-. /COMMAND INPUT ROUTINE 2042 072473* 6111 KBISF /FLAG UP? 2043 072474* 5273 JMP .-1 /NO, WAIT FOR IT 2044 072475* 6116 KBIRB /YES, READ IT IN 2045 072476* 0114 AND Z377/[377] /JUST EIGHT BITS 2046 072477* 5672 JMP I KBDIN /RETURN 2047 072500* 2048 072500* 2141 ARXWAIT,RXWAIT /POINTER TO RX50 WAIT ROUTINE 2049 072501* 2050 072501* 0000 RXRDY, .-. /DRIVE READY CHECK ROUTINE 2051 072502* 1103 TAD Z12/[12] /GET READ STATUS VALUE 2052 072503* 6751 LCD /LOAD THE COMMAND 2053 072504* 4700 JMS I ARXWAIT/(RXWAIT) /WAIT FOR IT 2054 072505* 5701 JMP I RXRDY /TRANSFER FLAG CAME UP, FORGET IT 2055 072506* 7410 SKP /DONE FLAG CAME UP, THERE'S HOPE 2056 072507* 5701 JMP I RXRDY /ERROR OR TIME-OUT 2057 072510* 6752 XDR /GET STATUS 2058 072511* 0110 AND Z200/[200] /JUST DRIVE READY BIT 2059 072512* 7640 SZA CLA /SKIP IF NOT READY 2060 072513* 2301 ISZ RXRDY /ELSE TAKE SKIP RETURN 2061 072514* 5701 JMP I RXRDY /RETURN EITHER WAY 2062 072515* 2063 072515* / ******** 2064 072515* 2065 072515* 0000 VIDCLR, .-. /VIDEO CLEAR (?) ROUTINE 2066 072516* 7333 NL6000 /SET BOTH CONTROL BITS 2067 072517* 6126 VIDCON /LOAD CONTROL REGISTER 2068 072520* 7200 CLA /CLEAN UP 2069 072521* 3010 DCA XR0 /CLEAR INNER COUNTER 2070 072522* 7346 NL7775 /SET THE 2071 072523* 3011 DCA XR1 /OUTER COUNTER 2072 072524* 2010 VIDWAIT,ISZ XR0 /WAITING ENOUGH? 2073 072525* 5324 JMP VIDWAIT /NO, KEEP GOING 2074 072526* 2011 ISZ XR1 /WAITED TOO LONG? 2075 072527* 5324 JMP VIDWAIT /NO, KEEP GOING 2076 072530* 6126 VIDCON /RESET TO NORMAL VIDEO MODE 2077 072531* 5715 JMP I VIDCLR /RETURN 2078 072532* 2079 072532* / SLUSHWARE TEST VALIDATION DATA. 2080 072532* 2081 072532* 1577 SLTDAT, -6201 2082 072533* 7745 -0033 2083 072534* 7701 -0077 2084 072535* 0000 0 /THIS ENDS THE LIST 2085 072536* 2086 072536* / ******** 2087 072536* 2088 072536* / COMMAND DISPATCH TABLE FOR BUILT-IN COMMANDS. 2089 072536* 2090 072536* BOOTIT=3201//Error if not 2091 072536* DOKEY= 3251//Error if not 2092 072536* MOVLEF=3075//Error if not 2093 072536* MOVRIT=3111//Error if not 2094 072536* RETURN=3406//Error if not 2095 072536* METRON=3400//Error if not 2096 072536* 7564 COMTABL,-214; BOOTIT /REMOVE 072537* 3201 2097 072540* 7563 -215; SELCT /SELECT 072541* 2400 2098 072542* 7603 -175; DOKEY /DO 072543* 3251 2099 072544* 7531 -247; MOVLEFT /LEFT ARROW 072545* 3075 2100 072546* 7530 -250; MOVRITE /RIGHT ARROW 072547* 3111 2101 072550* 7503 -275; RETURN /RETURN 072551* 3406 2102 072552* 7514 -264; METRONOME /METRONOME 072553* 3400 2103 072554* 0000 0 /THIS ENDS THE LIST 2104 072555* 2105 072555* / ******** 2106 072555* 2107 072555* / VALIDATION DATA FOR TRACK 0, SECTORS 1-2. 2108 072555* 2109 072555* 7777 T0S1DAT,-1 2110 072556* 7655 -"S!200 2111 072557* 7673 -"E!200 2112 072560* 7654 -"T!200 2113 072561* 7653 -"U!200 2114 072562* 7660 -"P!200 2115 072563* 0000 0 /THIS ENDS THE LIST 2116 072564* 2117 072564* / VALIDATION DATA FOR TRACK 0, SECTORS 7-10. 2118 072564* 2119 072564* 7777 T0S7DAT,-1 2120 072565* 7653 -"U!200 2121 072566* 7675 -"C!200 2122 072567* 7671 -"G!200 2123 072570* 7656 -"R!200 2124 072571* 7677 -"A!200 2125 072572* 7663 -"M!200 2126 072573* 7776 -2 2127 072574* 0000 0 /THIS ENDS THE LIST 2128 072575* 2129 072575* / VALIDATION DATA FOR TRACK 0, SECTOR 3. 2130 072575* 2131 072575* 7777 T0S3DAT,-1 2132 072576* 7665 -"K!200 2133 072577* 7676 -"B!200 2134 072600* 7674 -"D!200 2135 072601* 7676 -"B!200 2136 072602* 7656 -"R!200 2137 072603* 7674 -"D!200 2138 072604* 7776 -2 2139 072605* 0000 0 /THIS ENDS THE LIST 2140 072606* 2141 072606* / ******** 2142 072606* 2143 072606* 7771 M7, -7 /CONSTANT 7771 2144 072607* 2145 072607* 0000 PRMPRT, .-. /SETUP PARAMETER OUTPUT ROUTINE 2146 072610* 6271 CDF 70 /BACK TO OUR FIELD 2147 072611* 3056 DCA ROW /CLEAR ROW 2148 072612* 3057 DCA COLUMN /CLEAR COLUMN 2149 072613* 1024 TAD TEMP1 /GET FIRST PARAMETER VALUE 2150 072614* 3301 DCA PRMTM1 /SAVE IT 2151 072615* 1135 TAD PTSTBUFF/[TSTBUFF] /SETUP THE 2152 072616* // TAD PCALLSUB/[CALLSUB] /SETUP THE 2153 072616* 3010 DCA XR0 /BUFFER POINTER 2154 072617* 1206 TAD M7/(-7) /SETUP THE 2155 072620* 3011 DCA XR1 /BUFFER COUNT 2156 072621* 1410 HEDLUP, TAD I XR0 /GET A CHARACTER 2157 072622* 1133 TAD Z7776/[-2] /COMPARE TO HEADER END CODE 2158 072623* 7640 SZA CLA /SKIP IF IT MATCHES 2159 072624* 5221 JMP HEDLUP /ELSE KEEP GOING 2160 072625* 1011 NXTPRM, TAD XR1 /GET CURRENT COUNT 2161 072626* 7650 SNA CLA /SKIP IF STILL SOME LEFT 2162 072627* 5264 JMP PRTRATE /JUMP IF NOT 2163 072630* 1301 TAD PRMTM1 /GET FIRST PARAMETER VALUE 2164 072631* 7110 CLL RAR /MOVE OVER 2165 072632* 3301 DCA PRMTM1 /STORE BACK 2166 072633* 7420 SNL /SKIP IF SET 2167 072634* 7201 NL0001 /ELSE SET INCREMENT 2168 072635* 1127 TAD Z7741/[-37] /NOW HAVE -36 IF CLEAR, -37 IF SET 2169 072636* 3302 DCA PRMTM2 /SAVE IT 2170 072637* 1410 PRMLUP, TAD I XR0 /GET A CHARACTER 2171 072640* 7421 MQL /LOAD IT FOR PRINTING LATER 2172 072641* 7701 CLA MQA /GET IT BACK 2173 072642* 1302 TAD PRMTM2 /COMPARE TO DESIRED DELIMITER 2174 072643* 7650 SNA CLA /SKIP IF OTHER 2175 072644* 5247 JMP ATDELIM /JUMP IF IT MATCHES 2176 072645* 4556 JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2177 072646* 5237 JMP PRMLUP /KEEP GOING 2178 072647* 2179 072647* 2011 ATDELIM,ISZ XR1 /COUNT THIS ONE 2180 072650* 7000 NOP /IN CASE IT SKIPS 2181 072651* 4556 PRTIT, JMS I PCHRPRT/CHRPRT] /PRINT THE CHARACTER 2182 072652* 1410 TAD I XR0 /GET THE NEXT CHARACTER 2183 072653* 7421 MQL /LOAD IT FOR PRINTING 2184 072654* 7701 CLA MQA /GET IT BACK 2185 072655* 1127 TAD Z7741/[-37] /COMPARE TO DELIMITER 2186 072656* 7740 SMA SZA CLA /SKIP IF THAT OR LESS 2187 072657* 5262 JMP REVIT /JUMP IF NOT 2188 072660* 4556 JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2189 072661* 5225 JMP NXTPRM /GO DO NEXT PARAMETER 2190 072662* 2191 072662* 1115 REVIT, TAD Z400/[400] /ADD ON REVERSE VIDEO BIT 2192 072663* 5251 JMP PRTIT /CONTINUE THERE 2193 072664* 2194 072664* 1025 PRTRATE,TAD TEMP2 /GET SECOND PARAMETER 2195 072665* 4303 JMS NPRT /OUTPUT IT 2196 072666* 1026 TAD TEMP3 /GET THIRD PARAMETER 2197 072667* 4303 JMS NPRT /OUTPUT IT 2198 072670* 1410 OUTLUP, TAD I XR0 /GET A CHARACTER 2199 072671* 7421 MQL /LOAD FOR PRINTING 2200 072672* 7701 CLA MQA /GET IT BACK 2201 072673* 1132 TAD Z7775/[7775] /COMPARE TO END CHARACTER 2202 072674* 7650 SNA CLA /SKIP IF NOT AT END 2203 072675* 5607 JMP I PRMPRT /RETURN IF AT END 2204 072676* 4556 JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2205 072677* 5270 JMP OUTLUP /GO DO ANOTHER 2206 072700* 2207 072700* / UNREFERENCED LOCATION. PERHAPS ERRONEOUS NOTION THAT CHRPRT ROUTINE MIGHT 2208 072700* / SKIP OR OTHER OBSOLETE CONVENTION? 2209 072700* 2210 072700* 5607 JMP I PRMPRT /RETURN 2211 072701* 2212 072701* 0000 PRMTM1, .-. /TEMPORARY 2213 072702* 0000 PRMTM2, .-. /TEMPORARY 2214 072703* 2215 072703* / ******** 2216 072703* 2217 072703* / PRINT NUMERICAL PARAMETER ROUTINE. THE SELECTED PARAMETER IS A BAUD RATE. 2218 072703* / THE (CLOSEST TO THE) SELECTED RATE IS HIGHLIGHTED. 2219 072703* 2220 072703* 0000 NPRT, .-. 2221 072704* 3351 DCA NTMP /SAVE THE PASSED VALUE 2222 072705* 1351 TAD NTMP /GET IT BACK 2223 072706* 0104 AND Z17/[17] /JUST RATE BITS 2224 072707* 1352 TAD PCLIST/(CLIST) /ADD ON TABLE BASE 2225 072710* 3351 DCA NTMP /STASH THE POINTER 2226 072711* 1751 TAD I NTMP /GET THE PROPER COUNT 2227 072712* 3351 DCA NTMP /STASH IT 2228 072713* 1410 NPLUP, TAD I XR0 /GET A CHARACTER 2229 072714* 7421 MQL /LOAD IT FOR PRINTING 2230 072715* 7701 CLA MQA /GET IT BACK 2231 072716* 1127 TAD Z7741/[-37] /COMPARE TO FIELD DELIMITER 2232 072717* 7450 SNA /SKIP IF NOT A MATCH 2233 072720* 5336 JMP FNDDELIM /JUMP IF IT IS 2234 072721* 7001 IAC /COMPARE TO ALTERNATE DELIMITER VALUE 2235 072722* 7650 SNA CLA /SKIP IF NOT A MATCH THERE EITHER 2236 072723* 5336 JMP FNDDELIM /JUMP IF IT IS A MATCH 2237 072724* 4556 NEXTREG,JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2238 072725* 5313 JMP NPLUP /GO DO NEXT 2239 072726* 2240 072726* 4556 MOREPRM,JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2241 072727* 7701 CLA MQA /GET THE CHARACTER 2242 072730* 1125 TAD Z7766/[7766] /COMPARE TO MASTER DELIMITER 2243 072731* 7650 SNA CLA /SKIP IF NOT AT END 2244 072732* 5703 JMP I NPRT /RETURN IF AT END 2245 072733* 1410 TAD I XR0 /GET NEXT CHARACTER 2246 072734* 7421 MQL /LOAD IT FOR PRINTING 2247 072735* 5326 JMP MOREPRM /KEEP GOING 2248 072736* 2249 072736* / COMES HERE IF FIELD DELIMITER FOUND. 2250 072736* 2251 072736* 2351 FNDDELI,ISZ NTMP /FOUND ENOUGH REGULAR FIELDS? 2252 072737* 5324 JMP NEXTREG /NO, KEEP GOING 2253 072740* 4556 BOLDLP, JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2254 072741* 1410 TAD I XR0 /GET ANOTHER CHARACTER 2255 072742* 7421 MQL /LOAD IT FOR PRINTING 2256 072743* 7701 CLA MQA /GET IT BACK 2257 072744* 1127 TAD Z7741/[-37] /COMPARE TO FIELD DELIMITER 2258 072745* 7750 SPA SNA CLA /SKIP IF HIGHER 2259 072746* 5326 JMP MOREPRM /JUMP IF NOT 2260 072747* 1115 TAD Z400/[400] /GET REVERSE VIDEO BIT 2261 072750* 5340 JMP BOLDLP /GO DO NEXT 2262 072751* 2263 072751* 0000 NTMP, .-. /TEMPORARY 2264 072752* 2075 PCLIST, CLIST /POINTER TO REGULAR FIELD COUNT LIST 2265 072753* 2266 072753* / SLUSHWARE CODE VALIDATION ROUTINE. 2267 072753* 2268 072753* 0000 SLCHECK,.-. /SLUSHWARE VALIDATION ROUTINE 2269 072754* 6214 RDF /GET DATA FIELD 2270 072755* 1121 TAD ZCDF/[CDF] /FORM CDF INSTRUCTION 2271 072756* 3365 DCA SLUCDF /STORE IN-LINE 2272 072757* 1375 TAD PSLTDAT/(SLTDAT-1) /SETUP THE 2273 072760* 3011 DCA XR1 /VALIDATION POINTER 2274 072761* 6271 CDF 70 /BACK TO OUR FIELD 2275 072762* 1411 SLNEXT, TAD I XR1 /GET A TEST WORD 2276 072763* 7450 SNA /SKIP IF NOT AT END OF LIST 2277 072764* 5373 JMP SLGOOD /JUMP IF AT END 2278 072765* 6201 SLUCDF, CDF 00+.-. /WILL BE CDF XX INSTRUCTION 2279 072766* 1410 TAD I XR0 /COMPARE TO READ-IN DATA 2280 072767* 6271 CDF 70 /BACK TO OUR FIELD 2281 072770* 7650 SNA CLA /SKIP IF NOT A MATCH 2282 072771* 5362 JMP SLNEXT /JUMP IF IT MATCHES 2283 072772* 5753 JMP I SLCHECK /TAKE FAILURE RETURN 2284 072773* 2285 072773* 2353 SLGOOD, ISZ SLCHECK /BUMP TO GOOD RETURN 2286 072774* 5753 JMP I SLCHECK /TAKE SKIP RETURN TO CALLER 2287 072775* 2288 072775* 2531 PSLTDAT,SLTDAT-1 /POINTER TO SLUSHWARE TEST DATA 2289 072776* 2290 072776* 0000 ZBLOCK 2 /EMPTY SPACE 072777* 0000 2291 073000* 2292 073000* PAGE 2293 073000* 2294 073000* / ******** 2295 073000* 2296 073000* 3661 HIGHROW,ROWADR+1 /POINTER TO ROWTABLE (HIGH-ORDER) 2297 073001* 2030 L2030, 2030 /CONSTANT 2030 2298 073002* 0031 L31, 31 /CONSTANT 0031 2299 073003* 7747 M31, -31 /CONSTANT 7747 2300 073004* 2301 073004* 0000 CHRPRT, .-. /CHARACTER PRINT ROUTINE 2302 073005* 3254 DCA ATTRVAL /SAVE PASSED ATTRIBUTE VALUE 2303 073006* 7701 CLA MQA /GET THE CHARACTER 2304 073007* 1125 TAD Z7766/[-"J!300] /COMPARE TO 2305 073010* 7450 SNA /SKIP IF OTHER 2306 073011* 5252 JMP JUSTPOS /JUMP IF IT MATCHES 2307 073012* 1132 TAD Z7775/[-"M+"J] /COMPARE TO 2308 073013* 7650 SNA CLA /SKIP IF NO MATCH 2309 073014* 5252 JMP JUSTPOS /JUMP IF IT MATCHES 2310 073015* 1056 TAD ROW /GET DESIRED ROW NUMBER 2311 073016* 7104 CLL RAL /*2 2312 073017* 1200 TAD HIGHROW/(ROWADR+1) /POINT TO PROPER HIGH-ORDER ADDRESS 2313 073020* 3255 DCA CHARADR /STASH THE POINTER 2314 073021* 6211 CDF 10 /GOTO ROWTABLE FIELD 2315 073022* 1655 TAD I CHARADR /GET THE HIGH-ORDER ROW ADDRESS 2316 073023* 6271 CDF 70 /BACK TO OUR FIELD 2317 073024* 3255 DCA CHARADR /STASH THE POINTER 2318 073025* 1255 TAD CHARADR /GET HIGH-ORDER ROW ADDRESS 2319 073026* 7110 CLL RAR /MOVE OVER 2320 073027* 0201 AND L2030/(30) /JUST FIELD BITS (CLOSE ENOUGH) 2321 073030* 1121 TAD ZCDF/[CDF] /FORM CDF INSTRUCTION 2322 073031* 3247 DCA CHARCDF /STORE IN-LINE 2323 073032* 1255 TAD CHARADR /GET HIGH-ORDER ROW ADDRESS AGAIN 2324 073033* 0104 AND Z17/[17] /JUST QUARTER-FIELD BITS 2325 073034* 7106 CLL RTL;BSW /*400 073035* 7002 2326 073036* 1057 TAD COLUMN /ADD ON DESIRED COLUMN 2327 073037* 1111 TAD Z205/[205] /ADD ON LINE BASE 2328 073040* 3255 DCA CHARADR /STASH THE POINTER 2329 073041* 7701 CLA MQA /GET THE CHARACTER 2330 073042* 1256 TAD M40/(-40) /COMPARE TO 2331 073043* 7740 SMA SZA CLA /SKIP IF OR CONTROL CHARACTER 2332 073044* 7701 CLA MQA /ELSE GET THE CHARACTER 2333 073045* 7440 SZA /SKIP IF NOT DISPLAYABLE 2334 073046* 1254 TAD ATTRVAL /ELSE ADD ON PASSED ATTRIBUTES 2335 073047* 7402 CHARCDF,HLT+.-. /WILL BE CDF 20 (OR 30) INSTRUCTION 2336 073050* 3655 DCA I CHARADR /STORE IN LINE BUFFER 2337 073051* 6271 CDF 70 /BACK TO OUR FIELD 2338 073052* 4257 JUSTPOS,JMS SCRPOS /ADVANCE SCREEN POSITION 2339 073053* 5604 JMP I CHRPRT /RETURN 2340 073054* 2341 073054* 0000 ATTRVAL,.-. /PASSED ATTRIBUTE BITS SAVED HERE 2342 073055* 0000 CHARADR,.-. /ADDRESS TEMPORARY 2343 073056* 7740 M40, -" !200 /CONSTANT 7740 2344 073057* 2345 073057* / ******** 2346 073057* 2347 073057* 0000 SCRPOS, .-. /SCREEN POSITION ADVANCE ROUTINE 2348 073060* 7701 CLA MQA /GET THE CHARACTER 2349 073061* 1125 TAD Z7766/[-"J!300] /COMPARE TO 2350 073062* 7440 SZA /SKIP IF IT MATCHES 2351 073063* 5266 JMP SCRCHK /JUMP IF NOT 2352 073064* 2056 ISZ ROW /BUMP TO NEXT ROW 2353 073065* 5657 JMP I SCRPOS /RETURN 2354 073066* 2355 073066* 1132 SCRCHK, TAD Z7775/[-"M+"J] /COMPARE TO 2356 073067* 7640 SZA CLA /SKIP IF IT MATCHES 2357 073070* 5273 JMP SCREGULAR /JUMP IF NOT 2358 073071* 3057 DCA COLUMN /CLEAR COLUMN 2359 073072* 5657 JMP I SCRPOS /RETURN 2360 073073* 2361 073073* 2057 SCREGUL,ISZ COLUMN /BUMP TO NEXT COLUMN 2362 073074* 5657 JMP I SCRPOS /RETURN 2363 073075* 2364 073075* / ******** 2365 073075* 2366 073075* / HANDLER FOR LEFT ARROW KEY IN SETUP ROUTINE. 2367 073075* 2368 073075* 0000 MOVLEFT,.-. /MOVE BACK ONE POSITION ROUTINE 2369 073076* 3055 DCA LCHAR /SAVE OUR CHARACTER FOR OTHERS 2370 073077* 1135 TAD PTSTBUFF/[TSTBUFF] /GET BUFFER POINTER 2371 073100* // TAD PCALLSUB/[CALLSUB+1-1] /GET BUFFER POINTER 2372 073100* 3010 DCA XR0 /STASH THE POINTER 2373 073101* 6271 CDF 70 /GOTO OUR FIELD 2374 073102* 7240 NL7777 /TRY TO BACKUP 2375 073103* 1060 TAD CCNT /COMPARE TO CURRENT SELECT 2376 073104* 7510 SPA /SKIP IF IT CAN BACKUP 2377 073105* 7200 CLA /ELSE FORGET IT 2378 073106* 3060 DCA CCNT /SAVE NEW POSITION 2379 073107* 4321 JMS LOC36 /LOCATE NEW DELIMITER 2380 073110* 5675 JMP I MOVLEFT /RETURN 2381 073111* 2382 073111* / ******** 2383 073111* 2384 073111* / HANDLER FOR RIGHT ARROW KEY IN SETUP ROUTINE. 2385 073111* 2386 073111* 0000 MOVRITE,.-. /MOVE FORWARD ONE POSITION ROUTINE 2387 073112* 3055 DCA LCHAR /SAVE OUR CHARACTER FOR OTHERS 2388 073113* 1060 TAD CCNT /GET CURRENT POSITION 2389 073114* 1203 TAD M31/(-31) /COMPARE TO UPPER LIMIT 2390 073115* 7710 SPA CLA /SKIP IF TOO FAR 2391 073116* 2060 ISZ CCNT /ELSE BUMP TO NEXT 2392 073117* 4321 JMS LOC36 /LOCATE NEW DELIMITER 2393 073120* 5711 JMP I MOVRITE /RETURN 2394 073121* 2395 073121* / ******** 2396 073121* 2397 073121* / THIS ROUTINE LOCATES DELIMITER (36 OR 37) CODES IN THE BUFFER. CCNT 2398 073121* / DETERMINES HOW MANY. 2399 073121* 2400 073121* 0000 LOC36, .-. /DELIMITER SEARCH ROUTINE 2401 073122* 3056 DCA ROW /CLEAR ROW 2402 073123* 3057 DCA COLUMN /CLEAR COLUMN 2403 073124* 1135 TAD PTSTBUFF/[TSTBUFF] /SETUP THE 2404 073125* // TAD PCALLSUB/[CALLSUB] /SETUP THE 2405 073125* 3010 DCA XR0 /BUFFER POINTER 2406 073126* 3011 DCA XR1 /CLEAR CHARACTER COUNTER 2407 073127* 1410 SRCHLUP,TAD I XR0 /GET A CHARACTER 2408 073130* 7421 MQL /STASH IT THERE 2409 073131* 7701 CLA MQA /GET IT BACK 2410 073132* 1127 TAD Z7741/[-37] /COMPARE TO 37 CODE 2411 073133* 7450 SNA /SKIP IF OTHER 2412 073134* 5340 JMP IS37 /JUMP IF IT MATCHES 2413 073135* 7001 IAC /COMPARE TO 36 CODE 2414 073136* 7640 SZA CLA /SKIP IF IT MATCHES 2415 073137* 5351 JMP NOTOURS /JUMP IF NOT 2416 073140* 1011 IS37, TAD XR1 /GET CHARACTER COUNT 2417 073141* 7041 CIA /INVERT FOR TEST 2418 073142* 1060 TAD CCNT /COMPARE TO LIMIT 2419 073143* 7640 SZA CLA /SKIP IF SEARCHED ENOUGH 2420 073144* 5350 JMP ISOURS /JUMP IF NOT 2421 073145* 2057 ISZ COLUMN /BUMP TO NEXT COLUMN 2422 073146* 4353 JMS CUPDATE /PLACE CURSOR THERE 2423 073147* 5721 JMP I LOC36 /RETURN 2424 073150* 2425 073150* 2011 ISOURS, ISZ XR1 /BUMP CHARACTER COUNT 2426 073151* 4257 NOTOURS,JMS SCRPOS /ADVANCE SCREEN POSITION 2427 073152* 5327 JMP SRCHLUP /KEEP GOING 2428 073153* 2429 073153* / ******** 2430 073153* 2431 073153* 0000 CUPDATE,.-. /CURSOR UPDATE ROUTINE 2432 073154* 1201 TAD L2030/(2030) /GET VERTICAL CURSOR REGISTER VALUE 2433 073155* 6122 LSCREG /LOAD REGISTER SELECT 2434 073156* 7200 CLA /CLEAN UP 2435 073157* 1056 TAD ROW /GET CURRENT ROW 2436 073160* 6124 VLOAD /LOAD CURSOR VERTICAL POSITION 2437 073161* 7200 CLA /CLEAN UP 2438 073162* 1202 TAD L31/(31) /GET HORIZONTAL CURSOR REGISTER VALUE 2439 073163* 6122 LSCREG /LOAD REGISTER SELECT 2440 073164* 7200 CLA /CLEAN UP 2441 073165* 1057 TAD COLUMN /GET CURRENT COLUMN 2442 073166* 6124 VLOAD /LOAD CURSOR HORIZONTAL POSITION 2443 073167* 7200 CLA /CLEAN UP 2444 073170* 5753 JMP I CUPDATE /RETURN 2445 073171* 2446 073171* 0000 ZBLOCK 7 /EMPTY SPACE 073172* 0000 073173* 0000 073174* 0000 073175* 0000 073176* 0000 073177* 0000 2447 073200* 2448 073200* PAGE 2449 073200* 2450 073200* / ******** 2451 073200* 2452 073200* 3153 PCUPDAT,CUPDATE /POINTER TO CURSOR UPDATE ROUTINE 2453 073201* 2454 073201* / HANDLER FOR REMOVE KEY IN SETUP ROUTINE. 2455 073201* 2456 073201* 0000 BOOTIT, .-. /REMOVE KEY ROUTINE 2457 073202* 7200 CLA /CLEAN UP 2458 073203* 4650 JMS I AVIDCLR/(VIDCLR) /CLEAR VIDEO DATA 2459 073204* 6271 CDF 70 /GOTO OUR FIELD 2460 073205* 3054 DCA 0054// 2461 073206* 6755 6755// 2462 073207* 0023 C23, 23 /CONSTANT 0023 2463 073210* 3056 DCA ROW /CLEAR ROW 2464 073211* 3057 DCA COLUMN /CLEAR COLUMN 2465 073212* 4600 JMS I PCUPDATE/(CUPDATE) /UPDATE CURSOR POSITION 2466 073213* 1135 TAD PTSTBUFF/[TSTBUFF] /SETUP THE 2467 073214* // TAD PCALLSUB/[CALLSUB] /SETUP THE 2468 073214* 3010 DCA XR0 /DATA POINTER 2469 073215* 7346 NL7775 /SETUP THE 2470 073216* 3011 DCA XR1 /DATA COUNTER 2471 073217* 1410 LOOKLP, TAD I XR0 /GET A WORD 2472 073220* 1133 TAD Z7776/[7776] /COMPARE TO VALIDATION FIELD DELIMITER 2473 073221* 7640 SZA CLA /SKIP IF IT MATCHES 2474 073222* 5217 JMP LOOKLP /ELSE KEEP GOING 2475 073223* 2011 ISZ XR1 /FOUND ENOUGH OF THEM? 2476 073224* 5217 JMP LOOKLP /NO, KEEP GOING 2477 073225* 1410 PLUP, TAD I XR0 /GET A CHARACTER 2478 073226* 7421 MQL /LOAD FOR PRINTING ROUTINE 2479 073227* 7701 CLA MQA /GET IT BACK 2480 073230* 1132 TAD Z7775/[-3] /COMPARE TO MESSAGE END CHARACTER 2481 073231* 7650 SNA CLA /SKIP IF NOT THERE YET 2482 073232* 5235 JMP PEND /JUMP IF AT END 2483 073233* 4556 JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2484 073234* 5225 JMP PLUP /KEEP GOING 2485 073235* 2486 073235* 4552 PEND, JMS I PKBDIN/[KBDIN] /GET A KEYBOARD CHARACTER 2487 073236* 1246 TAD L7603/(-175) /COMPARE TO VALUE FOR DO KEY 2488 073237* 7650 SNA CLA /SKIP IF IT DOESN'T MATCH 2489 073240* 5647 JMP I PRXOK/(RXOK) /JUMP IF IT DOES 2490 073241* 3055 DCA 0055// 2491 073242* 3060 DCA CCNT /CLEAR POSITION COUNT 2492 073243* 4650 JMS I AVIDCLR/(VIDCLR) /CLEAR VIDEO DATA 2493 073244* 2201 ISZ BOOTIT /TAKE SKIP RETURN 2494 073245* 5601 JMP I BOOTIT /RETURN TO COMMAND ROUTINE 2495 073246* 2496 073246* 7603 L7603, -175 /CONSTANT 7603 2497 073247* 0200 PRXOK, RXOK /POINTER TO RXOK ROUTINE 2498 073250* 2515 AVIDCLR,VIDCLR /POINTER TO VIDEO CLEAR ROUTINE 2499 073251* 2500 073251* / ******** 2501 073251* 2502 073251* / HANDLER FOR DO KEY IN SETUP ROUTINE. 2503 073251* 2504 073251* 0000 DOKEY, .-. /DO KEY ROUTINE 2505 073252* 3055 DCA LCHAR /SAVE CHARACTER VALUE FOR OTHERS 2506 073253* 1207 TAD C23/(23) /SETUP FOR THE 2507 073254* 3056 DCA ROW /HIGHEST ROW 2508 073255* 3057 DCA COLUMN /CLEAR COLUMN 2509 073256* 1352 TAD CM5/(-5) /SETUP THE 2510 073257* 3011 DCA XR1 /ROW COUNT 2511 073260* 1353 P1LUP, TAD M120/(-120) /SETUP THE 2512 073261* 3012 DCA XR2 /COLUMN COUNT 2513 073262* 4556 P2LUP, JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2514 073263* 2012 ISZ XR2 /DONE A LINE YET? 2515 073264* 5262 JMP P2LUP /NO, KEEP GOING 2516 073265* 3057 DCA COLUMN /YES, CLEAR COLUMN 2517 073266* 2056 ISZ ROW /BUMP TO NEXT ROW 2518 073267* 2011 ISZ XR1 /DONE ENOUGH ROW? 2519 073270* 5260 JMP P1LUP /NO, KEEP GOING 2520 073271* 1135 TAD PTSTBUFF/[TSTBUFF] /SETUP THE 2521 073272* // TAD PCALLSUB/[CALLSUB+1-1] /SETUP THE 2522 073272* 3010 DCA XR0 /DATA POINTER 2523 073273* 1132 FNDIT, TAD Z7775/[-3] /GET DELIMITER VALUE 2524 073274* 1410 TAD I XR0 /COMPARE TO LATEST 2525 073275* 7640 SZA CLA /SKIP IF IT MATCHES 2526 073276* 5273 JMP FNDIT /ELSE KEEP GOING 2527 073277* 2010 ISZ XR0 /BUMP PAST DELIMITER 2528 073300* 1207 TAD C23/(23) /SETUP FOR 2529 073301* 3056 DCA ROW /HIGHEST ROW 2530 073302* 3057 DCA COLUMN /CLEAR COLUMN 2531 073303* 1410 PNEXT, TAD I XR0 /GET A CHARACTER 2532 073304* 7421 MQL /LOAD FOR PRINTING 2533 073305* 7701 CLA MQA /GET IT BACK 2534 073306* 1132 TAD Z7775/[-3] /COMPARE TO DELIMITER 2535 073307* 7650 SNA CLA /SKIP IF NOT THERE YET 2536 073310* 5313 JMP ATEND /JUMP IF AT END OF BLURB 2537 073311* 4556 JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2538 073312* 5303 JMP PNEXT /KEEP GOING 2539 073313* 2540 073313* 4552 ATEND, JMS I PKBDIN/[KBDIN] /GET A KEYBOARD CHARACTER 2541 073314* 7041 CIA /INVERT IT 2542 073315* 1055 TAD LCHAR /COMPARE TO OUR VALUE (DO KEY) 2543 073316* 7650 SNA CLA /SKIP IF OTHER 2544 073317* 5324 JMP DOIT /JUMP IF IT MATCHES 2545 073320* BMPRET,// 2546 073320* 3055 DCA 0055// 2547 073321* 4650 JMS I AVIDCLR/(VIDCLR) /CLEAR VIDEO DATA 2548 073322* 2251 NOCRET, ISZ DOKEY /BUMP RETURN ADDRESS 2549 073323* 5651 JMP I DOKEY /TAKE SKIP RETURN ON USER ABORT 2550 073324* 2551 073324* 1122 DOIT, TAD PWRIBUFF/[WRIBUFFER+1-1]/SETUP THE 2552 073325* 3010 DCA XR0 /DATA POINTER 2553 073326* 7305 NL002A /SETUP 12-BIT EMPTY SILO COMMAND VALUE 2554 073327* 3053 DCA RXCMD /STASH THE COMMAND 2555 073330* 6231 CDF 30 /GOTO DATA FIELD 2556 073331* / CLA /SET AC T0 1-1 FOR FIRST SECTOR 2557 073331* 4554 JMS I PFREAD/(FREAD) /CALL FLOPPY READ ROUTINE 2558 073332* 0020 0020// -1-1 /WANT ONE SECTOR 2559 073333* 7777 7777//L116, 116 /TRACK 78 2560 073334* 5347 JMP SLUBAD//NOCRET /COULDN'T DO IT, FORGET IT 2561 073335* 1122 TAD PWRIBUFF/[WRIBUFFER+1-1]/GET BUFFER POINTER 2562 073336* 7001 IAC /MOVE TO NEXT POSITION 2563 073337* 3010 DCA XR0 /STASH THE POINTER 2564 073340* 6231 CDF 30 /GOTO BUFFER FIELD 2565 073341* 4561 JMS I PSLCHECK/(SLCHECK) /ENSURE SLUSHWARE IS VALID 2566 073342* 5347 JMP SLUBAD /FORGET IT, BAD SLUSHWARE 2567 073343* 3010 DCA XR0 /SETUP POINTER TO 0001 2568 073344* 4754 JMS I PPARMOVE/(PARMOVE) /MOVE IN THE NEW PARAMETERS 2569 073345* / CLA /SET 12-BIT FILL VALUE 2570 073345* // LCD /LOAD THE COMMAND FOR FILLING 2571 073345* 4755 LODLUP, JMS I 3355//LRXWAIT/(RXWAIT) /CALL RX50 WAIT ROUTINE 2572 073346* // JMP LDTRANS /TRANSFER FLAG CAME UP 2573 073346* // JMP LDDONE /DONE FLAG CAME UP 2574 073346* // JMP I PFERR/(FERR) /ERROR, GO COMPLAIN THERE 2575 073346* 2576 073346* //LDTRANS,CDF 30 /GOTO BUFFER FIELD 2577 073346* // TAD I XR0 /GET A WORD 2578 073346* // XDR /FILL IT 2579 073346* // JMP LODLUP /KEEP GOING 2580 073346* 2581 073346* //LDDONE, TAD L116/(116) /SETUP TRACK 78 2582 073346* // DCA T1 /STASH IT 2583 073346* // NL0001 CLL /SETUP THE 2584 073346* // DCA TINC /SECTOR NUMBER 2585 073346* // NL0004 /SET WRITE FUNCTION 2586 073346* // CDF 70 /BACK TO OUR FIELD 2587 073346* // JMS I PRXCOMD/[RXCOMD] /GO DO THE WRITE COMMAND 2588 073346* // SKP /SKIP IF IT WAS OK 2589 073346* // JMP BMPRET /JUMP IF NOT 2590 073346* // SER /ANY ERRORS? 2591 073346* // SKP /SKIP IF NOT 2592 073346* // JMP BMPRET /JUMP IF SO 2593 073346* 7000 NOP// 2594 073347* 2251 SLUBAD, ISZ DOKEY /TAKE THE 2595 073350* 2251 ISZ DOKEY /DOUBLE-SKIP 2596 073351* 5651 JMP I DOKEY /RETURN 2597 073352* 2598 073352* //ASLCHEC,SLCHECK /POINTER TO SLUSHWARE VALIDATION ROUTINE 2599 073352* //LFREAD, FREAD /POINTER TO FREAD ROUTINE 2600 073352* 7773 CM5, -5 /CONSTANT 7773 2601 073353* 7660 M120, -120 /CONSTANT 7660 2602 073354* 3420 PPARMOV,PARMOVE /POINTER TO PARAMETER MOVE ROUTINE 2603 073355* PARMOVE=3420//Error if not 2604 073355* //VRS: BUGBUG: Where are we really calling here? (4324) 2605 073355* 4324 4324// 2606 073356* //LRXWAIT,RXWAIT /POINTER TO RX50 WAIT ROUTINE 2607 073356* //PFERR, FERR /POINTER TO ERROR ROUTINE 2608 073356* 2609 073356* //VRS: Not sure what this is. 2610 073356* 0000 0000// 2611 073357* 1130 1130// 2612 073360* 3012 DCA XR2// 2613 073361* 6276 SPD// /FORCE DF TO REFER TO CP MEMORY 2614 073362* 6271 CDF 70// 2615 073363* 1410 TAD I XR0// 2616 073364* 6201 CDF 00// 2617 073365* 6266 CPD// /FORCE DF TO REFER TO MAIN MEMORY 2618 073366* 3411 DCA I XR1// 2619 073367* 2012 ISZ XR2// 2620 073370* 5361 JMP 3361// 2621 073371* 5756 JMP I 3356// 2622 073372* 2623 073372* 0000 ZBLOCK 6 /UNUSED 073373* 0000 073374* 0000 073375* 0000 073376* 0000 073377* 0000 2624 073400* 2625 073400* PAGE 2626 073400* 2627 073400* / ******** 2628 073400* 2629 073400* / HANDLER FOR METRONOME CHARACTER IN SETUP ROUTINE. 2630 073400* 2631 073400* 0000 METRONO,.-. /METRONOME KEY ROUTINE 2632 073401* 7200 CLA /CLEAN UP 2633 073402* 1055 TAD LCHAR /GET PREVIOUS CHARACTER 2634 073403* 5604 JMP I .+1/(METRENTRY) /GO THERE 2635 073404* 2277 METRENTRY /THROUGH HERE 2636 073405* 2637 073405* 2515 LVIDCLR,VIDCLR /POINTER TO VIDEO CLEAR ROUTINE 2638 073406* 2639 073406* / ******** 2640 073406* 2641 073406* / HANDLER FOR RETURN CHARACTER IN SETUP ROUTINE. 2642 073406* 2643 073406* 0000 RETURN, .-. /RETURN KEY ROUTINE 2644 073407* 4605 JMS I LVIDCLR/(VIDCLR) /CLEAR VIDEO OUT 2645 073410* 4220 JMS PARMOVE /SETUP THE PARAMETERS 2646 073411* 2206 ISZ RETURN /TAKE THE 2647 073412* 2206 ISZ RETURN /DOUBLE-SKIP 2648 073413* 5606 JMP I RETURN /RETURN 2649 073414* 2650 073414* / ******** 2651 073414* 2652 073414* 0023 A13, 23// /POINTER TO 0023 2653 073415* 0024 A14, 24 /POINTER TO 0024 2654 073416* 0025 A15, 25 /POINTER TO 0025 2655 073417* 0026 A16, 26 /POINTER TO 0026 2656 073420* 2657 073420* 0000 PARMOVE,.-. /PARAMETER MOVE ROUTINE 2658 073421* 6201 CDF 00 /SETUP DATA FIELD 2659 073422* 1025 TAD TEMP2 /GET SECOND PARAMETER 2660 073423* 3616 DCA I A15/(0025) /STORE IT 2661 073424* 1024 TAD TEMP1 /GET FIRST PARAMETER 2662 073425* 3615 DCA I A14/(0024) /STORE IT 2663 073426* 1026 TAD TEMP3 /GET THIRD PARAMETER 2664 073427* 3617 DCA I A16/(0026) /STORE IT 2665 073430* 6271 CDF 70 /BACK TO OUR FIELD 2666 073431* 1214 TAD A13// 2667 073432* 3010 DCA XR0 /SETUP SOURCE POINTER 2668 073433* 1122 TAD PWRIBUFF/[WRIBUFFER+1-1]/SETUP THE 2669 073434* 1214 TAD A13// 2670 073435* 3011 DCA XR1 /DESTINATION POINTER 2671 073436* 2011 ISZ XR1 /BUMP PAST HEADER 2672 073437* 7346 NL7775 /SETUP THE 2673 073440* // TAD M377/(-377) /SETUP THE 2674 073440* 3252 DCA MVCNT /MOVE COUNTER 2675 073441* 6201 MVLUP, CDF 00 /GOTO DATA FIELD 2676 073442* 1410 TAD I XR0 /GET A WORD 2677 073443* 6231 CDF 30 /GOTO BUFFER FIELD 2678 073444* 3411 DCA I XR1 /PUT A WORD 2679 073445* 2252 ISZ MVCNT /DONE ENOUGH? 2680 073446* 5241 JMP MVLUP /NO, GO BACK 2681 073447* 1122 TAD PWRIBUFF/[WRIBUFFER+1-1]/SETUP THE 2682 073450* 3010 DCA XR0 /DISK DATA POINTER 2683 073451* 5620 JMP I PARMOVE /RETURN 2684 073452* 2685 073452* 0000 MVCNT, .-. /MOVE COUNTER 2686 073453* //M377, -377 /CONSTANT 7401 2687 073453* 0011 0011/ 2688 073454* //VRS: Another mystery routine. 2689 073454* 0000 .-.// 2690 073455* 3062 DCA 0062// 2691 073456* 1062 TAD 0062// 2692 073457* 7650 SNA CLA// 2693 073460* 5654 JMP I 3454// 2694 073461* 1101 1101// 2695 073462* 4555 JMS I 0155// 2696 073463* 4320 JMS 3520// 2697 073464* 5313 JMP 3513// 2698 073465* 7240 NL7777// 2699 073466* 3063 3063// 2700 073467* 1135 1135// 2701 073470* 3010 3010// 2702 073471* 3053 3053// 2703 073472* 4554 4554// 2704 073473* 0000 0000// 2705 073474* 7777 7777// 2706 073475* 5313 5313// 2707 073476* 1135 1135// 2708 073477* 3010 3010// 2709 073500* 1317 1317// 2710 073501* 3011 3011// 2711 073502* 1411 1411// 2712 073503* 7450 7450// 2713 073504* 5311 5311// 2714 073505* 1410 1410// 2715 073506* 7640 7640// 2716 073507* 5313 5313// 2717 073510* 5302 5302// 2718 073511* 4555 4555// 2719 073512* 4307 4307// 2720 073513* 3062 3062// 2721 073514* 3063 3063// 2722 073515* 5654 5654// 2723 073516* 0006 0006// 2724 073517* 3517 3517// 2725 073520* / TEST CONTENTS OF CALLABLE SUBROUTINE. ALL VALUES ARE INVERTED. THE ACTUAL 2726 073520* / READ-IN CODE IS EXECUTABLE AS AND INSTRUCTIONS. 2727 073520* 2728 073520* 7777 TSTDATA,-1 2729 073521* 7656 -"R!200 2730 073522* 7674 -"D!200 2731 073523* 7713 -"5!200 2732 073524* 7717 -"1!200 2733 073525* 7776 -2 2734 073526* 0000 0 /THIS ENDS THE LIST 2735 073527* 2736 073527* / VALIDATION PATTERN FOR TRACK ZERO, SECTOR 4 DATA. 2737 073527* 2738 073527* 7777 T0S4DAT,-1 2739 073530* 7670 -"H!200 2740 073531* 7664 -"L!200 2741 073532* 7654 -"T!200 2742 073533* 7672 -"F!200 2743 073534* 7664 -"L!200 2744 073535* 7671 -"G!200 2745 073536* 7776 -2 2746 073537* 0000 0 /THIS ENDS THE LIST 2747 073540* 2748 073540* / RD51 WAIT ROUTINE. TAKES IMMEDIATE RETURN ON ERROR OR TIME-OUT; TAKES SKIP 2749 073540* / RETURN ON TRANSFER REQUEST FLAG; TAKES DOUBLE-SKIP RETURN ON DONE FLAG. 2750 073540* 2751 073540* 0000 RDWAIT, .-. /RD51 WAIT ROUTINE 2752 073541* 1131 TAD DTIMOUT/[-DTIME] /SETUP THE 2753 073542* 3051 DCA T7 /TIME-OUT COUNTER 2754 073543* 3050 DCA T6 /CLEAR INNER TIME-OUT COUNTER 2755 073544* 6701 RDWATLP,RDSR /DATA REQUEST FLAG UP? 2756 073545* 7410 SKP /SKIP IF NOT 2757 073546* 5363 JMP RDTRAN /JUMP IF SO 2758 073547* 6703 RDSD /DONE FLAG UP? 2759 073550* 7410 SKP /SKIP IF NOT 2760 073551* 5357 JMP RDDONE /JUMP IF SO 2761 073552* 2050 ISZ T6 /WAITED ENOUGH? 2762 073553* 5344 JMP RDWATLP /NO, KEEP GOING 2763 073554* 2051 ISZ T7 /WAITING TOO LONG? 2764 073555* 5344 JMP RDWATLP /NO, KEEP GOING 2765 073556* 5740 JMP I RDWAIT /YES, TAKE IMMEDIATE RETURN 2766 073557* 2767 073557* 6706 RDDONE, RDSE /ANY ERRORS? 2768 073560* 7410 SKP /SKIP IF NOT 2769 073561* 5740 JMP I RDWAIT /TAKE IMMEDIATE RETURN IF SO 2770 073562* 2340 ISZ RDWAIT /TAKE DOUBLE-SKIP RETURN ON DONE FLAG RAISE 2771 073563* 2340 RDTRAN, ISZ RDWAIT /TAKE SKIP RETURN ON TRANSFER FLAG RAISE 2772 073564* 5740 JMP I RDWAIT /RETURN EITHER WAY 2773 073565* 2774 073565* 0000 ZBLOCK 3600-. 073566* 0000 073567* 0000 073570* 0000 073571* 0000 073572* 0000 073573* 0000 073574* 0000 073575* 0000 073576* 0000 073577* 0000 2775 073600* 2776 073600* PAGE 2777 073600* 2778 073600* / ******** 2779 073600* / RX50 READ COMMAND ROUTINE. THE COMMAND (TYPICALLY 0006 FOR A READ) IS PASSED 2780 073600* / IN THE AC. THE SECTOR IS IN TINC, AND THE TRACK IN T1. TAKE IMMEDIATE RETURN 2781 073600* / IF THE COMMAND SUCCEEDS; TAKE SKIP RETURN IF IT TIMES OUT. 2782 073600* 2783 073600* 0000 RXCOMD, .-. /RX50 READ COMMAND ROUTINE 2784 073601* 6751 LCD /LOAD PASSED COMMAND 2785 073602* 1041 TAD TINC /GET THE SECTOR 2786 073603* 6753 STR /TRANSFER FLAG UP? 2787 073604* 5203 JMP .-1 /NO, WAIT FOR IT 2788 073605* 6752 XDR /YES, SEND THE SECTOR 2789 073606* 7200 CLA /CLEAN UP 2790 073607* 1043 TAD T1 /GET THE TRACK 2791 073610* 6753 STR /TRANSFER FLAG UP? 2792 073611* 5210 JMP .-1 /NO, WAIT FOR IT 2793 073612* 6752 XDR /YES, SEND THE TRACK 2794 073613* 7200 CLA /CLEAN UP 2795 073614* 1131 TAD DTIMOUT/[-DTIME] /SETUP THE 2796 073615* 3050 DCA T6 /TIME-OUT COUNTER 2797 073616* 3051 DCA T7 /CLEAR INNER TIME-OUT COUNTER 2798 073617* 6755 DNWAIT, SDN /DONE FLAG UP? 2799 073620* 7410 SKP /SKIP IF NOT 2800 073621* 5600 JMP I RXCOMD /TAKE SUCCESSFUL RETURN IF SO 2801 073622* 2051 ISZ T7 /WAITING LONG ENOUGH? 2802 073623* 5217 JMP DNWAIT /NO, KEEP WAITING 2803 073624* 2050 ISZ T6 /WAITING TOO LONG? 2804 073625* 5217 JMP DNWAIT /NO, KEEP WAITING 2805 073626* 2200 ISZ RXCOMD /BUMP TO FAILURE RETURN 2806 073627* 5600 JMP I RXCOMD /TAKE SKIP RETURN TO CALLER 2807 073630* 2808 073630* 0000 PRINTP, .-. /SIX PARAMETERS PRINT ROUTINE 2809 073631* 6271 CDF 70 /RESET TO OUR FIELD 2810 073632* 3056 DCA ROW /CLEAR COLUMN 2811 073633* 3057 DCA COLUMN /CLEAR COLUMN 2812 073634* 1135 TAD PTSTBUFF/[TSTBUFF] /SETUP THE 2813 073635* // TAD PCALLSUB/[CALLSUB] /SETUP THE 2814 073635* 3010 DCA XR0 /DATA POINTER 2815 073636* 1314 TAD L7772/(-6) /SETUP THE 2816 073637* 3011 DCA XR1 /PARAMETER COUNT 2817 073640* 1320 TAD PTM0/(TM0-1) /SETUP THE 2818 073641* 3316 DCA PADR /PARAMETER ADDRESS 2819 073642* 1410 HDLOOP, TAD I XR0 /GET A WORD 2820 073643* 1133 TAD Z7776/[7776] /COMPARE TO MESSAGE END 2821 073644* 7640 SZA CLA /SKIP IF IT MATCHES 2822 073645* 5242 JMP HDLOOP /ELSE GO BACK 2823 073646* 1410 PRLOOP, TAD I XR0 /GET A CHARACTER 2824 073647* 7421 MQL /LOAD IT FOR PRINTING 2825 073650* 7701 CLA MQA /GET IT BACK 2826 073651* 1127 TAD Z7741/[-37] /COMPARE TO DELIMITER 2827 073652* 7450 SNA /SKIP IF OTHER 2828 073653* 5264 JMP ATDEL /JUMP IF A MATCH 2829 073654* 7001 IAC /COMPARE TO ALTERNATE DELIMITER VALUE 2830 073655* 7450 SNA /SKIP IF OTHER 2831 073656* 5264 JMP ATDEL /JUMP IF A MATCH 2832 073657* 1312 TAD L4/(4) /COMPARE TO END OF DATA VALUE 2833 073660* 7650 SNA CLA /SKIP IF OTHER 2834 073661* 5630 JMP I PRINTP /RETURN IF IT MATCHES 2835 073662* 4556 JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2836 073663* 5246 JMP PRLOOP /KEEP GOING 2837 073664* 2838 073664* 4556 ATDEL, JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2839 073665* 1011 TAD XR1 /GET PARAMETER COUNT 2840 073666* 7650 SNA CLA /SKIP IF NOT DONE 2841 073667* 5246 JMP PRLOOP /JUST PRINT THE FIELD 2842 073670* 2011 ISZ XR1 /COUNT THIS ONE 2843 073671* 7000 NOP /IN CASE IT SKIPS 2844 073672* 2316 ISZ PADR /BUMP TO NEXT ADDRESS 2845 073673* 1313 TAD M4/(-4) /SETUP THE 2846 073674* 3012 DCA XR2 /DIGIT COUNTER 2847 073675* 1716 TAD I PADR /GET THE VALUE 2848 073676* 3317 DCA DIGTMP /STASH IT 2849 073677* 1317 DIGLUP, TAD DIGTMP /GET VALUE BACK 2850 073700* 7014 R3L /MOVE UP 2851 073701* 3317 DCA DIGTMP /STORE IT BACK 2852 073702* 1317 TAD DIGTMP /GET IT AGAIN 2853 073703* 0101 AND Z7/[7] /JUST LATEST DIGIT 2854 073704* 1315 TAD L60/("0&177) /MAKE IT ASCII 2855 073705* 7421 MQL /STASH IT 2856 073706* 4556 JMS I PCHRPRT/[CHRPRT] /PRINT THE CHARACTER 2857 073707* 2012 ISZ XR2 /DONE ALL DIGITS YET? 2858 073710* 5277 JMP DIGLUP /NO, KEEP GOING 2859 073711* 5246 JMP PRLOOP /KEEP GOING 2860 073712* / ********* 2861 073712* 2862 073712* 0004 L4, 4 /CONSTANT 0004 2863 073713* 7774 M4, -4 /CONSTANT 7774 2864 073714* 7772 L7772, -6 /CONSTANT 7772 2865 073715* 0060 L60, "0&177 /ASCII NUMERIC CONSTANT 0060 2866 073716* 0000 PADR, .-. /PARAMETER ADDRESS TEMPORARY 2867 073717* 0000 DIGTMP, .-. /OUTPUT VALUE STORED HERE 2868 073720* 0027 PTM0, TM0-1 /POINTER TO DATA BLOCK 2869 073721* 2870 073721* / RD51 TEST AND WAIT ROUTINE. IF RD51 IS PRESENT, THEN WAIT AWHILE. 2871 073721* 2872 073721* 0000 RDTWAIT,.-. /RD51 TEST AND WAIT ROUTINE 2873 073722* 3062 DCA 0062// 2874 073723* 7240 NL7777 /SET TEST PATTERN 2875 073724* 6707 RDTEST /AC WILL CLEAR IF RD51 IS PRESENT 2876 073725* 7640 SZA CLA /SKIP IF RD51 INSTALLED 2877 073726* 5721 JMP I RDTWAIT /RETURN IF NOT 2878 073727* // TAD M2260/(-2260) /SETUP THE 2879 073727* 1061 TAD 0061// 2880 073730* 0115 AND 0115// 2881 073731* 7640 SZA CLA// 2882 073732* 5335 JMP .+3// 2883 073733* 1361 TAD 3761// 2884 073734* 6702 6702// 2885 073735* 3061 DCA 0061// 2886 073736* 1360 TAD 3760// 2887 073737* 3052 DCA 0052// 2888 073740* 1360 1360// 2889 073741* 3051 DCA 0051// 2890 073742* 6703 6703// 2891 073743* 7410 SKP// 2892 073744* 5354 5354// 2893 073745* 2050 ISZ 0050// 2894 073746* 5342 5342// 2895 073747* 2051 ISZ 0051// 2896 073750* 5342 5342// 2897 073751* 2052 ISZ 0052// 2898 073752* 5340 5340// 2899 073753* 5721 JMP I RDTWAIT /YES, RETURN TO CALLER 2900 073754* 6706 6706// 2901 073755* 7240 7240// 2902 073756* 4762 4762// 2903 073757* // DCA T6 /OUTER LOOP COUNTER 2904 073757* // DCA T7 /CLEAR THE INNER LOOP COUNTER 2905 073757* //WAITLUP,ISZ T7 /WAIT FOR AWHILE 2906 073757* // JMP WAITLUP /KEEP WAITING 2907 073757* // ISZ T6 /WAITED ENOUGH 2908 073757* // JMP WAITLUP /NO, KEEP GOING 2909 073757* 5721 JMP I RDTWAIT /YES, RETURN TO CALLER 2910 073760* 7750 7750// 2911 073761* //VRS: wtf another dang table! 2912 073761* 0011 0011// 2913 073762* 3454 3454// 2914 073763* 0001 0001// 2915 073764* 0001 0001// 2916 073765* 0116 0116// 2917 073766* 0001 0001// 2918 073767* 0116 0116// 2919 073770* 0002 0002// 2920 073771* 0116 0116// 2921 073772* 0003 0003// 2922 073773* 0116 0116// 2923 073774* 0004 0004// 2924 073775* 0116 0116// 2925 073776* 0005 0005// 2926 073777* 0116 0116// 2927 074000* 0006 0006// 2928 074001* 0116 0116// 2929 074002* 0007 0007// 2930 074003* 0116 0116// 2931 074004* 0010 0010// 2932 074005* 0116 0116// 2933 074006* 0011 0011// 2934 074007* 0116 0116// 2935 074010* 0012 0012// 2936 074011* 0117 0117// 2937 074012* 0001 0001// 2938 074013* 0117 0117// 2939 074014* 0002 0002// 2940 074015* 0117 0117// 2941 074016* 0003 0003// 2942 074017* 0117 0117// 2943 074020* 0004 0004// 2944 074021* 0117 0117// 2945 074022* 0005 0005// 2946 074023* 0117 0117// 2947 074024* 0006 0006// 2948 074025* 0117 0117// 2949 074026* 0007 0007// 2950 074027* 0117 0117// 2951 074030* 0010 0010// 2952 074031* 0117 0117// 2953 074032* 0011 0011// 2954 074033* 0117 0117// 2955 074034* 0012 0012// 2956 074035* 0000 0000// 2957 074036* 0001 0001// 2958 074037* 0000 0000// 2959 074040* 0002 0002// 2960 074041* 0000 0000// 2961 074042* 0003 0003// 2962 074043* 0000 0000// 2963 074044* 0004 0004// 2964 074045* 0000 0000// 2965 074046* 0005 0005// 2966 074047* 0000 0000// 2967 074050* 0006 0006// 2968 074051* 0000 0000// 2969 074052* 0007 0007// 2970 074053* 0000 0000// 2971 074054* 0010 0010// 2972 074055* 0000 0000// 2973 074056* 0011 0011// 2974 074057* 0000 0000// 2975 074060* 0012 0012// 2976 074061* 7761 7761// 2977 074062* //VRS: Another mystery routine 2978 074062* 0000 .-.//at 4062 2979 074063* 1662 1662//get arg 2980 074064* 2262 2262// 2981 074065* 3354 3354//save it 2982 074066* 1063 1063// 2983 074067* 0062 0062// 2984 074070* 7650 7650// 2985 074071* 5334 5334//to 4134 2986 074072* 1354 1354//get arg 2987 074073* 7700 7700//negative? 2988 074074* 5277 5277//to 4077 2989 074075* 3354 3354// 2990 074076* 7610 7610// 2991 074077* 7315 7315// 2992 074100* 3353 3353// 2993 074101* 7301 7301// 2994 074102* 4555 4555// 2995 074103* 4153 4153// 2996 074104* 5662 5662// 2997 074105* 7307 7307// 2998 074106* 4555 4555// 2999 074107* 4600 4600// 3000 074110* 5662 5662// 3001 074111* 7301 7301// 3002 074112* 1010 1010// 3003 074113* 3321 3321// 3004 074114* 7303 7303// 3005 074115* 0053 0053// 3006 074116* 1357 1357// 3007 074117* 4163 4163// 3008 074120* 4555 4555// 3009 074121* 0000 0000// 3010 074122* 5662 5662// 3011 074123* 7303 7303// 3012 074124* 0053 0053// 3013 074125* 7640 7640// 3014 074126* 1115 1115// 3015 074127* 1115 1115// 3016 074130* 1010 1010// 3017 074131* 3010 3010// 3018 074132* 2262 2262// 3019 074133* 5662 5662// 3020 074134* 7350 7350// 3021 074135* 0354 0354// 3022 074136* 7440 7440// 3023 074137* 1261 1261// 3024 074140* 7104 7104// 3025 074141* 1356 1356// 3026 074142* 3354 3354// 3027 074143* 1754 1754// 3028 074144* 3043 3043// 3029 074145* 2354 2354// 3030 074146* 1754 1754// 3031 074147* 3041 3041// 3032 074150* 2262 2262// 3033 074151* 2262 2262// 3034 074152* 5662 5662// 3035 074153* 0000 0000// 3036 074154* 0000 0000// 3037 074155* 0000 0000// 3038 074156* 3763 3763// 3039 074157* 0025 0025// 3040 074160* 1104 1104// 3041 074161* 3011 3011// 3042 074162* 1376 1376// 3043 074163* 3010 3010// 3044 074164* 4777 4777// 3045 074165* 4542 4542// 3046 074166* 6007 6007// 3047 074167* 4542 4542// 3048 074170* 6116 6116// 3049 074171* 7300 7300// 3050 074172* 6135 6135// 3051 074173* 6203 6203// 3052 074174* 6004 6004// 3053 074175* 5033 5033// 3054 074176* 4177 4177// 3055 074177* 3356 3356// 3056 074200* /bin/bash: 3757: command not found 3057 074200* 3058 074200* //M2260, -2260 /CONSTANT 5520 3059 074200* 3060 074200* // ZBLOCK 4 /EMPTY SPACE 3061 074200* //VRS: BUGBUG: Two more pages of unknown cruft! 3062 074200* 1061 1061// 3063 074201* 1046 1046// 3064 074202* 0060 0060// 3065 074203* 3061 3061// 3066 074204* 7327 7327// 3067 074205* 1061 1061// 3068 074206* 6751 6751// 3069 074207* 7301 7301// 3070 074210* 4053 4053// 3071 074211* 4053 4053// 3072 074212* 7004 7004// 3073 074213* 6755 6755// 3074 074214* 5054 5054// 3075 074215* 6754 6754// 3076 074216* 7450 7450// 3077 074217* 5020 5020// 3078 074220* 1061 1061// 3079 074221* 6751 6751// 3080 074222* 1061 1061// 3081 074223* 0046 0046// 3082 074224* 1032 1032// 3083 074225* 3060 3060// 3084 074226* 0360 0360// 3085 074227* 4053 4053// 3086 074230* 3002 3002// 3087 074231* 2050 2050// 3088 074232* 5047 5047// 3089 074233* 0020 0020// 3090 074234* 6753 6753// 3091 074235* 5033 5033// 3092 074236* 6752 6752// 3093 074237* 5453 5453// 3094 074240* 0420 0420// 3095 074241* 0020 0020// 3096 074242* 0000 0000// 3097 074243* 3304 3304// 3098 074244* 6214 6214// 3099 074245* 1121 1121// 3100 074246* 3271 3271// 3101 074247* 6271 6271// 3102 074250* 1642 1642// 3103 074251* 2242 2242// 3104 074252* 3305 3305// 3105 074253* 1304 1304// 3106 074254* 0300 0300// 3107 074255* 7650 7650// 3108 074256* 7120 7120// 3109 074257* 1304 1304// 3110 074260* 6702 6702// 3111 074261* 7004 7004// 3112 074262* 3304 3304// 3113 074263* 4706 4706// 3114 074264* 5642 5642// 3115 074265* 7410 7410// 3116 074266* 5302 5302// 3117 074267* 1304 1304// 3118 074270* 7110 7110// 3119 074271* 7402 7402// 3120 074272* 1705 1705// 3121 074273* 6704 6704// 3122 074274* 7420 7420// 3123 074275* 3705 3705// 3124 074276* 6271 6271// 3125 074277* 2305 2305// 3126 074300* 0020 0020// 3127 074301* 5263 5263// 3128 074302* 2242 2242// 3129 074303* 5642 5642// 3130 074304* 0000 0000// 3131 074305* 0000 0000// 3132 074306* 3540 3540// 3133 074307* 0320 0320// 3134 074310* 0000 0000// 3135 074311* 0000 0000// 3136 074312* 0000 0000// 3137 074313* 0000 0000// 3138 074314* 0000 0000// 3139 074315* 0000 0000// 3140 074316* 0000 0000// 3141 074317* 0000 0000// 3142 074320* 0061 0061// 3143 074321* 0062 0062// 3144 074322* 0063 0063// 3145 074323* 0064 0064// 3146 074324* 0000 0000// 3147 074325* 3304 3304// 3148 074326* 6211 6211// 3149 074327* 1704 1704// 3150 074330* 6271 6271// 3151 074331* 7650 7650// 3152 074332* 5351 5351// 3153 074333* 6231 6231// 3154 074334* 7305 7305// 3155 074335* 4555 4555// 3156 074336* 6401 6401// 3157 074337* 5724 5724// 3158 074340* 7301 7301// 3159 074341* 4555 4555// 3160 074342* 4400 4400// 3161 074343* 5724 5724// 3162 074344* 7325 7325// 3163 074345* 4555 4555// 3164 074346* 4400 4400// 3165 074347* 5724 5724// 3166 074350* 5374 5374// 3167 074351* 6751 6751// 3168 074352* 4553 4553// 3169 074353* 5356 5356// 3170 074354* 5362 5362// 3171 074355* 5724 5724// 3172 074356* 6231 6231// 3173 074357* 1410 1410// 3174 074360* 6752 6752// 3175 074361* 5352 5352// 3176 074362* 1376 1376// 3177 074363* 3043 3043// 3178 074364* 7301 7301// 3179 074365* 3041 3041// 3180 074366* 7307 7307// 3181 074367* 6271 6271// 3182 074370* 4546 4546// 3183 074371* 7410 7410// 3184 074372* 5724 5724// 3185 074373* 6754 6754// 3186 074374* 2324 2324// 3187 074375* 5724 5724// 3188 074376* 0116 0116// 3189 074377* 0322 0322// 3190 074400* 0010 0010// 3191 074401* 0020 0020// 3192 074402* 0000 0000// 3193 074403* 0000 0000// 3194 074404* 0000 0000// 3195 074405* 7305 7305// 3196 074406* 3053 3053// 3197 074407* 7240 7240// 3198 074410* 3010 3010// 3199 074411* 6201 6201// 3200 074412* 4554 4554// 3201 074413* 0020 0020// 3202 074414* 7777 7777// 3203 074415* 5604 5604// 3204 074416* 6201 6201// 3205 074417* 3010 3010// 3206 074420* 4561 4561// 3207 074421* 5604 5604// 3208 074422* 6201 6201// 3209 074423* 1603 1603// 3210 074424* 6271 6271// 3211 074425* 7710 7710// 3212 074426* 5245 5245// 3213 074427* 1114 1114// 3214 074430* 3010 3010// 3215 074431* 6201 6201// 3216 074432* 4554 4554// 3217 074433* 0021 0021// 3218 074434* 7761 7761// 3219 074435* 5604 5604// 3220 074436* 6211 6211// 3221 074437* 4554 4554// 3222 074440* 0040 0040// 3223 074441* 7774 7774// 3224 074442* 5604 5604// 3225 074443* 2204 2204// 3226 074444* 5604 5604// 3227 074445* 1310 1310// 3228 074446* 3330 3330// 3229 074447* 1354 1354// 3230 074450* 3360 3360// 3231 074451* 7240 7240// 3232 074452* 3356 3356// 3233 074453* 1121 1121// 3234 074454* 3343 3343// 3235 074455* 1115 1115// 3236 074456* 3357 3357// 3237 074457* 4312 4312// 3238 074460* 5243 5243// 3239 074461* 3305 3305// 3240 074462* 4312 4312// 3241 074463* 5243 5243// 3242 074464* 3306 3306// 3243 074465* 4312 4312// 3244 074466* 5243 5243// 3245 074467* 3307 3307// 3246 074470* 1307 1307// 3247 074471* 7106 7106// 3248 074472* 7006 7006// 3249 074473* 0130 0130// 3250 074474* 1305 1305// 3251 074475* 4342 4342// 3252 074476* 1307 1307// 3253 074477* 7002 7002// 3254 074500* 7006 7006// 3255 074501* 0130 0130// 3256 074502* 1306 1306// 3257 074503* 4342 4342// 3258 074504* 5257 5257// 3259 074505* 0000 0000// 3260 074506* 0000 0000// 3261 074507* 0000 0000// 3262 074510* 0021 0021// 3263 074511* 7755 7755// 3264 074512* 0000 0000// 3265 074513* 2356 2356// 3266 074514* 5336 5336// 3267 074515* 2360 2360// 3268 074516* 7410 7410// 3269 074517* 5712 5712// 3270 074520* 1107 1107// 3271 074521* 3053 3053// 3272 074522* 6271 6271// 3273 074523* 1135 1135// 3274 074524* 3010 3010// 3275 074525* 1341 1341// 3276 074526* 3356 3356// 3277 074527* 4554 4554// 3278 074530* 0000 0000// 3279 074531* 7777 7777// 3280 074532* 5604 5604// 3281 074533* 2330 2330// 3282 074534* 1135 1135// 3283 074535* 3010 3010// 3284 074536* 1410 1410// 3285 074537* 2312 2312// 3286 074540* 5712 5712// 3287 074541* 7000 7000// 3288 074542* 0000 0000// 3289 074543* 6201 6201// 3290 074544* 3757 3757// 3291 074545* 6271 6271// 3292 074546* 2357 2357// 3293 074547* 5742 5742// 3294 074550* 7315 7315// 3295 074551* 1121 1121// 3296 074552* 3343 3343// 3297 074553* 5742 5742// 3298 074554* 7754 7754// 3299 074555* 7600 7600// 3300 074556* 0000 0000// 3301 074557* 0000 0000// 3302 074560* 0000 0000// 3303 074561* 2241 2241// 3304 074562* 2335 2335// 3305 074563* 0401 0401// 3306 074564* 0400 0400// 3307 074565* 0000 0000// 3308 074566* 6061 6061// 3309 074567* 5366 5366// 3310 074570* 1106 1106// 3311 074571* 6122 6122// 3312 074572* 6127 6127// 3313 074573* 7200 7200// 3314 074574* 5765 5765// 3315 074575* 0000 0000// 3316 074576* 0000 0000// 3317 074577* 0000 0000// 3318 074600* 3319 074600* ifdef VRS < 3320 074600* //VRS: Is there a caller or a location for this? 3321 074600* / RD TEST AND SETUP ROUTINE. CHECKS IF RD51 HARDWRE IS PRESENT. IF PRESENT, 3322 074600* / WILL WAIT MAY SECONDS UNTIL THE SELF-TEST FINISHES AND RAISES THE DONE FLAG OR 3323 074600* / IT TIMES OUT. THEN THE STARTUP SECTOR IS READ IN AND EXECUTED AS A 3324 074600* / SUBROUTINE LOADED IN A DESIGNATED PLACE. 3325 074600* 3326 074600* RDSETUP,.-. /RD TEST AND SETUP ROUTINE 3327 074600* NL7777 /SET TEST PATTERN 3328 074600* RDTEST /DO TEST IOT THAT SHOULD CLEAR THE AC 3329 074600* SZA CLA /SKIP IF RD51 HARDWARE ACTUALLY PRESENT 3330 074600* JMP I RDSETUP /ELSE JUST RETURN 3331 074600* TAD 0061//M12/(-12) /GET OUTER TIME-OUT CONSTANT 3332 074600* DCA T8 /STASH THE OUTER COUNTER 3333 074600* RDWLP1, TAD M30/(-30) /GET MIDDLE TIME-OUT CONSTANT 3334 074600* DCA T7 /STASH THE MIDDLE COUNTER 3335 074600* RDWLP2, RDSD /DONE FLAG SET FROM SELF-TEST? 3336 074600* SKP /SKIP IF NOT 3337 074600* JMP RDFIN /JUMP IF SO 3338 074600* ISZ T6 /WAIT AWHILE? 3339 074600* JMP RDWLP2 /KEEP WAITING 3340 074600* ISZ T7 /WAITED ENOUGH? 3341 074600* JMP RDWLP2 /KEEP GOING 3342 074600* ISZ T8 /WAITED TOO LONG? 3343 074600* JMP RDWLP1 /NO, KEEP GOING 3344 074600* JMP I RDSETUP /YES, JUST RETURN 3345 074600* 3346 074600* RDFIN, RDSE /ANY ERRORS? 3347 074600* SKP /SKIP IF NOT 3348 074600* JMP I RDSETUP /JUST RETURN 3349 074600* TAD PTSTBUFF/[TSTBUFF] /SETUP THE 3350 074600* // TAD PCALLSUB/[CALLSUB+1-1] /SETUP THE 3351 074600* DCA XR0 /STORAGE POINTER 3352 074600* TAD L32/(32) /GET READ STARTUP SECTOR COMMAND 3353 074600* RDSC /SEND THE COMMAND 3354 074600* DTRLUP, JMS I PRDTWAIT// /WAIT FOR FLAGS 3355 074600* JMP I RDSETUP /ERROR OR TIME-OUT, FORGET IT 3356 074600* SKP /TRANSFER REQUEST UP 3357 074600* JMP SSDONE /JUMP THERE IF DONE 3358 074600* RDTD /TRANSFER DATA 3359 074600* DCA I XR0 /STORE THE WORD IN THE SUBROUTINE BODY 3360 074600* JMP DTRLUP /KEEP GOING 3361 074600* 3362 074600* SSDONE, TAD PTSTBUFF/[TSTBUFF] /SETUP THE POINTER 3363 074600* //SSDONE, TAD PCALLSUB/[CALLSUB+1-1] /SETUP THE POINTER 3364 074600* DCA XR0 /TO THE READ-IN DATA 3365 074600* TAD PTSTDATA/(TSTDATA-1) /SETUP THE TEST DATA POINTER 3366 074600* DCA XR1 /STASH THE POINTER 3367 074600* TSTLUP, TAD I XR1 /GET AN INVERTED TEST VALUE 3368 074600* SNA /SKIP IF NOT AT END OF LIST 3369 074600* JMS I PCALLSUB/[CALLSUB] /CALL THE READ-IN CODE 3370 074600* PCALLSUB=.//VRS: BUGBUG: THIS IS WRONG 3371 074600* TAD I XR0 /COMPARE TO READ-IN VALUE 3372 074600* SZA CLA /SKIP IF IT MATCHES 3373 074600* JMP I RDSETUP /RETURN IF NOT 3374 074600* JMP TSTLUP /KEEP TESTING 3375 074600* 3376 074600* PTSTDAT,TSTDATA-1 /POINTER TO TEST DATA TABLE (-1) 3377 074600* M30, -30 /MIDDLE TIME-OUT CONSTANT 3378 074600* L32, 32 /CONSTANT 0032 3379 074600* M12, -12 /OUTER TIME-OUT CONSTANT 3380 074600* 3381 074600* 6 /AN UNUSED CONSTANT 0006 3382 074600* > 3383 074600* //PAGE 23//VRS: Temporary to realign ROM 3384 074600* 3385 074600* //VRS: CODESTA/RT IS ACTUALLY AT 04600 IN THIS VERSION. 3386 074600* PAGE //23 //VRS: FIX THIS 3387 074500 RELOC // Show ROM address 3388 074600* RELOC 4600 // Restore RELOC 3389 074600* 3390 074600* / THIS IS WHERE THE CODE STARTS AFTER THE LOADER HAS MOVED IT FROM 00000 TO 3391 074600* / 70100. AT THIS POINT THE ROM IS TOTALLY DISABLED. IF AUTOMATIC PRODUCT 3392 074600* / TESTING IS IN PROGRESS, IT IS POSSIBLE THAT A PREVIOUSLY LOADED MAIN MEMORY 3393 074600* / TEST PROGRAM HAS EXITED VIA A PANEL REQUEST INSTRUCTION. THIS ACTION CAUSES A 3394 074600* / TOTAL RESTART TO THIS LOCATION. 3395 074600* 3396 074600* CODESTA=. /THE CODE STARTS HERE 3397 074600* 3398 074600* 7300 CODESTA,CLA CLL /CLEAN UP 3399 074601* 6000 PRS /GET (POWER-ON) STATUS NOW 3400 074602* 3061 DCA PSTATUS /SAVE FOR LATER 3401 074603* 6003 PG0 /RESET THE HLTFLG FLIP-FLOP 3402 074604* 3403 074604* / THE PIE CHIPS HAVE TO BE PROGRAMMED BEFORE THEY CAN BE USED. UP UNTIL NOW ALL 3404 074604* / IOTS HAVE BEEN INTERNAL; AN UNIMPLEMENTED EXTERNAL IOT (6777) WILL BE USED TO 3405 074604* / LOAD IN THE DEVICE-SPECIFIC INFORMATION. 3406 074604* 3407 074604* 1557 TAD I PPPTABLE/[PPTABLE] /GET PROGRAMMING TABLE POINTER 3408 074605* 3010 DCA XR0 /STASH THE POINTER 3409 074606* 1410 PRGLUP, TAD I XR0 /GET THE LATEST 3410 074607* 7450 SNA /SKIP IF NOT AT END 3411 074610* 5214 JMP PRGDONE /CONTINUE THERE IF DONE 3412 074611* 6777 6777 /UN-IMPLEMENTED EXTERNAL IOT TO SETUP CHIPS 3413 074612* 7200 CLA /CLEAN UP 3414 074613* 5206 JMP PRGLUP /KEEP GOING 3415 074614* 3416 074614* / COMES HERE WHEN I/O PORT INITIALIZING IS DONE. 3417 074614* 3418 074614* 1112 PRGDONE,TAD Z237/[237] /GET PORT ENABLE VALUE 3419 074615* 6362 MLC /ENABLE ALL OUTPUT LINES 3420 074616* 4560 JMS I PROWLOAD/[ROWLOAD] /CALL ROWTABLE AND REGISTER LOAD ROUTINE 3421 074617* 4545 JMS I PCLR23/[CLR23] /CLEAR FIELDS 2, 3 (AND BITS IN 13705, 13707) 3422 074620* 6271 CDF 70 /BACK TO OUR FIELD 3423 074621* 7344 NL7776 /-2 3424 074622* 3010 DCA XR0 /SETUP COUNTER 3425 074623* 3011 VAGAIN, DCA XR1 /CLEAR TIME-OUT COUNTER 3426 074624* 6061 VWATLP, VSF /VIDEO RETRACE FLAG UP? 3427 074625* 7410 SKP /SKIP IF NOT 3428 074626* 5232 JMP VPAST /JUMP IF SO 3429 074627* 2011 ISZ XR1 /WAITING TOO LONG? 3430 074630* 5224 JMP VWATLP /NO, KEEP GOING 3431 074631* 5214 JMP PRGDONE /YES, GO DO IT ALL OVER AGAIN 3432 074632* 3433 074632* 1106 VPAST, TAD Z72/(72) /GET VALUE FOR REGISTER 3A 3434 074633* 6122 LSCREG /LOAD THE REGISTER 3435 074634* 6127 VREAD /GET THE STATUS THERE, CLEAR INTERNAL FLAGS 3436 074635* 7200 CLA /CLEAN UP 3437 074636* 2010 ISZ XR0 /DONE IT ENOUGH TIMES? 3438 074637* 5223 JMP VAGAIN /NO, GO DO IT AGAIN 3439 074640* 3440 074640* / FOR SOME PURPOSE, WE NEED TO STORE 0100 INTO CP20301. 3441 074640* 3442 074640* 7303 NL0100 CLL /GET VALUE 3443 074641* 6221 CDF 20 /GOTO BUFFER FIELD 3444 074642* 3513 DCA I Z0301/[0301] /STORE IN BUFFER 3445 074643* 6271 CDF 70 /BACK TO OUR FIELD 3446 074644* 3447 074644* / IF THE PRINTER PORT HAS THE APTEN LINE GROUNDED, WE GO IMMEDIATELY INTO THE 3448 074644* / AUTOMATIC PRODUCT TEST DOWNLOAD MODE. THIS COULD BE A SECONDARY CALL TO THE 3449 074644* / DOWNLOAD ROUTINE IF A PREVIOUSLY LOADED ROUTINE EXITED VIA A PANEL REQUEST 3450 074644* / INSTEAD OF HLT. 3451 074644* 3452 074644* 6121 APTSKP /AUTOMATIC PRODUCT TEST REQUESTED? 3453 074645* 5250 JMP MEMTEST /NO, JUST KEEP GOING 3454 074646* 4647 JMS I .+1; DOWNLOAD /YES, GO DOWNLOAD SOME STUFF. 074647* 5244 3455 074650* 3456 074650* / MEMORY TESTING. ALTERNATING ONES AND ZEROES ARE STORED INTO ALL FIELDS IN 3457 074650* / MAIN MEMORY AND FIELDS 2-6 IN CP MEMORY. CHECK IF THE PATTERN WORKED AND THEN 3458 074650* / REVERSE ALL PARAMETERS EACH PASS FOR SEVERAL ITERATIONS. 3459 074650* 3460 074650* 6266 MEMTEST,CPD /INDIRECT TO MAIN MEMORY FROM NOW ON 3461 074651* 6271 CDF 70 /RESET TO OUR FIELD FIRST (WHY?) 3462 074652* 3044 DCA T2 /CLEAR FIELD COUNTER 3463 074653* 3464 074653* / EXECUTE CDF TO LATEST TEST FIELD. 3465 074653* 3466 074653* 1044 MLODLP, TAD T2 /GET LATEST FIELD 3467 074654* 0101 AND Z7/[7] /JUST FIELD BITS 3468 074655* 7014 R3L /MOVE UP 3469 074656* 1121 TAD ZCDF/[CDF] /MAKE IT A CDF INSTRUCTION 3470 074657* 3260 DCA .+1 /STORE IN-LINE 3471 074660* 7402 HLT+.-. /WILL BE CDF TEST FIELD INSTRUCTION 3472 074661* 3043 DCA T1 /CLEAR ADDRESS POINTER 3473 074662* 3474 074662* / STORE TEST PATTERN IN LATEST TEST FIELD. 3475 074662* 3476 074662* 1116 FILLIT, TAD Z2525 /GET ALTERNATING TEST PATTERN 3477 074663* 3443 DCA I T1 /STASH INTO TEST MEMORY 3478 074664* 2043 ISZ T1 /BUMP TO NEXT 3479 074665* 5262 JMP FILLIT /GO BACK FOR MORE 3480 074666* 3481 074666* / BUMP TO NEXT FIELD AND CHECK WHICH MEMORY BANK WE ARE TESTING. 3482 074666* 3483 074666* 2044 ISZ T2 /BUMP TO NEXT FIELD 3484 074667* 1044 TAD T2 /GET LATEST FIELD 3485 074670* 0102 AND Z10/[10] /JUST GROUP BIT 3486 074671* 7650 SNA CLA /SKIP IF FIRST GROUP DONE 3487 074672* 5253 JMP MLODLP /GO BACK AGAIN 3488 074673* 3489 074673* / CP MEMORY IS BEING TESTED; CHECK IF WE JUST LOADED FIELD 6. 3490 074673* 3491 074673* 1044 TAD T2 /GET LATEST FIELD 3492 074674* 7001 IAC /LOOK AT NEXT TENTATIVE FIELD 3493 074675* 0105 AND Z20/[20] /CHECK IF AT LAST MEMBER (WHICH WOULD BE US!) 3494 074676* 7640 SZA CLA /SKIP IF NOT THERE YET 3495 074677* 5310 JMP MEMLOADED /JUMP IF AT END 3496 074700* 3497 074700* / CHECK IF WE ARE JUST FINISHED LOADING MAIN MEMORY. 3498 074700* 3499 074700* 1044 TAD T2 /GET LATEST FIELD 3500 074701* 0101 AND Z7/[7] /JUST FIELD BITS 3501 074702* 7640 SZA CLA /SKIP IF GROUP DONE 3502 074703* 5253 JMP MLODLP /GO BACK AGAIN 3503 074704* 3504 074704* / SWITCH INDIRECTS BACK TO CP MEMORY. AVOID TESTS IN FIELDS 0 AND 1. 3505 074704* 3506 074704* 6276 SPD /WILL BE CP INDIRECTS FROM NOW ON 3507 074705* 2044 ISZ T2 /BUMP LATEST FIELD 3508 074706* 2044 ISZ T2 /DO IT TWICE 3509 074707* 5253 JMP MLODLP /KEEP GOING 3510 074710* 3511 074710* / COMES HERE WHEN ALL TESTABLE FIELDS ARE FILLED WITH THE TEST PATTERN. 3512 074710* 3513 074710* 3043 MEMLOAD,DCA T1 /CLEAR ADDRESS POINTER 3514 074711* 3044 DCA T2 /CLEAR FIELD COUNTER 3515 074712* 1116 TAD Z2525/[2525] /GET TEST VALUE 3516 074713* 7040 CMA /INVERT FOR CHECKING LATER 3517 074714* 3042 DCA T0 /STASH IT 3518 074715* 6266 CPD /MAIN MEMORY INDIRECTS FROM NOW ON 3519 074716* 7201 NL0001 /SETUP FOR SINGLE 3520 074717* 3041 DCA TINC /FIELD INCREMENT 3521 074720* 7346 NL7775 /SETUP FOR THREE 3522 074721* 3011 DCA XR1 /COMPLETE TEST PASSES 3523 074722* 4551 MTSTLP, JMS I PMEMCOMP/[MEMCOMP] /CHECK LATEST FIELD FOR PROPER TEST VALUE 3524 074723* 5250 JMP MEMTEST /MEMORY FAILED TO MATCH, GO BACK FOR MORE 3525 074724* 1041 TAD TINC /GET INCREMENT 3526 074725* 1044 TAD T2 /UPDATE FIELD 3527 074726* 3044 DCA T2 /STORE BACK 3528 074727* 1041 TAD TINC /GET INCREMENTAL FACTOR 3529 074730* 7710 SPA CLA /SKIP IF STILL ADDING 3530 074731* 5343 JMP CDWNTST /JUMP IF NOT 3531 074732* 3532 074732* / FOUND OUT IF WE ARE FINISHED (JUST TESTED CP FIELD 6) WHILE COUNTING FORWARD. 3533 074732* 3534 074732* 1044 TAD T2 /GET CURRENT FIELD 3535 074733* 7001 IAC /TENTATIVELY ADD ONE 3536 074734* 0105 AND Z20/[20] /CHECK IF AT LAST FIELD 3537 074735* 7650 SNA CLA /SKIP IF SO 3538 074736* 5346 JMP CPMTST /JUMP IF NOT 3539 074737* 3540 074737* / BACKUP TO FIELD 6 TO START NEXT TEST PASS. 3541 074737* 3542 074737* 7240 NL7777 /BACKUP 3543 074740* 1044 TAD T2 /ADD ON LATEST FIELD 3544 074741* 3044 BACKEND,DCA T2 /STORE BACK 3545 074742* 5376 JMP PASSEND /CONTINUE THERE 3546 074743* 3547 074743* / COUNTING FIELDS DOWN; CHECK IF WE JUST FINISHED A PASS. 3548 074743* 3549 074743* 1044 CDWNTST,TAD T2 /GET CURRENT FIELD 3550 074744* 7710 SPA CLA /SKIP IF STILL VALID 3551 074745* 5341 JMP BACKEND /JUMP IF NOT 3552 074746* 3553 074746* / CHECK IF WE ARE ABOUT TO START TESTING CP MEMORY. 3554 074746* 3555 074746* 1044 CPMTST, TAD T2 /GET CURRENT FIELD 3556 074747* 0102 AND Z10/[10] /CHECK IF INTO CP GROUP 3557 074750* 7650 SNA CLA /SKIP IF SO 3558 074751* 5322 JMP MTSTLP /KEEP GOING 3559 074752* 1041 TAD TINC /GET INCREMENTAL FACTOR 3560 074753* 7710 SPA CLA /SKIP IF STILL POSITIVE 3561 074754* 5365 JMP NEGTST /JUMP IF NOT 3562 074755* 3563 074755* / CHECK IF FIRST TIME IN CP MEMORY; SWITCH OVER TO CP INDIRECTS AND BYPASS 3564 074755* / TESTING OF FIELD 0 AND FIELD 1. 3565 074755* 3566 074755* 1044 TAD T2 /GET LATEST FIELD 3567 074756* 0101 AND Z7/[7] /JUST FIELD BITS 3568 074757* 7650 SNA CLA /SKIP IF NOT AT ZERO 3569 074760* 7305 NL002A /ELSE START HERE 3570 074761* 1044 TAD T2 /ADD ON CURRENT FIELD 3571 074762* 3044 DCA T2 /STORE BACK 3572 074763* 6276 SPD /PANEL INDIRECTS FROM NOW ON 3573 074764* 5322 JMP MTSTLP /CONTINUE THERE 3574 074765* 3575 074765* / IF COUNTING FIELDS DOWN, WE MUST AVOID FIELD 0 AND FIELD 1; IF CP FIELD 2 WAS 3576 074765* / JUST FINISHED, THEN SWITCH OVER TO MAIN FIELD 7. 3577 074765* 3578 074765* 7240 NEGTST, NL7777 /-1 3579 074766* 1044 TAD T2 /COMPARE TO LATEST FIELD 3580 074767* 0101 AND Z7/[7] /JUST FIELD BITS 3581 074770* 7640 SZA CLA /SKIP IF WE ARE AT FIELD 1 3582 074771* 5322 JMP MTSTLP /JUST KEEP GOING 3583 074772* 6266 CPD /MAIN MEMORY INDIRECTS FROM NOW ON 3584 074773* 1101 TAD Z7/[7] /SETUP FOR FIELD 7 3585 074774* 3044 DCA T2 /STASH IN FIELD COUNTER 3586 074775* 5322 JMP MTSTLP /CONTINUE THERE 3587 074776* 3588 074776* / COMES HERE AT THE END OF A TEST PASS OVER ALL TESTED FIELDS. 3589 074776* 3590 074776* 1041 PASSEND,TAD TINC /GET INCREMENT FACTOR 3591 074777* 7041 CIA /INVERT IT 3592 075000* 3041 DCA TINC /STORE BACK 3593 075001* 1042 TAD T0 /GET TEST PATTERN COMPARE VALUE 3594 075002* 7040 CMA /INVERT THE BITS 3595 075003* 3042 DCA T0 /STORE BACK 3596 075004* 1041 TAD TINC /GET INCREMENT AGAIN 3597 075005* 7710 SPA CLA /SKIP IF POSITIVE 3598 075006* 7240 NL7777 /ELSE SET -1 3599 075007* 3043 DCA T1 /STORE EITHER WAY 3600 075010* 2011 ISZ XR1 /DONE ENOUGH PASSES? 3601 075011* 5663 JMP I PMTSTLP/(MTSTLP) /NO, KEEP GOING 3602 075012* 4545 JMS I PCLR23/[CLR23] /CLEAR FIELDS 2, 3 (AND BITS IN 13705, 13707) 3603 075013* 6271 CDF 70 /BACK TO OUR FIELD 3604 075014* 6121 APTSKP /AUTOMATIC PRODUCT TESTING? 3605 075015* 7410 SKP /SKIP IF NOT 3606 075016* 4523 JMS I PAPTROUTINE/[APTROUTINE]/CALL ROUTINE IF SO 3607 075017* 3608 075017* / MOVE CP 72600-72746 TO MAIN 00200-00346. THIS IS THE MAIN MEMORY ROUTINE AND 3609 075017* / INTERRUPT HANDLER FOR THE PRINTER LOOPBACK TEST. 3610 075017* 3611 075017* 1136 TAD LBLADR/[LBLOAD-1] /SETUP THE 3612 075020* 3010 DCA XR0 /SOURCE POINTER 3613 075021* 1137 TAD LBMCNT/[LBTEST-LBTEND] /SETUP THE 3614 075022* 3011 DCA XR1 /MOVE COUNTER 3615 075023* 1262 TAD LBADR/(LBTEST-1) /SETUP THE 3616 075024* 3012 DCA XR2 /DESTINATION POINTER 3617 075025* 1410 LBMVLP, TAD I XR0 /GET A WORD 3618 075026* 6201 CDF 00 /GOING TO FIELD 0 3619 075027* 6266 CPD /GOING TO MAIN MEMORY 3620 075030* 3412 DCA I XR2 /PUT A WORD 3621 075031* 6276 SPD /INDIRECTS BACK TO CP MEMORY AGAIN 3622 075032* 6271 CDF 70 /BACK TO OUR FIELD 3623 075033* 2011 ISZ XR1 /DONE YET? 3624 075034* 5225 JMP LBMVLP /NO, GO BACK 3625 075035* 3626 075035* / MOVE CP 73000-75600 TO CP 04000-06600. THIS IS THE CP-INTERRUPT HANDLER FOR 3627 075035* / THE PRINTER LOOPBACK TEST. 3628 075035* 3629 075035* / PROGRAMMING NOTE: THE LENGTH OF EXECUTABLE CODE REQUIRED TO BE RELOCATED IS 3630 075035* / APPARENTLY MUCH SMALLER THAN THE ACTUAL AMOUNT OF CODE MOVED. THE LENGTH 3631 075035* / SHOULD BE CPEND-CPINT INSTEAD OF CPEND2-CPLOAD. THIS LENGTH MAY INTERFERE 3632 075035* / WITH AUTOMATIC PRODUCT TESTING OR CAUSE SOME OTHER BUG. IT IS NOT KNOWN AT 3633 075035* / THIS TIME IF THE ORIGINAL PROGRAMMER'S INTENTION WAS TO OVERLAY ANY OTHER CODE 3634 075035* / BEYOND THE INTERRUPT HANDLER, BUT THIS SOURCE CODE FOLLOWS THE ROM CONTENTS, 3635 075035* / BUGS AND ALL :-). 3636 075035* 3637 075035* 1140 TAD CPLADR/[CPLOAD-1] /SETUP THE 3638 075036* 3010 DCA XR0 /SOURCE POINTER 3639 075037* 1141 TAD CPMCNT/[CPLOAD-CPEND2] /SETUP THE 3640 075040* 3011 DCA XR1 /MOVE COUNTER 3641 075041* 7350 NL3777/TAD (CPINT-1) /SETUP THE 3642 075042* 3012 DCA XR2 /DESTINATION POINTER 3643 075043* 1410 CPMVLP, TAD I XR0 /GET A WORD 3644 075044* 6201 CDF 00 /GOING TO FIELD 0 3645 075045* 3412 DCA I XR2 /PUT A WORD 3646 075046* 6271 CDF 70 /BACK TO OUR FIELD 3647 075047* 2011 ISZ XR1 /DONE YET? 3648 075050* 5243 JMP CPMVLP /NO, KEEP GOING 3649 075051* 3650 075051* / NOW WE HAVE TO MOVE JMP I .-1 TO CP 07777 AND 4000 TO CP 07776 TO COMPLETE THE 3651 075051* / INTERRUPT HANDLER. 3652 075051* 3653 075051* 7330 NL4000/TAD (CPINT) /GET INTERRUPT HANDLING ADDRESS 3654 075052* 6201 CDF 00 /GOING TO FIELD 0 3655 075053* 3533 DCA I CPIADDRESS/[ROMSP] /STORE IN POINTER LOCATION 3656 075054* 1120 TAD JMPIM1/[ROMSP&177+JMPIC]/GET JMP I .-1 INSTRUCTION 3657 075055* 3534 DCA I PROMST/[ROMST] /STORE IN RESTART ADDRESS 3658 075056* 6203 CIF CDF 00 /GOING TO FIELD 0 3659 075057* 6266 CPD /INDIRECTS TO MAIN MEMORY 3660 075060* 6004 PEX /LEAVING CP MEMORY 3661 075061* 5510 JMP I Z200/[200] /GO START IT UP 3662 075062* LBTEST=0200//Blank this line 3663 075062* 0177 LBADR, LBTEST-1 /LOOPBACK TEST ADDRESS (-1) 3664 075063* 4722 PMTSTLP,MTSTLP /POINTER TO LOOP BRANCH 3665 075064* 3666 075064* / COMES HERE WHEN THE PRINTER LOOPBACK TEST IS DONE TO TEST THE KEYBOARD IN 3667 075064* / LOOPBACK MODE. 3668 075064* 3669 075064* 3054 LBDONE, DCA ESTATUS /SAVE (POSSIBLE ERROR) RESULTS 3670 075065* 1320 TAD L16/(16) /GET 9600 BAUD VALUE 3671 075066* 6333 PRSB /SET BAUD RATE 3672 075067* 7200 CLA /CLEAN UP 3673 075070* 3020 DCA CTMP1 /CLEAR OUTPUT TEST VALUE 3674 075071* 3021 DCA CTMP2 /CLEAR INPUT TEST VALUE 3675 075072* 3022 DCA CNTLO /CLEAR LOW-ORDER COUNTER 3676 075073* 1346 TAD M52/(-52) /SETUP THE 3677 075074* 3023 DCA CNTHI /HIGH-ORDER COUNTER 3678 075075* 6121 APTSKP /AUTOMATIC PRODUCT TESTING? 3679 075076* 1105 TAD Z20/[20] /NO, GET LOOPBACK MODE VALUE 3680 075077* 6126 VIDCON /LOAD NEW MODE EITHER WAY 3681 075100* 6116 KBIRB /READ KEYBOARD DATA TO SET UART 3682 075101* 7200 CLA /THROW IT AWAY 3683 075102* 6054 KBOPC /OUTPUT TO UART NOW 3684 075103* 6111 LUPLUP, KBISF /KEYBOARD INPUT FLAG UP? 3685 075104* 7410 SKP /SKIP IF NOT 3686 075105* 5317 JMP LUPIN /JUMP IF SO 3687 075106* 6051 KBOSF /KEYBOARD OUTPUT FLAG UP? 3688 075107* 7410 SKP /SKIP IF NOT 3689 075110* 5334 JMP LUPOUT /JUMP IF SO 3690 075111* 2022 ISZ CNTLO /DONE WAITING? 3691 075112* 5303 JMP LUPLUP /NO, KEEP GOING 3692 075113* 2023 ISZ CNTHI /ENOUGH TIMES? 3693 075114* 5303 JMP LUPLUP /NO, KEEP GOING 3694 075115* // JMP LUPTIMOUT /YES, CONTINUE THERE 3695 075115* 5716 JMP I .+1 /YES, CONTINUE THERE 3696 075116* 5231 VS5231, 5231// 3697 075117* 3698 075117* 6111 LUPIN, KBISF /SKIP ON, CLEARING THE INPUT FLAG 3699 075120* 0016 L16, 16 /9600 BAUD RATE VALUE; HERE IN CASE IT SKIPS 3700 075121* 6116 KBIRB /GET THE INPUT VALUE 3701 075122* 0114 AND Z377/[377] /JUST 8-BIT CHARACTER 3702 075123* 7041 CIA /INVERT FOR TEST 3703 075124* 1021 TAD CTMP2 /COMPARE TO TEST VALUE 3704 075125* 7640 SZA CLA /SKIP IF IT MATCHES 3705 075126* 6126 VIDCON /CLEAR LOOPBACK IF NOT 3706 075127* 1021 TAD CTMP2 /GET INPUT PATTERN VALUE 3707 075130* 4747 JMS I PCOUNTUP/(COUNTUP) /BUMP TO NEXT VALUE 3708 075131* 5352 JMP LUPDONE /ALL VALUES USED 3709 075132* 3021 DCA CTMP2 /SAVE UPDATED VALUE 3710 075133* 5303 JMP LUPLUP /KEEP GOING 3711 075134* 3712 075134* 6051 LUPOUT, KBOSF /SKIP ON, THUS CLEARING OUTPUT FLAG 3713 075135* 7000 NOP /JUST IN CASE IT SKIPS 3714 075136* 1020 TAD CTMP1 /GET COUNT PATTERN VALUE 3715 075137* 4747 JMS I PCOUNTUP/(COUNTUP) /BUMP TO NEXT VALUE 3716 075140* 5303 JMP LUPLUP /ALL VALUES USED; KEEP GOING FOR INPUT'S SAKE 3717 075141* 3020 DCA CTMP1 /SAVE UPDATED VALUE 3718 075142* 1020 TAD CTMP1 /GET IT BACK 3719 075143* 6056 KBOLS /OUTPUT IT 3720 075144* 7200 CLA /CLEAN UP 3721 075145* 5303 JMP LUPLUP /KEEP GOING 3722 075146* 3723 075146* 7726 M52, -52 /CONSTANT 7726 3724 075147* 6334 PCOUNTU,6334//COUNTUP-LBTEST+LBLOAD /POINTER TO COUNTUP ROUTINE 3725 075150* 0375 L375, 375 /CONSTANT 0375 3726 075151* //PTSTBUF,TSTBUFFER-1 /POINTER TO TEST BUFFER 3727 075151* 5234 PKBTEND,5234//KBTEND /POINTER TO END OF KEYBOARD TEST 3728 075152* 3729 075152* / COMES HERE WHEN THE LOOPBACK TEST TIMES OUT. 3730 075152* 3731 075152* LUPTIMO,//NL0010 CLL /INDICATE TIME-OUT ENDED THE TEST 3732 075152* 3733 075152* / COMES HERE WHEN THE COUNT PATTERN IS FINISHED TO (POSSIBLY) TEST THE KEYBOARD. 3734 075152* 3735 075152* LUPDONE,//TAD ESTATUS /GET TEST ERROR STATUS 3736 075152* //DCA ESTATUS /STORE (POSSIBLY) UPDATED VALUE 3737 075152* 6126 VIDCON /CLEAR VIDEO CONTROL 3738 075153* 6121 APTSKP /AUTOMATIC PRODUCT TESTING? 3739 075154* 7410 SKP /SKIP IF NOT 3740 075155* 5751 JMP I PKBTEND/(KBTEND) /JUMP IF SO TO BYPASS TEST 3741 075156* 3012 DCA XR2 /CLEAR RECEIVED CHARACTER COUNT 3742 075157* 6116 KBIRB /READ BUFFER NOW TO RESET UART 3743 075160* 7200 CLA /CLEAN UP 3744 075161* 1350 TAD L375/[375] /GET "JUMP TO POWER UP" VALUE 3745 075162* 6056 KBOLS /OUTPUT TO KEYBOARD 3746 075163* 3050 DCA T6// 3747 075164* 6051 KBOSF /WAIT FOR IT 3748 075165* // JMP .-1 /'TIL DONE 3749 075165* 7410 SKP// 3750 075166* 5372 JMP .+4// 3751 075167* 2050 ISZ T6// 3752 075170* 5364 JMP .-4// 3753 075171* 5716 JMP I VS5231// 3754 075172* 6051 KBOSF /SKIP ON, THUS CLEARING THE FLAG 3755 075173* 0040 40/NOP /HERE IN CASE IT SKIPS (UNREFERENCED?) 3756 075174* 7200 CLA /CLEAN UP 3757 075175* 1125 TAD Z7766/[-12] /SETUP THE 3758 075176* 3023 DCA CNTHI /HIGH-ORDER COUNT 3759 075177* 3022 DCA CNTLO /CLEAR LOW-ORDER COUNT 3760 075200* 7240 NL7777 3761 075201* 1135 TAD PTSTBUFF/(TSTBUFFER-1) /SETUP THE 3762 075202* 3011 DCA XR1 /BUFFER POINTER 3763 075203* 6111 KEYLUP, KBISF /FLAG UP? 3764 075204* 7410 SKP /SKIP IF NOT 3765 075205* 5213 JMP GOTKEY /JUMP IF SO 3766 075206* 2022 ISZ CNTLO /WAITING TOO LONG? 3767 075207* 5203 JMP KEYLUP /NO, KEEP TRYING 3768 075210* 2023 ISZ CNTHI /TOO MANY TIMES? 3769 075211* 5203 JMP KEYLUP /NO, KEEP TRYING 3770 075212* 3771 075212* / NO (FURTHER) KEYBOARD INPUT. 3772 075212* 3773 075212* 5222 JMP KBTIMOUT /CONTINUE THERE 3774 075213* 3775 075213* / COMES HERE WHEN A KEYBOARD CHARACTER IS RECEIVED. 3776 075213* 3777 075213* 6111 GOTKEY, KBISF /SKIP ON, THUS CLEARING THE FLAG 3778 075214* 7000 NOP /IN CASE IT SKIPS 3779 075215* 6116 KBIRB /GET THE CHARACTER 3780 075216* 0114 AND Z377/[377] /JUST 8 BITS 3781 075217* 3411 DCA I XR1 /STORE INTO THE BUFFER 3782 075220* 2012 ISZ XR2 /BUMP CHARACTER COUNT 3783 075221* 5203 JMP KEYLUP /KEEP GOING 3784 075222* 3785 075222* / COMES HERE WHEN KEYBOARD INPUT TIMES OUT. 3786 075222* 3787 075222* 1237 KBTIMOU,TAD L7774/(-4) /GET EXPECTED COUNT 3788 075223* 1012 TAD XR2 /COMPARE TO ACTUAL 3789 075224* 7450 SNA /SKIP IF OTHER THAN EXPECTED 3790 075225* 1636 TAD I PTSTBEND/(TSTBEND) /ELSE LOOK AT LAST CHARACTER RECEIVED 3791 075226* 7640 SZA CLA /SKIP IF LAST CHARACTER WAS A 3792 075227* 1105 TAD Z20/[20] /ELSE ADD ON KEYBOARD ERROR VALUE 3793 075230* 7410 SKP// 3794 075231* 7315 NL0010 CLL// 3795 075232* 1054 TAD ESTATUS /GET CUMULATIVE STATUS 3796 075233* 3054 DCA ESTATUS /STORE BACK 3797 075234* 5635 KBTEND, JMP I .+1/(COMTEST) /CONTINUE THERE 3798 075235* 6000 COMTEST /THROUGH HERE 3799 075236* 3800 075236* 7457 PTSTBEN,TSTBEND-1 /POINTER TO END OF TEST KEYBOARD BUFFER 3801 075237* TSTBEND=7460//Error if not 3802 075237* 7774 L7774, 7774 /CONSTANT 7774 3803 075240* 0342 L342, 342 /CONSTANT 0342 3804 075241* 0320 L320, 320 /CONSTANT 0320 3805 075242* 7740 A7740, 7740 /CONSTANT 7740 3806 075243* 6000 PAPTSTR,APTSTRT /STARTING ADDRESS FOR DOWNLOAD 3807 075244* 3808 075244* / DIRECT DOWN-LOAD ROUTINE. CALLED VIA JMS I .+1;DOWNLOAD IF APTEN IS SET. THE 3809 075244* / FORMAT IS STANDARD PAPER-TAPE RIM FORMAT WITHOUT A LEADER. LOADING IS TO MAIN 3810 075244* / MEMORY FIELD 7. THE ROUTINE IS ALSO CALLABLE AFTER A PREVIOUSLY LOADED 3811 075244* / PROGRAM EXITS VIA A PANEL REQUEST INSTEAD OF A HLT INSTRUCTION. THIS CAUSES A 3812 075244* / TOTAL RESTART OF ALL CODE INITIALLY MOVED FROM THE ROM TO CP FIELD 7. IN THIS 3813 075244* / SITUATION, CODE LOADED INTO MAIN MEMORY 76000-77777 WILL BE MOVED TO CP 3814 075244* / 76000-7777 TO BECOME THE NEXT CP-INTERRUPT HANDLER, ETC. EXIT VIA HLT 3815 075244* / INSTRUCTION RETURNS TO A DESIGNATED ENTRY POINT TO LOAD MORE CODE. 3816 075244* 3817 075244* 0000 DOWNLOA,.-. /DOWN-LOAD ROUTINE 3818 075245* 2244 ISZ DOWNLOAD /BUMP PAST CALL POINTER 3819 075246* 6271 CDF 70 /ENSURE OUR FIELD 3820 075247* 1115 TAD Z400/[400] /SET POWER-ON MASK 3821 075250* 0061 AND PSTATUS /GET POWER-ON BIT 3822 075251* 7650 SNA CLA /SKIP IF SET 3823 075252* 5343 JMP DWNAGN /JUMP IF NOT 3824 075253* 3361 DCA CMSW /INDICATE MOVABLE CODE NOT LOADED YET 3825 075254* 3826 075254* / THE CODE IS REJOINED HERE WHEN DOWN-LOADED CODE EXITS WITH A HLT INSTRUCTION. 3827 075254* 3828 075254* 6271 DWNENTR,CDF 70 /GOTO MAIN MEMORY LOADING FIELD 3829 075255* 1261 TAD PBAUD /GET BAUD RATE 3830 075256* 6333 PRSB /SETUP 9600 BAUD RATE 3831 075257* 7200 CLA /CLEAN UP 3832 075260* 6321 PRISKP /SKIP ON, THUS CLEARING INPUT FLAG 3833 075261* 0016 PBAUD, 16 /RATE VALUE FOR 9600 BAUD; ALSO SKIP PROTECT 3834 075262* 1240 TAD L342/(342) /GET CHARACTER CODE 3835 075263* 6336 PROLS /OUTPUT IT 3836 075264* 6326 PRIRB /READ KEYBOARD BUFFER NOW FOR CHARACTERS LATER 3837 075265* 6266 CPD /MAIN MEMORY INDIRECTS FROM NOW ON 3838 075266* 6321 RIMLUP, PRISKP /FLAG UP 3839 075267* 5266 JMP RIMLUP /NO, WAIT FOR IT 3840 075270* 6321 PRISKP /YES, MAKE SURE IT CLEARS 3841 075271* 7000 NOP /IN CASE IT SKIPS AGAIN 3842 075272* 6326 PRIRB /READ IN THE CHARACTER 3843 075273* 7106 CLL RTL;RTL /MOVE UP 075274* 7006 3844 075275* 7510 SPA /SKIP IF NOT AT TRAILER 3845 075276* 5311 JMP RIMEND /JUMP IF DONE 3846 075277* 7006 RTL /MOVE UP TO HIGH-ORDER 3847 075300* 6321 PRISKP /WAIT FOR 3848 075301* 5300 JMP .-1 /NEXT CHARACTER 3849 075302* 6321 PRISKP /MAKE SURE IT CLEARS 3850 075303* 7000 NOP /IN CASE IT SKIPS AGAIN 3851 075304* 6324 PRIRS /OR IN LATEST CHARACTER 3852 075305* 7420 SNL /SKIP IF ORIGIN SETTING 3853 075306* 3400 DCA I RIMADR /STORE THE DATA 3854 075307* 3000 DCA RIMADR /STORE AS NEW ORIGIN 3855 075310* 5266 JMP RIMLUP /KEEP GOING 3856 075311* 3857 075311* / COMES HERE AT THE END OF THE RIM LOADING. 3858 075311* 3859 075311* 7200 RIMEND, CLA /CLEAN UP 3860 075312* 1241 TAD L320/(320) /GET THIS VALUE 3861 075313* 3642 DCA I A7740/(7740) /SOMEONE NEEDS THIS THERE 3862 075314* 6276 SPD /CP MEMORY INDIRECTS 3863 075315* 3010 DCA XR0 /CLEAR INDEX (WHY?) 3864 075316* 6201 CDF 00 /GOING TO FIELD 0 3865 075317* 1363 TAD PCPIHND/(CPIHND) /GET INTERRUPT HANDLER ADDRESS 3866 075320* 3533 DCA I CPIADDR/[ROMSP] /STORE IN INTERRUPT POINTER 3867 075321* 1362 TAD JMPIPM/(ROMSP&177+JMPIC)/GET JMP I .-1 3868 075322* 3534 DCA I PROMST/[ROMST] /STORE IN RESTART ADDRESS 3869 075323* 7240 NL7777 /BACKUP 3870 075324* 1363 TAD PCPIHND/(CPIHND) /NOW HAVE AUTO-INCREMENT LOADING ADDRESS 3871 075325* 3010 DCA XR0 /STASH THE POINTER 3872 075326* 1010 TAD XR0 /GET IT AGAIN 3873 075327* 3011 DCA XR1 /STASH FOR MOVING ALSO 3874 075330* 6271 CDF 70 /GOTO OUR FIELD 3875 075331* 1410 RCPLUP, TAD I XR0 /GET A WORD 3876 075332* 7450 SNA /END OF LIST? 3877 075333* 5340 JMP RIMST /JUMP IF SO 3878 075334* 6201 CDF 00 /GOTO FIELD 0 3879 075335* 3411 DCA I XR1 /PUT A WORD 3880 075336* 6271 CDF 70 /BACK TO OUR FIELD 3881 075337* 5331 JMP RCPLUP /KEEP GOING 3882 075340* 3883 075340* 6273 RIMST, CIF CDF 70 /GOING TO FIELD 7 3884 075341* 6004 PEX /LEAVING PANEL MEMORY 3885 075342* 5643 JMP I PAPTSTRT/(APTSTRT) /GO THERE 3886 075343* 3887 075343* / COMES HERE IF A PREVIOUSLY LOADED ROUTINE EXITED VIA A PANEL REQUEST WHICH 3888 075343* / CAUSES A TOTAL RESTART OF THE FORMERLY ROM-BASED CODE MOVED TO FIELD 7. CODE 3889 075343* / LOADED INTO MAIN MEMORY 76000-77777 SHOULD BE MOVED TO CP 76000-77777. 3890 075343* 3891 075343* 1361 DWNAGN, TAD CMSW /GET LOAD SWITCH 3892 075344* 7640 SZA CLA /SKIP IF NOT LOADED YET 3893 075345* 5644 JMP I DOWNLOAD /RETURN TO CALLER 3894 075346* 7240 NL7777 /INDICATE CODE MOVED 3895 075347* 3361 DCA CMSW /FOR NEXT TIME 3896 075350* 1243 TAD PAPTSTRT/(APTSTRT) /GET STARTING ADDRESS 3897 075351* 3000 DCA RIMADR /STASH THE POINTER 3898 075352* 6266 MCLUP, CPD /MAIN MEMORY INDIRECTS 3899 075353* 1400 TAD I RIMADR /GET A WORD 3900 075354* 6276 SPD /CP MEMORY INDIRECTS 3901 075355* 3400 DCA I RIMADR /PUT A WORD 3902 075356* 2000 ISZ RIMADR /BUMP TO NEXT 3903 075357* 5352 JMP MCLUP /KEEP GOING 3904 075360* 5644 JMP I DOWNLOAD /RETURN TO CALLER 3905 075361* 3906 075361* 0000 CMSW, .-. /CODE MOVED SWITCH 3907 075362* 5776 JMPIPM, ROMSP&177+JMPIC /JMP I .-1 CONSTANT FOR RESTART ADDRESS 3908 075363* 1536 PCPIHND,CPIHND /CP-INTERRUPT HANDLING ADDRESS 3909 075364* CPIHND=1536//Blank this line 3910 075364* / DATA PATTERN USED TO TEST RX50 SILO BUFFER. 3911 075364* 3912 075364* 0000 TPATTRN,000 3913 075365* 0252 252 3914 075366* 0125 125 3915 075367* 0063 063 3916 075370* 0017 017 3917 075371* 0377 377 3918 075372* 3919 075372* 0000 ZBLOCK 5400-.// /EMPTY SPACE 075373* 0000 075374* 0000 075375* 0000 075376* 0000 075377* 0000 3920 075400* 3921 075400* 0000 DINDEX, .-. /TEST DATA INDEX 3922 075401* 0000 DCNT, .-. /TEST DATA COUNTER 3923 075402* 0000 DPTR, .-. /TEST DATA POINTER 3924 075403* 7773 M5, -5 /CONSTANT 7773 3925 075404* 7000 M1000, -1000 /CONSTANT 7000 3926 075405* 5364 PTPATTR,TPATTRN /POINTER TO SILO TEST DATA 3927 075406* 3928 075406* / COMES HERE AFTER DEALING WITH THE COMMUNICATIONS PORT. 3929 075406* 3930 075406* 4562 COMDONE,JMS I PRDTWAIT/(RDTWAIT) /TIME OUT RD51 (IF PRESENT) 3931 075407* 6751 LCD /SEND A FILL BUFFER COMMAND 3932 075410* 6007 CAF /CLEAN UP; SELF-TEST SHOULD RAISE THE FLAG 3933 075411* 7240 NL7777 /SETUP AN 3934 075412* 3010 DCA XR0 /INDEX REGISTER (EXTRANEOUS?) 3935 075413* 1131 TAD DTIMOUT/[-DTIME] /SETUP THE 3936 075414* 3050 DCA T6 /TIME-OUT COUNTER 3937 075415* 3051 DCA T7 /CLEAR INNER TIME-OUT COUNTER 3938 075416* 6755 DONWAIT,SDN /DONE FLAG UP? 3939 075417* 5223 JMP NOTDONE /NO, GO THERE TO WAIT 3940 075420* 6754 SER /YES, ANY ERRORS? 3941 075421* 5230 JMP DONEOK /NO, CONTINUE THERE 3942 075422* 5334 JMP RXERROR /GO THERE BECAUSE OF ERRORS 3943 075423* RXERROR=5534// 3944 075423* 3945 075423* 2051 NOTDONE,ISZ T7 /WAITED ENOUGH? 3946 075424* 5216 JMP DONWAIT /NO, KEEP GOING 3947 075425* 2050 ISZ T6 /WAITING TOO LONG? 3948 075426* 5216 JMP DONWAIT /NO, KEEP GOING 3949 075427* 5334 JMP RXERROR /GO THERE BECAUSE IT TIMED OUT 3950 075430* 3951 075430* 6121 DONEOK, APTSKP /AUTOMATIC PRODUCT TESTING? 3952 075431* 7410 SKP /SKIP IF NOT 3953 075432* 4523 JMS I PAPTROUTINE/[APTROUTINE]/CALL ROUTINE IF SO 3954 075433* 7300 CLA CLL /CLEAN UP 3955 075434* 3200 DCA DINDEX /CLEAR DATA INDEX 3956 075435* 3201 DCA DCNT /CLEAR DATA COUNTER 3957 075436* 7303 NL0100 CLL /GET FILL BUFFER COMMAND (8-BIT) VALUE 3958 075437* 6751 LCD /LOAD THE COMMAND 3959 075440* 4553 JMS I PRXWT /CALL WAIT ROUTINE 3960 075441* 5244 JMP CMNDOK /TRANSFER FLAG UP 3961 075442* 5334 JMP RXERROR /DONE FLAG UP, ERROR 3962 075443* 5334 JMP RXERROR /ERROR OR TIME-OUT 3963 075444* 3964 075444* 6752 CMNDOK, XDR /FINISH THE COMMAND 3965 075445* 4553 FILLUP, JMS I PRXWT /CALL WAIT ROUTINE 3966 075446* 5251 JMP TRNSUP /TRANSFER FLAG UP 3967 075447* 5266 JMP DONEUP /DONE FLAG CAME UP, SO FINISH THERE 3968 075450* 5334 JMP RXERROR /ERROR OR TIME-OUT 3969 075451* 3970 075451* 1200 TRNSUP, TAD DINDEX /GET DATA INDEX 3971 075452* 1205 TAD PTPATTRN/(TPATTRN) /POINT TO PROPER ELEMENT IN LIST 3972 075453* 3202 DCA DPTR /STASH THE POINTER 3973 075454* 1602 TAD I DPTR /GET THE DATA VALUE 3974 075455* 6752 XDR /SEND TO SILO 3975 075456* 7200 CLA /CLEAN UP 3976 075457* 2201 ISZ DCNT /BUMP DATA COUNTER 3977 075460* 2200 ISZ DINDEX /BUMP DATA INDEX 3978 075461* 1200 TAD DINDEX /GET DATA INDEX 3979 075462* 1203 TAD M5/(-5) /COMPARE TO LARGEST VALUE 3980 075463* 7740 SMA SZA CLA /SKIP IF NOT PAST 3981 075464* 3200 DCA DINDEX /ELSE RESET DATA INDEX 3982 075465* 5245 JMP FILLUP /KEEP GOING 3983 075466* 3984 075466* / DONE FLAG IS UP; CHECK IF PROPER BYTE COUNT. 3985 075466* 3986 075466* 1201 DONEUP, TAD DCNT /GET DATA COUNTER 3987 075467* 1204 TAD M1000/(-1000) /COMPARE TO EXPECTED VALUE 3988 075470* 7640 SZA CLA /SKIP IF IT MATCHES 3989 075471* 5334 JMP RXERROR /ELSE COMPLAIN 3990 075472* 7300 CLA CLL /CLEAN UP 3991 075473* 3200 DCA DINDEX /CLEAR DATA INDEX 3992 075474* 3201 DCA DCNT /CLEAR DATA COUNTER 3993 075475* 1107 TAD Z102/[102] /GET EMPTY BUFFER COMMAND (8-BIT) VALUE 3994 075476* 6751 LCD /LOAD THE COMMAND 3995 075477* 4553 JMS I PRXWT /CALL WAIT ROUTINE 3996 075500* 5303 JMP CMDOK /TRANSFER FLAG CAME UP 3997 075501* 5334 JMP RXERROR /DONE FLAG CAME UP, COMPLAIN 3998 075502* 5334 JMP RXERROR /ERROR OR TIME-OUT 3999 075503* 4000 075503* 7200 CMDOK, CLA /CLEAN UP 4001 075504* 6752 XDR /FINISH THE COMMAND 4002 075505* 4553 EMPTLUP,JMS I PRXWT /CALL WAIT ROUTINE 4003 075506* 7410 SKP /TRANSFER FLAG CAME UP 4004 075507* 5331 JMP DONUP /DONE FLAG CAME UP 4005 075510* 4006 075510* / OOPS! FORGOT THE "JMP RXERROR" IF IT GETS AN ERROR OR TIMES OUT. 4007 075510* 4008 075510* 1200 TAD DINDEX /GET DATA INDEX 4009 075511* 1205 TAD PTPATTRN/(TPATTRN) /POINT TO PROPER ELEMENT IN LIST 4010 075512* 3202 DCA DPTR /STASH THE POINTER 4011 075513* 1602 TAD I DPTR /GET THE DATA 4012 075514* 3202 DCA DPTR /SAVE IT 4013 075515* 6752 XDR /GET THE BYTE 4014 075516* 7041 CIA /INVERT FOR TESTING 4015 075517* 1202 TAD DPTR /COMPARE TO TEST VALUE 4016 075520* 7640 SZA CLA /SKIP IF IT MATCHES 4017 075521* 5334 JMP RXERROR /ELSE COMPLAIN 4018 075522* 2201 ISZ DCNT /BUMP DATA COUNTER 4019 075523* 2200 ISZ DINDEX /BUMP DATA INDEX 4020 075524* 1200 TAD DINDEX /GET DATA INDEX 4021 075525* 1203 TAD M5/(-5) /COMPARE TO LARGEST VALUE 4022 075526* 7740 SMA SZA CLA /SKIP IF NOT TOO FAR 4023 075527* 3200 DCA DINDEX /ELSE RESET DATA INDEX 4024 075530* 5305 JMP EMPTLUP /KEEP GOING 4025 075531* 4026 075531* / DONE FLAG IS UP; CHECK IF PROPER BYTE COUNT. 4027 075531* 4028 075531* 1201 DONUP, TAD DCNT /GET DATA COUNTER 4029 075532* 1204 TAD M1000/(-1000) /COMPARE TO EXPECTED VALUE 4030 075533* 7640 SZA CLA /SKIP IF IT MATCHES 4031 075534* 1341 RXERROR,TAD L40/(40) /GET RX50 ERROR VALUE 4032 075535* 1054 TAD ESTATUS /UPDATE CUMULATIVE ERROR STATUS 4033 075536* 3054 DCA ESTATUS /STORE BACK 4034 075537* 5740 JMP I .+1/(RXOK) /CONTINUE THERE 4035 075540* 0200 RXOK /THROUGH HERE 4036 075541* 0040 L40, 40 /CONSTANT 0040 4037 075542* 4038 075542* 4039 075542* 0000 REGINIT,.-. /REGISTER INITIALIZE ROUTINE 4040 075543* 4543 JMS I PCOMLOAD/[COMLOAD] /LOAD REGISTER 4041 075544* 0000 A^10+0 /0A 4042 075545* 0030 030 /CHANNEL RESET 4043 075546* 4543 JMS I PCOMLOAD/[COMLOAD] /LOAD REGISTER 4044 075547* 0010 B^10+0 /0B 4045 075550* 0030 030 /CHANNEL RESET 4046 075551* 4543 JMS I PCOMLOAD/[COMLOAD] /LOAD REGISTER 4047 075552* 0002 A^10+2 /2A 4048 075553* 0020 020 /LOW-ORDER BITS ARE AFFECTED, NO DMA 4049 075554* 4543 JMS I PCOMLOAD/[COMLOAD] /LOAD REGISTER 4050 075555* 0012 B^10+2 /2B 4051 075556* 0000 000 /INTERRUPT VECTOR IS ALL ZEROES 4052 075557* 4543 JMS I PCOMLOAD/[COMLOAD] /LOAD REGISTER 4053 075560* 0004 A^10+4 /4A 4054 075561* 0104 104 /16X CLOCK RATE, 1 STOP BIT ASYNCHRONOUS 4055 075562* 4543 JMS I PCOMLOAD/[COMLOAD] /LOAD REGISTER 4056 075563* 0001 A^10+1 /1A 4057 075564* 0022 022 /RECEIVE AND TRANSMIT INTERRUPT ENABLE 4058 075565* 4543 JMS I PCOMLOAD/[COMLOAD] /LOAD REGISTER 4059 075566* 0011 B^10+1 /1B 4060 075567* 0004 004 /CONDITION AFFECTS VECTOR, NO B INTERRUPTS 4061 075570* 4543 JMS I PCOMLOAD/[COMLOAD] /LOAD REGISTER 4062 075571* 0003 A^10+3 /3A 4063 075572* 0301 301 /8 BITS, ENABLE RECEIVER 4064 075573* 4543 JMS I PCOMLOAD/[COMLOAD] /LOAD REGISTER 4065 075574* 0005 A^10+5 /5A 4066 075575* 0150 150 /8 BITS, ENABLE TRANSMITTER 4067 075576* 5742 JMP I REGINIT /RETURN 4068 075577* 4069 075577* 0000 ZBLOCK 5600-. /EMPTY 4070 075600* 4071 075600* PAGE 4072 075600* 4073 075600* / CP-INTERRUPT HANDLER FOR MAIN MEMORY LOOPBACK TEST. 4074 075600* 4075 075600* CPLOAD= . /CP-INTERRUPT HANDLER LOADS HERE 4076 075600* 4077 074000* RELOC 4000 /WHERE THIS EXECUTES IN FIELD 0 4078 074000* 4079 074000* CPINT= . /CP-INTERRUPT HANDLER CODE EXECUTES HERE 4080 074000* 4081 074000* 3017 CPINT, DCA XR7 /SAVE AC 4082 074001* 6000 PRS /GET STATUS 4083 074002* 3010 DCA XR0 /SAVE IT 4084 074003* 6276 SPD /WANT OUR OWN INDIRECTS 4085 074004* 6203 CIF CDF 00 /SET OUR OWN FIELD 4086 074005* 1010 TAD XR0 /GET STATUS 4087 074006* 7004 RAL /MOVE UP 4088 074007* 7430 SZL /SKIP IF BOOTSTRAP NOT SET 4089 074010* 5221 JMP TESTCP /JUMP IF IT IS 4090 074011* 7510 SPA /SKIP IF PANEL REQUEST NOT SET 4091 074012* 5300 JMP PRQEXIT /JUMP IF IT IS SET 4092 074013* 7014 R3L /MOVE UP 4093 074014* 7710 SPA CLA /SKIP IF HALT TRAP NOT SET 4094 074015* 5270 JMP TESTHLT /JUMP IF IT IS SET 4095 074016* 6273 CDF CIF 70 /BACK TO OUR FIELD 4096 074017* 5620 JMP I PLBDONE/(LBDONE) /RETURN TO CALLER 4097 074020* 4098 074020* 5064 PLBDONE,LBDONE /POINTER TO CALLER OF TEST 4099 074021* 4100 074021* / AT THIS POINT, THE SO-CALLED "BOOTSTRAP" CONDITION IS SET, WHICH MEANS THAT 4101 074021* / ONE OF THE CPREQ'S FROM THE THIRD PIE CHIP HAS OCCURRED. 4102 074021* 4103 074021* 7200 TESTCP, CLA /CLEAN UP 4104 074022* 6061 VSF /VIDEO INTERRUPT? 4105 074023* 5234 JMP TSTTRAP /NO, TRY OTHERS 4106 074024* 7200 CLA /CLEAN UP 4107 074025* 6065 VIE /PREVENT FURTHER VIDEO INTERRUPTS 4108 074026* 1304 TAD PVIDPC/(VIDPC) /GET EXPECTED INTERRUPTED ADDRESS 4109 074027* 7041 CIA /INVERT FOR COMPARISON 4110 074030* 1000 TAD INTADR /COMPARE TO ACTUAL INTERRUPT PC 4111 074031* 7650 SNA CLA /SKIP IF OTHER THAN EXPECTED 4112 074032* 5265 JMP BUMPIT /JUMP IF OK 4113 074033* 4114 074033* / INTERRUPT PC WRONG. 4115 074033* 4116 074033* 5266 JMP JUSTEXIT /CONTINUE THERE 4117 074034* 4118 074034* 6071 TSTTRAP,TTYSF /DEVICE 03, 04 TRAP FLAG SET? 4119 074035* 5245 JMP TSTKYIN /JUMP IF NOT 4120 074036* 6075 TTYIE /PREVENT FURTHER TTY: TRAP INTERRUPTS 4121 074037* 1305 TAD PTTYPC/(TTYPC) /GET EXPECTED INTERRUPTED ADDRESS 4122 074040* 7041 CIA /INVERT FOR COMPARISON 4123 074041* 1000 TAD INTADR /COMPARE TO ACTUAL INTERRUPT PC 4124 074042* 7650 SNA CLA /SKIP IF OTHER THAN EXPECTED 4125 074043* 5265 JMP BUMPIT /JUMP IF OK 4126 074044* 4127 074044* / INTERRUPT PC WRONG. 4128 074044* 4129 074044* 5266 JMP JUSTEXIT /CONTINUE THERE 4130 074045* 4131 074045* 6111 TSTKYIN,KBISF /KEYBOARD INPUT FLAG SET? 4132 074046* 5256 JMP TSTKYOUT /NO, TRY OUTPUT 4133 074047* 6115 KBIIE /PREVENT FURTHER KEYBOARD INPUT INTERRUPTS 4134 074050* 1306 TAD PKBIPC/(KBIPC) /GET EXPECTED INTERRUPTED ADDRESS 4135 074051* 7041 CIA /INVERT FOR COMPARISON 4136 074052* 1000 TAD INTADR /COMPARE TO ACTUAL INTERRUPT PC 4137 074053* 7650 SNA CLA /SKIP IF OTHER THAN EXPECTED 4138 074054* 5265 JMP BUMPIT /JUMP IF OK 4139 074055* 4140 074055* / INTERRUPT PC WRONG. 4141 074055* 4142 074055* 5266 JMP JUSTEXIT /CONTINUE THERE 4143 074056* 4144 074056* 6051 TSTKYOU,KBOSF /KEYBOARD OUTPUT FLAG SET? 4145 074057* 5266 JMP JUSTEXIT /NO, FORGET IT 4146 074060* 6055 KBOIE /PREVENT FURTHER KEYBOARD OUTPUT INTERRUPTS 4147 074061* 1307 TAD PKBOIPC/(KBOIPC) /GET EXPECTED INTERRUPTED ADDRESS 4148 074062* 7041 CIA /INVERT FOR COMPARISON 4149 074063* 1000 TAD INTADR /COMPARE TO ACTUAL INTERRUPT PC 4150 074064* 7650 SNA CLA /SKIP IF OTHER THAN EXPECTED 4151 074065* 4152 074065* / COMES HERE TO BUMP THE PC PAST THE NL0004 INSTRUCTIONS IF THE PROPER INTERRUPT 4153 074065* / ADDRESS WAS PRESENT AT THE POINT OF INTERRUPT. 4154 074065* 4155 074065* 2000 BUMPIT, ISZ INTADR /BUMP INTERRUPTED ADDRESS 4156 074066* 4157 074066* / SKIPS PREVIOUS TO EXIT NORMALLY; THIS COULD POSSIBLY BE CONSIDERED AN ERROR. 4158 074066* 4159 074066* 6004 JUSTEXI,PEX /EXITING FROM PANEL MEMORY 4160 074067* 5400 JMP I INTADR /BACK TO INTERRUPTED MAIN MEMORY PROGRAM 4161 074070* 4162 074070* / COMES HERE IF THE HALT FLAG WAS SET 4163 074070* 4164 074070* 7200 TESTHLT,CLA /CLEAN UP 4165 074071* 6003 PG0 /RESET THE HALT FLAG 4166 074072* 1310 TAD PHLTPC/(HLTPC) /GET EXPECTED INTERRUPTED ADDRESS 4167 074073* 7041 CIA /INVERT FOR COMPARISON 4168 074074* 1000 TAD INTADR /COMPARE TO ACTUAL INTERRUPT PC 4169 074075* 7650 SNA CLA /SKIP IF OTHER THAN EXPECTED 4170 074076* 5265 JMP BUMPIT /JUMP IF OK 4171 074077* 4172 074077* / INTERRUPT PC WRONG. 4173 074077* 4174 074077* 5266 JMP JUSTEXIT /CONTINUE THERE 4175 074100* 4176 074100* / COMES HERE IF MAIN MEMORY PROGRAM EXITED VIA PANEL REQUEST. 4177 074100* 4178 074100* 7200 PRQEXIT,CLA /CLEAN UP 4179 074101* 1017 TAD XR7 /RESTORE EXITING AC 4180 074102* 6273 CIF CDF 70 /BACK TO OUR FIELD 4181 074103* 5620 JMP I PLBDONE/(LBDONE) /RETURN TO CALLER 4182 074104* 4183 074104* 0205 PVIDPC, VIDPC /EXPECTED PC FOR VIDEO INTERRUPT 4184 074105* VIDPC=0205// 4185 074105* 0207 PTTYPC, TTYPC /EXPECTED PC FOR TTY: TRAP INTERRUPT 4186 074106* TTYPC=0207// 4187 074106* 0213 PKBIPC, KBIPC /EXPECTED PC FOR KEYBOARD INPUT INTERRUPT 4188 074107* KBIPC=0213// 4189 074107* 0211 PKBOIPC,KBOIPC /EXPECTED PC FOR KEYBOARD OUTPUT INTERRUPT 4190 074110* KBOIPC=0211// 4191 074110* 0203 PHLTPC, HLTPC /EXPECTED PC FOR HALT INTERRUPT 4192 074111* HLTPC=0203// 4193 074111* 4194 074111* CPEND= . /END OF CP-INTERRUPT HANDLER CODE THAT OUGHT 4195 074111* /TO BE MOVED 4196 074111* 4197 075711* RELOC CPEND-CPINT+CPLOAD /RE-ESTABLISH ORIGIN 4198 075711* 4199 075711* / MEMORY COMPARE ROUTINE. 4200 075711* 4201 075711* / THIS ROUTINE CHECKS IF THE CURRENT TEST FIELD MATCHES THE TEST PATTERN IN 4202 075711* / EVERY WORD. ALL MATCHING WORDS ARE INVERTED FOR THE NEXT TEST. THE IMMEDIATE 4203 075711* / RETURN IS TAKEN ON A MATCH FAILURE; SKIP RETURN IS TAKEN IF ALL WORDS MATCH. 4204 075711* 4205 075711* 0000 MEMCOMP,.-. /MEMORY COMPARE ROUTINE 4206 075712* 1044 TAD T2 /GET LATEST FIELD 4207 075713* 0101 AND Z7/[7] /JUST FIELD BITS 4208 075714* 7014 R3L /MOVE UP 4209 075715* 1121 TAD ZCDF/[CDF] /FORM CDF INSTRUCTION 4210 075716* 3317 DCA .+1 /STORE IN-LINE 4211 075717* 7402 HLT+.-. /WILL BE CDF XX INSTRUCTION 4212 075720* 1443 MCHKLP, TAD I T1 /GET A WORD 4213 075721* 1042 TAD T0 /COMPARE TO TEST VALUE 4214 075722* 7001 IAC /SHOULD BE ZERO 4215 075723* 7640 SZA CLA /SKIP IF IT MATCHES 4216 075724* 5711 JMP I MEMCOMPARE /TAKE IMMEDIATE RETURN IF IT FAILS 4217 075725* 1042 TAD T0 /GET INVERTED TEST VALUE 4218 075726* 3443 DCA I T1 /STORE BACK 4219 075727* 1043 TAD T1 /GET ADDRESS 4220 075730* 1041 TAD TINC /BUMP UP 4221 075731* 3043 DCA T1 /STORE BACK 4222 075732* 2010 ISZ XR0 /DONE ALL IN THIS FIELD 4223 075733* 5320 JMP MCHKLP /NO, GO BACK FOR MORE 4224 075734* 2311 ISZ MEMCOMPARE /YES, BUMP RETURN ADDRESS 4225 075735* 5711 JMP I MEMCOMPARE /TAKE SKIP RETURN TO CALLER 4226 075736* 4227 075736* 4228 075736* / PIE CHIP PROGRAMMING TABLE. 4229 075736* 4230 075736* PTABLE= . /PROGRAMMING TABLE HERE 4231 075736* 4232 075736* / FIRST CHIP. 4233 075736* 4234 075736* 1034 KEY^10+1004 /DEVICE 03 4235 075737* 1044 TTY^10+1004 /DEVICE 04 4236 075740* 3130 CLKCON^10+3000 /DEVICE 13 4237 075741* 3322 PRICON^10+3002 /DEVICE 32 4238 075742* 3337 PROCON^10+3007 /DEVICE 33 4239 075743* 4240 075743* / SECOND CHIP. 4241 075743* 4242 075743* 1302 PORTIN^10+1002 /DEVICE 30 4243 075744* 1313 PORTOUT^10+1003 /DEVICE 31 4244 075745* 3364 PORTCON^10+3004 /DEVICE 36 4245 075746* 0754 RXCON^10+0004 /DEVICE 75 4246 075747* 1144 APUCON^10+1004 /DEVICE 14 4247 075750* 4248 075750* / THIRD CHIP (CP INTERRUPTS ONLY). 4249 075750* 4250 075750* 1070 TTYCON^10+1000 /DEVICE 07 4251 075751* 3060 VIDINT^10+3000 /DEVICE 06 4252 075752* 7053 KBOCON^10+7003 /DEVICE 05 4253 075753* 7112 KBICON^10+7002 /DEVICE 11 4254 075754* 4124 VIDDEV^10+4004 /DEVICE 12 4255 075755* 4256 075755* 0000 0 /THIS ENDS THE LIST 4257 075756* 4258 075756* 0000 ZBLOCK 6000-. /UNUSED 075757* 0000 075760* 0000 075761* 0000 075762* 0000 075763* 0000 075764* 0000 075765* 0000 075766* 0000 075767* 0000 075770* 0000 075771* 0000 075772* 0000 075773* 0000 075774* 0000 075775* 0000 075776* 0000 075777* 0000 4259 076000* 4260 076000* PAGE 4261 076000* 4262 076000* / COMES HERE AFTER TESTING THE KEYBOARD (OR JUST AFTER THE TEST WAS BYPASSED IF 4263 076000* / APTEN IS IN EFFECT) TO SETUP THE COMMUNICATIONS CHIP. 4264 076000* 4265 076000* 1104 COMTEST,TAD BAUD17/(17) /GET BAUD RATE VALUE FOR 19200 BAUD 4266 076001* 6363 MSB /SETUP COMMUNICATIONS CHIP RATE 4267 076002* 7200 CLA /CLEAN UP 4268 076003* 6367 MPRESET /RESET THE COMMUNICATIONS CHIP 4269 076004* 1112 TAD Z237// 4270 076005* 6362 MLC// 4271 076006* 7200 CLA// 4272 076007* 6121 APTSKP /AUTOMATIC PRODUCT TESTING? 4273 076010* 7410 SKP /SKIP IF NOT 4274 076011* 5221 JMP TESTCOM /JUMP IF SO 4275 076012* 1101 COMEXIT,TAD Z7/[7] /GET 1200 BAUD RATE VALUE 4276 076013* 6363 MSB /SETUP COMM CHIP FOR 1200 BAUD 4277 076014* 7200 CLA /CLEAN UP 4278 076015* 4620 JMS I PREGINIT/(REGINIT) /INITIALIZE THE REGISTERS 4279 076016* 5617 JMP I .+1/(COMDONE) /GO BACK TO MAIN-LINE CODE 4280 076017* 5406 COMDONE /THROUGH HERE 4281 076020* 4282 076020* 5542 PREGINI,REGINIT /POINTER TO REGISTER INITIALIZATION ROUTINE 4283 076021* 4284 076021* 4620 TESTCOM,JMS I PREGINIT/(REGINIT) /INITIALIZE THE REGISTERS 4285 076022* 3030 DCA TM0 /CLEAR OUTPUT TEST VALUE 4286 076023* 3031 DCA COMTM1 /CLEAR INPUT TEST VALUE 4287 076024* 3050 DCA T6 /CLEAR LOW-ORDER TIME-OUT COUNTER 4288 076025* 1127 TAD Z7741/[-37] /SETUP THE 4289 076026* 3051 DCA T7 /HIGH-ORDER TIME-OUT COUNTER 4290 076027* 6201 CDF 00 /SET EVEN FIELD TO ACCESS "A" SIDE 4291 076030* 6316 OLS /OUTPUT A NULL CHARACTER 4292 076031* 6271 CDF 70 /BACK TO OUR FIELD 4293 076032* 2030 ISZ TM0 /BUMP OUTPUT VALUE 4294 076033* 6301 COMWAIT,ISF /COMMUNICATIONS PORT FLAG UP? 4295 076034* 7410 SKP /SKIP IF NOT 4296 076035* 5246 JMP COMCHK /JUMP IF SO 4297 076036* 2050 ISZ T6 /WAITING TOO LONG? 4298 076037* 5233 JMP COMWAIT /NO, KEEP TRYING 4299 076040* 2051 ISZ T7 /WAITING TOO MANY TIMES? 4300 076041* 5233 JMP COMWAIT /NO, KEEP TRYING 4301 076042* 1323 COMBAD, TAD L100/(100) /GET COMMUNICATIONS PORT ERROR BIT 4302 076043* 1054 TAD ESTATUS /UPDATE CUMULATIVE ERROR STATUS 4303 076044* 3054 DCA ESTATUS /STORE BACK 4304 076045* 5212 JMP COMEXIT /STOP TESTING 4305 076046* 4306 076046* 4544 COMCHK, JMS I PCOMREAD/[COMREAD] /READ CONTENTS OF 4307 076047* 0012 B^10+2 /REGISTER 2B 4308 076050* 0104 AND Z17/[17] /JUST LOW-ORDER BITS AFFECTING "A" HALF 4309 076051* 1324 TAD M6/(-6) /RECEIVE CHARACTER AVAILABLE? 4310 076052* 7440 SZA /SKIP IF AS EXPECTED 4311 076053* 5301 JMP CCHKMORE /JUMP IF NOT 4312 076054* 6201 CDF 00 /NEED EVEN FIELD TO ACCESS "A" SIDE 4313 076055* 6306 IRB /GET THE CHARACTER 4314 076056* 6271 CDF 70 /BACK TO OUR FIELD 4315 076057* 0114 AND Z377/[377] /JUST DATA BITS 4316 076060* 7041 CIA /INVERT FOR COMPARISON 4317 076061* 1031 TAD COMTM1 /COMPARE TO EXPECTED VALUE 4318 076062* 7650 SNA CLA /SKIP IF DIFFERENT 4319 076063* 5270 JMP CREADOK /JUMP IF IT MATCHES 4320 076064* 4543 JMS I PCOMLOAD/[COMLOAD] /CALL REGISTER LOAD ROUTINE 4321 076065* 0000 A^10+0 /REGISTER 0A 4322 076066* 0030 030 /CHANNEL RESET 4323 076067* 5242 JMP COMBAD /FORGET IT 4324 076070* 4325 076070* 2031 CREADOK,ISZ COMTM1 /BUMP INPUT TEST VALUE 4326 076071* 1031 TAD COMTM1 /GET THE VALUE 4327 076072* 0115 AND Z400/[400] /JUST TOO-FAR BIT 4328 076073* 7640 SZA CLA /SKIP IF STILL GOING 4329 076074* 5212 JMP COMEXIT /JUMP IF FINISHED 4330 076075* 4543 CINTCLR,JMS I PCOMLOAD/[COMLOAD] /CALL REGISTER LOAD ROUTINE 4331 076076* 0000 A^10+0 /0A 4332 076077* 0070 070 /END OF INTERRUPT 4333 076100* 5233 JMP COMWAIT /GO BACK FOR MORE 4334 076101* 4335 076101* 1325 CCHKMOR,TAD L2/(-4+6) /TRANSMITTER BUFFER EMPTY? 4336 076102* 7640 SZA CLA /SKIP IF IT MATCHES 4337 076103* 5242 JMP COMBAD /JUMP IF NOT 4338 076104* 1030 TAD TM0 /GET OUTPUT TEST VALUE 4339 076105* 0115 AND Z400/[400] /JUST TOO-FAR BIT 4340 076106* 7650 SNA CLA /SKIP IF NOW TOO FAR 4341 076107* 5314 JMP OUTMORE /JUMP IF NOT 4342 076110* 4543 JMS I PCOMLOAD/[COMLOAD] /CALL REGISTER LOAD ROUTINE 4343 076111* 0000 A^10+0 /0A 4344 076112* 0050 050 /CLEAR TRANSMITTER INTERRUPT 4345 076113* 5275 JMP CINTCLR /CONTINUE THERE 4346 076114* 4347 076114* 1030 OUTMORE,TAD TM0 /GET OUTPUT VALUE 4348 076115* 6201 CDF 00 /SET EVEN FIELD TO ACCESS "A" HALF 4349 076116* 6316 OLS /OUTPUT THE CHARACTER 4350 076117* 6271 CDF 70 /BACK TO OUR FIELD 4351 076120* 7200 CLA /CLEAN UP 4352 076121* 2030 ISZ TM0 /BUMP TEST VALUE 4353 076122* 5275 JMP CINTCLR /CONTINUE THERE 4354 076123* 4355 076123* 0100 L100, 100 /CONSTANT 0100 4356 076124* 7772 M6, -6 /CONSTANT 7772 4357 076125* 0002 L2, -4+6 /CONSTANT 0002 4358 076126* 4359 076126* / MPSCC REGISTER READ ROUTINE. CALLED WITH IN-LINE ARGUMENT OF EVEN/ODD FIELD 4360 076126* / IN BITS[6-8] AND SPECIFIED REGISTER IN BITS[9-11]. THE CONTENTS OF THE 4361 076126* / SPECIFIED REGISTER ARE RETURNED IN THE AC. 4362 076126* 4363 076126* 0000 COMREAD,.-. /MPSCC CHIP REGISTER READ ROUTINE 4364 076127* 1726 TAD I COMREAD /GET THE IN-LINE ARGUMENT 4365 076130* 2326 ISZ COMREAD /BUMP PAST IT 4366 076131* 3020 DCA CTMP1 /SAVE IT 4367 076132* 1020 TAD CTMP1 /GET IT BACK 4368 076133* 0377 AND L70/(70) /JUST FIELD BITS 4369 076134* 1121 TAD ZCDF/[CDF] /FORM CDF INSTRUCTION 4370 076135* 3336 DCA .+1 /STORE IN-LINE 4371 076136* 7402 HLT+.-. /WILL BE CDF XX INSTRUCTION 4372 076137* 1020 TAD CTMP1 /GET ARGUMENT AGAIN 4373 076140* 0101 AND Z7/[7] /JUST REGISTER BITS 4374 076141* 1347 TAD L4000/(4000) /ADD ON READ ACCESS BIT 4375 076142* 6366 MPSCC /SETUP TO READ THE SPECIFIED REGISTER 4376 076143* 7200 CLA /CLEAN UP 4377 076144* 6366 MPSCC /READ THE REGISTER 4378 076145* 6271 CDF 70 /BACK TO OUR FIELD 4379 076146* 5726 JMP I COMREAD /RETURN 4380 076147* 4381 076147* 4000 L4000, 4000 /CONSTANT 4000 4382 076150* 4383 076150* / MPSCC REGISTER LOAD ROUTINE. CALLED WITH IN-LINE ARGUMENTS OF EVEN/ODD FIELD 4384 076150* / IN BITS[6-8] AND SPECIFIED REGISTER IN BITS[9-11] OF THE FIRST ARGUMENT, 4385 076150* / FOLLOWED BY VALUE TO LOAD INTO THE SPECIFIED REGISTER IN THE SECOND ARGUMENT. 4386 076150* 4387 076150* 0000 COMLOAD,.-. /COMMUNICATIONS CHIP REGISTER LOAD ROUTINE 4388 076151* 7200 CLA /CLEAN UP 4389 076152* 1750 TAD I COMLOAD /GET THE FIRST ARGUMENT 4390 076153* 2350 ISZ COMLOAD /BUMP PAST IT 4391 076154* 3020 DCA CTMP1 /STASH IT 4392 076155* 1750 TAD I COMLOAD /GET THE SECOND ARGUMENT 4393 076156* 2350 ISZ COMLOAD /BUMP PAST IT 4394 076157* 3021 DCA CTMP2 /STASH IT 4395 076160* 1020 TAD CTMP1 /GET THE FIRST ARGUMENT 4396 076161* 0377 AND L70/(70) /JUST FIELD BITS 4397 076162* 1121 TAD ZCDF/[CDF] /FORM CDF INSTRUCTION 4398 076163* 3364 DCA .+1 /STORE IN-LINE 4399 076164* 7402 HLT+.-. /WILL BE CDF XX INSTRUCTION 4400 076165* 1020 TAD CTMP1 /GET THE FIRST ARGUMENT AGAIN 4401 076166* 0101 AND Z7/[7] /JUST REGISTER BITS 4402 076167* 7440 SZA /DON'T NEED TO POINT IF ACCESSING REGISTER 0 4403 076170* 6366 MPSCC /POINT TO DESIRED REGISTER NEXT TIME 4404 076171* 7200 CLA /CLEAN UP 4405 076172* 1021 TAD CTMP2 /GET THE NEW REGISTER CONTENTS 4406 076173* 6366 MPSCC /LOAD THE NEW VALUE 4407 076174* 7200 CLA /CLEAN UP 4408 076175* 6271 CDF 70 /BACK TO OUR FIELD 4409 076176* 5750 JMP I COMLOAD /RETURN TO CALLER 4410 076177* 4411 076177* 0070 L70, 70 /CONSTANT 0070 4412 076200* 4413 076200* PAGE 4414 076200* 4415 076200* / INTERRUPT-DRIVEN LOOPBACK TEST ROUTINE. MOVED TO MAIN MEMORY FIELD 0. 4416 076200* 4417 076200* LBLOAD= . /WHERE WE ARE NOW 4418 076200* 4419 070200* RELOC 0200 /WHERE THIS EXECUTES IN MAIN MEMORY FIELD 0 4420 070200* 4421 070200* 6007 LBTEST, CAF /CLEAN UP 4422 070201* 6326 PRIRB /READ PRINTER INPUT NOW 4423 070202* 7402 HLT /STOP NOW 4424 070203* 7307 HLTPC, NL0004 /THIS SHOULD BE SKIPPED BECAUSE OF CP ROUTINES 4425 070204* 6060 VFL /SET VIDEO INTERRUPT FLAG 4426 070205* 7307 VIDPC, NL0004 /THIS SHOULD BE SKIPPED BECAUSE OF CP ROUTINES 4427 070206* 6034 KRS /DO A TRAPPED KEYBOARD INSTRUCTION 4428 070207* 7307 TTYPC, NL0004 /THIS SHOULD BE SKIPPED BECAUSE OF CP ROUTINES 4429 070210* 6050 KBOFL /SET KEYBOARD OUTPUT FLAG 4430 070211* 7307 KBOIPC, NL0004 /THIS SHOULD BE SKIPPED BECAUSE OF CP ROUTINES 4431 070212* 6110 KBIFL /SET KEYBOARD INPUT FLAG 4432 070213* 7307 KBIPC, NL0004 /THIS SHOULD BE SKIPPED BECAUSE OF CP ROUTINES 4433 070214* 3007 DCA TSTATUS /SAVE AC TEST STATUS 4434 070215* 1247 TAD LB20/(20) /GET LOOPBACK ENABLE VALUE 4435 070216* 6126 VIDCON /MAKE THE INTERFACES LOOP BACK 4436 070217* 7200 CLA /CLEAN UP 4437 070220* 7201 NL0001 /SET INTERRUPT ENABLE BIT 4438 070221* 6135 CLIE /ENABLE CLOCK INTERRUPTS 4439 070222* 3005 DCA CSTATUS /SET INITIAL COUNT STATUS 4440 070223* 1302 TAD L17/(17) /GET BAUD RATE VALUE FOR 19200 BAUD 4441 070224* 6333 PRSB /SET BAUD RATE 4442 070225* 7300 CLA CLL /CLEAN UP 4443 070226* 3020 DCA CTMP1 /CLEAR INITIAL OUTPUT CHARACTER 4444 070227* 1245 TAD JMPI2/(JMP I INT2) /GET INTERRUPT INSTRUCTION 4445 070230* 3001 DCA INT1 /STORE IN INTERRUPT STARTUP 4446 070231* 1244 TAD PINTHND/(INTHND) /GET INTERRUPT ADDRESS 4447 070232* 3002 DCA INT2 /STORE IN INTERRUPT POINTER 4448 070233* 3003 DCA TIMEOUT /CLEAR TIME-OUT COUNTER 4449 070234* 3004 DCA CLKTICK /CLEAR CLOCK-TICK COUNTER 4450 070235* 1020 TAD CTMP1 /GET OUTPUT CHARACTER 4451 070236* 6334 PROPC /OUTPUT TO PRINTER PORT 4452 070237* 3021 DCA CTMP2 /SAVE AS INITIAL INPUT TEST VALUE ALSO 4453 070240* 6001 ION /TURN ON INTERRUPTS 4454 070241* 2003 ISZ TIMEOUT /DONE WAITING YET? 4455 070242* 5241 JMP .-1 /NO, KEEP WAITING 4456 070243* 5321 JMP TIMCHK /WE'RE DONE, FINISH IT THERE 4457 070244* 4458 070244* 0250 PINTHND,INTHND /POINTER TO INTERRUPT HANDLER 4459 070245* 5402 JMPI2, JMP I INT2 /INTERRUPT STARTUP INSTRUCTION 4460 070246* 0377 L377, 377 /CONSTANT 0377 4461 070247* 0020 LB20, 20 /LOOPBACK ENABLE VALUE 4462 070250* 4463 070250* / INTERRUPTS COME HERE. 4464 070250* 4465 070250* 6131 INTHND, CLSK /CLOCK FLAG UP? 4466 070251* 7410 SKP /SKIP IF NOT 4467 070252* 5277 JMP DOCLK /JUMP IF SO 4468 070253* 6331 PROSKP /PRINTER OUTPUT FLAG UP? 4469 070254* 7410 SKP /SKIP IF NOT 4470 070255* 5304 JMP PROINT /JUMP IF SO 4471 070256* 6321 PRISKP /PRINTER INPUT FLAG UP? 4472 070257* 5275 JMP INTXIT /JUMP IF NOT 4473 070260* 6321 PRISKP /SKIP ON, CLEARING THE FLAG 4474 070261* 7000 NOP /HERE IN CASE IT SKIPS 4475 070262* 6326 PRIRB /GET THE CHARACTER 4476 070263* 7041 CIA /INVERT FOR TESTING 4477 070264* 1021 TAD CTMP2 /COMPARE TO TEST VALUE 4478 070265* 0246 AND L377/(377) /JUST DATA BITS 4479 070266* 7640 SZA CLA /SKIP IF IT MATCHES 4480 070267* 6325 PRIIE /PREVENT FURTHER PRINTER INPUT INTERRUPTS 4481 070270* 1021 TAD CTMP2 /GET LATEST COUNT PATTERN VALUE 4482 070271* 4334 JMS COUNTUP /GET NEXT IN THE PATTERN 4483 070272* 5320 JMP COUNTDONE /AT END OF COUNT PATTERN 4484 070273* 3021 DCA CTMP2 /STORE UPDATED VALUE 4485 070274* 3003 DCA TIMEOUT /RESET TIME-OUT COUNTER 4486 070275* 6001 INTXIT, ION /RE-ENABLE INTERRUPTS 4487 070276* 5400 JMP I INTADR /BACK TO INTERRUPTED CODE 4488 070277* 4489 070277* 6131 DOCLK, CLSK /MAKE SURE CLOCK FLAG CLEARS 4490 070300* 7000 NOP /IN CASE IT SKIPS 4491 070301* 2004 ISZ CLKTICK /COUNT THIS TICK 4492 070302* 0017 L17, 17 /19200 BAUD RATE VALUE; HERE IN CASE IT SKIPS 4493 070303* 5275 JMP INTXIT /CONTINUE THERE 4494 070304* 4495 070304* 6331 PROINT, PROSKP /SKIP ON, CLEARING PRINTER OUTPUT FLAG 4496 070305* 7000 NOP /JUST IN CASE IT SKIPS 4497 070306* 1020 TAD CTMP1 /GET COUNT PATTERN VALUE 4498 070307* 4334 JMS COUNTUP /GET NEXT IN THE PATTERN 4499 070310* 7410 SKP /AT END OF COUNT PATTERN 4500 070311* 5314 JMP NEXTOUT /JUMP IF NOT AT END 4501 070312* 6335 PROIE /PREVENT FURTHER PRINTER OUTPUT INTERRUPTS 4502 070313* 5275 JMP INTXIT /CONTINUE THERE 4503 070314* 4504 070314* 3020 NEXTOUT,DCA CTMP1 /SAVE NEW VALUE 4505 070315* 1020 TAD CTMP1 /GET IT BACK 4506 070316* 6336 PROLS /OUTPUT IT 4507 070317* 5275 JMP INTXIT /CONTINUE THERE 4508 070320* 4509 070320* / COMES HERE WHEN ALL CHARACTER VALUES USED. 4510 070320* 4511 070320* 3005 COUNTDO,DCA CSTATUS /CLEAR COUNT STATUS 4512 070321* 4513 070321* / COMES HERE WHEN NULL JOB TIMES OUT. 4514 070321* 4515 070321* 7344 TIMCHK, NL7776 /SETUP VALUE 4516 070322* 1004 TAD CLKTICK /COMPARE TO CLOCK TICK COUNT 4517 070323* //=2 4519 070324* 7305 NL002A /SET STATUS BIT IF NOT 4520 070325* 1005 TAD CSTATUS /GET COUNT STATUS EITHER WAY 4521 070326* 3005 DCA CSTATUS /STORE BACK 4522 070327* 6007 CAF /CLEAR ALL FLAGS NOW 4523 070330* 1005 TAD CSTATUS /GET COUNT STATUS 4524 070331* 1007 TAD TSTATUS /GET CP TEST STATUS 4525 070332* 6236 PRQ3 /DO A PANEL REQUEST TO EXIT 4526 070333* 5333 JMP . /WILL HANG HERE IF IT FAILS! 4527 070334* 4528 070334* 0000 COUNTUP,.-. /PATTERN COUNT ROUTINE 4529 070335* 3006 DCA PATTERN /SAVE PASSED VALUE 4530 070336* 1006 TAD PATTERN /GET IT BACK 4531 070337* 7001 IAC /ADD ONE 4532 070340* 0246 AND L377/(377) /JUST GOOD BITS 4533 070341* 7450 SNA /SKIP IF NOT AT END 4534 070342* 5734 JMP I COUNTUP /TAKE IMMEDIATE RETURN IF AT END 4535 070343* 3006 DCA PATTERN /SAVE UPDATED VALUE 4536 070344* 2334 ISZ COUNTUP /BUMP RETURN ADDRESS 4537 070345* 1006 TAD PATTERN /GET NEW PATTERN VALUE 4538 070346* 5734 JMP I COUNTUP /TAKE SKIP RETURN TO CALLER 4539 070347* 4540 070347* LBTEND= . /END OF CODE TO BE MOVED 4541 070347* 4542 076347* RELOC LBTEND-LBTEST+LBLOAD /RE-ESTABLISH ORIGIN 4543 076347* 4544 076347* //VRS: SOME KIND OF TABLE OF NEGATIVE VALUES, BUT I DON'T RECOGNIZE IT. 4545 076347* 7642 7642// 4546 076350* 6611 6611// 4547 076351* 7736 7736// 4548 076352* 6527 6527// 4549 076353* 7731 7731// 4550 076354* 6562 6562// 4551 076355* 7640 7640// 4552 076356* 6654 6654// 4553 076357* 7621 7621// 4554 076360* 7266 7266// 4555 076361* 7661 7661// 4556 076362* 7237 7237// 4557 076363* 7637 7637// 4558 076364* 7122 7122// 4559 076365* 7677 7677// 4560 076366* 7077 7077// 4561 076367* 7721 7721// 4562 076370* 7004 7004// 4563 076371* 7602 7602// 4564 076372* 6703 6703// 4565 076373* 7720 7720// 4566 076374* 7021 7021// 4567 076375* 7723 7723// 4568 076376* 6762 6762// 4569 076377* 7740 7740// 4570 076400* 6514 6514// 4571 076401* 7635 7635// 4572 076402* 7224 7224// 4573 076403* 7675 7675// 4574 076404* 7211 7211// 4575 076405* 7633 7633// 4576 076406* 7156 7156// 4577 076407* 7673 7673// 4578 076410* 7145 7145// 4579 076411* 7627 7627// 4580 076412* 7200 7200// 4581 076413* 7667 7667// 4582 076414* 7167 7167// 4583 076415* 7613 7613// 4584 076416* 7326 7326// 4585 076417* 7653 7653// 4586 076420* 7315 7315// 4587 076421* 7703 7703// 4588 076422* 7060 7060// 4589 076423* 7641 7641// 4590 076424* 7431 7431// 4591 076425* 7615 7615// 4592 076426* 7372 7372// 4593 076427* 7717 7717// 4594 076430* 7040 7040// 4595 076431* 7607 7607// 4596 076432* 7422 7422// 4597 076433* 7647 7647// 4598 076434* 7413 7413// 4599 076435* 7737 7737// 4600 076436* 6722 6722// 4601 076437* 7725 7725// 4602 076440* 6750 6750// 4603 076441* 7724 7724// 4604 076442* 6755 6755// 4605 076443* 7664 7664// 4606 076444* 7337 7337// 4607 076445* 7655 7655// 4608 076446* 7365 7365// 4609 076447* 7650 7650// 4610 076450* 7401 7401// 4611 076451* 7624 7624// 4612 076452* 7344 7344// 4613 076453* 7610 7610// 4614 076454* 7406 7406// 4615 076455* 7604 7604// 4616 076456* 7442 7442// 4617 076457* 7520 7520// 4618 076460* 7447 7447// 4619 076461* 7730 7730// 4620 076462* 6731 6731// 4621 076463* 7727 7727// 4622 076464* 6736 6736// 4623 076465* 7726 7726// 4624 076466* 6743 6743// 4625 076467* 7722 7722// 4626 076470* 7001 7001// 4627 076471* 7717 7717// 4628 076472* 7047 7047// 4629 076473* 7715 7715// 4630 076474* 7052 7052// 4631 076475* 7704 7704// 4632 076476* 7055 7055// 4633 076477* 7702 7702// 4634 076500* 7071 7071// 4635 076501* 7701 7701// 4636 076502* 7074 7074// 4637 076503* 7662 7662// 4638 076504* 7351 7351// 4639 076505* 7670 7670// 4640 076506* 7357 7357// 4641 076507* 7622 7622// 4642 076510* 7354 7354// 4643 076511* 7620 7620// 4644 076512* 7362 7362// 4645 076513* 7777 7777// 4646 076514* //VRS: WAS -1 A TERMINATOR? 4647 076514* //VRS: IF SO, CAN WE FIND THIS TABLE? 4648 076514* 7736 7736// 4649 076515* 0042 0042// 4650 076516* 7731 7731// 4651 076517* 0047 0047// 4652 076520* 7642 7642// 4653 076521* 0136 0136// 4654 076522* 7640 7640// 4655 076523* 0140 0140// 4656 076524* 7602 7602// 4657 076525* 0176 0176// 4658 076526* 7777 7777// 4659 076527* //VRS: WAS -1 A TERMINATOR? 4660 076527* //VRS: IF SO, CAN WE FIND THIS TABLE? 4661 076527* 7740 7740// 4662 076530* 0042 0042// 4663 076531* 7637 7637// 4664 076532* 0344 0344// 4665 076533* 7633 7633// 4666 076534* 0353 0353// 4667 076535* 7627 7627// 4668 076536* 0357 0357// 4669 076537* 7621 7621// 4670 076540* 0366 0366// 4671 076541* 7613 7613// 4672 076542* 0374 0374// 4673 076543* 7607 7607// 4674 076544* 0375 0375// 4675 076545* 7677 7677// 4676 076546* 0304 0304// 4677 076547* 7673 7673// 4678 076550* 0313 0313// 4679 076551* 7667 7667// 4680 076552* 0317 0317// 4681 076553* 7661 7661// 4682 076554* 0326 0326// 4683 076555* 7653 7653// 4684 076556* 0334 0334// 4685 076557* 7647 7647// 4686 076560* 0335 0335// 4687 076561* 7777 7777// 4688 076562* 7740 7740// 4689 076563* 0047 0047// 4690 076564* 7677 7677// 4691 076565* 0301 0301// 4692 076566* 7673 7673// 4693 076567* 0311 0311// 4694 076570* 7667 7667// 4695 076571* 0315 0315// 4696 076572* 7661 7661// 4697 076573* 0323 0323// 4698 076574* 7653 7653// 4699 076575* 0332 0332// 4700 076576* 7637 7637// 4701 076577* 0341 0341// 4702 076600* 7633 7633// 4703 076601* 0351 0351// 4704 076602* 7627 7627// 4705 076603* 0355 0355// 4706 076604* 7621 7621// 4707 076605* 0363 0363// 4708 076606* 7613 7613// 4709 076607* 0372 0372// 4710 076610* 7777 7777// 4711 076611* 7740 7740// 4712 076612* 0136 0136// 4713 076613* 7677 7677// 4714 076614* 0302 0302// 4715 076615* 7673 7673// 4716 076616* 0312 0312// 4717 076617* 7667 7667// 4718 076620* 0316 0316// 4719 076621* 7661 7661// 4720 076622* 0324 0324// 4721 076623* 7653 7653// 4722 076624* 0333 0333// 4723 076625* 7637 7637// 4724 076626* 0342 0342// 4725 076627* 7633 7633// 4726 076630* 0352 0352// 4727 076631* 7627 7627// 4728 076632* 0356 0356// 4729 076633* 7621 7621// 4730 076634* 0364 0364// 4731 076635* 7613 7613// 4732 076636* 0373 0373// 4733 076637* 7720 7720// 4734 076640* 0260 0260// 4735 076641* 7716 7716// 4736 076642* 0262 0262// 4737 076643* 7715 7715// 4738 076644* 0263 0263// 4739 076645* 7722 7722// 4740 076646* 0267 0267// 4741 076647* 7717 7717// 4742 076650* 0271 0271// 4743 076651* 7721 7721// 4744 076652* 0174 0174// 4745 076653* 7777 7777// 4746 076654* 7740 7740// 4747 076655* 0140 0140// 4748 076656* 7677 7677// 4749 076657* 0300 0300// 4750 076660* 7673 7673// 4751 076661* 0310 0310// 4752 076662* 7667 7667// 4753 076663* 0314 0314// 4754 076664* 7661 7661// 4755 076665* 0322 0322// 4756 076666* 7653 7653// 4757 076667* 0331 0331// 4758 076670* 7637 7637// 4759 076671* 0340 0340// 4760 076672* 7633 7633// 4761 076673* 0350 0350// 4762 076674* 7627 7627// 4763 076675* 0354 0354// 4764 076676* 7621 7621// 4765 076677* 0362 0362// 4766 076700* 7613 7613// 4767 076701* 0371 0371// 4768 076702* 7777 7777// 4769 076703* 7740 7740// 4770 076704* 0176 0176// 4771 076705* 7677 7677// 4772 076706* 0303 0303// 4773 076707* 7662 7662// 4774 076710* 0321 0321// 4775 076711* 7661 7661// 4776 076712* 0325 0325// 4777 076713* 7637 7637// 4778 076714* 0343 0343// 4779 076715* 7622 7622// 4780 076716* 0361 0361// 4781 076717* 7621 7621// 4782 076720* 0365 0365// 4783 076721* 7777 7777// 4784 076722* 7737 7737// 4785 076723* 0241 0241// 4786 076724* 7660 7660// 4787 076725* 0266 0266// 4788 076726* 7620 7620// 4789 076727* 0266 0266// 4790 076730* 7777 7777// 4791 076731* 7723 7723// 4792 076732* 0173 0173// 4793 076733* 7730 7730// 4794 076734* 0133 0133// 4795 076735* 7777 7777// 4796 076736* 7723 7723// 4797 076737* 0175 0175// 4798 076740* 7727 7727// 4799 076741* 0135 0135// 4800 076742* 7777 7777// 4801 076743* 7677 7677// 4802 076744* 0305 0305// 4803 076745* 7637 7637// 4804 076746* 0345 0345// 4805 076747* 7777 7777// 4806 076750* 7725 7725// 4807 076751* 0043 0043// 4808 076752* 7723 7723// 4809 076753* 0261 0261// 4810 076754* 7777 7777// 4811 076755* 7675 7675// 4812 076756* 0307 0307// 4813 076757* 7635 7635// 4814 076760* 0347 0347// 4815 076761* 7777 7777// 4816 076762* 7730 7730// 4817 076763* 0173 0173// 4818 076764* 7727 7727// 4819 076765* 0175 0175// 4820 076766* 7664 7664// 4821 076767* 0243 0243// 4822 076770* 7624 7624// 4823 076771* 0243 0243// 4824 076772* 7647 7647// 4825 076773* 0245 0245// 4826 076774* 7607 7607// 4827 076775* 0245 0245// 4828 076776* 7725 7725// 4829 076777* 0261 0261// 4830 077000* 7777 7777// 4831 077001* 7642 7642// 4832 077002* 0267 0267// 4833 077003* 7777 7777// 4834 077004* 7721 7721// 4835 077005* 0134 0134// 4836 077006* 7642 7642// 4837 077007* 0174 0174// 4838 077010* 7675 7675// 4839 077011* 0242 0242// 4840 077012* 7635 7635// 4841 077013* 0242 0242// 4842 077014* 7653 7653// 4843 077015* 0265 0265// 4844 077016* 7613 7613// 4845 077017* 0265 0265// 4846 077020* 7777 7777// 4847 077021* 7655 7655// 4848 077022* 0247 0247// 4849 077023* 7615 7615// 4850 077024* 0247 0247// 4851 077025* 7650 7650// 4852 077026* 0250 0250// 4853 077027* 7610 7610// 4854 077030* 0250 0250// 4855 077031* 7675 7675// 4856 077032* 0251 0251// 4857 077033* 7635 7635// 4858 077034* 0251 0251// 4859 077035* 7642 7642// 4860 077036* 0260 0260// 4861 077037* 7777 7777// 4862 077040* 7642 7642// 4863 077041* 0271 0271// 4864 077042* 7716 7716// 4865 077043* 0275 0275// 4866 077044* 7714 7714// 4867 077045* 0274 0274// 4868 077046* 7777 7777// 4869 077047* 7642 7642// 4870 077050* 0262 0262// 4871 077051* 7777 7777// 4872 077052* 7642 7642// 4873 077053* 0263 0263// 4874 077054* 7777 7777// 4875 077055* 7704 7704// 4876 077056* 0253 0253// 4877 077057* 7777 7777// 4878 077060* 7664 7664// 4879 077061* 0243 0243// 4880 077062* 7624 7624// 4881 077063* 0243 0243// 4882 077064* 7647 7647// 4883 077065* 0245 0245// 4884 077066* 7607 7607// 4885 077067* 0245 0245// 4886 077070* 7777 7777// 4887 077071* 7702 7702// 4888 077072* 0273 0273// 4889 077073* 7777 7777// 4890 077074* 7701 7701// 4891 077075* 0277 0277// 4892 077076* 7777 7777// 4893 077077* 7677 7677// 4894 077100* 0100 0100// 4895 077101* 7641 7641// 4896 077102* 0252 0252// 4897 077103* 7640 7640// 4898 077104* 0300 0300// 4899 077105* 7731 7731// 4900 077106* 0301 0301// 4901 077107* 7642 7642// 4902 077110* 0302 0302// 4903 077111* 7602 7602// 4904 077112* 0303 0303// 4905 077113* 7736 7736// 4906 077114* 0304 0304// 4907 077115* 7726 7726// 4908 077116* 0305 0305// 4909 077117* 7673 7673// 4910 077120* 0306 0306// 4911 077121* 7777 7777// 4912 077122* 7637 7637// 4913 077123* 0100 0100// 4914 077124* 7641 7641// 4915 077125* 0252 0252// 4916 077126* 7640 7640// 4917 077127* 0340 0340// 4918 077130* 7731 7731// 4919 077131* 0341 0341// 4920 077132* 7642 7642// 4921 077133* 0342 0342// 4922 077134* 7602 7602// 4923 077135* 0343 0343// 4924 077136* 7736 7736// 4925 077137* 0344 0344// 4926 077140* 7726 7726// 4927 077141* 0345 0345// 4928 077142* 7633 7633// 4929 077143* 0346 0346// 4930 077144* 7777 7777// 4931 077145* 7640 7640// 4932 077146* 0310 0310// 4933 077147* 7731 7731// 4934 077150* 0311 0311// 4935 077151* 7642 7642// 4936 077152* 0312 0312// 4937 077153* 7736 7736// 4938 077154* 0313 0313// 4939 077155* 7777 7777// 4940 077156* 7640 7640// 4941 077157* 0350 0350// 4942 077160* 7731 7731// 4943 077161* 0351 0351// 4944 077162* 7642 7642// 4945 077163* 0352 0352// 4946 077164* 7736 7736// 4947 077165* 0353 0353// 4948 077166* 7777 7777// 4949 077167* 7640 7640// 4950 077170* 0314 0314// 4951 077171* 7731 7731// 4952 077172* 0315 0315// 4953 077173* 7642 7642// 4954 077174* 0316 0316// 4955 077175* 7736 7736// 4956 077176* 0317 0317// 4957 077177* 7777 7777// 4958 077200* 7640 7640// 4959 077201* 0354 0354// 4960 077202* 7731 7731// 4961 077203* 0355 0355// 4962 077204* 7642 7642// 4963 077205* 0356 0356// 4964 077206* 7736 7736// 4965 077207* 0357 0357// 4966 077210* 7777 7777// 4967 077211* 7724 7724// 4968 077212* 0307 0307// 4969 077213* 7721 7721// 4970 077214* 0242 0242// 4971 077215* 7604 7604// 4972 077216* 0242 0242// 4973 077217* 7720 7720// 4974 077220* 0251 0251// 4975 077221* 7661 7661// 4976 077222* 0251 0251// 4977 077223* 7777 7777// 4978 077224* 7724 7724// 4979 077225* 0347 0347// 4980 077226* 7721 7721// 4981 077227* 0242 0242// 4982 077230* 7604 7604// 4983 077231* 0242 0242// 4984 077232* 7720 7720// 4985 077233* 0251 0251// 4986 077234* 7621 7621// 4987 077235* 0251 0251// 4988 077236* 7777 7777// 4989 077237* 7640 7640// 4990 077240* 0322 0322// 4991 077241* 7731 7731// 4992 077242* 0323 0323// 4993 077243* 7642 7642// 4994 077244* 0324 0324// 4995 077245* 7602 7602// 4996 077246* 0325 0325// 4997 077247* 7736 7736// 4998 077250* 0326 0326// 4999 077251* 7673 7673// 5000 077252* 0327 0327// 5001 077253* 7721 7721// 5002 077254* 0330 0330// 5003 077255* 7655 7655// 5004 077256* 0247 0247// 5005 077257* 7650 7650// 5006 077260* 0250 0250// 5007 077261* 7675 7675// 5008 077262* 0251 0251// 5009 077263* 7641 7641// 5010 077264* 0272 0272// 5011 077265* 7777 7777// 5012 077266* 7640 7640// 5013 077267* 0362 0362// 5014 077270* 7731 7731// 5015 077271* 0363 0363// 5016 077272* 7642 7642// 5017 077273* 0364 0364// 5018 077274* 7602 7602// 5019 077275* 0365 0365// 5020 077276* 7736 7736// 5021 077277* 0366 0366// 5022 077300* 7673 7673// 5023 077301* 0367 0367// 5024 077302* 7721 7721// 5025 077303* 0370 0370// 5026 077304* 7655 7655// 5027 077305* 0247 0247// 5028 077306* 7650 7650// 5029 077307* 0250 0250// 5030 077310* 7675 7675// 5031 077311* 0251 0251// 5032 077312* 7641 7641// 5033 077313* 0272 0272// 5034 077314* 7777 7777// 5035 077315* 7640 7640// 5036 077316* 0331 0331// 5037 077317* 7731 7731// 5038 077320* 0332 0332// 5039 077321* 7642 7642// 5040 077322* 0333 0333// 5041 077323* 7736 7736// 5042 077324* 0334 0334// 5043 077325* 7777 7777// 5044 077326* 7640 7640// 5045 077327* 0371 0371// 5046 077330* 7731 7731// 5047 077331* 0372 0372// 5048 077332* 7642 7642// 5049 077333* 0373 0373// 5050 077334* 7736 7736// 5051 077335* 0374 0374// 5052 077336* 7777 7777// 5053 077337* 7723 7723// 5054 077340* 0243 0243// 5055 077341* 7703 7703// 5056 077342* 0243 0243// 5057 077343* 7777 7777// 5058 077344* 7723 7723// 5059 077345* 0243 0243// 5060 077346* 7703 7703// 5061 077347* 0243 0243// 5062 077350* 7777 7777// 5063 077351* 7602 7602// 5064 077352* 0321 0321// 5065 077353* 7777 7777// 5066 077354* 7602 7602// 5067 077355* 0361 0361// 5068 077356* 7777 7777// 5069 077357* 7737 7737// 5070 077360* 0266 0266// 5071 077361* 7777 7777// 5072 077362* 7737 7737// 5073 077363* 0266 0266// 5074 077364* 7777 7777// 5075 077365* 7720 7720// 5076 077366* 0247 0247// 5077 077367* 7661 7661// 5078 077370* 0247 0247// 5079 077371* 7777 7777// 5080 077372* 7720 7720// 5081 077373* 0247 0247// 5082 077374* 7661 7661// 5083 077375* 0247 0247// 5084 077376* 7615 7615// 5085 077377* 0337 0337// 5086 077400* 7777 7777// 5087 077401* 7720 7720// 5088 077402* 0250 0250// 5089 077403* 7661 7661// 5090 077404* 0250 0250// 5091 077405* 7777 7777// 5092 077406* 7720 7720// 5093 077407* 0250 0250// 5094 077410* 7661 7661// 5095 077411* 0250 0250// 5096 077412* 7777 7777// 5097 077413* 7723 7723// 5098 077414* 0245 0245// 5099 077415* 7703 7703// 5100 077416* 0245 0245// 5101 077417* 7736 7736// 5102 077420* 0335 0335// 5103 077421* 7777 7777// 5104 077422* 7723 7723// 5105 077423* 0245 0245// 5106 077424* 7703 7703// 5107 077425* 0245 0245// 5108 077426* 7736 7736// 5109 077427* 0375 0375// 5110 077430* 7777 7777// 5111 077431* 7677 7677// 5112 077432* 0252 0252// 5113 077433* 7637 7637// 5114 077434* 0252 0252// 5115 077435* 7661 7661// 5116 077436* 0272 0272// 5117 077437* 7621 7621// 5118 077440* 0272 0272// 5119 077441* 7777 7777// 5120 077442* 7675 7675// 5121 077443* 0242 0242// 5122 077444* 7635 7635// 5123 077445* 0242 0242// 5124 077446* 7777 7777// 5125 077447* 7677 7677// 5126 077450* 0305 0305// 5127 077451* 7637 7637// 5128 077452* 0345 0345// 5129 077453* 7777 7777// 5130 077454* 5131 077454* 5132 077454* / WHILE THERE IS NO MORE ACTUAL CODE, THE FOLLOWING LINES ARE PRESENT TO 5133 077454* / CALCULATE THE MOVE LENGTH FOR THE CP-INTERRUPT HANDLER USED DURING THE 5134 077454* / LOOPBACK TEST IN MAIN MEMORY. THIS CALCULATION IS PROBABLY INCORRECT AND 5135 077454* / MOVES TOO MUCH CODE. THE ONLY POSSIBLE PROBLEM IS INTERACTION WITH APT 5136 077454* / DOWNLOADED PROGRAM CONVENTIONS. 5137 077454* 5138 077454* // ZBLOCK .&7600+200-. /EMPTY SPACE IN THE REST OF THE PAGE 5139 077454* 5140 077454* / THIS IS WHERE THE STARTUP SECTOR CODE IS READ IN AS A CALLED SUBROUTINE. 5141 077454* 5142 077454* CALLSUB,//.-. /TEST SUBROUTINE LOCATION 5143 077454* 5144 077454* CPEND2= . /MOVED CP INTERRUPT HANDLER CODE ENDS HERE? 5145 077454* 5146 077454* 0000 TSTBUFF,ZBLOCK 4 /KEYBOARD TEST BUFFER 077455* 0000 077456* 0000 077457* 0000 5147 077460* 5148 077460* TSTBEND=. /END OF KEYBOARD TEST BUFFER 5149 077460* 5150 076000* RELOC 6000 /EMPTY SPACE 5151 076000* 5152 076000* APTSTRT=. /APT ROUTINE STARTS HERE 5153 076000* 5154 076400* RELOC 6400 /EMPTY SPACE 5155 076400* 5156 076400* WRIBUFF=. /WRITE BUFFER FOR SETUP 5157 076400* 5158 076500* RELOC 6500 /EMPTY SPACE 5159 076500* 5160 076500* APTROUT=. /APT ROUTINE LOADS HERE 5161 076500* 5162 076520* RELOC .+20 /EMPTY SPACE 5163 076520* 5164 076520* APTRO2= . /SECONDARY APT ADDRESS HERE 5165 076520* 5166 077360 RELOC /UN-FOOL THE ASSEMBLER 5167 077360 5168 077360 0000 ZBLOCK ROMGO-. /EMPTY SPACE 077361 0000 077362 0000 077363 0000 077364 0000 077365 0000 077366 0000 077367 0000 077370 0000 077371 0000 077372 0000 077373 0000 077374 0000 077375 0000 077376 0000 077377 0000 077400 0000 077401 0000 077402 0000 077403 0000 077404 0000 077405 0000 077406 0000 077407 0000 077410 0000 077411 0000 077412 0000 077413 0000 077414 0000 077415 0000 077416 0000 077417 0000 077420 0000 077421 0000 077422 0000 077423 0000 077424 0000 077425 0000 077426 0000 077427 0000 077430 0000 077431 0000 077432 0000 077433 0000 077434 0000 077435 0000 077436 0000 077437 0000 077440 0000 077441 0000 077442 0000 077443 0000 077444 0000 077445 0000 077446 0000 077447 0000 077450 0000 077451 0000 077452 0000 077453 0000 077454 0000 077455 0000 077456 0000 077457 0000 077460 0000 077461 0000 077462 0000 077463 0000 077464 0000 077465 0000 077466 0000 077467 0000 077470 0000 077471 0000 077472 0000 077473 0000 077474 0000 077475 0000 077476 0000 077477 0000 077500 0000 077501 0000 077502 0000 077503 0000 077504 0000 077505 0000 077506 0000 077507 0000 077510 0000 077511 0000 077512 0000 077513 0000 077514 0000 077515 0000 077516 0000 077517 0000 077520 0000 077521 0000 077522 0000 077523 0000 077524 0000 077525 0000 077526 0000 077527 0000 077530 0000 077531 0000 077532 0000 077533 0000 077534 0000 077535 0000 077536 0000 077537 0000 077540 0000 077541 0000 077542 0000 077543 0000 077544 0000 077545 0000 077546 0000 077547 0000 077550 0000 077551 0000 077552 0000 077553 0000 077554 0000 077555 0000 077556 0000 077557 0000 077560 0000 077561 0000 077562 0000 077563 0000 077564 0000 077565 0000 077566 0000 077567 0000 077570 0000 077571 0000 077572 0000 077573 0000 077574 0000 077575 0000 077576 0000 077577 0000 5169 077600 5170 077600 PAGE 37 /STARTUP PAGE 5171 077600 5172 077600 / THE ROM STARTS UP HERE (JUMPED TO FROM THE END OF THE PAGE). SINCE WE ARE 5173 077600 / STARTING FROM POWERUP, BOTH CONTROL BITS ARE CLEARED. THE ROM IS REFERENCED 5174 077600 / WHEN MEMORY IS READ VIA BOTH THE INSTRUCTION AND DATA FIELDS INITIALLY. 5175 077600 / FURTHER, FORCE-ZERO MODE IS IN EFFECT WHICH MUST BE CLEARED TO USE EXTENDED 5176 077600 / MEMORY. 5177 077600 5178 077600 ROMGO= . /ROM STARTS HERE 5179 077600 5180 077600 6202 ROMGO, CIF 00 /SET OUR OWN FIELD; START CLEARING FZ MODE 5181 077601 5202 JMP .+1 /THIS JUST LOADS OUR FIELD, BUT CLEARS FZ MODE 5182 077602 7330 NL4000 /SETUP PATTERN FOR RAM DATA FIELD 5183 077603 6246 WSR /ROM IS ONLY IF NOW, DF IS RAM 5184 077604 5185 077604 / APPARENTLY THE RAM MAY NOT YET BE WORKING, SO VARIOUS TESTS ARE DONE UNTIL IT 5186 077604 / RESPONDS CORRECTLY. 5187 077604 5188 077604 7320 MEMTST, CLA STL /CLEAN UP AND SET A STOP BIT 5189 077605 2745 WATLUP, ISZ I ATABLE+0/(L4001) /BUMP UP TEST LOCATION 5190 077606 7000 NOP /IN CASE IT SKIPS 5191 077607 7004 RAL /MOVE PATTERN OVER 5192 077610 7500 SMA /DONE ENOUGH? 5193 077611 5205 JMP WATLUP /NO, KEEP GOING 5194 077612 7200 CLA /CLEAN UP 5195 077613 6276 SPD /FORCE INDIRECT REFERENCES TO CP MEMORY 5196 077614 5197 077614 / TRY TO STORE ALL ZEROES INTO THE RAM TEST LOCATION. 5198 077614 5199 077614 3745 DCA I ATABLE+0/(L4001) /ATTEMPT TO STORE CLEAR PATTERN 5200 077615 1745 TAD I ATABLE+0/(L4001) /GET IT BACK 5201 077616 7640 SZA CLA /SKIP IF ACTUALLY CLEAR 5202 077617 5204 JMP MEMTST /GO BACK IF IT FLUNKS 5203 077620 5204 077620 / TRY TO STORE ALTERNATING ZEROES AND ONES INTO THE RAM TEST LOCATION. 5205 077620 5206 077620 1317 TAD L2525/(2525) /GET A DATA PATTERN 5207 077621 3745 DCA I ATABLE+0/(L4001) /ATTEMPT TO STORE IT 5208 077622 1745 TAD I ATABLE+0/(L4001) /GET IT BACK 5209 077623 1320 TAD L5252/(5252) /ADD ON NEGATED PATTERN 5210 077624 7001 IAC /ADD ONE TO FINISH THE COMPARISON 5211 077625 7640 SZA CLA /SKIP IF IT MATCHES 5212 077626 5204 JMP MEMTST /GO DO IT AGAIN IF IT FLUNKS 5213 077627 5214 077627 / TRY TO STORE ALTERNATING ONES AND ZEROES INTO THE RAM TEST LOCATION. 5215 077627 5216 077627 1320 TAD L5252/(5252) /GET A DATA PATTERN 5217 077630 3745 DCA I ATABLE+0/(L4001) /ATTEMPT TO STORE IT 5218 077631 1745 TAD I ATABLE+0/(L4001) /GET IT BACK 5219 077632 1317 TAD L2525/(2525) /ADD ON NEGATED PATTERN 5220 077633 7001 IAC /ADD ONE TO FINISH THE COMPARISON 5221 077634 7640 SZA CLA /SKIP IF IT MATCHES 5222 077635 5204 JMP MEMTST /GO DO IT AGAIN IF IT FLUNKS 5223 077636 5224 077636 / TRY TO STORE ALL ONES INTO THE RAM TEST LOCATION. 5225 077636 5226 077636 7240 NL7777 /SET DATA PATTERN 5227 077637 3745 DCA I ATABLE+0/(L4001) /ATTEMPT TO STORE IT 5228 077640 7301 NL0001 CLL /SET NEGATED PATTERN FOR COMPARISON 5229 077641 1745 TAD I ATABLE+0/(L4001) /ADD ON TEST VALUE 5230 077642 7640 SZA CLA /SKIP IF IT MATCHES 5231 077643 5204 JMP MEMTST /GO DO IT AGAIN IF IT FLUNKS 5232 077644 5233 077644 / MOVE THE IMAGE OF THE LOADING PROGRAM TO PAGE ZERO OF RAM. 5234 077644 5235 077644 1321 TAD LPROGM+0/(4001) /GET A WORD 5236 077645 3745 DCA I ATABLE+0/(L4001) /PUT A WORD 5237 077646 1322 TAD LPROGM+1/(CODEXC-1) /GET A WORD 5238 077647 3746 DCA I ATABLE+1/(XR6) /PUT A WORD 5239 077650 1323 TAD LPROGM+2/(-ROMGO+1) /GET A WORD 5240 077651 3747 DCA I ATABLE+2/(MOVCNT) /PUT A WORD 5241 077652 1324 TAD LPROGM+3/(NL7777 CLL) /GET A WORD 5242 077653 3750 DCA I ATABLE+3/(LOADIT+0) /PUT A WORD 5243 077654 1325 TAD LPROGM+4/(DCA XR1) /GET A WORD 5244 077655 3751 DCA I ATABLE+4/(LOADIT+1) /PUT A WORD 5245 077656 1326 TAD LPROGM+5/(CDF 00) /GET A WORD 5246 077657 3752 DCA I ATABLE+5/(LOADLP+0) /PUT A WORD 5247 077660 1327 TAD LPROGM+6/(NL0001) /GET A WORD 5248 077661 3753 DCA I ATABLE+6/(LOADLP+1) /PUT A WORD 5249 077662 1330 TAD LPROGM+7/(WSR) /GET A WORD 5250 077663 3754 DCA I ATABLE+7/(LOADLP+2) /PUT A WORD 5251 077664 1331 TAD LPROGM+10/(TAD I XR1) /GET A WORD 5252 077665 3755 DCA I ATABLE+10/(LOADLP+3) /PUT A WORD 5253 077666 1332 TAD LPROGM+11/(MQL) /GET A WORD 5254 077667 3756 DCA I ATABLE+11/(LOADLP+4) /PUT A WORD 5255 077670 1333 TAD LPROGM+12/(TAD L4001) /GET A WORD 5256 077671 3757 DCA I ATABLE+12/(LOADLP+5) /PUT A WORD 5257 077672 1334 TAD LPROGM+13/(WSR) /GET A WORD 5258 077673 3760 DCA I ATABLE+13/(LOADLP+6) /PUT A WORD 5259 077674 1335 TAD LPROGM+14/(CLA MQA) /GET A WORD 5260 077675 3761 DCA I ATABLE+14/(LOADLP+7) /PUT A WORD 5261 077676 1336 TAD LPROGM+15/(CDF 70) /GET A WORD 5262 077677 3762 DCA I ATABLE+15/(LOADLP+10) /PUT A WORD 5263 077700 1337 TAD LPROGM+16/(DCA I XR6) /GET A WORD 5264 077701 3763 DCA I ATABLE+16/(LOADLP+11) /PUT A WORD 5265 077702 1340 TAD LPROGM+17/(ISZ MOVCNT) /GET A WORD 5266 077703 3764 DCA I ATABLE+17/(LOADLP+12) /PUT A WORD 5267 077704 1341 TAD LPROGM+20/(JMP LOADLP) /GET A WORD 5268 077705 3765 DCA I ATABLE+20/(LOADLP+13) /PUT A WORD 5269 077706 1342 TAD LPROGM+21/(CIF 70) /GET A WORD 5270 077707 3766 DCA I ATABLE+21/(LOADLP+14) /PUT A WORD 5271 077710 1343 TAD LPROGM+22/(JMP I .+1) /GET A WORD 5272 077711 3767 DCA I ATABLE+22/(LOADLP+15) /PUT A WORD 5273 077712 1344 TAD LPROGM+23/(CODESTART) /GET A WORD 5274 077713 3770 DCA I ATABLE+23/(LOADLP+16) /PUT A WORD 5275 077714 5276 077714 / NOW STARTUP THE LOADER TO MOVE THE CODE TO RAM. 5277 077714 5278 077714 7201 NL0001 /SETUP FOR 5279 077715 6246 WSR /RAM IF AND ROM DF 5280 077716 5020 JMP LOADIT /GO START IT UP 5281 077717 5282 077717 2525 L2525, 2525 /DATA 5283 077720 5252 L5252, 5252 /PATTERNS 5284 077721 5285 077721 LPROGM= . /IMAGE OF LOADING PROGRAM HERE 5286 077721 5287 070011* RELOC 11 /FOOL THE ASSEMBLER 5288 070011* 5289 070011* XR1, /AUTO-INDEX USED FOR MOVING THE ROM 5290 070011* 5291 070015* RELOC 15 /FOOL THE ASSEMBLER SOME MORE 5292 070015* 5293 070015* LOADER= . /LOADER EXECUTES FROM HERE 5294 070015* 5295 070015* 4001 L4001, 4001 /ROM DISABLE CONSTANT 5296 070016* 0077 XR6, CODEXC-1 /RAM STORE POINTER 5297 070017* 0201 MOVCNT, -ROMGO+1 /MOVE COUNTER 5298 070020* 5299 070020* / THE LOADER STARTS HERE. ALL IF REFERENCES ARE NOW IN RAM. THE CODE IN THE 5300 070020* / ROM WILL BE MOVED TO FIELD 7. 5301 070020* 5302 070020* 7340 LOADIT, NL7777 CLL /SET (AUTO-INCREMENTED) POINTER 5303 070021* 3011 DCA XR1 /TO LOWEST ROM LOCATION 5304 070022* 6201 LOADLP, CDF 00 /ROM CODE IS IN FIELD ZERO 5305 070023* 7201 NL0001 /SETUP FOR 5306 070024* 6246 WSR /RAM IF AND ROM DF 5307 070025* 1411 TAD I XR1 /GET A ROM WORD 5308 070026* 7421 MQL /SAVE IT FOR NOW 5309 070027* 1015 TAD L4001/(4001) /SETUP FOR 5310 070030* 6246 WSR /RAM IF AND RAM DF 5311 070031* 7701 CLA MQA /GET THE ROM VALUE 5312 070032* 6271 CDF 70 /CODE LOADS INTO FIELD SEVEN 5313 070033* 3416 DCA I XR6 /STORE INTO RAM 5314 070034* 2017 ISZ MOVCNT /DONE YET? 5315 070035* 5022 JMP LOADLP /NO, KEEP GOING 5316 070036* 6272 CIF 70 /GOTO NEW EXECUTION FIELD 5317 070037* 5440 JMP I .+1/(CODESTART) /GO START IT UP 5318 070040* 4600 CODESTART /THROUGH HERE 5319 070041* 5320 077745 RELOC /UN-FOOL THE ASSEMBLER 5321 077745 5322 077745 0015 ATABLE, LOADER+00 /TABLE OF LOADING ADDRESSES FOR MOVED LOADER 5323 077746 0016 LOADER+01 / 5324 077747 0017 LOADER+02 / 5325 077750 0020 LOADER+03 / 5326 077751 0021 LOADER+04 / 5327 077752 0022 LOADER+05 / 5328 077753 0023 LOADER+06 / 5329 077754 0024 LOADER+07 / 5330 077755 0025 LOADER+10 / 5331 077756 0026 LOADER+11 / 5332 077757 0027 LOADER+12 / 5333 077760 0030 LOADER+13 / 5334 077761 0031 LOADER+14 / 5335 077762 0032 LOADER+15 / 5336 077763 0033 LOADER+16 / 5337 077764 0034 LOADER+17 / 5338 077765 0035 LOADER+20 / 5339 077766 0036 LOADER+21 / 5340 077767 0037 LOADER+22 / 5341 077770 0040 LOADER+23 /LAST ADDRESS OF MOVED LOADER CODE 5342 077771 5343 077771 0000 ZBLOCK 7776-. /EMPTY SPACE 077772 0000 077773 0000 077774 0000 077775 0000 5344 077776 5345 077776 / WHEN THE CODE IS IN RAM, THESE LOCATIONS IN CP FIELD 0 ARE USED AS THE START 5346 077776 / OF THE CP INTERRUPT HANDLER. THE MAIN MEMORY INTERRUPTED PC IS STORED IN CP 5347 077776 / 00000 AND CONTROL IS REGAINED AT CP 07777. INVARIABLY, THE INSTRUCTION USED 5348 077776 / THERE IS JMP I .-1. THE POINTER ADDRESS IS THEREFORE STORED HERE AT CP 07776. 5349 077776 5350 077776 0000 ROMSP, .-. /USED LATER AS CP INTERRUPT POINTER 5351 077777 5352 077777 / THE ROM PROGRAM GAINS CONTROL HERE. ALSO USED LATER FOR CP INTERRUPTS. 5353 077777 5354 077777 5200 ROMST, JMP ROMGO /CONTINUE THERE 5355 070000 5356 070000 / START OF PAGE ZERO WHILE RUNNING IN FIELD 7. THESE LOCATIONS ARE NOT LOADED 5357 070000 / BY THE ROM'S LOADING PROGRAM BUT ARE USED BY THE MOVED CODE AS TEMPORARIES. 5358 070000 5359 070000 $ /THAT'S ALL FOLK! A 0000 A13 3414 A14 3415 A15 3416 A16 3417 A7740 5242 ADDFIX 1464 APTFL 6120 unreferenced APTIE 6125 unreferenced APTRO2 6520 APTROU 6500 APTSKP 6121 APTSTR 6000 APUCON 0014 ARXWAI 2500 ATABLE 7745 ATDEL 3664 ATDELI 2647 ATEND 3313 ATTRVA 3054 AVIDCL 3250 B 0001 BACKEN 4741 BAUD17 0104 BIGFLP 1047 BL40 0575 BMPRET 3320 unreferenced BOLDLP 2740 BOOTIT 3201 BTABLE 2464 BUFLUP 0530 BUMPIT 4065 C23 3207 CALLSU 7454 unreferenced CCHKMO 6101 CCNT 0060 CDF20 1045 CDFINS 1024 CDFSET 0545 CDWNTS 4743 CGINDX 1770 CGLDLP 1734 CGLOAD 6123 CGPTR 1765 CHARAD 3055 CHARCD 3047 CHRPRT 3004 CIDF 2200 CINTCL 6075 CLFL 6130 unreferenced CLIE 6135 CLIST 2075 CLKCON 0013 CLKTIC 0004 CLNOP1 6132 unreferenced CLNOP2 6133 unreferenced CLNOP3 6134 unreferenced CLNOP4 6136 unreferenced CLNOP5 6137 unreferenced CLR2 1616 CLR23 0520 CLRFIN 0555 CLRIT 1724 CLRLUP 1712 CLSK 6131 CM5 3352 CMDOK 5503 CMNDOK 5444 CMSW 5361 CNTHI 0023 CNTLO 0022 CODEST 4600 CODEXC 0100 COLUMN 0057 COMBAD 6042 COMCHK 6046 COMDON 5406 COMEXI 6012 COMFIN 0335 COMLOA 6150 COMREA 6126 COMSRC 2302 COMTAB 2536 COMTES 6000 COMTM1 0031 COMWAI 6033 COUNTD 0320 COUNTU 0334 CPD 6266 CPEND 4111 CPEND2 7454 unreferenced CPIADD 0133 CPIHND 1536 CPINT 4000 CPLADR 0140 CPLOAD 5600 CPMCNT 0141 CPMTST 4746 CPMVLP 5043 CREADO 6070 CSTATU 0005 CTMP1 0020 CTMP2 0021 CUPDAT 3153 DCNT 5401 DIGLUP 3677 DIGTMP 3717 DINDEX 5400 DISPAD 0065 DMLOGO 1403 DNWAIT 3617 DOCG 1665 DOCLK 0277 DOCOMR 2447 DOIT 3324 DOKEY 3251 DONEOK 5430 DONEUP 5466 DONUP 5531 DONWAI 5416 DOWNLO 5244 DPTR 5402 DTIME 0400 DTIMOU 0131 DUMBCF 6312 unreferenced DUMBFL 6310 unreferenced DUMBIE 6315 unreferenced DUMBSF 6311 unreferenced DWNAGN 5343 DWNENT 5254 EDISPL 1372 EMPTLU 5505 ENDUP 1444 ESTATU 0054 FBLINK 0561 FERR 0322 FHERE 0501 FILLIT 4662 FILLUP 5445 FINDIT 2314 FNDDEL 2736 FNDIT 3273 FNEXT 0314 unreferenced FNXTSC 0351 unreferenced FRARG 0311 FRDLUP 0340 FRDOK 0323 FREAD 0274 GCF 6256 GETPAR 2010 GOTKEY 5213 HALTES 1565 HDLOOP 3642 HEDLUP 2621 HIGH1 1533 HIGH2 1534 HIGHRO 3000 HLTPC 0203 ICF 6302 unreferenced IFL 6300 unreferenced IIE 6305 unreferenced INOP1 6303 unreferenced INOP2 6307 unreferenced INT1 0001 INT2 0002 INTADR 0000 INTHND 0250 INTR 6756 unreferenced INTXIT 0275 IRB 6306 IRS 6304 unreferenced IS37 3140 ISF 6301 ISOURS 3150 J00 1400 unreferenced J01 1401 unreferenced JMPI2 0245 JMPIC 5600 JMPIM1 0120 JMPIPM 5362 JUSTEX 4066 JUSTPO 3052 KAGN 2360 KBDIN 2472 KBICLR 6112 unreferenced KBICON 0011 KBIFL 6110 KBIIE 6115 KBIPC 0213 KBIRB 6116 KBIRS 6114 unreferenced KBISF 6111 KBOCON 0005 KBOFL 6050 KBOIE 6055 KBOIPC 0211 KBOLS 6056 KBOPC 6054 KBOSF 6051 KBTEND 5234 unreferenced KBTIMO 5222 KEY 0003 KEYLUP 5203 KINOP1 6113 unreferenced KINOP2 6117 unreferenced KONOP1 6052 unreferenced KONOP2 6053 unreferenced KONOP3 6057 unreferenced L100 6123 L110 1766 L16 5120 L17 0302 L2 6125 L200 1574 L202 1442 L2030 3001 L23 1440 L247 1441 L2525 7717 L300 1614 L31 3002 L320 5241 L342 5240 L3705 1612 L3707 1613 L375 5150 L377 0246 L4 3712 L40 5541 L4000 6147 L4001 0015 L45 2327 L460 1443 L5 2462 L5252 7720 L60 3715 L70 6177 L7603 3246 L77 1615 L7772 3714 L7773 2461 L7774 5237 LB20 0247 LBADR 5062 LBDONE 5064 LBLADR 0136 LBLOAD 6200 LBMCNT 0137 LBMVLP 5025 LBTEND 0347 LBTEST 0200 LCD 6751 LCHAR 0055 LISTLU 1644 LISTOK 1655 LOADER 0015 LOADIT 0020 LOADLP 0022 LOC36 3121 LODLUP 3345 unreferenced LOOKLP 3217 LOW1 1531 LOW2 1532 LPROGM 7721 LSCREG 6122 LUPDON 5152 LUPIN 5117 LUPLUP 5103 LUPOUT 5134 LUPTIM 5152 unreferenced LVIDCL 3405 M100 2164 M1000 5404 M120 3353 M16 2460 M175 2372 M31 3003 M4 3713 M40 3056 M5 5403 M52 5146 M6 6124 M7 2606 MCHKLP 5720 MCLUP 5352 MEMCOM 5711 MEMLOA 4710 MEMTES 4650 MEMTST 7604 METREN 2277 METRON 3400 MFL 6360 unreferenced MIE 6365 unreferenced MLC 6362 MLODLP 4653 MOREPR 2726 MOVCNT 0017 MOVLEF 3075 MOVRIT 3111 MPRESE 6367 MPSCC 6366 MRS 6364 unreferenced MSB 6363 MSF 6361 unreferenced MTM1 0032 MTM2 0033 MTM5 0036 MTM6 0037 MTM7 0040 MTSTLP 4722 MVCNT 3452 MVLUP 3441 NEGTST 4765 NEXTCH 2276 NEXTOU 0314 NEXTPR 2273 NEXTRE 2724 NL0001 7201 NL0002 7326 unreferenced NL0003 7325 NL0004 7307 NL0006 7327 NL0010 7215 NL002A 7305 NL0100 7203 NL2000 7332 NL3777 7350 NL4000 7330 NL5777 7352 unreferenced NL6000 7333 NL7775 7346 NL7776 7344 NL7777 7240 NOCRET 3322 unreferenced NODATA 1711 NOERRO 1515 NOTAPT 1522 NOTDON 5423 NOTOUR 3151 NPLUP 2713 NPRT 2703 NTMP 2751 NXTLIN 1740 NXTPRM 2625 OLS 6316 ONOP1 6313 unreferenced ONOP2 6317 unreferenced OPC 6314 unreferenced OUTLUP 2670 OUTMOR 6114 P1LUP 3260 P24 2223 P25 2227 P26 2225 P2LUP 3262 PADR 3716 PAPT2 1535 PAPTRO 0123 PAPTST 5243 PARMOV 3420 PASSEN 4776 PATTER 0006 PBAUD 5261 PBTABL 2463 PCGIND 1767 PCHRPR 0156 PCLIST 2752 PCLR2 0557 PCLR23 0145 PCOMLO 0143 PCOMRE 0144 PCOMTA 2332 PCOUNT 5147 PCPIHN 5363 PCUPDA 3200 PDOCG 0272 PEND 3235 PENDUP 0254 PEX 6004 PFBLIN 0245 unreferenced PFREAD 0154 PG0 6003 PGETPA 2373 PHLTPC 4110 PINTHN 0244 PKBDIN 0152 PKBIPC 4106 PKBOIP 4107 PKBTEN 5151 PLBDON 4020 PLOC36 2202 PLUP 3225 PMEMCO 0151 PMTSTL 5063 PNEXT 3303 PORTCO 0036 PORTIN 0030 PORTOU 0031 PPARMO 3354 PPPTAB 0157 PPRINT 2374 PPRMPR 2201 PPTABL 0452 PRDTWA 0162 PREGIN 6020 PREGLI 0454 PRGDON 4614 PRGLUP 4606 PRICLR 6322 unreferenced PRICON 0032 PRIFL 6320 unreferenced PRIIE 6325 PRINO1 6323 unreferenced PRINO2 6327 unreferenced PRINTP 3630 PRIRB 6326 PRIRS 6324 PRISKP 6321 PRLOOP 3646 PRMLUP 2637 PRMPRT 2607 PRMTM1 2701 PRMTM2 2702 PROCON 0033 PROFL 6330 unreferenced PROIE 6335 PROINT 0304 PROLS 6336 PROMST 0134 PRONO1 6332 unreferenced PRONO2 6337 unreferenced PROPC 6334 PROSKP 6331 PROWAD 0455 PROWLO 0160 PROWTA 0453 PRQ3 6236 PRQEXI 4100 PRS 6000 PRSB 6333 PRTIT 2651 PRTRAT 2664 PRUBCH 1662 PRXCOM 0146 PRXOK 3247 PRXRDY 0246 unreferenced PRXWT 0153 PSET2 1530 PSLCHE 0161 PSLTDA 2775 PSSTRI 0147 PSTATU 0061 PT0S1D 2203 PT0S3B 1661 PT0S3D 1660 PT0S3R 0271 PT0S4D 2375 PT0S7D 1663 PTABLE 5736 unreferenced PTIMOU 0560 PTM0 3720 PTPATT 5405 PTSTBE 5236 PTSTBU 0135 PTTYPC 4105 PUSEDA 1664 PVALID 0360 unreferenced PVIDCL 2333 PVIDPC 4104 PWRIBU 0122 R3L 7014 RCPLUP 5331 RDDONE 3557 RDNOP 6700 unreferenced RDSC 6702 unreferenced RDSD 6703 RDSE 6706 RDSR 6701 RDTD 6704 unreferenced RDTEST 6707 RDTRAN 3563 RDTWAI 3721 RDWAIT 3540 RDWATL 3544 RDWE 6705 unreferenced REGDON 0516 REGINI 5542 REGLIS 0664 REGLUP 0504 RETURN 3406 REVIT 2662 RIMADR 0000 RIMEND 5311 RIMLUP 5266 RIMST 5340 ROMADR 0000 unreferenced ROMGO 7600 ROMSP 7776 ROMST 7777 ROW 0056 ROWADR 3660 ROWLOA 0456 ROWLUP 0466 ROWTAB 0747 RSP1 6207 RSP2 6227 RTOK 0214 RUBCHK 2115 RUBPTR 2137 RXCMD 0053 RXCOMD 3600 RXCON 0075 RXERRO 5534 RXINIT 6757 unreferenced RXLOAD 0255 RXOK 0200 RXRDY 2501 RXSKIP 2162 RXSKP2 2161 RXWAIT 2141 RXWATI 2155 RXWATL 2145 SCRCHK 3066 SCREGU 3073 SCRPOS 3057 SDN 6755 SEL 6750 SELCT 2400 SELSHF 2457 SELXIT 2432 SER 6754 SET2 1600 SETODD 0553 SETOK 2262 SETVLU 2253 SHFTLU 2413 SLCHEC 2753 SLGOOD 2773 SLNEXT 2762 SLSHAG 0220 unreferenced SLSHBA 0247 SLTDAT 2532 SLUBAD 3347 SLUCDF 2765 SP1SAV 0034 SP2SAV 0035 SPACSW 1046 SPD 6276 SRCHLU 3127 SSADR 1032 SSLUP 1007 SSTRIN 1000 STR 6753 SUB176 0176 SUBAC 0064 SUBCDF 2330 SUBLUP 1457 SUBR 2204 T0 0042 T0S1DA 2555 T0S3BU 5350 T0S3DA 2575 T0S3RD 1630 T0S4DA 3527 T0S7DA 2564 T1 0043 T2 0044 T3 0045 T4 0046 T5 0047 T6 0050 T7 0051 T8 0052 unreferenced TEMP1 0024 TEMP2 0025 TEMP3 0026 TESTCO 6021 TESTCP 4021 TESTHL 4070 TIMCHK 0321 TIMEOU 0003 TIMLUP 2171 TIMOUT 2165 TINC 0041 TM0 0030 TPATTR 5364 TRNCDF 0163 TRNSUP 5451 TRYDON 0344 TRYPRA 2434 TSTATU 0007 TSTBEN 7460 TSTBUF 7454 unreferenced TSTDAT 3520 unreferenced TSTDLU 1701 TSTKYI 4045 TSTKYO 4056 TSTTRA 4034 TTNOP1 6073 unreferenced TTNOP2 6074 unreferenced TTNOP3 6076 unreferenced TTNOP4 6077 unreferenced TTY 0004 TTYCLR 6072 unreferenced TTYCON 0007 TTYFL 6070 unreferenced TTYIE 6075 TTYPC 0207 TTYSF 6071 USEDAT 1716 VAGAIN 4623 VALAGN 0620 VALALT 0647 VALID8 0600 VAROUN 2130 VCL 6062 unreferenced VDUMM1 6064 unreferenced VDUMM2 6066 unreferenced VDUMM3 6067 unreferenced VERHLT 2335 unreferenced VERLUP 2347 VERMAT 2356 VERPOK 2241 VFL 6060 VIDCLR 2515 VIDCON 6126 VIDDEV 0012 VIDINT 0006 VIDPC 0205 VIDWAI 2524 VIE 6065 VLOAD 6124 VLUP 2120 VNOP1 6063 unreferenced VPAST 4632 VPTR 2140 VREAD 6127 VS5231 5116 VSF 6061 VWATLP 4624 WATLUP 7605 WRIBUF 6400 WSR 6246 XDR 6752 XR0 0010 XR1 0011 XR2 0012 XR3 0013 unreferenced XR4 0014 unreferenced XR5 0015 unreferenced XR6 0016 XR7 0017 Z0301 0113 Z10 0102 Z102 0107 Z12 0103 Z17 0104 Z20 0105 Z200 0110 Z205 0111 Z237 0112 Z2525 0116 Z377 0114 Z3777 0117 Z400 0115 Z7 0101 Z72 0106 Z7400 0130 Z7741 0127 Z7760 0126 Z7766 0125 Z7775 0132 Z7776 0133 ZCDF 0121 ZERLUP 0532 ZERNXT 0523