ASMB,R,L,C,N HED SWTCH - TRANSFERS FILE CONTAINING RTE SYSTEM GENERATED ON-LINE. NAM SWTCH,3,10 92060-16038 REV.1826 780510 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 * SOURCE: 92060-18038 * BINARY: 92060-16038 * WRITTEN BY: KFH * **************************************** SPC 2 * * TURN - ON SEQUENCE: * * RU,SWTCH,FLNAME:SC:LB,CHANNEL,SUBCHANNEL/UNIT,AUTO,FILES,TYPE6 * * 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 SPC 2 * * * THE ON-LINE RTE GENERATOR PRODUCES AN FMP FILE CONTAINING * A COMPLETE RTE-II OR RTE-III 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 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 MAINR ENT DFTR,DNHD,DNSU,DNSP,DNTR,DSBCH ENT TUNIT,TCH,TSBCH ENT INITF,LNGTH ENT BUFAD,XOUT,DSTAD ENT CNVAS,CLEN,DSPLY,LINBL ENT BOOTF * * EXTERNAL ENTRY POINTS * EXT RMPAR,EXEC,$LIBR EXT OPEN,READF,LOCF,CLOSE EXT $LIBR,$LIBX * EXT DISK0,DISK5 EXT INP0,INP5 EXT INIT0,INIT5 EXT STDS0,STDS5 EXT CNUMD,GETST EXT FLGTR SPC 2 A EQU 0 B EQU 1 SUP SKP * HEADER RECORD FORMAT * * ------------------------------------ * ! SYSTEM SUBCHANNEL # ! * ------------------------------------ * ! SYSTEM EQT # ! * ------------------------------------ * ! NUMBER OF EQT'S ! * ------------------------------------ * ! PRIV. INT. CHANNEL ! * ------------------------------------ * ! TBG CHANNEL ! * ------------------------------------ * ! TTY CHANNEL ! * ------------------------------------ * ! CHANNEL # ! EQT TYPE ! FOR EQT #1 * ------------------------------------ * ! CHANNEL # ! EQT TYPE ! FOR EQT #2 * ------------------------------------ * . . * . . * . . * ------------------------------------ * ! CHANNEL # ! EQT TYPE ! FOR EQT #N * ------------------------------------ - * ! FIRST CYLINDER # ! SYSTEM * ------------------------------------ * ! # TRACKS ! SUBCHANNEL * ------------------------------------ * ! # SPARES ! DEFINITION * ------------------------------------ * ! # SURFACES ! FOR * ------------------------------------ * ! STARTING HEAD # ! A * ------------------------------------ * ! UNIT # ! 7905/7920 * ------------------------------------ - * * OR OR * * ------------------------------------ - * ! FIRST TRACK ! FOR A * ------------------------------------ * ! # TRACKS ! 7900 * ------------------------------------ - 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 256+BUFR-* NEED TO READ 2 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 16,CHANNEL XX PRIVILEGED INTERRUPT MES6A DEF MES6+5 MES7 DEF *+1 ASC 7,CHANNEL XX TBG MES7A DEF MES7+5 MES8 DEF *+1 ASC 9,CHANNEL XX TYPE=XX MES8A DEF MES8+5 MES8B DEF MES8+9 MES9 DEF *+1 ASC 22,NEW SYSTEM (LU2) CHANNEL= XX SUBCHANNEL= XX MES9A DEF MES9+14 MES9B DEF MES9+22 MES10 DEF *+1 ASC 20,7900 LOGICAL SUBCHANNEL X FIRST TRACK# MS10A ASC 9,XXXX #TRACKS XXXX MS10C DEF MS10A MS10D DEF MS10A+7 MES11 DEF *+1 ASC 23,7905/ HEAD# X #TRACKS XXXX #SURFACES X MS11C DEF *+1 ASC 23,7920 UNIT# X FIRST CYL# XXXX #SPARES X MS11A DEF MES11+15 MS11B DEF MS11C+15 MES12 DEF *+1 ASC 23,TARGET CHANNEL FOR NEW SYSTEM? (XX OR " "CR) MES13 DEF *+1 ASC 20,TARGET SUBCHANNEL(LOGICAL)/UNIT FOR NEW ASC 11,SYSTEM? (X OR " "CR) SPC 2 BSS 512+BUFR-* NEED TO READ IN 512 WORDS AT F$T0 SPC 2 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 23,TARGET SUBCHANNEL/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 20,INFORMATION STORED ON SUBCHANNEL/UNIT XX ASC 12, OF TARGET CHANNEL XX MS23B DEF *+1 ASC 9,WILL BE DESTROYED MS23A DEF MES23+31 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? * SWAP0 DEF *+1 ASC 3,DSEG0 7900 DISK DRIVER SEGMENT SWAP5 DEF *+1 ASC 3,DSEG5 7905/7920 DISK DRIVER SEGMENT SKP * CONSTANTS * B17 OCT 17 B177 OCT 177 B777 OCT 777 B1774 OCT 177400 B2060 OCT 20060 * N6 DEC -6 N7 DEC -7 N31 DEC -31 N64 DEC -64 N89 DEC -89 N512 DEC -512 * P12 DEC 12 P14 DEC 14 P17 DEC 17 P28 DEC 28 P29 DEC 29 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 BUFAD 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 BUFAD 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 BUFAD 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 BUFAD INA SKIP EXTRA WORD STA BPTR ISZ F$TB JMP F$TB,I * ABF$ LDA P28 LDB MES30 JSB DSPLY 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 INITF CLEAR INIT WORD FOR DISKD * LDA N128 STA LNGTH READ 128 WORDS CCE HOPEFULLY THEY WILL CONTAIN LDB BUFAD THE CARTRIDGE DIRECTORY AT STB BPTR TARGET SUBCHANNEL LDA DNTR DESTINATION SYSTEM LAST(LOGICAL) ADA N1 TRACK, LESS 1 ALF,ALF RAR 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. * LDA DNTR DETERMINE DISK ADDRESS OF NEXT ADA N1 BLOCK CONTAINING THE ALF,ALF FILE SPEC ENTRY RAR IOR P14 READ 128 WORDS, HOPEFULLY THE LDB BUFAD 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 BUFAD READ(HOPEFULLY) THE TRACK 0,SECTOR 0 STB BPTR BOOTSTRAP CCE CLA JSB DISKD * 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 DNHD 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 TSBCH LDB DEQT SLB,RSS LDA TUNIT ADA B2060 STA MES23+20 LDA P1 SET FO CNVAS STA CLEN LDA TCH LDB MS23A JSB CNVAS LDA P32 LDB MES23 "INFORMATION STORED ON SUBCHANNEL UNIT XX OF JSB DSPLY TARGET CHANNEL YY WILL BE DESTROYED" LDA P9 LDB MS23B JSB DSPLY * JSB OK? CHECK ANSWER * CLA STA SAVE DON'T SAVE FILES STA TYP6 " " PURGE TYPE 6'S JMP VFYSY,I * BF4 EQU BUFR+4 BF5 EQU BUFR+5 BF6 EQU BUFR+6 BF7 EQU BUFR+7 BF8 EQU BUFR+8 BF97 EQU BUFR+97 BF98 EQU BUFR+98 BF99 EQU BUFR+99 BF124 EQU BUFR+124 SKP * * VERIFIES THE EXISTENCE OF A TRACK 0, SECTOR 0 BOOTSTRAP * * * RETURN: (P+1) NOT A BOOTSTRAP * (P+2) YES, ONE EXISTS * VT0S0 NOP LDB BPTR CHECK MATCH ON WORDS 3,4,5(ALL SAME),6,7 ADB P2 LDA B,I 12,13,14,15,16 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 WD12 WORD 12 INB,RSS JMP VT0S0,I NO LDA B,I CPA WD13 WORD 13 INB,RSS JMP VT0S0,I NO 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 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 WD12 OCT 003304 " WORD 12 WD13 OCT 040001 " WORD 13 WD14 OCT 005225 " WORD 14 WD15 OCT 106702 " WORD 15 WD16 OCT 106602 " WORD 16 SKP * * STDSK CONTROLS THE CALL TO CONFIGURE THE * DISK DRIVER (EITHER DISK0 FOR 7900 OR DISK5 * FOR 7905/7920), VIA A CALL TO STDS0 OR STDS5 * STDSK NOP LDA DEQT SLA JMP STDS1 JSB STDS5 CONFIGURE THE 7905/7920 DRIVER JMP STDSK,I * STDS1 JSB STDS0 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 DSPLY JSB YE?NO DECIPHER ANSWER 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 NO * (P+3) 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 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 JMP YE?NO,I * "N" OCT 116 "Y" OCT 131 SKP * * CHECKS FOR A SPACE (PSEUDO CARRIAGE RETURN) FROM * THE OPERATOR. (B) IS THE LENGTH OF INPUT IN CHARACTERS * RETURN: (P+1) NOT A SPACE * (P+2) A SPACE (SO MAY USE DEFAULT VALUES) *