ASMB,R,L,C HED SWTCH - TRANSFERS FILE CONTAINING RTE-IV SYSTEM GENERATED ONLINE NAM SWTCH,3,10 92067-16010 REV.1926 790425 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 2 **************************************** * * NAME: SWTCH-IV * SOURCE: 92067-18010 * BINARY: 92067-16010 * WRITTEN BY: KFH * **************************************** SPC 2 * * TURN - ON SEQUENCE: * * RU,SWTCH,FLNAME:SC:LB,CHANNEL,SUBCHANNEL/UNIT,AUTO,FILES,TYPE6,INITS * * WHERE: * * FLNAME:SC:LB IS THE ABSOLUTE FILE NAME OF THE SYSTEM * CHANNEL IS THE OCTAL TARGET CHANNEL, WITH A "B" APPENDED * SUBCHANNEL IS THE TARGET 7900 SUBCHANNEL * OR * UNIT IS THE TARGET 7905/7920 UNIT * AUTO IS Y/N, FOR AUTO BOOT-UP * FILES IS Y/N, FOR SAVING THE TARGET FILE SYSTEM * TYPE6 IS Y/N, FOR PURGING THE TYPE 6 FILES AT THE TARGET * INITS IS Y/N, FOR INITIALIZING ANY ADDITIONAL SUBCHANNELS SPC 2 * * * THE ON-LINE RTE GENERATOR PRODUCES AN FMP FILE CONTAINING * A COMPLETE RTE-IV SYSTEM FOR A SPECIFIC CONFIGURATION. * SWTCH COPIES THE FILE ONTO THAT CHANNEL AND SUBCHANNEL(UNIT), OR * TO A USER-SPECIFIED 'TEMPORARY' CHANNEL AND SUBCHANNEL(UNIT). * AND BEFORE THE TRANSFER BEGINS, THE FILE IS CHECKED FOR VALIDITY, * THE OPERATOR IS NOTIFIED OF THE DESTINATION CONFIGURATION, * INCLUDING THE SYSTEM SUBCHANNEL DEFINITION. * * IF THE NEW RTE SYSTEM OVERLAYS THE CURRENT SYSTEM, A NEW * FMP SETUP (INITIALIZED) CODE WORD IS COMPUTED AND WRITTEN * INTO THE FMP CARTRIDGE DIRECTORY SO THAT ON BOOTUP, FMP * WILL REMAIN INTACT (INITIALIZED). SKP * ENTRY POINTS * ENT SWTCH * ENT \SWTM ENT \DFTR,\DSHD,\DNSU,\DNSP,\DNTR,\DSUB ENT \TUNT,\TCH,\TSUB,\DUNT ENT \INIT,\LNTH ENT \BUFA,\XOUT,\SAVE ENT \TRAK,\SECT ENT \CVAS,\CLEN,\DSPL,\BLIN ENT \FFMP,\STRK ENT \BOOT,\TMT,\LU2 * * EXTERNAL ENTRY POINTS * EXT RMPAR,EXEC,$LIBR EXT OPEN,READF,LOCF,CLOSE EXT $LIBR,$LIBX * EXT \DSK0,\DSK5 EXT \INP0,\INP5 EXT \INT0,\INT5 EXT \STD0,\STD5 EXT CNUMD,GETST EXT \FLGT,\SETD,\BADH * IFN EXT DBUG XIF * SPC 2 A EQU 0 B EQU 1 SUP SKP * HEADER RECORD #1 FORMAT * * ------------------------------------ * !1! SYSTEM SUBCHANNEL # ! * ------------------------------------ * ! SYSTEM EQT # ! * ------------------------------------ * ! NUMBER OF EQT'S ! * ------------------------------------ * ! PRIV. INT. CHANNEL ! * ------------------------------------ * ! TBG CHANNEL ! * ------------------------------------ * ! # SUBCHANNELS ! TTY CHANNEL ! * ------------------------------------ * ! CHANNEL # ! EQT TYPE ! FOR EQT #1 * ------------------------------------ * ! CHANNEL # ! EQT TYPE ! FOR EQT #2 * ------------------------------------ * . . * . . * . . * ------------------------------------ * ! CHANNEL # ! EQT TYPE ! FOR EQT #N * ------------------------------------ SPC 2 * HEADER RECORD #2 FORMAT * * FOR A 7905/6/20 SYSTEM: * * ------------------------------------ * ! FIRST CYLINDER # ! ONE 4-WORD * ------------------------------------ * ! # SUFACES ! STARTING HEAD ! UNIT ! ENTRY FOR * ------------------------------------ * ! NUMBER OF TRACKS ! SUBCHANNELS * ------------------------------------ * ! NUMBER OF SPARES ! 0 THRU 31 * ------------------------------------ * * FOR A 7900 SYSTEM: * * ------------------------------------ * ! FIRST TRACK # ! SUBCHANNEL 0 * ------------------------------------ * . SUBCHANNELS 1 * . * . THRU 7 * ------------------------------------ * ! NUMBER OF TRACKS ! SUBCHANNEL 0 * ------------------------------------ * . SUBCHANNELS 1 * . * . THRU 7 SKP SPC 4 *------------------------------------------------------------------------ * * THE FOLLOWING 6144 WORDS WILL BE OVERLAID * ONCE THE TRANSFER PROCESS BEGINS. BUFR * WILL CONTAIN ONE TRACK'S WORTH OF INFO. * *------------------------------------------------------------------------ SPC 4 BUFR BSS 128 BUFFER FOR 1 FULL TRACK (6144 WORDS) * * MES1 DEF *+1 ASC 22, ****** W A R N I N G ****** MES2 DEF *+1 ASC 23,ALL ACTIVITY MUST BE TERMINATED BEFORE SYSTEM ASC 9,TRANSFER PROCESS. SPC 2 BSS 384+BUFR-* NEED TO READ IN 3 RECORDS AT VERF1 SPC 2 MES3 DEF *+1 ASC 14,FILE NAME OF NEW RTE SYSTEM? MES4 DEF *+1 ASC 9,ILLEGAL FILE NAME MES5 DEF *+1 ASC 15,NEW SYSTEM I/O CONFIGURATION: MES6 DEF *+1 ASC 18,SELECT CODE XX PRIVILEGED INTERRUPT MES6A DEF MES6+7 MES7 DEF *+1 ASC 9,SELECT CODE XX TBG MES7A DEF MES7+7 MES8 DEF *+1 ASC 11,SELECT CODE XX TYPE=XX MES8A DEF MES8+7 MES8B DEF MES8+11 MES9 DEF *+1 ASC 24,NEW SYSTEM (LU2) SELECT CODE= XX SUBCHANNEL= XX MES9A DEF MES9+16 MES9B DEF MES9+24 MES10 DEF *+1 ASC 12,PLATTER XX FIRST TRACK# MS10A ASC 9,XXXX #TRACKS XXXX MS10C DEF MS10A MS10D DEF MS10A+7 MES11 DEF *+1 ASC 20, HEAD# X #TRACKS XXXX #SURFACES X MS11C DEF *+1 ASC 20, UNIT# X FIRST CYL# XXXX #SPARES X MS11A DEF MES11+12 MS11B DEF MS11C+12 MS11D DEF MS11C+20 MES12 DEF *+1 ASC 25,TARGET SELECT CODE FOR NEW SYSTEM? (XX OR " "CR) MES13 DEF *+1 ASC 14,TARGET PLATTER/UNIT FOR NEW ASC 11,SYSTEM? (X OR " "CR) MES14 DEF *+1 ASC 20,NEW SYSTEM WILL OVERWRITE FILE XXXXXX. MES16 DEF *+1 ASC 23,NOW IS THE TIME TO INSERT CORRECT CARTRIDGE IN MES17 DEF *+1 ASC 21,TARGET PLATTER/UNIT. (" "CR TO CONTINUE) MES18 DEF *+1 ASC 16,SAVE FILES AT TARGET? (Y OR N) MES19 DEF *+1 ASC 19,NEW SYSTEM WILL DESTROY SOME FMP FILES MES20 DEF *+1 ASC 12,OK TO PROCEED? (Y OR N) MES22 DEF *+1 ASC 15,PURGE TYPE 6 FILES? (Y OR N) MES23 DEF *+1 ASC 19, INFORMATION STORED ON PLATTER/UNIT XX ASC 14, OF TARGET SELECT CODE XX MS23B DEF *+1 ASC 9, WILL BE DESTROYED MS23A DEF MES23+32 MES24 DEF *+1 ASC 12,AUTO BOOT-UP? (Y OR N) MES25 DEF *+1 ASC 25,PRESENT CONFIGURATION DOESN'T PERMIT AUTO BOOT-UP. MES26 DEF *+1 ASC 22,SYSTEM WILL HALT AFTER TRANSFER COMPLETION. MES32 DEF *+1 ASC 17,READY TO TRANSFER. OK TO PROCEED? MES34 DEF *+1 ASC 18,INITIALIZE SUBCHANNELS ? (Y OR N) MS34A DEF MES34+12 "L" ASC 1,L MES35 DEF *+1 ASC 15,TARGET PLATTER? (XX OR " "CR) MES36 DEF *+1 ASC 16,TARGET UNIT XX FOR SUBCHANNELS MS36A ASC 24, ASC 20, ASC 24, COMBL ASC 1,, MS36B DEF MS36A MES37 DEF *+1 ASC 16,DESTN. UNIT XX FOR SUBCHANNELS MS37A ASC 24, ASC 20, ASC 24, MS37B DEF MS37A MES38 DEF *+1 ASC 14,TARGET UNIT? (XX OR " "CR) * SWAP0 DEF *+1 ASC 3,SWSG1 7900 DISK DRIVER SEGMENT SWAP5 DEF *+1 ASC 3,SWSG2 7905/7920 DISK DRIVER SEGMENT SKP * CONSTANTS * B177 OCT 177 B777 OCT 777 B1774 OCT 177400 B2060 OCT 20060 * N7 DEC -7 N31 DEC -31 N64 DEC -64 N89 DEC -89 * P12 DEC 12 P14 DEC 14 P17 DEC 17 P28 DEC 28 P64 DEC 64 P98 DEC 98 P512 DEC 512 * SKP * * * F$TB SEARCHES THE RESIDENT LIBRARY ENTRY POINT * LIST FOR THE APPROPRIATE TRACK MAP TABLE, * $TB31 OR $TB32 (DEPENDENT UPON THE SOURCE * DISK TYPE), AND RETURNS IT IN BUFR. * * CALLING SEQUENCE: JSB F$TB * DEF .1 OR .2 * F$TB NOP LDA #LEP GET # OF LIBRARY ENTRY POINTS MPY P4 4 WORDS PER ENTRY STA LEPL SAVE SIZE OF L.E.P. LIST * LDA ALEP GET DISK ADDRESS OF LEP LIST LDB A ALF,ALF RAL AND B777 STA LTRK SAVE THE TRACK LDA B AND B177 F$T3 STA LSEC AND SECTOR ADA N89 DETERMINE IF THE SECTOR RESULTS IN SSA LESS THAN 512 WORDS LEFT ON TRACK JMP F$T1 <89 INA SEE HOW MANY SECTORS LESS MPY P64 CMA,INA AND SUBTRACT FROM ADA P512 512 MAX STA LLEN LENGTH OF READ JMP F$T0 F$T1 LDA LEPL JSB GTLEN GET READ LENGTH F$T0 JSB READD READ IT * CLB LDA LLEN DIV P4 GET THE # OF ENTRIES READ IN CMA,INA NEGATE STA LCNT LOOP COUNTER LDB \BUFA F$T2 STB BPTR * LDA $T CPA B,I A "$T"? INB,RSS JMP NOTIT NO LDA B3 CPA B,I A "B3"? INB,RSS JMP NOTIT NO LDA F$TB,I LDA A,I GET "1" OR "2" XOR B,I AND B1774 SZA,RSS A MATCH? JMP F$T7 YES!! * NOTIT ISZ LCNT DONE WITH CURRENT BUFFER? RSS JMP F$T4 YES LDB BPTR ADB P4 JMP F$T2 * F$T4 LDA LLEN SEE IF ALL WERE SEARCHED CMA ADA LEPL SSA IF WE'VE GONE THRU THE ENTIRE LEP JMP ABF$ THEN ITS NOT THERE, SO ABORT SWTCH INA STA LEPL NEW # LEFT * LDB LSEC DETERMINE IF TRACK CROSSING ADB N89 IF >= 88 THEN THERE WILL BE INB SSB JMP F$T5 NOPE * ISZ LTRK YES, INCREMENT TO NEXT TRACK CLB STB LSEC SET NEXT SECTOR TO 0 JMP F$T1 SET LENGTH OF READ * F$T5 LDA LSEC INCREMENT TO NEXT STARTING ADA P8 SECTOR JMP F$T3 SET LENGTH OF READ * F$T7 STB LCNT TEMPORARY SAVE LDB P17 DETERMINE IF WE'RE TO READ LDA SEQT IN A $TB31 (17 WORDS), OR SLA,RSS A $TB32 (98 WORDS) LDB P98 STB LLEN * LDB LCNT RESTORE ENTRY POINTER LDA B,I DETERMINE IF ENTRY IS AT A INB AND P1 MEMORY ADDRESS, OR A DISK SZA BY CHECKING BIT 0 OF WORD 3 JMP F$T9 DISK ADDR * LDA B,I GET THE MEMORY ADDRESS LDB SEQT DETERMINE IF USER-DEFINED TMT SLB,RSS DIFFERENT CHECKS FOR 7900-7905/7920 JMP F$T10 7905/7920 LDB A,I GET WORD 1 SSB IF NEGATIVE, THERE'S AN EXTRA WORD INA * F$T11 LDB LLEN # WORDS TO GET CMB,INB STB LCNT LOOP COUNTER LDB \BUFA STB BPTR BUFFER POINTER RSS F$T8 ISZ BPTR NEXT LOCATION LDB A,I STB BPTR,I STORE WORD INA INCRMENT MEMORY ADDRESS ISZ LCNT DONE? JMP F$T8 NO LDA \BUFA STA BPTR ISZ F$TB JMP F$TB,I * F$T10 LDB A,I CHECK WORD 1 SSB,RSS IF POSITIVE,THERE'S AN EXTRA WORD INA JMP F$T11 * F$T9 LDA B,I TRANSLATE THE DISK ALF,ALF ADDRESS TO RAL AND B377 STA LTRK TRACK AND LDA B,I AND B177 STA LSEC SECTOR * JSB READD READ IT LDA \BUFA INA SKIP EXTRA WORD STA BPTR ISZ F$TB JMP F$TB,I * ABF$ LDA P28 LDB MES30 JSB \DSPL JMP \XOUT TERMINATE SWTCH SPC 3 #LEP EQU 1762B # OF LIBRARY ENTRY POINTS IN LIST ALEP EQU 1761B ADDR " " " LIST LEPL NOP LENGTH " " " " LCNT NOP COUNTER $T ASC 1,$T B3 ASC 1,B3 .1 ASC 1,1 .2 ASC 1,2 MES30 DEF *+1 ASC 28,SOURCE SUBCHANNEL NOT FOUND ON A SYSTEM TRACK MAP TABLE SKP * * GTLEN COMPUTES LLEN FOR READING THE * LIBRARY ENTRY POINTS LIST INTO * BUFR * * CALLING SEQUENCE: (A)=REMAINING SIZE OF L.E.P. * JSB GTLEN * GTLEN NOP LDB P512 THE NORMAL BUFFER SIZE CMA,INA IF MORE THAN THE REMAINING ADA P512 LEP SIZE, THEN USE THE SIZE SSA,RSS IN (A) LDB LEPL STB LLEN JMP GTLEN,I SPC 5 * * READD READS LLEN WORDS AT TRACK LTRK, AND * SECTOR LSEC * READD NOP JSB EXEC DEF *+7 DEF P1 DEF P2 DEF BUFR DEF LLEN DEF LTRK DEF LSEC * JMP READD,I * * LTRK NOP LSEC NOP SKP * * VERIFIES THE EXISTENCE OF A SYSTEM SUBCHANNEL MATCH * AT THE TARGET CHANNEL AND SUBCHANNEL. THE FOLLOWING * CHECKS ARE MADE: * * VERIFY THAT A CARTRIDGE DIRECTORY EXISTS ON THE * LAST SYSTEM TRACK (AS DEFINED BY THE NEW * SYSTEM) * VERIFY THAT A FILE DIRECTORY SPECIFICATION ENTRY * EXISTS ON THIS TRACK * VERIFY THAT A TRACK 0 SECTOR 0 BOOTSTRAP EXISTS * AT THE FIRST PHYSICAL TRACK/CYLINDER OF * DESTINATION SYSTEM * * * RETURN: (P+1) CAN'T SAVE THE FILE STRUCTURE * (P+2) CAN SAVE IT * VFYSY NOP CLA STA \INIT CLEAR INIT WORD FOR DISKD * LDA N128 STA \LNTH READ 128 WORDS CCE HOPEFULLY THEY WILL CONTAIN LDB \BUFA THE CARTRIDGE DIRECTORY AT STB BPTR TARGET SUBCHANNEL CCA ADA \DNTR DESTINATION SYSTEM LAST(LOGICAL) STA \TRAK TRACK, LESS 1 CLA STA \SECT JSB DISKD * * * VERIFY THE EXISTENCE OF A CARTRIDGE DIRECTORY * LDA N31 MAX # CARTRIDGE ENTRIES STA TEMP1 CHCD0 LDA BPTR,I GET WORD 0 OF ENTRY SSA JMP NOTFS LU WORD < 0 LDB N64 ADB A SSB,RSS JMP NOTFS LU > 77(8) * CPA P0 END OF LU'S ? JMP CHCD3 YES CPA P2 LU 2 (SYSTEM) ? RSS YES JMP CHCD1 CHECK WORDS 1-3 IN ENTRY * LDB BPTR GET WORD #1 OF THE (POSSIBLY) INB SYSTEM LU 2 ENTRY LDA B,I SSA JMP NOTFS LAST FMP TRACK WORD < 0 STA D.LT SAVE FOR LATER CHECKS * CHCD1 LDA N3 STA TEMP2 * CHCD2 ISZ BPTR CHECK WORDS 1,2,&3 LDA BPTR,I OF ENTRY FOR VALUES SSA >= 0 JMP NOTFS INVALID ISZ TEMP2 JMP CHCD2 CHECK NEXT WORD ISZ BPTR NEXT ENTRY WORD 0 ISZ TEMP1 LAST ENTRY (31)? JMP CHCD0 NO,CONTINUE * CHCD3 LDA D.LT (WAS INITIALLY -1) SSA JMP NOTFS NEVER SET BY A LU 2 LDA BF124 SZA JMP NOTFS WORD 124 OF CD MUST = 0 * * * LOOKED LIKE A CARTRIDGE DIRECTORY. NOW TRY FOR A * FILE DIRECTORY IN THE NEXT BLOCK. * CCA ADA \DNTR DETERMINE DISK ADDRESS OF NEXT STA \TRAK BLOCK CONTAINING THE LDA P14 FILE SPEC ENTRY STA \SECT READ 128 WORDS, HOPEFULLY THE LDB \BUFA SPEC ENTRY STB BPTR CCE JSB DISKD * LDA BPTR,I TESTS FOR A VALID FILE DIRECTORY ENTRY: SSA,RSS JMP NOTFS WORD 0 MUST BE < 0 * LDA N7 WORDS 1-7,9-15 IN SPEC MUST BE >= 0 STA TEMP2 CHFD1 ISZ BPTR LDA BPTR,I SSA JMP NOTFS < 0, THEREFORE INVALID ISZ TEMP2 JMP CHFD1 * ISZ BPTR WORD 8 MUST BE < 0 LDA BPTR,I SSA,RSS JMP NOTFS LDA N6 NOW CHECK WORDS 9-15 STA TEMP2 CHFD2 ISZ BPTR LDA BPTR,I SSA JMP NOTFS ISZ TEMP2 JMP CHFD2 * LDA BF6 WORD 6 (#SECTORS/TRACK) MUST BE LDB BF5 >= WORD 5 (NEXT AVAILABLE SECTOR) CMB,INB ADA B SSA JMP NOTFS INVALID * LDA BF7 LOWEST DIRECTORY TRACK(LOGICAL) LDB BF8 MINUS THE NEGATIVE # DIRECTORY STB D.# TRACKS, CMB MINUS 1 ADA B GIVES LAST FMP TRACK CPA D.LT MUST = LAST FMP TRACK INDICATED RSS IN CD FOR LU 2 JMP NOTFS INVALID * LDB \DNTR DOES THE LOGICAL DIRECTORY TRACK # ADB N1 AT TARGET = LOGICAL DIRECTORY TRACK # CPA B FOR DESTINATION (THE LAST LOGICAL TRACK FOR RSS SYSTEM LU) ? JMP NOTFS NO LDA BF4 SAVE THE FIRST FMP TRACK FOR STA \FFMP FUTURE CHECKS * * * VERIFY THAT A TRACK 0 SECTOR 0 BOOTSTRAP EXISTS AT THE * DESTINATION SYSTEM'S PHYSICAL LOCATION OF LOGICAL TRACK 0 * SECTOR 0 * LDB \BUFA READ(HOPEFULLY) THE TRACK 0,SECTOR 0 STB BPTR BOOTSTRAP CCE CLA STA \TRAK STA \SECT JSB DISKD * CCA JSB VT0S0 VERIFY ITS EXISTENCE JMP NOTFS NO GOOD * LDA BF99 TBASE (WORD 100 OF BOOTSTRAP) IS THE CPA \DFTR PHYSICAL LOCATION (TRACK OR CYLINDER) OF RSS TRACK 0 AT THE TARGET - MUST BE EQUAL JMP NOTFS TO THAT OF DESTINATION TRACK 0 * LDA DEQT FURTHER CHECKS FOR A 7905/7920 SYSTEM SLA REPLACEMENT JMP VOUT * LDA BF97 GET NUMBER OF SURFACES CPA \DNSU SAME AS DESTINATION? RSS JMP NOTFS NO LDA BF98 GET STARTING HEAD # CPA \DSHD SAME AS DESTINATION? RSS JMP NOTFS NO * VOUT ISZ VFYSY LOOKS VALID JMP VFYSY,I SPC 2 * * ONE OF THE ABOVE TESTS FAILED, THEREFORE NOT ALLOWING THE * TARGET FILE STRUCTURE TO BE SAVED * NOTFS LDA \TSUB LDB DEQT SLB,RSS LDA \TUNT ADA B2060 STA MES23+19 LDA P1 SET FO \CVAS STA \CLEN LDA \TCH LDB MS23A JSB \CVAS LDA P33 LDB MES23 "INFORMATION STORED ON PLATTER UNIT XX OF JSB \DSPL TARGET CHANNEL YY WILL BE DESTROYED" LDA P9 LDB MS23B JSB \DSPL * JSB OK? CHECK ANSWER * CLA STA \SAVE DON'T \SAVEFILES STA TYP6 " " PURGE TYPE 6'S JMP VFYSY,I * P33 DEC 33 * BF4 EQU BUFR+4 BF5 EQU BUFR+5 BF6 EQU BUFR+6 BF7 EQU BUFR+7 BF8 EQU BUFR+8 BF97 EQU BUFR+147B # SURFACES IN 7905 BOOT EXTENSION BF98 EQU BUFR+150B STARTING HEAD IN 7905 BOOT EXTENSION BF99 EQU BUFR+143B FIRST TRACK IN BOOT EXTENSION BF124 EQU BUFR+124 SKP * VERIFIES THE EXISTENCE OF A TRACK 0, SECTOR 0 BOOTSTRAP * * CALLING SEQUENCE: (A) = -1 WHERE II/III/IV BOOT EXTENSION IS OKAY * = 0 WHERE RTE-IV BOOT EXTENSION IS REQUIRED * * * RETURN: (P+1) NOT A BOOTSTRAP * (P+2) YES, ONE EXISTS * VT0S0 NOP STA STDSK SAVE FLAG IN TEMPORARY * LDB BPTR TRY FOR AN RTE-IV SYSTEM FIRST ADB B155 COMPARE WORDS: LDA B,I CPA WD155 WORD 155 INB,RSS JMP BE23 NO, TRY A II/III LDA B,I CPA WD156 WORD 156 INB,RSS JMP BE23 NO, TRY A II/III LDA B,I CPA WD157 WORD 157 INB,RSS JMP BE23 NO, TRY A II/III LDA B,I CPA WD160 WORD 160 INB,RSS JMP BE23 NO, TRY A II/III LDA B,I CPA WD161 WORD 161 INB,RSS JMP BE23 NO, TRY A II/III INB SKIP WORD 162 LDA B,I CPA WD163 WORD 163 INB,RSS JMP BE23 NO, TRY A II/III LDA B,I CPA WD164 WORD 164 INB,RSS JMP BE23 NO, TRY A II/III LDA B,I CPA WD165 WORD 165 INB,RSS JMP BE23 NO, TRY A II/III LDA B,I CPA WD166 WORD 166 INB,RSS JMP BE23 NO, TRY A II/III LDA B,I CPA WD167 WORD 167 INB,RSS JMP BE23 NO, TRY A II/III LDA B,I CPA WD170 WORD 170 RSS JMP BE23 NO, TRY A II/III ISZ VT0S0 FOUND ONE JMP VT0S0,I SO EXIT * BE23 ISZ STDSK IS A II/III EXTENSION ALLOWED? JMP VT0S0,I NO, SO TAKE FAILURE EXIT * LDB BPTR CHECK MATCH ON WORDS 3,4,5(ALL SAME),6,7 ADB P2 LDA B,I 14,15,16,17,20 CPA WD345 WORD 3 INB,RSS JMP VT0S0,I NO LDA B,I CPA WD345 WORD 4 INB,RSS JMP VT0S0,I NO LDA B,I CPA WD345 WORD 5 INB,RSS JMP VT0S0,I NO LDA B,I CPA WD6 WORD 6 INB,RSS JMP VT0S0,I NO LDA B,I CPA WD7 WORD 7 RSS JMP VT0S0,I NO ADB P5 LDA B,I CPA WD14 WORD 14 INB,RSS JMP VT0S0,I NO LDA B,I CPA WD15 WORD 15 INB,RSS JMP VT0S0,I NO LDA B,I CPA WD16 WORD 16 INB,RSS JMP VT0S0,I NO LDA B,I CPA WD17 WORD 17 INB,RSS JMP VT0S0,I NO LDA B,I CPA WD20 WORD 20 RSS JMP VT0S0,I NO ISZ VT0S0 JMP VT0S0,I OK!!!!! SPC 2 WD345 OCT 017506 BOOTSTRAP WORDS 3,4,& 5 WD6 OCT 124003 " WORD 6 WD7 OCT 002011 " WORD 7 WD14 OCT 003304 " WORD 14 WD15 OCT 040001 " WORD 15 WD16 OCT 005225 " WORD 16 WD17 OCT 106702 " WORD 17 WD20 OCT 106602 " WORD 20 WD155 OCT 000000 " WORD 155 WD156 OCT 102106 " WORD 156 WD157 OCT 107700 " WORD 157 WD160 OCT 006400 " WORD 160 WD161 OCT 102501 " WORD 161 WD163 OCT 101045 " WORD 163 WD164 OCT 002011 " WORD 164 WD165 OCT 026201 " WORD 165 WD166 OCT 102077 " WORD 166 WD167 OCT 026202 " WORD 167 WD170 OCT 106601 " WORD 170 * B155 OCT 155 SKP * * STDSK CONTROLS THE CALL TO CONFIGURE THE * DISK DRIVER (EITHER \DSK0 FOR 7900 OR \DSK5 * FOR 7905/7920), VIA A CALL TO \STD0 OR \STD5 * STDSK NOP LDA DEQT SLA JMP STDS1 JSB \STD5 CONFIGURE THE 7905/7920 DRIVER JMP STDSK,I * STDS1 JSB \STD0 CONFIGURE THE 7900 DRIVER JMP STDSK,I SKP * OK? QUERIES THE USER WITH: * "OK TO PROCEED? (Y OR N)" * AND TRANSFERS TO \XOUT ON A "N" RESPONSE, * DOING A SIMPLE RETURN ON A "Y" RESPONSE. * OK? NOP LDA P12 LDB MES20 JSB \DSPL JSB YE?NO DECIPHER ANSWER JMP OK?+1 INVALID REPLY JMP OK?+1 INVALID REPLY JMP \XOUT NO,TERMINATE SWTCH JMP OK?,I SPC 4 * YE?NO READS THE OPERATOR ANSWER ( Y OR N ) * RETURNS TO (P+1) IF INVALID ANSWER * (P+2) IF /E * (P+3) IF NO * (P+4) IF YES * YE?NO NOP JSB EXEC RETRIEVE ANSWER DEF *+5 DEF P1 DEF OPLU DEF BUFR DEF N2 SZB,RSS JMP YE?NO+1 TRY AGAIN FOR A RESPONSE * CLE CHECK HIGH HALF FIRST LDA BUFR CPA "/E" JMP EOUT YENO ALF,ALF AND B377 CPA "N" JMP NOUT CPA "Y" JMP YOUT * SEZ CHECK THE LOW HALF? JMP YE?NO,I ALREADY DID - NEITHER MATCHES LDA BUFR SWITCH EM ALF,ALF CCE JMP YENO CHECK THE LOW HALF * YOUT ISZ YE?NO NOUT ISZ YE?NO EOUT ISZ YE?NO JMP YE?NO,I * "N" OCT 116 "Y" OCT 131 "/E" ASC 1,/E SPC 4 * * READS TARGET RESPONSES, INCLUDING RE-ISSUING EXEC CALL * IN CASE OF TIME-OUTS. * TARGT NOP JSB EXEC GET REPONSE DEF *+5 DEF P1 DEF OPLU DEF BUFR DEF N8 SZB,RSS ANYTHING ENTERED? JMP TARGT+1 NO JMP TARGT,I YES, RETURN SKP * * CHECKS FOR A SPACE (PSEUDO CARRIAGE RETURN) FROM * THE OPERATOR. (B) IS THE LENGTH OF INPUT IN CHARACTERS