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