/FAMILY OF 8 3040 DIAGNOSTIC 09/12/73 /SYSTEM INDUSTRIES, INC. /535 DEL RY AVENUE /SUNNYVALE, CALIFORNIA 94086 /WVDMARK NEW SOURCE AND COMMENTS 2011-10-01 /STARTING ADDRESS: 200 /CORE: 0-5777 *0 INTENT, 0 JMS I .+1 ILTRP /EQUALS TABLE SKON=6000 IOT=6000 ION=6001 IOF=6002 SRQ=6003 CAF=6007 DSKDAT=5400 BUF1=5500 BUF2=6400 /LAI51=FRM51 DSDD=6001 /SKIP DISK DONE DLCR=6002 /LOAD CONTROL DRCR=6003 /READ CONTROL DCSR=6004 /CLEAR STATUS DRSR=6005 /READ STATUS DLSS=6006 /LOAD SEEK AND STRT OVERLAP SEEK DRSS=6007 /READ SEEK STATUS DSDE=6011 /SKIP ERROR DLSR=6012 /LOAD SECTOR ADDRESS DSRR=6013 /READ SECTOR ADDRESS DLTR=6014 /LOAD TRACK ADDRESS AND READ DLTW=6015 /LOAD TRACK ADDRESS AND WRITE DRTR=6016 /READ TRACK ADDRESS DWCA=6017 /INITIATE WORD COUNT AND CURRENT ADDRESS *20 /PAGE ZERO-DATA TRANSFER LOCATIONS DATA1, 0 /R-W CONTROL 0 /WAIT TIME 0 /ERROR VALUE 0 /0=DO NOT CK. SAR 0 /0=CK. DATA EXOLS1, 0 DLSS /PAGE ZERO-CONTROL SETTINGS WCCA, 0 BUF2 SECTOR, 0 0 /SECTOR BACKUP TRACK, 0 0 /TRACK BACKUP BLOCKS, 0 / TYPDSK, 0 /0=MOVING, 1=FIXED DISK - UNIT AREA -- FROM HERE MAXTSC, 0 /MAX SECTORS HO 0 /LO MAXTTR, 0 MAXRSC, 0 /MAX SECTORS HO 0 /LO MAXRTR, 0 /MAX TRACK FROM PARAMETER ROUTINE FULL, 0 /FULL DISK = 0 UNIT, 0 DAISY, 0 /2000 IF FIXED DAIVAL, 0 /2000 IF REMOVABLE - UNIT AREA -- TO HERE SINSEC, 400 MULSEC, 600 NUMSEC, 4 MAXSEC, 0 0 MAXTRK, 0 ADDRES, 0 ERRFLG, 0 ERRFL1, 0 ERRNUM, 0 PORTS, 0 PASS1, 0 LPFORM, 0 /FORMAT SWITCH /PAGE ZERO-IOT ROUTINE LOCATIONS CLSTAT, EXCLST /CLEAR STATUS REGISTER SKPDON, EXSKDN /SKIP DONE WITH TIMEOUT RDSTAT, EXRDST /READ STATUS REGISTER RDTRAD, EXRDTR /READ TRACK ADDRESS RDSEC, EXRDSC LDCON, EXLCON LDTARD, EXLTAR LDTAWR, EXLTAW LDSEC, EXLSEC RDSSR, EXRDSS IOLS, EXOLS IWCCA, EXIWC /PAGE ZERO-SUBROUTINE CALLS TYPERR, EXTERR HLTLP, EXHLTP /HALT? FIRST RETURN REPEAT, SECOND CONTINUE TYPDAT, EXTDAT TYPADD, EXTADD SECADD, EXSCAD WRITE, EXWR READ, EXRD MOVE12, EXM12 CLR2, EXCL2 TYPDIS, EXTDIS TYPENA, EXTENA TYPTEX, EXTEX TYPSTB, EXTSTB TYPSTI, EXTSTI TYPSRI, EXTSRI TYPSRB, EXTSRB TYPCNI, EXTCNI CRLF, EXCRLF TYPQQ, EXTQQ TYPWD, EXTWD TYPCHK, EXTCHK TYPSB, EXTSB TYPIS, EXTIS TYPTAB, EXTAB TYPCNB, EXTCNB TYPSCB, EXTSCB TYPUN, EXTUN TYPON, EXTON CLRMOV, EXCLMV CLR1, EXCL1 /FILL LAST WCCA-2 WORDS OF BUF1 WITH 0'S FOLLOWED BY ONE 6666 PEXEC2, EXEC2 /MOVE ROUTINE TYPLAS, EXLAS /READ SWITCH INTO SWR AND PRINT EXIWC1, DWCA WCCA LAI51, FRM51, 0 0 0 3577 SWR, 0 /SWITCH VALUE M1, 7777 NL0002=CLA CLL CML RTL NL0003=JMS I . ; LDTHRE NL0004=JMS I . ; LDFOUR TEMP, 0 PWAIT, WAIT CNT, 7760 TEMP1, 0 *200 /EXECUTIVE ROUTINE FOR FAMILY OF 8 COMPUTERS EXEC, JMS I EXEC1 /CALLS PARAM INPUT ROUTINE JMS I EXEC1+1 /CALLS CERTST TEST 1. REGISTER JMS I EXEC1+2 /CALLS INTST TEST 2. INTERRUPT JMS I EXEC1+3 /CALLS WCTST TEST 3. WCCA CLA TAD EXEC1+4 /GETS DSKDAT-1 DCA EXEC21 TAD PORTS DCA EXEC3+1 /SAVE IN LIST JMS EXEC2 /MOVE EXEC21, 0 /FROM TYPDSK-1 /TO 13 /COUNT JMS I TYPUN JMS I CRLF JMS EXEC2 MAXRSC-1 MAXSEC-1 3 JMS I EXEC3 /LAITST TEST 4. LOGICAL ADDRESS INTERLOCK AND OVERLAP SEEK JMS EXEC2 MAXTSC-1 MAXSEC-1 3 TAD TYPDSK /FIXED DISK? SZA CLA JMP .+5 /YES, SKIP TAD PASS1 TAD LPFORM /FORMAT? SZA CLA JMS I EXEC3+2 /GO THERE - FRMTST TESTS 5. JMS I EXEC3+3 /WRB11 TESTS 6. 115 /ERRNO 0 0 0 4 CLA TAD PASS1 TAD LPFORM SZA CLA JMS I EXEC4 /SABTST JMS I EXEC4+1 /RANTST JMS I EXEC4+2 /BDATST JMS I EXEC4+3 /MDATST CLA TAD DAISY SNA CLA JMP EXEC5+1 TAD DAIVAL SZA CLA JMP EXEC5 STL RTR DCA DAIVAL JMP EXEC21+3 EXEC5, DCA DAIVAL TAD EXEC21 TAD EXEC21+2 DCA EXEC21 /NEXT UNIT ISZ EXEC3+1 JMP EXEC21-1 /MORE UNITS TAD PASS1 /FIRST PASS? SNA CLA JMP EXEC+1 DCA PASS1 TAD LPFORM SNA CLA JMS I TYPDIS /TURN SWITCH OFF! JMP EXEC+1 EXEC2, 0 /MOVE INFO FOR UNIT TAD I EXEC2 DCA 10 ISZ EXEC2 TAD I EXEC2 DCA 11 ISZ EXEC2 TAD I EXEC2 CIA DCA EXEC22 ISZ EXEC2 TAD I 10 DCA I 11 ISZ EXEC22 JMP .-3 JMP I EXEC2 EXEC22, 0 EXEC1, PARAM CERTST INTST WCTST DSKDAT-1 EXEC3, LAITST /TESTS 4. FORMAT 0 /PORTS FRMTST /TESTS 5. FORMAT WRB11 /TESTS 6. TWO WORD WRITE/READ EXEC4, SABTST /TESTS 7. SEEK ALL BLOCKS RANTST /TESTS 8. RANDOM SEEK BDATST /TESTS 9. SINGLE BLOCK WRITE/READ MDATST /TESTS 10. MULTIPLE SECTOR WRITE/READ EXLTAR, 0 /LOAD TAR AND INITIATE A READ CLA /AC=0=READ JMS EXLTA JMP I EXLTAR EXLTA, 0 /LOAD TAR AND INITIATE READ OR WRITE TAD ADDRES /AC=0=READ, AC=1=WRITE TAD EXLTA1+3/DLTR, DLTW = DLTR+1 DCA EXLTA1 TAD DAIVAL TAD TRACK EXLTA1, 0 CLA JMP I EXLTA DLTR *400 /CONTROL-STATUS REGISTER TEST-SECTOR REGISTER-SKP DONE CERTST, 0 CLA CLL IAC JMS I CER1 /REGTRT DLCR DRCR 7177 /MASK BITS 3,4 UNUSED EXTCNB /TYPOUT ERROR ROUTINE 1 /ERRNO 1 JMP .-6 JMS I CER1+1 /REGRES DRCR 0143 /SHOULD RESET INTENA,FMTENA,BUSY,DONE EXTCNB 2 /ERRNO 2 JMP .-6 RAL SNL JMP CERTST+2 RAL JMS CER4 CER2, JMS I SKPDON JMP CER3 /DSDD SKIPPED CLA TAD CER1+2 /ERRNO 212 JMS I TYPERR JMS I TYPSTI CER3, JMS I HLTLP JMP CER2 JMS CER41 NL0002 JMS CER4 JMS CER41 CLA CLL IAC CER5, JMS I CER1 DLSR DSRR 17 EXTSCB 213 /ERRNO 213 JMP .-6 RAL AND .-5 SZA JMP CER5 JMP I CERTST CER4, 0 JMS I CER1 DLCR DRSR 7777 EXTSTB 210 /ERRNO 210 JMP CER4+1 JMP I CER4 CER41, 0 JMS I CLSTAT JMS I RDSTAT SNA CLA JMP .+5 CMA TAD CER1+2 /ERRNO 211 JMS I TYPERR JMS I TYPSTI JMS I HLTLP JMP CER41+1 JMP I CER41 CER1, REGTRT REGRES 212 /REGISTER RESET TEST - SAVES AC - WD1=RDIOT, /WD2= ERR MASK, WD3=TYPOUT, WDA=ERRNO REGRES, 0 DCA REGR1 TAD I REGRES /GET RDIOT ISZ REGRES TAD ADDRES DCA REGR2 SKON JMP .+3 CAF REGR2, 0 /EXECUTE HERE ION AND I REGRES ISZ REGRES SNA CLA /READ = VALUE? JMP REGR3 TAD I REGRES DCA REGR2 /TYPOUT ERROR ROUTINE ISZ REGRES TAD I REGRES /ERROR NUMBER JMS I TYPERR CLA JMS I REGR2 JMP .+2 /ERROR RETURN REGR3, ISZ REGRES ISZ REGRES JMS I HLTLP JMP .+2 ISZ REGRES CLA TAD REGR1 JMP I REGRES REGR1, 0 /WORD COUNT AND CURRENT ADDRESS TEST WCTST, 0 CLA JMS WCT2 CLL CMA RAL JMS WCT2 CLA TAD WCT1 JMS WCT2 RAR CLL JMS WCT2 JMP I WCTST WCT2, 0 JMS I WCT1+1 DWCA DRTR 3777 EXTAB 4 /ERRNO 4 JMP .-6 JMP I WCT2 WCT1, 5252 REGTRT *600 /FORMAT ROUTINE, WD1=SECTOR STATUS WORD, WD2=STARTING SECTOR #, WD3=BASE ERRO FRM15, 0 CLA TAD FRM152 DCA FRM151 /INIT COUNT WITH 23 TAD FRM152+2 DCA 10 /BUF2-1 TAD FRM151 CIA DCA FRM151+1 /COUNT 23 DCA I 10 /OF ZERO'S ISZ FRM151+1 JMP .-2 STL RAR /AND ONE 8000 DCA I 10 TAD DAIVAL /2000 IF REMOVABLE TAD I FRM15 /0 OR 4000 FOR WRITE-LOCK ISZ FRM15 DCA FRM152+1 TAD I FRM15 /STARTING SECTOR ISZ FRM15 TAD FRM152+1 /+ TEMP DCA I 10 TAD 10 DCA FRM151+1 /START OF DATA NL0002 TAD FRM151 DCA WCCA /25 DCA SECTOR DCA TRACK DCA BLOCKS TAD WRITE DCA DATA1 /SET TO WRITE TAD FRM152+3 DCA DATA1+1 /WAIT TIME 400 TAD I FRM15 DCA DATA1+2 /BASE ERROR ISZ FRM15 CMA DCA DATA1+3 CMA DCA DATA1+4 CLL TAD MAXSEC+1 CIA DCA FRM151 /LO ORDER TAD MAXSEC CMA SZL IAC DCA FRM151+2 /HI ORDER TAD FRM152+4 /FORMAT ENABLE JMS I LDCON FRM153, JMS I FRM152+5 /RDWR JMP .-1 /ERROR ISZ BLOCKS JMS I SECADD /ADD BLOCKS TO SECTOR CLA DCA BLOCKS TAD TRACK TAD FRM152+1 /2000 AND 4000 DCA I FRM151+1 /IN TRACK LOCATION ISZ FRM151 JMP FRM153 ISZ FRM151+2 /DONE HI ORDER? JMP FRM153 JMP I FRM15 /DONE FRM151, 0 0 0 FRM152, 23 0 BUF2-1 400 40 /FORMAT ENABLE RDWR /MULTIPLE BLOCK WRITE, MULTIPLE AND SINGLE BLOCK READS MDATST, 0 CLA TAD MULSEC /600 JMS I MDAT1 /DSKRW EXWR 400 154 /ERRNO 600 2 /NO. BLOCKS 12 /START 1 /INTERLACE 7772 TAD MULSEC JMS I MDAT1 EXRD 400 161 /ERRNO 600 2 16 1 7770 TAD SINSEC /400 JMS I MDAT1 EXRD 400 166 /ERRNO 600 1 16 2 7760 TAD SINSEC CLL RAR DCA MDAT2 TAD SINSEC JMS I MDAT1 EXRD 400 166 MDAT2, 0 1 17 2 7760 JMP I MDATST MDAT1, DSKRW *1000 /ROUTINE TO READ/WRITE ENTIRE DISK-DATA PATTERN. /CALLING SEQUENCE, AC=WDCT, WD1=RD/WR CONTROL, WD2=WAIT TIME, /WD3=BASE ERROR, WD4=PATTERN LEN, WD5=NO. BLKS, WD6=START, /WD7=INTERLACE DSKRW, 0 DCA WCCA /400, 600 CMA TAD DSKRW DCA 10 TAD I 10 DCA DATA1 /RD/WR TAD I 10 DCA DATA1+1 /WAIT TIME TAD I 10 DCA DATA1+2 /ERROR VALUE CMA DCA DATA1+3 /CHECK SAR DCA DATA1+4 /CHECK DATA TAD I 10 JMS I DSK1 /PATGEN TAD I 10 DCA BLOCKS /NO. BLOCKS TAD I 10 DCA DSK2+2 /START TAD I 10 CIA DCA DSK2+1 /MULTIPLIER TAD I 10 DCA DSK2 /-INTERLACE TAD 10 IAC DCA DSKRW /RETURN TAD SINSEC TAD DSK1+1 /BUF1-1 DCA DSK1+4 /BUF1-1+400 TAD DSK1+4 DCA DSK1+5 ISZ DSK1+5 JMS I LDCON DSK5, CMA DCA I DSK1+1 TAD DSK2+2 CMA DCA I DSK1+2 DCA TRACK TAD DSK2+2 DCA SECTOR CMA DCA I DSK1+4 IAC TAD DSK2+2 CMA DCA I DSK1+5 DSK3, JMS I CLRMOV /EXCLMV SEE BELOW JMS I DSK1+3 /RDWR JMP DSK3 TAD DSK2 DCA DSK2+3 DSK4, JMS I SECADD TAD BLOCKS CIA TAD I DSK1+2 DCA I DSK1+2 SNL CMA TAD I DSK1+1 DCA I DSK1+1 ISZ DSK2+3 JMP DSK4 CMA CLL TAD I DSK1+2 DCA I DSK1+5 SNL CMA TAD I DSK1+1 DCA I DSK1+4 TAD TRACK CIA TAD MAXTRK SMA CLA JMP DSK3 TAD DSK2+1 DCA DSK2+4 TAD BLOCKS ISZ DSK2+4 /BLOCKS * MULTIPLIER JMP .-2 CIA TAD DSK2+2 DCA DSK2+2 /NEW START TAD DSK2+2 SMA CLA JMP DSK5 JMP I DSKRW DSK1, PATGEN BUF1 BUF1+1 RDWR 0 /SECOND HALF OF BUFFER LIKE BUF1 0 /LIKE BUF1+1 DSK2, 0 /-INTERLACE 0 /MULTIPLIER 0 /START 0 0 /TEMP EXCLMV, 0 /ON WRITE CALL MOVE12, ON READ CALL CLR2 CLA TAD DATA1 CIA TAD WRITE SZA CLA JMP .+3 JMS I MOVE12 /WRITE: EXM12 MOVE BUF1 TO BUF2, ONE 6666 JMP .+2 JMS I CLR2 /READ: EXCL2 CLEAR BUF2, ALL 3333, ONE 6666 JMP I EXCLMV *1200 /READ-WRITE ROUTINE, PERFORMS OPERATION AND CHECKS /FOR TIME-OUT, HARDWARE ERROR IN STATUS REGISTER, /TAR AND SCR VALUE, COMPARES DATA AND END OF BUFFER. /EXITS+1 IF NO ERROR IS DETECTED. RDWR, 0 JMS I CLSTAT /EXCLST CLEAR STR JMS I DATA1 /INITIATE DATA TRANSFER EXRD/EXWR CLA TAD DATA1+1 /WAIT TIME CIA DCA RDWR1 JMS I SKPDON /SKIP? JMP RDWR2 /OK ISZ RDWR1 JMP .-3 /WAIT CLA /TIME-OUT ERROR JMS RDWR3 /TYPE ERROR JMS I HLTLP JMP I RDWR ISZ RDWR JMP I RDWR RDWR2, JMS I RDSTAT SMA CLA JMP RDWR4 CLA IAC /STR ERROR JMS RDWR3 /TYPE ERROR JMP .+4 RDWR4, TAD DATA1+3 SZA CLA /CHECK SAR? JMS RDWR5 /YES TAD DATA1+4 SZA CLA /CHECK DATA JMP RDWR2-4 /NO, THAT WAS IT TAD WCCA CIA DCA RDWR1 /COUNT TAD RDWR1+1 /BUF1 DCA 10 TAD RDWR1+2 /BUF2 DCA 11 TAD I 10 CIA TAD I 11 SZA CLA JMP RDWR6 /DATA ERROR ISZ RDWR1 JMP .-6 RDWR7, TAD I 11 TAD RDWR1+3 /-6666 SNA CLA JMP RDWR2-4 /OK, END NL0004 /DATA OVERFLOW ERROR +4 JMS RDWR31 JMP RDWR2-4 RDWR6, NL0003 /DATA ERROR +3 JMS RDWR31 TAD RDWR11 DCA RDWR11+1/8 MORE ERRORS JMS I TYPDAT RDWR8, ISZ RDWR1 JMP .+2 JMP RDWR7 /FLUSHED BUFFER TAD I 10 CIA TAD I 11 SNA CLA JMP RDWR8 ISZ RDWR11+1 JMP RDWR8-1 /TYPE 8 MORE ERRORS LAS AND RDWR11+2 SZA CLA JMP RDWR8-3 TAD WCCA TAD RDWR1+2 DCA 11 JMP RDWR7 RDWR1, 0 BUF1-1 BUF2-1 1112 RDWR11, 7770 0 10 RDWR3, 0 /ERROR TYPE OUT DCA TEMP TAD DATA1+3 SZA CLA JMP .+6 NL0002 CMA TAD TEMP SMA CLA CMA TAD TEMP TAD DATA1+2 JMS I TYPERR JMS I TYPADD JMP I RDWR3 RDWR31, 0 JMS I SECADD JMS RDWR3 JMS I RDWR32 JMP I RDWR31 RDWR5, 0 /CHECK TAR AND SCR JMS I SECADD JMS I RDTRAD CIA TAD TRACK TAD DAIVAL SZA CLA JMP RDWR51 /TAR ERROR IAC AND NUMSEC STL RTL CLL CML IAC RTL IAC /17 DCA RDWR32+1 JMS I RDSEC AND RDWR32+1 CIA TAD SECTOR SZA CLA JMP RDWR51 /SCR ERROR JMS I RDWR32 JMP I RDWR5 RDWR51, STL RTL JMS RDWR3 JMP RDWR51-2 RDWR32, RDWX32 0 *1400 /PATTERN GENERATION - AC=LENGTH PATGEN, 0 CIA DCA PATG1 TAD PATG1+1 DCA PATG1+2 /-600 TAD PATG1+3 /BUF1-1 DCA 11 JMS PATG3 JMP .+7 JMS PATG3 JMP .+5 JMS PATG3 JMP .+3 JMP I PATGEN DCA I 11 ISZ PATG1+2 JMP .-2 JMP I PATGEN PATG3, 0 TAD PATG2 /5252 DCA PATG5 TAD PATG6 /ROUTINE PATG42 NOP JMS PATG41 JMP I PATG3 DCA PATG5 /0000 TAD PATG6 /ROUTINE PATG42 NOP JMS PATG41 JMP I PATG3 TAD PATG2+1 DCA PATG5 /7776 TAD PATG6+1 /ROUTINE PATG43 ROTATE JMS PATG41 JMP I PATG3 TAD PATG2+2 DCA PATG5 /7070 TAD PATG6+2 /ROUTINE PATG44 COMPLEMENT JMS PATG41 JMP I PATG3 TAD PATG2+3 DCA PATG5 /2525 TAD PATG6 /ROUTINE PATG42 NOP JMS PATG41 JMP I PATG3 IAC DCA PATG5 /0001 TAD PATG6+1 /ROUTINE PATG43 ROTATE JMS PATG41 JMP I PATG3 CMA DCA PATG5 /7777 TAD PATG6 /ROUTINE PATG42 NOP JMS PATG41 JMP I PATG3 DCA PATG5 /0000 TAD PATG6+2 /ROUTINE PATG44 COMPLEMENT JMS PATG41 JMP I PATG3 ISZ PATG3 JMP I PATG3 PATG41, 0 DCA PATG5+3 /ROUTINE TAD PATG5+1 DCA PATG5+2 /-20 TAD PATG5 DCA I 11 JMS I PATG5+3 ISZ PATG1 JMP .+2 JMP I PATG41 /REQUEST LENGTH END ISZ PATG1+2 /COUNT NOP ISZ PATG5+2 JMP PATG41+4 ISZ PATG41 JMP I PATG41 /SECOND EXIT DONE 20 PATG42, 0 /NOP JMP I PATG42 PATG43, 0 /ROTATE LEFT TAD PATG5 CLL RAL SZL IAC DCA PATG5 JMP I PATG43 PATG44, 0 /COMPLEMENT TAD PATG5 CMA DCA PATG5 JMP I PATG44 PATG1, 0 /LENGTH 7200 0 /FULL BUF -600 BUF1-1 PATG2, 5252 7776 7070 2525 PATG5, 0 /PATTERN 7760 0 0 PATG6, PATG42 PATG43 PATG44 EXM12, 0 /MOVE WCCA WORDS FROM BUF1 TO BUF2 CLA /FOLLOWED BY ONE 6666 TAD WCCA DCA .+4 JMS I PEXEC2 BUF1-1 BUF2-1 0 TAD EXM3 DCA I 11 JMP I EXM12 EXM3, 6666 *1600 /CALLING SEQUENCE, WD1=ERROR NO., WD2,3 = START DATA VALUE /WD4,5= MODIFY VALUE WRB11, 0 CLA TAD I WRB11 DCA DATA1+2 /ERRNO DCA DATA1+3 /PREPARE DATA1 VALUES DCA DATA1+4 TAD WRB12 DCA DATA1+1 TAD WRITE DCA DATA1 IAC DCA BLOCKS NL0002 DCA WCCA JMS I LDCON ISZ WRB11 TAD I WRB11 DCA WRB12+1 /START DATA ISZ WRB11 TAD I WRB11 DCA WRB12+2 /START DATA ISZ WRB11 TAD I WRB11 DCA WRB12+3 ISZ WRB11 TAD I WRB11 /INTERLEAVE ISZ WRB11 SPA JMP .+4 DCA SAVBLK /SET FIRST BLOCK IAC JMP .+4 CIA DCA SAVBLK CMA DCA WRB12+4 JMS WRB13 TAD SINSEC DCA WCCA JMS I CLR1 /FILL LAST WCCA-2 WORDS OF BUF1 WITH 0'S FOLLOWED BY ONE 6666 TAD READ DCA DATA1 NL0004 TAD DATA1+2 /NEXT SUBTEST READ DCA DATA1+2 JMS WRB13 JMP I WRB11 WRB12, 400 0 /START DATA 0 /" 0 /INTERLEAVE 0 /" 1 OR -1 WRB13, 0 TAD SAVBLK DCA SAVSEC CMA TAD SAVSEC SPA JMP I WRB13 DCA SAVSEC TAD SAVSEC DCA SECTOR JMS WRB18 TAD SECTOR JMS WRB17 JMS WRB15 JMP WRB13+3 WRB15, 0 CLA CLL DCA TRACK TAD MAXSEC+1 CIA DCA WRB14+3 TAD MAXSEC CMA SZL IAC DCA WRB14+2 WRB16, JMS I CLRMOV JMS I WRB14+4 /RDWR JMP WRB16 TAD SAVBLK CIA DCA WRB14+5 JMS I SECADD ISZ WRB14+5 JMP .-2 TAD SAVBLK JMS WRB17 TAD WRB14+3 TAD SAVBLK DCA WRB14+3 TAD WRB14+3 SZA CLA JMP WRB16 ISZ WRB14+2 JMP WRB16 JMP I WRB15 WRB18, 0 TAD WRB12+1 DCA I WRB14 TAD WRB12+2 DCA I WRB14+1 JMP I WRB18 WRB17, 0 CIA SNA JMP I WRB17 DCA WRB14+5 CLL TAD WRB12+4 TAD I WRB14+1 DCA I WRB14+1 RAL TAD WRB12+3 TAD I WRB14 DCA I WRB14 ISZ WRB14+5 JMP WRB17+5 JMP I WRB17 WRB14, BUF1 BUF1+1 0 0 RDWR 0 SAVSEC, 0 SAVBLK, 0 *2000 /SEEK ALL BLOCKS TEST - USES SEEK/READ SABTST, 0 CLA DCA SAB1 DCA SAB1+1 TAD SAB1+6 JMS SAB2 SAB5, JMS SAB3 SAB1 JMS SAB3 SAB1+2 CMA CLL CLA TAD SAB1+3 DCA SAB1+3 SNL CMA TAD SAB1+2 DCA SAB1+2 ISZ SAB1+1 SKP ISZ SAB1 JMS SAB4 JMP SAB5 JMP I SABTST SAB1, 0 0 0 0 0 0 125 SAB2, 0 DCA DATA1+2 CMA CLL TAD MAXSEC+1 DCA SAB1+3 SNL CMA TAD MAXSEC DCA SAB1+2 TAD READ DCA DATA1 TAD SAB21 DCA DATA1+1 DCA DATA1+3 DCA DATA1+4 TAD SINSEC DCA WCCA JMS I CLR1 IAC DCA BLOCKS JMS I LDCON JMP I SAB2 SAB21, 400 SAB3, 0 TAD I SAB3 DCA SAB31 ISZ SAB3 TAD I SAB31 DCA I SAB31+1 TAD NUMSEC TAD SAB31+4 DCA SAB31+3 TAD I SAB31 CLL RAL ISZ SAB31+3 JMP .-2 DCA TRACK ISZ SAB31 TAD I SAB31 DCA I SAB31+2 TAD NUMSEC CIA DCA SAB31+3 STL RAL ISZ SAB31+3 JMP .-2 AND I SAB31 DCA SECTOR TAD NUMSEC CIA DCA SAB31+3 TAD I SAB31 CLL RAR ISZ SAB31+3 JMP .-2 TAD TRACK DCA TRACK JMS I CLR2 JMS I SAB31+5 JMP .-2 JMP I SAB3 SAB31, 0 BUF1 BUF1+1 0 7764 RDWR SAB4, 0 CLA CLL TAD SAB1+3 CIA TAD SAB1+1 DCA SAB1+5 TAD SAB1+2 CMA SZL IAC TAD SAB1 SMA ISZ SAB4 DCA SAB1+4 JMP I SAB4 RANSIZ, 0 JMS SAB4 JMP I RANSIZ TAD SAB1+4 DCA SAB1 TAD SAB1+5 DCA SAB1+1 JMP RANSIZ+1 *2200 /SINGLE BLOCK WRITE, SINGLE AND MULTIPLE BLOCK READS BDATST, 0 CLA TAD SINSEC JMS I BDAT1 EXWR 400 135 600 1 5 1 7772 TAD SINSEC JMS I BDAT1 EXRD 400 142 600 1 7 1 7770 TAD MULSEC JMS I BDAT1 EXRD 400 147 600 2 16 1 7770 JMP I BDATST BDAT1, DSKRW /RANDOM SEEK TEST - USES SEEK/READ RANTST, 0 CLA TAD RANT1 DCA RANT1+1 TAD RANT1+2 JMS I RANT1+3 RANT3, JMS RANUMB TAD RANUM1 DCA I RANT2 TAD RANUM2 DCA I RANT2+1 JMS I RANT2+2 JMS I RANT2+3 SAB1 ISZ RANT1+1 JMP RANT3 JMP I RANTST RANT1, 7000 0 131 SAB2 RANT2, SAB1 SAB1+1 RANSIZ SAB3 RANUMB, 0 CLA TAD RANUM1+1 AND RANUM2 CLL RTR RTR DCA RANUM1+3 TAD RANUM1+1 RTR RAR AND RANUM2+1 DCA RANUM1+2 JMS RANUM3 JMS RANUM4 JMS RANUM4 JMS RANUM3 TAD RANUM2+2 DCA RANUM1 TAD RANUM2+3 DCA RANUM1+1 JMS RANUM3 TAD RANUM1+2 DCA RANUM1 TAD RANUM1+3 DCA RANUM1+1 JMP I RANUMB RANUM1, 5 4321 0 0 RANUM2, 7 17 K3, 3 3031 RANUM3, 0 CLA CLL TAD RANUM1+1 TAD RANUM1+3 DCA RANUM1+3 RAL TAD RANUM1 TAD RANUM1+2 AND RANUM2+1 DCA RANUM1+2 JMP I RANUM3 RANUM4, 0 TAD RANUM1+3 CLL RAL DCA RANUM1+3 TAD RANUM1+2 RAL AND RANUM2+1 DCA RANUM1+2 JMP I RANUM4 EXLTAW, 0 /LOAD TAR AND INITIATE WRITE CLA IAC JMS I .+2 JMP I EXLTAW EXLTA LDTHRE, 0 CLA CLL TAD K3 JMP I LDTHRE LDFOUR, 0 CLA CLL IAC TAD K3 JMP I LDFOUR *2400 /FORMAT TEST SUBROUTINE FRMTST, 0 JMS I FRM2 /TEST 5.1 FRM15 0 0 53 /ERRNO 53 JMS I FRM2+1 /TEST 5.2,5.3 WRB11 75 /ERRNO 75 0 0 0 4 CLA OSR AND FRM2+2 /40 SZA CLA JMP FRM3 JMS I FRM2 /TEST 5.4 FRM15 0 1777 173 /ERRNO CLA DCA TRACK JMS I FRM2+3 /TEST 5.5 FRM5 0 EXLTAR 4000 4401 7777 176 /ERRNO JMP .-7 JMS I FRM2+3 /TEST 5.6 FRM5 0 EXLTAW 4000 4401 7777 200 /ERRNO JMP .-7 JMS I FRM2 /TEST 5.7 FRM15 4000 0 56 /ERRNO CLA TAD MAXSEC DCA FRM4 TAD MAXSEC+1 DCA FRM4+1 JMS I FRM2+1 /TEST 5.8,5.9 WRB11 105 /ERRNO FRM4, 0 0 7777 7774 CLA OSR AND FRM2+4 SNA CLA JMP FRM7 JMS I TYPDIS CLA DCA TRACK JMS I FRM2+3 /TEST 5.10 FRM5 40 EXLTAW 400 5001 7777 202 /ERRNO JMP .-7 JMS I FRM2+3 /TEST 5.11 FRM5 0 EXLTAW 400 4041 7777 204 /ERRNO JMP .-7 JMS I TYPENA FRM7, JMS I FRM2 /TEST 5.12 FRM15 0 0 64 /ERRNO JMP I FRMTST FRM3, JMS I CRLF JMS I TYPTEX TEXT /END FORMAT OPERATION/ JMS I CRLF HLT JMP .-1 FRM2, FRM15 WRB11 40 FRM5 20 /WVDMARK PATCH... /INTRET, JMS CLEAR / ION / JMP I 0 /IONRET, 0 / JMS CLEAR / ION / JMP I IONRET /CLEAR, 0 / CLA / NOP / NOP /CLEAR IOT DEPENDING ON DEVICES / NOP /CLEAR IOT DEPENDING ON DEVICES / NOP /CLEAR IOT DEPENDING ON DEVICES / NOP /CLEAR IOT DEPENDING ON DEVICES / NOP /CLEAR IOT DEPENDING ON DEVICES / JMP I CLEAR *2600 /OVERLAP SEEK-LAI TEST, MAIN ROUTINE LAITST, 0 CLA TAD UNIT CIA DCA LAI2 IAC DCA I LAI21 TAD LAI2+1 /7770 DCA I LAI21+1 TAD LAI2 SNA CLA JMP LAI22 LAI23, TAD I LAI21 CLL RAL RTL DCA I LAI21 /0010, 0100, 1000 TAD I LAI21+1 STL RAL RTL DCA I LAI21+1 /7704, 7044, 0444 ISZ LAI2 JMP LAI23 LAI22, JMS I RDSSR /TEST 4.1 READY TO SEEK? AND I LAI21 SNA CLA JMP LAI3 NL0004 IAC /ERRNO 5 JMS I TYPERR JMS I TYPSRI LAI3, JMS I HLTLP JMP LAI22 CLA IAC TAD MAXTRK DCA TRACK /MAXTRK+1 FOR NEXT TEST DCA SECTOR JMS I LAI2+5 /LAI6 JMS I PWAIT AND I LAI21+1 DCA I LAI21+2 LAI31, JMS I IOLS /LOAD SAR AND OVERLAP SEEK CLA TAD I LAI21 RAL DCA LAI2 TAD LAI2 RAL TAD LAI2 DCA LAI2 JMS I RDSSR AND LAI2 SNA CLA JMP LAI32 NL0003 CLL RAL /ERRNO 6 JMS I TYPERR JMS I TYPSRI LAI32, DCA LAI2 JMS I LAI2+6 /LAI7 SNA CLA JMP LAI34 ISZ LAI2 JMP LAI32+1 TAD LAI2+2 /ERRNO 206 JMS I TYPERR JMS I TYPSRI LAI34, JMS I HLTLP JMP LAI31 TAD TRACK JMS I LAI2+3 /LAI4 0 4 1 7 /ERRNO 7.. JMP .-6 JMS I LAI2+3 0 0 1 15 /ERRNO 15.. JMP .-5 TAD MAXTRK JMS I LAI2+3 0 0 1 23 /ERRNO 23.. JMP .-6 CLA IAC DCA WCCA JMS I IWCCA JMS I LDCON TAD MAXTRK JMS I LAI2+3 2 0 0 31 /ERRNO 31.. JMP .-6 TAD UNIT DCA LAI21+3 TAD UNIT CIA TAD LAI2+4 DCA UNIT JMS I LDCON TAD LAI21+3 DCA UNIT TAD MAXTRK JMS I LAI2+3 0 0 0 37 /ERRNO 37.. JMP .-6 JMS I LAI2+5 JMP I LAITST LAI2, 0 7770 206 LAI4 3 LAI6 LAI7 LAI21, LAI41 LAI41+1 LAI41+2 0 *3000 /CALL SEQ - AC=TRACK,WD1=BUSY VAL,WD2=HDW VAL,WD3=DON VAL, /WD4=ERROR /LAI AND OVERLAP SEEK TEST ROUTINE-BASIC DRIVE LAI4, 0 DCA LAI42+3 JMS I CLSTAT TAD ADDRES TAD LAI42 DCA LAI43 TAD LAI42+1 DCA LAI42+2 DCA LAI42+5 TAD LAI42+3 JMS I IOLS LAI43, 0 /6507=DRSS AND LAI41 SZA CLA ISZ LAI42+5 ISZ LAI42+2 JMP LAI43 TAD LAI43 DCA .+1 LAI45, 0 /DRSS AGAIN DCA LAI42+3 TAD LAI42+3 AND LAI41 SNA CLA JMP LAI47 TAD LAI42+3 AND LAI41+1 CIA TAD LAI41+2 SNA CLA JMP LAI441 NL0002 ISZ LAI4 ISZ LAI4 ISZ LAI4 TAD I LAI4 JMS I TYPERR CLA TAD LAI41+2 JMS I TYPSRB LAI46, ISZ LAI4 JMS I HLTLP JMP I LAI4 ISZ LAI4 JMP I LAI4 LAI44, ISZ LAI42+2 JMP LAI45 ISZ LAI4 ISZ LAI4 ISZ LAI4 TAD I LAI4 JMS I TYPERR CLA TAD LAI42+2 SZA CLA JMS I TYPSTI JMS I TYPSRI JMP LAI46 LAI47, TAD UNIT CIA SNA JMP .+10 DCA LAI42+4 TAD LAI42+3 RTR RAR ISZ LAI42+4 JMP .-3 DCA LAI42+3 NL0002 AND LAI42+3 CIA TAD I LAI4 SNA CLA JMP .+3 NL0003 JMP LAI44+2 ISZ LAI4 NL0004 AND LAI42+3 CIA TAD I LAI4 SNA CLA JMP .+6 TAD TYPDSK SZA CLA JMP .+3 NL0004 JMP LAI44+3 ISZ LAI4 JMS I RDSTAT RAR CLA RAL CIA TAD I LAI4 ISZ LAI4 SNA CLA JMP LAI46 NL0004 IAC JMP LAI44+5 LAI441, TAD .+5 IAC SZA JMP .-2 JMP LAI44 7760 LAI41, 0 0 0 LAI42, DRSS 7774 0 0 0 0 *3200 /SPECIAL CHECK ROUTINE FOR FORMAT CHECKS FRM5, 0 CLA DCA SECTOR JMS I LDSEC JMS I CLSTAT CLA TAD I FRM5 JMS I LDCON ISZ FRM5 CLA TAD I FRM5 DCA FRM51 ISZ FRM5 TAD I FRM5 CIA DCA FRM51+1 JMS I FRM51 ISZ FRM5 TAD I FRM5 ISZ FRM5 AND I FRM5 DCA FRM51 JMS I SKPDON JMP FRM52 ISZ FRM51+1 JMP .-3 ISZ FRM5 FRM53, TAD I FRM5 JMS I TYPERR TAD FRM51 JMS I TYPSTB ISZ FRM5 JMS I HLTLP JMP I FRM5 ISZ FRM5 JMP I FRM5 FRM52, JMS I RDSTAT AND I FRM5 CIA TAD FRM51 ISZ FRM5 SNA CLA JMP FRM52-5 IAC JMP FRM53 /ROUTINE TO CHECK FOR LAI ERROR GENERATION LAI5, 0 CLA CLL TAD I LAI5 DCA LAI51 /READ/WRITE ISZ LAI5 TAD I LAI5 CIA DCA LAI51+2 /TIMEOUT ISZ LAI5 TAD I LAI5 CMA SZL IAC DCA LAI51+1 /TIMEOUT ISZ LAI5 JMS I LDCON JMS I CLSTAT CLA IAC DCA WCCA JMS I IWCCA JMS I LDSEC JMS I LAI51 JMS I SKPDON JMP LAI52 ISZ LAI51+2 JMP .-3 ISZ LAI51+1 JMP .-5 CLA LAI53, TAD I LAI5 /ERRNO ISZ LAI5 JMS I TYPERR JMS I TYPSTI JMS I TYPSRI JMS I HLTLP JMP I LAI5 ISZ LAI5 JMP I LAI5 LAI52, JMS I RDSTAT TAD LAI51+3 /3577 -4201 SNA CLA JMP .+3 CLA IAC /ERRNO+1 JMP LAI53 TAD UNIT CMA DCA LAI51 JMS I RDSSR RTR RAR ISZ LAI51 JMP .-3 SZL CLA JMP .+6 TAD TYPDSK SZA CLA JMP .+3 NL0002 /ERRNO+2 JMP LAI53 ISZ LAI5 JMP LAI52-4 EXIWC, 0 /INITIATE WCCA CLA TAD EXIWC1 TAD ADDRES DCA .+2 TAD EXIWC1+1 0 CLA JMP I EXIWC EXOLS, 0 /LOAD SAR WITH CONTENTS OF AC, UNIT, AND INITIATE OVERLAP SEEK DCA EXOLS1 TAD EXOLS1+1 TAD ADDRES DCA .+5 TAD UNIT CLL RTR RAR TAD EXOLS1 0 CLA JMP I EXOLS *3400 LAI6, 0 /SUBTESTS 4.8, 4.9 TAD ADDRES TAD LAI61 DCA LAI63 JMS I LAI61+1 /LAI5 TEST 4.8 EXLTAR 400 0 45 /ERRNO 45.. JMP .-5 JMS LAI62 JMS I LAI61+1 /LAI5 TEST 4.9 EXLTAW 1000 0 50 /ERRNO 50.. JMP .-5 JMS LAI62 JMP I LAI6 LAI61, DSDE LAI5 207 /ERRNO 207 LAI62, 0 JMS I RDSTAT SMA CLA JMP I LAI62 LAI63, 0 JMP .+2 JMP I LAI62 TAD LAI61+2 /ERRNO 207 JMS I TYPERR JMS I TYPSTI JMS I HLTLP JMP LAI63 JMP I LAI62 /REGISTER TRANSFER TEST, CALLING SEQUENC-AC=VALUE /WD1=LDIOT,WD2=RDIOT,WD3=ERRMASK,WD4=TYPOUT,WD5=ERRNO REGTRT, 0 DCA REGT1 TAD REGT1 DCA TRACK TAD TRACK DCA SECTOR JMS REGT2 /EXEC LDIOT JMS REGT2 /EXEC RDIOT AND I REGTRT DCA REGT1+1 TAD REGT1 AND I REGTRT ISZ REGTRT DCA REGT1+2 TAD REGT1+2 CIA TAD REGT1+1 SNA CLA /READ = VALUE? JMP REGT3 TAD I REGTRT DCA REGT1+1 /TYPOUT ERROR ROUTINE ISZ REGTRT TAD I REGTRT JMS I TYPERR /ERROR NUMBER CLA TAD REGT1+2 /TYPE VALUE JMS I REGT1+1 JMP .+2 /ERROR RETURN REGT3, ISZ REGTRT /OK , GO BACK ISZ REGTRT JMS I HLTLP JMP .+2 ISZ REGTRT CLA TAD REGT1 JMP I REGTRT REGT1, 0 0 0 0 REGT2, 0 DCA REGT1+3 TAD I REGTRT ISZ REGTRT TAD ADDRES DCA .+3 TAD REGT1 TAD REGT1+3 0 JMP I REGT2 /INTERRUPT TEST INTST, 0 CLA TAD 2 DCA INT1 TAD INT1+1 DCA 2 TAD INT1+2 JMS I LDCON NL0003 JMS I TYPERR JMS I TYPCNI INT2, CLA TAD INT1 DCA 2 JMS I LDCON ION JMS I HLTLP JMP INTST+1 JMP I INTST INT1, 0 INT2 101 EXRDSS, 0 /READ SSR CLA TAD ADDRES TAD .+4 DCA .+1 0 JMP I EXRDSS DRSS EXLSEC, 0 /LOAD SCR WITH SECTOR CLA TAD ADDRES TAD .+6 DCA .+2 TAD SECTOR 0 CLA JMP I EXLSEC DLSR *3600 /PARAMETER INPUT ROUTINE PARAM, 0 CLA KCC DCA ERRFLG TAD PAR11+2 DCA ERRFL1 IAC DCA PASS1 TAD PAR1 /-4 DCA PAR1+1 TAD PAR1+2 /DSKDAT AREA DCA PAR2 PAR3, JMS I PAR1+3 /UNPAR JMP PAR21 JMS I PEXEC2 /MOVE FROM TO TYPDSK-1 PAR2, 0 /POINTS TO AREA OF UNIT 13 TAD PAR2 TAD PAR2+1 /POINT TO NEW UNIT DCA PAR2 ISZ PAR1+1 JMP PAR3 /NEXT UNIT PAR21, TAD PAR1+1 CIA TAD PAR1 SZA JMP .+3 JMS I TYPQQ JMP PARAM+1 DCA PORTS PAR22, JMS I CRLF JMS I TYPTEX TEXT /ENTER UNIT ADDRESS/ JMS I TYPLAS TAD SWR AND PAR11 /ONLY 64 AND PAIR SNA CLA JMP .+3 JMS I TYPQQ JMP PAR22 TAD SWR CLL RAL RTL DCA ADDRES /PUT INTO DEVICE ADDRESS FOR MERGE JMS I CRLF JMS I TYPTEX TEXT /ENTER FORMAT LOOP CONTROL/ JMS I TYPLAS TAD SWR SZA CLA IAC DCA LPFORM /SET FORMAT SWITCH JMS I PAR11+1 /MESSAGE SET FORMAT JMS I TYPTEX TEXT /, ERROR AND TYPE OUT CONTROLS/ JMS I TYPLAS /READ SWITCH ONE LAST TIME AND GO JMS I CRLF ION JMP I PARAM PAR1, 7774 0 DSKDAT-1 UNPAR PAR11, 7701 EXTNA1 7771 EXLCON, 0 /LOAD CNR WITH CONTENTS OF AC, UNIT DCA LDCON1 TAD LDCON1+1 TAD ADDRES DCA .+5 TAD UNIT CLL RTL RAL TAD LDCON1 0 CLA JMP I EXLCON LDCON1, 0 DLCR EXRDSC, 0 CLA TAD ADDRES TAD .+4 DCA .+1 0 JMP I EXRDSC DSRR *4000 /ENTER PARAMETERS FOR A DISK PORT UNPAR, 0 DCA DAISY DCA DAIVAL JMS I CRLF JMS I TYPTEX TEXT /ENTER DISK TEST INFORMATION/ JMS I TYPLAS TAD SWR SNA JMP I UNPAR /SWITCH = 0 END PORTS AND UNPAR2 DCA UNIT /BITS 10,11 OF UNIT TAD SWR AND UNPAR2+3 /BIT 8 SNA CLA JMP UNPAR3 TAD UNPAR2+2 /1457=408 CYL SKP UNPAR3, TAD UNPAR4 /627 =204 CYL DCA MAXRTR TAD SWR AND UNPAR2+4 /BIT 9 SNA CLA CLL JMP UNPAR5 DCA TYPDSK /MOVING HEAD DISK TAD SWR AND UNPAR2+1 /BITS 6-7 SNA JMP UNPAR5+6 /NOT FIXED AND NOT REMOVABLE ERROR RTR RTR RAR SNA CLA /REMOVABLE? JMP UNPR51 TAD UNPAR4+1 SNL /FIXED DISK IN LINK DCA DAIVAL /2000 IF REMOVABLE DCA DAISY /2000 IF FIXED JMP UNPR51 UNPAR5, CMA DCA TYPDSK /FIXED HEAD DISK TAD SWR AND UNPAR4+2 /3700 SZA JMP .+3 JMS I TYPQQ JMP UNPAR+1 TAD UNPAR4+3 /5700 16 MAX SMA CLA JMP .-4 /MORE THAN 16 ERROR TAD SWR AND UNPAR4+2 CLL RTR RAR DCA MAXRTR /8 TO 128 TRACKS CMA TAD MAXRTR DCA MAXRTR /-1 FOR MAX TRACKS UNPR51, JMS I UNPAR4+4 /UNPAR6 MAXRSC DCA FULL /FULL DISK = 0 JMS I PEXEC2 /MOVE TRACKS AND SECTORS MAXRSC-1 MAXTSC-1 /TO TSC 3 TAD SWR /TEST NUMBER OF CYLS? SPA CLA JMS I UNPAR4+5 /YES GO TO UNPAR7 ISZ UNPAR JMP I UNPAR UNPAR2, 3 60 1457 10 4 UNPAR4, 627 2000 3700 5700 UNPAR6 UNPAR7 EXTON, 0 JMS I TYPTEX TEXT /ON / JMP I EXTON EXCL1, 0 /FILL LAST WCCA-2 WORDS OF BUF1 WITH 0'S CLA /FOLLOWED BY ONE 6666 TAD EXCL11 DCA 12 TAD WCCA TAD EXCL11+4 CIA DCA EXCL11+1 /WCCA-2 TAD EXCL11+2 DCA I 12 /ZEROS ISZ EXCL11+1 JMP .-3 TAD EXCL11+3 DCA I 12 /6666 JMP I EXCL1 EXCL11, BUF1+1 /BUF1-1 + 2 0 0 6666 7776 EXLAS, 0 /READ SWITCHES, STORE IN SWR HLT LAS DCA SWR TAD SWR JMS I TYPWD /AND PRINT JMP I EXLAS *4200 UNPAR6, 0 TAD NUMSEC CIA DCA UNPR61 /-4 TAD I UNPAR6 /MAXRSC OR MAXTSC DCA UNPR61+1 TAD UNPR61+1 DCA UNPR61+2 ISZ UNPAR6 ISZ UNPR61+2 TAD UNPR61+2 DCA UNPR61+3 ISZ UNPR61+3 DCA I UNPR61+1 TAD I UNPR61+3 /GET MAX TRACKS MAXRTR MAXTTR DCA I UNPR61+2 IAC /MAX HAD ONE LESS TAD I UNPR61+2 /LOOP HERE CLL RAL DCA I UNPR61+2 /LOW ORDER TAD I UNPR61+1 RAL DCA I UNPR61+1 /HIGH ORDER ISZ UNPR61 /MULTIPLY * 16 JMP .-7 JMP I UNPAR6 UNPR61, 0 0 /MAXRSC OR MAXTSC 0 /MAXRSC OR MAXTSC + 1 0 /MAXRTR OR MAXTTR 0 UNPAR7, 0 JMS I CRLF JMS I TYPTEX TEXT /ENTER MAX CYLINDER/ JMS I TYPLAS TAD TYPDSK SZA CLA JMP UNPR72 TAD MAXRTR RAR CMA DCA UNPR61+4 TAD SWR SNA JMP UNPR73 TAD UNPR61+4 SPA SNA CLA JMP .+3 UNPR73, JMS I TYPQQ JMP UNPAR7+1 TAD SWR CLL RAL TAD M1 UNPR74, DCA MAXTTR /GETS SPECIFIED MAX TRACKS JMS UNPAR6 MAXTSC CMA DCA FULL /SIGNAL PARTIAL TRACK TEST JMP I UNPAR7 UNPR72, OSR CIA TAD MAXRTR SPA CLA JMP UNPR73 /NOT BIGGER THAN MAX OSR JMP UNPR74 EXTDIS, 0 JMS I CRLF JMS I TYPTEX TEXT /DISABLE/ JMS FRSW JMS I CRLF HLT JMP I EXTDIS EXTENA, 0 JMS EXTNA1 JMS I CRLF HLT JMP I EXTENA EXTNA1, 0 JMS I CRLF JMS I TYPTEX TEXT /ENABLE/ JMS FRSW JMP I EXTNA1 FRSW, 0 JMS I TYPTEX TEXT / FORMAT SWITCH/ JMP I FRSW EXRDST, 0 /READ STATUS REGISTER CLA TAD ADDRES TAD .+4 DCA .+1 0 JMP I EXRDST DRSR EXRDTR, 0 /READ TRACK ADDRESS CLA TAD ADDRES TAD .+4 DCA .+1 0 JMP I EXRDTR DRTR *4400 EXTEX, 0 CLA TAD I EXTEX AND EXTEX1 DCA EXTEX1+1 TAD I EXTEX ISZ EXTEX RTR RTR RTR AND EXTEX1 JMS CHAROT JMP I EXTEX TAD EXTEX1+1 JMS CHAROT JMP I EXTEX JMP EXTEX+1 EXTEX1, 77 0 0 7745 100 200 CHAROT, 0 SNA JMP I CHAROT DCA EXTEX1+2 TAD EXTEX1+2 TAD EXTEX1+3 SPA CLA TAD EXTEX1+4 TAD EXTEX1+5 TAD EXTEX1+2 JMS CHAROD ISZ CHAROT JMP I CHAROT CHAROD, 0 IOF TLS TSF JMP .-1 TCF CLA /WVDMARK JMS I .+1 ION /IONRET JMP I CHAROD EXCRLF, 0 CLA TAD EXCRL1 JMS CHAROD TAD EXCRL1+1 JMS CHAROD TAD EXCRL1 JMS CHAROD JMP I EXCRLF EXCRL1, 215 212 277 EXTQQ, 0 CLA TAD EXCRL1+2 JMS CHAROD TAD EXCRL1+2 JMS CHAROD JMP I EXTQQ EXTADD, 0 JMS I TYPCHK JMP I EXTADD JMS I TYPSTI /STR IS JMS I TYPTAB /TAR SB IS JMS I TYPSCB /SCR SB IS JMP I EXTADD EXSCAD, 0 /SAVE TRACK AND SECTOR DCA EXSCA1 /ADD BLOCKS TO SECTOR TAD SECTOR /CONVERT TO TRACK AND SECTOR DCA SECTOR+1 TAD TRACK DCA TRACK+1 TAD NUMSEC CIA DCA EXSCA1+1 CMA CLL RAL ISZ EXSCA1+1 JMP .-2 DCA EXSCA1+1 TAD BLOCKS TAD SECTOR DCA SECTOR TAD SECTOR TAD EXSCA1+1 SZL JMP .+3 DCA SECTOR ISZ TRACK CLA CLL TAD EXSCA1 JMP I EXSCAD EXSCA1, 0 0 EXHLTP, 0 /HALT OR CONTINUE ROUTINE CLA /FIRST RETURN REPEAT, SECOND CONTINUE TAD ERRFLG SNA CLA JMP EXHLT1 DCA ERRFLG ISZ ERRFL1 /DONE 7 TIMES? JMP I EXHLTP CMA DCA ERRFL1 OSR RTR /HALT ON ERROR? SZL CLA JMP .+3 TAD ERRNUM /YES HLT CLA OSR /COME HERE FROM JMP .-12 JMP .-3 RAR /CONTINUE WITH TEST? SZL CLA JMP I EXHLTP /REPEAT CURRENT TEST ISZ EXHLTP /CONTINUE TAD EXHLT1+3 DCA ERRFL1 JMP I EXHLTP EXHLT1, TAD .+3 DCA ERRFL1 JMP .-12 7771 *4600 EXTERR, 0 /TYPE ERROR NUMBER DCA ERRNUM CMA DCA ERRFLG JMS I TYPCHK JMP I EXTERR JMS I CRLF JMS I TYPTEX TEXT /ERROR/ TAD ERRNUM JMS I TYPWD TAD ERRNUM TAD EXTER1 SPA CLA JMP EXTER2 TAD ERRNUM TAD EXTER1+1 SMA CLA JMP EXTER2 JMS I TYPON JMS I TYPUN EXTER2, JMS I CRLF JMP I EXTERR EXTER1, 7773 7571 4060 EXWR, 0 /INITIATE WCCA, LOAD SCR WITH SECTOR, INITIATE WRITE JMS I IWCCA JMS I LDSEC JMS I LDTAWR JMP I EXWR EXRD, 0 /INITIATE WCCA, LOAD SCR WITH SECTOR, INITIATE READ JMS I IWCCA JMS I LDSEC JMS I LDTARD JMP I EXRD EXTDAT, 0 JMS I TYPCHK JMP I EXTDAT JMS I TYPTEX TEXT /WORD/ TAD EXTDA1 TAD 11 JMS I TYPWD JMS I TYPTEX TEXT /DATA / JMS I TYPSB TAD 10 DCA EXTDA1+1 TAD I EXTDA1+1 JMS I TYPWD JMS I TYPIS TAD 11 DCA EXTDA1+1 TAD I EXTDA1+1 JMS I TYPWD JMS I CRLF JMP I EXTDAT EXTDA1, -BUF2 0 EXCLST, 0 /CLEAR STR CLA TAD ADDRES TAD .+4 DCA .+1 0 JMP I EXCLST DCSR 0 EXSKDN, 0 /SKIP DONE WITH TIMEOUT CLA TAD ADDRES TAD SKPDN1 DCA .+3 TAD SKPDN1+1 DCA SKPDN1+2 /INT COUNTER -180 0 JMP .+2 JMP I EXSKDN ISZ SKPDN1+2 JMP .-4 ISZ EXSKDN /TIMEOUT EXIT 1.11 MSEC JMP I EXSKDN SKPDN1, DSDD 7514 0 EXTUN, 0 /TYPE UNIT TAD UNIT TAD EXTER1+2 DCA .+4 JMS I TYPTEX /UNIT X TEXT /UNIT/ 0 TAD TYPDSK SZA CLA JMP I EXTUN TAD DAIVAL SNA CLA JMP EXTER4 JMS I TYPTEX /-REMOVABLE TEXT /-REMOVABLE/ JMP I EXTUN EXTER4, JMS I TYPTEX TEXT /-FIXED/ JMP I EXTUN *5000 EXTSTB, 0 /STR SB IS, CNR IS DCA STOR1 DCA STOR1+1 JMS I TYPCHK JMP I EXTSTB JMS I TYPTEX TEXT /STR / TAD STOR1+1 SZA CLA JMP .+4 JMS I TYPSB TAD STOR1 JMS I TYPWD JMS I TYPIS JMS I RDSTAT JMS I TYPWD JMS I CRLF JMS I TYPCNI JMP I EXTSTB EXTSTI, 0 /STR IS CLA TAD EXTSTI DCA EXTSTB CMA JMP EXTSTB+2 STOR1, 0 0 EXTSRB, 0 /SSR SB IS DCA STOR1 DCA STOR1+1 JMS I TYPCHK JMP I EXTSRB JMS I TYPTEX TEXT /SSR / TAD STOR1+1 SZA CLA JMP .+4 JMS I TYPSB TAD STOR1 JMS I TYPWD JMS I TYPIS JMS I RDSSR JMS I TYPWD JMS I CRLF JMP I EXTSRB EXTSRI, 0 /SSR IS CLA TAD EXTSRI DCA EXTSRB CMA JMP EXTSRB+2 EXTCNB, 0 /CNR SB IS DCA STOR1 DCA STOR1+1 JMS I TYPCHK JMP I EXTCNB JMS I TYPTEX TEXT /CNR / TAD STOR1+1 SZA CLA JMP .+4 JMS I TYPSB TAD STOR1 JMS I TYPWD JMS I TYPIS TAD ADDRES TAD .+6 DCA .+1 0 JMS I TYPWD JMS I CRLF JMP I EXTCNB DRCR EXTCNI, 0 /CNR IS CLA TAD EXTCNI DCA EXTCNB CMA JMP EXTCNB+2 EXTAB, 0 /TAR SB IS JMS I TYPCHK JMP I EXTAB JMS I TYPTEX TEXT /TAR / JMS I TYPSB TAD TRACK TAD DAIVAL JMS I TYPWD JMS I TYPIS JMS I RDTRAD JMS I TYPWD JMS I CRLF JMP I EXTAB EXTSCB, 0 /SCR SB IS JMS I TYPCHK JMP I EXTSCB JMS I TYPTEX TEXT /SCR / JMS I TYPSB TAD SECTOR JMS I TYPWD JMS I TYPIS JMS I RDSEC JMS I TYPWD JMS I CRLF JMP I EXTSCB EXTSB, 0 JMS I TYPTEX TEXT /SB/ JMP I EXTSB EXTIS, 0 JMS I TYPTEX TEXT /IS/ JMP I EXTIS *5200 EXTCHK, 0 LAS RTR RAR SNL CLA ISZ EXTCHK JMP I EXTCHK EXTWD, 0 DCA EXTWD1 TAD EXTWD1 AND EXTWD1+1 CLL RTL RTL TAD EXTWD1+2 DCA EXTWD2 TAD EXTWD1 AND EXTWD3 DCA EXTWD3+1 TAD EXTWD1 RTR RAR AND EXTWD3+2 TAD EXTWD3+1 TAD EXTWD1+3 DCA EXTWD2+1 TAD EXTWD1 AND EXTWD3+2 CLL RTL RTL RTL TAD EXTWD3+3 DCA EXTWD2+2 JMS I TYPTEX EXTWD2, 0 0 0 0 JMP I EXTWD EXTWD1, 0 7000 4060 6060 EXTWD3, 700 0 7 6040 ILTRP, 0 CAF JMS I TYPCHK JMP ILTR1 JMS I TYPTEX TEXT /ILLEGAL TRAP TO ADDRESS 0000 FROM ADDRESS/ TAD 0 JMS I TYPWD JMS I CRLF ILTR1, CMA CLA DCA ERRFLG DCA ERRNUM JMS I HLTLP NOP ION /WVDMARK JMP I .+1 INTRET JMP I 0 /INTRET RDWX32, 0 CLA TAD SECTOR+1 DCA SECTOR TAD TRACK+1 DCA TRACK JMP I RDWX32 LAI7, 0 TAD LAI71 IAC SZA JMP .-2 JMS I RDSSR AND I LAI71+1 JMP I LAI7 LAI71, 7760 LAI41 EXCL2, 0 /FILLS BUF2 WITH WCCA 3333'S CLA /FOLLOWED BY ONE 6666 TAD EXCL21 DCA 12 TAD WCCA CIA DCA EXCL21+1 TAD EXCL21+2 DCA I 12 ISZ EXCL21+1 JMP .-3 TAD EXCL21+3 DCA I 12 JMP I EXCL2 EXCL21, BUF2-1 0 3333 6666 WAIT, 0 CLA TAD CNT DCA TEMP1 IAC SZA JMP .-2 ISZ TEMP1 JMP .-4 JMS I RDSSR JMP I WAIT $