/ NEW SUPER RK05 ALIGNMENT PROGRAM ... ALIGNX ... R.L.MOORE / / 11/19/75 / / THANKS TO JOE LOMBARDI FOR TOGGLE-IN PROGRAMS / / ************************************************************** / / / / SIMPLE TOGGLE IN PROGRAM - FOR DISK ALIGNMENT / / 20/ 7201 / 6742 / 1051 / 6744 / 1050 / 6746 / 7604 / 6743 / 6741 / 5230 / 5220 / 50/ 0000 / 51/ 1000 / / CHANGE LOC. 50 TO 0002 FOR DRIVE 1; 0004 FOR DRIVE 2; 0006 FOR DRIVE 3 / / / SIMPLE TOGGLE IN - FOR OSCILLATING SEEKS / / 20/ 7201 / 7104 / 6742 / 1242 / 6746 / 7604 / 6743 / 6741 / 5227 / 2070 / 5231 / 1243 / 6746 / 7300 / 6743 / 6741 / 5237 / 5223 / 3200 / 3200 / / / CHANGE LOC'S 42 & 43 TO 3202,3204,ETC FOR OTHER DRIVES / *** USEFUL PROGRAMMING INFO *** / / / SETUP OF 8E FRONT PANEL SWITCHES / /: 0 : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : /----------------------------------------------------------------------- /: : : : : : : : : : : : : /: :SEEK :UPPER:>128 : : /: DRIVE 0-3 : : : : ENTER TRACK TO SEEK OR ALIGN TO : /: :ALIGN:LOWER:<128 : : /: : : : : : : : : : : : : /----------------------------------------------------------------------- / / / RK8E COMMAND REGISTER CONTENTS / /: 0 : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : /---------------------------------------------------------------------- /: : : : : : : : : : : : : /: : EN. : EN. : XFER: EXTENDED : : EXT: /: - FUNCTION - : INT.: INT.: 128 : - MEMORY FIELD -: - DRIVE -:CYLN: /: : ON : ON : WORD: ADDRESS : : BIT: /: (SEE BELOW) :DONE :SEEK :BLOCK: : : IF : /: :FLAG :DONE : : : :>128: /: : : : : : : : : : : : : /----------------------------------------------------------------------- / / FUNCTION BITS (0-2) / / 0 0 0 READ DATA / 0 0 1 READ ALL / 0 1 0 SET WRITE PROTECT BIT / 0 1 1 SEEK ONLY / 1 0 0 WRITE DATA / 1 0 1 WRITE ALL / 1 1 0 NOT USED / 1 1 1 NOT USED / / / RK8E DISK ADDRESS REGISTER / /: 0 : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : /----------------------------------------------------------------------- /: : : : : : : : : : : : : /: : SUR-: : /: - CYLINDER (TRACK) - :FACE : - SECTOR - : /: : : : : : : : : : : : : /----------------------------------------------------------------------- / / NOTE: / MSB OF CYLINDER ADDR. IS BIT 11 OF CMD REGISTER / THIS BIT IS SET IF ADDR. IS GREATER THAN CYL 128 / IOT & PARAMETER DEFINITIONS DSKP=6741 DCLR=6742 DLAG=6743 DLCA=6744 DRST=6745 DLDC=6746 DMAN=6747 / OS8=1 /=1 IF OS-8 RESIDENT, 0 IF PAPER TAPE / TYPE=JMS I A6BIT WIPE=JMS I SCREN DELAY=JMS I DEL CHAR=JMS I ACHAR RECAL=JMS I ARECAL SEEK=JMS I ASEEK ALIGN=JMS I AALIGN MES1=JMS I MESG1 MES2=JMS I MESG2 MES3=JMS I MESG3 MES4=JMS I MESG4 MES5=JMS I MESG5 KBDMON=JMS I MON BEEP=JMS I ABEEP SWITCH=JMS I SW TIME=JMS I TIMOUT / / FIELD 0 *50 / SW, SETUP MESG1, MESS1 MESG2, MESS2 MESG3, MESS3 MESG4, MESS4 MESG5, MESS5 A6BIT, SIXBIT SCREN, SCREEN DEL, DELAY4 ACHAR, TTYOUT ARECAL, RECAL1 AALIGN, ALIGN1 ASEEK, SEEK1 MON, KBFLAG ABEEP, BEEP1 TIMOUT, XTIME / / / DRIVE, 0000 CMD, 0000 CURADD, 4000 SWREG, 0000 TRACK, 0000 NEW, 0000 OLD, 0000 EXT, 0000 / CONTROL PROGRAM / *0200 START, SKP JMP NOMESS CLA CLL WIPE MES1 MES2 MES3 MES4 MES5 NOMESS, HLT RECAL LOOP, IFNZRO OS8 /ASSEMBLE ONLY IF AN OS-8 SYS SWITCH SEEK ALIGN JMP LOOP / / / / SUBROUTINE TO RECALIBRATE DRIVE / RECAL1, 0 /RECAL AT STARTUP TIME TIME TAD Z DRIVE DLDC /LOAD COMMAND REG CLA CLL CML RTL /AC=0002 DCLR /RECALIBRATE DSKP JMP .-1 JMP I RECAL1 /EXIT THIS SUB / / / / SUBROTINE TO MONITOR KEYBOARD FOR ^C / KBFLAG, 0 KSF /IS A FLAG ?? JMP I KBFLAG /NO...SPLIT KRB /YES...READ BUFFER TAD (-203) /TEST FOR ^C SZA CLA /IT IS ... JMP I KBFLAG /NOT ! JMP I (07600) /EXIT TO OS-8 / PAGE / / / SETUP CALLING SEQUENCE / / JMS SETUP / SEEK / ALIGN / / / / / SETUP, 0000 /SETUP DISK INFO FROM SW. REG. CLA CLL DCA SWREG DCA DRIVE DCA TRACK /CLEAR OUT A LOT OF LOCATIONS DCA CMD DCA NEW / / / / ******************************************************** / / DECIDE IF THE SW. REG. HAS BEEN CHANGED SINCE LAST TIME / / ******************************************************** / / LAS DCA SWREG /SAVE SR VALUE TAD SWREG AND (7000 RTR;RTR;RTR DCA NEW TAD NEW CIA /COMPLIMENT & INCR. TAD OLD /COMPARE WITH OLD SR SZA CLA RECAL CLA CLL TAD NEW DCA OLD / EJECT / / ************************** / / MAKE UP COMMAND REGISTER / / ************************** / / CLA CLL TAD SWREG AND (0200) /MASK FOR >128 BIT RTL;RTL;RTL /GET INTO BIT 11 (PASSES THRU LINK) DCA EXT /SAVE THE EXT SEEK BIT CLA CLL TAD SWREG AND (6000) /MASK BITS 0-1 (DRIVE #) RTL;RTL /GET INTO BITS 9-10 DCA DRIVE CLA CLL TAD SWREG AND (1000) /MASK FOR SEEK OR ALIGN BIT SZA CLA /SKIP IF ALIGN (SEEK BIT DID NOT "AND" THRU) TAD (3200) /SEEK ONLY CMD WORD TAD EXT /ADD THE EXT BIT DCA CMD /TO SAVE AS COMMAND REGISTER WORD / / / ************************** / / MAKE UP THE TRACK WORD / / ************************** / / CLA CLL TAD SWREG AND (0400) /MASK FOR THE UPPER-LOWER HEAD BIT RTR;RTR /GET INTO BIT 7 DCA TRACK CLA CLL TAD SWREG AND (0177) /MASK TRACK INFO BITS 5-11 RTL;RTL;RAL /GET INTO BITS 0-6 TAD TRACK /ADD HEAD BIT (STORED IN TRACK) DCA TRACK /SAVE THE ENTIRE TRACK WORD CLA CLL TAD SWREG AND (1000) /GET BACK THE SEEK - ALIGN BIT SNA CLA ISZ SETUP /BUMP RETURN POINTER FOR ALIGN CLA CLL JMP I SETUP /EXIT PAGE / / / / ***************************************************************** / / THIS SUBROUTINE DOES A SEEK TO THE ADDRESS LOADED INTO THE SW REG., / THEN READS THE DATA AT THAT CYLINDER ADDRESS INTO THE DUMP AREA / IN CORE .... HEADS ARE ALIGNED DURING THIS SUB .... / / ****************************************************************** / / / / / / / / ALIGN1, 0 CLA IAC /SET AC=1 DCLR TAD Z CURADD DLCA /LOAD CURRENT ADDRESS TAD Z DRIVE /GET DRIVE NUMBER FROM PG 0 TAD Z CMD /GET COMMAND WORD DLDC /LOAD COMMAND REG. TAD TRACK DLAG /LOAD ADDR & GO DSKP /WAIT FOR HEAD JMP .-1 /TO GET THERE CLA CLL JMP I ALIGN1 /EXIT THIS SUB / / /SUBROUTINE TO DO OSCILLATING SEEKS / / SEEK1, 0 /OSC. SEEK SUBROUTINE CLA CLL TAD DRIVE /GET DRIVE NUMBER TAD CMD /GET CMD WORD DLDC /LOAD COMMAND REGISTER TAD TRACK DLAG /LOAD ADDR & GO DSKP /WAIT... JMP .-1 /FOR FLAG ISZ WAIT1 JMP .-1 TAD DRIVE TAD CMD AND (7776) /GET RID OF EXT BIT FOR CYL 0 DLDC CLA CLL DLAG /LOADS FOR CYLINDER 0 DSKP JMP .-1 ISZ WAIT1 JMP .-1 ISZ SEEK1 CLL CLA JMP I SEEK1 / WAIT1, 0 / / PAGE EJECT UTILITY PROGRAMS / / / ******************************************************************* / / THIS SUBROUTINE CLEARS THE VT05 SCREEN PRIOR TO PRINTING OUT A / A MESSAGE...ALL CHARS ARE NON-PRINTABLE ON TTY OR LA30 ... / / ****************************************************************** / SCREEN, 0 CLA CLL TAD (035) CHAR DELAY CLA CLL TAD (037) CHAR DELAY CLA CLL JMP I SCREEN / / / ******************************************************************** / / SUBROUTINE TO OUTPUT 4 NULL CHARACTERS TO VT05 FOR 2400 BUAD FIX / / ********************************************************************* / DELAY4, 0 TAD (-0004) /OUTPUTS 4 NULL CHARACTERS DCA KDLAY /FOR OS-8 2400 BUAD RATE CLA CLL /PROBLEM CHAR ISZ KDLAY JMP .-3 JMP I DELAY4 KDLAY, 0 /GETS SET TO 7774 / / BEEP1, 0 CLA CLL TAD (0007) CHAR DELAY CLA CLL JMP I BEEP1 / XTIME, 0 TAD (7700) DCA SETTL2 ISZ SETTLE JMP .-1 ISZ SETTL2 JMP .-3 JMP I XTIME / SETTLE, 0 SETTL2, 0 / PAGE / OUTPUT MESSAGES TO SCREEN / MESS1, 0 TYPE TEXT" *** RK05 ALIGNX *** RLM '75" DELAY TAD (212) CHAR DELAY TAD (212) CHAR DELAY TYPE TEXT": 0 : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 :" DELAY TYPE TEXT":---------------------------------------------------------------------:" DELAY JMP I MESS1 PAGE MESS2, 0 TYPE TEXT": : : : : : : : : : : : :" DELAY TYPE TEXT": :SEEK :UPPER:>128 : :" DELAY TYPE TEXT": DRIVE 0-3 : : : : ENTER TRACK TO SEEK OR ALIGN TO :" DELAY JMP I MESS2 PAGE MESS3, 0 TYPE TEXT": :ALIGN:LOWER:<128 : :" DELAY TYPE TEXT": : : : : : : : : : : : :" DELAY JMP I MESS3 PAGE MESS4, 0 TYPE TEXT":---------------------------------------------------------------------:" DELAY TYPE TEXT" 8E FRONT PANEL SWITCHES" DELAY JMP I MESS4 PAGE MESS5, 0 TAD (212) CHAR DELAY TAD (212) CHAR DELAY TAD (212) CHAR DELAY TAD (212) CHAR DELAY TAD (212) CHAR DELAY TYPE TEXT"PRESS 'CONT' TO START ALIGNMENT ^C RETURNS TO OS-8" DELAY JMP I MESS5 EJECT SIXBIT TEXT RECOVERY SUBROUTINE / / SUBROUTINE SIXBIT / /*** SIXBIT *** /TEXT RECOVERY SUBROUTINE PAGE SIXBIT, 0 TAD I SIXBIT /POINTER TO TEXT RTR;RTR;RTR /GET 1ST HALF OF WORD JMS TYPIT /PROCESS CHARACTER FOR OUTPUT TAD I SIXBIT /GET CHAR. AGAIN.... JMS TYPIT /THIS TIME LAST HALF ISZ SIXBIT /UP THE POINTER JMP SIXBIT+1 /NEXT WORD TYPIT, 0 /CHARACTER PROCESSING AND (77) /MASK FOR A SINGLE 6 BIT CHAR. SNA /TEST FOR 0000 JMP CRLF /LAST CHAR....BEAT IT !! DCA TEMP /TEMPORARY CHAR. STORAGE TAD TEMP /RESTORE IT AND (40) /TEST RANGE FOR BIT 6 SNA CLA /NUMERIC OR ALPHA DATA ?? TAD (100) /ADD 100 FOR ALPHA DATA TAD (200) /ADD 200 FOR ALL DATA TAD TEMP /ADD CHAR. ASCII VALUE JMS TTYOUT /EXIT TO TTY ROUTINE JMP I TYPIT /EXIT THIS SUB CRLF, CLA CLL /CRLF ROUTINE TAD (215) /ASCII FOR CR JMS TTYOUT /DO IT TAD (212) /ASCII FOR LF JMS TTYOUT /DO IT JMP I SIXBIT /DONE...BYE !! TTYOUT, 0 /TTY OUTPUT SUB TLS TSF JMP .-1 CLA CLL JMP I TTYOUT /EXIT THIS SUB TEMP, 0 /TEMPORARY CHAR STORAGE $$$$