| 1 | /RK8E/RK8L DISK FORMATTER |
| 2 | / |
| 3 | / |
| 4 | / |
| 5 | / |
| 6 | / |
| 7 | / |
| 8 | / |
| 9 | / |
| 10 | / |
| 11 | /COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION |
| 12 | / |
| 13 | / |
| 14 | / |
| 15 | / |
| 16 | / |
| 17 | / |
| 18 | / |
| 19 | / |
| 20 | / |
| 21 | / |
| 22 | /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE |
| 23 | /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT |
| 24 | /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY |
| 25 | /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. |
| 26 | / |
| 27 | /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER |
| 28 | /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED |
| 29 | /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH |
| 30 | /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. |
| 31 | / |
| 32 | /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE |
| 33 | /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY |
| 34 | /DIGITAL. |
| 35 | / |
| 36 | / |
| 37 | / |
| 38 | / |
| 39 | / |
| 40 | / |
| 41 | / |
| 42 | / |
| 43 | / |
| 44 | / |
| 45 | \f/RK8E/RK8L DISK FORMATTER PROGRAM: MD-08-DHRKD-D |
| 46 | /MAINDEC-08-DHRKD-D-D |
| 47 | / |
| 48 | /MODIFIED FOR OS8V3D BY ED STEINBERGER |
| 49 | / |
| 50 | DLSC=6740 /LOAD SECTOR COUNTER |
| 51 | DSKP=6741 /SKIP ON TRANSFER DONE OR ERROR |
| 52 | DCLR=6742 /CLEAR DISK CONTROL LOGIC |
| 53 | DLAG=6743 /LOAD ADDRESS AND GO |
| 54 | DLCA=6744 /LOAD CURRENT ADDRESS |
| 55 | DRST=6745 /READ STATUS REGISTER |
| 56 | DLDC=6746 /LOAD COMMAND REGISTER |
| 57 | DMAN=6747 /LOAD MAINTENANCE |
| 58 | / |
| 59 | LDSC=JMS I XXLDSC |
| 60 | IOTCHN=JMS I XCHANG |
| 61 | LODTRK=JMS I XWRTRK |
| 62 | REDDSK=JMS I XRDTRK |
| 63 | RECAL=JMS I XRESTR |
| 64 | RECEIV=JMS I XWAIT |
| 65 | KILBUF=JMS I XKLBUF |
| 66 | ERROR=JMS I XERRO |
| 67 | RDSTAT=JMS I XRDST |
| 68 | LDADD=JMS I XLDAD |
| 69 | DSKSKP=JMS I XSDKP |
| 70 | LDCMD=JMS I XLDCM |
| 71 | LDCUR=JMS I XLDCA |
| 72 | CLRALL=JMS I XCLDR |
| 73 | PRNTER=JMS I XPRN |
| 74 | OCTEL=JMS I XFROCT |
| 75 | TWOCT=JMS I XTOCT |
| 76 | TYPE=JMS I XPRINT |
| 77 | CRLF=JMS I XCRLF |
| 78 | APT8A=JMS I XAPT8 |
| 79 | TIME=JMS I XTIME |
| 80 | TICK=JMS I XTICK |
| 81 | KAERRO=JMS I XAERRO |
| 82 | / |
| 83 | *0 |
| 84 | / |
| 85 | 304 /REV D |
| 86 | 5001 |
| 87 | 0002 |
| 88 | 0003 |
| 89 | / |
| 90 | *10 |
| 91 | / |
| 92 | AUTO10, 0 |
| 93 | / |
| 94 | AUTO11, 0 |
| 95 | / |
| 96 | *20 |
| 97 | / |
| 98 | 0000 /PSEUDO SWITCH REGISTER |
| 99 | 0 /CONTROL WORD 1 - USE PSUEDO SWITCHES **ES** |
| 100 | 400 /CONTROL WORD 2 - SET CONSOLE PACKAGE ACTIVE **ES** |
| 101 | 0000 /RESERVED |
| 102 | XAPT8, APT8 |
| 103 | XTIME, KTIME |
| 104 | XAERRO, AERRO |
| 105 | XTICK, KTICK |
| 106 | XCHANG, CHANG |
| 107 | XWRTRK, WRTTRK |
| 108 | XRDTRK, REDTRK |
| 109 | XRESTR, RESTOR |
| 110 | XWAIT, WAIT |
| 111 | XKLBUF, KLBUF |
| 112 | XPRINT, PRINT |
| 113 | XERRO, ERRO |
| 114 | XRDST, RDST |
| 115 | XSDKP, SDKP |
| 116 | XLDCM, LDCM |
| 117 | XLDCA, LDCA |
| 118 | XLDAD, LDAD |
| 119 | XCLDR, CLDR |
| 120 | XXLDSC, XLDSC |
| 121 | XPRN, PRN |
| 122 | XFROCT, FROCT |
| 123 | XTOCT, TOCT |
| 124 | XCRLF, UPONE |
| 125 | XLOTRK, LOTRK |
| 126 | XHITRK, HITRK |
| 127 | BGNBUF, WRKBUF |
| 128 | AMOUNT, 0 |
| 129 | SWITCH, 0 |
| 130 | K0003, 0003 |
| 131 | K4, 4 |
| 132 | K0007, 0007 |
| 133 | K0040, 0040 |
| 134 | M313, -313 |
| 135 | K0277, 0277 |
| 136 | K0200, 0200 |
| 137 | K0260, 0260 |
| 138 | K4000, 4000 |
| 139 | K7735, 7735 |
| 140 | K7760, 7760 |
| 141 | K0400, 400 |
| 142 | K0037, 0037 |
| 143 | KCDF, CDF |
| 144 | M4, -4 |
| 145 | M10, -10 |
| 146 | DRIVNO, 0 |
| 147 | CHAR, 0 |
| 148 | LOWAD, 0 |
| 149 | HIGHAD, 0 |
| 150 | TRKCNT, 0 |
| 151 | DSKCNT, 0 |
| 152 | SBCNT1, 0 |
| 153 | STCNT1, 0 |
| 154 | STCNT2, 0 |
| 155 | STCNT3, 0 |
| 156 | TCNTR1, 0 |
| 157 | TCNTR2, 0 |
| 158 | TCNTR3, 0 |
| 159 | TCNTR4, 0 |
| 160 | TCNTR5, 0 |
| 161 | / |
| 162 | GDREG2, 0 |
| 163 | EXBIT, 0 |
| 164 | CMREG, 0 |
| 165 | STREG, 0 |
| 166 | DAREG, 0 |
| 167 | CAREG, 0 |
| 168 | ADREG, 0 |
| 169 | DTREG, 0 |
| 170 | BGNTST, FRMDSK |
| 171 | HOMEMA, 0 |
| 172 | DATCNT, 0 |
| 173 | CLKCNT, -2 |
| 174 | / |
| 175 | XMOVE, MOVE |
| 176 | LOC8ED, 0 |
| 177 | XEND, ENDTST |
| 178 | SOFT, 0 |
| 179 | ADPOT1, DSK0A |
| 180 | DSK0A, 0 |
| 181 | DSK1A, 0 |
| 182 | DSK2A, 0 |
| 183 | DSK3A, 0 |
| 184 | DSK4A, 0 |
| 185 | DSK5A, 0 |
| 186 | DSK6A, 0 |
| 187 | DSK7A, 0 |
| 188 | ADPOT2, DSK0B |
| 189 | DSK0B, 0 |
| 190 | DSK1B, 0 |
| 191 | DSK2B, 0 |
| 192 | DSK3B, 0 |
| 193 | DSK4B, 0 |
| 194 | DSK5B, 0 |
| 195 | DSK6B, 0 |
| 196 | DSK7B, 0 |
| 197 | PCOUNT, 0 /USED ONLY IF ON APT |
| 198 | / |
| 199 | *200 |
| 200 | / |
| 201 | BGN, RIF |
| 202 | DCA HOMEMA |
| 203 | TAD HOMEMA |
| 204 | TAD KCDF /MAKE HOMEDF |
| 205 | DCA .+1 |
| 206 | HLT /MAKE DF=IF |
| 207 | /NOW TEST FOR APT SYSTEM |
| 208 | /IF ON APT TERMINAL MESSAGES ARE SKIP |
| 209 | /TO AVOID TIMING PROBLEMS WITH THE SYSTEM |
| 210 | APT8A /TEST FOR APT SYSTEM |
| 211 | JMS XC8PSW /GET SR=. |
| 212 | *.-1 /**ES** |
| 213 | NOP /**ES** |
| 214 | IOTCHN /CHANGE DEVICE TO SWR3-8 |
| 215 | CRLF |
| 216 | CRLF |
| 217 | PRNTER /PRINT "RK8E/RK8L DISK FORMATTER PROGRAM" |
| 218 | MES1 /MESSAGE 1 POINTER |
| 219 | CRLF |
| 220 | PRNTER /PRINT "FOR ALL QUESTIONS" |
| 221 | MES2 /MESSAGE POINTER 2 |
| 222 | ALLAGN, TAD M10 |
| 223 | DCA STCNT1 /COUNTER FOR AMOUNT OF DISKS |
| 224 | DCA LOC8ED |
| 225 | DCA STCNT2 |
| 226 | SAMAGN, CRLF |
| 227 | PRNTER /PRINT "FORMAT DISK ? " |
| 228 | MES3 /MESSAGE POINTER 3 |
| 229 | TAD STCNT2 |
| 230 | TAD K0260 |
| 231 | TYPE /TYPE DISK NUMBER |
| 232 | QUES1, TAD K0277 |
| 233 | TYPE /TYPE ? |
| 234 | TAD ADPOT1 |
| 235 | TAD STCNT2 |
| 236 | DCA STCNT3 |
| 237 | RECEIV /WAIT FOR CHARACTER |
| 238 | JMP NOTDSK /NO NOT THIS DISK |
| 239 | JMP QUES1 /NEITHER YES OR NO |
| 240 | WASDSK, ISZ LOC8ED |
| 241 | CLA CLL CMA |
| 242 | NOTDSK, DCA I STCNT3 /YES, WAS CLEAR DISK POINTER |
| 243 | ISZ STCNT2 /UPDATE POINTER |
| 244 | ISZ STCNT1 /COUNT DISKS |
| 245 | JMP SAMAGN /ASK ABOUT NEXT |
| 246 | / |
| 247 | DONE, CRLF |
| 248 | PRNTER /PRINT "ARE YOU SURE ?" |
| 249 | MES4 /MESSAGE POINTER 4 |
| 250 | RECEIV /WAIT FOR CHARACTER |
| 251 | JMP ALLAGN /NO, START ALL OVER |
| 252 | JMP DONE /NEITHER TYPE ? |
| 253 | TAD LOC8ED |
| 254 | CIA |
| 255 | SNA /ANY DISKS |
| 256 | JMP BGN /NO, OPERATOR ERROR |
| 257 | DCA LOC8ED /YES, AMOUNT LOCATED |
| 258 | / |
| 259 | /FIRST RECALIBRATE AND FORMAT IN WRITE ALL MODE |
| 260 | /ALL DISK DRIVES SELECTED BY OPERATOR,. MAKE THE FIRST |
| 261 | /TWO WORDS OF EVERY DISK SECTOR EQUAL TO THE |
| 262 | /ABSOLUTE DISK ADDRESS. |
| 263 | / |
| 264 | FRMDSK, JMS I XMOVE /MOVE DISK POINTERS |
| 265 | TAD LOC8ED |
| 266 | DCA AMOUNT |
| 267 | TAD AMOUNT |
| 268 | DCA DSKCNT /COUNTER FOR AMOUNT OF DISKS |
| 269 | DCA TCNTR4 |
| 270 | TAD ADPOT2 |
| 271 | DCA TCNTR5 /A FEW COUNTERS |
| 272 | TAD I TCNTR5 |
| 273 | SZA CLA /FORMAT THIS DISK |
| 274 | JMP FORMAT /YES, GO |
| 275 | NEXFRM, ISZ TCNTR5 /NO, TRY NEXT |
| 276 | ISZ TCNTR4 |
| 277 | JMP .-5 |
| 278 | HLT /WHAT HAPPENED???? |
| 279 | / |
| 280 | FORMAT, TAD TCNTR4 |
| 281 | AND K0003 /MASK OUT |
| 282 | CLL RAL /MAKE DISK NUMBER |
| 283 | DCA DRIVNO |
| 284 | TAD TCNTR4 |
| 285 | AND K4 |
| 286 | SZA CLA |
| 287 | TAD K0200 |
| 288 | DCA EXBIT /SET EXTENDED DRIVE BIT |
| 289 | RECAL /RECALIBRATE THIS DRIVE |
| 290 | JMP RENEX1 /RECALIBRATE NEXT EXISTING |
| 291 | DCA LOWAD /SETUP ADDRESS POINTER |
| 292 | DCA HIGHAD /SETUP ADDRESS POINTER |
| 293 | TAD M313 |
| 294 | DCA TRKCNT /COUNTER FOR AMOUNT OF TRACKS |
| 295 | / |
| 296 | / |
| 297 | WRTDSK, TICK /TIMING FOR APT IF NEEDED. |
| 298 | -4 /OTHERWISE BOTH ARE SKIPPED |
| 299 | LODTRK /FORMAT A TRACK |
| 300 | JMP RENEX1 /TO NEXT DISK |
| 301 | CLA CLL |
| 302 | TAD LOWAD |
| 303 | TAD K0040 |
| 304 | DCA LOWAD /UPDATE TO NEXT TRACK |
| 305 | SZL CLA /SET EXTENDED BIT |
| 306 | ISZ HIGHAD /YES |
| 307 | ISZ TRKCNT /UPDATE TRACK COUNTER |
| 308 | JMP WRTDSK /DO NEXT TRACK |
| 309 | RENEX1, ISZ DSKCNT /UPDATE DISK COUNTER |
| 310 | \f JMP NEXFRM /DO NEXT DISK |
| 311 | / |
| 312 | /ROUTINE TO CHECK ADDRESSING INFORMATION ON THE DISK. |
| 313 | \f/THE FIRST TWO WORDS OF EVERY SECTOR SHOULD EQUAL |
| 314 | /THE ABSOLUTE DISK ADDRESS. ALL OTHER DATA IS |
| 315 | /NOT CHECKED. |
| 316 | / |
| 317 | CHKDSK, TAD AMOUNT |
| 318 | DCA DSKCNT /AMOUNT OF DISKS |
| 319 | DCA TCNTR4 |
| 320 | TAD ADPOT2 |
| 321 | DCA TCNTR5 |
| 322 | TAD I TCNTR5 /SOFTWARE INFORMATION |
| 323 | SZA CLA /CHECK THIS DISK |
| 324 | JMP CHKDAT /CHECK THIS ONE |
| 325 | NEXCHK, ISZ TCNTR5 /UPDATE FOR NEXT DISK |
| 326 | ISZ TCNTR4 |
| 327 | JMP .-5 |
| 328 | HLT /WHAT HAPPENED????? |
| 329 | / |
| 330 | CHKDAT, TAD TCNTR4 |
| 331 | AND K0003 /MASK OUT |
| 332 | CLL RAL /MAKE DRIVE NUMBER |
| 333 | DCA DRIVNO |
| 334 | TAD TCNTR4 |
| 335 | AND K4 |
| 336 | SZA CLA |
| 337 | TAD K0200 |
| 338 | DCA EXBIT /SET EXTENDED DRIVE BIT |
| 339 | RECAL /RECALIBRATE |
| 340 | JMP RENEX2 /TRY NEXT DRIVE |
| 341 | DCA LOWAD |
| 342 | DCA HIGHAD /SETUP STARTING DISK ADDRESS |
| 343 | TAD M313 |
| 344 | DCA TRKCNT /AMOUNT OF TRACKS TO DO |
| 345 | JMP CHECK |
| 346 | / |
| 347 | PAGE |
| 348 | / |
| 349 | CHECK, TICK /TIMING FOR APT IF NEEDED. |
| 350 | -4 /SKIPPED IF NOT REQUIRED. |
| 351 | REDDSK /READ AND CHECK ONE CYLINDER |
| 352 | JMP RENEX2 /TO NEXT DISK |
| 353 | CLA CLL |
| 354 | TAD LOWAD |
| 355 | TAD K0040 |
| 356 | DCA LOWAD /UPDATE TO NEXT CYLINDER |
| 357 | SZL CLA /TIME TO SET EXTENDED BIT |
| 358 | ISZ HIGHAD /YES, SET IT |
| 359 | ISZ TRKCNT /UPDATE CYLINDER COUNTER |
| 360 | JMP CHECK /CHECK NEXT ONE |
| 361 | RENEX2, ISZ DSKCNT /UPDATE DISK COUNTER |
| 362 | JMP NEXCHK /CHECK NEXT |
| 363 | / |
| 364 | / |
| 365 | TAD 22 |
| 366 | AND K4000 /TEST FOR APT |
| 367 | SNA CLA /ARE WE? |
| 368 | JMP ENDTST /NO. NORMAL RUN |
| 369 | ISZ PCOUNT /INCREMENT PASS COUNT |
| 370 | JMP FRMDSK /LOOP PROGRAM |
| 371 | ENDTST, CRLF |
| 372 | PRNTER /PRINT "PASS COMPLETE" |
| 373 | TEXEND |
| 374 | CRLF |
| 375 | PRNTER /PRINT "TRY SAME SEQUENCE" |
| 376 | MES5 |
| 377 | RECEIV /WAIT FOR INPUT FROM OPERATOR |
| 378 | JMP ALLAGN /NO, ASK AGAIN |
| 379 | JMP .-5 |
| 380 | JMP FRMDSK /TRY SAME SEQUENCE |
| 381 | / |
| 382 | / |
| 383 | /SUBROUTINE FOR "ERRORS," SCOPE LOOPS, AND |
| 384 | /ERROR TYPEOUTS. |
| 385 | / |
| 386 | ERRO, 0 |
| 387 | CLA CLL IAC |
| 388 | TAD ERRO /GET PC STORED |
| 389 | DCA RETRN1 /STORE FOR RETURN |
| 390 | KAERRO /NOTIFY APT OF ERROR IS NEED BE |
| 391 | CRLF |
| 392 | CRLF |
| 393 | TAD I ERRO /GET TEXT POINTER |
| 394 | AND K0007 /MASK 9-11 |
| 395 | TAD HEDTAD /MAKE ERROR HEADER TAD |
| 396 | DCA .+1 |
| 397 | HLT /MODIFIED HEADER TAD |
| 398 | DCA .+2 |
| 399 | PRNTER /MODIFIED HEADER POINTER |
| 400 | HLT |
| 401 | CRLF |
| 402 | PRNTER /PRINT PC: |
| 403 | TEXPC |
| 404 | TAD ERRO /GET PC POINTER |
| 405 | OCTEL /PRINT PC STORED |
| 406 | TAD I ERRO /GET TEXT POINTER |
| 407 | CLL RAL |
| 408 | SNL |
| 409 | JMP NTGD /NOT GD: REGISTER |
| 410 | DCA ERRO |
| 411 | PRNTER /PRINT GD: |
| 412 | TEXGD |
| 413 | TAD GDREG2 |
| 414 | OCTEL /PRINT FOUR OCTAL |
| 415 | SKP CLA |
| 416 | NTGD, DCA ERRO |
| 417 | PRNTER |
| 418 | TEXEX |
| 419 | TAD EXBIT |
| 420 | SZA CLA |
| 421 | IAC |
| 422 | OCTEL |
| 423 | TAD XTEXT |
| 424 | DCA PCNTR2 |
| 425 | TAD XREG |
| 426 | DCA AUTO10 |
| 427 | TAD K7771 |
| 428 | DCA PCNTR1 /COUNTER FOR # OF HEADS |
| 429 | CLA CLL CMA RAL |
| 430 | DCA PCNTR3 |
| 431 | STRAUT, TAD ERRO /GET TEXT POINTER |
| 432 | SMA |
| 433 | JMP NOTEX /NOT THIS ONE |
| 434 | CLL RAL |
| 435 | DCA ERRO |
| 436 | TAD PCNTR2 /GET TEXT MESSAGE POINTER |
| 437 | ISZ PCNTR2 |
| 438 | ISZ PCNTR2 |
| 439 | DCA .+2 /STORE FOR PRNTER |
| 440 | PRNTER /PRINT XX: |
| 441 | HLT /MODIFIED TEXT POINTER |
| 442 | TAD I AUTO10 |
| 443 | OCTEL /PRINT FOUR OCTAL |
| 444 | ISZ PCNTR3 |
| 445 | SKP CLA |
| 446 | CRLF |
| 447 | AGAIN, ISZ PCNTR1 |
| 448 | JMP STRAUT /CHECK FOR NEXT XX: |
| 449 | JMP I RETRN1 /RETURN TO QUESTION |
| 450 | NOTEX, CLL RAL |
| 451 | DCA ERRO |
| 452 | ISZ PCNTR2 |
| 453 | ISZ PCNTR2 |
| 454 | ISZ AUTO10 |
| 455 | JMP AGAIN |
| 456 | / |
| 457 | RETRN1, 0 |
| 458 | XTEXT, TEXCM |
| 459 | XREG, EXBIT |
| 460 | PCNTR1, 0 |
| 461 | PCNTR2, 0 |
| 462 | PCNTR3, 0 |
| 463 | HEDTAD, TAD HEDLST |
| 464 | HEDLST, ERTX1 |
| 465 | ERTX2 |
| 466 | ERTX3 |
| 467 | ERTX4 |
| 468 | K7771, 7771 |
| 469 | / |
| 470 | PAGE |
| 471 | / |
| 472 | /ROUTINE TO FORMAT CYLINDER |
| 473 | /MAKE FIRST TWO WORDS OF EVERY SECTOR |
| 474 | /EQUAL TO DISK ADDRESS. |
| 475 | / |
| 476 | WRTTRK, 0 |
| 477 | CLA CLL CML RAR |
| 478 | DCA GDREG2 /SETUP COMPARE REGISTER |
| 479 | KILBUF /CLEAR BUFFER |
| 480 | TAD K7735 /AMOUNT OF SECTORS TO DO |
| 481 | DCA TCNTR1 /SETUP COUNTER |
| 482 | DCA TCNTR2 /STARTING WITH 0 |
| 483 | TAD K7760 /STOPPER |
| 484 | DCA TCNTR3 /SECTOR COUNTER POINTER STOP |
| 485 | LODR1, TAD TCNTR2 |
| 486 | AND K0037 /MASK SECTOR BITS |
| 487 | TAD LOWAD /ADD IN CYLINDER |
| 488 | DCA I XLOTRK /SETUP TRACK WORD IN BUFFER |
| 489 | TAD EXBIT /ADD IN EXTENDED BIT |
| 490 | TAD HIGHAD |
| 491 | TAD DRIVNO /ADD IN DRIVE NUMBER |
| 492 | DCA I XHITRK /SETUP TRACK WORD IN BUFFER |
| 493 | TAD I XHITRK |
| 494 | AND K7577 |
| 495 | TAD HOMEMA /CURRENT FIELD |
| 496 | TAD K5000 /FUNCTION WRITE ALL |
| 497 | LDCMD /LOAD COMMAND |
| 498 | TAD EXBIT |
| 499 | LDSC /LOAD EXTENDED DRIVE BIT |
| 500 | CLA /CLEAR EXTENDED DRIVE BIT |
| 501 | TAD BGNBUF |
| 502 | LDCUR /LOAD CURRENT ADDRESS |
| 503 | TAD I XLOTRK |
| 504 | LDADD /LOAD TRACK AND GO |
| 505 | DSKSKP /SKIP ON FLAG |
| 506 | JMP .-1 /WAIT FOR FLAG |
| 507 | RDSTAT /READ STATUS |
| 508 | TAD K4000 |
| 509 | SZA CLA /WAS STATUS 0? |
| 510 | JMP LODER /ERROR, STATUS ON WRITE ALL |
| 511 | ISZ TCNTR2 |
| 512 | ISZ TCNTR3 /COUNT FIRST REVOLUTION |
| 513 | SKP CLA /STILL IN FIRST REV. |
| 514 | DCA TCNTR2 /SETUP FOR SECTOR "1" |
| 515 | ISZ TCNTR2 |
| 516 | ISZ TCNTR1 /UPDATE SECTOR COUNTER |
| 517 | \f JMP LODR1 /TRY NEXT SECTOR |
| 518 | ISZ WRTTRK |
| 519 | JMP I WRTTRK /THIS CYLINDER DONE |
| 520 | LODER, ERROR /ERROR, STATUS |
| 521 | 3602 /TEXT POINTER |
| 522 | / |
| 523 | RECAL /CLEAR CONTROL AND DRIVE |
| 524 | JMP I WRTTRK /TO NEXT DISK |
| 525 | CRLF |
| 526 | PRNTER /PRINT "TRY SAME AGAIN" |
| 527 | ERMES1 |
| 528 | RECEIV /WAIT FOR YES OR NO |
| 529 | JMP LODER-2 /WAS A NO TRY SAME CYLINDER |
| 530 | JMP .-5 /WAS NEITHER ASK AGAIN |
| 531 | JMP WRTTRK+1 /YES, TRY NEXT |
| 532 | K5000, 5000 |
| 533 | K7577, 7577 |
| 534 | / |
| 535 | / |
| 536 | /SUBROUTINE TO READ STATUS REGISTER |
| 537 | / |
| 538 | RDST, 0 |
| 539 | IOT5, DRST /READ STATUS IOT |
| 540 | SKP |
| 541 | ERHLT5, JMS XC8ERR /SKIP TRAP ERROR. |
| 542 | DCA STREG /SAVE RESULTS |
| 543 | TAD STREG |
| 544 | JMP I RDST /EXIT |
| 545 | / |
| 546 | /SUBROUTINE TO LOAD CURRENT ADDRESS REGISTER |
| 547 | / |
| 548 | LDCA, 0 |
| 549 | DCA ADREG /SAVE IN ADDRESS |
| 550 | TAD ADREG |
| 551 | DCA CAREG /SETUP INITIAL CURRENT ADDRESS |
| 552 | TAD ADREG |
| 553 | IOT4, DLCA /LOAD CURRENT ADDRESS IOT |
| 554 | JMP I LDCA /EXIT |
| 555 | ERHLT4, JMS XC8ERR /SKIP TRAP ERROR. |
| 556 | JMP .-1 |
| 557 | / |
| 558 | / |
| 559 | /SUBROUTINE TO LOAD TRACK ADDRESS REGISTER |
| 560 | / |
| 561 | LDAD, 0 |
| 562 | DCA DAREG /SAVE OUTBOUND DATA |
| 563 | TAD DAREG |
| 564 | IOT3, DLAG /LOAD DISK ADDRESS REGISTER |
| 565 | JMP I LDAD /EXIT |
| 566 | ERHLT3, JMS XC8ERR /SKIP TRAP ERROR. |
| 567 | JMP .-1 |
| 568 | / |
| 569 | / |
| 570 | /SUBROUTINE TO LOAD COMMAND REGISTER |
| 571 | / |
| 572 | LDCM, 0 |
| 573 | DCA CMREG /SAVE OUTBOUND DATA |
| 574 | DCA INMODE |
| 575 | JMS XC8CKP /CHECK FOR CONTROL CHARACTERS. |
| 576 | CLA |
| 577 | CLA |
| 578 | TAD CMREG |
| 579 | IOT6, DLDC /LOAD COMMAND REGISTER |
| 580 | JMP I LDCM /EXIT |
| 581 | ERHLT6, JMS XC8ERR /SKIP TRAP ERROR. |
| 582 | JMP .-1 |
| 583 | / |
| 584 | / |
| 585 | /SUBROUTINE ISSUE "DLSC" |
| 586 | XLDSC, 0 |
| 587 | IOT0, DLSC |
| 588 | JMP I XLDSC |
| 589 | ERHLT0, JMS XC8ERR |
| 590 | JMP .-1 |
| 591 | |
| 592 | /SUBROUTINE TO ISSUE "DSKP" DISK SKIP IOT |
| 593 | / |
| 594 | SDKP, 0 |
| 595 | IOT1, DSKP /DISK SKIP IOT |
| 596 | SKP /DID NOT SKIP |
| 597 | ISZ SDKP |
| 598 | JMP I SDKP /EXIT |
| 599 | / |
| 600 | /SUBROUTINE TO ISSUE "DCLR" CLEAR IOT |
| 601 | / |
| 602 | CLDR, 0 |
| 603 | IOT2, DCLR /DCLR "CLEAR IOT" |
| 604 | JMP I CLDR /EXIT |
| 605 | ERHLT2, JMS XC8ERR /SKIP TRAP ERROR. |
| 606 | JMP .-1 |
| 607 | / |
| 608 | /ROUTINE TO ZERO WORK BUFFER |
| 609 | / |
| 610 | KLBUF, 0 |
| 611 | CLA CLL CMA |
| 612 | TAD BGNBUF /START OF BUFFER -1 |
| 613 | DCA AUTO10 /SETUP AUTO INDEX |
| 614 | TAD K7400 |
| 615 | DCA DATCNT /SETUP COUNTER |
| 616 | DCA I AUTO10 /CLEAR BUFFER |
| 617 | ISZ DATCNT /UPDATE COUNTER |
| 618 | JMP .-2 /NOT ALL CLEARED YET |
| 619 | JMP I KLBUF /BUFFER CLEARED |
| 620 | K7400, 7400 |
| 621 | / |
| 622 | PAGE |
| 623 | / |
| 624 | / |
| 625 | /ROUTINE TO READ AND CHECK A CYLINDER |
| 626 | / |
| 627 | REDTRK, 0 |
| 628 | TAD K7735 |
| 629 | DCA TCNTR1 /AMOUNT OF SECTORS TO DO |
| 630 | DCA TCNTR2 /STARTING WITH 0 |
| 631 | TAD K7760 |
| 632 | DCA TCNTR3 |
| 633 | KILBUF /CLEAR BUFFER |
| 634 | CHKR1, CLA CLL CMA |
| 635 | DCA SOFT /SETUP SOFT ERROR FLAG |
| 636 | TAD BGNBUF |
| 637 | LDCUR /LOAD CURRENT ADDRESS |
| 638 | TAD HIGHAD /EXTENDED CYLINDER BIT |
| 639 | TAD DRIVNO /CURRENT DRIVE |
| 640 | TAD HOMEMA /CURRENT FIELD |
| 641 | LDCMD /LOAD COMMAND |
| 642 | TAD EXBIT /LOAD EXTENDED DRIVE BIT |
| 643 | LDSC |
| 644 | CLA /CLEAR EXTENDED DRIVE BIT |
| 645 | TAD TCNTR2 |
| 646 | AND K0037 /MASK SECTOR BITS OFF |
| 647 | TAD LOWAD /ADD IN OTHER DISK ADDRESS |
| 648 | LDADD /LOAD AND GO |
| 649 | DSKSKP /DISK SKIP IOT |
| 650 | JMP .-1 /WAIT FOR FLAG |
| 651 | RDSTAT /READ STATUS |
| 652 | TAD K4000 /ADD IN FUDGE FACTOR |
| 653 | SNA CLA /SKIP IF ERROR |
| 654 | JMP STAOK /STATUS O.K. |
| 655 | TAD STREG /GET STATUS READ |
| 656 | AND K0010 |
| 657 | SNA CLA /WAS IT A CRC |
| 658 | JMP STAER /NO, JUST A HARD ERROR |
| 659 | DCA SOFT /CLEAR SOFT ERROR FLAG |
| 660 | STAOK, TAD CMREG /GET LAST COMMAND |
| 661 | AND K0007 |
| 662 | TAD EXBIT /ADD EXTENDED DRIVE BIT |
| 663 | CIA |
| 664 | TAD I XHITRK /GET WORD READ FROM DISK |
| 665 | SNA CLA /SKIP IF ERROR |
| 666 | JMP FRSTOK /FIRST WORD O.K. |
| 667 | TAD I XHITRK /GET WORD |
| 668 | DCA DTREG /SETUP ERROR PRINTER |
| 669 | TAD CMREG |
| 670 | AND K0007 |
| 671 | DCA GDREG2 /SETUP GOOD FOR PRINTER |
| 672 | JMP DATER /NO, DATA ERROR |
| 673 | FRSTOK, TAD I XLOTRK /GET WORD READ |
| 674 | CIA |
| 675 | TAD DAREG /COMPARE TO GOOD |
| 676 | SNA CLA /SKIP IF ERROR |
| 677 | JMP DATOK /WORD O.K. |
| 678 | ISZ ADREG /SETUP ERROR PRINTER |
| 679 | TAD DAREG |
| 680 | DCA GDREG2 /SETUP GOOD WORD FOR PRINTER |
| 681 | TAD I XLOTRK /GET WORD READ |
| 682 | DCA DTREG /SETUP FOR PRINTER |
| 683 | JMP DATER /DATA ERROR |
| 684 | DATOK, TAD SOFT /GET SOFT ERROR FLAG |
| 685 | SNA CLA /WAS IT CLEAR |
| 686 | JMP STAER /YES, STATUS ERROR |
| 687 | TAD TCNTR2 |
| 688 | TAD K0003 /ADVANCE 3 SECTORS |
| 689 | DCA TCNTR2 |
| 690 | ISZ TCNTR3 |
| 691 | JMP CHKR1 /MORE TO FORMAT |
| 692 | ISZ REDTRK |
| 693 | JMP I REDTRK /EXIT, O.K. |
| 694 | DATER, TAD K7741 |
| 695 | DCA TCHKT /SETUP TEXT POINTER |
| 696 | JMP CHKER /ERROR |
| 697 | STAER, TAD K3600 |
| 698 | DCA TCHKT /SETUP TEXT POINTER |
| 699 | CLA CLL CML RAR |
| 700 | DCA GDREG2 /SETUP GOOD STATUS PRINTER |
| 701 | CHKER, ERROR /ERROR, READ DATA |
| 702 | TCHKT, 0 /MODIFIED TEXT POINTER |
| 703 | RECAL /CLEAR CONTROL AND DRIVE |
| 704 | JMP I REDTRK /TO NEXT DISK |
| 705 | CRLF |
| 706 | PRNTER /PRINT "TRY SAME AGAIN" |
| 707 | ERMES3 |
| 708 | RECEIV |
| 709 | JMP DATER-2 /CHECK NEXT |
| 710 | JMP .-5 /RE-PRINT |
| 711 | JMP REDTRK+1 /TRY SAME AGAIN |
| 712 | / |
| 713 | /THIS ROUTINE WILL TEST FOR APT AND NOP CONSOLE |
| 714 | /PACKAGE IF NEED BE |
| 715 | / |
| 716 | APT8, 0 |
| 717 | TAD 22 |
| 718 | SMA CLA |
| 719 | JMP I APT8 |
| 720 | TAD 22 |
| 721 | AND K7377 /ON APT. NOP CONSOLE PACKAGE |
| 722 | \f DCA 22 |
| 723 | TAD 22 |
| 724 | AND K0007 /ISOLATE DRIVE NUMBER OR |
| 725 | /NUMBER OF DRIVES TO BE DONE |
| 726 | DCA STCNT1 |
| 727 | TAD 22 |
| 728 | AND K0100 |
| 729 | SNA CLA /SINGLE DRIVE TESTING |
| 730 | JMP MULDSK /NO.SEVERAL TO DO |
| 731 | TAD ADPOT1 /GET DISK POINTER |
| 732 | TAD STCNT1 /ESTABLISH DRIVE TO DO |
| 733 | DCA STCNT1 |
| 734 | CLL CLA CMA /-1 |
| 735 | DCA I STCNT1 |
| 736 | CLL CLA CMA /ONE DISK TO DO |
| 737 | DCA LOC8ED |
| 738 | JMP I BGNTST |
| 739 | MULDSK, TAD STCNT1 /DRIVE TO BE DONE |
| 740 | CMA |
| 741 | DCA STCNT1 |
| 742 | TAD ADPOT1 /GET DISK POINTER |
| 743 | TAD STCNT2 /ESTABLISH DRIVE TO BE DONE |
| 744 | DCA STCNT3 |
| 745 | ISZ LOC8ED |
| 746 | CLL CLA CMA |
| 747 | DCA I STCNT3 /DO THIS DRIVE |
| 748 | ISZ STCNT2 |
| 749 | ISZ STCNT1 |
| 750 | JMP MULDSK+3 /MORE TO DO |
| 751 | TAD LOC8ED |
| 752 | CIA |
| 753 | DCA LOC8ED /NUMBER TO BE DONE |
| 754 | JMP I BGNTST |
| 755 | K7377, 7377 |
| 756 | PAGE |
| 757 | / |
| 758 | /SUBROUTINE TO PRINT TWO OCTAL |
| 759 | / |
| 760 | TOCT, 0 |
| 761 | DCA SBCNT1 /SAVE AC |
| 762 | TAD SBCNT1 |
| 763 | RAR |
| 764 | RTR |
| 765 | AND K0007 |
| 766 | TAD K0260 |
| 767 | TYPE /PRINT FIRST BYTE |
| 768 | TAD SBCNT1 |
| 769 | AND K0007 |
| 770 | TAD K0260 |
| 771 | TYPE /PRINT SECOND BIT |
| 772 | JMP I TOCT /EXIT |
| 773 | / |
| 774 | / |
| 775 | / |
| 776 | /ROUTINE TO DO CRLF |
| 777 | / |
| 778 | UPONE, 0 |
| 779 | CLA CLL |
| 780 | TAD K0215 |
| 781 | TYPE |
| 782 | TAD K0212 |
| 783 | TYPE |
| 784 | TYPE /TYPE ONE NULL |
| 785 | JMP I UPONE |
| 786 | / |
| 787 | K0215, 0215 |
| 788 | K0212, 0212 |
| 789 | / |
| 790 | /ROUTINE TO PRINT FOUR OCTAL |
| 791 | / |
| 792 | FROCT, 0 |
| 793 | RTL |
| 794 | RTL |
| 795 | DCA UPONE |
| 796 | TAD M4 |
| 797 | DCA TOCT |
| 798 | TAD UPONE |
| 799 | AND K0007 |
| 800 | TAD K0260 |
| 801 | TYPE |
| 802 | TAD UPONE |
| 803 | RTL |
| 804 | RAL |
| 805 | DCA UPONE |
| 806 | ISZ TOCT |
| 807 | JMP .-11 |
| 808 | TAD K0240 |
| 809 | TYPE |
| 810 | JMP I FROCT |
| 811 | / |
| 812 | /SUBROUTINE TO PRINT TEXT |
| 813 | / |
| 814 | PRN, 0 |
| 815 | CLA CLL |
| 816 | TAD I PRN /GET POINTER |
| 817 | ISZ PRN |
| 818 | DCA FROCT |
| 819 | TAD I FROCT |
| 820 | AND K7700 |
| 821 | SNA |
| 822 | JMP EXIT |
| 823 | SMA |
| 824 | CML |
| 825 | IAC |
| 826 | RTR |
| 827 | RTR |
| 828 | RTR |
| 829 | TYPE |
| 830 | TAD I FROCT |
| 831 | AND K0077 |
| 832 | SNA |
| 833 | JMP EXIT |
| 834 | TAD K3740 |
| 835 | SMA |
| 836 | TAD K4100 |
| 837 | TAD K0240 |
| 838 | TYPE |
| 839 | ISZ FROCT |
| 840 | CLA CLL |
| 841 | JMP PRN+5 |
| 842 | EXIT, CLA CLL |
| 843 | JMP I PRN |
| 844 | |
| 845 | / |
| 846 | K4100, 4100 |
| 847 | K3740, 3740 |
| 848 | / |
| 849 | /ROUTINE TO TYPE |
| 850 | / |
| 851 | PRINT, 0 |
| 852 | TLS |
| 853 | TSF |
| 854 | JMP .-1 |
| 855 | TCF |
| 856 | CLA |
| 857 | JMP I PRINT |
| 858 | K0240, 0240 |
| 859 | K7700, 7700 |
| 860 | K0077, 0077 |
| 861 | K0010, 10 |
| 862 | K7741, 7741 |
| 863 | K3600, 3600 |
| 864 | /ROUTINE TO WAIT FOR KEY FROM OPERATOR |
| 865 | / |
| 866 | WAIT, 0 |
| 867 | CLA CLL |
| 868 | KCC |
| 869 | KSF |
| 870 | JMP .-1 |
| 871 | KRB |
| 872 | TLS |
| 873 | TSF |
| 874 | JMP .-1 |
| 875 | AND K0177 |
| 876 | TAD K0200 |
| 877 | DCA CHAR |
| 878 | TAD CHAR |
| 879 | DCA C8CHAR |
| 880 | ISZ INMODE |
| 881 | JMS XC8CNT /CHECK FOR CONTROL CHARACTERS. |
| 882 | CLA |
| 883 | CLA |
| 884 | DCA INMODE |
| 885 | KCC |
| 886 | TCF |
| 887 | TAD CHAR |
| 888 | CIA |
| 889 | TAD K0316 |
| 890 | SNA CLA /WAS IT A NO |
| 891 | JMP I WAIT /YES |
| 892 | ISZ WAIT /UPDATE RETURN POINTER |
| 893 | TAD CHAR |
| 894 | CIA |
| 895 | TAD K0331 |
| 896 | SNA CLA /WAS IT A YES |
| 897 | ISZ WAIT /WAS A YES |
| 898 | JMP I WAIT /WAS NEITHER |
| 899 | K0177, 0177 |
| 900 | K0316, 0316 |
| 901 | K0331, 0331 |
| 902 | / |
| 903 | PAGE |
| 904 | / |
| 905 | / |
| 906 | /ROUTINE TO RECALIBRATE SELECTED DRIVE |
| 907 | / |
| 908 | RESTOR, 0 |
| 909 | CLA CLL IAC /ENABLE CLEAR CONTROL |
| 910 | CLRALL /CLEAR CONTROL |
| 911 | TAD DRIVNO /CURRENT DRIVE |
| 912 | TAD HOMEMA /CURRENT FIELD |
| 913 | LDCMD /LOAD COMMAND |
| 914 | TAD EXBIT |
| 915 | LDSC /LOAD EXTENDED DRIVE BIT |
| 916 | CLA CLL CML RAR /MAYBE EXPECTED STATUS |
| 917 | DCA GDREG2 /SETUP COMPARE REGISTER |
| 918 | CLA CLL CML RTL /ENABLE RECALIBRATE BIT |
| 919 | CLRALL /"RECALIBRATE" |
| 920 | DSKSKP /DISK SKIP IOT |
| 921 | JMP .-1 /WAIT FOR FIRST DONE FLAG |
| 922 | RDSTAT /READ STATUS |
| 923 | TAD K2000 |
| 924 | SNA /WAS IT BUSY AND DONE |
| 925 | JMP RESTA /YES, THEN ITS O.K. |
| 926 | TAD K2000 /NO, THEN IT MUST BE JUST DONE |
| 927 | SZA CLA /WAS IT JUST DONE |
| 928 | JMP RESTER /NO, ERROR |
| 929 | RESTA, CLRALL /CLEAR STATUS |
| 930 | TAD K0200 /ENABLE SET SECOND DONE FLAG |
| 931 | TAD CMREG /ORIGINAL COMMAND |
| 932 | LDCMD /LOAD COMMAND |
| 933 | DSKSKP /DISK SKIP IOT |
| 934 | JMP .-1 /WAIT FOR SECOND DONE |
| 935 | RDSTAT /READ STATUS |
| 936 | TAD K4000 |
| 937 | SZA CLA /WAS IT ONLY DONE FLAG |
| 938 | JMP RESTER /NO, ERROR STATUS |
| 939 | CLA CLL IAC /ENABLE CLEAR CONTROL |
| 940 | CLRALL /CLEAR CONTROL |
| 941 | ISZ RESTOR /UPDATE FOR GOOD RECALIBRATE |
| 942 | JMP I RESTOR /RETURN |
| 943 | RESTER, ERROR /ERROR, STATUS |
| 944 | 3603 /TEXT POINTER |
| 945 | / |
| 946 | CRLF |
| 947 | PRNTER /PRINT "TRY RECALIBRATE" |
| 948 | ERMES2 |
| 949 | RECEIV /WAIT FOR INPUT |
| 950 | JMP .+3 /TRY NEXT EXISTING DISK |
| 951 | JMP .-5 |
| 952 | JMP RESTOR+1 /TRY AGAIN |
| 953 | CLA CLL IAC |
| 954 | TAD AMOUNT /GET AMOUNT ON SYSTEM |
| 955 | SNA /WAS THERE ONLY 1 LEFT |
| 956 | JMP I XEND /LAST DISK |
| 957 | DCA AMOUNT /MORE TO GO BUT CLEAR THIS ONE |
| 958 | DCA I TCNTR5 /CLEAR DISK POINTER |
| 959 | JMP I RESTOR /TRY NEXT ONE |
| 960 | / |
| 961 | / |
| 962 | /ROUTINE TO CHANGE DEVICE CODES |
| 963 | / |
| 964 | CHANG, 0 |
| 965 | JMS XC8SW /GET SWITCH REGISTER BITS. |
| 966 | RAR |
| 967 | SNL CLA /CHANGE DEVICE CODES? |
| 968 | JMP I CHANG /NO. |
| 969 | JMS XC8SW /GET SWITCHES. |
| 970 | AND A0770 |
| 971 | DCA CSAVE1 /SAVE DESIRED |
| 972 | TAD CCNTR1 |
| 973 | DCA CSAVE2 |
| 974 | \f TAD CHNPOT |
| 975 | DCA RESTOR |
| 976 | CHANGR, TAD I RESTOR /GET ADDRESS POINTER |
| 977 | DCA KWAIT |
| 978 | TAD I KWAIT /GET OLD CODE |
| 979 | AND A7007 /MASK |
| 980 | TAD CSAVE1 /ADD IN DESIRED |
| 981 | DCA I KWAIT /STORE DESIRED DEVICE CODE |
| 982 | ISZ RESTOR /UPDATE POINTER |
| 983 | ISZ CSAVE2 /UPDATE CHANGE COUNTER |
| 984 | JMP CHANGR |
| 985 | JMP I CHANG /EXIT TO PROGRAM. |
| 986 | / |
| 987 | KWAIT, 0 |
| 988 | A7007, 7007 |
| 989 | A0770, 0770 |
| 990 | CSAVE1, 0 |
| 991 | CSAVE2, 0 |
| 992 | CCNTR1, 7771 |
| 993 | CHNPOT, CHNPOT+1 |
| 994 | IOT0 |
| 995 | IOT1 |
| 996 | IOT2 |
| 997 | IOT3 |
| 998 | IOT4 |
| 999 | IOT5 |
| 1000 | IOT6 |
| 1001 | K2000, 2000 |
| 1002 | / |
| 1003 | /THIS ROUTINE WILL GENERATE TIMING IF NEEDED BY THE APT SYSTEM |
| 1004 | / |
| 1005 | KTICK, 0 |
| 1006 | CLL CLA |
| 1007 | TAD 22 /GET HARDWARE CONFIGURATION |
| 1008 | AND K4000 |
| 1009 | SNA CLA /ON APT? |
| 1010 | JMP EXTICK /NO |
| 1011 | TAD I KTICK /GET TIMING VALUE |
| 1012 | DCA COUNT /ESATABLISH TIME |
| 1013 | ISZ CLKCNT |
| 1014 | JMP EXTICK /RETURN |
| 1015 | TAD COUNT /GET VALUE OF COUNTER |
| 1016 | DCA CLKCNT /STORE IT |
| 1017 | ISZ CNT /TIMING NEED BE DONE? |
| 1018 | JMP EXTICK |
| 1019 | TIME |
| 1020 | TAD KCNT /TIMING VALUE |
| 1021 | DCA CNT /INIT SECOND COUNTER |
| 1022 | EXTICK, ISZ KTICK /MOVE BEYOND TIMING VALUE |
| 1023 | JMP I KTICK |
| 1024 | |
| 1025 | COUNT, 0 |
| 1026 | CNT, -2 |
| 1027 | KCNT, -2 |
| 1028 | K0100, 0100 |
| 1029 | / |
| 1030 | / |
| 1031 | /ROUTINE TO NOTIFY APT OF USE IF REQUIRED |
| 1032 | / |
| 1033 | KTIME, 0 |
| 1034 | IOF /DISABLE INTERUPTS |
| 1035 | RDF /GET PRESENT DATA FIELD |
| 1036 | TAD KCDF |
| 1037 | DCA .+1 /ESTABLISHES CURRENT DATA FIELD |
| 1038 | HLT |
| 1039 | CIF 70 /FIELD 7. LOCATION OF UV PROM |
| 1040 | JMS I K6500 |
| 1041 | CLL CLA |
| 1042 | JMP I KTIME |
| 1043 | / |
| 1044 | K6500, 6500 |
| 1045 | / |
| 1046 | PAGE |
| 1047 | / |
| 1048 | / |
| 1049 | /THIS ROUTINE WILL NOTIFY APT OF AN ERROR AND SEND PC TO |
| 1050 | /APT SYSTEM. ALL ERRORS WILL RESULT IN PROGRAM HLT AND A TIME OUT ON |
| 1051 | /APT. APT WILL TAKE OVER FROM THERE. |
| 1052 | |
| 1053 | / |
| 1054 | AERRO, 0 |
| 1055 | IOF /DISABLE INTERUPTS |
| 1056 | CLA |
| 1057 | TAD 22 /CHECK FOR APT SYSTEM |
| 1058 | SMA CLA |
| 1059 | JMP I AERRO /RETURN NOT ON APT |
| 1060 | TAD I KERRO /GET PC |
| 1061 | DCA SAVPC |
| 1062 | RDF /GET CURRENT DATA FIELD |
| 1063 | TAD KCDF |
| 1064 | DCA .+2 |
| 1065 | TAD SAVPC |
| 1066 | HLT /REPLACED WILL CURRENT DATA FIELD |
| 1067 | CIF 70 /CHANGE IF FOR APT RETURN TO FIELD 7 |
| 1068 | JMP I K6520 /NOTIFIES APT OF ERROR |
| 1069 | HLT |
| 1070 | / |
| 1071 | K6520, 6520 |
| 1072 | KERRO, ERRO |
| 1073 | SAVPC, 0 |
| 1074 | / |
| 1075 | / |
| 1076 | /ROUTINE TO MOVE DISK POINTERS |
| 1077 | / |
| 1078 | MOVE, 0 |
| 1079 | TAD ADPT1 |
| 1080 | DCA AUTO10 |
| 1081 | |
| 1082 | TAD ADPT2 |
| 1083 | DCA AUTO11 |
| 1084 | TAD M10 |
| 1085 | DCA MCNTR1 |
| 1086 | TAD I AUTO10 /FROM HERE |
| 1087 | DCA I AUTO11 /TO THERE |
| 1088 | ISZ MCNTR1 /4 POINTERS |
| 1089 | JMP .-3 |
| 1090 | JMP I MOVE |
| 1091 | / |
| 1092 | ADPT1, DSK0A-1 |
| 1093 | ADPT2, DSK0B-1 |
| 1094 | MCNTR1, 0 |
| 1095 | / |
| 1096 | / |
| 1097 | TEXPC, TEXT "PC:" |
| 1098 | TEXGD, TEXT "GD:" |
| 1099 | TEXEX, TEXT "EX:" |
| 1100 | TEXCM, TEXT "CM:" |
| 1101 | TEXST, TEXT "ST:" |
| 1102 | TEXDA, TEXT "DA:" |
| 1103 | TEXCA, TEXT "CA:" |
| 1104 | TEXAD, TEXT "AD:" |
| 1105 | TEXDT, TEXT "DT:" |
| 1106 | / |
| 1107 | ERTX1, TEXT "READ STATUS ERROR" |
| 1108 | ERTX2, TEXT "DISK DATA ERROR" |
| 1109 | ERTX3, TEXT "WRITE STATUS ERROR" |
| 1110 | ERTX4, TEXT "RECALIBRATE STATUS ERROR" |
| 1111 | / |
| 1112 | ERMES1, TEXT "TRY TO FORMAT SAME CYLINDER AGAIN?" |
| 1113 | ERMES2, TEXT "TRY TO RECALIBRATE SAME DISK AGAIN?" |
| 1114 | ERMES3, TEXT "TRY TO CHECK SAME CYLINDER AGAIN?" |
| 1115 | / |
| 1116 | TEXEND, TEXT "RK8E/RK8L DISK FORMATTER PASS COMPLETE" |
| 1117 | MES1, TEXT "RK8E/RK8L DISK FORMATTER PROGRAM" |
| 1118 | MES2, TEXT "FOR ALL QUESTIONS, ANSWER Y FOR YES OR N FOR NO." |
| 1119 | MES3, TEXT "FORMAT DISK " |
| 1120 | MES4, TEXT "ARE YOU SURE?" |
| 1121 | MES5, TEXT "FORMAT SAME DISK(S) AGAIN?" |
| 1122 | / |
| 1123 | PAGE |
| 1124 | / |
| 1125 | WRKBUF=. |
| 1126 | / |
| 1127 | HITRK=. |
| 1128 | LOTRK=.+1 |
| 1129 | / |
| 1130 | ENDBUF=.+377 |
| 1131 | / |
| 1132 | |
| 1133 | |
| 1134 | /CONSOL SRC -V2-R0- CONSOLE PACKAGE |
| 1135 | |
| 1136 | |
| 1137 | /LAS= CALL C8CKSW OR JMS XC8SW |
| 1138 | /THIS WILL READ THE SWITCH REGISTER FROM THE PLACE SPECIFIED |
| 1139 | /BY LOCATION 20 BIT 0. |
| 1140 | |
| 1141 | |
| 1142 | /THE PROGRAN SHOULD CHECK FOR A CONTROL CHARACTER FRON THE TERMINAL |
| 1143 | /EVERY FIVE(5) SECONDS OR SOONER. |
| 1144 | |
| 1145 | /LOCATIONS THAT NEED TO BE SET UP FOR USING THE CONSOLE PACKAGE. |
| 1146 | |
| 1147 | /CNTVAL IN XC8PASS THIS LOCATION DETERMINDS THE NUMBER OF |
| 1148 | /PROGRAM COMPLETIONS THAT ARE NEEDED BEFORE THE PASS MESSAGE IS TYPED |
| 1149 | /THE VALUE SHOULD PUT THE PASS MESSAGE OUT IN THE RANGE OF 1 TO 5 MINUTES. |
| 1150 | /THIS SHOULD BE A POSITIVE NUNBER. |
| 1151 | |
| 1152 | /C8STRT THIS IS FOUND IN CNTRL ROUTINE CONTROL R PART |
| 1153 | /IT IS THE RETURN WHEN CONTROL R IS ENTERED (RESTART PROGRAM) |
| 1154 | /THE RETURN JUMPS TO XDOSW WHICH CONTAINS C8STRT SO PUT THE LABEL C8STRT |
| 1155 | /WHERE YOU WANT TO RESTART THE PROGRAM. |
| 1156 | |
| 1157 | |
| 1158 | /SETUP1 IN XC8ERR THIS IS THE MASK BIT FOR HALT ON ERROR |
| 1159 | /PLACE THE CORRECT BIT IN THIS LOCATION FOR HALTING ON ERRORS. |
| 1160 | |
| 1161 | /SETUP2 IN XC8PASS THIS IS THE MASK FOR HALT A END OF PASS. |
| 1162 | |
| 1163 | /THE CALL TABLE IS A CONDITIONAL ASSEMBLY. |
| 1164 | /TO ASSEMBLE THE CALL REMOVE THE / BEFORE CONSOL=0. |
| 1165 | /IN COMBINING THE CONSOL PACKAGE TO A DIAGNOSTIC. |
| 1166 | /THE CALL TABLE IS TO BE AT THE BEGINNING OF A PROGRAM. |
| 1167 | |
| 1168 | |
| 1169 | /CONSOL=0 |
| 1170 | PSKF= 6661 |
| 1171 | PCLF= 6662 |
| 1172 | PSKE= 6663 |
| 1173 | PSTB= 6664 |
| 1174 | PSIE= 6665 |
| 1175 | GTF= 6004 |
| 1176 | ACL= 7701 |
| 1177 | CAF= 6007 |
| 1178 | MQL= 7421 |
| 1179 | MQA= 7501 |
| 1180 | / |
| 1181 | *3000 |
| 1182 | / |
| 1183 | /********************************************************************* |
| 1184 | /C8PASS |
| 1185 | /THIS IS CALLED AT THE END OF EACH PROGRAM COMPLETION |
| 1186 | /THE VALUE OF** CNTVAL** WILL BE DETERMINED BY THE TIME IT TAKES |
| 1187 | /THE PROGRAM TO COMPLETE THIS MANY C8PASS TO BE IN THE 1 TO 4 MINUTE |
| 1188 | /RANGE |
| 1189 | / C8PASS=JMS XC8PAS |
| 1190 | /EX. OF CALL C8PASS |
| 1191 | / HLT /HALT IF NON CONSOL PACKAGE |
| 1192 | / JMP START1 /CONTINUE RUNNING THIS PROGRAM |
| 1193 | |
| 1194 | |
| 1195 | /RETURN TO LOCATION CALL PLUS ONE WITH THE AC=0 IF NON CONSOL PACKAGE AND HLT |
| 1196 | /IF CONTINUE TO RUN THEN RETURN TO CALL PLUS2 AC=0 |
| 1197 | /THE LOCATION SETUP2 IS THE MASK BIT FOR THE HALT AT END OF PASS |
| 1198 | /CHECK THAT IT IS CORRECT FOR THE CURRENT PROGRAM |
| 1199 | |
| 1200 | /CALLS USED BY XC8PAS ARE CHKCLA-XC8CRLF-XC8OCTA-XC8SW-XC8PNT-XC8INQ- |
| 1201 | |
| 1202 | |
| 1203 | XC8PAS, 0 |
| 1204 | CLA |
| 1205 | \f JMS CHKCLA /IS WORD 22 BIT 3 ACTIVE CONSOLE? |
| 1206 | JMP DOPACK /IS CLASSIC |
| 1207 | JMS C8GET /GET THE REGISTERS. |
| 1208 | JMS XC8SW /DEACTIVE CONSOL CHECK SR SETTING |
| 1209 | AND (400 /FOR HALT ON END OF C8PASS |
| 1210 | SZA CLA /1= HALT 0 CONTINUE |
| 1211 | JMP I XC8PAS /GO TO HALT |
| 1212 | JMP C8BY1 /CONTINUE ON RUNNING PROGRAM |
| 1213 | DOPACK, JMS CKCOUT /CLASS CHECK C8PASS COUNT |
| 1214 | JMP C8BY1 /C8PASS COUNT NOT DONE REDO PROGRAM |
| 1215 | ISZ PASCNT /C8PASS COUNT DONE SET C8PASS COUNT |
| 1216 | JMS XC8CRLF |
| 1217 | JMS XC8PNT /C8PRNT BUFFER |
| 1218 | MESPAS / |
| 1219 | TAD PASCNT /GET NUMBER |
| 1220 | JMS XC8OCTA /CONVERT IT TO ASCII |
| 1221 | JMS XC8CRLF /DO A CARRIAGE RETURN |
| 1222 | JMS C8GET /GET THE REGISTERS. |
| 1223 | JMS XC8SW /CHECK A HALT AT END OF C8PASS |
| 1224 | SETUP2, AND (400 /MASK BIT |
| 1225 | SZA CLA /HALT =1 NO SKIP CONTINUE =0 |
| 1226 | JMS XC8INQ /STOP PROGRAM EXECUTION-LOOK FOR INPUT |
| 1227 | C8BY1, ISZ XC8PAS /BUMP RETURN |
| 1228 | JMP I XC8PAS |
| 1229 | CKCOUT, 0 |
| 1230 | TAD DOSET /CHECK IF SET UP NEEDED |
| 1231 | SZA CLA /0=SET UP C8PASS COUNT VALUE |
| 1232 | /1=C8PASS COUNT VALUE OK |
| 1233 | JMP NOSET /C8PASS COUNT VALUE ON |
| 1234 | TAD CNTVAL /GET COUNT VALUE FOR THIS PROG |
| 1235 | CMA /SET TO NEGATIVE |
| 1236 | DCA DOCNT /STORE IN HERE |
| 1237 | ISZ DOSET /INDICATE VALUE SET UP |
| 1238 | NOSET, ISZ DOCNT /COUNT THE NUMBER OF PASSES |
| 1239 | JMP C8BY1 /EXIT FOR ANOTHER PASS |
| 1240 | DCA DOSET /SET TO C8PRNT C8PASS |
| 1241 | ISZ CKCOUT /BUMP RETURN FOR |
| 1242 | JMP I CKCOUT /C8PASS C8TYPE OUT |
| 1243 | DOCNT, 0 |
| 1244 | PASCNT, 0 / |
| 1245 | DOSET, 0 |
| 1246 | CNTVAL, 0 |
| 1247 | MESPAS, TEXT "DHRKDD PASS " |
| 1248 | |
| 1249 | |
| 1250 | |
| 1251 | /********************************************************************* |
| 1252 | |
| 1253 | /C8CKSW |
| 1254 | |
| 1255 | /THIS ROUTINE CAN BE USED INPLACE OF A READ THE SWITCHES LAS. |
| 1256 | /ROUTINE THAT WILL CHECK WHERE TO READ THE |
| 1257 | /C8 SWITCHES FROM IE. FROM PANEL OR PSEUDO SWITCH REGISTER |
| 1258 | /THE SELECTION IS DETERMINED BY THE STATE OF BIT 0 IN LOCATION 21. |
| 1259 | |
| 1260 | /C8CKSW= JMS XC8SW |
| 1261 | /EX. JMS XC8SW /READ THE C8SWIT REGISTER |
| 1262 | /RETURN WITH THE CONTENTS OF SWITCH REGISTER |
| 1263 | |
| 1264 | /RETURN TO NEXT LOCATION FOLLOWING CALL WITH THE AC= TO VALUE OF C8SWIT SETTING |
| 1265 | |
| 1266 | /CALLS USED ARE-XC8CKPA- |
| 1267 | |
| 1268 | |
| 1269 | |
| 1270 | XC8SW, 0 |
| 1271 | JMS XC8CKPA /GO CHECK THE IF ANY CONTRL |
| 1272 | NOP |
| 1273 | TAD 21 /GET WD FOR INDICATOR |
| 1274 | SPA CLA /CHECK IF FROM PANEL 4000 |
| 1275 | 7614 /DO LAS AND SKIP GET FROM PANEL WITH LAS |
| 1276 | TAD 20 /PSEUDO SWITCH |
| 1277 | JMP I XC8SW /EXIT WITH STATUS BIT IN AC. |
| 1278 | |
| 1279 | |
| 1280 | /********************************************************************* |
| 1281 | |
| 1282 | /C8TTYI |
| 1283 | /THIS ROUTINE WILL LOOK FOR A INPUT FROM THE TERMINAL |
| 1284 | /AND REMOVE ANY PARITY BITS, THEN MAKE IT 8 BIT ASCI. |
| 1285 | / C8TTYI= JMS XC8TTY |
| 1286 | /EX. JMS XC8TTYI /READ CHAR FROM THE CONSOL DEVICE |
| 1287 | / /RETURN TO CALL PLUS ONE AC CONTAINS THE CHAR |
| 1288 | |
| 1289 | |
| 1290 | /CALLS USED -NONE- BUT C8CHAR IS OFF PAGE AND IN ROUTINE CALLED XC8ECHO |
| 1291 | |
| 1292 | / |
| 1293 | / |
| 1294 | XC8TTY, 0 |
| 1295 | KSF /LOOK FOR KEYBOARD FLAG |
| 1296 | JMP .-1 |
| 1297 | KRB /GET CHAR |
| 1298 | AND (177 /MASK FOR 7 BITS |
| 1299 | TAD (200 /ADD THE EIGTH BIT |
| 1300 | DCA C8CHAR /STORE IT |
| 1301 | TAD C8CHAR |
| 1302 | JMP I XC8TTY /EXIT |
| 1303 | |
| 1304 | |
| 1305 | |
| 1306 | /********************************************************************* |
| 1307 | |
| 1308 | /C8PRNT |
| 1309 | |
| 1310 | /THIS ROUTINE WILL TYPE THE CONTENTS OF THE C8 PRINT BUFFER. THE LOCATION |
| 1311 | /OF THE BUFFER WILL BE IN THE ADDRS FOLLOWING THE CALL. PRINTING OF THE BUFFER |
| 1312 | /WILL STOP WHEN A 00 CHAR IS DETECTED. CHARACTERS ARE PACKED 2 PER WORD. |
| 1313 | |
| 1314 | / C8PRNT= JMS XC8PNT |
| 1315 | |
| 1316 | |
| 1317 | /EX. JMS XC8PNT /C8PRNT THE CONTENTS OF THE FOLLOWING BUFFER |
| 1318 | / MESS77 /LOCATION OF C8PRNT BUFFER |
| 1319 | |
| 1320 | /C8PRNT WILL USE THE LOCATION FOLLOWING THE CALL AS THE POINTER FOR THE |
| 1321 | /C8PRNT ROUTINE.RETURN TO CALL PLUS TWO WITH AC= 0 |
| 1322 | |
| 1323 | /CALLS USED ARE-XC8TYPE-XC8PNT |
| 1324 | |
| 1325 | |
| 1326 | |
| 1327 | XC8PNT, 0 |
| 1328 | CLA CLL |
| 1329 | TAD I XC8PNT /GET C8PRNT BUFFERS STARTING LOCATION |
| 1330 | DCA PTSTOR /STORE IN PTSTOR |
| 1331 | ISZ XC8PNT /BUMP RETURN |
| 1332 | C8DO1, TAD I PTSTOR /GET DATA WORD |
| 1333 | AND (7700 /MASK FOR LEFT BYTE |
| 1334 | SNA /CHECK IF 00 TERMINATE |
| 1335 | JMP I XC8PNT /EXIT |
| 1336 | SMA /IS AC MINUS |
| 1337 | CML /MAKE CHAR A 300 AFTER ROTATE |
| 1338 | IAC /MAKE CHAR A 200 AFTER ROTATE |
| 1339 | RTR |
| 1340 | RTR |
| 1341 | RTR /PUT CHAR IN BITS 4-11 MAKE IT 8 BIT ASCII |
| 1342 | JMS XC8TYPE /C8PRNT IT ON CONSOLE |
| 1343 | TAD I PTSTOR /GET DATA WORD |
| 1344 | AND (0077 /MASK FOR RIGHT BYTE |
| 1345 | SNA /CHECK IF 00 TERMINATOR |
| 1346 | JMP I XC8PNT //EXIT |
| 1347 | TAD (3740 /ADD FUDGE FACTOR TO DETERMINE IF 200 |
| 1348 | SMA /OR 300 IS TO BE ADD TO CHAR |
| 1349 | TAD (100 /ADD 100 |
| 1350 | TAD (240 /ADD 200 |
| 1351 | JMS XC8TYPE /C8TYPE ONLY BITS 4-11 |
| 1352 | ISZ PTSTOR /BUMP POINTER FOR NEXT WORD |
| 1353 | JMP C8DO1 /DO AGAIN |
| 1354 | PTSTOR, 0 /STOR FOR C8PRNT BUFFER |
| 1355 | /************************************************************************** |
| 1356 | |
| 1357 | |
| 1358 | /C8PAUS |
| 1359 | /THIS ROUTINE WILL CHECK IF THE CONSOL PACKAGE IS ACTIVE,IF ACTIVE |
| 1360 | /IT WILL RETURN TO CALL PLUS ONE AC= 0. AND DO THAT INSTRUCTION. |
| 1361 | /IF THE CONSOL PACKAGE IS NOT ACTIVE THE CALL WILL BE REPLACED |
| 1362 | /WITH A 7402 HALT AND THEN RETURN TO THE HALT. |
| 1363 | |
| 1364 | / C8PAUS= JMS XC8PAU |
| 1365 | / |
| 1366 | / |
| 1367 | /EX. JMS XC8PAUS /CHECK IF ON ACTIVE CONSOL IF NOT HALT HERE |
| 1368 | / ANYTHING /RETURN HERE IF ON ACTIVE CONSOL |
| 1369 | / |
| 1370 | / |
| 1371 | |
| 1372 | /CALLS USED ARE -CHKCLA- |
| 1373 | |
| 1374 | |
| 1375 | |
| 1376 | XC8PAU, 0 |
| 1377 | CLA CLL |
| 1378 | JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT |
| 1379 | JMP C8DO3 /GO DO CONSOL PART RETURN CALL +1 |
| 1380 | CMA /DEACTIVE CONSOLE PACKAGE PUT HLT IN CALL |
| 1381 | TAD XC8PAU /GET CORRECT RETURN ADDRS |
| 1382 | DCA XC8PAU /SET UP RETURN |
| 1383 | TAD (7402 /GET CODE FOR HLT |
| 1384 | DCA I XC8PAU /PUT HALT IN CALL LOCATION |
| 1385 | C8DO3, JMP I XC8PAU /GO TO HALT OR RETURN TO NEXT LOCATION |
| 1386 | |
| 1387 | |
| 1388 | PAGE |
| 1389 | /********************************************************************* |
| 1390 | \f |
| 1391 | |
| 1392 | /C8CNTR |
| 1393 | /THIS ROUTINE WILL CHECK FOR THE PRESENCE OF CONTROL CHARACTERS |
| 1394 | /IT WILL CHECK FOR THE FOLLOWING CHAR C-R-Q-L-S |
| 1395 | / C8CNTR= JMS XC8CNT |
| 1396 | |
| 1397 | /EX. JMS XC8CNTR /CHECK FOR CONTROL CHARACTER |
| 1398 | / JMP ANYTHING /LOC FOLLOWING CALL IS FOR CONTINUING THE PROGRAM |
| 1399 | / JMP ANYTHING /LOC. IS FOR RETURN IF INMODE SET AND NOT CNTRL CHAR |
| 1400 | / |
| 1401 | |
| 1402 | /RETURN IS TO CALL PLUS ONE IF CONTINUE |
| 1403 | /RETURN IS TO CALL PLUS TWO IF INMODE SET AND NOT CONTROL CHAR |
| 1404 | /RETURN IS TO CALL PLUS TWO IF INMODE IS NOT SET AND NO |
| 1405 | /CONTROL CHAR ..THIS WILL PRINT THE CHARACTER AND A ? |
| 1406 | /CLEAR THE AC AND RETURN CALL+2. |
| 1407 | |
| 1408 | /CALLS USED ARE-CHKCLA-XC8TYPE-XC8CRLF-C8GET-UPAROW-XC8TYI-XC8PSW- |
| 1409 | / |
| 1410 | / |
| 1411 | / |
| 1412 | XC8CNT, 0 |
| 1413 | DCA ACSAVE /SAVE THE AC |
| 1414 | JMS CHKCLA /CHECK LOC.22 BIT3 FOR CONSOLE BIT |
| 1415 | JMP .+3 /ON ACTIVE CONSOLE |
| 1416 | TAD ACSAVE /DEACTIVE CONSOLEGET AC FOR RETURN |
| 1417 | JMP I XC8CNT /EXIT NOT ON ACTIVE CONSOLE |
| 1418 | GTF |
| 1419 | DCA FLSAVE |
| 1420 | MQA |
| 1421 | DCA MQSAVE /SAVE THE MQ |
| 1422 | DCA INDEXA /SET DISPLACEMENT INTO TABLE B |
| 1423 | TAD XTABLA /GET ADDRS OF TABLE A |
| 1424 | DCA GETDAT /CONTAINS POINTER TO CONTROL CHAR |
| 1425 | REDOA, TAD I GETDAT /GET CONTROL CHAR FROM TABLE |
| 1426 | SNA /CHECK FOR A 0 END OF TABLE |
| 1427 | JMP DONEA /END OF TABLE NO CONTROL CHAR |
| 1428 | TAD C8CHAR /COMPARE CHAR TO CONTROL CHAR |
| 1429 | SNA CLA /0 IF MATCH |
| 1430 | JMP GOITA /MATCH |
| 1431 | ISZ INDEXA /NO MATCH NOT END OF TABLE REDO |
| 1432 | ISZ GETDAT /BUMP INDEX FOR EXIT WHEN CONTROL FOUND |
| 1433 | JMP REDOA /BUMP GETDAT FOR COMPARE OF NEXT CNTRL CHAR. |
| 1434 | DONEA, TAD INMODE /CHECK IF PROGRAM EXPECTS CHAR |
| 1435 | SZA CLA /1=CHAR EXPECTED 0= NO CHAR EXPECTED |
| 1436 | JMP EXITA /CHAR EXPECTED |
| 1437 | TAD C8CHAR /GET CHAR - NOT CONTROL + NOT EXPECTED |
| 1438 | JMS XC8TYPE /C8PRNT CHAR |
| 1439 | TAD (277 /GET CODE FOR "?" |
| 1440 | JMS XC8TYPE |
| 1441 | JMS XC8CRLF |
| 1442 | ISZ XC8CNT /BUMP RETURN |
| 1443 | JMP I XC8CNT /EXIT CALL+2 |
| 1444 | EXITA, ISZ XC8CNT /BUMP RETURN FOR MAIN PROGRAM CHECK OF CHAR |
| 1445 | TAD C8CHAR /PUT CHAR IN AC. |
| 1446 | JMP I XC8CNT /EXIT |
| 1447 | GOITA, TAD C8CHAR /GET THE CONTENTS OF CHAR |
| 1448 | TAD (100 /ADD 100 TO FORM A GOOD ASCII CHARACTER |
| 1449 | DCA C8CHAR /RESTORE COFFECT CHAR |
| 1450 | TAD XTABLB /GET START OF TABLE B |
| 1451 | TAD INDEXA /GET NOW FAR INTO TABLE |
| 1452 | DCA GOTOA /STORE IT |
| 1453 | TAD I GOTOA /GET THE ROUTINE STARTTING ADDRESS |
| 1454 | DCA GOTOA /STORE IT IN HERE |
| 1455 | JMP I GOTOA /GOTO CONTROL CHAR ROUTINE |
| 1456 | GOTOA, 0000 /ADD OF CNTRL ROUTINE TO EXECUTE |
| 1457 | INDEXA, 0000 /DISPLACEMENT INTO CNTRL TABLE |
| 1458 | GETDAT, 0000 /LOCATION OF ADDRS OF CONTROL CHAR. |
| 1459 | XTABLA, TABLA /ADDRS OF TABLEA |
| 1460 | XTABLB, TABLB /ADDRS OF TABLEB |
| 1461 | TABLA, 7575 /CNTRL C BACK TO MONITOR 203 |
| 1462 | 7564 /CNTRL L SWITCH ERROR PRINTTING DEVICE 214 |
| 1463 | 7557 /CNTRL Q START DISPLAYING CHAR. AGAIN 221 |
| 1464 | 7556 /CNTRL R BACK TO BEGINNING OF PROGRAM 222 |
| 1465 | 7555 /CNTRL S STOP SENDING CHAR TO DISPLAY WAIT FOR CNTRL Q 223 |
| 1466 | 7573 /CNTRL E CONTINUE WITH PROGRAM 205 |
| 1467 | 7574 /CONTROL D CHANGE SWITCH REGISTER ON FLY |
| 1468 | 0000 |
| 1469 | |
| 1470 | TABLB, CNTRLC |
| 1471 | CNTRLL |
| 1472 | CNTRLQ |
| 1473 | CNTRLR |
| 1474 | CNTRLS |
| 1475 | CNTRLE |
| 1476 | CNTRLD |
| 1477 | / |
| 1478 | /CONTROL Q |
| 1479 | /START SENDING CHAR. TO THE DISPLAY |
| 1480 | /THIS WILL RETURN CONTROL TO CALL THAT WAS SET BY |
| 1481 | /THE CALL FOR CONTROL S. |
| 1482 | / |
| 1483 | CNTRLQ, DCA INMODE /SET SOFT FLAG FOR UNEXPECTED CHAR |
| 1484 | TAD C8SETS /CHECK IF CONTROL S TYPED IN |
| 1485 | SZA CLA |
| 1486 | JMP BYRETR /CONTROL S TYPED IN |
| 1487 | JMS C8GET /NO CONTROL S TYPED PREVIOUSLY |
| 1488 | JMP I XC8CNTR /LEAVE VIA CNTR ENTRY ADDRESS |
| 1489 | BYRETR, DCA C8SETS /CLEAR THE SOFT FLAG |
| 1490 | JMS C8GET /RESTORE REGISTERS |
| 1491 | JMP I C8RETR /EXIT TO ADDRESS SET BY CONTROL S |
| 1492 | / |
| 1493 | / |
| 1494 | /CONTROL R |
| 1495 | /GO TO THE QUESTION C8SWIT |
| 1496 | CNTRLR, DCA TTYLPT /CLEAR THE TYPE FLAG SET TO TTY |
| 1497 | DCA C8SETS /CLEAR SOFT FLAG FOR CNTRL S |
| 1498 | DCA INMODE |
| 1499 | JMS UPAROW /PRINT THE ^ AND C8CHAR |
| 1500 | C8BY4, DCA C8SWST /CLEAR FLAG FOR CNTRL D OR R |
| 1501 | JMP I XDOSW /GO TO ADDRS OF C8SWIT |
| 1502 | XDOSW, BGN /DOSW IS LABEL FOR C8SWIT QUESTION |
| 1503 | / |
| 1504 | / |
| 1505 | /CONTROL S |
| 1506 | /STOP SENDING CHAR. TO DISPLAY UNTIL A ^Q IS RECEIVED |
| 1507 | / |
| 1508 | / |
| 1509 | CNTRLS, TAD C8SETS /IF1 DO NOT STORE IN C8RETR |
| 1510 | SZA CLA |
| 1511 | JMP C8DO7 /DONT SET UP C8RETR |
| 1512 | IAC /MAKE RETURN CALL PLUS 2 |
| 1513 | TAD XC8CNT /GET RETURN FOR THIS CALL |
| 1514 | DCA C8RETR /STORE IT HERE FOR USE BE CNTROL Q |
| 1515 | C8DO7, ISZ C8SETS /SET FLAG TO SAVE CALL |
| 1516 | JMS XC8TTYI /LOOK FOR THE INPUT |
| 1517 | JMS C8GET /GET REGISTERS |
| 1518 | JMS XC8CNTR /CHECK FOR THE CONTROL CHAR |
| 1519 | CLA |
| 1520 | JMP CNTRLS /IF NOT A CNTRL Q R C REASK |
| 1521 | C8SETS, 0 |
| 1522 | C8RETR, 0 |
| 1523 | / |
| 1524 | /SWITCH OUTPUT FROM ONE OUTPUT DEVICE TO ANOTHER - THE TWO OUTPUTS ARE THE |
| 1525 | /CONSOLE AND THE PRINTER WITH DEVICE CDOE 66. |
| 1526 | / |
| 1527 | / |
| 1528 | CNTRLL, TAD TTYLPT /GET PRESENT C8SWIT INDICATOR |
| 1529 | CMA /COMPLEMENT IT |
| 1530 | DCA TTYLPT /STOR NEW C8SWIT |
| 1531 | JMS UPAROW /C8PRNT ^ AND CHAR ON NEW DEVICE |
| 1532 | JMS C8GET /RESTORE THE REGISTERS |
| 1533 | JMP I XC8CNT /EXIT |
| 1534 | / |
| 1535 | /CONTROL E |
| 1536 | /CONTINUE RUNNING FROM A INQUIRE OR ERROR |
| 1537 | / |
| 1538 | / |
| 1539 | CNTRLE, JMS UPAROW /PRINT THE CONTROL CHAR |
| 1540 | JMS C8GET /GET THE REGISTERS |
| 1541 | JMP I XC8CNT /RETURN TO CALL PLUS ONE |
| 1542 | / |
| 1543 | |
| 1544 | /CONTROL C |
| 1545 | /RETURN TO MONITOR CONTROL C |
| 1546 | CNTRLC, DCA TTYLPT /CLEAR THE LPT FLAG TO PRINT ON DISPLAY |
| 1547 | JMS UPAROW /C8PRNT A^ AND LETTER IN CHAR |
| 1548 | CDF CIF /GO TO 0 FLD |
| 1549 | CAF /CLEAR THE WORLD |
| 1550 | JMP I (7600 /GO TO DIAGNOSTIC MONITOR |
| 1551 | /********************************************************************* |
| 1552 | / |
| 1553 | / |
| 1554 | / |
| 1555 | PAGE |
| 1556 | |
| 1557 | / |
| 1558 | /CONTROL D |
| 1559 | /CHANGE THE SWITCH REGISTER ANYTIME CNTRL D AND RETURN TO |
| 1560 | /THE PROGRAM RUNNING. |
| 1561 | |
| 1562 | |
| 1563 | CNTRLD, JMS UPAROW |
| 1564 | \f TAD C8SETD /CHECK IF THE RETURN ADDRS IS SAFE |
| 1565 | SZA CLA |
| 1566 | JMP C8DO11 /DO NOT CHANGE THE RETURN ADDRS |
| 1567 | TAD XC8CNT /GET THE RETURN ADDRS AND SAVE IT |
| 1568 | DCA C8RETD /SAVE THE RETURN HERE |
| 1569 | ISZ C8SETD /INDICATE RETURN SAVED DONT DISTROY |
| 1570 | C8DO11, JMS XC8PSW /GO CHANGE THE SWITCH REGISTER |
| 1571 | DCA C8SETD /CLEAR THE FLAG |
| 1572 | JMS C8GET /RESTORE THE AC MQ LINK ETC |
| 1573 | JMP I C8RETD /RETURN TO THE PROGRAM |
| 1574 | / |
| 1575 | C8SETD, 0 |
| 1576 | C8RETD, 0 |
| 1577 | |
| 1578 | |
| 1579 | |
| 1580 | /THIS WILL TYPE A UP ARROW AND THE CHAR IN C8CHAR. |
| 1581 | |
| 1582 | UPAROW, 0 /C8PRNT THE "^" AND THE CHAR C8TYPED IN |
| 1583 | TAD (336 /CODE FOR ^ |
| 1584 | JMS XC8TYPE |
| 1585 | TAD C8CHAR /C8TYPE THE CHAR |
| 1586 | JMS XC8TYPE |
| 1587 | JMS XC8CRLF |
| 1588 | JMP I UPAROW /EXIT |
| 1589 | |
| 1590 | |
| 1591 | |
| 1592 | /*********************************************************************** |
| 1593 | |
| 1594 | C8GET, 0 |
| 1595 | CLA |
| 1596 | TAD MQSAVE |
| 1597 | MQL /RESTORE MQ |
| 1598 | TAD FLSAVE |
| 1599 | RAL /RESTORE THE LINK |
| 1600 | CLA |
| 1601 | TAD ACSAVE /RESTORE THE AC |
| 1602 | JMP I C8GET /GET THE REGISTERS |
| 1603 | |
| 1604 | |
| 1605 | |
| 1606 | /******************************************************************** |
| 1607 | |
| 1608 | /C8INQU |
| 1609 | /C8INQU ROUTINE WILL PRINT A WAITING |
| 1610 | /AND THE PROGRAM IS EXPECTING A CONTROL CHAR INPUT |
| 1611 | /IF CONTINUE FROM CONTROL CHAR RETURN IS CALL PLUS ONE |
| 1612 | /IF NO CONTROL CHAR ENTERED THEN WAITING IS REPRINTED |
| 1613 | /AND PROGRAM WAITS FOR A CONTROL CHAR AGAIN. |
| 1614 | |
| 1615 | / C8INQU = JMS XC8INQ |
| 1616 | |
| 1617 | /EX. JMS XC8INQ /C8 WILL PRINT A WAITINGAND WAIT FOR INPUT |
| 1618 | / DO ANYTHING /RETURN IS CALL PLUS ONE AC =0 CONTINUE |
| 1619 | |
| 1620 | /CALLS USED ARE -CHKCLA-XC8PNT-XC8TYI-C8GET-XC8CNTR- |
| 1621 | |
| 1622 | |
| 1623 | XC8INQ, 0 |
| 1624 | CLA CLL |
| 1625 | JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT |
| 1626 | SKP /ACTIVE CONSOLE PACKAGE |
| 1627 | JMP I XC8INQ /NOT CONSOLE LEAVE |
| 1628 | JMS XC8PNT |
| 1629 | WATMES /INQUIR WAITTING |
| 1630 | JMS XC8TTYI /GET CHARACTER |
| 1631 | JMS C8GET |
| 1632 | JMS XC8CNTR /CHECK IF CONTROL CHARACTER |
| 1633 | JMP I XC8INQ /EXIT AND CONTINUE |
| 1634 | JMP XC8INQ+1 /REASK |
| 1635 | WATMES, TEXT "WAITING " |
| 1636 | |
| 1637 | |
| 1638 | /********************************************************************* |
| 1639 | |
| 1640 | /C8SWIT |
| 1641 | |
| 1642 | /ROUTINE WILL CHECK IF CONSOL IS ACTIVE IF IT IS ACTIVE DISPLAY |
| 1643 | /SW QUESTION . IN NOT ACTIVE IT WILL NOT PRINT THE SW QUESTION BUT |
| 1644 | /RETURN TO CALL PLUS ONE AC=0. |
| 1645 | /C8SWIT WILL SET UP THE PSEUDO SWITCH |
| 1646 | /REGISTER WITH THE NEW DATA ENTERED |
| 1647 | / |
| 1648 | / C8SWIT = JMS XC8PSW |
| 1649 | |
| 1650 | /EX. JMS XC8PSW /SET UP PSEUDO C8SWIT REGISTER IF |
| 1651 | /ON THE CONSOL PACKAGE. RETURN IS CALL PLUS ONE AC = 0 |
| 1652 | |
| 1653 | /CALLS USED ARE -CHKCLA-XC8PSW-XC8PNT-XC8OCTA-XC8TYPE- |
| 1654 | |
| 1655 | |
| 1656 | XC8PSW, 0 |
| 1657 | JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT |
| 1658 | SKP /ACTIVE CONSOLE |
| 1659 | JMP I XC8PSW /DEACTIVE CONSOLE PACKAGE |
| 1660 | /RETURN WITHOUT ASKING PSEUDO SWITCH |
| 1661 | TAD C8SWST /IS THE SOFT FLAG SET FOR SWITCH? |
| 1662 | SZA CLA /SKIP IF ONE ENTRY AT ATIME OK |
| 1663 | JMP C8BY4 /SECOND ENTRY WITH OUT A EXIT GO TO SW QUESTION |
| 1664 | ISZ C8SWST /FIRST ENTRY SET FLAG |
| 1665 | C8RDPS, JMS XC8PNT /C8PRNT SR= |
| 1666 | MESA |
| 1667 | TAD 20 /GET CONTENTS OF SW |
| 1668 | JMS XC8OCTA /CONVERT IT TO ASCII |
| 1669 | TAD (40 /GET SPACE |
| 1670 | JMS XC8TYPE |
| 1671 | ISZ INMODE /SET FLAG FOR CHAR EXECTED |
| 1672 | JMS XC8ECHO /LOOK FOR INPUT |
| 1673 | JMS TSTCHA /NOT CONTROL TEST IT IS LEGAL |
| 1674 | TAD C8CHAR /STORE NEW CHAR IN SW REG |
| 1675 | DCA 20 |
| 1676 | |
| 1677 | TAD (-3 /GET A MINUS 3 |
| 1678 | DCA TMPCNT /STORE IN TEMP COUNT |
| 1679 | GETCH1, JMS XC8ECHO /GET NEXT CHAR |
| 1680 | JMS TSTCHA /CHECK IF CR + GOOD CHAR |
| 1681 | TAD 20 /GET C8SWIT REGISTER |
| 1682 | RTL CLL /ROTATE IT LEFT 3 PLACES |
| 1683 | RAL |
| 1684 | TAD C8CHAR /GET CHAR + ADD IT TO PREVIOUS CONTENTS |
| 1685 | DCA 20 /SAVE NEW CONTENTS |
| 1686 | ISZ TMPCNT /BUMP COUNT |
| 1687 | JMP GETCH1 /JMP BACK + GET NEXT CHAR |
| 1688 | JMP ENDIT /END 4 CHAR C8TYPED IN |
| 1689 | TSTCHA, 0 |
| 1690 | CIA /CMPL CHAR IN AC |
| 1691 | TAD (215 /TEST IF IT IS A CARRIAGE RETURN |
| 1692 | SNA CLA /SKIP IN NOT CR. |
| 1693 | JMP ENDIT /WAS CARRIAGE RETURN |
| 1694 | TAD C8CHAR /NOT CR. GET CHAR |
| 1695 | TAD (-260 /CHECK IF IT IS IN RANGE |
| 1696 | SPA CLA /IF NOT POSITIVE C8ERR CHAR SMALLER THEN 260 |
| 1697 | JMP ERR1 /C8ERR - CHAR TOO SMALL |
| 1698 | TAD C8CHAR /GET CHAR |
| 1699 | TAD (-270 /GET A -270 + CHECK IF IT IS LARGER THEN 7 |
| 1700 | SMA CLA /SKIP IF LESS THEN 7 |
| 1701 | JMP ERR1 /C8ERR ON CHAR NOT IN RANGE |
| 1702 | TAD C8CHAR /GET CHAR |
| 1703 | AND (7 /MASK FOR RIGHT BYTE |
| 1704 | DCA C8CHAR /STORE IN CHAR |
| 1705 | /GET CHAR IN AC |
| 1706 | JMP I TSTCHA /EXIT |
| 1707 | ERR1, TAD (277 /C8PRNT |
| 1708 | JMS XC8TYPE /? |
| 1709 | JMS XC8CRLF / |
| 1710 | JMP C8RDPS /EXIT + ASK AGAIN |
| 1711 | ENDIT, JMS XC8CRLF /DO A CR LF |
| 1712 | DCA C8SWST /CLEAR THE PSW ENTRY FLAG |
| 1713 | JMP I XC8PSW /EXIT ROUTINE |
| 1714 | C8SWST, 0 |
| 1715 | |
| 1716 | TMPCNT, 0 |
| 1717 | MESA, TEXT "SR= " |
| 1718 | |
| 1719 | |
| 1720 | PAGE |
| 1721 | |
| 1722 | /C8OCTA |
| 1723 | |
| 1724 | /OCTAL TO ASCII CONVERSION |
| 1725 | /THIS ROUTINE WILL TAKE THE OCTAL NUMBER IN THE AC AND CONVERT IT TO ASCII |
| 1726 | /THE RESULT WILL BE PRINTED ON THE CONSOL TERMINAL |
| 1727 | / C8OCTA= JMS XC8OCT |
| 1728 | / |
| 1729 | /EX. JMS XC8OCTA /AC CONTAINS NUMBER TO BE CHANGE |
| 1730 | / RETURN IS TO CALL PLUS ONE AC=0 |
| 1731 | / |
| 1732 | /CALLS USED ARE -XC8TYPE- |
| 1733 | |
| 1734 | |
| 1735 | XC8OCT, 0 |
| 1736 | CLL RTL |
| 1737 | RTL /POSITION THE FIRST CHAR FOR PRINTING |
| 1738 | DCA C8TMP1 /SAVE CORRECT POSITIONED WORD HERE |
| 1739 | TAD (-4 |
| 1740 | DCA C8CKP /STORE COUNTER IN HERE |
| 1741 | C8DO4, TAD C8TMP1 /GET FIRST NUMBER |
| 1742 | AND (0007 /MASK |
| 1743 | TAD (260 /ADD THE PRINT CONSTANT |
| 1744 | JMS XC8TYPE /TYPE THE NUMBER |
| 1745 | TAD C8TMP1 / |
| 1746 | RTL |
| 1747 | RAL /PUT NEXT NUMBER IN POSITION |
| 1748 | DCA C8TMP1 /STORE IT |
| 1749 | ISZ C8CKP /DONE YET WITH FOUR NUMBERS |
| 1750 | JMP C8DO4 /NOT YET DO MORE |
| 1751 | JMP I XC8OCT /DONE WITH FOUR |
| 1752 | C8TMP1, 0 |
| 1753 | C8CKP, 0 |
| 1754 | |
| 1755 | |
| 1756 | /********************************************************************* |
| 1757 | |
| 1758 | /C8CRLF |
| 1759 | /C8TYPE CR AND LF WITH FILLERS FOLLOWING EACH LF AND CR |
| 1760 | \f/ |
| 1761 | / C8CRLF= JMS XC8CRL |
| 1762 | / |
| 1763 | /EX. JMS XC8CRLF /C8PRNT A CR AND LF WITH FILL |
| 1764 | / /RETURN TO CALL PLUS ONE AC =0 |
| 1765 | /CALLS USED ARE -XC8TYPE- |
| 1766 | |
| 1767 | |
| 1768 | XC8CRLF,0 |
| 1769 | CLA CLL |
| 1770 | TAD (215 /GET CODE FOR CR |
| 1771 | JMS XC8TYPE |
| 1772 | TAD FILLER |
| 1773 | CMA |
| 1774 | DCA FILCNT /STORE FILLER IN HERE |
| 1775 | TAD (212 /GET CODE FOR LF |
| 1776 | C8DO2, JMS XC8TYPE |
| 1777 | ISZ FILCNT /CHECK ON FILLER CHAR |
| 1778 | JMP C8DO2 /TYPE A NON PRINTING CHAR |
| 1779 | JMP I XC8CRL /EXIT |
| 1780 | FILLER, 0004 /FILLER SET FOR 4 CHAR |
| 1781 | FILCNT, 0 /COUNTER FOR FILL |
| 1782 | |
| 1783 | |
| 1784 | |
| 1785 | //************************************************************* |
| 1786 | /C8CKPA |
| 1787 | /THIS ROUTINE WILL CHECK IF A CHARACTER WAS ENTERED FROM THE |
| 1788 | /TERMINAL. IFTHE FLAG IS SET AND THE CONSOLE PACKAGE IS |
| 1789 | /ACTIVE A CHECK IS MADE TO DETERMIND IF IT IS A CONTROL CHAR. |
| 1790 | /IF IT WAS A CONTROL CHAR THEN ITS CONTROL FUNCTION IS PERFORMED. |
| 1791 | /IF NOT A CONTROL CHARACTER OR A CONTROL E-D-L-O- IT WILL DO |
| 1792 | /THE CONTROL FUNCTION AND RETURN TO CALL PLUS 2. |
| 1793 | /A NON CONTROL CHARACTER WILL BE PRINTEDAND A "?" IT WILL RETURN TO |
| 1794 | /CALL PLUS 2. |
| 1795 | /IF NO FLAG IS SET OR THE CONSOL IS NOT ACTIVE THE RETURN IS TO |
| 1796 | /CALL PLUS 1. |
| 1797 | |
| 1798 | |
| 1799 | / C8CKPA= JMS XC8CKP |
| 1800 | |
| 1801 | |
| 1802 | /EX. JMS XC8CKPA /CALL TO CHECK IF CONTROL CHAR SET |
| 1803 | / ANYTHING(SKIP) /RETURN IF NOT FLAG OR NOT CONSOLE ACTIVE |
| 1804 | / ANYTHING(JMP EXIT SKIP CHAIN) /RETURN IF NOT CONTROL OR CONTINUE CONTROL |
| 1805 | |
| 1806 | |
| 1807 | /CALLS USED ARE -XC8TTYI-XC8CNTR-C8GET- |
| 1808 | |
| 1809 | |
| 1810 | XC8CKP, 0 |
| 1811 | DCA ACSAVE /SAVE THE AC |
| 1812 | GTF /SAVE THE FLAGS |
| 1813 | DCA FLSAVE /SAVE THE FLAGS |
| 1814 | MQA /PUT MQ IN AC |
| 1815 | DCA MQSAVE /SACE THE MQ |
| 1816 | KSF /CHECK THE KEYBOARD FLAG |
| 1817 | JMP C8BY3 /EXIT TO CALL PLUS 1 |
| 1818 | JMS CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT |
| 1819 | SKP /ACTIVE CONSOLE PACKAGE |
| 1820 | JMP C8BY3 /EXIT TO CALL PLUS 1 |
| 1821 | JMS XC8TTYI /GET THE CHAR |
| 1822 | JMS C8GET /GET THE FLAGS |
| 1823 | JMS XC8CNTR /CHECK IF CONTROL CHAR. |
| 1824 | NOP /RETURN IF A CONTINUE CHAR. |
| 1825 | ISZ XC8CKP /BUMP RETURN FOR CALL PLUS 2 |
| 1826 | C8BY3, JMS C8GET /GET REGISTERS |
| 1827 | JMP I XC8CKP /SAY GOOD BY |
| 1828 | |
| 1829 | //********************************************************************* |
| 1830 | |
| 1831 | /C8ECHO |
| 1832 | /THIS ROUTINE WILL LOOK FOR A CHAR FROM THE KEYBOARD. STORE IT IN LOCATION CHAR |
| 1833 | /CHECK IF IT WAS A CONTROL CHARACTER - SET INMODE - PRINT CHARACTER |
| 1834 | |
| 1835 | / C8ECHO = JMS XC8ECH |
| 1836 | /EX. JMS XC8ECHO /LOOK FOR CONSOL CHAR C8PRNT IT |
| 1837 | /RETURN CALL PLUS ONE AC = CHAR C8TYPED IN |
| 1838 | |
| 1839 | /CALLS USED ARE -XC8TTYI-XC8CNTR-C8GET-XC8ECH-XC8TTYPE |
| 1840 | |
| 1841 | / |
| 1842 | XC8ECH, 0 |
| 1843 | JMS XC8TTYI /WAIT FOR CHAR FROM KEYBOARD |
| 1844 | JMS C8GET /RESTORE THE REGISTERS |
| 1845 | ISZ INMODE /SET INMODE IDENTIFING THIS AS A EXPECTED CHAR |
| 1846 | JMS XC8CNTR /GO CHECK IF IT IS A CONTROL CHAR |
| 1847 | JMP I XC8ECH /WAS A CONTROL CHAR - CONTINUE RUNNING |
| 1848 | JMS XC8TYPE /NOT A CONTROL CHAR C8PRNT IT |
| 1849 | DCA INMODE /CLEAR FLAG THAT CHAR EXPECTED |
| 1850 | TAD C8CHAR /GET CHAR IN AC |
| 1851 | JMP I XC8ECH /EXIT |
| 1852 | C8CHAR, 0 |
| 1853 | INMODE, 0 |
| 1854 | |
| 1855 | /********************************************************************* |
| 1856 | |
| 1857 | /C8TYPE |
| 1858 | /THIS ROUTINE WILL C8PRNT ON THE CONSOLE OR THE LPT WITH DEVICE CODE 66. |
| 1859 | / |
| 1860 | / C8TYPE= JMS XC8TYP |
| 1861 | |
| 1862 | /EX. JMS XC8TYPE /C8PRNT THE CHAR IN THE AC. |
| 1863 | / /RETURN CALL PLUS ONE AC =0000 |
| 1864 | /DO NOT CLEAR THE LINK IN THIS ROUTINE NEEDED BYC8OCT |
| 1865 | |
| 1866 | /CALLS USED ARE -C8HANG-XC8CNTR-XC8PNT-XC8CRLF-XC8INQU- |
| 1867 | |
| 1868 | |
| 1869 | XC8TYP, 0 |
| 1870 | DCA PNTBUF /STORE CHAR |
| 1871 | TAD TTYLPT /CHECK O=TTY 7777=LPT |
| 1872 | SZA CLA |
| 1873 | JMP XDOLPT /DO OUT PUT ON LPT |
| 1874 | TAD PNTBUF |
| 1875 | TLS |
| 1876 | TSF |
| 1877 | JMP .-1 |
| 1878 | TCF |
| 1879 | JMP C8BY5 |
| 1880 | XDOLPT, TAD PNTBUF /GET CHAR |
| 1881 | PSTB PCLF /C8PRNT IT |
| 1882 | JMS C8HANG /CHECK KEYBOARD IF HUNG |
| 1883 | PCLF /CLEAR THE FLAG |
| 1884 | C8BY5, 7600 /CLEAR THE AC |
| 1885 | JMP I XC8TYP /EXIT |
| 1886 | PNTBUF, 0 |
| 1887 | TTYLPT, 0 |
| 1888 | |
| 1889 | |
| 1890 | C8HANG, 0 |
| 1891 | CLA / |
| 1892 | TAD C8BY5 /GET CONSTANT 7600 |
| 1893 | DCA PNTBUF /PNTBUF IS NOW A COUNTER |
| 1894 | PSKF /SKIP ON PRINTER DONE |
| 1895 | SKP /NOT DONE YET |
| 1896 | JMP I C8HANG /SAW FLAG DONE |
| 1897 | ISZ C8CONT /FIRST COUNTER FAST ONE |
| 1898 | JMP .-4 /CHECK IF FLAG SET YET |
| 1899 | ISZ PNTBUF /MADE 4096 COUNTS ON FAST COUNTER |
| 1900 | JMP .-3 /KEEP IT UP FOR 5 SEC |
| 1901 | TAD XC8CNTR /GET THE RETURN ADDRESS IN CONTROL |
| 1902 | DCA C8HANG /SAVE IT IN HANG |
| 1903 | DCA TTYLPT /ALLOW PRINTING ON TTY |
| 1904 | JMS XC8PNT |
| 1905 | MESHANG /LPT ERROR |
| 1906 | JMS XC8CRLF |
| 1907 | JMS XC8INQU /PRINT WAITING |
| 1908 | JMP I C8HANG /CONTINUE TO SAVE ADDRESS |
| 1909 | C8CONT, 0 /COUNTER FOR TIMER |
| 1910 | MESHANG,TEXT "LPT ERROR" |
| 1911 | |
| 1912 | PAGE |
| 1913 | /********************************************************************* |
| 1914 | /******************************************************************* |
| 1915 | |
| 1916 | /THIS ROUTINE WILL CHECK LOCATION 22 THE HARD WARE CONFIG WORD. |
| 1917 | /TO SEE IF THE CONSOLE BIT 3 )400) IS SET IF SET THEN RETURN |
| 1918 | /TO CALL PLUS TWO FO A ACTIVE CONSOLR PACKAGE AC=0 |
| 1919 | /IF NOT SET THEN TO CALL PLUS ONE FOR A DEACTIVE CONSOLE PACKAGE. |
| 1920 | |
| 1921 | |
| 1922 | CHKCLA, 0 |
| 1923 | CLA |
| 1924 | TAD 22 /GET THE COTENTA OF LOCATION 22 |
| 1925 | AND (400 /MASK FOR BIT 3 (400 |
| 1926 | SNA CLA / |
| 1927 | ISZ CHKCLA /ACTIVE CONSOLE PACKAGE RETURN |
| 1928 | /CALL PLUS ONE (1) FOR ACTIVE |
| 1929 | JMP I CHKCLA /DEACTIVE CONSOLE PACKAGE RETURN |
| 1930 | /CALL PLUS TWO (2) |
| 1931 | |
| 1932 | /C8ERR |
| 1933 | /THIS ROUTINE WILL DETERMINE WHAT TO DO WHEN A C8ERR IS ENCOUNTERED |
| 1934 | /WILL CHECK IF CLASSIC SYSTEM, WILL CHECK C8SWIT REGISTERS. |
| 1935 | / C8ERR= JMS XC8ERR |
| 1936 | /EX. JMS XC8ERR /GO TO C8ERR CALL IF NOT CONSOL |
| 1937 | / /RETURN IS CALL PLUS ONE AC =0000 |
| 1938 | |
| 1939 | /CALLS USED ARE -CHKCLA-XC8CRLF-XC8SW-XC8INQU-XC8PNT-XC8OCTA- |
| 1940 | |
| 1941 | |
| 1942 | XC8ERR, 0 |
| 1943 | IOF |
| 1944 | DCA ACSAVE /SAVE AC |
| 1945 | GTF |
| 1946 | DCA FLSAVE /SAVE THE FLAGS |
| 1947 | \f MQA |
| 1948 | DCA MQSAVE /SAVE THE MQ |
| 1949 | CLA CLL CMA /SUBTRACT A 1 FOR TRUE LOCATION |
| 1950 | TAD XC8ERR /GET RETTURN LOCATION |
| 1951 | DCA PCSAVE /SAVE ADD OF C8ERR CALL |
| 1952 | JMS CHKCLA /CHECK LOC.22 BIT 3 CONSOL BIT |
| 1953 | SKP /ACTIVE CONSOLE PACKAGE |
| 1954 | JMP NTCLAS /NOT CLASSIC SYSTEM |
| 1955 | JMS C8GET /GET THE REGISTERS. |
| 1956 | JMS XC8SW /CHECK SWITCH REG FOR BIT THAT INDICATES |
| 1957 | /NO ERROR MESSAGE |
| 1958 | SETUP1, AND (0000 /MASK FOR BIT FOR NO ERROR PRINTING |
| 1959 | /IF THIS ERROR MESSAGE IS TO ALWAYS |
| 1960 | /BE PRINTED LEAVE AND VALUE AT 0000 |
| 1961 | SZA CLA /SKIP IF BIT IS 0 PRINT ERROR MESSAGE |
| 1962 | JMP C8DO10 /DO NOT PRINT |
| 1963 | JMS XC8CRLF |
| 1964 | JMS XC8PNT |
| 1965 | ERRMES /PRINT THE ERROR MESSAGE |
| 1966 | JMS XC8PNT |
| 1967 | MESPC /PRINT THE PC STSTEMENT |
| 1968 | TAD PCSAVE |
| 1969 | JMS XC8OCTA /CONVERT 4 DIGIT PC TO ASCII |
| 1970 | JMS XC8PNT |
| 1971 | MESAC /PRINT THE AC MESS |
| 1972 | TAD ACSAVE |
| 1973 | JMS XC8OCTA |
| 1974 | JMS XC8PNT |
| 1975 | MESMQ /PRINT MQ |
| 1976 | TAD MQSAVE |
| 1977 | JMS XC8OCTA |
| 1978 | JMS XC8PNT |
| 1979 | MESFL /PRINT FL |
| 1980 | TAD FLSAVE |
| 1981 | JMS XC8OCTA |
| 1982 | JMS XC8CRLF |
| 1983 | C8DO10, JMS C8GET /GET THE REGISTERS. |
| 1984 | JMS XC8SW /CHECK SWITCH REGISTER |
| 1985 | SKP CLA /SKIP IF BIT 0 SET |
| 1986 | JMP C8BY2 /LEAVE |
| 1987 | JMS XC8INQ /GO TO THE INQUIRE ROUTINE |
| 1988 | JMP C8BY2 /LEAVE |
| 1989 | NTCLAS, JMS C8GET /GET THE REGISTERS. |
| 1990 | JMS XC8SW /CHECK PSEUDO SWITCH REGISTER |
| 1991 | /CHECK THE C8SWIT REGISTER |
| 1992 | SKP CLA /SKIP IF HALT |
| 1993 | JMP I XC8ERR /NO HALT CONTINUE |
| 1994 | TAD (7402 /CODE FOR HLT |
| 1995 | DCA I PCSAVE /PUT IT IN CALL LOC. |
| 1996 | JMS C8GET |
| 1997 | JMP I PCSAVE /EXIT TO CALL AND HALT |
| 1998 | C8BY2, JMS C8GET /GET THE REGISTERS |
| 1999 | JMP I XC8ERR |
| 2000 | ERRMES, TEXT "DHRKDD FAILED " |
| 2001 | MESPC, TEXT " PC:" |
| 2002 | MESAC, TEXT " AC:" |
| 2003 | MESMQ, TEXT " MQ:" |
| 2004 | MESFL, TEXT " FL:" |
| 2005 | PCSAVE, 7777 |
| 2006 | ACSAVE, 7777 |
| 2007 | MQSAVE, 7777 |
| 2008 | FLSAVE, 7777 |
| 2009 | |
| 2010 | $$$ |
| 2011 | /#8 |
| 2012 | /#8 |