/ WPUTIL - UTILITY BUILD PROGRAM / ******** EDIT HISTORY ******* / / 002 WCE 21-AUG-84 MAKE DICTIONARY DISKS INTO ACTIVATE DISKS / 001 WJY 04-JUN-84 SUPPORT UPDATING AMERICAN & BRITISH / DICTIONARIES. / THIS PROGRAM WAS CRATED ON 25 OCT 83 BY WILLIAM EKLE TO PROVIDE A MEANS / OF GENERATING A UTILITY COMBINATION DISKETTE FOR FUNCTIONS THAT HAVE BEEN / OFF-LOADED FROM THE WPS SYSTEM DISKETTE. / / IN ACTUAL USE, THE DEVELOPERS WILL USE THIS PROGRAM TO TRANSFER THIER / CODE FROM AN EIGHT INCH FLOPPY DISKETTE TO A FIVE INCH DISKETTE. / / THE DISKETTE THAT CONTAINS THIS PROGRAM IS A MODIFIED SYSTEM DISKETTE / THAT HAS ONLY THE MINIMUM FILES NECESSARY TO BOOT THE STANDARD SYSTEM. / / WHEN THE STANDARD SYSTEM IS BOOTED UP, IT TRANSFERS CONTROL TO THE / MODULE WPCU2. THIS PROGRAM OCCUPIES THE SLOT THAT WAS USED BY WPCU2 / TO DISLPAY THE RESET DATE AND TIME MENU. / / TO BUILD A BASIC DISKETTE, LOAD THE FOLLOWING FILES ON A BLANK DISKETTE: / / LOADB7, WPFILS, DSKHND, WPSYSA, WPUTIL / / THEN LOAD THE VARIOUS MODULES FOR SPELL, GRAPHICS, POST PROCESSING, ETC. / / CURRENTLY, THE UTILITY DISKETTE SUPPORTS FOUR KINDS OF OPERATIONS WHICH ARE: / / BUILD UTILITY COMBINATION DISKETTE / BUILD ACTIVATE FEATURE DISKETTES / UPDATE SPELLING DICTIONARY DISKETTES / BOOT AN RX-50 SYSTEM DISKETTE ON A DECMATE II / / THE KEY TO UNDERSTANDING PROGRAM OPERATION IS IN KNOWING WHAT VALUES ARE / PASSED IN THE MENU TEMP'S FROM THE USER SELECTION MENUS. / / MNTMP3 CONTAINS THE FUNCTION CODE FOR THE OPERATION / / 0 = UPDATE DICTIONARY DISKETTE / 1 = BUILD UTILITY COMBINATION DISKETTE / 2 = BUILD ACTIVATE FEATURE DISKETTE / 3 = BOOT RX-50 SYSTEM DISKETTE ON A DECMATE II / / MNTMP4 CONTAINS THE INITIALIZATION DISK DRIVE NUMBER / / MNTMP5 CONTAINS A BIT SET FOR THE ACTIVATE FEATURE DISK TO BE BUILT / / COMBIT = 1 FOR COMMUNICATIONS / LPBIT = 2 FOR LIST PROCESSING / SRBIT = 4 FOR SORT / MABIT = 10 FOR MATH / SEDBIT = 20 FOR SPELLING /*************************************************************************** /**** WRITE OUT CODE FOR WPUTIL **** /*************************************************************************** FIELD 0 / FIELD WHERE RXHAN IS LOCATED *200 / START ADDRESS USED BY OS8 "GO" COMMAND JMP I .+3 / LOCATION USED TO START UP RXHAN JMP I .+1 / LOCATION USED TO RETURN TO OS8 MONITOR 7600 / ADDRESS OF OS8 MONITOR RETURN POINT RXLOAD / ADDRESS OF START LOCATION FOR RXHAN *RXLDLS / ADDRESS WITHIN RXHAN TO OVERLAY RXEWT / WRITE FUNCTION CODE 0 RXQBLK / ADDRESS OF QUEUE BLOCK TO USE . / ADDRESS OF TABLE OF DISK COMMANDS DLUTL1; 0; CDF 20; -1 / WRITE OUT FIRST PART OF UTILITY DLUTL2; 400; CDF 20; -DSUTL2 / WRITE OUT SECOND PART OF UTILITY DLMUT1; ADMUT1; CDF 20; -DSMENU / WRITE OUT FIRST UTILITY MENU BLOCK DLMUT2; ADMUT2; CDF 20; -DSMENU / WRITE OUT SECOND UTILITY MENU BLOCK DLMUT3; ADMUT3; CDF 20; -DSMENU / WRITE OUT THIRD UTILITY MENU BLOCK 0 / END OF LIST INDICATOR /*************************************************************************** /**** PAGE ZERO LOCATIONS **** /*************************************************************************** FIELD 2 *100 / FIRST 100 LOCATIONS ARE USED FOR SYSTEM DSKBLK= .%400+DLUTL1 / DISK BLOCK WHERE PAGE IS LOADED CIFMYF= CIFBUF / DEFINE OUR FIELD. CDFMYF= CDFBUF / ... PR3= 6236 / FIRMWARE PANEL REQUEST #3 FOR DECMATE II BLDQR0, XX CIF 0 ENQUE BLDQB1 / QUEUE TO RXHAN BLDQR1, CIF 0 JWAIT / WAIT FOR DONE CLA TAD BLDQBK+RXQCOD SPA JMP BLDER / ERROR -1 VALUE SNA CLA JMP BLDQR1 JMP I BLDQR0 / DONE BLDER, CLA / HANDLE DISK DRIVE ERROR TAD BLDQBK+RXQDRV / GET THE ERROR DRIVE NUMBER AND BLDP7 / ISOLATE THE DRIVE NUMBER DCA BLDDRV / STORE THE ERROR DRIVE TAD BLDRWX / SET THE DEFAULT FUNCTION ADDRESS DCA BLDFNC / IT IS SET FOR READING TAD BLDQBK+RXQFNC / SEE IF IT IS READING AND BLDP77 / GET RID OF THE 4000 TAD BLDM2 / IF A 2 THEN IT IS A PHYSICAL WRITE SNA ISZ BLDFNC TAD BLDM2 / CHECK FOR A BLOCK WRITE SNA CLA ISZ BLDFNC CIFMNU JMS I IOACAL / THE ERROR MESSAGE 0 BLDERM 520 / POSITION ON THE SCREEN ROW 5 COL.20 BLDDRV, 0 / OUTPUT DRIVE OR DRIVE NUMBER WITH ERROR BLDFNC, 0 / READ/WRITE MESSAGE ADDRESS OR FUNCTION CODE BLDMSG, BLDBLK / DEFUALT IS BLOCK BLDNUM, BLDQBK+RXQBLK JMP I .+1 / RETURN NORMALLY BLDERN BLDP7, 7 BLDP77, 77 BLDM2, -2 BLDRWX, BLDRWM BLDMIN, 0 / THE VALUE OF THE MINUTES BLDSEC, 0 / THE TEMP VALUE THAT DETECTS A CHANGE IN TIME BLDTYP, 0 / LOCATION FOR ACTIVATE FEATURE BUILD TYPE DRVTYP, 0 / LOCATION FOR STORING DISK DRIVE TYPE / 0 = S.D. 8", 1 = D.D. 8", 2 = RX50 5.25" BLDQB1, DSKQUE;0;0 BLDQBK, 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 X=. / LOCATION OF FIRST FREE LOCATION ON PAGE /----------------------- PAGE /*************************************************************************** /**** START OF UTILITY BUILD PROGRAM **** /*************************************************************************** DSKBLK= .%400+DLUTL1 / DISK BLOCK WHERE PAGE IS LOADED / READ IN THE REST OF THE PROGRAM THAT DIDN'T GET LOADED BY THE WPCU2 OVERLAY BLDOPT, XX / ENTRY POINT FROM WP2CMF CMND CALL TO WPCU2 CLA / MAKE SURE THAT ACCUMULATOR IS CLEAR TAD (400) / GET STARTING BUFFER ADDRESS DCA BLDQBK+RXQBAD / SET UP BUFFER ADDRESS FOR TRANSFER TAD BLDMYF / GET CDF INSTRUCTION TO THIS FIELD DCA BLDQBK+RXQBFD / SET UP BUFFER FIELD FOR TRANSFER TAD (DLUTL2) / GET DISK BLOCK ADDRESS DCA BLDQBK+RXQBLK / SET UP DISK BLOCK FOR TRANSFER DCA BLDQBK+RXQDRV / SET UP SYSTEM DRIVE FOR TRANSFER TAD (-DSUTL2) / GET NEGATIVE NUMBER OF BLOCKS DCA X1 / SET UP COUNTER FOR TRANSFER TAD (RXERD+4000) / GET READ FUNCTION CODE DCA BLDQBK+RXQFNC / SET UP FOR A READ OPERATION / BEGIN LOOP TO READ IN REMAINDER OF PROGRAM CODE FROM DISK BLDLOP, JMS BLDQR0 / READ IN ONE DISK BLOCK TAD (400) / OFFSET TO NEXT MEMORY BLOCK ADDRESS TAD BLDQBK+RXQBAD / COMBINE WITH CURRENT MEMORY ADDRESS DCA BLDQBK+RXQBAD / STORE UPDATED MEMORY ADDRESS ISZ BLDQBK+RXQBLK / INCREMENT THE DISK BLOCK NUMBER ISZ X1 / INCREMENT THE DISK BLOCK COUNTER JMP BLDLOP / NOT DONE, GO TRANSFER THE NEXT BLOCK / PUT UP USER SELECTION MENU FOR BUILD OPTION AND DISK DRIVE BLDOVR, CIFMNU / SET BACK TO MENU FIELD JMS I MNUCAL / CALL OPTIONS MENU DLMUT1 / DISK BLOCK FOR MENU CDFMNU / SWITCH TO MENU FIELD TAD I (MUBUF+MNTMP3) / PICK UP TEMP 3 VALUE FROM MENU FIELD DCA BLDFNC / SAVE VALUE FOR BUILD FUNCTION CODE / FUNCTION = 0 FOR DICTIONARY UPDATE / FUNCTION = 1 FOR BUILD COMBINATION DISK / FUNCTION = 2 FOR BUILD ACTIVATE DISK / FUNCTION = 3 FOR BOOT RX-50 OPERATION TAD I (MUBUF+MNTMP4) / PICK UP TEMP 4 VALUE FROM MENU FIELD DCA BLDDRV / SAVE OUTPUT DRIVE NUMBER TAD I (MUBUF+MNTMP5) / PICK UP TEMP 5 VALUE FROM MENU FIELD DCA BLDTYP / SAVE ACTIVATE FEATURE BUILD TYPE BLDMYF, CDFMYF / SET BACK TO THIS FIELD / CHECK FOR A BOOT OPERATION AC7775 / SET UP TO CHECK FOR A BOOT OPERATION TAD BLDFNC / PICK UP BUILD FUNCTION CODE SZA CLA / DOES THE USER WANT TO BOOT THE RX-50'S ? JMP BLDSET / NO, GO SET THE DENSITY OF THE OUTPUT DISK / BOOT RX-50 DISK NUMBER ZERO ON A DECMATE II AC0000 / SET THE AC TO POINT TO DRIVE ZERO RXISEL / IOT TO SELECT DRIVE PAIR SPECIFIED BY AC11 AC0000 / CLEAR AC FOR PR3 REQUEST PR3 / ISSUE A PR3 REQUEST TO REBOOT THE SYSTEM 5 / REQUEST TYPE 7777 / TERMINATOR JMP BLDOVR / FOR DECMATE I SYSTEM ONLY (NO RX-50'S) / SET THE DENSITY OF THE OUTPUT DRIVE BLDSET, TAD (BLDBUF) / RESET POINTER TO BUFFER ADDRESS DCA BLDQBK+RXQBAD / STORE IN QUEUE BLOCK FOR TRANSFER TAD (BLDBLK) / SET UP MESSAGE FOR ... DCA BLDMSG / POSSIBLE BLOCK ERROR TAD BLDDRV / SET TO OUTPUT DRIVE DCA BLDQBK+RXQDRV / AND STORE IT DCA BLDQBK+RXQBLK / CLEAR DISK BLOCK NUMBER FOR ERROR REPORT TAD (RXEDN+4000) / GET AND SET DENSITY DCA BLDQBK+RXQFNC / FUNCTION CODE JMS BLDQR0 / DO IT .... TAD BLDQBK+RXQSPC / PICK UP AND SAVE DISK DRIVE TYPE DCA DRVTYP / 0 = S.D. 8", 1 = D.D. 8", 2 = RX50 5.25" / TEST FOR DICTIONARY UPDATE FUNCTION TAD BLDFNC / GET TYPE OF BUILD OPERATION SZA CLA / SKIP IF DICTIONARY UPDATE OPERATION JMP BLDDSK / GO BUILD OPTION DISKETTE CIFMNU / SWITCH TO THE MENU FIELD JMS I IOACAL / CALL DISPLAY ROUTINE 0 / DEFAULT OUTPUT ROUTINE BLDUSD / PRINT "UPDATING DICTIONARY DISKETTE" 0 / CURSOR POSITION TO CLEAR THE SCREEN 23 / CURSOR POSITION FOR "UPDATE" MESSAGE / READ THE HOME BLOCK OF THE DICTIONARY DISKETTE TAD (RXERD+4000) / SET UP READ FUNCTION DCA BLDQBK+RXQFNC AC0002 / SET THE BLOCK NUMBER TO TWO DCA BLDQBK+RXQBLK TAD BLDDRV / SET TO OUTPUT DRIVE DCA BLDQBK+RXQDRV JMS BLDQR0 / REQUEST THE READ / VERIFY THAT THE HOME BLOCK COMES FROM A DICTIONARY DISKETTE TAD (BLDDIC-1) / GET POINTER TO VALUES TABLE DCA X1 / SET UP AUTO INDEX REGISTER BLDVFY, TAD I X1 / PICK UP HOME BLOCK ADDRESS SNA / CHECK FOR END OF TABLE JMP BLDUPD / EVERYTHING MATCHES, GO UPDATE BLOCK TAD (BLDBUF) / GENERATE POINTER INTO BUFFER DCA T1 / STORE ADDRESS FOR INDIRECT OPERATION TAD I T1 / PICK UP CONTENTS OF HOME BLOCK LOCATION CIA / NEGATE VALUE FOR COMPARE TAD I X1 / COMBINE WITH VALUE FROM TABLE SNA / CHECK FOR A MATCH /M001 JMP BLDVFY / THIS ONE MATCHED, GO CHECK NEXT ONE TAD (-10) / THE DIFFERENCE BETWEEN AN ASCII "US" /A001 / & A "UK" IS 8 (10 OCTAL) /A001 SZA CLA / SKIP IF THE DIFFERENCE WAS 8 /A001 JMP BLDVFERR / ELSE GO REPORT ERROR /A001 TAD X1 / NOW SEE IF THAT IS WHERE WE WERE LOOKING/A001 TAD (-BLDDCX) / /A001 SNA CLA / SKIP TO ERROR REPORT, THE DIFF. WAS 8 /A001 / BUT IT WAS JUST COINCIDENTAL /A001 JMP BLDVFY / "UK" MUST HAVE BEEN IN HOME BLOCK /A001 / INSTEAD OF "US", TREAT AS MATCH /A001 / ERROR DETECTED - DISKETTE IS NOT A DICTIONARY DISKETTE BLDVFERR, /A001 CIFMNU / SWITCH TO THE MENU FIELD JMS I IOACAL / CALL THE DISPLAY ROUTINE 0 / DEFAULT OUTPUT ROUTINE BLDNSD / PRINT "NOT SPELLING DICTIONARY DISKETTE" 1423 / CURSOR POSITION FOR "ERROR" MESSAGE JMP BLDERN / GO WAIT FOR USER RESPONSE / WRITE OUT MODIFIED HOME BLOCK OF THE DICTIONARY DISKETTE BLDUPD, JMS BLDHOM / UPDATE THE BUILD DATE IN HOME BLOCK JMS BLDPTR / SET UP POINTER INTO BUILD TABLE #2 /A002 ISZ X4 / BUMP POINTER PAST ACTIVATE NAME /A002 JMS BLDACT / YES, MOVE POINTERS INTO HOME BLOCK /A002 TAD (RXEWT+4000) / WRITE OUT THE NEW VERSION DCA BLDQBK+RXQFNC JMS BLDQR0 / REQUEST THE WRITE JMP BLDERN / ALL DONE, GO WAIT FOR USER RESPONSE X=. / LOCATION OF FIRST FREE LOCATION ON PAGE /----------------------- PAGE DSKBLK= .%400+DLUTL1 / DISK BLOCK WHERE PAGE IS LOADED / BEGIN BUILDING OPTION DISKETTE BY DISPLAYING ELAPSED TIME CLOCK BLDDSK, CDFMNU / SWITCH TO THE MENU FIELD DCA I (CLKCHG) / CLEAR THE TIME COUNTER CDFMYF / SWITCH BACK TO THIS FIELD DCA BLDSEC / CLEAR THE SECOND COUNTER DCA BLDMIN / AND THE MINUTES CIFMNU / SWITCH TO THE MENU FIELD JMS I IOACAL / CALL SYSTEM OUTPUT ROUTINE 0 / USE DEFAULT OUTPUT ROUTINE BLDSFD / PRINT "BUILDING SPECIAL DISKETTE" 0 / CURSOR POSITION TO CLEAR THE SCREEN 23 / CURSOR POSITION FOR "BUILD" MESSAGE 1232 / CURSOR POSITION FOR "CLOCK" MESSAGE BLDCLK / PRINT "ELAPSED TIME CLOCK 0:00" / SET UP MAXIMUM NUMBER OF BLOCKS ON OUTPUT DRIVE JMS BLDCLR / INITIALIZE BUFFER FOR BUILD OPERATION TAD DRVTYP / PICK UP DRIVE TYPE (0, 1, OR 2) CLL RAL / MULTIPLY VALUE BY TWO TAD (BLKTAB-1) / MAKE POINTER INTO BLOCK TABLE DCA X1 / STORE POINTER FOR INDIRECT TAD I X1 / PICK UP MAXIMUM NUMBER OF BLOCKS DCA X5 / STORE FOR LATER USE TAD I X1 / GET MAXIMUM NUMBER OF ALLOC WORDS DCA ALCNUM / INITIALIZE LOCATION IN ALLOCATION TEMPLET / CHECK FOR KIND OF BUILD OPERATION AC7776 / SET UP FOR A TEST OF FUNCTION TYPE TAD BLDFNC / GET USER SPECIFIED FUNCTION SZA CLA / CHECK FOR ACTIVATE DISK BUILD JMP BLDCHB / NO, GO INITIALIZE COMBINATION HOME BLOCK / CLEAR ALL DISK BLOCKS DCA BLDQBK+RXQBLK / CLEAR THE BLOCK COUNTER REGISTER TAD (RXEWT+4000) / SET UP WRITE OUT COMMAND DCA BLDQBK+RXQFNC / STORE FUNCTION CODE IN QUEUE BLOCK BLDLP1, JMS BLDQRX / WRITE THE NEXT BLOCK ISZ BLDQBK+RXQBLK / INCREMENT THE BLOCK NUMBER TAD BLDQBK+RXQBLK / PICK UP CURRENT BLOCK COUNT TAD X5 / COMBINE WITH MAX COUNT SZA CLA / HAS IT REACHED MAX YET ? JMP BLDLP1 / NO, MORE TO DO, GO AGAIN / INITIALIZE DISKETTE NAME IN HOME BLOCK TEMPLET FOR AN ACTIVATE DISKETTE JMS BLDPTR / SET UP POINTER INTO BUILD TABLE #2 /A002 AC7777 / SET UP FOR A DECREMENT TAD BLDADD / GET POINTER INTO DIRECTORY BLOCK DCA X1 / STORE POINTER IN AUTO INDEX REGISTER TAD (1616) / VALUE FOR TEXT "--" DCA I X1 / STORE FIRST VALUE IN DIRECTORY BLOCK TAD I X4 / PICK UP VALUE FOR DISK NAME DCA I X1 / STORE SECOND VALUE IN DIRECTORY BLOCK TAD (1616) / VALUE FOR TEXT "--" DCA I X1 / STORE THIRD VALUE IN DIRECTORY BLOCK JMP BLDINI / GO INITIALIZE VALUES / INITIALIZE DISKETTE NAME IN HOME BLOCK TEMPLET FOR COMBINATION DISKETTE BLDCHB, JMS BLDMOV / PUT FULL NAME INTO TEMPLET BLDTB1 / ADDRESS TO START MOVE FROM BLDADD, BLDDIR+2 / ADDRESS TO MOVE TO 3 / NUMBER OF WORDS TO MOVE / INITIALIZE VALUES TO BE WRITTEN IN BLOCK ZERO FOR COS COMPATIBILITY BLDINI, JMS BLDMOV / PUT FULL NAME INTO BUFFER BLDDIR+2 / ADDRESS TO START MOVE FROM BLDBUF+2 / ADDRESS TO MOVE TO 3 / NUMBER OF WORDS TO MOVE / WRITE BLOCK ZERO TO OUTPUT DRIVE DCA BLDQBK+RXQBLK / CLEAR THE BLOCK COUNTER TAD BLDDRV / SET TO OUTPUT DRIVE DCA BLDQBK+RXQDRV / AND STORE IT TAD (RXEWT+4000) / NOW WRITE THE NEW VERSION DCA BLDQBK+RXQFNC JMS BLDQRX / REQUEST THE WRITE / INITIALIZE VALUES TO BE WRITTEN INTO HOME BLOCK JMS BLDCLR / CLEAR BUFFER JMS BLDMOV / MOVE PARAMETERS INTO BUFFER BLDDIR / ADDRESS TO MOVE FROM BLDBUF / ADDRESS TO MOVE TO BLDDXX / NUMBER OF WORDS TO MOVE JMS BLDHOM / UPDATE THE BUILD DATE IN HOME BLOCK AC7776 / SET UP TO CHECK FOR ACTIVATE DISK TAD BLDFNC / COMBINE WITH BUILD FUNCTION CODE SNA CLA / CHECK FOR ACTIVATE FEATURES DISKETTE /C002 JMS BLDACT / YES, MOVE POINTERS INTO HOME BLOCK /A002 / NO, GO WRITE OUT THE HOME BLOCK /C002 / WRITE THE HOME BLOCK BLDHBW, TAD (DLDIR) / GET BLOCK NUMBER TO PUT IT OUT TO DCA BLDQBK+RXQBLK JMS BLDQRX / DO THE WRTIE JMP BLDCN1 / JUMP AND CONTINUE ON NEXT PAGE / ROUTINE FOR CALCULATING POINTER INTO BUILD TABLE 2 FOR ACTIVATE WORDS /A002 BLDPTR, XX / CALCULATE POINTER INTO BUILD TABLE #2 /A002 DCA T1 / CLEAR COUNTER REGISTER TAD BLDTYP / PICK UP ACTIVATE FEATURE TYPE SNA / CHECK FOR ZERO VALUE JMP BLDALL / YES, BUILD DISK TO ACTIVATE ALL FEATURES BLDLP2, CLL RAR / MOVE LEAST SIGNIFICANT BIT TO LINK ISZ T1 / INCREMENT THE OFFSET VALUE SNL / CHECK FOR A BIT IN THE LINK JMP BLDLP2 / LINK'S CLEAR, GO CHECK AGAIN CLA / CLEAR ANY POSSIBLE TRASH IN AC TAD T1 / PICK UP OFFSET VALUE FROM COUNTER CLL RTL / MULTIPLY VALUE BY FOUR BLDALL, TAD (BLDTB2-1) / COMBINE WITH BUILD TABLE ADDRESS DCA X4 / SAVE POINTER INTO BUILD TABLE JMP I BLDPTR / RETURN TO CALLER /A002 / ROUTINE FOR MOVING THE ACTIVATE WORDS INTO THE HOME BLOCK /A002 BLDACT, XX / STORE ACTIVATE WORDS IN HOME BLOCK /A002 TAD (BLDBUF+340-1) / SET UP POINTER INTO HOME BLOCK DCA X1 / STORE POINTER FOR ACTIVE WORDS TAD I X4 / PICK UP BIT PATTERN FOR ACTIVATE PROCESS DCA I X1 / STORE FIRST ACTIVE WORD IN HOME BLOCK TAD I X4 / PICK UP FIRST VERSION NUMBER DCA I X1 / STORE SECOND ACTIVE WORD IN HOME BLOCK TAD I X4 / PICK UP SECOND VERSION NUMBER DCA I X1 / STORE THIRD ACTIVE WORD JMP I BLDACT / RETURN TO CALLER /A002 / TABLE OF VALUES TO BE USED FOR DISK OPERATIONS DECIMAL / SET DECIMAL MODE BLKTAB, -632;-80 / RX01 SINGLE DENSITY BLOCKS AND ALLOC WORDS -988;-125 / RX02 DOUBLE DENSITY BLOCKS AND ALLOC WORDS -790;-99 / RX50 BLOCKS AND ALLOC WORDS OCTAL / RESET BACK TO OCTAL MODE / TABLE OF VALUES USED TO VERIFY DICTIONARY DISKETTE BLDDIC, 2 / LOCATION OF FIRST WORD OF NAME BLDDCX, 6664 / ASCII VALUE FOR "US" /M001 3 / LOCATION OF SECOND WORD OF NAME 4552 / ASCII VALUE FOR "DI" /M001 4 / LOCATION OF THIRD WORD OF NAME 4465 / ASCII VALUE FOR "CT" /M001 11 / LOCATION FOR NUMBER OF DOCUMENTS 7777 / MINUS ONE MEANS NO DOCUMENTS 0 / END OF TABLE VALUE X=. / LOCATION OF FIRST FREE LOCATION ON PAGE /----------------------- PAGE / WRITE THE ALLOCATION BLOCK BLDCN1, JMS BLDCLR / CLEAR BUFFER JMS BLDMOV / MOVE PARAMETERS INTO BUFFER BLDALC / ADDRESS TO MOVE FROM BLDBUF / ADDRESS TO MOVE TO BLDAXX / NUMBER OF WORDS TO MOVE TAD (DLALOC) / GET BLOCK NUMBER TO PUT IT OUT TO DCA BLDQBK+RXQBLK JMS BLDQRX / REQUEST WRITE FOR ALLOC BLOCK / CHECK TO SEE IF WE ARE BUILDING A UTILITY COMBINATION DISKETTE AC7777 / SET UP FOR A MINUS ONE VALUE TAD BLDFNC / COMBINE WITH USER SPECIFIED OPTION SZA CLA / CHECK FOR BUILD COMBINATION DISKETTE JMP BLDCHK / NO, IGNORE SOFTWARE TRANSFER ROUTINE / SET UP POINTERS FOR SOFTWARE TRANSFER TO UTILITY COMBINATION DISKETTE AC0002 / SET UP FOR AN OFFSET ADJUSTMENT TAD (BLDTB1) / COMBINE WITH POINTER TO DISK NAME DCA X1 / STORE IN AUTO INDEX REGISTER TAD I X1 / PICK UP INPUT DRIVE STARTING BLOCK NUMBER DCA T1 / STORE IN INPUT BLOCK NUMBER REGISTER TAD I X1 / PICK UP OUTPUT DRIVE STARTING BLOCK NUMBER DCA T2 / STORE IN OUTPUT BLOCK NUMBER REGISTER TAD I X1 / PICK UP COUNT OF NUMBER OF BLOCKS DCA T3 / STORE IN BLOCK COUNTER REGISTER / TRANSFER UTILITY SOFTWARE TO UTILITY DISKETTE BLDXFR, DCA BLDQBK+RXQDRV / SET TO DRIVE ZERO TAD T1 / PICK UP CURRENT INPUT DRIVE BLOCK NUMBER DCA BLDQBK+RXQBLK / STORE BLOCK NUMBER IN QUEUE BLOCK TAD (RXERD+4000) / PICK UP READ COMMAND DCA BLDQBK+RXQFNC / STORE COMMAND IN QUEUE BLOCK JMS BLDQRX / REQUEST THE READ COMMAND TAD BLDDRV / PICK UP NUMBER OF OUTPUT DRIVE DCA BLDQBK+RXQDRV / SET TO OUTPUT DRIVE TAD T2 / PICK UP CURRENT OUTPUT DRIVE BLOCK NUMBER DCA BLDQBK+RXQBLK / STORE BLOCK NUMBER IN QUEUE BLOCK TAD (RXEWT+4000) / PICK UP WRITE COMMAND DCA BLDQBK+RXQFNC / STORE COMMAND IN QUEUE BLOCK JMS BLDQRX / REQUEST THE WRITE COMMAND ISZ T1 / INCREMENT INPUT DRIVE BLOCK NUMBER ISZ T2 / INCREMENT OUTPUT DRIVE BLOCK NUMBER ISZ T3 / INCREMENT BLOCK COUNT JMP BLDXFR / NOT DONE, GO AGAIN / READ ALL DISK BLOCKS TO VERIFY THIER INTEGRITY BLDCHK, DCA BLDQBK+RXQBLK / SET THE BLOCK TO ZERO TAD (RXERD+4000) / SET FOR READING DCA BLDQBK+RXQFNC BLDDV1, JMS BLDQRX / READ THE NEXT BLOCK ISZ BLDQBK+RXQBLK / INCREMENT THE BLOCK NUMBER TAD BLDQBK+RXQBLK / PICK UP CURRENT BLOCK COUNT TAD X5 / COMBINE WITH MAX COUNT SZA CLA / HAS IT REACHED MAX YET ? JMP BLDDV1 / NO, MORE TO DO, GO AGAIN BLDERN, CIFMNU / SWITCH TO MENU FIELD JMS I IOACAL / CALL DISPLAY ROUTINE 0 / DEFAULT OUTPUT ROUTINE BLDRET / ADDRESS "PRESS RETURN" MESSAGE 2332 / CURSOR POSITION TO DISPLAY MESSAGE 2700 / MOVE CURSOR TO BOTTOM OF SCREEN / THIS ROUTINE WILL WAIT FOR A GOLD MENU OR RETURN TO BE TYPED BY THE USER. / A GOLD MENU OR A RETURN WILL CAUSE A RETURN TO THE BUILD DISKETTE MENU. / ALL OTHER CHARACTERS WILL RING THE BELL. JMP BLDWFR / CHECK FOR CHARACTER FROM THE KEYBOARD CIF 0 / CHANGE TO USER FIELD ZERO JWAIT / WAIT FOR SYSTEM INTERRUPT BLDWFR, CIF 0 / CHANGE TO USER FIELD ZERO XLTIN / READ THE KEYBOARD JMP .-4 / IF NOTHING TYPED THEN WAIT TAD (-EDMENU) / CHECK FOR A GOLD MENU SZA TAD (EDMENU-EDNWLN) / NOW CHECK FOR A RETURN SNA CLA JMP BLDOVR / GOLD MENU OR RETURN WAS TYPED / GO TO BUILD MENU / THIS ROUTINE WILL RING THE BELL IN RESPONSE TO SOME USER ERROR TAD (7) / GET ASCII BELL CODE JMP .+3 / SKIP OVER WAIT COMMAND CIF 0 / CHANGE TO USER FIELD ZERO JWAIT / WAIT FOR SYSTEM INTERRUPT CIF 0 / CHANGE TO USER FIELD ZERO TTYOU / TRY TO TYPE THE CHARACTER JMP .-4 / NOT SUCCESSFUL - GO TRY AGAIN JMP BLDWFR / GO BACK FOR ANOTHER CHARACTER X=. / LOCATION OF FIRST FREE LOCATION ON PAGE /----------------------- PAGE DSKBLK= .%400+DLUTL1 / DISK BLOCK WHERE PAGE IS LOADED / ROUTINE TO CLEAR THE BUFFER BLDCLR, XX / CLEAR THE BUFFER ROUTINE TAD (-400) / SET THE COUNTER FOR THE BUFFER DCA X1 TAD (BLDBUF-1) / SET THE ADDRESS OF THE BUFFER DCA X2 TAD (COSCNT) / FIRST WORD FOR COS COMPATABILITY BLDLUP, DCA I X2 / CLEAR THE NEXT LOCATION ISZ X1 / INCREMENT THE COUNTER JMP BLDLUP JMP I BLDCLR / RETURN TO CALLER / ROUTINE TO READ AND WRITE DISK BLOCKS BLDQRX, XX / DO DISK OPERATION AND UPDATE TIME CLOCK JMS BLDQR0 / REQUEST DISK OPERATION CDFMNU / SWITCH TO THE MENU FIELD TAD I (CLKCHG) / PICK UP FLAG FOR TIME CHANGE CDFMYF / SWITCH BACK TO THIS FIELD SPA / HAS THE TIME CHANGED ? JMP BLDTM4 / NO, RETURN TO CALLER BLDTM1, ISZ BLDSEC / INCREMENT SECOND COUNT TAD (-12) / SUBTRACT OFF A SECOND'S WORTH OF CHANGE SMA / DID MORE THAN A SECOND GO BY ? JMP BLDTM1 / YES, GO INCREMENT THE SECOND COUNT CDFMNU / SWITCH TO THE MENU FIELD DCA I (CLKCHG) / STORE NEW VALUE FOR CLOCK FLAG CDFMYF / SWITCH BACK TO THIS FIELD TAD BLDSEC / COMPUTE NEW TIME - GET SECOND COUNT BLDTM2, TAD (-74) / SUBTRACT OFF A MINUTE'S WORTH OF CHANGE SPA / DID WE CROSS THE MINUTE LIMIT ? JMP BLDTM3 / NO, GO RESTORE THE SECOND COUNT ISZ BLDMIN / YES, INCREMENT THE MINUTE COUNT JMP BLDTM2 / GO CONTINUE THE CHECK BLDTM3, TAD (74) / RESTORE THE SECOND COUNT DCA BLDSEC / STORE UPDATED SECOND COUNT CIFMNU / SWITCH TO MENU FIELD JMS I IOACAL / PRINT TIME WHEN IT CHANGES 0 / USE DEFAULT OUTPUT ROUTINE BLDTMT / TIME MESSAGE 1257 / SCREEN POSITION FOR TIME BLDMIN / VALUE FOR MINUTES BLDSEC / VALUE FOR SECONDS BLDTM4, CLA / NEEDED BECAUSE OF THE "SPA - JMP" ABOVE JMP I BLDQRX / RETURN TO CALLER / ROUTINE TO MOVE A BLOCK OF MENORY WITHIN THIS FIELD / CALL IS AS FOLLOWS: / / JMS BLDMOV / CALL MOVE ROUTINE / ADDRESS OF FROM / DEFINE FROM ADDRESS / ADDRESS OF TO / DEFINE TO ADDRESS / NUMBER TO MOVE / DEFINE NUMBER OF WORDS TO MOVE / RETURN / NORMAL RETURN ADDRESS BLDMOV, XX AC7777 / SET A.C. EQUAL TO MINUS ONE TAD I BLDMOV / SUBTRACT ONE FROM THE FROM ADDRESS ISZ BLDMOV / INCREMENT RETURN ADDRESS DCA X0 / STORE VALUE IN AUTOINDEXING REGISTER AC7777 / SET A.C. EQUAL TO MINUS ONE TAD I BLDMOV / SUBTRACT ONE FROM THE TO ADDRESS ISZ BLDMOV / INCREMENT RETURN ADDRESS DCA X1 / STORE VALUE IN AUTOINDEXING REGISTER TAD I BLDMOV / GET VALUE FOR NUMBER OF WORDS ISZ BLDMOV / INCREMENT RETURN ADDRESS CIA / MAKE THE VALUE NEGATIVE DCA X2 / STORE VALUE IN AUTOINDEXING REGISTER BLDMOR, TAD I X0 / GET MEMORY VALUE FROM "FROM" ADDRESS DCA I X1 / STORE MEMORY VALUE IN "TO" ADDRESS ISZ X2 / INCREMENT NUMBER OF WORDS TO TRANSFER JMP BLDMOR / NOT DONE, GO DO SOME MORE JMP I BLDMOV / RETURN BACK TO CALLER / ROUTINE TO INITIALIZE VALUES TO BE WRITTEN INTO HOME BLOCK BLDHOM, XX / INITIALIZE HOME BLOCK VALUES CDFSYS / GET A UNIQUE VALUE FOR ... TAD I (RANDOM) / DISKETTE IDENTIFICATION CDFMYF / SWITCH BACK TO THIS FIELD DCA BLDBUF+5 / SAVE IT IN THE HOME BLOCK TAD (BLDDY^100+BLDMO) / GET DAY AND MONTH OF BUILD DCA BLDBUF+7 / SAVE IT IN THE HOME BLOCK TAD (BLDYR) / GET YEAR OF BUILD DCA BLDBUF+10 / SAVE IT IN THE HOME BLOCK JMP I BLDHOM / RETURN TO CALLER X=. / LOCATION OF FIRST FREE LOCATION ON PAGE /----------------------- PAGE DSKBLK= .%400+DLUTL1 / DISK BLOCK WHERE PAGE IS LOADED BLDTB1, 7061; 6466; 6555 / COMBINATION DISKETTE NAME - WPSUTL ... DLUTLS; DLUTLS; -DSUTLS / ...INPUT & OUTPUT DISK BLOCK & MINUS SIZE BLDTB2, 4255; 1777; 6065; 6365 / AL - 0 - 0.5 - 3.5 - ACTIVATE ALL FEATURES 6242; 0001; 6271; 6371 / QA - 1 - 2.9 - 3.9 - Q.A. TEST FUNCTION 4456; 0002; 6065; 6365 / CM - 2 - 0.5 - 3.5 - COMMUNICATIONS 5561; 0004; 6065; 6365 / LP - 3 - 0.5 - 3.5 - LIST PROCESSING 6463; 0010; 6065; 6371 / SR - 4 - 0.5 - 3.9 - MULTI KEY SORT 5642; 0020; 6065; 6371 / MA - 5 - 0.5 - 3.9 - L.P. & EDITOR MATH 6445; 0040; 6065; 6371 / SD - 6 - 0.5 - 3.9 - SPELLING CORRECTOR 7061; 0100; 6271; 6371 / WP - 7 - 2.9 - 3.9 - NOT VALID FUNCTION 7061; 0200; 6271; 6371 / WP - 8 - 2.9 - 3.9 - NOT VALID FUNCTION 7061; 0400; 6271; 6371 / WP - 9 - 2.9 - 3.9 - NOT VALID FUNCTION 7061; 1000; 6271; 6371 / WP - 10 - 2.9 - 3.9 - NOT VALID FUNCTION 7061; 2000; 6065; 6365 / WP - 11 - 0.5 - 3.5 - DEVELOPMENT OPTIONS 7061; 4000; 6271; 6371 / WP - 12 - 2.9 - 3.9 - RESERVED FOR EXTENSION BLDDIR, COSCNT / HOME BLOCK DIRECTORY 130 / VERSION 1 0 / OPTION DISKETTE NAME - WORD ONE 0 / OPTION DISKETTE NAME - WORD TWO 0 / OPTION DISKETTE NAME - WORD THREE 0 / THE UNIQUE DISKETTE NUMBER WHICH IS "RANDOM" DLALOC / BLOCK NUMBER OF ALLOC BLOCK 0;0 / CREATE DATE -1 / NUMBER OF FILES BLDDXX=.-BLDDIR / DEFINE LENGTH OF DIRECTORY TABLE BLDALC, COSCNT / BLOCK ALLOCATION DIRECTORY 40 / ALLOC BLOCK - 0 MEANS DOCUMENT DISKETTE DECIMAL 0 / NUMBER OF BLOCKS IN FILE SYSTEM 0 / NUMBER OF FREE BLOCKS TO START ALCNUM, 0 / NUMBER OF ALLOC WORDS OCTAL BLDAXX=.-BLDALC / DEFINE LENGTH OF ALLOC BLOCK TABLE / THESE ARE THE CONSTANTS AND ADDRESSES USED BY THE ERROR MESSAGE. BLDRWM, BLDRED / THE ADDRESS OF THE STRING THAT SAYS READ BLDWRT / THE ADDRESS OF THE WRITE MESSAGE STRING BLDWRT, TEXT 'WRITE' BLDRED, TEXT 'READ' BLDBLK, TEXT 'BLOCK' BLDTRK, TEXT 'TRACK' BLDTMT, TEXT '^P!D:!2D' BLDUSD, TEXT '^P!E^P-- &UPDATING &SPELLING &DICTIONARY &DISKETTE --' BLDNSD, TEXT '^P!&ERROR - &NOT &VALID &SPELLING &DICTIONARY &DISKETTE' BLDSFD, TEXT '^P!E^P-- &BUILDING &SPECIAL &FEATURE &DISKETTE --^P^S' BLDCLK, TEXT '!&ELAPSED !&TIME !&CLOCK 0:00' BLDERM, TEXT '^P&ERROR ON DRIVE ^D WHILE TRYING TO !S ^S !D!E' BLDRET, TEXT '^P&PRESS !&RETURN TO CONTINUE^P' BLDBUF, ZBLOCK 400 BLDEND=. / LAST LOCATION USED THIS FIELD /*************************************************************************** /**** FIRST MENU PAGE FOR UTILITY BUILD PROGRAM **** /*************************************************************************** RELOC / RESET RELOCATION COUNTER ADMUT1=. / MEMORY ADDRESS FOR MENU BLOCK DSKBLK=DLMUT1 / DISK BLOCK WHERE MENU IS LOADED RELOC 0 / FIRST MENU BLOCK FOR UTILITY PROBRAM UT1ST, DISP;0;TEXT '!E--^S!&SPECIAL !&FEATURE^S --';CAPBLD;CAPDSK DISP;524;TEXT '&VERSION ^A &DATED !2D-!2D-!2D' UT1LST;BLDMON;BLDDAY;BLDYER DISP;1120;TEXT '&A = ^S&ACTIVATE &FEATURE ^S';TXTBLD;TXTDSK DISP;1320;TEXT '&B = &BOOT !&RX-50 &SYSTEM ^S';TXTDSK DISP;1520;TEXT '&D = &UPDATE &SPELLING &DICTIONARY ^S';TXTDSK DISP;1720;TEXT '&U = ^S&UTILITY &COMBINATION ^S';TXTBLD;TXTDSK UT1ERR, DISP;2424;TEXT '!E&TYPE THE LETTER^S';TXTPRS CLRV;STOV;MNTMP5 / CLEAR ACCUMULATOR AND BUILD TYPE READ;MNTMP1;UT1ERR / GET A RESPONSE FROM THE USER ARG;UT1ST;MNTMP1 / CHECK FOR A NULL RESPONSE KEYWRD TEXT 'A ';UT1A / USER SELECTED ACTIVATE DISK BUILD TEXT 'B ';UT1B / USER SELECTED BOOT SYSTEM DISKETTE TEXT 'D ';UT1D / USER SELECTED DICTIONARY UPDATE TEXT 'U ';UT1U / USER SELECTED UTILITY DISK BUILD GOTO;UT1ERR / INVALID RESPONSE, HANDLE ERROR UT1B, INCV / (3) HERE FOR BOOT SYSTEM DISKETTE UT1A, INCV / (2) HERE FOR ACTIVATE DISKETTE UT1U, INCV / (1) HERE FOR COMBINATION DISKETTE UT1D, STOV;MNTMP3 / (0) HERE FOR DICTIONARY UPTATE CASE;MNTMP3;3;UT1RET / TRAP FOR BOOT OPERATION TRNSFR;UT2RD;DLMUT2 / GO CONTINUE ON NEXT PAGE UT1RET, RETURN / GO BOOT THE SYSTEM DISK UT1LST, SYSVER; ". / DISPLAY SYSTEM VERSION NUMBER SYSBAS; ". / DISPLAY SYSTEM BASE LEVEL NUMBER SYSREV; 0 / DISPLAY BASE LEVEL REVISION NUMBER BLDDAY, BLDDY / DAY SOFTWARE WAS BUILT BLDMON, BLDMO / MONTH SOFTWARE WAS BUILT BLDYER, BLDYR / YEAR SOFTWARE WAS BUILT TXTBLD=.+1 / OFFSET FOR BUILD TEXT WORD CAPBLD, TEXT ' !&BUILD ' / TEXT FOR CAPITALIZED BUILD WORD TXTDSK=.+1 / OFFSET FOR DISKETTE TEXT WORD CAPDSK, TEXT ' !&DISKETTE' / TEXT FOR CAPITALIZED DISKETTE WORD TXTPRS, TEXT ' AND PRESS !&RETURN' XTRUT1=400-. IFZERO .-401&4000 /*************************************************************************** /**** SECOND MENU PAGE FOR UTILITY BUILD PROGRAM **** /*************************************************************************** RELOC / RESET RELOCATION COUNTER ADMUT2=. / MEMORY ADDRESS FOR MENU BLOCK DSKBLK=DLMUT2 / DISK BLOCK WHERE MENU IS LOADED RELOC 0 / SECOND MENU BLOCK FOR UTILITY PROBRAM UT2RD, DISP;1110 TEXT '!E&TYPE THE NUMBER OF THE DRIVE THAT CONTAINS THE^S';UT2DSK DISP;1310;TEXT 'TO BE INITIALIZED AND PRESS !&RETURN' UT2RD1, READ;MNTMP1;UT2RTN / GET A RESPONSE FROM THE USER ARG;UT2RTN;MNTMP1 / CHECK FOR A NULL RESPONSE NUMBER;MNTMP4;UT2ERR / CHECK FOR A NUMBER RANGE;MNTMP4;1;3;UT2ERR / CHECK FOR A VALID DRIVE NUMBER CASE;MNTMP3 0;-1-UT3SED;DLMUT3 / CHECK FOR DICTIONARY UPDATE FUNCTION /A002 2;UT2BLD / CHECK FOR BUILD ACTIVATE DISK OPTION RETURN / GOT EVERYTHING, RETURN TO CALLER UT2RTN, TRNSFR;UT1ST;DLMUT1 / RETURN BACK TO MAIN UTILITY MENU UT2ERR, DISP;2715;TEXT '&VALID DRIVE NUMBERS ARE 1, 2, AND 3' GOTO;UT2RD1 UT2BLD, DISP; 500;TEXT '!E' DISP; 520;TEXT '&A = ^S- &ACTIVATE !&ALL &FEATURES -^S';UT2BUI;UT2DSK DISP; 720;TEXT '&C = ^S&COMMUNICATIONS^S';UT2BUI;UT2DSK DISP;1120;TEXT '&D = ^S&SPELLING &CORRECTOR^S';UT2BUI;UT2DSK DISP;1320;TEXT '&L = ^S&LIST &PROCESSING^S';UT2BUI;UT2DSK DISP;1520;TEXT '&M = ^S&L.&P. AND &EDITOR &MATH^S';UT2BUI;UT2DSK DISP;1720;TEXT '&S = ^S&MULTI &KEY &SORT^S';UT2BUI;UT2DSK DISP;2120;TEXT '&T = ^S&Q. &A. &TEST^S';UT2BUI;UT2DSK TRNSFR;UT3S;DLMUT3 / CONTINUE ON NEXT PAGE UT2BUI, TEXT '&BUILD ' / BUILD TEXT FOR ABOVE MESSAGES UT2DSK, TEXT ' &DISKETTE ' / DISKETTE TEXT FOR ABOVE MESSAGES XTRUT2=400-. IFZERO .-401&4000 /*************************************************************************** /**** THIRD MENU PAGE FOR UTILITY BUILD PROGRAM **** /*************************************************************************** RELOC / RESET RELOCATION COUNTER ADMUT3=. / MEMORY ADDRESS FOR MENU BLOCK DSKBLK=DLMUT3 / DISK BLOCK WHERE MENU IS LOADED RELOC 0 / THIRD MENU BLOCK FOR UTILITY PROBRAM UT3S, DISP;2505;TEXT '!E&TYPE THE &LETTER FOR THE &FEATURE TO BE BUILT' DISP;-1;TEXT ' AND &PRESS !&RETURN, OR' DISP;2605;TEXT '&JUST &PRESS !&RETURN TO RECALL THE &MAIN &MENU.' UT3RD, READ;MNTMP1;UT3RTN / READ CHARACTERS FROM KEYBOARD ARG;UT3RTN;MNTMP1 / GET POINTER TO CHARACTER & XFER IF NULL KEYWRD TEXT 'A ';UT3ALL / ALL FEATURES DISKETTE TEXT 'C ';UT3COM / COMMUNICATION DISKETTE TEXT 'D ';UT3SED / SPELLING DETECTION DISKETTE TEXT 'L ';UT3LP / LIST PROCESSING DISKETTE TEXT 'M ';UT3MA / L.P. AND EDITOR MATH DISKETTE TEXT 'S ';UT3SR / SORT DISKETTE TEXT 'T ';UT3TST / Q. A. TEST DISKETTE TEXT 'U ';UT3UD / DEVELOPMENT OPTION - UPDATE DICTIONARY GOTO; UT3S / ERROR - CHARACTER HAS NO MEANING UT3RTN, TRNSFR;UT1ST;DLMUT1 / GO BACK TO MAIN UTILITY MENU UT3ALL, SET;0;MNTMP5 / SET UP FOR ACTIVATING ALL FEATURES RETURN / RETURN TO UTILITY MODULE TO BUILD DISKETTE UT3COM, SET;COMBIT;MNTMP5 / SET UP FOR COMMUNICATIONS DISKETTE RETURN / RETURN TO UTILITY MODULE TO BUILD DISKETTE UT3SED, SET;SEDBIT;MNTMP5 / SET UP FOR SPELLING DETECTION DISKETTE RETURN / RETURN TO UTILITY MODULE TO BUILD DISKETTE UT3LP, SET;LPBIT;MNTMP5 / SET UP FOR LIST PROCESSING DISKETTE RETURN / RETURN TO UTILITY MODULE TO BUILD DISKETTE UT3MA, SET;MABIT;MNTMP5 / SET UP FOR L.P. AND EDITOR MATH DISKETTE RETURN / RETURN TO UTILITY MODULE TO BUILD DISKETTE UT3SR, SET;SRBIT;MNTMP5 / SET UP FOR SORT DISKETTE RETURN / RETURN TO UTILITY MODULE TO BUILD DISKETTE UT3TST, SET;HWDBIT;MNTMP5 / SET UP FOR Q. A. DISKETTE RETURN / RETURN TO UTILITY MODULE TO BUILD DISKETTE UT3UD, SET;DEVBIT;MNTMP5 / SET UP FOR DEVELOPMENT DISKETTE RETURN / RETURN TO UTILITY MODULE TO BUILD DISKETTE XTRUT3=400-. IFZERO .-401&4000